{"version":3,"file":"dsgov-init.js","mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,O;;;;;;;;;;;;;;;;ACVe;AACf;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;ACXuC;;AAEvC;AACA,mBAAmB,SAAS;AAC5B;AACA;;AAEA;AACA,mBAAmB,SAAS;AAC5B;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,mBAAmB,SAAS;AAC5B;AACA;;;;ACpBgD;AAChD;AACe;AACf;AACA;AACA;;AAEA;AACA;AACA;;AAEA,MAAM,aAAa;AACnB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3BuC;AACxB;AACf,YAAY,SAAS;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;;ACTe;AACf;AACA;AACA;AACA;AACA;;ACLmD;AACZ;AACS;AACa;AAC9C;AACf,eAAe,SAAS,WAAW,aAAa;AAChD,WAAW,eAAe;AAC1B,IAAI;AACJ,WAAW,oBAAoB;AAC/B;AACA;;ACVe;AACf;AACA;;ACF4C;AAC7B;AACf;AACA,WAAW,SAAS;AACpB;AACA;;ACL+D;AACN;AACN;AACpC;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,qBAAqB,CAAC,kBAAkB,kBAAkB,eAAe;AAClF;;ACZuC;AACxB;AACf,SAAS,SAAS;AAClB;;ACHqD;AACtC;AACf;AACA,0BAA0B,gBAAgB;AAC1C;AACA;AACA;;AAEA;AACA;;ACT+D;AAChB;AACJ;AACK;AACW;AACF;AACR;;AAEjD;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;;;AAGe;AACf;AACA;AACA;;AAEA,gCAAgC,aAAa;AAC7C,6BAA6B,aAAa;AAC1C,wBAAwB,kBAAkB;AAC1C,aAAa,qBAAqB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,QAAQ,WAAW;AACnB,IAAI,cAAc;AAClB,eAAe,aAAa;AAC5B;;AAEA,QAAQ,aAAa;AACrB,gBAAgB,qBAAqB;AACrC;AACA;AACA,MAAM;AACN,kBAAkB,mBAAmB;AACrC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxD+D,CAAC;AAChE;;AAEe;AACf,mBAAmB,qBAAqB,WAAW;AACnD;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxB2C;AACc;AACV;AAChC;AACf,MAAM,WAAW;AACjB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAI,YAAY;AAChB;AACA,IAAI,kBAAkB;;AAEtB;AACA;;AClB+C;AACE;AACN;AACK;AACjC;AACf,4CAA4C,WAAW;AACvD;AACA;AACA;;AAEA,MAAM,aAAa,UAAU,cAAc;AAC3C;AACA;;AAEA,yBAAyB,aAAa;AACtC;;ACfmD;AACJ;AACR;AACU;AACjD;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf;;AAEA;AACA;AACA;;AAEA,qBAAqB,eAAe;AACpC;AACA,YAAY,SAAS;AACrB,+DAA+D,cAAc;AAC7E;AACA;AACA,uCAAuC,aAAa;AACpD;;ACzB2C;AAC5B;AACf,uCAAuC,WAAW;AAClD;;ACHuC;AACI;AACU;AACL;AACC;AACF;;AAE/C;AACA,OAAO,aAAa;AACpB,EAAE,gBAAgB;AAClB;AACA;;AAEA;AACA,EAAE;AACF;;;AAGA;AACA;AACA;;AAEA,cAAc,aAAa;AAC3B;AACA,qBAAqB,gBAAgB;;AAErC;AACA;AACA;AACA;;AAEA,oBAAoB,aAAa;;AAEjC,SAAS,aAAa,0CAA0C,WAAW;AAC3E,cAAc,gBAAgB,eAAe;AAC7C;AACA;;AAEA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA,EAAE;AACF;;;AAGe;AACf,eAAe,SAAS;AACxB;;AAEA,yBAAyB,cAAc,kBAAkB,gBAAgB;AACzE;AACA;;AAEA,uBAAuB,WAAW,6BAA6B,WAAW,6BAA6B,gBAAgB;AACvH;AACA;;AAEA;AACA;;AC/DO,IAAI,SAAG;AACP;AACA;AACA;AACA;AACA,sBAAsB,SAAG;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACP;AACA,CAAC;AACM,IAAI,gBAAU;AACrB;AACA,CAAC,OAAO;;AAED;AACA;AACA,6BAA6B;;AAE7B;AACA;AACA,6BAA6B;;AAE7B;AACA;AACA;AACA;;AC9BsC,CAAC;;AAE9C;AACA;AACA;AACA;AACA;AACA;AACA,GAAG,GAAG;;AAEN;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEe;AACf;AACA,2CAA2C;;AAE3C,SAAS,qBAAqB;AAC9B;AACA;AACA,KAAK;AACL,GAAG;AACH;;AC3Ce;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;;AAEA;AACA;AACA;;ACde;AACf;AACA;AACA,sDAAsD;AACtD,+BAA+B;AAC/B,4BAA4B;AAC5B,KAAK;AACL;AACA,GAAG,IAAI,GAAG;;AAEV;AACA;AACA,GAAG;AACH;;ACb+D;AACN;AACQ;AACJ;AACE;AACR;AACZ;AACkB;AAClB;AACgB;AACV;AACM;AACD;AACpB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,sEAAsE,aAAa;AACnF;AACA;;AAEA;AACA;AACA,GAAG;AACH;;AAEO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,+BAA+B;AAC/B,uBAAuB;AACvB;AACA;AACA;AACA,OAAO;AACP,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC;AACxC;AACA,qBAAqB,SAAS,cAAc,iBAAiB,yCAAyC,iBAAiB;AACvH,kBAAkB,iBAAiB;AACnC,WAAW;AACX;;AAEA,+BAA+B,cAAc,CAAC,WAAW,yDAAyD;;AAElH;AACA;AACA,SAAS,GAAG;AACZ;;AAEA,YAAY,KAAqC,EAAE,qGA+B1C;;AAET;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,6CAA6C;AAC7C;;AAEA;AACA,cAAc,KAAqC,EAAE,EAE1C;;AAEX;AACA,UAAU;;;AAGV;AACA,qBAAqB,gBAAgB,YAAY,eAAe;AAChE,kBAAkB,aAAa;AAC/B,WAAW;AACX;AACA;AACA;AACA;;AAEA;AACA,mDAAmD;AACnD;AACA;AACA,6CAA6C,KAAK;;AAElD;AACA,sEAAsE;AACtE,SAAS;AACT;;AAEA,4BAA4B,uCAAuC;AACnE,cAAc,KAAqC,EAAE,EAO1C;;AAEX;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,gEAAgE;AAChE;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,OAAO;AACP;AACA;AACA,cAAc,QAAQ;AACtB;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA,UAAU,KAAqC,EAAE,EAE1C;;AAEP;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK,GAAG;AACR;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,oDAAoD;AACpD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;;AAEX;;AAEA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACO,gCAAgC,iEAAiB,IAAE;;;;AC/PR,CAAC;;AAEnD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,SAAS;AACxB;;AAEA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA,EAAE;;;AAGF,qDAAe;AACf;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA,CAAC;;AChDkC;AACpB;AACf;AACA;;ACHe;AACf;AACA;;ACFe;AACf;AACA;;ACFqD;AACR;AACwB;AACF;AACpD;AACf;AACA;AACA;AACA,kCAAkC,gBAAgB;AAClD,8BAA8B,YAAY;AAC1C;AACA;AACA;;AAEA;AACA,SAAS,SAAG;AACZ;AACA;AACA;AACA;AACA;;AAEA,SAAS,MAAM;AACf;AACA;AACA;AACA;AACA;;AAEA,SAAS,KAAK;AACd;AACA;AACA;AACA;AACA;;AAEA,SAAS,IAAI;AACb;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,iCAAiC,wBAAwB;;AAEzD;AACA;;AAEA;AACA,WAAW,KAAK;AAChB;AACA;;AAEA,WAAW,GAAG;AACd;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;ACrEwD;;AAExD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,cAAc;AAC5C;AACA;AACA;AACA;AACA,GAAG;AACH,EAAE;;;AAGF,8DAAe;AACf;AACA;AACA;AACA;AACA;AACA,CAAC;;ACxBM,IAAI,QAAG;AACP,IAAI,QAAG;AACP,IAAI,UAAK;;ACFuC;AACO;AACZ;AACkB;AACJ;AACJ;AACnB,CAAC;;AAE1C;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,UAAK,CAAC,UAAK;AAClB,OAAO,UAAK,CAAC,UAAK;AAClB;AACA;;AAEO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc,IAAI;AAClB,cAAc,SAAG;AACjB;;AAEA;AACA,uBAAuB,eAAe;AACtC;AACA;;AAEA,yBAAyB,SAAS;AAClC,qBAAqB,kBAAkB;;AAEvC,UAAU,gBAAgB;AAC1B;AACA;AACA;AACA,MAAM;;;AAGN;;AAEA,sBAAsB,SAAG;AACzB,cAAc,MAAM,EAAE;;AAEtB;AACA;AACA;;AAEA,sBAAsB,IAAI;AAC1B,cAAc,KAAK,EAAE;;AAErB;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA,2BAA2B,oCAAoC;AAC/D;;AAEA,yBAAyB,qCAAqC;AAC9D;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,MAAM,KAAqC,EAAE,2BAQ1C;;AAEH;AACA,eAAe,gBAAgB;AAC/B;AACA;AACA;AACA;;AAEA;AACA,0CAA0C,mDAAmD;AAC7F;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA,yCAAyC,kDAAkD;AAC3F;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA,4CAA4C;AAC5C;AACA,GAAG;AACH,EAAE;;;AAGF,8DAAe;AACf;AACA;AACA;AACA;AACA;AACA,CAAC;;AC1JqD;AACK,CAAC;AAC5D;;AAEA;AACA;AACA;AACA;AACA;AACA,wCAAwC;;AAExC,SAAS,aAAa,cAAc,WAAW;AAC/C;AACA,MAAM;AACN;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA,QAAQ;AACR;AACA;AACA,KAAK;AACL,GAAG;AACH;;AAEA,SAAS,kBAAM;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,uHAAuH;;AAEvH;AACA;AACA;AACA,OAAO,IAAI,GAAG;;AAEd,WAAW,aAAa,cAAc,WAAW;AACjD;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA,EAAE;;;AAGF,4DAAe;AACf;AACA;AACA;AACA;AACA,UAAU,kBAAM;AAChB;AACA,CAAC;;ACnF2D;AACD;AACpD;AACP,sBAAsB,gBAAgB;AACtC,wBAAwB,IAAI,EAAE,SAAG;;AAEjC,mEAAmE;AACnE;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA,UAAU,IAAI,EAAE,KAAK;AACrB;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,uBAAiB;AAC9B;AACA;AACA,GAAG,IAAI;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,EAAE;;;AAGF,uDAAe;AACf;AACA;AACA;AACA;AACA;AACA,CAAC;;ACpDD;AACA;AACA;AACA;AACA;AACA;AACe;AACf;AACA;AACA,GAAG;AACH;;ACVA,IAAI,kCAAI;AACR;AACA;AACA;AACe;AACf;AACA,WAAW,kCAAI;AACf,GAAG;AACH;;ACRuC;AACkB;AACE;AAC5C;AACf,YAAY,SAAS;AACrB,aAAa,kBAAkB;AAC/B;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA,oCAAoC,sCAAsC;AAC1E;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,mBAAmB;AAC9B;AACA;AACA;;ACvCyD;AACJ;AACM;AACR;AACZ,CAAC;AACxC;;AAEe;AACf;;AAEA,aAAa,kBAAkB;AAC/B,kBAAkB,eAAe;AACjC;AACA,cAAc,QAAG;AACjB,eAAe,QAAG;AAClB,kCAAkC,mBAAmB;AACrD;;AAEA,MAAM,gBAAgB;AACtB,SAAS,QAAG;AACZ;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5B+C;AAChC;AACf,2DAA2D;;AAE3D;AACA;AACA,IAAI;AACJ,uBAAuB,YAAY;AACnC;;AAEA;AACA;AACA;AACA,UAAU;;;AAGV;AACA,QAAQ;AACR,MAAM;;;AAGN;AACA;;ACtBe;AACf,yBAAyB;AACzB;AACA;AACA;AACA;AACA,GAAG;AACH;;ACPuC;AACY;AACA;AACI;AACJ;AACM;AACJ;AACM;AACI;AAChB;AACV;AACM;AACiB;AAChB;;AAE5C;AACA,aAAa,qBAAqB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,4BAA4B,QAAQ,GAAG,gBAAgB,CAAC,eAAe,aAAa,aAAa,gEAAgE,gBAAgB,CAAC,eAAe,CAAC,kBAAkB;AACpN,EAAE;AACF;AACA;;;AAGA;AACA,wBAAwB,iBAAiB,CAAC,aAAa;AACvD,wDAAwD,gBAAgB;AACxE,4CAA4C,aAAa,YAAY,eAAe;;AAEpF,OAAO,SAAS;AAChB;AACA,IAAI;;;AAGJ;AACA,WAAW,SAAS,oBAAoB,QAAQ,oCAAoC,WAAW;AAC/F,GAAG;AACH,EAAE;AACF;;;AAGe;AACf;AACA;AACA;AACA;AACA;AACA,kBAAkB,QAAG;AACrB,oBAAoB,QAAG;AACvB,qBAAqB,QAAG;AACxB,mBAAmB,QAAG;AACtB;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;ACrEe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;;ACPyD;AAC1C;AACf,yBAAyB,EAAE,kBAAkB;AAC7C;;ACHe;AACf;AACA;AACA;AACA,GAAG,IAAI;AACP;;ACL0E;AACZ;AACM;AACnB;AACI;AAC0D;AACxD;AACE;AACN,CAAC;;AAErC;AACf;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gDAAgD,eAAe;AAC/D;AACA,wDAAwD,QAAQ;AAChE;AACA,0DAA0D,MAAM;AAChE;AACA;AACA;AACA;AACA,sBAAsB,kBAAkB,yCAAyC,eAAe,UAAU,cAAc;AACxH,sCAAsC,MAAM,GAAG,SAAS,GAAG,MAAM;AACjE;AACA;AACA;AACA,2BAA2B,eAAe,CAAC,SAAS,gDAAgD,kBAAkB;AACtH,4BAA4B,qBAAqB;AACjD,sBAAsB,cAAc;AACpC;AACA;AACA;AACA;AACA,GAAG;AACH,yBAAyB,gBAAgB,iBAAiB;AAC1D,6CAA6C,MAAM,2CAA2C;AAC9F;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C;;AAE/C,yBAAyB,MAAM;AAC/B;AACA;AACA,sBAAsB,KAAK,EAAE,MAAM;AACnC,kBAAkB,SAAG,EAAE,MAAM;AAC7B;AACA,KAAK;AACL;;AAEA;AACA;;AC/D6C;AACkD;AAC9C;AACI;AACtC;AACf;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iEAAiE,gBAAa;AAC9E,kBAAkB,YAAY;AAC9B,gDAAgD,mBAAmB,GAAG,0BAA0B;AAChG,WAAW,YAAY;AACvB,GAAG,IAAI,cAAc;AACrB;AACA;AACA,GAAG;;AAEH;AACA;;AAEA,QAAQ,KAAqC,EAAE,EAE1C;AACL,IAAI;;;AAGJ;AACA,qBAAqB,cAAc;AACnC;AACA;AACA;AACA;AACA,KAAK,EAAE,gBAAgB;AACvB;AACA,GAAG,IAAI;AACP;AACA;AACA,GAAG;AACH;;AC9CoE;AACR;AAC0B;AAC9B;AACY;AACA;AAChB,CAAC;;AAErD;AACA,MAAM,gBAAgB,gBAAgB,IAAI;AAC1C;AACA;;AAEA,0BAA0B,oBAAoB;AAC9C,UAAU,6BAA6B,gCAAgC,6BAA6B;AACpG;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,gBAAgB;AACtC;AACA,iGAAiG,oBAAoB;AACrH;AACA,sBAAsB,gBAAgB,gBAAgB,IAAI,GAAG,oBAAoB;AACjF;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA,kBAAkB,uBAAuB;AACzC;;AAEA,yBAAyB,gBAAgB;;AAEzC,2BAA2B,YAAY,gBAAgB,KAAK;AAC5D,sBAAsB,SAAG,EAAE,MAAM;AACjC;AACA,mBAAmB,cAAc;AACjC;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,4DAA4D,KAAK,GAAG,IAAI,sBAAsB,MAAM,GAAG,SAAG;;AAE1G;AACA,0BAA0B,oBAAoB;AAC9C;;AAEA,2BAA2B,oBAAoB;AAC/C;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW;AACX;AACA,OAAO;;AAEP;AACA;AACA;AACA;AACA;;AAEA,kCAAkC,QAAQ;AAC1C;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,EAAE;;;AAGF,qDAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AClJc;AACf;AACA;;ACF2D;AAC5C;AACf,SAAS,QAAO,MAAM,QAAO;AAC7B;;ACH8D;AACF;AACgB;AAC5B;AACR;AACkB;AACI;AACN;AACJ;AACY;AACE;;AAElE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,cAAc;AAC/B;AACA;AACA;AACA;AACA,GAAG;AACH,sBAAsB,gBAAgB;AACtC,kBAAkB,YAAY;AAC9B;AACA,iBAAiB,wBAAwB;AACzC,gBAAgB,UAAU;AAC1B;AACA;AACA;AACA,4FAA4F;AAC5F;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,sCAAsC,SAAG,GAAG,IAAI;AAChD,qCAAqC,MAAM,GAAG,KAAK;AACnD;AACA;AACA;AACA;AACA;AACA,+BAA+B,KAAK;AACpC,+BAA+B,KAAK,2CAA2C;AAC/E;;AAEA;AACA,6CAA6C,aAAa;AAC1D;AACA;AACA;AACA,yHAAyH,kBAAkB;AAC3I;AACA,uDAAuD;AACvD;AACA;AACA;AACA;;AAEA,mBAAmB,MAAM;AACzB;AACA;AACA,oDAAoD,eAAe;AACnE;AACA;AACA;AACA;;AAEA;AACA,4BAA4B,MAAM,UAAU,QAAO,yCAAyC,QAAO;AACnG;AACA;AACA;;AAEA;AACA,yCAAyC,SAAG,GAAG,IAAI;;AAEnD,wCAAwC,MAAM,GAAG,KAAK;;AAEtD;;AAEA;;AAEA;;AAEA,6BAA6B,MAAM,UAAU,QAAO,4CAA4C,QAAO;;AAEvG;AACA;AACA;AACA;;AAEA;AACA,EAAE;;;AAGF,gEAAe;AACf;AACA;AACA;AACA;AACA;AACA,CAAC;;AC1H2D;AACF;AACV;AACc;AACc;AACpC;AACwB;AACN;AACa;AACZ,CAAC;;AAE5D;AACA,oEAAoE;AACpE;AACA,GAAG;AACH,SAAS,kBAAkB,yCAAyC,eAAe,UAAU,cAAc;AAC3G;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,sBAAsB,gBAAgB;AACtC,aAAa,wBAAwB;AACrC,oBAAoB,IAAI,EAAE,KAAK;AAC/B;;AAEA;AACA;AACA;;AAEA;AACA,kBAAkB,aAAa;AAC/B,+BAA+B,SAAG,GAAG,IAAI;AACzC,+BAA+B,MAAM,GAAG,KAAK;AAC7C;AACA;AACA,0BAA0B,eAAe;AACzC;AACA,uDAAuD;AACvD;;AAEA;AACA;AACA;AACA,eAAe,MAAM,oBAAoB;;AAEzC;AACA,yDAAyD;AACzD;;AAEA,SAAS,YAAM;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA,IAAI;;;AAGJ;AACA;;AAEA;AACA;AACA;AACA;;AAEA,MAAM,KAAqC,EAAE,EAI1C;;AAEH,OAAO,QAAQ;AACf,QAAQ,KAAqC,EAAE,EAE1C;;AAEL;AACA;;AAEA;AACA,EAAE;;;AAGF,sDAAe;AACf;AACA;AACA;AACA;AACA,UAAU,YAAM;AAChB;AACA;AACA,CAAC;;ACpGsD;AACC;;AAExD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,UAAU,SAAG,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI;AAClC;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,cAAc;AACxC;AACA,GAAG;AACH,0BAA0B,cAAc;AACxC;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C;AAC5C;AACA;AACA,GAAG;AACH,EAAE;;;AAGF,qDAAe;AACf;AACA;AACA;AACA;AACA;AACA,CAAC;;AC5DmE;AACT;AACF;AACA;AACJ;AACV;AACJ;AACsB;AACpB;AACF;AACvC,wBAAwB,cAAc,EAAE,uBAAa,EAAE,uBAAa,EAAE,qBAAW,EAAE,gBAAM,EAAE,cAAI,EAAE,yBAAe,EAAE,eAAK,EAAE,cAAI;AAC7H,IAAI,mBAAY,gBAAgB,eAAe;AAC/C;AACA,CAAC,GAAG;;AAEuE,CAAC;;AAER,CAAC;;;;;;;;;;ACjBxD;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACbA;AACA,EAAE,KAA4D;AAC9D,EAAE,CACmG;AACrG,CAAC,6BAA6B;;AAE9B;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,iDAAiD,aAAa;;AAE9D,CAAC;;;;;;;;ACjED;AACA,EAAE,KAA4D;AAC9D,EAAE,CACW;AACb,CAAC,sBAAsB;;AAEvB;AACA;AACA;AACA;AACA,aAAa,uBAAuB;AACpC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,eAAe,SAAS;AACxB,gBAAgB;AAChB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,eAAe;AAC9B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,MAAM;AACN;AACA;AACA,4EAA4E;AAC5E;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,CAAC;;;;;;;;;;;;ACvTD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,iEAAe,WAAW;;;;;;;;;;;;;AC9D+B;;AAEzD;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,qEAAQ;AACnC;AACA;AACA;AACA;;AAEA,iEAAe,QAAQ;;;;;;;;;;;;ACjCvB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL,sDAAsD;AACtD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA,iEAAe,YAAY;;;;;;;;;;;;;AChK8B;AACzD;AACA;AACA;AACA;AACA,6CAA6C,GAAG;AAChD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,qEAAQ;AACrC;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA,iEAAe,MAAM;;;;;;;;;;;;;;AClFY;AACgB;AACjD;AACA;AACA;AACA;AACA,eAAe,QAAQ;AACvB,eAAe,QAAQ;AACvB,kBAAkB,QAAQ;AAC1B,kBAAkB,OAAO;AACzB,kBAAkB,QAAQ;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,2DAAM;AAC1B;AACA;;AAEA;AACA;AACA,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA,2BAA2B,6DAAoB;AAC/C;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA,iEAAe,UAAU;;;;;;;;;;;;;AC5KoC;;AAE7D;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,+BAA+B,uEAAU;AACzC;AACA,OAAO;AACP;AACA;;AAEA,iEAAe,UAAU;;;;;;;;;;;;ACvBzB;AACO;AACP;AACA;AACA,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,QAAQ;AACrB,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA,aAAa,QAAQ;AACrB,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA,aAAa,QAAQ;AACrB,aAAa,UAAU;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;AC9JA;AACO;AACP;AACA;AACA,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,QAAQ;AACrB,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;;;AC/LoD;;AAEpD;AACO;AACP;AACA;AACA,aAAa,QAAQ;AACrB;AACA;AACA;AACA,sBAAsB,eAAe;AACrC;;AAEA;AACA;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA,wBAAwB;AACxB,wBAAwB;AACxB,wBAAwB;AACxB;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA,gBAAgB;AAChB,gBAAgB;AAChB,gBAAgB;AAChB;AACA;;AAEA;AACA;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA,gBAAgB;AAChB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA,gBAAgB;AAChB,gBAAgB;AAChB;AACA;;AAEA;AACA;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,oBAAoB;AAC5C;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA,qCAAqC,iCAAiC;AACtE;AACA,KAAK;AACL;;AAEA;AACA;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA,oCAAoC,oBAAoB;AACxD;;AAEA;AACA;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA,mCAAmC,mBAAmB;AACtD;;AAEA;AACA;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,mCAAmC;AAC1E;AACA;AACA,oBAAoB;AACpB;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC;AACxC;AACA;AACA;AACA;AACA,kCAAkC;AAClC;AACA;AACA,kCAAkC;AAClC;AACA;AACA;AACA;AACA,+DAA+D;AAC/D;AACA,kCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC;AACpC;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA,aAAa,QAAQ;AACrB,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,uBAAuB,8CAA8C;AACrE;AACA,eAAe,mDAAmD;AAClE;AACA,MAAM;AACN;;AAEA;AACA;AACA,aAAa,QAAQ;AACrB,eAAe,QAAQ;AACvB;AACA;AACA;AACA,2CAA2C,oBAAoB;AAC/D;;AAEA;AACA;AACA,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC;AACpC;AACA;AACA;AACA;AACA,0CAA0C,iCAAiC;AAC3E;AACA;AACA,0CAA0C,sBAAsB;AAChE;AACA;AACA;AACA;AACA,0CAA0C,oCAAoC;AAC9E;AACA;AACA,0CAA0C,mBAAmB;AAC7D;AACA;AACA;AACA;AACA,0CAA0C,mCAAmC;AAC7E;AACA;AACA,0CAA0C,kBAAkB;AAC5D;AACA;AACA;AACA;AACA,0CAA0C,uCAAuC;AACjF;AACA;AACA,0CAA0C,sBAAsB;AAChE;AACA;AACA;AACA;AACA,0CAA0C,oCAAoC;AAC9E;AACA;AACA,0CAA0C,mBAAmB;AAC7D;AACA;AACA;AACA;AACA,0CAA0C,wCAAwC;AAClF;AACA;AACA,0CAA0C,uBAAuB;AACjE;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,oBAAoB;AAC1C;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;;AAEA;AACA;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,0BAA0B;AACrE,2CAA2C,wBAAwB;AACnE;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;;AAEA;AACA;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,aAAa,IAAI,cAAc;AACxE;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA,kFAAkF,qCAAqC,IAAI,qCAAqC;AAChK;;AAEA;AACA;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA,gFAAgF,mCAAmC,IAAI,mCAAmC;AAC1J;AACA;AACA;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,+BAA+B;AAC7D,kBAAkB;AAClB,kBAAkB;AAClB;AACA;AACA,sCAAsC,gCAAgC;AACtE,wCAAwC,kCAAkC;AAC1E;AACA;AACA,kBAAkB;AAClB;AACA;AACA;;AAEA;AACA;AACA,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA,sBAAsB,eAAe,WAAW,EAAE;AAClD,wBAAwB,eAAe,WAAW,EAAE;AACpD;AACA,8BAA8B,0CAA0C;AACxE,kBAAkB;AAClB,kBAAkB;AAClB;AACA;AACA,+BAA+B,eAAe,WAAW,EAAE;AAC3D,sCAAsC,qCAAqC;AAC3E,wCAAwC,uCAAuC;AAC/E;AACA,4BAA4B,eAAe,WAAW,EAAE;AACxD,kBAAkB;AAClB;AACA;AACA;;AAEA;AACA;AACA,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA,sBAAsB,gBAAgB,WAAW,GAAG,YAAY,EAAE;AAClE,wBAAwB,gBAAgB,WAAW,GAAG,YAAY,EAAE;AACpE;AACA,kBAAkB;AAClB;AACA,8BAA8B,eAAe,WAAW,EAAE;AAC1D;AACA;AACA,uBAAuB,gBAAgB,WAAW,GAAG,YAAY,EAAE;AACnE;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,gCAAgC,yCAAyC;AACzE,iCAAiC,0CAA0C;AAC3E;AACA;AACA;;AAEA;AACA;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,kBAAkB;AAClB;AACA;AACA;;AAEA;AACA;AACA,aAAa,QAAQ;AACrB,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,YAAY;AACZ;AACA;AACA;;AAEA;AACA;AACA,aAAa,QAAQ;AACrB,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,YAAY;AACZ;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;ACljBA;AACO;AACA;AACA,0BAA0B,gBAAgB,IAAI,cAAc;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACP;AACO;AACA;AACA;AACA;AACA,oBAAoB,YAAY,IAAI,UAAU;AAC9C;AACA;AACA;AACA;AACA;AACA;;;ACtBsD;AACb;AACU;AAClB;;AAExC;AACe;AACf;AACA;AACA,aAAa,QAAQ;AACrB,gBAAgB,QAAQ;AACxB,gBAAgB,QAAQ;AACxB,gBAAgB,QAAQ;AACxB,gBAAgB,QAAQ;AACxB,gBAAgB,QAAQ;AACxB,gBAAgB,UAAU;AAC1B;AACA,gBAAgB,yDAAyD;AACzE;AACA;AACA,oBAAoB,mCAAa;AACjC,yBAAyB,6CAAkB;AAC3C;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,sDAAsD,aAAuB;;AAE7E;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,eAAyB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,YAAsB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,2BAA2B,eAAyB;AACpD;AACA;;AAEA;AACA,SAAS;AACT,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,cAAwB;AAClD;AACA;AACA,SAAS;AACT,KAAK;AACL;;AAEA;AACA;AACA,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG,YAAsB,CAAC,IAAI,UAAoB,CAAC,IAAI,eAAyB,CAAC,IAAI,UAAoB,CAAC,EAAE;AACvH;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,SAAmB;AAC7C;AACA;AACA,SAAS;AACT;AACA;AACA,MAAM;AACN;AACA;AACA,0BAA0B,SAAmB;AAC7C;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,eAAyB;AACjD;AACA,sCAAsC,qBAAU;AAChD;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA,oCAAoC,QAAkB;AACtD;AACA,KAAK;AACL;;AAEA;AACA;AACA,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,WAAqB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA,aAAa,QAAQ;AACrB;AACA;AACA;AACA,kDAAkD,UAAoB;AACtE;AACA;AACA,2BAA2B,WAAqB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB;AACA;AACA,kDAAkD,UAAoB;AACtE;AACA;AACA;AACA,MAAM,WAAqB;AAC3B;AACA,4BAA4B,YAAsB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB;AACA;AACA;AACA,6BAA6B,WAAqB;AAClD;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG,YAAsB,CAAC,IAAI,UAAoB,CAAC,IAAI,eAAyB,CAAC,IAAI,UAAoB,CAAC,EAAE;AACvH;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA,sCAAsC,OAAiB;AACvD;AACA;AACA;AACA;AACA,WAAW;AACX,SAAS;AACT,OAAO;AACP,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,eAAyB;AACrD;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iDAAiD,OAAiB;AAClE;AACA,MAAM,eAAyB;AAC/B;AACA,qDAAqD,YAAsB;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iCAAiC,OAAiB;AAClD;;AAEA;AACA;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;;;;;;;;;;;;;;ACjiBO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AChFO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAe,OAAO,EAAC;;;ACvEhB,0CAA0C,OAAO;AACjD,MAAM,SAAG;AACT;AACP;AACA;AACA;AACA;AACA;AACA;AACO;;;ACTA;AACP;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;ACrDoC;AACpC;AACO;AACA;AACP;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,iBAAiB,SAAG;AACpB,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,EAAE;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,EAAE;AACf;AACO;AACP;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA,eAAe,GAAG;AAClB,KAAK;AACL,iBAAiB,GAAG;AACpB;AACA;AACA;AACA;AACA,KAAK;AACL,qCAAqC,SAAG;AACxC;AACA;AACA,KAAK;AACL,iBAAiB,GAAG;AACpB;AACA;AACA;AACA,KAAK;AACL,iBAAiB,GAAG;AACpB,iBAAiB,GAAG;AACpB;AACA,iBAAiB,GAAG;AACpB;AACA;AACA;AACA,KAAK;AACL,iBAAiB,GAAG;AACpB;AACA;AACA;AACA;AACA;AACA;;;ACnI+D;AACnB;AACF;AACnC,+BAA+B,SAAS,QAAQ,SAAS,OAAO,qBAAqB;AAC5F;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,OAAO;AACnC,UAAU,OAAO;AACjB;AACA;AACA;AACA;AACA;AACO,4BAA4B,SAAS,QAAQ,SAAS,OAAO,EAAE;AACtE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,QAAQ;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2DAA2D,mBAAmB;AAC9E;AACA;AACA;AACA,oBAAoB,UAAU;AAC9B,gCAAgC,UAAU;AAC1C;AACA;AACA;AACA,gCAAgC,SAAS;AACzC;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA,+BAA+B,SAAS;AACxC;AACA;AACA;AACA;AACA;AACA,gEAAgE,SAAS;AACzE;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACO;AACP;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;;;;;ACzHqE;AAChC;AACkB;AAC6D;AACO;AAC/D;AACjC;AAC3B;AACA;AACA;AACA,8CAA8C,EAAE,QAAc;AAC9D,cAAc,YAAO;AACrB;AACA,qBAAqB,gBAAgB,GAAG,sCAAsC;AAC9E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,aAAa;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,gBAAgB,YAAY;AAC5B;AACA;AACA,6BAA6B,eAAe;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,SAAG;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,YAAY;AAC5B;AACA;AACA;AACA;AACA;AACA,gBAAgB,YAAY;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,GAAG;AACpC,yCAAyC,SAAG;AAC5C;AACA,mCAAmC,GAAG;AACtC;AACA,mDAAmD,SAAG;AACtD;AACA,uCAAuC,GAAG;AAC1C;AACA;AACA,4BAA4B,cAAc;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oFAAoF,IAAI;AACxF,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,gCAAgC,QAAQ;AACxC,gCAAgC,QAAQ;AACxC;AACA;AACA;AACA,gCAAgC,cAAc;AAC9C,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wDAAwD,eAAe;AACvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,cAAc;AACjD;AACA,2DAA2D,eAAe;AAC1E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,cAAc;AAC1C;AACA;AACA;AACA;AACA,4BAA4B,cAAc;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,aAAa;AAC9C;AACA;AACA;AACA,kCAAkC,aAAa;AAC/C;AACA,wBAAwB,2BAA2B;AACnD;AACA;AACA;AACA;AACA,8BAA8B,aAAa;AAC3C;AACA;AACA,qCAAqC,aAAa;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,WAAW;AACnB,QAAQ,WAAW;AACnB,QAAQ,WAAW;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,aAAa;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kEAAkE,aAAa;AAC/E;AACA;AACA;AACA;AACA,YAAY,YAAY;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,WAAW;AAC/B,wBAAwB,YAAY;AACpC,oBAAoB,WAAW;AAC/B,wBAAwB,YAAY;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,eAAe;AAChD;AACA;AACA;AACA,qCAAqC,eAAe;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,eAAe;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,oEAAoE;AACzG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,4BAA4B;AAC3C;AACA;AACA,4BAA4B,0BAA0B;AACtD;AACA;AACA,2CAA2C;AAC3C,kEAAkE;AAClE;AACA;AACA,6BAA6B,aAAa;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,SAAS;AACjB;AACA,YAAY,SAAS;AACrB;AACA,wBAAwB,4BAA4B;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,QAAQ;AAChC;AACA;AACA,0BAA0B,aAAa;AACvC;AACA,gCAAgC,UAAU;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,aAAa;AACvC;AACA;AACA;AACA;AACA,2BAA2B,aAAa;AACxC;AACA;AACA,2CAA2C,aAAa;AACxD;AACA;AACA,+BAA+B,cAAc;AAC7C;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,0BAA0B,iBAAiB,eAAe,gBAAgB;AAC1E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,aAAa;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,SAAS;AACjB;AACA;AACA;AACA;AACA;AACA,6CAA6C,IAAI;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,aAAa;AACrC;AACA;AACA,4BAA4B,aAAa;AACzC;AACA,4BAA4B,aAAa;AACzC;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,WAAW;AAC/B;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA,oBAAoB,WAAW;AAC/B;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,eAAe;AACxC,6BAA6B,aAAa;AAC1C;AACA,0BAA0B,aAAa;AACvC,0BAA0B,iBAAiB;AAC3C;AACA,SAAS;AACT;AACA,4BAA4B,iBAAiB;AAC7C;AACA,SAAS;AACT;AACA;AACA,iCAAiC,GAAG;AACpC;AACA;AACA;AACA;AACA,mCAAmC,GAAG;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,iBAAiB;AACjD;AACA,uCAAuC,GAAG;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,aAAa;AACxD;AACA;AACA;AACA,wBAAwB,aAAa,2CAA2C,SAAG;AACnF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,aAAa;AACjD;AACA,YAAY,SAAS;AACrB,6CAA6C,IAAI;AACjD,8BAA8B,aAAa;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,IAAI;AACjD;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,aAAa;AACzC,gCAAgC,aAAa;AAC7C,4BAA4B,aAAa;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,0BAA0B,EAAE,eAAe;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,IAAI;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,cAAc;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,YAAY;AACxB;AACA;AACA,gBAAgB,YAAY;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,kBAAkB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,cAAc;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,kBAAkB,KAAK,YAAY;AACxE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,4BAA4B;AACpD;AACA,uDAAuD,OAAO;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,SAAS;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,cAAc;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,KAAK;AAClD,mDAAmD,+BAA+B;AAClF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yDAAyD,iDAAiD;AAC1G;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA,4EAA4E,mBAAyB;AACrG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0EAA0E,kBAAwB;AAClG;AACA;AACA;AACA,gDAAgD,sCAAsC;AACtF;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,wBAAwB,qBAAqB;AAC7C;AACA;AACA;AACA,QAAQ,YAAY;AACpB,gCAAgC,QAAQ;AACxC,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,gCAAgC;AACxD;AACA;AACA,oBAAoB,aAAa;AACjC,uCAAuC,QAAQ;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4EAA4E,mBAAmB;AAC/F,kDAAkD;AAClD;AACA;AACA;AACA;AACA,QAAQ,YAAY,OAAO,kBAAkB,GAAG,kBAAkB,GAAG,gCAAgC,GAAG,gCAAgC;AACxI,yDAAyD,kEAAkE;AAC3H;AACA;AACA;AACA;AACA,0BAA0B,mBAAmB;AAC7C,yBAAyB,gBAAgB,GAAG,sCAAsC;AAClF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,WAAW;AACnB,QAAQ,WAAW;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,WAAW;AACnB,QAAQ,WAAW;AACnB,QAAQ,WAAW;AACnB;AACA;AACA;AACA;AACA,QAAQ,WAAW;AACnB;AACA;AACA,8CAA8C,IAAI;AAClD;AACA,mDAAmD,KAAK;AACxD;AACA;AACA;AACA;AACA,oDAAoD,MAAM;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,OAAO,iBAAiB,GAAG,YAAY;AACzE,YAAY,WAAW;AACvB,YAAY,WAAW;AACvB,8BAA8B,aAAa,GAAG,YAAY,EAAE,YAAY;AACxE,mDAAmD,WAAW;AAC9D;AACA;AACA;AACA;AACA;AACA,wBAAwB,iCAAiC;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,UAAU,CAAC,cAAc;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,YAAY;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,aAAa;AAClC,sCAAsC,QAAQ;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yEAAyE,0BAA0B;AACnG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,aAAa;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,aAAa;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,cAAc;AACvC;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,8BAA8B;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,+BAA+B;AACvD,gBAAgB,YAAY;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,YAAY;AAC5B,YAAY,YAAY;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,UAAU;AAC9B;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,cAAc;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8DAA8D,cAAc;AAC5E;AACA;AACA,+BAA+B,SAAG;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,SAAG;AAC3B,yBAAyB,SAAG,gBAAgB,SAAG;AAC/C;AACA;AACA;AACA;AACA;AACA,kEAAkE,SAAG;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,SAAG;AACtC;AACA,0BAA0B,GAAG;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,kBAAkB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kEAAkE;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,EAAE,YAAO;AACjC,6BAA6B,EAAE,YAAO;AACtC;AACA;AACA,4DAA4D;AAC5D;AACA;AACA,4DAA4D;AAC5D;AACA,sBAAsB,gBAAgB,GAAG;AACzC,uBAAuB,mBAAmB,GAAG;AAC7C,yBAAyB,YAAY;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAAe,SAAS,EAAC;;;ACv7DQ;AACjC,kBAAkB,6EAA4C;;AAE9D;AACA;AACA;AACA;AACA;AACA,IAAI,YAAkB;;AAEtB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,IAAI,GAAS;AACb;AACA;;AAEA,qDAAe,gBAAgB;;;;;;;;;;;;AC5D/B;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX,QAAQ;AACR;AACA;AACA;AACA;AACA,WAAW;;AAEX;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,OAAO;AACP;;AAEA;AACA;AACA,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,iEAAe,QAAQ;;;;;;;;;;;;;AClJgC;;AAEvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,oEAAO;;AAE7B;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,iEAAe,QAAQ;;;;;;;;;;;;ACxQvB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC;AACA;AACA,YAAY;AACZ;AACA,2DAA2D,KAAK;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,iEAAe,OAAO;;;;;;;;;;;;AC5LtB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA,iEAAe,MAAM;;;;;;;;;;;;;AC1DoC;AACzD;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,qEAAQ;AACrC;AACA,OAAO;AACP;AACA;AACA,iEAAe,MAAM;;;;;;;;;;;;ACjDrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4DAA4D,QAAQ;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,iEAAe,MAAM;;;;;;;;;;;;ACrOrB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;;AAEA,iEAAe,OAAO;;;;;;;;;;;;;ACtBc;AACpC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,wBAAwB,6DAAO;AAC/B;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA,iEAAe,OAAO;;;;;;;;;;;;;ACtBiC;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,oEAAO;AAC3C;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;;AAEA,iEAAe,cAAc;;;;;;;;;;;;ACnE7B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,MAAM;AACN;AACA;;AAEA;AACA;AACA,MAAM;AACN;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,2BAA2B,yBAAyB;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,UAAU;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,yBAAyB;AACvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,UAAU;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,kCAAkC,KAAK;;AAEvC;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA,iEAAe,YAAY;;;;;;;;;;;;ACjK3B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;;AAEP;AACA,yBAAyB,kBAAkB;AAC3C;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,kDAAE;AACpB,iEAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;;;;;;;;;;;;AC3EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA,QAAQ;AACR;AACA,QAAQ;AACR,yBAAyB,kBAAkB,KAAK,yBAAyB;AACzE;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,uBAAuB,oCAAoC;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,uBAAuB,oCAAoC;AAC3D;AACA,sCAAsC,cAAc;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,iEAAe,QAAQ;;;;;;;;;;;;ACxevB;AACA;AACA;AACA;AACA,eAAe,QAAQ;AACvB,eAAe,QAAQ;AACvB,kBAAkB,QAAQ;AAC1B,kBAAkB,OAAO;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe,QAAQ;AACvB,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA,eAAe,QAAQ;AACvB,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;;AAEA;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,UAAU,GAAG,iCAAiC;AAC7D;AACA,UAAU;AACV;AACA,UAAU;AACV,OAAO;AACP;;AAEA;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,8BAA8B;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,MAAM;;AAEN;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gGAAgG,WAAW;AAC3G;AACA;AACA;;AAEA,iEAAe,MAAM;;;;;;;;;;;;;ACxId;AACP,mCAAmC;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA,iEAAe,oBAAoB;;;;;;;;;;;;AC3DnC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,YAAY;AAC7D,yDAAyD,kBAAkB;;AAE3E;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,UAAU;AACV;AACA;;AAEA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,iEAAe,KAAK;;;;;;;;;;;;;;ACzQqC;AACA;;AAEzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,oCAAoC,sBAAsB;AAC1D,OAAO;AACP;AACA;;AAEA;AACA;AACA,0CAA0C,gBAAgB;AAC1D;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,mBAAmB;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,SAAS;AAC/B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,8BAA8B,0BAA0B;AACxD;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA,0CAA0C,eAAe;AACzD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yDAAyD,mBAAmB;AAC5E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,qEAAQ;AACrC;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,qEAAQ;AACrC;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4DAA4D,OAAO;AACnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,yBAAyB;AAChD,qCAAqC,cAAc;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,mBAAmB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,OAAO;AAC3B;AACA;AACA,gBAAgB,+CAA+C;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,mCAAmC,cAAc;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA;AACA;AACA;;AAEA,iEAAe,OAAO;;;;;;;;;;;;ACjatB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;;AAEA;AACA,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,iEAAe,KAAK;;;;;;;;;;;;ACvFpB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,6DAA6D,aAAa;AAC1E;AACA;AACA;AACA;AACA;AACA,+CAA+C,eAAe;AAC9D;AACA,KAAK;AACL;AACA;;AAEA,iEAAe,UAAU;;;;;;;;;;;;;AC7CoB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,MAAM;AACN;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA,4BAA4B,sEAAY;AACxC;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,WAAW;AACX;AACA;AACA;AACA;AACA,OAAO;AACP,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,4BAA4B,sEAAY;AACxC;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,WAAW;AACX;AACA;AACA,OAAO;;AAEP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,4DAA4D;AAC5D;AACA,SAAS,eAAe,YAAY,YAAY,gBAAgB,aAAa;AAC7E;AACA;AACA,uCAAuC,YAAY;AACnD;AACA,SAAS,cAAc;AACvB,OAAO;AACP;AACA;AACA;;AAEA,iEAAe,SAAS;;;;;;;;;;;;;AC1MgC;AACxD;AACA;AACA;AACA,aAAa,GAAG;AAChB,aAAa,GAAG;AAChB,aAAa,GAAG;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA,KAAK;AACL;AACA,KAAK;AACL,KAAK;AACL;AACA,KAAK;AACL,KAAK;AACL;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAY,QAAQ;AACpB;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,+CAA+C,GAAG;AAClD,KAAK;AACL;;AAEA;AACA,2EAA2E,KAAK;AAChF,+BAA+B,OAAO;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;;AAEA,sBAAsB,4BAA4B;AAClD;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,4EAAS;AACpC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,oBAAoB,EAAE,sBAAsB;AAC/D;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,wCAAwC,SAAS;AACjD;AACA;AACA;AACA;;AAEA,iEAAe,QAAQ;;;;;;;;;;;;;ACpU0B;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,6CAA6C,8BAA8B;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,iCAAiC;AAChD;AACA,4CAA4C,iCAAiC;AAC7E;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,mCAAmC;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,iCAAiC;AAC3E;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6FAA6F,WAAW;AACxG;AACA;AACA,2BAA2B,6DAAoB;AAC/C;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,iEAAe,QAAQ;;;;;;;;;;;;;ACzLU;;AAEjC;AACA;AACA;AACA;AACe,wBAAwB,iDAAQ;AAC/C;AACA;AACA,aAAa,QAAQ;AACrB,gBAAgB,QAAQ;AACxB,gBAAgB,QAAQ;AACxB,gBAAgB,QAAQ;AACxB,gBAAgB,SAAS;AACzB;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,YAAY,2CAA2C;AACvD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,6BAA6B;AACjD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe,OAAO;AACtB;AACA;AACA;AACA;AACA,sBAAsB,wCAAwC;AAC9D;AACA;;AAEA;AACA;AACA,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACjGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACe;AACf;AACA;AACA,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,YAAY,QAAQ;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,YAAY,QAAQ;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,QAAQ;AACrB,eAAe,OAAO;AACtB;AACA;AACA,qDAAqD,IAAI;AACzD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;;;;;;;;;;;;AC/NA;AACe;AACf;AACA;AACA,aAAa,QAAQ;AACrB,gBAAgB,QAAQ;AACxB,gBAAgB,QAAQ;AACxB,gBAAgB,QAAQ;AACxB,gBAAgB,SAAS;AACzB;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,yCAAyC;AACnD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,yCAAyC;AAClD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;ACtLiC;;AAEjC;AACA;AACA;AACA;AACA;AACA;AACe,uBAAuB,iDAAQ;AAC9C;AACA;AACA,aAAa,QAAQ;AACrB,gBAAgB,QAAQ;AACxB,gBAAgB,QAAQ;AACxB,gBAAgB,QAAQ;AACxB,gBAAgB,SAAS;AACzB;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,YAAY,2CAA2C;AACvD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACjGA;AACe;AACf;AACA;AACA,aAAa,QAAQ;AACrB,gBAAgB,QAAQ;AACxB,gBAAgB,QAAQ;AACxB;AACA,gBAAgB,uBAAuB;AACvC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;;;;;;;;;;;;ACtE6C;AAC7C;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB,gBAAgB,QAAQ;AACxB,gBAAgB,QAAQ;AACxB,gBAAgB,QAAQ;AACxB,gBAAgB,QAAQ;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,MAAM;AACN;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA;AACA;AACA;AACA,aAAa,GAAG;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,YAAY;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,4BAA4B,sEAAY;AACxC;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,WAAW;AACX;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,WAAW;AACX;AACA;AACA;AACA;AACA,OAAO;AACP,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,4BAA4B,sEAAY;AACxC;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,WAAW;AACX;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,4DAA4D;AAC5D;AACA,SAAS,eAAe,YAAY,YAAY,gBAAgB,aAAa;AAC7E;AACA;AACA,uCAAuC,YAAY;AACnD;AACA,SAAS,cAAc;AACvB,OAAO;AACP;AACA;AACA;AACA;;AAEA,iEAAe,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACjPtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,yDAAe,QAAQ;;;;;;;;;;;AC/JvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,iDAAe,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACzPxB;AAC8D;AACT;AACY;AAClB;AACY;AACA;AACG;AACJ;AACmB;AACxB;AACA;AACH;AACO;AACV;AACA;AACA;AACS;AACN;AACqB;AACN;AACf;AACG;AACN;AACH;AACM;AACN;AACe;AACH;AACH;AACA;AACT;AACE;AACJ;AACA;;AAE3B;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,6BAA6B,wBAAW;AACxC;AACA;;AAEA;AACA;AACA;AACA,0BAA0B,qBAAQ;AAClC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,8BAA8B,yBAAY;AAC1C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,6BAAgB;AAC5B;AACA;AACA;;AAEA;AACA;AACA;AACA,0BAA0B,qBAAQ;AAClC;AACA;AACA;AACA;AACA;AACA,0BAA0B,qBAAQ;AAClC;AACA;;AAEA;AACA;AACA;AACA,yBAAyB,oBAAO;AAChC;AACA;AACA;AACA;AACA;AACA,sCAAsC,UAAS;AAC/C,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA,wBAAwB,mBAAM;AAC9B;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,wBAAwB,mBAAM;AAC9B;AACA;;AAEA;AACA;AACA;AACA,wBAAwB,mBAAM;AAC9B;AACA;;AAEA;AACA;AACA;AACA,yBAAyB,sBAAS;AAClC;AACA;;AAEA;AACA;AACA;AACA,yBAAyB,oBAAO;AAChC;AACA;AACA,wBAAwB,0BAAO;AAC/B;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,2BAAc;AAC1B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,8BAA8B,yBAAY;AAC1C;AACA;;AAEA;AACA;AACA;AACA,yBAAyB,0BAAO;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA,0BAA0B,4BAAQ;AAClC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,yBAAyB,oBAAO;AAChC;AACA;;AAEA;AACA;AACA;AACA,uBAAuB,kBAAK;AAC5B;AACA;;AAEA;AACA;AACA;AACA,wBAAwB,kBAAK;AAC7B;AACA;;AAEA;AACA;AACA;AACA,2BAA2B,sBAAS;AACpC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,0BAA0B,qBAAQ;AAClC;AACA;;AAEA;AACA;AACA;AACA,wBAAwB,mBAAM;AAC9B;AACA;;AAEA;AACA;AACA;AACA,0BAA0B,qBAAQ;AAClC;AACA;;AAEA;AACA;AACA;AACA,wBAAwB,mBAAM;AAC9B;AACA;AACA;AACA;AACA;AACA,4BAA4B,uBAAU;AACtC;AACA;;AAEA;AACA;AACA;AACA,4BAA4B,gCAAU;AACtC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,kBAAQ;AACtB;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,UAAU;AACV,6BAA6B,wBAAW;AACxC;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,4BAA4B,gCAAU;AACtC;AACA;AACA;AACA;AACA;AACA,0BAA0B,qBAAQ;AAClC;AACA;AACA;;AAkCC;;;;;;;UClXD;UACA;;UAEA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;;UAEA;UACA;;UAEA;UACA;UACA;;;;;WCtBA;WACA;WACA;WACA;WACA,yCAAyC,wCAAwC;WACjF;WACA;WACA;;;;;WCPA;;;;;WCAA;WACA;WACA;WACA,uDAAuD,iBAAiB;WACxE;WACA,gDAAgD,aAAa;WAC7D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACN2D;;AAE3D;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,6BAAS;AACvC;AACA,OAAO;AACP;AACA;;AAEA,0DAAe,gBAAgB;;;ACnC8B;;AAE7D;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,+BAA+B,8BAAU;AACzC;AACA,OAAO;AACP;AACA;;AAEA,iDAAe,iBAAiB;;;AC7ByB;;AAEzD;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,4BAAQ;AACrC;AACA,OAAO;AACP;AACA;;AAEA,+CAAe,eAAe;;;;;ACnC2B;;AAEzD;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,4BAAQ;AACrC;AACA,OAAO;AACP;AACA;;AAEA,+CAAe,eAAe;;;ACnC9B;AACmD;AACI;AACM;AACG;AACN;AACA;;AAE3C;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,qCAAqC,QAAe;AACpD,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA,sCAAsC,mBAAgB;AACtD,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA,uCAAuC,UAAiB;AACxD,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA,qCAAqC,QAAe;AACpD,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,yBAAK;AACnC;AACA;AACA,SAAS;AACT;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,oCAAoC,2BAAO;AAC3C,OAAO;;AAEP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,2BAAO;AACnC,OAAO;AACP,KAAK;AACL;AACA;;;;;AC1GA;AACsB;AACwC;AACG;AAClB;AACY;AACA;AACG;AACe;AACxB;AACA;AACH;AACH;AACA;AACA;AACO;AACJ;AACqB;AACN;AACf;AACG;AACN;AACH;AACM;AACN;AACe;AACH;AACH;AACA;AACT;AACE;AACJ;AACF;AACA;AACW;;AAEnD,oBAAoB,qBAAO;AAC3B;;AAEA,qBAAqB,QAAQ;AAC7B;;AAsCC","sources":["webpack://dsgov/webpack/universalModuleDefinition","webpack://dsgov/./node_modules/@popperjs/core/lib/dom-utils/getWindow.js","webpack://dsgov/./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js","webpack://dsgov/./node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js","webpack://dsgov/./node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js","webpack://dsgov/./node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js","webpack://dsgov/./node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js","webpack://dsgov/./node_modules/@popperjs/core/lib/dom-utils/getNodeName.js","webpack://dsgov/./node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js","webpack://dsgov/./node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js","webpack://dsgov/./node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js","webpack://dsgov/./node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js","webpack://dsgov/./node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js","webpack://dsgov/./node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js","webpack://dsgov/./node_modules/@popperjs/core/lib/dom-utils/getParentNode.js","webpack://dsgov/./node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js","webpack://dsgov/./node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js","webpack://dsgov/./node_modules/@popperjs/core/lib/dom-utils/isTableElement.js","webpack://dsgov/./node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js","webpack://dsgov/./node_modules/@popperjs/core/lib/enums.js","webpack://dsgov/./node_modules/@popperjs/core/lib/utils/orderModifiers.js","webpack://dsgov/./node_modules/@popperjs/core/lib/utils/debounce.js","webpack://dsgov/./node_modules/@popperjs/core/lib/utils/mergeByName.js","webpack://dsgov/./node_modules/@popperjs/core/lib/createPopper.js","webpack://dsgov/./node_modules/@popperjs/core/lib/modifiers/eventListeners.js","webpack://dsgov/./node_modules/@popperjs/core/lib/utils/getBasePlacement.js","webpack://dsgov/./node_modules/@popperjs/core/lib/utils/getVariation.js","webpack://dsgov/./node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js","webpack://dsgov/./node_modules/@popperjs/core/lib/utils/computeOffsets.js","webpack://dsgov/./node_modules/@popperjs/core/lib/modifiers/popperOffsets.js","webpack://dsgov/./node_modules/@popperjs/core/lib/utils/math.js","webpack://dsgov/./node_modules/@popperjs/core/lib/modifiers/computeStyles.js","webpack://dsgov/./node_modules/@popperjs/core/lib/modifiers/applyStyles.js","webpack://dsgov/./node_modules/@popperjs/core/lib/modifiers/offset.js","webpack://dsgov/./node_modules/@popperjs/core/lib/utils/getOppositePlacement.js","webpack://dsgov/./node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js","webpack://dsgov/./node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js","webpack://dsgov/./node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js","webpack://dsgov/./node_modules/@popperjs/core/lib/dom-utils/contains.js","webpack://dsgov/./node_modules/@popperjs/core/lib/utils/rectToClientRect.js","webpack://dsgov/./node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js","webpack://dsgov/./node_modules/@popperjs/core/lib/utils/getFreshSideObject.js","webpack://dsgov/./node_modules/@popperjs/core/lib/utils/mergePaddingObject.js","webpack://dsgov/./node_modules/@popperjs/core/lib/utils/expandToHashMap.js","webpack://dsgov/./node_modules/@popperjs/core/lib/utils/detectOverflow.js","webpack://dsgov/./node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js","webpack://dsgov/./node_modules/@popperjs/core/lib/modifiers/flip.js","webpack://dsgov/./node_modules/@popperjs/core/lib/utils/getAltAxis.js","webpack://dsgov/./node_modules/@popperjs/core/lib/utils/within.js","webpack://dsgov/./node_modules/@popperjs/core/lib/modifiers/preventOverflow.js","webpack://dsgov/./node_modules/@popperjs/core/lib/modifiers/arrow.js","webpack://dsgov/./node_modules/@popperjs/core/lib/modifiers/hide.js","webpack://dsgov/./node_modules/@popperjs/core/lib/popper.js","webpack://dsgov/./node_modules/flatpickr/dist/esm/utils/polyfills.js","webpack://dsgov/./node_modules/flatpickr/dist/l10n/pt.js","webpack://dsgov/./node_modules/focus-visible/dist/focus-visible.js","webpack://dsgov/./src/components/accordion/accordion.js","webpack://dsgov/./src/components/avatar/avatar.js","webpack://dsgov/./src/components/breadcrumb/breadcrumb.js","webpack://dsgov/./src/components/card/card.js","webpack://dsgov/./src/components/carousel/carousel.js","webpack://dsgov/./src/components/checkbox/checkbox.js","webpack://dsgov/./src/components/cookiebar/cookiebar-data.js","webpack://dsgov/./src/components/cookiebar/cookiebar-labels.js","webpack://dsgov/./src/components/cookiebar/cookiebar-templates.js","webpack://dsgov/./src/components/cookiebar/selectors.js","webpack://dsgov/./src/components/cookiebar/cookiebar.js","webpack://dsgov/./node_modules/flatpickr/dist/esm/types/options.js","webpack://dsgov/./node_modules/flatpickr/dist/esm/l10n/default.js","webpack://dsgov/./node_modules/flatpickr/dist/esm/utils/index.js","webpack://dsgov/./node_modules/flatpickr/dist/esm/utils/dom.js","webpack://dsgov/./node_modules/flatpickr/dist/esm/utils/formatting.js","webpack://dsgov/./node_modules/flatpickr/dist/esm/utils/dates.js","webpack://dsgov/./node_modules/flatpickr/dist/esm/index.js","webpack://dsgov/./src/components/datetimepicker/datetimepicker.js","webpack://dsgov/./src/components/footer/footer.js","webpack://dsgov/./src/components/header/header.js","webpack://dsgov/./src/components/input/input.js","webpack://dsgov/./src/components/item/item.js","webpack://dsgov/./src/components/list/list.js","webpack://dsgov/./src/components/menu/menu.js","webpack://dsgov/./src/components/message/message.js","webpack://dsgov/./src/components/modal/modal.js","webpack://dsgov/./src/components/notification/notification.js","webpack://dsgov/./src/components/pagination/pagination.js","webpack://dsgov/./src/components/scrim/scrim.js","webpack://dsgov/./src/components/select/select.js","webpack://dsgov/./src/components/step/step.js","webpack://dsgov/./src/components/swipe/swipe.js","webpack://dsgov/./src/components/tab/tab.js","webpack://dsgov/./src/components/table/table.js","webpack://dsgov/./src/components/tag/tag.js","webpack://dsgov/./src/components/textarea/textarea.js","webpack://dsgov/./src/components/tooltip/tooltip.js","webpack://dsgov/./src/components/upload/upload.js","webpack://dsgov/./src/components/wizard/wizard.js","webpack://dsgov/./src/partial/js/behavior/accordion.js","webpack://dsgov/./src/partial/js/behavior/checkgroup.js","webpack://dsgov/./src/partial/js/behavior/collapse.js","webpack://dsgov/./src/partial/js/behavior/dropdown.js","webpack://dsgov/./src/partial/js/behavior/scrim.js","webpack://dsgov/./src/partial/js/behavior/tooltip.js","webpack://dsgov/./src/components/cookiebar/jsonData.js","webpack://dsgov/./src/components/input/input-data.js","webpack://dsgov/./src/partial/js/globals-class.js","webpack://dsgov/webpack/bootstrap","webpack://dsgov/webpack/runtime/define property getters","webpack://dsgov/webpack/runtime/hasOwnProperty shorthand","webpack://dsgov/webpack/runtime/make namespace object","webpack://dsgov/./src/util/accordion/accordion.js","webpack://dsgov/./src/util/checkgroup/checkgroup.js","webpack://dsgov/./src/util/collapse/collapse.js","webpack://dsgov/./src/util/dropdown/dropdown.js","webpack://dsgov/./src/partial/js/dsgov.beahavior.js","webpack://dsgov/./src/partial/js/dsgov-init.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"dsgov\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"dsgov\"] = factory();\n\telse\n\t\troot[\"dsgov\"] = factory();\n})(self, function() {\nreturn ","export default function getWindow(node) {\n if (node == null) {\n return window;\n }\n\n if (node.toString() !== '[object Window]') {\n var ownerDocument = node.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView || window : window;\n }\n\n return node;\n}","import getWindow from \"./getWindow.js\";\n\nfunction isElement(node) {\n var OwnElement = getWindow(node).Element;\n return node instanceof OwnElement || node instanceof Element;\n}\n\nfunction isHTMLElement(node) {\n var OwnElement = getWindow(node).HTMLElement;\n return node instanceof OwnElement || node instanceof HTMLElement;\n}\n\nfunction isShadowRoot(node) {\n // IE 11 has no ShadowRoot\n if (typeof ShadowRoot === 'undefined') {\n return false;\n }\n\n var OwnElement = getWindow(node).ShadowRoot;\n return node instanceof OwnElement || node instanceof ShadowRoot;\n}\n\nexport { isElement, isHTMLElement, isShadowRoot };","import { isHTMLElement } from \"./instanceOf.js\";\nvar round = Math.round;\nexport default function getBoundingClientRect(element, includeScale) {\n if (includeScale === void 0) {\n includeScale = false;\n }\n\n var rect = element.getBoundingClientRect();\n var scaleX = 1;\n var scaleY = 1;\n\n if (isHTMLElement(element) && includeScale) {\n // Fallback to 1 in case both values are `0`\n scaleX = rect.width / element.offsetWidth || 1;\n scaleY = rect.height / element.offsetHeight || 1;\n }\n\n return {\n width: round(rect.width / scaleX),\n height: round(rect.height / scaleY),\n top: round(rect.top / scaleY),\n right: round(rect.right / scaleX),\n bottom: round(rect.bottom / scaleY),\n left: round(rect.left / scaleX),\n x: round(rect.left / scaleX),\n y: round(rect.top / scaleY)\n };\n}","import getWindow from \"./getWindow.js\";\nexport default function getWindowScroll(node) {\n var win = getWindow(node);\n var scrollLeft = win.pageXOffset;\n var scrollTop = win.pageYOffset;\n return {\n scrollLeft: scrollLeft,\n scrollTop: scrollTop\n };\n}","export default function getHTMLElementScroll(element) {\n return {\n scrollLeft: element.scrollLeft,\n scrollTop: element.scrollTop\n };\n}","import getWindowScroll from \"./getWindowScroll.js\";\nimport getWindow from \"./getWindow.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getHTMLElementScroll from \"./getHTMLElementScroll.js\";\nexport default function getNodeScroll(node) {\n if (node === getWindow(node) || !isHTMLElement(node)) {\n return getWindowScroll(node);\n } else {\n return getHTMLElementScroll(node);\n }\n}","export default function getNodeName(element) {\n return element ? (element.nodeName || '').toLowerCase() : null;\n}","import { isElement } from \"./instanceOf.js\";\nexport default function getDocumentElement(element) {\n // $FlowFixMe[incompatible-return]: assume body is always available\n return ((isElement(element) ? element.ownerDocument : // $FlowFixMe[prop-missing]\n element.document) || window.document).documentElement;\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nexport default function getWindowScrollBarX(element) {\n // If has a CSS width greater than the viewport, then this will be\n // incorrect for RTL.\n // Popper 1 is broken in this case and never had a bug report so let's assume\n // it's not an issue. I don't think anyone ever specifies width on \n // anyway.\n // Browsers where the left scrollbar doesn't cause an issue report `0` for\n // this (e.g. Edge 2019, IE11, Safari)\n return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft;\n}","import getWindow from \"./getWindow.js\";\nexport default function getComputedStyle(element) {\n return getWindow(element).getComputedStyle(element);\n}","import getComputedStyle from \"./getComputedStyle.js\";\nexport default function isScrollParent(element) {\n // Firefox wants us to check `-x` and `-y` variations as well\n var _getComputedStyle = getComputedStyle(element),\n overflow = _getComputedStyle.overflow,\n overflowX = _getComputedStyle.overflowX,\n overflowY = _getComputedStyle.overflowY;\n\n return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX);\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getNodeScroll from \"./getNodeScroll.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport isScrollParent from \"./isScrollParent.js\";\n\nfunction isElementScaled(element) {\n var rect = element.getBoundingClientRect();\n var scaleX = rect.width / element.offsetWidth || 1;\n var scaleY = rect.height / element.offsetHeight || 1;\n return scaleX !== 1 || scaleY !== 1;\n} // Returns the composite rect of an element relative to its offsetParent.\n// Composite means it takes into account transforms as well as layout.\n\n\nexport default function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {\n if (isFixed === void 0) {\n isFixed = false;\n }\n\n var isOffsetParentAnElement = isHTMLElement(offsetParent);\n var offsetParentIsScaled = isHTMLElement(offsetParent) && isElementScaled(offsetParent);\n var documentElement = getDocumentElement(offsetParent);\n var rect = getBoundingClientRect(elementOrVirtualElement, offsetParentIsScaled);\n var scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n var offsets = {\n x: 0,\n y: 0\n };\n\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || // https://github.com/popperjs/popper-core/issues/1078\n isScrollParent(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n\n if (isHTMLElement(offsetParent)) {\n offsets = getBoundingClientRect(offsetParent, true);\n offsets.x += offsetParent.clientLeft;\n offsets.y += offsetParent.clientTop;\n } else if (documentElement) {\n offsets.x = getWindowScrollBarX(documentElement);\n }\n }\n\n return {\n x: rect.left + scroll.scrollLeft - offsets.x,\n y: rect.top + scroll.scrollTop - offsets.y,\n width: rect.width,\n height: rect.height\n };\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\"; // Returns the layout rect of an element relative to its offsetParent. Layout\n// means it doesn't take into account transforms.\n\nexport default function getLayoutRect(element) {\n var clientRect = getBoundingClientRect(element); // Use the clientRect sizes if it's not been transformed.\n // Fixes https://github.com/popperjs/popper-core/issues/1223\n\n var width = element.offsetWidth;\n var height = element.offsetHeight;\n\n if (Math.abs(clientRect.width - width) <= 1) {\n width = clientRect.width;\n }\n\n if (Math.abs(clientRect.height - height) <= 1) {\n height = clientRect.height;\n }\n\n return {\n x: element.offsetLeft,\n y: element.offsetTop,\n width: width,\n height: height\n };\n}","import getNodeName from \"./getNodeName.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport { isShadowRoot } from \"./instanceOf.js\";\nexport default function getParentNode(element) {\n if (getNodeName(element) === 'html') {\n return element;\n }\n\n return (// this is a quicker (but less type safe) way to save quite some bytes from the bundle\n // $FlowFixMe[incompatible-return]\n // $FlowFixMe[prop-missing]\n element.assignedSlot || // step into the shadow DOM of the parent of a slotted node\n element.parentNode || ( // DOM Element detected\n isShadowRoot(element) ? element.host : null) || // ShadowRoot detected\n // $FlowFixMe[incompatible-call]: HTMLElement is a Node\n getDocumentElement(element) // fallback\n\n );\n}","import getParentNode from \"./getParentNode.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nexport default function getScrollParent(node) {\n if (['html', 'body', '#document'].indexOf(getNodeName(node)) >= 0) {\n // $FlowFixMe[incompatible-return]: assume body is always available\n return node.ownerDocument.body;\n }\n\n if (isHTMLElement(node) && isScrollParent(node)) {\n return node;\n }\n\n return getScrollParent(getParentNode(node));\n}","import getScrollParent from \"./getScrollParent.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getWindow from \"./getWindow.js\";\nimport isScrollParent from \"./isScrollParent.js\";\n/*\ngiven a DOM element, return the list of all scroll parents, up the list of ancesors\nuntil we get to the top window object. This list is what we attach scroll listeners\nto, because if any of these parent elements scroll, we'll need to re-calculate the\nreference element's position.\n*/\n\nexport default function listScrollParents(element, list) {\n var _element$ownerDocumen;\n\n if (list === void 0) {\n list = [];\n }\n\n var scrollParent = getScrollParent(element);\n var isBody = scrollParent === ((_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body);\n var win = getWindow(scrollParent);\n var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent;\n var updatedList = list.concat(target);\n return isBody ? updatedList : // $FlowFixMe[incompatible-call]: isBody tells us target will be an HTMLElement here\n updatedList.concat(listScrollParents(getParentNode(target)));\n}","import getNodeName from \"./getNodeName.js\";\nexport default function isTableElement(element) {\n return ['table', 'td', 'th'].indexOf(getNodeName(element)) >= 0;\n}","import getWindow from \"./getWindow.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport isTableElement from \"./isTableElement.js\";\nimport getParentNode from \"./getParentNode.js\";\n\nfunction getTrueOffsetParent(element) {\n if (!isHTMLElement(element) || // https://github.com/popperjs/popper-core/issues/837\n getComputedStyle(element).position === 'fixed') {\n return null;\n }\n\n return element.offsetParent;\n} // `.offsetParent` reports `null` for fixed elements, while absolute elements\n// return the containing block\n\n\nfunction getContainingBlock(element) {\n var isFirefox = navigator.userAgent.toLowerCase().indexOf('firefox') !== -1;\n var isIE = navigator.userAgent.indexOf('Trident') !== -1;\n\n if (isIE && isHTMLElement(element)) {\n // In IE 9, 10 and 11 fixed elements containing block is always established by the viewport\n var elementCss = getComputedStyle(element);\n\n if (elementCss.position === 'fixed') {\n return null;\n }\n }\n\n var currentNode = getParentNode(element);\n\n while (isHTMLElement(currentNode) && ['html', 'body'].indexOf(getNodeName(currentNode)) < 0) {\n var css = getComputedStyle(currentNode); // This is non-exhaustive but covers the most common CSS properties that\n // create a containing block.\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n\n if (css.transform !== 'none' || css.perspective !== 'none' || css.contain === 'paint' || ['transform', 'perspective'].indexOf(css.willChange) !== -1 || isFirefox && css.willChange === 'filter' || isFirefox && css.filter && css.filter !== 'none') {\n return currentNode;\n } else {\n currentNode = currentNode.parentNode;\n }\n }\n\n return null;\n} // Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\n\n\nexport default function getOffsetParent(element) {\n var window = getWindow(element);\n var offsetParent = getTrueOffsetParent(element);\n\n while (offsetParent && isTableElement(offsetParent) && getComputedStyle(offsetParent).position === 'static') {\n offsetParent = getTrueOffsetParent(offsetParent);\n }\n\n if (offsetParent && (getNodeName(offsetParent) === 'html' || getNodeName(offsetParent) === 'body' && getComputedStyle(offsetParent).position === 'static')) {\n return window;\n }\n\n return offsetParent || getContainingBlock(element) || window;\n}","export var top = 'top';\nexport var bottom = 'bottom';\nexport var right = 'right';\nexport var left = 'left';\nexport var auto = 'auto';\nexport var basePlacements = [top, bottom, right, left];\nexport var start = 'start';\nexport var end = 'end';\nexport var clippingParents = 'clippingParents';\nexport var viewport = 'viewport';\nexport var popper = 'popper';\nexport var reference = 'reference';\nexport var variationPlacements = /*#__PURE__*/basePlacements.reduce(function (acc, placement) {\n return acc.concat([placement + \"-\" + start, placement + \"-\" + end]);\n}, []);\nexport var placements = /*#__PURE__*/[].concat(basePlacements, [auto]).reduce(function (acc, placement) {\n return acc.concat([placement, placement + \"-\" + start, placement + \"-\" + end]);\n}, []); // modifiers that need to read the DOM\n\nexport var beforeRead = 'beforeRead';\nexport var read = 'read';\nexport var afterRead = 'afterRead'; // pure-logic modifiers\n\nexport var beforeMain = 'beforeMain';\nexport var main = 'main';\nexport var afterMain = 'afterMain'; // modifier with the purpose to write to the DOM (or write into a framework state)\n\nexport var beforeWrite = 'beforeWrite';\nexport var write = 'write';\nexport var afterWrite = 'afterWrite';\nexport var modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite];","import { modifierPhases } from \"../enums.js\"; // source: https://stackoverflow.com/questions/49875255\n\nfunction order(modifiers) {\n var map = new Map();\n var visited = new Set();\n var result = [];\n modifiers.forEach(function (modifier) {\n map.set(modifier.name, modifier);\n }); // On visiting object, check for its dependencies and visit them recursively\n\n function sort(modifier) {\n visited.add(modifier.name);\n var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []);\n requires.forEach(function (dep) {\n if (!visited.has(dep)) {\n var depModifier = map.get(dep);\n\n if (depModifier) {\n sort(depModifier);\n }\n }\n });\n result.push(modifier);\n }\n\n modifiers.forEach(function (modifier) {\n if (!visited.has(modifier.name)) {\n // check for visited object\n sort(modifier);\n }\n });\n return result;\n}\n\nexport default function orderModifiers(modifiers) {\n // order based on dependencies\n var orderedModifiers = order(modifiers); // order based on phase\n\n return modifierPhases.reduce(function (acc, phase) {\n return acc.concat(orderedModifiers.filter(function (modifier) {\n return modifier.phase === phase;\n }));\n }, []);\n}","export default function debounce(fn) {\n var pending;\n return function () {\n if (!pending) {\n pending = new Promise(function (resolve) {\n Promise.resolve().then(function () {\n pending = undefined;\n resolve(fn());\n });\n });\n }\n\n return pending;\n };\n}","export default function mergeByName(modifiers) {\n var merged = modifiers.reduce(function (merged, current) {\n var existing = merged[current.name];\n merged[current.name] = existing ? Object.assign({}, existing, current, {\n options: Object.assign({}, existing.options, current.options),\n data: Object.assign({}, existing.data, current.data)\n }) : current;\n return merged;\n }, {}); // IE11 does not support Object.values\n\n return Object.keys(merged).map(function (key) {\n return merged[key];\n });\n}","import getCompositeRect from \"./dom-utils/getCompositeRect.js\";\nimport getLayoutRect from \"./dom-utils/getLayoutRect.js\";\nimport listScrollParents from \"./dom-utils/listScrollParents.js\";\nimport getOffsetParent from \"./dom-utils/getOffsetParent.js\";\nimport getComputedStyle from \"./dom-utils/getComputedStyle.js\";\nimport orderModifiers from \"./utils/orderModifiers.js\";\nimport debounce from \"./utils/debounce.js\";\nimport validateModifiers from \"./utils/validateModifiers.js\";\nimport uniqueBy from \"./utils/uniqueBy.js\";\nimport getBasePlacement from \"./utils/getBasePlacement.js\";\nimport mergeByName from \"./utils/mergeByName.js\";\nimport detectOverflow from \"./utils/detectOverflow.js\";\nimport { isElement } from \"./dom-utils/instanceOf.js\";\nimport { auto } from \"./enums.js\";\nvar INVALID_ELEMENT_ERROR = 'Popper: Invalid reference or popper argument provided. They must be either a DOM element or virtual element.';\nvar INFINITE_LOOP_ERROR = 'Popper: An infinite loop in the modifiers cycle has been detected! The cycle has been interrupted to prevent a browser crash.';\nvar DEFAULT_OPTIONS = {\n placement: 'bottom',\n modifiers: [],\n strategy: 'absolute'\n};\n\nfunction areValidElements() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return !args.some(function (element) {\n return !(element && typeof element.getBoundingClientRect === 'function');\n });\n}\n\nexport function popperGenerator(generatorOptions) {\n if (generatorOptions === void 0) {\n generatorOptions = {};\n }\n\n var _generatorOptions = generatorOptions,\n _generatorOptions$def = _generatorOptions.defaultModifiers,\n defaultModifiers = _generatorOptions$def === void 0 ? [] : _generatorOptions$def,\n _generatorOptions$def2 = _generatorOptions.defaultOptions,\n defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2;\n return function createPopper(reference, popper, options) {\n if (options === void 0) {\n options = defaultOptions;\n }\n\n var state = {\n placement: 'bottom',\n orderedModifiers: [],\n options: Object.assign({}, DEFAULT_OPTIONS, defaultOptions),\n modifiersData: {},\n elements: {\n reference: reference,\n popper: popper\n },\n attributes: {},\n styles: {}\n };\n var effectCleanupFns = [];\n var isDestroyed = false;\n var instance = {\n state: state,\n setOptions: function setOptions(options) {\n cleanupModifierEffects();\n state.options = Object.assign({}, defaultOptions, state.options, options);\n state.scrollParents = {\n reference: isElement(reference) ? listScrollParents(reference) : reference.contextElement ? listScrollParents(reference.contextElement) : [],\n popper: listScrollParents(popper)\n }; // Orders the modifiers based on their dependencies and `phase`\n // properties\n\n var orderedModifiers = orderModifiers(mergeByName([].concat(defaultModifiers, state.options.modifiers))); // Strip out disabled modifiers\n\n state.orderedModifiers = orderedModifiers.filter(function (m) {\n return m.enabled;\n }); // Validate the provided modifiers so that the consumer will get warned\n // if one of the modifiers is invalid for any reason\n\n if (process.env.NODE_ENV !== \"production\") {\n var modifiers = uniqueBy([].concat(orderedModifiers, state.options.modifiers), function (_ref) {\n var name = _ref.name;\n return name;\n });\n validateModifiers(modifiers);\n\n if (getBasePlacement(state.options.placement) === auto) {\n var flipModifier = state.orderedModifiers.find(function (_ref2) {\n var name = _ref2.name;\n return name === 'flip';\n });\n\n if (!flipModifier) {\n console.error(['Popper: \"auto\" placements require the \"flip\" modifier be', 'present and enabled to work.'].join(' '));\n }\n }\n\n var _getComputedStyle = getComputedStyle(popper),\n marginTop = _getComputedStyle.marginTop,\n marginRight = _getComputedStyle.marginRight,\n marginBottom = _getComputedStyle.marginBottom,\n marginLeft = _getComputedStyle.marginLeft; // We no longer take into account `margins` on the popper, and it can\n // cause bugs with positioning, so we'll warn the consumer\n\n\n if ([marginTop, marginRight, marginBottom, marginLeft].some(function (margin) {\n return parseFloat(margin);\n })) {\n console.warn(['Popper: CSS \"margin\" styles cannot be used to apply padding', 'between the popper and its reference element or boundary.', 'To replicate margin, use the `offset` modifier, as well as', 'the `padding` option in the `preventOverflow` and `flip`', 'modifiers.'].join(' '));\n }\n }\n\n runModifierEffects();\n return instance.update();\n },\n // Sync update – it will always be executed, even if not necessary. This\n // is useful for low frequency updates where sync behavior simplifies the\n // logic.\n // For high frequency updates (e.g. `resize` and `scroll` events), always\n // prefer the async Popper#update method\n forceUpdate: function forceUpdate() {\n if (isDestroyed) {\n return;\n }\n\n var _state$elements = state.elements,\n reference = _state$elements.reference,\n popper = _state$elements.popper; // Don't proceed if `reference` or `popper` are not valid elements\n // anymore\n\n if (!areValidElements(reference, popper)) {\n if (process.env.NODE_ENV !== \"production\") {\n console.error(INVALID_ELEMENT_ERROR);\n }\n\n return;\n } // Store the reference and popper rects to be read by modifiers\n\n\n state.rects = {\n reference: getCompositeRect(reference, getOffsetParent(popper), state.options.strategy === 'fixed'),\n popper: getLayoutRect(popper)\n }; // Modifiers have the ability to reset the current update cycle. The\n // most common use case for this is the `flip` modifier changing the\n // placement, which then needs to re-run all the modifiers, because the\n // logic was previously ran for the previous placement and is therefore\n // stale/incorrect\n\n state.reset = false;\n state.placement = state.options.placement; // On each update cycle, the `modifiersData` property for each modifier\n // is filled with the initial data specified by the modifier. This means\n // it doesn't persist and is fresh on each update.\n // To ensure persistent data, use `${name}#persistent`\n\n state.orderedModifiers.forEach(function (modifier) {\n return state.modifiersData[modifier.name] = Object.assign({}, modifier.data);\n });\n var __debug_loops__ = 0;\n\n for (var index = 0; index < state.orderedModifiers.length; index++) {\n if (process.env.NODE_ENV !== \"production\") {\n __debug_loops__ += 1;\n\n if (__debug_loops__ > 100) {\n console.error(INFINITE_LOOP_ERROR);\n break;\n }\n }\n\n if (state.reset === true) {\n state.reset = false;\n index = -1;\n continue;\n }\n\n var _state$orderedModifie = state.orderedModifiers[index],\n fn = _state$orderedModifie.fn,\n _state$orderedModifie2 = _state$orderedModifie.options,\n _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2,\n name = _state$orderedModifie.name;\n\n if (typeof fn === 'function') {\n state = fn({\n state: state,\n options: _options,\n name: name,\n instance: instance\n }) || state;\n }\n }\n },\n // Async and optimistically optimized update – it will not be executed if\n // not necessary (debounced to run at most once-per-tick)\n update: debounce(function () {\n return new Promise(function (resolve) {\n instance.forceUpdate();\n resolve(state);\n });\n }),\n destroy: function destroy() {\n cleanupModifierEffects();\n isDestroyed = true;\n }\n };\n\n if (!areValidElements(reference, popper)) {\n if (process.env.NODE_ENV !== \"production\") {\n console.error(INVALID_ELEMENT_ERROR);\n }\n\n return instance;\n }\n\n instance.setOptions(options).then(function (state) {\n if (!isDestroyed && options.onFirstUpdate) {\n options.onFirstUpdate(state);\n }\n }); // Modifiers have the ability to execute arbitrary code before the first\n // update cycle runs. They will be executed in the same order as the update\n // cycle. This is useful when a modifier adds some persistent data that\n // other modifiers need to use, but the modifier is run after the dependent\n // one.\n\n function runModifierEffects() {\n state.orderedModifiers.forEach(function (_ref3) {\n var name = _ref3.name,\n _ref3$options = _ref3.options,\n options = _ref3$options === void 0 ? {} : _ref3$options,\n effect = _ref3.effect;\n\n if (typeof effect === 'function') {\n var cleanupFn = effect({\n state: state,\n name: name,\n instance: instance,\n options: options\n });\n\n var noopFn = function noopFn() {};\n\n effectCleanupFns.push(cleanupFn || noopFn);\n }\n });\n }\n\n function cleanupModifierEffects() {\n effectCleanupFns.forEach(function (fn) {\n return fn();\n });\n effectCleanupFns = [];\n }\n\n return instance;\n };\n}\nexport var createPopper = /*#__PURE__*/popperGenerator(); // eslint-disable-next-line import/no-unused-modules\n\nexport { detectOverflow };","import getWindow from \"../dom-utils/getWindow.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar passive = {\n passive: true\n};\n\nfunction effect(_ref) {\n var state = _ref.state,\n instance = _ref.instance,\n options = _ref.options;\n var _options$scroll = options.scroll,\n scroll = _options$scroll === void 0 ? true : _options$scroll,\n _options$resize = options.resize,\n resize = _options$resize === void 0 ? true : _options$resize;\n var window = getWindow(state.elements.popper);\n var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper);\n\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.addEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.addEventListener('resize', instance.update, passive);\n }\n\n return function () {\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.removeEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.removeEventListener('resize', instance.update, passive);\n }\n };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'eventListeners',\n enabled: true,\n phase: 'write',\n fn: function fn() {},\n effect: effect,\n data: {}\n};","import { auto } from \"../enums.js\";\nexport default function getBasePlacement(placement) {\n return placement.split('-')[0];\n}","export default function getVariation(placement) {\n return placement.split('-')[1];\n}","export default function getMainAxisFromPlacement(placement) {\n return ['top', 'bottom'].indexOf(placement) >= 0 ? 'x' : 'y';\n}","import getBasePlacement from \"./getBasePlacement.js\";\nimport getVariation from \"./getVariation.js\";\nimport getMainAxisFromPlacement from \"./getMainAxisFromPlacement.js\";\nimport { top, right, bottom, left, start, end } from \"../enums.js\";\nexport default function computeOffsets(_ref) {\n var reference = _ref.reference,\n element = _ref.element,\n placement = _ref.placement;\n var basePlacement = placement ? getBasePlacement(placement) : null;\n var variation = placement ? getVariation(placement) : null;\n var commonX = reference.x + reference.width / 2 - element.width / 2;\n var commonY = reference.y + reference.height / 2 - element.height / 2;\n var offsets;\n\n switch (basePlacement) {\n case top:\n offsets = {\n x: commonX,\n y: reference.y - element.height\n };\n break;\n\n case bottom:\n offsets = {\n x: commonX,\n y: reference.y + reference.height\n };\n break;\n\n case right:\n offsets = {\n x: reference.x + reference.width,\n y: commonY\n };\n break;\n\n case left:\n offsets = {\n x: reference.x - element.width,\n y: commonY\n };\n break;\n\n default:\n offsets = {\n x: reference.x,\n y: reference.y\n };\n }\n\n var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null;\n\n if (mainAxis != null) {\n var len = mainAxis === 'y' ? 'height' : 'width';\n\n switch (variation) {\n case start:\n offsets[mainAxis] = offsets[mainAxis] - (reference[len] / 2 - element[len] / 2);\n break;\n\n case end:\n offsets[mainAxis] = offsets[mainAxis] + (reference[len] / 2 - element[len] / 2);\n break;\n\n default:\n }\n }\n\n return offsets;\n}","import computeOffsets from \"../utils/computeOffsets.js\";\n\nfunction popperOffsets(_ref) {\n var state = _ref.state,\n name = _ref.name;\n // Offsets are the actual position the popper needs to have to be\n // properly positioned near its reference element\n // This is the most basic placement, and will be adjusted by\n // the modifiers in the next step\n state.modifiersData[name] = computeOffsets({\n reference: state.rects.reference,\n element: state.rects.popper,\n strategy: 'absolute',\n placement: state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'popperOffsets',\n enabled: true,\n phase: 'read',\n fn: popperOffsets,\n data: {}\n};","export var max = Math.max;\nexport var min = Math.min;\nexport var round = Math.round;","import { top, left, right, bottom } from \"../enums.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getWindow from \"../dom-utils/getWindow.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getComputedStyle from \"../dom-utils/getComputedStyle.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport { round } from \"../utils/math.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar unsetSides = {\n top: 'auto',\n right: 'auto',\n bottom: 'auto',\n left: 'auto'\n}; // Round the offsets to the nearest suitable subpixel based on the DPR.\n// Zooming can change the DPR, but it seems to report a value that will\n// cleanly divide the values into the appropriate subpixels.\n\nfunction roundOffsetsByDPR(_ref) {\n var x = _ref.x,\n y = _ref.y;\n var win = window;\n var dpr = win.devicePixelRatio || 1;\n return {\n x: round(round(x * dpr) / dpr) || 0,\n y: round(round(y * dpr) / dpr) || 0\n };\n}\n\nexport function mapToStyles(_ref2) {\n var _Object$assign2;\n\n var popper = _ref2.popper,\n popperRect = _ref2.popperRect,\n placement = _ref2.placement,\n offsets = _ref2.offsets,\n position = _ref2.position,\n gpuAcceleration = _ref2.gpuAcceleration,\n adaptive = _ref2.adaptive,\n roundOffsets = _ref2.roundOffsets;\n\n var _ref3 = roundOffsets === true ? roundOffsetsByDPR(offsets) : typeof roundOffsets === 'function' ? roundOffsets(offsets) : offsets,\n _ref3$x = _ref3.x,\n x = _ref3$x === void 0 ? 0 : _ref3$x,\n _ref3$y = _ref3.y,\n y = _ref3$y === void 0 ? 0 : _ref3$y;\n\n var hasX = offsets.hasOwnProperty('x');\n var hasY = offsets.hasOwnProperty('y');\n var sideX = left;\n var sideY = top;\n var win = window;\n\n if (adaptive) {\n var offsetParent = getOffsetParent(popper);\n var heightProp = 'clientHeight';\n var widthProp = 'clientWidth';\n\n if (offsetParent === getWindow(popper)) {\n offsetParent = getDocumentElement(popper);\n\n if (getComputedStyle(offsetParent).position !== 'static') {\n heightProp = 'scrollHeight';\n widthProp = 'scrollWidth';\n }\n } // $FlowFixMe[incompatible-cast]: force type refinement, we compare offsetParent with window above, but Flow doesn't detect it\n\n\n offsetParent = offsetParent;\n\n if (placement === top) {\n sideY = bottom; // $FlowFixMe[prop-missing]\n\n y -= offsetParent[heightProp] - popperRect.height;\n y *= gpuAcceleration ? 1 : -1;\n }\n\n if (placement === left) {\n sideX = right; // $FlowFixMe[prop-missing]\n\n x -= offsetParent[widthProp] - popperRect.width;\n x *= gpuAcceleration ? 1 : -1;\n }\n }\n\n var commonStyles = Object.assign({\n position: position\n }, adaptive && unsetSides);\n\n if (gpuAcceleration) {\n var _Object$assign;\n\n return Object.assign({}, commonStyles, (_Object$assign = {}, _Object$assign[sideY] = hasY ? '0' : '', _Object$assign[sideX] = hasX ? '0' : '', _Object$assign.transform = (win.devicePixelRatio || 1) < 2 ? \"translate(\" + x + \"px, \" + y + \"px)\" : \"translate3d(\" + x + \"px, \" + y + \"px, 0)\", _Object$assign));\n }\n\n return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + \"px\" : '', _Object$assign2[sideX] = hasX ? x + \"px\" : '', _Object$assign2.transform = '', _Object$assign2));\n}\n\nfunction computeStyles(_ref4) {\n var state = _ref4.state,\n options = _ref4.options;\n var _options$gpuAccelerat = options.gpuAcceleration,\n gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat,\n _options$adaptive = options.adaptive,\n adaptive = _options$adaptive === void 0 ? true : _options$adaptive,\n _options$roundOffsets = options.roundOffsets,\n roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets;\n\n if (process.env.NODE_ENV !== \"production\") {\n var transitionProperty = getComputedStyle(state.elements.popper).transitionProperty || '';\n\n if (adaptive && ['transform', 'top', 'right', 'bottom', 'left'].some(function (property) {\n return transitionProperty.indexOf(property) >= 0;\n })) {\n console.warn(['Popper: Detected CSS transitions on at least one of the following', 'CSS properties: \"transform\", \"top\", \"right\", \"bottom\", \"left\".', '\\n\\n', 'Disable the \"computeStyles\" modifier\\'s `adaptive` option to allow', 'for smooth transitions, or remove these properties from the CSS', 'transition declaration on the popper element if only transitioning', 'opacity or background-color for example.', '\\n\\n', 'We recommend using the popper element as a wrapper around an inner', 'element that can have any CSS property transitioned for animations.'].join(' '));\n }\n }\n\n var commonStyles = {\n placement: getBasePlacement(state.placement),\n popper: state.elements.popper,\n popperRect: state.rects.popper,\n gpuAcceleration: gpuAcceleration\n };\n\n if (state.modifiersData.popperOffsets != null) {\n state.styles.popper = Object.assign({}, state.styles.popper, mapToStyles(Object.assign({}, commonStyles, {\n offsets: state.modifiersData.popperOffsets,\n position: state.options.strategy,\n adaptive: adaptive,\n roundOffsets: roundOffsets\n })));\n }\n\n if (state.modifiersData.arrow != null) {\n state.styles.arrow = Object.assign({}, state.styles.arrow, mapToStyles(Object.assign({}, commonStyles, {\n offsets: state.modifiersData.arrow,\n position: 'absolute',\n adaptive: false,\n roundOffsets: roundOffsets\n })));\n }\n\n state.attributes.popper = Object.assign({}, state.attributes.popper, {\n 'data-popper-placement': state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'computeStyles',\n enabled: true,\n phase: 'beforeWrite',\n fn: computeStyles,\n data: {}\n};","import getNodeName from \"../dom-utils/getNodeName.js\";\nimport { isHTMLElement } from \"../dom-utils/instanceOf.js\"; // This modifier takes the styles prepared by the `computeStyles` modifier\n// and applies them to the HTMLElements such as popper and arrow\n\nfunction applyStyles(_ref) {\n var state = _ref.state;\n Object.keys(state.elements).forEach(function (name) {\n var style = state.styles[name] || {};\n var attributes = state.attributes[name] || {};\n var element = state.elements[name]; // arrow is optional + virtual elements\n\n if (!isHTMLElement(element) || !getNodeName(element)) {\n return;\n } // Flow doesn't support to extend this property, but it's the most\n // effective way to apply styles to an HTMLElement\n // $FlowFixMe[cannot-write]\n\n\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function (name) {\n var value = attributes[name];\n\n if (value === false) {\n element.removeAttribute(name);\n } else {\n element.setAttribute(name, value === true ? '' : value);\n }\n });\n });\n}\n\nfunction effect(_ref2) {\n var state = _ref2.state;\n var initialStyles = {\n popper: {\n position: state.options.strategy,\n left: '0',\n top: '0',\n margin: '0'\n },\n arrow: {\n position: 'absolute'\n },\n reference: {}\n };\n Object.assign(state.elements.popper.style, initialStyles.popper);\n state.styles = initialStyles;\n\n if (state.elements.arrow) {\n Object.assign(state.elements.arrow.style, initialStyles.arrow);\n }\n\n return function () {\n Object.keys(state.elements).forEach(function (name) {\n var element = state.elements[name];\n var attributes = state.attributes[name] || {};\n var styleProperties = Object.keys(state.styles.hasOwnProperty(name) ? state.styles[name] : initialStyles[name]); // Set all values to an empty string to unset them\n\n var style = styleProperties.reduce(function (style, property) {\n style[property] = '';\n return style;\n }, {}); // arrow is optional + virtual elements\n\n if (!isHTMLElement(element) || !getNodeName(element)) {\n return;\n }\n\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function (attribute) {\n element.removeAttribute(attribute);\n });\n });\n };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'applyStyles',\n enabled: true,\n phase: 'write',\n fn: applyStyles,\n effect: effect,\n requires: ['computeStyles']\n};","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport { top, left, right, placements } from \"../enums.js\";\nexport function distanceAndSkiddingToXY(placement, rects, offset) {\n var basePlacement = getBasePlacement(placement);\n var invertDistance = [left, top].indexOf(basePlacement) >= 0 ? -1 : 1;\n\n var _ref = typeof offset === 'function' ? offset(Object.assign({}, rects, {\n placement: placement\n })) : offset,\n skidding = _ref[0],\n distance = _ref[1];\n\n skidding = skidding || 0;\n distance = (distance || 0) * invertDistance;\n return [left, right].indexOf(basePlacement) >= 0 ? {\n x: distance,\n y: skidding\n } : {\n x: skidding,\n y: distance\n };\n}\n\nfunction offset(_ref2) {\n var state = _ref2.state,\n options = _ref2.options,\n name = _ref2.name;\n var _options$offset = options.offset,\n offset = _options$offset === void 0 ? [0, 0] : _options$offset;\n var data = placements.reduce(function (acc, placement) {\n acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset);\n return acc;\n }, {});\n var _data$state$placement = data[state.placement],\n x = _data$state$placement.x,\n y = _data$state$placement.y;\n\n if (state.modifiersData.popperOffsets != null) {\n state.modifiersData.popperOffsets.x += x;\n state.modifiersData.popperOffsets.y += y;\n }\n\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'offset',\n enabled: true,\n phase: 'main',\n requires: ['popperOffsets'],\n fn: offset\n};","var hash = {\n left: 'right',\n right: 'left',\n bottom: 'top',\n top: 'bottom'\n};\nexport default function getOppositePlacement(placement) {\n return placement.replace(/left|right|bottom|top/g, function (matched) {\n return hash[matched];\n });\n}","var hash = {\n start: 'end',\n end: 'start'\n};\nexport default function getOppositeVariationPlacement(placement) {\n return placement.replace(/start|end/g, function (matched) {\n return hash[matched];\n });\n}","import getWindow from \"./getWindow.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nexport default function getViewportRect(element) {\n var win = getWindow(element);\n var html = getDocumentElement(element);\n var visualViewport = win.visualViewport;\n var width = html.clientWidth;\n var height = html.clientHeight;\n var x = 0;\n var y = 0; // NB: This isn't supported on iOS <= 12. If the keyboard is open, the popper\n // can be obscured underneath it.\n // Also, `html.clientHeight` adds the bottom bar height in Safari iOS, even\n // if it isn't open, so if this isn't available, the popper will be detected\n // to overflow the bottom of the screen too early.\n\n if (visualViewport) {\n width = visualViewport.width;\n height = visualViewport.height; // Uses Layout Viewport (like Chrome; Safari does not currently)\n // In Chrome, it returns a value very close to 0 (+/-) but contains rounding\n // errors due to floating point numbers, so we need to check precision.\n // Safari returns a number <= 0, usually < -1 when pinch-zoomed\n // Feature detection fails in mobile emulation mode in Chrome.\n // Math.abs(win.innerWidth / visualViewport.scale - visualViewport.width) <\n // 0.001\n // Fallback here: \"Not Safari\" userAgent\n\n if (!/^((?!chrome|android).)*safari/i.test(navigator.userAgent)) {\n x = visualViewport.offsetLeft;\n y = visualViewport.offsetTop;\n }\n }\n\n return {\n width: width,\n height: height,\n x: x + getWindowScrollBarX(element),\n y: y\n };\n}","import getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nimport { max } from \"../utils/math.js\"; // Gets the entire size of the scrollable document area, even extending outside\n// of the `` and `` rect bounds if horizontally scrollable\n\nexport default function getDocumentRect(element) {\n var _element$ownerDocumen;\n\n var html = getDocumentElement(element);\n var winScroll = getWindowScroll(element);\n var body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body;\n var width = max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0);\n var height = max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0);\n var x = -winScroll.scrollLeft + getWindowScrollBarX(element);\n var y = -winScroll.scrollTop;\n\n if (getComputedStyle(body || html).direction === 'rtl') {\n x += max(html.clientWidth, body ? body.clientWidth : 0) - width;\n }\n\n return {\n width: width,\n height: height,\n x: x,\n y: y\n };\n}","import { isShadowRoot } from \"./instanceOf.js\";\nexport default function contains(parent, child) {\n var rootNode = child.getRootNode && child.getRootNode(); // First, attempt with faster native method\n\n if (parent.contains(child)) {\n return true;\n } // then fallback to custom implementation with Shadow DOM support\n else if (rootNode && isShadowRoot(rootNode)) {\n var next = child;\n\n do {\n if (next && parent.isSameNode(next)) {\n return true;\n } // $FlowFixMe[prop-missing]: need a better way to handle this...\n\n\n next = next.parentNode || next.host;\n } while (next);\n } // Give up, the result is false\n\n\n return false;\n}","export default function rectToClientRect(rect) {\n return Object.assign({}, rect, {\n left: rect.x,\n top: rect.y,\n right: rect.x + rect.width,\n bottom: rect.y + rect.height\n });\n}","import { viewport } from \"../enums.js\";\nimport getViewportRect from \"./getViewportRect.js\";\nimport getDocumentRect from \"./getDocumentRect.js\";\nimport listScrollParents from \"./listScrollParents.js\";\nimport getOffsetParent from \"./getOffsetParent.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport contains from \"./contains.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport rectToClientRect from \"../utils/rectToClientRect.js\";\nimport { max, min } from \"../utils/math.js\";\n\nfunction getInnerBoundingClientRect(element) {\n var rect = getBoundingClientRect(element);\n rect.top = rect.top + element.clientTop;\n rect.left = rect.left + element.clientLeft;\n rect.bottom = rect.top + element.clientHeight;\n rect.right = rect.left + element.clientWidth;\n rect.width = element.clientWidth;\n rect.height = element.clientHeight;\n rect.x = rect.left;\n rect.y = rect.top;\n return rect;\n}\n\nfunction getClientRectFromMixedType(element, clippingParent) {\n return clippingParent === viewport ? rectToClientRect(getViewportRect(element)) : isHTMLElement(clippingParent) ? getInnerBoundingClientRect(clippingParent) : rectToClientRect(getDocumentRect(getDocumentElement(element)));\n} // A \"clipping parent\" is an overflowable container with the characteristic of\n// clipping (or hiding) overflowing elements with a position different from\n// `initial`\n\n\nfunction getClippingParents(element) {\n var clippingParents = listScrollParents(getParentNode(element));\n var canEscapeClipping = ['absolute', 'fixed'].indexOf(getComputedStyle(element).position) >= 0;\n var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element;\n\n if (!isElement(clipperElement)) {\n return [];\n } // $FlowFixMe[incompatible-return]: https://github.com/facebook/flow/issues/1414\n\n\n return clippingParents.filter(function (clippingParent) {\n return isElement(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== 'body';\n });\n} // Gets the maximum area that the element is visible in due to any number of\n// clipping parents\n\n\nexport default function getClippingRect(element, boundary, rootBoundary) {\n var mainClippingParents = boundary === 'clippingParents' ? getClippingParents(element) : [].concat(boundary);\n var clippingParents = [].concat(mainClippingParents, [rootBoundary]);\n var firstClippingParent = clippingParents[0];\n var clippingRect = clippingParents.reduce(function (accRect, clippingParent) {\n var rect = getClientRectFromMixedType(element, clippingParent);\n accRect.top = max(rect.top, accRect.top);\n accRect.right = min(rect.right, accRect.right);\n accRect.bottom = min(rect.bottom, accRect.bottom);\n accRect.left = max(rect.left, accRect.left);\n return accRect;\n }, getClientRectFromMixedType(element, firstClippingParent));\n clippingRect.width = clippingRect.right - clippingRect.left;\n clippingRect.height = clippingRect.bottom - clippingRect.top;\n clippingRect.x = clippingRect.left;\n clippingRect.y = clippingRect.top;\n return clippingRect;\n}","export default function getFreshSideObject() {\n return {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n };\n}","import getFreshSideObject from \"./getFreshSideObject.js\";\nexport default function mergePaddingObject(paddingObject) {\n return Object.assign({}, getFreshSideObject(), paddingObject);\n}","export default function expandToHashMap(value, keys) {\n return keys.reduce(function (hashMap, key) {\n hashMap[key] = value;\n return hashMap;\n }, {});\n}","import getBoundingClientRect from \"../dom-utils/getBoundingClientRect.js\";\nimport getClippingRect from \"../dom-utils/getClippingRect.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport computeOffsets from \"./computeOffsets.js\";\nimport rectToClientRect from \"./rectToClientRect.js\";\nimport { clippingParents, reference, popper, bottom, top, right, basePlacements, viewport } from \"../enums.js\";\nimport { isElement } from \"../dom-utils/instanceOf.js\";\nimport mergePaddingObject from \"./mergePaddingObject.js\";\nimport expandToHashMap from \"./expandToHashMap.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport default function detectOverflow(state, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n _options$placement = _options.placement,\n placement = _options$placement === void 0 ? state.placement : _options$placement,\n _options$boundary = _options.boundary,\n boundary = _options$boundary === void 0 ? clippingParents : _options$boundary,\n _options$rootBoundary = _options.rootBoundary,\n rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary,\n _options$elementConte = _options.elementContext,\n elementContext = _options$elementConte === void 0 ? popper : _options$elementConte,\n _options$altBoundary = _options.altBoundary,\n altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary,\n _options$padding = _options.padding,\n padding = _options$padding === void 0 ? 0 : _options$padding;\n var paddingObject = mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n var altContext = elementContext === popper ? reference : popper;\n var referenceElement = state.elements.reference;\n var popperRect = state.rects.popper;\n var element = state.elements[altBoundary ? altContext : elementContext];\n var clippingClientRect = getClippingRect(isElement(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary);\n var referenceClientRect = getBoundingClientRect(referenceElement);\n var popperOffsets = computeOffsets({\n reference: referenceClientRect,\n element: popperRect,\n strategy: 'absolute',\n placement: placement\n });\n var popperClientRect = rectToClientRect(Object.assign({}, popperRect, popperOffsets));\n var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect; // positive = overflowing the clipping rect\n // 0 or negative = within the clipping rect\n\n var overflowOffsets = {\n top: clippingClientRect.top - elementClientRect.top + paddingObject.top,\n bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom,\n left: clippingClientRect.left - elementClientRect.left + paddingObject.left,\n right: elementClientRect.right - clippingClientRect.right + paddingObject.right\n };\n var offsetData = state.modifiersData.offset; // Offsets can be applied only to the popper element\n\n if (elementContext === popper && offsetData) {\n var offset = offsetData[placement];\n Object.keys(overflowOffsets).forEach(function (key) {\n var multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1;\n var axis = [top, bottom].indexOf(key) >= 0 ? 'y' : 'x';\n overflowOffsets[key] += offset[axis] * multiply;\n });\n }\n\n return overflowOffsets;\n}","import getVariation from \"./getVariation.js\";\nimport { variationPlacements, basePlacements, placements as allPlacements } from \"../enums.js\";\nimport detectOverflow from \"./detectOverflow.js\";\nimport getBasePlacement from \"./getBasePlacement.js\";\nexport default function computeAutoPlacement(state, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n placement = _options.placement,\n boundary = _options.boundary,\n rootBoundary = _options.rootBoundary,\n padding = _options.padding,\n flipVariations = _options.flipVariations,\n _options$allowedAutoP = _options.allowedAutoPlacements,\n allowedAutoPlacements = _options$allowedAutoP === void 0 ? allPlacements : _options$allowedAutoP;\n var variation = getVariation(placement);\n var placements = variation ? flipVariations ? variationPlacements : variationPlacements.filter(function (placement) {\n return getVariation(placement) === variation;\n }) : basePlacements;\n var allowedPlacements = placements.filter(function (placement) {\n return allowedAutoPlacements.indexOf(placement) >= 0;\n });\n\n if (allowedPlacements.length === 0) {\n allowedPlacements = placements;\n\n if (process.env.NODE_ENV !== \"production\") {\n console.error(['Popper: The `allowedAutoPlacements` option did not allow any', 'placements. Ensure the `placement` option matches the variation', 'of the allowed placements.', 'For example, \"auto\" cannot be used to allow \"bottom-start\".', 'Use \"auto-start\" instead.'].join(' '));\n }\n } // $FlowFixMe[incompatible-type]: Flow seems to have problems with two array unions...\n\n\n var overflows = allowedPlacements.reduce(function (acc, placement) {\n acc[placement] = detectOverflow(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding\n })[getBasePlacement(placement)];\n return acc;\n }, {});\n return Object.keys(overflows).sort(function (a, b) {\n return overflows[a] - overflows[b];\n });\n}","import getOppositePlacement from \"../utils/getOppositePlacement.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getOppositeVariationPlacement from \"../utils/getOppositeVariationPlacement.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport computeAutoPlacement from \"../utils/computeAutoPlacement.js\";\nimport { bottom, top, start, right, left, auto } from \"../enums.js\";\nimport getVariation from \"../utils/getVariation.js\"; // eslint-disable-next-line import/no-unused-modules\n\nfunction getExpandedFallbackPlacements(placement) {\n if (getBasePlacement(placement) === auto) {\n return [];\n }\n\n var oppositePlacement = getOppositePlacement(placement);\n return [getOppositeVariationPlacement(placement), oppositePlacement, getOppositeVariationPlacement(oppositePlacement)];\n}\n\nfunction flip(_ref) {\n var state = _ref.state,\n options = _ref.options,\n name = _ref.name;\n\n if (state.modifiersData[name]._skip) {\n return;\n }\n\n var _options$mainAxis = options.mainAxis,\n checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n _options$altAxis = options.altAxis,\n checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis,\n specifiedFallbackPlacements = options.fallbackPlacements,\n padding = options.padding,\n boundary = options.boundary,\n rootBoundary = options.rootBoundary,\n altBoundary = options.altBoundary,\n _options$flipVariatio = options.flipVariations,\n flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio,\n allowedAutoPlacements = options.allowedAutoPlacements;\n var preferredPlacement = state.options.placement;\n var basePlacement = getBasePlacement(preferredPlacement);\n var isBasePlacement = basePlacement === preferredPlacement;\n var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [getOppositePlacement(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement));\n var placements = [preferredPlacement].concat(fallbackPlacements).reduce(function (acc, placement) {\n return acc.concat(getBasePlacement(placement) === auto ? computeAutoPlacement(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n flipVariations: flipVariations,\n allowedAutoPlacements: allowedAutoPlacements\n }) : placement);\n }, []);\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var checksMap = new Map();\n var makeFallbackChecks = true;\n var firstFittingPlacement = placements[0];\n\n for (var i = 0; i < placements.length; i++) {\n var placement = placements[i];\n\n var _basePlacement = getBasePlacement(placement);\n\n var isStartVariation = getVariation(placement) === start;\n var isVertical = [top, bottom].indexOf(_basePlacement) >= 0;\n var len = isVertical ? 'width' : 'height';\n var overflow = detectOverflow(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n altBoundary: altBoundary,\n padding: padding\n });\n var mainVariationSide = isVertical ? isStartVariation ? right : left : isStartVariation ? bottom : top;\n\n if (referenceRect[len] > popperRect[len]) {\n mainVariationSide = getOppositePlacement(mainVariationSide);\n }\n\n var altVariationSide = getOppositePlacement(mainVariationSide);\n var checks = [];\n\n if (checkMainAxis) {\n checks.push(overflow[_basePlacement] <= 0);\n }\n\n if (checkAltAxis) {\n checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0);\n }\n\n if (checks.every(function (check) {\n return check;\n })) {\n firstFittingPlacement = placement;\n makeFallbackChecks = false;\n break;\n }\n\n checksMap.set(placement, checks);\n }\n\n if (makeFallbackChecks) {\n // `2` may be desired in some cases – research later\n var numberOfChecks = flipVariations ? 3 : 1;\n\n var _loop = function _loop(_i) {\n var fittingPlacement = placements.find(function (placement) {\n var checks = checksMap.get(placement);\n\n if (checks) {\n return checks.slice(0, _i).every(function (check) {\n return check;\n });\n }\n });\n\n if (fittingPlacement) {\n firstFittingPlacement = fittingPlacement;\n return \"break\";\n }\n };\n\n for (var _i = numberOfChecks; _i > 0; _i--) {\n var _ret = _loop(_i);\n\n if (_ret === \"break\") break;\n }\n }\n\n if (state.placement !== firstFittingPlacement) {\n state.modifiersData[name]._skip = true;\n state.placement = firstFittingPlacement;\n state.reset = true;\n }\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'flip',\n enabled: true,\n phase: 'main',\n fn: flip,\n requiresIfExists: ['offset'],\n data: {\n _skip: false\n }\n};","export default function getAltAxis(axis) {\n return axis === 'x' ? 'y' : 'x';\n}","import { max as mathMax, min as mathMin } from \"./math.js\";\nexport default function within(min, value, max) {\n return mathMax(min, mathMin(value, max));\n}","import { top, left, right, bottom, start } from \"../enums.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport getAltAxis from \"../utils/getAltAxis.js\";\nimport within from \"../utils/within.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport getFreshSideObject from \"../utils/getFreshSideObject.js\";\nimport { max as mathMax, min as mathMin } from \"../utils/math.js\";\n\nfunction preventOverflow(_ref) {\n var state = _ref.state,\n options = _ref.options,\n name = _ref.name;\n var _options$mainAxis = options.mainAxis,\n checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n _options$altAxis = options.altAxis,\n checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis,\n boundary = options.boundary,\n rootBoundary = options.rootBoundary,\n altBoundary = options.altBoundary,\n padding = options.padding,\n _options$tether = options.tether,\n tether = _options$tether === void 0 ? true : _options$tether,\n _options$tetherOffset = options.tetherOffset,\n tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset;\n var overflow = detectOverflow(state, {\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n altBoundary: altBoundary\n });\n var basePlacement = getBasePlacement(state.placement);\n var variation = getVariation(state.placement);\n var isBasePlacement = !variation;\n var mainAxis = getMainAxisFromPlacement(basePlacement);\n var altAxis = getAltAxis(mainAxis);\n var popperOffsets = state.modifiersData.popperOffsets;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var tetherOffsetValue = typeof tetherOffset === 'function' ? tetherOffset(Object.assign({}, state.rects, {\n placement: state.placement\n })) : tetherOffset;\n var data = {\n x: 0,\n y: 0\n };\n\n if (!popperOffsets) {\n return;\n }\n\n if (checkMainAxis || checkAltAxis) {\n var mainSide = mainAxis === 'y' ? top : left;\n var altSide = mainAxis === 'y' ? bottom : right;\n var len = mainAxis === 'y' ? 'height' : 'width';\n var offset = popperOffsets[mainAxis];\n var min = popperOffsets[mainAxis] + overflow[mainSide];\n var max = popperOffsets[mainAxis] - overflow[altSide];\n var additive = tether ? -popperRect[len] / 2 : 0;\n var minLen = variation === start ? referenceRect[len] : popperRect[len];\n var maxLen = variation === start ? -popperRect[len] : -referenceRect[len]; // We need to include the arrow in the calculation so the arrow doesn't go\n // outside the reference bounds\n\n var arrowElement = state.elements.arrow;\n var arrowRect = tether && arrowElement ? getLayoutRect(arrowElement) : {\n width: 0,\n height: 0\n };\n var arrowPaddingObject = state.modifiersData['arrow#persistent'] ? state.modifiersData['arrow#persistent'].padding : getFreshSideObject();\n var arrowPaddingMin = arrowPaddingObject[mainSide];\n var arrowPaddingMax = arrowPaddingObject[altSide]; // If the reference length is smaller than the arrow length, we don't want\n // to include its full size in the calculation. If the reference is small\n // and near the edge of a boundary, the popper can overflow even if the\n // reference is not overflowing as well (e.g. virtual elements with no\n // width or height)\n\n var arrowLen = within(0, referenceRect[len], arrowRect[len]);\n var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - tetherOffsetValue : minLen - arrowLen - arrowPaddingMin - tetherOffsetValue;\n var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + tetherOffsetValue : maxLen + arrowLen + arrowPaddingMax + tetherOffsetValue;\n var arrowOffsetParent = state.elements.arrow && getOffsetParent(state.elements.arrow);\n var clientOffset = arrowOffsetParent ? mainAxis === 'y' ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0;\n var offsetModifierValue = state.modifiersData.offset ? state.modifiersData.offset[state.placement][mainAxis] : 0;\n var tetherMin = popperOffsets[mainAxis] + minOffset - offsetModifierValue - clientOffset;\n var tetherMax = popperOffsets[mainAxis] + maxOffset - offsetModifierValue;\n\n if (checkMainAxis) {\n var preventedOffset = within(tether ? mathMin(min, tetherMin) : min, offset, tether ? mathMax(max, tetherMax) : max);\n popperOffsets[mainAxis] = preventedOffset;\n data[mainAxis] = preventedOffset - offset;\n }\n\n if (checkAltAxis) {\n var _mainSide = mainAxis === 'x' ? top : left;\n\n var _altSide = mainAxis === 'x' ? bottom : right;\n\n var _offset = popperOffsets[altAxis];\n\n var _min = _offset + overflow[_mainSide];\n\n var _max = _offset - overflow[_altSide];\n\n var _preventedOffset = within(tether ? mathMin(_min, tetherMin) : _min, _offset, tether ? mathMax(_max, tetherMax) : _max);\n\n popperOffsets[altAxis] = _preventedOffset;\n data[altAxis] = _preventedOffset - _offset;\n }\n }\n\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'preventOverflow',\n enabled: true,\n phase: 'main',\n fn: preventOverflow,\n requiresIfExists: ['offset']\n};","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport contains from \"../dom-utils/contains.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport within from \"../utils/within.js\";\nimport mergePaddingObject from \"../utils/mergePaddingObject.js\";\nimport expandToHashMap from \"../utils/expandToHashMap.js\";\nimport { left, right, basePlacements, top, bottom } from \"../enums.js\";\nimport { isHTMLElement } from \"../dom-utils/instanceOf.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar toPaddingObject = function toPaddingObject(padding, state) {\n padding = typeof padding === 'function' ? padding(Object.assign({}, state.rects, {\n placement: state.placement\n })) : padding;\n return mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n};\n\nfunction arrow(_ref) {\n var _state$modifiersData$;\n\n var state = _ref.state,\n name = _ref.name,\n options = _ref.options;\n var arrowElement = state.elements.arrow;\n var popperOffsets = state.modifiersData.popperOffsets;\n var basePlacement = getBasePlacement(state.placement);\n var axis = getMainAxisFromPlacement(basePlacement);\n var isVertical = [left, right].indexOf(basePlacement) >= 0;\n var len = isVertical ? 'height' : 'width';\n\n if (!arrowElement || !popperOffsets) {\n return;\n }\n\n var paddingObject = toPaddingObject(options.padding, state);\n var arrowRect = getLayoutRect(arrowElement);\n var minProp = axis === 'y' ? top : left;\n var maxProp = axis === 'y' ? bottom : right;\n var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets[axis] - state.rects.popper[len];\n var startDiff = popperOffsets[axis] - state.rects.reference[axis];\n var arrowOffsetParent = getOffsetParent(arrowElement);\n var clientSize = arrowOffsetParent ? axis === 'y' ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0;\n var centerToReference = endDiff / 2 - startDiff / 2; // Make sure the arrow doesn't overflow the popper if the center point is\n // outside of the popper bounds\n\n var min = paddingObject[minProp];\n var max = clientSize - arrowRect[len] - paddingObject[maxProp];\n var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference;\n var offset = within(min, center, max); // Prevents breaking syntax highlighting...\n\n var axisProp = axis;\n state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset, _state$modifiersData$.centerOffset = offset - center, _state$modifiersData$);\n}\n\nfunction effect(_ref2) {\n var state = _ref2.state,\n options = _ref2.options;\n var _options$element = options.element,\n arrowElement = _options$element === void 0 ? '[data-popper-arrow]' : _options$element;\n\n if (arrowElement == null) {\n return;\n } // CSS selector\n\n\n if (typeof arrowElement === 'string') {\n arrowElement = state.elements.popper.querySelector(arrowElement);\n\n if (!arrowElement) {\n return;\n }\n }\n\n if (process.env.NODE_ENV !== \"production\") {\n if (!isHTMLElement(arrowElement)) {\n console.error(['Popper: \"arrow\" element must be an HTMLElement (not an SVGElement).', 'To use an SVG arrow, wrap it in an HTMLElement that will be used as', 'the arrow.'].join(' '));\n }\n }\n\n if (!contains(state.elements.popper, arrowElement)) {\n if (process.env.NODE_ENV !== \"production\") {\n console.error(['Popper: \"arrow\" modifier\\'s `element` must be a child of the popper', 'element.'].join(' '));\n }\n\n return;\n }\n\n state.elements.arrow = arrowElement;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'arrow',\n enabled: true,\n phase: 'main',\n fn: arrow,\n effect: effect,\n requires: ['popperOffsets'],\n requiresIfExists: ['preventOverflow']\n};","import { top, bottom, left, right } from \"../enums.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\n\nfunction getSideOffsets(overflow, rect, preventedOffsets) {\n if (preventedOffsets === void 0) {\n preventedOffsets = {\n x: 0,\n y: 0\n };\n }\n\n return {\n top: overflow.top - rect.height - preventedOffsets.y,\n right: overflow.right - rect.width + preventedOffsets.x,\n bottom: overflow.bottom - rect.height + preventedOffsets.y,\n left: overflow.left - rect.width - preventedOffsets.x\n };\n}\n\nfunction isAnySideFullyClipped(overflow) {\n return [top, right, bottom, left].some(function (side) {\n return overflow[side] >= 0;\n });\n}\n\nfunction hide(_ref) {\n var state = _ref.state,\n name = _ref.name;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var preventedOffsets = state.modifiersData.preventOverflow;\n var referenceOverflow = detectOverflow(state, {\n elementContext: 'reference'\n });\n var popperAltOverflow = detectOverflow(state, {\n altBoundary: true\n });\n var referenceClippingOffsets = getSideOffsets(referenceOverflow, referenceRect);\n var popperEscapeOffsets = getSideOffsets(popperAltOverflow, popperRect, preventedOffsets);\n var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets);\n var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets);\n state.modifiersData[name] = {\n referenceClippingOffsets: referenceClippingOffsets,\n popperEscapeOffsets: popperEscapeOffsets,\n isReferenceHidden: isReferenceHidden,\n hasPopperEscaped: hasPopperEscaped\n };\n state.attributes.popper = Object.assign({}, state.attributes.popper, {\n 'data-popper-reference-hidden': isReferenceHidden,\n 'data-popper-escaped': hasPopperEscaped\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'hide',\n enabled: true,\n phase: 'main',\n requiresIfExists: ['preventOverflow'],\n fn: hide\n};","import { popperGenerator, detectOverflow } from \"./createPopper.js\";\nimport eventListeners from \"./modifiers/eventListeners.js\";\nimport popperOffsets from \"./modifiers/popperOffsets.js\";\nimport computeStyles from \"./modifiers/computeStyles.js\";\nimport applyStyles from \"./modifiers/applyStyles.js\";\nimport offset from \"./modifiers/offset.js\";\nimport flip from \"./modifiers/flip.js\";\nimport preventOverflow from \"./modifiers/preventOverflow.js\";\nimport arrow from \"./modifiers/arrow.js\";\nimport hide from \"./modifiers/hide.js\";\nvar defaultModifiers = [eventListeners, popperOffsets, computeStyles, applyStyles, offset, flip, preventOverflow, arrow, hide];\nvar createPopper = /*#__PURE__*/popperGenerator({\n defaultModifiers: defaultModifiers\n}); // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper, popperGenerator, defaultModifiers, detectOverflow }; // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper as createPopperLite } from \"./popper-lite.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport * from \"./modifiers/index.js\";","\"use strict\";\nif (typeof Object.assign !== \"function\") {\n Object.assign = function (target, ...args) {\n if (!target) {\n throw TypeError(\"Cannot convert undefined or null to object\");\n }\n for (const source of args) {\n if (source) {\n Object.keys(source).forEach((key) => (target[key] = source[key]));\n }\n }\n return target;\n };\n}\n","(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :\n typeof define === 'function' && define.amd ? define(['exports'], factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.pt = {}));\n}(this, (function (exports) { 'use strict';\n\n var fp = typeof window !== \"undefined\" && window.flatpickr !== undefined\n ? window.flatpickr\n : {\n l10ns: {},\n };\n var Portuguese = {\n weekdays: {\n shorthand: [\"Dom\", \"Seg\", \"Ter\", \"Qua\", \"Qui\", \"Sex\", \"Sáb\"],\n longhand: [\n \"Domingo\",\n \"Segunda-feira\",\n \"Terça-feira\",\n \"Quarta-feira\",\n \"Quinta-feira\",\n \"Sexta-feira\",\n \"Sábado\",\n ],\n },\n months: {\n shorthand: [\n \"Jan\",\n \"Fev\",\n \"Mar\",\n \"Abr\",\n \"Mai\",\n \"Jun\",\n \"Jul\",\n \"Ago\",\n \"Set\",\n \"Out\",\n \"Nov\",\n \"Dez\",\n ],\n longhand: [\n \"Janeiro\",\n \"Fevereiro\",\n \"Março\",\n \"Abril\",\n \"Maio\",\n \"Junho\",\n \"Julho\",\n \"Agosto\",\n \"Setembro\",\n \"Outubro\",\n \"Novembro\",\n \"Dezembro\",\n ],\n },\n rangeSeparator: \" até \",\n time_24hr: true,\n };\n fp.l10ns.pt = Portuguese;\n var pt = fp.l10ns;\n\n exports.Portuguese = Portuguese;\n exports.default = pt;\n\n Object.defineProperty(exports, '__esModule', { value: true });\n\n})));\n","(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (factory());\n}(this, (function () { 'use strict';\n\n /**\n * Applies the :focus-visible polyfill at the given scope.\n * A scope in this case is either the top-level Document or a Shadow Root.\n *\n * @param {(Document|ShadowRoot)} scope\n * @see https://github.com/WICG/focus-visible\n */\n function applyFocusVisiblePolyfill(scope) {\n var hadKeyboardEvent = true;\n var hadFocusVisibleRecently = false;\n var hadFocusVisibleRecentlyTimeout = null;\n\n var inputTypesAllowlist = {\n text: true,\n search: true,\n url: true,\n tel: true,\n email: true,\n password: true,\n number: true,\n date: true,\n month: true,\n week: true,\n time: true,\n datetime: true,\n 'datetime-local': true\n };\n\n /**\n * Helper function for legacy browsers and iframes which sometimes focus\n * elements like document, body, and non-interactive SVG.\n * @param {Element} el\n */\n function isValidFocusTarget(el) {\n if (\n el &&\n el !== document &&\n el.nodeName !== 'HTML' &&\n el.nodeName !== 'BODY' &&\n 'classList' in el &&\n 'contains' in el.classList\n ) {\n return true;\n }\n return false;\n }\n\n /**\n * Computes whether the given element should automatically trigger the\n * `focus-visible` class being added, i.e. whether it should always match\n * `:focus-visible` when focused.\n * @param {Element} el\n * @return {boolean}\n */\n function focusTriggersKeyboardModality(el) {\n var type = el.type;\n var tagName = el.tagName;\n\n if (tagName === 'INPUT' && inputTypesAllowlist[type] && !el.readOnly) {\n return true;\n }\n\n if (tagName === 'TEXTAREA' && !el.readOnly) {\n return true;\n }\n\n if (el.isContentEditable) {\n return true;\n }\n\n return false;\n }\n\n /**\n * Add the `focus-visible` class to the given element if it was not added by\n * the author.\n * @param {Element} el\n */\n function addFocusVisibleClass(el) {\n if (el.classList.contains('focus-visible')) {\n return;\n }\n el.classList.add('focus-visible');\n el.setAttribute('data-focus-visible-added', '');\n }\n\n /**\n * Remove the `focus-visible` class from the given element if it was not\n * originally added by the author.\n * @param {Element} el\n */\n function removeFocusVisibleClass(el) {\n if (!el.hasAttribute('data-focus-visible-added')) {\n return;\n }\n el.classList.remove('focus-visible');\n el.removeAttribute('data-focus-visible-added');\n }\n\n /**\n * If the most recent user interaction was via the keyboard;\n * and the key press did not include a meta, alt/option, or control key;\n * then the modality is keyboard. Otherwise, the modality is not keyboard.\n * Apply `focus-visible` to any current active element and keep track\n * of our keyboard modality state with `hadKeyboardEvent`.\n * @param {KeyboardEvent} e\n */\n function onKeyDown(e) {\n if (e.metaKey || e.altKey || e.ctrlKey) {\n return;\n }\n\n if (isValidFocusTarget(scope.activeElement)) {\n addFocusVisibleClass(scope.activeElement);\n }\n\n hadKeyboardEvent = true;\n }\n\n /**\n * If at any point a user clicks with a pointing device, ensure that we change\n * the modality away from keyboard.\n * This avoids the situation where a user presses a key on an already focused\n * element, and then clicks on a different element, focusing it with a\n * pointing device, while we still think we're in keyboard modality.\n * @param {Event} e\n */\n function onPointerDown(e) {\n hadKeyboardEvent = false;\n }\n\n /**\n * On `focus`, add the `focus-visible` class to the target if:\n * - the target received focus as a result of keyboard navigation, or\n * - the event target is an element that will likely require interaction\n * via the keyboard (e.g. a text box)\n * @param {Event} e\n */\n function onFocus(e) {\n // Prevent IE from focusing the document or HTML element.\n if (!isValidFocusTarget(e.target)) {\n return;\n }\n\n if (hadKeyboardEvent || focusTriggersKeyboardModality(e.target)) {\n addFocusVisibleClass(e.target);\n }\n }\n\n /**\n * On `blur`, remove the `focus-visible` class from the target.\n * @param {Event} e\n */\n function onBlur(e) {\n if (!isValidFocusTarget(e.target)) {\n return;\n }\n\n if (\n e.target.classList.contains('focus-visible') ||\n e.target.hasAttribute('data-focus-visible-added')\n ) {\n // To detect a tab/window switch, we look for a blur event followed\n // rapidly by a visibility change.\n // If we don't see a visibility change within 100ms, it's probably a\n // regular focus change.\n hadFocusVisibleRecently = true;\n window.clearTimeout(hadFocusVisibleRecentlyTimeout);\n hadFocusVisibleRecentlyTimeout = window.setTimeout(function() {\n hadFocusVisibleRecently = false;\n }, 100);\n removeFocusVisibleClass(e.target);\n }\n }\n\n /**\n * If the user changes tabs, keep track of whether or not the previously\n * focused element had .focus-visible.\n * @param {Event} e\n */\n function onVisibilityChange(e) {\n if (document.visibilityState === 'hidden') {\n // If the tab becomes active again, the browser will handle calling focus\n // on the element (Safari actually calls it twice).\n // If this tab change caused a blur on an element with focus-visible,\n // re-apply the class when the user switches back to the tab.\n if (hadFocusVisibleRecently) {\n hadKeyboardEvent = true;\n }\n addInitialPointerMoveListeners();\n }\n }\n\n /**\n * Add a group of listeners to detect usage of any pointing devices.\n * These listeners will be added when the polyfill first loads, and anytime\n * the window is blurred, so that they are active when the window regains\n * focus.\n */\n function addInitialPointerMoveListeners() {\n document.addEventListener('mousemove', onInitialPointerMove);\n document.addEventListener('mousedown', onInitialPointerMove);\n document.addEventListener('mouseup', onInitialPointerMove);\n document.addEventListener('pointermove', onInitialPointerMove);\n document.addEventListener('pointerdown', onInitialPointerMove);\n document.addEventListener('pointerup', onInitialPointerMove);\n document.addEventListener('touchmove', onInitialPointerMove);\n document.addEventListener('touchstart', onInitialPointerMove);\n document.addEventListener('touchend', onInitialPointerMove);\n }\n\n function removeInitialPointerMoveListeners() {\n document.removeEventListener('mousemove', onInitialPointerMove);\n document.removeEventListener('mousedown', onInitialPointerMove);\n document.removeEventListener('mouseup', onInitialPointerMove);\n document.removeEventListener('pointermove', onInitialPointerMove);\n document.removeEventListener('pointerdown', onInitialPointerMove);\n document.removeEventListener('pointerup', onInitialPointerMove);\n document.removeEventListener('touchmove', onInitialPointerMove);\n document.removeEventListener('touchstart', onInitialPointerMove);\n document.removeEventListener('touchend', onInitialPointerMove);\n }\n\n /**\n * When the polfyill first loads, assume the user is in keyboard modality.\n * If any event is received from a pointing device (e.g. mouse, pointer,\n * touch), turn off keyboard modality.\n * This accounts for situations where focus enters the page from the URL bar.\n * @param {Event} e\n */\n function onInitialPointerMove(e) {\n // Work around a Safari quirk that fires a mousemove on whenever the\n // window blurs, even if you're tabbing out of the page. ¯\\_(ツ)_/¯\n if (e.target.nodeName && e.target.nodeName.toLowerCase() === 'html') {\n return;\n }\n\n hadKeyboardEvent = false;\n removeInitialPointerMoveListeners();\n }\n\n // For some kinds of state, we are interested in changes at the global scope\n // only. For example, global pointer input, global key presses and global\n // visibility change should affect the state at every scope:\n document.addEventListener('keydown', onKeyDown, true);\n document.addEventListener('mousedown', onPointerDown, true);\n document.addEventListener('pointerdown', onPointerDown, true);\n document.addEventListener('touchstart', onPointerDown, true);\n document.addEventListener('visibilitychange', onVisibilityChange, true);\n\n addInitialPointerMoveListeners();\n\n // For focus and blur, we specifically care about state changes in the local\n // scope. This is because focus / blur events that originate from within a\n // shadow root are not re-dispatched from the host element if it was already\n // the active element in its own scope:\n scope.addEventListener('focus', onFocus, true);\n scope.addEventListener('blur', onBlur, true);\n\n // We detect that a node is a ShadowRoot by ensuring that it is a\n // DocumentFragment and also has a host property. This check covers native\n // implementation and polyfill implementation transparently. If we only cared\n // about the native implementation, we could just check if the scope was\n // an instance of a ShadowRoot.\n if (scope.nodeType === Node.DOCUMENT_FRAGMENT_NODE && scope.host) {\n // Since a ShadowRoot is a special kind of DocumentFragment, it does not\n // have a root element to add a class to. So, we add this attribute to the\n // host element instead:\n scope.host.setAttribute('data-js-focus-visible', '');\n } else if (scope.nodeType === Node.DOCUMENT_NODE) {\n document.documentElement.classList.add('js-focus-visible');\n document.documentElement.setAttribute('data-js-focus-visible', '');\n }\n }\n\n // It is important to wrap all references to global window and document in\n // these checks to support server-side rendering use cases\n // @see https://github.com/WICG/focus-visible/issues/199\n if (typeof window !== 'undefined' && typeof document !== 'undefined') {\n // Make the polyfill helper globally available. This can be used as a signal\n // to interested libraries that wish to coordinate with the polyfill for e.g.,\n // applying the polyfill to a shadow root:\n window.applyFocusVisiblePolyfill = applyFocusVisiblePolyfill;\n\n // Notify interested libraries of the polyfill's presence, in case the\n // polyfill was loaded lazily:\n var event;\n\n try {\n event = new CustomEvent('focus-visible-polyfill-ready');\n } catch (error) {\n // IE11 does not support using CustomEvent as a constructor directly:\n event = document.createEvent('CustomEvent');\n event.initCustomEvent('focus-visible-polyfill-ready', false, false, {});\n }\n\n window.dispatchEvent(event);\n }\n\n if (typeof document !== 'undefined') {\n // Apply the polyfill to the global document, so that no JavaScript\n // coordination is required to use the polyfill in the top-level document:\n applyFocusVisiblePolyfill(document);\n }\n\n})));\n","class BRAccordion {\n constructor(name, component) {\n this.name = name\n this.component = component\n this._setBehavior()\n }\n\n _setBehavior() {\n for (const button of this.component.querySelectorAll('button.header')) {\n button.addEventListener('click', (event) => {\n this._collapse(event)\n this._changeIcon(event)\n })\n }\n }\n\n // eslint-disable-next-line complexity\n _collapse(event) {\n if (this.component.hasAttribute('single')) {\n for (const field of this.component.querySelectorAll('.item')) {\n if (field === event.currentTarget.parentNode) {\n if (field.hasAttribute('active')) {\n field.removeAttribute('active')\n } else {\n field.setAttribute('active', '')\n }\n } else {\n if (field.hasAttribute('active')) {\n field.removeAttribute('active')\n }\n }\n }\n } else {\n for (const field of this.component.querySelectorAll('.item')) {\n if (field === event.currentTarget.parentNode) {\n if (field.hasAttribute('active')) {\n field.removeAttribute('active')\n } else {\n field.setAttribute('active', '')\n }\n }\n }\n }\n }\n\n _changeIcon() {\n for (const field of this.component.querySelectorAll('.item')) {\n if (field.hasAttribute('active')) {\n for (const icon of field.querySelectorAll('.icon')) {\n icon.children[0].classList.remove('fa-angle-down')\n icon.children[0].classList.add('fa-angle-up')\n }\n } else {\n for (const icon of field.querySelectorAll('.icon')) {\n icon.children[0].classList.remove('fa-angle-up')\n icon.children[0].classList.add('fa-angle-down')\n }\n }\n }\n }\n}\n\nexport default BRAccordion\n","import Dropdown from '../../partial/js/behavior/dropdown'\n\n/**\n * Classe para o exemplo do comportamento dropdown\n */\nclass BRAvatar {\n /**\n * Instancia um exemplo de comportamento dropdown\n * @param {object} element - Elemento DOM que representa um componente contento um comportamento de dropdown\n */\n constructor(name, element) {\n this.element = element\n this._setBehavior()\n }\n\n _setBehavior() {\n this._setDropdownBehavior()\n }\n\n _setDropdownBehavior() {\n if (this.element.dataset.toggle === 'dropdown') {\n const config = {\n trigger: this.element,\n iconToShow: 'fa-caret-down',\n iconToHide: 'fa-caret-up',\n useIcons: true,\n }\n const dropdown = new Dropdown(config)\n dropdown.setBehavior()\n }\n }\n}\n\nexport default BRAvatar\n","class BRBreadcrumb {\n constructor(name, component) {\n this.name = name\n this.component = component\n this._setBehavior()\n }\n\n _setBehavior() {\n this._setView()\n window.addEventListener('resize', () => {\n this._setView()\n })\n window.document.addEventListener('click', (event) => {\n if (\n !this.component.contains(event.target) &&\n this.component.querySelector('.br-card')\n ) {\n this.component.querySelector('.br-card').remove()\n }\n })\n\n // window.addEventListener('resize', (event) => {})\n }\n /**\n * Reseta a view do breadcrumb\n */\n resetBreadcrumbs() {\n this._reset()\n\n const brcardBreadcrumb = this.component.querySelector('.br-card')\n if (brcardBreadcrumb !== null) {\n brcardBreadcrumb.remove()\n }\n this._setView()\n }\n\n _setView() {\n this._reset()\n for (const crumbList of this.component.querySelectorAll('.crumb-list')) {\n const crumbs = crumbList.querySelectorAll('.crumb:not([data-active])')\n if (window.innerWidth < 575) {\n if (crumbs.length !== 1) {\n crumbs.forEach((crumb) => {\n crumb.classList.add('d-none')\n })\n this._insertExpandButton()\n }\n } else {\n if (\n crumbList.scrollWidth > crumbList.offsetWidth ||\n crumbs.length > 5\n ) {\n crumbs.forEach((crumb, index) => {\n if (index > 0 && index < crumbs.length - 1) {\n crumb.classList.add('d-none')\n }\n })\n this._insertExpandButton()\n }\n }\n }\n }\n\n _insertExpandButton() {\n const crumb = this._createCrumb()\n const crumbList = this.component.querySelector('.crumb-list')\n const crumbs = crumbList.querySelectorAll('.crumb')\n crumbList.insertBefore(crumb, crumbs[1])\n }\n\n _reset() {\n this.component.querySelectorAll('.crumb-list .crumb').forEach((crumb) => {\n if (crumb.classList.contains('menu-mobil')) {\n crumb.remove()\n } else {\n crumb.classList.remove('d-none')\n }\n })\n }\n\n _createCrumb() {\n const crumb = document.createElement('li')\n crumb.classList.add('crumb', 'menu-mobil')\n crumb.setAttribute('data-toggle', 'dropdown')\n\n const button = document.createElement('button')\n button.classList.add('br-button', 'circle')\n\n const span = document.createElement('span')\n span.classList.add('sr-only')\n span.innerHTML = 'Botão Menu'\n\n const folderIcon = document.createElement('i')\n folderIcon.classList.add('icon', 'fas', 'fa-folder-plus')\n\n const chevronIcon = document.createElement('i')\n chevronIcon.classList.add('icon', 'fas', 'fa-chevron-right')\n\n crumb.appendChild(chevronIcon)\n crumb.appendChild(button)\n button.appendChild(span)\n button.appendChild(folderIcon)\n\n crumb.addEventListener('click', () => {\n let card = this.component.querySelector('.br-card')\n if (card) {\n folderIcon.classList.remove('icon', 'fas', 'fa-folder-minus')\n folderIcon.classList.add('icon', 'fas', 'fa-folder-plus')\n this.component.querySelector('.br-card').remove()\n } else {\n folderIcon.classList.remove('icon', 'fas', 'fa-folder-plus')\n folderIcon.classList.add('icon', 'fas', 'fa-folder-minus')\n card = this._createList()\n this.component.appendChild(card)\n }\n })\n\n return crumb\n }\n\n _createList() {\n const card = document.createElement('div')\n card.classList.add('br-card')\n\n const front = document.createElement('div')\n front.classList.add('front')\n\n const content = document.createElement('div')\n content.classList.add('content')\n\n const list = document.createElement('div')\n list.classList.add('br-list')\n\n card.appendChild(front)\n front.appendChild(content)\n content.appendChild(list)\n\n this.component.querySelectorAll('.crumb-list .crumb').forEach((crumb) => {\n if (crumb.classList.contains('d-none')) {\n const item = document.createElement('div')\n item.classList.add('br-item', 'py-3')\n\n const row = document.createElement('div')\n row.classList.add('row', 'align-items-center')\n\n const col = document.createElement('div')\n col.classList.add('col')\n if (!crumb.classList.contains('home')) {\n col.appendChild(crumb.querySelector('a').cloneNode(true))\n row.appendChild(col)\n item.appendChild(row)\n list.appendChild(item)\n }\n }\n })\n\n return card\n }\n}\n\nexport default BRBreadcrumb\n","import Collapse from '../../partial/js/behavior/collapse'\nclass BRCard {\n constructor(name, component, id) {\n this.name = name\n this.component = component\n this.component.setAttribute('id', `card${id}`)\n this._setBehavior()\n }\n\n _setBehavior() {\n this._setFlipBehavior()\n // this._setExpandBehavior()\n this._setDragBehavior()\n this._setDisableBehavior()\n this._collpaseBehavior()\n }\n _collpaseBehavior() {\n this.component\n .querySelectorAll('[data-toggle=\"collapse\"]')\n .forEach((trigger) => {\n const config = {\n trigger,\n iconToShow: 'fa-chevron-down',\n iconToHide: 'fa-chevron-up',\n useIcons: true,\n }\n const collapse = new Collapse(config)\n collapse.setBehavior()\n })\n }\n _setDisableBehavior() {\n if (this.component.classList.contains('disabled')) {\n this.component.setAttribute('aria-hidden', 'true')\n const buttons = this.component.querySelectorAll('button')\n const inputs = this.component.querySelectorAll('input')\n const selects = this.component.querySelectorAll('select')\n const textareas = this.component.querySelectorAll('textarea')\n for (const button of buttons) {\n button.setAttribute('disabled', 'disabled')\n }\n for (const input of inputs) {\n input.setAttribute('disabled', 'disabled')\n }\n for (const select of selects) {\n input.setAttribute('disabled', 'disabled')\n }\n for (const textarea of textareas) {\n input.setAttribute('disabled', 'disabled')\n }\n }\n }\n\n _setFlipBehavior() {\n for (const flip of this.component.querySelectorAll('button.flip')) {\n flip.addEventListener('click', () => {\n if (this.component.getAttribute('flipped') === 'off') {\n this.component.setAttribute('flipped', 'on')\n } else {\n this.component.setAttribute('flipped', 'off')\n }\n })\n }\n }\n\n _setDragBehavior() {\n for (const img of this.component.querySelectorAll('img')) {\n img.setAttribute('draggable', 'false')\n }\n for (const link of this.component.querySelectorAll('a')) {\n link.setAttribute('draggable', 'false')\n }\n this.component.addEventListener('dragstart', (event) => {\n event.stopPropagation()\n event.dataTransfer.setData(\n 'text/plain',\n this.component.getAttribute('id')\n )\n event.dropEffect = 'move'\n })\n }\n}\n\nexport default BRCard\n","import BRStep from '../step/step'\nimport SwipeEventDispatcher from '../swipe/swipe'\nclass BRCarousel {\n constructor(name, component) {\n /**\n * Instancia um componente carousel\n * @param {string} name - Nome do componente\n * @param {object} component - Objeto referenciando a raiz do componente DOM\n * @property {number} activeStageNum - Número do palco ativo\n * @property {array} DOMStrings - instancia dos elementos internos do componente\n * @property {BRStep} DOMStrings - instancia dos elemento step interno\n */\n this.name = name\n this.component = component\n this.activeStageNum = 0\n // Elementos DOM\n this.DOMstrings = {\n carouselStage: this.component.querySelector('.carousel-stage'),\n carouselPages: this.component.querySelectorAll('.carousel-page'),\n carouselNextBtn: this.component.querySelector('.carousel-btn-next'),\n carouselPrevBtn: this.component.querySelector('.carousel-btn-prev'),\n step: this.component.querySelector('.br-step'),\n circular: this.component.hasAttribute('data-circular'),\n }\n this.step = new BRStep('br-step', this.DOMstrings.step)\n this._setBehavior()\n }\n\n /**\n * Remove os atributos de uma lista de elementos\n * @param {object} elemSet - Lista de elementos\n * @param {string} button - Nome do atributo\n */\n removeAttributes(elemSet, attrName) {\n elemSet.forEach((elem) => {\n elem.removeAttribute(attrName)\n })\n }\n\n /**\n * Retorna o passo ativo\n */\n getActiveStep() {\n return this.step.activeStepNum\n }\n\n /**\n * Define o passo ativo\n * @param {number} activeStepNum - número do passo\n */\n setActiveStep = (activeStepNum) => {\n this.step.setActiveStep(activeStepNum)\n }\n\n /**\n * Retorna o palco ativo\n */\n getActiveStage() {\n let activeStage\n this.DOMstrings.carouselPages.forEach((stage) => {\n if (stage.hasAttribute('active')) {\n activeStage = stage\n }\n })\n return activeStage\n }\n\n /**\n * Define o palco ativo\n * @param {number} num - número do palco\n */\n setActiveStage(num) {\n // remove active atts from all the stages\n this.removeAttributes(this.DOMstrings.carouselPages, 'active')\n // show active stage\n this.DOMstrings.carouselPages.forEach((stage, index) => {\n // motion efect\n if (index > num) {\n stage.style.left = '100%'\n } else {\n stage.style.left = '-100%'\n }\n // set active attrb\n if (index === num) {\n stage.setAttribute('active', '')\n this.activeStageNum = num\n }\n })\n this.disabledBtns()\n }\n\n /**\n * Desabilita os botões se o carousel não for circular\n */\n disabledBtns() {\n // Disables Carousel Buttons\n if (!this.DOMstrings.circular) {\n if (this.activeStageNum === 0) {\n this.DOMstrings.carouselPrevBtn.setAttribute('disabled', '')\n } else {\n this.DOMstrings.carouselPrevBtn.removeAttribute('disabled')\n }\n if (this.activeStageNum === this.DOMstrings.carouselPages.length - 1) {\n this.DOMstrings.carouselNextBtn.setAttribute('disabled', '')\n } else {\n this.DOMstrings.carouselNextBtn.removeAttribute('disabled')\n }\n }\n }\n\n /**\n * Muda a página ativa incrementalmente - ações de botões e swap\n * @param {number} num - incremento\n */\n shiftPage(num) {\n //find active stage\n const activeStage = this.getActiveStage()\n const PanelsSize = this.DOMstrings.carouselPages.length - 1\n let activeStageNum = Array.from(this.DOMstrings.carouselPages).indexOf(\n activeStage\n )\n // set active step and active stage onclick\n if (num < 0) {\n // Volta o slide\n if (this.DOMstrings.circular) {\n activeStageNum =\n activeStageNum === 0 ? PanelsSize : (activeStageNum -= 1)\n } else {\n activeStageNum -= activeStageNum === 0 ? 0 : 1\n }\n } else {\n // Passar p/ frente o slide\n if (this.DOMstrings.circular) {\n activeStageNum =\n activeStageNum === PanelsSize ? 0 : (activeStageNum += 1)\n } else {\n activeStageNum += activeStageNum === PanelsSize ? 0 : 1\n }\n }\n this.setActiveStep(activeStageNum)\n this.setActiveStage(activeStageNum)\n }\n\n /**\n * Define os comportamentos do componente\n * @private\n */\n _setBehavior() {\n this.DOMstrings.carouselNextBtn.addEventListener('click', (e) => {\n this.shiftPage(1)\n })\n\n this.DOMstrings.carouselPrevBtn.addEventListener('click', (e) => {\n this.shiftPage(-1)\n })\n\n this.DOMstrings.step.addEventListener('click', (e) => {\n this.setActiveStage(this.step.activeStepNum)\n })\n\n // Swipe\n const dispatcher = new SwipeEventDispatcher(this.DOMstrings.carouselStage)\n dispatcher.on('SWIPE_LEFT', () => {\n this.shiftPage(1)\n })\n dispatcher.on('SWIPE_RIGHT', () => {\n this.shiftPage(-1)\n })\n this.disabledBtns()\n }\n}\n\nexport default BRCarousel\n","import Checkgroup from '../../partial/js/behavior/checkgroup'\n\nclass BRCheckbox {\n constructor(name, component) {\n this.name = name\n this.component = component\n this._setBehavior()\n }\n\n _setBehavior() {\n this._setCheckgroupBehavior()\n }\n\n _setCheckgroupBehavior() {\n this.component\n .querySelectorAll('input[type=\"checkbox\"][data-parent]')\n .forEach((trigger) => {\n const checkgroup = new Checkgroup(trigger)\n checkgroup.setBehavior()\n })\n }\n}\n\nexport default BRCheckbox\n","/** Classe que representa os dados do cookiebar */\nexport class CookiebarData {\n /**\n * Instancia um objeto de dados do cookiebar. Objeto contém as propriedades contidas no JSON de entrada em uma língua específica\n * @param {string} json - JSON de entrada de dados\n * @param {string} lang - Língua para filtrar o JSON de entrada\n */\n constructor(json, lang) {\n this.PRIORITY_LEVELS = 5\n Object.assign(this, this._filterByLang(json, lang))\n this._setDataCoherenceByPriority(this.PRIORITY_LEVELS)\n }\n\n /**\n * Filtra um JSON pela língua correspondente\n * @param {string} json - Dados no formato JSON (array de objetos)\n * @param {string} lang - Língua para filtrar o array vindo do json\n * @returns Objeto javascript contendo as propriedade vindas do JSON filtradas pela língua\n * @private\n */\n _filterByLang(json, lang) {\n const list = JSON.parse(json)\n const data = list.filter((element) => {\n return element.lang === lang\n })\n if (data.length > 0) {\n // Existe dados na lingua especificada\n return data[0] // Retorna o primeiro. Se existir mais objetos na mesma língua, os demais serão ignorados.\n } else {\n // Não existe dados na lingua especificada\n return list[0] // Retorna o primeiro que encontrar\n }\n }\n\n /**\n * Consolida os dados iniciais baseado em uma hierarquia de prioridades\n * @private\n */\n _setDataCoherenceByPriority() {\n this.selectAll = !this.allOptOut ? true : this.selectAll\n this.cookieGroups.forEach((groupData) => {\n groupData.groupOptOut = !this.allOptOut ? false : groupData.groupOptOut\n groupData.groupSelected =\n this.selectAll || !groupData.groupOptOut\n ? true\n : groupData.groupSelected\n groupData.cookieList.forEach((cookieData) => {\n cookieData.cookieOptOut = !groupData.groupOptOut\n ? false\n : cookieData.cookieOptOut\n cookieData.cookieSelected =\n groupData.groupSelected || !cookieData.cookieOptOut\n ? groupData.groupSelected\n : cookieData.cookieSelected\n })\n })\n this._setIndeterminateState()\n }\n\n /**\n * Controla a configuração do estado indeterminado dos checkboxes\n * @private\n */\n _setIndeterminateState() {\n this._setGroupIndeterminateState()\n this._setAllIndeterminateState()\n }\n\n /**\n * Trata a configuração do estado indeterminado dos checkboxes dos grupos de cookies\n * @private\n */\n _setGroupIndeterminateState() {\n this.cookieGroups.forEach((groupData) => {\n let allChecked = true\n let allUnchecked = true\n\n groupData.cookieList.forEach((cookieData) => {\n cookieData.cookieSelected\n ? (allUnchecked = false)\n : (allChecked = false)\n })\n\n groupData.groupSelected = allChecked ? true : allUnchecked ? false : true\n groupData.groupIndeterminated = allChecked || allUnchecked ? false : true\n })\n }\n\n /**\n * Trata a configuração do estado indeterminado do checkbox geral\n * @private\n */\n _setAllIndeterminateState() {\n let allChecked = true\n let allUnchecked = true\n let indeterminated = false\n this.cookieGroups.forEach((groupData) => {\n groupData.groupSelected ? (allUnchecked = false) : (allChecked = false)\n\n if (groupData.groupIndeterminated) {\n indeterminated = true\n }\n })\n\n this.selectAll = allChecked ? true : allUnchecked ? false : true\n this.allIndeterminated = indeterminated\n ? true\n : allChecked || allUnchecked\n ? false\n : true\n }\n\n /**\n * Calcula a quantidade de cookies selecionados em 1 grupo de cookies\n * @param {object} groupData - Objeto com dados de 1 grupo de cookies\n * @returns {number} - Quantidade de cookies selecionados em 1 grupo de cookies\n * @public\n */\n getCookiesCheckedAmount(groupData) {\n let count = 0\n groupData.cookieList.forEach((cookieData) => {\n if (cookieData.cookieSelected) count += 1\n })\n return count\n }\n\n /**\n * Calcula a quantidade total de cookies em 1 grupo de cookies\n * @param {object} groupData - Objeto com dados de 1 grupo de cookies\n * @returns {number} - Quantidade total de cookies em 1 grupo de cookies\n * @public\n */\n getCookiesAmount(groupData) {\n let count = 0\n groupData.cookieList.forEach(() => {\n count += 1\n })\n return count\n }\n\n /**\n * Ler um arquivo json local\n * @param {string} path - Caminho para o arquivo\n * @param {function} callback - Função de callback que recebe a conteúdo do arquivo\n * @public\n * @static\n */\n static loadJSON(path, callback) {\n const rawFile = new XMLHttpRequest()\n rawFile.overrideMimeType('application/json')\n rawFile.open('GET', path, true)\n rawFile.onreadystatechange = () => {\n if (rawFile.readyState === 4 && rawFile.status === 200) {\n callback(rawFile.responseText)\n }\n }\n rawFile.send(null)\n }\n}\n","/** Classe para tratamento das labels do cookiebar */\nexport class CookiebarLabels {\n /**\n * Instancia um objeto de labels do cookiebar\n * @param {object} data - Objeto de dados do cookiebar\n */\n constructor(data) {\n this.data = data\n }\n\n /**\n * Trata a label para a informação de atualização\n * @returns {string} - Label para a informação de atualização\n * @public\n */\n setLastUpdateLabel() {\n return this.data.lastUpdateLabel || 'Última atualização'\n }\n\n /**\n * Trata a label para o título da lista de grupos de cookies\n * @returns {string} - Label para o título da lista de grupos de cookies\n * @public\n */\n setCookieGroupsLabel() {\n return this.data.cookieGroupsLabel || 'Classes de cookies'\n }\n\n /**\n * Trata a label para o checkbox geral desselecionado\n * @returns {string} - Label para o checkbox geral desselecionado\n * @public\n */\n setUnselectAllLabel() {\n return this.data.unselectAllLabel || 'Desselecionar tudo'\n }\n\n /**\n * Trata a label para o checkbox geral selecionado\n * @returns {string} - Label para o checkbox geral selecionado\n * @public\n */\n setSelectAllLabel() {\n return this.data.selectAllLabel || 'Selecionar tudo'\n }\n\n /**\n * Trata a label para o checkbox geral\n * @returns {string} - Label para o checkbox geral\n * @public\n */\n setCheckAllLabel() {\n if (this.data.selectAll && !this.data.allIndeterminated) {\n return this.setUnselectAllLabel()\n } else {\n return this.setSelectAllLabel()\n }\n }\n\n /**\n * Trata a label para o checkbox do grupo de cookies desselecionado\n * @returns {string} - Label para o checkbox do grupo de cookies desselecionado\n * @public\n */\n setUnselectAllGroupLabel() {\n return this.data.unselectAllGroupLabel || 'Desselecionar toda classe'\n }\n\n /**\n * Trata a label para o checkbox do grupo de cookies selecionado\n * @returns {string} - Label para o checkbox do grupo de cookies selecionado\n * @public\n */\n setSelectAllGroupLabel() {\n return this.data.selectAllGroupLabel || 'Selecionar toda classe'\n }\n\n /**\n * Trata a label para o checkbox do grupo de cookies\n * @param {object} groupData - Objeto com dados de 1 grupo de cookies\n * @returns {string} - Label para checkbox do grupo de cookies\n * @public\n */\n setCheckGroupLabel(groupData) {\n if (groupData.groupSelected && !groupData.groupIndeterminated) {\n return this.setUnselectAllGroupLabel()\n } else {\n return this.setSelectAllGroupLabel()\n }\n }\n\n /**\n * Trata a label para o grupo de cookies 'opt-in'\n * @returns {string} - Label para grupo de cookies 'opt-in'\n * @public\n */\n setAlwaysActiveLabel() {\n return this.data.alwaysActiveLabel || 'Sempre ativo'\n }\n\n /**\n * Trata a label para cookie habilitado\n * @returns {string} - Label para cookie habilitado\n * @publi\n */\n setCheckCookieEnabledLabel() {\n return this.data.onLabel || 'Ligado'\n }\n\n /**\n * Trata a label para cookie desabilitado\n * @returns {string} - Label para cookie desabilitado\n * @public\n */\n setCheckCookieDisabledLabel() {\n return this.data.offLabel || 'Desligado'\n }\n\n /**\n * Trata a label para o nome do cookie\n * @returns {string} - Label para o nome do cookie\n * @public\n */\n setCookieNameLabel() {\n return this.data.cookieNameLabel || 'Cookies'\n }\n\n /**\n * Trata a label para o vencimento do cookie\n * @returns {string} - Label para o vencimento do cookie\n * @public\n */\n setCookieExpiresLabel() {\n return this.data.expiresLabel || 'Vencimento'\n }\n\n /**\n * Trata a label para o domínio do cookie\n * @returns {string} - Label para o domínio do cookie\n * @public\n */\n setCookieDomainLabel() {\n return this.data.domainLabel || 'Domínio'\n }\n\n /**\n * Trata a label para e empresa do cookie\n * @returns {string} - Label para a empresa do cookie\n * @public\n */\n setCookieEnterpriseLabel() {\n return this.data.enterpriseLabel || 'Empresa'\n }\n\n /**\n * Trata a label para a finalidade do cookie\n * @returns {string} - Label para a finalidade do cookie\n * @public\n */\n setCookiePurposeLabel() {\n return this.data.purposeLabel || 'Finalidade'\n }\n\n /**\n * Trata a label para a descrição do cookie\n * @returns {string} - Label para a descrição do cookie\n * @public\n */\n setCookieDescriptionLabel() {\n return this.data.descriptionLabel || 'Descrição'\n }\n\n /**\n * Trata a label para o botão de políticas/definições de cookies\n * @returns {string} - Label para o botão de políticas/definições de cookies\n * @public\n */\n setPoliticsButtonLabel() {\n return this.data.allOptOut\n ? this.data.optOutButton || 'Definir Cookies'\n : this.data.optInButton || 'Ver Política de Cookies'\n }\n\n /**\n * Trata a label para o botão de aceite\n * @returns {string} - Label para o botão de aceite\n * @public\n */\n setAcceptButtonLabel() {\n return this.data.acceptButton || 'Aceitar'\n }\n}\n","import { CookiebarLabels } from './cookiebar-labels'\n\n/** Classe que contém os templates do cookiebar */\nexport class CookiebarTemplates {\n /**\n * Instancia um objeto template com os dados do cookiebar\n * @param {object} data - Objeto de dados do cookiebar\n */\n constructor(data) {\n this.data = data\n this.labels = new CookiebarLabels(this.data)\n }\n\n /**\n * Cria um template para a área de conteúdo global\n * @returns {string} - Elemento DOM que representa a área de conteúdo global\n * @public\n */\n setGlobalContentArea() {\n return `
\n
\n
\n
\n ${this._setIntroductoryContentArea()}\n
\n ${this._setInfoText()}\n ${this._setMainContentArea()}\n ${this._setComplementaryContentArea()}\n
\n
\n ${this._setActionArea()}\n
\n
\n
`\n }\n\n /**\n * Cria um template para a área de conteúdo introdutório\n * @returns {string} - Elemento DOM que representa a área de conteúdo introdutório\n * @private\n */\n _setIntroductoryContentArea() {\n return `
\n ${this._setMainTitle()}\n ${this._setLastUpdate()}\n ${this._setEntryText()}\n
`\n }\n\n /**\n * Cria um template para a área de conteúdo principal\n * @returns {string} - Elemento DOM que representa a área de conteúdo principal\n * @private\n */\n _setMainContentArea() {\n return `
\n ${this._setMainContentHeader()}\n ${this._setCookieGroups()}\n ${\n this.data.noteList && this.data.noteList.length\n ? this._setNotifications()\n : ''\n }\n
`\n }\n\n /**\n * Cria um template para a área de acões\n * @returns {string} - Elemento DOM que representa a área de ações\n * @private\n */\n _setActionArea() {\n return ``\n }\n\n /**\n * Cria um template para o título principal\n * @returns {string} - Elemento DOM que representa o título principal\n * @private\n */\n _setMainTitle() {\n return `
\n
\n
\n

${this.data.mainTitle}

\n
\n
\n ${this._setCloseButton()}\n
\n
\n
`\n }\n\n /**\n * Cria um template para informações sobre atualização\n * @returns {string} - Elemento DOM que representa a informação sobre atualização\n * @private\n */\n _setLastUpdate() {\n return `

${this.labels.setLastUpdateLabel()}: ${\n this.data.lastUpdate\n }

`\n }\n\n /**\n * Cria um template para o texto introdutório\n * @returns {string} - Elemento DOM que representa o texto introdutório\n * @private\n */\n _setEntryText() {\n return `

${this.data.entryText}

`\n }\n\n /**\n * Cria um template para o texto descritivo\n * @returns {string} - Elemento DOM que representa o texto descritivo\n * @private\n */\n _setInfoText() {\n return `

${this.data.infoText}

`\n }\n\n /**\n * Cria um template para o header da área de conteúdo principal\n * @returns {string} - Elemeto DOM que representa o header da área de conteúdo principal\n * @private\n */\n _setMainContentHeader() {\n return `
\n
\n
\n
${this.labels.setCookieGroupsLabel()}
\n
\n
\n ${this.data.allOptOut ? this._setCheckAll() : ''}\n
\n
\n ${this.setAllMessage()}\n
\n
\n
`\n }\n\n /**\n * Cria um template para o grupo de cookies\n * @returns {string} - Elemento DOM que representa os grupos de cookies\n * @private\n */\n _setCookieGroups() {\n let groupTemplates = ''\n this.data.cookieGroups.forEach((groupData, groupIndex) => {\n groupTemplates += `
\n
\n
\n
\n ${this._setGroupName(groupData)}\n
\n
\n ${\n groupData.groupOptOut\n ? this._setCheckGroup(groupData, groupIndex)\n : `\n ${this.labels.setAlwaysActiveLabel()}\n `\n }\n
\n
\n ${this._setGroupButton()}\n
\n
\n ${this.setGroupMessage(groupData)}\n
\n
\n
\n
\n

${this._setGroupDescription(\n groupData\n )}

\n
\n
\n
\n
\n
\n
\n
\n ${this._setCookieInfo(groupData, groupIndex)}\n
\n
\n
\n
`\n })\n return groupTemplates\n }\n\n /**\n * Cria um template para o nome do grupo de cookies\n * @param {object} groupData - Objeto com dados de 1 grupo de cookies\n * @returns {string} - Elemento DOM que representa o nome do grupo de cookies\n * @orivate\n */\n _setGroupName(groupData) {\n return `${\n groupData.groupName\n }\n (${\n groupData.groupOptOut\n ? `${this.data.getCookiesCheckedAmount(groupData)} de `\n : ''\n }${this.data.getCookiesAmount(\n groupData\n )})`\n }\n\n /**\n * Cria um template para a descrição do grupo de cookies\n * @param {object} groupData - Objeto com dados de 1 grupo de cookies\n * @returns {string} - Elemento DOM que representa a descrição do grupo de cookies\n * @private\n */\n _setGroupDescription(groupData) {\n return `

${groupData.groupText}

`\n }\n\n /**\n * Cria um template para as informações dos cookies\n * @param {object} groupData - Objeto com dados de 1 grupo de cookies\n * @param {number} groupIndex - Índice do grupo de cookies\n * @returns {string} - Elemento DOM que representa as informações dos cookies\n * @private\n */\n _setCookieInfo(groupData, groupIndex) {\n let cookieTemplates = ''\n groupData.cookieList.forEach((cookieData, cookieIndex) => {\n cookieTemplates += `
\n
\n
\n
\n ${\n cookieData.cookieOptOut\n ? this._setCheckCookie(\n groupIndex,\n cookieData,\n cookieIndex\n )\n : ''\n }\n
\n
\n ${this.setCookieMessage(cookieData)}\n
\n
\n
\n
\n ${this.labels.setCookieNameLabel()}\n
\n
\n ${cookieData.cookieName}\n
\n
\n
\n
\n ${this.labels.setCookieExpiresLabel()}\n
\n
\n ${cookieData.expires}\n
\n
\n
\n
\n ${this.labels.setCookieDomainLabel()}\n
\n
\n ${cookieData.domain}\n
\n
\n
\n
\n ${this.labels.setCookieEnterpriseLabel()}\n
\n
\n ${cookieData.entreprise}\n
\n
\n
\n
\n ${this.labels.setCookiePurposeLabel()}\n
\n
\n ${cookieData.purpose}\n
\n
\n
\n
\n ${this.labels.setCookieDescriptionLabel()}\n
\n
\n ${cookieData.description}\n
\n
\n
\n
`\n })\n return cookieTemplates\n }\n\n /**\n * Cria um template para a lista de notificações\n * @returns {string} - Elemento DOM que representa a lista de notificações\n * @private\n */\n _setNotifications() {\n return `
\n
\n
\n
\n \n ${this.data.noteTitle}\n
\n
\n ${this._setGroupButton()}\n
\n
\n
\n
\n ${this._setNotificationInfo()}\n
\n
`\n }\n\n /**\n * Cria um template para as informações das notificações\n * @returns {string} - Elemento DOM que representa as informações das notificações\n * @private\n */\n _setNotificationInfo() {\n let notificationTemplates = ''\n this.data.noteList.forEach((notificationData) => {\n notificationTemplates += `
\n
\n
\n

${notificationData.question}

\n

${notificationData.answer}

\n
\n
\n
`\n })\n return notificationTemplates\n }\n\n /**\n * Cria um template para a área de conteúdo complementar\n * @returns {string} - Elemento DOM que representa a área de conteúdo complementar\n * @private\n */\n _setComplementaryContentArea() {\n return `
\n ${this._setLinkInfo()}\n
`\n }\n\n /**\n * Cria um templata para as informações dos links\n * @returns {string} - Elemento DOM que representa as informações dos links\n * @private\n */\n _setLinkInfo() {\n let linkTemplates = ''\n this.data.links.forEach((linkData) => {\n linkTemplates += `
\n
\n \n
\n
`\n })\n return linkTemplates\n }\n\n /**\n * Cria um template pra o botão de políticas de cookies\n * @returns {string} - Elemento DOM que representa o botão de politicas de cookies\n * @private\n */\n _setPoliticsButton() {\n return ``\n }\n\n /**\n * Cria um template pra o botão de aceite\n * @returns {string} - Elemento DOM que representa o botão de aceite\n * @private\n */\n _setAcceptButton() {\n return ``\n }\n /**\n * Cria um template para o botão de fechar\n * @returns {string} - Elemento DOM que represeta o botão de fechar\n * @private\n */\n _setCloseButton() {\n return ``\n }\n\n /**\n * Cria um template para botão de abrir/fechar do brupo de cookies\n * @returns {string} - Elemento DOM que representa o botão de abrir/fechar do grupo de cookies\n * @private\n */\n _setGroupButton() {\n return ``\n }\n\n /**\n * Cria um template para o checkbox de seleção geral\n * @returns {string} - Elemento DOM que representa o checkbox de seleção geral\n * @private\n */\n _setCheckAll() {\n return `
\n \n \n
`\n }\n\n /**\n * Cria um template para o checkbox de seleção do grupo de cookies\n * @param {object} groupData - Objeto com dados de 1 grupo de cookies\n * @param {number} groupIndex - Índice do grupo de cookies\n * @returns {string} - Elemento DOM que representa o checkbox de seleção do grupo de cookies\n * @private\n */\n _setCheckGroup(groupData, groupIndex) {\n return `
\n \n \n
`\n }\n\n /**\n * Cria um template para checkbox(switch) de seleção do cookie\n * @param {number} groupIndex - Índice do grupo de cookies\n * @param {object} cookieData - Objeto com dados de 1 cookie\n * @param {number} cookieIndex - Índice do cookie\n * @returns {string} - Elemento DOM que representa o checkbox(switch) de seleção do cookie\n * @private\n */\n _setCheckCookie(groupIndex, cookieData, cookieIndex) {\n return `
\n \n \n \n \n
\n `\n }\n\n /**\n * Cria um template para a mensagem de a geral\n * @returns {string} - Elemento DOM que representa a mensagem de a geral ou uma string vazia\n * @public\n */\n setAllMessage() {\n return this.data.allMessage\n ? `\n \n ${this.data.allMessage}\n `\n : ''\n }\n\n /**\n * Cria um template para a mensagem de a para o grupo de cookies\n * @param {object} groupData - Objeto com dados de 1 grupo de cookies\n * @returns {string} - Elemento DOM que representa a mensagem de a para o grupo de cookies\n * @public\n */\n setGroupMessage(groupData) {\n return groupData.groupMessage\n ? `\n \n ${groupData.groupMessage}\n `\n : ''\n }\n\n /**\n * Cria um template para a mensagem de a para o cookie\n * @param {object} cookieData - Objeto com dados de 1 cookie\n * @returns {string} - Elemento DOM que representa a mensagem de a para o cookie\n * @public\n */\n setCookieMessage(cookieData) {\n return cookieData.Message\n ? `\n \n ${cookieData.Message}\n `\n : ''\n }\n}\n","/** Constantes representando seletores para o cookiebar */\nexport const POLITICS_BUTTON = '.actions .br-button.secondary'\nexport const ACCEPT_BUTTON = '.actions .br-button.primary'\nexport const ACTION_BUTTONS = `${POLITICS_BUTTON}, ${ACCEPT_BUTTON}`\nexport const CLOSE_BUTTON = '.br-modal-header .br-button.close'\nexport const CONTAINER_FLUID = '.br-modal > .br-card .container-fluid'\nexport const WRAPPER = '.br-modal > .br-card .wrapper'\nexport const MODAL_FOOTER = '.br-modal > .br-card .br-modal-footer'\nexport const GROUP_INFO = '.main-content .group-info'\nexport const COOKIE_CARD = '.main-content .cookie-info .br-card'\nexport const BROAD_ =\n '.header .row:nth-child(1) div:nth-child(3) .feedback'\nexport const GROUP_ = '.row:nth-child(1) div:nth-child(4) .feedback'\nexport const COOKIE_ = '.row:nth-child(1) div:nth-child(2) .feedback'\nexport const BR_CHECKBOX = '.br-checkbox input[type=\"checkbox\"]'\nexport const BR_SWITCH = '.br-switch input[type=\"checkbox\"]'\nexport const CHECKBOX = `${BR_CHECKBOX}, ${BR_SWITCH}`\nexport const PARENT_CHECKBOX = '.main-content .br-checkbox input[data-parent]'\nexport const COOKIES_CHECKED = '.main-content .br-item .cookies-checked'\nexport const GROUP_BUTTON = '.main-content .br-item .br-button'\nexport const GROUP_NAME = '.main-content .br-item .group-name'\nexport const GROUP_SIZE = '.main-content .br-item .group-size'\nexport const BUTTON_ICON = '.br-button i.fas'\n","import Checkgroup from '../../partial/js/behavior/checkgroup'\nimport { CookiebarData } from './cookiebar-data'\nimport { CookiebarTemplates } from './cookiebar-templates'\nimport * as selectors from './selectors'\n\n/** Classe para instanciar um objeto cookiebar */\nexport default class BRCookiebar {\n /**\n * Instancia um objeto cookiebar\n * @param {object} objeto - Objeto para destructuring com as propriedades abaixo\n * @property {string} name - Nome do componente em minúsculo (br-cookiebar)\n * @property {object} component - Objeto referenciando a raiz do componente DOM\n * @property {string} json - JSON de entrada com dados do cookiebar\n * @property {string} lang - Lingua para filtrar o JSON de entrada\n * @property {string} mode - Mode de renderização do cookibar ('default' | 'open')\n * @property {function} callback - Chamada no aceite do cookiebar com o JSON de saída como argumento\n */\n constructor({ name, component, json, lang, mode = 'default', callback }) {\n this.name = name\n this.component = component\n this.data = new CookiebarData(json, lang)\n this.templates = new CookiebarTemplates(this.data)\n this.mode = mode\n this.callback = callback\n this._setUp()\n }\n\n /**\n * Controla a instanciação do cookiebar\n * @private\n */\n _setUp() {\n this._buildCookiebar()\n this._setBehavior()\n this._showCookiebar()\n }\n\n /**\n * Controla a construção do cookiebar com o uso de templates\n * @private\n */\n _buildCookiebar() {\n this.component.innerHTML = this.templates.setGlobalContentArea()\n }\n\n /**\n * Controla o comportamento dos itens interativos do cookiebar\n * @private\n */\n _setBehavior() {\n this._setAcceptButtonBehavior()\n this._setPoliticsButtonBehavior()\n this._setCloseButtonBehavior()\n this._setToggleGroupBehavior()\n this._setCheckboxBehavior()\n this._setSelectionBehavior()\n this._setWindowResizeBehavior()\n }\n\n /**\n * Trata o comportamento do botão de aceite do cookiebar\n * @private\n */\n _setAcceptButtonBehavior() {\n const acceptButton = this.component.querySelector(selectors.ACCEPT_BUTTON)\n\n // Trata o aceite do cookiebar\n acceptButton.addEventListener('click', () => {\n this._hideCookiebar()\n // this._resetCookiebar()\n document.body.style.overflowY = 'auto'\n this.callback(this._setOutputJSON())\n })\n\n // (Navegação por teclado) Mantém o foco no cookiebar quando ele está aberto\n acceptButton.addEventListener('keydown', (event) => {\n if (event.key === 'Tab') {\n if (!this.component.classList.contains('default')) {\n this.component.focus()\n }\n }\n })\n\n this._setActionButtonResponsive(acceptButton)\n }\n\n /**\n * Trata o comportamento do botão de políticas/definições de cookies\n * @private\n */\n _setPoliticsButtonBehavior() {\n this.component\n .querySelectorAll(selectors.POLITICS_BUTTON)\n .forEach((politicsButton) => {\n // Expande o cookiebar\n politicsButton.addEventListener('click', () => {\n politicsButton.classList.add('d-none')\n this.component.classList.remove('default')\n this.component.focus()\n document.body.style.overflowY = 'hidden'\n this._setOpenView()\n })\n\n this._setActionButtonResponsive(politicsButton)\n })\n }\n\n /**\n * Trata o comportamento do botão de fechar do cookiebar no modo open\n * @orivate\n */\n _setCloseButtonBehavior() {\n this.component\n .querySelectorAll(selectors.CLOSE_BUTTON)\n .forEach((closeButton) => {\n // encolhe o cookiebar (volta ao cookiebar default)\n closeButton.addEventListener('click', () => {\n this.component.classList.add('default')\n switch (this.mode) {\n case 'open':\n this._hideCookiebar()\n // this._resetCookiebar()\n default:\n }\n\n this.component\n .querySelector(selectors.POLITICS_BUTTON)\n .classList.remove('d-none')\n document.body.style.overflowY = 'auto'\n\n this._setDefaultView()\n })\n })\n }\n\n /**\n * Trata o redimensionamento da tela\n * @private\n */\n _setWindowResizeBehavior() {\n window.addEventListener('resize', () => {\n if (!this.component.classList.contains('default')) {\n this._setOpenView()\n }\n this.component\n .querySelectorAll(selectors.ACTION_BUTTONS)\n .forEach((button) => {\n this._setActionButtonResponsive(button)\n })\n })\n }\n\n /**\n * Trata a responsividade de um botão de ação baseado na largura da tela\n * @param {object} button - Elemento DOM que representa um botão de ação\n * @private\n */\n _setActionButtonResponsive(button) {\n if (window.matchMedia('(max-width: 574px)').matches) {\n button.classList.add('block')\n }\n if (window.matchMedia('(min-width: 575px)').matches) {\n button.classList.remove('block')\n }\n }\n\n /**\n * Trata a abertura/fechamento do grupo de cookies\n * @private\n */\n _setToggleGroupBehavior() {\n this.component\n .querySelectorAll(\n `${`${selectors.GROUP_BUTTON}, ${selectors.GROUP_NAME}, ${selectors.COOKIES_CHECKED}, ${selectors.GROUP_SIZE}`}`\n )\n .forEach((clickable) => {\n clickable.addEventListener(\n 'click',\n this._handleToggleGroupClick.bind(this)\n )\n })\n }\n\n /**\n * Handler que trata do evento de click no grupo\n * @param {object} event - Objeto Event\n * @private\n */\n _handleToggleGroupClick(event) {\n const element = this._getParentElementByClass(\n event.currentTarget,\n 'br-item'\n )\n if (element.classList.contains('open')) {\n element.classList.remove('open')\n element.nextElementSibling\n .querySelectorAll(selectors.BR_SWITCH)\n .forEach((check) => {\n check.setAttribute('tabindex', -1)\n })\n this._setGroupAttributes(element, 'Expandir')\n this._toggleIcon(element, 'fa-angle-up', 'fa-angle-down')\n } else {\n element.classList.add('open')\n element.nextElementSibling\n .querySelectorAll(selectors.BR_SWITCH)\n .forEach((check) => {\n check.setAttribute('tabindex', 0)\n })\n this._setGroupAttributes(element, 'Retrair')\n this._toggleIcon(element, 'fa-angle-down', 'fa-angle-up')\n this._scrollUp(element)\n }\n }\n\n /**\n * Trata do comportamento do grupo de checkboxes do cookiebar\n * @private\n */\n _setCheckboxBehavior() {\n this.component\n .querySelectorAll(selectors.PARENT_CHECKBOX)\n .forEach((trigger) => {\n this.checkgroupBehavior = new Checkgroup(trigger)\n this.checkgroupBehavior.setBehavior()\n })\n }\n\n /**\n * Trata da seleção dos checkboxes\n * @private\n */\n _setSelectionBehavior() {\n this.component.querySelectorAll(selectors.CHECKBOX).forEach((checkbox) => {\n checkbox.addEventListener('change', this._controlSelection.bind(this))\n })\n }\n\n /**\n * Handler para o evento change na seleção dos checkboxes\n * @param {object} event - Objeto eventDOM\n * @private\n */\n _controlSelection(event) {\n const segment = event.currentTarget.id.split('-')\n switch (segment[1]) {\n case 'all':\n this._setCheckAllBehavior(event.currentTarget)\n break\n case 'group':\n this._setCheckgroupBehavior(event.currentTarget, segment[2])\n break\n case 'cookie':\n this._setCheckCookieBehavior(\n event.currentTarget,\n segment[2],\n segment[3]\n )\n break\n default:\n }\n }\n\n /**\n * Trata a seleção do checkbox geral\n * @param {object} checkbox - Elemento DOM que represeta um checkbox geral\n * @private\n */\n _setCheckAllBehavior(checkbox) {\n this.data.selectAll = checkbox.checked\n this.data.allIndeterminated = checkbox.hasAttribute('indeterminate')\n ? true\n : false\n this._displayBroadMessage()\n }\n\n /**\n * Trata da seleção do checkbox de grupo\n * @param {object} checkbox - Elemento DOM que represta um checkbox de grupo\n * @param {number} groupIndex - Índice do grupo\n * @private\n */\n _setCheckgroupBehavior(checkbox, groupIndex) {\n this.data.cookieGroups[groupIndex].groupSelected = checkbox.checked\n this.data.cookieGroups[groupIndex].groupIndeterminated =\n checkbox.hasAttribute('indeterminate') ? true : false\n this.data.cookieGroups[groupIndex].cookieList.forEach(\n (cookieData, cookieIndex) => {\n if (!cookieData.cookieOptOut) {\n cookieData.cookieSelected = checkbox.checked\n this._displayCookieMessage(groupIndex, cookieIndex)\n }\n }\n )\n this._displayGroupMessage(groupIndex)\n }\n\n /**\n * Trata da seleção do checkbox de cookie\n * @param {object} checkbox - Elemento DOM que represeta um checkbox de cookie\n * @param {number} groupIndex - Índice do grupo\n * @param {number} cookieIndex - Índicd do cookie dentro do grupo\n * @private\n */\n _setCheckCookieBehavior(checkbox, groupIndex, cookieIndex) {\n this.data.cookieGroups[groupIndex].cookieList[cookieIndex].cookieSelected =\n checkbox.checked\n this._displayCookieMessage(groupIndex, cookieIndex)\n }\n\n /**\n * Controla a apresentação da mensagem geral\n * @private\n */\n _displayBroadMessage() {\n this.component\n .querySelectorAll(selectors.BROAD_)\n .forEach((broad) => {\n if (\n this.data.allMessage &&\n (!this.data.selectAll || this.data.allIndeterminated)\n ) {\n broad.classList.remove('d-none')\n } else {\n broad.classList.add('d-none')\n }\n })\n }\n\n /**\n * Controla a apresentação da mensagem de grupo\n * @param {number} groupIndex - Índice do grupo\n * @private\n */\n _displayGroupMessage(groupIndex) {\n const group = this.component.querySelectorAll(selectors.GROUP_INFO)[\n groupIndex\n ]\n group.querySelectorAll(selectors.GROUP_).forEach((group) => {\n if (\n this.data.cookieGroups[groupIndex].groupMessage &&\n (!this.data.cookieGroups[groupIndex].groupSelected ||\n this.data.cookieGroups[groupIndex].groupIndeterminated)\n ) {\n group.classList.remove('d-none')\n } else {\n group.classList.add('d-none')\n }\n })\n }\n\n /**\n * Controla a apresentação da mensagem de cookie\n * @param {number} groupIndex - Índice do grupo\n * @param {number} cookieIndex - Índice do cookie dentro do grupo\n */\n _displayCookieMessage(groupIndex, cookieIndex) {\n const group = this.component.querySelectorAll(selectors.GROUP_INFO)[\n groupIndex\n ]\n const cookie = group.nextElementSibling.querySelectorAll(\n selectors.COOKIE_CARD\n )[cookieIndex]\n cookie.querySelectorAll(selectors.COOKIE_).forEach((cookie) => {\n if (\n this.data.cookieGroups[groupIndex].cookieList[cookieIndex]\n .Message &&\n !this.data.cookieGroups[groupIndex].cookieList[cookieIndex]\n .cookieSelected\n ) {\n cookie.classList.remove('d-none')\n } else {\n cookie.classList.add('d-none')\n }\n })\n }\n\n /**\n * Busca um elemento DOM pai com uma determinada classe\n * @param {object} element - Elemento DOM\n * @param {string} className - Nome de uma classe para busca\n * @returns {object} - Elemento DOM representando que contém uma determinada classe\n * @private\n */\n _getParentElementByClass(element, className) {\n while (!element.classList.contains(className)) {\n element = element.parentNode\n }\n return element\n }\n\n /**\n * Troca a classe do icone\n * @param {object} element - Elemento DOM referente ao icone\n * @param {string} oldIcon - Classe do icone que será retirada\n * @param {string} newIcon - Classe do icone que será incluido\n * @private\n */\n _toggleIcon(element, oldIcon, newIcon) {\n element.querySelectorAll(selectors.BUTTON_ICON).forEach((icon) => {\n icon.classList.remove(oldIcon)\n icon.classList.add(newIcon)\n })\n }\n\n /**\n * Trata a label do atributo title e aria-label\n * @param {object} element - Elemento DOM referente ao grupo\n * @param {string} label - Label para o title e aria-label\n * @private\n */\n _setGroupAttributes(element, label) {\n element\n .querySelectorAll(\n `${`${selectors.GROUP_BUTTON}, ${selectors.GROUP_NAME}, ${selectors.COOKIES_CHECKED}, ${selectors.GROUP_SIZE}`}`\n )\n .forEach((item) => {\n item.setAttribute('title', label)\n item.setAttribute('aria-label', label)\n })\n }\n\n /**\n * Trata a rolagem da tela do grupo de cookies aberto\n * @param {object} element - Elemento DOM que representa a grupo de cookies\n * @private\n */\n _scrollUp(element) {\n setTimeout(() => {\n this.component.querySelectorAll(selectors.WRAPPER).forEach(() => {\n setTimeout(() => {\n element.scrollIntoView({\n behavior: 'smooth',\n block: 'start',\n })\n }, 150)\n }, 5000)\n })\n }\n\n /**\n * Mostra o cookiebar na tela com foco e no modo escolhido\n * @private\n */\n _showCookiebar() {\n this.component.classList.remove('d-none')\n this.component.focus()\n switch (this.mode) {\n case 'open':\n this.component.classList.remove('default')\n this.component\n .querySelectorAll(selectors.POLITICS_BUTTON)\n .forEach((button) => {\n button.classList.add('d-none')\n })\n document.body.style.overflowY = 'hidden'\n this._setOpenView()\n default:\n }\n }\n\n /**\n * Oculta o cookiebar na tela\n * @private\n */\n _hideCookiebar() {\n this.component.classList.add('d-none')\n }\n\n /**\n * Configura a altura da parte rolável do cookiebar de acordo com a altura da janela\n * @private\n */\n _setOpenView() {\n const wrapper = this.component.querySelector(selectors.WRAPPER)\n const containerFluid = this.component.querySelector(\n selectors.CONTAINER_FLUID\n )\n const modalFooter = this.component.querySelector(selectors.MODAL_FOOTER)\n const padding = window\n .getComputedStyle(containerFluid, null)\n .getPropertyValue('padding-top')\n .match(/\\d+/)\n const height = `${\n window.innerHeight - padding * 2 - modalFooter.offsetHeight\n }px`\n wrapper.style.height = height\n }\n\n /**\n * Configura a altura do cookiebar no modo default\n * @private\n */\n _setDefaultView() {\n this.component.querySelector(selectors.WRAPPER).removeAttribute('style')\n }\n\n /**\n * Cria o JSON de saída do cookiebar\n * @returns {string} - JSON de saída do cookiebar\n * @private\n */\n _setOutputJSON() {\n this.output = {}\n this.output.selectAll = this.data.allIndeterminated\n ? 'indeterminated'\n : this.data.selectAll\n this.output.cookieGroups = []\n this.data.cookieGroups.forEach((groupData) => {\n const cookies = []\n groupData.cookieList.forEach((cookieData) => {\n cookies.push({\n cookieId: cookieData.cookieId,\n cookieSelected: cookieData.cookieSelected,\n })\n })\n this.output.cookieGroups.push({\n groupId: groupData.groupId,\n groupSelected: groupData.groupIndeterminated\n ? 'indeterminated'\n : groupData.groupSelected,\n cookieList: cookies,\n })\n })\n return JSON.stringify(this.output)\n }\n\n static createCookiebar(json, callback) {\n const brCookiebar = document.createElement('div')\n brCookiebar.classList.add('br-cookiebar', 'default', 'd-none')\n brCookiebar.setAttribute('tabindex', 1)\n\n document.body.appendChild(brCookiebar)\n\n const params = {\n name: 'br-cookiebar',\n component: brCookiebar,\n lang: 'pt-br',\n mode: 'default',\n json,\n callback,\n }\n\n return new BRCookiebar(params)\n }\n}\n","export const HOOKS = [\n \"onChange\",\n \"onClose\",\n \"onDayCreate\",\n \"onDestroy\",\n \"onKeyDown\",\n \"onMonthChange\",\n \"onOpen\",\n \"onParseConfig\",\n \"onReady\",\n \"onValueUpdate\",\n \"onYearChange\",\n \"onPreCalendarPosition\",\n];\nexport const defaults = {\n _disable: [],\n allowInput: false,\n allowInvalidPreload: false,\n altFormat: \"F j, Y\",\n altInput: false,\n altInputClass: \"form-control input\",\n animate: typeof window === \"object\" &&\n window.navigator.userAgent.indexOf(\"MSIE\") === -1,\n ariaDateFormat: \"F j, Y\",\n autoFillDefaultTime: true,\n clickOpens: true,\n closeOnSelect: true,\n conjunction: \", \",\n dateFormat: \"Y-m-d\",\n defaultHour: 12,\n defaultMinute: 0,\n defaultSeconds: 0,\n disable: [],\n disableMobile: false,\n enableSeconds: false,\n enableTime: false,\n errorHandler: (err) => typeof console !== \"undefined\" && console.warn(err),\n getWeek: (givenDate) => {\n const date = new Date(givenDate.getTime());\n date.setHours(0, 0, 0, 0);\n date.setDate(date.getDate() + 3 - ((date.getDay() + 6) % 7));\n var week1 = new Date(date.getFullYear(), 0, 4);\n return (1 +\n Math.round(((date.getTime() - week1.getTime()) / 86400000 -\n 3 +\n ((week1.getDay() + 6) % 7)) /\n 7));\n },\n hourIncrement: 1,\n ignoredFocusElements: [],\n inline: false,\n locale: \"default\",\n minuteIncrement: 5,\n mode: \"single\",\n monthSelectorType: \"dropdown\",\n nextArrow: \"\",\n noCalendar: false,\n now: new Date(),\n onChange: [],\n onClose: [],\n onDayCreate: [],\n onDestroy: [],\n onKeyDown: [],\n onMonthChange: [],\n onOpen: [],\n onParseConfig: [],\n onReady: [],\n onValueUpdate: [],\n onYearChange: [],\n onPreCalendarPosition: [],\n plugins: [],\n position: \"auto\",\n positionElement: undefined,\n prevArrow: \"\",\n shorthandCurrentMonth: false,\n showMonths: 1,\n static: false,\n time_24hr: false,\n weekNumbers: false,\n wrap: false,\n};\n","export const english = {\n weekdays: {\n shorthand: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n longhand: [\n \"Sunday\",\n \"Monday\",\n \"Tuesday\",\n \"Wednesday\",\n \"Thursday\",\n \"Friday\",\n \"Saturday\",\n ],\n },\n months: {\n shorthand: [\n \"Jan\",\n \"Feb\",\n \"Mar\",\n \"Apr\",\n \"May\",\n \"Jun\",\n \"Jul\",\n \"Aug\",\n \"Sep\",\n \"Oct\",\n \"Nov\",\n \"Dec\",\n ],\n longhand: [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\",\n ],\n },\n daysInMonth: [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31],\n firstDayOfWeek: 0,\n ordinal: (nth) => {\n const s = nth % 100;\n if (s > 3 && s < 21)\n return \"th\";\n switch (s % 10) {\n case 1:\n return \"st\";\n case 2:\n return \"nd\";\n case 3:\n return \"rd\";\n default:\n return \"th\";\n }\n },\n rangeSeparator: \" to \",\n weekAbbreviation: \"Wk\",\n scrollTitle: \"Scroll to increment\",\n toggleTitle: \"Click to toggle\",\n amPM: [\"AM\", \"PM\"],\n yearAriaLabel: \"Year\",\n monthAriaLabel: \"Month\",\n hourAriaLabel: \"Hour\",\n minuteAriaLabel: \"Minute\",\n time_24hr: false,\n};\nexport default english;\n","export const pad = (number, length = 2) => `000${number}`.slice(length * -1);\nexport const int = (bool) => (bool === true ? 1 : 0);\nexport function debounce(fn, wait) {\n let t;\n return function () {\n clearTimeout(t);\n t = setTimeout(() => fn.apply(this, arguments), wait);\n };\n}\nexport const arrayify = (obj) => obj instanceof Array ? obj : [obj];\n","export function toggleClass(elem, className, bool) {\n if (bool === true)\n return elem.classList.add(className);\n elem.classList.remove(className);\n}\nexport function createElement(tag, className, content) {\n const e = window.document.createElement(tag);\n className = className || \"\";\n content = content || \"\";\n e.className = className;\n if (content !== undefined)\n e.textContent = content;\n return e;\n}\nexport function clearNode(node) {\n while (node.firstChild)\n node.removeChild(node.firstChild);\n}\nexport function findParent(node, condition) {\n if (condition(node))\n return node;\n else if (node.parentNode)\n return findParent(node.parentNode, condition);\n return undefined;\n}\nexport function createNumberInput(inputClassName, opts) {\n const wrapper = createElement(\"div\", \"numInputWrapper\"), numInput = createElement(\"input\", \"numInput \" + inputClassName), arrowUp = createElement(\"span\", \"arrowUp\"), arrowDown = createElement(\"span\", \"arrowDown\");\n if (navigator.userAgent.indexOf(\"MSIE 9.0\") === -1) {\n numInput.type = \"number\";\n }\n else {\n numInput.type = \"text\";\n numInput.pattern = \"\\\\d*\";\n }\n if (opts !== undefined)\n for (const key in opts)\n numInput.setAttribute(key, opts[key]);\n wrapper.appendChild(numInput);\n wrapper.appendChild(arrowUp);\n wrapper.appendChild(arrowDown);\n return wrapper;\n}\nexport function getEventTarget(event) {\n try {\n if (typeof event.composedPath === \"function\") {\n const path = event.composedPath();\n return path[0];\n }\n return event.target;\n }\n catch (error) {\n return event.target;\n }\n}\n","import { int, pad } from \"../utils\";\nconst doNothing = () => undefined;\nexport const monthToStr = (monthNumber, shorthand, locale) => locale.months[shorthand ? \"shorthand\" : \"longhand\"][monthNumber];\nexport const revFormat = {\n D: doNothing,\n F: function (dateObj, monthName, locale) {\n dateObj.setMonth(locale.months.longhand.indexOf(monthName));\n },\n G: (dateObj, hour) => {\n dateObj.setHours(parseFloat(hour));\n },\n H: (dateObj, hour) => {\n dateObj.setHours(parseFloat(hour));\n },\n J: (dateObj, day) => {\n dateObj.setDate(parseFloat(day));\n },\n K: (dateObj, amPM, locale) => {\n dateObj.setHours((dateObj.getHours() % 12) +\n 12 * int(new RegExp(locale.amPM[1], \"i\").test(amPM)));\n },\n M: function (dateObj, shortMonth, locale) {\n dateObj.setMonth(locale.months.shorthand.indexOf(shortMonth));\n },\n S: (dateObj, seconds) => {\n dateObj.setSeconds(parseFloat(seconds));\n },\n U: (_, unixSeconds) => new Date(parseFloat(unixSeconds) * 1000),\n W: function (dateObj, weekNum, locale) {\n const weekNumber = parseInt(weekNum);\n const date = new Date(dateObj.getFullYear(), 0, 2 + (weekNumber - 1) * 7, 0, 0, 0, 0);\n date.setDate(date.getDate() - date.getDay() + locale.firstDayOfWeek);\n return date;\n },\n Y: (dateObj, year) => {\n dateObj.setFullYear(parseFloat(year));\n },\n Z: (_, ISODate) => new Date(ISODate),\n d: (dateObj, day) => {\n dateObj.setDate(parseFloat(day));\n },\n h: (dateObj, hour) => {\n dateObj.setHours(parseFloat(hour));\n },\n i: (dateObj, minutes) => {\n dateObj.setMinutes(parseFloat(minutes));\n },\n j: (dateObj, day) => {\n dateObj.setDate(parseFloat(day));\n },\n l: doNothing,\n m: (dateObj, month) => {\n dateObj.setMonth(parseFloat(month) - 1);\n },\n n: (dateObj, month) => {\n dateObj.setMonth(parseFloat(month) - 1);\n },\n s: (dateObj, seconds) => {\n dateObj.setSeconds(parseFloat(seconds));\n },\n u: (_, unixMillSeconds) => new Date(parseFloat(unixMillSeconds)),\n w: doNothing,\n y: (dateObj, year) => {\n dateObj.setFullYear(2000 + parseFloat(year));\n },\n};\nexport const tokenRegex = {\n D: \"(\\\\w+)\",\n F: \"(\\\\w+)\",\n G: \"(\\\\d\\\\d|\\\\d)\",\n H: \"(\\\\d\\\\d|\\\\d)\",\n J: \"(\\\\d\\\\d|\\\\d)\\\\w+\",\n K: \"\",\n M: \"(\\\\w+)\",\n S: \"(\\\\d\\\\d|\\\\d)\",\n U: \"(.+)\",\n W: \"(\\\\d\\\\d|\\\\d)\",\n Y: \"(\\\\d{4})\",\n Z: \"(.+)\",\n d: \"(\\\\d\\\\d|\\\\d)\",\n h: \"(\\\\d\\\\d|\\\\d)\",\n i: \"(\\\\d\\\\d|\\\\d)\",\n j: \"(\\\\d\\\\d|\\\\d)\",\n l: \"(\\\\w+)\",\n m: \"(\\\\d\\\\d|\\\\d)\",\n n: \"(\\\\d\\\\d|\\\\d)\",\n s: \"(\\\\d\\\\d|\\\\d)\",\n u: \"(.+)\",\n w: \"(\\\\d\\\\d|\\\\d)\",\n y: \"(\\\\d{2})\",\n};\nexport const formats = {\n Z: (date) => date.toISOString(),\n D: function (date, locale, options) {\n return locale.weekdays.shorthand[formats.w(date, locale, options)];\n },\n F: function (date, locale, options) {\n return monthToStr(formats.n(date, locale, options) - 1, false, locale);\n },\n G: function (date, locale, options) {\n return pad(formats.h(date, locale, options));\n },\n H: (date) => pad(date.getHours()),\n J: function (date, locale) {\n return locale.ordinal !== undefined\n ? date.getDate() + locale.ordinal(date.getDate())\n : date.getDate();\n },\n K: (date, locale) => locale.amPM[int(date.getHours() > 11)],\n M: function (date, locale) {\n return monthToStr(date.getMonth(), true, locale);\n },\n S: (date) => pad(date.getSeconds()),\n U: (date) => date.getTime() / 1000,\n W: function (date, _, options) {\n return options.getWeek(date);\n },\n Y: (date) => pad(date.getFullYear(), 4),\n d: (date) => pad(date.getDate()),\n h: (date) => (date.getHours() % 12 ? date.getHours() % 12 : 12),\n i: (date) => pad(date.getMinutes()),\n j: (date) => date.getDate(),\n l: function (date, locale) {\n return locale.weekdays.longhand[date.getDay()];\n },\n m: (date) => pad(date.getMonth() + 1),\n n: (date) => date.getMonth() + 1,\n s: (date) => date.getSeconds(),\n u: (date) => date.getTime(),\n w: (date) => date.getDay(),\n y: (date) => String(date.getFullYear()).substring(2),\n};\n","import { tokenRegex, revFormat, formats, } from \"./formatting\";\nimport { defaults } from \"../types/options\";\nimport { english } from \"../l10n/default\";\nexport const createDateFormatter = ({ config = defaults, l10n = english, isMobile = false, }) => (dateObj, frmt, overrideLocale) => {\n const locale = overrideLocale || l10n;\n if (config.formatDate !== undefined && !isMobile) {\n return config.formatDate(dateObj, frmt, locale);\n }\n return frmt\n .split(\"\")\n .map((c, i, arr) => formats[c] && arr[i - 1] !== \"\\\\\"\n ? formats[c](dateObj, locale, config)\n : c !== \"\\\\\"\n ? c\n : \"\")\n .join(\"\");\n};\nexport const createDateParser = ({ config = defaults, l10n = english }) => (date, givenFormat, timeless, customLocale) => {\n if (date !== 0 && !date)\n return undefined;\n const locale = customLocale || l10n;\n let parsedDate;\n const dateOrig = date;\n if (date instanceof Date)\n parsedDate = new Date(date.getTime());\n else if (typeof date !== \"string\" &&\n date.toFixed !== undefined)\n parsedDate = new Date(date);\n else if (typeof date === \"string\") {\n const format = givenFormat || (config || defaults).dateFormat;\n const datestr = String(date).trim();\n if (datestr === \"today\") {\n parsedDate = new Date();\n timeless = true;\n }\n else if (/Z$/.test(datestr) ||\n /GMT$/.test(datestr))\n parsedDate = new Date(date);\n else if (config && config.parseDate)\n parsedDate = config.parseDate(date, format);\n else {\n parsedDate =\n !config || !config.noCalendar\n ? new Date(new Date().getFullYear(), 0, 1, 0, 0, 0, 0)\n : new Date(new Date().setHours(0, 0, 0, 0));\n let matched, ops = [];\n for (let i = 0, matchIndex = 0, regexStr = \"\"; i < format.length; i++) {\n const token = format[i];\n const isBackSlash = token === \"\\\\\";\n const escaped = format[i - 1] === \"\\\\\" || isBackSlash;\n if (tokenRegex[token] && !escaped) {\n regexStr += tokenRegex[token];\n const match = new RegExp(regexStr).exec(date);\n if (match && (matched = true)) {\n ops[token !== \"Y\" ? \"push\" : \"unshift\"]({\n fn: revFormat[token],\n val: match[++matchIndex],\n });\n }\n }\n else if (!isBackSlash)\n regexStr += \".\";\n ops.forEach(({ fn, val }) => (parsedDate = fn(parsedDate, val, locale) || parsedDate));\n }\n parsedDate = matched ? parsedDate : undefined;\n }\n }\n if (!(parsedDate instanceof Date && !isNaN(parsedDate.getTime()))) {\n config.errorHandler(new Error(`Invalid date provided: ${dateOrig}`));\n return undefined;\n }\n if (timeless === true)\n parsedDate.setHours(0, 0, 0, 0);\n return parsedDate;\n};\nexport function compareDates(date1, date2, timeless = true) {\n if (timeless !== false) {\n return (new Date(date1.getTime()).setHours(0, 0, 0, 0) -\n new Date(date2.getTime()).setHours(0, 0, 0, 0));\n }\n return date1.getTime() - date2.getTime();\n}\nexport function compareTimes(date1, date2) {\n return (3600 * (date1.getHours() - date2.getHours()) +\n 60 * (date1.getMinutes() - date2.getMinutes()) +\n date1.getSeconds() -\n date2.getSeconds());\n}\nexport const isBetween = (ts, ts1, ts2) => {\n return ts > Math.min(ts1, ts2) && ts < Math.max(ts1, ts2);\n};\nexport const duration = {\n DAY: 86400000,\n};\nexport function getDefaultHours(config) {\n let hours = config.defaultHour;\n let minutes = config.defaultMinute;\n let seconds = config.defaultSeconds;\n if (config.minDate !== undefined) {\n const minHour = config.minDate.getHours();\n const minMinutes = config.minDate.getMinutes();\n const minSeconds = config.minDate.getSeconds();\n if (hours < minHour) {\n hours = minHour;\n }\n if (hours === minHour && minutes < minMinutes) {\n minutes = minMinutes;\n }\n if (hours === minHour && minutes === minMinutes && seconds < minSeconds)\n seconds = config.minDate.getSeconds();\n }\n if (config.maxDate !== undefined) {\n const maxHr = config.maxDate.getHours();\n const maxMinutes = config.maxDate.getMinutes();\n hours = Math.min(hours, maxHr);\n if (hours === maxHr)\n minutes = Math.min(maxMinutes, minutes);\n if (hours === maxHr && minutes === maxMinutes)\n seconds = config.maxDate.getSeconds();\n }\n return { hours, minutes, seconds };\n}\n","import { defaults as defaultOptions, HOOKS, } from \"./types/options\";\nimport English from \"./l10n/default\";\nimport { arrayify, debounce, int, pad } from \"./utils\";\nimport { clearNode, createElement, createNumberInput, findParent, toggleClass, getEventTarget, } from \"./utils/dom\";\nimport { compareDates, createDateParser, createDateFormatter, duration, isBetween, getDefaultHours, } from \"./utils/dates\";\nimport { tokenRegex, monthToStr } from \"./utils/formatting\";\nimport \"./utils/polyfills\";\nconst DEBOUNCED_CHANGE_MS = 300;\nfunction FlatpickrInstance(element, instanceConfig) {\n const self = {\n config: Object.assign(Object.assign({}, defaultOptions), flatpickr.defaultConfig),\n l10n: English,\n };\n self.parseDate = createDateParser({ config: self.config, l10n: self.l10n });\n self._handlers = [];\n self.pluginElements = [];\n self.loadedPlugins = [];\n self._bind = bind;\n self._setHoursFromDate = setHoursFromDate;\n self._positionCalendar = positionCalendar;\n self.changeMonth = changeMonth;\n self.changeYear = changeYear;\n self.clear = clear;\n self.close = close;\n self._createElement = createElement;\n self.destroy = destroy;\n self.isEnabled = isEnabled;\n self.jumpToDate = jumpToDate;\n self.open = open;\n self.redraw = redraw;\n self.set = set;\n self.setDate = setDate;\n self.toggle = toggle;\n function setupHelperFunctions() {\n self.utils = {\n getDaysInMonth(month = self.currentMonth, yr = self.currentYear) {\n if (month === 1 && ((yr % 4 === 0 && yr % 100 !== 0) || yr % 400 === 0))\n return 29;\n return self.l10n.daysInMonth[month];\n },\n };\n }\n function init() {\n self.element = self.input = element;\n self.isOpen = false;\n parseConfig();\n setupLocale();\n setupInputs();\n setupDates();\n setupHelperFunctions();\n if (!self.isMobile)\n build();\n bindEvents();\n if (self.selectedDates.length || self.config.noCalendar) {\n if (self.config.enableTime) {\n setHoursFromDate(self.config.noCalendar ? self.latestSelectedDateObj : undefined);\n }\n updateValue(false);\n }\n setCalendarWidth();\n const isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\n if (!self.isMobile && isSafari) {\n positionCalendar();\n }\n triggerEvent(\"onReady\");\n }\n function bindToInstance(fn) {\n return fn.bind(self);\n }\n function setCalendarWidth() {\n const config = self.config;\n if (config.weekNumbers === false && config.showMonths === 1) {\n return;\n }\n else if (config.noCalendar !== true) {\n window.requestAnimationFrame(function () {\n if (self.calendarContainer !== undefined) {\n self.calendarContainer.style.visibility = \"hidden\";\n self.calendarContainer.style.display = \"block\";\n }\n if (self.daysContainer !== undefined) {\n const daysWidth = (self.days.offsetWidth + 1) * config.showMonths;\n self.daysContainer.style.width = daysWidth + \"px\";\n self.calendarContainer.style.width =\n daysWidth +\n (self.weekWrapper !== undefined\n ? self.weekWrapper.offsetWidth\n : 0) +\n \"px\";\n self.calendarContainer.style.removeProperty(\"visibility\");\n self.calendarContainer.style.removeProperty(\"display\");\n }\n });\n }\n }\n function updateTime(e) {\n if (self.selectedDates.length === 0) {\n const defaultDate = self.config.minDate === undefined ||\n compareDates(new Date(), self.config.minDate) >= 0\n ? new Date()\n : new Date(self.config.minDate.getTime());\n const defaults = getDefaultHours(self.config);\n defaultDate.setHours(defaults.hours, defaults.minutes, defaults.seconds, defaultDate.getMilliseconds());\n self.selectedDates = [defaultDate];\n self.latestSelectedDateObj = defaultDate;\n }\n if (e !== undefined && e.type !== \"blur\") {\n timeWrapper(e);\n }\n const prevValue = self._input.value;\n setHoursFromInputs();\n updateValue();\n if (self._input.value !== prevValue) {\n self._debouncedChange();\n }\n }\n function ampm2military(hour, amPM) {\n return (hour % 12) + 12 * int(amPM === self.l10n.amPM[1]);\n }\n function military2ampm(hour) {\n switch (hour % 24) {\n case 0:\n case 12:\n return 12;\n default:\n return hour % 12;\n }\n }\n function setHoursFromInputs() {\n if (self.hourElement === undefined || self.minuteElement === undefined)\n return;\n let hours = (parseInt(self.hourElement.value.slice(-2), 10) || 0) % 24, minutes = (parseInt(self.minuteElement.value, 10) || 0) % 60, seconds = self.secondElement !== undefined\n ? (parseInt(self.secondElement.value, 10) || 0) % 60\n : 0;\n if (self.amPM !== undefined) {\n hours = ampm2military(hours, self.amPM.textContent);\n }\n const limitMinHours = self.config.minTime !== undefined ||\n (self.config.minDate &&\n self.minDateHasTime &&\n self.latestSelectedDateObj &&\n compareDates(self.latestSelectedDateObj, self.config.minDate, true) ===\n 0);\n const limitMaxHours = self.config.maxTime !== undefined ||\n (self.config.maxDate &&\n self.maxDateHasTime &&\n self.latestSelectedDateObj &&\n compareDates(self.latestSelectedDateObj, self.config.maxDate, true) ===\n 0);\n if (limitMaxHours) {\n const maxTime = self.config.maxTime !== undefined\n ? self.config.maxTime\n : self.config.maxDate;\n hours = Math.min(hours, maxTime.getHours());\n if (hours === maxTime.getHours())\n minutes = Math.min(minutes, maxTime.getMinutes());\n if (minutes === maxTime.getMinutes())\n seconds = Math.min(seconds, maxTime.getSeconds());\n }\n if (limitMinHours) {\n const minTime = self.config.minTime !== undefined\n ? self.config.minTime\n : self.config.minDate;\n hours = Math.max(hours, minTime.getHours());\n if (hours === minTime.getHours() && minutes < minTime.getMinutes())\n minutes = minTime.getMinutes();\n if (minutes === minTime.getMinutes())\n seconds = Math.max(seconds, minTime.getSeconds());\n }\n setHours(hours, minutes, seconds);\n }\n function setHoursFromDate(dateObj) {\n const date = dateObj || self.latestSelectedDateObj;\n if (date) {\n setHours(date.getHours(), date.getMinutes(), date.getSeconds());\n }\n }\n function setHours(hours, minutes, seconds) {\n if (self.latestSelectedDateObj !== undefined) {\n self.latestSelectedDateObj.setHours(hours % 24, minutes, seconds || 0, 0);\n }\n if (!self.hourElement || !self.minuteElement || self.isMobile)\n return;\n self.hourElement.value = pad(!self.config.time_24hr\n ? ((12 + hours) % 12) + 12 * int(hours % 12 === 0)\n : hours);\n self.minuteElement.value = pad(minutes);\n if (self.amPM !== undefined)\n self.amPM.textContent = self.l10n.amPM[int(hours >= 12)];\n if (self.secondElement !== undefined)\n self.secondElement.value = pad(seconds);\n }\n function onYearInput(event) {\n const eventTarget = getEventTarget(event);\n const year = parseInt(eventTarget.value) + (event.delta || 0);\n if (year / 1000 > 1 ||\n (event.key === \"Enter\" && !/[^\\d]/.test(year.toString()))) {\n changeYear(year);\n }\n }\n function bind(element, event, handler, options) {\n if (event instanceof Array)\n return event.forEach((ev) => bind(element, ev, handler, options));\n if (element instanceof Array)\n return element.forEach((el) => bind(el, event, handler, options));\n element.addEventListener(event, handler, options);\n self._handlers.push({\n remove: () => element.removeEventListener(event, handler),\n });\n }\n function triggerChange() {\n triggerEvent(\"onChange\");\n }\n function bindEvents() {\n if (self.config.wrap) {\n [\"open\", \"close\", \"toggle\", \"clear\"].forEach((evt) => {\n Array.prototype.forEach.call(self.element.querySelectorAll(`[data-${evt}]`), (el) => bind(el, \"click\", self[evt]));\n });\n }\n if (self.isMobile) {\n setupMobile();\n return;\n }\n const debouncedResize = debounce(onResize, 50);\n self._debouncedChange = debounce(triggerChange, DEBOUNCED_CHANGE_MS);\n if (self.daysContainer && !/iPhone|iPad|iPod/i.test(navigator.userAgent))\n bind(self.daysContainer, \"mouseover\", (e) => {\n if (self.config.mode === \"range\")\n onMouseOver(getEventTarget(e));\n });\n bind(window.document.body, \"keydown\", onKeyDown);\n if (!self.config.inline && !self.config.static)\n bind(window, \"resize\", debouncedResize);\n if (window.ontouchstart !== undefined)\n bind(window.document, \"touchstart\", documentClick);\n else\n bind(window.document, \"mousedown\", documentClick);\n bind(window.document, \"focus\", documentClick, { capture: true });\n if (self.config.clickOpens === true) {\n bind(self._input, \"focus\", self.open);\n bind(self._input, \"click\", self.open);\n }\n if (self.daysContainer !== undefined) {\n bind(self.monthNav, \"click\", onMonthNavClick);\n bind(self.monthNav, [\"keyup\", \"increment\"], onYearInput);\n bind(self.daysContainer, \"click\", selectDate);\n }\n if (self.timeContainer !== undefined &&\n self.minuteElement !== undefined &&\n self.hourElement !== undefined) {\n const selText = (e) => getEventTarget(e).select();\n bind(self.timeContainer, [\"increment\"], updateTime);\n bind(self.timeContainer, \"blur\", updateTime, { capture: true });\n bind(self.timeContainer, \"click\", timeIncrement);\n bind([self.hourElement, self.minuteElement], [\"focus\", \"click\"], selText);\n if (self.secondElement !== undefined)\n bind(self.secondElement, \"focus\", () => self.secondElement && self.secondElement.select());\n if (self.amPM !== undefined) {\n bind(self.amPM, \"click\", (e) => {\n updateTime(e);\n triggerChange();\n });\n }\n }\n if (self.config.allowInput) {\n bind(self._input, \"blur\", onBlur);\n }\n }\n function jumpToDate(jumpDate, triggerChange) {\n const jumpTo = jumpDate !== undefined\n ? self.parseDate(jumpDate)\n : self.latestSelectedDateObj ||\n (self.config.minDate && self.config.minDate > self.now\n ? self.config.minDate\n : self.config.maxDate && self.config.maxDate < self.now\n ? self.config.maxDate\n : self.now);\n const oldYear = self.currentYear;\n const oldMonth = self.currentMonth;\n try {\n if (jumpTo !== undefined) {\n self.currentYear = jumpTo.getFullYear();\n self.currentMonth = jumpTo.getMonth();\n }\n }\n catch (e) {\n e.message = \"Invalid date supplied: \" + jumpTo;\n self.config.errorHandler(e);\n }\n if (triggerChange && self.currentYear !== oldYear) {\n triggerEvent(\"onYearChange\");\n buildMonthSwitch();\n }\n if (triggerChange &&\n (self.currentYear !== oldYear || self.currentMonth !== oldMonth)) {\n triggerEvent(\"onMonthChange\");\n }\n self.redraw();\n }\n function timeIncrement(e) {\n const eventTarget = getEventTarget(e);\n if (~eventTarget.className.indexOf(\"arrow\"))\n incrementNumInput(e, eventTarget.classList.contains(\"arrowUp\") ? 1 : -1);\n }\n function incrementNumInput(e, delta, inputElem) {\n const target = e && getEventTarget(e);\n const input = inputElem ||\n (target && target.parentNode && target.parentNode.firstChild);\n const event = createEvent(\"increment\");\n event.delta = delta;\n input && input.dispatchEvent(event);\n }\n function build() {\n const fragment = window.document.createDocumentFragment();\n self.calendarContainer = createElement(\"div\", \"flatpickr-calendar\");\n self.calendarContainer.tabIndex = -1;\n if (!self.config.noCalendar) {\n fragment.appendChild(buildMonthNav());\n self.innerContainer = createElement(\"div\", \"flatpickr-innerContainer\");\n if (self.config.weekNumbers) {\n const { weekWrapper, weekNumbers } = buildWeeks();\n self.innerContainer.appendChild(weekWrapper);\n self.weekNumbers = weekNumbers;\n self.weekWrapper = weekWrapper;\n }\n self.rContainer = createElement(\"div\", \"flatpickr-rContainer\");\n self.rContainer.appendChild(buildWeekdays());\n if (!self.daysContainer) {\n self.daysContainer = createElement(\"div\", \"flatpickr-days\");\n self.daysContainer.tabIndex = -1;\n }\n buildDays();\n self.rContainer.appendChild(self.daysContainer);\n self.innerContainer.appendChild(self.rContainer);\n fragment.appendChild(self.innerContainer);\n }\n if (self.config.enableTime) {\n fragment.appendChild(buildTime());\n }\n toggleClass(self.calendarContainer, \"rangeMode\", self.config.mode === \"range\");\n toggleClass(self.calendarContainer, \"animate\", self.config.animate === true);\n toggleClass(self.calendarContainer, \"multiMonth\", self.config.showMonths > 1);\n self.calendarContainer.appendChild(fragment);\n const customAppend = self.config.appendTo !== undefined &&\n self.config.appendTo.nodeType !== undefined;\n if (self.config.inline || self.config.static) {\n self.calendarContainer.classList.add(self.config.inline ? \"inline\" : \"static\");\n if (self.config.inline) {\n if (!customAppend && self.element.parentNode)\n self.element.parentNode.insertBefore(self.calendarContainer, self._input.nextSibling);\n else if (self.config.appendTo !== undefined)\n self.config.appendTo.appendChild(self.calendarContainer);\n }\n if (self.config.static) {\n const wrapper = createElement(\"div\", \"flatpickr-wrapper\");\n if (self.element.parentNode)\n self.element.parentNode.insertBefore(wrapper, self.element);\n wrapper.appendChild(self.element);\n if (self.altInput)\n wrapper.appendChild(self.altInput);\n wrapper.appendChild(self.calendarContainer);\n }\n }\n if (!self.config.static && !self.config.inline)\n (self.config.appendTo !== undefined\n ? self.config.appendTo\n : window.document.body).appendChild(self.calendarContainer);\n }\n function createDay(className, date, dayNumber, i) {\n const dateIsEnabled = isEnabled(date, true), dayElement = createElement(\"span\", \"flatpickr-day \" + className, date.getDate().toString());\n dayElement.dateObj = date;\n dayElement.$i = i;\n dayElement.setAttribute(\"aria-label\", self.formatDate(date, self.config.ariaDateFormat));\n if (className.indexOf(\"hidden\") === -1 &&\n compareDates(date, self.now) === 0) {\n self.todayDateElem = dayElement;\n dayElement.classList.add(\"today\");\n dayElement.setAttribute(\"aria-current\", \"date\");\n }\n if (dateIsEnabled) {\n dayElement.tabIndex = -1;\n if (isDateSelected(date)) {\n dayElement.classList.add(\"selected\");\n self.selectedDateElem = dayElement;\n if (self.config.mode === \"range\") {\n toggleClass(dayElement, \"startRange\", self.selectedDates[0] &&\n compareDates(date, self.selectedDates[0], true) === 0);\n toggleClass(dayElement, \"endRange\", self.selectedDates[1] &&\n compareDates(date, self.selectedDates[1], true) === 0);\n if (className === \"nextMonthDay\")\n dayElement.classList.add(\"inRange\");\n }\n }\n }\n else {\n dayElement.classList.add(\"flatpickr-disabled\");\n }\n if (self.config.mode === \"range\") {\n if (isDateInRange(date) && !isDateSelected(date))\n dayElement.classList.add(\"inRange\");\n }\n if (self.weekNumbers &&\n self.config.showMonths === 1 &&\n className !== \"prevMonthDay\" &&\n dayNumber % 7 === 1) {\n self.weekNumbers.insertAdjacentHTML(\"beforeend\", \"\" + self.config.getWeek(date) + \"\");\n }\n triggerEvent(\"onDayCreate\", dayElement);\n return dayElement;\n }\n function focusOnDayElem(targetNode) {\n targetNode.focus();\n if (self.config.mode === \"range\")\n onMouseOver(targetNode);\n }\n function getFirstAvailableDay(delta) {\n const startMonth = delta > 0 ? 0 : self.config.showMonths - 1;\n const endMonth = delta > 0 ? self.config.showMonths : -1;\n for (let m = startMonth; m != endMonth; m += delta) {\n const month = self.daysContainer.children[m];\n const startIndex = delta > 0 ? 0 : month.children.length - 1;\n const endIndex = delta > 0 ? month.children.length : -1;\n for (let i = startIndex; i != endIndex; i += delta) {\n const c = month.children[i];\n if (c.className.indexOf(\"hidden\") === -1 && isEnabled(c.dateObj))\n return c;\n }\n }\n return undefined;\n }\n function getNextAvailableDay(current, delta) {\n const givenMonth = current.className.indexOf(\"Month\") === -1\n ? current.dateObj.getMonth()\n : self.currentMonth;\n const endMonth = delta > 0 ? self.config.showMonths : -1;\n const loopDelta = delta > 0 ? 1 : -1;\n for (let m = givenMonth - self.currentMonth; m != endMonth; m += loopDelta) {\n const month = self.daysContainer.children[m];\n const startIndex = givenMonth - self.currentMonth === m\n ? current.$i + delta\n : delta < 0\n ? month.children.length - 1\n : 0;\n const numMonthDays = month.children.length;\n for (let i = startIndex; i >= 0 && i < numMonthDays && i != (delta > 0 ? numMonthDays : -1); i += loopDelta) {\n const c = month.children[i];\n if (c.className.indexOf(\"hidden\") === -1 &&\n isEnabled(c.dateObj) &&\n Math.abs(current.$i - i) >= Math.abs(delta))\n return focusOnDayElem(c);\n }\n }\n self.changeMonth(loopDelta);\n focusOnDay(getFirstAvailableDay(loopDelta), 0);\n return undefined;\n }\n function focusOnDay(current, offset) {\n const dayFocused = isInView(document.activeElement || document.body);\n const startElem = current !== undefined\n ? current\n : dayFocused\n ? document.activeElement\n : self.selectedDateElem !== undefined && isInView(self.selectedDateElem)\n ? self.selectedDateElem\n : self.todayDateElem !== undefined && isInView(self.todayDateElem)\n ? self.todayDateElem\n : getFirstAvailableDay(offset > 0 ? 1 : -1);\n if (startElem === undefined) {\n self._input.focus();\n }\n else if (!dayFocused) {\n focusOnDayElem(startElem);\n }\n else {\n getNextAvailableDay(startElem, offset);\n }\n }\n function buildMonthDays(year, month) {\n const firstOfMonth = (new Date(year, month, 1).getDay() - self.l10n.firstDayOfWeek + 7) % 7;\n const prevMonthDays = self.utils.getDaysInMonth((month - 1 + 12) % 12, year);\n const daysInMonth = self.utils.getDaysInMonth(month, year), days = window.document.createDocumentFragment(), isMultiMonth = self.config.showMonths > 1, prevMonthDayClass = isMultiMonth ? \"prevMonthDay hidden\" : \"prevMonthDay\", nextMonthDayClass = isMultiMonth ? \"nextMonthDay hidden\" : \"nextMonthDay\";\n let dayNumber = prevMonthDays + 1 - firstOfMonth, dayIndex = 0;\n for (; dayNumber <= prevMonthDays; dayNumber++, dayIndex++) {\n days.appendChild(createDay(prevMonthDayClass, new Date(year, month - 1, dayNumber), dayNumber, dayIndex));\n }\n for (dayNumber = 1; dayNumber <= daysInMonth; dayNumber++, dayIndex++) {\n days.appendChild(createDay(\"\", new Date(year, month, dayNumber), dayNumber, dayIndex));\n }\n for (let dayNum = daysInMonth + 1; dayNum <= 42 - firstOfMonth &&\n (self.config.showMonths === 1 || dayIndex % 7 !== 0); dayNum++, dayIndex++) {\n days.appendChild(createDay(nextMonthDayClass, new Date(year, month + 1, dayNum % daysInMonth), dayNum, dayIndex));\n }\n const dayContainer = createElement(\"div\", \"dayContainer\");\n dayContainer.appendChild(days);\n return dayContainer;\n }\n function buildDays() {\n if (self.daysContainer === undefined) {\n return;\n }\n clearNode(self.daysContainer);\n if (self.weekNumbers)\n clearNode(self.weekNumbers);\n const frag = document.createDocumentFragment();\n for (let i = 0; i < self.config.showMonths; i++) {\n const d = new Date(self.currentYear, self.currentMonth, 1);\n d.setMonth(self.currentMonth + i);\n frag.appendChild(buildMonthDays(d.getFullYear(), d.getMonth()));\n }\n self.daysContainer.appendChild(frag);\n self.days = self.daysContainer.firstChild;\n if (self.config.mode === \"range\" && self.selectedDates.length === 1) {\n onMouseOver();\n }\n }\n function buildMonthSwitch() {\n if (self.config.showMonths > 1 ||\n self.config.monthSelectorType !== \"dropdown\")\n return;\n const shouldBuildMonth = function (month) {\n if (self.config.minDate !== undefined &&\n self.currentYear === self.config.minDate.getFullYear() &&\n month < self.config.minDate.getMonth()) {\n return false;\n }\n return !(self.config.maxDate !== undefined &&\n self.currentYear === self.config.maxDate.getFullYear() &&\n month > self.config.maxDate.getMonth());\n };\n self.monthsDropdownContainer.tabIndex = -1;\n self.monthsDropdownContainer.innerHTML = \"\";\n for (let i = 0; i < 12; i++) {\n if (!shouldBuildMonth(i))\n continue;\n const month = createElement(\"option\", \"flatpickr-monthDropdown-month\");\n month.value = new Date(self.currentYear, i).getMonth().toString();\n month.textContent = monthToStr(i, self.config.shorthandCurrentMonth, self.l10n);\n month.tabIndex = -1;\n if (self.currentMonth === i) {\n month.selected = true;\n }\n self.monthsDropdownContainer.appendChild(month);\n }\n }\n function buildMonth() {\n const container = createElement(\"div\", \"flatpickr-month\");\n const monthNavFragment = window.document.createDocumentFragment();\n let monthElement;\n if (self.config.showMonths > 1 ||\n self.config.monthSelectorType === \"static\") {\n monthElement = createElement(\"span\", \"cur-month\");\n }\n else {\n self.monthsDropdownContainer = createElement(\"select\", \"flatpickr-monthDropdown-months\");\n self.monthsDropdownContainer.setAttribute(\"aria-label\", self.l10n.monthAriaLabel);\n bind(self.monthsDropdownContainer, \"change\", (e) => {\n const target = getEventTarget(e);\n const selectedMonth = parseInt(target.value, 10);\n self.changeMonth(selectedMonth - self.currentMonth);\n triggerEvent(\"onMonthChange\");\n });\n buildMonthSwitch();\n monthElement = self.monthsDropdownContainer;\n }\n const yearInput = createNumberInput(\"cur-year\", { tabindex: \"-1\" });\n const yearElement = yearInput.getElementsByTagName(\"input\")[0];\n yearElement.setAttribute(\"aria-label\", self.l10n.yearAriaLabel);\n if (self.config.minDate) {\n yearElement.setAttribute(\"min\", self.config.minDate.getFullYear().toString());\n }\n if (self.config.maxDate) {\n yearElement.setAttribute(\"max\", self.config.maxDate.getFullYear().toString());\n yearElement.disabled =\n !!self.config.minDate &&\n self.config.minDate.getFullYear() === self.config.maxDate.getFullYear();\n }\n const currentMonth = createElement(\"div\", \"flatpickr-current-month\");\n currentMonth.appendChild(monthElement);\n currentMonth.appendChild(yearInput);\n monthNavFragment.appendChild(currentMonth);\n container.appendChild(monthNavFragment);\n return {\n container,\n yearElement,\n monthElement,\n };\n }\n function buildMonths() {\n clearNode(self.monthNav);\n self.monthNav.appendChild(self.prevMonthNav);\n if (self.config.showMonths) {\n self.yearElements = [];\n self.monthElements = [];\n }\n for (let m = self.config.showMonths; m--;) {\n const month = buildMonth();\n self.yearElements.push(month.yearElement);\n self.monthElements.push(month.monthElement);\n self.monthNav.appendChild(month.container);\n }\n self.monthNav.appendChild(self.nextMonthNav);\n }\n function buildMonthNav() {\n self.monthNav = createElement(\"div\", \"flatpickr-months\");\n self.yearElements = [];\n self.monthElements = [];\n self.prevMonthNav = createElement(\"span\", \"flatpickr-prev-month\");\n self.prevMonthNav.innerHTML = self.config.prevArrow;\n self.nextMonthNav = createElement(\"span\", \"flatpickr-next-month\");\n self.nextMonthNav.innerHTML = self.config.nextArrow;\n buildMonths();\n Object.defineProperty(self, \"_hidePrevMonthArrow\", {\n get: () => self.__hidePrevMonthArrow,\n set(bool) {\n if (self.__hidePrevMonthArrow !== bool) {\n toggleClass(self.prevMonthNav, \"flatpickr-disabled\", bool);\n self.__hidePrevMonthArrow = bool;\n }\n },\n });\n Object.defineProperty(self, \"_hideNextMonthArrow\", {\n get: () => self.__hideNextMonthArrow,\n set(bool) {\n if (self.__hideNextMonthArrow !== bool) {\n toggleClass(self.nextMonthNav, \"flatpickr-disabled\", bool);\n self.__hideNextMonthArrow = bool;\n }\n },\n });\n self.currentYearElement = self.yearElements[0];\n updateNavigationCurrentMonth();\n return self.monthNav;\n }\n function buildTime() {\n self.calendarContainer.classList.add(\"hasTime\");\n if (self.config.noCalendar)\n self.calendarContainer.classList.add(\"noCalendar\");\n const defaults = getDefaultHours(self.config);\n self.timeContainer = createElement(\"div\", \"flatpickr-time\");\n self.timeContainer.tabIndex = -1;\n const separator = createElement(\"span\", \"flatpickr-time-separator\", \":\");\n const hourInput = createNumberInput(\"flatpickr-hour\", {\n \"aria-label\": self.l10n.hourAriaLabel,\n });\n self.hourElement = hourInput.getElementsByTagName(\"input\")[0];\n const minuteInput = createNumberInput(\"flatpickr-minute\", {\n \"aria-label\": self.l10n.minuteAriaLabel,\n });\n self.minuteElement = minuteInput.getElementsByTagName(\"input\")[0];\n self.hourElement.tabIndex = self.minuteElement.tabIndex = -1;\n self.hourElement.value = pad(self.latestSelectedDateObj\n ? self.latestSelectedDateObj.getHours()\n : self.config.time_24hr\n ? defaults.hours\n : military2ampm(defaults.hours));\n self.minuteElement.value = pad(self.latestSelectedDateObj\n ? self.latestSelectedDateObj.getMinutes()\n : defaults.minutes);\n self.hourElement.setAttribute(\"step\", self.config.hourIncrement.toString());\n self.minuteElement.setAttribute(\"step\", self.config.minuteIncrement.toString());\n self.hourElement.setAttribute(\"min\", self.config.time_24hr ? \"0\" : \"1\");\n self.hourElement.setAttribute(\"max\", self.config.time_24hr ? \"23\" : \"12\");\n self.hourElement.setAttribute(\"maxlength\", \"2\");\n self.minuteElement.setAttribute(\"min\", \"0\");\n self.minuteElement.setAttribute(\"max\", \"59\");\n self.minuteElement.setAttribute(\"maxlength\", \"2\");\n self.timeContainer.appendChild(hourInput);\n self.timeContainer.appendChild(separator);\n self.timeContainer.appendChild(minuteInput);\n if (self.config.time_24hr)\n self.timeContainer.classList.add(\"time24hr\");\n if (self.config.enableSeconds) {\n self.timeContainer.classList.add(\"hasSeconds\");\n const secondInput = createNumberInput(\"flatpickr-second\");\n self.secondElement = secondInput.getElementsByTagName(\"input\")[0];\n self.secondElement.value = pad(self.latestSelectedDateObj\n ? self.latestSelectedDateObj.getSeconds()\n : defaults.seconds);\n self.secondElement.setAttribute(\"step\", self.minuteElement.getAttribute(\"step\"));\n self.secondElement.setAttribute(\"min\", \"0\");\n self.secondElement.setAttribute(\"max\", \"59\");\n self.secondElement.setAttribute(\"maxlength\", \"2\");\n self.timeContainer.appendChild(createElement(\"span\", \"flatpickr-time-separator\", \":\"));\n self.timeContainer.appendChild(secondInput);\n }\n if (!self.config.time_24hr) {\n self.amPM = createElement(\"span\", \"flatpickr-am-pm\", self.l10n.amPM[int((self.latestSelectedDateObj\n ? self.hourElement.value\n : self.config.defaultHour) > 11)]);\n self.amPM.title = self.l10n.toggleTitle;\n self.amPM.tabIndex = -1;\n self.timeContainer.appendChild(self.amPM);\n }\n return self.timeContainer;\n }\n function buildWeekdays() {\n if (!self.weekdayContainer)\n self.weekdayContainer = createElement(\"div\", \"flatpickr-weekdays\");\n else\n clearNode(self.weekdayContainer);\n for (let i = self.config.showMonths; i--;) {\n const container = createElement(\"div\", \"flatpickr-weekdaycontainer\");\n self.weekdayContainer.appendChild(container);\n }\n updateWeekdays();\n return self.weekdayContainer;\n }\n function updateWeekdays() {\n if (!self.weekdayContainer) {\n return;\n }\n const firstDayOfWeek = self.l10n.firstDayOfWeek;\n let weekdays = [...self.l10n.weekdays.shorthand];\n if (firstDayOfWeek > 0 && firstDayOfWeek < weekdays.length) {\n weekdays = [\n ...weekdays.splice(firstDayOfWeek, weekdays.length),\n ...weekdays.splice(0, firstDayOfWeek),\n ];\n }\n for (let i = self.config.showMonths; i--;) {\n self.weekdayContainer.children[i].innerHTML = `\n \n ${weekdays.join(\"\")}\n \n `;\n }\n }\n function buildWeeks() {\n self.calendarContainer.classList.add(\"hasWeeks\");\n const weekWrapper = createElement(\"div\", \"flatpickr-weekwrapper\");\n weekWrapper.appendChild(createElement(\"span\", \"flatpickr-weekday\", self.l10n.weekAbbreviation));\n const weekNumbers = createElement(\"div\", \"flatpickr-weeks\");\n weekWrapper.appendChild(weekNumbers);\n return {\n weekWrapper,\n weekNumbers,\n };\n }\n function changeMonth(value, isOffset = true) {\n const delta = isOffset ? value : value - self.currentMonth;\n if ((delta < 0 && self._hidePrevMonthArrow === true) ||\n (delta > 0 && self._hideNextMonthArrow === true))\n return;\n self.currentMonth += delta;\n if (self.currentMonth < 0 || self.currentMonth > 11) {\n self.currentYear += self.currentMonth > 11 ? 1 : -1;\n self.currentMonth = (self.currentMonth + 12) % 12;\n triggerEvent(\"onYearChange\");\n buildMonthSwitch();\n }\n buildDays();\n triggerEvent(\"onMonthChange\");\n updateNavigationCurrentMonth();\n }\n function clear(triggerChangeEvent = true, toInitial = true) {\n self.input.value = \"\";\n if (self.altInput !== undefined)\n self.altInput.value = \"\";\n if (self.mobileInput !== undefined)\n self.mobileInput.value = \"\";\n self.selectedDates = [];\n self.latestSelectedDateObj = undefined;\n if (toInitial === true) {\n self.currentYear = self._initialDate.getFullYear();\n self.currentMonth = self._initialDate.getMonth();\n }\n if (self.config.enableTime === true) {\n const { hours, minutes, seconds } = getDefaultHours(self.config);\n setHours(hours, minutes, seconds);\n }\n self.redraw();\n if (triggerChangeEvent)\n triggerEvent(\"onChange\");\n }\n function close() {\n self.isOpen = false;\n if (!self.isMobile) {\n if (self.calendarContainer !== undefined) {\n self.calendarContainer.classList.remove(\"open\");\n }\n if (self._input !== undefined) {\n self._input.classList.remove(\"active\");\n }\n }\n triggerEvent(\"onClose\");\n }\n function destroy() {\n if (self.config !== undefined)\n triggerEvent(\"onDestroy\");\n for (let i = self._handlers.length; i--;) {\n self._handlers[i].remove();\n }\n self._handlers = [];\n if (self.mobileInput) {\n if (self.mobileInput.parentNode)\n self.mobileInput.parentNode.removeChild(self.mobileInput);\n self.mobileInput = undefined;\n }\n else if (self.calendarContainer && self.calendarContainer.parentNode) {\n if (self.config.static && self.calendarContainer.parentNode) {\n const wrapper = self.calendarContainer.parentNode;\n wrapper.lastChild && wrapper.removeChild(wrapper.lastChild);\n if (wrapper.parentNode) {\n while (wrapper.firstChild)\n wrapper.parentNode.insertBefore(wrapper.firstChild, wrapper);\n wrapper.parentNode.removeChild(wrapper);\n }\n }\n else\n self.calendarContainer.parentNode.removeChild(self.calendarContainer);\n }\n if (self.altInput) {\n self.input.type = \"text\";\n if (self.altInput.parentNode)\n self.altInput.parentNode.removeChild(self.altInput);\n delete self.altInput;\n }\n if (self.input) {\n self.input.type = self.input._type;\n self.input.classList.remove(\"flatpickr-input\");\n self.input.removeAttribute(\"readonly\");\n }\n [\n \"_showTimeInput\",\n \"latestSelectedDateObj\",\n \"_hideNextMonthArrow\",\n \"_hidePrevMonthArrow\",\n \"__hideNextMonthArrow\",\n \"__hidePrevMonthArrow\",\n \"isMobile\",\n \"isOpen\",\n \"selectedDateElem\",\n \"minDateHasTime\",\n \"maxDateHasTime\",\n \"days\",\n \"daysContainer\",\n \"_input\",\n \"_positionElement\",\n \"innerContainer\",\n \"rContainer\",\n \"monthNav\",\n \"todayDateElem\",\n \"calendarContainer\",\n \"weekdayContainer\",\n \"prevMonthNav\",\n \"nextMonthNav\",\n \"monthsDropdownContainer\",\n \"currentMonthElement\",\n \"currentYearElement\",\n \"navigationCurrentMonth\",\n \"selectedDateElem\",\n \"config\",\n ].forEach((k) => {\n try {\n delete self[k];\n }\n catch (_) { }\n });\n }\n function isCalendarElem(elem) {\n if (self.config.appendTo && self.config.appendTo.contains(elem))\n return true;\n return self.calendarContainer.contains(elem);\n }\n function documentClick(e) {\n if (self.isOpen && !self.config.inline) {\n const eventTarget = getEventTarget(e);\n const isCalendarElement = isCalendarElem(eventTarget);\n const isInput = eventTarget === self.input ||\n eventTarget === self.altInput ||\n self.element.contains(eventTarget) ||\n (e.path &&\n e.path.indexOf &&\n (~e.path.indexOf(self.input) ||\n ~e.path.indexOf(self.altInput)));\n const lostFocus = e.type === \"blur\"\n ? isInput &&\n e.relatedTarget &&\n !isCalendarElem(e.relatedTarget)\n : !isInput &&\n !isCalendarElement &&\n !isCalendarElem(e.relatedTarget);\n const isIgnored = !self.config.ignoredFocusElements.some((elem) => elem.contains(eventTarget));\n if (lostFocus && isIgnored) {\n if (self.timeContainer !== undefined &&\n self.minuteElement !== undefined &&\n self.hourElement !== undefined &&\n self.input.value !== \"\" &&\n self.input.value !== undefined) {\n updateTime();\n }\n self.close();\n if (self.config &&\n self.config.mode === \"range\" &&\n self.selectedDates.length === 1) {\n self.clear(false);\n self.redraw();\n }\n }\n }\n }\n function changeYear(newYear) {\n if (!newYear ||\n (self.config.minDate && newYear < self.config.minDate.getFullYear()) ||\n (self.config.maxDate && newYear > self.config.maxDate.getFullYear()))\n return;\n const newYearNum = newYear, isNewYear = self.currentYear !== newYearNum;\n self.currentYear = newYearNum || self.currentYear;\n if (self.config.maxDate &&\n self.currentYear === self.config.maxDate.getFullYear()) {\n self.currentMonth = Math.min(self.config.maxDate.getMonth(), self.currentMonth);\n }\n else if (self.config.minDate &&\n self.currentYear === self.config.minDate.getFullYear()) {\n self.currentMonth = Math.max(self.config.minDate.getMonth(), self.currentMonth);\n }\n if (isNewYear) {\n self.redraw();\n triggerEvent(\"onYearChange\");\n buildMonthSwitch();\n }\n }\n function isEnabled(date, timeless = true) {\n var _a;\n const dateToCheck = self.parseDate(date, undefined, timeless);\n if ((self.config.minDate &&\n dateToCheck &&\n compareDates(dateToCheck, self.config.minDate, timeless !== undefined ? timeless : !self.minDateHasTime) < 0) ||\n (self.config.maxDate &&\n dateToCheck &&\n compareDates(dateToCheck, self.config.maxDate, timeless !== undefined ? timeless : !self.maxDateHasTime) > 0))\n return false;\n if (!self.config.enable && self.config.disable.length === 0)\n return true;\n if (dateToCheck === undefined)\n return false;\n const bool = !!self.config.enable, array = (_a = self.config.enable) !== null && _a !== void 0 ? _a : self.config.disable;\n for (let i = 0, d; i < array.length; i++) {\n d = array[i];\n if (typeof d === \"function\" &&\n d(dateToCheck))\n return bool;\n else if (d instanceof Date &&\n dateToCheck !== undefined &&\n d.getTime() === dateToCheck.getTime())\n return bool;\n else if (typeof d === \"string\") {\n const parsed = self.parseDate(d, undefined, true);\n return parsed && parsed.getTime() === dateToCheck.getTime()\n ? bool\n : !bool;\n }\n else if (typeof d === \"object\" &&\n dateToCheck !== undefined &&\n d.from &&\n d.to &&\n dateToCheck.getTime() >= d.from.getTime() &&\n dateToCheck.getTime() <= d.to.getTime())\n return bool;\n }\n return !bool;\n }\n function isInView(elem) {\n if (self.daysContainer !== undefined)\n return (elem.className.indexOf(\"hidden\") === -1 &&\n elem.className.indexOf(\"flatpickr-disabled\") === -1 &&\n self.daysContainer.contains(elem));\n return false;\n }\n function onBlur(e) {\n const isInput = e.target === self._input;\n if (isInput &&\n (self.selectedDates.length > 0 || self._input.value.length > 0) &&\n !(e.relatedTarget && isCalendarElem(e.relatedTarget))) {\n self.setDate(self._input.value, true, e.target === self.altInput\n ? self.config.altFormat\n : self.config.dateFormat);\n }\n }\n function onKeyDown(e) {\n const eventTarget = getEventTarget(e);\n const isInput = self.config.wrap\n ? element.contains(eventTarget)\n : eventTarget === self._input;\n const allowInput = self.config.allowInput;\n const allowKeydown = self.isOpen && (!allowInput || !isInput);\n const allowInlineKeydown = self.config.inline && isInput && !allowInput;\n if (e.keyCode === 13 && isInput) {\n if (allowInput) {\n self.setDate(self._input.value, true, eventTarget === self.altInput\n ? self.config.altFormat\n : self.config.dateFormat);\n return eventTarget.blur();\n }\n else {\n self.open();\n }\n }\n else if (isCalendarElem(eventTarget) ||\n allowKeydown ||\n allowInlineKeydown) {\n const isTimeObj = !!self.timeContainer &&\n self.timeContainer.contains(eventTarget);\n switch (e.keyCode) {\n case 13:\n if (isTimeObj) {\n e.preventDefault();\n updateTime();\n focusAndClose();\n }\n else\n selectDate(e);\n break;\n case 27:\n e.preventDefault();\n focusAndClose();\n break;\n case 8:\n case 46:\n if (isInput && !self.config.allowInput) {\n e.preventDefault();\n self.clear();\n }\n break;\n case 37:\n case 39:\n if (!isTimeObj && !isInput) {\n e.preventDefault();\n if (self.daysContainer !== undefined &&\n (allowInput === false ||\n (document.activeElement && isInView(document.activeElement)))) {\n const delta = e.keyCode === 39 ? 1 : -1;\n if (!e.ctrlKey)\n focusOnDay(undefined, delta);\n else {\n e.stopPropagation();\n changeMonth(delta);\n focusOnDay(getFirstAvailableDay(1), 0);\n }\n }\n }\n else if (self.hourElement)\n self.hourElement.focus();\n break;\n case 38:\n case 40:\n e.preventDefault();\n const delta = e.keyCode === 40 ? 1 : -1;\n if ((self.daysContainer &&\n eventTarget.$i !== undefined) ||\n eventTarget === self.input ||\n eventTarget === self.altInput) {\n if (e.ctrlKey) {\n e.stopPropagation();\n changeYear(self.currentYear - delta);\n focusOnDay(getFirstAvailableDay(1), 0);\n }\n else if (!isTimeObj)\n focusOnDay(undefined, delta * 7);\n }\n else if (eventTarget === self.currentYearElement) {\n changeYear(self.currentYear - delta);\n }\n else if (self.config.enableTime) {\n if (!isTimeObj && self.hourElement)\n self.hourElement.focus();\n updateTime(e);\n self._debouncedChange();\n }\n break;\n case 9:\n if (isTimeObj) {\n const elems = [\n self.hourElement,\n self.minuteElement,\n self.secondElement,\n self.amPM,\n ]\n .concat(self.pluginElements)\n .filter((x) => x);\n const i = elems.indexOf(eventTarget);\n if (i !== -1) {\n const target = elems[i + (e.shiftKey ? -1 : 1)];\n e.preventDefault();\n (target || self._input).focus();\n }\n }\n else if (!self.config.noCalendar &&\n self.daysContainer &&\n self.daysContainer.contains(eventTarget) &&\n e.shiftKey) {\n e.preventDefault();\n self._input.focus();\n }\n break;\n default:\n break;\n }\n }\n if (self.amPM !== undefined && eventTarget === self.amPM) {\n switch (e.key) {\n case self.l10n.amPM[0].charAt(0):\n case self.l10n.amPM[0].charAt(0).toLowerCase():\n self.amPM.textContent = self.l10n.amPM[0];\n setHoursFromInputs();\n updateValue();\n break;\n case self.l10n.amPM[1].charAt(0):\n case self.l10n.amPM[1].charAt(0).toLowerCase():\n self.amPM.textContent = self.l10n.amPM[1];\n setHoursFromInputs();\n updateValue();\n break;\n }\n }\n if (isInput || isCalendarElem(eventTarget)) {\n triggerEvent(\"onKeyDown\", e);\n }\n }\n function onMouseOver(elem) {\n if (self.selectedDates.length !== 1 ||\n (elem &&\n (!elem.classList.contains(\"flatpickr-day\") ||\n elem.classList.contains(\"flatpickr-disabled\"))))\n return;\n const hoverDate = elem\n ? elem.dateObj.getTime()\n : self.days.firstElementChild.dateObj.getTime(), initialDate = self.parseDate(self.selectedDates[0], undefined, true).getTime(), rangeStartDate = Math.min(hoverDate, self.selectedDates[0].getTime()), rangeEndDate = Math.max(hoverDate, self.selectedDates[0].getTime());\n let containsDisabled = false;\n let minRange = 0, maxRange = 0;\n for (let t = rangeStartDate; t < rangeEndDate; t += duration.DAY) {\n if (!isEnabled(new Date(t), true)) {\n containsDisabled =\n containsDisabled || (t > rangeStartDate && t < rangeEndDate);\n if (t < initialDate && (!minRange || t > minRange))\n minRange = t;\n else if (t > initialDate && (!maxRange || t < maxRange))\n maxRange = t;\n }\n }\n for (let m = 0; m < self.config.showMonths; m++) {\n const month = self.daysContainer.children[m];\n for (let i = 0, l = month.children.length; i < l; i++) {\n const dayElem = month.children[i], date = dayElem.dateObj;\n const timestamp = date.getTime();\n const outOfRange = (minRange > 0 && timestamp < minRange) ||\n (maxRange > 0 && timestamp > maxRange);\n if (outOfRange) {\n dayElem.classList.add(\"notAllowed\");\n [\"inRange\", \"startRange\", \"endRange\"].forEach((c) => {\n dayElem.classList.remove(c);\n });\n continue;\n }\n else if (containsDisabled && !outOfRange)\n continue;\n [\"startRange\", \"inRange\", \"endRange\", \"notAllowed\"].forEach((c) => {\n dayElem.classList.remove(c);\n });\n if (elem !== undefined) {\n elem.classList.add(hoverDate <= self.selectedDates[0].getTime()\n ? \"startRange\"\n : \"endRange\");\n if (initialDate < hoverDate && timestamp === initialDate)\n dayElem.classList.add(\"startRange\");\n else if (initialDate > hoverDate && timestamp === initialDate)\n dayElem.classList.add(\"endRange\");\n if (timestamp >= minRange &&\n (maxRange === 0 || timestamp <= maxRange) &&\n isBetween(timestamp, initialDate, hoverDate))\n dayElem.classList.add(\"inRange\");\n }\n }\n }\n }\n function onResize() {\n if (self.isOpen && !self.config.static && !self.config.inline)\n positionCalendar();\n }\n function open(e, positionElement = self._positionElement) {\n if (self.isMobile === true) {\n if (e) {\n e.preventDefault();\n const eventTarget = getEventTarget(e);\n if (eventTarget) {\n eventTarget.blur();\n }\n }\n if (self.mobileInput !== undefined) {\n self.mobileInput.focus();\n self.mobileInput.click();\n }\n triggerEvent(\"onOpen\");\n return;\n }\n else if (self._input.disabled || self.config.inline) {\n return;\n }\n const wasOpen = self.isOpen;\n self.isOpen = true;\n if (!wasOpen) {\n self.calendarContainer.classList.add(\"open\");\n self._input.classList.add(\"active\");\n triggerEvent(\"onOpen\");\n positionCalendar(positionElement);\n }\n if (self.config.enableTime === true && self.config.noCalendar === true) {\n if (self.config.allowInput === false &&\n (e === undefined ||\n !self.timeContainer.contains(e.relatedTarget))) {\n setTimeout(() => self.hourElement.select(), 50);\n }\n }\n }\n function minMaxDateSetter(type) {\n return (date) => {\n const dateObj = (self.config[`_${type}Date`] = self.parseDate(date, self.config.dateFormat));\n const inverseDateObj = self.config[`_${type === \"min\" ? \"max\" : \"min\"}Date`];\n if (dateObj !== undefined) {\n self[type === \"min\" ? \"minDateHasTime\" : \"maxDateHasTime\"] =\n dateObj.getHours() > 0 ||\n dateObj.getMinutes() > 0 ||\n dateObj.getSeconds() > 0;\n }\n if (self.selectedDates) {\n self.selectedDates = self.selectedDates.filter((d) => isEnabled(d));\n if (!self.selectedDates.length && type === \"min\")\n setHoursFromDate(dateObj);\n updateValue();\n }\n if (self.daysContainer) {\n redraw();\n if (dateObj !== undefined)\n self.currentYearElement[type] = dateObj.getFullYear().toString();\n else\n self.currentYearElement.removeAttribute(type);\n self.currentYearElement.disabled =\n !!inverseDateObj &&\n dateObj !== undefined &&\n inverseDateObj.getFullYear() === dateObj.getFullYear();\n }\n };\n }\n function parseConfig() {\n const boolOpts = [\n \"wrap\",\n \"weekNumbers\",\n \"allowInput\",\n \"allowInvalidPreload\",\n \"clickOpens\",\n \"time_24hr\",\n \"enableTime\",\n \"noCalendar\",\n \"altInput\",\n \"shorthandCurrentMonth\",\n \"inline\",\n \"static\",\n \"enableSeconds\",\n \"disableMobile\",\n ];\n const userConfig = Object.assign(Object.assign({}, JSON.parse(JSON.stringify(element.dataset || {}))), instanceConfig);\n const formats = {};\n self.config.parseDate = userConfig.parseDate;\n self.config.formatDate = userConfig.formatDate;\n Object.defineProperty(self.config, \"enable\", {\n get: () => self.config._enable,\n set: (dates) => {\n self.config._enable = parseDateRules(dates);\n },\n });\n Object.defineProperty(self.config, \"disable\", {\n get: () => self.config._disable,\n set: (dates) => {\n self.config._disable = parseDateRules(dates);\n },\n });\n const timeMode = userConfig.mode === \"time\";\n if (!userConfig.dateFormat && (userConfig.enableTime || timeMode)) {\n const defaultDateFormat = flatpickr.defaultConfig.dateFormat || defaultOptions.dateFormat;\n formats.dateFormat =\n userConfig.noCalendar || timeMode\n ? \"H:i\" + (userConfig.enableSeconds ? \":S\" : \"\")\n : defaultDateFormat + \" H:i\" + (userConfig.enableSeconds ? \":S\" : \"\");\n }\n if (userConfig.altInput &&\n (userConfig.enableTime || timeMode) &&\n !userConfig.altFormat) {\n const defaultAltFormat = flatpickr.defaultConfig.altFormat || defaultOptions.altFormat;\n formats.altFormat =\n userConfig.noCalendar || timeMode\n ? \"h:i\" + (userConfig.enableSeconds ? \":S K\" : \" K\")\n : defaultAltFormat + ` h:i${userConfig.enableSeconds ? \":S\" : \"\"} K`;\n }\n Object.defineProperty(self.config, \"minDate\", {\n get: () => self.config._minDate,\n set: minMaxDateSetter(\"min\"),\n });\n Object.defineProperty(self.config, \"maxDate\", {\n get: () => self.config._maxDate,\n set: minMaxDateSetter(\"max\"),\n });\n const minMaxTimeSetter = (type) => (val) => {\n self.config[type === \"min\" ? \"_minTime\" : \"_maxTime\"] = self.parseDate(val, \"H:i:S\");\n };\n Object.defineProperty(self.config, \"minTime\", {\n get: () => self.config._minTime,\n set: minMaxTimeSetter(\"min\"),\n });\n Object.defineProperty(self.config, \"maxTime\", {\n get: () => self.config._maxTime,\n set: minMaxTimeSetter(\"max\"),\n });\n if (userConfig.mode === \"time\") {\n self.config.noCalendar = true;\n self.config.enableTime = true;\n }\n Object.assign(self.config, formats, userConfig);\n for (let i = 0; i < boolOpts.length; i++)\n self.config[boolOpts[i]] =\n self.config[boolOpts[i]] === true ||\n self.config[boolOpts[i]] === \"true\";\n HOOKS.filter((hook) => self.config[hook] !== undefined).forEach((hook) => {\n self.config[hook] = arrayify(self.config[hook] || []).map(bindToInstance);\n });\n self.isMobile =\n !self.config.disableMobile &&\n !self.config.inline &&\n self.config.mode === \"single\" &&\n !self.config.disable.length &&\n !self.config.enable &&\n !self.config.weekNumbers &&\n /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);\n for (let i = 0; i < self.config.plugins.length; i++) {\n const pluginConf = self.config.plugins[i](self) || {};\n for (const key in pluginConf) {\n if (HOOKS.indexOf(key) > -1) {\n self.config[key] = arrayify(pluginConf[key])\n .map(bindToInstance)\n .concat(self.config[key]);\n }\n else if (typeof userConfig[key] === \"undefined\")\n self.config[key] = pluginConf[key];\n }\n }\n if (!userConfig.altInputClass) {\n self.config.altInputClass =\n getInputElem().className + \" \" + self.config.altInputClass;\n }\n triggerEvent(\"onParseConfig\");\n }\n function getInputElem() {\n return self.config.wrap\n ? element.querySelector(\"[data-input]\")\n : element;\n }\n function setupLocale() {\n if (typeof self.config.locale !== \"object\" &&\n typeof flatpickr.l10ns[self.config.locale] === \"undefined\")\n self.config.errorHandler(new Error(`flatpickr: invalid locale ${self.config.locale}`));\n self.l10n = Object.assign(Object.assign({}, flatpickr.l10ns.default), (typeof self.config.locale === \"object\"\n ? self.config.locale\n : self.config.locale !== \"default\"\n ? flatpickr.l10ns[self.config.locale]\n : undefined));\n tokenRegex.K = `(${self.l10n.amPM[0]}|${self.l10n.amPM[1]}|${self.l10n.amPM[0].toLowerCase()}|${self.l10n.amPM[1].toLowerCase()})`;\n const userConfig = Object.assign(Object.assign({}, instanceConfig), JSON.parse(JSON.stringify(element.dataset || {})));\n if (userConfig.time_24hr === undefined &&\n flatpickr.defaultConfig.time_24hr === undefined) {\n self.config.time_24hr = self.l10n.time_24hr;\n }\n self.formatDate = createDateFormatter(self);\n self.parseDate = createDateParser({ config: self.config, l10n: self.l10n });\n }\n function positionCalendar(customPositionElement) {\n if (typeof self.config.position === \"function\") {\n return void self.config.position(self, customPositionElement);\n }\n if (self.calendarContainer === undefined)\n return;\n triggerEvent(\"onPreCalendarPosition\");\n const positionElement = customPositionElement || self._positionElement;\n const calendarHeight = Array.prototype.reduce.call(self.calendarContainer.children, ((acc, child) => acc + child.offsetHeight), 0), calendarWidth = self.calendarContainer.offsetWidth, configPos = self.config.position.split(\" \"), configPosVertical = configPos[0], configPosHorizontal = configPos.length > 1 ? configPos[1] : null, inputBounds = positionElement.getBoundingClientRect(), distanceFromBottom = window.innerHeight - inputBounds.bottom, showOnTop = configPosVertical === \"above\" ||\n (configPosVertical !== \"below\" &&\n distanceFromBottom < calendarHeight &&\n inputBounds.top > calendarHeight);\n const top = window.pageYOffset +\n inputBounds.top +\n (!showOnTop ? positionElement.offsetHeight + 2 : -calendarHeight - 2);\n toggleClass(self.calendarContainer, \"arrowTop\", !showOnTop);\n toggleClass(self.calendarContainer, \"arrowBottom\", showOnTop);\n if (self.config.inline)\n return;\n let left = window.pageXOffset + inputBounds.left;\n let isCenter = false;\n let isRight = false;\n if (configPosHorizontal === \"center\") {\n left -= (calendarWidth - inputBounds.width) / 2;\n isCenter = true;\n }\n else if (configPosHorizontal === \"right\") {\n left -= calendarWidth - inputBounds.width;\n isRight = true;\n }\n toggleClass(self.calendarContainer, \"arrowLeft\", !isCenter && !isRight);\n toggleClass(self.calendarContainer, \"arrowCenter\", isCenter);\n toggleClass(self.calendarContainer, \"arrowRight\", isRight);\n const right = window.document.body.offsetWidth -\n (window.pageXOffset + inputBounds.right);\n const rightMost = left + calendarWidth > window.document.body.offsetWidth;\n const centerMost = right + calendarWidth > window.document.body.offsetWidth;\n toggleClass(self.calendarContainer, \"rightMost\", rightMost);\n if (self.config.static)\n return;\n self.calendarContainer.style.top = `${top}px`;\n if (!rightMost) {\n self.calendarContainer.style.left = `${left}px`;\n self.calendarContainer.style.right = \"auto\";\n }\n else if (!centerMost) {\n self.calendarContainer.style.left = \"auto\";\n self.calendarContainer.style.right = `${right}px`;\n }\n else {\n const doc = getDocumentStyleSheet();\n if (doc === undefined)\n return;\n const bodyWidth = window.document.body.offsetWidth;\n const centerLeft = Math.max(0, bodyWidth / 2 - calendarWidth / 2);\n const centerBefore = \".flatpickr-calendar.centerMost:before\";\n const centerAfter = \".flatpickr-calendar.centerMost:after\";\n const centerIndex = doc.cssRules.length;\n const centerStyle = `{left:${inputBounds.left}px;right:auto;}`;\n toggleClass(self.calendarContainer, \"rightMost\", false);\n toggleClass(self.calendarContainer, \"centerMost\", true);\n doc.insertRule(`${centerBefore},${centerAfter}${centerStyle}`, centerIndex);\n self.calendarContainer.style.left = `${centerLeft}px`;\n self.calendarContainer.style.right = \"auto\";\n }\n }\n function getDocumentStyleSheet() {\n let editableSheet = null;\n for (let i = 0; i < document.styleSheets.length; i++) {\n const sheet = document.styleSheets[i];\n try {\n sheet.cssRules;\n }\n catch (err) {\n continue;\n }\n editableSheet = sheet;\n break;\n }\n return editableSheet != null ? editableSheet : createStyleSheet();\n }\n function createStyleSheet() {\n const style = document.createElement(\"style\");\n document.head.appendChild(style);\n return style.sheet;\n }\n function redraw() {\n if (self.config.noCalendar || self.isMobile)\n return;\n buildMonthSwitch();\n updateNavigationCurrentMonth();\n buildDays();\n }\n function focusAndClose() {\n self._input.focus();\n if (window.navigator.userAgent.indexOf(\"MSIE\") !== -1 ||\n navigator.msMaxTouchPoints !== undefined) {\n setTimeout(self.close, 0);\n }\n else {\n self.close();\n }\n }\n function selectDate(e) {\n e.preventDefault();\n e.stopPropagation();\n const isSelectable = (day) => day.classList &&\n day.classList.contains(\"flatpickr-day\") &&\n !day.classList.contains(\"flatpickr-disabled\") &&\n !day.classList.contains(\"notAllowed\");\n const t = findParent(getEventTarget(e), isSelectable);\n if (t === undefined)\n return;\n const target = t;\n const selectedDate = (self.latestSelectedDateObj = new Date(target.dateObj.getTime()));\n const shouldChangeMonth = (selectedDate.getMonth() < self.currentMonth ||\n selectedDate.getMonth() >\n self.currentMonth + self.config.showMonths - 1) &&\n self.config.mode !== \"range\";\n self.selectedDateElem = target;\n if (self.config.mode === \"single\")\n self.selectedDates = [selectedDate];\n else if (self.config.mode === \"multiple\") {\n const selectedIndex = isDateSelected(selectedDate);\n if (selectedIndex)\n self.selectedDates.splice(parseInt(selectedIndex), 1);\n else\n self.selectedDates.push(selectedDate);\n }\n else if (self.config.mode === \"range\") {\n if (self.selectedDates.length === 2) {\n self.clear(false, false);\n }\n self.latestSelectedDateObj = selectedDate;\n self.selectedDates.push(selectedDate);\n if (compareDates(selectedDate, self.selectedDates[0], true) !== 0)\n self.selectedDates.sort((a, b) => a.getTime() - b.getTime());\n }\n setHoursFromInputs();\n if (shouldChangeMonth) {\n const isNewYear = self.currentYear !== selectedDate.getFullYear();\n self.currentYear = selectedDate.getFullYear();\n self.currentMonth = selectedDate.getMonth();\n if (isNewYear) {\n triggerEvent(\"onYearChange\");\n buildMonthSwitch();\n }\n triggerEvent(\"onMonthChange\");\n }\n updateNavigationCurrentMonth();\n buildDays();\n updateValue();\n if (!shouldChangeMonth &&\n self.config.mode !== \"range\" &&\n self.config.showMonths === 1)\n focusOnDayElem(target);\n else if (self.selectedDateElem !== undefined &&\n self.hourElement === undefined) {\n self.selectedDateElem && self.selectedDateElem.focus();\n }\n if (self.hourElement !== undefined)\n self.hourElement !== undefined && self.hourElement.focus();\n if (self.config.closeOnSelect) {\n const single = self.config.mode === \"single\" && !self.config.enableTime;\n const range = self.config.mode === \"range\" &&\n self.selectedDates.length === 2 &&\n !self.config.enableTime;\n if (single || range) {\n focusAndClose();\n }\n }\n triggerChange();\n }\n const CALLBACKS = {\n locale: [setupLocale, updateWeekdays],\n showMonths: [buildMonths, setCalendarWidth, buildWeekdays],\n minDate: [jumpToDate],\n maxDate: [jumpToDate],\n clickOpens: [\n () => {\n if (self.config.clickOpens === true) {\n bind(self._input, \"focus\", self.open);\n bind(self._input, \"click\", self.open);\n }\n else {\n self._input.removeEventListener(\"focus\", self.open);\n self._input.removeEventListener(\"click\", self.open);\n }\n },\n ],\n };\n function set(option, value) {\n if (option !== null && typeof option === \"object\") {\n Object.assign(self.config, option);\n for (const key in option) {\n if (CALLBACKS[key] !== undefined)\n CALLBACKS[key].forEach((x) => x());\n }\n }\n else {\n self.config[option] = value;\n if (CALLBACKS[option] !== undefined)\n CALLBACKS[option].forEach((x) => x());\n else if (HOOKS.indexOf(option) > -1)\n self.config[option] = arrayify(value);\n }\n self.redraw();\n updateValue(true);\n }\n function setSelectedDate(inputDate, format) {\n let dates = [];\n if (inputDate instanceof Array)\n dates = inputDate.map((d) => self.parseDate(d, format));\n else if (inputDate instanceof Date || typeof inputDate === \"number\")\n dates = [self.parseDate(inputDate, format)];\n else if (typeof inputDate === \"string\") {\n switch (self.config.mode) {\n case \"single\":\n case \"time\":\n dates = [self.parseDate(inputDate, format)];\n break;\n case \"multiple\":\n dates = inputDate\n .split(self.config.conjunction)\n .map((date) => self.parseDate(date, format));\n break;\n case \"range\":\n dates = inputDate\n .split(self.l10n.rangeSeparator)\n .map((date) => self.parseDate(date, format));\n break;\n default:\n break;\n }\n }\n else\n self.config.errorHandler(new Error(`Invalid date supplied: ${JSON.stringify(inputDate)}`));\n self.selectedDates = (self.config.allowInvalidPreload\n ? dates\n : dates.filter((d) => d instanceof Date && isEnabled(d, false)));\n if (self.config.mode === \"range\")\n self.selectedDates.sort((a, b) => a.getTime() - b.getTime());\n }\n function setDate(date, triggerChange = false, format = self.config.dateFormat) {\n if ((date !== 0 && !date) || (date instanceof Array && date.length === 0))\n return self.clear(triggerChange);\n setSelectedDate(date, format);\n self.latestSelectedDateObj =\n self.selectedDates[self.selectedDates.length - 1];\n self.redraw();\n jumpToDate(undefined, triggerChange);\n setHoursFromDate();\n if (self.selectedDates.length === 0) {\n self.clear(false);\n }\n updateValue(triggerChange);\n if (triggerChange)\n triggerEvent(\"onChange\");\n }\n function parseDateRules(arr) {\n return arr\n .slice()\n .map((rule) => {\n if (typeof rule === \"string\" ||\n typeof rule === \"number\" ||\n rule instanceof Date) {\n return self.parseDate(rule, undefined, true);\n }\n else if (rule &&\n typeof rule === \"object\" &&\n rule.from &&\n rule.to)\n return {\n from: self.parseDate(rule.from, undefined),\n to: self.parseDate(rule.to, undefined),\n };\n return rule;\n })\n .filter((x) => x);\n }\n function setupDates() {\n self.selectedDates = [];\n self.now = self.parseDate(self.config.now) || new Date();\n const preloadedDate = self.config.defaultDate ||\n ((self.input.nodeName === \"INPUT\" ||\n self.input.nodeName === \"TEXTAREA\") &&\n self.input.placeholder &&\n self.input.value === self.input.placeholder\n ? null\n : self.input.value);\n if (preloadedDate)\n setSelectedDate(preloadedDate, self.config.dateFormat);\n self._initialDate =\n self.selectedDates.length > 0\n ? self.selectedDates[0]\n : self.config.minDate &&\n self.config.minDate.getTime() > self.now.getTime()\n ? self.config.minDate\n : self.config.maxDate &&\n self.config.maxDate.getTime() < self.now.getTime()\n ? self.config.maxDate\n : self.now;\n self.currentYear = self._initialDate.getFullYear();\n self.currentMonth = self._initialDate.getMonth();\n if (self.selectedDates.length > 0)\n self.latestSelectedDateObj = self.selectedDates[0];\n if (self.config.minTime !== undefined)\n self.config.minTime = self.parseDate(self.config.minTime, \"H:i\");\n if (self.config.maxTime !== undefined)\n self.config.maxTime = self.parseDate(self.config.maxTime, \"H:i\");\n self.minDateHasTime =\n !!self.config.minDate &&\n (self.config.minDate.getHours() > 0 ||\n self.config.minDate.getMinutes() > 0 ||\n self.config.minDate.getSeconds() > 0);\n self.maxDateHasTime =\n !!self.config.maxDate &&\n (self.config.maxDate.getHours() > 0 ||\n self.config.maxDate.getMinutes() > 0 ||\n self.config.maxDate.getSeconds() > 0);\n }\n function setupInputs() {\n self.input = getInputElem();\n if (!self.input) {\n self.config.errorHandler(new Error(\"Invalid input element specified\"));\n return;\n }\n self.input._type = self.input.type;\n self.input.type = \"text\";\n self.input.classList.add(\"flatpickr-input\");\n self._input = self.input;\n if (self.config.altInput) {\n self.altInput = createElement(self.input.nodeName, self.config.altInputClass);\n self._input = self.altInput;\n self.altInput.placeholder = self.input.placeholder;\n self.altInput.disabled = self.input.disabled;\n self.altInput.required = self.input.required;\n self.altInput.tabIndex = self.input.tabIndex;\n self.altInput.type = \"text\";\n self.input.setAttribute(\"type\", \"hidden\");\n if (!self.config.static && self.input.parentNode)\n self.input.parentNode.insertBefore(self.altInput, self.input.nextSibling);\n }\n if (!self.config.allowInput)\n self._input.setAttribute(\"readonly\", \"readonly\");\n self._positionElement = self.config.positionElement || self._input;\n }\n function setupMobile() {\n const inputType = self.config.enableTime\n ? self.config.noCalendar\n ? \"time\"\n : \"datetime-local\"\n : \"date\";\n self.mobileInput = createElement(\"input\", self.input.className + \" flatpickr-mobile\");\n self.mobileInput.tabIndex = 1;\n self.mobileInput.type = inputType;\n self.mobileInput.disabled = self.input.disabled;\n self.mobileInput.required = self.input.required;\n self.mobileInput.placeholder = self.input.placeholder;\n self.mobileFormatStr =\n inputType === \"datetime-local\"\n ? \"Y-m-d\\\\TH:i:S\"\n : inputType === \"date\"\n ? \"Y-m-d\"\n : \"H:i:S\";\n if (self.selectedDates.length > 0) {\n self.mobileInput.defaultValue = self.mobileInput.value = self.formatDate(self.selectedDates[0], self.mobileFormatStr);\n }\n if (self.config.minDate)\n self.mobileInput.min = self.formatDate(self.config.minDate, \"Y-m-d\");\n if (self.config.maxDate)\n self.mobileInput.max = self.formatDate(self.config.maxDate, \"Y-m-d\");\n if (self.input.getAttribute(\"step\"))\n self.mobileInput.step = String(self.input.getAttribute(\"step\"));\n self.input.type = \"hidden\";\n if (self.altInput !== undefined)\n self.altInput.type = \"hidden\";\n try {\n if (self.input.parentNode)\n self.input.parentNode.insertBefore(self.mobileInput, self.input.nextSibling);\n }\n catch (_a) { }\n bind(self.mobileInput, \"change\", (e) => {\n self.setDate(getEventTarget(e).value, false, self.mobileFormatStr);\n triggerEvent(\"onChange\");\n triggerEvent(\"onClose\");\n });\n }\n function toggle(e) {\n if (self.isOpen === true)\n return self.close();\n self.open(e);\n }\n function triggerEvent(event, data) {\n if (self.config === undefined)\n return;\n const hooks = self.config[event];\n if (hooks !== undefined && hooks.length > 0) {\n for (let i = 0; hooks[i] && i < hooks.length; i++)\n hooks[i](self.selectedDates, self.input.value, self, data);\n }\n if (event === \"onChange\") {\n self.input.dispatchEvent(createEvent(\"change\"));\n self.input.dispatchEvent(createEvent(\"input\"));\n }\n }\n function createEvent(name) {\n const e = document.createEvent(\"Event\");\n e.initEvent(name, true, true);\n return e;\n }\n function isDateSelected(date) {\n for (let i = 0; i < self.selectedDates.length; i++) {\n if (compareDates(self.selectedDates[i], date) === 0)\n return \"\" + i;\n }\n return false;\n }\n function isDateInRange(date) {\n if (self.config.mode !== \"range\" || self.selectedDates.length < 2)\n return false;\n return (compareDates(date, self.selectedDates[0]) >= 0 &&\n compareDates(date, self.selectedDates[1]) <= 0);\n }\n function updateNavigationCurrentMonth() {\n if (self.config.noCalendar || self.isMobile || !self.monthNav)\n return;\n self.yearElements.forEach((yearElement, i) => {\n const d = new Date(self.currentYear, self.currentMonth, 1);\n d.setMonth(self.currentMonth + i);\n if (self.config.showMonths > 1 ||\n self.config.monthSelectorType === \"static\") {\n self.monthElements[i].textContent =\n monthToStr(d.getMonth(), self.config.shorthandCurrentMonth, self.l10n) + \" \";\n }\n else {\n self.monthsDropdownContainer.value = d.getMonth().toString();\n }\n yearElement.value = d.getFullYear().toString();\n });\n self._hidePrevMonthArrow =\n self.config.minDate !== undefined &&\n (self.currentYear === self.config.minDate.getFullYear()\n ? self.currentMonth <= self.config.minDate.getMonth()\n : self.currentYear < self.config.minDate.getFullYear());\n self._hideNextMonthArrow =\n self.config.maxDate !== undefined &&\n (self.currentYear === self.config.maxDate.getFullYear()\n ? self.currentMonth + 1 > self.config.maxDate.getMonth()\n : self.currentYear > self.config.maxDate.getFullYear());\n }\n function getDateStr(format) {\n return self.selectedDates\n .map((dObj) => self.formatDate(dObj, format))\n .filter((d, i, arr) => self.config.mode !== \"range\" ||\n self.config.enableTime ||\n arr.indexOf(d) === i)\n .join(self.config.mode !== \"range\"\n ? self.config.conjunction\n : self.l10n.rangeSeparator);\n }\n function updateValue(triggerChange = true) {\n if (self.mobileInput !== undefined && self.mobileFormatStr) {\n self.mobileInput.value =\n self.latestSelectedDateObj !== undefined\n ? self.formatDate(self.latestSelectedDateObj, self.mobileFormatStr)\n : \"\";\n }\n self.input.value = getDateStr(self.config.dateFormat);\n if (self.altInput !== undefined) {\n self.altInput.value = getDateStr(self.config.altFormat);\n }\n if (triggerChange !== false)\n triggerEvent(\"onValueUpdate\");\n }\n function onMonthNavClick(e) {\n const eventTarget = getEventTarget(e);\n const isPrevMonth = self.prevMonthNav.contains(eventTarget);\n const isNextMonth = self.nextMonthNav.contains(eventTarget);\n if (isPrevMonth || isNextMonth) {\n changeMonth(isPrevMonth ? -1 : 1);\n }\n else if (self.yearElements.indexOf(eventTarget) >= 0) {\n eventTarget.select();\n }\n else if (eventTarget.classList.contains(\"arrowUp\")) {\n self.changeYear(self.currentYear + 1);\n }\n else if (eventTarget.classList.contains(\"arrowDown\")) {\n self.changeYear(self.currentYear - 1);\n }\n }\n function timeWrapper(e) {\n e.preventDefault();\n const isKeyDown = e.type === \"keydown\", eventTarget = getEventTarget(e), input = eventTarget;\n if (self.amPM !== undefined && eventTarget === self.amPM) {\n self.amPM.textContent =\n self.l10n.amPM[int(self.amPM.textContent === self.l10n.amPM[0])];\n }\n const min = parseFloat(input.getAttribute(\"min\")), max = parseFloat(input.getAttribute(\"max\")), step = parseFloat(input.getAttribute(\"step\")), curValue = parseInt(input.value, 10), delta = e.delta ||\n (isKeyDown ? (e.which === 38 ? 1 : -1) : 0);\n let newValue = curValue + step * delta;\n if (typeof input.value !== \"undefined\" && input.value.length === 2) {\n const isHourElem = input === self.hourElement, isMinuteElem = input === self.minuteElement;\n if (newValue < min) {\n newValue =\n max +\n newValue +\n int(!isHourElem) +\n (int(isHourElem) && int(!self.amPM));\n if (isMinuteElem)\n incrementNumInput(undefined, -1, self.hourElement);\n }\n else if (newValue > max) {\n newValue =\n input === self.hourElement ? newValue - max - int(!self.amPM) : min;\n if (isMinuteElem)\n incrementNumInput(undefined, 1, self.hourElement);\n }\n if (self.amPM &&\n isHourElem &&\n (step === 1\n ? newValue + curValue === 23\n : Math.abs(newValue - curValue) > step)) {\n self.amPM.textContent =\n self.l10n.amPM[int(self.amPM.textContent === self.l10n.amPM[0])];\n }\n input.value = pad(newValue);\n }\n }\n init();\n return self;\n}\nfunction _flatpickr(nodeList, config) {\n const nodes = Array.prototype.slice\n .call(nodeList)\n .filter((x) => x instanceof HTMLElement);\n const instances = [];\n for (let i = 0; i < nodes.length; i++) {\n const node = nodes[i];\n try {\n if (node.getAttribute(\"data-fp-omit\") !== null)\n continue;\n if (node._flatpickr !== undefined) {\n node._flatpickr.destroy();\n node._flatpickr = undefined;\n }\n node._flatpickr = FlatpickrInstance(node, config || {});\n instances.push(node._flatpickr);\n }\n catch (e) {\n console.error(e);\n }\n }\n return instances.length === 1 ? instances[0] : instances;\n}\nif (typeof HTMLElement !== \"undefined\" &&\n typeof HTMLCollection !== \"undefined\" &&\n typeof NodeList !== \"undefined\") {\n HTMLCollection.prototype.flatpickr = NodeList.prototype.flatpickr = function (config) {\n return _flatpickr(this, config);\n };\n HTMLElement.prototype.flatpickr = function (config) {\n return _flatpickr([this], config);\n };\n}\nvar flatpickr = function (selector, config) {\n if (typeof selector === \"string\") {\n return _flatpickr(window.document.querySelectorAll(selector), config);\n }\n else if (selector instanceof Node) {\n return _flatpickr([selector], config);\n }\n else {\n return _flatpickr(selector, config);\n }\n};\nflatpickr.defaultConfig = {};\nflatpickr.l10ns = {\n en: Object.assign({}, English),\n default: Object.assign({}, English),\n};\nflatpickr.localize = (l10n) => {\n flatpickr.l10ns.default = Object.assign(Object.assign({}, flatpickr.l10ns.default), l10n);\n};\nflatpickr.setDefaults = (config) => {\n flatpickr.defaultConfig = Object.assign(Object.assign({}, flatpickr.defaultConfig), config);\n};\nflatpickr.parseDate = createDateParser({});\nflatpickr.formatDate = createDateFormatter({});\nflatpickr.compareDates = compareDates;\nif (typeof jQuery !== \"undefined\" && typeof jQuery.fn !== \"undefined\") {\n jQuery.fn.flatpickr = function (config) {\n return _flatpickr(this, config);\n };\n}\nDate.prototype.fp_incr = function (days) {\n return new Date(this.getFullYear(), this.getMonth(), this.getDate() + (typeof days === \"string\" ? parseInt(days, 10) : days));\n};\nif (typeof window !== \"undefined\") {\n window.flatpickr = flatpickr;\n}\nexport default flatpickr;\n","import flatpickr from 'flatpickr'\nconst Brazilian = require('flatpickr/dist/l10n/pt').default.pt\n\nclass BRDateTimePicker {\n constructor(name, component) {\n this.name = name\n this.component = component\n // localization global\n flatpickr.localize(Brazilian)\n\n this._buildDateTimePicker()\n }\n\n _buildDateTimePicker() {\n let format = 'd/m/Y'\n let time = false\n let noCalendar = false\n switch (this.component.getAttribute('data-type')) {\n case 'date':\n format = 'd/m/Y'\n time = false\n noCalendar = false\n break\n case 'time':\n format = 'H:i'\n time = true\n noCalendar = true\n break\n case 'datetime-local':\n format = 'd/m/Y H:i'\n time = true\n noCalendar = false\n break\n default:\n format = 'd/m/Y'\n time = false\n noCalendar = false\n break\n }\n\n const config = {\n dateFormat: format,\n enableTime: time,\n minDate: '2020-01',\n minuteIncrement: 1,\n mode: this.component.getAttribute('data-mode'),\n nextArrow:\n '',\n noCalendar: noCalendar,\n prevArrow:\n '',\n time_24hr: true,\n wrap: true,\n disableMobile: 'true',\n }\n\n flatpickr(this.component, config)\n }\n}\n\nexport default BRDateTimePicker\n","/**\n * Classe do componente BRFooter\n */\nclass BRFooter {\n /**\n * Instancia um componente BRFooter\n * @param {string} name - Nome do componente (br-footer)\n * @param {object} component - Objeto que referencia o elemento DOM do componente\n */\n constructor(name, component) {\n this.name = name\n this.component = component\n this._setUp()\n this._setBehavior()\n }\n\n /**\n * Controla a configuração inicial do footer\n */\n _setUp() {\n this.list = this.component.querySelector('.br-list.horizontal')\n }\n\n /**\n * Controla os comportamentos do footer\n * @private\n */\n _setBehavior() {\n this._setCollapseBehavior()\n\n window.onresize = function () {\n if (window.matchMedia('(min-width: 992px)').matches) {\n window.document\n .querySelectorAll('.br-footer .br-list:not(.horizontal)')\n .forEach((trigger) => {\n trigger.style.display = 'block'\n })\n } else {\n window.document\n .querySelectorAll('.br-footer .br-list:not(.horizontal)')\n .forEach((trigger) => {\n trigger.style.display = 'none'\n })\n\n window.document\n .querySelectorAll('.br-footer i')\n .forEach((iconComponent) => {\n iconComponent.classList.remove('fa-angle-up')\n iconComponent.classList.add('fa-angle-down')\n })\n }\n }\n }\n\n /**\n * Trata do comportamento de collapse do Footer\n * @private\n */\n _setCollapseBehavior() {\n this.britems = []\n if (this.list) {\n this.list.querySelectorAll('.br-list').forEach((trigger) => {\n if (window.matchMedia('(max-width: 992px)').matches) {\n trigger.style.display = 'none'\n }\n })\n\n this.list.querySelectorAll('.br-item').forEach((trigger) => {\n trigger.addEventListener('click', (e) => {\n if (window.matchMedia('(max-width: 992px)').matches) {\n this._showList(e)\n }\n })\n this.britems.push(trigger)\n })\n }\n }\n\n /**\n * Controla a abertura e fachamento da lista\n * @param {object} e - Objeto Event\n * @private\n */\n _showList(e) {\n parent = e.target.parentElement\n\n parent = parent.classList.contains('col-2')\n ? e.target.parentElement\n : e.target.parentElement.parentElement\n parent = parent.classList.contains('col-2')\n ? parent\n : e.target.parentElement.parentElement.parentElement\n // debugger\n this._closeAllColumns(parent)\n\n parent.querySelectorAll('.br-list ').forEach((trigger) => {\n trigger.style.display =\n trigger.style.display === 'block' ? 'none' : 'block'\n\n const iconComponent = parent.querySelector('i')\n\n trigger.style.display === 'block'\n ? this._iconAngleUP(iconComponent)\n : this._iconAngleDOWN(iconComponent)\n })\n }\n\n /**\n * Fecha todas colunas do Footer\n */\n _closeAllColumns(target) {\n this.component\n .querySelectorAll('.br-list:not(.horizontal)')\n .forEach((trigger) => {\n if (target !== trigger.parentElement) {\n trigger.style.display = 'none'\n this.component\n .querySelectorAll('.header i')\n .forEach((iconComponent) => {\n this._iconAngleDOWN(iconComponent)\n })\n }\n })\n }\n\n /**\n *Inclui ícone 'fa-angle-up'\n * @param {objetc} iconComponent - Elemento DOM que representa um ícone\n * @private\n */\n _iconAngleUP(iconComponent) {\n iconComponent.classList.remove('fa-angle-down')\n iconComponent.classList.add('fa-angle-up')\n }\n\n /**\n * Inclui ícone 'fa-angle-down'\n * @param {object} iconComponent - Elemento DOM que representa um ícone\n * @private\n */\n _iconAngleDOWN(iconComponent) {\n iconComponent.classList.remove('fa-angle-up')\n iconComponent.classList.add('fa-angle-down')\n }\n}\n\nexport default BRFooter\n","import Tooltip from '../../partial/js/behavior/tooltip'\n\nclass BRHeader {\n constructor(name, component) {\n this.name = name\n this.component = component\n this.componentSearch = this.component.querySelector('.header-search')\n this.componentSearchInput = this.component.querySelector(\n '.header-search input'\n )\n this.componentSearchTrigger = this.component.querySelector(\n '[data-toggle=\"search\"]'\n )\n this.componentSearchDismiss = this.component.querySelector(\n '[data-dismiss=\"search\"]'\n )\n this.hideDrop = null\n this.menuTrigger = this.component.querySelector(\n '[data-target=\"#main-navigation\"]'\n )\n this._setBehavior()\n }\n\n _setBehavior() {\n this._setLoginBehavior()\n this._setLogoutBehavior()\n this._setSearchBehaviors()\n this._setKeyboardBehaviors()\n this._setDropdownBehavior()\n this._setSticky()\n }\n\n _setLoginBehavior() {\n for (const login of this.component.querySelectorAll(\n '[data-trigger=\"login\"]'\n )) {\n login.addEventListener('click', () => {\n const loginParent = login.closest('.header-login')\n loginParent.querySelector('.header-sign-in').classList.add('d-none')\n loginParent.querySelector('.header-avatar').classList.remove('d-none')\n })\n }\n }\n\n _setLogoutBehavior() {\n for (const logout of this.component.querySelectorAll(\n '[data-trigger=\"logout\"]'\n )) {\n logout.addEventListener('click', () => {\n const logoutParent = logout.closest('.header-login')\n logoutParent.querySelector('.avatar').classList.remove('show')\n logoutParent\n .querySelector('[data-toggle=\"dropdown\"]')\n .classList.remove('active')\n logoutParent.querySelector('.header-sign-in').classList.remove('d-none')\n logoutParent.querySelector('.header-avatar').classList.add('d-none')\n })\n }\n }\n\n _setSearchBehaviors() {\n // Abrir busca\n if (this.componentSearchTrigger) {\n this.componentSearchTrigger.addEventListener('focus', () => {\n this._cleanDropDownHeader()\n })\n this.componentSearchTrigger.addEventListener('click', () => {\n this._openSearch()\n })\n }\n\n // Fechar busca\n if (this.componentSearchDismiss) {\n this.componentSearchDismiss.addEventListener('click', () => {\n this._closeSearch()\n })\n }\n }\n\n _setKeyboardBehaviors() {\n if (this.componentSearchInput) {\n this.componentSearchInput.addEventListener('keydown', (event) => {\n switch (event.keyCode) {\n // Tecla ESC\n case 27:\n this._closeSearch()\n break\n default:\n break\n }\n })\n }\n for (const trigger of this.component.querySelectorAll(\n '.dropdown [data-toggle=\"dropdown\"]'\n )) {\n trigger.addEventListener('keydown', (event) => {\n switch (event.keyCode) {\n // Tecla ESC\n case 32:\n if (event.target.parentNode.classList.contains('show')) {\n event.target.parentNode.click()\n event.target.parentNode.classList.remove('show')\n event.target.classList.remove('active')\n event.stopPropagation()\n }\n break\n default:\n break\n }\n })\n }\n }\n _openSearch() {\n if (this.componentSearch) {\n this.componentSearch.classList.add('active')\n this.componentSearch.querySelector('input').focus()\n }\n }\n\n _closeSearch() {\n if (this.componentSearch) {\n this.componentSearch.classList.remove('active')\n //this.componentSearchTrigger.focus()\n this._nextFocusElement().focus()\n }\n }\n\n handleEvent(event) {\n const hasNotficiationElemeent = this.component\n .querySelector('.br-notification')\n .contains(event.target)\n if (!hasNotficiationElemeent) {\n if (this.activateTr !== event.target.parentNode) {\n this._cleanDropDownHeaderRef(this.component)\n }\n }\n }\n\n _setDropdownBehavior() {\n // TODO: Trocar o código abaixo pelo utilitário dropdown\n this.cleaned = false\n let hideDrop\n this.activateTr = 'teste'\n\n for (const trigger of this.component.querySelectorAll(\n '.dropdown [data-toggle=\"dropdown\"]'\n )) {\n // eslint-disable-next-line no-loop-func\n trigger.addEventListener('click', (event) => {\n this._headerTooltip()\n clearTimeout(hideDrop)\n\n this.activateTr = trigger\n document.addEventListener('mousedown', this, false)\n event.stopImmediatePropagation()\n // Toggle de abrir / fechar\n const hasShow = trigger.classList.contains('active')\n\n if (hasShow) {\n trigger.classList.remove('active')\n trigger.closest('.dropdown').classList.remove('show')\n } else {\n this._cleanDropDownHeader()\n trigger.classList.add('active')\n trigger.closest('.dropdown').classList.add('show')\n\n // Evita que o componente feche o drop ao navegar pelo teclado\n const next = this._nextFocusElement()\n next.addEventListener('focus', (event) => {\n clearTimeout(hideDrop)\n })\n }\n event.stopPropagation()\n return ''\n })\n\n // Faz o drop fechar ao clicar fora\n // eslint-disable-next-line no-loop-func\n }\n this.menuTrigger.addEventListener('focus', (event) => {\n this._cleanDropDownHeader()\n })\n }\n\n _headerTooltip() {\n if (this.TooltipExampleList) {\n this.TooltipExampleList.forEach((tooltipElem) => {\n tooltipElem.component.remove()\n tooltipElem.popperInstance.destroy()\n })\n }\n this.TooltipExampleList = []\n\n this.component\n .querySelectorAll('.notification-tooltip')\n .forEach((TooltipExample) => {\n const texttooltip = TooltipExample.getAttribute('data-tooltip-text')\n const config = {\n activator: TooltipExample,\n placement: 'top',\n textTooltip: texttooltip,\n }\n const x = new Tooltip(config)\n\n this.TooltipExampleList.push(x)\n })\n }\n\n _cleanDropDownHeaderRef(ref) {\n if (this.cleaned === false) {\n for (const trigger of ref.querySelectorAll('.dropdown.show')) {\n trigger.classList.remove('show')\n trigger.parentNode.classList.remove('show')\n for (const button of ref.querySelectorAll('.br-button')) {\n button.classList.remove('active')\n }\n }\n }\n this.cleaned = false\n }\n\n _cleanDropDownHeader() {\n this._cleanDropDownHeaderRef(this.component)\n }\n\n _setSticky() {\n if (this.component.hasAttribute('data-sticky')) {\n window.onscroll = () => {\n if (window.pageYOffset > this.component.offsetHeight) {\n this.component.classList.add('sticky', 'compact')\n } else {\n this.component.classList.remove('sticky', 'compact')\n }\n }\n }\n }\n\n _nextFocusElement() {\n //add all elements we want to include in our selection\n const focussableElements =\n 'a:not([disabled]), button:not([disabled]), input[type=text]:not([disabled]), [tabindex]:not([disabled]):not([tabindex=\"-1\"])'\n if (document.activeElement) {\n const focussable = Array.prototype.filter.call(\n document.body.querySelectorAll(focussableElements),\n (element) => {\n //check for visibility while always include the current activeElement\n return (\n element.offsetWidth > 0 ||\n element.offsetHeight > 0 ||\n element === document.activeElement\n )\n }\n )\n const index = focussable.indexOf(document.activeElement)\n if (index > -1) {\n const nextElement = focussable[index + 1] || focussable[0]\n //nextElement.focus();\n return nextElement\n }\n }\n return null\n }\n}\n\nexport default BRHeader\n","class BRInput {\n constructor(name, component) {\n this.name = name\n this.component = component\n this._currentFocus = -1\n this._setBehavior()\n }\n\n _setBehavior() {\n this._setPasswordViewBehavior()\n this._setAutocompleteBehavior()\n }\n\n _setPasswordViewBehavior() {\n for (const inputPassword of this.component.querySelectorAll(\n 'input[type=\"password\"]'\n )) {\n if (!inputPassword.disabled) {\n for (const buttonIcon of inputPassword.parentNode.querySelectorAll(\n '.br-button'\n )) {\n buttonIcon.addEventListener(\n 'click',\n (event) => {\n this._toggleShowPassword(event)\n },\n false\n )\n }\n }\n }\n }\n\n _toggleShowPassword(event) {\n for (const icon of event.currentTarget.querySelectorAll('.fas')) {\n if (icon.classList.contains('fa-eye')) {\n icon.classList.remove('fa-eye')\n icon.classList.add('fa-eye-slash')\n for (const input of this.component.querySelectorAll(\n 'input[type=\"password\"]'\n )) {\n input.setAttribute('type', 'text')\n }\n } else if (icon.classList.contains('fa-eye-slash')) {\n icon.classList.remove('fa-eye-slash')\n icon.classList.add('fa-eye')\n for (const input of this.component.querySelectorAll(\n 'input[type=\"text\"]'\n )) {\n input.setAttribute('type', 'password')\n }\n }\n }\n }\n\n _setAutocompleteBehavior() {\n for (const inputAutocomplete of this.component.querySelectorAll(\n 'input.search-autocomplete'\n )) {\n inputAutocomplete.addEventListener(\n 'input',\n (event) => {\n this._clearSearchItems()\n this._buildSearchItems(event.currentTarget)\n },\n false\n )\n inputAutocomplete.addEventListener(\n 'keydown',\n (event) => {\n this._handleArrowKeys(event)\n },\n false\n )\n }\n }\n\n _buildSearchItems(element) {\n const searchList = window.document.createElement('div')\n searchList.setAttribute('class', 'search-items')\n this.component.appendChild(searchList)\n if (element.value !== '') {\n for (const data of this.dataList) {\n if (\n data.substr(0, element.value.length).toUpperCase() ===\n element.value.toUpperCase()\n ) {\n const item = window.document.createElement('div')\n item.innerHTML = `${data.substr(\n 0,\n element.value.length\n )}`\n item.innerHTML += data.substr(element.value.length)\n item.innerHTML += ``\n item.addEventListener(\n 'click',\n (event) => {\n for (const input of event.currentTarget.querySelectorAll(\n 'input[type=\"hidden\"]'\n )) {\n element.value = input.value\n }\n this._clearSearchItems()\n },\n false\n )\n searchList.appendChild(item)\n }\n }\n } else {\n this._clearSearchItems()\n }\n }\n\n _clearSearchItems() {\n for (const searchItems of this.component.querySelectorAll(\n '.search-items'\n )) {\n for (const item of searchItems.querySelectorAll('div')) {\n searchItems.removeChild(item)\n }\n this.component.removeChild(searchItems)\n }\n }\n\n _handleArrowKeys(event) {\n switch (event.keyCode) {\n case 13:\n if (this._currentFocus > -1) {\n event.preventDefault()\n for (const searchItems of this.component.querySelectorAll(\n '.search-items'\n )) {\n for (const itemActive of searchItems.querySelectorAll(\n 'div.is-active'\n )) {\n itemActive.click()\n }\n }\n this._currentFocus = -1\n }\n break\n case 38:\n if (this._currentFocus > 0) {\n this._currentFocus -= 1\n }\n this._switchFocus()\n break\n case 40:\n for (const searchItems of this.component.querySelectorAll(\n '.search-items'\n )) {\n if (\n this._currentFocus <\n searchItems.querySelectorAll('div').length - 1\n ) {\n this._currentFocus += 1\n }\n }\n this._switchFocus()\n break\n default:\n break\n }\n }\n\n _switchFocus() {\n for (const searchItems of this.component.querySelectorAll(\n '.search-items'\n )) {\n for (const [index, item] of searchItems\n .querySelectorAll('div')\n .entries()) {\n if (index === this._currentFocus) {\n item.classList.add('is-active')\n }\n if (index !== this._currentFocus) {\n item.classList.remove('is-active')\n }\n }\n }\n }\n\n setAutocompleteData(dataList) {\n this.dataList = dataList\n }\n}\n\nexport default BRInput\n","class BRItem {\n constructor(name, component) {\n this.name = name\n this.component = component\n this._setBehavior()\n }\n\n _setBehavior() {\n this._setCheckboxSelection()\n this._setRadioSelection()\n }\n\n _setCheckboxSelection() {\n for (const checkbox of this.component.querySelectorAll(\n '.br-checkbox input[type=\"checkbox\"]'\n )) {\n if (checkbox.checked) {\n this.component.classList.add('selected')\n }\n checkbox.addEventListener('click', (event) => {\n if (event.currentTarget.checked) {\n this.component.classList.add('selected')\n } else {\n this.component.classList.remove('selected')\n }\n })\n }\n }\n\n _setRadioSelection() {\n for (const radio of this.component.querySelectorAll(\n '.br-radio input[type=\"radio\"]'\n )) {\n if (radio.checked) {\n radio.setAttribute('checked', '')\n this.component.classList.add('selected')\n }\n radio.addEventListener('click', (event) => {\n for (const item of this.component.parentElement.querySelectorAll(\n '.br-item'\n )) {\n for (const radioItem of item.querySelectorAll(\n '.br-radio input[type=\"radio\"]'\n )) {\n if (radioItem === event.currentTarget) {\n radioItem.setAttribute('checked', '')\n item.classList.add('selected')\n } else {\n radioItem.removeAttribute('checked')\n item.classList.remove('selected')\n }\n }\n }\n })\n }\n }\n}\n\nexport default BRItem\n","import Collapse from '../../partial/js/behavior/collapse'\n/**\n * Classe do componente BRList\n */\nclass BRList {\n /**\n * Instancia um componente BRList\n * @param {string} name - Nome do componente (br-list)\n * @param {object} component - Objeto que referencia o elemento DOM do componente\n */\n constructor(name, component) {\n this.name = name\n this.component = component\n this._setBehavior()\n }\n\n /**\n * Controla os comportamentos da list\n * @private\n */\n _setBehavior() {\n this._setCollapseBehavior()\n }\n\n /**\n * Trata do comportamento de collapse da list\n * @private\n */\n _setCollapseBehavior() {\n // data-toggle=\"data-toggle\"\n // debugger\n\n this.component.querySelectorAll('.br-list').forEach((trigger) => {\n // trigger.style.display = 'none'\n })\n this.component\n .querySelectorAll('[data-toggle=\"collapse\"]')\n .forEach((trigger) => {\n const config = {\n trigger,\n iconToShow: 'fa-chevron-down',\n iconToHide: 'fa-chevron-up',\n useIcons: true,\n }\n const collapse = new Collapse(config)\n collapse.setBehavior()\n })\n }\n}\nexport default BRList\n","class BRMenu {\n constructor(name, component) {\n this.name = name\n this.component = component\n this.id = this.component.id\n this.breakpoints = this.component.dataset.breakpoints\n ? this.component.dataset.breakpoints.split(' ')\n : ['col-sm-4', 'col-lg-3']\n this.pushShadow = 'shadow-lg-right'\n this.trigger = document.querySelector(`[data-target=\"#${this.id}\"]`)\n this.contextual = this.component.querySelector('[data-toggle=\"contextual\"]')\n this.dismiss = this.component.querySelectorAll('[data-dismiss=\"menu\"]')\n this.scrim = this.component.querySelector('.menu-scrim')\n this.componentFolders = this.component.querySelectorAll('.menu-folder')\n this.componentItems = this.component.querySelectorAll('.menu-item')\n this._setBehavior()\n }\n\n _setBehavior() {\n this._toggleMenu()\n this._setDropMenu()\n this._setSideMenu()\n this._setKeyboardBehaviors()\n this._setBreakpoints()\n this._setView()\n window.addEventListener('resize', () => {\n this._setView()\n })\n }\n\n _setView() {\n const template = document.querySelector('body')\n const menuContextual = document.querySelector('.menu-trigger')\n const panel = document.querySelector('.menu-panel')\n if (menuContextual && window.innerWidth < 992) {\n template.classList.add('mb-5')\n } else {\n template.classList.remove('mb-5')\n }\n }\n\n _setBreakpoints() {\n if (!this.component.classList.contains('push') && !this.contextual) {\n this.component\n .querySelector('.menu-panel')\n .classList.add(...this.breakpoints)\n }\n }\n\n _setKeyboardBehaviors() {\n // Fechar com tecla ESC\n this.component.addEventListener('keyup', (event) => {\n switch (event.code) {\n case 'Escape':\n this._closeMenu()\n default:\n break\n }\n })\n // Fechar com Tab fora do menu\n if (this.scrim) {\n this.scrim.addEventListener('keyup', () => {\n return this._closeMenu()\n })\n }\n }\n\n _toggleMenu() {\n const trigger = this.contextual ? this.contextual : this.trigger\n // Clicar no trigger\n if (trigger) {\n trigger.addEventListener('click', () => {\n // Fechar Menu caso esteja aberto\n if (this.component.classList.contains('active')) {\n this._closeMenu()\n return\n }\n // Abre Menu\n this._openMenu()\n this._focusNextElement()\n })\n }\n // Clicar no dismiss\n for (const close of this.dismiss) {\n close.addEventListener('click', () => {\n return this._closeMenu()\n })\n }\n }\n\n _openMenu() {\n this.component.classList.add('active')\n if (this.component.classList.contains('push')) {\n this.component.classList.add(...this.breakpoints, 'px-0')\n }\n this.component.focus()\n }\n\n _closeMenu() {\n this.component.classList.remove('active')\n if (this.component.classList.contains('push')) {\n this.component.classList.remove(...this.breakpoints, 'px-0')\n }\n this._focusNextElement()\n }\n\n _setDropMenu() {\n // Configura Drop Menu para filho imediato de \".menu-folder\"\n for (const item of this.component.querySelectorAll(\n '.menu-folder > a.menu-item'\n )) {\n // Inclui ícone de Drop Menu\n this._createIcon(item, 'fa-angle-down')\n // Configura como Drop Menu\n item.parentNode.classList.add('drop-menu')\n // Inicializa Drop Menu\n this._toggleDropMenu(item)\n }\n }\n\n _focusNextElement() {\n //add all elements we want to include in our selection\n const focussableElements =\n 'a:not([disabled]), button:not([disabled]), input[type=text]:not([disabled]), [tabindex]:not([disabled]):not([tabindex=\"-1\"])'\n if (document.activeElement) {\n const focussable = Array.prototype.filter.call(\n document.body.querySelectorAll(focussableElements),\n (element) => {\n //check for visibility while always include the current activeElement\n return (\n element.offsetWidth > 0 ||\n element.offsetHeight > 0 ||\n element === document.activeElement\n )\n }\n )\n const index = focussable.indexOf(document.activeElement)\n if (index > -1) {\n const nextElement = focussable[index + 1] || focussable[0]\n nextElement.focus()\n }\n }\n }\n\n _setSideMenu() {\n // Configura Side Menu para quem não for filho imediato de \".menu-folder\"\n for (const ul of this.component.querySelectorAll('a.menu-item + ul')) {\n if (!ul.parentNode.classList.contains('menu-folder')) {\n // Inclui ícone de Side Menu\n this._createIcon(ul.previousElementSibling, 'fa-angle-right')\n // Configura como Side Menu\n ul.parentNode.classList.add('side-menu')\n // Inicializa Side Menu\n this._toggleSideMenu(ul.previousElementSibling)\n }\n }\n }\n\n _toggleDropMenu(element) {\n element.addEventListener('click', () => {\n // Fecha Drop Menu caso esteja aberto\n if (element.parentNode.classList.contains('active')) {\n element.parentNode.classList.remove('active')\n return\n }\n\n // Abre Drop Menu\n element.parentNode.classList.add('active')\n })\n }\n\n _toggleSideMenu(element) {\n element.addEventListener('click', () => {\n // Esconde todos os itens\n this._hideItems(element)\n\n // Mostra itens do Side Menu ativo\n this._showItems(element.parentNode)\n\n // Fecha Side Menu caso esteja aberto\n if (element.parentNode.classList.contains('active')) {\n this._closeSideMenu(element)\n element.focus()\n return\n }\n\n // Abre Side Menu\n element.parentNode.classList.add('active')\n element.focus()\n })\n }\n\n _closeSideMenu(element) {\n element.parentNode.classList.remove('active')\n // Verifica se existe Side Menu anterior, caso contrário mostra todos os itens de volta\n const parentFolder = element.parentNode.closest('.side-menu.active')\n ? element.parentNode.closest('.side-menu.active')\n : element.closest('.menu-body')\n this._showItems(parentFolder)\n }\n\n _hideItems(element) {\n for (const item of element\n .closest('.menu-body')\n .querySelectorAll('.menu-item')) {\n item.setAttribute('hidden', '')\n }\n }\n\n _showItems(element) {\n for (const item of element.querySelectorAll('.menu-item')) {\n item.removeAttribute('hidden')\n }\n }\n\n _createIcon(element, icon) {\n const menuIconContainer = document.createElement('span')\n menuIconContainer.classList.add('support')\n\n const menuIcon = document.createElement('i')\n menuIcon.classList.add('fas')\n menuIcon.classList.add(icon)\n menuIcon.setAttribute('aria-hidden', 'true')\n\n menuIconContainer.appendChild(menuIcon)\n element.appendChild(menuIconContainer)\n }\n}\n\nexport default BRMenu\n","class BR {\n constructor(name, component) {\n this.name = name\n this.component = component\n this._setBehavior()\n }\n\n _setBehavior() {\n for (const button of this.component.querySelectorAll(\n '.br-message .close'\n )) {\n button.addEventListener('click', () => {\n this._dismiss(this.component)\n })\n }\n }\n\n _dismiss(component) {\n component.parentNode.removeChild(component)\n }\n}\n\nexport default BR\n","import BRScrim from '../scrim/scrim'\nclass BRModal {\n constructor(name, component) {\n this.name = name\n this.component = component\n this._setBehavior()\n }\n\n _setBehavior() {\n for (const brScrim of window.document.querySelectorAll('.br-scrim')) {\n const scrim = new BRScrim('br-scrim', brScrim)\n for (const button of window.document.querySelectorAll(\n '.br-scrim + button'\n )) {\n button.addEventListener('click', () => {\n scrim.showScrim()\n })\n }\n }\n }\n}\n\nexport default BRModal\n","import Tooltip from '../../partial/js/behavior/tooltip'\nclass BRNotification {\n constructor(name, component) {\n this.name = name\n this.component = component\n this.menuBtns = component.querySelectorAll('.contextual-btn')\n this.hideEvents = ['mouseleave', 'blur']\n this._setBehavior()\n }\n\n _hideNotification(action) {\n const notification = action.parentNode.parentNode\n notification.setAttribute('hidden', '')\n }\n\n _hideAllNotifications(action) {\n const notifications =\n action.parentNode.parentNode.parentNode.querySelectorAll('.br-item')\n notifications.forEach((notification) => {\n notification.setAttribute('hidden', '')\n })\n }\n\n _setBehavior() {\n for (const button of this.component.querySelectorAll(\n '.br-notification .close'\n )) {\n button.addEventListener('click', () => {\n this._dismiss(this.component)\n })\n }\n this._notificationTooltip()\n }\n\n _notificationTooltip() {\n const TooltipExampleList = []\n\n window.document\n .querySelectorAll(':not(.br-header) .notification-tooltip')\n .forEach((TooltipNotification) => {\n const texttooltip =\n TooltipNotification.getAttribute('data-tooltip-text')\n const config = {\n activator: TooltipNotification,\n placement: 'top',\n textTooltip: texttooltip,\n }\n for (\n parent = TooltipNotification.parentNode;\n parent;\n parent = parent.parentNode\n ) {\n if (parent.classList)\n if (parent.classList.contains('header-avatar')) {\n return ''\n }\n }\n TooltipExampleList.push(new Tooltip(config))\n return ''\n })\n }\n\n _dismiss(component) {\n component.classList.add('close')\n }\n}\n\nexport default BRNotification\n","class BRPagination {\n constructor(name, component) {\n this.name = name\n this.component = component\n this.currentPage = 1\n this._setBehaviors()\n }\n\n _setBehaviors() {\n this._setActive()\n this._dropdownBehavior()\n }\n\n _setLayout() {\n const ul = this.component.querySelector('ul')\n const pages = this.component.querySelectorAll('.page')\n pages.forEach((page) => {\n if (page.classList.contains('active')) {\n this.currentPage = parseInt(page.querySelector('a'))\n }\n page.classList.remove('d-none')\n })\n\n if (this.currentPage === 1) {\n ul.querySelector('[data-previous-page]').setAttribute('disabled', '')\n } else {\n ul.querySelector('[data-previous-page]').removeAttribute('disabled')\n }\n\n if (this.currentPage === pages.length) {\n ul.querySelector('[data-next-page').setAttribute('disabled', '')\n } else {\n ul.querySelector('[data-next-page]').removeAttribute('disabled')\n }\n\n if (pages.length > 9) {\n if (this.currentPage < 6) {\n if (ul.querySelector('[data-previous-interval]')) {\n ul.querySelector('[data-previous-interval]').remove()\n }\n for (let page = 7; page < pages.length - 1; page++) {\n pages[page].classList.add('d-none')\n }\n if (!ul.querySelector('[data-next-interval]')) {\n ul.insertBefore(\n this._createIntervalElement('next'),\n ul.children[ul.children.length - 2]\n )\n }\n }\n if (this.currentPage >= 6 && this.currentPage < pages.length - 4) {\n for (let page = this.currentPage - 4; page > 0; page--) {\n pages[page].classList.add('d-none')\n }\n if (!ul.querySelector('[data-previous-interval]')) {\n ul.insertBefore(\n this._createIntervalElement('previous'),\n ul.children[2]\n )\n }\n for (let page = this.currentPage + 2; page < pages.length - 1; page++) {\n pages[page].classList.add('d-none')\n }\n if (!ul.querySelector('[data-next-interval]')) {\n ul.insertBefore(\n this._createIntervalElement('next'),\n ul.children[ul.children.length - 2]\n )\n }\n }\n if (this.currentPage >= pages.length - 4) {\n if (ul.querySelector('[data-next-interval]')) {\n ul.querySelector('[data-next-interval]').remove()\n }\n for (let page = pages.length - 8; page > 0; page--) {\n pages[page].classList.add('d-none')\n }\n if (!ul.querySelector('[data-previous-interval]')) {\n ul.insertBefore(\n this._createIntervalElement('previous'),\n ul.children[2]\n )\n }\n }\n }\n }\n\n _createIntervalElement(type) {\n const interval = document.createElement('li')\n interval.setAttribute(`data-${type}-interval`, '')\n\n const a = document.createElement('a')\n a.setAttribute('href', 'javascript:void(0)')\n\n const icon = document.createElement('i')\n icon.classList.add('fas', 'fa-ellipsis-h')\n\n a.appendChild(icon)\n interval.appendChild(a)\n\n return interval\n }\n\n _setActive() {\n for (const page of this.component.querySelectorAll('.page')) {\n page.addEventListener('click', (event) => {\n this._selectPage(event.currentTarget)\n })\n }\n }\n\n _dropdownBehavior() {\n for (const dropdown of this.component.querySelectorAll(\n '[data-toggle=\"dropdown\"]'\n )) {\n this._dropdownInit(dropdown)\n this._dropdownToggle(dropdown)\n }\n }\n\n _dropdownToggle(element) {\n element.addEventListener('click', () => {\n if (element.getAttribute('aria-expanded') === 'false') {\n this._dropdownOpen(element)\n return\n }\n this._dropdownClose(element)\n })\n window.document.addEventListener('click', (event) => {\n if (!this.component.contains(event.target)) {\n this._dropdownClose(element)\n }\n })\n }\n\n _dropdownInit(element) {\n element.parentElement.classList.add('dropdown')\n element.nextElementSibling.setAttribute('role', 'menu')\n element.setAttribute('aria-haspopup', 'true')\n this._dropdownClose(element)\n }\n\n _dropdownOpen(element) {\n element.setAttribute('aria-expanded', 'true')\n element.nextElementSibling.removeAttribute('hidden')\n }\n\n _dropdownClose(element) {\n element.setAttribute('aria-expanded', 'false')\n element.nextElementSibling.setAttribute('hidden', '')\n }\n\n _selectPage(currentPage) {\n this.component.querySelectorAll('.page').forEach((page) => {\n page.classList.remove('active')\n })\n currentPage.classList.add('active')\n this._setLayout()\n }\n}\n\nexport default BRPagination\n","class BRScrim {\n constructor(name, component) {\n this.name = name\n this.component = component\n this._setType()\n this._setBehavior()\n }\n\n _setType() {\n if (this.component.classList.contains('foco')) {\n this._type = 'foco'\n }\n if (this.component.classList.contains('legibilidade')) {\n this._type = 'legibilidade'\n }\n if (this.component.classList.contains('inibicao')) {\n this._type = 'inibicao'\n }\n }\n\n _setBehavior() {\n if (this.component.classList.contains('foco')) {\n this.component.addEventListener('click', (event) => {\n this.outsideclick = true\n if (event.target.classList.contains('br-scrim')) {\n this.hideScrim(event)\n }\n })\n\n const allComp = this.component.querySelectorAll(\n `[data-dismiss=${this.component.id}]`\n )\n\n for (const buttonComponent of allComp) {\n buttonComponent.addEventListener('click', (event) => {\n this.component.classList.remove('active')\n })\n }\n }\n }\n\n hideScrim(event) {\n event.currentTarget.classList.remove('active')\n }\n\n showScrim() {\n if (this._type === 'foco') {\n this.component.classList.add('active')\n }\n }\n}\nconst scrimList = []\nexport default BRScrim\nfor (const buttonBloco1 of window.document.querySelectorAll(\n '.scrimexemplo button'\n)) {\n buttonBloco1.addEventListener('click', () => {\n const scrscrim = window.document.querySelector('#scrimexample')\n const scrimfoco = new BRScrim('br-scrim', scrscrim)\n scrimfoco.showScrim()\n })\n}\n/**\n * Exemplo de scrim com muito texto\n */\nfor (const scrimexamplebig of window.document.querySelectorAll(\n '#scrimexemplo-big'\n)) {\n scrimexamplebig.addEventListener('click', () => {\n const scrscrim = window.document.querySelector('#scrimfocobig')\n const scrimfoco = new BRScrim('br-scrim', scrscrim)\n scrimfoco.showScrim()\n })\n}\n\n//Exemplo de scrim close\n","class BRSelect {\n constructor(name, component) {\n this.name = name\n this.component = component\n this.multiple = component.hasAttribute('multiple')\n this._setOptionsList()\n this._setBehavior()\n }\n\n get selected() {\n return this._optionSelected('value')\n }\n\n get selectedValue() {\n return this._optionSelected('inputValue')\n }\n\n _optionSelected(strOption) {\n let selected = []\n for (const [index, option] of this.optionsList.entries()) {\n if (!this.multiple) {\n if (option.selected) {\n selected = option[strOption]\n break\n }\n } else {\n if (index > 0 && option.selected) {\n selected.push(option[strOption])\n }\n }\n }\n return selected\n }\n\n _removeNotFoundElement() {\n const list = this.component.querySelector('.br-list')\n // debugger\n if (list.querySelector('.br-item.disabled')) {\n list.removeChild(list.querySelector('.br-item.disabled'))\n }\n }\n\n _addNotFoundElement() {\n const tag = document.createElement('div')\n tag.classList.add('br-item')\n tag.classList.add('disabled')\n tag.appendChild(document.createTextNode('Item não encontrado'))\n const list = this.component.querySelector('.br-list')\n list.appendChild(tag)\n }\n _setOptionsList() {\n this.optionsList = []\n for (const item of this.component.querySelectorAll('.br-list .br-item')) {\n for (const input of item.querySelectorAll(\n '.br-radio input, .br-checkbox input'\n )) {\n const option = {\n element: item,\n focus: false,\n inputValue: input.value,\n selected: false,\n value: input.nextElementSibling.innerText,\n visible: true,\n }\n this.optionsList.push(option)\n }\n }\n }\n\n resetOptionsList() {\n this._unsetSelectionBehavior()\n this._setOptionsList()\n this._setSelectionBehavior()\n }\n\n _setBehavior() {\n this._setDropdownBehavior()\n this._setKeyboardBehavior()\n this._setSelectionBehavior()\n this._setFilterBehavior()\n }\n\n _setDropdownBehavior() {\n for (const input of this.component.querySelectorAll(\n '.br-input input[type=\"text\"]'\n )) {\n input.addEventListener('focus', () => {\n this._openSelect()\n this._resetFocus()\n })\n }\n for (const trigger of this.component.querySelectorAll(\n '.br-input .br-button[data-trigger]'\n )) {\n trigger.addEventListener('click', () => {\n for (const list of this.component.querySelectorAll('.br-list')) {\n if (list.hasAttribute('expanded')) {\n this._closeSelect()\n } else {\n this._openSelect()\n }\n }\n })\n }\n window.document.addEventListener('click', (event) => {\n if (!this.component.contains(event.target)) {\n this._closeSelect()\n }\n })\n }\n\n _setKeyboardBehavior() {\n for (const input of this.component.querySelectorAll(\n '.br-input input[type=\"text\"]'\n )) {\n input.addEventListener('keydown', this._handleKeydownOnInput.bind(this))\n }\n for (const list of this.component.querySelectorAll('.br-list')) {\n // eslint-disable-next-line complexity\n list.addEventListener('keydown', this._handleKeydownOnList.bind(this))\n }\n }\n\n _unsetKeyboardBehavior() {\n for (const input of this.component.querySelectorAll(\n '.br-input input[type=\"text\"]'\n )) {\n input.removeEventListener('keydown', this._handleKeydownOnInput, false)\n }\n for (const list of this.component.querySelectorAll('.br-list')) {\n // eslint-disable-next-line complexity\n list.addEventListener('keydown', this._handleKeydownOnList.bind(this))\n }\n }\n\n _handleKeydownOnInput(event) {\n //Close Select\n if (event.shiftKey && event.key === 'Tab') {\n this._closeSelect()\n this._resetFocus()\n }\n if (event.key === 'Tab' && !event.shiftKey) {\n event.target.parentNode.querySelector('.br-button').focus()\n }\n if (event.keyCode === 40) {\n event.preventDefault()\n for (const list of this.component.querySelectorAll('.br-list')) {\n list.focus()\n if (list === document.activeElement) {\n this._getNextItem().focus()\n }\n }\n }\n }\n\n _handleKeydownOnList(event) {\n event.preventDefault()\n switch (event.keyCode) {\n case 9:\n this._closeSelect()\n this._resetFocus()\n break\n case 27:\n this._closeSelect()\n break\n case 32:\n this._setKeyClickOnOption(event.currentTarget)\n break\n case 38:\n this._getPreviousItem().focus()\n break\n case 40:\n this._getNextItem().focus()\n break\n default:\n break\n }\n }\n\n _setKeyClickOnOption(list) {\n for (const [index, item] of list.querySelectorAll('.br-item').entries()) {\n if (this.optionsList[index].focus) {\n for (const check of item.querySelectorAll(\n '.br-radio input[type=\"radio\"], .br-checkbox input[type=\"checkbox\"]'\n )) {\n check.click()\n }\n }\n }\n }\n\n _setDefaultSelected() {\n const selectedItems = this.component.querySelectorAll('.br-list .selected')\n\n const iterable = typeof selectedItems[Symbol.iterator]\n if (selectedItems !== null && iterable === 'function') {\n for (const item of selectedItems) {\n this._setSelected(this._positionSelected(item), item)\n }\n }\n }\n\n _positionSelected(component) {\n for (const [index, componente] of this.component\n .querySelectorAll('.br-list .br-item')\n .entries()) {\n if (componente === component) {\n return index\n }\n }\n return 0\n }\n\n _handleClickOnCheck(index, item, event) {\n if (!this.multiple) {\n for (const [index2, item2] of this.component\n .querySelectorAll('.br-list .br-item')\n .entries()) {\n this._removeSelected(index2, item2)\n }\n this._setSelected(index, item)\n this._closeSelect()\n } else if (event.currentTarget.hasAttribute('checked')) {\n this._removeSelected(index, item)\n } else {\n this._setSelected(index, item)\n }\n if (item.hasAttribute('data-all')) {\n for (const check of item.querySelectorAll(\n '.br-checkbox input[type=\"checkbox\"]'\n )) {\n if (!check.hasAttribute('checked')) {\n this._setAttribute()\n item.querySelectorAll('label')[0].innerText = 'Selecionar Todos'\n } else {\n for (const item2 of this.component.querySelectorAll(\n '.br-list .br-item'\n )) {\n for (const check2 of item2.querySelectorAll(\n '.br-checkbox input[type=\"checkbox\"]'\n )) {\n if (!check2.hasAttribute('checked')) {\n check2.click()\n }\n }\n }\n item.querySelectorAll('label')[0].innerText = 'Deselecionar Todos'\n }\n }\n }\n }\n\n _setSelectionBehavior() {\n this.selectionHandler = []\n this._setDefaultSelected()\n for (const [index, item] of this.component\n .querySelectorAll('.br-list .br-item')\n .entries()) {\n for (const check of item.querySelectorAll(\n '.br-radio input[type=\"radio\"], .br-checkbox input[type=\"checkbox\"]'\n )) {\n this.selectionHandler.push({\n element: check,\n handler: this._handleClickOnCheck.bind(this, index, item),\n })\n check.addEventListener('click', this.selectionHandler[index].handler)\n }\n }\n }\n\n _unsetSelectionBehavior() {\n this.selectionHandler.forEach((item) => {\n item.element.removeEventListener('click', item.handler, false)\n })\n }\n\n _setFilterBehavior() {\n for (const input of this.component.querySelectorAll(\n '.br-input input[type=\"text\"]'\n )) {\n input.addEventListener('input', (event) => {\n let allHidden = true\n this._filter(event.currentTarget.value)\n for (const option of this.optionsList) {\n if (option.visible) {\n allHidden = false\n }\n }\n\n if (allHidden) {\n // event.currentTarget.value = event.currentTarget.value.slice(0, -1)\n this._filter(event.currentTarget.value)\n }\n })\n }\n }\n\n _filter(value) {\n let hasVisible = false\n for (const [index, item] of this.component\n .querySelectorAll('.br-list .br-item')\n .entries()) {\n this._removeNotFoundElement()\n if (!this.optionsList[index]) {\n continue\n }\n if (\n this.optionsList[index].value\n .toUpperCase()\n .indexOf(value.toUpperCase()) === -1\n ) {\n item.classList.add('d-none')\n this.optionsList[index].visible = false\n } else {\n item.classList.remove('d-none')\n this.optionsList[index].visible = true\n hasVisible = true\n }\n }\n if (hasVisible === false) {\n // debugger\n this._addNotFoundElement()\n }\n }\n\n _setAttribute() {\n for (const item2 of this.component.querySelectorAll('.br-list .br-item')) {\n for (const check2 of item2.querySelectorAll(\n '.br-checkbox input[type=\"checkbox\"]'\n )) {\n if (check2.hasAttribute('checked')) {\n check2.click()\n }\n }\n }\n }\n _setSelected(index, item) {\n item.classList.add('selected')\n for (const check of item.querySelectorAll('.br-radio, .br-checkbox')) {\n for (const input of check.querySelectorAll(\n 'input[type=\"radio\"], input[type=\"checkbox\"]'\n )) {\n input.setAttribute('checked', '')\n }\n }\n this.optionsList[index].selected = true\n this._setInput()\n }\n\n _removeSelected(index, item) {\n item.classList.remove('selected')\n for (const check of item.querySelectorAll('.br-radio, .br-checkbox')) {\n for (const input of check.querySelectorAll(\n 'input[type=\"radio\"], input[type=\"checkbox\"'\n )) {\n input.removeAttribute('checked')\n }\n this.optionsList[index].selected = false\n this._setInput()\n }\n }\n\n _setInput() {\n for (const input of this.component.querySelectorAll(\n '.br-input input[type=\"text\"]'\n )) {\n if (!this.multiple) {\n input.value = this.selected\n } else if (this.selected.length === 0) {\n input.value = ''\n } else if (this.selected.length === 1) {\n input.value = this.selected\n } else {\n input.value = `${this.selected[0]} + (${this.selected.length - 1})`\n }\n }\n }\n\n // eslint-disable-next-line complexity\n _getNextItem() {\n const list = this.component.querySelectorAll('.br-list .br-item')\n let iFocused\n let iVisible\n for (iFocused = 0; iFocused < this.optionsList.length; iFocused++) {\n if (this.optionsList[iFocused].focus) {\n for (\n iVisible = iFocused + 1;\n iVisible < this.optionsList.length;\n iVisible++\n ) {\n if (this.optionsList[iVisible].visible) {\n break\n }\n }\n break\n }\n }\n if (iFocused === this.optionsList.length) {\n for (const [index, option] of this.optionsList.entries()) {\n if (option.visible) {\n option.focus = true\n return list[index]\n }\n }\n } else if (iVisible < this.optionsList.length) {\n this.optionsList[iFocused].focus = false\n this.optionsList[iVisible].focus = true\n return list[iVisible]\n } else {\n return list[iFocused]\n }\n return ''\n }\n\n _getPreviousItem() {\n const list = this.component.querySelectorAll('.br-list .br-item')\n let iFocused\n let iVisible\n for (iFocused = 0; iFocused < this.optionsList.length; iFocused++) {\n if (this.optionsList[iFocused].focus) {\n for (iVisible = iFocused - 1; iVisible > 0; iVisible--) {\n if (this.optionsList[iVisible].visible) {\n break\n }\n }\n break\n }\n }\n if (iFocused === 0) {\n return list[iFocused]\n } else {\n this.optionsList[iFocused].focus = false\n this.optionsList[iVisible].focus = true\n return list[iVisible]\n }\n }\n\n _resetInput() {\n for (const input of this.component.querySelectorAll(\n '.br-input input[type=\"text\"]'\n )) {\n input.value = ''\n }\n }\n\n _resetFocus() {\n for (const option of this.optionsList) {\n option.focus = false\n }\n }\n\n _resetVisible() {\n const list = this.component.querySelectorAll('.br-list .br-item')\n for (const [index, option] of this.optionsList.entries()) {\n option.visible = true\n list[index].classList.remove('d-none')\n }\n }\n\n _openSelect() {\n for (const list of this.component.querySelectorAll('.br-list')) {\n list.setAttribute('expanded', '')\n }\n for (const icon of this.component.querySelectorAll(\n '.br-input .br-button i'\n )) {\n icon.classList.remove('fa-angle-down')\n icon.classList.add('fa-angle-up')\n }\n this._resetInput()\n }\n\n _closeSelect() {\n for (const list of this.component.querySelectorAll('.br-list')) {\n list.removeAttribute('expanded')\n }\n for (const icon of this.component.querySelectorAll(\n '.br-input .br-button i'\n )) {\n icon.classList.remove('fa-angle-up')\n icon.classList.add('fa-angle-down')\n }\n this._setInput()\n this._resetFocus()\n this._resetVisible()\n }\n}\n\nexport default BRSelect\n","class BRStep {\n constructor(name, component) {\n /**\n * Instancia um componente carousel\n * @param {string} name - Component name\n * @param {object} component - DOM root Object reference\n * @property {number} activeStepNum - Número do palco ativo\n * @property {array} DOMStrings - instancia dos elementos internos do componente\n */\n this.name = name\n this.component = component\n this.activeStepNum = 0\n // DOM elements\n this.DOMstrings = {\n stepsBarClass: 'step-progress',\n stepsBar: this.component.querySelector('.step-progress'),\n stepsBtnClass: 'step-progress-btn',\n stepsBtns: this.component.querySelectorAll('.step-progress-btn'),\n }\n\n /**\n * Remove class from a set of items\n * @param {object} elemSet - Elelment's List\n * @param {string} button - Attribute name\n */\n this.removeAttributes = (elemSet, attrName) => {\n elemSet.forEach((elem) => {\n elem.removeAttribute(attrName)\n })\n }\n\n /**\n * Return exect parent node of the element\n * @param {object} elem - element\n * @param {string} button - father's class\n */\n this.findParent = (elem, parentClass) => {\n let currentNode = elem\n while (!currentNode.classList.contains(parentClass)) {\n currentNode = currentNode.parentNode\n }\n return currentNode\n }\n\n /** get active button step number\n * @param {object} elem - element\n */\n this.getActiveStep = (elem) => {\n return Array.from(this.DOMstrings.stepsBtns).indexOf(elem)\n }\n\n /** Set all steps before clicked (and clicked too) to active\n * @param {number} num - step number\n */\n this.setActiveStep = (num) => {\n // remove active state from all the state\n this.removeAttributes(this.DOMstrings.stepsBtns, 'active')\n // this.removeAttributes(this.DOMstrings.stepsBtns, 'disabled')\n\n // set picked items to active\n this.DOMstrings.stepsBtns.forEach((elem, index) => {\n if (index === num) {\n elem.removeAttribute('disabled')\n elem.setAttribute('active', '')\n }\n })\n this.activeStepNum = num\n }\n\n /**\n * Prints numbers labels into steps\n */\n this.setStepsNum = () => {\n this.DOMstrings.stepsBtns.forEach((elem, index) => {\n const img = elem.querySelector('.step-icon')\n const text = this.component.getAttribute('data-type') === 'text'\n if (text) {\n elem.setAttribute(\n 'step-num',\n `${index + 1}/${this.DOMstrings.stepsBtns.length}`\n )\n } else if (img) {\n elem.setAttribute('step-num', '')\n } else elem.setAttribute('step-num', index + 1)\n })\n }\n\n /** Filters active step into range\n * @param {number} num - step number\n */\n this.setStep = (num) => {\n const activeStep = num <= this.DOMstrings.stepsBtns.length ? num - 1 : 0\n this.setActiveStep(activeStep)\n }\n\n this._setBehavior()\n }\n\n /**\n * Set component behaviors\n * @private\n */\n _setBehavior() {\n // STEPS BAR CLICK FUNCTION\n this.DOMstrings.stepsBar.addEventListener('click', (e) => {\n // check if click target is a step button\n const eventTarget = e.target\n if (!eventTarget.classList.contains(`${this.DOMstrings.stepsBtnClass}`)) {\n e.target.parentNode.click()\n return\n }\n // get active button step number\n const activeStepNum = this.getActiveStep(eventTarget)\n // set all steps before clicked (and clicked too) to active\n this.setActiveStep(activeStepNum)\n })\n\n // Set Steps label number\n this.setStepsNum()\n // Set default active step\n if (this.component.hasAttribute('data-inital')) {\n this.setStep(this.component.getAttribute('data-inital'))\n } else this.setStep(1)\n\n // set steps buttons grid style if it needs to scroll horizontaly\n if (\n !this.component.classList.contains('vertical') &&\n !this.component.hasAttribute('data-scroll')\n ) {\n const stepsWidth =\n Math.round(100 / this.DOMstrings.stepsBtns.length) - 0.5\n // this.DOMstrings.stepsBar.style.gridTemplateColumns = `repeat(auto-fit, minmax(100px, ${stepsWidth}% ))`\n }\n }\n}\n\nexport default BRStep\n","export class SwipeEventDispatcher {\n constructor(element, options = {}) {\n this.evtMap = {\n SWIPE_DOWN: [],\n SWIPE_LEFT: [],\n SWIPE_RIGHT: [],\n SWIPE_UP: [],\n }\n this.xDown = null\n this.yDown = null\n this.element = element\n\n element.addEventListener(\n 'touchstart',\n (evt) => {\n return this.handleTouchStart(evt)\n },\n false\n )\n element.addEventListener(\n 'touchend',\n (evt) => {\n return this.handleTouchEnd(evt)\n },\n false\n )\n }\n\n on(evt, cb) {\n this.evtMap[evt].push(cb)\n }\n\n off(evt, lcb) {\n this.evtMap[evt] = this.evtMap[evt].filter((cb) => {\n return cb !== lcb\n })\n }\n\n trigger(evt, data) {\n this.evtMap[evt].map((handler) => {\n return handler(data)\n })\n }\n\n handleTouchStart(evt) {\n this.xDown = evt.touches[0].clientX\n this.yDown = evt.touches[0].clientY\n }\n\n handleTouchEnd(evt) {\n const deltaX = evt.changedTouches[0].clientX - this.xDown\n const deltaY = evt.changedTouches[0].clientY - this.yDown\n if (Math.abs(deltaX) > Math.abs(deltaY)) {\n deltaX < 0 ? this.trigger('SWIPE_LEFT') : this.trigger('SWIPE_RIGHT')\n } else {\n deltaY > 0 ? this.trigger('SWIPE_DOWN') : this.trigger('SWIPE_UP')\n }\n }\n}\nexport default SwipeEventDispatcher\n","class BRTab {\n constructor(name, component) {\n this.name = name\n this.component = component\n this._setBehavior()\n }\n\n _setBehavior() {\n for (const ancor of this.component.querySelectorAll('.tab-nav')) {\n this.height = ancor.clientHeight\n this.scollsizes = ancor.scrollHeight - ancor.clientHeight\n\n this.scrollHeight = Math.max(\n this.component.scrollWidth,\n document.documentElement.scrollWidth,\n this.component.offsetWidth,\n document.documentElement.offsetWidth,\n this.component.clientWidth,\n document.documentElement.clientWidth\n )\n this.leftPosition = this.component.offsetWidth - 1\n // debugger\n ancor.style.setProperty('--height-nav', `${this.height}px`)\n ancor.style.setProperty('--right-gradient-nav', `${this.leftPosition}px`)\n\n this.positionScroll(ancor, this.component)\n\n this.navigationRight = this.navigationRight + 4\n\n if (this.navigationRight <= this.lastItempos - 5) {\n ancor.classList.add('tab-nav-right')\n }\n\n ancor.onscroll = (event) => {\n this.positionScroll(ancor, this.component)\n\n if (this.navigationLeft <= 0) {\n ancor.classList.add('tab-nav-left')\n } else {\n ancor.classList.remove('tab-nav-left')\n }\n\n if (this.navigationRight <= this.lastItempos - 5) {\n ancor.classList.add('tab-nav-right')\n } else {\n ancor.classList.remove('tab-nav-right')\n }\n }\n }\n\n for (const ancor of this.component.querySelectorAll(\n '.tab-nav .tab-item:not([not-tab=\"true\"]) button'\n )) {\n ancor.addEventListener(\n 'click',\n (event) => {\n this._switchTab(event.currentTarget.parentElement)\n this._switchContent(event.currentTarget.parentElement)\n },\n false\n )\n ancor.addEventListener('keyup', (e) => {\n e.preventDefault()\n this.positionKeyboard(e, this)\n })\n }\n this.tabitems = this.component.querySelectorAll('tab-item')\n }\n\n positionKeyboard(event, componentTab) {\n // event.preventDefault()\n const keys = {\n end: 35,\n home: 36,\n left: 37,\n right: 39,\n tab: 9,\n space: 32,\n }\n const key = event.keyCode\n this.tabitems = this.component.querySelectorAll('.tab-item')\n this.buttons = this.component.querySelectorAll('button')\n switch (key) {\n case keys.end:\n event.preventDefault()\n // Activate last tab\n this.clean()\n this._switchTab(this.tabitems[this.tabitems.length - 1])\n this._switchContent(this.tabitems[this.tabitems.length - 1])\n this.tabitems[this.tabitems.length - 1].focus()\n break\n case keys.home:\n event.preventDefault()\n this.clean()\n this._switchTab(this.tabitems[0])\n this._switchContent(this.tabitems[0])\n this.tabitems[0].focus()\n event.stopPropagation()\n break\n // Up and down are in keydown\n // because we need to prevent page scroll >:)\n case keys.left:\n event.preventDefault()\n this.position(event.target, -1)\n event.stopPropagation()\n break\n case keys.right:\n event.preventDefault()\n this.position(event.target, 1)\n event.stopPropagation()\n break\n case keys.tab:\n event.preventDefault()\n this.position(event.target, 0)\n event.stopPropagation()\n break\n case 32:\n event.preventDefault()\n event.target.click()\n event.stopPropagation()\n break\n default:\n break\n }\n }\n\n positionActive(target, direction) {\n let contComponent = 0\n let contComponentActive = 0\n\n const tabItems2 =\n target.parentElement.parentElement.querySelectorAll('.tab-item')\n for (const component of tabItems2) {\n if (\n component.classList.contains('is-active') ||\n component.classList.contains('active')\n ) {\n contComponentActive = contComponent\n }\n contComponent += 1\n }\n if (\n tabItems2.length > contComponentActive + direction &&\n contComponentActive + direction >= 0\n ) {\n this._switchTab(tabItems2[contComponentActive + direction])\n tabItems2[contComponentActive + direction].focus()\n let x = ''\n if (tabItems2[contComponentActive + direction].querySelector('button')) {\n x = tabItems2[contComponentActive + direction].querySelector('button')\n x.focus()\n }\n }\n }\n\n position(target, direction) {\n this.positionQuery(target, direction, '.tab-item')\n }\n\n positionQuery(target, direction, query) {\n let contComponent = 0\n const contComponentActive = 0\n let contComponentFocus = 0\n const tabItems2 = target.parentElement.parentElement.querySelectorAll(query)\n for (const component of tabItems2) {\n if (component.querySelector('.focus-visible')) {\n contComponentFocus = contComponent\n }\n contComponent += 1\n }\n tabItems2[contComponentFocus + direction].querySelector('button').focus()\n if (\n tabItems2.length > contComponentFocus + direction &&\n contComponentFocus + direction >= 0\n ) {\n if (tabItems2[contComponentFocus + direction].querySelector('button')) {\n tabItems2[contComponentFocus + direction]\n .querySelector('button')\n .focus()\n }\n }\n }\n\n setPosition(target) {\n let contComponent = 0\n let contComponentActive = 0\n\n const tabItems2 =\n target.parentElement.parentElement.querySelectorAll('.tab-item')\n for (const component of tabItems2) {\n if (\n component.classList.contains('is-active') ||\n component.classList.contains('active')\n ) {\n contComponentActive = contComponent\n }\n contComponent += 1\n }\n if (tabItems2.length > contComponentActive && contComponentActive >= 0) {\n this.clean()\n\n this._switchContent(tabItems2[contComponentActive])\n\n // x[0].focus()\n }\n }\n\n clean() {\n for (const ancor of event.currentTarget.parentElement.querySelectorAll(\n 'button'\n )) {\n ancor.classList.remove('focus-visible')\n ancor.classList.remove('is-active')\n ancor.classList.remove('active')\n }\n for (const ancor of event.currentTarget.parentElement.querySelectorAll(\n 'tab-item'\n )) {\n ancor.classList.remove('is-active')\n ancor.classList.remove('active')\n }\n }\n\n positionScroll(ancor, component) {\n this.navItems = ancor.querySelectorAll('.tab-item')\n this.lastItempos = Math.ceil(\n this.navItems[this.navItems.length - 1].getBoundingClientRect().right\n )\n this.navigationLeft = Math.floor(\n this.navItems[0].getBoundingClientRect().left\n )\n this.navigationRight = Math.floor(ancor.getBoundingClientRect().right)\n }\n _switchTab(currentTab) {\n for (const tabItem of this.component.querySelectorAll(\n '.tab-nav .tab-item:not([not-tab=\"true\"])'\n )) {\n if (tabItem === currentTab) {\n tabItem.classList.add('active')\n } else {\n tabItem.classList.remove('is-active')\n tabItem.classList.remove('active')\n }\n }\n }\n\n _switchContent(currentTab) {\n for (const button of currentTab.querySelectorAll('button')) {\n for (const tabPanel of this.component.querySelectorAll(\n '.tab-content .tab-panel'\n )) {\n if (\n button.getAttribute('data-panel') === tabPanel.getAttribute('id') ||\n button.getAttribute('data-target') === tabPanel.getAttribute('id')\n ) {\n tabPanel.classList.add('active')\n } else {\n tabPanel.classList.remove('is-active')\n tabPanel.classList.remove('active')\n }\n }\n }\n }\n}\n\nexport default BRTab\n","import Collapse from '../../partial/js/behavior/collapse'\nimport Dropdown from '../../partial/js/behavior/dropdown'\n\n/* eslint-disable complexity */\nclass BRTable {\n constructor(name, component, sequence) {\n this.name = name\n this.component = component\n this._header = this.component.querySelector('.header, .table-header')\n this._table = this.component.querySelector('table')\n this._sequence = sequence\n this._setBehaviors()\n }\n\n _setBehaviors() {\n this._makeResponsiveTable()\n this._headerBehavior()\n this._setHeaderWidth()\n this._searchBehavior()\n this._dropdownBehavior()\n this._collpaseBehavior()\n this._densityBehavior()\n this._setClickActions()\n this._getBRHeaderHeight()\n }\n\n _getBRHeaderHeight() {\n const BRHeader = document.querySelector('.br-header')\n if (BRHeader) {\n window.addEventListener('scroll', () => {\n this._header.style.top = `${BRHeader.clientHeight}px`\n })\n }\n }\n\n _makeResponsiveTable() {\n const responsiveClass = 'responsive'\n if (!this.component.querySelector(`.${responsiveClass}`)) {\n const responsiveElement = document.createElement('div')\n responsiveElement.classList.add(responsiveClass)\n responsiveElement.appendChild(this._table)\n this._header.after(responsiveElement)\n }\n }\n\n _headerBehavior() {\n // this._hideThead()\n\n window.addEventListener('resize', () => {\n // this._hideThead()\n })\n\n for (const responsive of this.component.querySelectorAll('.responsive')) {\n if (window.innerWidth > 575) {\n // this._setSyncScroll(responsive)\n }\n }\n\n // this._cloneHeaders()\n }\n\n _makeScroller() {\n const scrollerTag = document.createElement('div')\n // this._setSyncScroll(scrollerTag)\n scrollerTag.classList.add('scroller')\n for (const header of this._table.querySelectorAll('thead tr th')) {\n const clonedHeader = document.createElement('div')\n clonedHeader.classList.add('item')\n clonedHeader.innerHTML = header.innerHTML\n if (header.offsetWidth) {\n clonedHeader.style.flex = `1 0 ${header.offsetWidth}px`\n }\n scrollerTag.appendChild(clonedHeader)\n const checkbox = clonedHeader.querySelector('.br-checkbox')\n if (checkbox) {\n const input = checkbox.querySelector('input')\n const label = checkbox.querySelector('label')\n input.id = `${input.id}-clone`\n label.setAttribute('for', input.id)\n }\n }\n return scrollerTag\n }\n\n _cloneHeaders() {\n const headersTag = document.createElement('div')\n headersTag.classList.add('headers')\n headersTag.style.top = `${this._header.offsetHeight}px`\n headersTag.appendChild(this._makeScroller())\n this._header.after(headersTag)\n }\n\n _hideThead() {\n this._table.style.marginTop = `-${\n this._table.querySelector('thead').offsetHeight\n }px`\n }\n\n _setSyncScroll(element) {\n element.classList.add('syncscroll')\n element.setAttribute('name', `table-${this._sequence}`)\n element.setAttribute('style', 'overflow-y: hidden')\n // element.setAttribute('tabindex', 0)\n }\n\n _setHeaderWidth() {\n for (const clonedHeader of this.component.querySelectorAll(\n '.headers > div'\n )) {\n for (const [index, header] of this.component\n .querySelectorAll('table thead tr th')\n .entries()) {\n clonedHeader.children[index].style.flex = `1 0 ${header.offsetWidth}px`\n }\n }\n }\n _dropdownBehavior() {\n this.component\n .querySelectorAll('[data-toggle=\"dropdown\"]')\n .forEach((trigger) => {\n const config = {\n trigger,\n iconToShow: 'fa-chevron-down',\n iconToHide: 'fa-chevron-up',\n useIcons: true,\n }\n const dropdown = new Dropdown(config)\n dropdown.setBehavior()\n })\n }\n\n _collpaseBehavior() {\n this.component\n .querySelectorAll('[data-toggle=\"collapse\"]')\n .forEach((trigger) => {\n const config = {\n trigger,\n iconToShow: 'fa-chevron-down',\n iconToHide: 'fa-chevron-up',\n useIcons: true,\n }\n const collapse = new Collapse(config)\n collapse.setBehavior()\n })\n }\n\n _searchBehavior() {\n if (this.component.dataset.search) {\n const trigger = this.component.querySelector('[data-toggle=\"search\"]')\n const target = this.component.querySelector('.search-bar')\n const dismiss = this.component.querySelector('[data-dismiss=\"search\"]')\n\n // Inicializar\n this._searchInit(trigger)\n\n // Abre busca\n trigger.addEventListener('click', () => {\n return this._searchOpen(trigger, target)\n })\n\n // Fecha busca\n dismiss.addEventListener('click', () => {\n return this._searchClose(trigger, target)\n })\n target.querySelector('input').addEventListener('keydown', (event) => {\n if (event.key === 'Escape') {\n this._searchClose(trigger, target)\n }\n })\n }\n }\n\n _searchInit(trigger) {\n trigger.setAttribute('aria-expanded', 'false')\n }\n\n _searchOpen(trigger, target) {\n trigger.setAttribute('aria-expanded', 'true')\n target.classList.add('show')\n target.parentElement.classList.add('show')\n target.querySelector('input').focus()\n }\n\n _searchClose(trigger, target) {\n target.querySelector('input').value = ''\n target.classList.remove('show')\n target.parentElement.classList.remove('show')\n trigger.focus()\n trigger.setAttribute('aria-expanded', 'false')\n }\n\n _densityBehavior() {\n const desityTriggers = this.component.querySelectorAll('[data-density]')\n for (const desityTrigger of desityTriggers) {\n desityTrigger.addEventListener('click', () => {\n this.component.classList.remove('small', 'medium', 'large')\n this.component.classList.add(desityTrigger.dataset.density)\n // this._hideThead()\n this._dropdownClose(\n desityTrigger\n .closest('.dropdown')\n .querySelector('[data-toggle=\"dropdown\"]')\n )\n })\n }\n }\n\n _setClickActions() {\n const headerCheckbox = this.component.querySelector(\n '.headers [type=\"checkbox\"]'\n )\n const tableCheckboxes = this.component.querySelectorAll(\n 'tbody [type=\"checkbox\"]'\n )\n const selectedBar = this.component.querySelector('.selected-bar')\n const checkAlls = this.component.querySelectorAll(\n '[data-toggle=\"check-all\"]'\n )\n for (const checkAll of checkAlls) {\n checkAll.addEventListener('click', () => {\n this._checkAllTable(selectedBar, tableCheckboxes, headerCheckbox)\n if (checkAll.parentElement.classList.contains('br-list')) {\n this._dropdownClose(\n checkAll\n .closest('.dropdown')\n .querySelector('[data-toggle=\"dropdown\"]')\n )\n }\n })\n }\n if (tableCheckboxes) {\n for (const checkbox of tableCheckboxes) {\n checkbox.addEventListener('change', () => {\n this._checkRow(checkbox, selectedBar, tableCheckboxes, headerCheckbox)\n })\n }\n }\n }\n\n _setRow(checkbox, check) {\n const tr = checkbox.parentNode.parentNode.parentNode\n if (check) {\n tr.classList.add('is-selected')\n checkbox.parentNode.classList.add('is-inverted')\n checkbox.checked = true\n } else {\n tr.classList.remove('is-selected')\n checkbox.parentNode.classList.remove('is-inverted')\n checkbox.checked = false\n }\n }\n\n _checkRow(checkbox, selectedBar, tableCheckboxes, headerCheckbox) {\n const check = checkbox.checked\n this._setRow(checkbox, check)\n this._setSelectedBar(\n check ? 1 : -1,\n selectedBar,\n tableCheckboxes,\n headerCheckbox\n )\n }\n\n _checkAllRows(tableCheckboxes) {\n for (const checkbox of tableCheckboxes) {\n this._setRow(checkbox, true)\n }\n }\n\n _uncheckAllRows(tableCheckboxes) {\n for (const checkbox of tableCheckboxes) {\n this._setRow(checkbox, false)\n }\n }\n\n _checkAllTable(selectedBar, tableCheckboxes, headerCheckbox) {\n let count = tableCheckboxes.length\n const infoCount = selectedBar.querySelector('.info .count')\n const total = parseInt(infoCount.innerHTML, 10)\n if (total === count) {\n this._uncheckAllRows(tableCheckboxes)\n count = -1 * count\n } else {\n this._checkAllRows(tableCheckboxes)\n }\n this._setSelectedBar(count, selectedBar, tableCheckboxes, headerCheckbox)\n }\n\n _setSelectedBar(count, selectedBar, tableCheckboxes, headerCheckbox) {\n const infoCount = selectedBar.querySelector('.info .count')\n const infoText = selectedBar.querySelector('.info .text')\n const total = count < 2 ? parseInt(infoCount.innerHTML, 10) + count : count\n if (total > 0) {\n selectedBar.classList.add('show')\n infoCount.innerHTML = total\n infoText.innerHTML = total > 1 ? 'itens selecionados' : 'item selecionado'\n if (headerCheckbox) headerCheckbox.parentNode.classList.add('is-checking')\n if (total === tableCheckboxes.length) {\n if (headerCheckbox) {\n headerCheckbox.checked = true\n headerCheckbox.parentNode.classList.remove('is-checking')\n }\n }\n } else {\n infoCount.innerHTML = 0\n if (headerCheckbox) {\n headerCheckbox.checked = false\n headerCheckbox.parentNode.classList.remove('is-checking')\n }\n selectedBar.classList.remove('show')\n }\n }\n\n /**\n * @fileoverview syncscroll - scroll several areas simultaniously\n * @version 0.0.3\n *\n * @license MIT, see http://github.com/asvd/intence\n * @copyright 2015 asvd \n */\n // static _syncscroll() {\n // const scroll = 'scroll'\n // const elems = document.getElementsByClassName(`sync${scroll}`)\n // const EventListener = 'EventListener'\n // const length = 'length'\n // const names = {}\n // // clearing existing listeners\n // let i, j, el, found, name\n // for (name in names) {\n // if (Object.prototype.hasOwnProperty.call(names, name)) {\n // for (i = 0; i < names[name][length]; i++) {\n // names[name][i][`remove${EventListener}`](\n // scroll,\n // names[name][i].syn,\n // 0\n // )\n // }\n // }\n // }\n // // setting-up the new listeners\n // for (i = 0; i < elems[length]; i++) {\n // found = j = 0\n // el = elems[i]\n // if (!(name = el.getAttribute('name'))) {\n // // name attribute is not set\n // continue\n // }\n // el = el[`${scroll}er`] || el // needed for intence\n // // searching for existing entry in array of names;\n // // searching for the element in that entry\n // for (; j < (names[name] = names[name] || [])[length]; j++) {\n // found |= names[name][j] === el\n // }\n // if (!found) {\n // names[name].push(el)\n // }\n // el.eX = el.eY = 0\n // this._elSyn(el, name, scroll, elems, EventListener, length, names)\n // }\n // }\n\n static _elSyn(el, name, scroll, elems, EventListener, length, names) {\n const addEventListener = `add${EventListener}`\n const client = 'client'\n const Height = 'Height'\n const Left = 'Left'\n const mathRound = Math.round\n const Top = 'Top'\n const Width = 'Width'\n el[addEventListener](\n scroll,\n () => {\n const otherElems = names[name]\n let scrollX = el[scroll + Left]\n let scrollY = el[scroll + Top]\n const xRate = scrollX / (el[scroll + Width] - el[client + Width])\n const yRate = scrollY / (el[scroll + Height] - el[client + Height])\n const updateX = scrollX !== el.eX\n const updateY = scrollY !== el.eY\n el.eX = scrollX\n el.eY = scrollY\n otherElems.forEach((element) => {\n if (element !== el) {\n if (\n updateX &&\n mathRound(\n element[scroll + Left] -\n (scrollX = element.eX =\n mathRound(\n xRate *\n (element[scroll + Width] - element[client + Width])\n ))\n )\n ) {\n element[scroll + Left] = scrollX\n }\n if (\n updateY &&\n mathRound(\n element[scroll + Top] -\n (scrollY = element.eY =\n mathRound(\n yRate *\n (element[scroll + Height] - element[client + Height])\n ))\n )\n ) {\n element[scroll + Top] = scrollY\n }\n }\n })\n },\n 0\n )\n }\n}\n\nexport default BRTable\n","class BRTag {\n constructor(name, component) {\n this.name = name\n this.component = component\n this._setBehavior()\n }\n\n _setBehavior() {\n if (this.component.classList.contains('interaction-select')) {\n // Inicializa selecionado\n if (this.component.querySelector('input').getAttribute('checked')) {\n this.component.classList.add('selected')\n }\n // debugger\n\n this._setSelection()\n }\n this._closeTag()\n }\n\n _setSelection() {\n const label = this.component.querySelector('label')\n const input = this.component.querySelector('input')\n const tagRadio = input.getAttribute('type') === 'radio' ? true : false\n\n label.addEventListener('click', (event) => {\n this._toggleSelection(input, event)\n })\n input.addEventListener('keydown', (event) => {\n if (event.code === 'Space' || event.code === 'Enter') {\n this._toggleSelection(input, event)\n }\n })\n }\n\n _toggleRadio(input) {\n // debugger\n if (this.component.querySelector('[type=\"radio\"')) {\n const nameTag = input.getAttribute('name')\n\n for (const tagRadio of window.document.querySelectorAll(\n `[name=${nameTag}]`\n )) {\n this._removeCheck(tagRadio)\n }\n }\n }\n\n _toggleSelection(input, event) {\n event.preventDefault()\n this._toggleRadio(input)\n if (input.getAttribute('checked')) {\n this._removeCheck(input)\n return\n }\n\n this._setCheck(input)\n }\n\n _setCheck(input) {\n input.setAttribute('checked', 'checked')\n input.parentElement.classList.add('selected')\n }\n\n _removeCheck(input) {\n input.removeAttribute('checked')\n input.parentElement.classList.remove('selected')\n }\n\n _closeTag() {\n const button = this.component.querySelector('.br-button.close')\n\n if (button) {\n const brTag = button.closest('.br-tag')\n\n brTag.addEventListener('click', () => {\n button.closest('.br-tag').remove()\n })\n }\n }\n}\n\nconst tagList = []\nfor (const brTag of window.document.querySelectorAll('.br-tag')) {\n tagList.push(new BRTag('br-tab', brTag))\n}\n\nexport default BRTag\n","class BRTextArea {\n constructor(name, component) {\n this.name = name\n this.component = component\n this._setBehavior()\n this._setKeyup()\n }\n\n _setBehavior() {\n this.limit = this.component.querySelector('.limit')\n this.current = this.component.querySelector('.current')\n if (this.component.querySelector('textarea') !== null) {\n this.maximum = this.component\n .querySelector('textarea')\n .getAttribute('maxlength')\n }\n\n this.characters = this.component.querySelector('.characters')\n this.currentValue = this.component.querySelector('.current')\n }\n\n _setKeyup() {\n this.component.addEventListener('keyup', (event) => {\n const characterCount = this.component.querySelector('textarea').textLength\n if (characterCount <= this.maximum && !this.characters) {\n this.limit.innerHTML = ''\n this.currentValue.innerHTML = `Restam ${\n this.maximum - characterCount\n } caracteres`\n }\n // Com limite de caracteres\n if (!this.characters) {\n if (characterCount === 0 && this.limit.innerHTML === '') {\n this.limit.innerHTML = `Limite máximo de ${this.maximum} caracteres`\n this.currentValue.innerHTML = ''\n }\n }\n // Sem limite de caracteres\n else {\n this.characters.innerHTML = `${characterCount} caracteres digitados`\n }\n })\n }\n}\n\nexport default BRTextArea\n","import { createPopper } from '@popperjs/core'\nclass BRTooltip {\n constructor(name, component) {\n this.name = name\n this.component = component\n this.activator = component.previousSibling.previousSibling\n const place = component.getAttribute('place')\n const positions = ['top', 'right', 'bottom', 'left']\n this.popover = component.hasAttribute('popover')\n this.notification = component.classList.contains('br-notification')\n this.timer = component.getAttribute('timer')\n\n this.active = component.hasAttribute('active')\n this.placement = positions.includes(place)\n ? place\n : this.notification\n ? 'bottom'\n : 'top'\n this.popperInstance = null\n this.showEvents = ['mouseenter', 'click', 'focus']\n this.hideEvents = ['mouseleave', 'blur']\n this.closeTimer = null\n\n this._create()\n this._setBehavior()\n }\n\n _setBehavior() {\n // Ação de abrir padrao ao entrar no ativador\n\n if (this.activator) {\n this.showEvents.forEach((event) => {\n this.activator.addEventListener(event, (otherEvent) => {\n this._show(otherEvent)\n })\n })\n // }\n }\n // Adiciona ação de fechar ao botao do popover\n // if (this.popover || this.notification) {\n if (this.popover) {\n const closeBtn = this.component.querySelector('.close')\n closeBtn.addEventListener('click', (event) => {\n this._hide(event, this.component)\n this._toggleActivatorIcon()\n })\n // Ação de fechar padrao ao sair do ativador\n } else {\n this.hideEvents.forEach((event) => {\n this.activator.addEventListener(event, (otherEvent) => {\n this._hide(otherEvent, this.component)\n })\n })\n }\n // Abre os elementos que devem aparecer já ativos\n // if (this.active) {\n // this._show(event)\n // }\n }\n\n _create() {\n this._setLayout()\n\n // if (typeof this.activator.getBoundingClientRect === 'undefined') {\n // }\n\n // Cria a instancia do popper\n if (this.notification) {\n this.component.setAttribute('notification', '')\n\n this.popperInstance = createPopper(this.activator, this.component, {\n modifiers: [\n {\n name: 'offset',\n options: {\n offset: [0, 10],\n },\n },\n {\n name: 'preventOverflow',\n options: {\n altAxis: false, // false by default\n mainAxis: true, // true by default\n // rootBoundary: 'body',\n },\n },\n ],\n // placement: this.placement,\n placement: 'bottom',\n strategy: 'fixed',\n })\n } else {\n const ac = this.activator.getBoundingClientRect()\n const tt = this.component.getBoundingClientRect()\n const bw = document.body.clientWidth\n if (this.placement === 'right') {\n this.placement =\n ac.x + ac.width + tt.width > bw ? 'top' : this.placement\n }\n if (this.placement === 'left') {\n this.placement = ac.x - tt.width > 0 ? this.placement : 'top'\n }\n\n this.popperInstance = createPopper(this.activator, this.component, {\n modifiers: [\n {\n name: 'offset',\n options: {\n offset: [0, 8],\n },\n },\n {\n name: 'preventOverflow',\n options: {\n altAxis: true, // false by default\n // boundary: 'body',\n mainAxis: true, // true by default\n // rootBoundary: 'document',\n tether: false, // true by default\n },\n },\n ],\n placement: this.placement,\n })\n\n const style = window.getComputedStyle(this.component)\n }\n }\n\n _show(event) {\n this.component.style.display = 'unset'\n this.component.setAttribute('data-show', '')\n this.component.style.zIndex = 99\n this._fixPosition()\n // Importante pois \"display: none\" conflitua com a instancia do componente e precisa ser setado aqui já que pelo css ativa o efeito fade no primeiro carregamento\n\n this.component.style.visibility = 'visible'\n if (this.timer) {\n clearTimeout(this.closeTimer)\n this.closeTimer = setTimeout(\n this._hide,\n this.timer,\n event,\n this.component\n )\n }\n }\n\n _hide(event, component) {\n component.removeAttribute('data-show')\n component.style.zIndex = -1\n component.style.visibility = 'hidden'\n clearTimeout(component.closeTimer)\n }\n\n _setLayout() {\n // Cria a setinha que aponta para o item que criou o tooltip\n const arrow = document.createElement('div')\n arrow.setAttribute('data-popper-arrow', '')\n\n if (this.component.querySelectorAll('.arrow').length < 1) {\n arrow.classList.add('arrow')\n }\n this.component.appendChild(arrow)\n // Cria o icone de fechar do po over\n if (this.popover) {\n const close = document.createElement('button')\n close.setAttribute('type', 'button')\n close.classList.add('close')\n const ico = document.createElement('i')\n ico.classList.add('fas', 'fa-times')\n close.appendChild(ico)\n this.component.appendChild(close)\n }\n }\n\n _toggleActivatorIcon() {\n const icon = this.activator.querySelector('button svg')\n if (icon) {\n icon.classList.toggle('fa-angle-down')\n icon.classList.toggle('fa-angle-up')\n }\n this.activator.toggleAttribute('active')\n }\n\n _fixPosition() {\n if (this.notification) {\n setTimeout(() => {\n const ac = this.activator.getBoundingClientRect()\n this.component.style = `position: fixed !important; top: ${\n ac.top + ac.height + 10\n }px !important; left: auto; right: 8px; display: unset; bottom: auto;`\n this.component.querySelector(\n '.arrow'\n ).style = `position: absolute; left: auto; right: ${\n document.body.clientWidth - ac.right + ac.width / 5\n }px !important;`\n }, 10)\n }\n }\n}\n\nexport default BRTooltip\n","import BRTooltip from '../../components/tooltip/tooltip'\nclass BRUpload {\n /**\n *\n * @param {*} name nome do componente\n * @param {*} component componente\n * @param {*} uploadFiles promisse de status do upload\n */\n constructor(name, component, uploadFiles) {\n this.name = name\n this.component = component\n this._inputElement = this.component.querySelector('.upload-input')\n this._fileList = this.component.querySelector('.upload-list')\n this._btnUpload = this.component.querySelector('.upload-button')\n this._label = this.component.querySelector('label')\n this._textHelp = document.querySelector('.text-base')\n this._fileArray = []\n this._uploadFiles = uploadFiles\n this._setBehavior()\n }\n\n _setBehavior() {\n if (this._inputElement) {\n const button = document.createElement('button')\n button.className = 'br-button upload-button'\n button.setAttribute('type', 'button')\n\n if (this._inputElement.getAttribute('multiple'))\n button.innerHTML =\n 'Selecione o(s) arquivo(s)'\n else\n button.innerHTML =\n 'Selecione o arquivo'\n\n this.component.append(this._label)\n this.component.append(this._inputElement)\n this.component.appendChild(button)\n this.component.append(this._fileList)\n this._btnUpload = this.component.querySelector('.upload-button')\n this._btnUpload.addEventListener(\n 'click',\n () => {\n this._clickUpload()\n },\n false\n )\n if (this.component.getAttribute('disabled')) {\n const message = document.createElement('span')\n message.classList.add('feedback', 'warning', 'mt-1')\n message.setAttribute('role', '')\n message.innerHTML =\n 'Upload desabilitado'\n this.component.after(message)\n }\n\n this._fileArray = Array.from(this._inputElement.files)\n this._inputElement.addEventListener(\n 'change',\n (event) => {\n this._handleFiles(event)\n },\n false\n )\n }\n\n this._setDragAndDropBehavior()\n }\n\n _setDragAndDropBehavior() {\n const uploadButton = this.component.querySelector('.upload-button')\n\n ;['dragenter', 'dragover', 'dragleave', 'drop'].forEach((eventName) => {\n uploadButton.addEventListener(eventName, this._preventDefaults)\n })\n ;['dragenter', 'dragover'].forEach((eventName) => {\n uploadButton.addEventListener(eventName, this._hightLight.bind(this))\n })\n ;['dragleave', 'drop'].forEach((eventName) => {\n uploadButton.addEventListener(eventName, this._unHightLight.bind(this))\n })\n\n uploadButton.addEventListener('drop', this._handleDrop.bind(this))\n }\n\n _preventDefaults(event) {\n event.preventDefault()\n event.stopPropagation()\n }\n\n _hightLight() {\n this.component.classList.add('dragging')\n }\n\n _unHightLight() {\n this.component.classList.remove('dragging')\n }\n\n _handleDrop(event) {\n this.component.classList.remove('dragging')\n const dt = event.dataTransfer\n const { files } = dt\n this._handleFiles(files)\n }\n\n _isDisabled(event) {\n const isDisabled = event.target.getAttribute('disabled')\n if (isDisabled) {\n return true\n } else {\n return false\n }\n }\n\n _clickUpload() {\n this._inputElement.click()\n }\n\n _removeMessage() {\n for (const message of this.component.querySelectorAll('.feedback')) {\n message.parentNode.removeChild(message)\n message.innerHTML = ''\n }\n }\n\n _removeStatus() {\n const remStatus = ['danger', 'warning', 'info', 'success']\n remStatus.forEach((el) => {\n if (this.component.dataset.hasOwnProperty(el))\n this.component.removeAttribute(`data-${el}`)\n })\n }\n\n _feedback(status, text) {\n const icone = `${text}`\n const dataStatus = `data-${status}`\n const message = document.createElement('span')\n message.classList.add('feedback', status, 'mt-1')\n message.setAttribute('role', '')\n switch (status) {\n case 'danger':\n message.innerHTML = icone\n break\n case 'info':\n message.innerHTML = icone.replace('fa-times-circle', 'fa-info-circle')\n break\n case 'success':\n message.innerHTML = icone.replace('fa-times-circle', 'fa-check-circle')\n break\n case 'warning':\n message.innerHTML = icone.replace(\n 'fa-times-circle',\n 'fa-exclamation-triangle'\n )\n break\n default:\n message.innerHTML = ''\n }\n this._removeStatus()\n this.component.setAttribute(dataStatus, dataStatus)\n this._fileList.before(message)\n }\n\n _concatFiles(files) {\n const newFiles = !files.length\n ? Array.from(this._inputElement.files)\n : Array.from(files)\n this._fileArray = this._fileArray.concat(newFiles)\n }\n _handleFiles(files) {\n this._removeMessage()\n if (!this._inputElement.multiple && files.length > 1) {\n this._feedback('danger', 'É permitido o envio de somente um arquivo.')\n } else if (!this._inputElement.multiple && this._fileArray.length > 0) {\n this._fileArray = []\n this._concatFiles(files)\n this._updateFileList()\n this._feedback(\n 'warning',\n 'O arquivo enviado anteriormente foi substituído'\n )\n } else {\n this._concatFiles(files)\n this._updateFileList()\n }\n }\n\n _updateFileList() {\n this._removeStatus()\n if (this.component.nextElementSibling === this._textHelp) {\n this._textHelp.style.display = 'none'\n }\n if (!this._fileArray.length) {\n this._fileList.innerHTML = ''\n if (this.component.nextElementSibling === this._textHelp) {\n this._textHelp.style.display = ''\n }\n } else {\n this._fileList.innerHTML = ''\n\n for (let i = 0; i < this._fileArray.length; i++) {\n if ('nowait' in this._fileArray[i]) {\n if (this._fileArray[i].nowait) {\n this._renderItem(i)\n }\n } else if (!this._fileArray[i].requested) {\n this.uploadLoading()\n this.uploadingFile(i)\n }\n }\n }\n }\n\n uploadLoading() {\n const loading = document.createElement('div')\n const carga = document.createElement('span')\n carga.classList.add('cargas')\n carga.innerText = 'Carregando...'\n loading.setAttribute('sm', '')\n loading.classList.add('my-3')\n loading.setAttribute('loading', '')\n loading.appendChild(carga)\n this._fileList.appendChild(loading)\n }\n\n uploadingFile(position) {\n if (this._uploadFiles) {\n this._fileArray[position].requested = true\n this._uploadFiles().then(() => {\n this._fileArray[position].nowait = true\n this._updateFileList()\n })\n }\n }\n\n _renderItem(position) {\n const li = document.createElement('div')\n li.className = 'br-item'\n this._fileList.appendChild(li)\n li.innerHTML = ''\n const name = document.createElement('div')\n name.className = 'name'\n li.appendChild(name)\n this._fileList.appendChild(li)\n const info = document.createElement('div')\n info.className = 'content'\n info.innerHTML = this._fileArray[position].name\n const tooltip = document.createElement('div')\n tooltip.classList.add('br-tooltip')\n tooltip.setAttribute('role', 'tooltip')\n tooltip.setAttribute('place', 'top')\n tooltip.setAttribute('info', 'info')\n const textTooltip = document.createElement('span')\n textTooltip.classList.add('text')\n textTooltip.setAttribute('role', 'tooltip')\n textTooltip.innerHTML = this._fileArray[position].name\n tooltip.appendChild(textTooltip)\n li.appendChild(info)\n li.appendChild(name)\n li.appendChild(tooltip)\n info.classList.add('text-primary-default', 'mr-auto')\n const del = document.createElement('div')\n del.className = 'support'\n const btndel = document.createElement('button')\n const spanSize = document.createElement('span')\n spanSize.className = 'mr-1'\n spanSize.innerHTML = this._calcSize(this._fileArray[position].size)\n del.appendChild(spanSize)\n btndel.className = 'br-button'\n btndel.type = 'button'\n btndel.setAttribute('circle', '')\n btndel.addEventListener(\n 'click',\n (event) => {\n this._removeFile(position, event)\n },\n false\n )\n const img = document.createElement('i')\n img.className = 'fa fa-trash'\n btndel.appendChild(img)\n del.appendChild(btndel)\n li.appendChild(del)\n this._fileArray[position].nowait = true\n const tooltipList = []\n for (const brTooltip of window.document.querySelectorAll('.br-tooltip')) {\n tooltipList.push(new BRTooltip('br-tooltip', brTooltip))\n }\n }\n\n _calcSize(nBytes) {\n let sOutput = ''\n for (\n let aMultiples = ['KB', 'MB', 'GB', 'TB'],\n nMultiple = 0,\n nApprox = nBytes / 1024;\n nApprox > 1;\n nApprox /= 1024, nMultiple++\n ) {\n sOutput = `${nApprox.toFixed(2)} ${aMultiples[nMultiple]}`\n }\n return sOutput\n }\n\n _removeFile(index, event) {\n event.stopPropagation()\n event.preventDefault()\n this._removeStatus()\n this._removeMessage()\n this._fileArray.splice(index, 1)\n this._updateFileList()\n\n if (this._inputElement.multiple)\n this._inputElement.files = this._updateFileListItems(this._fileArray)\n if (!this._inputElement.multiple) this._inputElement.value = ''\n }\n\n _updateFileListItems(files) {\n const fileInput = new ClipboardEvent('').clipboardData || new DataTransfer()\n for (let i = 0, len = files.length; i < len; i++)\n fileInput.items.add(files[i])\n return fileInput.files\n }\n}\n\nexport default BRUpload\n","import SwipeEventDispatcher from '../swipe/swipe'\nclass BRWizard {\n constructor(name, component) {\n this.name = name\n this.component = component\n // DOM elements\n this.DOMstrings = {\n stepFormPanelClass: 'wizard-panel',\n // stepFormPanels: document.querySelectorAll('.wizard-panel'),\n stepFormPanels: this.component.querySelectorAll('.wizard-panel'),\n stepNextBtnClass: 'wizard-btn-next',\n stepPrevBtnClass: 'wizard-btn-prev',\n // stepsBar: document.querySelector('.wizard-progress'),\n stepsBar: this.component.querySelector('.wizard-progress'),\n stepsBarClass: 'wizard-progress',\n stepsBtnClass: 'wizard-progress-btn',\n // stepsBtns: document.querySelectorAll(`.wizard-progress-btn`),\n stepsBtns: this.component.querySelectorAll('.wizard-progress-btn'),\n // stepsForm: document.querySelector('.wizard-form'),\n stepsForm: this.component.querySelector('.wizard-form'),\n }\n // remove class from a set of items\n this.removeAttributes = (elemSet, attrName) => {\n elemSet.forEach((elem) => {\n elem.removeAttribute(attrName)\n })\n }\n // return exect parent node of the element\n this.findParent = (elem, parentClass) => {\n let currentNode = elem\n while (!currentNode.classList.contains(parentClass)) {\n currentNode = currentNode.parentNode\n }\n return currentNode\n }\n // get active button step number\n this.getActiveStep = (elem) => {\n return Array.from(this.DOMstrings.stepsBtns).indexOf(elem)\n }\n // set all steps before clicked (and clicked too) to active\n this.setActiveStep = (activeStepNum) => {\n // remove active state from all the state\n this.removeAttributes(this.DOMstrings.stepsBtns, 'active')\n // this.removeAttributes(this.DOMstrings.stepsBtns, 'disabled')\n\n // set picked items to active\n this.DOMstrings.stepsBtns.forEach((elem, index) => {\n if (index === activeStepNum) {\n elem.removeAttribute('disabled')\n elem.setAttribute('active', '')\n }\n // if (index > activeStepNum) {\n // elem.setAttribute('disabled', 'disabled')\n // }\n })\n }\n // get active panel\n this.getActivePanel = () => {\n let activePanel\n this.DOMstrings.stepFormPanels.forEach((elem) => {\n if (elem.hasAttribute('active')) {\n activePanel = elem\n }\n })\n return activePanel\n }\n // open active panel (and close unactive panels)\n this.setActivePanel = (activePanelNum) => {\n // remove active class from all the panels\n this.removeAttributes(this.DOMstrings.stepFormPanels, 'active')\n // show active panel\n this.DOMstrings.stepFormPanels.forEach((elem, index) => {\n if (index === activePanelNum) {\n elem.setAttribute('active', '')\n }\n })\n }\n this.setStepsNum = () => {\n this.DOMstrings.stepsBtns.forEach((elem, index) => {\n elem.setAttribute('step', index + 1)\n })\n }\n this.setStep = (num) => {\n const activeStep = num <= this.DOMstrings.stepsBtns.length ? num - 1 : 0\n this.setActiveStep(activeStep)\n this.setActivePanel(activeStep)\n }\n this.collapseSteps = () => {\n this.component.setAttribute('collapsed', '')\n }\n this.expandSteps = () => {\n this.component.removeAttribute('collapsed')\n }\n this._setBehavior()\n }\n\n _setBehavior() {\n // STEPS BAR CLICK FUNCTION\n this.DOMstrings.stepsBar.addEventListener('click', (e) => {\n // check if click target is a step button\n const eventTarget = e.target\n if (!eventTarget.classList.contains(`${this.DOMstrings.stepsBtnClass}`)) {\n e.target.parentNode.click()\n return\n }\n // get active button step number\n const activeStep = this.getActiveStep(eventTarget)\n // set all steps before clicked (and clicked too) to active\n this.setActiveStep(activeStep)\n // open active panel\n this.setActivePanel(activeStep)\n })\n // PREV/NEXT BTNS CLICK\n this.DOMstrings.stepsForm.addEventListener('click', (e) => {\n const eventTarget = e.target\n // check if we clicked on `PREV` or NEXT` buttons\n if (\n !(\n eventTarget.classList.contains(\n `${this.DOMstrings.stepPrevBtnClass}`\n ) ||\n eventTarget.classList.contains(`${this.DOMstrings.stepNextBtnClass}`)\n )\n ) {\n return\n }\n // find active panel\n const activePanel = this.findParent(\n eventTarget,\n `${this.DOMstrings.stepFormPanelClass}`\n )\n let activePanelNum = Array.from(this.DOMstrings.stepFormPanels).indexOf(\n activePanel\n )\n // set active step and active panel onclick\n if (\n eventTarget.classList.contains(`${this.DOMstrings.stepPrevBtnClass}`)\n ) {\n activePanelNum -= 1\n activePanel.style.left = '1%'\n } else {\n activePanelNum += 1\n activePanel.style.left = '-1%'\n }\n this.setActiveStep(activePanelNum)\n this.setActivePanel(activePanelNum)\n })\n // Set Steps label number\n this.setStepsNum()\n // Set default active step\n if (this.component.hasAttribute('step')) {\n this.setStep(this.component.getAttribute('step'))\n }\n // set steps buttons grid style if it needs to scroll horizontaly\n if (\n this.component.hasAttribute('scroll') &&\n !this.component.hasAttribute('vertical')\n ) {\n const stepsWidth =\n Math.round(100 / this.DOMstrings.stepsBtns.length) - 0.5\n this.DOMstrings.stepsBar.style.gridTemplateColumns = `repeat(auto-fit, minmax(100px, ${stepsWidth}% ))`\n }\n // Swipe\n const dispatcher = new SwipeEventDispatcher(this.DOMstrings.stepsBar)\n if (this.component.hasAttribute('vertical')) {\n dispatcher.on('SWIPE_LEFT', () => {\n this.collapseSteps()\n })\n dispatcher.on('SWIPE_RIGHT', () => {\n this.expandSteps()\n })\n this.DOMstrings.stepsForm.ontouchstart = () => {\n this.collapseSteps()\n }\n } else {\n this.DOMstrings.stepsBar.ontouchstart = () => {\n this.expandSteps()\n }\n this.DOMstrings.stepsForm.ontouchstart = () => {\n this.collapseSteps()\n }\n }\n }\n}\n\nexport default BRWizard\n","import Collapse from './collapse'\n\n/**\n * Classe para o comportamento Accordion.\n * O Comportamento Accordion é um agrupador de comportamentos Collapse\n */\nexport default class Accordion extends Collapse {\n /**\n * Instancia um comportamento accordion\n * @param {object} - Objeto de configuração inicial para destructuring\n * @property {object} trigger - Elemento DOM que representa o acionador do comportmento accordion\n * @property {string} iconToShow - Classe que representa o ícone para mostrar o conteúdo (padrão: fa-chevron-down)\n * @property {string} iconToHide - Classe que representa o ícone para esconder o conteúdo (padrão: fa-chevron-up)\n * @property {boolean} useIcons - true: com ícone | false: sem ícone (padrão: true)\n */\n constructor({\n trigger,\n iconToShow = 'fa-chevron-down',\n iconToHide = 'fa-chevron-up',\n useIcons = true,\n }) {\n super({ trigger, iconToShow, iconToHide, useIcons })\n this._setUp()\n }\n\n /**\n * Trata a configuração inicial do comportamento accordion\n * @private\n */\n _setUp() {\n super._setUp()\n this._setPriorityVisibility()\n }\n\n /**\n * Determina qual acionador vai estar visivel, caso mais de 1 acionador esteja visivel no grupo.\n * Prioridade de cima para baixo\n * @private\n */\n _setPriorityVisibility() {\n for (let i = 0; i < this._getGroup().length; i += 1) {\n if (this._getGroup()[i].dataset.visible === 'true') {\n this._synchronizeAccordion(this._getGroup()[i])\n break\n }\n }\n }\n\n /**\n * Obtém todos os acionadores pertencentes ao grupo do comportamento accordion\n * @returns {array} - Conjunto de elementos DOM representando os acionadores pertencentes ao grupo do comportamento accordion\n * @private\n */\n _getGroup() {\n return document.querySelectorAll(\n `[data-group=\"${this.trigger.getAttribute('data-group')}\"]`\n )\n }\n\n /**\n * Handler para o evento 'change' do acionador\n * @param {object} event - Objeto do tipo Event\n * @private\n */\n _handleTriggerChangeBehavior(event) {\n if (!event.currentTarget.hasAttribute('data-sync')) {\n this._synchronizeAccordion(event.currentTarget)\n } else {\n event.currentTarget.removeAttribute('data-sync')\n }\n }\n\n /**\n * Sincroniza o grupo de accordion mostrando 1 elemento aberto por vez\n * @param {object} currentTrigger - Elemento DOM representando um acionador do comportamento accordion\n * @private\n */\n _synchronizeAccordion(currentTrigger) {\n this._getGroup().forEach((trigger) => {\n if (trigger !== currentTrigger && trigger.dataset.visible === 'true') {\n trigger.setAttribute('data-sync', '')\n trigger.click()\n }\n })\n }\n\n /**\n * Configura o comportamento accordion\n * @public\n */\n setBehavior() {\n super.setBehavior()\n this.trigger.addEventListener(\n 'change',\n this._handleTriggerChangeBehavior.bind(this)\n )\n }\n}\n","/**\n * Comportamento do grupo de checkboxes\n *\n * Cada checkbox parent em uma cadeia de checkbox terá um objeto próprio para tratar\n * o seu comportamento e de seus filhos. Os eventListeners são declarados em cada objeto,\n * de modo que a execução passa por objetos diferentes quando um checkbox é pai e filho ao mesmo tempo\n *\n * O comportamento é uma sincronia entre os eventos e o objeto que executa o evento\n */\nexport default class Checkgroup {\n /**\n * Instancia um comportamento de grupo de checkbox\n * @param {object} trigger - Elemento DOM que representa o checkbox acionador do comportamento\n */\n constructor(trigger) {\n this.parent = trigger\n // this.checkedLabel = trigger.dataset.checkedLabel\n // this.uncheckedLabel = trigger.dataset.uncheckedLabel\n this.children = this._setChildren(trigger.dataset.parent)\n }\n\n /**\n * Pega dinamincamente o valor do atributo data-checked-label\n * @type {string} - O valor do atributo data-checked-label ou o valor da label, caso não tenha o atributo\n * @readonly\n * @public\n */\n get checkedLabel() {\n return (\n this.parent.dataset.checkedLabel ||\n this.parent.nextElementSibling.innerText\n )\n }\n\n /**\n * Pega dinamincamente o valor do atributo data-unchecked-label\n * @type {string} - O valor do atributo data-unchecked-label ou o valor da label, caso não tenha o atributo\n * @readonly\n * @public\n */\n get uncheckedLabel() {\n return (\n this.parent.dataset.uncheckedLabel ||\n this.parent.nextElementSibling.innerText\n )\n }\n\n /**\n * Configurar o comportamento do grupo de checkbox\n * @public\n */\n setBehavior() {\n this._setParentBehavior()\n this._setChildBehavior()\n }\n\n /**\n * Obtem todos os checkboxes filhos do checkbox pai\n * @param {string} tag - Nome que indica a relação entre checkbox pai e checkbox filho\n * @returns {array} - Array contendo os elementos DOM que representam os checkboxes filhos.\n */\n _setChildren(tag) {\n return document.querySelectorAll(`[data-child=\"${tag}\"]`)\n }\n\n /**\n * Trata do comportamento do checkbox pai\n * @private\n */\n _setParentBehavior() {\n this.parent.addEventListener('click', this._handleParentClick.bind(this))\n this.parent.addEventListener('change', this._handleParentChange.bind(this))\n }\n\n /**\n * Handler que trata o evento click no parent\n * @private\n */\n _handleParentClick() {\n if (!this.parent.hasAttribute('data-parent-sync')) {\n this._setIndeterminateStateOnClick()\n }\n this._setParentCheckboxLabel()\n }\n\n /**\n * Trata o estado indeterminado no evento click da etapa de interação do usuário\n * @private\n */\n _setIndeterminateStateOnClick() {\n if (this.parent.hasAttribute('indeterminate')) {\n this.parent.removeAttribute('indeterminate')\n this.parent.checked = true\n }\n }\n\n /**\n * Handler que trata o evento change no parent\n * @private\n */\n _handleParentChange() {\n if (!this.parent.hasAttribute('data-parent-sync')) {\n this._changeChildState()\n this._setParentCheckboxLabel()\n } else {\n this.parent.removeAttribute('data-parent-sync')\n }\n }\n\n /**\n * Trata do estado do checkboxes filhos\n * @private\n */\n _changeChildState() {\n this.children.forEach((child) => {\n if (\n child.checked !== this.parent.checked ||\n child.hasAttribute('indeterminate')\n ) {\n child.removeAttribute('indeterminate')\n child.checked = this.parent.checked\n child.dispatchEvent(new Event('change'))\n }\n })\n }\n\n /**\n * Trata do comportamento dos checkboxes filhos\n * @private\n */\n _setChildBehavior() {\n this.children.forEach((child) => {\n child.addEventListener('click', this._handleChildClick.bind(this))\n child.addEventListener('change', this._handleChildChange.bind(this))\n })\n }\n\n /**\n * Handler que trata do evento click no filho\n * @param {object} event - Objeto Event\n * @private\n */\n _handleChildClick(event) {\n event.currentTarget.setAttribute('data-child-sync', '')\n }\n\n /**\n * Handler que trata do evento change no filho\n * @param {object} event - Objeto Event\n * @private\n */\n _handleChildChange(event) {\n if (event.currentTarget.hasAttribute('data-child-sync')) {\n this._setIndeterminateStateOnChildChange()\n this.parent.setAttribute('data-parent-sync', '')\n this.parent.dispatchEvent(new Event('click'))\n this.parent.dispatchEvent(new Event('change'))\n event.currentTarget.removeAttribute('data-child-sync')\n }\n }\n\n /**\n * Trata o estado indeterminado no evento click da etapa de sincronia\n * @private\n */\n _setIndeterminateStateOnChildChange() {\n if (this._isAllChildrenChecked()) {\n this.parent.removeAttribute('indeterminate')\n this.parent.checked = true\n } else if (this._isAllChildrenUnchecked()) {\n this.parent.removeAttribute('indeterminate')\n this.parent.checked = false\n } else {\n this.parent.setAttribute('indeterminate', '')\n this.parent.checked = true\n }\n }\n\n /**\n * Verifica se todos os checkboxes filhos estão selecionados\n * @returns {boolean} - true se todos os checkboxes filhos estão selecionados\n * false se pelo menos 1 checkbox filho não está selecionado\n * @private\n */\n _isAllChildrenChecked() {\n let allChildChecked = true\n this.children.forEach((child) => {\n if (!child.checked || child.hasAttribute('indeterminate')) {\n allChildChecked = false\n }\n })\n return allChildChecked\n }\n\n /**\n * Verifica se todos so checkboxes filhos estão desselecionados\n * @returns {boolean} - true se todos os checkboxes filhos estão desselecionados\n * false se pelo menos 1 checkbox filho está selecionado\n * @private\n */\n _isAllChildrenUnchecked() {\n let allChildUnchecked = true\n this.children.forEach((child) => {\n if (child.checked) {\n allChildUnchecked = false\n }\n })\n return allChildUnchecked\n }\n\n /**\n * Configura a label do checkbox pai\n * @private\n */\n _setParentCheckboxLabel() {\n if (this.parent.checked && !this.parent.hasAttribute('indeterminate')) {\n this.parent.nextElementSibling.innerHTML = this.uncheckedLabel\n this.parent.setAttribute('aria-label', this.uncheckedLabel)\n } else {\n this.parent.nextElementSibling.innerHTML = this.checkedLabel\n this.parent.setAttribute('aria-label', this.checkedLabel)\n }\n }\n}\n","/** Classe para o comportamento Collapse */\nexport default class Collapse {\n /**\n * Instancia um comportamento collapse\n * @param {object} - Objeto de configuração inicial para destructuring\n * @property {object} trigger - Elemento DOM que representa o acionador do comportmento collapse\n * @property {string} iconToShow - Classe que representa o ícone para mostrar o conteúdo (padrão: fa-chevron-down)\n * @property {string} iconToHide - Classe que representa o ícone para esconder o conteúdo (padrão: fa-chevron-up)\n * @property {boolean} useIcons - true: com ícone | false: sem ícone (padrão: true)\n */\n constructor({\n trigger,\n iconToShow = 'fa-chevron-down',\n iconToHide = 'fa-chevron-up',\n useIcons = true,\n }) {\n this.trigger = trigger\n this.useIcons = useIcons\n this.breakpoint = trigger.getAttribute('data-breakpoint')\n this.setIconToShow(iconToShow)\n this.setIconToHide(iconToHide)\n this._setTarget()\n this._setUp()\n }\n\n /**\n * Determina qual elemento DOM é o alvo do comportamento collapse\n * @private\n */\n _setTarget() {\n this.target = document.querySelector(\n `#${this.trigger.getAttribute('data-target')}`\n )\n }\n\n // TODO: Melhorar a solução\n _checkBreakpoint() {\n if (this.breakpoint) {\n if (window.matchMedia('(min-width: 977px)').matches) {\n this.target.removeAttribute('hidden')\n }\n }\n }\n\n /**\n * Trata a configuração inicial do comportamento collapse\n * @private\n */\n _setUp() {\n this._setVisibilityStatus()\n if (this.useIcons) {\n this._toggleIcon()\n }\n this.trigger.setAttribute(\n 'aria-controls',\n `${this.trigger.getAttribute('data-target')}`\n )\n this._checkBreakpoint()\n }\n\n /**\n * Configura o estado de visualização do comportamento collapse\n * @private\n */\n _setVisibilityStatus() {\n this._setTriggerVisibilityStatus()\n this._setTargetVisibilityStatus()\n }\n\n /**\n * Trata o estado de visualização do acionador\n * @private\n */\n _setTriggerVisibilityStatus() {\n if (this.target) {\n if (this.target.hasAttribute('hidden')) {\n this.trigger.setAttribute('data-visible', false)\n this.trigger.setAttribute('aria-expanded', false)\n } else {\n this.trigger.setAttribute('data-visible', true)\n this.trigger.setAttribute('aria-expanded', true)\n }\n }\n }\n\n /**\n * Trata o estado de visualização do alvo\n * @private\n */\n _setTargetVisibilityStatus() {\n if (this.target) {\n if (this.target.hasAttribute('hidden')) {\n this.target.setAttribute('aria-hidden', true)\n } else {\n this.target.setAttribute('aria-hidden', false)\n }\n }\n }\n\n /**\n * Handler para o evento de click no acionador do comportamento collapse\n * Lança um evento 'change' a cada troca\n * @private\n */\n _handleTriggerClickBehavior() {\n if (this.breakpoint) {\n if (window.matchMedia('(max-width: 977px)').matches) {\n this._toggleVisibility()\n if (this.useIcons) {\n this._toggleIcon()\n }\n this.trigger.dispatchEvent(new Event('change'))\n }\n } else {\n this._toggleVisibility()\n if (this.useIcons) {\n this._toggleIcon()\n }\n this.trigger.dispatchEvent(new Event('change'))\n }\n }\n\n /**\n * Alterna o estado de visualização do comportamento collapse\n * @private\n */\n _toggleVisibility() {\n if (this.target) {\n this.target.hasAttribute('hidden')\n ? this.target.removeAttribute('hidden')\n : this.target.setAttribute('hidden', '')\n\n this._setVisibilityStatus()\n }\n }\n\n /**\n * Troca o icone do acionador após uma mudança no estado de visualização do alvo\n * Para o estado 'hidden' usa o iconToShow e para o estado 'shown' usa o iconToHide\n * @public\n */\n _toggleIcon() {\n this.trigger.querySelectorAll('i.fas').forEach((icon) => {\n if (this.target) {\n icon.classList.remove(\n this.target.hasAttribute('hidden') ? this.iconToHide : this.iconToShow\n )\n icon.classList.add(\n this.target.hasAttribute('hidden') ? this.iconToShow : this.iconToHide\n )\n }\n })\n }\n\n /**\n * Configura o comportamento collapse\n * @public\n */\n setBehavior() {\n this.trigger.addEventListener(\n 'click',\n this._handleTriggerClickBehavior.bind(this)\n )\n }\n\n /**\n * Determina a classe do icone para mostrar o conteúdo\n * @param {string} iconToShow - Classe que representa o ícone para mostrar o conteúdo\n * @public\n */\n setIconToShow(iconToShow) {\n this.iconToShow = iconToShow\n }\n\n /**\n * Determina a classe do ícone para esconder o conteúdo\n * @param {string} iconToHide - Classe que representa o ícone para esconder o conteúdo\n * @public\n */\n setIconToHide(iconToHide) {\n this.iconToHide = iconToHide\n }\n}\n","import Collapse from './collapse'\n\n/**\n * Classe para o comportamento Dropdown.\n * O Comportamento Dropdown é um caso especial do comportamentos Collapse\n * em que o alvo aparece flutuando na tela.\n * Nesse caso o alvo precisa filho de um elemento pai\n */\nexport default class Dropdown extends Collapse {\n /**\n * Instancia um comportamento accordion\n * @param {object} - Objeto de configuração inicial para destructuring\n * @property {object} trigger - Elemento DOM que representa o acionador do comportmento accordion\n * @property {string} iconToShow - Classe que representa o ícone para mostrar o conteúdo (padrão: fa-chevron-down)\n * @property {string} iconToHide - Classe que representa o ícone para esconder o conteúdo (padrão: fa-chevron-up)\n * @property {boolean} useIcons - true: com ícone | false: sem ícone (padrão: true)\n */\n constructor({\n trigger,\n iconToShow = 'fa-chevron-down',\n iconToHide = 'fa-chevron-up',\n useIcons = true,\n }) {\n super({ trigger, iconToShow, iconToHide, useIcons })\n }\n\n /**\n * Trata a configuração inicial do comportamento dropdown\n * @override\n * @private\n */\n _setUp() {\n super._setUp()\n this._hideDropdown()\n }\n\n /**\n * Oculta o dropdown ao clicar fora do acionador e do alvo\n * @private\n */\n _hideDropdown() {\n document.addEventListener('mousedown', (event) => {\n if (\n !this.trigger.contains(event.target) &&\n !this.target.hasAttribute('hidden') &&\n !this.target.contains(event.target)\n ) {\n this.trigger.click()\n }\n })\n }\n\n /**\n * Marca o alvo com o atributo data-dropdown\n * @override\n * @private\n */\n _setTargetVisibilityStatus() {\n super._setTargetVisibilityStatus()\n if (this.target.hasAttribute('hidden')) {\n this.target.removeAttribute('data-dropdown')\n } else {\n this.target.setAttribute('data-dropdown', '')\n }\n }\n\n /**\n * Trata o estado de visualização do pai do alvo\n * @private\n */\n _setParentsTargetVisibilityStatus() {\n if (this.target.hasAttribute('hidden')) {\n this.target.parentElement.classList.remove('dropdown')\n } else {\n this.target.parentElement.classList.add('dropdown')\n }\n }\n\n /**\n * Handler para o evento de click no acionador do comportamento dropdown\n * Lança um evento 'change' a cada troca\n * @override\n * @private\n */\n _handleTriggerClickBehavior() {\n super._handleTriggerClickBehavior()\n this._setParentsTargetVisibilityStatus()\n }\n\n /**\n * Configura o comportamento dropdown\n * @override\n * @public\n */\n setBehavior() {\n super.setBehavior()\n }\n}\n","/** Classe para o comportamento scrim */\nexport default class Scrim {\n /**\n * Instancia um comportamento scrim\n * @param {object} - Objeto de configuração inicial para destructuring\n * @property {object} trigger - Elemento DOM que representa o acionador do comportmento scrim\n * @property {string} closeElement - Elemento Dom do trigger que fecha o scrim\n */\n constructor({ trigger, closeElement }) {\n this.trigger = trigger\n this.closeElement = this.elementHideScrim(closeElement)\n if (this.trigger) {\n this.setBehavior()\n }\n }\n\n /**\n * Alterna o estado de visualização do comportamento scrim\n * @private\n */\n showScrim() {\n if (this.trigger) {\n this.trigger.classList.add('active')\n this.trigger.setAttribute('data-visible', true)\n this.trigger.setAttribute('aria-expanded', true)\n }\n }\n /**\n * Alterna o estado de escondido do comportamento scrim\n * @private\n */\n hideScrim() {\n this.trigger.classList.remove('active')\n this.trigger.setAttribute('data-visible', false)\n this.trigger.setAttribute('aria-expanded', false)\n }\n\n /**\n * Seta o elemento Dom que vai fechar o scrim\n * @public\n */\n elementHideScrim(element) {\n if (this.trigger.querySelectorAll(element)) {\n this.trigger.querySelectorAll(element).forEach((element) => {\n this.closeElement = element\n this._setCloseClick()\n })\n }\n }\n\n /**\n * Adiciona listener de fechamento no elemento que fecha o scrim\n * @private\n */\n _setCloseClick() {\n this.closeElement.addEventListener('click', () => {\n this.hideScrim()\n })\n }\n /**\n * Configura o comportamento scrim\n * @public\n */\n setBehavior() {\n this.trigger.addEventListener('click', (event) => {\n if (event.target.getAttribute('data-scrim')) {\n this.hideScrim()\n }\n })\n }\n}\n","import { createPopper } from '@popperjs/core'\n// import 'tippy.js/dist/tippy.css' // optional for styling\nclass Tooltip {\n /**\n * Instancia um comportamento Tooltip\n * @param {object} - Objeto de configuração inicial para destructuring\n * @property {object} activator - Elemento DOM que representa o acionador do comportmento tooltip\n * @property {string} place - Local onde vai aparecer o tooltip\n * @property {string} timer - Tempo em que vai aparecer o tooltip\n * @property {string} placement - Local onde vai aparecer o tooltip\n */\n // eslint-disable-next-line complexity\n constructor({\n component,\n activator,\n place = 'top',\n timer,\n active,\n placement = 'top',\n textTooltip,\n type = 'info',\n }) {\n const text_tooltip = textTooltip ? textTooltip : component\n\n this.activator = activator\n this.component = component\n ? component\n : this._setContent(text_tooltip, type)\n\n this.place =\n this.component.getAttribute('place') === null\n ? this.component.getAttribute('place')\n : 'top'\n const positions = ['top', 'right', 'bottom', 'left']\n this.popover = this.component.hasAttribute('popover')\n this.notification = this.component.classList.contains('br-notification')\n this.timer = this.component.getAttribute('timer')\n ? this.component.getAttribute('timer')\n : timer\n this.active = this.component.hasAttribute('active')\n this.placement = positions.includes(place)\n ? place\n : this.notification\n ? 'bottom'\n : 'top'\n this.popperInstance = null\n this.showEvents = ['mouseenter', 'click', 'focus']\n this.hideEvents = ['mouseleave', 'blur']\n this.closeTimer = null\n this._create()\n this._setBehavior()\n }\n\n _setBehavior() {\n // Ação de abrir padrao ao entrar no ativador\n if (this.activator) {\n this.showEvents.forEach((event) => {\n this.activator.addEventListener(event, (otherEvent) => {\n this._show(otherEvent)\n })\n })\n }\n // Adiciona ação de fechar ao botao do popover\n // if (this.popover || this.notification) {\n if (this.popover) {\n const closeBtn = this.component.querySelector('.close')\n closeBtn.addEventListener('click', (event) => {\n this._hide(event, this.component)\n this._toggleActivatorIcon()\n })\n // Ação de fechar padrao ao sair do ativador\n } else {\n this.hideEvents.forEach((event) => {\n this.activator.addEventListener(event, (otherEvent) => {\n this._hide(otherEvent, this.component)\n })\n })\n }\n }\n /**\n * Seta o conteudo do tooltip\n * @param {*} contentText\n * @returns - retorna o objeto com tooltip\n */\n _setContent(contentText, type) {\n const text_tooltip = document.createElement('div')\n text_tooltip.setAttribute('role', 'tooltip')\n text_tooltip.setAttribute('place', 'top')\n text_tooltip.setAttribute(type, type)\n text_tooltip.innerText = `${contentText}`\n text_tooltip.classList.add('br-tooltip')\n text_tooltip.classList.add('sample')\n if (this.activator) {\n // this.activator.parentElement.parentElement.parentElement.appendChild(\n // text_tooltip\n // )\n }\n document.body.appendChild(text_tooltip)\n\n return text_tooltip\n }\n\n /* Cria a instancia do popper*/\n _create() {\n this._setLayout()\n\n if (this.notification) {\n this.component.setAttribute('notification', '')\n this.popperInstance = createPopper(this.activator, this.component, {\n modifiers: [\n {\n name: 'offset',\n options: {\n offset: [0, 8],\n },\n },\n {\n name: 'preventOverflow',\n options: {\n altAxis: false, // false by default\n mainAxis: true, // true by default\n },\n },\n ],\n // placement: this.placement,\n placement: 'bottom',\n strategy: 'fixed',\n })\n } else {\n const ac = this.activator.getBoundingClientRect()\n const tt = this.component.getBoundingClientRect()\n const bw = document.body.clientWidth\n\n if (this.placement === 'right') {\n this.placement =\n ac.x + ac.width + tt.width > bw ? 'top' : this.placement\n }\n if (this.placement === 'left') {\n this.placement = ac.x - tt.width > 0 ? this.placement : 'top'\n }\n\n this.popperInstance = createPopper(this.activator, this.component, {\n modifiers: [\n {\n name: 'offset',\n options: {\n offset: [0, 8],\n },\n },\n {\n name: 'preventOverflow',\n options: {\n altAxis: true, // false by default\n // boundary: 'body',\n mainAxis: true, // true by default\n // rootBoundary: 'document',\n tether: false, // true by default\n },\n },\n ],\n placement: this.placement,\n })\n }\n }\n\n _show(event) {\n this.component.style.display = 'unset'\n this.component.setAttribute('data-show', '')\n this.component.style.zIndex = 9999\n this._fixPosition()\n // Importante pois \"display: none\" conflitua com a instancia do componente e precisa ser setado aqui já que pelo css ativa o efeito fade no primeiro carregamento\n this.component.style.visibility = 'visible'\n if (this.timer) {\n clearTimeout(this.closeTimer)\n this.closeTimer = setTimeout(\n this._hide,\n this.timer,\n event,\n this.component\n )\n }\n }\n /**\n * Esconde o componente\n */\n _hide(event, component) {\n component.removeAttribute('data-show')\n component.style.zIndex = -1\n component.style.visibility = 'hidden'\n clearTimeout(component.closeTimer)\n }\n\n _setLayout() {\n // Cria a setinha que aponta para o item que criou o tooltip\n const arrow = document.createElement('div')\n arrow.setAttribute('data-popper-arrow', '')\n\n if (this.component.querySelectorAll('.arrow').length < 1) {\n arrow.classList.add('arrow')\n }\n this.component.appendChild(arrow)\n // Cria o icone de fechar do po over\n if (this.popover) {\n const close = document.createElement('button')\n close.setAttribute('type', 'button')\n close.classList.add('close')\n const ico = document.createElement('i')\n ico.classList.add('fas', 'fa-times')\n close.appendChild(ico)\n this.component.appendChild(close)\n }\n }\n\n _toggleActivatorIcon() {\n const icon = this.activator.querySelector('button svg')\n if (icon) {\n icon.classList.toggle('fa-angle-down')\n icon.classList.toggle('fa-angle-up')\n }\n this.activator.toggleAttribute('active')\n }\n\n _fixPosition() {\n if (this.notification) {\n setTimeout(() => {\n const ac = this.activator.getBoundingClientRect()\n\n this.component.style = `position: fixed !important; top: ${\n ac.top + ac.height + 10\n }px !important; left: auto; right: 8px; display: unset; bottom: auto;`\n this.component.querySelector(\n '.arrow'\n ).style = `position: absolute; left: auto; right: ${\n document.body.clientWidth - ac.right + ac.width / 5\n }px !important;`\n }, 100)\n }\n // debugger\n }\n}\n\nexport default Tooltip\n","const jsonData = `[\n {\n \"lang\": \"pt-br\",\n \"allOptOut\": true,\n \"acceptButton\": \"Aceitar\",\n \"optOutButton\": \"Definir Cookies\",\n \"optInButton\": \"Ver Política de Cookies\",\n \"infoText\": \"Minim pariatur amet laboris sint consectetur enim do voluptate\",\n \"mainTitle\": \"Exercitation et proident\",\n \"lastUpdate\": \"01/02/2021\",\n \"entryText\": \"Lorem, ipsum dolor sit amet consectetur adipisicing elit. Doloribus aspernatur neque culpa nisi alias. Voluptatem dicta nihil magnam, cumque voluptatum animi distinctio molestias recusandae ipsam, sapiente unde error repellendus quibusdam?\",\n \"selectAll\": false,\n \"allMessage\": \"Ao desativar essa opção, sua navegação ficará comprometida\",\n \"closeLabel\": \"fechar\",\n \"lastUpdateLabel\": \"Última atualização\",\n \"cookieGroupsLabel\": \"Classes de cookies\",\n \"selectAllLabel\": \"Selecionar tudo\",\n \"unselectAllLabel\": \"Desselecionar tudo\",\n \"selectAllGroupLabel\": \"Selecionar toda classe\",\n \"unselectAllGroupLabel\": \"Desselecionar toda classe\",\n \"onLabel\": \"Ligado\",\n \"offLabel\": \"Desligado\",\n \"alwaysActiveLabel\": \"Sempre ativo\",\n \"cookieNameLabel\": \"Cookies\",\n \"expiresLabel\": \"Vencimento\",\n \"domainLabel\": \"Domínio\",\n \"enterpriseLabel\": \"Empresa\",\n \"purposeLabel\": \"Finalidade\",\n \"descriptionLabel\": \"Descrição\",\n \"cookieGroups\": [\n {\n \"groupId\": \"necessarios\",\n \"groupName\": \"Estritamente necessários\",\n \"groupOptOut\": false,\n \"groupSelected\": false,\n \"groupMessage\": \"a group 0\",\n \"groupText\": \"Lorem ipsum dolor sit amet consectetur adipisicing elit. Nostrum delectus fuga omnis, placeat harum id aliquam, blanditiis consectetur est cupiditate ipsam alias vitae veritatis beatae, aperiam totam assumenda. Sed, modi!\",\n \"cookieList\": [\n {\n \"cookieId\": \"necessario-1\",\n \"cookieOptOut\": false,\n \"cookieSelected\": false,\n \"Message\": \"a group 0 - cookie 0\",\n \"cookieName\": \"optimizelyEndUserId\",\n \"expires\": \"30 minutos\",\n \"domain\": \"serpro.gov.br\",\n \"entreprise\": \"Serpro\",\n \"purpose\": \"Autorização\",\n \"description\": \"Lorem ipsum dolor sit amet consectetur adipisicing elit. Qui numquam inventore fuga consectetur minus accusantium sapiente, distinctio dolorum illum, doloremque rem deleniti recusandae quod rerum quidem amet? Unde, laudantium cum.\"\n },\n {\n \"cookieId\": \"necessario-2\",\n \"cookieOptOut\": false,\n \"cookieSelected\": false,\n \"Message\": \"a group 0 - cookie 1\",\n \"cookieName\": \"optimizelyEndUserId\",\n \"expires\": \"30 minutos\",\n \"domain\": \"serpro.gov.br\",\n \"entreprise\": \"Serpro\",\n \"purpose\": \"Autorização\",\n \"description\": \"Lorem ipsum dolor sit amet consectetur adipisicing elit. Qui numquam inventore fuga consectetur minus accusantium sapiente, distinctio dolorum illum, doloremque rem deleniti recusandae quod rerum quidem amet? Unde, laudantium cum.\"\n }\n ]\n },\n {\n \"groupId\": \"desempenho\",\n \"groupName\": \"Desempenho, funcionamento, marketing e personalização\",\n \"groupOptOut\": true,\n \"groupSelected\": true,\n \"groupMessage\": \"a group 1\",\n \"groupText\": \"Lorem ipsum dolor sit amet consectetur adipisicing elit. Nostrum delectus fuga omnis, placeat harum id aliquam, blanditiis consectetur est cupiditate ipsam alias vitae veritatis beatae, aperiam totam assumenda. Sed, modi!\",\n \"cookieList\": [\n {\n \"cookieId\": \"desempenho-2\",\n \"cookieOptOut\": true,\n \"cookieSelected\": false,\n \"Message\": \"a group 1 - cookie 1\",\n \"cookieName\": \"optimizelyEndUserId\",\n \"expires\": \"30 minutos\",\n \"domain\": \"serpro.gov.br\",\n \"entreprise\": \"Serpro\",\n \"purpose\": \"Autorização\",\n \"description\": \"Lorem ipsum dolor sit amet consectetur adipisicing elit. Qui numquam inventore fuga consectetur minus accusantium sapiente, distinctio dolorum illum, doloremque rem deleniti recusandae quod rerum quidem amet? Unde, laudantium cum.\"\n },\n {\n \"cookieId\": \"desempenho-2\",\n \"cookieOptOut\": true,\n \"cookieSelected\": false,\n \"cookieName\": \"optimizelyEndUserId\",\n \"expires\": \"30 minutos\",\n \"domain\": \"serpro.gov.br\",\n \"entreprise\": \"Serpro\",\n \"purpose\": \"Autorização\",\n \"description\": \"Lorem ipsum dolor sit amet consectetur adipisicing elit. Qui numquam inventore fuga consectetur minus accusantium sapiente, distinctio dolorum illum, doloremque rem deleniti recusandae quod rerum quidem amet? Unde, laudantium cum.\"\n }\n ]\n },\n {\n \"groupId\": \"experiencia\",\n \"groupName\": \"Experiência do site\",\n \"groupOptOut\": true,\n \"groupSelected\": false,\n \"groupMessage\": \"Ao desativar essa opção, sua navegação ficará comprometida\",\n \"groupText\": \"Lorem ipsum dolor sit amet consectetur adipisicing elit. Nostrum delectus fuga omnis, placeat harum id aliquam, blanditiis consectetur est cupiditate ipsam alias vitae veritatis beatae, aperiam totam assumenda. Sed, modi!\",\n \"cookieList\": [\n {\n \"cookieId\": \"experiencia-1\",\n \"cookieOptOut\": false,\n \"cookieSelected\": false,\n \"Message\": \"a group 2 - cookie 0\",\n \"cookieName\": \"optimizelyEndUserId\",\n \"expires\": \"30 minutos\",\n \"domain\": \"serpro.gov.br\",\n \"entreprise\": \"Serpro\",\n \"purpose\": \"Autorização\",\n \"description\": \"Lorem ipsum dolor sit amet consectetur adipisicing elit. Qui numquam inventore fuga consectetur minus accusantium sapiente, distinctio dolorum illum, doloremque rem deleniti recusandae quod rerum quidem amet? Unde, laudantium cum.\"\n },\n {\n \"cookieId\": \"experiencia-2\",\n \"cookieOptOut\": true,\n \"cookieSelected\": false,\n \"cookieName\": \"optimizelyEndUserId\",\n \"expires\": \"30 minutos\",\n \"domain\": \"serpro.gov.br\",\n \"entreprise\": \"Serpro\",\n \"purpose\": \"Autorização\",\n \"description\": \"Lorem ipsum dolor sit amet consectetur adipisicing elit. Qui numquam inventore fuga consectetur minus accusantium sapiente, distinctio dolorum illum, doloremque rem deleniti recusandae quod rerum quidem amet? Unde, laudantium cum.\"\n }\n ]\n }\n ],\n \"noteTitle\": \"Aviso sobre cookies\",\n \"noteList\": [\n {\n \"question\": \"O que são cookies?\",\n \"answer\": \"Lorem ipsum dolor sit amet consectetur adipisicing elit. Aperiam eius distinctio rerum ad, maxime alias vel minima, asperiores sequi eveniet non optio officiis quaerat reiciendis quae odio explicabo ut debitis?\"\n },\n {\n \"question\": \"Durabilidade?\",\n \"answer\": \"Lorem ipsum dolor sit amet consectetur adipisicing elit. Aperiam eius distinctio rerum ad, maxime alias vel minima, asperiores sequi eveniet non optio officiis quaerat reiciendis quae odio explicabo ut debitis?\"\n },\n {\n \"question\": \"Proveniência?\",\n \"answer\": \"Lorem ipsum dolor sit amet consectetur adipisicing elit. Aperiam eius distinctio rerum ad, maxime alias vel minima, asperiores sequi eveniet non optio officiis quaerat reiciendis quae odio explicabo ut debitis?\"\n },\n {\n \"question\": \"Finalidade?\",\n \"answer\": \"Lorem ipsum dolor sit amet consectetur adipisicing elit. Aperiam eius distinctio rerum ad, maxime alias vel minima, asperiores sequi eveniet non optio officiis quaerat reiciendis quae odio explicabo ut debitis?\"\n }\n ],\n \"links\": [\n {\n \"name\": \"Declaração de Conformidade com os Princípios de Proteção de Dados\",\n \"url\": \"#\"\n }\n ]\n }\n]`\n\nexport default jsonData\n","const inputData = [\n 'Afeganistão',\n 'África do Sul',\n 'Albânia',\n 'Alemanha',\n 'Andorra',\n 'Angola',\n 'Anguilla',\n 'Antártida',\n 'Antígua e Barbuda',\n 'Antilhas Holandesas',\n 'Arábia Saudita',\n 'Argélia',\n 'Argentina',\n 'Armênia',\n 'Aruba',\n 'Austrália',\n 'Áustria',\n 'Azerbaijão',\n 'Bahamas',\n 'Bahrein',\n 'Bangladesh',\n 'Barbados',\n 'Belarus',\n 'Bélgica',\n 'Belize',\n 'Benin',\n 'Bermudas',\n 'Bolívia',\n 'Bósnia-Herzegóvina',\n 'Botsuana',\n 'Brasil',\n 'Brunei',\n 'Bulgária',\n 'Burkina Fasso',\n 'Burundi',\n 'Butão',\n 'Cabo Verde',\n 'Camarões',\n 'Camboja',\n 'Canadá',\n 'Cazaquistão',\n 'Chade',\n 'Chile',\n 'China',\n 'Chipre',\n 'Cingapura',\n 'Colômbia',\n 'Congo',\n 'Coréia do Norte',\n 'Coréia do Sul',\n 'Costa do Marfim',\n 'Costa Rica',\n 'Croácia (Hrvatska)',\n 'Cuba',\n 'Dinamarca',\n 'Djibuti',\n 'Dominica',\n 'Egito',\n 'El Salvador',\n 'Emirados Árabes Unidos',\n 'Equador',\n 'Eritréia',\n 'Eslováquia',\n 'Eslovênia',\n 'Espanha',\n 'Estados Unidos',\n 'Estônia',\n 'Etiópia',\n 'Fiji',\n 'Filipinas',\n 'Finlândia',\n 'França',\n 'Gabão',\n 'Gâmbia',\n 'Gana',\n 'Geórgia',\n 'Gibraltar',\n 'Grã-Bretanha (Reino Unido, UK)',\n 'Granada',\n 'Grécia',\n 'Groelândia',\n 'Guadalupe',\n 'Guam (Território dos Estados Unidos)',\n 'Guatemala',\n 'Guernsey',\n 'Guiana',\n 'Guiana Francesa',\n 'Guiné',\n 'Guiné Equatorial',\n 'Guiné-Bissau',\n 'Haiti',\n 'Holanda',\n 'Honduras',\n 'Hong Kong',\n 'Hungria',\n 'Iêmen',\n 'Ilha Bouvet (Território da Noruega)',\n 'Ilha do Homem',\n 'Ilha Natal',\n 'Ilha Pitcairn',\n 'Ilha Reunião',\n 'Ilhas Aland',\n 'Ilhas Cayman',\n 'Ilhas Cocos',\n 'Ilhas Comores',\n 'Ilhas Cook',\n 'Ilhas Faroes',\n 'Ilhas Falkland (Malvinas)',\n 'Ilhas Geórgia do Sul e Sandwich do Sul',\n 'Ilhas Heard e McDonald (Território da Austrália)',\n 'Ilhas Marianas do Norte',\n 'Ilhas Marshall',\n 'Ilhas Menores dos Estados Unidos',\n 'Ilhas Norfolk',\n 'Ilhas Seychelles',\n 'Ilhas Solomão',\n 'Ilhas Svalbard e Jan Mayen',\n 'Ilhas Tokelau',\n 'Ilhas Turks e Caicos',\n 'Ilhas Virgens (Estados Unidos)',\n 'Ilhas Virgens (Inglaterra)',\n 'Ilhas Wallis e Futuna',\n 'índia',\n 'Indonésia',\n 'Irã',\n 'Iraque',\n 'Irlanda',\n 'Islândia',\n 'Israel',\n 'Itália',\n 'Jamaica',\n 'Japão',\n 'Jersey',\n 'Jordânia',\n 'Kênia',\n 'Kiribati',\n 'Kuait',\n 'Laos',\n 'Látvia',\n 'Lesoto',\n 'Líbano',\n 'Libéria',\n 'Líbia',\n 'Liechtenstein',\n 'Lituânia',\n 'Luxemburgo',\n 'Macau',\n 'Macedônia (República Yugoslava)',\n 'Madagascar',\n 'Malásia',\n 'Malaui',\n 'Maldivas',\n 'Mali',\n 'Malta',\n 'Marrocos',\n 'Martinica',\n 'Maurício',\n 'Mauritânia',\n 'Mayotte',\n 'México',\n 'Micronésia',\n 'Moçambique',\n 'Moldova',\n 'Mônaco',\n 'Mongólia',\n 'Montenegro',\n 'Montserrat',\n 'Myanma',\n 'Namíbia',\n 'Nauru',\n 'Nepal',\n 'Nicarágua',\n 'Níger',\n 'Nigéria',\n 'Niue',\n 'Noruega',\n 'Nova Caledônia',\n 'Nova Zelândia',\n 'Omã',\n 'Palau',\n 'Panamá',\n 'Papua-Nova Guiné',\n 'Paquistão',\n 'Paraguai',\n 'Peru',\n 'Polinésia Francesa',\n 'Polônia',\n 'Porto Rico',\n 'Portugal',\n 'Qatar',\n 'Quirguistão',\n 'República Centro-Africana',\n 'República Democrática do Congo',\n 'República Dominicana',\n 'República Tcheca',\n 'Romênia',\n 'Ruanda',\n 'Rússia (antiga URSS) - Federação Russa',\n 'Saara Ocidental',\n 'Saint Vincente e Granadinas',\n 'Samoa Americana',\n 'Samoa Ocidental',\n 'San Marino',\n 'Santa Helena',\n 'Santa Lúcia',\n 'São Bartolomeu',\n 'São Cristóvão e Névis',\n 'São Martim',\n 'São Tomé e Príncipe',\n 'Senegal',\n 'Serra Leoa',\n 'Sérvia',\n 'Síria',\n 'Somália',\n 'Sri Lanka',\n 'St. Pierre and Miquelon',\n 'Suazilândia',\n 'Sudão',\n 'Suécia',\n 'Suíça',\n 'Suriname',\n 'Tadjiquistão',\n 'Tailândia',\n 'Taiwan',\n 'Tanzânia',\n 'Território Britânico do Oceano índico',\n 'Territórios do Sul da França',\n 'Territórios Palestinos Ocupados',\n 'Timor Leste',\n 'Togo',\n 'Tonga',\n 'Trinidad and Tobago',\n 'Tunísia',\n 'Turcomenistão',\n 'Turquia',\n 'Tuvalu',\n 'Ucrânia',\n 'Uganda',\n 'Uruguai',\n 'Uzbequistão',\n 'Vanuatu',\n 'Vaticano',\n 'Venezuela',\n 'Vietnã',\n 'Zâmbia',\n 'Zimbábue',\n]\n\nexport default inputData\n","// Script Templates\nimport BRAccordion from '../../components/accordion/accordion'\nimport BRAvatar from '../../components/avatar/avatar'\nimport BRBreadcrumb from '../../components/breadcrumb/breadcrumb'\nimport BRCard from '../../components/card/card'\nimport BRCarousel from '../../components/carousel/carousel'\nimport BRCheckbox from '../../components/checkbox/checkbox'\nimport BRCookiebar from '../../components/cookiebar/cookiebar'\nimport jsonData from '../../components/cookiebar/jsonData' // dados para instanciação do cookiebar\nimport BRDateTimePicker from '../../components/datetimepicker/datetimepicker'\nimport BRFooter from '../../components/footer/footer'\nimport BRHeader from '../../components/header/header'\nimport BRInput from '../../components/input/input'\nimport inputData from '../../components/input/input-data' // Dados para o autocomplete do input\nimport BRItem from '../../components/item/item'\nimport BRList from '../../components/list/list'\nimport BRMenu from '../../components/menu/menu'\nimport BRMessage from '../../components/message/message'\nimport BRModal from '../../components/modal/modal'\nimport BRNotification from '../../components/notification/notification'\nimport BRPagination from '../../components/pagination/pagination'\nimport BRScrim from '../../components/scrim/scrim'\nimport BRSelect from '../../components/select/select'\nimport BRStep from '../../components/step/step'\nimport BRTab from '../../components/tab/tab'\nimport BRTable from '../../components/table/table'\nimport BRTag from '../../components/tag/tag'\nimport BRTextarea from '../../components/textarea/textarea'\nimport BRTooltip from '../../components/tooltip/tooltip'\nimport BRUpload from '../../components/upload/upload'\nimport BRWizard from '../../components/wizard/wizard'\nimport Accordion from './behavior/accordion'\nimport Checkgroup from './behavior/checkgroup'\nimport Collapse from './behavior/collapse'\nimport Dropdown from './behavior/dropdown'\n\nexport default class Globals {\n initInstanceAll() {\n this.initInstanceAccordion()\n this.initInstanceAvatar()\n this.initInstanceBreadcrumb()\n this.initInstanceCard()\n this.initInstanceCarousel()\n this.initInstanceCheckbox()\n this.initInstanceCookiebar()\n this.initInstanceDateTimePicker()\n this.initInstanceFooter()\n this.initInstanceInput()\n this.initInstanceHeader()\n this.initInstanceItem()\n this.initInstanceList()\n this.initInstanceMenu()\n this.initInstanceMessage()\n this.initInstanceModal()\n this.initInstanceNotification()\n this.initInstancePagination()\n this.initInstanceScrim()\n this.initInstanceSelect()\n this.initInstanceStep()\n this.initInstanceTable()\n this.initInstanceTabs()\n this.initInstanceTextarea()\n this.initInstanceUpload()\n this.initInstanceWizard()\n this.initInstanceTooltip()\n }\n\n initInstanceAccordion() {\n const accordionList = []\n for (const brAccordion of window.document.querySelectorAll(\n '.br-accordion'\n )) {\n accordionList.push(new BRAccordion('br-accordion', brAccordion))\n }\n }\n\n initInstanceAvatar() {\n const avatarList = []\n for (const brAvatar of window.document.querySelectorAll('.br-avatar')) {\n avatarList.push(new BRAvatar('br-avatar', brAvatar))\n }\n }\n\n initInstanceBreadcrumb() {\n const breadcrumbList = []\n for (const brBreadcrumb of window.document.querySelectorAll(\n '.br-breadcrumb'\n )) {\n breadcrumbList.push(new BRBreadcrumb('br-breadcrumb', brBreadcrumb))\n }\n }\n\n initInstanceDateTimePicker() {\n const datetimepickerList = []\n for (const brDateTimePicker of window.document.querySelectorAll(\n '.br-datetimepicker'\n )) {\n datetimepickerList.push(\n new BRDateTimePicker('br-datetimepicker', brDateTimePicker)\n )\n }\n }\n\n initInstanceHeader() {\n const headerList = []\n for (const brHeader of window.document.querySelectorAll('.br-header')) {\n headerList.push(new BRHeader('br-header', brHeader))\n }\n }\n initInstanceFooter() {\n const listFooter = []\n for (const brFooter of window.document.querySelectorAll('.br-footer')) {\n listFooter.push(new BRFooter('br-footer', brFooter))\n }\n }\n\n initInstanceInput() {\n const inputList = []\n for (const brInput of window.document.querySelectorAll('.br-input')) {\n inputList.push(new BRInput('br-input', brInput))\n }\n for (const brInput of inputList) {\n brInput.component\n .querySelectorAll('input.search-autocomplete')\n .forEach(() => {\n brInput.setAutocompleteData(inputData)\n })\n }\n }\n\n initInstanceItem() {\n const itemList = []\n for (const brItem of window.document.querySelectorAll('.br-item')) {\n itemList.push(new BRItem('br-item', brItem))\n }\n }\n\n initInstanceList() {\n const listList = []\n for (const brList of window.document.querySelectorAll(\n '.br-list:not([data-sub])'\n )) {\n listList.push(new BRList('br-list', brList))\n }\n }\n\n initInstanceMenu() {\n const menuList = []\n for (const brMenu of window.document.querySelectorAll('.br-menu')) {\n menuList.push(new BRMenu('br-menu', brMenu))\n }\n }\n\n initInstanceMessage() {\n const List = []\n for (const brMessage of window.document.querySelectorAll('.br-message')) {\n List.push(new BRMessage('br-message', brMessage))\n }\n }\n\n initInstanceModal() {\n const modalList = []\n for (const brModal of window.document.querySelectorAll('.br-modal')) {\n modalList.push(new BRModal('br-modal', brModal))\n }\n for (const brScrim of window.document.querySelectorAll('.br-scrim')) {\n const scrim = new BRScrim('br-scrim', brScrim)\n for (const button of window.document.querySelectorAll(\n '.br-scrim + button'\n )) {\n button.addEventListener('click', () => {\n scrim.showScrim()\n })\n }\n }\n }\n\n initInstanceNotification() {\n const notificationList = []\n for (const brNotification of window.document.querySelectorAll(\n '.br-notification'\n )) {\n notificationList.push(\n new BRNotification('br-notification', brNotification)\n )\n }\n }\n\n initInstancePagination() {\n const paginationList = []\n for (const brPagination of window.document.querySelectorAll(\n '.br-pagination'\n )) {\n paginationList.push(new BRPagination('br-pagination', brPagination))\n }\n }\n\n initInstanceScrim() {\n const scrimList = []\n for (const brScrim of window.document.querySelectorAll('.br-scrim')) {\n scrimList.push(new BRScrim('br-scrim', brScrim))\n }\n for (const buttonBloco1 of window.document.querySelectorAll(\n '.bloco1 button'\n )) {\n buttonBloco1.addEventListener('click', () => {\n for (const brScrim of scrimList) {\n brScrim.showScrim()\n }\n })\n }\n }\n\n initInstanceSelect() {\n const selectList = []\n for (const brSelect of window.document.querySelectorAll('.br-select')) {\n selectList.push(new BRSelect('br-select', brSelect))\n }\n }\n\n initInstanceTable() {\n const tableList = []\n for (const [index, brTable] of window.document\n .querySelectorAll('.br-table')\n .entries()) {\n tableList.push(new BRTable('br-table', brTable, index))\n }\n }\n\n initInstanceTag() {\n const tagList = []\n for (const brTag of window.document.querySelectorAll('.br-tag')) {\n tagList.push(new BRTag('br-tag', brTag))\n }\n }\n\n initInstanceTabs() {\n const abasList = []\n for (const brTab of window.document.querySelectorAll('.br-tab')) {\n abasList.push(new BRTab('br-tab', brTab))\n }\n }\n\n initInstanceTooltip() {\n const tooltipList = []\n for (const brTooltip of window.document.querySelectorAll('.br-tooltip')) {\n tooltipList.push(new BRTooltip('br-tooltip', brTooltip))\n }\n }\n\n initInstanceUpload() {\n const uploadList = []\n function uploadTimeout() {\n return new Promise((resolve) => {\n // Colocar aqui um upload para o servidor e retirar o timeout\n return setTimeout(resolve, 500)\n })\n }\n for (const brUpload of window.document.querySelectorAll('.br-upload')) {\n uploadList.push(new BRUpload('br-upload', brUpload, uploadTimeout))\n }\n }\n\n initInstanceStep() {\n const stepList = []\n for (const brStep of window.document.querySelectorAll('.br-step')) {\n stepList.push(new BRStep('br-step', brStep))\n }\n }\n\n initInstanceWizard() {\n const wizardList = []\n for (const brWizard of window.document.querySelectorAll('.br-wizard')) {\n wizardList.push(new BRWizard('br-wizard', brWizard))\n }\n }\n\n initInstanceCard() {\n const listCard = []\n for (const brCard of window.document.querySelectorAll('.br-card')) {\n listCard.push(new BRCard('br-card', brCard))\n }\n }\n initInstanceCarousel() {\n const carouselList = []\n for (const brCarousel of window.document.querySelectorAll('.br-carousel')) {\n carouselList.push(new BRCarousel('br-carousel', brCarousel))\n }\n }\n\n initInstanceCheckbox() {\n const checkboxList = []\n for (const brCheckbox of window.document.querySelectorAll('.br-checkbox')) {\n checkboxList.push(new BRCheckbox('br-checkbox', brCheckbox))\n }\n }\n\n initInstanceCookiebar() {\n /** Exemplo de instanciação de um objeto cookiebar */\n const cookiebarList = []\n for (const brCookiebar of window.document.querySelectorAll(\n '.br-cookiebar'\n )) {\n const params = {\n name: 'br-cookiebar',\n component: brCookiebar,\n lang: 'pt-br',\n mode: 'default',\n json: jsonData,\n callback: (outputJSON) => {\n // console.log(JSON.parse(outputJSON))\n // console.log(outputJSON)\n },\n }\n // CookiebarData.loadJSON('./data.json', (response) => {\n // return (params.json = response)\n // })\n cookiebarList.push(new BRCookiebar(params))\n }\n\n /** Exemplo de instanciação do cookibar apenas sem necessidade de um HTML base */\n // BRCookiebar.createCookiebar(jsonData, showOutput)\n }\n\n initInstanceTextarea() {\n const textareaList = []\n for (const brTextarea of window.document.querySelectorAll('.br-textarea')) {\n textareaList.push(new BRTextarea('br-textarea', brTextarea))\n }\n }\n initInstanceWizard() {\n const wizardList = []\n for (const brWizard of window.document.querySelectorAll('.br-wizard')) {\n wizardList.push(new BRWizard('br-wizard', brWizard))\n }\n }\n}\n\nexport {\n Accordion,\n BRAvatar,\n Checkgroup,\n BRAccordion,\n Dropdown,\n BRBreadcrumb,\n Collapse,\n BRCard,\n BRCheckbox,\n BRCookiebar,\n BRDateTimePicker,\n BRFooter,\n BRHeader,\n BRInput,\n BRItem,\n BRList,\n BRMenu,\n BRMessage,\n BRModal,\n BRNotification,\n BRPagination,\n BRScrim,\n BRSelect,\n BRTab,\n BRTable,\n BRTag,\n BRTextarea,\n BRTooltip,\n BRUpload,\n BRWizard,\n Globals,\n}\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","import Accordion from '../../partial/js/behavior/accordion'\n\n/**\n * Classe para o exemplo do comportamento accordion\n */\nclass AccordionExample {\n /**\n * Instancia um exemplo de comportamento accordion\n * @param {object} element - Elemento DOM que representa um componente contento um comportamento de accordion\n */\n constructor(element) {\n this.element = element\n this._setBehavior()\n }\n\n _setBehavior() {\n this._setAccordionBehavior()\n }\n\n _setAccordionBehavior() {\n this.element\n .querySelectorAll('[data-toggle=\"accordion\"]')\n .forEach((trigger) => {\n const config = {\n trigger,\n iconToShow: 'fa-chevron-down',\n iconToHide: 'fa-chevron-up',\n useIcons: true,\n }\n const accordion = new Accordion(config)\n accordion.setBehavior()\n })\n }\n}\n\nexport default AccordionExample\n","import Checkgroup from '../../partial/js/behavior/checkgroup'\n\n/**\n * Classe para o exemplo do comportamento checkgroup\n */\nclass CheckgroupExample {\n /**\n * Instancia um exemplo de comportamento checkgroup\n * @param {object} element - Elemento DOM que representa um componente contento um comportamento de checkgroup\n */\n constructor(element) {\n this.element = element\n this._setBehavior()\n }\n\n _setBehavior() {\n this._setCheckgroupBehavior()\n }\n\n _setCheckgroupBehavior() {\n this.element\n .querySelectorAll('input[type=\"checkbox\"][data-parent]')\n .forEach((trigger) => {\n const checkgroup = new Checkgroup(trigger)\n checkgroup.setBehavior()\n })\n }\n}\n\nexport default CheckgroupExample\n","import Collapse from '../../partial/js/behavior/collapse'\n\n/**\n * Classe para o exemplo do comportamento collapse\n */\nclass CollapseExample {\n /**\n * Instancia um exemplo de comportamento collapse\n * @param {object} element - Elemento DOM que representa um componente contento um comportamento de collapse\n */\n constructor(element) {\n this.element = element\n this._setBehavior()\n }\n\n _setBehavior() {\n this._setCollapseBehavior()\n }\n\n _setCollapseBehavior() {\n this.element\n .querySelectorAll('[data-toggle=\"collapse\"]')\n .forEach((trigger) => {\n const config = {\n trigger,\n iconToShow: 'fa-chevron-down',\n iconToHide: 'fa-chevron-up',\n useIcons: true,\n }\n const collapse = new Collapse(config)\n collapse.setBehavior()\n })\n }\n}\n\nexport default CollapseExample\n","import Dropdown from '../../partial/js/behavior/dropdown'\n\n/**\n * Classe para o exemplo do comportamento dropdown\n */\nclass DropdownExample {\n /**\n * Instancia um exemplo de comportamento dropdown\n * @param {object} element - Elemento DOM que representa um componente contento um comportamento de dropdown\n */\n constructor(element) {\n this.element = element\n this._setBehavior()\n }\n\n _setBehavior() {\n this._setDropdownBehavior()\n }\n\n _setDropdownBehavior() {\n this.element\n .querySelectorAll('[data-toggle=\"dropdown\"]')\n .forEach((trigger) => {\n const config = {\n trigger,\n iconToShow: 'fa-chevron-down',\n iconToHide: 'fa-chevron-up',\n useIcons: true,\n }\n const dropdown = new Dropdown(config)\n dropdown.setBehavior()\n })\n }\n}\n\nexport default DropdownExample\n","// import TooltipExample from '../../util/tooltip/tooltip'\nimport Scrim from '../../partial/js/behavior/scrim'\nimport Tooltip from '../../partial/js/behavior/tooltip'\nimport AccordionExample from '../../util/accordion/accordion'\nimport CheckgroupExample from '../../util/checkgroup/checkgroup'\nimport CollapseExample from '../../util/collapse/collapse'\nimport DropdownExample from '../../util/dropdown/dropdown'\n\nexport default class Behavior {\n initInstanceAll() {\n this._initInstanceAccordionExample()\n this._initInstanceCheckGroupExemple()\n this._initInstanceCollapseExample()\n this._initInstanceDropdownExample()\n this._initInstanceTooltipExample()\n this._initInstanceScrimExample()\n }\n\n _initInstanceCollapseExample() {\n const collapseExampleList = []\n window.document\n .querySelectorAll('.collapse-example')\n .forEach((collapseExample) => {\n collapseExampleList.push(new CollapseExample(collapseExample))\n })\n }\n\n _initInstanceAccordionExample() {\n const accordionExampleList = []\n window.document\n .querySelectorAll('.accordion-example')\n .forEach((accordionExample) => {\n accordionExampleList.push(new AccordionExample(accordionExample))\n })\n }\n\n _initInstanceCheckGroupExemple() {\n const checkgroupExampleList = []\n window.document\n .querySelectorAll('.checkgroup-example')\n .forEach((checkgroupExample) => {\n checkgroupExampleList.push(new CheckgroupExample(checkgroupExample))\n })\n }\n\n _initInstanceDropdownExample() {\n const dropdownExampleList = []\n window.document\n .querySelectorAll('.dropdown-example')\n .forEach((dropdownExample) => {\n dropdownExampleList.push(new DropdownExample(dropdownExample))\n })\n }\n\n _initInstanceScrimExample() {\n for (const buttonBloco1 of window.document.querySelectorAll(\n '.scrimutilexemplo button'\n )) {\n buttonBloco1.addEventListener('click', () => {\n const scrscrim = window.document.querySelector('#scrimutilexample')\n const scrimfoco = new Scrim({\n closeElement: '#scrimfechar',\n trigger: scrscrim,\n })\n scrimfoco.showScrim()\n })\n }\n }\n _initInstanceTooltipExample() {\n const TooltipExampleList = []\n\n window.document\n .querySelectorAll('[data-tooltip-text]:not(.notification-tooltip)')\n .forEach((TooltipExample) => {\n const texttooltip = TooltipExample.getAttribute('data-tooltip-text')\n const config = {\n activator: TooltipExample,\n placement: 'top',\n textTooltip: texttooltip,\n }\n\n TooltipExampleList.push(new Tooltip(config))\n })\n\n document.querySelectorAll('[data-tooltip-target]').forEach((trigger) => {\n const targets = document.querySelectorAll(\n trigger.getAttribute('data-tooltip-target')\n )\n\n targets.forEach((target) => {\n const place =\n target.getAttribute('place') !== null\n ? target.getAttribute('place')\n : 'top'\n\n const config = {\n activator: trigger,\n component: target,\n place: place,\n placement: 'top',\n type: 'warning',\n }\n const tooltip = new Tooltip(config)\n })\n })\n }\n}\n","/* eslint-disable no-unused-vars */\nimport 'focus-visible'\nimport BRAccordion from '../../components/accordion/accordion'\nimport BRBreadcrumb from '../../components/breadcrumb/breadcrumb'\nimport BRCard from '../../components/card/card'\nimport BRCarousel from '../../components/carousel/carousel'\nimport BRCheckbox from '../../components/checkbox/checkbox'\nimport BRCookiebar from '../../components/cookiebar/cookiebar'\nimport BRDateTimePicker from '../../components/datetimepicker/datetimepicker'\nimport BRFooter from '../../components/footer/footer'\nimport BRHeader from '../../components/header/header'\nimport BRInput from '../../components/input/input'\nimport BRItem from '../../components/item/item'\nimport BRList from '../../components/list/list'\nimport BRMenu from '../../components/menu/menu'\nimport BR from '../../components/message/message'\nimport BRModal from '../../components/modal/modal'\nimport BRNotification from '../../components/notification/notification'\nimport BRPagination from '../../components/pagination/pagination'\nimport BRScrim from '../../components/scrim/scrim'\nimport BRSelect from '../../components/select/select'\nimport BRStep from '../../components/step/step'\nimport BRTab from '../../components/tab/tab'\nimport BRTable from '../../components/table/table'\nimport BRTag from '../../components/tag/tag'\nimport BRTextarea from '../../components/textarea/textarea'\nimport BRTooltip from '../../components/tooltip/tooltip'\nimport BRUpload from '../../components/upload/upload'\nimport BRWizard from '../../components/wizard/wizard'\nimport Accordion from './behavior/accordion'\nimport Checkgroup from './behavior/checkgroup'\nimport Collapse from './behavior/collapse'\nimport Tooltip from './behavior/tooltip'\nimport Behavior from './dsgov.beahavior'\nimport { Dropdown, Globals } from './globals-class'\n\nconst globals = new Globals()\nglobals.initInstanceAll()\n\nconst behavior = new Behavior()\nbehavior.initInstanceAll()\n\nexport {\n Accordion,\n Checkgroup,\n BRAccordion,\n Dropdown,\n BRBreadcrumb,\n BRCarousel,\n Collapse,\n BRCard,\n BRCheckbox,\n BRCookiebar,\n BRDateTimePicker,\n BRFooter,\n BRHeader,\n BRInput,\n BRItem,\n BRList,\n BRMenu,\n BR,\n BRModal,\n BRNotification,\n BRPagination,\n BRScrim,\n BRSelect,\n BRStep,\n BRTab,\n BRTable,\n BRTag,\n BRTextarea,\n BRTooltip,\n BRUpload,\n BRWizard,\n Globals,\n Tooltip,\n globals,\n behavior,\n}\n"],"names":[],"sourceRoot":""}