survey-analytics 2.3.11 → 2.3.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm/shared.mjs +18 -18
- package/fesm/shared.mjs.map +1 -1
- package/fesm/shared2.mjs +1 -1
- package/fesm/survey.analytics.core.mjs +1 -1
- package/fesm/survey.analytics.mjs +1 -1
- package/fesm/survey.analytics.mongo.mjs +1 -1
- package/fesm/survey.analytics.tabulator.mjs +32 -7
- package/fesm/survey.analytics.tabulator.mjs.map +1 -1
- package/package.json +2 -2
- package/survey-analytics-tabulator.types/tables/table.d.ts +18 -0
- package/survey-analytics-tabulator.types/tables/tabulator.d.ts +2 -0
- package/survey.analytics.core.css +1 -1
- package/survey.analytics.core.js +18 -18
- package/survey.analytics.core.js.map +1 -1
- package/survey.analytics.core.min.css +1 -1
- package/survey.analytics.core.min.js +1 -1
- package/survey.analytics.core.min.js.LICENSE.txt +1 -1
- package/survey.analytics.css +1 -1
- package/survey.analytics.js +18 -18
- package/survey.analytics.js.map +1 -1
- package/survey.analytics.min.css +1 -1
- package/survey.analytics.min.js +1 -1
- package/survey.analytics.min.js.LICENSE.txt +1 -1
- package/survey.analytics.mongo.js +1 -1
- package/survey.analytics.mongo.min.js.LICENSE.txt +1 -1
- package/survey.analytics.tabulator.css +1 -1
- package/survey.analytics.tabulator.js +50 -25
- package/survey.analytics.tabulator.js.map +1 -1
- package/survey.analytics.tabulator.min.css +1 -1
- package/survey.analytics.tabulator.min.js +1 -1
- package/survey.analytics.tabulator.min.js.LICENSE.txt +1 -1
package/survey.analytics.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"survey.analytics.js","mappings":";;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;;;;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,EAAE,KAA4D;AAC9D,EAAE,CACmD;AACrD,CAAC,qBAAqB;;AAEtB;AACA;;AAEA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB,aAAa,UAAU;AACvB,eAAe;AACf;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB,aAAa,UAAU;AACvB,eAAe;AACf;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB,aAAa,GAAG;AAChB,aAAa,GAAG;AAChB,aAAa,GAAG;AAChB,eAAe;AACf;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAgB,sBAAsB;AACtC;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,8CAA8C,aAAa;AAC3D;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;;AAEA;AACA;AACA;AACA,aAAa,aAAa;AAC1B,aAAa,QAAQ;AACrB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,aAAa,QAAQ;AACrB,eAAe;AACf;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,aAAa,GAAG;AAChB,eAAe;AACf;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,aAAa,aAAa;AAC1B,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,aAAa;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB,aAAa,UAAU;AACvB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,kBAAkB,yBAAyB;AAC3C;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;;AAEA;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;;AAEA;;AAEA;AACA;AACA,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA,8CAA8C;AAC9C;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,qDAAqD,gBAAgB;;AAErE;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,aAAa;AAC1B,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,sBAAsB,iCAAiC;AACvD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB,aAAa,sCAAsC;AACnD,eAAe;AACf;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,aAAa,QAAQ;AACrB,aAAa,sCAAsC;AACnD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,eAAe;AACf;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,sCAAsC;AACnD;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,sCAAsC;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,sCAAsC;AACnD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,sCAAsC;AACnD;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,sCAAsC;AACnD;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB;AACA,aAAa,UAAU;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB;AACA,aAAa,UAAU;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,gBAAgB,YAAY;AAC5B;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,gBAAgB,YAAY;AAC5B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,gBAAgB,YAAY;AAC5B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,SAAS;AACtB,aAAa,QAAQ;AACrB,eAAe;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,aAAa;AAC1B,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,GAAG;AAChB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,QAAQ;AACrB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,QAAQ;AACrB;AACA,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,QAAQ;AACrB;AACA,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,UAAU;AACvB,aAAa,QAAQ;AACrB,eAAe;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,aAAa;AAC1B,eAAe;AACf;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,aAAa;AAC1B,aAAa,SAAS;AACtB;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,aAAa;AAC1B,aAAa,QAAQ;AACrB,eAAe;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,2BAA2B;AACxC,aAAa,QAAQ;AACrB;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,aAAa,aAAa;AAC1B,aAAa,aAAa;AAC1B,aAAa,SAAS;AACtB;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,aAAa;AAC1B,eAAe;AACf;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,aAAa,aAAa;AAC1B,aAAa,SAAS;AACtB,aAAa,OAAO;AACpB,eAAe;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,0BAA0B,EAAE;AAC5B,4BAA4B,GAAG;AAC/B;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,aAAa;AAC1B,eAAe;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB,eAAe;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,aAAa;AAC1B,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,MAAM;AACnB,aAAa,cAAc;AAC3B,aAAa,QAAQ;AACrB;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,MAAM;AACnB,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;;AAEA;AACA;;AAEA;AACA,kBAAkB,kBAAkB;AACpC;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;;AAEA;AACA,kBAAkB,wBAAwB;AAC1C;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,0BAA0B;AAC5C;AACA;AACA;AACA;AACA;;AAEA;AACA,gBAAgB,sBAAsB;AACtC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,gBAAgB,sBAAsB;AACtC;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,cAAc;AAC3B,eAAe;AACf;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,cAAc;AAC3B,eAAe;AACf;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,cAAc;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,cAAc;AAC3B;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,cAAc;AAC3B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,cAAc;AAC3B,eAAe;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;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;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAM;AACN;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;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;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,cAAc;AAC3B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,cAAc;AAC3B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,cAAc;AAC3B;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,gCAAgC,wDAAwD;AACxF;;AAEA;AACA;AACA;AACA;AACA,2BAA2B,wDAAwD;AACnF;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,cAAc;AAC3B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;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;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,cAAc;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,WAAW;AACxB,aAAa,WAAW;AACxB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,aAAa,aAAa;AAC1B;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,2BAA2B;AAC3B;AACA;AACA,QAAQ;AACR;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,yBAAyB;;AAEzB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB,aAAa,MAAM;AACnB,aAAa,MAAM;AACnB,aAAa,QAAQ;AACrB,aAAa,MAAM;AACnB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,UAAU;AACvB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,GAAG;AAChB,aAAa,GAAG;AAChB,eAAe;AACf;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,gBAAgB,YAAY;AAC5B;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,SAAS;AACtB,aAAa,UAAU;AACvB,eAAe;AACf;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,SAAS;AACtB,aAAa,QAAQ;AACrB,eAAe;AACf;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;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;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;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;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,MAAM;AACnB,aAAa,qBAAqB;AAClC,aAAa,aAAa;AAC1B,eAAe;AACf;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,gCAAgC,uDAAuD;AACvF;;AAEA;AACA;AACA;AACA;AACA,wBAAwB,uDAAuD;AAC/E;;AAEA;AACA;AACA;AACA;AACA,iCAAiC,uDAAuD;AACxF;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,SAAS;AACtB;AACA,aAAa,QAAQ;AACrB;AACA,eAAe;AACf;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,SAAS;AACtB;AACA;AACA;AACA,aAAa,QAAQ;AACrB;AACA,eAAe;AACf;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;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,aAAa,aAAa;AAC1B,aAAa,QAAQ;AACrB,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,SAAS;AACtB,aAAa,UAAU;AACvB,eAAe;AACf;AACA;AACA;;AAEA;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;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,SAAS;AACtB,aAAa,UAAU;AACvB,eAAe;AACf;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,0BAA0B;;AAE1B;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,SAAS;AACtB,aAAa,SAAS;AACtB,aAAa,UAAU;AACvB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB;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;;AAEA;;AAEA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,MAAM;AACnB,aAAa,aAAa;AAC1B,aAAa,SAAS;AACtB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,mCAAmC;AACnC;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,SAAS;AACtB;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;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;AACA;AACA;AACA,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB,aAAa,UAAU;AACvB,aAAa,QAAQ;AACrB,aAAa,SAAS;AACtB,aAAa,SAAS;AACtB,aAAa,SAAS;AACtB,aAAa,SAAS;AACtB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,gBAAgB,kBAAkB;AAClC;AACA;;AAEA;AACA;AACA,kBAAkB,yBAAyB;AAC3C;AACA;AACA;;AAEA;AACA;AACA,kBAAkB,yBAAyB;AAC3C;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,MAAM;AACnB,aAAa,SAAS;AACtB,aAAa,SAAS;AACtB,aAAa,SAAS;AACtB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,kBAAkB,sBAAsB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,yEAAyE,sBAAsB;AAC/F;AACA;AACA;AACA;AACA,qBAAqB,4BAA4B;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAQ;AACR;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB,eAAe;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB,eAAe;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,WAAW;AACxB,aAAa,WAAW;AACxB,eAAe;AACf;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;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,aAAa,WAAW;AACxB,aAAa,WAAW;AACxB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,WAAW;AACxB,aAAa,WAAW;AACxB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,UAAU;AACvB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA,aAAa,GAAG;AAChB,eAAe;AACf;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,GAAG;AAChB,eAAe;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,GAAG;AAChB,eAAe;AACf;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,sBAAsB;AACnC,aAAa,QAAQ;AACrB,aAAa,kCAAkC;AAC/C,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB,aAAa,mBAAmB;AAChC,aAAa,SAAS;AACtB,aAAa,SAAS;AACtB,aAAa,SAAS;AACtB,aAAa,SAAS;AACtB,aAAa,SAAS;AACtB,aAAa,kBAAkB;AAC/B,aAAa,SAAS;AACtB,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB,aAAa,SAAS;AACtB,aAAa,SAAS;AACtB,aAAa,cAAc;AAC3B,aAAa,WAAW;AACxB,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB,aAAa,kBAAkB;AAC/B,aAAa,SAAS;AACtB,aAAa,oBAAoB;AACjC,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB,aAAa,mBAAmB;AAChC,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB,aAAa,SAAS;AACtB,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB,aAAa,WAAW;AACxB,aAAa,WAAW;AACxB,aAAa,WAAW;AACxB,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,8BAA8B,gBAAgB;AAC9C;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,MAAM;AACN;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB,aAAa,UAAU;AACvB,eAAe;AACf;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB,aAAa,UAAU;AACvB,eAAe;AACf;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,oBAAoB;AACjC,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,gBAAgB,wBAAwB;AACxC;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,oBAAoB;AACjC,eAAe;AACf;AACA;AACA;;AAEA;AACA;;AAEA,gBAAgB,oBAAoB;AACpC;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,oBAAoB;AACjC,eAAe;AACf;AACA;AACA;;AAEA;AACA;;AAEA,gBAAgB,wBAAwB;AACxC;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,kBAAkB,kBAAkB;AACpC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,SAAS;AACtB,aAAa,gBAAgB;AAC7B,eAAe;AACf;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;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,QAAQ;AACR;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,gBAAgB,iBAAiB;AACjC;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,6BAA6B;AAC1C,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB,aAAa,SAAS;AACtB,aAAa,iCAAiC;AAC9C,eAAe;AACf;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,gBAAgB,qBAAqB;AACrC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,oBAAoB;AACjC,aAAa,QAAQ;AACrB,aAAa,SAAS;AACtB,aAAa,iCAAiC;AAC9C,eAAe;AACf;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,gBAAgB,wBAAwB;AACxC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,oBAAoB;AACjC,aAAa,QAAQ;AACrB,aAAa,SAAS;AACtB,aAAa,cAAc;AAC3B,aAAa,iCAAiC;AAC9C,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,oBAAoB;AACjC,aAAa,QAAQ;AACrB,aAAa,SAAS;AACtB,aAAa,cAAc;AAC3B,aAAa,iCAAiC;AAC9C,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,mBAAmB;AAChC,aAAa,QAAQ;AACrB,aAAa,SAAS;AACtB,aAAa,gBAAgB;AAC7B,aAAa,iCAAiC;AAC9C,eAAe;AACf;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,kBAAkB,wBAAwB;AAC1C;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,MAAM;AACN;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,MAAM;AACN;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,mCAAmC;AAChD,aAAa,QAAQ;AACrB,aAAa,SAAS;AACtB,aAAa,iCAAiC;AAC9C,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA,sBAAsB,kBAAkB;AACxC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,sBAAsB,yBAAyB;AAC/C;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,kBAAkB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,aAAa,qBAAqB;AAClC,aAAa,qBAAqB;AAClC,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB;AACA;AACA;AACA,aAAa,iCAAiC;AAC9C,eAAe;AACf;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAQ;AACR;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,qBAAqB;AAClC,aAAa,MAAM;AACnB,aAAa,qBAAqB;AAClC,aAAa,QAAQ;AACrB,aAAa,aAAa;AAC1B,aAAa,iCAAiC;AAC9C,aAAa,iCAAiC;AAC9C,eAAe;AACf;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,SAAS;AACtB,eAAe;AACf;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,gBAAgB,kBAAkB;AAClC;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,qBAAqB;AAClC,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,oBAAoB,wBAAwB;AAC5C;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,gBAAgB,wBAAwB;AACxC;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAM;AACN;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB,eAAe;AACf;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,SAAS;AACtB,aAAa,SAAS;AACtB,aAAa,SAAS;AACtB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,oBAAoB;AACjC,aAAa,SAAS;AACtB,aAAa,QAAQ;AACrB,aAAa,SAAS;AACtB,aAAa,6BAA6B;AAC1C,aAAa,iCAAiC;AAC9C;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;;AAEA;AACA,gBAAgB,wBAAwB;AACxC;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AA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","sources":["webpack://SurveyAnalyticsTabulator/webpack/universalModuleDefinition","webpack://SurveyAnalytics/./node_modules/muuri/dist/muuri.js","webpack://SurveyAnalytics/./src/alternativeVizualizersWrapper.ts","webpack://SurveyAnalyticsTabulator/./src/analytics-localization/arabic.ts","webpack://SurveyAnalyticsTabulator/./src/analytics-localization/dutch.ts","webpack://SurveyAnalyticsTabulator/./src/analytics-localization/english.ts","webpack://SurveyAnalyticsTabulator/./src/analytics-localization/farsi.ts","webpack://SurveyAnalyticsTabulator/./src/analytics-localization/finnish.ts","webpack://SurveyAnalyticsTabulator/./src/analytics-localization/french.ts","webpack://SurveyAnalyticsTabulator/./src/analytics-localization/german.ts","webpack://SurveyAnalyticsTabulator/./src/analytics-localization/italian.ts","webpack://SurveyAnalyticsTabulator/./src/analytics-localization/japanese.ts","webpack://SurveyAnalyticsTabulator/./src/analytics-localization/norwegian.ts","webpack://SurveyAnalyticsTabulator/./src/analytics-localization/polish.ts","webpack://SurveyAnalyticsTabulator/./src/analytics-localization/portuguese.ts","webpack://SurveyAnalyticsTabulator/./src/analytics-localization/russian.ts","webpack://SurveyAnalyticsTabulator/./src/analytics-localization/spanish.ts","webpack://SurveyAnalyticsTabulator/./src/analytics-localization/swedish.ts","webpack://SurveyAnalytics/./src/boolean.ts","webpack://SurveyAnalytics/./src/dataProvider.ts","webpack://SurveyAnalytics/./src/entries/summary.core.ts","webpack://SurveyAnalytics/./src/filterInfo.ts","webpack://SurveyAnalytics/./src/histogram.ts","webpack://SurveyAnalyticsTabulator/./src/icons.ts","webpack://SurveyAnalyticsTabulator/./src/images/ sync \\.svg$","webpack://SurveyAnalyticsTabulator/./src/images/detail.svg","webpack://SurveyAnalyticsTabulator/./src/images/drag.svg","webpack://SurveyAnalyticsTabulator/./src/images/hide.svg","webpack://SurveyAnalyticsTabulator/./src/images/makeprivate.svg","webpack://SurveyAnalyticsTabulator/./src/images/makepublic.svg","webpack://SurveyAnalyticsTabulator/./src/images/moveToDetails.svg","webpack://SurveyAnalyticsTabulator/./src/images/nonCommercial.svg","webpack://SurveyAnalyticsTabulator/./src/images/sorting.svg","webpack://SurveyAnalytics/./src/layoutEngine.ts","webpack://SurveyAnalyticsTabulator/./src/localizationManager.ts","webpack://SurveyAnalytics/./src/matrix.ts","webpack://SurveyAnalytics/./src/matrixDropdownGrouped.ts","webpack://[pc-name]/./src/nps.scss?086b","webpack://SurveyAnalytics/./src/nps.ts","webpack://SurveyAnalytics/./src/number.ts","webpack://SurveyAnalytics/./src/pivot.ts","webpack://SurveyAnalytics/./src/plotly/chart-adapter.ts","webpack://SurveyAnalytics/./src/plotly/index.ts","webpack://SurveyAnalytics/./src/plotly/legacy.ts","webpack://SurveyAnalytics/./src/plotly/setup.ts","webpack://SurveyAnalytics/./src/ranking.ts","webpack://SurveyAnalytics/./src/selectBase.ts","webpack://SurveyAnalytics/./src/statisticCalculators.ts","webpack://[pc-name]/./src/statistics-table.scss?5f2d","webpack://SurveyAnalytics/./src/statistics-table.ts","webpack://SurveyAnalyticsTabulator/./src/svgbundle.ts","webpack://[pc-name]/./src/text.scss?2dd1","webpack://SurveyAnalytics/./src/text.ts","webpack://SurveyAnalyticsTabulator/./src/utils/helpers.ts","webpack://SurveyAnalyticsTabulator/./src/utils/index.ts","webpack://SurveyAnalytics/./src/visualizationComposite.ts","webpack://SurveyAnalytics/./src/visualizationManager.ts","webpack://SurveyAnalytics/./src/visualizationMatrixDropdown.ts","webpack://SurveyAnalytics/./src/visualizationMatrixDynamic.ts","webpack://[pc-name]/./src/visualizationPanel.scss?77db","webpack://SurveyAnalytics/./src/visualizationPanel.ts","webpack://SurveyAnalytics/./src/visualizationPanelDynamic.ts","webpack://[pc-name]/./src/visualizerBase.scss?df18","webpack://SurveyAnalytics/./src/visualizerBase.ts","webpack://SurveyAnalytics/./src/visualizerFactory.ts","webpack://SurveyAnalytics/./src/wordcloud/stopwords/dutch.ts","webpack://SurveyAnalytics/./src/wordcloud/stopwords/english.ts","webpack://SurveyAnalytics/./src/wordcloud/stopwords/index.ts","webpack://SurveyAnalytics/./src/wordcloud/stopwords/norwegian.ts","webpack://SurveyAnalytics/./src/wordcloud/stopwords/spanish.ts","webpack://SurveyAnalytics/./src/wordcloud/widget.ts","webpack://SurveyAnalytics/./src/wordcloud/wordcloud.ts","webpack://SurveyAnalytics/external umd {\"root\":\"Plotly\",\"commonjs2\":\"plotly.js-dist-min\",\"commonjs\":\"plotly.js-dist-min\",\"amd\":\"plotly.js-dist-min\"}","webpack://SurveyAnalyticsTabulator/external umd {\"root\":\"Survey\",\"commonjs2\":\"survey-core\",\"commonjs\":\"survey-core\",\"amd\":\"survey-core\"}","webpack://SurveyAnalyticsTabulator/webpack/bootstrap","webpack://SurveyAnalyticsTabulator/webpack/runtime/compat get default export","webpack://SurveyAnalyticsTabulator/webpack/runtime/define property getters","webpack://SurveyAnalyticsTabulator/webpack/runtime/hasOwnProperty shorthand","webpack://SurveyAnalyticsTabulator/webpack/runtime/make namespace object","webpack://SurveyAnalytics/./src/entries/summary.ts"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"plotly.js-dist-min\"), require(\"survey-core\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"SurveyAnalytics\", [\"plotly.js-dist-min\", \"survey-core\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"SurveyAnalytics\"] = factory(require(\"plotly.js-dist-min\"), require(\"survey-core\"));\n\telse\n\t\troot[\"SurveyAnalytics\"] = factory(root[\"Plotly\"], root[\"Survey\"]);\n})(this, (__WEBPACK_EXTERNAL_MODULE_plotly_js_dist_min__, __WEBPACK_EXTERNAL_MODULE_survey_core__) => {\nreturn ","/**\n* Muuri v0.8.0\n* https://github.com/haltu/muuri\n* Copyright (c) 2015-present, Haltu Oy\n* Released under the MIT license\n* https://github.com/haltu/muuri/blob/master/LICENSE.md\n* @license MIT\n*\n* Muuri Packer\n* Copyright (c) 2016-present, Niklas Rämö <inramo@gmail.com>\n* @license MIT\n*\n* Muuri Ticker / Muuri Emitter / Muuri Queue\n* Copyright (c) 2018-present, Niklas Rämö <inramo@gmail.com>\n* @license MIT\n*/\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global = global || self, global.Muuri = factory());\n}(this, function () { 'use strict';\n\n var namespace = 'Muuri';\n var gridInstances = {};\n\n var actionSwap = 'swap';\n var actionMove = 'move';\n\n var eventSynchronize = 'synchronize';\n var eventLayoutStart = 'layoutStart';\n var eventLayoutEnd = 'layoutEnd';\n var eventAdd = 'add';\n var eventRemove = 'remove';\n var eventShowStart = 'showStart';\n var eventShowEnd = 'showEnd';\n var eventHideStart = 'hideStart';\n var eventHideEnd = 'hideEnd';\n var eventFilter = 'filter';\n var eventSort = 'sort';\n var eventMove = 'move';\n var eventSend = 'send';\n var eventBeforeSend = 'beforeSend';\n var eventReceive = 'receive';\n var eventBeforeReceive = 'beforeReceive';\n var eventDragInit = 'dragInit';\n var eventDragStart = 'dragStart';\n var eventDragMove = 'dragMove';\n var eventDragScroll = 'dragScroll';\n var eventDragEnd = 'dragEnd';\n var eventDragReleaseStart = 'dragReleaseStart';\n var eventDragReleaseEnd = 'dragReleaseEnd';\n var eventDestroy = 'destroy';\n\n /**\n * Event emitter constructor.\n *\n * @class\n */\n function Emitter() {\n this._events = {};\n this._queue = [];\n this._counter = 0;\n this._isDestroyed = false;\n }\n\n /**\n * Public prototype methods\n * ************************\n */\n\n /**\n * Bind an event listener.\n *\n * @public\n * @memberof Emitter.prototype\n * @param {String} event\n * @param {Function} listener\n * @returns {Emitter}\n */\n Emitter.prototype.on = function(event, listener) {\n if (this._isDestroyed) return this;\n\n // Get listeners queue and create it if it does not exist.\n var listeners = this._events[event];\n if (!listeners) listeners = this._events[event] = [];\n\n // Add the listener to the queue.\n listeners.push(listener);\n\n return this;\n };\n\n /**\n * Unbind all event listeners that match the provided listener function.\n *\n * @public\n * @memberof Emitter.prototype\n * @param {String} event\n * @param {Function} [listener]\n * @returns {Emitter}\n */\n Emitter.prototype.off = function(event, listener) {\n if (this._isDestroyed) return this;\n\n // Get listeners and return immediately if none is found.\n var listeners = this._events[event];\n if (!listeners || !listeners.length) return this;\n\n // If no specific listener is provided remove all listeners.\n if (!listener) {\n listeners.length = 0;\n return this;\n }\n\n // Remove all matching listeners.\n var i = listeners.length;\n while (i--) {\n if (listener === listeners[i]) listeners.splice(i, 1);\n }\n\n return this;\n };\n\n /**\n * Emit all listeners in a specified event with the provided arguments.\n *\n * @public\n * @memberof Emitter.prototype\n * @param {String} event\n * @param {*} [arg1]\n * @param {*} [arg2]\n * @param {*} [arg3]\n * @returns {Emitter}\n */\n Emitter.prototype.emit = function(event, arg1, arg2, arg3) {\n if (this._isDestroyed) return this;\n\n // Get event listeners and quit early if there's no listeners.\n var listeners = this._events[event];\n if (!listeners || !listeners.length) return this;\n\n var queue = this._queue;\n var qLength = queue.length;\n var aLength = arguments.length - 1;\n var i;\n\n // Add the current listeners to the callback queue before we process them.\n // This is necessary to guarantee that all of the listeners are called in\n // correct order even if new event listeners are removed/added during\n // processing and/or events are emitted during processing.\n for (i = 0; i < listeners.length; i++) {\n queue.push(listeners[i]);\n }\n\n // Increment queue counter. This is needed for the scenarios where emit is\n // triggered while the queue is already processing. We need to keep track of\n // how many \"queue processors\" there are active so that we can safely reset\n // the queue in the end when the last queue processor is finished.\n ++this._counter;\n\n // Process the queue (the specific part of it for this emit).\n for (i = qLength, qLength = queue.length; i < qLength; i++) {\n // prettier-ignore\n aLength === 0 ? queue[i]() :\n aLength === 1 ? queue[i](arg1) :\n aLength === 2 ? queue[i](arg1, arg2) :\n queue[i](arg1, arg2, arg3);\n\n // Stop processing if the emitter is destroyed.\n if (this._isDestroyed) return this;\n }\n\n // Decrement queue process counter.\n --this._counter;\n\n // Reset the queue if there are no more queue processes running.\n if (!this._counter) queue.length = 0;\n\n return this;\n };\n\n /**\n * Destroy emitter instance. Basically just removes all bound listeners.\n *\n * @public\n * @memberof Emitter.prototype\n * @returns {Emitter}\n */\n Emitter.prototype.destroy = function() {\n if (this._isDestroyed) return this;\n\n var events = this._events;\n var event;\n\n // Flag as destroyed.\n this._isDestroyed = true;\n\n // Reset queue (if queue is currently processing this will also stop that).\n this._queue.length = this._counter = 0;\n\n // Remove all listeners.\n for (event in events) {\n if (events[event]) {\n events[event].length = 0;\n events[event] = undefined;\n }\n }\n\n return this;\n };\n\n // Set up the default export values.\n var transformStyle = 'transform';\n var transformProp = 'transform';\n\n // Find the supported transform prop and style names.\n var docElemStyle = window.document.documentElement.style;\n var style = 'transform';\n var styleCap = 'Transform';\n var found = false;\n ['', 'Webkit', 'Moz', 'O', 'ms'].forEach(function(prefix) {\n if (found) return;\n var propName = prefix ? prefix + styleCap : style;\n if (docElemStyle[propName] !== undefined) {\n prefix = prefix.toLowerCase();\n transformStyle = prefix ? '-' + prefix + '-' + style : style;\n transformProp = propName;\n found = true;\n }\n });\n\n var stylesCache = typeof WeakMap === 'function' ? new WeakMap() : null;\n\n /**\n * Returns the computed value of an element's style property as a string.\n *\n * @param {HTMLElement} element\n * @param {String} style\n * @returns {String}\n */\n function getStyle(element, style) {\n var styles = stylesCache && stylesCache.get(element);\n if (!styles) {\n styles = window.getComputedStyle(element, null);\n if (stylesCache) stylesCache.set(element, styles);\n }\n return styles.getPropertyValue(style === 'transform' ? transformStyle : style);\n }\n\n var styleNameRegEx = /([A-Z])/g;\n\n /**\n * Transforms a camel case style property to kebab case style property.\n *\n * @param {String} string\n * @returns {String}\n */\n function getStyleName(string) {\n return string.replace(styleNameRegEx, '-$1').toLowerCase();\n }\n\n var strFunction = 'function';\n\n /**\n * Check if a value is a function.\n *\n * @param {*} val\n * @returns {Boolean}\n */\n function isFunction(val) {\n return typeof val === strFunction;\n }\n\n var transformStyle$1 = 'transform';\n\n /**\n * Set inline styles to an element.\n *\n * @param {HTMLElement} element\n * @param {Object} styles\n */\n function setStyles(element, styles) {\n for (var prop in styles) {\n element.style[prop === transformStyle$1 ? transformProp : prop] = styles[prop];\n }\n }\n\n /**\n * Item animation handler powered by Web Animations API.\n *\n * @class\n * @param {HTMLElement} element\n */\n function ItemAnimate(element) {\n this._element = element;\n this._animation = null;\n this._callback = null;\n this._props = [];\n this._values = [];\n this._keyframes = [];\n this._options = {};\n this._isDestroyed = false;\n this._onFinish = this._onFinish.bind(this);\n }\n\n /**\n * Public prototype methods\n * ************************\n */\n\n /**\n * Start instance's animation. Automatically stops current animation if it is\n * running.\n *\n * @public\n * @memberof ItemAnimate.prototype\n * @param {Object} propsFrom\n * @param {Object} propsTo\n * @param {Object} [options]\n * @param {Number} [options.duration=300]\n * @param {String} [options.easing='ease']\n * @param {Function} [options.onFinish]\n */\n ItemAnimate.prototype.start = function(propsFrom, propsTo, options) {\n if (this._isDestroyed) return;\n\n var animation = this._animation;\n var currentProps = this._props;\n var currentValues = this._values;\n var opts = options || 0;\n var cancelAnimation = false;\n\n // If we have an existing animation running, let's check if it needs to be\n // cancelled or if it can continue running.\n if (animation) {\n var propCount = 0;\n var propIndex;\n\n // Check if the requested animation target props and values match with the\n // current props and values.\n for (var propName in propsTo) {\n ++propCount;\n propIndex = currentProps.indexOf(propName);\n if (propIndex === -1 || propsTo[propName] !== currentValues[propIndex]) {\n cancelAnimation = true;\n break;\n }\n }\n\n // Check if the target props count matches current props count. This is\n // needed for the edge case scenario where target props contain the same\n // styles as current props, but the current props have some additional\n // props.\n if (!cancelAnimation && propCount !== currentProps.length) {\n cancelAnimation = true;\n }\n }\n\n // Cancel animation (if required).\n if (cancelAnimation) animation.cancel();\n\n // Store animation callback.\n this._callback = isFunction(opts.onFinish) ? opts.onFinish : null;\n\n // If we have a running animation that does not need to be cancelled, let's\n // call it a day here and let it run.\n if (animation && !cancelAnimation) return;\n\n // Store target props and values to instance.\n currentProps.length = currentValues.length = 0;\n for (propName in propsTo) {\n currentProps.push(propName);\n currentValues.push(propsTo[propName]);\n }\n\n // Set up keyframes.\n var animKeyframes = this._keyframes;\n animKeyframes[0] = propsFrom;\n animKeyframes[1] = propsTo;\n\n // Set up options.\n var animOptions = this._options;\n animOptions.duration = opts.duration || 300;\n animOptions.easing = opts.easing || 'ease';\n\n // Start the animation\n var element = this._element;\n animation = element.animate(animKeyframes, animOptions);\n animation.onfinish = this._onFinish;\n this._animation = animation;\n\n // Set the end styles. This makes sure that the element stays at the end\n // values after animation is finished.\n setStyles(element, propsTo);\n };\n\n /**\n * Stop instance's current animation if running.\n *\n * @public\n * @memberof ItemAnimate.prototype\n * @param {Object} [styles]\n */\n ItemAnimate.prototype.stop = function(styles) {\n if (this._isDestroyed || !this._animation) return;\n\n var element = this._element;\n var currentProps = this._props;\n var currentValues = this._values;\n var propName;\n var propValue;\n var i;\n\n // Calculate (if not provided) and set styles.\n if (!styles) {\n for (i = 0; i < currentProps.length; i++) {\n propName = currentProps[i];\n propValue = getStyle(element, getStyleName(propName));\n element.style[propName === 'transform' ? transformProp : propName] = propValue;\n }\n } else {\n setStyles(element, styles);\n }\n\n // Cancel animation.\n this._animation.cancel();\n this._animation = this._callback = null;\n\n // Reset current props and values.\n currentProps.length = currentValues.length = 0;\n };\n\n /**\n * Check if the item is being animated currently.\n *\n * @public\n * @memberof ItemAnimate.prototype\n * @return {Boolean}\n */\n ItemAnimate.prototype.isAnimating = function() {\n return !!this._animation;\n };\n\n /**\n * Destroy the instance and stop current animation if it is running.\n *\n * @public\n * @memberof ItemAnimate.prototype\n */\n ItemAnimate.prototype.destroy = function() {\n if (this._isDestroyed) return;\n this.stop();\n this._element = this._options = this._keyframes = null;\n this._isDestroyed = true;\n };\n\n /**\n * Private prototype methods\n * *************************\n */\n\n /**\n * Animation end handler.\n *\n * @private\n * @memberof ItemAnimate.prototype\n */\n ItemAnimate.prototype._onFinish = function() {\n var callback = this._callback;\n this._animation = this._callback = null;\n this._props.length = this._values.length = 0;\n callback && callback();\n };\n\n var vendorPrefixes = ['', 'webkit', 'moz', 'ms', 'o', 'Webkit', 'Moz', 'MS', 'O'];\n\n /**\n * Get prefixed CSS property name when given a non-prefixed CSS property name.\n * @param {Object} elemStyle\n * @param {String} propName\n * @returns {!String}\n */\n function getPrefixedPropName(elemStyle, propName) {\n var camelPropName = propName[0].toUpperCase() + propName.slice(1);\n var i = 0;\n var prefix;\n var prefixedPropName;\n\n while (i < vendorPrefixes.length) {\n prefix = vendorPrefixes[i];\n prefixedPropName = prefix ? prefix + camelPropName : propName;\n if (prefixedPropName in elemStyle) return prefixedPropName;\n ++i;\n }\n\n return null;\n }\n\n var dt = 1000 / 60;\n\n var raf = (\n window.requestAnimationFrame ||\n window.webkitRequestAnimationFrame ||\n window.mozRequestAnimationFrame ||\n window.msRequestAnimationFrame ||\n function(callback) {\n return this.setTimeout(function() {\n callback(dt);\n }, dt);\n }\n ).bind(window);\n\n // Detect support for passive events:\n // https://github.com/WICG/EventListenerOptions/blob/gh-pages/explainer.md#feature-detection\n var isPassiveEventsSupported = false;\n try {\n var passiveOpts = Object.defineProperty({}, 'passive', {\n get: function() {\n isPassiveEventsSupported = true;\n }\n });\n window.addEventListener('testPassive', null, passiveOpts);\n window.removeEventListener('testPassive', null, passiveOpts);\n } catch (e) {}\n\n // Dragger events.\n var events = {\n start: 'start',\n move: 'move',\n end: 'end',\n cancel: 'cancel'\n };\n\n var hasTouchEvents = !!('ontouchstart' in window || window.TouchEvent);\n var hasPointerEvents = !!window.PointerEvent;\n var hasMsPointerEvents = !!window.navigator.msPointerEnabled;\n var isAndroid = /(android)/i.test(window.navigator.userAgent);\n var listenerOptions = isPassiveEventsSupported ? { passive: true } : false;\n\n var taProp = 'touchAction';\n var taPropPrefixed = getPrefixedPropName(window.document.documentElement.style, taProp);\n var taDefaultValue = 'auto';\n\n /**\n * Creates a new Dragger instance for an element.\n *\n * @public\n * @class\n * @param {HTMLElement} element\n * @param {Object} [cssProps]\n */\n function Dragger(element, cssProps) {\n this._element = element;\n this._emitter = new Emitter();\n this._isDestroyed = false;\n this._cssProps = {};\n this._touchAction = '';\n this._startEvent = null;\n\n this._pointerId = null;\n this._startTime = 0;\n this._startX = 0;\n this._startY = 0;\n this._currentX = 0;\n this._currentY = 0;\n\n this._preStartCheck = this._preStartCheck.bind(this);\n this._abortNonCancelable = this._abortNonCancelable.bind(this);\n this._onStart = this._onStart.bind(this);\n this._onMove = this._onMove.bind(this);\n this._onCancel = this._onCancel.bind(this);\n this._onEnd = this._onEnd.bind(this);\n\n // Apply initial css props.\n this.setCssProps(cssProps);\n\n // If touch action was not provided with initial css props let's assume it's\n // auto.\n if (!this._touchAction) {\n this.setTouchAction(taDefaultValue);\n }\n\n // Prevent native link/image dragging for the item and it's ancestors.\n element.addEventListener('dragstart', Dragger._preventDefault, false);\n\n // Listen to start event.\n element.addEventListener(Dragger._events.start, this._preStartCheck, listenerOptions);\n\n // If we have touch events, but no pointer events we need to also listen for\n // mouse events in addition to touch events for devices which support both\n // mouse and touch interaction.\n if (hasTouchEvents && !hasPointerEvents && !hasMsPointerEvents) {\n element.addEventListener(Dragger._mouseEvents.start, this._preStartCheck, listenerOptions);\n }\n }\n\n /**\n * Protected properties\n * ********************\n */\n\n Dragger._pointerEvents = {\n start: 'pointerdown',\n move: 'pointermove',\n cancel: 'pointercancel',\n end: 'pointerup'\n };\n\n Dragger._msPointerEvents = {\n start: 'MSPointerDown',\n move: 'MSPointerMove',\n cancel: 'MSPointerCancel',\n end: 'MSPointerUp'\n };\n\n Dragger._touchEvents = {\n start: 'touchstart',\n move: 'touchmove',\n cancel: 'touchcancel',\n end: 'touchend'\n };\n\n Dragger._mouseEvents = {\n start: 'mousedown',\n move: 'mousemove',\n cancel: '',\n end: 'mouseup'\n };\n\n Dragger._events = (function() {\n if (hasPointerEvents) return Dragger._pointerEvents;\n if (hasMsPointerEvents) return Dragger._msPointerEvents;\n if (hasTouchEvents) return Dragger._touchEvents;\n return Dragger._mouseEvents;\n })();\n\n Dragger._emitter = new Emitter();\n\n Dragger._activeInstances = [];\n\n /**\n * Protected static methods\n * ************************\n */\n\n Dragger._preventDefault = function(e) {\n if (e.preventDefault && e.cancelable !== false) e.preventDefault();\n };\n\n Dragger._activateInstance = function(instance) {\n var index = Dragger._activeInstances.indexOf(instance);\n if (index > -1) return;\n\n Dragger._activeInstances.push(instance);\n Dragger._emitter.on(events.move, instance._onMove);\n Dragger._emitter.on(events.cancel, instance._onCancel);\n Dragger._emitter.on(events.end, instance._onEnd);\n\n if (Dragger._activeInstances.length === 1) {\n Dragger._bindListeners();\n }\n };\n\n Dragger._deactivateInstance = function(instance) {\n var index = Dragger._activeInstances.indexOf(instance);\n if (index === -1) return;\n\n Dragger._activeInstances.splice(index, 1);\n Dragger._emitter.off(events.move, instance._onMove);\n Dragger._emitter.off(events.cancel, instance._onCancel);\n Dragger._emitter.off(events.end, instance._onEnd);\n\n if (!Dragger._activeInstances.length) {\n Dragger._unbindListeners();\n }\n };\n\n Dragger._bindListeners = function() {\n var events = Dragger._events;\n window.addEventListener(events.move, Dragger._onMove, listenerOptions);\n window.addEventListener(events.end, Dragger._onEnd, listenerOptions);\n events.cancel && window.addEventListener(events.cancel, Dragger._onCancel, listenerOptions);\n };\n\n Dragger._unbindListeners = function() {\n var events = Dragger._events;\n window.removeEventListener(events.move, Dragger._onMove, listenerOptions);\n window.removeEventListener(events.end, Dragger._onEnd, listenerOptions);\n events.cancel && window.removeEventListener(events.cancel, Dragger._onCancel, listenerOptions);\n };\n\n Dragger._getEventPointerId = function(event) {\n // If we have pointer id available let's use it.\n if (typeof event.pointerId === 'number') {\n return event.pointerId;\n }\n\n // For touch events let's get the first changed touch's identifier.\n if (event.changedTouches) {\n return event.changedTouches[0] ? event.changedTouches[0].identifier : null;\n }\n\n // For mouse/other events let's provide a static id.\n return 1;\n };\n\n Dragger._getTouchById = function(event, id) {\n // If we have a pointer event return the whole event if there's a match, and\n // null otherwise.\n if (typeof event.pointerId === 'number') {\n return event.pointerId === id ? event : null;\n }\n\n // For touch events let's check if there's a changed touch object that matches\n // the pointerId in which case return the touch object.\n if (event.changedTouches) {\n for (var i = 0; i < event.changedTouches.length; i++) {\n if (event.changedTouches[i].identifier === id) {\n return event.changedTouches[i];\n }\n }\n return null;\n }\n\n // For mouse/other events let's assume there's only one pointer and just\n // return the event.\n return event;\n };\n\n Dragger._onMove = function(e) {\n Dragger._emitter.emit(events.move, e);\n };\n\n Dragger._onCancel = function(e) {\n Dragger._emitter.emit(events.cancel, e);\n };\n\n Dragger._onEnd = function(e) {\n Dragger._emitter.emit(events.end, e);\n };\n\n /**\n * Private prototype methods\n * *************************\n */\n\n /**\n * Reset current drag operation (if any).\n *\n * @private\n * @memberof Dragger.prototype\n */\n Dragger.prototype._reset = function() {\n if (this._isDestroyed) return;\n\n this._pointerId = null;\n this._startTime = 0;\n this._startX = 0;\n this._startY = 0;\n this._currentX = 0;\n this._currentY = 0;\n this._startEvent = null;\n\n this._element.removeEventListener(\n Dragger._touchEvents.start,\n this._abortNonCancelable,\n listenerOptions\n );\n\n Dragger._deactivateInstance(this);\n };\n\n /**\n * Create a custom dragger event from a raw event.\n *\n * @private\n * @memberof Dragger.prototype\n * @param {String} type\n * @param {(PointerEvent|TouchEvent|MouseEvent)} e\n * @returns {DraggerEvent}\n */\n Dragger.prototype._createEvent = function(type, e) {\n var touch = this._getTrackedTouch(e);\n return {\n // Hammer.js compatibility interface.\n type: type,\n srcEvent: e,\n distance: this.getDistance(),\n deltaX: this.getDeltaX(),\n deltaY: this.getDeltaY(),\n deltaTime: type === events.start ? 0 : this.getDeltaTime(),\n isFirst: type === events.start,\n isFinal: type === events.end || type === events.cancel,\n // Partial Touch API interface.\n identifier: this._pointerId,\n screenX: touch.screenX,\n screenY: touch.screenY,\n clientX: touch.clientX,\n clientY: touch.clientY,\n pageX: touch.pageX,\n pageY: touch.pageY,\n target: touch.target\n };\n };\n\n /**\n * Emit a raw event as dragger event internally.\n *\n * @private\n * @memberof Dragger.prototype\n * @param {String} type\n * @param {(PointerEvent|TouchEvent|MouseEvent)} e\n */\n Dragger.prototype._emit = function(type, e) {\n this._emitter.emit(type, this._createEvent(type, e));\n };\n\n /**\n * If the provided event is a PointerEvent this method will return it if it has\n * the same pointerId as the instance. If the provided event is a TouchEvent\n * this method will try to look for a Touch instance in the changedTouches that\n * has an identifier matching this instance's pointerId. If the provided event\n * is a MouseEvent (or just any other event than PointerEvent or TouchEvent)\n * it will be returned immediately.\n *\n * @private\n * @memberof Dragger.prototype\n * @param {(PointerEvent|TouchEvent|MouseEvent)}\n * @returns {?(Touch|PointerEvent|MouseEvent)}\n */\n Dragger.prototype._getTrackedTouch = function(e) {\n if (this._pointerId === null) {\n return null;\n } else {\n return Dragger._getTouchById(e, this._pointerId);\n }\n };\n\n /**\n * A pre-handler for start event that checks if we can start dragging.\n *\n * @private\n * @memberof Dragger.prototype\n * @param {(PointerEvent|TouchEvent|MouseEvent)} e\n */\n Dragger.prototype._preStartCheck = function(e) {\n if (this._isDestroyed) return;\n\n // Make sure the element is not being dragged currently.\n if (this.isDragging()) return;\n\n // Special cancelable check for Android to prevent drag procedure from\n // starting if native scrolling is in progress. Part 1.\n if (isAndroid && e.cancelable === false) return;\n\n // Make sure left button is pressed on mouse.\n if (e.button) return;\n\n // Get (and set) pointer id.\n this._pointerId = Dragger._getEventPointerId(e);\n if (this._pointerId === null) return;\n\n // Store the start event and trigger start (async or sync). Pointer events\n // are emitted before touch events if the browser supports both of them. And\n // if you try to move an element before `touchstart` is emitted the pointer\n // events for that element will be canceled. The fix is to delay the emitted\n // pointer events in such a scenario by one frame so that `touchstart` has\n // time to be emitted before the element is (potentially) moved.\n this._startEvent = e;\n if (hasTouchEvents && (hasPointerEvents || hasMsPointerEvents)) {\n // Special cancelable check for Android to prevent drag procedure from\n // starting if native scrolling is in progress. Part 2.\n if (isAndroid) {\n this._element.addEventListener(\n Dragger._touchEvents.start,\n this._abortNonCancelable,\n listenerOptions\n );\n }\n raf(this._onStart);\n } else {\n this._onStart();\n }\n };\n\n /**\n * Abort start event if it turns out to be non-cancelable.\n *\n * @private\n * @memberof Dragger.prototype\n * @param {(PointerEvent|TouchEvent|MouseEvent)} e\n */\n Dragger.prototype._abortNonCancelable = function(e) {\n this._element.removeEventListener(\n Dragger._touchEvents.start,\n this._abortNonCancelable,\n listenerOptions\n );\n\n if (this._startEvent && e.cancelable === false) {\n this._pointerId = null;\n this._startEvent = null;\n }\n };\n\n /**\n * Start the drag procedure if possible.\n *\n * @private\n * @memberof Dragger.prototype\n */\n Dragger.prototype._onStart = function() {\n var e = this._startEvent;\n if (!e) return;\n\n this._startEvent = null;\n\n var touch = this._getTrackedTouch(e);\n if (!touch) return;\n\n // Set up init data and emit start event.\n this._startX = this._currentX = touch.clientX;\n this._startY = this._currentY = touch.clientY;\n this._startTime = Date.now();\n this._emit(events.start, e);\n Dragger._activateInstance(this);\n };\n\n /**\n * Handler for move event.\n *\n * @private\n * @memberof Dragger.prototype\n * @param {(PointerEvent|TouchEvent|MouseEvent)} e\n */\n Dragger.prototype._onMove = function(e) {\n var touch = this._getTrackedTouch(e);\n if (!touch) return;\n\n this._currentX = touch.clientX;\n this._currentY = touch.clientY;\n this._emit(events.move, e);\n };\n\n /**\n * Handler for move cancel event.\n *\n * @private\n * @memberof Dragger.prototype\n * @param {(PointerEvent|TouchEvent|MouseEvent)} e\n */\n Dragger.prototype._onCancel = function(e) {\n if (!this._getTrackedTouch(e)) return;\n\n this._emit(events.cancel, e);\n this._reset();\n };\n\n /**\n * Handler for end event.\n *\n * @private\n * @memberof Dragger.prototype\n * @param {(PointerEvent|TouchEvent|MouseEvent)} e\n */\n Dragger.prototype._onEnd = function(e) {\n if (!this._getTrackedTouch(e)) return;\n\n this._emit(events.end, e);\n this._reset();\n };\n\n /**\n * Public prototype methods\n * ************************\n */\n\n /**\n * Check if the element is being dragged at the moment.\n *\n * @public\n * @memberof Dragger.prototype\n * @returns {Boolean}\n */\n Dragger.prototype.isDragging = function() {\n return this._pointerId !== null;\n };\n\n /**\n * Set element's touch-action CSS property.\n *\n * @public\n * @memberof Dragger.prototype\n * @param {String} value\n */\n Dragger.prototype.setTouchAction = function(value) {\n // Store unmodified touch action value (we trust user input here).\n this._touchAction = value;\n\n // Set touch-action style.\n if (taPropPrefixed) {\n this._cssProps[taPropPrefixed] = '';\n this._element.style[taPropPrefixed] = value;\n }\n\n // If we have an unsupported touch-action value let's add a special listener\n // that prevents default action on touch start event. A dirty hack, but best\n // we can do for now. The other options would be to somehow polyfill the\n // unsupported touch action behavior with custom heuristics which sounds like\n // a can of worms.\n if (hasTouchEvents) {\n this._element.removeEventListener(Dragger._touchEvents.start, Dragger._preventDefault, false);\n if (this._element.style[taPropPrefixed] !== value) {\n this._element.addEventListener(Dragger._touchEvents.start, Dragger._preventDefault, false);\n }\n }\n };\n\n /**\n * Update element's CSS properties. Accepts an object with camel cased style\n * props with value pairs as it's first argument.\n *\n * @public\n * @memberof Dragger.prototype\n * @param {Object} [newProps]\n */\n Dragger.prototype.setCssProps = function(newProps) {\n if (!newProps) return;\n\n var currentProps = this._cssProps;\n var element = this._element;\n var prop;\n var prefixedProp;\n\n // Reset current props.\n for (prop in currentProps) {\n element.style[prop] = currentProps[prop];\n delete currentProps[prop];\n }\n\n // Set new props.\n for (prop in newProps) {\n // Make sure we have a value for the prop.\n if (!newProps[prop]) continue;\n\n // Special handling for touch-action.\n if (prop === taProp) {\n this.setTouchAction(newProps[prop]);\n continue;\n }\n\n // Get prefixed prop and skip if it does not exist.\n prefixedProp = getPrefixedPropName(element.style, prop);\n if (!prefixedProp) continue;\n\n // Store the prop and add the style.\n currentProps[prefixedProp] = '';\n element.style[prefixedProp] = newProps[prop];\n }\n };\n\n /**\n * How much the pointer has moved on x-axis from start position, in pixels.\n * Positive value indicates movement from left to right.\n *\n * @public\n * @memberof Dragger.prototype\n * @returns {Number}\n */\n Dragger.prototype.getDeltaX = function() {\n return this._currentX - this._startX;\n };\n\n /**\n * How much the pointer has moved on y-axis from start position, in pixels.\n * Positive value indicates movement from top to bottom.\n *\n * @public\n * @memberof Dragger.prototype\n * @returns {Number}\n */\n Dragger.prototype.getDeltaY = function() {\n return this._currentY - this._startY;\n };\n\n /**\n * How far (in pixels) has pointer moved from start position.\n *\n * @public\n * @memberof Dragger.prototype\n * @returns {Number}\n */\n Dragger.prototype.getDistance = function() {\n var x = this.getDeltaX();\n var y = this.getDeltaY();\n return Math.sqrt(x * x + y * y);\n };\n\n /**\n * How long has pointer been dragged.\n *\n * @public\n * @memberof Dragger.prototype\n * @returns {Number}\n */\n Dragger.prototype.getDeltaTime = function() {\n return this._startTime ? Date.now() - this._startTime : 0;\n };\n\n /**\n * Bind drag event listeners.\n *\n * @public\n * @memberof Dragger.prototype\n * @param {String} eventName\n * - 'start', 'move', 'cancel' or 'end'.\n * @param {Function} listener\n */\n Dragger.prototype.on = function(eventName, listener) {\n this._emitter.on(eventName, listener);\n };\n\n /**\n * Unbind drag event listeners.\n *\n * @public\n * @memberof Dragger.prototype\n * @param {String} eventName\n * - 'start', 'move', 'cancel' or 'end'.\n * @param {Function} listener\n */\n Dragger.prototype.off = function(events, listener) {\n this._emitter.off(eventName, listener);\n };\n\n /**\n * Destroy the instance and unbind all drag event listeners.\n *\n * @public\n * @memberof Dragger.prototype\n */\n Dragger.prototype.destroy = function() {\n if (this._isDestroyed) return;\n\n var element = this._element;\n var events = Dragger._events;\n\n // Reset data and deactivate the instance.\n this._reset();\n\n // Destroy emitter.\n this._emitter.destroy();\n\n // Unbind event handlers.\n element.removeEventListener(events.start, this._preStartCheck, listenerOptions);\n element.removeEventListener(Dragger._mouseEvents.start, this._preStartCheck, listenerOptions);\n element.removeEventListener('dragstart', Dragger._preventDefault, false);\n element.removeEventListener(Dragger._touchEvents.start, Dragger._preventDefault, false);\n\n // Reset styles.\n for (var prop in this._cssProps) {\n element.style[prop] = this._cssProps[prop];\n delete this._cssProps[prop];\n }\n\n // Reset data.\n this._element = null;\n\n // Mark as destroyed.\n this._isDestroyed = true;\n };\n\n /**\n * A ticker system for handling DOM reads and writes in an efficient way.\n * Contains a read queue and a write queue that are processed on the next\n * animation frame when needed.\n *\n * @class\n */\n function Ticker() {\n this._nextStep = null;\n\n this._queue = [];\n this._reads = {};\n this._writes = {};\n\n this._batch = [];\n this._batchReads = {};\n this._batchWrites = {};\n\n this._step = this._step.bind(this);\n }\n\n Ticker.prototype.add = function(id, readOperation, writeOperation, isPrioritized) {\n // First, let's check if an item has been added to the queues with the same id\n // and if so -> remove it.\n var currentIndex = this._queue.indexOf(id);\n if (currentIndex > -1) this._queue[currentIndex] = undefined;\n\n // Add entry.\n isPrioritized ? this._queue.unshift(id) : this._queue.push(id);\n this._reads[id] = readOperation;\n this._writes[id] = writeOperation;\n\n // Finally, let's kick-start the next tick if it is not running yet.\n if (!this._nextStep) this._nextStep = raf(this._step);\n };\n\n Ticker.prototype.cancel = function(id) {\n var currentIndex = this._queue.indexOf(id);\n if (currentIndex > -1) {\n this._queue[currentIndex] = undefined;\n delete this._reads[id];\n delete this._writes[id];\n }\n };\n\n Ticker.prototype._step = function() {\n var queue = this._queue;\n var reads = this._reads;\n var writes = this._writes;\n var batch = this._batch;\n var batchReads = this._batchReads;\n var batchWrites = this._batchWrites;\n var length = queue.length;\n var id;\n var i;\n\n // Reset ticker.\n this._nextStep = null;\n\n // Setup queues and callback placeholders.\n for (i = 0; i < length; i++) {\n id = queue[i];\n if (!id) continue;\n\n batch.push(id);\n\n batchReads[id] = reads[id];\n delete reads[id];\n\n batchWrites[id] = writes[id];\n delete writes[id];\n }\n\n // Reset queue.\n queue.length = 0;\n\n // Process read callbacks.\n for (i = 0; i < length; i++) {\n id = batch[i];\n if (batchReads[id]) {\n batchReads[id]();\n delete batchReads[id];\n }\n }\n\n // Process write callbacks.\n for (i = 0; i < length; i++) {\n id = batch[i];\n if (batchWrites[id]) {\n batchWrites[id]();\n delete batchWrites[id];\n }\n }\n\n // Reset batch.\n batch.length = 0;\n\n // Restart the ticker if needed.\n if (!this._nextStep && queue.length) {\n this._nextStep = raf(this._step);\n }\n };\n\n var ticker = new Ticker();\n\n var layoutTick = 'layout';\n var visibilityTick = 'visibility';\n var moveTick = 'move';\n var scrollTick = 'scroll';\n var placeholderTick = 'placeholder';\n\n function addLayoutTick(itemId, readCallback, writeCallback) {\n return ticker.add(itemId + layoutTick, readCallback, writeCallback);\n }\n\n function cancelLayoutTick(itemId) {\n return ticker.cancel(itemId + layoutTick);\n }\n\n function addVisibilityTick(itemId, readCallback, writeCallback) {\n return ticker.add(itemId + visibilityTick, readCallback, writeCallback);\n }\n\n function cancelVisibilityTick(itemId) {\n return ticker.cancel(itemId + visibilityTick);\n }\n\n function addMoveTick(itemId, readCallback, writeCallback) {\n return ticker.add(itemId + moveTick, readCallback, writeCallback, true);\n }\n\n function cancelMoveTick(itemId) {\n return ticker.cancel(itemId + moveTick);\n }\n\n function addScrollTick(itemId, readCallback, writeCallback) {\n return ticker.add(itemId + scrollTick, readCallback, writeCallback, true);\n }\n\n function cancelScrollTick(itemId) {\n return ticker.cancel(itemId + scrollTick);\n }\n\n function addPlaceholderTick(itemId, readCallback, writeCallback) {\n return ticker.add(itemId + placeholderTick, readCallback, writeCallback);\n }\n\n function cancelPlaceholderTick(itemId) {\n return ticker.cancel(itemId + placeholderTick);\n }\n\n var ElProto = window.Element.prototype;\n var matchesFn =\n ElProto.matches ||\n ElProto.matchesSelector ||\n ElProto.webkitMatchesSelector ||\n ElProto.mozMatchesSelector ||\n ElProto.msMatchesSelector ||\n ElProto.oMatchesSelector ||\n function() {\n return false;\n };\n\n /**\n * Check if element matches a CSS selector.\n *\n * @param {Element} el\n * @param {String} selector\n * @returns {Boolean}\n */\n function elementMatches(el, selector) {\n return matchesFn.call(el, selector);\n }\n\n /**\n * Add class to an element.\n *\n * @param {HTMLElement} element\n * @param {String} className\n */\n function addClass(element, className) {\n if (element.classList) {\n element.classList.add(className);\n } else {\n if (!elementMatches(element, '.' + className)) {\n element.className += ' ' + className;\n }\n }\n }\n\n var tempArray = [];\n var numberType = 'number';\n\n /**\n * Insert an item or an array of items to array to a specified index. Mutates\n * the array. The index can be negative in which case the items will be added\n * to the end of the array.\n *\n * @param {Array} array\n * @param {*} items\n * @param {Number} [index=-1]\n */\n function arrayInsert(array, items, index) {\n var startIndex = typeof index === numberType ? index : -1;\n if (startIndex < 0) startIndex = array.length - startIndex + 1;\n\n array.splice.apply(array, tempArray.concat(startIndex, 0, items));\n tempArray.length = 0;\n }\n\n /**\n * Normalize array index. Basically this function makes sure that the provided\n * array index is within the bounds of the provided array and also transforms\n * negative index to the matching positive index.\n *\n * @param {Array} array\n * @param {Number} index\n * @param {Boolean} isMigration\n */\n function normalizeArrayIndex(array, index, isMigration) {\n var length = array.length;\n var maxIndex = Math.max(0, isMigration ? length : length - 1);\n return index > maxIndex ? maxIndex : index < 0 ? Math.max(maxIndex + index + 1, 0) : index;\n }\n\n /**\n * Move array item to another index.\n *\n * @param {Array} array\n * @param {Number} fromIndex\n * - Index (positive or negative) of the item that will be moved.\n * @param {Number} toIndex\n * - Index (positive or negative) where the item should be moved to.\n */\n function arrayMove(array, fromIndex, toIndex) {\n // Make sure the array has two or more items.\n if (array.length < 2) return;\n\n // Normalize the indices.\n var from = normalizeArrayIndex(array, fromIndex);\n var to = normalizeArrayIndex(array, toIndex);\n\n // Add target item to the new position.\n if (from !== to) {\n array.splice(to, 0, array.splice(from, 1)[0]);\n }\n }\n\n /**\n * Swap array items.\n *\n * @param {Array} array\n * @param {Number} index\n * - Index (positive or negative) of the item that will be swapped.\n * @param {Number} withIndex\n * - Index (positive or negative) of the other item that will be swapped.\n */\n function arraySwap(array, index, withIndex) {\n // Make sure the array has two or more items.\n if (array.length < 2) return;\n\n // Normalize the indices.\n var indexA = normalizeArrayIndex(array, index);\n var indexB = normalizeArrayIndex(array, withIndex);\n var temp;\n\n // Swap the items.\n if (indexA !== indexB) {\n temp = array[indexA];\n array[indexA] = array[indexB];\n array[indexB] = temp;\n }\n }\n\n var actionCancel = 'cancel';\n var actionFinish = 'finish';\n var debounceTick = 'debounce';\n var debounceId = 0;\n\n /**\n * Returns a function, that, as long as it continues to be invoked, will not\n * be triggered. The function will be called after it stops being called for\n * N milliseconds. The returned function accepts one argument which, when\n * being \"finish\", calls the debounce function immediately if it is currently\n * waiting to be called, and when being \"cancel\" cancels the currently queued\n * function call.\n *\n * @param {Function} fn\n * @param {Number} wait\n * @returns {Function}\n */\n function debounce(fn, wait) {\n var timeout;\n var tickerId = ++debounceId + debounceTick;\n\n if (wait > 0) {\n return function(action) {\n if (timeout !== undefined) {\n timeout = window.clearTimeout(timeout);\n ticker.cancel(tickerId);\n if (action === actionFinish) fn();\n }\n\n if (action !== actionCancel && action !== actionFinish) {\n timeout = window.setTimeout(function() {\n timeout = undefined;\n ticker.add(tickerId, fn, null, true);\n }, wait);\n }\n };\n }\n\n return function(action) {\n if (action !== actionCancel) fn();\n };\n }\n\n /**\n * Returns true if element is transformed, false if not. In practice the\n * element's display value must be anything else than \"none\" or \"inline\" as\n * well as have a valid transform value applied in order to be counted as a\n * transformed element.\n *\n * Borrowed from Mezr (v0.6.1):\n * https://github.com/niklasramo/mezr/blob/0.6.1/mezr.js#L661\n *\n * @param {HTMLElement} element\n * @returns {Boolean}\n */\n function isTransformed(element) {\n var transform = getStyle(element, 'transform');\n if (!transform || transform === 'none') return false;\n\n var display = getStyle(element, 'display');\n if (display === 'inline' || display === 'none') return false;\n\n return true;\n }\n\n /**\n * Returns an absolute positioned element's containing block, which is\n * considered to be the closest ancestor element that the target element's\n * positioning is relative to. Disclaimer: this only works as intended for\n * absolute positioned elements.\n *\n * @param {HTMLElement} element\n * @param {Boolean} [includeSelf=false]\n * - When this is set to true the containing block checking is started from\n * the provided element. Otherwise the checking is started from the\n * provided element's parent element.\n * @returns {(Document|Element)}\n */\n function getContainingBlock(element, includeSelf) {\n // As long as the containing block is an element, static and not\n // transformed, try to get the element's parent element and fallback to\n // document. https://github.com/niklasramo/mezr/blob/0.6.1/mezr.js#L339\n var document = window.document;\n var ret = (includeSelf ? element : element.parentElement) || document;\n while (ret && ret !== document && getStyle(ret, 'position') === 'static' && !isTransformed(ret)) {\n ret = ret.parentElement || document;\n }\n return ret;\n }\n\n /**\n * Returns the computed value of an element's style property transformed into\n * a float value.\n *\n * @param {HTMLElement} el\n * @param {String} style\n * @returns {Number}\n */\n function getStyleAsFloat(el, style) {\n return parseFloat(getStyle(el, style)) || 0;\n }\n\n var offsetA = {};\n var offsetB = {};\n var offsetDiff = {};\n\n /**\n * Returns the element's document offset, which in practice means the vertical\n * and horizontal distance between the element's northwest corner and the\n * document's northwest corner. Note that this function always returns the same\n * object so be sure to read the data from it instead using it as a reference.\n *\n * @param {(Document|Element|Window)} element\n * @param {Object} [offsetData]\n * - Optional data object where the offset data will be inserted to. If not\n * provided a new object will be created for the return data.\n * @returns {Object}\n */\n function getOffset(element, offsetData) {\n var ret = offsetData || {};\n var rect;\n\n // Set up return data.\n ret.left = 0;\n ret.top = 0;\n\n // Document's offsets are always 0.\n if (element === document) return ret;\n\n // Add viewport scroll left/top to the respective offsets.\n ret.left = window.pageXOffset || 0;\n ret.top = window.pageYOffset || 0;\n\n // Window's offsets are the viewport scroll left/top values.\n if (element.self === window.self) return ret;\n\n // Add element's client rects to the offsets.\n rect = element.getBoundingClientRect();\n ret.left += rect.left;\n ret.top += rect.top;\n\n // Exclude element's borders from the offset.\n ret.left += getStyleAsFloat(element, 'border-left-width');\n ret.top += getStyleAsFloat(element, 'border-top-width');\n\n return ret;\n }\n\n /**\n * Calculate the offset difference two elements.\n *\n * @param {HTMLElement} elemA\n * @param {HTMLElement} elemB\n * @param {Boolean} [compareContainingBlocks=false]\n * - When this is set to true the containing blocks of the provided elements\n * will be used for calculating the difference. Otherwise the provided\n * elements will be compared directly.\n * @returns {Object}\n */\n function getOffsetDiff(elemA, elemB, compareContainingBlocks) {\n offsetDiff.left = 0;\n offsetDiff.top = 0;\n\n // If elements are same let's return early.\n if (elemA === elemB) return offsetDiff;\n\n // Compare containing blocks if necessary.\n if (compareContainingBlocks) {\n elemA = getContainingBlock(elemA, true);\n elemB = getContainingBlock(elemB, true);\n\n // If containing blocks are identical, let's return early.\n if (elemA === elemB) return offsetDiff;\n }\n\n // Finally, let's calculate the offset diff.\n getOffset(elemA, offsetA);\n getOffset(elemB, offsetB);\n offsetDiff.left = offsetB.left - offsetA.left;\n offsetDiff.top = offsetB.top - offsetA.top;\n\n return offsetDiff;\n }\n\n var styleOverflow = 'overflow';\n var styleOverflowX = 'overflow-x';\n var styleOverflowY = 'overflow-y';\n var overflowAuto = 'auto';\n var overflowScroll = 'scroll';\n\n /**\n * Check if an element is scrollable.\n *\n * @param {HTMLElement} element\n * @returns {Boolean}\n */\n function isScrollable(element) {\n var overflow = getStyle(element, styleOverflow);\n if (overflow === overflowAuto || overflow === overflowScroll) return true;\n\n overflow = getStyle(element, styleOverflowX);\n if (overflow === overflowAuto || overflow === overflowScroll) return true;\n\n overflow = getStyle(element, styleOverflowY);\n if (overflow === overflowAuto || overflow === overflowScroll) return true;\n\n return false;\n }\n\n /**\n * Collect element's ancestors that are potentially scrollable elements.\n *\n * @param {HTMLElement} element\n * @param {Boolean} [includeSelf=false]\n * @param {Array} [data]\n * @returns {Array}\n */\n function getScrollableAncestors(element, includeSelf, data) {\n var ret = data || [];\n var parent = includeSelf ? element : element.parentNode;\n\n // Find scroll parents.\n while (parent && parent !== document) {\n // If element is inside ShadowDOM let's get it's host node from the real\n // DOM and continue looping.\n if (parent.getRootNode && parent instanceof DocumentFragment) {\n parent = parent.getRootNode().host;\n continue;\n }\n\n // If element is scrollable let's add it to the scrollable list.\n if (isScrollable(parent)) {\n ret.push(parent);\n }\n\n parent = parent.parentNode;\n }\n\n // Always add window to the results.\n ret.push(window);\n\n return ret;\n }\n\n var translateValue = {};\n var transformStyle$2 = 'transform';\n var transformNone = 'none';\n var rxMat3d = /^matrix3d/;\n var rxMatTx = /([^,]*,){4}/;\n var rxMat3dTx = /([^,]*,){12}/;\n var rxNextItem = /[^,]*,/;\n\n /**\n * Returns the element's computed translateX and translateY values as a floats.\n * The returned object is always the same object and updated every time this\n * function is called.\n *\n * @param {HTMLElement} element\n * @returns {Object}\n */\n function getTranslate(element) {\n translateValue.x = 0;\n translateValue.y = 0;\n\n var transform = getStyle(element, transformStyle$2);\n if (!transform || transform === transformNone) {\n return translateValue;\n }\n\n // Transform style can be in either matrix3d(...) or matrix(...).\n var isMat3d = rxMat3d.test(transform);\n var tX = transform.replace(isMat3d ? rxMat3dTx : rxMatTx, '');\n var tY = tX.replace(rxNextItem, '');\n\n translateValue.x = parseFloat(tX) || 0;\n translateValue.y = parseFloat(tY) || 0;\n\n return translateValue;\n }\n\n /**\n * Transform translateX and translateY value into CSS transform style\n * property's value.\n *\n * @param {Number} x\n * @param {Number} y\n * @returns {String}\n */\n function getTranslateString(x, y) {\n return 'translateX(' + x + 'px) translateY(' + y + 'px)';\n }\n\n /**\n * Remove class from an element.\n *\n * @param {HTMLElement} element\n * @param {String} className\n */\n function removeClass(element, className) {\n if (element.classList) {\n element.classList.remove(className);\n } else {\n if (elementMatches(element, '.' + className)) {\n element.className = (' ' + element.className + ' ')\n .replace(' ' + className + ' ', ' ')\n .trim();\n }\n }\n }\n\n // Drag start predicate states.\n var startPredicateInactive = 0;\n var startPredicatePending = 1;\n var startPredicateResolved = 2;\n var startPredicateRejected = 3;\n\n /**\n * Bind touch interaction to an item.\n *\n * @class\n * @param {Item} item\n */\n function ItemDrag(item) {\n var element = item._element;\n var grid = item.getGrid();\n var settings = grid._settings;\n\n this._item = item;\n this._gridId = grid._id;\n this._isDestroyed = false;\n this._isMigrating = false;\n\n // Start predicate data.\n this._startPredicate = isFunction(settings.dragStartPredicate)\n ? settings.dragStartPredicate\n : ItemDrag.defaultStartPredicate;\n this._startPredicateState = startPredicateInactive;\n this._startPredicateResult = undefined;\n\n // Data for drag sort predicate heuristics.\n this._hBlockedIndex = null;\n this._hX1 = 0;\n this._hX2 = 0;\n this._hY1 = 0;\n this._hY2 = 0;\n\n // Setup item's initial drag data.\n this._reset();\n\n // Bind the methods that needs binding.\n this._preStartCheck = this._preStartCheck.bind(this);\n this._preEndCheck = this._preEndCheck.bind(this);\n this._onScroll = this._onScroll.bind(this);\n this._prepareMove = this._prepareMove.bind(this);\n this._applyMove = this._applyMove.bind(this);\n this._prepareScroll = this._prepareScroll.bind(this);\n this._applyScroll = this._applyScroll.bind(this);\n this._checkOverlap = this._checkOverlap.bind(this);\n\n // Create debounce overlap checker function.\n var sortInterval = settings.dragSortHeuristics.sortInterval;\n this._checkOverlapDebounce = debounce(this._checkOverlap, sortInterval);\n\n // Init dragger.\n this._dragger = new Dragger(element, settings.dragCssProps);\n this._dragger.on('start', this._preStartCheck);\n this._dragger.on('move', this._preStartCheck);\n this._dragger.on('cancel', this._preEndCheck);\n this._dragger.on('end', this._preEndCheck);\n }\n\n /**\n * Public static methods\n * *********************\n */\n\n /**\n * Default drag start predicate handler that handles anchor elements\n * gracefully. The return value of this function defines if the drag is\n * started, rejected or pending. When true is returned the dragging is started\n * and when false is returned the dragging is rejected. If nothing is returned\n * the predicate will be called again on the next drag movement.\n *\n * @public\n * @memberof ItemDrag\n * @param {Item} item\n * @param {DraggerEvent} event\n * @param {Object} [options]\n * - An optional options object which can be used to pass the predicate\n * it's options manually. By default the predicate retrieves the options\n * from the grid's settings.\n * @returns {Boolean}\n */\n ItemDrag.defaultStartPredicate = function(item, event, options) {\n var drag = item._drag;\n var predicate = drag._startPredicateData || drag._setupStartPredicate(options);\n\n // Final event logic. At this stage return value does not matter anymore,\n // the predicate is either resolved or it's not and there's nothing to do\n // about it. Here we just reset data and if the item element is a link\n // we follow it (if there has only been slight movement).\n if (event.isFinal) {\n drag._finishStartPredicate(event);\n return;\n }\n\n // Find and store the handle element so we can check later on if the\n // cursor is within the handle. If we have a handle selector let's find\n // the corresponding element. Otherwise let's use the item element as the\n // handle.\n if (!predicate.handleElement) {\n predicate.handleElement = drag._getStartPredicateHandle(event);\n if (!predicate.handleElement) return false;\n }\n\n // If delay is defined let's keep track of the latest event and initiate\n // delay if it has not been done yet.\n if (predicate.delay) {\n predicate.event = event;\n if (!predicate.delayTimer) {\n predicate.delayTimer = window.setTimeout(function() {\n predicate.delay = 0;\n if (drag._resolveStartPredicate(predicate.event)) {\n drag._forceResolveStartPredicate(predicate.event);\n drag._resetStartPredicate();\n }\n }, predicate.delay);\n }\n }\n\n return drag._resolveStartPredicate(event);\n };\n\n /**\n * Default drag sort predicate.\n *\n * @public\n * @memberof ItemDrag\n * @param {Item} item\n * @param {Object} [options]\n * @param {Number} [options.threshold=50]\n * @param {String} [options.action='move']\n * @returns {(Boolean|DragSortCommand)}\n * - Returns false if no valid index was found. Otherwise returns drag sort\n * command.\n */\n ItemDrag.defaultSortPredicate = (function() {\n var itemRect = {};\n var targetRect = {};\n var returnData = {};\n var rootGridArray = [];\n\n function getTargetGrid(item, rootGrid, threshold) {\n var target = null;\n var dragSort = rootGrid._settings.dragSort;\n var bestScore = -1;\n var gridScore;\n var grids;\n var grid;\n var i;\n\n // Get potential target grids.\n if (dragSort === true) {\n rootGridArray[0] = rootGrid;\n grids = rootGridArray;\n } else {\n grids = dragSort.call(rootGrid, item);\n }\n\n // Return immediately if there are no grids.\n if (!Array.isArray(grids)) return target;\n\n // Loop through the grids and get the best match.\n for (i = 0; i < grids.length; i++) {\n grid = grids[i];\n\n // Filter out all destroyed grids.\n if (grid._isDestroyed) continue;\n\n // We need to update the grid's offsets and dimensions since they might\n // have changed (e.g during scrolling).\n grid._updateBoundingRect();\n\n // Check how much dragged element overlaps the container element.\n targetRect.width = grid._width;\n targetRect.height = grid._height;\n targetRect.left = grid._left;\n targetRect.top = grid._top;\n gridScore = getRectOverlapScore(itemRect, targetRect);\n\n // Check if this grid is the best match so far.\n if (gridScore > threshold && gridScore > bestScore) {\n bestScore = gridScore;\n target = grid;\n }\n }\n\n // Always reset root grid array.\n rootGridArray.length = 0;\n\n return target;\n }\n\n return function(item, options) {\n var drag = item._drag;\n var rootGrid = drag._getGrid();\n\n // Get drag sort predicate settings.\n var sortThreshold = options && typeof options.threshold === 'number' ? options.threshold : 50;\n var sortAction = options && options.action === actionSwap ? actionSwap : actionMove;\n\n // Populate item rect data.\n itemRect.width = item._width;\n itemRect.height = item._height;\n itemRect.left = drag._elementClientX;\n itemRect.top = drag._elementClientY;\n\n // Calculate the target grid.\n var grid = getTargetGrid(item, rootGrid, sortThreshold);\n\n // Return early if we found no grid container element that overlaps the\n // dragged item enough.\n if (!grid) return false;\n\n var gridOffsetLeft = 0;\n var gridOffsetTop = 0;\n var matchScore = -1;\n var matchIndex;\n var hasValidTargets;\n var target;\n var score;\n var i;\n\n // If item is moved within it's originating grid adjust item's left and\n // top props. Otherwise if item is moved to/within another grid get the\n // container element's offset (from the element's content edge).\n if (grid === rootGrid) {\n itemRect.left = drag._gridX + item._marginLeft;\n itemRect.top = drag._gridY + item._marginTop;\n } else {\n grid._updateBorders(1, 0, 1, 0);\n gridOffsetLeft = grid._left + grid._borderLeft;\n gridOffsetTop = grid._top + grid._borderTop;\n }\n\n // Loop through the target grid items and try to find the best match.\n for (i = 0; i < grid._items.length; i++) {\n target = grid._items[i];\n\n // If the target item is not active or the target item is the dragged\n // item let's skip to the next item.\n if (!target._isActive || target === item) {\n continue;\n }\n\n // Mark the grid as having valid target items.\n hasValidTargets = true;\n\n // Calculate the target's overlap score with the dragged item.\n targetRect.width = target._width;\n targetRect.height = target._height;\n targetRect.left = target._left + target._marginLeft + gridOffsetLeft;\n targetRect.top = target._top + target._marginTop + gridOffsetTop;\n score = getRectOverlapScore(itemRect, targetRect);\n\n // Update best match index and score if the target's overlap score with\n // the dragged item is higher than the current best match score.\n if (score > matchScore) {\n matchIndex = i;\n matchScore = score;\n }\n }\n\n // If there is no valid match and the item is being moved into another\n // grid.\n if (matchScore < sortThreshold && item.getGrid() !== grid) {\n matchIndex = hasValidTargets ? -1 : 0;\n matchScore = Infinity;\n }\n\n // Check if the best match overlaps enough to justify a placement switch.\n if (matchScore >= sortThreshold) {\n returnData.grid = grid;\n returnData.index = matchIndex;\n returnData.action = sortAction;\n return returnData;\n }\n\n return false;\n };\n })();\n\n /**\n * Public prototype methods\n * ************************\n */\n\n /**\n * Abort dragging and reset drag data.\n *\n * @public\n * @memberof ItemDrag.prototype\n * @returns {ItemDrag}\n */\n ItemDrag.prototype.stop = function() {\n var item = this._item;\n var element = item._element;\n var grid = this._getGrid();\n\n if (!this._isActive) return this;\n\n // If the item is being dropped into another grid, finish it up and return\n // immediately.\n if (this._isMigrating) {\n this._finishMigration();\n return this;\n }\n\n // Cancel queued move and scroll ticks.\n cancelMoveTick(item._id);\n cancelScrollTick(item._id);\n\n // Remove scroll listeners.\n this._unbindScrollListeners();\n\n // Cancel overlap check.\n this._checkOverlapDebounce('cancel');\n\n // Append item element to the container if it's not it's child. Also make\n // sure the translate values are adjusted to account for the DOM shift.\n if (element.parentNode !== grid._element) {\n grid._element.appendChild(element);\n element.style[transformProp] = getTranslateString(this._gridX, this._gridY);\n }\n\n // Remove dragging class.\n removeClass(element, grid._settings.itemDraggingClass);\n\n // Reset drag data.\n this._reset();\n\n return this;\n };\n\n /**\n * Destroy instance.\n *\n * @public\n * @memberof ItemDrag.prototype\n * @returns {ItemDrag}\n */\n ItemDrag.prototype.destroy = function() {\n if (this._isDestroyed) return this;\n this.stop();\n this._dragger.destroy();\n this._isDestroyed = true;\n return this;\n };\n\n /**\n * Private prototype methods\n * *************************\n */\n\n /**\n * Get Grid instance.\n *\n * @private\n * @memberof ItemDrag.prototype\n * @returns {?Grid}\n */\n ItemDrag.prototype._getGrid = function() {\n return gridInstances[this._gridId] || null;\n };\n\n /**\n * Setup/reset drag data.\n *\n * @private\n * @memberof ItemDrag.prototype\n */\n ItemDrag.prototype._reset = function() {\n // Is item being dragged?\n this._isActive = false;\n\n // The dragged item's container element.\n this._container = null;\n\n // The dragged item's containing block.\n this._containingBlock = null;\n\n // Drag/scroll event data.\n this._dragEvent = null;\n this._scrollEvent = null;\n\n // All the elements which need to be listened for scroll events during\n // dragging.\n this._scrollers = [];\n\n // The current translateX/translateY position.\n this._left = 0;\n this._top = 0;\n\n // Dragged element's current position within the grid.\n this._gridX = 0;\n this._gridY = 0;\n\n // Dragged element's current offset from window's northwest corner. Does\n // not account for element's margins.\n this._elementClientX = 0;\n this._elementClientY = 0;\n\n // Offset difference between the dragged element's temporary drag\n // container and it's original container.\n this._containerDiffX = 0;\n this._containerDiffY = 0;\n };\n\n /**\n * Bind drag scroll handlers to all scrollable ancestor elements of the\n * dragged element and the drag container element.\n *\n * @private\n * @memberof ItemDrag.prototype\n */\n ItemDrag.prototype._bindScrollListeners = function() {\n var gridContainer = this._getGrid()._element;\n var dragContainer = this._container;\n var scrollers = this._scrollers;\n var gridScrollers;\n var i;\n\n // Get dragged element's scrolling parents.\n scrollers.length = 0;\n getScrollableAncestors(this._item._element, false, scrollers);\n\n // If drag container is defined and it's not the same element as grid\n // container then we need to add the grid container and it's scroll parents\n // to the elements which are going to be listener for scroll events.\n if (dragContainer !== gridContainer) {\n gridScrollers = [];\n getScrollableAncestors(gridContainer, true, gridScrollers);\n for (i = 0; i < gridScrollers.length; i++) {\n if (scrollers.indexOf(gridScrollers[i]) < 0) {\n scrollers.push(gridScrollers[i]);\n }\n }\n }\n\n // Bind scroll listeners.\n for (i = 0; i < scrollers.length; i++) {\n scrollers[i].addEventListener('scroll', this._onScroll);\n }\n };\n\n /**\n * Unbind currently bound drag scroll handlers from all scrollable ancestor\n * elements of the dragged element and the drag container element.\n *\n * @private\n * @memberof ItemDrag.prototype\n */\n ItemDrag.prototype._unbindScrollListeners = function() {\n var scrollers = this._scrollers;\n var i;\n\n for (i = 0; i < scrollers.length; i++) {\n scrollers[i].removeEventListener('scroll', this._onScroll);\n }\n\n scrollers.length = 0;\n };\n\n /**\n * Setup default start predicate.\n *\n * @private\n * @memberof ItemDrag.prototype\n * @param {Object} [options]\n * @returns {Object}\n */\n ItemDrag.prototype._setupStartPredicate = function(options) {\n var config = options || this._getGrid()._settings.dragStartPredicate || 0;\n return (this._startPredicateData = {\n distance: Math.abs(config.distance) || 0,\n delay: Math.max(config.delay, 0) || 0,\n handle: typeof config.handle === 'string' ? config.handle : false\n });\n };\n\n /**\n * Setup default start predicate handle.\n *\n * @private\n * @memberof ItemDrag.prototype\n * @param {DraggerEvent} event\n * @returns {?HTMLElement}\n */\n ItemDrag.prototype._getStartPredicateHandle = function(event) {\n var predicate = this._startPredicateData;\n var element = this._item._element;\n var handleElement = element;\n\n // No handle, no hassle -> let's use the item element as the handle.\n if (!predicate.handle) return handleElement;\n\n // If there is a specific predicate handle defined, let's try to get it.\n handleElement = event.target;\n while (handleElement && !elementMatches(handleElement, predicate.handle)) {\n handleElement = handleElement !== element ? handleElement.parentElement : null;\n }\n return handleElement || null;\n };\n\n /**\n * Unbind currently bound drag scroll handlers from all scrollable ancestor\n * elements of the dragged element and the drag container element.\n *\n * @private\n * @memberof ItemDrag.prototype\n * @param {DraggerEvent} event\n * @returns {Boolean}\n */\n ItemDrag.prototype._resolveStartPredicate = function(event) {\n var predicate = this._startPredicateData;\n\n // If the moved distance is smaller than the threshold distance or there is\n // some delay left, ignore this predicate cycle.\n if (event.distance < predicate.distance || predicate.delay) return;\n\n // Get handle rect data.\n var handleRect = predicate.handleElement.getBoundingClientRect();\n var handleLeft = handleRect.left + (window.pageXOffset || 0);\n var handleTop = handleRect.top + (window.pageYOffset || 0);\n var handleWidth = handleRect.width;\n var handleHeight = handleRect.height;\n\n // Reset predicate data.\n this._resetStartPredicate();\n\n // If the cursor is still within the handle let's start the drag.\n return (\n handleWidth &&\n handleHeight &&\n event.pageX >= handleLeft &&\n event.pageX < handleLeft + handleWidth &&\n event.pageY >= handleTop &&\n event.pageY < handleTop + handleHeight\n );\n };\n\n /**\n * Forcefully resolve drag start predicate.\n *\n * @private\n * @memberof ItemDrag.prototype\n * @param {DraggerEvent} event\n */\n ItemDrag.prototype._forceResolveStartPredicate = function(event) {\n if (!this._isDestroyed && this._startPredicateState === startPredicatePending) {\n this._startPredicateState = startPredicateResolved;\n this._onStart(event);\n }\n };\n\n /**\n * Finalize start predicate.\n *\n * @private\n * @memberof ItemDrag.prototype\n * @param {DraggerEvent} event\n */\n ItemDrag.prototype._finishStartPredicate = function(event) {\n var element = this._item._element;\n\n // Check if this is a click (very subjective heuristics).\n var isClick = Math.abs(event.deltaX) < 2 && Math.abs(event.deltaY) < 2 && event.deltaTime < 200;\n\n // Reset predicate.\n this._resetStartPredicate();\n\n // If the gesture can be interpreted as click let's try to open the element's\n // href url (if it is an anchor element).\n if (isClick) openAnchorHref(element);\n };\n\n /**\n * Reset drag sort heuristics.\n *\n * @private\n * @memberof ItemDrag.prototype\n * @param {DraggerEvent} event\n */\n ItemDrag.prototype._resetHeuristics = function(event) {\n this._hBlockedIndex = null;\n this._hX1 = this._hX2 = event.clientX;\n this._hY1 = this._hY2 = event.clientY;\n };\n\n /**\n * Run heuristics and return true if overlap check can be performed, and false\n * if it can not.\n *\n * @private\n * @memberof ItemDrag.prototype\n * @param {DraggerEvent} event\n * @returns {Boolean}\n */\n ItemDrag.prototype._checkHeuristics = function(event) {\n var settings = this._getGrid()._settings.dragSortHeuristics;\n var minDist = settings.minDragDistance;\n\n // Skip heuristics if not needed.\n if (minDist <= 0) {\n this._hBlockedIndex = null;\n return true;\n }\n\n var x = event.clientX;\n var y = event.clientY;\n var diffX = x - this._hX2;\n var diffY = y - this._hY2;\n\n // If we can't do proper bounce back check make sure that the blocked index\n // is not set.\n var canCheckBounceBack = minDist > 3 && settings.minBounceBackAngle > 0;\n if (!canCheckBounceBack) {\n this._hBlockedIndex = null;\n }\n\n if (Math.abs(diffX) > minDist || Math.abs(diffY) > minDist) {\n // Reset blocked index if angle changed enough. This check requires a\n // minimum value of 3 for minDragDistance to function properly.\n if (canCheckBounceBack) {\n var angle = Math.atan2(diffX, diffY);\n var prevAngle = Math.atan2(this._hX2 - this._hX1, this._hY2 - this._hY1);\n var deltaAngle = Math.atan2(Math.sin(angle - prevAngle), Math.cos(angle - prevAngle));\n if (Math.abs(deltaAngle) > settings.minBounceBackAngle) {\n this._hBlockedIndex = null;\n }\n }\n\n // Update points.\n this._hX1 = this._hX2;\n this._hY1 = this._hY2;\n this._hX2 = x;\n this._hY2 = y;\n\n return true;\n }\n\n return false;\n };\n\n /**\n * Reset for default drag start predicate function.\n *\n * @private\n * @memberof ItemDrag.prototype\n */\n ItemDrag.prototype._resetStartPredicate = function() {\n var predicate = this._startPredicateData;\n if (predicate) {\n if (predicate.delayTimer) {\n predicate.delayTimer = window.clearTimeout(predicate.delayTimer);\n }\n this._startPredicateData = null;\n }\n };\n\n /**\n * Check (during drag) if an item is overlapping other items and based on\n * the configuration layout the items.\n *\n * @private\n * @memberof ItemDrag.prototype\n */\n ItemDrag.prototype._checkOverlap = function() {\n if (!this._isActive) return;\n\n var item = this._item;\n var settings = this._getGrid()._settings;\n var result;\n var currentGrid;\n var currentIndex;\n var targetGrid;\n var targetIndex;\n var sortAction;\n var isMigration;\n\n // Get overlap check result.\n if (isFunction(settings.dragSortPredicate)) {\n result = settings.dragSortPredicate(item, this._dragEvent);\n } else {\n result = ItemDrag.defaultSortPredicate(item, settings.dragSortPredicate);\n }\n\n // Let's make sure the result object has a valid index before going further.\n if (!result || typeof result.index !== 'number') return;\n\n currentGrid = item.getGrid();\n targetGrid = result.grid || currentGrid;\n isMigration = currentGrid !== targetGrid;\n currentIndex = currentGrid._items.indexOf(item);\n targetIndex = normalizeArrayIndex(targetGrid._items, result.index, isMigration);\n sortAction = result.action === actionSwap ? actionSwap : actionMove;\n\n // Prevent position bounce.\n if (!isMigration && targetIndex === this._hBlockedIndex) {\n return;\n }\n\n // If the item was moved within it's current grid.\n if (!isMigration) {\n // Make sure the target index is not the current index.\n if (currentIndex !== targetIndex) {\n this._hBlockedIndex = currentIndex;\n\n // Do the sort.\n (sortAction === actionSwap ? arraySwap : arrayMove)(\n currentGrid._items,\n currentIndex,\n targetIndex\n );\n\n // Emit move event.\n if (currentGrid._hasListeners(eventMove)) {\n currentGrid._emit(eventMove, {\n item: item,\n fromIndex: currentIndex,\n toIndex: targetIndex,\n action: sortAction\n });\n }\n\n // Layout the grid.\n currentGrid.layout();\n }\n }\n\n // If the item was moved to another grid.\n else {\n this._hBlockedIndex = null;\n\n // Emit beforeSend event.\n if (currentGrid._hasListeners(eventBeforeSend)) {\n currentGrid._emit(eventBeforeSend, {\n item: item,\n fromGrid: currentGrid,\n fromIndex: currentIndex,\n toGrid: targetGrid,\n toIndex: targetIndex\n });\n }\n\n // Emit beforeReceive event.\n if (targetGrid._hasListeners(eventBeforeReceive)) {\n targetGrid._emit(eventBeforeReceive, {\n item: item,\n fromGrid: currentGrid,\n fromIndex: currentIndex,\n toGrid: targetGrid,\n toIndex: targetIndex\n });\n }\n\n // Update item's grid id reference.\n item._gridId = targetGrid._id;\n\n // Update drag instance's migrating indicator.\n this._isMigrating = item._gridId !== this._gridId;\n\n // Move item instance from current grid to target grid.\n currentGrid._items.splice(currentIndex, 1);\n arrayInsert(targetGrid._items, item, targetIndex);\n\n // Set sort data as null, which is an indicator for the item comparison\n // function that the sort data of this specific item should be fetched\n // lazily.\n item._sortData = null;\n\n // Emit send event.\n if (currentGrid._hasListeners(eventSend)) {\n currentGrid._emit(eventSend, {\n item: item,\n fromGrid: currentGrid,\n fromIndex: currentIndex,\n toGrid: targetGrid,\n toIndex: targetIndex\n });\n }\n\n // Emit receive event.\n if (targetGrid._hasListeners(eventReceive)) {\n targetGrid._emit(eventReceive, {\n item: item,\n fromGrid: currentGrid,\n fromIndex: currentIndex,\n toGrid: targetGrid,\n toIndex: targetIndex\n });\n }\n\n // Layout both grids.\n currentGrid.layout();\n targetGrid.layout();\n }\n };\n\n /**\n * If item is dragged into another grid, finish the migration process\n * gracefully.\n *\n * @private\n * @memberof ItemDrag.prototype\n */\n ItemDrag.prototype._finishMigration = function() {\n var item = this._item;\n var release = item._release;\n var element = item._element;\n var isActive = item._isActive;\n var targetGrid = item.getGrid();\n var targetGridElement = targetGrid._element;\n var targetSettings = targetGrid._settings;\n var targetContainer = targetSettings.dragContainer || targetGridElement;\n var currentSettings = this._getGrid()._settings;\n var currentContainer = element.parentNode;\n var translate;\n var offsetDiff;\n\n // Destroy current drag. Note that we need to set the migrating flag to\n // false first, because otherwise we create an infinite loop between this\n // and the drag.stop() method.\n this._isMigrating = false;\n this.destroy();\n\n // Remove current classnames.\n removeClass(element, currentSettings.itemClass);\n removeClass(element, currentSettings.itemVisibleClass);\n removeClass(element, currentSettings.itemHiddenClass);\n\n // Add new classnames.\n addClass(element, targetSettings.itemClass);\n addClass(element, isActive ? targetSettings.itemVisibleClass : targetSettings.itemHiddenClass);\n\n // Move the item inside the target container if it's different than the\n // current container.\n if (targetContainer !== currentContainer) {\n targetContainer.appendChild(element);\n offsetDiff = getOffsetDiff(currentContainer, targetContainer, true);\n translate = getTranslate(element);\n translate.x -= offsetDiff.left;\n translate.y -= offsetDiff.top;\n }\n\n // Update item's cached dimensions and sort data.\n item._refreshDimensions();\n item._refreshSortData();\n\n // Calculate the offset difference between target's drag container (if any)\n // and actual grid container element. We save it later for the release\n // process.\n offsetDiff = getOffsetDiff(targetContainer, targetGridElement, true);\n release._containerDiffX = offsetDiff.left;\n release._containerDiffY = offsetDiff.top;\n\n // Recreate item's drag handler.\n item._drag = targetSettings.dragEnabled ? new ItemDrag(item) : null;\n\n // Adjust the position of the item element if it was moved from a container\n // to another.\n if (targetContainer !== currentContainer) {\n element.style[transformProp] = getTranslateString(translate.x, translate.y);\n }\n\n // Update child element's styles to reflect the current visibility state.\n item._child.removeAttribute('style');\n setStyles(item._child, isActive ? targetSettings.visibleStyles : targetSettings.hiddenStyles);\n\n // Start the release.\n release.start();\n };\n\n /**\n * Drag pre-start handler.\n *\n * @private\n * @memberof ItemDrag.prototype\n * @param {DraggerEvent} event\n */\n ItemDrag.prototype._preStartCheck = function(event) {\n // Let's activate drag start predicate state.\n if (this._startPredicateState === startPredicateInactive) {\n this._startPredicateState = startPredicatePending;\n }\n\n // If predicate is pending try to resolve it.\n if (this._startPredicateState === startPredicatePending) {\n this._startPredicateResult = this._startPredicate(this._item, event);\n if (this._startPredicateResult === true) {\n this._startPredicateState = startPredicateResolved;\n this._onStart(event);\n } else if (this._startPredicateResult === false) {\n this._startPredicateState = startPredicateRejected;\n }\n }\n\n // Otherwise if predicate is resolved and drag is active, move the item.\n else if (this._startPredicateState === startPredicateResolved && this._isActive) {\n this._onMove(event);\n }\n };\n\n /**\n * Drag pre-end handler.\n *\n * @private\n * @memberof ItemDrag.prototype\n * @param {DraggerEvent} event\n */\n ItemDrag.prototype._preEndCheck = function(event) {\n // Check if the start predicate was resolved during drag.\n var isResolved = this._startPredicateState === startPredicateResolved;\n\n // Do final predicate check to allow user to unbind stuff for the current\n // drag procedure within the predicate callback. The return value of this\n // check will have no effect to the state of the predicate.\n this._startPredicate(this._item, event);\n\n // Reset start predicate state.\n this._startPredicateState = startPredicateInactive;\n\n // If predicate is resolved and dragging is active, call the end handler.\n if (isResolved && this._isActive) this._onEnd(event);\n };\n\n /**\n * Drag start handler.\n *\n * @private\n * @memberof ItemDrag.prototype\n * @param {DraggerEvent} event\n */\n ItemDrag.prototype._onStart = function(event) {\n var item = this._item;\n\n // If item is not active, don't start the drag.\n if (!item._isActive) return;\n\n var element = item._element;\n var grid = this._getGrid();\n var settings = grid._settings;\n var release = item._release;\n var migrate = item._migrate;\n var gridContainer = grid._element;\n var dragContainer = settings.dragContainer || gridContainer;\n var containingBlock = getContainingBlock(dragContainer, true);\n var translate = getTranslate(element);\n var currentLeft = translate.x;\n var currentTop = translate.y;\n var elementRect = element.getBoundingClientRect();\n var hasDragContainer = dragContainer !== gridContainer;\n var offsetDiff;\n\n // Reset heuristics data.\n this._resetHeuristics(event);\n\n // If grid container is not the drag container, we need to calculate the\n // offset difference between grid container and drag container's containing\n // element.\n if (hasDragContainer) {\n offsetDiff = getOffsetDiff(containingBlock, gridContainer);\n }\n\n // Stop current positioning animation.\n if (item.isPositioning()) {\n item._layout.stop(true, { transform: getTranslateString(currentLeft, currentTop) });\n }\n\n // Stop current migration animation.\n if (migrate._isActive) {\n currentLeft -= migrate._containerDiffX;\n currentTop -= migrate._containerDiffY;\n migrate.stop(true, { transform: getTranslateString(currentLeft, currentTop) });\n }\n\n // If item is being released reset release data.\n if (item.isReleasing()) release._reset();\n\n // Setup drag data.\n this._isActive = true;\n this._dragEvent = event;\n this._container = dragContainer;\n this._containingBlock = containingBlock;\n this._elementClientX = elementRect.left;\n this._elementClientY = elementRect.top;\n this._left = this._gridX = currentLeft;\n this._top = this._gridY = currentTop;\n\n // Create placeholder (if necessary).\n if (settings.dragPlaceholder.enabled) {\n item._dragPlaceholder.create();\n }\n\n // Emit dragInit event.\n grid._emit(eventDragInit, item, event);\n\n // If a specific drag container is set and it is different from the\n // grid's container element we need to cast some extra spells.\n if (hasDragContainer) {\n // Store the container offset diffs to drag data.\n this._containerDiffX = offsetDiff.left;\n this._containerDiffY = offsetDiff.top;\n\n // If the dragged element is a child of the drag container all we need to\n // do is setup the relative drag position data.\n if (element.parentNode === dragContainer) {\n this._gridX = currentLeft - this._containerDiffX;\n this._gridY = currentTop - this._containerDiffY;\n }\n\n // Otherwise we need to append the element inside the correct container,\n // setup the actual drag position data and adjust the element's translate\n // values to account for the DOM position shift.\n else {\n this._left = currentLeft + this._containerDiffX;\n this._top = currentTop + this._containerDiffY;\n dragContainer.appendChild(element);\n element.style[transformProp] = getTranslateString(this._left, this._top);\n }\n }\n\n // Set drag class and bind scrollers.\n addClass(element, settings.itemDraggingClass);\n this._bindScrollListeners();\n\n // Emit dragStart event.\n grid._emit(eventDragStart, item, event);\n };\n\n /**\n * Drag move handler.\n *\n * @private\n * @memberof ItemDrag.prototype\n * @param {DraggerEvent} event\n */\n ItemDrag.prototype._onMove = function(event) {\n var item = this._item;\n\n // If item is not active, reset drag.\n if (!item._isActive) {\n this.stop();\n return;\n }\n\n var settings = this._getGrid()._settings;\n var axis = settings.dragAxis;\n\n // Update horizontal position data.\n if (axis !== 'y') {\n var xDiff = event.clientX - this._dragEvent.clientX;\n this._left += xDiff;\n this._gridX += xDiff;\n this._elementClientX += xDiff;\n }\n\n // Update vertical position data.\n if (axis !== 'x') {\n var yDiff = event.clientY - this._dragEvent.clientY;\n this._top += yDiff;\n this._gridY += yDiff;\n this._elementClientY += yDiff;\n }\n\n // Update event data.\n this._dragEvent = event;\n\n // Do move prepare/apply handling in the next tick.\n addMoveTick(item._id, this._prepareMove, this._applyMove);\n };\n\n /**\n * Prepare dragged item for moving.\n *\n * @private\n * @memberof ItemDrag.prototype\n */\n ItemDrag.prototype._prepareMove = function() {\n // Do nothing if item is not active.\n if (!this._item._isActive) return;\n\n // If drag sort is enabled -> check overlap.\n if (this._getGrid()._settings.dragSort) {\n if (this._checkHeuristics(this._dragEvent)) {\n this._checkOverlapDebounce();\n }\n }\n };\n\n /**\n * Apply movement to dragged item.\n *\n * @private\n * @memberof ItemDrag.prototype\n */\n ItemDrag.prototype._applyMove = function() {\n var item = this._item;\n\n // Do nothing if item is not active.\n if (!item._isActive) return;\n\n // Update element's translateX/Y values.\n item._element.style[transformProp] = getTranslateString(this._left, this._top);\n\n // Emit dragMove event.\n this._getGrid()._emit(eventDragMove, item, this._dragEvent);\n };\n\n /**\n * Drag scroll handler.\n *\n * @private\n * @memberof ItemDrag.prototype\n * @param {Event} event\n */\n ItemDrag.prototype._onScroll = function(event) {\n var item = this._item;\n\n // If item is not active, reset drag.\n if (!item._isActive) {\n this.stop();\n return;\n }\n\n // Update last scroll event.\n this._scrollEvent = event;\n\n // Do scroll prepare/apply handling in the next tick.\n addScrollTick(item._id, this._prepareScroll, this._applyScroll);\n };\n\n /**\n * Prepare dragged item for scrolling.\n *\n * @private\n * @memberof ItemDrag.prototype\n */\n ItemDrag.prototype._prepareScroll = function() {\n var item = this._item;\n\n // If item is not active do nothing.\n if (!item._isActive) return;\n\n var element = item._element;\n var grid = this._getGrid();\n var settings = grid._settings;\n var axis = settings.dragAxis;\n var gridContainer = grid._element;\n var offsetDiff;\n\n // Calculate element's rect and x/y diff.\n var rect = element.getBoundingClientRect();\n var xDiff = this._elementClientX - rect.left;\n var yDiff = this._elementClientY - rect.top;\n\n // Update container diff.\n if (this._container !== gridContainer) {\n offsetDiff = getOffsetDiff(this._containingBlock, gridContainer);\n this._containerDiffX = offsetDiff.left;\n this._containerDiffY = offsetDiff.top;\n }\n\n // Update horizontal position data.\n if (axis !== 'y') {\n this._left += xDiff;\n this._gridX = this._left - this._containerDiffX;\n }\n\n // Update vertical position data.\n if (axis !== 'x') {\n this._top += yDiff;\n this._gridY = this._top - this._containerDiffY;\n }\n\n // Overlap handling.\n if (settings.dragSort) this._checkOverlapDebounce();\n };\n\n /**\n * Apply scroll to dragged item.\n *\n * @private\n * @memberof ItemDrag.prototype\n */\n ItemDrag.prototype._applyScroll = function() {\n var item = this._item;\n\n // If item is not active do nothing.\n if (!item._isActive) return;\n\n // Update element's translateX/Y values.\n item._element.style[transformProp] = getTranslateString(this._left, this._top);\n\n // Emit dragScroll event.\n this._getGrid()._emit(eventDragScroll, item, this._scrollEvent);\n };\n\n /**\n * Drag end handler.\n *\n * @private\n * @memberof ItemDrag.prototype\n * @param {DraggerEvent} event\n */\n ItemDrag.prototype._onEnd = function(event) {\n var item = this._item;\n var element = item._element;\n var grid = this._getGrid();\n var settings = grid._settings;\n var release = item._release;\n\n // If item is not active, reset drag.\n if (!item._isActive) {\n this.stop();\n return;\n }\n\n // Cancel queued move and scroll ticks.\n cancelMoveTick(item._id);\n cancelScrollTick(item._id);\n\n // Finish currently queued overlap check.\n settings.dragSort && this._checkOverlapDebounce('finish');\n\n // Remove scroll listeners.\n this._unbindScrollListeners();\n\n // Setup release data.\n release._containerDiffX = this._containerDiffX;\n release._containerDiffY = this._containerDiffY;\n\n // Reset drag data.\n this._reset();\n\n // Remove drag class name from element.\n removeClass(element, settings.itemDraggingClass);\n\n // Emit dragEnd event.\n grid._emit(eventDragEnd, item, event);\n\n // Finish up the migration process or start the release process.\n this._isMigrating ? this._finishMigration() : release.start();\n };\n\n /**\n * Private helpers\n * ***************\n */\n\n /**\n * Calculate how many percent the intersection area of two rectangles is from\n * the maximum potential intersection area between the rectangles.\n *\n * @param {Rectangle} a\n * @param {Rectangle} b\n * @returns {Number}\n * - A number between 0-100.\n */\n function getRectOverlapScore(a, b) {\n // Return 0 immediately if the rectangles do not overlap.\n if (\n a.left + a.width <= b.left ||\n b.left + b.width <= a.left ||\n a.top + a.height <= b.top ||\n b.top + b.height <= a.top\n ) {\n return 0;\n }\n\n // Calculate intersection area's width, height, max height and max width.\n var width = Math.min(a.left + a.width, b.left + b.width) - Math.max(a.left, b.left);\n var height = Math.min(a.top + a.height, b.top + b.height) - Math.max(a.top, b.top);\n var maxWidth = Math.min(a.width, b.width);\n var maxHeight = Math.min(a.height, b.height);\n\n return ((width * height) / (maxWidth * maxHeight)) * 100;\n }\n\n /**\n * Check if an element is an anchor element and open the href url if possible.\n *\n * @param {HTMLElement} element\n */\n function openAnchorHref(element) {\n // Make sure the element is anchor element.\n if (element.tagName.toLowerCase() !== 'a') return;\n\n // Get href and make sure it exists.\n var href = element.getAttribute('href');\n if (!href) return;\n\n // Finally let's navigate to the link href.\n var target = element.getAttribute('target');\n if (target && target !== '_self') {\n window.open(href, target);\n } else {\n window.location.href = href;\n }\n }\n\n /**\n * Drag placeholder.\n *\n * @class\n * @param {Item} item\n */\n function ItemDragPlaceholder(item) {\n this._item = item;\n this._animate = new ItemAnimate();\n this._element = null;\n this._className = '';\n this._didMigrate = false;\n this._resetAfterLayout = false;\n this._currentLeft = 0;\n this._currentTop = 0;\n this._nextLeft = 0;\n this._nextTop = 0;\n\n // Bind animation handlers.\n this._setupAnimation = this._setupAnimation.bind(this);\n this._startAnimation = this._startAnimation.bind(this);\n\n // Bind event handlers.\n this._onLayoutStart = this._onLayoutStart.bind(this);\n this._onLayoutEnd = this._onLayoutEnd.bind(this);\n this._onReleaseEnd = this._onReleaseEnd.bind(this);\n this._onMigrate = this._onMigrate.bind(this);\n }\n\n /**\n * Private prototype methods\n * *************************\n */\n\n /**\n * Move placeholder to a new position.\n *\n * @private\n * @memberof ItemDragPlaceholder.prototype\n */\n ItemDragPlaceholder.prototype._onLayoutStart = function() {\n var item = this._item;\n var grid = item.getGrid();\n\n // Find out the item's new (unapplied) left and top position.\n var itemIndex = grid._items.indexOf(item);\n var nextLeft = grid._layout.slots[itemIndex * 2];\n var nextTop = grid._layout.slots[itemIndex * 2 + 1];\n\n // If item's position did not change and the item did not migrate we can\n // safely skip layout.\n if (!this._didMigrate && item._left === nextLeft && item._top === nextTop) {\n return;\n }\n\n // Slots data is calculated with item margins added to them so we need to add\n // item's left and top margin to the slot data to get the placeholder's\n // next position.\n nextLeft += item._marginLeft;\n nextTop += item._marginTop;\n\n // Just snap to new position without any animations if no animation is\n // required or if placeholder moves between grids.\n var animEnabled = grid._settings.dragPlaceholder.duration > 0;\n if (!animEnabled || this._didMigrate) {\n // Cancel potential (queued) layout tick.\n cancelPlaceholderTick(item._id);\n\n // Snap placeholder to correct position.\n var targetStyles = { transform: getTranslateString(nextLeft, nextTop) };\n if (this._animate.isAnimating()) {\n this._animate.stop(targetStyles);\n } else {\n setStyles(this._element, targetStyles);\n }\n\n // Move placeholder inside correct container after migration.\n if (this._didMigrate) {\n grid.getElement().appendChild(this._element);\n this._didMigrate = false;\n }\n\n return;\n }\n\n // Start the placeholder's layout animation in the next tick. We do this to\n // avoid layout thrashing.\n this._nextLeft = nextLeft;\n this._nextTop = nextTop;\n addPlaceholderTick(item._id, this._setupAnimation, this._startAnimation);\n };\n\n /**\n * Prepare placeholder for layout animation.\n *\n * @private\n * @memberof ItemDragPlaceholder.prototype\n */\n ItemDragPlaceholder.prototype._setupAnimation = function() {\n if (!this.isActive()) return;\n\n var translate = getTranslate(this._element);\n this._currentLeft = translate.x;\n this._currentTop = translate.y;\n };\n\n /**\n * Start layout animation.\n *\n * @private\n * @memberof ItemDragPlaceholder.prototype\n */\n ItemDragPlaceholder.prototype._startAnimation = function() {\n if (!this.isActive()) return;\n\n var animation = this._animate;\n var currentLeft = this._currentLeft;\n var currentTop = this._currentTop;\n var nextLeft = this._nextLeft;\n var nextTop = this._nextTop;\n var targetStyles = { transform: getTranslateString(nextLeft, nextTop) };\n\n // If placeholder is already in correct position let's just stop animation\n // and be done with it.\n if (currentLeft === nextLeft && currentTop === nextTop) {\n if (animation.isAnimating()) animation.stop(targetStyles);\n return;\n }\n\n // Otherwise let's start the animation.\n var settings = this._item.getGrid()._settings.dragPlaceholder;\n var currentStyles = { transform: getTranslateString(currentLeft, currentTop) };\n animation.start(currentStyles, targetStyles, {\n duration: settings.duration,\n easing: settings.easing,\n onFinish: this._onLayoutEnd\n });\n };\n\n /**\n * Layout end handler.\n *\n * @private\n * @memberof ItemDragPlaceholder.prototype\n */\n ItemDragPlaceholder.prototype._onLayoutEnd = function() {\n if (this._resetAfterLayout) {\n this.reset();\n }\n };\n\n /**\n * Drag end handler. This handler is called when dragReleaseEnd event is\n * emitted and receives the event data as it's argument.\n *\n * @private\n * @memberof ItemDragPlaceholder.prototype\n * @param {Item} item\n */\n ItemDragPlaceholder.prototype._onReleaseEnd = function(item) {\n if (item._id === this._item._id) {\n // If the placeholder is not animating anymore we can safely reset it.\n if (!this._animate.isAnimating()) {\n this.reset();\n return;\n }\n\n // If the placeholder item is still animating here, let's wait for it to\n // finish it's animation.\n this._resetAfterLayout = true;\n }\n };\n\n /**\n * Migration start handler. This handler is called when beforeSend event is\n * emitted and receives the event data as it's argument.\n *\n * @private\n * @memberof ItemDragPlaceholder.prototype\n * @param {Object} data\n * @param {Item} data.item\n * @param {Grid} data.fromGrid\n * @param {Number} data.fromIndex\n * @param {Grid} data.toGrid\n * @param {Number} data.toIndex\n */\n ItemDragPlaceholder.prototype._onMigrate = function(data) {\n // Make sure we have a matching item.\n if (data.item !== this._item) return;\n\n var grid = this._item.getGrid();\n var nextGrid = data.toGrid;\n\n // Unbind listeners from current grid.\n grid.off(eventDragReleaseEnd, this._onReleaseEnd);\n grid.off(eventLayoutStart, this._onLayoutStart);\n grid.off(eventBeforeSend, this._onMigrate);\n\n // Bind listeners to the next grid.\n nextGrid.on(eventDragReleaseEnd, this._onReleaseEnd);\n nextGrid.on(eventLayoutStart, this._onLayoutStart);\n nextGrid.on(eventBeforeSend, this._onMigrate);\n\n // Mark the item as migrated.\n this._didMigrate = true;\n };\n\n /**\n * Public prototype methods\n * ************************\n */\n\n /**\n * Create placeholder. Note that this method only writes to DOM and does not\n * read anything from DOM so it should not cause any additional layout\n * thrashing when it's called at the end of the drag start procedure.\n *\n * @public\n * @memberof ItemDragPlaceholder.prototype\n */\n ItemDragPlaceholder.prototype.create = function() {\n // If we already have placeholder set up we can skip the initiation logic.\n if (this.isActive()) {\n this._resetAfterLayout = false;\n return;\n }\n\n var item = this._item;\n var grid = item.getGrid();\n var settings = grid._settings;\n var animation = this._animate;\n\n // Create placeholder element.\n var element;\n if (isFunction(settings.dragPlaceholder.createElement)) {\n element = settings.dragPlaceholder.createElement(item);\n } else {\n element = window.document.createElement('div');\n }\n this._element = element;\n\n // Update element to animation instance.\n animation._element = element;\n\n // Add placeholder class to the placeholder element.\n this._className = settings.itemPlaceholderClass || '';\n if (this._className) {\n addClass(element, this._className);\n }\n\n // Position the placeholder item correctly.\n var left = item._left + item._marginLeft;\n var top = item._top + item._marginTop;\n setStyles(element, {\n display: 'block',\n position: 'absolute',\n left: '0',\n top: '0',\n width: item._width + 'px',\n height: item._height + 'px',\n transform: getTranslateString(left, top)\n });\n\n // Bind event listeners.\n grid.on(eventLayoutStart, this._onLayoutStart);\n grid.on(eventDragReleaseEnd, this._onReleaseEnd);\n grid.on(eventBeforeSend, this._onMigrate);\n\n // onCreate hook.\n if (isFunction(settings.dragPlaceholder.onCreate)) {\n settings.dragPlaceholder.onCreate(item, element);\n }\n\n // Insert the placeholder element to the grid.\n grid.getElement().appendChild(element);\n };\n\n /**\n * Reset placeholder data.\n *\n * @public\n * @memberof ItemDragPlaceholder.prototype\n */\n ItemDragPlaceholder.prototype.reset = function() {\n if (!this.isActive()) return;\n\n var element = this._element;\n var item = this._item;\n var grid = item.getGrid();\n var settings = grid._settings;\n var animation = this._animate;\n\n // Reset flag.\n this._resetAfterLayout = false;\n\n // Cancel potential (queued) layout tick.\n cancelPlaceholderTick(item._id);\n\n // Reset animation instance.\n animation.stop();\n animation._element = null;\n\n // Unbind event listeners.\n grid.off(eventDragReleaseEnd, this._onReleaseEnd);\n grid.off(eventLayoutStart, this._onLayoutStart);\n grid.off(eventBeforeSend, this._onMigrate);\n\n // Remove placeholder class from the placeholder element.\n if (this._className) {\n removeClass(element, this._className);\n this._className = '';\n }\n\n // Remove element.\n element.parentNode.removeChild(element);\n this._element = null;\n\n // onRemove hook. Note that here we use the current grid's onRemove callback\n // so if the item has migrated during drag the onRemove method will not be\n // the originating grid's method.\n if (isFunction(settings.dragPlaceholder.onRemove)) {\n settings.dragPlaceholder.onRemove(item, element);\n }\n };\n\n /**\n * Update placeholder's dimensions.\n *\n * @public\n * @memberof ItemDragPlaceholder.prototype\n * @param {Number} width\n * @param {height} height\n */\n ItemDragPlaceholder.prototype.updateDimensions = function(width, height) {\n if (this.isActive()) {\n setStyles(this._element, {\n width: width + 'px',\n height: height + 'px'\n });\n }\n };\n\n /**\n * Check if placeholder is currently active (visible).\n *\n * @public\n * @memberof ItemDragPlaceholder.prototype\n * @returns {Boolean}\n */\n ItemDragPlaceholder.prototype.isActive = function() {\n return !!this._element;\n };\n\n /**\n * Destroy placeholder instance.\n *\n * @public\n * @memberof ItemDragPlaceholder.prototype\n */\n ItemDragPlaceholder.prototype.destroy = function() {\n this.reset();\n this._animate.destroy();\n this._item = this._animate = null;\n };\n\n /**\n * Queue constructor.\n *\n * @class\n */\n function Queue() {\n this._queue = [];\n this._isDestroyed = false;\n }\n\n /**\n * Public prototype methods\n * ************************\n */\n\n /**\n * Add callback to the queue.\n *\n * @public\n * @memberof Queue.prototype\n * @param {Function} callback\n * @returns {Queue}\n */\n Queue.prototype.add = function(callback) {\n if (this._isDestroyed) return this;\n this._queue.push(callback);\n return this;\n };\n\n /**\n * Process queue callbacks and reset the queue.\n *\n * @public\n * @memberof Queue.prototype\n * @param {*} arg1\n * @param {*} arg2\n * @returns {Queue}\n */\n Queue.prototype.flush = function(arg1, arg2) {\n if (this._isDestroyed) return this;\n\n var queue = this._queue;\n var length = queue.length;\n var i;\n\n // Quit early if the queue is empty.\n if (!length) return this;\n\n var singleCallback = length === 1;\n var snapshot = singleCallback ? queue[0] : queue.slice(0);\n\n // Reset queue.\n queue.length = 0;\n\n // If we only have a single callback let's just call it.\n if (singleCallback) {\n snapshot(arg1, arg2);\n return this;\n }\n\n // If we have multiple callbacks, let's process them.\n for (i = 0; i < length; i++) {\n snapshot[i](arg1, arg2);\n if (this._isDestroyed) break;\n }\n\n return this;\n };\n\n /**\n * Destroy Queue instance.\n *\n * @public\n * @memberof Queue.prototype\n * @returns {Queue}\n */\n Queue.prototype.destroy = function() {\n if (this._isDestroyed) return this;\n\n this._isDestroyed = true;\n this._queue.length = 0;\n\n return this;\n };\n\n /**\n * Layout manager for Item instance.\n *\n * @class\n * @param {Item} item\n */\n function ItemLayout(item) {\n this._item = item;\n this._isActive = false;\n this._isDestroyed = false;\n this._isInterrupted = false;\n this._currentStyles = {};\n this._targetStyles = {};\n this._currentLeft = 0;\n this._currentTop = 0;\n this._offsetLeft = 0;\n this._offsetTop = 0;\n this._skipNextAnimation = false;\n this._animateOptions = {\n onFinish: this._finish.bind(this)\n };\n this._queue = new Queue();\n\n // Bind animation handlers and finish method.\n this._setupAnimation = this._setupAnimation.bind(this);\n this._startAnimation = this._startAnimation.bind(this);\n }\n\n /**\n * Public prototype methods\n * ************************\n */\n\n /**\n * Start item layout based on it's current data.\n *\n * @public\n * @memberof ItemLayout.prototype\n * @param {Boolean} [instant=false]\n * @param {Function} [onFinish]\n * @returns {ItemLayout}\n */\n ItemLayout.prototype.start = function(instant, onFinish) {\n if (this._isDestroyed) return;\n\n var item = this._item;\n var element = item._element;\n var release = item._release;\n var gridSettings = item.getGrid()._settings;\n var isPositioning = this._isActive;\n var isJustReleased = release._isActive && release._isPositioningStarted === false;\n var animDuration = isJustReleased\n ? gridSettings.dragReleaseDuration\n : gridSettings.layoutDuration;\n var animEasing = isJustReleased ? gridSettings.dragReleaseEasing : gridSettings.layoutEasing;\n var animEnabled = !instant && !this._skipNextAnimation && animDuration > 0;\n var isAnimating;\n\n // If the item is currently positioning process current layout callback\n // queue with interrupted flag on.\n if (isPositioning) this._queue.flush(true, item);\n\n // Mark release positioning as started.\n if (isJustReleased) release._isPositioningStarted = true;\n\n // Push the callback to the callback queue.\n if (isFunction(onFinish)) this._queue.add(onFinish);\n\n // If no animations are needed, easy peasy!\n if (!animEnabled) {\n this._updateOffsets();\n this._updateTargetStyles();\n isAnimating = item._animate.isAnimating();\n this.stop(false, this._targetStyles);\n !isAnimating && setStyles(element, this._targetStyles);\n this._skipNextAnimation = false;\n return this._finish();\n }\n\n // Set item active and store some data for the animation that is about to be\n // triggered.\n this._isActive = true;\n this._animateOptions.easing = animEasing;\n this._animateOptions.duration = animDuration;\n this._isInterrupted = isPositioning;\n\n // Start the item's layout animation in the next tick.\n addLayoutTick(item._id, this._setupAnimation, this._startAnimation);\n\n return this;\n };\n\n /**\n * Stop item's position animation if it is currently animating.\n *\n * @public\n * @memberof ItemLayout.prototype\n * @param {Boolean} [processCallbackQueue=false]\n * @param {Object} [targetStyles]\n * @returns {ItemLayout}\n */\n ItemLayout.prototype.stop = function(processCallbackQueue, targetStyles) {\n if (this._isDestroyed || !this._isActive) return this;\n\n var item = this._item;\n\n // Cancel animation init.\n cancelLayoutTick(item._id);\n\n // Stop animation.\n item._animate.stop(targetStyles);\n\n // Remove positioning class.\n removeClass(item._element, item.getGrid()._settings.itemPositioningClass);\n\n // Reset active state.\n this._isActive = false;\n\n // Process callback queue if needed.\n if (processCallbackQueue) this._queue.flush(true, item);\n\n return this;\n };\n\n /**\n * Destroy the instance and stop current animation if it is running.\n *\n * @public\n * @memberof ItemLayout.prototype\n * @returns {ItemLayout}\n */\n ItemLayout.prototype.destroy = function() {\n if (this._isDestroyed) return this;\n this.stop(true, {});\n this._queue.destroy();\n this._item = this._currentStyles = this._targetStyles = this._animateOptions = null;\n this._isDestroyed = true;\n return this;\n };\n\n /**\n * Private prototype methods\n * *************************\n */\n\n /**\n * Calculate and update item's current layout offset data.\n *\n * @private\n * @memberof ItemLayout.prototype\n */\n ItemLayout.prototype._updateOffsets = function() {\n if (this._isDestroyed) return;\n\n var item = this._item;\n var migrate = item._migrate;\n var release = item._release;\n\n this._offsetLeft = release._isActive\n ? release._containerDiffX\n : migrate._isActive\n ? migrate._containerDiffX\n : 0;\n\n this._offsetTop = release._isActive\n ? release._containerDiffY\n : migrate._isActive\n ? migrate._containerDiffY\n : 0;\n };\n\n /**\n * Calculate and update item's layout target styles.\n *\n * @private\n * @memberof ItemLayout.prototype\n */\n ItemLayout.prototype._updateTargetStyles = function() {\n if (this._isDestroyed) return;\n this._targetStyles.transform = getTranslateString(\n this._item._left + this._offsetLeft,\n this._item._top + this._offsetTop\n );\n };\n\n /**\n * Finish item layout procedure.\n *\n * @private\n * @memberof ItemLayout.prototype\n */\n ItemLayout.prototype._finish = function() {\n if (this._isDestroyed) return;\n\n var item = this._item;\n var migrate = item._migrate;\n var release = item._release;\n\n // Mark the item as inactive and remove positioning classes.\n if (this._isActive) {\n this._isActive = false;\n removeClass(item._element, item.getGrid()._settings.itemPositioningClass);\n }\n\n // Finish up release and migration.\n if (release._isActive) release.stop();\n if (migrate._isActive) migrate.stop();\n\n // Process the callback queue.\n this._queue.flush(false, item);\n };\n\n /**\n * Prepare item for layout animation.\n *\n * @private\n * @memberof ItemLayout.prototype\n */\n ItemLayout.prototype._setupAnimation = function() {\n var translate = getTranslate(this._item._element);\n this._currentLeft = translate.x;\n this._currentTop = translate.y;\n };\n\n /**\n * Start layout animation.\n *\n * @private\n * @memberof ItemLayout.prototype\n */\n ItemLayout.prototype._startAnimation = function() {\n var item = this._item;\n var settings = item.getGrid()._settings;\n\n // Let's update the offset data and target styles.\n this._updateOffsets();\n this._updateTargetStyles();\n\n // If the item is already in correct position let's quit early.\n if (\n item._left === this._currentLeft - this._offsetLeft &&\n item._top === this._currentTop - this._offsetTop\n ) {\n if (this._isInterrupted) this.stop(false, this._targetStyles);\n this._isActive = false;\n this._finish();\n return;\n }\n\n // Set item's positioning class if needed.\n if (!this._isInterrupted) {\n addClass(item._element, settings.itemPositioningClass);\n }\n\n // Get current styles for animation.\n this._currentStyles.transform = getTranslateString(this._currentLeft, this._currentTop);\n\n // Animate.\n item._animate.start(this._currentStyles, this._targetStyles, this._animateOptions);\n };\n\n var tempStyles = {};\n\n /**\n * The migrate process handler constructor.\n *\n * @class\n * @param {Item} item\n */\n function ItemMigrate(item) {\n // Private props.\n this._item = item;\n this._isActive = false;\n this._isDestroyed = false;\n this._container = false;\n this._containerDiffX = 0;\n this._containerDiffY = 0;\n }\n\n /**\n * Public prototype methods\n * ************************\n */\n\n /**\n * Start the migrate process of an item.\n *\n * @public\n * @memberof ItemMigrate.prototype\n * @param {Grid} targetGrid\n * @param {GridSingleItemQuery} position\n * @param {HTMLElement} [container]\n * @returns {ItemMigrate}\n */\n ItemMigrate.prototype.start = function(targetGrid, position, container) {\n if (this._isDestroyed) return this;\n\n var item = this._item;\n var element = item._element;\n var isVisible = item.isVisible();\n var grid = item.getGrid();\n var settings = grid._settings;\n var targetSettings = targetGrid._settings;\n var targetElement = targetGrid._element;\n var targetItems = targetGrid._items;\n var currentIndex = grid._items.indexOf(item);\n var targetContainer = container || window.document.body;\n var targetIndex;\n var targetItem;\n var currentContainer;\n var offsetDiff;\n var containerDiff;\n var translate;\n var translateX;\n var translateY;\n\n // Get target index.\n if (typeof position === 'number') {\n targetIndex = normalizeArrayIndex(targetItems, position, true);\n } else {\n targetItem = targetGrid._getItem(position);\n /** @todo Consider throwing an error here instead of silently failing. */\n if (!targetItem) return this;\n targetIndex = targetItems.indexOf(targetItem);\n }\n\n // Get current translateX and translateY values if needed.\n if (item.isPositioning() || this._isActive || item.isReleasing()) {\n translate = getTranslate(element);\n translateX = translate.x;\n translateY = translate.y;\n }\n\n // Abort current positioning.\n if (item.isPositioning()) {\n item._layout.stop(true, { transform: getTranslateString(translateX, translateY) });\n }\n\n // Abort current migration.\n if (this._isActive) {\n translateX -= this._containerDiffX;\n translateY -= this._containerDiffY;\n this.stop(true, { transform: getTranslateString(translateX, translateY) });\n }\n\n // Abort current release.\n if (item.isReleasing()) {\n translateX -= item._release._containerDiffX;\n translateY -= item._release._containerDiffY;\n item._release.stop(true, { transform: getTranslateString(translateX, translateY) });\n }\n\n // Stop current visibility animations.\n item._visibility._stopAnimation();\n\n // Destroy current drag.\n if (item._drag) item._drag.destroy();\n\n // Process current visibility animation queue.\n item._visibility._queue.flush(true, item);\n\n // Emit beforeSend event.\n if (grid._hasListeners(eventBeforeSend)) {\n grid._emit(eventBeforeSend, {\n item: item,\n fromGrid: grid,\n fromIndex: currentIndex,\n toGrid: targetGrid,\n toIndex: targetIndex\n });\n }\n\n // Emit beforeReceive event.\n if (targetGrid._hasListeners(eventBeforeReceive)) {\n targetGrid._emit(eventBeforeReceive, {\n item: item,\n fromGrid: grid,\n fromIndex: currentIndex,\n toGrid: targetGrid,\n toIndex: targetIndex\n });\n }\n\n // Remove current classnames.\n removeClass(element, settings.itemClass);\n removeClass(element, settings.itemVisibleClass);\n removeClass(element, settings.itemHiddenClass);\n\n // Add new classnames.\n addClass(element, targetSettings.itemClass);\n addClass(element, isVisible ? targetSettings.itemVisibleClass : targetSettings.itemHiddenClass);\n\n // Move item instance from current grid to target grid.\n grid._items.splice(currentIndex, 1);\n arrayInsert(targetItems, item, targetIndex);\n\n // Update item's grid id reference.\n item._gridId = targetGrid._id;\n\n // Get current container.\n currentContainer = element.parentNode;\n\n // Move the item inside the target container if it's different than the\n // current container.\n if (targetContainer !== currentContainer) {\n targetContainer.appendChild(element);\n offsetDiff = getOffsetDiff(targetContainer, currentContainer, true);\n if (!translate) {\n translate = getTranslate(element);\n translateX = translate.x;\n translateY = translate.y;\n }\n element.style[transformProp] = getTranslateString(\n translateX + offsetDiff.left,\n translateY + offsetDiff.top\n );\n }\n\n // Update child element's styles to reflect the current visibility state.\n item._child.removeAttribute('style');\n setStyles(item._child, isVisible ? targetSettings.visibleStyles : targetSettings.hiddenStyles);\n\n // Update display style.\n element.style.display = isVisible ? 'block' : 'hidden';\n\n // Get offset diff for the migration data.\n containerDiff = getOffsetDiff(targetContainer, targetElement, true);\n\n // Update item's cached dimensions and sort data.\n item._refreshDimensions();\n item._refreshSortData();\n\n // Create new drag handler.\n item._drag = targetSettings.dragEnabled ? new ItemDrag(item) : null;\n\n // Setup migration data.\n this._isActive = true;\n this._container = targetContainer;\n this._containerDiffX = containerDiff.left;\n this._containerDiffY = containerDiff.top;\n\n // Emit send event.\n if (grid._hasListeners(eventSend)) {\n grid._emit(eventSend, {\n item: item,\n fromGrid: grid,\n fromIndex: currentIndex,\n toGrid: targetGrid,\n toIndex: targetIndex\n });\n }\n\n // Emit receive event.\n if (targetGrid._hasListeners(eventReceive)) {\n targetGrid._emit(eventReceive, {\n item: item,\n fromGrid: grid,\n fromIndex: currentIndex,\n toGrid: targetGrid,\n toIndex: targetIndex\n });\n }\n\n return this;\n };\n\n /**\n * End the migrate process of an item. This method can be used to abort an\n * ongoing migrate process (animation) or finish the migrate process.\n *\n * @public\n * @memberof ItemMigrate.prototype\n * @param {Boolean} [abort=false]\n * - Should the migration be aborted?\n * @param {Object} [currentStyles]\n * - Optional current translateX and translateY styles.\n * @returns {ItemMigrate}\n */\n ItemMigrate.prototype.stop = function(abort, currentStyles) {\n if (this._isDestroyed || !this._isActive) return this;\n\n var item = this._item;\n var element = item._element;\n var grid = item.getGrid();\n var gridElement = grid._element;\n var translate;\n\n if (this._container !== gridElement) {\n if (!currentStyles) {\n if (abort) {\n translate = getTranslate(element);\n tempStyles.transform = getTranslateString(\n translate.x - this._containerDiffX,\n translate.y - this._containerDiffY\n );\n } else {\n tempStyles.transform = getTranslateString(item._left, item._top);\n }\n currentStyles = tempStyles;\n }\n gridElement.appendChild(element);\n setStyles(element, currentStyles);\n }\n\n this._isActive = false;\n this._container = null;\n this._containerDiffX = 0;\n this._containerDiffY = 0;\n\n return this;\n };\n\n /**\n * Destroy instance.\n *\n * @public\n * @memberof ItemMigrate.prototype\n * @returns {ItemMigrate}\n */\n ItemMigrate.prototype.destroy = function() {\n if (this._isDestroyed) return this;\n this.stop(true);\n this._item = null;\n this._isDestroyed = true;\n return this;\n };\n\n var tempStyles$1 = {};\n\n /**\n * The release process handler constructor. Although this might seem as proper\n * fit for the drag process this needs to be separated into it's own logic\n * because there might be a scenario where drag is disabled, but the release\n * process still needs to be implemented (dragging from a grid to another).\n *\n * @class\n * @param {Item} item\n */\n function ItemRelease(item) {\n this._item = item;\n this._isActive = false;\n this._isDestroyed = false;\n this._isPositioningStarted = false;\n this._containerDiffX = 0;\n this._containerDiffY = 0;\n }\n\n /**\n * Public prototype methods\n * ************************\n */\n\n /**\n * Start the release process of an item.\n *\n * @public\n * @memberof ItemRelease.prototype\n * @returns {ItemRelease}\n */\n ItemRelease.prototype.start = function() {\n if (this._isDestroyed || this._isActive) return this;\n\n var item = this._item;\n var grid = item.getGrid();\n\n // Flag release as active.\n this._isActive = true;\n\n // Add release class name to the released element.\n addClass(item._element, grid._settings.itemReleasingClass);\n\n // Emit dragReleaseStart event.\n grid._emit(eventDragReleaseStart, item);\n\n // Position the released item.\n item._layout.start(false);\n\n return this;\n };\n\n /**\n * End the release process of an item. This method can be used to abort an\n * ongoing release process (animation) or finish the release process.\n *\n * @public\n * @memberof ItemRelease.prototype\n * @param {Boolean} [abort=false]\n * - Should the release be aborted? When true, the release end event won't be\n * emitted. Set to true only when you need to abort the release process\n * while the item is animating to it's position.\n * @param {Object} [currentStyles]\n * - Optional current translateX and translateY styles.\n * @returns {ItemRelease}\n */\n ItemRelease.prototype.stop = function(abort, currentStyles) {\n if (this._isDestroyed || !this._isActive) return this;\n\n var item = this._item;\n var element = item._element;\n var grid = item.getGrid();\n var container = grid._element;\n var translate;\n\n // Reset data and remove releasing class name from the element.\n this._reset();\n\n // If the released element is outside the grid's container element put it\n // back there and adjust position accordingly.\n if (element.parentNode !== container) {\n if (!currentStyles) {\n if (abort) {\n translate = getTranslate(element);\n tempStyles$1.transform = getTranslateString(\n translate.x - this._containerDiffX,\n translate.y - this._containerDiffY\n );\n } else {\n tempStyles$1.transform = getTranslateString(item._left, item._top);\n }\n currentStyles = tempStyles$1;\n }\n container.appendChild(element);\n setStyles(element, currentStyles);\n }\n\n // Emit dragReleaseEnd event.\n if (!abort) grid._emit(eventDragReleaseEnd, item);\n\n return this;\n };\n\n /**\n * Destroy instance.\n *\n * @public\n * @memberof ItemRelease.prototype\n * @returns {ItemRelease}\n */\n ItemRelease.prototype.destroy = function() {\n if (this._isDestroyed) return this;\n this.stop(true);\n this._item = null;\n this._isDestroyed = true;\n return this;\n };\n\n /**\n * Private prototype methods\n * *************************\n */\n\n /**\n * Reset public data and remove releasing class.\n *\n * @private\n * @memberof ItemRelease.prototype\n */\n ItemRelease.prototype._reset = function() {\n if (this._isDestroyed) return;\n var item = this._item;\n this._isActive = false;\n this._isPositioningStarted = false;\n this._containerDiffX = 0;\n this._containerDiffY = 0;\n removeClass(item._element, item.getGrid()._settings.itemReleasingClass);\n };\n\n /**\n * Get current values of the provided styles definition object.\n *\n * @param {HTMLElement} element\n * @param {Object} styles\n * @return {Object}\n */\n function getCurrentStyles(element, styles) {\n var current = {};\n for (var prop in styles) {\n current[prop] = getStyle(element, getStyleName(prop));\n }\n return current;\n }\n\n /**\n * Visibility manager for Item instance.\n *\n * @class\n * @param {Item} item\n */\n function ItemVisibility(item) {\n var isActive = item._isActive;\n var element = item._element;\n var settings = item.getGrid()._settings;\n\n this._item = item;\n this._isDestroyed = false;\n\n // Set up visibility states.\n this._isHidden = !isActive;\n this._isHiding = false;\n this._isShowing = false;\n\n // Callback queue.\n this._queue = new Queue();\n\n // Bind show/hide finishers.\n this._finishShow = this._finishShow.bind(this);\n this._finishHide = this._finishHide.bind(this);\n\n // Force item to be either visible or hidden on init.\n element.style.display = isActive ? 'block' : 'none';\n\n // Set visible/hidden class.\n addClass(element, isActive ? settings.itemVisibleClass : settings.itemHiddenClass);\n\n // Set initial styles for the child element.\n setStyles(item._child, isActive ? settings.visibleStyles : settings.hiddenStyles);\n }\n\n /**\n * Public prototype methods\n * ************************\n */\n\n /**\n * Show item.\n *\n * @public\n * @memberof ItemVisibility.prototype\n * @param {Boolean} instant\n * @param {Function} [onFinish]\n * @returns {ItemVisibility}\n */\n ItemVisibility.prototype.show = function(instant, onFinish) {\n if (this._isDestroyed) return this;\n\n var item = this._item;\n var element = item._element;\n var queue = this._queue;\n var callback = isFunction(onFinish) ? onFinish : null;\n var grid = item.getGrid();\n var settings = grid._settings;\n\n // If item is visible call the callback and be done with it.\n if (!this._isShowing && !this._isHidden) {\n callback && callback(false, item);\n return this;\n }\n\n // If item is showing and does not need to be shown instantly, let's just\n // push callback to the callback queue and be done with it.\n if (this._isShowing && !instant) {\n callback && queue.add(callback);\n return this;\n }\n\n // If the item is hiding or hidden process the current visibility callback\n // queue with the interrupted flag active, update classes and set display\n // to block if necessary.\n if (!this._isShowing) {\n queue.flush(true, item);\n removeClass(element, settings.itemHiddenClass);\n addClass(element, settings.itemVisibleClass);\n if (!this._isHiding) element.style.display = 'block';\n }\n\n // Push callback to the callback queue.\n callback && queue.add(callback);\n\n // Update visibility states.\n item._isActive = this._isShowing = true;\n this._isHiding = this._isHidden = false;\n\n // Finally let's start show animation.\n this._startAnimation(true, instant, this._finishShow);\n\n return this;\n };\n\n /**\n * Hide item.\n *\n * @public\n * @memberof ItemVisibility.prototype\n * @param {Boolean} instant\n * @param {Function} [onFinish]\n * @returns {ItemVisibility}\n */\n ItemVisibility.prototype.hide = function(instant, onFinish) {\n if (this._isDestroyed) return this;\n\n var item = this._item;\n var element = item._element;\n var queue = this._queue;\n var callback = isFunction(onFinish) ? onFinish : null;\n var grid = item.getGrid();\n var settings = grid._settings;\n\n // If item is already hidden call the callback and be done with it.\n if (!this._isHiding && this._isHidden) {\n callback && callback(false, item);\n return this;\n }\n\n // If item is hiding and does not need to be hidden instantly, let's just\n // push callback to the callback queue and be done with it.\n if (this._isHiding && !instant) {\n callback && queue.add(callback);\n return this;\n }\n\n // If the item is showing or visible process the current visibility callback\n // queue with the interrupted flag active, update classes and set display\n // to block if necessary.\n if (!this._isHiding) {\n queue.flush(true, item);\n addClass(element, settings.itemHiddenClass);\n removeClass(element, settings.itemVisibleClass);\n }\n\n // Push callback to the callback queue.\n callback && queue.add(callback);\n\n // Update visibility states.\n this._isHidden = this._isHiding = true;\n item._isActive = this._isShowing = false;\n\n // Finally let's start hide animation.\n this._startAnimation(false, instant, this._finishHide);\n\n return this;\n };\n\n /**\n * Destroy the instance and stop current animation if it is running.\n *\n * @public\n * @memberof ItemVisibility.prototype\n * @returns {ItemVisibility}\n */\n ItemVisibility.prototype.destroy = function() {\n if (this._isDestroyed) return this;\n\n var item = this._item;\n var element = item._element;\n var grid = item.getGrid();\n var queue = this._queue;\n var settings = grid._settings;\n\n // Stop visibility animation.\n this._stopAnimation({});\n\n // Fire all uncompleted callbacks with interrupted flag and destroy the queue.\n queue.flush(true, item).destroy();\n\n // Remove visible/hidden classes.\n removeClass(element, settings.itemVisibleClass);\n removeClass(element, settings.itemHiddenClass);\n\n // Reset state.\n this._item = null;\n this._isHiding = this._isShowing = false;\n this._isDestroyed = this._isHidden = true;\n\n return this;\n };\n\n /**\n * Private prototype methods\n * *************************\n */\n\n /**\n * Start visibility animation.\n *\n * @private\n * @memberof ItemVisibility.prototype\n * @param {Boolean} toVisible\n * @param {Boolean} [instant]\n * @param {Function} [onFinish]\n */\n ItemVisibility.prototype._startAnimation = function(toVisible, instant, onFinish) {\n if (this._isDestroyed) return;\n\n var item = this._item;\n var settings = item.getGrid()._settings;\n var targetStyles = toVisible ? settings.visibleStyles : settings.hiddenStyles;\n var duration = parseInt(toVisible ? settings.showDuration : settings.hideDuration) || 0;\n var easing = (toVisible ? settings.showEasing : settings.hideEasing) || 'ease';\n var isInstant = instant || duration <= 0;\n var currentStyles;\n\n // No target styles? Let's quit early.\n if (!targetStyles) {\n onFinish && onFinish();\n return;\n }\n\n // Cancel queued visibility tick.\n cancelVisibilityTick(item._id);\n\n // If we need to apply the styles instantly without animation.\n if (isInstant) {\n if (item._animateChild.isAnimating()) {\n item._animateChild.stop(targetStyles);\n } else {\n setStyles(item._child, targetStyles);\n }\n onFinish && onFinish();\n return;\n }\n\n // Start the animation in the next tick (to avoid layout thrashing).\n addVisibilityTick(\n item._id,\n function() {\n currentStyles = getCurrentStyles(item._child, targetStyles);\n },\n function() {\n item._animateChild.start(currentStyles, targetStyles, {\n duration: duration,\n easing: easing,\n onFinish: onFinish\n });\n }\n );\n };\n\n /**\n * Stop visibility animation.\n *\n * @private\n * @memberof ItemVisibility.prototype\n * @param {Object} [targetStyles]\n */\n ItemVisibility.prototype._stopAnimation = function(targetStyles) {\n if (this._isDestroyed) return;\n var item = this._item;\n cancelVisibilityTick(item._id);\n item._animateChild.stop(targetStyles);\n };\n\n /**\n * Finish show procedure.\n *\n * @private\n * @memberof ItemVisibility.prototype\n */\n ItemVisibility.prototype._finishShow = function() {\n if (this._isHidden) return;\n this._isShowing = false;\n this._queue.flush(false, this._item);\n };\n\n /**\n * Finish hide procedure.\n *\n * @private\n * @memberof ItemVisibility.prototype\n */\n var finishStyles = {};\n ItemVisibility.prototype._finishHide = function() {\n if (!this._isHidden) return;\n var item = this._item;\n this._isHiding = false;\n finishStyles.transform = getTranslateString(0, 0);\n item._layout.stop(true, finishStyles);\n item._element.style.display = 'none';\n this._queue.flush(false, item);\n };\n\n var id = 0;\n\n /**\n * Returns a unique numeric id (increments a base value on every call).\n * @returns {Number}\n */\n function createUid() {\n return ++id;\n }\n\n /**\n * Creates a new Item instance for a Grid instance.\n *\n * @class\n * @param {Grid} grid\n * @param {HTMLElement} element\n * @param {Boolean} [isActive]\n */\n function Item(grid, element, isActive) {\n var settings = grid._settings;\n\n // Create instance id.\n this._id = createUid();\n\n // Reference to connected Grid instance's id.\n this._gridId = grid._id;\n\n // Destroyed flag.\n this._isDestroyed = false;\n\n // Set up initial positions.\n this._left = 0;\n this._top = 0;\n\n // The elements.\n this._element = element;\n this._child = element.children[0];\n\n // If the provided item element is not a direct child of the grid container\n // element, append it to the grid container.\n if (element.parentNode !== grid._element) {\n grid._element.appendChild(element);\n }\n\n // Set item class.\n addClass(element, settings.itemClass);\n\n // If isActive is not defined, let's try to auto-detect it.\n if (typeof isActive !== 'boolean') {\n isActive = getStyle(element, 'display') !== 'none';\n }\n\n // Set up active state (defines if the item is considered part of the layout\n // or not).\n this._isActive = isActive;\n\n // Set element's initial position styles.\n element.style.left = '0';\n element.style.top = '0';\n element.style[transformProp] = getTranslateString(0, 0);\n\n // Initiate item's animation controllers.\n this._animate = new ItemAnimate(element);\n this._animateChild = new ItemAnimate(this._child);\n\n // Setup visibility handler.\n this._visibility = new ItemVisibility(this);\n\n // Set up layout handler.\n this._layout = new ItemLayout(this);\n\n // Set up migration handler data.\n this._migrate = new ItemMigrate(this);\n\n // Set up release handler. Note that although this is fully linked to dragging\n // this still needs to be always instantiated to handle migration scenarios\n // correctly.\n this._release = new ItemRelease(this);\n\n // Set up drag placeholder handler. Note that although this is fully linked to\n // dragging this still needs to be always instantiated to handle migration\n // scenarios correctly.\n this._dragPlaceholder = new ItemDragPlaceholder(this);\n\n // Set up drag handler.\n this._drag = settings.dragEnabled ? new ItemDrag(this) : null;\n\n // Set up the initial dimensions and sort data.\n this._refreshDimensions();\n this._refreshSortData();\n }\n\n /**\n * Public prototype methods\n * ************************\n */\n\n /**\n * Get the instance grid reference.\n *\n * @public\n * @memberof Item.prototype\n * @returns {Grid}\n */\n Item.prototype.getGrid = function() {\n return gridInstances[this._gridId];\n };\n\n /**\n * Get the instance element.\n *\n * @public\n * @memberof Item.prototype\n * @returns {HTMLElement}\n */\n Item.prototype.getElement = function() {\n return this._element;\n };\n\n /**\n * Get instance element's cached width.\n *\n * @public\n * @memberof Item.prototype\n * @returns {Number}\n */\n Item.prototype.getWidth = function() {\n return this._width;\n };\n\n /**\n * Get instance element's cached height.\n *\n * @public\n * @memberof Item.prototype\n * @returns {Number}\n */\n Item.prototype.getHeight = function() {\n return this._height;\n };\n\n /**\n * Get instance element's cached margins.\n *\n * @public\n * @memberof Item.prototype\n * @returns {Object}\n * - The returned object contains left, right, top and bottom properties\n * which indicate the item element's cached margins.\n */\n Item.prototype.getMargin = function() {\n return {\n left: this._marginLeft,\n right: this._marginRight,\n top: this._marginTop,\n bottom: this._marginBottom\n };\n };\n\n /**\n * Get instance element's cached position.\n *\n * @public\n * @memberof Item.prototype\n * @returns {Object}\n * - The returned object contains left and top properties which indicate the\n * item element's cached position in the grid.\n */\n Item.prototype.getPosition = function() {\n return {\n left: this._left,\n top: this._top\n };\n };\n\n /**\n * Is the item active?\n *\n * @public\n * @memberof Item.prototype\n * @returns {Boolean}\n */\n Item.prototype.isActive = function() {\n return this._isActive;\n };\n\n /**\n * Is the item visible?\n *\n * @public\n * @memberof Item.prototype\n * @returns {Boolean}\n */\n Item.prototype.isVisible = function() {\n return !!this._visibility && !this._visibility._isHidden;\n };\n\n /**\n * Is the item being animated to visible?\n *\n * @public\n * @memberof Item.prototype\n * @returns {Boolean}\n */\n Item.prototype.isShowing = function() {\n return !!(this._visibility && this._visibility._isShowing);\n };\n\n /**\n * Is the item being animated to hidden?\n *\n * @public\n * @memberof Item.prototype\n * @returns {Boolean}\n */\n Item.prototype.isHiding = function() {\n return !!(this._visibility && this._visibility._isHiding);\n };\n\n /**\n * Is the item positioning?\n *\n * @public\n * @memberof Item.prototype\n * @returns {Boolean}\n */\n Item.prototype.isPositioning = function() {\n return !!(this._layout && this._layout._isActive);\n };\n\n /**\n * Is the item being dragged?\n *\n * @public\n * @memberof Item.prototype\n * @returns {Boolean}\n */\n Item.prototype.isDragging = function() {\n return !!(this._drag && this._drag._isActive);\n };\n\n /**\n * Is the item being released?\n *\n * @public\n * @memberof Item.prototype\n * @returns {Boolean}\n */\n Item.prototype.isReleasing = function() {\n return !!(this._release && this._release._isActive);\n };\n\n /**\n * Is the item destroyed?\n *\n * @public\n * @memberof Item.prototype\n * @returns {Boolean}\n */\n Item.prototype.isDestroyed = function() {\n return this._isDestroyed;\n };\n\n /**\n * Private prototype methods\n * *************************\n */\n\n /**\n * Recalculate item's dimensions.\n *\n * @private\n * @memberof Item.prototype\n */\n Item.prototype._refreshDimensions = function() {\n if (this._isDestroyed || this._visibility._isHidden) return;\n\n var element = this._element;\n var dragPlaceholder = this._dragPlaceholder;\n var rect = element.getBoundingClientRect();\n\n // Calculate width and height.\n this._width = rect.width;\n this._height = rect.height;\n\n // Calculate margins (ignore negative margins).\n this._marginLeft = Math.max(0, getStyleAsFloat(element, 'margin-left'));\n this._marginRight = Math.max(0, getStyleAsFloat(element, 'margin-right'));\n this._marginTop = Math.max(0, getStyleAsFloat(element, 'margin-top'));\n this._marginBottom = Math.max(0, getStyleAsFloat(element, 'margin-bottom'));\n\n // Keep drag placeholder's dimensions synced with the item's.\n if (dragPlaceholder) {\n dragPlaceholder.updateDimensions(this._width, this._height);\n }\n };\n\n /**\n * Fetch and store item's sort data.\n *\n * @private\n * @memberof Item.prototype\n */\n Item.prototype._refreshSortData = function() {\n if (this._isDestroyed) return;\n\n var data = (this._sortData = {});\n var getters = this.getGrid()._settings.sortData;\n var prop;\n\n for (prop in getters) {\n data[prop] = getters[prop](this, this._element);\n }\n };\n\n /**\n * Destroy item instance.\n *\n * @private\n * @memberof Item.prototype\n * @param {Boolean} [removeElement=false]\n */\n Item.prototype._destroy = function(removeElement) {\n if (this._isDestroyed) return;\n\n var element = this._element;\n var grid = this.getGrid();\n var settings = grid._settings;\n var index = grid._items.indexOf(this);\n\n // Destroy handlers.\n this._release.destroy();\n this._migrate.destroy();\n this._layout.destroy();\n this._visibility.destroy();\n this._animate.destroy();\n this._animateChild.destroy();\n this._dragPlaceholder.destroy();\n this._drag && this._drag.destroy();\n\n // Remove all inline styles.\n element.removeAttribute('style');\n this._child.removeAttribute('style');\n\n // Remove item class.\n removeClass(element, settings.itemClass);\n\n // Remove item from Grid instance if it still exists there.\n index > -1 && grid._items.splice(index, 1);\n\n // Remove element from DOM.\n removeElement && element.parentNode.removeChild(element);\n\n // Reset state.\n this._isActive = false;\n this._isDestroyed = true;\n };\n\n /**\n * This is the default layout algorithm for Muuri. Based on MAXRECTS approach\n * as described by Jukka Jylänki in his survey: \"A Thousand Ways to Pack the\n * Bin - A Practical Approach to Two-Dimensional Rectangle Bin Packing.\".\n *\n * @class\n */\n function Packer() {\n this._slots = [];\n this._slotSizes = [];\n this._freeSlots = [];\n this._newSlots = [];\n this._rectItem = {};\n this._rectStore = [];\n this._rectId = 0;\n\n // The layout return data, which will be populated in getLayout.\n this._layout = {\n slots: null,\n setWidth: false,\n setHeight: false,\n width: false,\n height: false\n };\n\n // Bind sort handlers.\n this._sortRectsLeftTop = this._sortRectsLeftTop.bind(this);\n this._sortRectsTopLeft = this._sortRectsTopLeft.bind(this);\n }\n\n /**\n * @public\n * @memberof Packer.prototype\n * @param {Item[]} items\n * @param {Number} width\n * @param {Number} height\n * @param {Number[]} [slots]\n * @param {Object} [options]\n * @param {Boolean} [options.fillGaps=false]\n * @param {Boolean} [options.horizontal=false]\n * @param {Boolean} [options.alignRight=false]\n * @param {Boolean} [options.alignBottom=false]\n * @returns {LayoutData}\n */\n Packer.prototype.getLayout = function(items, width, height, slots, options) {\n var layout = this._layout;\n var fillGaps = !!(options && options.fillGaps);\n var isHorizontal = !!(options && options.horizontal);\n var alignRight = !!(options && options.alignRight);\n var alignBottom = !!(options && options.alignBottom);\n var rounding = !!(options && options.rounding);\n var slotSizes = this._slotSizes;\n var i;\n\n // Reset layout data.\n layout.slots = slots ? slots : this._slots;\n layout.width = isHorizontal ? 0 : rounding ? Math.round(width) : width;\n layout.height = !isHorizontal ? 0 : rounding ? Math.round(height) : height;\n layout.setWidth = isHorizontal;\n layout.setHeight = !isHorizontal;\n\n // Make sure slots and slot size arrays are reset.\n layout.slots.length = 0;\n slotSizes.length = 0;\n\n // No need to go further if items do not exist.\n if (!items.length) return layout;\n\n // Find slots for items.\n for (i = 0; i < items.length; i++) {\n this._addSlot(items[i], isHorizontal, fillGaps, rounding, alignRight || alignBottom);\n }\n\n // If the alignment is set to right we need to adjust the results.\n if (alignRight) {\n for (i = 0; i < layout.slots.length; i = i + 2) {\n layout.slots[i] = layout.width - (layout.slots[i] + slotSizes[i]);\n }\n }\n\n // If the alignment is set to bottom we need to adjust the results.\n if (alignBottom) {\n for (i = 1; i < layout.slots.length; i = i + 2) {\n layout.slots[i] = layout.height - (layout.slots[i] + slotSizes[i]);\n }\n }\n\n // Reset slots arrays and rect id.\n slotSizes.length = 0;\n this._freeSlots.length = 0;\n this._newSlots.length = 0;\n this._rectId = 0;\n\n return layout;\n };\n\n /**\n * Calculate position for the layout item. Returns the left and top position\n * of the item in pixels.\n *\n * @private\n * @memberof Packer.prototype\n * @param {Item} item\n * @param {Boolean} isHorizontal\n * @param {Boolean} fillGaps\n * @param {Boolean} rounding\n * @returns {Array}\n */\n Packer.prototype._addSlot = (function() {\n var eps = 0.001;\n var itemSlot = {};\n return function(item, isHorizontal, fillGaps, rounding, trackSize) {\n var layout = this._layout;\n var freeSlots = this._freeSlots;\n var newSlots = this._newSlots;\n var rect;\n var rectId;\n var potentialSlots;\n var ignoreCurrentSlots;\n var i;\n var ii;\n\n // Reset new slots.\n newSlots.length = 0;\n\n // Set item slot initial data.\n itemSlot.left = null;\n itemSlot.top = null;\n itemSlot.width = item._width + item._marginLeft + item._marginRight;\n itemSlot.height = item._height + item._marginTop + item._marginBottom;\n\n // Round item slot width and height if needed.\n if (rounding) {\n itemSlot.width = Math.round(itemSlot.width);\n itemSlot.height = Math.round(itemSlot.height);\n }\n\n // Try to find a slot for the item.\n for (i = 0; i < freeSlots.length; i++) {\n rectId = freeSlots[i];\n if (!rectId) continue;\n rect = this._getRect(rectId);\n if (itemSlot.width <= rect.width + eps && itemSlot.height <= rect.height + eps) {\n itemSlot.left = rect.left;\n itemSlot.top = rect.top;\n break;\n }\n }\n\n // If no slot was found for the item.\n if (itemSlot.left === null) {\n // Position the item in to the bottom left (vertical mode) or top right\n // (horizontal mode) of the grid.\n itemSlot.left = !isHorizontal ? 0 : layout.width;\n itemSlot.top = !isHorizontal ? layout.height : 0;\n\n // If gaps don't need filling do not add any current slots to the new\n // slots array.\n if (!fillGaps) {\n ignoreCurrentSlots = true;\n }\n }\n\n // In vertical mode, if the item's bottom overlaps the grid's bottom.\n if (!isHorizontal && itemSlot.top + itemSlot.height > layout.height) {\n // If item is not aligned to the left edge, create a new slot.\n if (itemSlot.left > 0) {\n newSlots.push(this._addRect(0, layout.height, itemSlot.left, Infinity));\n }\n\n // If item is not aligned to the right edge, create a new slot.\n if (itemSlot.left + itemSlot.width < layout.width) {\n newSlots.push(\n this._addRect(\n itemSlot.left + itemSlot.width,\n layout.height,\n layout.width - itemSlot.left - itemSlot.width,\n Infinity\n )\n );\n }\n\n // Update grid height.\n layout.height = itemSlot.top + itemSlot.height;\n }\n\n // In horizontal mode, if the item's right overlaps the grid's right edge.\n if (isHorizontal && itemSlot.left + itemSlot.width > layout.width) {\n // If item is not aligned to the top, create a new slot.\n if (itemSlot.top > 0) {\n newSlots.push(this._addRect(layout.width, 0, Infinity, itemSlot.top));\n }\n\n // If item is not aligned to the bottom, create a new slot.\n if (itemSlot.top + itemSlot.height < layout.height) {\n newSlots.push(\n this._addRect(\n layout.width,\n itemSlot.top + itemSlot.height,\n Infinity,\n layout.height - itemSlot.top - itemSlot.height\n )\n );\n }\n\n // Update grid width.\n layout.width = itemSlot.left + itemSlot.width;\n }\n\n // Clean up the current slots making sure there are no old slots that\n // overlap with the item. If an old slot overlaps with the item, split it\n // into smaller slots if necessary.\n for (i = fillGaps ? 0 : ignoreCurrentSlots ? freeSlots.length : i; i < freeSlots.length; i++) {\n rectId = freeSlots[i];\n if (!rectId) continue;\n rect = this._getRect(rectId);\n potentialSlots = this._splitRect(rect, itemSlot);\n for (ii = 0; ii < potentialSlots.length; ii++) {\n rectId = potentialSlots[ii];\n rect = this._getRect(rectId);\n // Let's make sure here that we have a big enough slot\n // (width/height > 0.49px) and also let's make sure that the slot is\n // within the boundaries of the grid.\n if (\n rect.width > 0.49 &&\n rect.height > 0.49 &&\n ((!isHorizontal && rect.top < layout.height) ||\n (isHorizontal && rect.left < layout.width))\n ) {\n newSlots.push(rectId);\n }\n }\n }\n\n // Sanitize new slots.\n if (newSlots.length) {\n this._purgeRects(newSlots).sort(\n isHorizontal ? this._sortRectsLeftTop : this._sortRectsTopLeft\n );\n }\n\n // Update layout width/height.\n if (isHorizontal) {\n layout.width = Math.max(layout.width, itemSlot.left + itemSlot.width);\n } else {\n layout.height = Math.max(layout.height, itemSlot.top + itemSlot.height);\n }\n\n // Add item slot data to layout slots (and store the slot size for later\n // usage too if necessary).\n layout.slots.push(itemSlot.left, itemSlot.top);\n if (trackSize) this._slotSizes.push(itemSlot.width, itemSlot.height);\n\n // Free/new slots switcheroo!\n this._freeSlots = newSlots;\n this._newSlots = freeSlots;\n };\n })();\n\n /**\n * Add a new rectangle to the rectangle store. Returns the id of the new\n * rectangle.\n *\n * @private\n * @memberof Packer.prototype\n * @param {Number} left\n * @param {Number} top\n * @param {Number} width\n * @param {Number} height\n * @returns {RectId}\n */\n Packer.prototype._addRect = function(left, top, width, height) {\n var rectId = ++this._rectId;\n var rectStore = this._rectStore;\n\n rectStore[rectId] = left || 0;\n rectStore[++this._rectId] = top || 0;\n rectStore[++this._rectId] = width || 0;\n rectStore[++this._rectId] = height || 0;\n\n return rectId;\n };\n\n /**\n * Get rectangle data from the rectangle store by id. Optionally you can\n * provide a target object where the rectangle data will be written in. By\n * default an internal object is reused as a target object.\n *\n * @private\n * @memberof Packer.prototype\n * @param {RectId} id\n * @param {Object} [target]\n * @returns {Object}\n */\n Packer.prototype._getRect = function(id, target) {\n var rectItem = target ? target : this._rectItem;\n var rectStore = this._rectStore;\n\n rectItem.left = rectStore[id] || 0;\n rectItem.top = rectStore[++id] || 0;\n rectItem.width = rectStore[++id] || 0;\n rectItem.height = rectStore[++id] || 0;\n\n return rectItem;\n };\n\n /**\n * Punch a hole into a rectangle and split the remaining area into smaller\n * rectangles (4 at max).\n *\n * @private\n * @memberof Packer.prototype\n * @param {Rectangle} rect\n * @param {Rectangle} hole\n * @returns {RectId[]}\n */\n Packer.prototype._splitRect = (function() {\n var results = [];\n return function(rect, hole) {\n // Reset old results.\n results.length = 0;\n\n // If the rect does not overlap with the hole add rect to the return data\n // as is.\n if (!this._doRectsOverlap(rect, hole)) {\n results.push(this._addRect(rect.left, rect.top, rect.width, rect.height));\n return results;\n }\n\n // Left split.\n if (rect.left < hole.left) {\n results.push(this._addRect(rect.left, rect.top, hole.left - rect.left, rect.height));\n }\n\n // Right split.\n if (rect.left + rect.width > hole.left + hole.width) {\n results.push(\n this._addRect(\n hole.left + hole.width,\n rect.top,\n rect.left + rect.width - (hole.left + hole.width),\n rect.height\n )\n );\n }\n\n // Top split.\n if (rect.top < hole.top) {\n results.push(this._addRect(rect.left, rect.top, rect.width, hole.top - rect.top));\n }\n\n // Bottom split.\n if (rect.top + rect.height > hole.top + hole.height) {\n results.push(\n this._addRect(\n rect.left,\n hole.top + hole.height,\n rect.width,\n rect.top + rect.height - (hole.top + hole.height)\n )\n );\n }\n\n return results;\n };\n })();\n\n /**\n * Check if two rectangles overlap.\n *\n * @private\n * @memberof Packer.prototype\n * @param {Rectangle} a\n * @param {Rectangle} b\n * @returns {Boolean}\n */\n Packer.prototype._doRectsOverlap = function(a, b) {\n return !(\n a.left + a.width <= b.left ||\n b.left + b.width <= a.left ||\n a.top + a.height <= b.top ||\n b.top + b.height <= a.top\n );\n };\n\n /**\n * Check if a rectangle is fully within another rectangle.\n *\n * @private\n * @memberof Packer.prototype\n * @param {Rectangle} a\n * @param {Rectangle} b\n * @returns {Boolean}\n */\n Packer.prototype._isRectWithinRect = function(a, b) {\n return (\n a.left >= b.left &&\n a.top >= b.top &&\n a.left + a.width <= b.left + b.width &&\n a.top + a.height <= b.top + b.height\n );\n };\n\n /**\n * Loops through an array of rectangle ids and resets all that are fully\n * within another rectangle in the array. Resetting in this case means that\n * the rectangle id value is replaced with zero.\n *\n * @private\n * @memberof Packer.prototype\n * @param {RectId[]} rectIds\n * @returns {RectId[]}\n */\n Packer.prototype._purgeRects = (function() {\n var rectA = {};\n var rectB = {};\n return function(rectIds) {\n var i = rectIds.length;\n var ii;\n\n while (i--) {\n ii = rectIds.length;\n if (!rectIds[i]) continue;\n this._getRect(rectIds[i], rectA);\n while (ii--) {\n if (!rectIds[ii] || i === ii) continue;\n if (this._isRectWithinRect(rectA, this._getRect(rectIds[ii], rectB))) {\n rectIds[i] = 0;\n break;\n }\n }\n }\n\n return rectIds;\n };\n })();\n\n /**\n * Sort rectangles with top-left gravity.\n *\n * @private\n * @memberof Packer.prototype\n * @param {RectId} aId\n * @param {RectId} bId\n * @returns {Number}\n */\n Packer.prototype._sortRectsTopLeft = (function() {\n var rectA = {};\n var rectB = {};\n return function(aId, bId) {\n this._getRect(aId, rectA);\n this._getRect(bId, rectB);\n // prettier-ignore\n return rectA.top < rectB.top ? -1 :\n rectA.top > rectB.top ? 1 :\n rectA.left < rectB.left ? -1 :\n rectA.left > rectB.left ? 1 : 0;\n };\n })();\n\n /**\n * Sort rectangles with left-top gravity.\n *\n * @private\n * @memberof Packer.prototype\n * @param {RectId} aId\n * @param {RectId} bId\n * @returns {Number}\n */\n Packer.prototype._sortRectsLeftTop = (function() {\n var rectA = {};\n var rectB = {};\n return function(aId, bId) {\n this._getRect(aId, rectA);\n this._getRect(bId, rectB);\n // prettier-ignore\n return rectA.left < rectB.left ? -1 :\n rectA.left > rectB.left ? 1 :\n rectA.top < rectB.top ? -1 :\n rectA.top > rectB.top ? 1 : 0;\n };\n })();\n\n var htmlCollectionType = '[object HTMLCollection]';\n var nodeListType = '[object NodeList]';\n\n /**\n * Check if a value is a node list\n *\n * @param {*} val\n * @returns {Boolean}\n */\n function isNodeList(val) {\n var type = Object.prototype.toString.call(val);\n return type === htmlCollectionType || type === nodeListType;\n }\n\n var objectType = 'object';\n var objectToStringType = '[object Object]';\n var toString = Object.prototype.toString;\n\n /**\n * Check if a value is a plain object.\n *\n * @param {*} val\n * @returns {Boolean}\n */\n function isPlainObject(val) {\n return typeof val === objectType && toString.call(val) === objectToStringType;\n }\n\n /**\n * Converts a value to an array or clones an array.\n *\n * @param {*} target\n * @returns {Array}\n */\n function toArray(target) {\n return isNodeList(target) ? Array.prototype.slice.call(target) : Array.prototype.concat(target);\n }\n\n var packer = new Packer();\n var noop = function() {};\n\n var numberType$1 = 'number';\n var stringType = 'string';\n var instantLayout = 'instant';\n\n /**\n * Creates a new Grid instance.\n *\n * @class\n * @param {(HTMLElement|String)} element\n * @param {Object} [options]\n * @param {?(HTMLElement[]|NodeList|String)} [options.items]\n * @param {Number} [options.showDuration=300]\n * @param {String} [options.showEasing=\"ease\"]\n * @param {Object} [options.visibleStyles]\n * @param {Number} [options.hideDuration=300]\n * @param {String} [options.hideEasing=\"ease\"]\n * @param {Object} [options.hiddenStyles]\n * @param {(Function|Object)} [options.layout]\n * @param {Boolean} [options.layout.fillGaps=false]\n * @param {Boolean} [options.layout.horizontal=false]\n * @param {Boolean} [options.layout.alignRight=false]\n * @param {Boolean} [options.layout.alignBottom=false]\n * @param {Boolean} [options.layout.rounding=true]\n * @param {(Boolean|Number)} [options.layoutOnResize=100]\n * @param {Boolean} [options.layoutOnInit=true]\n * @param {Number} [options.layoutDuration=300]\n * @param {String} [options.layoutEasing=\"ease\"]\n * @param {?Object} [options.sortData=null]\n * @param {Boolean} [options.dragEnabled=false]\n * @param {?HtmlElement} [options.dragContainer=null]\n * @param {?Function} [options.dragStartPredicate]\n * @param {Number} [options.dragStartPredicate.distance=0]\n * @param {Number} [options.dragStartPredicate.delay=0]\n * @param {(Boolean|String)} [options.dragStartPredicate.handle=false]\n * @param {?String} [options.dragAxis]\n * @param {(Boolean|Function)} [options.dragSort=true]\n * @param {Object} [options.dragSortHeuristics]\n * @param {Number} [options.dragSortHeuristics.sortInterval=100]\n * @param {Number} [options.dragSortHeuristics.minDragDistance=10]\n * @param {Number} [options.dragSortHeuristics.minBounceBackAngle=1]\n * @param {(Function|Object)} [options.dragSortPredicate]\n * @param {Number} [options.dragSortPredicate.threshold=50]\n * @param {String} [options.dragSortPredicate.action=\"move\"]\n * @param {Number} [options.dragReleaseDuration=300]\n * @param {String} [options.dragReleaseEasing=\"ease\"]\n * @param {Object} [options.dragCssProps]\n * @param {Object} [options.dragPlaceholder]\n * @param {Boolean} [options.dragPlaceholder.enabled=false]\n * @param {Number} [options.dragPlaceholder.duration=300]\n * @param {String} [options.dragPlaceholder.easing=\"ease\"]\n * @param {?Function} [options.dragPlaceholder.createElement=null]\n * @param {?Function} [options.dragPlaceholder.onCreate=null]\n * @param {?Function} [options.dragPlaceholder.onRemove=null]\n * @param {String} [options.containerClass=\"muuri\"]\n * @param {String} [options.itemClass=\"muuri-item\"]\n * @param {String} [options.itemVisibleClass=\"muuri-item-visible\"]\n * @param {String} [options.itemHiddenClass=\"muuri-item-hidden\"]\n * @param {String} [options.itemPositioningClass=\"muuri-item-positioning\"]\n * @param {String} [options.itemDraggingClass=\"muuri-item-dragging\"]\n * @param {String} [options.itemReleasingClass=\"muuri-item-releasing\"]\n * @param {String} [options.itemPlaceholderClass=\"muuri-item-placeholder\"]\n */\n\n function Grid(element, options) {\n var inst = this;\n var settings;\n var items;\n var layoutOnResize;\n\n // Allow passing element as selector string. Store element for instance.\n element = this._element =\n typeof element === stringType ? window.document.querySelector(element) : element;\n\n // Throw an error if the container element is not body element or does not\n // exist within the body element.\n var isElementInDom = element.getRootNode\n ? element.getRootNode({ composed: true }) === document\n : window.document.body.contains(element);\n if (!isElementInDom || element === window.document.documentElement) {\n throw new Error('Container element must be an existing DOM element');\n }\n\n // Create instance settings by merging the options with default options.\n settings = this._settings = mergeSettings(Grid.defaultOptions, options);\n\n // Sanitize dragSort setting.\n if (!isFunction(settings.dragSort)) {\n settings.dragSort = !!settings.dragSort;\n }\n\n // Create instance id and store it to the grid instances collection.\n this._id = createUid();\n gridInstances[this._id] = inst;\n\n // Destroyed flag.\n this._isDestroyed = false;\n\n // The layout object (mutated on every layout).\n this._layout = {\n id: 0,\n items: [],\n slots: [],\n setWidth: false,\n setHeight: false,\n width: 0,\n height: 0\n };\n\n // Create private Emitter instance.\n this._emitter = new Emitter();\n\n // Add container element's class name.\n addClass(element, settings.containerClass);\n\n // Create initial items.\n this._items = [];\n items = settings.items;\n if (typeof items === stringType) {\n toArray(element.children).forEach(function(itemElement) {\n if (items === '*' || elementMatches(itemElement, items)) {\n inst._items.push(new Item(inst, itemElement));\n }\n });\n } else if (Array.isArray(items) || isNodeList(items)) {\n this._items = toArray(items).map(function(itemElement) {\n return new Item(inst, itemElement);\n });\n }\n\n // If layoutOnResize option is a valid number sanitize it and bind the resize\n // handler.\n layoutOnResize = settings.layoutOnResize;\n if (typeof layoutOnResize !== numberType$1) {\n layoutOnResize = layoutOnResize === true ? 0 : -1;\n }\n if (layoutOnResize >= 0) {\n window.addEventListener(\n 'resize',\n (inst._resizeHandler = debounce(function() {\n inst.refreshItems().layout();\n }, layoutOnResize))\n );\n }\n\n // Layout on init if necessary.\n if (settings.layoutOnInit) {\n this.layout(true);\n }\n }\n\n /**\n * Public properties\n * *****************\n */\n\n /**\n * @see Item\n */\n Grid.Item = Item;\n\n /**\n * @see ItemLayout\n */\n Grid.ItemLayout = ItemLayout;\n\n /**\n * @see ItemVisibility\n */\n Grid.ItemVisibility = ItemVisibility;\n\n /**\n * @see ItemMigrate\n */\n Grid.ItemMigrate = ItemMigrate;\n\n /**\n * @see ItemAnimate\n */\n Grid.ItemAnimate = ItemAnimate;\n\n /**\n * @see ItemDrag\n */\n Grid.ItemDrag = ItemDrag;\n\n /**\n * @see ItemRelease\n */\n Grid.ItemRelease = ItemRelease;\n\n /**\n * @see ItemDragPlaceholder\n */\n Grid.ItemDragPlaceholder = ItemDragPlaceholder;\n\n /**\n * @see Emitter\n */\n Grid.Emitter = Emitter;\n\n /**\n * @see Dragger\n */\n Grid.Dragger = Dragger;\n\n /**\n * @see Packer\n */\n Grid.Packer = Packer;\n\n /**\n * Default options for Grid instance.\n *\n * @public\n * @memberof Grid\n */\n Grid.defaultOptions = {\n // Item elements\n items: '*',\n\n // Default show animation\n showDuration: 300,\n showEasing: 'ease',\n\n // Default hide animation\n hideDuration: 300,\n hideEasing: 'ease',\n\n // Item's visible/hidden state styles\n visibleStyles: {\n opacity: '1',\n transform: 'scale(1)'\n },\n hiddenStyles: {\n opacity: '0',\n transform: 'scale(0.5)'\n },\n\n // Layout\n layout: {\n fillGaps: false,\n horizontal: false,\n alignRight: false,\n alignBottom: false,\n rounding: true\n },\n layoutOnResize: 100,\n layoutOnInit: true,\n layoutDuration: 300,\n layoutEasing: 'ease',\n\n // Sorting\n sortData: null,\n\n // Drag & Drop\n dragEnabled: false,\n dragContainer: null,\n dragStartPredicate: {\n distance: 0,\n delay: 0,\n handle: false\n },\n dragAxis: null,\n dragSort: true,\n dragSortHeuristics: {\n sortInterval: 100,\n minDragDistance: 10,\n minBounceBackAngle: 1\n },\n dragSortPredicate: {\n threshold: 50,\n action: actionMove\n },\n dragReleaseDuration: 300,\n dragReleaseEasing: 'ease',\n dragCssProps: {\n touchAction: 'none',\n userSelect: 'none',\n userDrag: 'none',\n tapHighlightColor: 'rgba(0, 0, 0, 0)',\n touchCallout: 'none',\n contentZooming: 'none'\n },\n dragPlaceholder: {\n enabled: false,\n duration: 300,\n easing: 'ease',\n createElement: null,\n onCreate: null,\n onRemove: null\n },\n\n // Classnames\n containerClass: 'muuri',\n itemClass: 'muuri-item',\n itemVisibleClass: 'muuri-item-shown',\n itemHiddenClass: 'muuri-item-hidden',\n itemPositioningClass: 'muuri-item-positioning',\n itemDraggingClass: 'muuri-item-dragging',\n itemReleasingClass: 'muuri-item-releasing',\n itemPlaceholderClass: 'muuri-item-placeholder'\n };\n\n /**\n * Public prototype methods\n * ************************\n */\n\n /**\n * Bind an event listener.\n *\n * @public\n * @memberof Grid.prototype\n * @param {String} event\n * @param {Function} listener\n * @returns {Grid}\n */\n Grid.prototype.on = function(event, listener) {\n this._emitter.on(event, listener);\n return this;\n };\n\n /**\n * Unbind an event listener.\n *\n * @public\n * @memberof Grid.prototype\n * @param {String} event\n * @param {Function} listener\n * @returns {Grid}\n */\n Grid.prototype.off = function(event, listener) {\n this._emitter.off(event, listener);\n return this;\n };\n\n /**\n * Get the container element.\n *\n * @public\n * @memberof Grid.prototype\n * @returns {HTMLElement}\n */\n Grid.prototype.getElement = function() {\n return this._element;\n };\n\n /**\n * Get all items. Optionally you can provide specific targets (elements and\n * indices). Note that the returned array is not the same object used by the\n * instance so modifying it will not affect instance's items. All items that\n * are not found are omitted from the returned array.\n *\n * @public\n * @memberof Grid.prototype\n * @param {GridMultiItemQuery} [targets]\n * @returns {Item[]}\n */\n Grid.prototype.getItems = function(targets) {\n // Return all items immediately if no targets were provided or if the\n // instance is destroyed.\n if (this._isDestroyed || (!targets && targets !== 0)) {\n return this._items.slice(0);\n }\n\n var ret = [];\n var targetItems = toArray(targets);\n var item;\n var i;\n\n // If target items are defined return filtered results.\n for (i = 0; i < targetItems.length; i++) {\n item = this._getItem(targetItems[i]);\n item && ret.push(item);\n }\n\n return ret;\n };\n\n /**\n * Update the cached dimensions of the instance's items.\n *\n * @public\n * @memberof Grid.prototype\n * @param {GridMultiItemQuery} [items]\n * @returns {Grid}\n */\n Grid.prototype.refreshItems = function(items) {\n if (this._isDestroyed) return this;\n\n var targets = this.getItems(items);\n var i;\n\n for (i = 0; i < targets.length; i++) {\n targets[i]._refreshDimensions();\n }\n\n return this;\n };\n\n /**\n * Update the sort data of the instance's items.\n *\n * @public\n * @memberof Grid.prototype\n * @param {GridMultiItemQuery} [items]\n * @returns {Grid}\n */\n Grid.prototype.refreshSortData = function(items) {\n if (this._isDestroyed) return this;\n\n var targetItems = this.getItems(items);\n var i;\n\n for (i = 0; i < targetItems.length; i++) {\n targetItems[i]._refreshSortData();\n }\n\n return this;\n };\n\n /**\n * Synchronize the item elements to match the order of the items in the DOM.\n * This comes handy if you need to keep the DOM structure matched with the\n * order of the items. Note that if an item's element is not currently a child\n * of the container element (if it is dragged for example) it is ignored and\n * left untouched.\n *\n * @public\n * @memberof Grid.prototype\n * @returns {Grid}\n */\n Grid.prototype.synchronize = function() {\n if (this._isDestroyed) return this;\n\n var container = this._element;\n var items = this._items;\n var fragment;\n var element;\n var i;\n\n // Append all elements in order to the container element.\n if (items.length) {\n for (i = 0; i < items.length; i++) {\n element = items[i]._element;\n if (element.parentNode === container) {\n fragment = fragment || window.document.createDocumentFragment();\n fragment.appendChild(element);\n }\n }\n\n if (fragment) container.appendChild(fragment);\n }\n\n // Emit synchronize event.\n this._emit(eventSynchronize);\n\n return this;\n };\n\n /**\n * Calculate and apply item positions.\n *\n * @public\n * @memberof Grid.prototype\n * @param {Boolean} [instant=false]\n * @param {LayoutCallback} [onFinish]\n * @returns {Grid}\n */\n Grid.prototype.layout = function(instant, onFinish) {\n if (this._isDestroyed) return this;\n\n var inst = this;\n var element = this._element;\n var layout = this._updateLayout();\n var layoutId = layout.id;\n var itemsLength = layout.items.length;\n var counter = itemsLength;\n var isBorderBox;\n var item;\n var i;\n\n // The finish function, which will be used for checking if all the items\n // have laid out yet. After all items have finished their animations call\n // callback and emit layoutEnd event. Only emit layoutEnd event if there\n // hasn't been a new layout call during this layout.\n function tryFinish() {\n if (--counter > 0) return;\n\n var hasLayoutChanged = inst._layout.id !== layoutId;\n var callback = isFunction(instant) ? instant : onFinish;\n\n if (isFunction(callback)) {\n callback(hasLayoutChanged, layout.items.slice(0));\n }\n\n if (!hasLayoutChanged && inst._hasListeners(eventLayoutEnd)) {\n inst._emit(eventLayoutEnd, layout.items.slice(0));\n }\n }\n\n // If grid's width or height was modified, we need to update it's cached\n // dimensions. Also keep in mind that grid's cached width/height should\n // always equal to what elem.getBoundingClientRect() would return, so\n // therefore we need to add the grid element's borders to the dimensions if\n // it's box-sizing is border-box. Note that we support providing the\n // dimensions as a string here too so that one can define the unit of the\n // dimensions, in which case we don't do the border-box check.\n if (\n (layout.setHeight && typeof layout.height === numberType$1) ||\n (layout.setWidth && typeof layout.width === numberType$1)\n ) {\n isBorderBox = getStyle(element, 'box-sizing') === 'border-box';\n }\n if (layout.setHeight) {\n if (typeof layout.height === numberType$1) {\n element.style.height =\n (isBorderBox ? layout.height + this._borderTop + this._borderBottom : layout.height) + 'px';\n } else {\n element.style.height = layout.height;\n }\n }\n if (layout.setWidth) {\n if (typeof layout.width === numberType$1) {\n element.style.width =\n (isBorderBox ? layout.width + this._borderLeft + this._borderRight : layout.width) + 'px';\n } else {\n element.style.width = layout.width;\n }\n }\n\n // Emit layoutStart event. Note that this is intentionally emitted after the\n // container element's dimensions are set, because otherwise there would be\n // no hook for reacting to container dimension changes.\n if (this._hasListeners(eventLayoutStart)) {\n this._emit(eventLayoutStart, layout.items.slice(0));\n }\n\n // If there are no items let's finish quickly.\n if (!itemsLength) {\n tryFinish();\n return this;\n }\n\n // If there are items let's position them.\n for (i = 0; i < itemsLength; i++) {\n item = layout.items[i];\n if (!item) continue;\n\n // Update item's position.\n item._left = layout.slots[i * 2];\n item._top = layout.slots[i * 2 + 1];\n\n // Layout item if it is not dragged.\n item.isDragging() ? tryFinish() : item._layout.start(instant === true, tryFinish);\n }\n\n return this;\n };\n\n /**\n * Add new items by providing the elements you wish to add to the instance and\n * optionally provide the index where you want the items to be inserted into.\n * All elements that are not already children of the container element will be\n * automatically appended to the container element. If an element has it's CSS\n * display property set to \"none\" it will be marked as inactive during the\n * initiation process. As long as the item is inactive it will not be part of\n * the layout, but it will retain it's index. You can activate items at any\n * point with grid.show() method. This method will automatically call\n * grid.layout() if one or more of the added elements are visible. If only\n * hidden items are added no layout will be called. All the new visible items\n * are positioned without animation during their first layout.\n *\n * @public\n * @memberof Grid.prototype\n * @param {(HTMLElement|HTMLElement[])} elements\n * @param {Object} [options]\n * @param {Number} [options.index=-1]\n * @param {Boolean} [options.isActive]\n * @param {(Boolean|LayoutCallback|String)} [options.layout=true]\n * @returns {Item[]}\n */\n Grid.prototype.add = function(elements, options) {\n if (this._isDestroyed || !elements) return [];\n\n var newItems = toArray(elements);\n if (!newItems.length) return newItems;\n\n var opts = options || 0;\n var layout = opts.layout ? opts.layout : opts.layout === undefined;\n var items = this._items;\n var needsLayout = false;\n var item;\n var i;\n\n // Map provided elements into new grid items.\n for (i = 0; i < newItems.length; i++) {\n item = new Item(this, newItems[i], opts.isActive);\n newItems[i] = item;\n\n // If the item to be added is active, we need to do a layout. Also, we\n // need to mark the item with the skipNextAnimation flag to make it\n // position instantly (without animation) during the next layout. Without\n // the hack the item would animate to it's new position from the northwest\n // corner of the grid, which feels a bit buggy (imho).\n if (item._isActive) {\n needsLayout = true;\n item._layout._skipNextAnimation = true;\n }\n }\n\n // Add the new items to the items collection to correct index.\n arrayInsert(items, newItems, opts.index);\n\n // Emit add event.\n if (this._hasListeners(eventAdd)) {\n this._emit(eventAdd, newItems.slice(0));\n }\n\n // If layout is needed.\n if (needsLayout && layout) {\n this.layout(layout === instantLayout, isFunction(layout) ? layout : undefined);\n }\n\n return newItems;\n };\n\n /**\n * Remove items from the instance.\n *\n * @public\n * @memberof Grid.prototype\n * @param {GridMultiItemQuery} items\n * @param {Object} [options]\n * @param {Boolean} [options.removeElements=false]\n * @param {(Boolean|LayoutCallback|String)} [options.layout=true]\n * @returns {Item[]}\n */\n Grid.prototype.remove = function(items, options) {\n if (this._isDestroyed) return this;\n\n var opts = options || 0;\n var layout = opts.layout ? opts.layout : opts.layout === undefined;\n var needsLayout = false;\n var allItems = this.getItems();\n var targetItems = this.getItems(items);\n var indices = [];\n var item;\n var i;\n\n // Remove the individual items.\n for (i = 0; i < targetItems.length; i++) {\n item = targetItems[i];\n indices.push(allItems.indexOf(item));\n if (item._isActive) needsLayout = true;\n item._destroy(opts.removeElements);\n }\n\n // Emit remove event.\n if (this._hasListeners(eventRemove)) {\n this._emit(eventRemove, targetItems.slice(0), indices);\n }\n\n // If layout is needed.\n if (needsLayout && layout) {\n this.layout(layout === instantLayout, isFunction(layout) ? layout : undefined);\n }\n\n return targetItems;\n };\n\n /**\n * Show instance items.\n *\n * @public\n * @memberof Grid.prototype\n * @param {GridMultiItemQuery} items\n * @param {Object} [options]\n * @param {Boolean} [options.instant=false]\n * @param {ShowCallback} [options.onFinish]\n * @param {(Boolean|LayoutCallback|String)} [options.layout=true]\n * @returns {Grid}\n */\n Grid.prototype.show = function(items, options) {\n if (this._isDestroyed) return this;\n this._setItemsVisibility(items, true, options);\n return this;\n };\n\n /**\n * Hide instance items.\n *\n * @public\n * @memberof Grid.prototype\n * @param {GridMultiItemQuery} items\n * @param {Object} [options]\n * @param {Boolean} [options.instant=false]\n * @param {HideCallback} [options.onFinish]\n * @param {(Boolean|LayoutCallback|String)} [options.layout=true]\n * @returns {Grid}\n */\n Grid.prototype.hide = function(items, options) {\n if (this._isDestroyed) return this;\n this._setItemsVisibility(items, false, options);\n return this;\n };\n\n /**\n * Filter items. Expects at least one argument, a predicate, which should be\n * either a function or a string. The predicate callback is executed for every\n * item in the instance. If the return value of the predicate is truthy the\n * item in question will be shown and otherwise hidden. The predicate callback\n * receives the item instance as it's argument. If the predicate is a string\n * it is considered to be a selector and it is checked against every item\n * element in the instance with the native element.matches() method. All the\n * matching items will be shown and others hidden.\n *\n * @public\n * @memberof Grid.prototype\n * @param {(Function|String)} predicate\n * @param {Object} [options]\n * @param {Boolean} [options.instant=false]\n * @param {FilterCallback} [options.onFinish]\n * @param {(Boolean|LayoutCallback|String)} [options.layout=true]\n * @returns {Grid}\n */\n Grid.prototype.filter = function(predicate, options) {\n if (this._isDestroyed || !this._items.length) return this;\n\n var itemsToShow = [];\n var itemsToHide = [];\n var isPredicateString = typeof predicate === stringType;\n var isPredicateFn = isFunction(predicate);\n var opts = options || 0;\n var isInstant = opts.instant === true;\n var layout = opts.layout ? opts.layout : opts.layout === undefined;\n var onFinish = isFunction(opts.onFinish) ? opts.onFinish : null;\n var tryFinishCounter = -1;\n var tryFinish = noop;\n var item;\n var i;\n\n // If we have onFinish callback, let's create proper tryFinish callback.\n if (onFinish) {\n tryFinish = function() {\n ++tryFinishCounter && onFinish(itemsToShow.slice(0), itemsToHide.slice(0));\n };\n }\n\n // Check which items need to be shown and which hidden.\n if (isPredicateFn || isPredicateString) {\n for (i = 0; i < this._items.length; i++) {\n item = this._items[i];\n if (isPredicateFn ? predicate(item) : elementMatches(item._element, predicate)) {\n itemsToShow.push(item);\n } else {\n itemsToHide.push(item);\n }\n }\n }\n\n // Show items that need to be shown.\n if (itemsToShow.length) {\n this.show(itemsToShow, {\n instant: isInstant,\n onFinish: tryFinish,\n layout: false\n });\n } else {\n tryFinish();\n }\n\n // Hide items that need to be hidden.\n if (itemsToHide.length) {\n this.hide(itemsToHide, {\n instant: isInstant,\n onFinish: tryFinish,\n layout: false\n });\n } else {\n tryFinish();\n }\n\n // If there are any items to filter.\n if (itemsToShow.length || itemsToHide.length) {\n // Emit filter event.\n if (this._hasListeners(eventFilter)) {\n this._emit(eventFilter, itemsToShow.slice(0), itemsToHide.slice(0));\n }\n\n // If layout is needed.\n if (layout) {\n this.layout(layout === instantLayout, isFunction(layout) ? layout : undefined);\n }\n }\n\n return this;\n };\n\n /**\n * Sort items. There are three ways to sort the items. The first is simply by\n * providing a function as the comparer which works identically to native\n * array sort. Alternatively you can sort by the sort data you have provided\n * in the instance's options. Just provide the sort data key(s) as a string\n * (separated by space) and the items will be sorted based on the provided\n * sort data keys. Lastly you have the opportunity to provide a presorted\n * array of items which will be used to sync the internal items array in the\n * same order.\n *\n * @public\n * @memberof Grid.prototype\n * @param {(Function|Item[]|String|String[])} comparer\n * @param {Object} [options]\n * @param {Boolean} [options.descending=false]\n * @param {(Boolean|LayoutCallback|String)} [options.layout=true]\n * @returns {Grid}\n */\n Grid.prototype.sort = (function() {\n var sortComparer;\n var isDescending;\n var origItems;\n var indexMap;\n\n function parseCriteria(data) {\n return data\n .trim()\n .split(' ')\n .map(function(val) {\n return val.split(':');\n });\n }\n\n function getIndexMap(items) {\n var ret = {};\n for (var i = 0; i < items.length; i++) {\n ret[items[i]._id] = i;\n }\n return ret;\n }\n\n function compareIndices(itemA, itemB) {\n var indexA = indexMap[itemA._id];\n var indexB = indexMap[itemB._id];\n return isDescending ? indexB - indexA : indexA - indexB;\n }\n\n function defaultComparer(a, b) {\n var result = 0;\n var criteriaName;\n var criteriaOrder;\n var valA;\n var valB;\n\n // Loop through the list of sort criteria.\n for (var i = 0; i < sortComparer.length; i++) {\n // Get the criteria name, which should match an item's sort data key.\n criteriaName = sortComparer[i][0];\n criteriaOrder = sortComparer[i][1];\n\n // Get items' cached sort values for the criteria. If the item has no sort\n // data let's update the items sort data (this is a lazy load mechanism).\n valA = (a._sortData ? a : a._refreshSortData())._sortData[criteriaName];\n valB = (b._sortData ? b : b._refreshSortData())._sortData[criteriaName];\n\n // Sort the items in descending order if defined so explicitly. Otherwise\n // sort items in ascending order.\n if (criteriaOrder === 'desc' || (!criteriaOrder && isDescending)) {\n result = valB < valA ? -1 : valB > valA ? 1 : 0;\n } else {\n result = valA < valB ? -1 : valA > valB ? 1 : 0;\n }\n\n // If we have -1 or 1 as the return value, let's return it immediately.\n if (result) return result;\n }\n\n // If values are equal let's compare the item indices to make sure we\n // have a stable sort.\n if (!result) {\n if (!indexMap) indexMap = getIndexMap(origItems);\n result = compareIndices(a, b);\n }\n return result;\n }\n\n function customComparer(a, b) {\n var result = sortComparer(a, b);\n // If descending let's invert the result value.\n if (isDescending && result) result = -result;\n // If we have a valid result (not zero) let's return it right away.\n if (result) return result;\n // If result is zero let's compare the item indices to make sure we have a\n // stable sort.\n if (!indexMap) indexMap = getIndexMap(origItems);\n return compareIndices(a, b);\n }\n\n return function(comparer, options) {\n if (this._isDestroyed || this._items.length < 2) return this;\n\n var items = this._items;\n var opts = options || 0;\n var layout = opts.layout ? opts.layout : opts.layout === undefined;\n var i;\n\n // Setup parent scope data.\n sortComparer = comparer;\n isDescending = !!opts.descending;\n origItems = items.slice(0);\n indexMap = null;\n\n // If function is provided do a native array sort.\n if (isFunction(sortComparer)) {\n items.sort(customComparer);\n }\n // Otherwise if we got a string, let's sort by the sort data as provided in\n // the instance's options.\n else if (typeof sortComparer === stringType) {\n sortComparer = parseCriteria(comparer);\n items.sort(defaultComparer);\n }\n // Otherwise if we got an array, let's assume it's a presorted array of the\n // items and order the items based on it.\n else if (Array.isArray(sortComparer)) {\n if (sortComparer.length !== items.length) {\n throw new Error('[' + namespace + '] sort reference items do not match with grid items.');\n }\n for (i = 0; i < items.length; i++) {\n if (sortComparer.indexOf(items[i]) < 0) {\n throw new Error('[' + namespace + '] sort reference items do not match with grid items.');\n }\n items[i] = sortComparer[i];\n }\n if (isDescending) items.reverse();\n }\n // Otherwise let's just skip it, nothing we can do here.\n else {\n /** @todo Maybe throw an error here? */\n return this;\n }\n\n // Emit sort event.\n if (this._hasListeners(eventSort)) {\n this._emit(eventSort, items.slice(0), origItems);\n }\n\n // If layout is needed.\n if (layout) {\n this.layout(layout === instantLayout, isFunction(layout) ? layout : undefined);\n }\n\n return this;\n };\n })();\n\n /**\n * Move item to another index or in place of another item.\n *\n * @public\n * @memberof Grid.prototype\n * @param {GridSingleItemQuery} item\n * @param {GridSingleItemQuery} position\n * @param {Object} [options]\n * @param {String} [options.action=\"move\"]\n * - Accepts either \"move\" or \"swap\".\n * - \"move\" moves the item in place of the other item.\n * - \"swap\" swaps the position of the items.\n * @param {(Boolean|LayoutCallback|String)} [options.layout=true]\n * @returns {Grid}\n */\n Grid.prototype.move = function(item, position, options) {\n if (this._isDestroyed || this._items.length < 2) return this;\n\n var items = this._items;\n var opts = options || 0;\n var layout = opts.layout ? opts.layout : opts.layout === undefined;\n var isSwap = opts.action === actionSwap;\n var action = isSwap ? actionSwap : actionMove;\n var fromItem = this._getItem(item);\n var toItem = this._getItem(position);\n var fromIndex;\n var toIndex;\n\n // Make sure the items exist and are not the same.\n if (fromItem && toItem && fromItem !== toItem) {\n // Get the indices of the items.\n fromIndex = items.indexOf(fromItem);\n toIndex = items.indexOf(toItem);\n\n // Do the move/swap.\n if (isSwap) {\n arraySwap(items, fromIndex, toIndex);\n } else {\n arrayMove(items, fromIndex, toIndex);\n }\n\n // Emit move event.\n if (this._hasListeners(eventMove)) {\n this._emit(eventMove, {\n item: fromItem,\n fromIndex: fromIndex,\n toIndex: toIndex,\n action: action\n });\n }\n\n // If layout is needed.\n if (layout) {\n this.layout(layout === instantLayout, isFunction(layout) ? layout : undefined);\n }\n }\n\n return this;\n };\n\n /**\n * Send item to another Grid instance.\n *\n * @public\n * @memberof Grid.prototype\n * @param {GridSingleItemQuery} item\n * @param {Grid} grid\n * @param {GridSingleItemQuery} position\n * @param {Object} [options]\n * @param {HTMLElement} [options.appendTo=document.body]\n * @param {(Boolean|LayoutCallback|String)} [options.layoutSender=true]\n * @param {(Boolean|LayoutCallback|String)} [options.layoutReceiver=true]\n * @returns {Grid}\n */\n Grid.prototype.send = function(item, grid, position, options) {\n if (this._isDestroyed || grid._isDestroyed || this === grid) return this;\n\n // Make sure we have a valid target item.\n item = this._getItem(item);\n if (!item) return this;\n\n var opts = options || 0;\n var container = opts.appendTo || window.document.body;\n var layoutSender = opts.layoutSender ? opts.layoutSender : opts.layoutSender === undefined;\n var layoutReceiver = opts.layoutReceiver\n ? opts.layoutReceiver\n : opts.layoutReceiver === undefined;\n\n // Start the migration process.\n item._migrate.start(grid, position, container);\n\n // If migration was started successfully and the item is active, let's layout\n // the grids.\n if (item._migrate._isActive && item._isActive) {\n if (layoutSender) {\n this.layout(\n layoutSender === instantLayout,\n isFunction(layoutSender) ? layoutSender : undefined\n );\n }\n if (layoutReceiver) {\n grid.layout(\n layoutReceiver === instantLayout,\n isFunction(layoutReceiver) ? layoutReceiver : undefined\n );\n }\n }\n\n return this;\n };\n\n /**\n * Destroy the instance.\n *\n * @public\n * @memberof Grid.prototype\n * @param {Boolean} [removeElements=false]\n * @returns {Grid}\n */\n Grid.prototype.destroy = function(removeElements) {\n if (this._isDestroyed) return this;\n\n var container = this._element;\n var items = this._items.slice(0);\n var i;\n\n // Unbind window resize event listener.\n if (this._resizeHandler) {\n window.removeEventListener('resize', this._resizeHandler);\n }\n\n // Destroy items.\n for (i = 0; i < items.length; i++) {\n items[i]._destroy(removeElements);\n }\n\n // Restore container.\n removeClass(container, this._settings.containerClass);\n container.style.height = '';\n container.style.width = '';\n\n // Emit destroy event and unbind all events.\n this._emit(eventDestroy);\n this._emitter.destroy();\n\n // Remove reference from the grid instances collection.\n gridInstances[this._id] = undefined;\n\n // Flag instance as destroyed.\n this._isDestroyed = true;\n\n return this;\n };\n\n /**\n * Private prototype methods\n * *************************\n */\n\n /**\n * Get instance's item by element or by index. Target can also be an Item\n * instance in which case the function returns the item if it exists within\n * related Grid instance. If nothing is found with the provided target, null\n * is returned.\n *\n * @private\n * @memberof Grid.prototype\n * @param {GridSingleItemQuery} [target]\n * @returns {?Item}\n */\n Grid.prototype._getItem = function(target) {\n // If no target is specified or the instance is destroyed, return null.\n if (this._isDestroyed || (!target && target !== 0)) {\n return null;\n }\n\n // If target is number return the item in that index. If the number is lower\n // than zero look for the item starting from the end of the items array. For\n // example -1 for the last item, -2 for the second last item, etc.\n if (typeof target === numberType$1) {\n return this._items[target > -1 ? target : this._items.length + target] || null;\n }\n\n // If the target is an instance of Item return it if it is attached to this\n // Grid instance, otherwise return null.\n if (target instanceof Item) {\n return target._gridId === this._id ? target : null;\n }\n\n // In other cases let's assume that the target is an element, so let's try\n // to find an item that matches the element and return it. If item is not\n // found return null.\n /** @todo This could be made a lot faster by using Map/WeakMap of elements. */\n for (var i = 0; i < this._items.length; i++) {\n if (this._items[i]._element === target) {\n return this._items[i];\n }\n }\n\n return null;\n };\n\n /**\n * Recalculates and updates instance's layout data.\n *\n * @private\n * @memberof Grid.prototype\n * @returns {LayoutData}\n */\n Grid.prototype._updateLayout = function() {\n var layout = this._layout;\n var settings = this._settings.layout;\n var width;\n var height;\n var newLayout;\n var i;\n\n // Let's increment layout id.\n ++layout.id;\n\n // Let's update layout items\n layout.items.length = 0;\n for (i = 0; i < this._items.length; i++) {\n if (this._items[i]._isActive) layout.items.push(this._items[i]);\n }\n\n // Let's make sure we have the correct container dimensions.\n this._refreshDimensions();\n\n // Calculate container width and height (without borders).\n width = this._width - this._borderLeft - this._borderRight;\n height = this._height - this._borderTop - this._borderBottom;\n\n // Calculate new layout.\n if (isFunction(settings)) {\n newLayout = settings(layout.items, width, height);\n } else {\n newLayout = packer.getLayout(layout.items, width, height, layout.slots, settings);\n }\n\n // Let's update the grid's layout.\n layout.slots = newLayout.slots;\n layout.setWidth = Boolean(newLayout.setWidth);\n layout.setHeight = Boolean(newLayout.setHeight);\n layout.width = newLayout.width;\n layout.height = newLayout.height;\n\n return layout;\n };\n\n /**\n * Emit a grid event.\n *\n * @private\n * @memberof Grid.prototype\n * @param {String} event\n * @param {...*} [arg]\n */\n Grid.prototype._emit = function() {\n if (this._isDestroyed) return;\n this._emitter.emit.apply(this._emitter, arguments);\n };\n\n /**\n * Check if there are any events listeners for an event.\n *\n * @private\n * @memberof Grid.prototype\n * @param {String} event\n * @returns {Boolean}\n */\n Grid.prototype._hasListeners = function(event) {\n var listeners = this._emitter._events[event];\n return !!(listeners && listeners.length);\n };\n\n /**\n * Update container's width, height and offsets.\n *\n * @private\n * @memberof Grid.prototype\n */\n Grid.prototype._updateBoundingRect = function() {\n var element = this._element;\n var rect = element.getBoundingClientRect();\n this._width = rect.width;\n this._height = rect.height;\n this._left = rect.left;\n this._top = rect.top;\n };\n\n /**\n * Update container's border sizes.\n *\n * @private\n * @memberof Grid.prototype\n * @param {Boolean} left\n * @param {Boolean} right\n * @param {Boolean} top\n * @param {Boolean} bottom\n */\n Grid.prototype._updateBorders = function(left, right, top, bottom) {\n var element = this._element;\n if (left) this._borderLeft = getStyleAsFloat(element, 'border-left-width');\n if (right) this._borderRight = getStyleAsFloat(element, 'border-right-width');\n if (top) this._borderTop = getStyleAsFloat(element, 'border-top-width');\n if (bottom) this._borderBottom = getStyleAsFloat(element, 'border-bottom-width');\n };\n\n /**\n * Refresh all of container's internal dimensions and offsets.\n *\n * @private\n * @memberof Grid.prototype\n */\n Grid.prototype._refreshDimensions = function() {\n this._updateBoundingRect();\n this._updateBorders(1, 1, 1, 1);\n };\n\n /**\n * Show or hide Grid instance's items.\n *\n * @private\n * @memberof Grid.prototype\n * @param {GridMultiItemQuery} items\n * @param {Boolean} toVisible\n * @param {Object} [options]\n * @param {Boolean} [options.instant=false]\n * @param {(ShowCallback|HideCallback)} [options.onFinish]\n * @param {(Boolean|LayoutCallback|String)} [options.layout=true]\n */\n Grid.prototype._setItemsVisibility = function(items, toVisible, options) {\n var grid = this;\n var targetItems = this.getItems(items);\n var opts = options || 0;\n var isInstant = opts.instant === true;\n var callback = opts.onFinish;\n var layout = opts.layout ? opts.layout : opts.layout === undefined;\n var counter = targetItems.length;\n var startEvent = toVisible ? eventShowStart : eventHideStart;\n var endEvent = toVisible ? eventShowEnd : eventHideEnd;\n var method = toVisible ? 'show' : 'hide';\n var needsLayout = false;\n var completedItems = [];\n var hiddenItems = [];\n var item;\n var i;\n\n // If there are no items call the callback, but don't emit any events.\n if (!counter) {\n if (isFunction(callback)) callback(targetItems);\n return;\n }\n\n // Emit showStart/hideStart event.\n if (this._hasListeners(startEvent)) {\n this._emit(startEvent, targetItems.slice(0));\n }\n\n // Show/hide items.\n for (i = 0; i < targetItems.length; i++) {\n item = targetItems[i];\n\n // If inactive item is shown or active item is hidden we need to do\n // layout.\n if ((toVisible && !item._isActive) || (!toVisible && item._isActive)) {\n needsLayout = true;\n }\n\n // If inactive item is shown we also need to do a little hack to make the\n // item not animate it's next positioning (layout).\n if (toVisible && !item._isActive) {\n item._layout._skipNextAnimation = true;\n }\n\n // If a hidden item is being shown we need to refresh the item's\n // dimensions.\n if (toVisible && item._visibility._isHidden) {\n hiddenItems.push(item);\n }\n\n // Show/hide the item.\n item._visibility[method](isInstant, function(interrupted, item) {\n // If the current item's animation was not interrupted add it to the\n // completedItems array.\n if (!interrupted) completedItems.push(item);\n\n // If all items have finished their animations call the callback\n // and emit showEnd/hideEnd event.\n if (--counter < 1) {\n if (isFunction(callback)) callback(completedItems.slice(0));\n if (grid._hasListeners(endEvent)) grid._emit(endEvent, completedItems.slice(0));\n }\n });\n }\n\n // Refresh hidden items.\n if (hiddenItems.length) this.refreshItems(hiddenItems);\n\n // Layout if needed.\n if (needsLayout && layout) {\n this.layout(layout === instantLayout, isFunction(layout) ? layout : undefined);\n }\n };\n\n /**\n * Private helpers\n * ***************\n */\n\n /**\n * Merge default settings with user settings. The returned object is a new\n * object with merged values. The merging is a deep merge meaning that all\n * objects and arrays within the provided settings objects will be also merged\n * so that modifying the values of the settings object will have no effect on\n * the returned object.\n *\n * @param {Object} defaultSettings\n * @param {Object} [userSettings]\n * @returns {Object} Returns a new object.\n */\n function mergeSettings(defaultSettings, userSettings) {\n // Create a fresh copy of default settings.\n var ret = mergeObjects({}, defaultSettings);\n\n // Merge user settings to default settings.\n if (userSettings) {\n ret = mergeObjects(ret, userSettings);\n }\n\n // Handle visible/hidden styles manually so that the whole object is\n // overridden instead of the props.\n ret.visibleStyles = (userSettings || 0).visibleStyles || (defaultSettings || 0).visibleStyles;\n ret.hiddenStyles = (userSettings || 0).hiddenStyles || (defaultSettings || 0).hiddenStyles;\n\n return ret;\n }\n\n /**\n * Merge two objects recursively (deep merge). The source object's properties\n * are merged to the target object.\n *\n * @param {Object} target\n * - The target object.\n * @param {Object} source\n * - The source object.\n * @returns {Object} Returns the target object.\n */\n function mergeObjects(target, source) {\n var sourceKeys = Object.keys(source);\n var length = sourceKeys.length;\n var isSourceObject;\n var propName;\n var i;\n\n for (i = 0; i < length; i++) {\n propName = sourceKeys[i];\n isSourceObject = isPlainObject(source[propName]);\n\n // If target and source values are both objects, merge the objects and\n // assign the merged value to the target property.\n if (isPlainObject(target[propName]) && isSourceObject) {\n target[propName] = mergeObjects(mergeObjects({}, target[propName]), source[propName]);\n continue;\n }\n\n // If source's value is object and target's is not let's clone the object as\n // the target's value.\n if (isSourceObject) {\n target[propName] = mergeObjects({}, source[propName]);\n continue;\n }\n\n // If source's value is an array let's clone the array as the target's\n // value.\n if (Array.isArray(source[propName])) {\n target[propName] = source[propName].slice(0);\n continue;\n }\n\n // In all other cases let's just directly assign the source's value as the\n // target's value.\n target[propName] = source[propName];\n }\n\n return target;\n }\n\n return Grid;\n\n}));\n","import { Question, ItemValue } from \"survey-core\";\nimport { VisualizerBase } from \"./visualizerBase\";\nimport { localization } from \"./localizationManager\";\nimport { DocumentHelper } from \"./utils/index\";\nimport { VisualizationManager } from \"./visualizationManager\";\nimport { IVisualizerWithSelection } from \"./selectBase\";\nimport { Event } from \"survey-core\";\n\nexport class AlternativeVisualizersWrapper\n extends VisualizerBase\n implements IVisualizerWithSelection {\n\n private visualizerSelector: HTMLDivElement;\n\n private updateVisualizerSelector() {\n if (!!this.visualizerSelector) {\n this.visualizerSelector.getElementsByTagName(\n \"select\"\n )[0].value = this.visualizer.type;\n }\n }\n\n constructor(\n private visualizers: Array<VisualizerBase>,\n question: Question,\n data: Array<{ [index: string]: any }>,\n options?: Object\n ) {\n super(question, data, options, \"alternative\");\n this.showToolbar = false;\n this.loadingData = false;\n if (!visualizers || visualizers.length < 2) {\n throw new Error(\n \"VisualizerArrayWrapper works with visualizers collection only.\"\n );\n }\n this.visualizers.forEach((visualizer) => {\n visualizer.onUpdate = () => this.invokeOnUpdate();\n visualizer.onGetToolbarItemCreators = () => this.toolbarItemCreators;\n if (visualizer.supportSelection) {\n this._supportSelection = true;\n this.visualizersWithSelection.push(\n <IVisualizerWithSelection>(<any>visualizer)\n );\n }\n });\n\n if(this.options.allowChangeVisualizerType !== false) {\n this.registerToolbarItem(\"changeVisualizer\", () =>\n this.visualizerSelector = DocumentHelper.createSelector(\n this.visualizers.map((visualizer) => {\n return {\n value: visualizer.type,\n text: localization.getString(\"visualizer_\" + visualizer.type),\n };\n }),\n (option: any) => this.visualizer.type === option.value,\n (e: any) => this.setVisualizer(e.target.value)\n ), 0\n );\n }\n\n this.visualizer = visualizers[0];\n this.visualizer.onAfterRender.add(this.onAfterVisualizerRenderCallback);\n this.visualizer.onStateChanged.add(this.onVisualizerStateChangedCallback);\n }\n\n protected visualizerContainer: HTMLElement;\n public get hasFooter(): boolean {\n return false;\n }\n\n public getVisualizers() {\n return this.visualizers;\n }\n\n private visualizersWithSelection: Array<IVisualizerWithSelection> = [];\n private selectedItem: ItemValue;\n private visualizer: VisualizerBase;\n\n private onAfterVisualizerRenderCallback = () => {\n this.afterRender(this.contentContainer);\n };\n private onVisualizerStateChangedCallback = (s, options) => {\n this.stateChanged(\"visualizer\", options);\n };\n\n /**\n * The event is fired right after AlternativeVisualizersWrapper content type has been changed.\n **/\n public onVisualizerChanged: Event<\n (sender: AlternativeVisualizersWrapper, options: any) => any,\n AlternativeVisualizersWrapper,\n any\n > = new Event<(sender: AlternativeVisualizersWrapper, options: any) => any, AlternativeVisualizersWrapper, any>();\n\n /**\n * This method selects visualizer to show by it name.\n *\n * parameters:\n * name - the name of visualizer to show,\n * quiet - set it to true if you don't want to rise a notification event\n *\n **/\n public setVisualizer(type: string, quiet = false): void {\n const visualizerCandidate = this.visualizers.filter((v) => v.type === type)[0];\n if (!!visualizerCandidate && visualizerCandidate !== this.visualizer) {\n let isFooterCollapsed;\n if (!!this.visualizer) {\n isFooterCollapsed = this.visualizer.isFooterCollapsed;\n this.visualizer.onStateChanged.remove(this.onVisualizerStateChangedCallback);\n this.visualizer.onAfterRender.remove(this.onAfterVisualizerRenderCallback);\n this.visualizer.destroy();\n }\n this.visualizer = visualizerCandidate;\n this.visualizer.isFooterCollapsed = isFooterCollapsed;\n this.refresh();\n this.visualizer.onAfterRender.add(this.onAfterVisualizerRenderCallback);\n this.visualizer.onStateChanged.add(this.onVisualizerStateChangedCallback);\n if (!quiet) {\n this.onVisualizerChanged.fire(this, { visualizer: this.visualizer });\n this.stateChanged(\"visualizer\", type);\n }\n this.updateVisualizerSelector();\n }\n }\n\n public getVisualizer(): VisualizerBase {\n return this.visualizer;\n }\n\n updateData(data: Array<{ [index: string]: any }>) {\n super.updateData(data);\n this.visualizers.forEach((visualizer) => {\n visualizer.updateData(data);\n });\n }\n\n public set onDataItemSelected(\n val: (selectedValue: any, selectedText: string) => void\n ) {\n this.visualizersWithSelection.forEach((visualizer) => {\n visualizer.onDataItemSelected = val;\n });\n }\n\n setSelection(item: ItemValue) {\n this.visualizersWithSelection.forEach((visualizer) => {\n visualizer.setSelection(item);\n });\n }\n\n get selection() {\n return (<any>this.visualizer).selection || this.selectedItem;\n }\n\n protected renderContent(container: HTMLElement): void {\n this.visualizerContainer = container;\n this.visualizer.render(this.visualizerContainer);\n }\n\n protected setBackgroundColorCore(color: string) {\n super.setBackgroundColorCore(color);\n this.visualizers.forEach(visualizer => visualizer.backgroundColor = color);\n }\n\n /**\n * Returns an object with properties that describe a current visualizer state. The properties are different for each individual visualizer.\n *\n * > This method is overriden in descendant classes.\n * @see setState\n * @see resetState\n */\n public getState(): any {\n const currentVisualizerState = this.visualizer.getState();\n const state: any = {\n visualizer: this.visualizer.type,\n };\n if(Object.keys(currentVisualizerState).length > 0) {\n state.state = currentVisualizerState;\n }\n return state;\n }\n /**\n * Sets the visualizer's state.\n *\n * @see getState\n * @see resetState\n */\n public setState(state: any): void {\n if(!!state.visualizer) {\n this.setVisualizer(state.visualizer, true);\n }\n if(!!state.state) {\n this.visualizer.setState(state.state);\n }\n }\n /**\n * Resets the visualizer's state.\n *\n * @see getState\n * @see setState\n */\n public resetState(): void {\n super.resetState();\n this.visualizers.forEach(visualizer => visualizer.resetState());\n this.setVisualizer(this.visualizers[0].type, true);\n }\n\n getValues(): Array<any> {\n return this.visualizer.getValues();\n }\n\n getLabels(): Array<string> {\n return this.visualizer.getLabels();\n }\n\n public getCalculatedValues(): Promise<Array<Object>> {\n return this.visualizer.getCalculatedValues();\n }\n\n destroy() {\n this.visualizers.forEach((visualizer) => {\n visualizer.onAfterRender.remove(this.onAfterVisualizerRenderCallback);\n visualizer.onStateChanged.remove(this.onVisualizerStateChangedCallback);\n visualizer.onUpdate = undefined;\n });\n this.visualizer.destroy();\n super.destroy();\n }\n}\n\nVisualizationManager.registerAltVisualizerSelector(\n AlternativeVisualizersWrapper\n);\n","import { setupLocale } from \"../localizationManager\";\n\nexport var arabicStrings = {\n // \"Group By Me\"\n groupButton: \"زرار المجموعة\",\n // \"Ungroup By Me\"\n ungroupButton: \"تم التحديث من خلالى\",\n // \"Select Me\"\n selectButton: \"اختر\",\n // \"Hide column\"\n hideColumn: \"اخفاء العمود\",\n // \"Show column\"\n showColumn: \"اظهار\",\n // \"Make column private\"\n makePrivateColumn: \"أجعل العمود خاص\",\n // \"Make column public\"\n makePublicColumn: \"أجعل العمود عام\",\n // \"Move to Detail\"\n moveToDetail: \"انتقل إلى التفاصيل\",\n // \"Show as Column\"\n showAsColumn: \"إظهار كعمود\",\n // \"Search...\"\n filterPlaceholder: \"بحث...\",\n // \"Remove rows\"\n removeRows: \"حذف\",\n // \"Show\"\n showLabel: \"اظهار\",\n // \"entries\"\n entriesLabel: \"مدخلات\",\n // \"Texts in table\"\n visualizer_text: \"جداول\",\n // \"Wordcloud\"\n visualizer_wordcloud: \"كلمات\",\n // \"Histogram\"\n visualizer_histogram: \"الرسم البياني\",\n // \"Average\"\n visualizer_number: \"متوسط\",\n // \"Table\"\n visualizer_choices: \"جدول\",\n // \"Chart\"\n visualizer_selectBase: \"رسم بياني\",\n // [Auto-translated] \"Chart\"\n visualizer_matrix: \"جدول\",\n // [Auto-translated] \"Bar\"\n chartType_bar: \"بار\",\n // \"Vertical Bar\"\n chartType_vbar: \"شريط عمودي\",\n // \"Stacked Bar\"\n chartType_stackedbar: \"شريط مكدس\",\n // \"Doughnut\"\n chartType_doughnut: \"مخطط حلقي\",\n // \"Pie\"\n chartType_pie: \"مخطط دائري\",\n // \"Scatter\"\n chartType_scatter: \"مخطط التشتت\",\n // \"Gauge\"\n chartType_gauge: \"مخطط القياس\",\n // \"Bullet\"\n chartType_bullet: \"مخطط نقطي\",\n // [Auto-translated] \"Line\"\n chartType_line: \"سطر\",\n // [Auto-translated] \"Radar\"\n chartType_radar: \"رادار\",\n // \"Hide\"\n hideButton: \"اخفاء\",\n // \"Make private\"\n makePrivateButton: \"أجعل خاص\",\n // \"Make public\"\n makePublicButton: \"أجعل عام\",\n // \"Show\"\n showButton: \"اظهار\",\n // \"Filter\"\n filter: \"ترشح\",\n // \"Reset Filter\"\n resetFilter: \"إعادة تعيين\",\n // \"Change Locale\"\n changeLocale: \"تغيير اللغة\",\n // \"Clear\"\n clearButton: \"مسح\",\n // \"Choose question to show...\"\n addElement: \"اختر سؤالاً للعرض ...\",\n // \"Default Order\"\n defaultOrder: \"الترتيب الافتراضي\",\n // \"Ascending\"\n ascOrder: \"تصاعدى\",\n // \"Descending\"\n descOrder: \"تنازلى\",\n // \"Show minor columns\"\n showMinorColumns: \"إظهار الأعمدة الثانوية\",\n // [Auto-translated] \"Actions\"\n actionsColumn: \"الاجراءات\",\n // \"Other items and comments\"\n otherCommentTitle: \"بنود وتعليقات أخرى\",\n // \"Show percentages\"\n showPercentages: \"عرض النسب المئوية\",\n // \"Hide percentages\"\n hidePercentages: \"إخفاء النسب\",\n // \"PDF\"\n pdfDownloadCaption: \"PDF\",\n // \"Excel\"\n xlsxDownloadCaption: \"Excel\",\n // \"CSV\"\n csvDownloadCaption: \"CSV\",\n // \"Download plot as a PNG file\"\n saveDiagramAsPNG: \"تنزيل بصيغة png\",\n // \"Hide empty answers\"\n hideEmptyAnswers: \"إخفاء الإجابات الفارغة\",\n // \"Show empty answers\"\n showEmptyAnswers: \"إظهار الإجابات الفارغة\",\n // \"All answers\"\n \"topNValueText-1\": \"جميع الإجابات\",\n // \"Top 5 answers\"\n topNValueText5: \"أهم 5 إجابات\",\n // \"Top 10 answers\"\n topNValueText10: \"أفضل 10 إجابات\",\n // \"Top 20 answers\"\n topNValueText20: \"أفضل 20 إجابة\",\n // \"Hide missing answers\"\n hideMissingAnswers: \"إخفاء الإجابات المفقودة\",\n // \"Show missing answers\"\n showMissingAnswers: \"عرض الإجابات المفقودة\",\n // \"Missing answers\"\n missingAnswersLabel: \"أجوبة مفقودة\",\n // \"This question type is not visualized yet\"\n noVisualizerForQuestion: \"لم يتم العرض بعد\",\n // \"There are no results yet\"\n noResults: \"لا يوجد نتائج للعرض\",\n // \"Per Values\"\n showPerValues: \"لكل القيم\",\n // \"Per Columns\"\n showPerColumns: \"لكل الأعمدة\",\n // \"Answer\"\n answer: \"إجب\",\n // \"Correct answer: \"\n correctAnswer: \"الاجابة الصحيحة: \",\n // \"Percent\"\n percent: \"النسبه المئويه\",\n // [Auto-translated] \"Percentage\"\n percentage: \"النسبه المئويه\",\n // [Auto-translated] \"Chart\"\n statistics_chart: \"جدول\",\n // \"Responses\"\n responses: \"الاستجابات\",\n // [Auto-translated] \"NPS\"\n visualizer_nps: \"NPS\",\n // [Auto-translated] \"Chart\"\n visualizer_boolean: \"جدول\",\n // [Auto-translated] \"Table\"\n visualizer_options: \"جدول\",\n // [Auto-translated] \"NPS\"\n npsScore: \"NPS\",\n // [Auto-translated] \"Promoters\"\n npsPromoters: \"المروجين\",\n // [Auto-translated] \"Passives\"\n npsPassives: \"سلبيات\",\n // [Auto-translated] \"Detractors\"\n npsDetractors: \"المنتقدين\",\n // [Auto-translated] \"Category (X Axis):\"\n axisXSelectorTitle: \"الفئة (المحور X):\",\n // [Auto-translated] \"Legend (Series):\"\n axisYSelectorTitle: \"أسطورة (سلسلة):\",\n // [Auto-translated] \"Segments:\"\n axisXAlternativeSelectorTitle: \"قطاعات:\",\n // [Auto-translated] \"Groups:\"\n axisYAlternativeSelectorTitle: \"المجموعات:\",\n // [Auto-translated] \"Not selected\"\n notSelected: \"غير محدد\",\n // [Auto-translated] \"Default\"\n intervalMode_default: \"افتراضي\",\n // [Auto-translated] \"Decades\"\n intervalMode_decades: \"عقود\",\n // [Auto-translated] \"Years\"\n intervalMode_years: \"اعوام\",\n // [Auto-translated] \"Quarters\"\n intervalMode_quarters: \"ارباع\",\n // [Auto-translated] \"Months\"\n intervalMode_months: \"أشهر\",\n // [Auto-translated] \"Days\"\n intervalMode_days: \"أيام\",\n // [Auto-translated] \"Custom\"\n intervalMode_custom: \"تقليد\",\n // [Auto-translated] \"Auto\"\n intervalMode_auto: \"تلقائي\",\n // [Auto-translated] \"Intervals:\"\n intervalModeTitle: \"فترات:\",\n // [Auto-translated] \"Show individual values\"\n noRunningTotals: \"إظهار القيم الفردية\",\n // [Auto-translated] \"Show running totals\"\n runningTotals: \"إظهار الإجماليات الجارية\",\n // [Auto-translated] \"Compare periods\"\n groupDateSeries: \"مقارنة الفترات\",\n // [Auto-translated] \"View timeline\"\n ungroupDateSeries: \"عرض الجدول الزمني\",\n // [Auto-translated] \"None\"\n noneAggregateText: \"اي\",\n // [Auto-translated] \"Aggregate:\"\n selectAggregateText: \"تجميع:\",\n // [Auto-translated] \"Year ends with\"\n groupedYearsAxisTitle: \"ينتهي العام ب\"\n};\n\nsetupLocale({ localeCode: \"ar\", strings: arabicStrings, nativeName: \"العربية\" });","import { setupLocale } from \"../localizationManager\";\n\nexport var dutchStrings = {\n // \"Group By Me\"\n groupButton: \"Groeperen op\",\n // \"Ungroup By Me\"\n ungroupButton: \"Groepering verwijderen\",\n // \"Select Me\"\n selectButton: \"Selecteer mij\",\n // \"Hide column\"\n hideColumn: \"Kolom verbergen\",\n // \"Show column\"\n showColumn: \"Toon kolom\",\n // \"Make column private\"\n makePrivateColumn: \"Kolom privé maken\",\n // \"Make column public\"\n makePublicColumn: \"Maak kolom openbaar\",\n // \"Move to Detail\"\n moveToDetail: \"Ga naar detail\",\n // \"Show as Column\"\n showAsColumn: \"Weergeven als kolom\",\n // \"Search...\"\n filterPlaceholder: \"Zoeken...\",\n // \"Remove rows\"\n removeRows: \"Verwijder rijen\",\n // \"Show\"\n showLabel: \"Tonen\",\n // \"entries\"\n entriesLabel: \"inzendingen\",\n // \"Texts in table\"\n visualizer_text: \"Teksten in tabel\",\n // \"Wordcloud\"\n visualizer_wordcloud: \"Wordcloud\",\n // \"Histogram\"\n visualizer_histogram: \"Histogram\",\n // \"Average\"\n visualizer_number: \"Gemiddeld\",\n // \"Table\"\n visualizer_choices: \"Tabel\",\n // \"Chart\"\n visualizer_selectBase: \"Grafiek\",\n // [Auto-translated] \"Chart\"\n visualizer_matrix: \"Zeekaart\",\n // [Auto-translated] \"Bar\"\n chartType_bar: \"Bar\",\n // \"Vertical Bar\"\n chartType_vbar: \"Staafdiagram\",\n // \"Stacked Bar\"\n chartType_stackedbar: \"Staafdiagram (gestapeld)\",\n // \"Doughnut\"\n chartType_doughnut: \"Donut\",\n // \"Pie\"\n chartType_pie: \"Cirkeldiagram\",\n // \"Scatter\"\n chartType_scatter: \"Spreidingsdiagram\",\n // \"Gauge\"\n chartType_gauge: \"Meterdiagram\",\n // \"Bullet\"\n chartType_bullet: \"Kogelgrafiek\",\n // [Auto-translated] \"Line\"\n chartType_line: \"Lijn\",\n // [Auto-translated] \"Radar\"\n chartType_radar: \"Radar\",\n // \"Hide\"\n hideButton: \"Verbergen\",\n // \"Make private\"\n makePrivateButton: \"Maak prive\",\n // \"Make public\"\n makePublicButton: \"Openbaar maken\",\n // \"Show\"\n showButton: \"Tonen\",\n // \"Filter\"\n filter: \"Filter\",\n // \"Reset Filter\"\n resetFilter: \"Filter resetten\",\n // \"Change Locale\"\n changeLocale: \"Wijzig de landinstelling\",\n // \"Clear\"\n clearButton: \"Wissen\",\n // \"Choose question to show...\"\n addElement: \"Kies een vraag om weer te geven ...\",\n // \"Default Order\"\n defaultOrder: \"Standaardvolgorde\",\n // \"Ascending\"\n ascOrder: \"Oplopend\",\n // \"Descending\"\n descOrder: \"Aflopend\",\n // \"Show minor columns\"\n showMinorColumns: \"Toon kleine kolommen\",\n // [Auto-translated] \"Actions\"\n actionsColumn: \"Acties\",\n // \"Other items and comments\"\n otherCommentTitle: \"Andere items en opmerkingen\",\n // \"Show percentages\"\n showPercentages: \"Percentages weergeven\",\n // \"Hide percentages\"\n hidePercentages: \"Verberg percentages\",\n // \"PDF\"\n pdfDownloadCaption: \"PDF\",\n // \"Excel\"\n xlsxDownloadCaption: \"Excel\",\n // \"CSV\"\n csvDownloadCaption: \"CSV\",\n // \"Download plot as a PNG file\"\n saveDiagramAsPNG: \"Download plot als PNG\",\n // \"Hide empty answers\"\n hideEmptyAnswers: \"Verberg lege antwoorden\",\n // \"Show empty answers\"\n showEmptyAnswers: \"Toon lege antwoorden\",\n // \"All answers\"\n \"topNValueText-1\": \"Alle antwoorden\",\n // \"Top 5 answers\"\n topNValueText5: \"Top 5 antwoorden\",\n // \"Top 10 answers\"\n topNValueText10: \"Top 10 antwoorden\",\n // \"Top 20 answers\"\n topNValueText20: \"Top 20 antwoorden\",\n // \"Hide missing answers\"\n hideMissingAnswers: \"Ontbrekende antwoorden verbergen\",\n // \"Show missing answers\"\n showMissingAnswers: \"Ontbrekende antwoorden weergeven\",\n // \"Missing answers\"\n missingAnswersLabel: \"Ontbrekende antwoorden\",\n // \"This question type is not visualized yet\"\n noVisualizerForQuestion: \"Dit vraagtype is nog niet gevisualiseerd\",\n // \"There are no results yet\"\n noResults: \"Er zijn nog geen resultaten\",\n // \"Per Values\"\n showPerValues: \"Per waarden\",\n // \"Per Columns\"\n showPerColumns: \"Per Kolommen\",\n // \"Answer\"\n answer: \"Antwoorden\",\n // \"Correct answer: \"\n correctAnswer: \"Goed antwoord: \",\n // \"Percent\"\n percent: \"Procent\",\n // [Auto-translated] \"Percentage\"\n percentage: \"Percentage\",\n // [Auto-translated] \"Chart\"\n statistics_chart: \"Zeekaart\",\n // \"Responses\"\n responses: \"Reacties\",\n // [Auto-translated] \"NPS\"\n visualizer_nps: \"NPS\",\n // [Auto-translated] \"Chart\"\n visualizer_boolean: \"Zeekaart\",\n // [Auto-translated] \"Table\"\n visualizer_options: \"Tafel\",\n // [Auto-translated] \"NPS\"\n npsScore: \"NPS\",\n // [Auto-translated] \"Promoters\"\n npsPromoters: \"Initiatiefnemers\",\n // [Auto-translated] \"Passives\"\n npsPassives: \"Passief personeel\",\n // [Auto-translated] \"Detractors\"\n npsDetractors: \"Tegenstanders\",\n // [Auto-translated] \"Category (X Axis):\"\n axisXSelectorTitle: \"Categorie (X-as):\",\n // [Auto-translated] \"Legend (Series):\"\n axisYSelectorTitle: \"Legende (serie):\",\n // [Auto-translated] \"Segments:\"\n axisXAlternativeSelectorTitle: \"Segmenten:\",\n // [Auto-translated] \"Groups:\"\n axisYAlternativeSelectorTitle: \"Groepen:\",\n // [Auto-translated] \"Not selected\"\n notSelected: \"Niet geselecteerd\",\n // [Auto-translated] \"Default\"\n intervalMode_default: \"Verstek\",\n // [Auto-translated] \"Decades\"\n intervalMode_decades: \"Decennia\",\n // [Auto-translated] \"Years\"\n intervalMode_years: \"Jaren\",\n // [Auto-translated] \"Quarters\"\n intervalMode_quarters: \"Vertrekken\",\n // [Auto-translated] \"Months\"\n intervalMode_months: \"Maanden\",\n // [Auto-translated] \"Days\"\n intervalMode_days: \"Dagen\",\n // [Auto-translated] \"Custom\"\n intervalMode_custom: \"Gewoonte\",\n // [Auto-translated] \"Auto\"\n intervalMode_auto: \"Auto\",\n // [Auto-translated] \"Intervals:\"\n intervalModeTitle: \"Intervallen:\",\n // [Auto-translated] \"Show individual values\"\n noRunningTotals: \"Toon individuele waarden\",\n // [Auto-translated] \"Show running totals\"\n runningTotals: \"Toon lopende totalen\",\n // [Auto-translated] \"Compare periods\"\n groupDateSeries: \"Vergelijk periodes\",\n // [Auto-translated] \"View timeline\"\n ungroupDateSeries: \"Tijdlijn bekijken\",\n // [Auto-translated] \"None\"\n noneAggregateText: \"Geen\",\n // [Auto-translated] \"Aggregate:\"\n selectAggregateText: \"Aggregaat:\",\n // [Auto-translated] \"Year ends with\"\n groupedYearsAxisTitle: \"Het jaar eindigt met\"\n};\n\nsetupLocale({ localeCode: \"nl\", strings: dutchStrings, nativeName: \"Nederlands\" });","// Uncomment the line below if you create a custom dictionary\n// import { setupLocale } from \"../localizationManager\";\n\nexport var englishStrings = {\n groupButton: \"Group By Me\",\n ungroupButton: \"Ungroup By Me\",\n selectButton: \"Select Me\",\n hideColumn: \"Hide column\",\n showColumn: \"Show column\",\n makePrivateColumn: \"Make column private\",\n makePublicColumn: \"Make column public\",\n moveToDetail: \"Move to Detail\",\n showAsColumn: \"Show as Column\",\n filterPlaceholder: \"Search...\",\n removeRows: \"Remove rows\",\n showLabel: \"Show\",\n entriesLabel: \"entries\",\n visualizer_text: \"Texts in table\",\n visualizer_wordcloud: \"Wordcloud\",\n visualizer_histogram: \"Histogram\",\n visualizer_number: \"Average\",\n visualizer_choices: \"Table\",\n visualizer_selectBase: \"Chart\",\n visualizer_matrix: \"Chart\",\n chartType_bar: \"Bar\",\n chartType_vbar: \"Vertical Bar\",\n chartType_stackedbar: \"Stacked Bar\",\n chartType_doughnut: \"Doughnut\",\n chartType_pie: \"Pie\",\n chartType_scatter: \"Scatter\",\n chartType_gauge: \"Gauge\",\n chartType_bullet: \"Bullet\",\n chartType_line: \"Line\",\n chartType_radar: \"Radar\",\n hideButton: \"Hide\",\n makePrivateButton: \"Make private\",\n makePublicButton: \"Make public\",\n showButton: \"Show\",\n filter: \"Filter\",\n resetFilter: \"Reset Filter\",\n changeLocale: \"Change Locale\",\n clearButton: \"Clear\",\n addElement: \"Choose question to show...\",\n defaultOrder: \"Default Order\",\n ascOrder: \"Ascending\",\n descOrder: \"Descending\",\n showMinorColumns: \"Show minor columns\",\n actionsColumn: \"Actions\",\n otherCommentTitle: \"Other items and comments\",\n showPercentages: \"Show percentages\",\n hidePercentages: \"Hide percentages\",\n pdfDownloadCaption: \"PDF\",\n xlsxDownloadCaption: \"Excel\",\n csvDownloadCaption: \"CSV\",\n saveDiagramAsPNG: \"Download plot as a PNG file\",\n hideEmptyAnswers: \"Hide empty answers\",\n showEmptyAnswers: \"Show empty answers\",\n \"topNValueText-1\": \"All answers\",\n \"topNValueText5\": \"Top 5 answers\",\n \"topNValueText10\": \"Top 10 answers\",\n \"topNValueText20\": \"Top 20 answers\",\n hideMissingAnswers: \"Hide missing answers\",\n showMissingAnswers: \"Show missing answers\",\n missingAnswersLabel: \"Missing answers\",\n noVisualizerForQuestion: \"This question type is not visualized yet\",\n noResults: \"There are no results yet\",\n showPerValues: \"Per Values\",\n showPerColumns: \"Per Columns\",\n answer: \"Answer\",\n correctAnswer: \"Correct answer: \",\n percent: \"Percent\",\n percentage: \"Percentage\",\n statistics_chart: \"Chart\",\n responses: \"Responses\",\n visualizer_nps: \"NPS\",\n visualizer_boolean: \"Chart\",\n visualizer_options: \"Table\",\n npsScore: \"NPS\",\n npsPromoters: \"Promoters\",\n npsPassives: \"Passives\",\n npsDetractors: \"Detractors\",\n axisXSelectorTitle: \"Category (X Axis):\",\n axisYSelectorTitle: \"Legend (Series):\",\n axisXAlternativeSelectorTitle: \"Segments:\",\n axisYAlternativeSelectorTitle: \"Groups:\",\n notSelected: \"Not selected\",\n intervalMode_default: \"Default\",\n intervalMode_decades: \"Decades\",\n intervalMode_years: \"Years\",\n intervalMode_quarters: \"Quarters\",\n intervalMode_months: \"Months\",\n intervalMode_days: \"Days\",\n intervalMode_custom: \"Custom\",\n intervalMode_auto: \"Auto\",\n intervalModeTitle: \"Intervals:\",\n noRunningTotals: \"Show individual values\",\n runningTotals: \"Show running totals\",\n groupDateSeries: \"Compare periods\",\n ungroupDateSeries: \"View timeline\",\n noneAggregateText: \"None\",\n selectAggregateText: \"Aggregate:\",\n groupedYearsAxisTitle: \"Year ends with\",\n license: \"To use the Dashboard library in your application, a <a href='https://surveyjs.io/licensing' target='_blank'>developer license</a> is required. If you have an active license, please <a href='https://surveyjs.io/remove-alert-banner' target='_blank'>set up your license key</a> and ensure you're using the <a href='https://surveyjs.io/stay-updated/release-notes' target='_blank'>latest version</a>.\",\n license2: \"This banner appears because your maintenance subscription for the Dashboard library expired on {date}. You may continue using <a href='https://surveyjs.io/stay-updated/release-notes' target='_blank'>all versions released up to that date</a>. To remove this banner in the latest version, please <a href='https://surveyjs.io/manage#license-manager' target='_blank'>renew your subscription</a> and <a href='https://surveyjs.io/remove-alert-banner' target='_blank'>set up a new license key</a>.\"\n};\n\n// Uncomment the line below if you create a custom dictionary.\n// Replace \"en\" with a custom locale code (for example, \"fr\" or \"de\"),\n// Replace `englishStrings` with the name of the variable that contains the custom dictionary.\n// setupLocale({ localeCode: \"en\", strings: englishStrings });\n","import { setupLocale } from \"../localizationManager\";\n\nexport var farsiStrings = {\n // \"Group By Me\"\n groupButton: \"گروه بندی با\",\n // \"Ungroup By Me\"\n ungroupButton: \"حذف گروه\",\n // \"Select Me\"\n selectButton: \"انتخاب\",\n // \"Hide column\"\n hideColumn: \"مخفی کردن ستون\",\n // \"Show column\"\n showColumn: \"نمایش ستون\",\n // \"Make column private\"\n makePrivateColumn: \"خصوصی کردن ستون\",\n // \"Make column public\"\n makePublicColumn: \"عمومی کردن ستون\",\n // \"Move to Detail\"\n moveToDetail: \"انتقال به جزئیات\",\n // \"Show as Column\"\n showAsColumn: \"نمایش به عنوان ستون\",\n // \"Search...\"\n filterPlaceholder: \"جستجو...\",\n // \"Remove rows\"\n removeRows: \"حذف سطرها\",\n // \"Show\"\n showLabel: \"نمایش\",\n // \"entries\"\n entriesLabel: \"ورودی\",\n // \"Texts in table\"\n visualizer_text: \"متون در جدول\",\n // \"Wordcloud\"\n visualizer_wordcloud: \"ابر کلمات\",\n // \"Histogram\"\n visualizer_histogram: \"هیستوگرام\",\n // \"Average\"\n visualizer_number: \"متوسط\",\n // \"Table\"\n visualizer_choices: \"جدول\",\n // \"Chart\"\n visualizer_selectBase: \"نمودار\",\n // [Auto-translated] \"Chart\"\n visualizer_matrix: \"نمودار\",\n // [Auto-translated] \"Bar\"\n chartType_bar: \"نوار\",\n // \"Vertical Bar\"\n chartType_vbar: \"نوار عمودی\",\n // \"Stacked Bar\"\n chartType_stackedbar: \"نوار پشته\",\n // \"Doughnut\"\n chartType_doughnut: \"دونات\",\n // \"Pie\"\n chartType_pie: \"دابره ای(pie)\",\n // \"Scatter\"\n chartType_scatter: \"پراکندگی(Scatter)\",\n // \"Gauge\"\n chartType_gauge: \"عقربه ای\",\n // \"Bullet\"\n chartType_bullet: \"Bullet\",\n // [Auto-translated] \"Line\"\n chartType_line: \"خط\",\n // [Auto-translated] \"Radar\"\n chartType_radar: \"رادار\",\n // \"Hide\"\n hideButton: \"مخفی\",\n // \"Make private\"\n makePrivateButton: \"خصوصی کردن\",\n // \"Make public\"\n makePublicButton: \"عمومی کردن\",\n // \"Show\"\n showButton: \"نمایش\",\n // \"Filter\"\n filter: \"فیلتر\",\n // \"Reset Filter\"\n resetFilter: \"بازنشانی فیلترها\",\n // \"Change Locale\"\n changeLocale: \"تغییر محلی\",\n // \"Clear\"\n clearButton: \"پاک کردن\",\n // \"Choose question to show...\"\n addElement: \"انتخاب سوال برای نمایش...\",\n // \"Default Order\"\n defaultOrder: \"ترتیب پیشفرض\",\n // \"Ascending\"\n ascOrder: \"صعودی\",\n // \"Descending\"\n descOrder: \"نزولی\",\n // \"Show minor columns\"\n showMinorColumns: \"نمایش ستونهای فرعی\",\n // [Auto-translated] \"Actions\"\n actionsColumn: \"اقدامات\",\n // \"Other items and comments\"\n otherCommentTitle: \"سایر موارد و نظرات\",\n // \"Show percentages\"\n showPercentages: \"نمایش درصد\",\n // \"Hide percentages\"\n hidePercentages: \"درصدهای مخفی\",\n // \"PDF\"\n pdfDownloadCaption: \"پی دی اف\",\n // \"Excel\"\n xlsxDownloadCaption: \"اکسل\",\n // \"CSV\"\n csvDownloadCaption: \"Csv\",\n // \"Download plot as a PNG file\"\n saveDiagramAsPNG: \"دانلود طرح به عنوان یک فایل PNG\",\n // \"Hide empty answers\"\n hideEmptyAnswers: \"مخفی کردن پاسخهای خالی\",\n // \"Show empty answers\"\n showEmptyAnswers: \"نمایش پاسخهای خالی\",\n // \"All answers\"\n \"topNValueText-1\": \"همه پاسخ ها\",\n // \"Top 5 answers\"\n topNValueText5: \"5 پاسخ برتر\",\n // \"Top 10 answers\"\n topNValueText10: \"10 پاسخ برتر\",\n // \"Top 20 answers\"\n topNValueText20: \"20 پاسخ برتر\",\n // \"Hide missing answers\"\n hideMissingAnswers: \"مخفی کردن پاسخهای گمشده\",\n // \"Show missing answers\"\n showMissingAnswers: \"نمایش پاسخهای گمشده\",\n // \"Missing answers\"\n missingAnswersLabel: \"پاسخ های گمشده\",\n // \"This question type is not visualized yet\"\n noVisualizerForQuestion: \"این نوع سوال هنوز تجسم نشده است\",\n // \"There are no results yet\"\n noResults: \"هنوز نتیجه ای حاصل نشده است\",\n // \"Per Values\"\n showPerValues: \"به ازای هر ارزش\",\n // \"Per Columns\"\n showPerColumns: \"در هر ستون\",\n // \"Answer\"\n answer: \"پاسخ\",\n // \"Correct answer: \"\n correctAnswer: \"پاسخ صحیح: \",\n // \"Percent\"\n percent: \"درصد\",\n // [Auto-translated] \"Percentage\"\n percentage: \"درصد\",\n // [Auto-translated] \"Chart\"\n statistics_chart: \"نمودار\",\n // \"Responses\"\n responses: \"پاسخ\",\n // [Auto-translated] \"NPS\"\n visualizer_nps: \"NPS\",\n // [Auto-translated] \"Chart\"\n visualizer_boolean: \"نمودار\",\n // [Auto-translated] \"Table\"\n visualizer_options: \"جدول\",\n // [Auto-translated] \"NPS\"\n npsScore: \"NPS\",\n // [Auto-translated] \"Promoters\"\n npsPromoters: \"مروج\",\n // [Auto-translated] \"Passives\"\n npsPassives: \"منفعل ها\",\n // [Auto-translated] \"Detractors\"\n npsDetractors: \"بدهیدان\",\n // [Auto-translated] \"Category (X Axis):\"\n axisXSelectorTitle: \"دسته (محور X):\",\n // [Auto-translated] \"Legend (Series):\"\n axisYSelectorTitle: \"افسانه (سری):\",\n // [Auto-translated] \"Segments:\"\n axisXAlternativeSelectorTitle: \"بخش:\",\n // [Auto-translated] \"Groups:\"\n axisYAlternativeSelectorTitle: \"گروه:\",\n // [Auto-translated] \"Not selected\"\n notSelected: \"انتخاب نشده است\",\n // [Auto-translated] \"Default\"\n intervalMode_default: \"پیش فرض\",\n // [Auto-translated] \"Decades\"\n intervalMode_decades: \"دهه\",\n // [Auto-translated] \"Years\"\n intervalMode_years: \"سال\",\n // [Auto-translated] \"Quarters\"\n intervalMode_quarters: \"چهارم\",\n // [Auto-translated] \"Months\"\n intervalMode_months: \"ماهها\",\n // [Auto-translated] \"Days\"\n intervalMode_days: \"روزها\",\n // [Auto-translated] \"Custom\"\n intervalMode_custom: \"سفارشی\",\n // [Auto-translated] \"Auto\"\n intervalMode_auto: \"خودکار\",\n // [Auto-translated] \"Intervals:\"\n intervalModeTitle: \"فواصل:\",\n // [Auto-translated] \"Show individual values\"\n noRunningTotals: \"نمایش ارزش های فردی\",\n // [Auto-translated] \"Show running totals\"\n runningTotals: \"نمایش مجموع در حال اجرا\",\n // [Auto-translated] \"Compare periods\"\n groupDateSeries: \"دوره ها را مقایسه کنید\",\n // [Auto-translated] \"View timeline\"\n ungroupDateSeries: \"مشاهده جدول زمانی\",\n // [Auto-translated] \"None\"\n noneAggregateText: \"هیچ کدام\",\n // [Auto-translated] \"Aggregate:\"\n selectAggregateText: \"مجموع:\",\n // [Auto-translated] \"Year ends with\"\n groupedYearsAxisTitle: \"سال به پایان می رسد با\"\n};\n\nsetupLocale({ localeCode: \"fa\", strings: farsiStrings, nativeName: \"فارسی\" });\n","import { setupLocale } from \"../localizationManager\";\n\nexport var finnishStrings = {\n // \"Group By Me\"\n groupButton: \"Erottele minulla\",\n // \"Ungroup By Me\"\n ungroupButton: \"Poista erottele minulla\",\n // \"Select Me\"\n selectButton: \"Valitse minut\",\n // \"Hide column\"\n hideColumn: \"Piilota sarake\",\n // \"Show column\"\n showColumn: \"Näytä sarake\",\n // \"Make column private\"\n makePrivateColumn: \"Merkitse sarake yksityiseksi\",\n // \"Make column public\"\n makePublicColumn: \"Merkitse sarake julkiseksi\",\n // \"Move to Detail\"\n moveToDetail: \"Siirrä yksityiskohtiin\",\n // \"Show as Column\"\n showAsColumn: \"Näytä sarakkeena\",\n // \"Search...\"\n filterPlaceholder: \"Etsi...\",\n // \"Remove rows\"\n removeRows: \"Poista rivejä\",\n // \"Show\"\n showLabel: \"Näytä\",\n // \"entries\"\n entriesLabel: \"vastauksia\",\n // \"Texts in table\"\n visualizer_text: \"Tekstitaulukko\",\n // \"Wordcloud\"\n visualizer_wordcloud: \"Sanapilvi\",\n // \"Histogram\"\n visualizer_histogram: \"Histogrammi\",\n // \"Average\"\n visualizer_number: \"Keskiarvo\",\n // \"Table\"\n visualizer_choices: \"Taulukko\",\n // \"Chart\"\n visualizer_selectBase: \"Kuvaaja\",\n // \"Chart\"\n visualizer_matrix: \"Kuvaaja\",\n // \"Bar\"\n chartType_bar: \"Pylväs\",\n // \"Vertical Bar\"\n chartType_vbar: \"Vaakapyöväs\",\n // \"Stacked Bar\"\n chartType_stackedbar: \"Pinottu pylväs\",\n // \"Doughnut\"\n chartType_doughnut: \"Donitsi\",\n // \"Pie\"\n chartType_pie: \"Piirakka\",\n // \"Scatter\"\n chartType_scatter: \"Hajonta\",\n // \"Gauge\"\n chartType_gauge: \"Mittari\",\n // \"Bullet\"\n chartType_bullet: \"Luoti\",\n // \"Line\"\n chartType_line: \"Viiva\",\n // [Auto-translated] \"Radar\"\n chartType_radar: \"Tutka\",\n // \"Hide\"\n hideButton: \"Piilota\",\n // \"Make private\"\n makePrivateButton: \"Merkise yksityiseksi\",\n // \"Make public\"\n makePublicButton: \"Merkitse julkiseksi\",\n // \"Show\"\n showButton: \"Näytä\",\n // \"Filter\"\n filter: \"Rajaa\",\n // \"Reset Filter\"\n resetFilter: \"Nollaa Rajaus\",\n // \"Change Locale\"\n changeLocale: \"Vaihda kieli\",\n // \"Clear\"\n clearButton: \"Nollaa\",\n // \"Choose question to show...\"\n addElement: \"Valitse näytettävä kysymys...\",\n // \"Default Order\"\n defaultOrder: \"Oletusjärjestys\",\n // \"Ascending\"\n ascOrder: \"Nouseva\",\n // \"Descending\"\n descOrder: \"Laskeva\",\n // \"Show minor columns\"\n showMinorColumns: \"Näytä alasarakkeet\",\n // [Auto-translated] \"Actions\"\n actionsColumn: \"Toimet\",\n // \"Other items and comments\"\n otherCommentTitle: \"Muut asiat ja kommentit\",\n // \"Show percentages\"\n showPercentages: \"Näytä prosentit\",\n // \"Hide percentages\"\n hidePercentages: \"Piilota prosentit\",\n // \"PDF\"\n pdfDownloadCaption: \"PDF\",\n // \"Excel\"\n xlsxDownloadCaption: \"Excel\",\n // \"CSV\"\n csvDownloadCaption: \"CSV\",\n // \"Download plot as a PNG file\"\n saveDiagramAsPNG: \"Lataa kuvaaja PNG kuvana\",\n // \"Hide empty answers\"\n hideEmptyAnswers: \"Piilota tyhjät vastaukset\",\n // \"Show empty answers\"\n showEmptyAnswers: \"Näytä tyhjät vastaukset\",\n // \"All answers\"\n \"topNValueText-1\": \"Kaikki vastaukset\",\n // \"Top 5 answers\"\n topNValueText5: \"Top 5 vastaukset\",\n // \"Top 10 answers\"\n topNValueText10: \"Top 10 vastaukset\",\n // \"Top 20 answers\"\n topNValueText20: \"Top 20 vastaukset\",\n // \"Hide missing answers\"\n hideMissingAnswers: \"Piilota puuttuvat vastaukset\",\n // \"Show missing answers\"\n showMissingAnswers: \"Näytä puuttuvat vastaukset\",\n // \"Missing answers\"\n missingAnswersLabel: \"Puuttuvat vastaukset\",\n // \"This question type is not visualized yet\"\n noVisualizerForQuestion: \"Tätä kysymystyyppiä ei voida visualisoida.\",\n // \"There are no results yet\"\n noResults: \"Ei vielä tuloksia\",\n // \"Per Values\"\n showPerValues: \"Näytä arvottain\",\n // \"Per Columns\"\n showPerColumns: \"Näytä sarakkeittain\",\n // \"Answer\"\n answer: \"Vastaus\",\n // \"Correct answer: \"\n correctAnswer: \"Oikea vastaus: \",\n // \"Percent\"\n percent: \"Prosentti\",\n // \"Percentage\"\n percentage: \"Prosenttiyksikkö\",\n // \"Chart\"\n statistics_chart: \"Kuvaaja\",\n // \"Responses\"\n responses: \"Vastaukset\",\n // \"NPS\"\n visualizer_nps: \"NPS\",\n // [Auto-translated] \"Chart\"\n visualizer_boolean: \"Kaavio\",\n // [Auto-translated] \"Table\"\n visualizer_options: \"Pöytä\",\n // \"NPS\"\n npsScore: \"NPS\",\n // \"Promoters\"\n npsPromoters: \"Suosittelija\",\n // \"Passives\"\n npsPassives: \"Passiivinen\",\n // \"Detractors\"\n npsDetractors: \"Arvostelija\",\n // [Auto-translated] \"Category (X Axis):\"\n axisXSelectorTitle: \"Luokka (X-akseli):\",\n // [Auto-translated] \"Legend (Series):\"\n axisYSelectorTitle: \"Legenda (sarja):\",\n // [Auto-translated] \"Segments:\"\n axisXAlternativeSelectorTitle: \"Segmentit:\",\n // [Auto-translated] \"Groups:\"\n axisYAlternativeSelectorTitle: \"Ryhmät:\",\n // [Auto-translated] \"Not selected\"\n notSelected: \"Ei valittu\",\n // [Auto-translated] \"Default\"\n intervalMode_default: \"Laiminlyönti\",\n // [Auto-translated] \"Decades\"\n intervalMode_decades: \"Vuosikymmeniä\",\n // [Auto-translated] \"Years\"\n intervalMode_years: \"Vuosia\",\n // [Auto-translated] \"Quarters\"\n intervalMode_quarters: \"Neljäsosaa\",\n // [Auto-translated] \"Months\"\n intervalMode_months: \"Kuukautta\",\n // [Auto-translated] \"Days\"\n intervalMode_days: \"Päivää\",\n // [Auto-translated] \"Custom\"\n intervalMode_custom: \"Tapa\",\n // [Auto-translated] \"Auto\"\n intervalMode_auto: \"Auto\",\n // [Auto-translated] \"Intervals:\"\n intervalModeTitle: \"Välein:\",\n // [Auto-translated] \"Show individual values\"\n noRunningTotals: \"Näytä yksittäiset arvot\",\n // [Auto-translated] \"Show running totals\"\n runningTotals: \"Näytä juoksevat kokonaismäärät\",\n // [Auto-translated] \"Compare periods\"\n groupDateSeries: \"Vertaile kausia\",\n // [Auto-translated] \"View timeline\"\n ungroupDateSeries: \"Näytä aikajana\",\n // [Auto-translated] \"None\"\n noneAggregateText: \"Ei lainkaan\",\n // [Auto-translated] \"Aggregate:\"\n selectAggregateText: \"Aggregaatti:\",\n // [Auto-translated] \"Year ends with\"\n groupedYearsAxisTitle: \"Vuosi päättyy\"\n};\n\nsetupLocale({ localeCode: \"fi\", strings: finnishStrings, nativeName: \"Suomi\" });\n","import { setupLocale } from \"../localizationManager\";\n\nexport var frenchStrings = {\n // \"Group By Me\"\n groupButton: \"Grouper\",\n // \"Ungroup By Me\"\n ungroupButton: \"Dissocier\",\n // \"Select Me\"\n selectButton: \"Sélectionner\",\n // \"Hide column\"\n hideColumn: \"Masquer colonne\",\n // \"Show column\"\n showColumn: \"Afficher colonne\",\n // \"Make column private\"\n makePrivateColumn: \"Rendre la colonne privé\",\n // \"Make column public\"\n makePublicColumn: \"Rendre la colonne public\",\n // \"Move to Detail\"\n moveToDetail: \"Déplacer vers détails\",\n // \"Show as Column\"\n showAsColumn: \"Afficher en colonne\",\n // \"Search...\"\n filterPlaceholder: \"Rechercher...\",\n // \"Remove rows\"\n removeRows: \"Supprimer colonne\",\n // \"Show\"\n showLabel: \"Afficher\",\n // \"entries\"\n entriesLabel: \"entrées\",\n // \"Texts in table\"\n visualizer_text: \"Textes en table\",\n // \"Wordcloud\"\n visualizer_wordcloud: \"Nuages de mots\",\n // \"Histogram\"\n visualizer_histogram: \"Histogramme\",\n // \"Average\"\n visualizer_number: \"Moyenne\",\n // \"Table\"\n visualizer_choices: \"Table\",\n // \"Chart\"\n visualizer_selectBase: \"Graphique\",\n // [Auto-translated] \"Chart\"\n visualizer_matrix: \"Graphique\",\n // [Auto-translated] \"Bar\"\n chartType_bar: \"Bar\",\n // \"Vertical Bar\"\n chartType_vbar: \"Barre verticale\",\n // \"Stacked Bar\"\n chartType_stackedbar: \"Barres empilées\",\n // \"Doughnut\"\n chartType_doughnut: \"Anneau\",\n // \"Pie\"\n chartType_pie: \"Secteurs\",\n // \"Scatter\"\n chartType_scatter: \"Nuages de points\",\n // \"Gauge\"\n chartType_gauge: \"Gauge\",\n // \"Bullet\"\n chartType_bullet: \"Bulles\",\n // [Auto-translated] \"Line\"\n chartType_line: \"Ligne\",\n // [Auto-translated] \"Radar\"\n chartType_radar: \"Radar\",\n // \"Hide\"\n hideButton: \"Masquer\",\n // \"Make private\"\n makePrivateButton: \"Rendre privé\",\n // \"Make public\"\n makePublicButton: \"Rendre publique\",\n // \"Show\"\n showButton: \"Afficher\",\n // \"Filter\"\n filter: \"Filtre\",\n // \"Reset Filter\"\n resetFilter: \"Rafraichir Filtres\",\n // \"Change Locale\"\n changeLocale: \"Changer les paramètres régionaux\",\n // \"Clear\"\n clearButton: \"Rafraichir\",\n // \"Choose question to show...\"\n addElement: \"Choisir la question à afficher...\",\n // \"Default Order\"\n defaultOrder: \"Defaut\",\n // \"Ascending\"\n ascOrder: \"Ascendant\",\n // \"Descending\"\n descOrder: \"Descendant\",\n // \"Show minor columns\"\n showMinorColumns: \"Afficher les colonnes mineures\",\n // [Auto-translated] \"Actions\"\n actionsColumn: \"Actions\",\n // \"Other items and comments\"\n otherCommentTitle: \"Autre élément et commentaires\",\n // \"Show percentages\"\n showPercentages: \"Afficher les pourcentages\",\n // \"Hide percentages\"\n hidePercentages: \"Masquer les pourcentages\",\n // \"PDF\"\n pdfDownloadCaption: \"PDF\",\n // \"Excel\"\n xlsxDownloadCaption: \"Exceller\",\n // \"CSV\"\n csvDownloadCaption: \"Fichier CSV\",\n // \"Download plot as a PNG file\"\n saveDiagramAsPNG: \"Sauver en png\",\n // \"Hide empty answers\"\n hideEmptyAnswers: \"Masquer les réponses vides\",\n // \"Show empty answers\"\n showEmptyAnswers: \"Afficher les réponses vides\",\n // \"All answers\"\n \"topNValueText-1\": \"Toutes les réponses\",\n // \"Top 5 answers\"\n topNValueText5: \"Top 5 des réponses\",\n // \"Top 10 answers\"\n topNValueText10: \"Top 10 des réponses\",\n // \"Top 20 answers\"\n topNValueText20: \"Top 20 des réponses\",\n // \"Hide missing answers\"\n hideMissingAnswers: \"Masquer les réponses manquantes\",\n // \"Show missing answers\"\n showMissingAnswers: \"Afficher les réponses manquantes\",\n // \"Missing answers\"\n missingAnswersLabel: \"Réponses manquantes\",\n // \"This question type is not visualized yet\"\n noVisualizerForQuestion: \"Ce type de question n'est pas encore visualisé\",\n // \"There are no results yet\"\n noResults: \"Il n'y a pas encore de résultats\",\n // \"Per Values\"\n showPerValues: \"Par valeur\",\n // \"Per Columns\"\n showPerColumns: \"Par colonne\",\n // \"Answer\"\n answer: \"Réponse\",\n // \"Correct answer: \"\n correctAnswer: \"Réponse correcte: \",\n // \"Percent\"\n percent: \"Pourcentage\",\n // [Auto-translated] \"Percentage\"\n percentage: \"Pourcentage\",\n // [Auto-translated] \"Chart\"\n statistics_chart: \"Graphique\",\n // \"Responses\"\n responses: \"Réponses\",\n // [Auto-translated] \"NPS\"\n visualizer_nps: \"Le NPS\",\n // [Auto-translated] \"Chart\"\n visualizer_boolean: \"Graphique\",\n // [Auto-translated] \"Table\"\n visualizer_options: \"Table\",\n // [Auto-translated] \"NPS\"\n npsScore: \"Le NPS\",\n // [Auto-translated] \"Promoters\"\n npsPromoters: \"Promoteurs\",\n // [Auto-translated] \"Passives\"\n npsPassives: \"Passifs\",\n // [Auto-translated] \"Detractors\"\n npsDetractors: \"Détracteurs\",\n // [Auto-translated] \"Category (X Axis):\"\n axisXSelectorTitle: \"Catégorie (axe X) :\",\n // [Auto-translated] \"Legend (Series):\"\n axisYSelectorTitle: \"Légende (série) :\",\n // [Auto-translated] \"Segments:\"\n axisXAlternativeSelectorTitle: \"Segments:\",\n // [Auto-translated] \"Groups:\"\n axisYAlternativeSelectorTitle: \"Groupe:\",\n // [Auto-translated] \"Not selected\"\n notSelected: \"Non sélectionné\",\n // [Auto-translated] \"Default\"\n intervalMode_default: \"Faire défaut\",\n // [Auto-translated] \"Decades\"\n intervalMode_decades: \"Décennies\",\n // [Auto-translated] \"Years\"\n intervalMode_years: \"Années\",\n // [Auto-translated] \"Quarters\"\n intervalMode_quarters: \"Quartier\",\n // [Auto-translated] \"Months\"\n intervalMode_months: \"Mois\",\n // [Auto-translated] \"Days\"\n intervalMode_days: \"Jours\",\n // [Auto-translated] \"Custom\"\n intervalMode_custom: \"Coutume\",\n // [Auto-translated] \"Auto\"\n intervalMode_auto: \"Auto\",\n // [Auto-translated] \"Intervals:\"\n intervalModeTitle: \"Intervalles:\",\n // [Auto-translated] \"Show individual values\"\n noRunningTotals: \"Afficher les valeurs individuelles\",\n // [Auto-translated] \"Show running totals\"\n runningTotals: \"Afficher les totaux cumulés\",\n // [Auto-translated] \"Compare periods\"\n groupDateSeries: \"Comparer les périodes\",\n // [Auto-translated] \"View timeline\"\n ungroupDateSeries: \"Voir la chronologie\",\n // [Auto-translated] \"None\"\n noneAggregateText: \"Aucun\",\n // [Auto-translated] \"Aggregate:\"\n selectAggregateText: \"Agrégat:\",\n // [Auto-translated] \"Year ends with\"\n groupedYearsAxisTitle: \"L’exercice se termine avec\"\n};\n\nsetupLocale({ localeCode: \"fr\", strings: frenchStrings, nativeName: \"Français\" });\n","import { setupLocale } from \"../localizationManager\";\n\nexport var germanStrings = {\n // \"Group By Me\"\n groupButton: \"Gruppieren\",\n // \"Ungroup By Me\"\n ungroupButton: \"Gruppierung aufheben\",\n // \"Select Me\"\n selectButton: \"Mich auswählen\",\n // \"Hide column\"\n hideColumn: \"Spalte ausblenden\",\n // \"Show column\"\n showColumn: \"Spalte einblenden\",\n // \"Make column private\"\n makePrivateColumn: \"Spalte privat machen\",\n // \"Make column public\"\n makePublicColumn: \"Spalte veröffentlichen\",\n // \"Move to Detail\"\n moveToDetail: \"in Details verschieben\",\n // \"Show as Column\"\n showAsColumn: \"Als Spalte anzeigen\",\n // \"Search...\"\n filterPlaceholder: \"Suche...\",\n // \"Remove rows\"\n removeRows: \"Zeilen entfernen\",\n // \"Show\"\n showLabel: \"anzeigen\",\n // \"entries\"\n entriesLabel: \"Einträge\",\n // \"Texts in table\"\n visualizer_text: \"Texte in Tabellenform\",\n // \"Wordcloud\"\n visualizer_wordcloud: \"Wordcloud\",\n // \"Histogram\"\n visualizer_histogram: \"Histogramm\",\n // \"Average\"\n visualizer_number: \"Durchschnitt\",\n // \"Table\"\n visualizer_choices: \"Liste\",\n // \"Chart\"\n visualizer_selectBase: \"Diagrammtyp\",\n // [Auto-translated] \"Chart\"\n visualizer_matrix: \"Diagramm\",\n // [Auto-translated] \"Bar\"\n chartType_bar: \"Stab\",\n // \"Vertical Bar\"\n chartType_vbar: \"Balkendiagramm vertikal\",\n // \"Stacked Bar\"\n chartType_stackedbar: \"Gestapeltes Balkendiagramm\",\n // \"Doughnut\"\n chartType_doughnut: \"Donut-Diagramm\",\n // \"Pie\"\n chartType_pie: \"Kreisdiagramm\",\n // \"Scatter\"\n chartType_scatter: \"Punktediagramm\",\n // \"Gauge\"\n chartType_gauge: \"Pegeldiagramm\",\n // \"Bullet\"\n chartType_bullet: \"Aufzählungsdiagramm\",\n // [Auto-translated] \"Line\"\n chartType_line: \"Linie\",\n // [Auto-translated] \"Radar\"\n chartType_radar: \"Radar\",\n // \"Hide\"\n hideButton: \"Ausblenden\",\n // \"Make private\"\n makePrivateButton: \"Privat machen\",\n // \"Make public\"\n makePublicButton: \"Öffentlich machen\",\n // \"Show\"\n showButton: \"Anzeigen\",\n // \"Filter\"\n filter: \"Filter\",\n // \"Reset Filter\"\n resetFilter: \"Filter zurücksetzen\",\n // \"Change Locale\"\n changeLocale: \"Lokalisierung ändern\",\n // \"Clear\"\n clearButton: \"Einstellungen löschen\",\n // \"Choose question to show...\"\n addElement: \"Wählen Sie eine Frage, um zu zeigen...\",\n // \"Default Order\"\n defaultOrder: \"Standardreihenfolge\",\n // \"Ascending\"\n ascOrder: \"Aufsteigend\",\n // \"Descending\"\n descOrder: \"Absteigend\",\n // \"Show minor columns\"\n showMinorColumns: \"Kleinere Spalten anzeigen\",\n // [Auto-translated] \"Actions\"\n actionsColumn: \"Aktionen\",\n // \"Other items and comments\"\n otherCommentTitle: \"Andere Punkte und Kommentare\",\n // \"Show percentages\"\n showPercentages: \"Prozentsätze anzeigen\",\n // \"Hide percentages\"\n hidePercentages: \"Prozentsätze ausblenden\",\n // \"PDF\"\n pdfDownloadCaption: \"PDF\",\n // \"Excel\"\n xlsxDownloadCaption: \"Excel\",\n // \"CSV\"\n csvDownloadCaption: \"CSV\",\n // \"Download plot as a PNG file\"\n saveDiagramAsPNG: \"Diagramm als png herunterladen\",\n // \"Hide empty answers\"\n hideEmptyAnswers: \"Leere Antworten ausblenden\",\n // \"Show empty answers\"\n showEmptyAnswers: \"Leere Antworten anzeigen\",\n // \"All answers\"\n \"topNValueText-1\": \"Alle Antworten\",\n // \"Top 5 answers\"\n topNValueText5: \"Top 5 Antworten\",\n // \"Top 10 answers\"\n topNValueText10: \"Top 10 Antworten\",\n // \"Top 20 answers\"\n topNValueText20: \"Top 20 Antworten\",\n // \"Hide missing answers\"\n hideMissingAnswers: \"Fehlende Antworten ausblenden\",\n // \"Show missing answers\"\n showMissingAnswers: \"Fehlende Antworten anzeigen\",\n // \"Missing answers\"\n missingAnswersLabel: \"Fehlede Antworten\",\n // \"This question type is not visualized yet\"\n noVisualizerForQuestion: \"Für diesen Fragetyp gibt es noch keine Visualisierung.\",\n // \"There are no results yet\"\n noResults: \"Es liegen noch keine Ergebnisse vor\",\n // \"Per Values\"\n showPerValues: \"Pro Wert\",\n // \"Per Columns\"\n showPerColumns: \"Pro Spalte\",\n // \"Answer\"\n answer: \"Antwort\",\n // \"Correct answer: \"\n correctAnswer: \"Korrekte Antwort: \",\n // \"Percent\"\n percent: \"Prozent\",\n // [Auto-translated] \"Percentage\"\n percentage: \"Prozentsatz\",\n // [Auto-translated] \"Chart\"\n statistics_chart: \"Diagramm\",\n // \"Responses\"\n responses: \"Antworten\",\n // [Auto-translated] \"NPS\"\n visualizer_nps: \"NPS (NPS)\",\n // [Auto-translated] \"Chart\"\n visualizer_boolean: \"Diagramm\",\n // [Auto-translated] \"Table\"\n visualizer_options: \"Tisch\",\n // [Auto-translated] \"NPS\"\n npsScore: \"NPS (NPS)\",\n // [Auto-translated] \"Promoters\"\n npsPromoters: \"Promotoren\",\n // [Auto-translated] \"Passives\"\n npsPassives: \"Passive Fähigkeiten\",\n // [Auto-translated] \"Detractors\"\n npsDetractors: \"Kritiker\",\n // [Auto-translated] \"Category (X Axis):\"\n axisXSelectorTitle: \"Kategorie (X-Achse):\",\n // [Auto-translated] \"Legend (Series):\"\n axisYSelectorTitle: \"Legende (Serie):\",\n // [Auto-translated] \"Segments:\"\n axisXAlternativeSelectorTitle: \"Segmente:\",\n // [Auto-translated] \"Groups:\"\n axisYAlternativeSelectorTitle: \"Gruppen:\",\n // [Auto-translated] \"Not selected\"\n notSelected: \"Nicht ausgewählt\",\n // [Auto-translated] \"Default\"\n intervalMode_default: \"Vorgabe\",\n // [Auto-translated] \"Decades\"\n intervalMode_decades: \"Dekaden\",\n // [Auto-translated] \"Years\"\n intervalMode_years: \"Jahre\",\n // [Auto-translated] \"Quarters\"\n intervalMode_quarters: \"Quartier\",\n // [Auto-translated] \"Months\"\n intervalMode_months: \"Monate\",\n // [Auto-translated] \"Days\"\n intervalMode_days: \"Tage\",\n // [Auto-translated] \"Custom\"\n intervalMode_custom: \"Gewohnheit\",\n // [Auto-translated] \"Auto\"\n intervalMode_auto: \"Auto\",\n // [Auto-translated] \"Intervals:\"\n intervalModeTitle: \"Intervalle:\",\n // [Auto-translated] \"Show individual values\"\n noRunningTotals: \"Einzelne Werte anzeigen\",\n // [Auto-translated] \"Show running totals\"\n runningTotals: \"Laufende Summen anzeigen\",\n // [Auto-translated] \"Compare periods\"\n groupDateSeries: \"Zeiträume vergleichen\",\n // [Auto-translated] \"View timeline\"\n ungroupDateSeries: \"Zeitleiste anzeigen\",\n // [Auto-translated] \"None\"\n noneAggregateText: \"Nichts\",\n // [Auto-translated] \"Aggregate:\"\n selectAggregateText: \"Aggregat:\",\n // [Auto-translated] \"Year ends with\"\n groupedYearsAxisTitle: \"Das Jahr endet mit\"\n};\n\nsetupLocale({ localeCode: \"de\", strings: germanStrings, nativeName: \"Deutsch\" });","import { setupLocale } from \"../localizationManager\";\n\nexport var italianStrings = {\n // \"Group By Me\"\n groupButton: \"Raggruppa\",\n // \"Ungroup By Me\"\n ungroupButton: \"Dividi\",\n // \"Select Me\"\n selectButton: \"Selezionami\",\n // \"Hide column\"\n hideColumn: \"Nascondi colonna\",\n // \"Show column\"\n showColumn: \"Mostra colonna\",\n // \"Make column private\"\n makePrivateColumn: \"Rendi la colonna privata\",\n // \"Make column public\"\n makePublicColumn: \"Rendi la colonna pubblica\",\n // \"Move to Detail\"\n moveToDetail: \"Sposta in Dettaglio\",\n // \"Show as Column\"\n showAsColumn: \"Mostra come Colonna\",\n // \"Search...\"\n filterPlaceholder: \"Cerca...\",\n // \"Remove rows\"\n removeRows: \"Rimuovi righe\",\n // \"Show\"\n showLabel: \"Mostra\",\n // \"entries\"\n entriesLabel: \"voci\",\n // \"Texts in table\"\n visualizer_text: \"Parole in tabella\",\n // \"Wordcloud\"\n visualizer_wordcloud: \"Nuvola di parole\",\n // \"Histogram\"\n visualizer_histogram: \"Istogramma\",\n // \"Average\"\n visualizer_number: \"Media\",\n // \"Table\"\n visualizer_choices: \"Tabella\",\n // \"Chart\"\n visualizer_selectBase: \"Grafico\",\n // [Auto-translated] \"Chart\"\n visualizer_matrix: \"Tabella\",\n // [Auto-translated] \"Bar\"\n chartType_bar: \"Bar\",\n // \"Vertical Bar\"\n chartType_vbar: \"Grafico a barre verticali\",\n // \"Stacked Bar\"\n chartType_stackedbar: \"Grafico a barre sovrapposte\",\n // \"Doughnut\"\n chartType_doughnut: \"Grafico a ciambella\",\n // \"Pie\"\n chartType_pie: \"Grafico a torta\",\n // \"Scatter\"\n chartType_scatter: \"Grafico a dispersione\",\n // \"Gauge\"\n chartType_gauge: \"Grafico Gauge\",\n // \"Bullet\"\n chartType_bullet: \"Punto\",\n // [Auto-translated] \"Line\"\n chartType_line: \"Linea\",\n // [Auto-translated] \"Radar\"\n chartType_radar: \"Radar\",\n // \"Hide\"\n hideButton: \"Nascondi\",\n // \"Make private\"\n makePrivateButton: \"Rendi privato\",\n // \"Make public\"\n makePublicButton: \"Rendi pubblico\",\n // \"Show\"\n showButton: \"Mostra\",\n // \"Filter\"\n filter: \"Filtro\",\n // \"Reset Filter\"\n resetFilter: \"Cancella filtro\",\n // \"Change Locale\"\n changeLocale: \"Cambia lingua\",\n // \"Clear\"\n clearButton: \"Cancella\",\n // \"Choose question to show...\"\n addElement: \"Scegli la domanda da mostrare...\",\n // \"Default Order\"\n defaultOrder: \"Ordine di Default\",\n // \"Ascending\"\n ascOrder: \"Ascendente\",\n // \"Descending\"\n descOrder: \"Discendente\",\n // \"Show minor columns\"\n showMinorColumns: \"Mostra colonne secondarie\",\n // [Auto-translated] \"Actions\"\n actionsColumn: \"Azioni\",\n // \"Other items and comments\"\n otherCommentTitle: \"Altri punti e commenti\",\n // \"Show percentages\"\n showPercentages: \"Mostra percentuali\",\n // \"Hide percentages\"\n hidePercentages: \"Nascondi percentuali\",\n // \"PDF\"\n pdfDownloadCaption: \"PDF\",\n // \"Excel\"\n xlsxDownloadCaption: \"Excel\",\n // \"CSV\"\n csvDownloadCaption: \"CSV\",\n // \"Download plot as a PNG file\"\n saveDiagramAsPNG: \"Scarica il grafico in formato png\",\n // \"Hide empty answers\"\n hideEmptyAnswers: \"Nascondi risposte vuote\",\n // \"Show empty answers\"\n showEmptyAnswers: \"Mostra risposte vuote\",\n // \"All answers\"\n \"topNValueText-1\": \"Tutte le risposte\",\n // \"Top 5 answers\"\n topNValueText5: \"Top 5 risposte\",\n // \"Top 10 answers\"\n topNValueText10: \"Top 10 risposte\",\n // \"Top 20 answers\"\n topNValueText20: \"Top 20 risposte\",\n // \"Hide missing answers\"\n hideMissingAnswers: \"Nascondi le risposte mancanti\",\n // \"Show missing answers\"\n showMissingAnswers: \"Mostra le risposte mancanti\",\n // \"Missing answers\"\n missingAnswersLabel: \"Risposte mancanti\",\n // \"This question type is not visualized yet\"\n noVisualizerForQuestion: \"Questo tipo di domanda non è ancora stato visualizzato\",\n // \"There are no results yet\"\n noResults: \"Non ci sono ancora risultati\",\n // \"Per Values\"\n showPerValues: \"Per Valori\",\n // \"Per Columns\"\n showPerColumns: \"Per Colonne\",\n // \"Answer\"\n answer: \"Risposta\",\n // \"Correct answer: \"\n correctAnswer: \"Risposta esatta: \",\n // \"Percent\"\n percent: \"Percentuale\",\n // [Auto-translated] \"Percentage\"\n percentage: \"Percentuale\",\n // [Auto-translated] \"Chart\"\n statistics_chart: \"Tabella\",\n // \"Responses\"\n responses: \"Risposte\",\n // [Auto-translated] \"NPS\"\n visualizer_nps: \"Rete nazionale di dati\",\n // [Auto-translated] \"Chart\"\n visualizer_boolean: \"Tabella\",\n // [Auto-translated] \"Table\"\n visualizer_options: \"Tavolo\",\n // [Auto-translated] \"NPS\"\n npsScore: \"Rete nazionale di dati\",\n // [Auto-translated] \"Promoters\"\n npsPromoters: \"Promotori\",\n // [Auto-translated] \"Passives\"\n npsPassives: \"Passivi\",\n // [Auto-translated] \"Detractors\"\n npsDetractors: \"Detrattori\",\n // [Auto-translated] \"Category (X Axis):\"\n axisXSelectorTitle: \"Categoria (asse X):\",\n // [Auto-translated] \"Legend (Series):\"\n axisYSelectorTitle: \"Leggenda (serie):\",\n // [Auto-translated] \"Segments:\"\n axisXAlternativeSelectorTitle: \"Segmenti:\",\n // [Auto-translated] \"Groups:\"\n axisYAlternativeSelectorTitle: \"Gruppi:\",\n // [Auto-translated] \"Not selected\"\n notSelected: \"Non selezionato\",\n // [Auto-translated] \"Default\"\n intervalMode_default: \"Default\",\n // [Auto-translated] \"Decades\"\n intervalMode_decades: \"Decenni\",\n // [Auto-translated] \"Years\"\n intervalMode_years: \"Anni\",\n // [Auto-translated] \"Quarters\"\n intervalMode_quarters: \"Quarti\",\n // [Auto-translated] \"Months\"\n intervalMode_months: \"Mesi\",\n // [Auto-translated] \"Days\"\n intervalMode_days: \"Giorni\",\n // [Auto-translated] \"Custom\"\n intervalMode_custom: \"Costume\",\n // [Auto-translated] \"Auto\"\n intervalMode_auto: \"Automatico\",\n // [Auto-translated] \"Intervals:\"\n intervalModeTitle: \"Intervalli:\",\n // [Auto-translated] \"Show individual values\"\n noRunningTotals: \"Mostra i singoli valori\",\n // [Auto-translated] \"Show running totals\"\n runningTotals: \"Mostra totali parziali\",\n // [Auto-translated] \"Compare periods\"\n groupDateSeries: \"Confronta i periodi\",\n // [Auto-translated] \"View timeline\"\n ungroupDateSeries: \"Visualizza la timeline\",\n // [Auto-translated] \"None\"\n noneAggregateText: \"Nessuno\",\n // [Auto-translated] \"Aggregate:\"\n selectAggregateText: \"Aggregato:\",\n // [Auto-translated] \"Year ends with\"\n groupedYearsAxisTitle: \"L'anno si chiude con\"\n};\n\nsetupLocale({ localeCode: \"it\", strings: italianStrings, nativeName: \"Italiano\" });","import { setupLocale } from \"../localizationManager\";\n\nexport var japaneseStrings = {\n // \"Group By Me\"\n groupButton: \"グループ化\",\n // \"Ungroup By Me\"\n ungroupButton: \"グループ解除\",\n // \"Select Me\"\n selectButton: \"選択\",\n // \"Hide column\"\n hideColumn: \"列を非表示\",\n // \"Show column\"\n showColumn: \"列を表示\",\n // \"Make column private\"\n makePrivateColumn: \"列を非公開にする\",\n // \"Make column public\"\n makePublicColumn: \"列を公開する\",\n // \"Move to Detail\"\n moveToDetail: \"詳細に移動\",\n // \"Show as Column\"\n showAsColumn: \"列として表示\",\n // \"Search...\"\n filterPlaceholder: \"検索...\",\n // \"Remove rows\"\n removeRows: \"行を削除\",\n // \"Show\"\n showLabel: \"表示\",\n // \"entries\"\n entriesLabel: \"件\",\n // \"Texts in table\"\n visualizer_text: \"テキスト\",\n // \"Wordcloud\"\n visualizer_wordcloud: \"ワードクラウド\",\n // \"Histogram\"\n visualizer_histogram: \"ヒストグラム\",\n // \"Average\"\n visualizer_number: \"平均\",\n // \"Table\"\n visualizer_choices: \"テーブル\",\n // \"Chart\"\n visualizer_selectBase: \"チャート\",\n // [Auto-translated] \"Chart\"\n visualizer_matrix: \"チャート\",\n // \"Bar\"\n chartType_bar: \"棒グラフ\",\n // \"Vertical Bar\"\n chartType_vbar: \"縦棒グラフ\",\n // \"Stacked Bar\"\n chartType_stackedbar: \"積み上げ棒グラフ\",\n // \"Doughnut\"\n chartType_doughnut: \"ドーナツチャート\",\n // \"Pie\"\n chartType_pie: \"円グラフ\",\n // \"Scatter\"\n chartType_scatter: \"散布図\",\n // \"Gauge\"\n chartType_gauge: \"ゲージ\",\n // \"Bullet\"\n chartType_bullet: \"バレット\",\n // [Auto-translated] \"Line\"\n chartType_line: \"線\",\n // [Auto-translated] \"Radar\"\n chartType_radar: \"レーダー\",\n // \"Hide\"\n hideButton: \"非表示\",\n // \"Make private\"\n makePrivateButton: \"非公開にする\",\n // \"Make public\"\n makePublicButton: \"公開する\",\n // \"Show\"\n showButton: \"表示\",\n // \"Filter\"\n filter: \"フィルター\",\n // \"Reset Filter\"\n resetFilter: \"フィルターをリセット\",\n // \"Change Locale\"\n changeLocale: \"言語を変更\",\n // \"Clear\"\n clearButton: \"クリア\",\n // \"Choose question to show...\"\n addElement: \"表示する質問を選択...\",\n // \"Default Order\"\n defaultOrder: \"デフォルト順\",\n // \"Ascending\"\n ascOrder: \"昇順\",\n // \"Descending\"\n descOrder: \"降順\",\n // \"Show minor columns\"\n showMinorColumns: \"マイナー列を表示\",\n // [Auto-translated] \"Actions\"\n actionsColumn: \"アクション\",\n // \"Other items and comments\"\n otherCommentTitle: \"その他のアイテムとコメント\",\n // \"Show percentages\"\n showPercentages: \"パーセンテージを表示\",\n // \"Hide percentages\"\n hidePercentages: \"パーセンテージを非表示\",\n // \"PDF\"\n pdfDownloadCaption: \"PDF\",\n // \"Excel\"\n xlsxDownloadCaption: \"Excel\",\n // \"CSV\"\n csvDownloadCaption: \"CSV\",\n // \"Download plot as a PNG file\"\n saveDiagramAsPNG: \"プロットをPNGファイルとして保存\",\n // \"Hide empty answers\"\n hideEmptyAnswers: \"空の回答を非表示\",\n // \"Show empty answers\"\n showEmptyAnswers: \"空の回答を表示\",\n // \"All answers\"\n \"topNValueText-1\": \"すべての回答\",\n // \"Top 5 answers\"\n topNValueText5: \"上位5つの回答\",\n // \"Top 10 answers\"\n topNValueText10: \"上位10の回答\",\n // \"Top 20 answers\"\n topNValueText20: \"上位20の回答\",\n // \"Hide missing answers\"\n hideMissingAnswers: \"欠損値を非表示\",\n // \"Show missing answers\"\n showMissingAnswers: \"欠損値を表示\",\n // \"Missing answers\"\n missingAnswersLabel: \"欠損値\",\n // \"This question type is not visualized yet\"\n noVisualizerForQuestion: \"この質問タイプはまだ視覚化されていません\",\n // \"There are no results yet\"\n noResults: \"まだ結果がありません\",\n // \"Per Values\"\n showPerValues: \"値ごとに表示\",\n // \"Per Columns\"\n showPerColumns: \"列ごとに表示\",\n // \"Answer\"\n answer: \"回答\",\n // \"Correct answer: \"\n correctAnswer: \"正解: \",\n // \"Percent\"\n percent: \"パーセント\",\n // [Auto-translated] \"Percentage\"\n percentage: \"百分率\",\n // [Auto-translated] \"Chart\"\n statistics_chart: \"チャート\",\n // \"Responses\"\n responses: \"回答数\",\n // [Auto-translated] \"NPS\"\n visualizer_nps: \"NPSの\",\n // [Auto-translated] \"Chart\"\n visualizer_boolean: \"チャート\",\n // [Auto-translated] \"Table\"\n visualizer_options: \"テーブル\",\n // [Auto-translated] \"NPS\"\n npsScore: \"NPSの\",\n // [Auto-translated] \"Promoters\"\n npsPromoters: \"プロモーター\",\n // [Auto-translated] \"Passives\"\n npsPassives: \"パッシブ\",\n // [Auto-translated] \"Detractors\"\n npsDetractors: \"中傷\",\n // [Auto-translated] \"Category (X Axis):\"\n axisXSelectorTitle: \"カテゴリ(X軸):\",\n // [Auto-translated] \"Legend (Series):\"\n axisYSelectorTitle: \"凡例(シリーズ):\",\n // [Auto-translated] \"Segments:\"\n axisXAlternativeSelectorTitle: \"セグメント:\",\n // [Auto-translated] \"Groups:\"\n axisYAlternativeSelectorTitle: \"グループ:\",\n // [Auto-translated] \"Not selected\"\n notSelected: \"選択されていない\",\n // [Auto-translated] \"Default\"\n intervalMode_default: \"デフォルト\",\n // [Auto-translated] \"Decades\"\n intervalMode_decades: \"数 十 年\",\n // [Auto-translated] \"Years\"\n intervalMode_years: \"月日\",\n // [Auto-translated] \"Quarters\"\n intervalMode_quarters: \"四半期\",\n // [Auto-translated] \"Months\"\n intervalMode_months: \"月\",\n // [Auto-translated] \"Days\"\n intervalMode_days: \"日\",\n // [Auto-translated] \"Custom\"\n intervalMode_custom: \"習慣\",\n // [Auto-translated] \"Auto\"\n intervalMode_auto: \"自動\",\n // [Auto-translated] \"Intervals:\"\n intervalModeTitle: \"間隔:\",\n // [Auto-translated] \"Show individual values\"\n noRunningTotals: \"個々の値を表示する\",\n // [Auto-translated] \"Show running totals\"\n runningTotals: \"累計を表示する\",\n // [Auto-translated] \"Compare periods\"\n groupDateSeries: \"期間の比較\",\n // [Auto-translated] \"View timeline\"\n ungroupDateSeries: \"タイムラインの表示\",\n // [Auto-translated] \"None\"\n noneAggregateText: \"何一つ\",\n // [Auto-translated] \"Aggregate:\"\n selectAggregateText: \"骨材:\",\n // [Auto-translated] \"Year ends with\"\n groupedYearsAxisTitle: \"年末は\"\n};\n\nsetupLocale({ localeCode: \"ja\", strings: japaneseStrings, nativeName: \"日本語\" });","import { setupLocale } from \"../localizationManager\";\n\nexport var norwegianStrings = {\n // \"Group By Me\"\n groupButton: \"Grupper\",\n // \"Ungroup By Me\"\n ungroupButton: \"Opphev gruppering\",\n // \"Select Me\"\n selectButton: \"Velg\",\n // \"Hide column\"\n hideColumn: \"Skjul kolonne\",\n // \"Show column\"\n showColumn: \"Vis kolonne\",\n // \"Make column private\"\n makePrivateColumn: \"Gjør kolonne privat\",\n // \"Make column public\"\n makePublicColumn: \"Gjør kolonne offentlig\",\n // \"Move to Detail\"\n moveToDetail: \"Flytt til detaljert visning\",\n // \"Show as Column\"\n showAsColumn: \"Vis som kolonne\",\n // \"Search...\"\n filterPlaceholder: \"Søk...\",\n // \"Remove rows\"\n removeRows: \"Fjern rader\",\n // \"Show\"\n showLabel: \"Vis\",\n // \"entries\"\n entriesLabel: \"oppføringer\",\n // \"Texts in table\"\n visualizer_text: \"Tabellvisning\",\n // \"Wordcloud\"\n visualizer_wordcloud: \"Ordsky\",\n // \"Histogram\"\n visualizer_histogram: \"Histogram\",\n // \"Average\"\n visualizer_number: \"Gjennomsnitt\",\n // \"Table\"\n visualizer_choices: \"Bord\",\n // \"Chart\"\n visualizer_selectBase: \"Sjøkart\",\n // [Auto-translated] \"Chart\"\n visualizer_matrix: \"Sjøkart\",\n // [Auto-translated] \"Bar\"\n chartType_bar: \"Bar\",\n // \"Vertical Bar\"\n chartType_vbar: \"Vertikal stolpe\",\n // \"Stacked Bar\"\n chartType_stackedbar: \"Stablet stolpediagram\",\n // \"Doughnut\"\n chartType_doughnut: \"Hjuldiagram\",\n // \"Pie\"\n chartType_pie: \"Sektordiagram\",\n // \"Scatter\"\n chartType_scatter: \"Punktdiagram\",\n // \"Gauge\"\n chartType_gauge: \"Målediagram\",\n // \"Bullet\"\n chartType_bullet: \"Kulediagram\",\n // [Auto-translated] \"Line\"\n chartType_line: \"Linje\",\n // [Auto-translated] \"Radar\"\n chartType_radar: \"Radar\",\n // \"Hide\"\n hideButton: \"Skjul\",\n // \"Make private\"\n makePrivateButton: \"Gjør privat\",\n // \"Make public\"\n makePublicButton: \"Gjør offentlig\",\n // \"Show\"\n showButton: \"Vis\",\n // \"Filter\"\n filter: \"Filter\",\n // \"Reset Filter\"\n resetFilter: \"Nullstill filter\",\n // \"Change Locale\"\n changeLocale: \"Bytt språk\",\n // \"Clear\"\n clearButton: \"Tøm\",\n // \"Choose question to show...\"\n addElement: \"Velg spørsmål...\",\n // \"Default Order\"\n defaultOrder: \"Standard\",\n // \"Ascending\"\n ascOrder: \"Stigende\",\n // \"Descending\"\n descOrder: \"Synkende\",\n // \"Show minor columns\"\n showMinorColumns: \"Vis mindre kolonner\",\n // [Auto-translated] \"Actions\"\n actionsColumn: \"Handlinger\",\n // \"Other items and comments\"\n otherCommentTitle: \"Annet og kommentarer\",\n // \"Show percentages\"\n showPercentages: \"Vis prosenter\",\n // \"Hide percentages\"\n hidePercentages: \"Skjul prosenter\",\n // \"PDF\"\n pdfDownloadCaption: \"PDF\",\n // \"Excel\"\n xlsxDownloadCaption: \"Overgå\",\n // \"CSV\"\n csvDownloadCaption: \"CSV\",\n // \"Download plot as a PNG file\"\n saveDiagramAsPNG: \"Last ned plott som en PNG-fil\",\n // \"Hide empty answers\"\n hideEmptyAnswers: \"Skjul tomme svar\",\n // \"Show empty answers\"\n showEmptyAnswers: \"Vis tomme svar\",\n // \"All answers\"\n \"topNValueText-1\": \"Alle svar\",\n // \"Top 5 answers\"\n topNValueText5: \"Topp 5 svar\",\n // \"Top 10 answers\"\n topNValueText10: \"Topp 10 svar\",\n // \"Top 20 answers\"\n topNValueText20: \"Topp 20 svar\",\n // \"Hide missing answers\"\n hideMissingAnswers: \"Skjul manglende svar\",\n // \"Show missing answers\"\n showMissingAnswers: \"Vis manglende svar\",\n // \"Missing answers\"\n missingAnswersLabel: \"Mangler svar\",\n // \"This question type is not visualized yet\"\n noVisualizerForQuestion: \"Denne spørsmålstypen er ikke visualisert ennå\",\n // \"There are no results yet\"\n noResults: \"Det er ingen resultater ennå\",\n // \"Per Values\"\n showPerValues: \"Per verdier\",\n // \"Per Columns\"\n showPerColumns: \"Per kolonner\",\n // \"Answer\"\n answer: \"Svare\",\n // \"Correct answer: \"\n correctAnswer: \"Riktig svar: \",\n // \"Percent\"\n percent: \"Prosent\",\n // [Auto-translated] \"Percentage\"\n percentage: \"Prosent\",\n // [Auto-translated] \"Chart\"\n statistics_chart: \"Sjøkart\",\n // \"Responses\"\n responses: \"Svar\",\n // [Auto-translated] \"NPS\"\n visualizer_nps: \"NPS\",\n // [Auto-translated] \"Chart\"\n visualizer_boolean: \"Sjøkart\",\n // [Auto-translated] \"Table\"\n visualizer_options: \"Bord\",\n // [Auto-translated] \"NPS\"\n npsScore: \"NPS\",\n // [Auto-translated] \"Promoters\"\n npsPromoters: \"Arrangører\",\n // [Auto-translated] \"Passives\"\n npsPassives: \"Passive\",\n // [Auto-translated] \"Detractors\"\n npsDetractors: \"Motstandere\",\n // [Auto-translated] \"Category (X Axis):\"\n axisXSelectorTitle: \"Kategori (X-akse):\",\n // [Auto-translated] \"Legend (Series):\"\n axisYSelectorTitle: \"Legende (serie):\",\n // [Auto-translated] \"Segments:\"\n axisXAlternativeSelectorTitle: \"Segmenter:\",\n // [Auto-translated] \"Groups:\"\n axisYAlternativeSelectorTitle: \"Grupper:\",\n // [Auto-translated] \"Not selected\"\n notSelected: \"Ikke valgt\",\n // [Auto-translated] \"Default\"\n intervalMode_default: \"Standard\",\n // [Auto-translated] \"Decades\"\n intervalMode_decades: \"Tiår\",\n // [Auto-translated] \"Years\"\n intervalMode_years: \"År\",\n // [Auto-translated] \"Quarters\"\n intervalMode_quarters: \"Kvartaler\",\n // [Auto-translated] \"Months\"\n intervalMode_months: \"Måneder\",\n // [Auto-translated] \"Days\"\n intervalMode_days: \"Dager\",\n // [Auto-translated] \"Custom\"\n intervalMode_custom: \"Skikk\",\n // [Auto-translated] \"Auto\"\n intervalMode_auto: \"Auto\",\n // [Auto-translated] \"Intervals:\"\n intervalModeTitle: \"Intervaller:\",\n // [Auto-translated] \"Show individual values\"\n noRunningTotals: \"Vis individuelle verdier\",\n // [Auto-translated] \"Show running totals\"\n runningTotals: \"Vis løpende totaler\",\n // [Auto-translated] \"Compare periods\"\n groupDateSeries: \"Sammenlign perioder\",\n // [Auto-translated] \"View timeline\"\n ungroupDateSeries: \"Vis tidslinje\",\n // [Auto-translated] \"None\"\n noneAggregateText: \"Ingen\",\n // [Auto-translated] \"Aggregate:\"\n selectAggregateText: \"Samlet:\",\n // [Auto-translated] \"Year ends with\"\n groupedYearsAxisTitle: \"Året avsluttes med\"\n};\n\nsetupLocale({ localeCode: \"no\", strings: norwegianStrings, nativeName: \"Norsk\" });","import { setupLocale } from \"../localizationManager\";\n\nexport var plStrings = {\n // \"Group By Me\"\n groupButton: \"Grupuj według mnie\",\n // \"Ungroup By Me\"\n ungroupButton: \"Rozgrupuj według mnie\",\n // \"Select Me\"\n selectButton: \"Wybierz\",\n // \"Hide column\"\n hideColumn: \"Ukryj kolumnę\",\n // \"Show column\"\n showColumn: \"Pokaż kolumnę\",\n // \"Make column private\"\n makePrivateColumn: \"Uczyń kolumnę prywatną\",\n // \"Make column public\"\n makePublicColumn: \"Uczyń kolumnę publiczną\",\n // \"Move to Detail\"\n moveToDetail: \"Przenieś do szczegółów\",\n // \"Show as Column\"\n showAsColumn: \"Pokaż jako kolumnę\",\n // \"Search...\"\n filterPlaceholder: \"Szukaj...\",\n // \"Remove rows\"\n removeRows: \"Usuń wiersze\",\n // \"Show\"\n showLabel: \"Pokaż\",\n // \"entries\"\n entriesLabel: \"wejścia\",\n // \"Texts in table\"\n visualizer_text: \"Teksty w tabeli\",\n // \"Wordcloud\"\n visualizer_wordcloud: \"Chmura słów\",\n // \"Histogram\"\n visualizer_histogram: \"Histogram\",\n // \"Average\"\n visualizer_number: \"Średnia\",\n // \"Table\"\n visualizer_choices: \"Tabela\",\n // \"Chart\"\n visualizer_selectBase: \"Wykres\",\n // \"Chart\"\n visualizer_matrix: \"Wykres\",\n // \"Bar\"\n chartType_bar: \"Słupkowy\",\n // \"Vertical Bar\"\n chartType_vbar: \"Słupkowy pionowy\",\n // \"Stacked Bar\"\n chartType_stackedbar: \"Słupkowy skumulowany\",\n // \"Doughnut\"\n chartType_doughnut: \"Oponka\",\n // \"Pie\"\n chartType_pie: \"Tarta\",\n // \"Scatter\"\n chartType_scatter: \"Rozrzut\",\n // \"Gauge\"\n chartType_gauge: \"Skala\",\n // \"Bullet\"\n chartType_bullet: \"Pocisk\",\n // [Auto-translated] \"Line\"\n chartType_line: \"Linia\",\n // [Auto-translated] \"Radar\"\n chartType_radar: \"Radar\",\n // \"Hide\"\n hideButton: \"Ukryj\",\n // \"Make private\"\n makePrivateButton: \"Uczyń prywatnym\",\n // \"Make public\"\n makePublicButton: \"Uczyń publicznym\",\n // \"Show\"\n showButton: \"Pokaż\",\n // \"Filter\"\n filter: \"Filtruj\",\n // \"Reset Filter\"\n resetFilter: \"Resetuj filtr\",\n // \"Change Locale\"\n changeLocale: \"Zmień lokalizację\",\n // \"Clear\"\n clearButton: \"Wyczyść\",\n // \"Choose question to show...\"\n addElement: \"Wybierz pytanie do pokazania...\",\n // \"Default Order\"\n defaultOrder: \"Domyślne sortowanie\",\n // \"Ascending\"\n ascOrder: \"Rosnąco\",\n // \"Descending\"\n descOrder: \"Malejąco\",\n // \"Show minor columns\"\n showMinorColumns: \"Pokaż mniejsze kolumny\",\n // [Auto-translated] \"Actions\"\n actionsColumn: \"Akcje\",\n // \"Other items and comments\"\n otherCommentTitle: \"Inne elementy i komentarze\",\n // \"Show percentages\"\n showPercentages: \"Pokaż procenty\",\n // \"Hide percentages\"\n hidePercentages: \"Ukryj procenty\",\n // \"PDF\"\n pdfDownloadCaption: \"PDF\",\n // \"Excel\"\n xlsxDownloadCaption: \"Excel\",\n // \"CSV\"\n csvDownloadCaption: \"CSV\",\n // \"Download plot as a PNG file\"\n saveDiagramAsPNG: \"Pobierz diagram jako PNG\",\n // \"Hide empty answers\"\n hideEmptyAnswers: \"Ukryj puste odpowiedzi\",\n // \"Show empty answers\"\n showEmptyAnswers: \"Pokaż puste odpowiedzi\",\n // \"All answers\"\n \"topNValueText-1\": \"Wszystkie odpowiedzi\",\n // \"Top 5 answers\"\n topNValueText5: \"Pierwsze 5 odpowiedzi\",\n // \"Top 10 answers\"\n topNValueText10: \"Pierwsze 10 odpowiedzi\",\n // \"Top 20 answers\"\n topNValueText20: \"Pierwsze 20 odpowiedzi\",\n // \"Hide missing answers\"\n hideMissingAnswers: \"Ukryj nieodpowiedziane pytania\",\n // \"Show missing answers\"\n showMissingAnswers: \"Pokaż nieodpowiedziane pytania\",\n // \"Missing answers\"\n missingAnswersLabel: \"Nieodpowiedziane pytania\",\n // \"This question type is not visualized yet\"\n noVisualizerForQuestion: \"Ten typ pytania nie został jeszcze zwizualizowany\",\n // \"There are no results yet\"\n noResults: \"Nie ma jeszcze wyników\",\n // \"Per Values\"\n showPerValues: \"Według wartości\",\n // \"Per Columns\"\n showPerColumns: \"Według kolumn\",\n // \"Answer\"\n answer: \"Odpowiedź\",\n // \"Correct answer: \"\n correctAnswer: \"Odpowiedź poprawna: \",\n // \"Percent\"\n percent: \"Procent\",\n // [Auto-translated] \"Percentage\"\n percentage: \"Procent\",\n // [Auto-translated] \"Chart\"\n statistics_chart: \"Wykres\",\n // \"Responses\"\n responses: \"Odpowiedzi\",\n // [Auto-translated] \"NPS\"\n visualizer_nps: \"Wskaźnik NPS\",\n // [Auto-translated] \"Chart\"\n visualizer_boolean: \"Wykres\",\n // [Auto-translated] \"Table\"\n visualizer_options: \"Stół\",\n // [Auto-translated] \"NPS\"\n npsScore: \"Wskaźnik NPS\",\n // [Auto-translated] \"Promoters\"\n npsPromoters: \"Promotorów\",\n // [Auto-translated] \"Passives\"\n npsPassives: \"Passives\",\n // [Auto-translated] \"Detractors\"\n npsDetractors: \"Przeciwników\",\n // [Auto-translated] \"Category (X Axis):\"\n axisXSelectorTitle: \"Kategoria (oś X):\",\n // [Auto-translated] \"Legend (Series):\"\n axisYSelectorTitle: \"Legenda (seria):\",\n // [Auto-translated] \"Segments:\"\n axisXAlternativeSelectorTitle: \"Segmenty:\",\n // [Auto-translated] \"Groups:\"\n axisYAlternativeSelectorTitle: \"Grupy:\",\n // [Auto-translated] \"Not selected\"\n notSelected: \"Nie wybrano\",\n // [Auto-translated] \"Default\"\n intervalMode_default: \"Domyślny\",\n // [Auto-translated] \"Decades\"\n intervalMode_decades: \"Dziesięciolecia\",\n // [Auto-translated] \"Years\"\n intervalMode_years: \"Lata\",\n // [Auto-translated] \"Quarters\"\n intervalMode_quarters: \"Kwartałów\",\n // [Auto-translated] \"Months\"\n intervalMode_months: \"Miesiące\",\n // [Auto-translated] \"Days\"\n intervalMode_days: \"Dni\",\n // [Auto-translated] \"Custom\"\n intervalMode_custom: \"Zwyczaj\",\n // [Auto-translated] \"Auto\"\n intervalMode_auto: \"Automatycznie\",\n // [Auto-translated] \"Intervals:\"\n intervalModeTitle: \"Odstępach czasu:\",\n // [Auto-translated] \"Show individual values\"\n noRunningTotals: \"Pokaż poszczególne wartości\",\n // [Auto-translated] \"Show running totals\"\n runningTotals: \"Pokazywanie sum bieżących\",\n // [Auto-translated] \"Compare periods\"\n groupDateSeries: \"Porównywanie okresów\",\n // [Auto-translated] \"View timeline\"\n ungroupDateSeries: \"Wyświetl oś czasu\",\n // [Auto-translated] \"None\"\n noneAggregateText: \"Żaden\",\n // [Auto-translated] \"Aggregate:\"\n selectAggregateText: \"Kruszywo:\",\n // [Auto-translated] \"Year ends with\"\n groupedYearsAxisTitle: \"Rok kończy się na\"\n};\n\nsetupLocale({ localeCode: \"pl\", strings: plStrings, nativeName: \"Polski\" });","import { setupLocale } from \"../localizationManager\";\n\nexport var portugueseStrings = {\n // \"Group By Me\"\n groupButton: \"Agrupar Por Mim\",\n // \"Ungroup By Me\"\n ungroupButton: \"Desagrupar Por Mim\",\n // \"Select Me\"\n selectButton: \"Selecionar\",\n // \"Hide column\"\n hideColumn: \"Esconder coluna\",\n // \"Show column\"\n showColumn: \"Mostrar coluna\",\n // \"Make column private\"\n makePrivateColumn: \"Tornar coluna privada\",\n // \"Make column public\"\n makePublicColumn: \"Tornar coluna pública\",\n // \"Move to Detail\"\n moveToDetail: \"Mover para Detalhes\",\n // \"Show as Column\"\n showAsColumn: \"Mostrar como Coluna\",\n // \"Search...\"\n filterPlaceholder: \"Pesquisar...\",\n // \"Remove rows\"\n removeRows: \"Remover linhas\",\n // \"Show\"\n showLabel: \"Mostrar\",\n // \"entries\"\n entriesLabel: \"entradas\",\n // \"Texts in table\"\n visualizer_text: \"Textos em tabela\",\n // \"Wordcloud\"\n visualizer_wordcloud: \"Nuvem de palavras\",\n // \"Histogram\"\n visualizer_histogram: \"Histograma\",\n // \"Average\"\n visualizer_number: \"Média\",\n // \"Table\"\n visualizer_choices: \"Tabela\",\n // \"Chart\"\n visualizer_selectBase: \"Gráfico\",\n // [Auto-translated] \"Chart\"\n visualizer_matrix: \"Gráfico\",\n // [Auto-translated] \"Bar\"\n chartType_bar: \"Barra\",\n // \"Vertical Bar\"\n chartType_vbar: \"Barra vertical\",\n // \"Stacked Bar\"\n chartType_stackedbar: \"Barra Empilhada\",\n // \"Doughnut\"\n chartType_doughnut: \"Rosca\",\n // \"Pie\"\n chartType_pie: \"Tarte\",\n // \"Scatter\"\n chartType_scatter: \"Lastro\",\n // \"Gauge\"\n chartType_gauge: \"Escala\",\n // \"Bullet\"\n chartType_bullet: \"Bala\",\n // [Auto-translated] \"Line\"\n chartType_line: \"Linha\",\n // [Auto-translated] \"Radar\"\n chartType_radar: \"Radar\",\n // \"Hide\"\n hideButton: \"Esconder\",\n // \"Make private\"\n makePrivateButton: \"Tornar privado\",\n // \"Make public\"\n makePublicButton: \"Tornar público\",\n // \"Show\"\n showButton: \"Mostrar\",\n // \"Filter\"\n filter: \"Filtrar\",\n // \"Reset Filter\"\n resetFilter: \"Restaurar Filtro\",\n // \"Change Locale\"\n changeLocale: \"Mudar Localização\",\n // \"Clear\"\n clearButton: \"Limpar\",\n // \"Choose question to show...\"\n addElement: \"Escolher questão para mostrar...\",\n // \"Default Order\"\n defaultOrder: \"Ordenação Padrão\",\n // \"Ascending\"\n ascOrder: \"Ascendente\",\n // \"Descending\"\n descOrder: \"Descendente\",\n // \"Show minor columns\"\n showMinorColumns: \"Mostrar colunas menores\",\n // [Auto-translated] \"Actions\"\n actionsColumn: \"Ações\",\n // \"Other items and comments\"\n otherCommentTitle: \"Outros itens e comentários\",\n // \"Show percentages\"\n showPercentages: \"Mostrar percentuais\",\n // \"Hide percentages\"\n hidePercentages: \"Esconder percentuais\",\n // \"PDF\"\n pdfDownloadCaption: \"PDF\",\n // \"Excel\"\n xlsxDownloadCaption: \"Excel\",\n // \"CSV\"\n csvDownloadCaption: \"CSV\",\n // \"Download plot as a PNG file\"\n saveDiagramAsPNG: \"Baixar diagrama como PNG\",\n // \"Hide empty answers\"\n hideEmptyAnswers: \"Esconder perguntas vazias\",\n // \"Show empty answers\"\n showEmptyAnswers: \"Mostrar perguntas vazias\",\n // \"All answers\"\n \"topNValueText-1\": \"Todas as respostas\",\n // \"Top 5 answers\"\n topNValueText5: \"Primeiras 5 respostas\",\n // \"Top 10 answers\"\n topNValueText10: \"Primeiras 10 respostas\",\n // \"Top 20 answers\"\n topNValueText20: \"Primeiras 20 respostas\",\n // \"Hide missing answers\"\n hideMissingAnswers: \"Ocultar perguntas não respondidas\",\n // \"Show missing answers\"\n showMissingAnswers: \"Mostrar perguntas não respondidas\",\n // \"Missing answers\"\n missingAnswersLabel: \"Perguntas não respondidas\",\n // \"This question type is not visualized yet\"\n noVisualizerForQuestion: \"Este tipo de pergunta ainda não foi visualizada\",\n // \"There are no results yet\"\n noResults: \"Ainda não possui resultados\",\n // \"Per Values\"\n showPerValues: \"Por valores\",\n // \"Per Columns\"\n showPerColumns: \"Por colunas\",\n // \"Answer\"\n answer: \"Resposta\",\n // \"Correct answer: \"\n correctAnswer: \"Resposta correta: \",\n // \"Percent\"\n percent: \"Percentagem\",\n // [Auto-translated] \"Percentage\"\n percentage: \"Porcentagem\",\n // [Auto-translated] \"Chart\"\n statistics_chart: \"Gráfico\",\n // \"Responses\"\n responses: \"Respostas\",\n // [Auto-translated] \"NPS\"\n visualizer_nps: \"NPS\",\n // [Auto-translated] \"Chart\"\n visualizer_boolean: \"Gráfico\",\n // [Auto-translated] \"Table\"\n visualizer_options: \"Mesa\",\n // [Auto-translated] \"NPS\"\n npsScore: \"NPS\",\n // [Auto-translated] \"Promoters\"\n npsPromoters: \"Promotores\",\n // [Auto-translated] \"Passives\"\n npsPassives: \"Passivos\",\n // [Auto-translated] \"Detractors\"\n npsDetractors: \"Detratores\",\n // [Auto-translated] \"Category (X Axis):\"\n axisXSelectorTitle: \"Categoria (eixo X):\",\n // [Auto-translated] \"Legend (Series):\"\n axisYSelectorTitle: \"Lenda (Série):\",\n // [Auto-translated] \"Segments:\"\n axisXAlternativeSelectorTitle: \"Segmentos:\",\n // [Auto-translated] \"Groups:\"\n axisYAlternativeSelectorTitle: \"Grupos:\",\n // [Auto-translated] \"Not selected\"\n notSelected: \"Não selecionado\",\n // [Auto-translated] \"Default\"\n intervalMode_default: \"Inadimplência\",\n // [Auto-translated] \"Decades\"\n intervalMode_decades: \"Décadas\",\n // [Auto-translated] \"Years\"\n intervalMode_years: \"Anos\",\n // [Auto-translated] \"Quarters\"\n intervalMode_quarters: \"Quartos\",\n // [Auto-translated] \"Months\"\n intervalMode_months: \"Meses\",\n // [Auto-translated] \"Days\"\n intervalMode_days: \"Dias\",\n // [Auto-translated] \"Custom\"\n intervalMode_custom: \"Costume\",\n // [Auto-translated] \"Auto\"\n intervalMode_auto: \"Automático\",\n // [Auto-translated] \"Intervals:\"\n intervalModeTitle: \"Intervalos:\",\n // [Auto-translated] \"Show individual values\"\n noRunningTotals: \"Mostrar valores individuais\",\n // [Auto-translated] \"Show running totals\"\n runningTotals: \"Mostrar totais acumulados\",\n // [Auto-translated] \"Compare periods\"\n groupDateSeries: \"Comparar períodos\",\n // [Auto-translated] \"View timeline\"\n ungroupDateSeries: \"Ver linha do tempo\",\n // [Auto-translated] \"None\"\n noneAggregateText: \"Nenhum\",\n // [Auto-translated] \"Aggregate:\"\n selectAggregateText: \"Agregado:\",\n // [Auto-translated] \"Year ends with\"\n groupedYearsAxisTitle: \"O ano termina com\"\n};\n\nsetupLocale({ localeCode: \"pt\", strings: portugueseStrings, nativeName: \"Português\" });","import { setupLocale } from \"../localizationManager\";\n\nexport var russianStrings = {\n // \"Group By Me\"\n groupButton: \"Сгруппировать\",\n // \"Ungroup By Me\"\n ungroupButton: \"Разгруппировать\",\n // \"Select Me\"\n selectButton: \"Выбрать\",\n // \"Hide column\"\n hideColumn: \"Скрыть столбец\",\n // \"Show column\"\n showColumn: \"Показать столбец\",\n // \"Make column private\"\n makePrivateColumn: \"Сделать столбец приватным\",\n // \"Make column public\"\n makePublicColumn: \"Сделать столбец публичным\",\n // \"Move to Detail\"\n moveToDetail: \"Спрятать в раскрывающуюся секцию\",\n // \"Show as Column\"\n showAsColumn: \"Показать как столбец\",\n // \"Search...\"\n filterPlaceholder: \"Поиск...\",\n // \"Remove rows\"\n removeRows: \"Удалить строки\",\n // \"Show\"\n showLabel: \"Показать\",\n // \"entries\"\n entriesLabel: \"записей\",\n // \"Texts in table\"\n visualizer_text: \"Таблица\",\n // \"Wordcloud\"\n visualizer_wordcloud: \"Облако тэгов\",\n // \"Histogram\"\n visualizer_histogram: \"Гистограмма\",\n // \"Average\"\n visualizer_number: \"Среднее значение\",\n // \"Table\"\n visualizer_choices: \"Таблица\",\n // \"Chart\"\n visualizer_selectBase: \"Диаграмма\",\n // \"Chart\"\n visualizer_matrix: \"Диаграмма\",\n // \"Bar\"\n chartType_bar: \"Столбчатая диаграмма\",\n // \"Vertical Bar\"\n chartType_vbar: \"Вертикальная столбчатая диаграмма\",\n // \"Stacked Bar\"\n chartType_stackedbar: \"Столбчатая диаграмма с накоплением\",\n // \"Doughnut\"\n chartType_doughnut: \"Кольцевая диаграмма\",\n // \"Pie\"\n chartType_pie: \"Круговая диаграмма\",\n // \"Scatter\"\n chartType_scatter: \"Точечная диаграмма\",\n // \"Gauge\"\n chartType_gauge: \"Измерительная диаграмма\",\n // \"Bullet\"\n chartType_bullet: \"Маркированная диаграмма\",\n // [Auto-translated] \"Line\"\n chartType_line: \"Линия\",\n // [Auto-translated] \"Radar\"\n chartType_radar: \"Радар\",\n // \"Hide\"\n hideButton: \"Скрыть\",\n // \"Make private\"\n makePrivateButton: \"Сделать приватным\",\n // \"Make public\"\n makePublicButton: \"Сделать публичным\",\n // \"Show\"\n showButton: \"Показать\",\n // \"Filter\"\n filter: \"Фильтр\",\n // \"Reset Filter\"\n resetFilter: \"Очистить фильтр\",\n // \"Change Locale\"\n changeLocale: \"Сменить язык\",\n // \"Clear\"\n clearButton: \"Очистить\",\n // \"Choose question to show...\"\n addElement: \"Выберите вопрос...\",\n // \"Default Order\"\n defaultOrder: \"Порядок по умолчанию\",\n // \"Ascending\"\n ascOrder: \"Сортировать по возрастанию\",\n // \"Descending\"\n descOrder: \"Сортировать по убыванию\",\n // \"Show minor columns\"\n showMinorColumns: \"Показать второстепенные столбцы\",\n // [Auto-translated] \"Actions\"\n actionsColumn: \"Действия\",\n // \"Other items and comments\"\n otherCommentTitle: \"Другое и комментарии\",\n // \"Show percentages\"\n showPercentages: \"Показать проценты\",\n // \"Hide percentages\"\n hidePercentages: \"Скрыть проценты\",\n // \"PDF\"\n pdfDownloadCaption: \"PDF\",\n // \"Excel\"\n xlsxDownloadCaption: \"Excel\",\n // \"CSV\"\n csvDownloadCaption: \"CSV\",\n // \"Download plot as a PNG file\"\n saveDiagramAsPNG: \"Скачать диаграмму в формате PNG\",\n // \"Hide empty answers\"\n hideEmptyAnswers: \"Скрыть пустые ответы\",\n // \"Show empty answers\"\n showEmptyAnswers: \"Показать пустые ответы\",\n // \"All answers\"\n \"topNValueText-1\": \"Все ответы\",\n // \"Top 5 answers\"\n topNValueText5: \"Первые 5 ответов\",\n // \"Top 10 answers\"\n topNValueText10: \"Первые 10 ответов\",\n // \"Top 20 answers\"\n topNValueText20: \"Первые 20 ответов\",\n // \"Hide missing answers\"\n hideMissingAnswers: \"Скрыть отсутствующие ответы\",\n // \"Show missing answers\"\n showMissingAnswers: \"Показать отсутствующие ответы\",\n // \"Missing answers\"\n missingAnswersLabel: \"Отсутствующие ответы\",\n // \"This question type is not visualized yet\"\n noVisualizerForQuestion: \"Этот тип вопроса не поддерживается\",\n // \"There are no results yet\"\n noResults: \"Результаты отсутствуют\",\n // \"Per Values\"\n showPerValues: \"По значениям\",\n // \"Per Columns\"\n showPerColumns: \"По столбцам\",\n // \"Answer\"\n answer: \"Ответ\",\n // \"Correct answer: \"\n correctAnswer: \"Правильный ответ: \",\n // \"Percent\"\n percent: \"процентов\",\n // [Auto-translated] \"Percentage\"\n percentage: \"Процент\",\n // [Auto-translated] \"Chart\"\n statistics_chart: \"Диаграмма\",\n // \"Responses\"\n responses: \"ответов\",\n // [Auto-translated] \"NPS\"\n visualizer_nps: \"NPS\",\n // [Auto-translated] \"Chart\"\n visualizer_boolean: \"Диаграмма\",\n // [Auto-translated] \"Table\"\n visualizer_options: \"Стол\",\n // [Auto-translated] \"NPS\"\n npsScore: \"NPS\",\n // [Auto-translated] \"Promoters\"\n npsPromoters: \"Промоутеров\",\n // [Auto-translated] \"Passives\"\n npsPassives: \"Пассивные способности\",\n // [Auto-translated] \"Detractors\"\n npsDetractors: \"Критики\",\n // [Auto-translated] \"Category (X Axis):\"\n axisXSelectorTitle: \"Категория (ось X):\",\n // [Auto-translated] \"Legend (Series):\"\n axisYSelectorTitle: \"Легенда (Серия):\",\n // [Auto-translated] \"Segments:\"\n axisXAlternativeSelectorTitle: \"Сегментов:\",\n // [Auto-translated] \"Groups:\"\n axisYAlternativeSelectorTitle: \"Группы:\",\n // [Auto-translated] \"Not selected\"\n notSelected: \"Не выбрано\",\n // [Auto-translated] \"Default\"\n intervalMode_default: \"По умолчанию\",\n // [Auto-translated] \"Decades\"\n intervalMode_decades: \"Десятилетий\",\n // [Auto-translated] \"Years\"\n intervalMode_years: \"Годы\",\n // [Auto-translated] \"Quarters\"\n intervalMode_quarters: \"Квартира\",\n // [Auto-translated] \"Months\"\n intervalMode_months: \"Месяцы\",\n // [Auto-translated] \"Days\"\n intervalMode_days: \"Дни недели\",\n // [Auto-translated] \"Custom\"\n intervalMode_custom: \"Обычай\",\n // [Auto-translated] \"Auto\"\n intervalMode_auto: \"Авто\",\n // [Auto-translated] \"Intervals:\"\n intervalModeTitle: \"Интервалы:\",\n // [Auto-translated] \"Show individual values\"\n noRunningTotals: \"Отображение отдельных значений\",\n // [Auto-translated] \"Show running totals\"\n runningTotals: \"Показать промежуточные итоги\",\n // [Auto-translated] \"Compare periods\"\n groupDateSeries: \"Сравнение периодов\",\n // [Auto-translated] \"View timeline\"\n ungroupDateSeries: \"Просмотр временной шкалы\",\n // [Auto-translated] \"None\"\n noneAggregateText: \"Никакой\",\n // [Auto-translated] \"Aggregate:\"\n selectAggregateText: \"Совокупность:\",\n // [Auto-translated] \"Year ends with\"\n groupedYearsAxisTitle: \"Год заканчивается с\"\n};\n\nsetupLocale({ localeCode: \"ru\", strings: russianStrings, nativeName: \"Русский\" });","import { setupLocale } from \"../localizationManager\";\n\nexport var spanishStrings = {\n // \"Group By Me\"\n groupButton: \"Grupo Por Mí\",\n // \"Ungroup By Me\"\n ungroupButton: \"Desagrupar por mí\",\n // \"Select Me\"\n selectButton: \"Seleccionarme\",\n // \"Hide column\"\n hideColumn: \"Ocultar columna\",\n // \"Show column\"\n showColumn: \"Mostrar columna\",\n // \"Make column private\"\n makePrivateColumn: \"Hacer que la columna sea privada\",\n // \"Make column public\"\n makePublicColumn: \"Hacer pública la columna\",\n // \"Move to Detail\"\n moveToDetail: \"Mover al detalle\",\n // \"Show as Column\"\n showAsColumn: \"Mostrar como columna\",\n // \"Search...\"\n filterPlaceholder: \"Buscar ...\",\n // \"Remove rows\"\n removeRows: \"Eliminar filas\",\n // \"Show\"\n showLabel: \"Mostrar\",\n // \"entries\"\n entriesLabel: \"Entradas\",\n // \"Texts in table\"\n visualizer_text: \"Textos en tabla\",\n // \"Wordcloud\"\n visualizer_wordcloud: \"Wordcloud\",\n // \"Histogram\"\n visualizer_histogram: \"Histograma\",\n // \"Average\"\n visualizer_number: \"Promedio\",\n // \"Table\"\n visualizer_choices: \"Mesa\",\n // \"Chart\"\n visualizer_selectBase: \"Gráfico\",\n // [Auto-translated] \"Chart\"\n visualizer_matrix: \"Gráfico\",\n // [Auto-translated] \"Bar\"\n chartType_bar: \"Barra\",\n // \"Vertical Bar\"\n chartType_vbar: \"Barra vertical\",\n // \"Stacked Bar\"\n chartType_stackedbar: \"Barra apilada\",\n // \"Doughnut\"\n chartType_doughnut: \"Donut\",\n // \"Pie\"\n chartType_pie: \"Pie\",\n // \"Scatter\"\n chartType_scatter: \"Dispersión\",\n // \"Gauge\"\n chartType_gauge: \"Gauge\",\n // \"Bullet\"\n chartType_bullet: \"Bullet\",\n // [Auto-translated] \"Line\"\n chartType_line: \"Línea\",\n // [Auto-translated] \"Radar\"\n chartType_radar: \"Radar\",\n // \"Hide\"\n hideButton: \"Ocultar\",\n // \"Make private\"\n makePrivateButton: \"Hacer privado\",\n // \"Make public\"\n makePublicButton: \"Hacer público\",\n // \"Show\"\n showButton: \"Mostrar\",\n // \"Filter\"\n filter: \"Filtro\",\n // \"Reset Filter\"\n resetFilter: \"Restablecer filtro\",\n // \"Change Locale\"\n changeLocale: \"Cambiar configuración regional\",\n // \"Clear\"\n clearButton: \"Borrar\",\n // \"Choose question to show...\"\n addElement: \"Elija la pregunta para mostrar ...\",\n // \"Default Order\"\n defaultOrder: \"Orden predeterminado\",\n // \"Ascending\"\n ascOrder: \"Ascendente\",\n // \"Descending\"\n descOrder: \"Descendente\",\n // \"Show minor columns\"\n showMinorColumns: \"Mostrar columnas secundarias\",\n // [Auto-translated] \"Actions\"\n actionsColumn: \"Acciones\",\n // \"Other items and comments\"\n otherCommentTitle: \"Otros elementos y comentarios\",\n // \"Show percentages\"\n showPercentages: \"Mostrar porcentajes\",\n // \"Hide percentages\"\n hidePercentages: \"Ocultar porcentajes\",\n // \"PDF\"\n pdfDownloadCaption: \"PDF\",\n // \"Excel\"\n xlsxDownloadCaption: \"Excel\",\n // \"CSV\"\n csvDownloadCaption: \"CSV\",\n // \"Download plot as a PNG file\"\n saveDiagramAsPNG: \"Descargar el gráfico como png\",\n // \"Hide empty answers\"\n hideEmptyAnswers: \"Ocultar respuestas vacías\",\n // \"Show empty answers\"\n showEmptyAnswers: \"Mostrar respuestas vacías\",\n // \"All answers\"\n \"topNValueText-1\": \"Todas las respuestas\",\n // \"Top 5 answers\"\n topNValueText5: \"Las 5 respuestas principales\",\n // \"Top 10 answers\"\n topNValueText10: \"Las 10 respuestas principales\",\n // \"Top 20 answers\"\n topNValueText20: \"20 respuestas principales\",\n // \"Hide missing answers\"\n hideMissingAnswers: \"Ocultar las respuestas que faltan\",\n // \"Show missing answers\"\n showMissingAnswers: \"Mostrar las respuestas que faltan\",\n // \"Missing answers\"\n missingAnswersLabel: \"Respuestas faltantes\",\n // \"This question type is not visualized yet\"\n noVisualizerForQuestion: \"Este tipo de pregunta aún no se visualiza\",\n // \"There are no results yet\"\n noResults: \"Aún no hay resultados\",\n // \"Per Values\"\n showPerValues: \"Por valores\",\n // \"Per Columns\"\n showPerColumns: \"Por columnas\",\n // \"Answer\"\n answer: \"Respuesta\",\n // \"Correct answer: \"\n correctAnswer: \"Respuesta correcta: \",\n // \"Percent\"\n percent: \"Por ciento\",\n // [Auto-translated] \"Percentage\"\n percentage: \"Porcentaje\",\n // [Auto-translated] \"Chart\"\n statistics_chart: \"Gráfico\",\n // \"Responses\"\n responses: \"Respuestas\",\n // [Auto-translated] \"NPS\"\n visualizer_nps: \"NPS\",\n // [Auto-translated] \"Chart\"\n visualizer_boolean: \"Gráfico\",\n // [Auto-translated] \"Table\"\n visualizer_options: \"Mesa\",\n // [Auto-translated] \"NPS\"\n npsScore: \"NPS\",\n // [Auto-translated] \"Promoters\"\n npsPromoters: \"Promotores\",\n // [Auto-translated] \"Passives\"\n npsPassives: \"Pasivos\",\n // [Auto-translated] \"Detractors\"\n npsDetractors: \"Detractores\",\n // [Auto-translated] \"Category (X Axis):\"\n axisXSelectorTitle: \"Categoría (eje X):\",\n // [Auto-translated] \"Legend (Series):\"\n axisYSelectorTitle: \"Leyenda (Serie):\",\n // [Auto-translated] \"Segments:\"\n axisXAlternativeSelectorTitle: \"Segmentos:\",\n // [Auto-translated] \"Groups:\"\n axisYAlternativeSelectorTitle: \"Grupos:\",\n // [Auto-translated] \"Not selected\"\n notSelected: \"No seleccionado\",\n // [Auto-translated] \"Default\"\n intervalMode_default: \"Predeterminado\",\n // [Auto-translated] \"Decades\"\n intervalMode_decades: \"Décadas\",\n // [Auto-translated] \"Years\"\n intervalMode_years: \"Años\",\n // [Auto-translated] \"Quarters\"\n intervalMode_quarters: \"Alojamiento\",\n // [Auto-translated] \"Months\"\n intervalMode_months: \"Meses\",\n // [Auto-translated] \"Days\"\n intervalMode_days: \"Días\",\n // [Auto-translated] \"Custom\"\n intervalMode_custom: \"Costumbre\",\n // [Auto-translated] \"Auto\"\n intervalMode_auto: \"Automático\",\n // [Auto-translated] \"Intervals:\"\n intervalModeTitle: \"Intervalos:\",\n // [Auto-translated] \"Show individual values\"\n noRunningTotals: \"Mostrar valores individuales\",\n // [Auto-translated] \"Show running totals\"\n runningTotals: \"Mostrar totales acumulados\",\n // [Auto-translated] \"Compare periods\"\n groupDateSeries: \"Comparar períodos\",\n // [Auto-translated] \"View timeline\"\n ungroupDateSeries: \"Ver cronograma\",\n // [Auto-translated] \"None\"\n noneAggregateText: \"Ninguno\",\n // [Auto-translated] \"Aggregate:\"\n selectAggregateText: \"Agregado:\",\n // [Auto-translated] \"Year ends with\"\n groupedYearsAxisTitle: \"El año termina con\"\n};\n\nsetupLocale({ localeCode: \"es\", strings: spanishStrings, nativeName: \"Español\" });","import { setupLocale } from \"../localizationManager\";\n\nexport var swedishStrings = {\n // \"Group By Me\"\n groupButton: \"Gruppera av mig\",\n // \"Ungroup By Me\"\n ungroupButton: \"Avgruppera av mig\",\n // \"Select Me\"\n selectButton: \"Välj mig\",\n // \"Hide column\"\n hideColumn: \"Göm kolumn\",\n // \"Show column\"\n showColumn: \"Visa kolumn\",\n // \"Make column private\"\n makePrivateColumn: \"Gör kolumn privat\",\n // \"Make column public\"\n makePublicColumn: \"Gör kolumn offentlig\",\n // \"Move to Detail\"\n moveToDetail: \"Flytta till detalj\",\n // \"Show as Column\"\n showAsColumn: \"Visa som kolumn\",\n // \"Search...\"\n filterPlaceholder: \"Sök...\",\n // \"Remove rows\"\n removeRows: \"Ta bort rader\",\n // \"Show\"\n showLabel: \"Visa\",\n // \"entries\"\n entriesLabel: \"poster\",\n // \"Texts in table\"\n visualizer_text: \"Texter i tabell\",\n // \"Wordcloud\"\n visualizer_wordcloud: \"Ordmoln\",\n // \"Histogram\"\n visualizer_histogram: \"Histogram\",\n // \"Average\"\n visualizer_number: \"Genomsnitt\",\n // \"Table\"\n visualizer_choices: \"Tabell\",\n // \"Chart\"\n visualizer_selectBase: \"Diagram\",\n // \"Chart\"\n visualizer_matrix: \"Diagram\",\n // \"Bar\"\n chartType_bar: \"Stapel\",\n // \"Vertical Bar\"\n chartType_vbar: \"Vertikal stapel\",\n // \"Stacked Bar\"\n chartType_stackedbar: \"Staplad stapel\",\n // \"Doughnut\"\n chartType_doughnut: \"Ring\",\n // \"Pie\"\n chartType_pie: \"Cirkel\",\n // \"Scatter\"\n chartType_scatter: \"Punkt\",\n // \"Gauge\"\n chartType_gauge: \"Mätare\",\n // \"Bullet\"\n chartType_bullet: \"Bullet\",\n // \"Line\"\n chartType_line: \"Linje\",\n // \"Radar\"\n chartType_radar: \"Radar\",\n // \"Hide\"\n hideButton: \"Göm\",\n // \"Make private\"\n makePrivateButton: \"Gör privat\",\n // \"Make public\"\n makePublicButton: \"Gör offentlig\",\n // \"Show\"\n showButton: \"Visa\",\n // \"Filter\"\n filter: \"Filter\",\n // \"Reset Filter\"\n resetFilter: \"Återställ filter\",\n // \"Change Locale\"\n changeLocale: \"Ändra språk\",\n // \"Clear\"\n clearButton: \"Rensa\",\n // \"Choose question to show...\"\n addElement: \"Välj fråga att visa...\",\n // \"Default Order\"\n defaultOrder: \"Standard ordning\",\n // \"Ascending\"\n ascOrder: \"Stigande\",\n // \"Descending\"\n descOrder: \"Fallande\",\n // \"Show minor columns\"\n showMinorColumns: \"Visa mindre kolumner\",\n // \"Actions\"\n actionsColumn: \"Åtgärder\",\n // \"Other items and comments\"\n otherCommentTitle: \"Övriga objekt och kommentarer\",\n // \"Show percentages\"\n showPercentages: \"Visa procent\",\n // \"Hide percentages\"\n hidePercentages: \"Göm procent\",\n // \"PDF\"\n pdfDownloadCaption: \"PDF\",\n // \"Excel\"\n xlsxDownloadCaption: \"Excel\",\n // \"CSV\"\n csvDownloadCaption: \"CSV\",\n // \"Download plot as a PNG file\"\n saveDiagramAsPNG: \"Ladda ner diagram som PNG-fil\",\n // \"Hide empty answers\"\n hideEmptyAnswers: \"Göm tomma svar\",\n // \"Show empty answers\"\n showEmptyAnswers: \"Visa tomma svar\",\n // \"All answers\"\n \"topNValueText-1\": \"Alla svar\",\n // \"Top 5 answers\"\n topNValueText5: \"Topp 5 svar\",\n // \"Top 10 answers\"\n topNValueText10: \"Topp 10 svar\",\n // \"Top 20 answers\"\n topNValueText20: \"Topp 20 svar\",\n // \"Hide missing answers\"\n hideMissingAnswers: \"Göm saknade svar\",\n // \"Show missing answers\"\n showMissingAnswers: \"Visa saknade svar\",\n // \"Missing answers\"\n missingAnswersLabel: \"Saknade svar\",\n // \"This question type is not visualized yet\"\n noVisualizerForQuestion: \"Detta frågetyp är inte visualiserad ännu\",\n // \"There are no results yet\"\n noResults: \"Det finns inga resultat ännu\",\n // \"Per Values\"\n showPerValues: \"Per värden\",\n // \"Per Columns\"\n showPerColumns: \"Per kolumner\",\n // \"Answer\"\n answer: \"Svar\",\n // \"Correct answer: \"\n correctAnswer: \"Rätt svar: \",\n // \"Percent\"\n percent: \"Procent\",\n // \"Percentage\"\n percentage: \"Procent\",\n // \"Chart\"\n statistics_chart: \"Diagram\",\n // \"Responses\"\n responses: \"Svar\",\n // \"NPS\"\n visualizer_nps: \"NPS\",\n // [Auto-translated] \"Chart\"\n visualizer_boolean: \"Diagram\",\n // [Auto-translated] \"Table\"\n visualizer_options: \"Bord\",\n // \"NPS\"\n npsScore: \"NPS\",\n // \"Promoters\"\n npsPromoters: \"Promotorer\",\n // \"Passives\"\n npsPassives: \"Passiva\",\n // \"Detractors\"\n npsDetractors: \"Kritiker\",\n // \"Category (X Axis):\"\n axisXSelectorTitle: \"X-axel:\",\n // \"Legend (Series):\"\n axisYSelectorTitle: \"Y-axel:\",\n // [Auto-translated] \"Segments:\"\n axisXAlternativeSelectorTitle: \"Segment:\",\n // [Auto-translated] \"Groups:\"\n axisYAlternativeSelectorTitle: \"Grupper:\",\n // [Auto-translated] \"Not selected\"\n notSelected: \"Inte valt\",\n // [Auto-translated] \"Default\"\n intervalMode_default: \"Standard\",\n // [Auto-translated] \"Decades\"\n intervalMode_decades: \"Årtionden\",\n // [Auto-translated] \"Years\"\n intervalMode_years: \"År\",\n // [Auto-translated] \"Quarters\"\n intervalMode_quarters: \"Bostad\",\n // [Auto-translated] \"Months\"\n intervalMode_months: \"Månader\",\n // [Auto-translated] \"Days\"\n intervalMode_days: \"Dagar\",\n // [Auto-translated] \"Custom\"\n intervalMode_custom: \"Sed\",\n // [Auto-translated] \"Auto\"\n intervalMode_auto: \"Bil\",\n // [Auto-translated] \"Intervals:\"\n intervalModeTitle: \"Mellanrum:\",\n // [Auto-translated] \"Show individual values\"\n noRunningTotals: \"Visa individuella värden\",\n // [Auto-translated] \"Show running totals\"\n runningTotals: \"Visa löpande totaler\",\n // [Auto-translated] \"Compare periods\"\n groupDateSeries: \"Jämför perioder\",\n // [Auto-translated] \"View timeline\"\n ungroupDateSeries: \"Visa tidslinjen\",\n // [Auto-translated] \"None\"\n noneAggregateText: \"Ingen\",\n // [Auto-translated] \"Aggregate:\"\n selectAggregateText: \"Aggregat:\",\n // [Auto-translated] \"Year ends with\"\n groupedYearsAxisTitle: \"Året slutar med\"\n};\n\nsetupLocale({ localeCode: \"sv\", strings: swedishStrings, nativeName: \"Svenska\" });","import { Question, QuestionBooleanModel } from \"survey-core\";\nimport { ItemValue } from \"survey-core\";\nimport { SelectBase } from \"./selectBase\";\nimport { localization } from \"./localizationManager\";\nimport { VisualizationManager } from \"./visualizationManager\";\n\nexport class BooleanModel extends SelectBase {\n\n constructor(\n question: Question,\n data: Array<{ [index: string]: any }>,\n options?: Object,\n name?: string\n ) {\n super(question, data, options, name || \"boolean\");\n }\n\n protected getCorrectAnswerText(): string {\n const correctAnswerValue = this.booleanQuestion.correctAnswer;\n if (this.booleanQuestion.valueTrue !== undefined && this.booleanQuestion.valueTrue === correctAnswerValue || !!correctAnswerValue) {\n return this.booleanQuestion.locLabelTrue.textOrHtml;\n }\n if (this.booleanQuestion.valueFalse !== undefined && this.booleanQuestion.valueFalse === correctAnswerValue || !correctAnswerValue) {\n return this.booleanQuestion.locLabelFalse.textOrHtml;\n }\n return correctAnswerValue;\n }\n\n public get booleanQuestion() {\n return <QuestionBooleanModel>this.question;\n }\n\n public static trueColor = \"\";\n public static falseColor = \"\";\n\n public getSelectedItemByText(itemText: string) {\n const labels = this.getLabels();\n const values = this.getValues();\n return new ItemValue(values[labels.indexOf(itemText)], itemText);\n }\n\n getValues(): Array<any> {\n const values = [\n this.booleanQuestion.valueTrue !== undefined\n ? this.booleanQuestion.valueTrue\n : true,\n this.booleanQuestion.valueFalse !== undefined\n ? this.booleanQuestion.valueFalse\n : false,\n ];\n if (this.showMissingAnswers) {\n values.push(undefined);\n }\n return values;\n }\n\n getLabels(): Array<string> {\n var labels = [].concat(this.getValues());\n if (this.booleanQuestion.labelTrue !== undefined) {\n labels[0] = this.booleanQuestion.locLabelTrue.textOrHtml;\n }\n if (this.booleanQuestion.labelFalse !== undefined) {\n labels[1] = this.booleanQuestion.locLabelFalse.textOrHtml;\n }\n if (this.showMissingAnswers) {\n labels[2] = localization.getString(\"missingAnswersLabel\");\n }\n return labels;\n }\n}\n\nVisualizationManager.registerVisualizer(\"boolean\", BooleanModel);","import { Event } from \"survey-core\";\r\n\r\nexport type SummaryFilter = { field: string, type: string, value: any };\r\nexport type GetDataUsingCallbackFn = (params: { visualizer: any, filter?: Array<SummaryFilter>, callback?: (response: { data: Array<Object>, error?: any }) => void }) => void;\r\nexport type GetDataUsingPromiseFn = (params: { visualizer: any, filter?: Array<SummaryFilter> }) => Promise<Array<Object>>;\r\nexport type GetDataFn = GetDataUsingCallbackFn | GetDataUsingPromiseFn;\r\n\r\nexport class DataProvider {\r\n public static seriesMarkerKey = \"__sa_series_name\";\r\n\r\n private _filteredData: Array<{ [index: string]: any }>;\r\n protected filterValues: { [index: string]: any } = {};\r\n\r\n constructor(private _data: Array<any> | GetDataFn = []) {\r\n }\r\n\r\n public get data(): Array<any> {\r\n if(Array.isArray(this._data)) {\r\n return this._data;\r\n }\r\n return undefined;\r\n }\r\n public set data(data: Array<any> | GetDataFn) {\r\n if(Array.isArray(data)) {\r\n this._data = [].concat(data);\r\n } else {\r\n this._data = data;\r\n }\r\n this.raiseDataChanged();\r\n }\r\n public get dataFn(): GetDataFn {\r\n if(typeof this._data === \"function\") {\r\n return this._data;\r\n }\r\n return undefined;\r\n }\r\n\r\n public get filteredData(): Array<any> {\r\n if (this._filteredData === undefined) {\r\n let filterKeys = Object.keys(this.filterValues);\r\n if (filterKeys.length > 0) {\r\n this._filteredData = this.data.filter((item) => {\r\n return !Object.keys(this.filterValues).some(\r\n (key) => {\r\n const filterValue = this.filterValues[key];\r\n const filterValueType = typeof filterValue;\r\n const questionValue = item[key];\r\n if (Array.isArray(questionValue)) {\r\n if (filterValueType === \"object\") {\r\n return !questionArrayValueContainsValue(questionValue, filterValue);\r\n } else {\r\n return questionValue.indexOf(filterValue) == -1;\r\n }\r\n }\r\n if (typeof questionValue === \"object\") {\r\n if (filterValueType !== \"object\")\r\n return true;\r\n return !questionValueContainsValue(questionValue, filterValue);\r\n }\r\n const seriesValue = item[DataProvider.seriesMarkerKey];\r\n if (!!seriesValue && filterValueType === \"object\") {\r\n return questionValue !== filterValue[seriesValue];\r\n }\r\n if (filterValueType === \"object\" && filterValue.start !== undefined && filterValue.end !== undefined) {\r\n let continioiusValue = typeof questionValue === \"number\" ? questionValue : Date.parse(questionValue);\r\n if (isNaN(continioiusValue)) {\r\n continioiusValue = parseFloat(questionValue);\r\n if (isNaN(continioiusValue)) {\r\n return true;\r\n }\r\n }\r\n return continioiusValue < filterValue.start || continioiusValue >= filterValue.end;\r\n }\r\n return item[key] !== this.filterValues[key];\r\n }\r\n );\r\n });\r\n } else {\r\n this._filteredData = this.data;\r\n }\r\n }\r\n return this._filteredData;\r\n }\r\n\r\n /**\r\n * Sets filter by question name and value.\r\n */\r\n public setFilter(questionName: string, selectedValue: any): void {\r\n var filterChanged = true;\r\n if (selectedValue !== undefined) {\r\n filterChanged = this.filterValues[questionName] !== selectedValue;\r\n if (filterChanged) {\r\n this.filterValues[questionName] = selectedValue;\r\n }\r\n } else {\r\n filterChanged = this.filterValues[questionName] !== undefined;\r\n if (filterChanged) {\r\n delete this.filterValues[questionName];\r\n }\r\n }\r\n if (filterChanged) {\r\n this.raiseFilterChanged(questionName, selectedValue);\r\n this.raiseDataChanged();\r\n }\r\n }\r\n\r\n /**\r\n * Resets filter.\r\n */\r\n public resetFilter(): void {\r\n if (Object.keys(this.filterValues).length === 0) {\r\n return;\r\n }\r\n Object.keys(this.filterValues).forEach(key => delete this.filterValues[key]);\r\n this.raiseFilterChanged();\r\n this.raiseDataChanged();\r\n }\r\n\r\n /**\r\n * Fires when data has been changed.\r\n */\r\n public onFilterChanged = new Event<\r\n (sender: DataProvider, options: any) => any,\r\n DataProvider,\r\n any\r\n >();\r\n\r\n public raiseFilterChanged(questionName?: string, selectedValue?: any): void {\r\n if (!this.onFilterChanged.isEmpty) {\r\n this.onFilterChanged.fire(this, { questionName, selectedValue });\r\n }\r\n }\r\n\r\n /**\r\n * Fires when data has been changed.\r\n */\r\n public onDataChanged = new Event<\r\n (sender: DataProvider, options: any) => any,\r\n DataProvider,\r\n any\r\n >();\r\n\r\n public raiseDataChanged(questionName?: string): void {\r\n this._filteredData = undefined;\r\n if (!this.onDataChanged.isEmpty) {\r\n this.onDataChanged.fire(this, { questionName });\r\n }\r\n }\r\n\r\n public getFilters(): SummaryFilter[] {\r\n return Object.keys(this.filterValues).map(key => ({ field: key, type: \"=\", value: this.filterValues[key] }));\r\n }\r\n\r\n public fixDropdownData(dataNames: string[]): void {\r\n (this.data || []).forEach((dataItem) => {\r\n let rawDataItem = dataItem[dataNames[0]];\r\n if (!!rawDataItem && typeof rawDataItem === \"object\" && !Array.isArray(rawDataItem)) {\r\n const arrayData = [];\r\n Object.keys(rawDataItem).forEach((key) => {\r\n var nestedDataItem = Object.assign({}, rawDataItem[key]);\r\n nestedDataItem[DataProvider.seriesMarkerKey] = key;\r\n arrayData.push(nestedDataItem);\r\n });\r\n dataItem[dataNames[0]] = arrayData;\r\n }\r\n });\r\n }\r\n}\r\n\r\nfunction questionArrayValueContainsValue(questionValues: Array<any>, filterValue: any) {\r\n for(let i = 0; i < questionValues.length; i ++) {\r\n if(questionValueContainsValue(questionValues[i], filterValue)) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n}\r\n\r\nfunction questionValueContainsValue(questionValue: any, filterValue: any) {\r\n const questionValueKeys = Object.keys(questionValue);\r\n const filterValueKeys = Object.keys(filterValue);\r\n\r\n if (filterValueKeys.length > questionValueKeys.length) return false;\r\n\r\n for (var key of filterValueKeys) {\r\n if (filterValue[key] != questionValue[key]) return false;\r\n }\r\n\r\n return true;\r\n}\r\n","export * from \"../localizationManager\";\n\n//localization\nimport \"../analytics-localization/farsi\";\nimport \"../analytics-localization/french\";\nimport \"../analytics-localization/german\";\nimport \"../analytics-localization/norwegian\";\nimport \"../analytics-localization/portuguese\";\nimport \"../analytics-localization/russian\";\nimport \"../analytics-localization/dutch\";\nimport \"../analytics-localization/spanish\";\nimport \"../analytics-localization/italian\";\nimport \"../analytics-localization/arabic\";\nimport \"../analytics-localization/japanese\";\nimport \"../analytics-localization/polish\";\nimport \"../analytics-localization/finnish\";\nimport \"../analytics-localization/swedish\";\n\nexport * from \"../dataProvider\";\nexport * from \"../visualizerFactory\";\n\nexport * from \"../selectBase\";\nexport * from \"../matrix\";\nexport * from \"../boolean\";\nexport * from \"../histogram\";\nexport * from \"../number\";\nexport * from \"../visualizerBase\";\nexport * from \"../visualizationManager\";\nexport * from \"../visualizationPanel\";\nexport * from \"../visualizationPanelDynamic\";\nexport * from \"../visualizationMatrixDynamic\";\nexport * from \"../visualizationMatrixDropdown\";\nexport * from \"../alternativeVizualizersWrapper\";\nexport * from \"../visualizationComposite\";\n\nexport * from \"../wordcloud/wordcloud\";\nexport * from \"../wordcloud/stopwords/index\";\nexport * from \"../text\";\nexport * from \"../statistics-table\";\nexport * from \"../nps\";\nexport * from \"../ranking\";\nexport * from \"../pivot\";\n\nexport { DocumentHelper } from \"../utils/index\";\n","import { IVisualizerWithSelection } from \"./selectBase\";\r\nimport { DocumentHelper } from \"./utils\";\r\nimport { localization } from \"./localizationManager\";\r\n\r\nexport class FilterInfo {\r\n private _htmlElement: HTMLDivElement = undefined;\r\n private text: HTMLElement = undefined;\r\n\r\n constructor(visualizer: IVisualizerWithSelection) {\r\n this._htmlElement = <HTMLDivElement>(\r\n DocumentHelper.createElement(\"div\", \"sa-question__filter\")\r\n );\r\n this.text = DocumentHelper.createElement(\r\n \"span\",\r\n \"sa-question__filter-text\"\r\n );\r\n this._htmlElement.appendChild(this.text);\r\n const filterClear = DocumentHelper.createButton(() => {\r\n visualizer.setSelection(undefined);\r\n }, localization.getString(\"clearButton\"));\r\n this._htmlElement.appendChild(filterClear);\r\n }\r\n\r\n public get htmlElement() {\r\n return this._htmlElement;\r\n }\r\n\r\n public update(selection: { value: any, text: string }) {\r\n if (selection !== undefined && selection.value !== undefined) {\r\n this._htmlElement.style.display = \"inline-flex\";\r\n this.text.innerText = localization.getString(\"filter\") + \": [\" + selection.text + \"]\";\r\n } else {\r\n this._htmlElement.style.display = \"none\";\r\n this.text.innerText = \"\";\r\n }\r\n }\r\n}\r\n","import { ItemValue, Question } from \"survey-core\";\nimport { DataProvider } from \"./dataProvider\";\nimport { IAnswersData, SelectBase } from \"./selectBase\";\nimport { VisualizationManager } from \"./visualizationManager\";\nimport { getNestedDataRows, histogramStatisticsCalculator } from \"./statisticCalculators\";\nimport { DocumentHelper } from \"./utils\";\nimport { localization } from \"./localizationManager\";\n\nexport declare type HistogramIntervalMode = \"auto\" | \"custom\" | \"decades\" | \"years\" | \"quarters\" | \"months\" | \"days\";\nexport interface IHistogramInterval { start: number, end: number, label: string }\n\nfunction getQuarter(date: Date): string {\n switch(Math.floor(date.getMonth() / 3) + 1) {\n case 1: return \"I\";\n case 2: return \"II\";\n case 3: return \"III\";\n case 4: return \"IV\";\n }\n}\n\nexport function getBestIntervalMode(min: number, max: number): HistogramIntervalMode {\n const start = new Date(min);\n const end = new Date(max);\n const totalMonths = (end.getFullYear() - start.getFullYear()) * 12 + (end.getMonth() - start.getMonth());\n if(totalMonths > 10 * 12) return \"decades\";\n if(totalMonths > 2 * 12) return \"years\";\n if(totalMonths > 1 * 12) return \"quarters\";\n if(totalMonths > 4) return \"months\";\n return \"days\";\n}\n\nexport const intervalCalculators = {\n decades: (min: number, max: number) => {\n const intervals = [];\n let start = new Date(min);\n start.setFullYear(Math.floor(start.getFullYear() / 10) * 10);\n start.setMonth(0);\n start.setDate(1);\n start.setHours(0, 0, 0, 0);\n let startYear = start.getFullYear();\n const end = new Date(max);\n const endYear = end.getFullYear();\n while (startYear <= endYear) {\n const intervalStart = new Date(startYear, 0, 1);\n const intervalEnd = new Date(startYear + 10, 0, 1);\n intervals.push({\n start: intervalStart.getTime(),\n end: intervalEnd.getTime(),\n label: \"\" + startYear + \"s\"\n });\n startYear += 10;\n }\n return intervals;\n },\n years: (min: number, max: number) => {\n const intervals = [];\n let start = new Date(min);\n start.setMonth(0);\n start.setDate(1);\n start.setHours(0, 0, 0, 0);\n let startYear = start.getFullYear();\n const end = new Date(max);\n const endYear = end.getFullYear();\n while (startYear <= endYear) {\n const intervalStart = new Date(startYear, 0, 1);\n const intervalEnd = new Date(startYear + 1, 0, 1);\n intervals.push({\n start: intervalStart.getTime(),\n end: intervalEnd.getTime(),\n label: \"\" + startYear\n });\n startYear++;\n }\n return intervals;\n },\n months: (min: number, max: number) => {\n const intervals = [];\n let start = new Date(min);\n start.setDate(1);\n start.setHours(0, 0, 0, 0);\n let startYear = start.getFullYear();\n let startMonth = start.getMonth();\n const end = new Date(max);\n const endYear = end.getFullYear();\n const endMonth = end.getMonth();\n while (startYear < endYear || (startYear === endYear && startMonth <= endMonth)) {\n const intervalStart = new Date(startYear, startMonth, 1);\n const intervalEnd = new Date(startYear, startMonth + 1, 1);\n intervals.push({\n start: intervalStart.getTime(),\n end: intervalEnd.getTime(),\n label: intervalStart.toLocaleDateString(undefined, { year: \"numeric\", month: \"short\" })\n });\n startMonth++;\n if (startMonth >= 12) {\n startMonth = 0;\n startYear++;\n }\n }\n return intervals;\n },\n quarters: (min: number, max: number) => {\n const intervals = [];\n let start = new Date(min);\n start.setDate(1);\n start.setHours(0, 0, 0, 0);\n let startYear = start.getFullYear();\n let startMonth = start.getMonth();\n const end = new Date(max);\n const endYear = end.getFullYear();\n const endMonth = end.getMonth();\n while (startYear < endYear || (startYear === endYear && startMonth <= endMonth)) {\n const intervalStart = new Date(startYear, startMonth, 1);\n const intervalEnd = new Date(startYear, startMonth + 3, 1);\n intervals.push({\n start: intervalStart.getTime(),\n end: intervalEnd.getTime(),\n label: getQuarter(intervalStart) + \" \" + intervalStart.getFullYear().toString()\n });\n startMonth += 3;\n if (startMonth >= 12) {\n startMonth = startMonth % 12;\n startYear++;\n }\n }\n return intervals;\n },\n days: (min: number, max: number) => {\n const intervals = [];\n let start = new Date(min);\n start.setHours(0, 0, 0, 0);\n const end = new Date(max);\n end.setHours(0, 0, 0, 0);\n while (start <= end) {\n const intervalStart = new Date(start);\n const intervalEnd = new Date(start);\n intervalEnd.setDate(intervalEnd.getDate() + 1);\n intervals.push({\n start: intervalStart.getTime(),\n end: intervalEnd.getTime(),\n label: intervalStart.toLocaleDateString()\n });\n start.setDate(start.getDate() + 1);\n }\n return intervals;\n }\n};\n\nexport class HistogramModel extends SelectBase {\n protected valueType: \"date\" | \"number\" = \"number\";\n private _cachedValues: Array<{ original: any, continuous: number, row: any }> = undefined;\n private _continuousData: { [series: string]: Array<{continuous: number, row: any}> } = undefined;\n private _cachedIntervals: Array<{ start: number, end: number, label: string }> = undefined;\n private _intervalPrecision: number = 2;\n private showRunningTotalsBtn: HTMLElement = undefined;\n private showGroupedBtn: HTMLElement = undefined;\n private changeIntervalsModeSelector: HTMLDivElement = undefined;\n private aggregateDataNameSelector: HTMLDivElement = undefined;\n public static IntervalsCount = 10;\n public static UseIntervalsFrom = 10;\n\n constructor(\n question: Question,\n data: Array<{ [index: string]: any }>,\n options?: Object,\n name?: string\n ) {\n super(question, data, options, name || \"histogram\");\n this._transposeData = false;\n if (this.options.intervalPrecision !== undefined) {\n this._intervalPrecision = this.options.intervalPrecision;\n }\n const questionType = question.getType();\n if (questionType === \"text\" && (question[\"inputType\"] === \"date\" || question[\"inputType\"] === \"datetime\")) {\n this.valueType = \"date\";\n } else {\n this.valueType = \"number\";\n }\n this._intervalsMode = this.valueType === \"date\" ? \"auto\" : \"default\" as any;\n\n if(this.allowChangeIntervals) {\n this.registerToolbarItem(\"changeIntervalsMode\", () => {\n this.changeIntervalsModeSelector = DocumentHelper.createSelector(\n this.intervalModes.map((intervalModeValue) => {\n return {\n value: intervalModeValue,\n text: localization.getString(\"intervalMode_\" + intervalModeValue),\n };\n }),\n (option: any) => this.intervalsMode === option.value,\n (e: any) => {\n this.intervalsMode = e.target.value;\n },\n localization.getString(\"intervalModeTitle\")\n );\n return this.changeIntervalsModeSelector;\n });\n }\n if (this.possibleAggregateDataNames.length > 0) {\n this.registerToolbarItem(\"aggregateDataName\", () => {\n const choices = this.possibleAggregateDataNames.map((dataName) => {\n return typeof dataName === \"string\" ? { value: dataName, text: dataName } : dataName;\n });\n choices.unshift({ value: \"\", text: localization.getString(\"noneAggregateText\") }),\n\n this.aggregateDataNameSelector = DocumentHelper.createSelector(\n choices,\n (option: any) => this.aggregateDataName === option.value,\n (e) => {\n this.aggregateDataName = e.target.value;\n },\n localization.getString(\"selectAggregateText\")\n );\n this.updateAggregateDataNameSelector();\n return this.aggregateDataNameSelector;\n });\n }\n if(this.allowChangeIntervals && this.options.allowRunningTotals) {\n this.registerToolbarItem(\"showRunningTotals\", () => {\n this.showRunningTotalsBtn = DocumentHelper.createButton(() => {\n this.showRunningTotals = !this.showRunningTotals;\n });\n this.updateShowRunningTotalsBtn();\n return this.showRunningTotalsBtn;\n });\n }\n if(this.allowChangeIntervals && this.options.allowCompareDatePeriods) {\n this.registerToolbarItem(\"showGrouped\", () => {\n this.showGroupedBtn = DocumentHelper.createButton(() => {\n this.showGrouped = !this.showGrouped;\n });\n this.updateShowGroupedBtn();\n return this.showGroupedBtn;\n });\n }\n }\n\n private updateIntervalsModeSelector() {\n if (!!this.changeIntervalsModeSelector) {\n this.changeIntervalsModeSelector.getElementsByTagName(\n \"select\"\n )[0].value = this.intervalsMode;\n }\n }\n\n private updateAggregateDataNameSelector() {\n if (!!this.aggregateDataNameSelector) {\n this.aggregateDataNameSelector.getElementsByTagName(\n \"select\"\n )[0].value = this.aggregateDataName;\n }\n }\n\n private reset() {\n this._continuousData = undefined;\n this._cachedValues = undefined;\n this._cachedIntervals = undefined;\n }\n\n public getContinuousValue(value: any): number {\n if (this.valueType === \"date\") {\n return Date.parse(value);\n }\n return parseFloat(value);\n }\n\n public getString(value: number): string {\n if (this.valueType === \"date\") {\n return new Date(value).toLocaleDateString();\n }\n return \"\" + value;\n }\n\n private toPrecision(value: number) {\n const base = Math.pow(10, this._intervalPrecision);\n return Math.round(base * value) / base;\n }\n\n public getSelectedItemByText(itemText: string) {\n if (this.hasCustomIntervals || this.getContinuousValues().length > HistogramModel.UseIntervalsFrom) {\n const interval = this.intervals.filter(interval => interval.label === itemText)[0];\n return new ItemValue(interval, interval !== undefined ? interval.label : \"\");\n }\n const labels = this.getLabels();\n const labelIndex = labels.indexOf(itemText);\n return new ItemValue(this.getValues()[labelIndex], labels[labelIndex]);\n }\n\n /**\n * Updates visualizer data.\n */\n public updateData(data: Array<{ [index: string]: any }>) {\n this.reset();\n super.updateData(data);\n }\n\n protected onDataChanged() {\n this.reset();\n super.onDataChanged();\n }\n\n protected onSelectionChanged(item: ItemValue): void {\n if (item !== undefined && this.onDataItemSelected !== undefined) {\n if (this.valueType === \"date\") {\n const currIntervalCalueIndex = this.intervalModes.indexOf(this.intervalsMode);\n if(currIntervalCalueIndex > 0 && currIntervalCalueIndex < this.intervalModes.length - 1) {\n this.intervalsMode = this.intervalModes[currIntervalCalueIndex + 1];\n }\n }\n }\n super.onSelectionChanged(item);\n }\n\n protected getContinuousValues() {\n if (this._cachedValues === undefined) {\n const series = this.getSeriesValues();\n if (series.length === 0) {\n series.push(\"\");\n }\n this._continuousData = {};\n series.forEach(seriesValue => this._continuousData[seriesValue] = []);\n const hash = {};\n this.data.forEach(dataRow => {\n const nestedDataRows = getNestedDataRows(dataRow, this);\n nestedDataRows.forEach(nestedDataRow => {\n const answerData = nestedDataRow[this.dataNames[0]];\n if (answerData !== undefined) {\n const seriesValue = nestedDataRow[DataProvider.seriesMarkerKey] || \"\";\n // TODO: _continuousData should be sorted in order to speed-up statistics calculation in the getData function\n this._continuousData[seriesValue].push({ continuous: this.getContinuousValue(answerData), row: nestedDataRow });\n hash[answerData] = answerData;\n }\n });\n });\n this._cachedValues = Object.keys(hash).map(key => ({ original: hash[key], continuous: this.getContinuousValue(key), row: hash[key].row }));\n this._cachedValues.sort((a, b) => a.continuous - b.continuous);\n }\n return this._cachedValues;\n }\n\n protected isSupportSoftUpdateContent(): boolean {\n return false;\n }\n\n protected isSupportMissingAnswers(): boolean {\n return false;\n }\n\n protected get needUseRateValues() {\n return this.question.getType() == \"rating\" && Array.isArray(this.question[\"rateValues\"]) && this.question[\"rateValues\"].length > 0;\n }\n\n public getValues(): Array<any> {\n return this.intervals.map(interval => interval.start);\n }\n\n public getLabels(): Array<string> {\n return this.intervals.map(interval => interval.label);\n }\n\n public get hasCustomIntervals() {\n return !!this.questionOptions && Array.isArray(this.questionOptions.intervals);\n }\n\n public get intervals() {\n if (this.hasCustomIntervals) {\n return this.questionOptions.intervals;\n }\n\n if(this.question.getType() == \"rating\") {\n if (this.needUseRateValues) {\n const rateValues = this.question[\"rateValues\"] as ItemValue[];\n rateValues.sort((iv1, iv2) => iv1.value - iv2.value);\n return rateValues.map((rateValue, i) => ({\n start: rateValue.value,\n end: i < rateValues.length - 1 ? rateValues[i + 1].value : rateValue.value + 1,\n label: rateValue.text\n }));\n } else {\n const rateIntervals = [];\n for(let i = (this.question[\"rateMin\"] || 0); i <= (this.question[\"rateMax\"] || (HistogramModel.IntervalsCount - 1)); i += (this.question[\"rateStep\"] || 1)) {\n rateIntervals.push({\n start: i,\n end: i + 1,\n label: \"\" + (!!this.question[\"rateMin\"] && !!this.question[\"rateMax\"] ? i : (i + \"-\" + (i+1)))\n });\n }\n return rateIntervals;\n }\n }\n\n if (this._cachedIntervals === undefined) {\n const continuousValues = this.getContinuousValues();\n this._cachedIntervals = [];\n if (continuousValues.length) {\n let start = continuousValues[0].continuous;\n const end = continuousValues[continuousValues.length - 1].continuous;\n const intervalsMode = this.intervalsMode === \"auto\" ? getBestIntervalMode(start, end) : this.intervalsMode;\n if(intervalCalculators[intervalsMode] !== undefined) {\n this._cachedIntervals = intervalCalculators[intervalsMode](start, end);\n } else {\n const intervalsCount = HistogramModel.IntervalsCount;\n const delta = (end - start) / intervalsCount;\n for (let i = 0; i < intervalsCount; ++i) {\n const next = start + delta;\n const istart = this.toPrecision(start);\n const inext = this.toPrecision(next);\n this._cachedIntervals.push({\n start: istart,\n end: i < intervalsCount - 1 ? inext : inext + delta / 100,\n label: \"\" + this.getString(istart) + \"-\" + this.getString(inext)\n });\n start = next;\n }\n }\n }\n }\n return this._cachedIntervals;\n }\n\n public intervalModes: HistogramIntervalMode[] = [\"auto\", \"decades\", \"years\", \"quarters\", \"months\", \"days\"];\n\n private _intervalsMode: HistogramIntervalMode;\n public get intervalsMode(): HistogramIntervalMode {\n if(this.hasCustomIntervals) return \"custom\";\n return this._intervalsMode;\n }\n public set intervalsMode(val: HistogramIntervalMode) {\n if (this.allowChangeIntervals && this._intervalsMode !== val) {\n this._intervalsMode = val;\n if(!this.canShowGroupedDateSeries) {\n this._showGrouped = false;\n }\n this.updateIntervalsModeSelector();\n this.updateShowGroupedBtn();\n this.onDataChanged();\n }\n }\n\n public get allowChangeIntervals(): boolean {\n return this.valueType === \"date\" && !this.hasCustomIntervals && this.options.allowChangeIntervals === true;\n }\n\n private _showRunningTotals: boolean = false;\n public get showRunningTotals(): boolean {\n return this._showRunningTotals;\n }\n public set showRunningTotals(val: boolean) {\n this._showRunningTotals = val;\n this.updateShowRunningTotalsBtn();\n this.stateChanged(\"showRunningTotals\", val);\n this.refreshContent();\n }\n\n private updateShowRunningTotalsBtn() {\n if (!!this.showRunningTotalsBtn) {\n this.showRunningTotalsBtn.innerText = this.showRunningTotals\n ? localization.getString(\"noRunningTotals\")\n : localization.getString(\"runningTotals\");\n }\n }\n\n private _showGrouped: boolean = false;\n public get showGrouped(): boolean {\n return this._showGrouped;\n }\n public set showGrouped(val: boolean) {\n this._showGrouped = val;\n this.updateShowGroupedBtn();\n this.stateChanged(\"showGrouped\", val);\n this.refreshContent();\n }\n\n private updateShowGroupedBtn() {\n if (!!this.showGroupedBtn) {\n this.showGroupedBtn.innerText = this.showGrouped\n ? localization.getString(\"ungroupDateSeries\")\n : localization.getString(\"groupDateSeries\");\n this.showGroupedBtn.style.display = this.canShowGroupedDateSeries ? \"inline\" : \"none\";\n }\n }\n\n public get canShowGroupedDateSeries(): boolean {\n return [\"years\", \"quarters\", \"months\"].indexOf(this.intervalsMode) !== -1;\n }\n\n private _aggregateDataName: string = \"\";\n public get aggregateDataName(): string {\n return this._aggregateDataName;\n }\n public set aggregateDataName(val: string) {\n if (this._aggregateDataName !== val) {\n this._aggregateDataName = val;\n this.onDataChanged();\n }\n }\n\n public get possibleAggregateDataNames(): Array<string> {\n return this.questionOptions?.aggregateDataNames ?? [];\n }\n\n public convertFromExternalData(externalCalculatedData: any): any[] {\n return [externalCalculatedData];\n }\n\n protected getCalculatedValuesCore(): Array<any> {\n const continuousValues = this.getContinuousValues();\n return histogramStatisticsCalculator(this._continuousData, this.intervals, this, [this.aggregateDataName].filter(name => !!name));\n }\n\n public async getCalculatedValues(): Promise<Array<Object>> {\n const values = await super.getCalculatedValues();\n const result: Array<Array<number>> = JSON.parse(JSON.stringify(values));\n if(this.showRunningTotals) {\n for(let i = 0; i < result.length; i++) {\n for(let j = 1; j < result[i].length; j++) {\n result[i][j] += result[i][j - 1];\n }\n }\n }\n return result;\n }\n\n private async getGroupedDateAnswersData(): Promise<IAnswersData> {\n let datasets = (await this.getCalculatedValues()) as number[][];\n let colors = this.getColors();\n let labels = this.getLabels();\n let seriesLabels = this.getSeriesLabels();\n\n const intervals = [].concat(this.intervals);\n const start = new Date(intervals[0].start);\n const end = new Date(intervals[intervals.length - 1].end);\n const startYear = start.getFullYear();\n const endYear = end.getFullYear();\n if(this.intervalsMode === \"years\") {\n seriesLabels = [];\n const groupedDatasets = [];\n for(let year = Math.floor(startYear / 10) * 10; year <= endYear; year += 10) {\n seriesLabels.push(year.toString() + \"s\");\n groupedDatasets.push(new Array(10).fill(0));\n }\n for(let i = 0; i < intervals.length; i++) {\n const interval = intervals[i];\n const intervalDate = new Date(interval.start);\n const decade = Math.floor(intervalDate.getFullYear() / 10) * 10;\n const yearInDecade = intervalDate.getFullYear() - decade;\n const decadeIndex = Math.floor((decade - Math.floor(startYear / 10) * 10) / 10);\n groupedDatasets[decadeIndex][yearInDecade] = datasets[0][i];\n }\n datasets = groupedDatasets;\n labels = [\"0\", \"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\"];\n } else if(this.intervalsMode === \"quarters\") {\n seriesLabels = [];\n const groupedDatasets = [];\n for(let year = startYear; year <= endYear; year++) {\n seriesLabels.push(year.toString());\n groupedDatasets.push(new Array(4).fill(0));\n }\n for(let i = 0; i < intervals.length; i++) {\n const interval = intervals[i];\n const intervalDate = new Date(interval.start);\n const quarter = Math.floor(intervalDate.getMonth() / 3);\n const year = intervalDate.getFullYear();\n const yearIndex = year - startYear;\n groupedDatasets[yearIndex][quarter] = datasets[0][i];\n }\n datasets = groupedDatasets;\n labels = [\"I\", \"II\", \"III\", \"IV\"];\n } else if(this.intervalsMode === \"months\") {\n seriesLabels = [];\n const groupedDatasets = [];\n for(let year = startYear; year <= endYear; year++) {\n seriesLabels.push(year.toString());\n groupedDatasets.push(new Array(12).fill(0));\n }\n for(let i = 0; i < intervals.length; i++) {\n const interval = intervals[i];\n const intervalDate = new Date(interval.start);\n const month = intervalDate.getMonth();\n const year = intervalDate.getFullYear();\n const yearIndex = year - startYear;\n groupedDatasets[yearIndex][month] = datasets[0][i];\n }\n datasets = groupedDatasets;\n labels = [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"];\n }\n\n let texts = datasets;\n return {\n datasets,\n labels,\n colors,\n texts,\n seriesLabels,\n };\n }\n\n /**\n * Returns object with all infotmation for data visualization: datasets, labels, colors, additional texts (percentage).\n */\n public async getAnswersData(): Promise<IAnswersData> {\n if(!this.showGrouped) {\n return super.getAnswersData();\n }\n\n const answersData = await this.getGroupedDateAnswersData();\n\n const continuousValues = this.getContinuousValues();\n if (continuousValues.length) {\n let start = continuousValues[0].continuous;\n const end = continuousValues[continuousValues.length - 1].continuous;\n const intervalsMode = this.intervalsMode === \"auto\" ? getBestIntervalMode(start, end) : this.intervalsMode;\n if(intervalsMode === \"years\" && this.showGrouped) {\n answersData.labelsTitle = localization.getString(\"groupedYearsAxisTitle\");\n }\n }\n\n this.onAnswersDataReady.fire(this, answersData);\n\n return answersData;\n }\n\n public getValueType(): \"date\" | \"number\" {\n return this.valueType;\n }\n}\n\nVisualizationManager.registerVisualizer(\"date\", HistogramModel);\nVisualizationManager.registerVisualizer(\"number\", HistogramModel, 100);\nVisualizationManager.registerVisualizer(\"rating\", HistogramModel, 300);\n","function getIconsData(path) {\r\n const icons: { [index: string]: string } = {};\r\n path.keys().forEach((key: string) => {\r\n icons[key.substring(2, key.length - 4).toLowerCase()] = path(key);\r\n });\r\n return icons;\r\n}\r\n\r\nexport default getIconsData((<any>require).context(\"./images\", true, /\\.svg$/));","var map = {\n\t\"./detail.svg\": \"./src/images/detail.svg\",\n\t\"./drag.svg\": \"./src/images/drag.svg\",\n\t\"./hide.svg\": \"./src/images/hide.svg\",\n\t\"./makeprivate.svg\": \"./src/images/makeprivate.svg\",\n\t\"./makepublic.svg\": \"./src/images/makepublic.svg\",\n\t\"./moveToDetails.svg\": \"./src/images/moveToDetails.svg\",\n\t\"./nonCommercial.svg\": \"./src/images/nonCommercial.svg\",\n\t\"./sorting.svg\": \"./src/images/sorting.svg\"\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = \"./src/images sync recursive \\\\.svg$\";","module.exports = \"<svg version=\\\"1.1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 16 16\\\"><g><circle cx=\\\"1.5\\\" cy=\\\"8.5\\\" r=\\\"1.5\\\"></circle><circle cx=\\\"7.5\\\" cy=\\\"8.5\\\" r=\\\"1.5\\\"></circle><circle cx=\\\"13.5\\\" cy=\\\"8.5\\\" r=\\\"1.5\\\"></circle></g></svg>\"","module.exports = \"<svg version=\\\"1.1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 16 16\\\"><g><polygon points=\\\"13,5 12,6 13,7 9,7 9,3 10,4 11,3 8,0 5,3 6,4 7,3 7,7 3,7 4,6 3,5 0,8 3,11 4,10 3,9 7,9 7,13 6,12 5,13 8,16 11,13 10,12 9,13 9,9 13,9 12,10 13,11 16,8 \\\"></polygon></g></svg>\"","module.exports = \"<svg version=\\\"1.1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 16 16\\\"><g><path d=\\\"M12.79,4.2L16,1l-1-1l-3.32,3.32C10.57,2.55,9.32,2,8,2C3.63,2,0,7.97,0,7.97s1.27,2.1,3.21,3.82l-3.23,3.23 L0.96,16l3.35-3.34C5.41,13.44,6.67,14,8,14c4.37,0,8-6,8-6S14.73,5.91,12.79,4.2z M2,7.97c1.07-1.47,3.61-4,6-4 c0.8,0,1.6,0.27,2.35,0.68L9.57,5.43C9.11,5.14,8.58,4.97,8,4.97c-1.66,0-3,1.34-3,3c0,0.58,0.17,1.11,0.46,1.57l-0.97,0.97 C3.36,9.64,2.45,8.59,2,7.97z M8,11.97c-0.8,0-1.59-0.27-2.33-0.67l0.78-0.77C6.9,10.8,7.43,10.97,8,10.97c1.66,0,3-1.34,3-3 c0-0.57-0.17-1.09-0.44-1.55l0.98-0.98c1.11,0.87,2.01,1.91,2.46,2.52C12.93,9.44,10.39,11.97,8,11.97z\\\"></path></g></svg>\"","module.exports = \"<svg version=\\\"1.1\\\" id=\\\"Layer_1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\" x=\\\"0px\\\" y=\\\"0px\\\" viewBox=\\\"0 0 16 16\\\" style=\\\"enable-background:new 0 0 16 16;\\\" xml:space=\\\"preserve\\\"><g><circle cx=\\\"8\\\" cy=\\\"4\\\" r=\\\"3\\\"></circle><path d=\\\"M8,8c-3.31,0-6,2.73-6,4.67S5.27,15,8,15s6-0.4,6-2.33S11.31,8,8,8z\\\"></path></g></svg>\"","module.exports = \"<svg version=\\\"1.1\\\" id=\\\"Layer_1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\" x=\\\"0px\\\" y=\\\"0px\\\" viewBox=\\\"0 0 16 16\\\" style=\\\"enable-background:new 0 0 16 16;\\\" xml:space=\\\"preserve\\\"><g><circle cx=\\\"6\\\" cy=\\\"5\\\" r=\\\"3\\\"></circle><path d=\\\"M10,5c0,0.34-0.06,0.67-0.14,0.99C9.91,5.99,9.95,6,10,6c1.66,0,3-1.34,3-3s-1.34-3-3-3 C8.97,0,8.07,0.52,7.53,1.3C8.98,1.91,10,3.33,10,5z\\\"></path><path d=\\\"M6,9c-3.31,0-6,2.73-6,4.67S3.27,16,6,16s6-0.4,6-2.33S9.31,9,6,9z\\\"></path><path d=\\\"M10,7C9.81,7,9.62,7.01,9.43,7.03C9.09,7.6,8.62,8.07,8.06,8.42c3,0.83,5.23,3.31,5.42,5.28 c1.44-0.31,2.52-0.92,2.52-2.03C16,9.74,13.31,7,10,7z\\\"></path></g></svg>\"","module.exports = \"<svg version=\\\"1.1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 16 16\\\"><g><circle cx=\\\"1.5\\\" cy=\\\"14.5\\\" r=\\\"1.5\\\"></circle><circle cx=\\\"7.5\\\" cy=\\\"14.5\\\" r=\\\"1.5\\\"></circle><circle cx=\\\"13.5\\\" cy=\\\"14.5\\\" r=\\\"1.5\\\"></circle><rect x=\\\"12\\\" y=\\\"1\\\" width=\\\"3\\\" height=\\\"9\\\"></rect><path d=\\\"M2.02,7.02L1,6L0,7l3,3l3-3L5,6L4.06,6.94C4.33,4.73,6.21,3,8.5,3C8.67,3,8.83,3.03,9,3.05V1.03 C8.83,1.01,8.67,1,8.5,1C5.08,1,2.27,3.66,2.02,7.02z\\\"></path></g></svg>\"","module.exports = \"<svg version=\\\"1.1\\\" id=\\\"Layer_1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\" x=\\\"0px\\\" y=\\\"0px\\\" viewBox=\\\"0 0 16 16\\\" style=\\\"enable-background:new 0 0 16 16;\\\" xml:space=\\\"preserve\\\"><path d=\\\"M8,0L0,15h16L8,0z M9,13H7v-2h2V13z M7,10V5h2v5H7z\\\"></path></svg>\"","module.exports = \"<svg version=\\\"1.1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 16 16\\\"><g><polygon points=\\\"8,3 10,5 11,4 8,1 5,4 6,5 \\\"></polygon><polygon points=\\\"8,13 6,11 5,12 8,15 11,12 10,11\\\"></polygon></g></svg>\"","import Muuri from \"muuri\";\r\n\r\n/**\r\n * A base class used to implement custom layout engines or integrate third-party layout engines with SurveyJS Dashboard.\r\n */\r\nexport class LayoutEngine {\r\n constructor(protected _allowed: boolean) { }\r\n\r\n protected startCore(container: HTMLElement) { }\r\n protected stopCore() { }\r\n protected updateCore() { }\r\n\r\n get allowed() {\r\n return this._allowed;\r\n }\r\n\r\n /**\r\n * Enables the dynamic layout in a given HTML element.\r\n *\r\n * This method should arrange visualization items based on the available screen space and allow users to reorder them via drag and drop.\r\n */\r\n start(container: HTMLElement) {\r\n if (this._allowed) {\r\n this.startCore(container);\r\n }\r\n }\r\n /**\r\n * Disables the dynamic layout.\r\n */\r\n stop() {\r\n if (this._allowed) {\r\n this.stopCore();\r\n }\r\n }\r\n /**\r\n * Updates the dynamic layout.\r\n */\r\n update() {\r\n if (this._allowed) {\r\n this.updateCore();\r\n }\r\n }\r\n\r\n add(elements: Array<HTMLElement>, options?: any) { }\r\n remove(elements: Array<HTMLElement>, options?: any) { }\r\n\r\n onMoveCallback: (order: Array<string>) => void;\r\n\r\n destroy() {\r\n this.stop();\r\n }\r\n}\r\n\r\nexport class MuuriLayoutEngine extends LayoutEngine {\r\n private _muuri: any = undefined;\r\n private _layoutingTimer: any = undefined;\r\n\r\n constructor(allowed: boolean, private _selector: string, private dragEnabled = true) {\r\n super(allowed);\r\n }\r\n\r\n protected startCore(container: HTMLElement) {\r\n this._muuri = new Muuri(container, {\r\n dragStartPredicate: {\r\n handle: \".sa-question__title--draggable\",\r\n },\r\n items: this._selector,\r\n dragEnabled: this.dragEnabled,\r\n });\r\n this._muuri.on(\r\n \"dragReleaseEnd\",\r\n (item: any) => {\r\n const newOrder = item.getGrid().getItems().map(gridItem => gridItem.getElement().dataset.question);\r\n this.onMoveCallback && this.onMoveCallback(newOrder);\r\n }\r\n );\r\n }\r\n protected stopCore() {\r\n this._muuri.off(\"dragReleaseEnd\");\r\n this._muuri.destroy();\r\n this._muuri = undefined;\r\n }\r\n protected updateCore() {\r\n if(!this._muuri) return;\r\n if (this._layoutingTimer !== undefined) {\r\n clearTimeout(this._layoutingTimer);\r\n }\r\n this._layoutingTimer = setTimeout(() => {\r\n this._layoutingTimer = undefined;\r\n if(!this._muuri) return;\r\n this._muuri.refreshItems();\r\n this._muuri.layout();\r\n }, 10);\r\n }\r\n\r\n add(elements: Array<HTMLElement>, options?: any) {\r\n if (this._allowed) this._muuri.add(elements, options);\r\n }\r\n remove(elements: Array<HTMLElement>, options?: any) {\r\n if (this._allowed) this._muuri.remove(elements, options);\r\n }\r\n}\r\n","import { englishStrings } from \"./analytics-localization/english\";\nimport { surveyLocalization } from \"survey-core\";\n\nexport var localization = {\n currentLocaleValue: \"\",\n defaultLocaleValue: \"en\",\n locales: <{ [index: string]: any }>{},\n localeNames: <{ [index: string]: any }>{},\n supportedLocales: <Array<any>>[],\n get currentLocale() {\n return this.currentLocaleValue === this.defaultLocaleValue\n ? \"\"\n : this.currentLocaleValue;\n },\n set currentLocale(val: string) {\n this.currentLocaleValue = val;\n },\n get defaultLocale() {\n return this.defaultLocaleValue;\n },\n set defaultLocale(val: string) {\n this.defaultLocaleValue = val;\n },\n setupLocale: function (loc: string, strings: any) {\n this.locales[loc] = strings;\n },\n getLocaleName: function (loc: string, inEnglish: boolean = false): string {\n const res = !inEnglish ? this.localeNames[loc] : \"\";\n return res || surveyLocalization.getLocaleName(loc, inEnglish);\n },\n getString: function (strName: string) {\n var loc = this.currentLocale\n ? this.locales[this.currentLocale]\n : this.locales[this.defaultLocale];\n if (!loc || !loc[strName]) loc = this.locales[this.defaultLocale];\n var result = loc[strName];\n if (result === undefined) {\n result = this.locales[\"en\"][strName] || strName;\n }\n return result;\n },\n getLocales: function (): Array<string> {\n var res = [];\n res.push(\"\");\n if (this.supportedLocales && this.supportedLocales.length > 0) {\n for (var i = 0; i < this.supportedLocales.length; i++) {\n res.push(this.supportedLocales[i]);\n }\n } else {\n for (var key in this.locales) {\n res.push(key);\n }\n }\n res.sort();\n return res;\n }\n};\n\nexport var surveyStrings = englishStrings;\nexport function setupLocale(localeConfig: { localeCode: string, strings: any, nativeName?: string }): void {\n const loc = localeConfig.localeCode;\n localization.setupLocale(loc, localeConfig.strings);\n if (localeConfig.nativeName) {\n localization.localeNames[loc] = localeConfig.nativeName;\n }\n}\nsetupLocale({ localeCode: \"en\", strings: englishStrings, nativeName: \"English\" });","import { ItemValue, QuestionMatrixModel, Question } from \"survey-core\";\nimport { IAnswersData, SelectBase } from \"./selectBase\";\nimport { VisualizationManager } from \"./visualizationManager\";\n\nexport class Matrix extends SelectBase {\n constructor(\n question: Question,\n data: Array<{ [index: string]: any }>,\n options?: Object,\n name?: string\n ) {\n super(question, data, options, name || \"matrix\");\n this._transposeData = true;\n // this.getAnswersData();\n }\n\n protected get matrixQuestion(): QuestionMatrixModel {\n return <QuestionMatrixModel>this.question;\n }\n\n protected isSupportMissingAnswers(): boolean {\n return false;\n }\n\n getSeriesValues(): Array<string> {\n return this.matrixQuestion.rows.map((row: ItemValue) => \"\" + row.value);\n }\n\n getSeriesLabels(): Array<string> {\n return this.matrixQuestion.rows.map((row: ItemValue) =>\n ItemValue.getTextOrHtmlByValue(this.matrixQuestion.rows, row.value)\n );\n }\n\n public getSelectedItemByText(itemText: string) {\n return this.matrixQuestion.columns.filter(\n (column: ItemValue) => column.text === itemText\n )[0];\n }\n\n valuesSource(): Array<ItemValue> {\n return this.matrixQuestion.columns;\n }\n\n private getHasAnswersInAllSeriesArray(\n datasets: Array<Array<any>>\n ): Array<boolean> {\n let result: Array<boolean> = Array<boolean>();\n for (let i = 0; i < datasets[0].length; i++) {\n for (let j = 0; j < datasets.length; j++) {\n if (datasets[j][i] != 0) {\n result[i] = true;\n }\n }\n }\n return result;\n }\n\n private getHasAnswersInSeries(dataset: Array<any>) {\n for (let i = 0; i < dataset.length; i++) {\n if (dataset[i] != 0) {\n return true;\n }\n }\n return false;\n }\n\n protected hideEmptyAnswersInData(answersData: IAnswersData): IAnswersData {\n const result: IAnswersData = {\n datasets: <Array<Array<any>>>[],\n labels: <Array<string>>[],\n colors: <Array<string>>[],\n texts: <Array<Array<any>>>[],\n seriesLabels: <Array<string>>[],\n };\n\n const hasAnswersInAllSeriesArr = this.getHasAnswersInAllSeriesArray(\n answersData.datasets\n );\n for (let i = 0; i < answersData.datasets.length; i++) {\n const hasAnswersInSeries = this.getHasAnswersInSeries(\n answersData.datasets[i]\n );\n if (hasAnswersInSeries) {\n result.labels.push(answersData.labels[i]);\n result.colors.push(answersData.colors[i]);\n } else {\n continue;\n }\n const datasets = [];\n const texts = [];\n for (let j = 0; j < answersData.datasets[0].length; j++) {\n if (hasAnswersInAllSeriesArr[j]) {\n datasets.push(answersData.datasets[i][j]);\n texts.push(answersData.texts[i][j]);\n }\n }\n result.datasets.push(datasets);\n result.texts.push(texts);\n }\n for (let i = 0; i < answersData.datasets[0].length; i++) {\n if (hasAnswersInAllSeriesArr[i]) {\n result.seriesLabels.push(answersData.seriesLabels[i]);\n }\n }\n return result;\n }\n\n}\n\nVisualizationManager.registerVisualizer(\"matrix\", Matrix);","import { ItemValue, QuestionMatrixDropdownModel, Question, MatrixDropdownColumn, MatrixDropdownRowModelBase } from \"survey-core\";\nimport { IAnswersData, SelectBase } from \"./selectBase\";\nimport { defaultStatisticsCalculator } from \"./statisticCalculators\";\nimport { VisualizationManager } from \"./visualizationManager\";\n\nexport class MatrixDropdownGrouped extends SelectBase {\n constructor(\n question: Question,\n data: Array<{ [index: string]: any }>,\n options?: Object,\n name?: string\n ) {\n super(question, data, options, name || \"matrixDropdownGrouped\");\n }\n\n protected get matrixQuestion(): QuestionMatrixDropdownModel {\n return <QuestionMatrixDropdownModel>this.question;\n }\n\n get dataNames(): Array<string> {\n return this.matrixQuestion.columns.map(column => column.name);\n }\n\n getSeriesValues(): Array<string> {\n return this.matrixQuestion.columns.map((column: MatrixDropdownColumn) => column.name);\n }\n\n getSeriesLabels(): Array<string> {\n return this.matrixQuestion.columns.map((column: MatrixDropdownColumn) => column.title);\n }\n\n // public getSelectedItemByText(itemText: string) {\n // return this.matrixQuestion.columns.filter(\n // (column: ItemValue) => column.text === itemText\n // )[0];\n // }\n\n valuesSource(): Array<ItemValue> {\n return this.matrixQuestion.choices;\n }\n\n protected isSupportMissingAnswers(): boolean {\n return false;\n }\n\n protected getCalculatedValuesCore(): Array<any> {\n const values = this.getValues();\n const series = this.getSeriesValues();\n const rows = this.matrixQuestion.rows.map(row => row.value);\n\n const statistics = defaultStatisticsCalculator(this.surveyData, {\n name: this.name,\n dataNames: series,\n dataPath: this.dataPath,\n getValues: () => values,\n getLabels: () => values,\n getSeriesValues: () => rows,\n getSeriesLabels: () => rows,\n });\n\n return statistics.map(s => s[0]);\n }\n}\n\nVisualizationManager.registerVisualizer(\"matrixdropdown-grouped\", MatrixDropdownGrouped);","// extracted by mini-css-extract-plugin\nexport {};","import { Question, Event } from \"survey-core\";\nimport { VisualizerBase } from \"./visualizerBase\";\nimport { VisualizationManager } from \"./visualizationManager\";\nimport { DocumentHelper, toPrecision } from \"./utils\";\nimport { localization } from \"./localizationManager\";\n\nimport \"./nps.scss\";\n\nexport class NpsVisualizerWidget {\n private _renderedTarget: HTMLDivElement = undefined;\n\n constructor(private _model: NpsVisualizer, private _data: { detractors: number, passive: number, promoters: number, total: number }) {\n }\n\n private renderScorePart(partId: string, value: number, percent?: number) {\n const scorePartElement = DocumentHelper.createElement(\"div\", \"sa-visualizer-nps__score-part\");\n const titleElement = DocumentHelper.createElement(\"div\", \"sa-visualizer-nps__score-part-title\");\n titleElement.innerText = localization.getString(partId);\n scorePartElement.appendChild(titleElement);\n const valuesElement = DocumentHelper.createElement(\"div\", \"sa-visualizer-nps__score-part-values\");\n scorePartElement.appendChild(valuesElement);\n const valueElement = DocumentHelper.createElement(\"div\", \"sa-visualizer-nps__score-part-value\");\n valueElement.innerText = \"\" + value;\n valuesElement.appendChild(valueElement);\n if(percent) {\n const percentElement = DocumentHelper.createElement(\"div\", \"sa-visualizer-nps__score-part-percent\");\n percentElement.innerText = \"\" + percent + \"%\";\n valuesElement.appendChild(percentElement);\n }\n return scorePartElement;\n }\n public render(target: HTMLDivElement): void {\n this._renderedTarget = target;\n var npsElement = DocumentHelper.createElement(\"div\", \"sa-visualizer-nps\");\n npsElement.appendChild(this.renderScorePart(\"npsScore\", this.npsScore));\n npsElement.appendChild(this.renderScorePart(\"npsPromoters\", this._data.promoters, this.promotersPercent));\n npsElement.appendChild(this.renderScorePart(\"npsPassives\", this._data.total - this._data.promoters - this._data.detractors, this.passivePercent));\n npsElement.appendChild(this.renderScorePart(\"npsDetractors\", this._data.detractors, this.detractorsPercent));\n target.appendChild(npsElement);\n }\n public get npsScore(): number {\n return toPrecision(((this._data.promoters - this._data.detractors) / this._data.total) * 100, this._model.precision);\n }\n public get promotersPercent(): number {\n return toPrecision(this._data.promoters / this._data.total * 100, this._model.precision);\n }\n public get passivePercent(): number {\n return toPrecision((this._data.total - this._data.promoters - this._data.detractors) / this._data.total * 100, this._model.precision);\n }\n public get detractorsPercent(): number {\n return toPrecision(this._data.detractors / this._data.total * 100, this._model.precision);\n }\n public dispose(): void {\n if(!!this._renderedTarget) {\n this._renderedTarget.innerHTML = \"\";\n this._renderedTarget = undefined;\n }\n }\n}\n\nexport class NpsAdapter {\n private _npsVisualizer: any;\n\n constructor(private model: NpsVisualizer) {}\n\n public get npsVisualizer(): any {\n return this._npsVisualizer;\n }\n\n public async create(element: HTMLElement) {\n const data = await this.model.getCalculatedValues();\n this._npsVisualizer = new NpsVisualizerWidget(this.model, data as any);\n this._npsVisualizer.render(element);\n return this._npsVisualizer;\n }\n\n public destroy(node: HTMLElement): void {\n if(this._npsVisualizer && typeof this._npsVisualizer.dispose === \"function\") {\n this._npsVisualizer.dispose();\n }\n this._npsVisualizer = undefined;\n }\n}\n\nexport class NpsVisualizer extends VisualizerBase {\n public static DetractorScore = 6;\n public static PromoterScore = 9;\n public precision = 2;\n private _npsAdapter: NpsAdapter;\n\n constructor(\n question: Question,\n data: Array<{ [index: string]: any }>,\n options?: Object,\n name?: string\n ) {\n super(question, data, options, name || \"nps\");\n this._npsAdapter = new NpsAdapter(this);\n }\n\n protected getCalculatedValuesCore(): any {\n let result = {\n detractors: 0,\n passive: 0,\n promoters: 0,\n total: 0,\n };\n\n this.data.forEach((row) => {\n const rowValue: any = row[this.question.name];\n const scoreValue = parseInt(rowValue);\n if (!Number.isNaN(scoreValue)) {\n if(scoreValue <= NpsVisualizer.DetractorScore) {\n result.detractors++;\n } else if(scoreValue >= NpsVisualizer.PromoterScore) {\n result.promoters++;\n } else {\n result.passive++;\n }\n result.total++;\n }\n });\n\n return result;\n }\n\n protected destroyContent(container: HTMLElement) {\n this._npsAdapter.destroy(container);\n super.destroyContent(container);\n }\n\n protected async renderContentAsync(container: HTMLElement) {\n const npsNode: HTMLElement = DocumentHelper.createElement(\"div\");\n container.appendChild(npsNode);\n await this._npsAdapter.create(npsNode);\n container.innerHTML = \"\";\n container.appendChild(npsNode);\n return container;\n }\n\n destroy() {\n this._npsAdapter.destroy(this.contentContainer);\n super.destroy();\n }\n}\n\n// VisualizationManager.registerVisualizer(\"rating\", NpsVisualizer);\n","import { Question } from \"survey-core\";\nimport { VisualizerBase } from \"./visualizerBase\";\nimport { localization } from \"./localizationManager\";\nimport { DocumentHelper } from \"./utils/index\";\nimport { VisualizationManager } from \"./visualizationManager\";\nimport { mathStatisticsCalculator } from \"./statisticCalculators\";\n\nexport class NumberModel extends VisualizerBase {\n private _resultAverage: number;\n private _resultMin: number;\n private _resultMax: number;\n\n public static stepsCount = 5;\n public static generateTextsCallback: (\n question: Question,\n maxValue: number,\n minValue: number,\n stepsCount: number,\n texts: string[]\n ) => string[];\n\n protected chartTypes: Array<string>;\n chartType: String;\n\n public static showAsPercentage = false;\n\n constructor(\n question: Question,\n data: Array<{ [index: string]: any }>,\n options: { [index: string]: any } = {},\n name?: string\n ) {\n super(question, data, options, name || \"number\");\n\n if (VisualizerBase.chartAdapterType) {\n this._chartAdapter = new VisualizerBase.chartAdapterType(this);\n this.chartTypes = this._chartAdapter.getChartTypes();\n this.chartType = this.chartTypes[0];\n }\n\n if(this.options.allowChangeVisualizerType !== false) {\n this.registerToolbarItem(\"changeChartType\", () => {\n if (this.chartTypes.length > 1) {\n return DocumentHelper.createSelector(\n this.chartTypes.map((chartType) => {\n return {\n value: chartType,\n text: localization.getString(\"chartType_\" + chartType),\n };\n }),\n (option: any) => this.chartType === option.value,\n (e: any) => {\n this.setChartType(e.target.value);\n }\n );\n }\n return null;\n });\n }\n }\n\n protected onDataChanged() {\n this._resultAverage = undefined;\n this._resultMin = undefined;\n this._resultMax = undefined;\n super.onDataChanged();\n }\n\n protected onChartTypeChanged() {}\n\n protected setChartType(chartType: string) {\n if (\n this.chartTypes.indexOf(chartType) !== -1 &&\n this.chartType !== chartType\n ) {\n this.chartType = chartType;\n this.onChartTypeChanged();\n if (!!this.contentContainer) {\n this.destroyContent(this.contentContainer);\n this.renderContent(this.contentContainer);\n }\n this.invokeOnUpdate();\n }\n }\n\n destroy(): void {\n this._resultAverage = undefined;\n this._resultMin = undefined;\n this._resultMax = undefined;\n super.destroy();\n }\n\n generateText(maxValue: number, minValue: number, stepsCount: number): string[] {\n let texts: any = [];\n\n if (stepsCount === 5) {\n texts = [\n \"very high (\" + maxValue + \")\",\n \"high\",\n \"medium\",\n \"low\",\n \"very low (\" + minValue + \")\",\n ];\n } else {\n texts.push(maxValue);\n for (let i = 0; i < stepsCount - 2; i++) {\n texts.push(\"\");\n }\n texts.push(minValue);\n }\n\n if (!!NumberModel.generateTextsCallback) {\n return NumberModel.generateTextsCallback(\n this.question,\n maxValue,\n minValue,\n stepsCount,\n texts\n );\n }\n\n return texts;\n }\n\n generateValues(maxValue: number, stepsCount: number): number[] {\n const values = [];\n for (let i = 0; i < stepsCount; i++) {\n values.push(maxValue / stepsCount);\n }\n values.push(maxValue);\n return values;\n }\n\n generateColors(maxValue: number, minValue: number, stepsCount: number): string[] {\n const palette = this.getColors();\n const colors = [];\n for (let i = 0; i < stepsCount; i++) {\n colors.push(palette[i]);\n }\n colors.push(\"rgba(255, 255, 255, 0)\");\n return colors;\n }\n\n public convertFromExternalData(externalCalculatedData: any): any[] {\n return [externalCalculatedData.value || 0, externalCalculatedData.minValue || 0, externalCalculatedData.maxValue || 0];\n }\n\n protected getCalculatedValuesCore(): Array<any> {\n if (this._resultAverage === undefined ||\n this._resultMin === undefined ||\n this._resultMax === undefined) {\n [this._resultAverage, this._resultMin, this._resultMax] = mathStatisticsCalculator(this.surveyData, this);\n }\n return [this._resultAverage, this._resultMin, this._resultMax];\n }\n\n}\n\nVisualizationManager.registerVisualizer(\"number\", NumberModel, 200);\nVisualizationManager.registerVisualizer(\"rating\", NumberModel, 200);\nVisualizationManager.registerVisualizer(\"expression\", NumberModel);","import { ItemValue, Question } from \"survey-core\";\nimport { SelectBase } from \"./selectBase\";\nimport { createCommercialLicenseLink, DocumentHelper } from \"./utils\";\nimport { VisualizerBase } from \"./visualizerBase\";\nimport { localization } from \"./localizationManager\";\nimport { VisualizationManager } from \"./visualizationManager\";\n\nexport class PivotModel extends SelectBase {\n protected valueType: \"enum\" | \"date\" | \"number\" = \"enum\";\n private _cachedValues: Array<{ original: any, continuous: number, row: any }> = undefined;\n private _continuousData: Array<{ continuous: number, row: any }> = undefined;\n private _cachedIntervals: Array<{ start: number, end: number, label: string }> = undefined;\n private _intervalPrecision: number = 2;\n\n private axisXSelector: HTMLDivElement;\n public axisXQuestionName: string;\n private axisYSelectors: Array<HTMLDivElement> = [];\n public axisYQuestionNames: Array<string> = [];\n private questionsY: Array<VisualizerBase> = [];\n\n public static IntervalsCount = 10;\n public static UseIntervalsFrom = 10;\n\n constructor(\n private questions: Array<Question>,\n data: Array<{ [index: string]: any }>,\n options?: Object,\n name?: string,\n private isRoot = true\n ) {\n super(null, data, options, name || \"pivot\");\n this.questions = this.questions.filter((question) => [\"matrixdropdown\", \"matrixdynamic\", \"matrix\", \"file\", \"signature\", \"multipletext\", \"comment\", \"html\", \"image\"].indexOf(question.getType()) === -1);\n if (this.options.intervalPrecision !== undefined) {\n this._intervalPrecision = this.options.intervalPrecision;\n }\n\n this.axisXQuestionName = this.questions.length > 0 ? this.questions[0].name : undefined;\n this.registerToolbarItem(\"axisXSelector\", () =>\n this.axisXSelector = DocumentHelper.createSelector(\n this.questions.map((question) => {\n return {\n value: question.name,\n text: question.title || question.name,\n };\n }),\n (option: any) => this.axisXQuestionName === option.value,\n (e: any) => {\n this.axisXQuestionName = e.target.value;\n this.updateQuestionsSelection();\n this.updateToolbar();\n this.setupPivot();\n },\n () => this.isXYChart() ? localization.getString(\"axisXSelectorTitle\") : localization.getString(\"axisXAlternativeSelectorTitle\")\n )\n );\n this.registerToolbarItem(\"axisYSelector0\", this.createYSelecterGenerator());\n this.setupPivot();\n }\n\n private createYSelecterGenerator(): () => HTMLDivElement {\n const selectorIndex: number = this.axisYSelectors.length;\n return () => {\n let selector = this.axisYSelectors[selectorIndex];\n if(!selector) {\n selector = this.createAxisYSelector(selectorIndex);\n this.axisYSelectors.push(selector);\n } else {\n selector[\"__updateSelect\"] && selector[\"__updateSelect\"]();\n }\n return selector;\n };\n }\n\n public setAxisQuestions(...axisQuestionNames: string[]): void {\n if(axisQuestionNames.length < 1) {\n return;\n }\n this.axisXQuestionName = axisQuestionNames[0];\n this.axisYQuestionNames = axisQuestionNames.splice(1);\n this.setupPivot();\n }\n\n public onAxisYSelectorChanged(index: number, value: any): void {\n this.axisYQuestionNames[index] = value;\n\n if (index < this.axisYSelectors.length - 1) {\n if(!value) {\n for(let i = index + 1; i < this.axisYSelectors.length; ++i) {\n this.unregisterToolbarItem(\"axisYSelector\" + i);\n }\n this.axisYSelectors = this.axisYSelectors.slice(0, index + 1);\n this.axisYQuestionNames = this.axisYQuestionNames.slice(0, index + 1);\n }\n } else {\n if(!!value) {\n this.registerToolbarItem(\"axisYSelector\" + this.axisYSelectors.length, this.createYSelecterGenerator());\n }\n }\n\n this.updateQuestionsSelection();\n this.updateToolbar();\n this.setupPivot();\n }\n\n protected updateQuestionsSelection() {\n const selectedQuestions = [this.axisXQuestionName];\n for(let i = 0; i < this.axisYQuestionNames.length; ++i) {\n const questionName = this.axisYQuestionNames[i];\n if (selectedQuestions.indexOf(questionName) !== -1) {\n this.onAxisYSelectorChanged(i, undefined);\n break;\n } else {\n selectedQuestions.push(questionName);\n }\n }\n }\n\n private createAxisYSelector(selectorIndex: number): HTMLDivElement {\n const getChoices = () => {\n const choices = this.questions.filter(q => {\n if(q.name === this.axisXQuestionName) {\n return false;\n }\n const usedIndex = this.axisYQuestionNames.indexOf(q.name);\n return usedIndex == -1 || usedIndex >= selectorIndex;\n }).map((question) => {\n return {\n value: question.name,\n text: question.title || question.name,\n };\n });\n return [{ value: \"\", text: localization.getString(\"notSelected\") }].concat(choices);\n };\n if(getChoices().length == 1) {\n return undefined;\n }\n const selector = DocumentHelper.createSelector(\n getChoices,\n (option: any) => this.axisYQuestionNames[selectorIndex] === option.value,\n (e: any) => { this.onAxisYSelectorChanged(selectorIndex, e.target.value); },\n () => selectorIndex ? undefined : (this.isXYChart() ? localization.getString(\"axisYSelectorTitle\") : localization.getString(\"axisYAlternativeSelectorTitle\"))\n );\n return selector;\n }\n\n protected setChartType(chartType: string) {\n const prev2Dchart = this.isXYChart();\n super.setChartType(chartType);\n if (prev2Dchart !== this.isXYChart()) {\n this.updateToolbar();\n }\n }\n\n private isXYChart() {\n return [\"pie\", \"doughnut\"].indexOf(this.chartType) === -1;\n }\n\n public getQuestionValueType(question: Question): \"enum\" | \"date\" | \"number\" {\n const questionType = question.getType();\n if (questionType === \"text\" && (question[\"inputType\"] === \"date\" || question[\"inputType\"] === \"datetime\")) {\n return \"date\";\n } else if(questionType === \"text\" || questionType === \"rating\" || questionType === \"expression\" || questionType === \"range\") {\n return \"number\";\n }\n return \"enum\";\n }\n\n private setupPivot() {\n const questionX = this.questions.filter((q) => q.name === this.axisXQuestionName)[0];\n if(!questionX) {\n return;\n }\n this.question = questionX;\n this.valueType = this.getQuestionValueType(questionX);\n\n this.questionsY = this.axisYQuestionNames.map((name) => {\n const questionY = this.questions.filter((q) => q.name === name)[0];\n if(!!questionY) {\n return this.getQuestionValueType(questionY) === \"enum\" ? new SelectBase(questionY, []) : new VisualizerBase(questionY, []);\n }\n }).filter((q) => !!q);\n\n this.onDataChanged();\n }\n\n private reset() {\n this._continuousData = undefined;\n this._cachedValues = undefined;\n this._cachedIntervals = undefined;\n }\n\n public getContinuousValue(value: any): number {\n if (this.valueType === \"date\") {\n return Date.parse(value);\n }\n return parseFloat(value);\n }\n\n public getString(value: number): string {\n if (this.valueType === \"date\") {\n return new Date(value).toLocaleDateString();\n }\n return \"\" + value;\n }\n\n private toPrecision(value: number) {\n const base = Math.pow(10, this._intervalPrecision);\n return Math.round(base * value) / base;\n }\n\n public getSelectedItemByText(itemText: string) {\n if (this.hasCustomIntervals || this.getContinuousValues().length > PivotModel.UseIntervalsFrom) {\n const interval = this.intervals.filter(interval => interval.label === itemText)[0];\n return new ItemValue(interval, interval !== undefined ? interval.label : \"\");\n }\n const labels = this.getLabels();\n const labelIndex = labels.indexOf(itemText);\n return new ItemValue(this.getValues()[labelIndex], labels[labelIndex]);\n }\n\n /**\n * Updates visualizer data.\n */\n public updateData(data: Array<{ [index: string]: any }>) {\n this.reset();\n super.updateData(data);\n }\n\n protected onDataChanged() {\n this.reset();\n super.onDataChanged();\n }\n\n protected getContinuousValues() {\n if (this._cachedValues === undefined) {\n this._continuousData = [];\n if(this.valueType === \"enum\") {\n this._cachedValues = [];\n return this._cachedValues;\n }\n const hash = {};\n this.data.forEach(dataItem => {\n const answerData = dataItem[this.name];\n if (answerData !== undefined) {\n // TODO: _continuousData should be sorted in order to speed-up statistics calculation in the getData function\n this._continuousData.push({ continuous: this.getContinuousValue(answerData), row: dataItem });\n hash[answerData] = { value: answerData, row: dataItem };\n }\n });\n this._cachedValues = Object.keys(hash).map(key => ({ original: hash[key].value, continuous: this.getContinuousValue(key), row: hash[key].row }));\n this._cachedValues.sort((a, b) => a.continuous - b.continuous);\n }\n return this._cachedValues;\n }\n\n protected isSupportAnswersOrder(): boolean {\n return false;\n }\n\n protected isSupportMissingAnswers(): boolean {\n return false;\n }\n\n protected get needUseRateValues() {\n return this.question.getType() == \"rating\" && Array.isArray(this.question[\"rateValues\"]) && this.question[\"rateValues\"].length > 0;\n }\n\n public getSeriesValues(): Array<string> {\n if(!this.questionsY || this.questionsY.length === 0) {\n return this.options.seriesValues || [];\n }\n const seriesValues = [];\n this.questionsY.forEach(q => {\n if (this.getQuestionValueType(q.question) === \"enum\") {\n seriesValues.push.apply(seriesValues, q.getValues().reverse());\n } else {\n seriesValues.push(q.question.name);\n }\n });\n return seriesValues;\n }\n\n public getSeriesLabels(): Array<string> {\n if(this.questionsY.length === 0) {\n return this.getSeriesValues();\n }\n const seriesLabels = [];\n this.questionsY.forEach(q => {\n if (this.getQuestionValueType(q.question) === \"enum\") {\n seriesLabels.push.apply(seriesLabels, q.getLabels().reverse());\n } else {\n seriesLabels.push(q.question.title || q.question.name);\n }\n });\n return seriesLabels;\n }\n\n public getValues(): Array<any> {\n if(this.valueType === \"enum\") {\n return super.getValues().reverse();\n }\n return this.intervals.map(interval => interval.start);\n }\n\n public getLabels(): Array<string> {\n if(this.valueType === \"enum\") {\n return super.getLabels().reverse();\n }\n return this.intervals.map(interval => interval.label);\n }\n\n public get hasCustomIntervals() {\n return !!this.questionOptions && Array.isArray(this.questionOptions.intervals);\n }\n\n public get intervals() {\n if (this.hasCustomIntervals) {\n return this.questionOptions.intervals;\n }\n\n if(this.question.getType() == \"rating\") {\n if (this.needUseRateValues) {\n const rateValues = this.question[\"rateValues\"] as ItemValue[];\n rateValues.sort((iv1, iv2) => iv1.value - iv2.value);\n return rateValues.map((rateValue, i) => ({\n start: rateValue.value,\n end: i < rateValues.length - 1 ? rateValues[i + 1].value : rateValue.value + 1,\n label: rateValue.text\n }));\n } else {\n const rateIntervals = [];\n for(let i = (this.question[\"rateMin\"] || 0); i <= (this.question[\"rateMax\"] || (PivotModel.IntervalsCount - 1)); i += (this.question[\"rateStep\"] || 1)) {\n rateIntervals.push({\n start: i,\n end: i + 1,\n label: \"\" + (!!this.question[\"rateMin\"] && !!this.question[\"rateMax\"] ? i : (i + \"-\" + (i+1)))\n });\n }\n return rateIntervals;\n }\n }\n\n if (this._cachedIntervals === undefined) {\n const continuousValues = this.getContinuousValues();\n this._cachedIntervals = [];\n if (continuousValues.length) {\n let start = continuousValues[0].continuous;\n const end = continuousValues[continuousValues.length - 1].continuous;\n const intervalsCount = PivotModel.IntervalsCount;\n const delta = (end - start) / intervalsCount;\n for (let i = 0; i < intervalsCount; ++i) {\n const next = start + delta;\n const istart = this.toPrecision(start);\n const inext = this.toPrecision(next);\n this._cachedIntervals.push({\n start: istart,\n end: i < intervalsCount - 1 ? inext : inext + delta / 100,\n label: \"\" + this.getString(istart) + \"-\" + this.getString(inext)\n });\n start = next;\n }\n }\n }\n return this._cachedIntervals;\n }\n\n public convertFromExternalData(externalCalculatedData: any): any[] {\n return [externalCalculatedData];\n }\n\n getSeriesValueIndexes(): { [index: string]: number } {\n const seriesValueIndexes = {};\n let valueIndex = 0;\n for (var i = 0; i < this.questionsY.length; ++i) {\n const questionValueType = this.getQuestionValueType(this.questionsY[i].question);\n if(questionValueType === \"enum\") {\n this.questionsY[i].getValues().reverse().forEach((value) => {\n seriesValueIndexes[this.questionsY[i].name + \"_\" + value] = valueIndex++;\n });\n } else {\n seriesValueIndexes[this.questionsY[i].name] = valueIndex++;\n }\n }\n return seriesValueIndexes;\n }\n\n public updateStatisticsSeriesValue(statistics: Array<Array<number>>, dataRow: { [index: string]: any }, valueIndex: number, seriesValueIndexes: { [index: string]: number }): void {\n for (let j = 0; j < this.questionsY.length; ++j) {\n if (dataRow[this.questionsY[j].name] !== undefined) {\n const questionValueType = this.getQuestionValueType(this.questionsY[j].question);\n if (questionValueType === \"enum\" || questionValueType === \"date\") {\n const seriesValueIndex = seriesValueIndexes[this.questionsY[j].name + \"_\" + dataRow[this.questionsY[j].name]];\n statistics[seriesValueIndex][valueIndex]++;\n } else {\n const seriesValueIndex = seriesValueIndexes[this.questionsY[j].name];\n statistics[seriesValueIndex][valueIndex] += parseFloat(dataRow[this.questionsY[j].name]);\n }\n }\n }\n }\n\n protected getCalculatedValuesCore(): Array<any> {\n const statistics: Array<Array<number>> = [];\n const series = this.getSeriesValues();\n if (series.length === 0) {\n series.push(\"\");\n }\n const seriesValueIndexes = this.getSeriesValueIndexes();\n if (this.valueType === \"enum\") {\n const values = this.getValues();\n const valueIndexes = {};\n values.forEach((value, index) => {\n valueIndexes[value] = index;\n });\n for (var i = 0; i < series.length; ++i) {\n statistics.push(values.map(i => 0));\n }\n this.data.forEach(dataRow => {\n const answerData = dataRow[this.name];\n if (answerData !== undefined && valueIndexes[answerData] !== undefined) {\n const valueIndex = valueIndexes[answerData];\n if(this.questionsY.length === 0) {\n statistics[0][valueIndex]++;\n } else {\n this.updateStatisticsSeriesValue(statistics, dataRow, valueIndex, seriesValueIndexes);\n }\n }\n });\n } else {\n const continuousValues = this.getContinuousValues();\n const intervals = this.intervals;\n for (var i = 0; i < series.length; ++i) {\n statistics.push(intervals.map(i => 0));\n }\n this._continuousData.forEach(dataValue => {\n for (let valueIndex = 0; valueIndex < intervals.length; ++valueIndex) {\n if (intervals[valueIndex].start <= dataValue.continuous && (dataValue.continuous < intervals[valueIndex].end || valueIndex == intervals.length - 1)) {\n if(this.questionsY.length === 0) {\n statistics[0][valueIndex]++;\n } else {\n this.updateStatisticsSeriesValue(statistics, dataValue.row, valueIndex, seriesValueIndexes);\n }\n break;\n }\n }\n });\n }\n return statistics;\n }\n\n public getValueType(): \"enum\" | \"date\" | \"number\" {\n return this.valueType;\n }\n\n protected isSupportSoftUpdateContent(): boolean {\n return false;\n }\n\n protected renderToolbar(container: HTMLElement) {\n if (!this.haveCommercialLicense && this.isRoot) {\n const banner = createCommercialLicenseLink();\n container.appendChild(banner);\n }\n container.className += \" sa-pivot__header\";\n super.renderToolbar(container);\n }\n}\n\nVisualizationManager.registerPivotVisualizer(PivotModel);","import { Question, ItemValue, Event } from \"survey-core\";\nimport { SelectBase } from \"../selectBase\";\nimport { VisualizationManager } from \"../visualizationManager\";\nimport { localization } from \"../localizationManager\";\nimport Plotly from \"plotly.js-dist-min\";\nimport { PlotlySetup } from \"./setup\";\nimport { VisualizerBase, IChartAdapter } from \"../visualizerBase\";\nimport { BooleanModel } from \"../boolean\";\nimport { BooleanPlotly, GaugePlotly, HistogramPlotly, MatrixDropdownGroupedPlotly, MatrixPlotly, PivotPlotly, SelectBasePlotly } from \"./legacy\";\n\nexport const plotlyChartTypes = {\n \"boolean\": BooleanPlotly.types,\n \"number\": GaugePlotly.types,\n \"selectBase\": SelectBasePlotly.types,\n \"histogram\": HistogramPlotly.types,\n \"matrix\": MatrixPlotly.types,\n \"matrixDropdownGrouped\": MatrixDropdownGroupedPlotly.types,\n \"pivot\": PivotPlotly.types,\n \"ranking\": [].concat(SelectBasePlotly.types).concat([\"radar\"]),\n};\n\nexport class PlotlyChartAdapter implements IChartAdapter {\n private _chart: Promise<Plotly.PlotlyHTMLElement> = undefined;\n\n constructor(protected model: SelectBase | VisualizerBase) { }\n\n protected patchConfigParameters(\n chartNode: object,\n traces: Array<object>,\n layout: object,\n config: any\n ) {\n if(this.model.question.getType() === \"boolean\") {\n const colors = this.model.getColors();\n const boolColors = [\n BooleanModel.trueColor || colors[0],\n BooleanModel.falseColor || colors[1],\n ];\n if((this.model as SelectBase).showMissingAnswers) {\n boolColors.push(colors[2]);\n }\n\n const chartType = (this.model as any).chartType;\n if (chartType === \"pie\" || chartType === \"doughnut\") {\n traces.forEach((trace: any) => {\n if (!trace) return;\n if (!trace.marker) trace.marker = {};\n trace.marker.colors = boolColors;\n });\n } else if (chartType === \"bar\") {\n traces.forEach((trace: any) => {\n if (!trace) return;\n if (!trace.marker) trace.marker = {};\n trace.marker.color = boolColors;\n });\n }\n }\n if(this.model.type === \"number\") {\n config.displayModeBar = true;\n }\n }\n\n public get chart() {\n return this._chart;\n }\n\n getChartTypes(): string[] {\n const visualizerType = this.model.type;\n const chartCtypes = plotlyChartTypes[visualizerType];\n return chartCtypes || [];\n }\n\n public async create(chartNode: HTMLElement): Promise<any> {\n const [plot, plotlyOptions] = await this.update(chartNode);\n\n if(this.model instanceof SelectBase && this.model.supportSelection) {\n const _model = this.model as SelectBase;\n (<any>chartNode)[\"on\"](\"plotly_click\", (data: any) => {\n if (data.points.length > 0) {\n let itemText = \"\";\n if (!plotlyOptions.hasSeries) {\n itemText = Array.isArray(data.points[0].customdata)\n ? data.points[0].customdata[0]\n : data.points[0].customdata;\n const item: ItemValue = _model.getSelectedItemByText(itemText);\n _model.setSelection(item);\n } else {\n itemText = data.points[0].data.name;\n const propertyLabel = data.points[0].label;\n const seriesValues = this.model.getSeriesValues();\n const seriesLabels = this.model.getSeriesLabels();\n const propertyValue = seriesValues[seriesLabels.indexOf(propertyLabel)];\n const selectedItem: ItemValue = _model.getSelectedItemByText(itemText);\n const item = new ItemValue({ [propertyValue]: selectedItem.value }, propertyLabel + \": \" + selectedItem.text);\n _model.setSelection(item);\n }\n\n // const itemText = plotlyOptions.hasSeries\n // ? data.points[0].data.name\n // : Array.isArray(data.points[0].customdata)\n // ? data.points[0].customdata[0]\n // : data.points[0].customdata;\n // const item: ItemValue = this.model.getSelectedItemByText(itemText);\n // this.model.setSelection(item);\n }\n });\n }\n\n var getDragLayer = () =>\n <HTMLElement>chartNode.getElementsByClassName(\"nsewdrag\")[0];\n (<any>chartNode)[\"on\"](\"plotly_hover\", () => {\n const dragLayer = getDragLayer();\n dragLayer && (dragLayer.style.cursor = \"pointer\");\n });\n (<any>chartNode)[\"on\"](\"plotly_unhover\", () => {\n const dragLayer = getDragLayer();\n dragLayer && (dragLayer.style.cursor = \"\");\n });\n\n // setTimeout(() => Plotly.Plots.resize(chartNode), 10);\n this._chart = plot;\n return plot;\n }\n\n public async update(chartNode: HTMLElement): Promise<any> {\n const answersData = (this.model instanceof SelectBase) ? await this.model.getAnswersData() : await this.model.getCalculatedValues();\n var plotlyOptions = PlotlySetup.setup((this.model as any).chartType, this.model, answersData as any);\n\n let config: any = {\n displaylogo: false,\n responsive: true,\n locale: localization.currentLocale,\n modeBarButtonsToRemove: [\"toImage\"],\n modeBarButtonsToAdd: [\n {\n name: \"toImageSjs\",\n title: localization.getString(\"saveDiagramAsPNG\"),\n icon: (<any>Plotly).Icons.camera,\n click: (gd: any) => {\n let options = {\n format: PlotlySetup.imageExportFormat,\n // width: 800,\n // height: 600,\n filename: this.model.question.name,\n };\n PlotlySetup.onImageSaving.fire(this.model, options);\n (<any>Plotly).downloadImage(gd, options);\n },\n },\n ],\n };\n if (SelectBasePlotly.displayModeBar !== undefined) {\n config.displayModeBar = SelectBasePlotly.displayModeBar;\n }\n\n this.patchConfigParameters(\n chartNode,\n plotlyOptions.traces,\n plotlyOptions.layout,\n config\n );\n\n let options = {\n traces: plotlyOptions.traces,\n layout: plotlyOptions.layout,\n data: answersData,\n config: config,\n };\n PlotlySetup.onPlotCreating.fire(this.model, options);\n\n const plot = (<any>Plotly).react(\n chartNode,\n options.traces,\n options.layout,\n options.config\n );\n\n return [plot, plotlyOptions];\n }\n\n public destroy(node: HTMLElement) {\n if(!!node) {\n (<any>Plotly).purge(node);\n }\n this._chart = undefined;\n }\n}\n\nVisualizerBase.chartAdapterType = PlotlyChartAdapter;\n","export * from \"./setup\";\nexport * from \"./chart-adapter\";\nexport * from \"./legacy\";\n","import { BooleanModel } from \"../boolean\";\nimport { SelectBase } from \"../selectBase\";\nimport { HistogramModel } from \"../histogram\";\nimport { Matrix } from \"../matrix\";\nimport { MatrixDropdownGrouped } from \"../matrixDropdownGrouped\";\nimport { PivotModel } from \"../pivot\";\nimport { NumberModel } from \"../number\";\nimport { RankingModel } from \"../ranking\";\n\nexport class SelectBasePlotly extends SelectBase {\n public static types = [\"bar\", \"vbar\", \"pie\", \"doughnut\"];\n public static displayModeBar: any = undefined;\n}\n\nexport class BooleanPlotly extends BooleanModel {\n public static types = [\"pie\", \"bar\", \"doughnut\"];\n}\n\nexport class HistogramPlotly extends HistogramModel {\n public static types = [\"vbar\", \"bar\"];\n}\n\nexport class MatrixPlotly extends Matrix {\n public static types = [\"bar\", \"stackedbar\", \"pie\", \"doughnut\"];\n}\n\nexport class MatrixDropdownGroupedPlotly extends MatrixDropdownGrouped {\n public static types = [\"stackedbar\", \"bar\", \"pie\", \"doughnut\"];\n}\n\nexport class PivotPlotly extends PivotModel {\n public static types = [\"vbar\", \"bar\", \"line\", \"stackedbar\", \"pie\", \"doughnut\"]; // [\"vbar\", \"bar\"];\n}\n\nexport class GaugePlotly extends NumberModel {\n public static displayModeBar: any = undefined;\n public static types = [\"gauge\", \"bullet\"];\n}\n\nexport class RankingPlotly extends RankingModel {}","import { Event, QuestionRatingModel } from \"survey-core\";\nimport { IAnswersData, SelectBase } from \"../selectBase\";\nimport { VisualizerBase } from \"../visualizerBase\";\nimport { localization } from \"../localizationManager\";\nimport { DataHelper } from \"../utils\";\nimport { NumberModel } from \"../number\";\n\nexport interface PlotlyOptions {\n traces: Array<any>;\n layout: any;\n hasSeries: boolean;\n}\n\nexport class PlotlySetup {\n public static imageExportFormat = \"png\";\n /**\n * Fires when end user clicks on the 'save as image' button.\n */\n public static onImageSaving = new Event<\n (sender: VisualizerBase, options: any) => any,\n VisualizerBase,\n any\n >();\n\n /**\n * Fires before plot will be created. User can change traces, layout and config of the plot.\n * Options is an object with the following fields: traces, layout and config of the plot.\n */\n public static onPlotCreating = new Event<\n (sender: VisualizerBase, options: any) => any,\n VisualizerBase,\n any\n >();\n\n static setups: { [type: string]: (model: VisualizerBase, answersData: IAnswersData) => PlotlyOptions } = {\n bar: PlotlySetup.setupBar,\n vbar: PlotlySetup.setupVBar,\n line: PlotlySetup.setupVBar,\n stackedbar: PlotlySetup.setupBar,\n doughnut: PlotlySetup.setupPie,\n pie: PlotlySetup.setupPie,\n scatter: PlotlySetup.setupScatter,\n gauge: PlotlySetup.setupGauge,\n bullet: PlotlySetup.setupGauge,\n radar: PlotlySetup.setupRadar,\n };\n\n static setup(charType: string, model: VisualizerBase, answersData: IAnswersData): PlotlyOptions {\n return this.setups[charType](model, answersData);\n }\n\n static getTruncatedLabel = (label: string, labelTruncateLength: number) => {\n const truncateSymbols = \"...\";\n const truncateSymbolsLength = truncateSymbols.length;\n\n if (!labelTruncateLength) return label;\n if (labelTruncateLength === -1) return label;\n if (label.length <= labelTruncateLength + truncateSymbolsLength)\n return label;\n\n return label.substring(0, labelTruncateLength) + truncateSymbols;\n };\n\n static setupPie(model: SelectBase, answersData: IAnswersData): PlotlyOptions {\n let {\n datasets,\n labels,\n colors,\n texts,\n seriesLabels,\n } = answersData;\n\n const hasSeries = seriesLabels.length > 1 || model.question.getType() === \"matrix\";\n const layoutColumns = 2;\n\n let traces: any = [];\n const traceConfig: any = {\n type: model.chartType,\n sort: false,\n labels: labels,\n customdata: labels,\n text: labels.map((label: string) => {\n return PlotlySetup.getTruncatedLabel(\n label,\n model.labelTruncateLength\n );\n }),\n hoverinfo: \"value+text\",\n textposition: \"inside\",\n texttemplate: \"%{text}\"\n };\n\n if (model.chartType === \"doughnut\") {\n traceConfig.type = \"pie\";\n traceConfig.hole = 0.4;\n }\n\n if (!hasSeries) {\n traceConfig.mode = \"markers\",\n traceConfig.marker = { color: colors };\n traceConfig.marker.symbol = \"circle\";\n traceConfig.marker.size = 16;\n }\n\n datasets.forEach((dataset: Array<number>, index: number) => {\n const isNotEmpty = dataset.some((value: number) => value != 0);\n let pieTexts = traceConfig.text;\n if(model.showPercentages) {\n const percentages = model.getPercentages([dataset])[0];\n pieTexts = labels.map((l, li) => (model.showOnlyPercentages ? percentages[li] : PlotlySetup.getTruncatedLabel(l, model.labelTruncateLength) + \"<br>\" + percentages[li]) + \"%\");\n }\n if(isNotEmpty) {\n traces.push(\n Object.assign({}, traceConfig, {\n values: dataset,\n text: pieTexts,\n domain: {\n column: traces.length % layoutColumns,\n row: Math.floor(traces.length / layoutColumns),\n },\n title: { position: \"bottom center\", text: seriesLabels[index] }\n })\n );\n }\n });\n\n const radius = labels.length < 10 ? labels.length * 50 + 100 : 550;\n const height = (radius + 25) * Math.ceil(traces.length / layoutColumns);\n\n const layout: any = {\n font: {\n family: \"Segoe UI, sans-serif\",\n size: 14,\n weight: \"normal\",\n color: \"#404040\",\n },\n height: height,\n margin: {\n l: 0,\n t: 25,\n b: 0,\n r: 10,\n },\n colorway: colors,\n hovermode: \"closest\",\n plot_bgcolor: model.backgroundColor,\n paper_bgcolor: model.backgroundColor,\n showlegend: false,\n };\n\n if (hasSeries) {\n layout.annotations = [];\n layout.grid = { rows: Math.ceil(traces.length / layoutColumns), columns: layoutColumns };\n }\n return { traces, layout, hasSeries };\n }\n\n static setupBar(model: SelectBase, answersData: IAnswersData): PlotlyOptions {\n let lineHeight = 30;\n let topMargin = 30;\n let bottomMargin = 30;\n let {\n datasets,\n labels,\n colors,\n texts,\n seriesLabels,\n labelsTitle,\n valuesTitle\n } = answersData;\n\n const hasSeries = seriesLabels.length > 1 || model.question.getType() === \"matrix\";\n\n const traces: any = [];\n const traceConfig: any = {\n type: model.chartType === \"line\" ? \"line\" : \"bar\",\n y: labels,\n customdata: labels,\n hoverinfo: \"text\",\n orientation: \"h\",\n textposition: \"none\",\n };\n if (!hasSeries) {\n traceConfig.width = 0.5;\n traceConfig.bargap = 0.5;\n traceConfig.mode = \"markers\",\n traceConfig.marker = { color: colors };\n }\n\n datasets.forEach((dataset: Array<number>, index: number) => {\n const traceName = hasSeries ? seriesLabels[index] : labels[index];\n const percentString = model.showPercentages ? \"%\" : \"\";\n const trace = Object.assign({}, traceConfig, {\n x: dataset,\n name: traceName,\n width: hasSeries && model.chartType !== \"stackedbar\" ? 0.5 / seriesLabels.length : 0.5,\n text: texts[index],\n hovertext: labels.map((label: string, labelIndex: number) => {\n if(model.showOnlyPercentages) {\n return `${texts[index][labelIndex]}${percentString}`;\n } else {\n return hasSeries ? `${traceName} : ${label}, ${texts[index][labelIndex]}${percentString}` : `${texts[index][labelIndex]}${percentString}, ${label}`;\n }\n }),\n });\n if (model.showPercentages) {\n let texttemplate = model.showOnlyPercentages ? \"%{text}%\" : \"%{value} (%{text}%)\";\n trace.textposition = \"inside\";\n trace.texttemplate = texttemplate;\n trace.width = hasSeries && model.chartType !== \"stackedbar\" ? 0.7 / seriesLabels.length : 0.9;\n trace.bargap = hasSeries && model.chartType !== \"stackedbar\" ? 0.3 / seriesLabels.length : 0.1;\n }\n traces.push(trace);\n });\n\n const height = (labels.length + 1) * lineHeight + topMargin + bottomMargin;\n\n const layout: any = {\n font: {\n family: \"Segoe UI, sans-serif\",\n size: 14,\n weight: \"normal\",\n color: \"#404040\",\n },\n height: height,\n margin: {\n t: topMargin,\n b: bottomMargin,\n r: 10,\n },\n colorway: colors,\n hovermode: \"closest\",\n plot_bgcolor: model.backgroundColor,\n paper_bgcolor: model.backgroundColor,\n showlegend: hasSeries,\n barmode: hasSeries && model.chartType == \"stackedbar\" ? \"stack\" : \"group\",\n xaxis: {\n rangemode: \"nonnegative\",\n automargin: true,\n },\n yaxis: {\n automargin: true,\n type: \"category\",\n orientation: \"h\",\n tickmode: \"array\",\n tickvals: labels,\n ticktext: labels.map((label: string) => {\n return PlotlySetup.getTruncatedLabel(\n label,\n model.labelTruncateLength\n ) + \" \";\n }),\n },\n };\n\n if(labelsTitle) {\n layout.yaxis.title = { text: labelsTitle };\n }\n if(valuesTitle) {\n layout.xaxis.title = { text: valuesTitle };\n }\n\n if (hasSeries && model.chartType !== \"stackedbar\") {\n layout.height =\n (labels.length * seriesLabels.length + 1) * lineHeight +\n topMargin +\n bottomMargin;\n }\n\n if([\"ar\", \"fa\"].indexOf(localization.currentLocale) !== -1) {\n layout.xaxis.autorange = \"reversed\";\n layout.yaxis.side = \"right\";\n layout.legend = {\n x: 0,\n y: 1,\n xanchor: \"left\",\n yanchor: \"top\"\n };\n }\n\n return { traces, layout, hasSeries };\n }\n\n static setupVBar(model: SelectBase, answersData: IAnswersData): PlotlyOptions {\n let topMargin = 30;\n let bottomMargin = 30;\n let {\n datasets,\n labels,\n colors,\n texts,\n seriesLabels,\n labelsTitle,\n valuesTitle\n } = answersData;\n\n const hasSeries = seriesLabels.length > 1 || model.question.getType() === \"matrix\";\n\n if (model.type !== \"histogram\" && model.type !== \"pivot\") {\n labels = [].concat(labels).reverse();\n seriesLabels = [].concat(seriesLabels).reverse();\n colors = [].concat(colors.slice(0, hasSeries ? seriesLabels.length : labels.length)).reverse();\n const ts = [];\n texts.forEach(text => {\n ts.push([].concat(text).reverse());\n });\n texts = ts;\n const ds = [];\n datasets.forEach(dataset => {\n ds.push([].concat(dataset).reverse());\n });\n datasets = ds;\n }\n\n const traces: any = [];\n const traceConfig: any = {\n type: model.chartType === \"line\" ? \"line\" : \"bar\",\n x: labels,\n customdata: hasSeries ? seriesLabels : labels,\n hoverinfo: hasSeries ? undefined : \"x+y\",\n orientation: \"v\",\n textposition: \"none\",\n };\n if (!hasSeries) {\n traceConfig.width = 0.5;\n traceConfig.bargap = 0.5;\n traceConfig.mode = \"markers\",\n traceConfig.marker = { color: colors };\n }\n\n datasets.forEach((dataset: Array<number>, index: number) => {\n var trace = Object.assign({}, traceConfig, {\n y: dataset,\n name: hasSeries ? seriesLabels[index] : labels[index],\n text: texts[index],\n });\n if (model.showPercentages) {\n let texttemplate = model.showOnlyPercentages ? \"%{text}%\" : \"%{value} (%{text}%)\";\n trace.textposition = \"inside\";\n trace.texttemplate = texttemplate;\n if (!hasSeries) {\n trace.width = 0.9;\n trace.bargap = 0.1;\n }\n }\n traces.push(trace);\n });\n\n const maxTicks = 50;\n const tickStep = Math.ceil(labels.length / maxTicks);\n\n const layout: any = {\n font: {\n family: \"Segoe UI, sans-serif\",\n size: 14,\n weight: \"normal\",\n color: \"#404040\",\n },\n margin: {\n t: topMargin,\n b: bottomMargin,\n r: 10,\n },\n colorway: colors,\n hovermode: \"closest\",\n plot_bgcolor: model.backgroundColor,\n paper_bgcolor: model.backgroundColor,\n showlegend: hasSeries,\n yaxis: {\n rangemode: \"nonnegative\",\n automargin: true,\n },\n xaxis: {\n automargin: true,\n type: \"category\",\n tickmode: \"array\",\n tickvals: labels,\n ticktext: labels.map((label: string, index: number) => {\n if(labels.length > maxTicks && index % tickStep !== 0) {\n return \"\";\n }\n return PlotlySetup.getTruncatedLabel(\n label,\n model.labelTruncateLength\n );\n }),\n },\n };\n\n if(labelsTitle) {\n layout.xaxis.title = { text: labelsTitle };\n }\n if(valuesTitle) {\n layout.yaxis.title = { text: valuesTitle };\n }\n\n if (model.showPercentages && model.showOnlyPercentages) {\n layout.yaxis = {\n automargin: true,\n tickformat: \".0%\",\n range: [0, 1],\n ticklen: model.showOnlyPercentages ? 25 : 5,\n tickcolor: \"transparent\",\n };\n }\n if(!(model as any).getValueType || (model as any).getValueType() != \"date\") {\n layout.xaxis = {\n automargin: true,\n type: \"category\",\n };\n }\n\n return { traces, layout, hasSeries };\n }\n\n static setupScatter(model: SelectBase, answersData: IAnswersData): PlotlyOptions {\n let lineHeight = 30;\n let topMargin = 30;\n let bottomMargin = 30;\n let {\n datasets,\n labels,\n colors,\n texts,\n seriesLabels,\n } = answersData;\n const hasSeries = seriesLabels.length > 1 || model.question.getType() === \"matrix\";\n const traces: any = [];\n\n const traceConfig: any = {\n type: \"scatter\",\n y: (hasSeries ? seriesLabels : labels).map((label: string) => {\n return PlotlySetup.getTruncatedLabel(\n label,\n model.labelTruncateLength\n );\n }),\n customdata: hasSeries ? seriesLabels : labels,\n text: hasSeries ? seriesLabels : labels,\n hoverinfo: \"x+y\",\n orientation: \"h\",\n mode: \"markers\",\n width: 0.5,\n marker: <any>{},\n };\n\n if (!hasSeries) {\n traceConfig.marker.symbol = \"circle\";\n traceConfig.marker.size = 16;\n }\n\n datasets.forEach((dataset: Array<number>) => {\n {\n var trace = Object.assign({}, traceConfig, {\n x: dataset,\n });\n traces.push(trace);\n }\n });\n\n const height = (labels.length + 1) * lineHeight + topMargin + bottomMargin;\n\n const layout: any = {\n font: {\n family: \"Segoe UI, sans-serif\",\n size: 14,\n weight: \"normal\",\n color: \"#404040\",\n },\n height: height,\n margin: {\n t: topMargin,\n b: bottomMargin,\n r: 10,\n },\n colorway: colors,\n hovermode: \"closest\",\n yaxis: {\n automargin: true,\n type: \"category\",\n ticklen: 5,\n tickcolor: \"transparent\",\n },\n xaxis: {\n rangemode: \"nonnegative\",\n automargin: true,\n },\n plot_bgcolor: model.backgroundColor,\n paper_bgcolor: model.backgroundColor,\n showlegend: false,\n };\n\n if (hasSeries) {\n layout.showlegend = true;\n layout.height = undefined;\n\n labels.forEach((label, index) => {\n traces[index].hoverinfo = \"x+name\";\n traces[index].marker.color = undefined;\n traces[index].name = label;\n });\n }\n return { traces, layout, hasSeries };\n }\n\n static setupGauge(model: NumberModel, answersData: IAnswersData): PlotlyOptions {\n let [level, minValue, maxValue] = answersData as any;\n\n if (model.question.getType() === \"rating\") {\n const rateValues = model.question.visibleRateValues;\n maxValue = rateValues[rateValues.length - 1].value;\n minValue = rateValues[0].value;\n }\n\n const colors = model.generateColors(\n maxValue,\n minValue,\n NumberModel.stepsCount\n );\n\n if (NumberModel.showAsPercentage) {\n level = DataHelper.toPercentage(level, maxValue);\n minValue = DataHelper.toPercentage(minValue, maxValue);\n maxValue = DataHelper.toPercentage(maxValue, maxValue);\n }\n\n var traces: any = [\n {\n type: \"indicator\",\n mode: \"gauge+number\",\n gauge: {\n axis: { range: [minValue, maxValue] },\n shape: model.chartType,\n bgcolor: \"white\",\n bar: { color: colors[0] },\n },\n value: level,\n text: model.name,\n domain: { x: [0, 1], y: [0, 1] },\n },\n ];\n\n const chartMargin = model.chartType === \"bullet\" ? 60 : 30;\n var layout: any = {\n height: 250,\n margin: {\n l: chartMargin,\n r: chartMargin,\n b: chartMargin,\n t: chartMargin,\n pad: 5\n },\n plot_bgcolor: model.backgroundColor,\n paper_bgcolor: model.backgroundColor,\n };\n\n return { traces, layout, hasSeries: false };\n }\n\n static setupRadar(model: SelectBase, answersData: IAnswersData): PlotlyOptions {\n let {\n datasets,\n labels,\n colors,\n texts,\n seriesLabels,\n } = answersData;\n const hasSeries = seriesLabels.length > 1 || model.question.getType() === \"matrix\";\n const traces: any = [];\n\n const traceConfig: any = {\n type: \"scatterpolar\",\n mode: \"lines+markers\",\n fill: \"toself\",\n line: {\n width: 2\n },\n marker: {\n size: 6\n }\n };\n\n datasets.forEach((dataset: Array<number>, index: number) => {\n const traceName = hasSeries ? seriesLabels[index] : \"\";\n const trace = Object.assign({}, traceConfig, {\n r: dataset,\n theta: labels,\n name: traceName,\n text: texts[index],\n hoverinfo: \"r+theta+name\",\n customdata: labels,\n hovertemplate: \"%{theta}: %{r}\" +\n \"<extra></extra>\",\n line: {\n ...traceConfig.line,\n color: colors[index % colors.length]\n },\n marker: {\n ...traceConfig.marker,\n color: colors[index % colors.length]\n }\n });\n traces.push(trace);\n });\n\n const layout: any = {\n font: {\n family: \"Segoe UI, sans-serif\",\n size: 14,\n weight: \"normal\",\n color: \"#404040\",\n },\n polar: {\n radialaxis: {\n visible: true,\n range: [0, Math.max(...datasets.map(s => Math.max(...s))) * 1.1],\n tickfont: {\n size: 12\n }\n },\n angularaxis: {\n tickfont: {\n size: 12\n },\n ticktext: labels.map((label: string) => {\n return PlotlySetup.getTruncatedLabel(\n label,\n model.labelTruncateLength\n );\n }),\n tickvals: labels\n }\n },\n showlegend: hasSeries,\n colorway: colors,\n plot_bgcolor: model.backgroundColor,\n paper_bgcolor: model.backgroundColor,\n margin: {\n l: 50,\n r: 50,\n t: 50,\n b: 50\n }\n };\n\n return { traces, layout, hasSeries };\n }\n}\n","import { VisualizationManager } from \"./visualizationManager\";\nimport { SelectBase } from \"./selectBase\";\nimport { QuestionRankingModel } from \"survey-core\";\n\nexport class RankingModel extends SelectBase {\n\n constructor(\n question: QuestionRankingModel,\n data: Array<{ [index: string]: any }>,\n options?: any,\n name?: string\n ) {\n super(question, data, options, name || \"ranking\");\n }\n\n getQuestionResults() {\n const name = this.question.name;\n return this.data.map((dataItem) => dataItem[name]);\n }\n\n getEmptyData() {\n const choices = this.getValues();\n let data: any = [];\n\n data.length = choices.length;\n data.fill(0);\n\n return data;\n }\n\n protected getCalculatedValuesCore(): Array<any> {\n const results = this.getQuestionResults();\n const choices = this.getValues();\n\n let plotlyData = this.getEmptyData();\n\n results.forEach((result) => {\n this.applyResultToPlotlyData(result, plotlyData, choices);\n });\n\n return [plotlyData];\n }\n\n applyResultToPlotlyData(result: any[], plotlyData: any, choices: any) {\n if (!result || !plotlyData || !choices) return;\n\n result.forEach((resultValue: any, resultValueIndex: number, result: any[]) => {\n let index = choices.indexOf(resultValue);\n plotlyData[index] =\n +plotlyData[index] + (result.length - resultValueIndex);\n });\n }\n}\n\nVisualizationManager.registerVisualizer(\"ranking\", RankingModel);\n","import { Question, QuestionSelectBase, ItemValue, Event, QuestionRatingModel } from \"survey-core\";\nimport { VisualizerBase } from \"./visualizerBase\";\nimport { localization } from \"./localizationManager\";\nimport { DataHelper, DocumentHelper } from \"./utils/index\";\nimport { VisualizationManager } from \"./visualizationManager\";\n\nexport interface IVisualizerWithSelection {\n selection: ItemValue;\n onDataItemSelected: (selectedValue: any, selectedText: string) => void;\n setSelection(item: ItemValue): void;\n}\n\nexport interface IAnswersData {\n datasets: Array<Array<any>>;\n labels: Array<string>;\n colors: Array<string>;\n texts: Array<Array<any>>;\n seriesLabels: Array<string>;\n labelsTitle?: string;\n valuesTitle?: string;\n}\n\nexport function hideEmptyAnswersInData(answersData: IAnswersData): IAnswersData {\n const result = {\n datasets: <Array<any>>[],\n labels: <Array<string>>[],\n colors: <Array<string>>[],\n texts: <Array<any>>[],\n seriesLabels: <Array<any>>[],\n };\n if(answersData.seriesLabels.length === 0) {\n result.datasets.push([]);\n result.texts.push([]);\n for (var i = 0; i < answersData.datasets[0].length; i++) {\n if (answersData.datasets[0][i] != 0) {\n result.datasets[0].push(answersData.datasets[0][i]);\n result.labels.push(answersData.labels[i]);\n result.colors.push(answersData.colors[i]);\n result.texts[0].push(answersData.texts[0][i]);\n }\n }\n return result;\n }\n const seriesDataExistence = <Array<boolean>>[];\n seriesDataExistence.length = answersData.seriesLabels.length;\n const valuesDataExistence = <Array<boolean>>[];\n valuesDataExistence.length = answersData.labels.length;\n for (var seriesIndex = 0; seriesIndex < answersData.seriesLabels.length; seriesIndex++) {\n for (var valueIndex = 0; valueIndex < answersData.labels.length; valueIndex++) {\n if (answersData.datasets[seriesIndex][valueIndex] != 0) {\n seriesDataExistence[seriesIndex] = true;\n valuesDataExistence[valueIndex] = true;\n }\n }\n }\n for (var valueIndex = 0; valueIndex < valuesDataExistence.length; valueIndex++) {\n if (valuesDataExistence[valueIndex]) {\n result.labels.push(answersData.labels[valueIndex]);\n result.colors.push(answersData.colors[valueIndex]);\n }\n }\n for (var seriesIndex = 0; seriesIndex < answersData.seriesLabels.length; seriesIndex++) {\n if (seriesDataExistence[seriesIndex]) {\n result.seriesLabels.push(answersData.seriesLabels[seriesIndex]);\n }\n }\n for (var seriesIndex = 0; seriesIndex < answersData.datasets.length; seriesIndex++) {\n if (seriesDataExistence[seriesIndex]) {\n const dataset = [];\n const texts = [];\n for (var valueIndex = 0; valueIndex < answersData.labels.length; valueIndex++) {\n if (valuesDataExistence[valueIndex]) {\n dataset.push(answersData.datasets[seriesIndex][valueIndex]);\n texts.push(answersData.texts[seriesIndex][valueIndex]);\n }\n }\n result.datasets.push(dataset);\n result.texts.push(texts);\n }\n }\n return result;\n}\n\nexport class SelectBase\n extends VisualizerBase\n implements IVisualizerWithSelection {\n protected selectedItem: ItemValue = undefined;\n private choicesOrderSelector: HTMLDivElement = undefined;\n private showPercentageBtn: HTMLElement = undefined;\n private emptyAnswersBtn: HTMLElement = undefined;\n private transposeDataBtn: HTMLElement = undefined;\n private topNSelector: HTMLDivElement = undefined;\n private _showPercentages: boolean;\n private _showOnlyPercentages: boolean = false;\n private _percentagePrecision: number = 2;\n protected _answersOrder: string = \"default\";\n private _hideEmptyAnswers = false;\n private _topN = -1;\n public static topNValuesDefaults = [-1, 5, 10, 20];\n public topNValues = [].concat(SelectBase.topNValuesDefaults);\n protected _transposeData: boolean = false;\n private _showMissingAnswers: boolean = false;\n private missingAnswersBtn: HTMLElement = undefined;\n\n constructor(\n question: Question,\n data: Array<{ [index: string]: any }>,\n options?: any,\n name?: string\n ) {\n super(question, data, options, name || \"selectBase\");\n if (!!question) { // TODO: move somewhere else\n (<any>question).visibleChoicesChangedCallback = () => {\n this.dataProvider.raiseDataChanged();\n };\n }\n this._supportSelection = true;\n this._showOnlyPercentages = this.options.showOnlyPercentages === true;\n\n if (this.options.percentagePrecision) {\n this._percentagePrecision = this.options.percentagePrecision;\n }\n if (this.options.transposeData !== undefined) {\n this._transposeData = this.options.transposeData;\n }\n\n this._hideEmptyAnswers = this.options.hideEmptyAnswers === true;\n this._answersOrder = this.options.answersOrder || \"default\";\n this._showMissingAnswers = this.isSupportMissingAnswers() && this.options.showMissingAnswers === true;\n\n if(this.options.allowExperimentalFeatures) {\n // this.chartTypes.splice(1, 0, \"vbar\");\n }\n if (VisualizerBase.chartAdapterType) {\n this._chartAdapter = new VisualizerBase.chartAdapterType(this);\n this.chartTypes = this._chartAdapter.getChartTypes();\n if (this.getSeriesValues().length > 0 && this.chartTypes.indexOf(\"stackedbar\") === -1) {\n this.chartTypes.push(\"stackedbar\");\n }\n this._chartType = this.chartTypes[0];\n if (this.chartTypes.indexOf(this.options.defaultChartType) !== -1) {\n this._chartType = this.options.defaultChartType;\n }\n }\n\n if(this.options.allowChangeVisualizerType !== false) {\n this.registerToolbarItem(\"changeChartType\", () => {\n if (this.chartTypes.length > 1) {\n return DocumentHelper.createSelector(\n this.chartTypes.map((chartType) => {\n return {\n value: chartType,\n text: localization.getString(\"chartType_\" + chartType),\n };\n }),\n (option: any) => this.chartType === option.value,\n (e: any) => {\n this.setChartType(e.target.value);\n }\n );\n }\n return null;\n });\n }\n\n this.registerToolbarItem(\"changeAnswersOrder\", () => {\n if (this.isSupportAnswersOrder()) {\n this.choicesOrderSelector = DocumentHelper.createSelector(\n [\n { text: localization.getString(\"defaultOrder\"), value: \"default\" },\n { text: localization.getString(\"ascOrder\"), value: \"asc\" },\n { text: localization.getString(\"descOrder\"), value: \"desc\" },\n ],\n (option) => false,\n (e) => {\n this.answersOrder = e.target.value;\n }\n );\n this.updateOrderSelector();\n }\n return this.choicesOrderSelector;\n });\n this.registerToolbarItem(\"showPercentages\", () => {\n if (\n this.options.allowShowPercentages &&\n (this.chartTypes.indexOf(\"bar\") !== -1 ||\n this.chartTypes.indexOf(\"stackedbar\") !== -1)\n ) {\n this.showPercentageBtn = DocumentHelper.createButton(() => {\n this.showPercentages = !this.showPercentages;\n });\n this.updateShowPercentageBtn();\n return this.showPercentageBtn;\n }\n });\n this.registerToolbarItem(\"hideEmptyAnswers\", () => {\n if (this.options.allowHideEmptyAnswers) {\n this.emptyAnswersBtn = DocumentHelper.createButton(() => {\n this.hideEmptyAnswers = !this._hideEmptyAnswers;\n });\n this.updateEmptyAnswersBtn();\n }\n return this.emptyAnswersBtn;\n }, 1000);\n this.registerToolbarItem(\"topNAnswers\", () => {\n if (\n this.options.allowTopNAnswers &&\n this.getSeriesValues().length === 0\n ) {\n this.topNSelector = DocumentHelper.createSelector(\n this.topNValues.map((value) => {\n return {\n text: localization.getString(\"topNValueText\" + value),\n value: value,\n };\n }),\n (option) => false,\n (e) => {\n this.topN = parseInt(e.target.value);\n }\n );\n this.updateTopNSelector();\n }\n return this.topNSelector;\n });\n this.registerToolbarItem(\"transposeData\", () => {\n if (this.options.allowTransposeData) {\n this.transposeDataBtn = DocumentHelper.createButton(() => {\n this.transposeData = !this.transposeData;\n });\n this.updateTransposeDataBtn();\n }\n return this.transposeDataBtn;\n });\n this.registerToolbarItem(\"showMissingAnswers\", () => {\n if (this.isSupportMissingAnswers() && this.options.allowShowMissingAnswers) {\n this.missingAnswersBtn = DocumentHelper.createButton(() => {\n this.showMissingAnswers = !this._showMissingAnswers;\n });\n this.updateMissingAnswersBtn();\n }\n return this.missingAnswersBtn;\n });\n }\n\n protected chartTypes: string[] = [];\n protected _chartType: string = \"bar\";\n /**\n * Chart type - current chart type.\n */\n public get chartType(): string {\n return this._chartType;\n }\n public set chartType(newChartType: string) {\n this.setChartType(newChartType);\n }\n\n private updateEmptyAnswersBtn() {\n if (!!this.emptyAnswersBtn) {\n this.emptyAnswersBtn.innerText = this._hideEmptyAnswers\n ? localization.getString(\"showEmptyAnswers\")\n : localization.getString(\"hideEmptyAnswers\");\n if (this.chartType == \"bar\" || this.chartType == \"vbar\" || this.chartType == \"line\" || this.chartType == \"scatter\") {\n this.emptyAnswersBtn.style.display = \"inline\";\n } else {\n this.emptyAnswersBtn.style.display = \"none\";\n }\n }\n }\n\n private updateTransposeDataBtn() {\n if (!!this.transposeDataBtn) {\n this.transposeDataBtn.innerText = this.transposeData\n ? localization.getString(\"showPerColumns\")\n : localization.getString(\"showPerValues\");\n if (this.getSeriesValues().length > 0) {\n this.transposeDataBtn.style.display = \"inline\";\n } else {\n this.transposeDataBtn.style.display = \"none\";\n }\n }\n }\n\n private updateOrderSelector() {\n if (!!this.choicesOrderSelector) {\n if (\n this.chartType == \"bar\" ||\n this.chartType == \"vbar\" ||\n this.chartType == \"line\" ||\n this.chartType == \"scatter\" ||\n ((this.chartType == \"pie\" || this.chartType == \"doughnut\") &&\n this.topN > 0)\n ) {\n this.choicesOrderSelector.style.display = \"inline-flex\";\n } else {\n this.choicesOrderSelector.style.display = \"none\";\n }\n this.choicesOrderSelector.getElementsByTagName(\n \"select\"\n )[0].value = this.answersOrder;\n }\n }\n\n private updateShowPercentageBtn() {\n if (!!this.showPercentageBtn) {\n this.showPercentageBtn.innerText = this._showPercentages\n ? localization.getString(\"hidePercentages\")\n : localization.getString(\"showPercentages\");\n if (this.chartType == \"bar\" || this.chartType == \"vbar\" || this.chartType == \"stackedbar\") {\n this.showPercentageBtn.style.display = \"inline\";\n } else {\n this.showPercentageBtn.style.display = \"none\";\n }\n }\n }\n\n private updateTopNSelector() {\n if (!!this.topNSelector) {\n this.topNSelector.getElementsByTagName(\"select\")[0].value = <any>(\n this._topN\n );\n }\n }\n\n private updateMissingAnswersBtn() {\n if (!!this.missingAnswersBtn) {\n this.missingAnswersBtn.innerText = this._showMissingAnswers\n ? localization.getString(\"hideMissingAnswers\")\n : localization.getString(\"showMissingAnswers\");\n }\n }\n\n protected onChartTypeChanged() {\n this.updateOrderSelector();\n this.updateShowPercentageBtn();\n this.updateEmptyAnswersBtn();\n this.updateTopNSelector();\n this.stateChanged(\"chartType\", this._chartType);\n }\n\n protected setChartType(chartType: string) {\n if (\n this.chartTypes.indexOf(chartType) !== -1 &&\n this._chartType !== chartType\n ) {\n this._chartType = chartType;\n this.onChartTypeChanged();\n this.refreshContent();\n }\n }\n\n protected getCorrectAnswerText(): string {\n const correctAnswerValue = super.getCorrectAnswerText();\n const resultValues = Array.isArray(correctAnswerValue) ? correctAnswerValue : [correctAnswerValue];\n const selectBaseQuestion = this.question as QuestionSelectBase;\n return resultValues.map((value: any) => ItemValue.getTextOrHtmlByValue(selectBaseQuestion.choices, value)).join(\", \");\n }\n\n protected isSupportSoftUpdateContent(): boolean {\n return true;\n }\n\n protected softUpdateContent(): void {\n const chartNode: HTMLElement = <HTMLElement>this.contentContainer?.children[0];\n if(chartNode) {\n this._chartAdapter.update(chartNode);\n }\n }\n\n public getSelectedItemByText(itemText: string) {\n if(this.question instanceof QuestionRatingModel) {\n const rateValues = this.question.rateValues;\n return rateValues?.filter((choice: ItemValue) => choice.text === itemText)[0] ?? new ItemValue(parseFloat(itemText), itemText);\n }\n const selBase = <QuestionSelectBase>this.question;\n if (this.question.hasOther && itemText == selBase.otherText) {\n return selBase.otherItem;\n } else {\n return selBase.choices.filter(\n (choice: ItemValue) => choice.text === itemText\n )[0];\n }\n }\n\n protected onSelectionChanged(item: ItemValue): void {\n if (this.onDataItemSelected !== undefined) {\n this.onDataItemSelected(\n item !== undefined ? item.value : undefined,\n item !== undefined ? item.text : \"\"\n );\n }\n this.stateChanged(\"filter\", this.selectedItem?.value);\n }\n\n setSelection(item: ItemValue): void {\n if (this.selectedItem !== item) {\n this.selectedItem = item;\n this.onSelectionChanged(item);\n }\n }\n get selection() {\n return this.selectedItem;\n }\n\n /**\n * Gets and sets whether chart should show percentages only.\n */\n public get showOnlyPercentages(): boolean {\n return this._showOnlyPercentages;\n }\n\n public set showOnlyPercentages(val: boolean) {\n this._showOnlyPercentages = val;\n this.refreshContent();\n this.stateChanged(\"showOnlyPercentages\", val);\n }\n\n protected getShowPercentagesDefault(): boolean {\n if(this.options.showPercentages === undefined) {\n return [\"pie\", \"doughnut\"].indexOf(this.chartType) !== -1;\n }\n return this.options.showPercentages === true;\n }\n\n /**\n * Gets and sets whether chart should show values and percentages.\n */\n public get showPercentages(): boolean {\n if(this._showPercentages !== undefined) {\n return this._showPercentages;\n } else {\n return this.getShowPercentagesDefault();\n }\n }\n\n public set showPercentages(val: boolean) {\n this._showPercentages = val;\n this.updateShowPercentageBtn();\n this.refreshContent();\n this.stateChanged(\"showPercentages\", val);\n }\n\n /**\n * Gets and sets chart elements order.\n */\n public get answersOrder() {\n return this._answersOrder;\n }\n\n public set answersOrder(value: string) {\n this._answersOrder = value;\n this.updateOrderSelector();\n this.refreshContent();\n this.stateChanged(\"answersOrder\", value);\n }\n\n /**\n * Set to true if need to hide empty chart elements (e.g. bars vith zero value).\n */\n public get hideEmptyAnswers() {\n return this._hideEmptyAnswers;\n }\n\n public set hideEmptyAnswers(value: boolean) {\n this._hideEmptyAnswers = value;\n this.updateEmptyAnswersBtn();\n this.refreshContent();\n this.stateChanged(\"hideEmptyAnswers\", value);\n }\n\n public get transposeData(): boolean {\n return this._transposeData;\n }\n\n public set transposeData(value: boolean) {\n this._transposeData = value;\n this.updateTransposeDataBtn();\n this.refreshContent();\n this.stateChanged(\"transposeData\", value);\n }\n\n /**\n * Set to some value if need to show top N chart elements.\n */\n public get topN(): number {\n return this._topN;\n }\n\n public set topN(value: number) {\n this._topN = value;\n this.updateTopNSelector();\n this.updateOrderSelector();\n this.refreshContent();\n this.stateChanged(\"topN\", value);\n }\n\n protected isSupportAnswersOrder(): boolean {\n return this.options.allowSortAnswers !== false &&\n this.options.allowChangeAnswersOrder !== false &&\n this.getSeriesValues().length === 0;\n }\n\n protected isSupportMissingAnswers(): boolean {\n return true;\n }\n\n /**\n * Set to true if you want to see chart elements for missing answers (e.g. radiogroup items never been selected by surveyee).\n */\n public get showMissingAnswers() {\n return this._showMissingAnswers;\n }\n\n public set showMissingAnswers(value: boolean) {\n this._showMissingAnswers = this.isSupportMissingAnswers() && value;\n this.updateMissingAnswersBtn();\n this.dataProvider.raiseDataChanged(this.name);\n this.refreshContent();\n this.stateChanged(\"showMissingAnsewrs\", value);\n }\n\n refreshContent() {\n if (!!this.contentContainer) {\n this.destroyContent(this.contentContainer);\n this.renderContent(this.contentContainer);\n }\n this.invokeOnUpdate();\n }\n\n onDataItemSelected: (selectedValue: any, selectedText: string) => void;\n\n get showValuesInOriginalOrder() {\n return this.options.showValuesInOriginalOrder !== false;\n }\n\n valuesSource(): Array<ItemValue> {\n let question = <QuestionSelectBase>this.question;\n if(!!question.choicesFromQuestion && !!question.survey) {\n question = <QuestionSelectBase>question.survey.getQuestionByName(question.choicesFromQuestion);\n }\n return question[\"activeChoices\"] || question.visibleChoices || question.choices || [];\n }\n\n getValues(): Array<any> {\n const values: Array<any> = this.valuesSource().map(\n (choice) => choice.value\n );\n\n if ((<QuestionSelectBase>this.question).hasNone) {\n values.push((<QuestionSelectBase>this.question).noneItem.value);\n }\n if (this.question.hasOther) {\n values.push(\"other\");\n }\n if (this.showMissingAnswers) {\n values.unshift(undefined);\n }\n if (this.showValuesInOriginalOrder) {\n return values.reverse();\n }\n return values;\n }\n\n getLabels(): Array<string> {\n if (this.options.useValuesAsLabels) {\n return this.getValues();\n }\n const labels: Array<string> = this.valuesSource().map((choice) =>\n ItemValue.getTextOrHtmlByValue(this.valuesSource(), choice.value)\n );\n const selBase = <QuestionSelectBase>this.question;\n if (selBase.hasNone) {\n labels.push(selBase.noneText);\n }\n if (selBase.hasOther) {\n labels.push(selBase.otherText);\n }\n if (this.showMissingAnswers) {\n labels.unshift(localization.getString(\"missingAnswersLabel\"));\n }\n if (this.showValuesInOriginalOrder) {\n return labels.reverse();\n }\n return labels;\n }\n\n getPercentages(data: Array<Array<number>>): Array<Array<number>> {\n var percentages: Array<Array<number>> = [];\n var percentagePrecision = this._percentagePrecision;\n\n if (data.length < 2) {\n var sum = data[0].reduce((sum, val) => sum + val, 0);\n percentages[0] = data[0].map((val) => {\n var value = percentagePrecision ? + (val / sum * 100).toFixed(percentagePrecision) : Math.round(val / sum * 100);\n return sum && value;\n });\n } else {\n for (var i = 0; i < data[0].length; i++) {\n var sum = 0;\n for (var j = 0; j < data.length; j++) {\n sum += data[j][i];\n }\n for (var j = 0; j < data.length; j++) {\n if (!Array.isArray(percentages[j])) percentages[j] = [];\n var value = percentagePrecision ? + (data[j][i] / sum * 100).toFixed(percentagePrecision) : Math.round(data[j][i] / sum * 100);\n percentages[j][i] = sum && value;\n }\n }\n }\n return percentages;\n }\n\n /**\n * Fires when answer data has been combined before they passed to draw graph.\n * options - the answers data object containing: datasets, labels, colors, additional texts (percentage).\n * options fields can be modified\n */\n public onAnswersDataReady = new Event<\n (sender: SelectBase, options: any) => any,\n SelectBase,\n any\n >();\n\n /**\n * Returns object with all infotmation for data visualization: datasets, labels, colors, additional texts (percentage).\n */\n public async getAnswersData(): Promise<IAnswersData> {\n let seriesLabels = this.getSeriesLabels();\n let datasets = (await this.getCalculatedValues()) as number[][];\n let labels = this.getLabels();\n let colors = this.getColors();\n\n if (this.transposeData) {\n datasets = this.transpose(datasets);\n const temp = seriesLabels;\n seriesLabels = labels;\n labels = temp;\n }\n\n var texts = this.showPercentages ? this.getPercentages(datasets) : datasets;\n\n if (this.answersOrder == \"asc\" || this.answersOrder == \"desc\") {\n var zippedArray = this.showPercentages\n ? DataHelper.zipArrays(labels, colors, texts[0])\n : DataHelper.zipArrays(labels, colors);\n let dict = DataHelper.sortDictionary(\n zippedArray,\n datasets[0],\n this.answersOrder == \"desc\"\n );\n let unzippedArray = DataHelper.unzipArrays(dict.keys);\n labels = unzippedArray[0];\n colors = unzippedArray[1];\n if (this.showPercentages) texts[0] = unzippedArray[2];\n datasets[0] = dict.values;\n }\n\n let answersData = {\n datasets,\n labels,\n colors,\n texts,\n seriesLabels,\n };\n\n if (this.hideEmptyAnswers) {\n answersData = hideEmptyAnswersInData(answersData);\n }\n if (this.topN > 0) {\n answersData.datasets[0] = answersData.datasets[0].slice(-this.topN);\n answersData.labels = answersData.labels.slice(-this.topN);\n answersData.colors = answersData.colors.slice(-this.topN);\n answersData.texts[0] = answersData.texts[0].slice(-this.topN);\n }\n this.onAnswersDataReady.fire(this, answersData);\n\n return answersData;\n }\n\n public convertFromExternalData(externalCalculatedData: any): any[] {\n const values = this.getValues();\n const series = this.getSeriesValues();\n const innerCalculatedData = [];\n if(series.length > 0) {\n for(let j=0; j<series.length; j++) {\n const seriesData = [];\n for(let i=0; i<values.length; i++) {\n if(!!externalCalculatedData[series[j]]) {\n seriesData.push(externalCalculatedData[series[j]][values[i]] || 0);\n } else {\n seriesData.push(0);\n }\n }\n innerCalculatedData.push(seriesData);\n }\n } else {\n const seriesData = [];\n for(let i=0; i<values.length; i++) {\n seriesData.push(externalCalculatedData[values[i]] || 0);\n }\n innerCalculatedData.push(seriesData);\n }\n return innerCalculatedData;\n }\n\n protected transpose(data: Array<Array<number>>): Array<Array<number>> {\n const dim2 = data[0].length;\n const result = new Array<Array<number>>(dim2);\n for (let i = 0; i < dim2; ++i)\n result[i] = new Array<number>(data.length);\n\n for (let i = 0; i < data.length; ++i)\n for (let j = 0; j < dim2; ++j) {\n result[j][i] = data[i][j];\n }\n return result;\n }\n\n private static _stateProperties = [\"chartType\", \"answersOrder\", \"hideEmptyAnswers\", \"topN\"];\n public getState(): any {\n let state: any = {};\n SelectBase._stateProperties.forEach(propertyName => {\n state[propertyName] = (<any>this)[propertyName];\n });\n if(!!this.selectedItem) {\n state.filter = this.selectedItem.value;\n }\n return state;\n }\n public setState(state: any): void {\n SelectBase._stateProperties.forEach(propertyName => {\n if (state[propertyName] !== undefined) {\n (<any>this)[propertyName] = state[propertyName];\n }\n });\n const selectedItem = ItemValue.getItemByValue((this.question as QuestionSelectBase).visibleChoices, state.filter);\n this.setSelection(selectedItem ?? undefined);\n }\n public resetState(): void {\n super.resetState();\n // this._showPercentages = this.options.showPercentages === true;\n // this._showOnlyPercentages = this.options.showOnlyPercentages === true;\n // this._showMissingAnswers = this.isSupportMissingAnswers() && this.options.showMissingAnswers === true;\n // this._transposeData = this.options.transposeData || false;\n this._hideEmptyAnswers = this.options.hideEmptyAnswers === true;\n this._answersOrder = this.options.answersOrder || \"default\";\n this._topN = -1;\n this.chartType = this.chartTypes[0];\n this.setSelection(undefined);\n }\n}\n\nVisualizationManager.registerVisualizer(\"checkbox\", SelectBase);\nVisualizationManager.registerVisualizer(\"radiogroup\", SelectBase);\nVisualizationManager.registerVisualizer(\"dropdown\", SelectBase);\nVisualizationManager.registerVisualizer(\"imagepicker\", SelectBase);\nVisualizationManager.registerVisualizer(\"tagbox\", SelectBase);\nVisualizationManager.registerVisualizer(\"rating\", SelectBase, 100);","import { DataProvider } from \"./dataProvider\";\nimport { IDataInfo } from \"./visualizerBase\";\n\nexport function defaultStatisticsCalculator(data: Array<any>, dataInfo: IDataInfo): Array<any> {\n const dataNames = dataInfo.dataNames;\n const statistics: Array<Array<Array<number>>> = [];\n\n const values = dataInfo.getValues();\n const valuesIndex: { [index: string]: number } = {};\n values.forEach((val: any, index: number) => {\n valuesIndex[val] = index;\n });\n const processMissingAnswers = values.indexOf(undefined) !== -1;\n\n const series = dataInfo.getSeriesValues();\n const seriesIndex: { [index: string]: number } = {};\n series.forEach((val: any, index: number) => {\n seriesIndex[val] = index;\n });\n\n const seriesLength = series.length || 1;\n for (var i = 0; i < dataNames.length; ++i) {\n const dataNameStatistics = new Array<Array<number>>();\n for (var j = 0; j < seriesLength; ++j) {\n dataNameStatistics.push(new Array<number>(values.length).fill(0));\n }\n statistics.push(dataNameStatistics);\n }\n const getValueIndex = (val) => {\n if(val !== null && typeof val === \"object\") return valuesIndex[val.value];\n return valuesIndex[val];\n };\n\n const processDataRow = (dataRow, dataName, index) => {\n const rowValue = dataRow[dataName];\n if (rowValue !== undefined || processMissingAnswers) {\n const rowValues = Array.isArray(rowValue) ? rowValue : [rowValue];\n if (series.length > 0) {\n const rowName = dataRow[DataProvider.seriesMarkerKey];\n if (rowName !== undefined) {\n // Series are labelled by seriesMarkerKey in row data\n const seriesNo = seriesIndex[rowName] || 0;\n rowValues.forEach((val) => {\n const valIndex = getValueIndex(val);\n statistics[index][seriesNo][valIndex]++;\n });\n } else {\n // Series are the keys in question value (matrix question)\n // TODO: think about the de-normalization and combine with the previous case\n rowValues.forEach((val) => {\n series.forEach((seriesName) => {\n if (val[seriesName] !== undefined) {\n const seriesNo = seriesIndex[seriesName] || 0;\n const values = Array.isArray(val[seriesName]) ? val[seriesName] : [val[seriesName]];\n values.forEach(value => {\n const valIndex = getValueIndex(value);\n statistics[index][seriesNo][valIndex]++;\n });\n }\n });\n });\n }\n } else {\n // No series\n rowValues.forEach((val) => {\n const valIndex = getValueIndex(val);\n statistics[0][0][valIndex]++;\n });\n }\n }\n };\n\n data.forEach((dataRow: any) => {\n const nestedDataRows = getNestedDataRows(dataRow, dataInfo);\n nestedDataRows.forEach(nestedDataRow => {\n dataNames.forEach((dataName, index) => {\n processDataRow(nestedDataRow, dataName, index);\n });\n });\n });\n\n return dataInfo.dataNames.length > 1 ? statistics : statistics[0] as any;\n}\n\nexport function histogramStatisticsCalculator(data: { [series: string]: Array<{continuous: number, row: any}> }, intervals: Array<{ start: number, end: number, label: string }>, dataInfo: IDataInfo, aggregateDataNames = []): Array<any> {\n const seriesValues = dataInfo.getSeriesValues();\n const statistics: Array<Array<number>> = [];\n if (seriesValues.length === 0) {\n seriesValues.push(\"\");\n }\n for (var i = 0; i < seriesValues.length; ++i) {\n statistics.push(intervals.map(i => 0));\n data[seriesValues[i]].forEach(dataValue => {\n for (let j = 0; j < intervals.length; ++j) {\n if (intervals[j].start <= dataValue.continuous && (dataValue.continuous < intervals[j].end || j == intervals.length - 1)) {\n if(aggregateDataNames.length > 0) {\n aggregateDataNames.forEach(aggregateDataName => {\n const aggregateDataValue = dataValue.row[aggregateDataName];\n const numberValue = parseFloat(aggregateDataValue);\n if(aggregateDataValue !== undefined && !isNaN(numberValue)) {\n statistics[i][j] += numberValue;\n }\n });\n } else {\n statistics[i][j]++;\n }\n break;\n }\n }\n });\n }\n return statistics;\n}\n\nexport function mathStatisticsCalculator(data: Array<any>, dataInfo: IDataInfo) {\n let resultMin = Number.MAX_VALUE,\n resultMax = -Number.MAX_VALUE,\n resultAverage = 0;\n let actualAnswerCount = 0;\n\n data.forEach((dataRow) => {\n const nestedDataRows = getNestedDataRows(dataRow, dataInfo);\n nestedDataRows.forEach(nestedDataRow => {\n const answerData = nestedDataRow[dataInfo.dataNames[0]];\n if (answerData !== undefined) {\n const questionValue: number = +answerData;\n actualAnswerCount++;\n resultAverage += questionValue;\n if (resultMin > questionValue) {\n resultMin = questionValue;\n }\n if (resultMax < questionValue) {\n resultMax = questionValue;\n }\n }\n });\n });\n\n if (actualAnswerCount > 0) {\n resultAverage = resultAverage / actualAnswerCount;\n }\n resultAverage = Math.ceil(resultAverage * 100) / 100;\n\n return [resultAverage, resultMin, resultMax];\n}\n\nexport function getNestedDataRows(dataRow: any, dataInfo: IDataInfo): Array<any> {\n let nestedDataRows = [];\n if(!dataInfo.dataPath) {\n nestedDataRows = [dataRow];\n } else {\n if(dataRow[dataInfo.dataPath] === undefined) return [];\n if(typeof dataRow[dataInfo.dataPath] !== \"object\") return [];\n if(Array.isArray(dataRow[dataInfo.dataPath])) {\n nestedDataRows = dataRow[dataInfo.dataPath];\n } else {\n nestedDataRows = [dataRow[dataInfo.dataPath]];\n }\n }\n return nestedDataRows;\n}\n","// extracted by mini-css-extract-plugin\nexport {};","import { Question } from \"survey-core\";\nimport { SelectBase } from \"./selectBase\";\nimport { BooleanModel } from \"./boolean\";\nimport { VisualizationManager } from \"./visualizationManager\";\nimport { DocumentHelper } from \"./utils\";\nimport { localization } from \"./localizationManager\";\n\nimport \"./statistics-table.scss\";\n\nexport class StatisticsTableAdapter {\n constructor(private model: SelectBase) {}\n\n public async create(container: HTMLElement): Promise<void> {\n let {\n datasets,\n labels,\n colors,\n texts,\n seriesLabels,\n } = await this.model.getAnswersData();\n\n const hasSeries = seriesLabels.length > 1;\n\n const emptyTextNode = <HTMLElement>DocumentHelper.createElement(\"p\", \"\", {\n innerText: localization.getString(\"noResults\"),\n });\n\n if (datasets.length === 0 || datasets[0].length === 0) {\n container.appendChild(emptyTextNode);\n return;\n }\n\n datasets.forEach((data, idx) => {\n const tableNode = <HTMLTableElement>(\n DocumentHelper.createElement(\"table\", \"sa-statistics-table\")\n );\n\n tableNode.style.backgroundColor = this.model.backgroundColor;\n container.appendChild(tableNode);\n\n var headerRow = DocumentHelper.createElement(\"tr\");\n var labelCell = DocumentHelper.createElement(\"th\", \"sa-statistics-table__cell-header\", {\n textContent: localization.getString(\"answer\"),\n });\n headerRow.appendChild(labelCell);\n var sparklineCell = DocumentHelper.createElement(\"th\", \"sa-statistics-table__cell-header\", {\n textContent: localization.getString(\"statistics_chart\"),\n });\n headerRow.appendChild(sparklineCell);\n var percentCell = DocumentHelper.createElement(\"th\", \"sa-statistics-table__cell-header\", {\n textContent: localization.getString(\"percentage\"),\n });\n headerRow.appendChild(percentCell);\n var valueCell = DocumentHelper.createElement(\"th\", \"sa-statistics-table__cell-header\", {\n textContent: localization.getString(\"responses\"),\n });\n headerRow.appendChild(valueCell);\n tableNode.appendChild(headerRow);\n\n for(let index = data.length - 1; index >= 0; index--) {\n var row = DocumentHelper.createElement(\"tr\");\n var labelCell = DocumentHelper.createElement(\"td\", \"sa-statistics-table__cell\", {\n textContent: labels[index],\n });\n row.appendChild(labelCell);\n var sparklineCell = DocumentHelper.createElement(\"td\", \"sa-statistics-table__cell\");\n var outerBar = DocumentHelper.createElement(\"div\", \"sa-choices-sparkline\");\n var innerBar = DocumentHelper.createElement(\"div\", \"sa-choices-sparkline-value\");\n innerBar.style.width = texts[idx][index] + \"%\";\n outerBar.appendChild(innerBar);\n sparklineCell.appendChild(outerBar);\n row.appendChild(sparklineCell);\n var percentCell = DocumentHelper.createElement(\"td\", \"sa-statistics-table__cell sa-statistics-table__cell-value\", {\n textContent: \"\" + texts[idx][index] + \"%\",\n });\n row.appendChild(percentCell);\n var valueCell = DocumentHelper.createElement(\"td\", \"sa-statistics-table__cell sa-statistics-table__cell-value\", {\n textContent: data[index],\n });\n row.appendChild(valueCell);\n tableNode.appendChild(row);\n }\n\n container.className = \"sa-statistics-table__container\";\n container.appendChild(tableNode);\n });\n }\n\n public destroy(node: HTMLElement) {\n node.innerHTML = \"\";\n }\n}\n\nexport class StatisticsTable extends SelectBase {\n private _statisticsTableAdapter: StatisticsTableAdapter;\n\n constructor(\n question: Question,\n data: Array<{ [index: string]: any }>,\n options?: Object,\n name?: string\n ) {\n super(question, data, options, name || \"choices\");\n this._statisticsTableAdapter = new StatisticsTableAdapter(this);\n this.showPercentages = true;\n }\n\n protected destroyContent(container: HTMLElement) {\n this._statisticsTableAdapter.destroy(container);\n super.destroyContent(container);\n }\n\n protected async renderContentAsync(container: HTMLElement) {\n const tableNode: HTMLElement = DocumentHelper.createElement(\"div\");\n await this._statisticsTableAdapter.create(tableNode);\n container.innerHTML = \"\";\n container.appendChild(tableNode);\n return container;\n }\n\n destroy() {\n this._statisticsTableAdapter.destroy(this.contentContainer);\n super.destroy();\n }\n}\n\nexport class StatisticsTableBoolean extends BooleanModel {\n private _statisticsTableAdapter: StatisticsTableAdapter;\n\n constructor(\n question: Question,\n data: Array<{ [index: string]: any }>,\n options?: Object,\n name?: string\n ) {\n super(question, data, options, name || \"options\");\n this._statisticsTableAdapter = new StatisticsTableAdapter(this);\n this.showPercentages = true;\n }\n\n protected destroyContent(container: HTMLElement) {\n this._statisticsTableAdapter.destroy(container);\n super.destroyContent(container);\n }\n\n protected async renderContentAsync(container: HTMLElement) {\n const tableNode: HTMLElement = DocumentHelper.createElement(\"div\");\n await this._statisticsTableAdapter.create(tableNode);\n container.innerHTML = \"\";\n container.appendChild(tableNode);\n return container;\n }\n\n destroy() {\n this._statisticsTableAdapter.destroy(this.contentContainer);\n super.destroy();\n }\n}\n\nVisualizationManager.registerVisualizer(\"radiogroup\", StatisticsTable);\nVisualizationManager.registerVisualizer(\"dropdown\", StatisticsTable);\nVisualizationManager.registerVisualizer(\"checkbox\", StatisticsTable);\nVisualizationManager.registerVisualizer(\"boolean\", StatisticsTableBoolean);\n","// eslint-disable-next-line @typescript-eslint/ban-ts-comment\r\n//@ts-ignore\r\nimport iconsData from \"icons\";\r\n\r\nconst iconPrefix = \"sa-svg-\";\r\nfunction getIconSymbolTemplate(iconId: string, iconSvg: string): string {\r\n const startStr = \"<svg \";\r\n const endStr = \"</svg>\";\r\n iconSvg = iconSvg.trim();\r\n const str = iconSvg.toLowerCase();\r\n\r\n if (str.substring(0, startStr.length) === startStr &&\r\n str.substring(str.length - endStr.length, str.length) === endStr) {\r\n return \"<symbol \" +\r\n \"id=\\\"\" + iconPrefix + iconId + \"\\\" \" +\r\n iconSvg.substring(startStr.length, str.length - endStr.length) +\r\n \"</symbol>\";\r\n }\r\n}\r\n\r\nconst iconsHtml = Object.keys(iconsData).map(iconId => getIconSymbolTemplate(iconId, iconsData[iconId]));\r\nconst svgTemplate = `<svg style=\"display:none;\">${iconsHtml}<svg>`;\r\nexport { svgTemplate };","// extracted by mini-css-extract-plugin\nexport {};","import { Question, QuestionMultipleTextModel } from \"survey-core\";\r\nimport { VisualizerBase } from \"./visualizerBase\";\r\nimport { VisualizationManager } from \"./visualizationManager\";\r\nimport { localization } from \"./localizationManager\";\r\nimport { DocumentHelper } from \"./utils\";\r\n\r\nimport \"./text.scss\";\r\n\r\nexport class TextTableAdapter {\r\n constructor(private model: Text) {}\r\n\r\n public async create(container: HTMLElement): Promise<void> {\r\n const { columnCount, data } = (await this.model.getCalculatedValues()) as any;\r\n const emptyTextNode = <HTMLElement>DocumentHelper.createElement(\"p\", \"\", {\r\n innerText: localization.getString(\"noResults\"),\r\n });\r\n\r\n if (data.length === 0) {\r\n container.appendChild(emptyTextNode);\r\n return;\r\n }\r\n\r\n const tableNode = <HTMLTableElement>(\r\n DocumentHelper.createElement(\"table\", \"sa-text-table\")\r\n );\r\n\r\n tableNode.style.backgroundColor = this.model.backgroundColor;\r\n container.appendChild(tableNode);\r\n\r\n if(this.model.columns) {\r\n var row = DocumentHelper.createElement(\"tr\");\r\n this.model.columns.forEach(column => {\r\n var td = DocumentHelper.createElement(\"th\", \"sa-text-table__cell\", {\r\n textContent: column.title,\r\n });\r\n row.appendChild(td);\r\n });\r\n tableNode.appendChild(row);\r\n }\r\n\r\n data.forEach((rowData) => {\r\n var row = DocumentHelper.createElement(\"tr\");\r\n for (var i = 0; i < columnCount; i++) {\r\n const column = this.model.columns[i];\r\n var td = DocumentHelper.createElement(\"td\", \"sa-text-table__cell\" + (column?.type == \"number\" ? \" sa-text-table__cell--number\" : \"\"), {\r\n textContent: rowData[i],\r\n });\r\n row.appendChild(td);\r\n }\r\n tableNode.appendChild(row);\r\n });\r\n\r\n container.className = \"sa-text-table__container\";\r\n container.appendChild(tableNode);\r\n }\r\n\r\n public destroy(node: HTMLElement) {\r\n node.innerHTML = \"\";\r\n }\r\n}\r\n\r\nexport class Text extends VisualizerBase {\r\n private _textTableAdapter: TextTableAdapter;\r\n\r\n constructor(\r\n question: Question,\r\n data: Array<{ [index: string]: any }>,\r\n options?: Object,\r\n name?: string\r\n ) {\r\n super(question, data, options, name || \"text\");\r\n this._textTableAdapter = new TextTableAdapter(this);\r\n }\r\n\r\n public get columns(): Array<{ name: string, title: string, type: string }> {\r\n const columns = [];\r\n if(this.question.getType() == \"multipletext\") {\r\n (this.question as QuestionMultipleTextModel).items.forEach(item => {\r\n columns.push({ name: item.name, title: item.title, type: item.inputType });\r\n });\r\n }\r\n return columns;\r\n }\r\n\r\n protected getCalculatedValuesCore(): any {\r\n let result: Array<Array<string>> = [];\r\n let columnCount = 0;\r\n\r\n this.surveyData.forEach((row) => {\r\n const rowValue: any = row[this.question.name];\r\n let dataStrings: Array<string> = [];\r\n if (!!rowValue) {\r\n if (Array.isArray(rowValue)) {\r\n dataStrings = dataStrings.concat(rowValue);\r\n } else {\r\n if (typeof rowValue === \"object\") {\r\n Object.keys(rowValue).forEach((key) =>\r\n dataStrings.push(rowValue[key])\r\n );\r\n } else {\r\n dataStrings.push(rowValue);\r\n }\r\n }\r\n result.push(dataStrings);\r\n if (dataStrings.length > columnCount) {\r\n columnCount = dataStrings.length;\r\n }\r\n }\r\n });\r\n\r\n return { columnCount: columnCount, data: result };\r\n }\r\n\r\n protected destroyContent(container: HTMLElement) {\r\n this._textTableAdapter.destroy(container);\r\n super.destroyContent(container);\r\n }\r\n\r\n protected async renderContentAsync(container: HTMLElement) {\r\n const tableNode: HTMLElement = DocumentHelper.createElement(\"div\");\r\n await this._textTableAdapter.create(tableNode);\r\n container.innerHTML = \"\";\r\n container.appendChild(tableNode);\r\n return container;\r\n }\r\n\r\n destroy() {\r\n this._textTableAdapter.destroy(this.contentContainer);\r\n super.destroy();\r\n }\r\n}\r\n\r\nVisualizationManager.registerVisualizer(\"text\", Text);\r\nVisualizationManager.registerVisualizer(\"comment\", Text);\r\nVisualizationManager.registerVisualizer(\"multipletext\", Text);\r\n","export var __assign =\n (<any>Object)[\"assign\"] ||\n function(target: any) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s)\n if (Object.prototype.hasOwnProperty.call(s, p)) target[p] = s[p];\n }\n return target;\n };\n\nexport function __extends(thisClass: any, baseClass: any) {\n for (var p in baseClass)\n if (baseClass.hasOwnProperty(p)) thisClass[p] = baseClass[p];\n function __() {\n this.constructor = thisClass;\n }\n thisClass.prototype =\n baseClass === null\n ? Object.create(baseClass)\n : ((__.prototype = baseClass.prototype), new (<any>__)());\n}\n\nexport var __rest = function(source: any, e: any) {\n var result: any = {};\n for (var propertyName in source)\n if (\n Object.prototype.hasOwnProperty.call(source, propertyName) &&\n e.indexOf(propertyName) < 0\n )\n result[propertyName] = source[propertyName];\n if (\n source != null &&\n typeof (<any>Object)[\"getOwnPropertySymbols\"] === \"function\"\n )\n for (\n var i = 0,\n propertySymbols = (<any>Object)[\"getOwnPropertySymbols\"](source);\n i < propertySymbols.length;\n i++\n )\n if (e.indexOf(propertySymbols[i]) < 0)\n result[propertySymbols[i]] = source[propertySymbols[i]];\n return result;\n};\n\ndeclare var Reflect: any;\n\nexport var __decorate = function(\n decorators: any,\n target: any,\n key: any,\n desc: any\n) {\n var c = arguments.length,\n r =\n c < 3\n ? target\n : desc === null\n ? (desc = Object.getOwnPropertyDescriptor(target, key))\n : desc,\n d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\")\n r = Reflect.decorate(decorators, target, key, desc);\n else\n for (var i = decorators.length - 1; i >= 0; i--)\n if ((d = decorators[i]))\n r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n\nexport function __awaiter(thisArg: any, _arguments: any, P: any, generator: any) {\n function adopt(value: any) { return value instanceof P ? value : new P(function (resolve: any) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve: any, reject: any) {\n function fulfilled(value: any) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value: any) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result: any) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg: any, body: any) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: <any>[], ops: <any>[] }, f: any, y: any, t: any, g: any;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n: any) { return function (v: any) { return step([n, v]); }; }\n function step(op: any) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { (<any>_) = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __spreadArrays = function () {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n};\n\nexport function __spreadArray (to: any, from: any, pack: any) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar: any; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}","import { glc } from \"survey-core\";\r\nimport { localization } from \"../localizationManager\";\r\n\r\nexport class DocumentHelper {\r\n public static createSelector(\r\n options: Array<{ value: string, text: string }> | Function,\r\n isSelected: (option: { value: string, text: string }) => boolean,\r\n handler: (e: any) => void,\r\n title?: string | Function\r\n ) {\r\n const selectWrapper = document.createElement(\"div\");\r\n selectWrapper.className = \"sa-question__select-wrapper\";\r\n const titleElement = DocumentHelper.createElement(\"span\", \"sa-question__select-title\");\r\n const select = document.createElement(\"select\");\r\n select.className = \"sa-question__select\";\r\n const updateTitle = () => {\r\n const titleText = !!title && (typeof title == \"string\" ? title : title());\r\n titleElement.innerText = titleText;\r\n if (!!titleText) {\r\n selectWrapper.insertBefore(titleElement, select);\r\n } else if (titleElement.parentElement === selectWrapper) {\r\n selectWrapper.removeChild(titleElement);\r\n }\r\n };\r\n select.onchange = handler;\r\n selectWrapper.appendChild(select);\r\n const updateOptions = () => {\r\n select.innerHTML = \"\";\r\n const optionsSource = options || [];\r\n const optionItems = Array.isArray(optionsSource) ? optionsSource : optionsSource();\r\n optionItems.forEach((option) => {\r\n let optionElement = DocumentHelper.createElement(\"option\", \"\", {\r\n value: option.value,\r\n text: option.text,\r\n selected: isSelected(option),\r\n });\r\n select.appendChild(optionElement);\r\n });\r\n };\r\n selectWrapper[\"__updateSelect\"] = () => {\r\n updateTitle();\r\n updateOptions();\r\n };\r\n selectWrapper[\"__updateSelect\"]();\r\n return selectWrapper;\r\n }\r\n\r\n public static createButton(\r\n handler: (e: any) => void,\r\n text = \"\",\r\n className = \"sa-toolbar__button\"\r\n ) {\r\n const button = DocumentHelper.createElement(\"span\", className, {\r\n innerText: text,\r\n onclick: handler,\r\n });\r\n return button;\r\n }\r\n\r\n public static createElement(\r\n tagName: string,\r\n className: string = \"\",\r\n attrs?: any\r\n ): HTMLElement {\r\n var el = document.createElement(tagName);\r\n el.className = className;\r\n if (!!attrs) {\r\n Object.keys(attrs).forEach(function (key) {\r\n (<any>el)[key] = attrs[key];\r\n });\r\n }\r\n return el;\r\n }\r\n\r\n public static createSvgElement(path: string): SVGSVGElement {\r\n const svgElem = document.createElementNS(\r\n \"http://www.w3.org/2000/svg\",\r\n \"svg\"\r\n );\r\n const useElem = document.createElementNS(\r\n \"http://www.w3.org/2000/svg\",\r\n \"use\"\r\n );\r\n useElem.setAttributeNS(\r\n \"http://www.w3.org/1999/xlink\",\r\n \"href\",\r\n \"#sa-svg-\" + path\r\n );\r\n svgElem.appendChild(useElem);\r\n return svgElem;\r\n }\r\n\r\n public static createSvgButton(path: string): HTMLButtonElement {\r\n const btn = <HTMLButtonElement>(\r\n DocumentHelper.createElement(\"button\", \"sa-table__svg-button\")\r\n );\r\n btn.appendChild(DocumentHelper.createSvgElement(path));\r\n return btn;\r\n }\r\n\r\n public static createSvgToggleButton(\r\n svgPath1: string,\r\n svPpath2: string,\r\n text1: string,\r\n text2: string,\r\n handler1: (e: any) => any,\r\n handler2: (e: any) => any,\r\n state = \"first\",\r\n className = \"sa-toolbar__button sa-toolbar__svg-button\"\r\n ): HTMLElement {\r\n const svg1 = DocumentHelper.createSvgElement(svgPath1);\r\n const svg2 = DocumentHelper.createSvgElement(svPpath2);\r\n const button = DocumentHelper.createElement(\"button\", className);\r\n\r\n const toggle = (e: any) => {\r\n if (state === \"first\") {\r\n state = \"second\";\r\n button.title = text2;\r\n button.removeChild(svg1);\r\n button.appendChild(svg2);\r\n handler2(e);\r\n } else if (state === \"second\") {\r\n state = \"first\";\r\n button.title = text1;\r\n button.removeChild(svg2);\r\n button.appendChild(svg1);\r\n handler1(e);\r\n }\r\n };\r\n\r\n if (state === \"first\") {\r\n button.title = text1;\r\n button.appendChild(svg1);\r\n } else if ((state = \"second\")) {\r\n button.title = text2;\r\n button.appendChild(svg2);\r\n }\r\n\r\n button.onclick = toggle;\r\n\r\n return button;\r\n }\r\n\r\n public static createInput(\r\n className: string,\r\n placeholder = \"\",\r\n defaultValue = \"\"\r\n ): HTMLInputElement {\r\n var el = <HTMLInputElement>DocumentHelper.createElement(\r\n \"input\",\r\n className,\r\n {\r\n placeholder: placeholder,\r\n defaultValue: defaultValue,\r\n }\r\n );\r\n return el;\r\n }\r\n}\r\n\r\nexport var options = {\r\n runningInBrowser: typeof window.URL.createObjectURL === \"function\",\r\n};\r\n\r\nexport function allowDomRendering() {\r\n return options.runningInBrowser;\r\n}\r\n\r\nfunction getLicenseText(): string {\r\n const d: any = !!glc ? glc(1) : false;\r\n if (!!d && d.toLocaleDateString) return localization.getString(\"license2\").replace(\"{date}\", d.toLocaleDateString());\r\n return localization.getString(\"license\");\r\n}\r\n\r\nexport function createCommercialLicenseLink() {\r\n const container = DocumentHelper.createElement(\"div\", \"sa-commercial\");\r\n const link = DocumentHelper.createElement(\"div\", \"sa-commercial__text\");\r\n const containerSpan = DocumentHelper.createElement(\"span\", \"\");\r\n const textSpan = DocumentHelper.createElement(\r\n \"span\",\r\n \"sa-commercial__product\",\r\n { innerHTML: getLicenseText() }\r\n );\r\n container.appendChild(link).appendChild(containerSpan);\r\n containerSpan.appendChild(textSpan);\r\n return container;\r\n}\r\n\r\nexport function createLoadingIndicator() {\r\n const container = DocumentHelper.createElement(\"div\", \"sa-data-loading-indicator-panel\");\r\n const loadingIndicator = DocumentHelper.createElement(\"div\", \"sa-data-loading-indicator\");\r\n loadingIndicator.innerHTML = `\r\n <svg width=\"64\" height=\"64\" viewBox=\"0 0 64 64\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <g clip-path=\"url(#clip0_17928_11482)\">\r\n <path d=\"M32 64C14.36 64 0 49.65 0 32C0 14.35 14.36 0 32 0C49.64 0 64 14.35 64 32C64 49.65 49.64 64 32 64ZM32 4C16.56 4 4 16.56 4 32C4 47.44 16.56 60 32 60C47.44 60 60 47.44 60 32C60 16.56 47.44 4 32 4Z\" fill=\"#E5E5E5\"></path>\r\n <path d=\"M53.2101 55.2104C52.7001 55.2104 52.1901 55.0104 51.8001 54.6204C51.0201 53.8404 51.0201 52.5704 51.8001 51.7904C57.0901 46.5004 60.0001 39.4704 60.0001 31.9904C60.0001 24.5104 57.0901 17.4804 51.8001 12.1904C51.0201 11.4104 51.0201 10.1404 51.8001 9.36039C52.5801 8.58039 53.8501 8.58039 54.6301 9.36039C60.6701 15.4004 64.0001 23.4404 64.0001 31.9904C64.0001 40.5404 60.6701 48.5704 54.6301 54.6204C54.2401 55.0104 53.7301 55.2104 53.2201 55.2104H53.2101Z\" fill=\"#19B394\"></path>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_17928_11482\">\r\n <rect width=\"64\" height=\"64\" fill=\"white\"></rect>\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n `;\r\n container.appendChild(loadingIndicator);\r\n return container;\r\n}\r\n\r\nexport class DataHelper {\r\n public static zipArrays(...arrays: any[]): any[][] {\r\n let zipArray: any[] = [];\r\n for (let i = 0; i < arrays[0].length; i++) {\r\n zipArray[i] = [];\r\n arrays.forEach((arr) => {\r\n zipArray[i].push(arr[i]);\r\n });\r\n }\r\n return zipArray;\r\n }\r\n\r\n public static unzipArrays(zipArray: any[][]): any[][] {\r\n let arrays: any[][] = [];\r\n zipArray.forEach((value, i) => {\r\n value.forEach((val, j) => {\r\n if (!arrays[j]) arrays[j] = [];\r\n arrays[j][i] = val;\r\n });\r\n });\r\n return arrays;\r\n }\r\n public static sortDictionary(\r\n keys: any[],\r\n values: any[],\r\n desc: boolean\r\n ): { keys: any[], values: any[] } {\r\n let dictionary = this.zipArrays(keys, values);\r\n let comparator = (a: any[], b: any[], asc: boolean = true) => {\r\n let result = a[1] < b[1] ? 1 : a[1] == b[1] ? 0 : -1;\r\n return asc ? result : result * -1;\r\n };\r\n dictionary.sort((a: any[], b: any[]) => {\r\n return desc ? comparator(a, b, false) : comparator(a, b);\r\n });\r\n let keysAndValues = this.unzipArrays(dictionary);\r\n return { keys: keysAndValues[0], values: keysAndValues[1] };\r\n }\r\n\r\n public static toPercentage(value: number, maxValue: number) {\r\n return (value / maxValue) * 100;\r\n }\r\n}\r\n\r\nexport function createLinksContainer(\r\n links: Array<{ name: string, content: any }>\r\n): HTMLElement {\r\n const linksContainer = DocumentHelper.createElement(\"div\");\r\n links.forEach((link) => {\r\n linksContainer.appendChild(\r\n DocumentHelper.createElement(\"a\", \"\", {\r\n innerText: link.name,\r\n download: link.name,\r\n href: link.content,\r\n })\r\n );\r\n });\r\n return linksContainer;\r\n}\r\n\r\nexport function createImagesContainer(\r\n links: Array<{ name: string, content: any }>\r\n): HTMLElement {\r\n const linksContainer = DocumentHelper.createElement(\"div\");\r\n links.forEach((link) => {\r\n linksContainer.appendChild(\r\n DocumentHelper.createElement(\"img\", \"\", {\r\n alt: link.name,\r\n src: link.content,\r\n })\r\n );\r\n });\r\n return linksContainer;\r\n}\r\n\r\nexport function toPrecision(value: number, precision = 2): number {\r\n const base = Math.pow(10, precision);\r\n return Math.round(base * value) / base;\r\n}\r\n","import { Question, QuestionCompositeModel, QuestionMatrixDropdownModel } from \"survey-core\";\nimport { VisualizationManager } from \"./visualizationManager\";\nimport { VisualizationPanelDynamic } from \"./visualizationPanelDynamic\";\n\nexport class VisualizationComposite extends VisualizationPanelDynamic {\n constructor(\n question: Question,\n data: Array<{ [index: string]: any }>,\n options?: Object,\n name?: string\n ) {\n super(question, data, options, name || \"composite\");\n }\n\n getQuestions(): Array<Question> {\n const questionComposite: QuestionCompositeModel = <any>this.question;\n const innerQuestions = [];\n questionComposite.contentPanel.addQuestionsToList(innerQuestions);\n return innerQuestions;\n }\n}\n\nVisualizationManager.registerVisualizer(\n \"composite\",\n VisualizationComposite\n);\n","import { Question } from \"survey-core\";\n\ndeclare type VisualizerConstructor = new (\n question: Question,\n data: Array<{ [index: string]: any }>,\n options?: Object\n) => any;\n\n/**\n * An object with methods used to register and unregister visualizers for individual question types.\n *\n * [View Demo](https://surveyjs.io/dashboard/examples/custom-survey-data-visualizer/ (linkStyle))\n */\nexport class VisualizationManager {\n static defaultVisualizer: any = undefined;\n static alternativesVisualizer: any = undefined;\n static pivotVisualizer: any = undefined;\n static vizualizers: { [index: string]: Array<{ ctor: VisualizerConstructor, index: number }> } = {};\n /**\n * Registers a visualizer for a specified question type.\n *\n * [View Demo](https://surveyjs.io/dashboard/examples/custom-survey-data-visualizer/ (linkStyle))\n * @param questionType A question [type](https://surveyjs.io/form-library/documentation/api-reference/question#getType).\n * @param constructor A function that returns a visualizer constructor to register.\n * @param index A zero-based index that specifies the visualizer's position in the visualizer list for the specified question type. Pass `0` to insert the visualizer at the beginning of the list and use it by default. If `index` is not specified, the visualizer is added to the end of the list.\n */\n public static registerVisualizer(\n questionType: string,\n constructor: VisualizerConstructor,\n index = Number.MAX_VALUE\n ) {\n let visualizers = VisualizationManager.vizualizers[questionType];\n if (!visualizers) {\n visualizers = [];\n VisualizationManager.vizualizers[questionType] = visualizers;\n }\n visualizers.push({ ctor: constructor, index });\n }\n /**\n * Unregisters a visualizer for a specified question type.\n *\n * [View Demo](https://surveyjs.io/dashboard/examples/visualize-answers-from-text-entry-fields-with-charts/ (linkStyle))\n * @param questionType A question [type](https://surveyjs.io/form-library/documentation/api-reference/question#getType).\n * @param constructor A function that returns a visualizer constructor to unregister.\n */\n public static unregisterVisualizer(questionType: string | undefined, constructor: VisualizerConstructor): void {\n let questionTypes = [questionType];\n if(!questionType) {\n questionTypes = Object.keys(VisualizationManager.vizualizers);\n }\n questionTypes.forEach(qType => {\n if(constructor) {\n let visualizers = VisualizationManager.vizualizers[qType];\n if (!!visualizers) {\n const vDescr = visualizers.filter(v => v.ctor === constructor)[0];\n if(!!vDescr) {\n let index = visualizers.indexOf(vDescr);\n if (index !== -1) {\n visualizers.splice(index, 1);\n }\n }\n }\n } else {\n VisualizationManager.vizualizers[qType] = [];\n }\n });\n }\n /**\n * @deprecated Call the [`unregisterVisualizer()`](https://surveyjs.io/dashboard/documentation/api-reference/visualizationmanager#unregisterVisualizer) method instead.\n * @param constructor A function that returns a visualizer constructor to unregister.\n */\n public static unregisterVisualizerForAll(constructor: VisualizerConstructor): void {\n VisualizationManager.unregisterVisualizer(undefined, constructor);\n }\n /**\n * Returns all visualizer constructors for a specified question type.\n * @param visualizerType A question [type](https://surveyjs.io/form-library/documentation/api-reference/question#getType).\n */\n public static getVisualizersByType(\n visualizerType: string,\n fallbackVisualizerType?: string\n ): VisualizerConstructor[] {\n let vDescrs = VisualizationManager.vizualizers[visualizerType];\n if (!!fallbackVisualizerType && (!vDescrs || vDescrs.length == 0)) {\n vDescrs = VisualizationManager.vizualizers[fallbackVisualizerType];\n }\n if (!vDescrs) {\n if(VisualizationManager.defaultVisualizer.suppressVisualizerStubRendering) {\n return [];\n }\n return [VisualizationManager.defaultVisualizer];\n }\n vDescrs = [].concat(vDescrs);\n vDescrs.sort((v1, v2) => v1.index - v2.index);\n return vDescrs.map(v => v.ctor);\n }\n /**\n * Returns a constructor for an alternative visualizer selector.\n * @see registerAltVisualizerSelector\n */\n public static getAltVisualizerSelector() {\n return VisualizationManager.alternativesVisualizer || VisualizationManager.defaultVisualizer;\n }\n /**\n * Registers an alternative visualizer selector.\n * @param constructor A function that returns a constructor for an alternative visualizer selector.\n */\n public static registerAltVisualizerSelector(constructor: any) {\n VisualizationManager.alternativesVisualizer = constructor;\n }\n public static getPivotVisualizerConstructor() {\n return VisualizationManager.pivotVisualizer || VisualizationManager.defaultVisualizer;\n }\n public static registerPivotVisualizer(constructor: any) {\n VisualizationManager.pivotVisualizer = constructor;\n }\n}\n","import {\n QuestionMatrixDropdownModel,\n MatrixDropdownColumn,\n ItemValue,\n QuestionSelectBase,\n Question,\n} from \"survey-core\";\nimport { VisualizerBase } from \"./visualizerBase\";\nimport { VisualizationManager } from \"./visualizationManager\";\nimport { VisualizationPanel } from \"./visualizationPanel\";\n\nfunction isChoicesArraysEqual(\n choices1: Array<ItemValue>,\n choices2: Array<ItemValue>\n): boolean {\n if (choices1.length !== choices2.length) return false;\n for (let i = 0; i < choices1.length; i++) {\n if (\n choices1[i].value !== choices2[i].value ||\n choices1[i].text !== choices2[i].text\n ) {\n return false;\n }\n }\n return true;\n}\n\nexport class VisualizationMatrixDropdown extends VisualizerBase {\n protected _contentVisualizer: VisualizerBase = undefined;\n private readonly _childOptions;\n\n constructor(\n question: QuestionMatrixDropdownModel,\n data: Array<{ [index: string]: any }>,\n options: { [index: string]: any } = {},\n name?: string\n ) {\n super(question, data, options, name || \"matrixDropdown\");\n this.loadingData = false;\n this._childOptions = Object.assign({}, options);\n this._childOptions.disableLocaleSwitch = true;\n this._childOptions.allowDynamicLayout = false;\n this._childOptions.transposeData = true;\n this._childOptions.dataProvider = this.dataProvider;\n this._childOptions.dataPath = this.dataNames[0];\n this._childOptions.seriesValues = question.rows.map((row: ItemValue) => row.value);\n this._childOptions.seriesLabels = question.rows.map((row: ItemValue) => row.text);\n\n this.dataProvider.fixDropdownData(this.dataNames);\n if (this.canGroupColumns) {\n var creators = VisualizationManager.getVisualizersByType(\"matrixdropdown-grouped\");\n this._contentVisualizer = new creators[0](this.question, [], this._childOptions);\n } else {\n const innerQuestions = this.getQuestions();\n this._contentVisualizer = new VisualizationPanel(innerQuestions, [], this._childOptions, undefined, false);\n }\n this._contentVisualizer.onAfterRender.add(this.onPanelAfterRenderCallback);\n }\n\n public get canGroupColumns(): boolean {\n const innerQuestions = this.getQuestions();\n const canGroupColumns = this._childOptions.seriesValues.length == 1 && innerQuestions.every(innerQuestion =>\n innerQuestion.getType() !== \"boolean\" && isChoicesArraysEqual(innerQuestion.choices, (<QuestionSelectBase>this.question).choices));\n return canGroupColumns;\n }\n\n protected setLocale(newLocale: string) {\n super.setLocale(newLocale);\n this._childOptions.seriesLabels = this.question.rows.map((row: ItemValue) => row.text);\n this._contentVisualizer.locale = newLocale;\n }\n\n public get contentVisualizer() {\n return this._contentVisualizer;\n }\n\n private onPanelAfterRenderCallback = () => {\n this.afterRender(this.contentContainer);\n };\n\n updateData(data: Array<{ [index: string]: any }>) {\n super.updateData(data);\n this.dataProvider.fixDropdownData(this.dataNames);\n }\n\n getQuestions(): Array<Question> {\n const matrixdropdown: QuestionMatrixDropdownModel = <any>this.question;\n return matrixdropdown.columns.map(\n (column: MatrixDropdownColumn) => {\n const cellQuestion: any = column.templateQuestion;\n if (Array.isArray(cellQuestion.choices) && cellQuestion.choices.length === 0) {\n cellQuestion.choices = matrixdropdown.choices;\n }\n return cellQuestion;\n }\n );\n }\n\n destroyContent(container: HTMLElement) {\n this._contentVisualizer.clear();\n super.destroyContent(this.contentContainer);\n }\n\n renderContent(container: HTMLElement): void {\n this._contentVisualizer.render(container);\n }\n\n destroy() {\n super.destroy();\n this._contentVisualizer.onAfterRender.remove(this.onPanelAfterRenderCallback);\n }\n}\n\nVisualizationManager.registerVisualizer(\n \"matrixdropdown\",\n VisualizationMatrixDropdown\n);\n","import { Question, QuestionMatrixDropdownModel } from \"survey-core\";\nimport { VisualizationManager } from \"./visualizationManager\";\nimport { VisualizationPanelDynamic } from \"./visualizationPanelDynamic\";\n\nexport class VisualizationMatrixDynamic extends VisualizationPanelDynamic {\n constructor(\n question: Question,\n data: Array<{ [index: string]: any }>,\n options?: Object,\n name?: string\n ) {\n super(question, data, options, name || \"matrixDynamic\");\n }\n\n getQuestions() {\n const matrixdynamic: QuestionMatrixDropdownModel = <any>this.question;\n const visibleRows = matrixdynamic.visibleRows;\n\n if (visibleRows.length === 0) return [];\n\n return visibleRows[0].cells.map(c => c.question);\n }\n}\n\nVisualizationManager.registerVisualizer(\n \"matrixdynamic\",\n VisualizationMatrixDynamic\n);\n","// extracted by mini-css-extract-plugin\nexport {};","import { Event, Question, SurveyModel, surveyLocalization } from \"survey-core\";\nimport { IsTouch } from \"survey-core\";\nimport { VisualizerBase } from \"./visualizerBase\";\nimport { SelectBase, IVisualizerWithSelection } from \"./selectBase\";\nimport { AlternativeVisualizersWrapper } from \"./alternativeVizualizersWrapper\";\nimport { DocumentHelper, createCommercialLicenseLink } from \"./utils/index\";\nimport { localization } from \"./localizationManager\";\nimport { IVisualizerPanelElement, IState, IPermission } from \"./config\";\nimport { FilterInfo } from \"./filterInfo\";\nimport { LayoutEngine, MuuriLayoutEngine } from \"./layoutEngine\";\nimport { DataProvider } from \"./dataProvider\";\nimport { svgTemplate } from \"./svgbundle\";\nimport { VisualizationManager } from \"./visualizationManager\";\nimport \"./visualizationPanel.scss\";\nimport { VisualizationPanelDynamic } from \"./visualizationPanelDynamic\";\n\nconst questionElementClassName = \"sa-question\";\nconst questionLayoutedElementClassName = \"sa-question-layouted\";\n\nif (!!document) {\n const templateHolder = document.createElement(\"div\");\n templateHolder.style.display = \"none\";\n templateHolder.innerHTML = svgTemplate;\n document.head.appendChild(templateHolder);\n}\n\nexport interface IVisualizerPanelRenderedElement\n extends IVisualizerPanelElement {\n renderedElement?: HTMLElement;\n}\n\n/**\n * Visualization Panel configuration. Pass it as the third argument to the [`VisualizationPanel`](https://surveyjs.io/dashboard/documentation/api-reference/visualizationpanel) constructor:\n *\n * ```js\n * import { VisualizationPanel } from \"survey-analytics\";\n *\n * const vizPanel = new VisualizationPanel(\n * surveyQuestions,\n * surveyResults,\n * vizPanelOptions\n * );\n * ```\n *\n * [View Demo](https://surveyjs.io/dashboard/examples/interactive-survey-data-dashboard/ (linkStyle))\n */\nexport interface IVisualizationPanelOptions {\n // An object named after a question that it configures.\n // questionName: {\n // intervals: []\n // },\n\n /**\n * The number of label characters after which truncation starts.\n *\n * Set this property to -1 to disable truncation.\n *\n * Default value: 27\n */\n labelTruncateLength?: number;\n\n allowMakeQuestionsPrivate?: boolean;\n\n seriesValues?: string[];\n seriesLabels?: string[];\n useValuesAsLabels?: boolean;\n\n /**\n * Pass a survey instance to use survey locales in the Visualization Panel.\n *\n * [View Demo](https://surveyjs.io/dashboard/examples/localize-survey-data-dashboard-ui/ (linkStyle))\n */\n survey?: SurveyModel;\n /**\n * A common data provider for all visualizers.\n */\n dataProvider?: DataProvider;\n /**\n * Allows users to change the visibility of individual charts.\n *\n * This property adds a Hide button to each chart.\n *\n * Default value: `true`\n */\n allowHideQuestions?: boolean;\n /**\n * Specifies whether to arrange charts based on the available screen space and allow users to reorder them via drag and drop.\n *\n * If this property is disabled, charts are displayed one under another, and users cannot drag and drop them. If you want to disable only drag and drop, set the [`allowDragDrop`](https://surveyjs.io/dashboard/documentation/api-reference/ivisualizationpaneloptions#allowDynamicLayout) property to `false`.\n *\n * Default value: `true`\n *\n * [View Demo](https://surveyjs.io/dashboard/examples/custom-layout/ (linkStyle))\n * @see layoutEngine\n */\n allowDynamicLayout?: boolean;\n /**\n * Specifies whether users can drag and drop charts. Applies only if [`allowDynamicLayout`](https://surveyjs.io/dashboard/documentation/api-reference/ivisualizationpaneloptions#allowDynamicLayout) is `true`.\n *\n * Default value: `true`\n * @see layoutEngine\n */\n allowDragDrop?: boolean;\n /**\n * A layout engine used to arrange charts on the Visualization Panel.\n *\n * You can use this property to integrate a third-party layout engine with SurveyJS Dashboard.\n *\n * @see allowDynamicLayout\n */\n layoutEngine?: LayoutEngine;\n /**\n * Allows users to switch between absolute and percentage values in bar charts.\n *\n * This property adds a Show Percentages button to each bar chart.\n *\n * Default value: `false`\n *\n * @see showPercentages\n * @see showOnlyPercentages\n * @see percentagePrecision\n */\n allowShowPercentages?: boolean;\n /**\n * Specifies whether bar charts display percentages in addition to absolute values.\n *\n * Users can change this property value if you enable the `allowShowPercentages` property.\n *\n * Default value: `false`\n *\n * @see allowShowPercentages\n * @see showOnlyPercentages\n * @see percentagePrecision\n */\n showPercentages?: boolean;\n /**\n * Specifies whether bar charts display only percentages, without absolute values.\n *\n * Applies only if the `allowShowPercentages` or `showPercentages` property is enabled.\n *\n * Default value: `false`\n *\n * @see allowShowPercentages\n * @see showPercentages\n * @see percentagePrecision\n */\n showOnlyPercentages?: boolean;\n /**\n * Specifies percentage precision.\n *\n * Default value: 2\n *\n * @see allowShowPercentages\n * @see showPercentages\n * @see showOnlyPercentages\n */\n percentagePrecision?: number;\n haveCommercialLicense?: boolean;\n /**\n * Allows users to sort answers by answer count. Applies only to [bar charts](https://surveyjs.io/dashboard/documentation/chart-types#bar-chart), [histograms](https://surveyjs.io/dashboard/documentation/chart-types#histogram), and [statistics tables](https://surveyjs.io/dashboard/documentation/chart-types#statistics-table).\n *\n * This property adds a Sorting dropdown to each supported visualizer.\n *\n * Default value: `true`\n *\n * @see answersOrder\n */\n allowSortAnswers?: boolean;\n /**\n * @deprecated Use the [`allowSortAnswers`](https://surveyjs.io/dashboard/documentation/api-reference/ivisualizationpaneloptions#allowSortAnswers) property instead.\n */\n allowChangeAnswersOrder?: boolean;\n /**\n * Specifies how to sort answers in [bar charts](https://surveyjs.io/dashboard/documentation/chart-types#bar-chart), [histograms](https://surveyjs.io/dashboard/documentation/chart-types#histogram), and [statistics tables](https://surveyjs.io/dashboard/documentation/chart-types#statistics-table).\n *\n * Accepted values:\n *\n * - `\"default\"` (default) - Do not sort answers.\n * - `\"asc\"` - Sort answers by ascending answer count.\n * - `\"desc\"` - Sort answers by descending answer count.\n *\n * Users can change this property value if you enable the `allowSortAnswers` property.\n *\n * @see allowSortAnswers\n */\n answersOrder?: \"default\" | \"asc\" | \"desc\";\n /**\n * Allows users to hide answers with zero count in [bar charts](https://surveyjs.io/dashboard/documentation/chart-types#bar-chart), [histograms](https://surveyjs.io/dashboard/documentation/chart-types#histogram), and [statistics tables](https://surveyjs.io/dashboard/documentation/chart-types#statistics-table).\n *\n * This property adds a Hide Empty Answers button to each supported visualizer.\n *\n * Default value: `false`\n */\n allowHideEmptyAnswers?: boolean;\n /**\n * Hides answers with zero count in [bar charts](https://surveyjs.io/dashboard/documentation/chart-types#bar-chart), [histograms](https://surveyjs.io/dashboard/documentation/chart-types#histogram), and [statistics tables](https://surveyjs.io/dashboard/documentation/chart-types#statistics-table).\n *\n * Users can change this property value if you enable the `allowHideEmptyAnswers` property.\n *\n * Default value: `false`\n *\n * @see allowHideEmptyAnswers\n */\n hideEmptyAnswers?: boolean;\n /**\n * Allows users to select whether to show top 5, 10, or 20 answers by answer count.\n *\n * This property adds a Top N Answers dropdown to each chart.\n *\n * Default value: `false`\n */\n allowTopNAnswers?: boolean;\n /**\n * Allows users to show the number of respondents who did not answer a particular question.\n *\n * This property adds a Show Missing Answers button to each chart.\n *\n * Default value: `false`\n */\n allowShowMissingAnswers?: boolean;\n\n allowExperimentalFeatures?: boolean;\n /**\n * Default chart type.\n *\n * Accepted values depend on the question type as follows:\n *\n * - Boolean: `\"bar\"` | `\"vbar\"` | `\"pie\"` | `\"doughnut\"`\n * - Date, Number: `\"bar\"` | `\"vbar\"`\n * - Matrix: `\"bar\"` | `\"vbar\"` | `\"pie\"` | `\"doughnut\"` | `\"stackedbar\"`\n * - Rating: `\"bar\"` | `\"vbar\"` | `\"gauge\"` | `\"bullet\"`\n * - Radiogroup, Checkbox, Dropdown, Image Picker: `\"bar\"` | `\"vbar\"` | `\"pie\"` | `\"doughnut\"`\n * - Ranking: `\"bar\"` | `\"vbar\"` | `\"pie\"` | `\"doughnut\" | `\"radar\"`\n *\n * To set a type for an individual chart, access this chart in the `visualizers` array or using the [`getVisualizer(questionName)`](https://surveyjs.io/dashboard/documentation/api-reference/visualizationpanel#getVisualizer) method and set its `chartType` property to one of the values described above:\n *\n * ```js\n * const vizPanel = new SurveyAnalytics.VisualizationPanel( ... );\n * vizPanel.visualizers[0].chartType = \"stackedbar\";\n * // --- or ---\n * vizPanel.getVisualizer(\"my-question\").chartType = \"stackedbar\";\n * ```\n */\n defaultChartType?: string;\n /**\n * Allows users to transpose a visualized matrix question.\n *\n * This property adds a Transpose button to charts that visualize matrixes. When users select Per Values, matrix rows go to chart arguments and matrix columns form chart series. When users select Per Columns, matrix rows form chart series and matrix columns go to chart arguments.\n *\n * Default value: `false`\n */\n allowTransposeData?: boolean;\n /**\n * Allows users to cross-filter charts. The filter applies when users select a series point.\n *\n * Default value: `true`\n */\n allowSelection?: boolean;\n\n renderContent?: Function;\n destroyContent?: Function;\n\n /**\n * Removes HTML tags from survey element titles.\n *\n * Survey element titles can contain HTML markup and are specified by users. An attacker can inject malicious code into the titles. To guard against it, keep this property set to `true`.\n *\n * Default value: `true`\n */\n stripHtmlFromTitles?: boolean;\n\n /**\n * Allows users to switch between different visualizer types.\n *\n * Default value: `true`\n */\n allowChangeVisualizerType?: boolean;\n}\n\n/**\n * An object that visualizes survey results and allows users to analyze them.\n *\n * Constructor parameters:\n *\n * - `questions`: Array\\<[`Question`](https://surveyjs.io/form-library/documentation/api-reference/question)\\>\\\n * Survey questions to visualize. Call `SurveyModel`'s [`getAllQuestions()`](https://surveyjs.io/form-library/documentation/api-reference/survey-data-model#getQuestionByName) method to access all survey questions and pass its result as the `questions` parameter.\n * - `data`: `Array<any>`\\\n * Survey results.\n * - `vizPanelOptions`: [`IVisualizationPanelOptions`](https://surveyjs.io/dashboard/documentation/api-reference/ivisualizationpaneloptions)\\\n * Visualization Panel configuration.\n *\n * [View Demo](https://surveyjs.io/dashboard/examples/interactive-survey-data-dashboard/ (linkStyle))\n */\nexport class VisualizationPanel extends VisualizerBase {\n public visualizers: Array<VisualizerBase> = [];\n private renderedQuestionsCount: number = 0;\n constructor(\n protected questions: Array<any>,\n data: Array<{ [index: string]: any }>,\n options: IVisualizationPanelOptions = {},\n private _elements: Array<IVisualizerPanelRenderedElement> = undefined,\n private isRoot = true\n ) {\n super(null, data, options, \"panel\");\n this.loadingData = false;\n\n this._layoutEngine =\n options.layoutEngine ||\n new MuuriLayoutEngine(\n this.allowDynamicLayout,\n \".\" + questionLayoutedElementClassName,\n this.allowDragDrop\n );\n this._layoutEngine.onMoveCallback = (order: Array<string>) =>\n this.reorderVisibleElements(order);\n\n this.showToolbar = isRoot;\n if (this.options.survey) {\n localization.currentLocale = this.options.survey.locale;\n }\n\n if (_elements === undefined) {\n this._elements = this.buildElements(questions);\n }\n\n this.buildVisualizers(questions);\n\n if (!this.haveCommercialLicense && this.isRoot) {\n this.registerToolbarItem(\"commercialLicense\", () => {\n return createCommercialLicenseLink();\n });\n }\n\n this._supportSelection = true;\n if(this.supportSelection !== false) {\n this.registerToolbarItem(\"resetFilter\", () => {\n return DocumentHelper.createButton(() => {\n this.resetFilter();\n }, localization.getString(\"resetFilter\"));\n }, 900);\n }\n\n this.registerToolbarItem(\"addElement\", (toolbar: HTMLDivElement) => {\n if (this.allowHideQuestions) {\n let addElementSelector: HTMLElement = undefined;\n const addElementSelectorUpdater = (\n panel: VisualizationPanel,\n options: any\n ) => {\n const hiddenElements = this.hiddenElements;\n const selectWrapper = DocumentHelper.createSelector(\n [\n <any>{\n name: undefined,\n displayName: localization.getString(\"addElement\"),\n },\n ]\n .concat(hiddenElements)\n .map((element) => {\n return {\n value: element.name,\n text: element.displayName,\n };\n }),\n (option: any) => false,\n (e: any) => {\n this.showElement(e.target.value);\n }\n );\n if(addElementSelector) {\n toolbar.replaceChild(selectWrapper, addElementSelector);\n }\n addElementSelector = selectWrapper;\n\n if (hiddenElements.length > 0) {\n addElementSelector.style.display = undefined;\n } else if(addElementSelector) {\n addElementSelector.style.display = \"none\";\n }\n };\n addElementSelectorUpdater(this, {});\n this.onVisibleElementsChanged.add(addElementSelectorUpdater);\n return addElementSelector;\n }\n return undefined;\n });\n if (!this.options.disableLocaleSwitch && this.locales.length > 1) {\n const localeChoices = this.locales.map((element) => {\n return {\n value: element,\n text: localization.getLocaleName(element)\n };\n });\n // localeChoices.unshift({\n // value: \"\",\n // text: localization.getString(\"changeLocale\"),\n // });\n this.registerToolbarItem(\"changeLocale\", () => {\n return DocumentHelper.createSelector(localeChoices,\n (option: any) => !!option.value && (this.locale || surveyLocalization.defaultLocale) === option.value,\n (e: any) => {\n var newLocale = e.target.value;\n this.locale = newLocale;\n }\n );\n });\n }\n }\n\n public resetFilter(): void {\n this.dataProvider?.resetFilter();\n this.visualizers.forEach((visualizer) => {\n if (visualizer instanceof SelectBase || visualizer instanceof AlternativeVisualizersWrapper) {\n visualizer.setSelection(undefined);\n }\n if (visualizer instanceof VisualizationPanelDynamic) {\n visualizer.resetFilter();\n }\n });\n }\n\n reorderVisibleElements(order: string[]): void {\n const newElements = [];\n order.forEach(name => {\n newElements.push(this._elements.filter(el => el.name === name)[0]);\n });\n this._elements.forEach(el => {\n if(order.indexOf(el.name) == -1) {\n newElements.push(el);\n }\n });\n this._elements = newElements;\n this.visibleElementsChanged(undefined, \"REORDERED\");\n }\n\n private onAfterRenderQuestionCallback = (\n sender: VisualizerBase,\n options: any\n ) => {\n this.renderedQuestionsCount++;\n if (this.renderedQuestionsCount == this.visibleElements.length) {\n this.renderedQuestionsCount = 0;\n this.layoutEngine.update();\n this.afterRender(this.contentContainer);\n }\n };\n\n private onStateChangedCallback = (\n sender: VisualizerBase,\n options: any\n ) => {\n this.stateChanged(sender.question?.name, options);\n };\n\n /**\n * An event that is raised when a user selects a different visualizer type from the Type drop-down menu.\n *\n * Parameters:\n *\n * - `sender`: `AlternativeVisualizersWrapper`\\\n * An object that controls altenative visualizers.\n *\n * - `options.visualizer`: `VisualizerBase`\\\n * An applied visualizer.\n **/\n public onAlternativeVisualizerChanged: Event<\n (sender: AlternativeVisualizersWrapper, options: any) => any,\n AlternativeVisualizersWrapper,\n any\n > = new Event<(sender: AlternativeVisualizersWrapper, options: any) => any, AlternativeVisualizersWrapper, any>();\n\n private onAlternativeVisualizerChangedCallback = (\n sender: AlternativeVisualizersWrapper,\n options: { visualizer: VisualizerBase }\n ) => {\n this.onAlternativeVisualizerChanged.fire(sender, options);\n };\n\n protected onDataChanged(): void {\n }\n\n protected showElementCore(element: IVisualizerPanelRenderedElement, elementIndex = -1): void {\n element.isVisible = true;\n const questionElement = this.renderPanelElement(\n element,\n this.contentContainer\n );\n let options = undefined;\n if(elementIndex >= 0) {\n options = { index: elementIndex };\n }\n this.layoutEngine.add([questionElement], options);\n }\n\n public showElement(elementName: string) {\n const element = this.getElement(elementName);\n const elementIndex = this._elements.indexOf(element);\n this.showElementCore(element, elementIndex);\n this.visibleElementsChanged(element, \"ADDED\");\n }\n\n protected hideElementCore(element: IVisualizerPanelRenderedElement) {\n element.isVisible = false;\n if (!!element.renderedElement) {\n this.layoutEngine.remove([element.renderedElement]);\n this.contentContainer.removeChild(element.renderedElement);\n element.renderedElement = undefined;\n }\n }\n\n public hideElement(elementName: string) {\n const element = this.getElement(elementName);\n this.hideElementCore(element);\n this.visibleElementsChanged(element, \"REMOVED\");\n }\n\n /**\n * Hides all panel elements. Users can select the elements they want to show from a drop-down menu.\n * @see showAllElements\n * @see allowHideQuestions\n */\n public hideAllElements(): void {\n const affectedElements = [];\n this._elements.forEach(element => {\n if(element.isVisible) {\n this.hideElementCore(element);\n affectedElements.push(element);\n }\n });\n this.visibleElementsChanged(undefined, \"REMOVEDALL\");\n }\n\n /**\n * Shows all panel elements if they are hidden to a drop-down menu.\n * @see hideAllElements\n * @see allowHideQuestions\n */\n public showAllElements() {\n const affectedElements = [];\n this._elements.forEach(element => {\n if(!element.isVisible) {\n this.showElementCore(element);\n affectedElements.push(element);\n }\n });\n this.visibleElementsChanged(undefined, \"ADDEDDALL\");\n }\n\n protected makeElementPrivate(element: IVisualizerPanelElement) {\n element.isPublic = false;\n this.stateChanged(\"isPublic\", false);\n this.onPermissionsChangedCallback &&\n this.onPermissionsChangedCallback(this);\n }\n\n protected makeElementPublic(element: IVisualizerPanelElement) {\n element.isPublic = true;\n this.stateChanged(\"isPublic\", true);\n this.onPermissionsChangedCallback &&\n this.onPermissionsChangedCallback(this);\n }\n\n protected moveVisibleElement(\n fromVisibleIndex: number,\n toVisibleIndex: number\n ) {\n let fromIndex, toIndex;\n\n let fromVisibleIndexElement = this.visibleElements[fromVisibleIndex];\n let toVisibleIndexElement = this.visibleElements[toVisibleIndex];\n\n fromIndex = this._elements.indexOf(fromVisibleIndexElement);\n toIndex = this._elements.indexOf(toVisibleIndexElement);\n\n this.moveElement(fromIndex, toIndex);\n }\n\n protected moveElement(fromIndex: number, toIndex: number) {\n var elements = this._elements.splice(fromIndex, 1);\n this._elements.splice(toIndex, 0, elements[0]);\n this.visibleElementsChanged(elements[0], \"MOVED\");\n }\n\n protected setBackgroundColorCore(color: string) {\n super.setBackgroundColorCore(color);\n this.visualizers.forEach(visualizer => visualizer.backgroundColor = color);\n }\n\n private buildVisualizers(questions: Array<Question>) {\n questions.forEach((question) => {\n let visualizerOptions = Object.assign({}, this.options);\n if(visualizerOptions.dataProvider === undefined) {\n visualizerOptions.dataProvider = this.dataProvider;\n }\n let visualizer: VisualizerBase;\n if(Array.isArray(question)) {\n visualizer = new (VisualizationManager.getPivotVisualizerConstructor() as any)(question, [], visualizerOptions, undefined, false);\n } else {\n visualizer = this.createVisualizer(question, visualizerOptions, []);\n }\n if(!visualizer) {\n return;\n }\n\n if (this.allowHideQuestions) {\n visualizer.registerToolbarItem(\"removeQuestion\", () => {\n return DocumentHelper.createButton(() => {\n setTimeout(() => this.hideElement(question.name), 0);\n }, localization.getString(\"hideButton\"));\n }, 1000);\n }\n\n if (this.allowMakeQuestionsPrivate) {\n visualizer.registerToolbarItem(\"makePrivatePublic\", () => {\n const element = this.getElement(question.name);\n\n const state = element.isPublic ? \"first\" : \"second\";\n\n const pathMakePrivateSvg = \"makeprivate\";\n const pathMakePublicSvg = \"makepublic\";\n const makePrivateTitle = localization.getString(\"makePrivateButton\");\n const makePublicTitle = localization.getString(\"makePublicButton\");\n const doPrivate = (e: any) => {\n setTimeout(() => this.makeElementPrivate(element), 0);\n };\n const doPublic = (e: any) => {\n setTimeout(() => this.makeElementPublic(element), 0);\n };\n\n return DocumentHelper.createSvgToggleButton(\n pathMakePublicSvg,\n pathMakePrivateSvg,\n makePrivateTitle,\n makePublicTitle,\n doPublic,\n doPrivate,\n state\n );\n });\n }\n\n if (visualizer.supportSelection) {\n const visualizerWithSelection = <IVisualizerWithSelection>(\n (<any>visualizer)\n );\n let filterInfo = new FilterInfo(visualizerWithSelection);\n\n visualizer.registerToolbarItem(\"questionFilterInfo\", () => {\n filterInfo.update(visualizerWithSelection.selection);\n return filterInfo.htmlElement;\n }, 900);\n\n visualizerWithSelection.onDataItemSelected = (\n selectedValue: any,\n selectedText: string\n ) => {\n filterInfo.update({ value: selectedValue, text: selectedText });\n this.setFilter(question.name, selectedValue);\n };\n }\n\n visualizer.onUpdate = () => this.layout();\n visualizer.onAfterRender.add(this.onAfterRenderQuestionCallback);\n visualizer.onStateChanged.add(this.onStateChangedCallback);\n\n if (visualizer instanceof AlternativeVisualizersWrapper) {\n visualizer.onVisualizerChanged.add(this.onAlternativeVisualizerChangedCallback);\n }\n\n this.visualizers.push(visualizer);\n });\n }\n\n private destroyVisualizers() {\n this.visualizers.forEach((visualizer) => {\n visualizer.onUpdate = undefined;\n if (visualizer instanceof SelectBase) {\n visualizer.onDataItemSelected = undefined;\n }\n if (visualizer instanceof AlternativeVisualizersWrapper) {\n visualizer.onVisualizerChanged.remove(this.onAlternativeVisualizerChangedCallback);\n }\n visualizer.onStateChanged.remove(this.onStateChangedCallback);\n visualizer.onAfterRender.remove(this.onAfterRenderQuestionCallback);\n visualizer.destroy();\n });\n this.visualizers = [];\n }\n\n protected setLocale(newLocale: string) {\n super.setLocale(newLocale);\n (this.questions || []).forEach((question) => {\n question = Array.isArray(question) ? question[0] : question;\n const element = this.getElement(question.name);\n if (!!element) {\n element.displayName = this.getTitle(question);\n }\n });\n this.visualizers.forEach(v => {\n v.options.seriesLabels = this.options.seriesLabels;\n v.locale = newLocale;\n });\n this.stateChanged(\"locale\", newLocale);\n }\n\n /**\n * Returns the [`allowDynamicLayout`](https://surveyjs.io/dashboard/documentation/api-reference/ivisualizationpaneloptions#allowDynamicLayout) property value of the [`IVisualizationPanelOptions`](https://surveyjs.io/dashboard/documentation/api-reference/ivisualizationpaneloptions) object.\n */\n public get allowDynamicLayout() {\n return (\n this.options.allowDynamicLayout === undefined ||\n this.options.allowDynamicLayout === true\n );\n }\n\n /**\n * Returns the [`allowDragDrop`](https://surveyjs.io/dashboard/documentation/api-reference/ivisualizationpaneloptions#allowDragDrop) property value of the [`IVisualizationPanelOptions`](https://surveyjs.io/dashboard/documentation/api-reference/ivisualizationpaneloptions) object.\n */\n public get allowDragDrop() {\n if(IsTouch) {\n return false;\n }\n return (\n this.options.allowDragDrop === undefined ||\n this.options.allowDragDrop === true\n );\n }\n\n /**\n * Returns the [`allowHideQuestions`](https://surveyjs.io/dashboard/documentation/api-reference/ivisualizationpaneloptions#allowHideQuestions) property value of the [`IVisualizationPanelOptions`](https://surveyjs.io/dashboard/documentation/api-reference/ivisualizationpaneloptions) object.\n */\n public get allowHideQuestions() {\n return (\n this.options.allowHideQuestions === undefined ||\n this.options.allowHideQuestions === true\n );\n }\n\n public get allowMakeQuestionsPrivate() {\n return this.options.allowMakeQuestionsPrivate === true;\n }\n\n private _layoutEngine: LayoutEngine;\n /**\n * Returns a [`LayoutEngine`](https://surveyjs.io/dashboard/documentation/api-reference/layoutengine) instance used to arrange visualization items on `VisualizationPanel`.\n */\n public get layoutEngine() {\n return this._layoutEngine;\n }\n\n protected buildElements(questions: any[]): IVisualizerPanelElement[] {\n return (questions || []).map((question) => {\n question = Array.isArray(question) ? question[0] : question;\n return {\n name: question.name,\n displayName: this.getTitle(question),\n isVisible: true,\n isPublic: true,\n };\n });\n }\n\n /**\n * Returns an array of [`IVisualizerPanelElement`](https://surveyjs.io/dashboard/documentation/api-reference/ivisualizerpanelelement) objects with information about visualization items.\n * @param questionNames Question [names](https://surveyjs.io/form-library/documentation/api-reference/question#name). Do not specify this parameter to get an array of all visualization items.\n * @see visibleElements\n * @see hiddenElements\n */\n public getElements(questionNames?: Array<string>): IVisualizerPanelElement[] {\n const result = [];\n (this._elements || []).forEach((element) => {\n if(!questionNames || questionNames.indexOf(element.name) !== -1) {\n result.push({\n name: element.name,\n displayName: element.displayName,\n isVisible: element.isVisible,\n isPublic: element.isPublic,\n });\n }\n });\n return result;\n }\n\n /**\n * Returns an array of [`IVisualizerPanelElement`](https://surveyjs.io/dashboard/documentation/api-reference/ivisualizerpanelelement) objects with information about currently visible visualization items.\n *\n * If you want to disallow users to hide visualization items, set the [`allowHideQuestions`](https://surveyjs.io/dashboard/documentation/api-reference/ivisualizationpaneloptions#allowHideQuestions) property to `false`.\n * @see hiddenElements\n * @see getElements\n */\n public get visibleElements() {\n return this._elements.filter((el: IVisualizerPanelElement) => el.isVisible);\n }\n\n /**\n * Returns an array of [`IVisualizerPanelElement`](https://surveyjs.io/dashboard/documentation/api-reference/ivisualizerpanelelement) objects with information about currently hidden visualization items.\n *\n * If you want to disallow users to hide visualization items, set the [`allowHideQuestions`](https://surveyjs.io/dashboard/documentation/api-reference/ivisualizationpaneloptions#allowHideQuestions) property to `false`.\n * @see visibleElements\n * @see getElements\n */\n public get hiddenElements() {\n return this._elements.filter(\n (el: IVisualizerPanelElement) => !el.isVisible\n );\n }\n\n public get publicElements() {\n return this._elements.filter((el: IVisualizerPanelElement) => el.isPublic);\n }\n\n public get privateElements() {\n return this._elements.filter((el: IVisualizerPanelElement) => !el.isPublic);\n }\n\n protected get locales() {\n if (this.options.survey) return this.options.survey.getUsedLocales();\n return [];\n }\n\n /**\n * Returns a visualization item with a specified question name.\n * @param name A question [name](https://surveyjs.io/form-library/documentation/api-reference/question#name).\n */\n public getElement(questionName: string) {\n return this._elements.filter((el) => el.name === questionName)[0];\n }\n\n /**\n * Returns a [visualizer](https://surveyjs.io/dashboard/documentation/api-reference/visualizerbase) that visualizes a specified survey question.\n * @param questionName A question [name](https://surveyjs.io/form-library/documentation/api-reference/question#name).\n */\n public getVisualizer(questionName: string) {\n return this.visualizers.filter((v) => v.question.name === questionName)[0];\n }\n\n /**\n * @deprecated Use [`onElementShown`](https://surveyjs.io/dashboard/documentation/api-reference/visualizationpanel#onElementShown), [`onElementHidden`](https://surveyjs.io/dashboard/documentation/api-reference/visualizationpanel#onElementHidden), or [`onElementMoved`](https://surveyjs.io/dashboard/documentation/api-reference/visualizationpanel#onElementMoved) instead.\n */\n public onVisibleElementsChanged = new Event<\n (sender: VisualizationPanel, options: any) => any, VisualizationPanel,\n any\n >();\n\n /**\n * An event that is raised when users [show a visualization item](https://surveyjs.io/dashboard/documentation/api-reference/ivisualizationpaneloptions#allowHideQuestions).\n *\n * Parameters:\n *\n * - `sender`: [`VisualizationPanel`](https://surveyjs.io/dashboard/documentation/api-reference/visualizationpanel)\\\n * A `VisualizationPanel` that raised the event.\n *\n * - `options.elements`: Array\\<[`IVisualizerPanelElement`](https://surveyjs.io/dashboard/documentation/api-reference/ivisualizerpanelelement)\\>\\\n * Information about all visualization items rendered by this `VisualizationPanel`.\n *\n * - `options.element`: [`IVisualizerPanelElement`](https://surveyjs.io/dashboard/documentation/api-reference/ivisualizerpanelelement)\\\n * A visualization item that has been shown.\n */\n public onElementShown = new Event<\n (sender: VisualizationPanel, options: any) => any, VisualizationPanel,\n any\n >();\n\n /**\n * An event that is raised when users [hide a visualization item](https://surveyjs.io/dashboard/documentation/api-reference/ivisualizationpaneloptions#allowHideQuestions).\n *\n * Parameters:\n *\n * - `sender`: [`VisualizationPanel`](https://surveyjs.io/dashboard/documentation/api-reference/visualizationpanel)\\\n * A `VisualizationPanel` that raised the event.\n *\n * - `options.elements`: Array\\<[`IVisualizerPanelElement`](https://surveyjs.io/dashboard/documentation/api-reference/ivisualizerpanelelement)\\>\\\n * Information about all visualization items rendered by this `VisualizationPanel`.\n *\n * - `options.element`: [`IVisualizerPanelElement`](https://surveyjs.io/dashboard/documentation/api-reference/ivisualizerpanelelement)\\\n * A visualization item that has been hidden.\n */\n public onElementHidden = new Event<\n (sender: VisualizationPanel, options: any) => any, VisualizationPanel,\n any\n >();\n\n /**\n * An event that is raised when users [move a visualization item](https://surveyjs.io/dashboard/documentation/api-reference/ivisualizationpaneloptions#allowDynamicLayout).\n *\n * Parameters:\n *\n * - `sender`: [`VisualizationPanel`](https://surveyjs.io/dashboard/documentation/api-reference/visualizationpanel)\\\n * A `VisualizationPanel` that raised the event.\n *\n * - `options.elements`: Array\\<[`IVisualizerPanelElement`](https://surveyjs.io/dashboard/documentation/api-reference/ivisualizerpanelelement)\\>\\\n * Information about all visualization items rendered by this `VisualizationPanel`.\n *\n * - `options.element`: [`IVisualizerPanelElement`](https://surveyjs.io/dashboard/documentation/api-reference/ivisualizerpanelelement)\\\n * A visualization item that has been moved.\n */\n public onElementMoved = new Event<\n (sender: VisualizationPanel, options: any) => any, VisualizationPanel,\n any\n >();\n\n protected visibleElementsChanged(\n element: IVisualizerPanelElement,\n reason: string\n ): void {\n if (reason === \"SHOWN\" && !this.onElementShown.isEmpty) {\n this.onElementShown.fire(this, {\n elements: this._elements,\n element: element\n });\n }\n if (reason === \"REMOVED\" && !this.onElementHidden.isEmpty) {\n this.onElementHidden.fire(this, {\n elements: this._elements,\n element: element\n });\n }\n if (reason === \"MOVED\" && !this.onElementMoved.isEmpty) {\n this.onElementMoved.fire(this, {\n elements: this._elements,\n element: element\n });\n }\n\n if (!this.onVisibleElementsChanged.isEmpty) {\n this.onVisibleElementsChanged.fire(this, {\n elements: this._elements,\n changed: element,\n reason: reason,\n });\n }\n this.stateChanged(\"visibleElements\", reason);\n this.layout();\n }\n\n public onPermissionsChangedCallback: any;\n\n protected renderPanelElement(\n element: IVisualizerPanelRenderedElement,\n container: HTMLElement\n ) {\n const visualizer = this.getVisualizer(element.name);\n if(!visualizer) {\n return;\n }\n\n const questionElement = DocumentHelper.createElement(\"div\");\n questionElement.dataset.question = element.name;\n\n !!container && container.appendChild(questionElement);\n\n const questionContent = DocumentHelper.createElement(\"div\");\n const titleElement = DocumentHelper.createElement(\"h3\");\n const vizualizerElement = DocumentHelper.createElement(\"div\");\n\n titleElement.innerText = element.displayName;\n\n questionElement.className = this.allowDynamicLayout\n ? questionElementClassName + \" \" + questionLayoutedElementClassName\n : questionElementClassName;\n titleElement.className = questionElementClassName + \"__title\";\n if (this.allowDynamicLayout && this.allowDragDrop) {\n titleElement.className =\n titleElement.className +\n \" \" +\n questionElementClassName +\n \"__title--draggable\";\n }\n questionContent.className = questionElementClassName + \"__content\";\n questionContent.style.backgroundColor = this.backgroundColor;\n\n questionContent.appendChild(titleElement);\n questionContent.appendChild(vizualizerElement);\n questionElement.appendChild(questionContent);\n\n visualizer.render(vizualizerElement);\n\n element.renderedElement = questionElement;\n return questionElement;\n }\n\n protected renderToolbar(container: HTMLElement) {\n container.className += \" sa-panel__header\";\n super.renderToolbar(container);\n }\n\n public renderContent(container: HTMLElement): void {\n container.className += \" sa-panel__content sa-grid\";\n\n this.visibleElements.forEach((element) => {\n let questionElement = this.renderPanelElement(element, container);\n });\n\n this.layoutEngine.start(container);\n // !!window && window.dispatchEvent(new UIEvent(\"resize\"));\n }\n\n protected destroyContent(container: HTMLElement) {\n this.layoutEngine.stop();\n super.destroyContent(container);\n }\n\n /**\n * Redraws the `VisualizationPanel` and all its content.\n */\n public refresh() {\n if (!!this.toolbarContainer) {\n this.destroyToolbar(this.toolbarContainer);\n this.renderToolbar(this.toolbarContainer);\n }\n super.refresh();\n }\n\n public layout() {\n this.layoutEngine.update();\n }\n\n /**\n * Filters visualized data based on a specified question name and value. This method is called when a user clicks a chart point.\n * @param questionName A question [name](https://surveyjs.io/form-library/documentation/api-reference/question#name).\n * @param selectedValue\n * @see IVisualizationPanelOptions.allowSelection\n */\n public setFilter(questionName: string, selectedValue: any) {\n if(!this.dataPath) {\n this.dataProvider.setFilter(questionName, selectedValue);\n } else {\n if(selectedValue !== undefined && selectedValue !== null) {\n if(typeof selectedValue === \"object\" && Object.keys(selectedValue)[0]) {\n const seriesValue = Object.keys(selectedValue)[0];\n this.dataProvider.setFilter(this.dataPath, { [questionName]: selectedValue[seriesValue], [DataProvider.seriesMarkerKey]: seriesValue });\n } else {\n this.dataProvider.setFilter(this.dataPath, { [questionName]: selectedValue });\n }\n } else {\n this.dataProvider.setFilter(this.dataPath, undefined);\n }\n }\n }\n\n public getState(): IState {\n return {\n locale: this.locale,\n elements: [].concat(this._elements.map(element => {\n const visualizer = this.getVisualizer(element.name);\n const elementState = { ...element, ...visualizer?.getState() };\n if (elementState.renderedElement !== undefined) {\n delete elementState.renderedElement;\n }\n return elementState;\n })),\n };\n }\n\n /**\n * The state of `VisualizationPanel`. Includes information about the visualized elements and current locale.\n *\n * [View Demo](https://surveyjs.io/dashboard/examples/save-dashboard-state-to-local-storage/ (linkStyle))\n * @see onStateChanged\n */\n public get state(): IState {\n return this.getState();\n }\n public set state(newState: IState) {\n if (!newState) return;\n this._settingState = true;\n try {\n\n if (Array.isArray(newState.elements)) {\n const questionNames = this.questions.map(q => Array.isArray(q) ? q[0].name : q.name);\n this._elements = [].concat(newState.elements.filter(e => (questionNames.indexOf(e.name) !== -1)));\n }\n\n if (typeof newState.locale !== \"undefined\") this.setLocale(newState.locale);\n\n this._elements.forEach(elementState => {\n const visualizer = this.getVisualizer(elementState.name);\n if (visualizer !== undefined) {\n visualizer.setState(elementState);\n }\n });\n\n } finally {\n this._settingState = false;\n }\n this.refresh();\n }\n public resetState(): void {\n this._settingState = true;\n super.resetState();\n try {\n this.visualizers.forEach(visualizer => visualizer.resetState());\n this.locale = surveyLocalization.defaultLocale;\n } finally {\n this._settingState = false;\n }\n this.refresh();\n }\n\n public get permissions(): IPermission[] {\n return <any>this._elements.map((element) => {\n return {\n name: element.name,\n isPublic: element.isPublic,\n };\n });\n }\n public set permissions(permissions: IPermission[]) {\n const updatedElements = this._elements.map((element) => {\n permissions.forEach((permission) => {\n if (permission.name === element.name)\n element.isPublic = permission.isPublic;\n });\n\n return { ...element };\n });\n this._elements = [].concat(updatedElements);\n this.refresh();\n this.onPermissionsChangedCallback &&\n this.onPermissionsChangedCallback(this);\n }\n\n protected getCalculatedValuesCore(): Array<any> {\n return [];\n }\n\n destroy() {\n super.destroy();\n this.destroyVisualizers();\n }\n}\n","import { VisualizerBase } from \"./visualizerBase\";\nimport { VisualizationManager } from \"./visualizationManager\";\nimport { VisualizationPanel } from \"./visualizationPanel\";\nimport { Question, QuestionPanelDynamicModel, IQuestion } from \"survey-core\";\n\nexport class VisualizationPanelDynamic extends VisualizerBase {\n protected _contentVisualizer: VisualizationPanel = undefined;\n constructor(\n question: Question,\n data: Array<{ [index: string]: any }>,\n options: { [index: string]: any } = {},\n name?: string\n ) {\n super(question, data, options, name || \"panelDynamic\");\n this.loadingData = false;\n var options = Object.assign({}, options);\n options.allowHideQuestions = false;\n options.allowDynamicLayout = false;\n options.dataProvider = this.dataProvider;\n options.dataPath = this.dataNames[0];\n this._contentVisualizer = new VisualizationPanel(this.getQuestions(), [], options, undefined, false);\n this._contentVisualizer.onAfterRender.add(this.onAfterRenderPanelCallback);\n }\n\n public get contentVisualizer(): VisualizationPanel {\n return this._contentVisualizer;\n }\n\n protected setLocale(newLocale: string) {\n super.setLocale(newLocale);\n this._contentVisualizer.locale = newLocale;\n }\n\n private onAfterRenderPanelCallback = () => {\n this.afterRender(this.contentContainer);\n };\n\n public resetFilter(): void {\n this.contentVisualizer.resetFilter();\n }\n\n getQuestions(): IQuestion[] {\n const paneldynamic: QuestionPanelDynamicModel = <any>this.question;\n return paneldynamic.template.questions;\n }\n\n destroyContent(container: HTMLElement) {\n this._contentVisualizer.clear();\n super.destroyContent(this.contentContainer);\n }\n\n renderContent(container: HTMLElement): void {\n this._contentVisualizer.render(container);\n }\n\n public destroy() {\n super.destroy();\n this._contentVisualizer.onAfterRender.remove(this.onAfterRenderPanelCallback);\n }\n}\n\nVisualizationManager.registerVisualizer(\n \"paneldynamic\",\n VisualizationPanelDynamic\n);\n","// extracted by mini-css-extract-plugin\nexport {};","import { Question, QuestionCommentModel, Event, settings, hasLicense } from \"survey-core\";\nimport { DataProvider, GetDataFn } from \"./dataProvider\";\nimport { VisualizerFactory } from \"./visualizerFactory\";\nimport { VisualizationManager } from \"./visualizationManager\";\nimport { DocumentHelper, createLoadingIndicator } from \"./utils\";\nimport { localization } from \"./localizationManager\";\nimport { defaultStatisticsCalculator } from \"./statisticCalculators\";\n\nimport \"./visualizerBase.scss\";\n\nexport interface IChartAdapter {\n getChartTypes(): string[];\n create(chartNode: HTMLElement): Promise<any>;\n update(chartNode: HTMLElement): Promise<any> ;\n destroy(node: HTMLElement): void;\n}\n\nexport interface IDataInfo {\n name: string; // TODO - remove from this interface\n dataPath?: string;\n dataNames: Array<string>;\n getValues(): Array<any>;\n getLabels(): Array<string>;\n getSeriesValues(): Array<string>;\n getSeriesLabels(): Array<string>;\n}\n\ntype ToolbarItemCreators = {\n [name: string]: {\n creator: (toolbar?: HTMLDivElement) => HTMLElement,\n // type: ToolbarItemType,\n order: number,\n // groupIndex: number,\n },\n};\n\nexport class PostponeHelper {\n public static postponeFunction: (fn: () => void, timeout?: number) => any;\n public static postpone(fn: () => void, timeout?: number): any {\n if(PostponeHelper.postponeFunction) {\n return PostponeHelper.postponeFunction(fn, timeout);\n } else {\n return setTimeout(fn, timeout);\n }\n }\n}\n\n/**\n * A base object for all visualizers. Use it to implement a custom visualizer.\n *\n * Constructor parameters:\n *\n * - `question`: [`Question`](https://surveyjs.io/form-library/documentation/api-reference/question)\\\n * A survey question to visualize.\n * - `data`: `Array<any>`\\\n * Survey results.\n * - `options`\\\n * An object with the following properties:\n * - `dataProvider`: `DataProvider`\\\n * A data provider for this visualizer.\n * - `renderContent`: `(contentContainer: HTMLElement, visualizer: VisualizerBase) => void`\\\n * A function that renders the visualizer's HTML markup. Append the markup to `contentContainer`.\n * - `survey`: [`SurveyModel`](https://surveyjs.io/form-library/documentation/api-reference/survey-data-model)\\\n * Pass a `SurveyModel` instance if you want to use locales from the survey JSON schema.\n * - `seriesValues`: `Array<string>`\\\n * Series values used to group data.\n * - `seriesLabels`: `Array<string>`\\\n * Series labels to display. If this property is not set, `seriesValues` are used as labels.\n * - `type`: `string`\\\n * *(Optional)* The visualizer's type.\n *\n * [View Demo](https://surveyjs.io/dashboard/examples/how-to-plot-survey-data-in-custom-bar-chart/ (linkStyle))\n */\nexport class VisualizerBase implements IDataInfo {\n public static haveCommercialLicense: boolean = false;\n public static suppressVisualizerStubRendering: boolean = false;\n public static chartAdapterType: any = undefined;\n\n private _showToolbar = true;\n private _footerVisualizer: VisualizerBase = undefined;\n private _dataProvider: DataProvider = undefined;\n private _getDataCore: (dataInfo: IDataInfo) => number[][] = undefined\n public labelTruncateLength: number = 27;\n protected haveCommercialLicense: boolean = false;\n protected renderResult: HTMLElement = undefined;\n protected toolbarContainer: HTMLElement = undefined;\n protected headerContainer: HTMLElement = undefined;\n protected contentContainer: HTMLElement = undefined;\n protected footerContainer: HTMLElement = undefined;\n protected _supportSelection: boolean = false;\n protected _chartAdapter: IChartAdapter = undefined;\n // public static otherCommentQuestionType = \"comment\"; // TODO: make it configureable - allow choose what kind of question/visualizer will be used for comments/others\n public static otherCommentCollapsed = true;\n protected _footerIsCollapsed: boolean = undefined;\n\n /**\n * An event that is raised after the visualizer's content is rendered.\n *\n * Parameters:\n *\n * - `sender`: `VisualizerBase`\\\n * A `VisualizerBase` instance that raised the event.\n *\n * - `options.htmlElement`: `HTMLElement`\\\n * A page element with the visualizer's content.\n * @see render\n * @see refresh\n **/\n public onAfterRender: Event<\n (sender: VisualizerBase, options: any) => any,\n VisualizerBase,\n any\n > = new Event<(sender: VisualizerBase, options: any) => any, VisualizerBase, any>();\n\n protected afterRender(contentContainer: HTMLElement) {\n this.onAfterRender.fire(this, { htmlElement: contentContainer });\n }\n\n /**\n * An event that is raised after a new locale is set.\n *\n * Parameters:\n *\n * - `sender`: `VisualizerBase`\\\n * A `VisualizerBase` instance that raised the event.\n *\n * - `options.locale`: `string`\\\n * The indentifier of a new locale (for example, \"en\").\n * @see locale\n */\n public onLocaleChanged = new Event<\n (sender: VisualizerBase, options: { locale: string }) => any,\n VisualizerBase,\n any\n >();\n\n // public onStateChanged = new Event<\n // (sender: VisualizationPanel, state: IState) => any,\n // VisualizationPanel,\n // any\n // >();\n /**\n * An event that is raised when the visualizer's state has changed.\n *\n * The state includes selected chart types, chart layout, sorting, filtering, and other customizations that a user has made while using the dashboard. Handle the `onStateChanged` event to save these customizations, for example, in `localStorage` and restore them when the user reloads the page.\n *\n * Parameters:\n *\n * - `sender`: `VisualizerBase`\\\n * A `VisualizerBase` instance that raised the event.\n *\n * - `state`: `any`\\\n * A new state of the visualizer. Includes information about the visualized elements and current locale.\n *\n * [View Demo](https://surveyjs.io/dashboard/examples/save-dashboard-state-to-local-storage/ (linkStyle))\n * @see getState\n * @see setState\n */\n public onStateChanged: Event<\n (sender: VisualizerBase, options: any) => any,\n VisualizerBase,\n any\n > = new Event<(sender: VisualizerBase, options: any) => any, VisualizerBase, any>();\n\n protected stateChanged(name: string, value: any): void {\n if(this._settingState) {\n return;\n }\n this.onStateChanged.fire(this, this.getState());\n }\n\n protected toolbarItemCreators: ToolbarItemCreators = {};\n\n public onGetToolbarItemCreators: () => ToolbarItemCreators;\n\n protected getToolbarItemCreators(): ToolbarItemCreators {\n return Object.assign({}, this.toolbarItemCreators, this.onGetToolbarItemCreators && this.onGetToolbarItemCreators() || {});\n }\n\n constructor(\n public question: Question,\n data: Array<{ [index: string]: any }> | GetDataFn,\n public options: { [index: string]: any } = {},\n private _type?: string\n ) {\n const f = hasLicense;\n this.haveCommercialLicense = (!!f && f(4)) ||\n VisualizerBase.haveCommercialLicense ||\n (typeof options.haveCommercialLicense !== \"undefined\" ? options.haveCommercialLicense : false);\n\n this._getDataCore = this.questionOptions?.getDataCore;\n this._dataProvider = options.dataProvider || new DataProvider(data);\n this._dataProvider.onDataChanged.add(() => this.onDataChanged());\n this.loadingData = !!this._dataProvider.dataFn;\n\n if (typeof options.labelTruncateLength !== \"undefined\") {\n this.labelTruncateLength = options.labelTruncateLength;\n }\n }\n\n protected get questionOptions() {\n return this.options[this.question?.name];\n }\n\n protected onDataChanged(): void {\n this._calculationsCache = undefined;\n this.loadingData = !!this._dataProvider.dataFn;\n this.refresh();\n }\n\n /**\n * Returns the identifier of a visualized question.\n */\n get name(): string {\n return this.question.valueName || this.question.name;\n }\n\n get dataNames(): Array<string> {\n return [this.name];\n }\n\n get dataPath(): string {\n return this.options.dataPath;\n }\n\n /**\n * Indicates whether the visualizer displays a header. This property is `true` when a visualized question has a correct answer.\n * @see hasFooter\n */\n get hasHeader(): boolean {\n if (!this.options || !this.options.showCorrectAnswers) {\n return false;\n }\n return !!this.question && !!this.question.correctAnswer;\n }\n\n /**\n * Indicates whether the visualizer displays a footer. This property is `true` when a visualized question has a comment.\n * @see hasHeader\n */\n get hasFooter(): boolean {\n return (\n !!this.question && (this.question.hasComment || this.question.hasOther)\n );\n }\n\n protected createVisualizer<T = VisualizerBase>(question: Question, options?: { [index: string]: any }, data?: any[]): T {\n let visualizerOptions = Object.assign({}, options || this.options);\n if (visualizerOptions.dataProvider === undefined) {\n visualizerOptions.dataProvider = this.dataProvider;\n }\n return VisualizerFactory.createVisualizer(question, data || this.data, visualizerOptions) as T;\n }\n\n /**\n * Allows you to access the footer visualizer. Returns `undefined` if the footer is absent.\n * @see hasFooter\n */\n get footerVisualizer(): VisualizerBase {\n if (!this.hasFooter) {\n return undefined;\n }\n if (!this._footerVisualizer) {\n const question = new QuestionCommentModel(\n this.question.name + (settings || {}).commentPrefix\n );\n question.title = this.processText(this.question.title);\n\n let visualizerOptions = Object.assign({}, this.options);\n visualizerOptions.renderContent = undefined;\n this._footerVisualizer = this.createVisualizer(question, visualizerOptions);\n if(!!this._footerVisualizer) {\n this._footerVisualizer.onUpdate = () => this.invokeOnUpdate();\n }\n }\n return this._footerVisualizer;\n }\n\n /**\n * Indicates whether users can select series points to cross-filter charts. To allow or disallow selection, set the [`allowSelection`](https://surveyjs.io/dashboard/documentation/api-reference/ivisualizationpaneloptions#allowSelection) property of the `IVisualizationPanelOptions` object in the [`VisualizationPanel`](https://surveyjs.io/dashboard/documentation/api-reference/visualizationpanel) constructor.\n */\n public get supportSelection(): boolean {\n return (this.options.allowSelection === undefined ||\n this.options.allowSelection) &&\n this._supportSelection;\n }\n\n public getSeriesValues(): Array<string> {\n return this.options.seriesValues || [];\n }\n\n public getSeriesLabels(): Array<string> {\n return this.options.seriesLabels || this.getSeriesValues();\n }\n\n public getValues(): Array<any> {\n throw new Error(\"Method not implemented.\");\n }\n\n public getLabels(): Array<string> {\n return this.getValues();\n }\n\n /**\n * Registers a function used to create a toolbar item for this visualizer.\n *\n * The following code shows how to add a custom button and drop-down menu to the toolbar:\n *\n * ```js\n * import { VisualizationPanel, DocumentHelper } from \"survey-analytics\";\n *\n * const vizPanel = new VisualizationPanel( ... );\n *\n * // Add a custom button to the toolbar\n * vizPanel.visualizers[0].registerToolbarItem(\"my-toolbar-button\", () => {\n * return DocumentHelper.createButton(\n * // A button click event handler\n * () => {\n * alert(\"Custom toolbar button is clicked\");\n * },\n * // Button caption\n * \"Button\"\n * );\n * });\n *\n * // Add a custom drop-down menu to the toolbar\n * vizPanel.visualizers[0].registerToolbarItem(\"my-toolbar-dropdown\", () => {\n * return DocumentHelper.createSelector(\n * // Menu items\n * [\n * { value: 1, text: \"One\" },\n * { value: 2, text: \"Two\" },\n * { value: 3, text: \"Three\" }\n * ],\n * // A function that specifies initial selection\n * (option) => false,\n * // An event handler that is executed when selection is changed\n * (e) => {\n * alert(e.target.value);\n * }\n * );\n * });\n * ```\n * @param name A custom name for the toolbar item.\n * @param creator A function that accepts the toolbar and should return an `HTMLElement` with the toolbar item.\n * @see unregisterToolbarItem\n */\n public registerToolbarItem(\n name: string,\n creator: (toolbar?: HTMLDivElement) => HTMLElement,\n order = 100\n ): void {\n this.toolbarItemCreators[name] = { creator, order };\n }\n\n /**\n *\n * Unregisters a function used to create a toolbar item. Allows you to remove a toolbar item.\n * @param name A toolbar item name.\n * @returns A function previously used to [register](#registerToolbarItem) the removed toolbar item.\n * @see registerToolbarItem\n */\n public unregisterToolbarItem(\n name: string\n ): (toolbar?: HTMLDivElement) => HTMLElement {\n if(this.toolbarItemCreators[name] !== undefined) {\n const item = this.toolbarItemCreators[name];\n delete this.toolbarItemCreators[name];\n return item.creator;\n }\n return undefined;\n }\n\n /**\n * Returns the visualizer's title.\n */\n public get title(): string {\n return this.getTitle(this.question);\n }\n\n protected getTitle(question: Question): string {\n if(question === undefined) return \"\";\n return this.processText(question.locTitle?.renderedHtml ? question.locTitle.renderedHtml : question.title);\n }\n\n /**\n * Returns the visualizer's type.\n */\n public get type(): string {\n return this._type || \"visualizer\";\n }\n\n /**\n * @deprecated Use [`surveyData`](https://surveyjs.io/dashboard/documentation/api-reference/visualizationpanel#surveyData) instead.\n */\n protected get data() {\n return this.dataProvider.filteredData;\n }\n\n /**\n * Returns an array of survey results used to calculate values for visualization. If a user applies a filter, the array is also filtered.\n *\n * To get an array of calculated and visualized values, call the [`getCalculatedValues()`](https://surveyjs.io/dashboard/documentation/api-reference/visualizerbase#getCalculatedValues) method.\n */\n protected get surveyData() {\n return this.dataProvider.filteredData;\n }\n\n protected get dataProvider(): DataProvider {\n return this._dataProvider;\n }\n\n /**\n * Updates visualized data.\n * @param data A data array with survey results to be visualized.\n */\n updateData(data: Array<{ [index: string]: any }> | GetDataFn) {\n this.dataProvider.data = data;\n if (this.hasFooter) {\n this.footerVisualizer.updateData(data);\n }\n }\n\n onUpdate: () => void;\n\n invokeOnUpdate() {\n this.onUpdate && this.onUpdate();\n }\n\n /**\n * Deletes the visualizer and all its elements from the DOM.\n * @see clear\n */\n destroy() {\n if (!!this.renderResult) {\n this.clear();\n this.toolbarContainer = undefined;\n this.headerContainer = undefined;\n this.contentContainer = undefined;\n this.footerContainer = undefined;\n this.renderResult.innerHTML = \"\";\n this.renderResult = undefined;\n }\n if (!!this._footerVisualizer) {\n this._footerVisualizer.destroy();\n this._footerVisualizer.onUpdate = undefined;\n this._footerVisualizer = undefined;\n }\n }\n\n /**\n * Empties the toolbar, header, footer, and content containers.\n *\n * If you want to empty and delete the visualizer and all its elements from the DOM, call the [`destroy()`](https://surveyjs.io/dashboard/documentation/api-reference/visualizerbase#destroy) method instead.\n */\n public clear() {\n if (!!this.toolbarContainer) {\n this.destroyToolbar(this.toolbarContainer);\n }\n if (!!this.headerContainer) {\n this.destroyHeader(this.headerContainer);\n }\n if (!!this.contentContainer) {\n this.destroyContent(this.contentContainer);\n }\n if (!!this.footerContainer) {\n this.destroyFooter(this.footerContainer);\n }\n }\n\n protected createToolbarItems(toolbar: HTMLDivElement) {\n const toolbarItemCreators = this.getToolbarItemCreators();\n const sortedItems = Object.keys(toolbarItemCreators || {})\n .map(name => ({ name, ...toolbarItemCreators[name] }))\n .sort((a, b) => a.order - b.order);\n\n sortedItems.forEach((item) => {\n let toolbarItem = item.creator(toolbar);\n if (!!toolbarItem) {\n toolbar.appendChild(toolbarItem);\n }\n });\n }\n\n protected getCorrectAnswerText(): string {\n return !!this.question ? this.question.correctAnswer : \"\";\n }\n\n protected destroyToolbar(container: HTMLElement) {\n container.innerHTML = \"\";\n }\n\n protected renderToolbar(container: HTMLElement) {\n if (this.showToolbar) {\n const toolbar = <HTMLDivElement>(\n DocumentHelper.createElement(\"div\", \"sa-toolbar\")\n );\n this.createToolbarItems(toolbar);\n container.appendChild(toolbar);\n }\n }\n\n protected destroyHeader(container: HTMLElement) {\n if (!!this.options && typeof this.options.destroyHeader === \"function\") {\n this.options.destroyHeader(container, this);\n } else {\n container.innerHTML = \"\";\n }\n }\n\n protected destroyContent(container: HTMLElement) {\n if (!!this.options && typeof this.options.destroyContent === \"function\") {\n this.options.destroyContent(container, this);\n } else if (this._chartAdapter) {\n this._chartAdapter.destroy(<HTMLElement>container.children[0]);\n }\n container.innerHTML = \"\";\n }\n\n protected renderHeader(container: HTMLElement) {\n if (!!this.options && typeof this.options.renderHeader === \"function\") {\n this.options.renderHeader(container, this);\n } else {\n const correctAnswerElement = DocumentHelper.createElement(\n \"div\",\n \"sa-visualizer__correct-answer\"\n );\n correctAnswerElement.innerText = localization.getString(\"correctAnswer\") + this.getCorrectAnswerText();\n container.appendChild(correctAnswerElement);\n }\n }\n\n protected async renderContentAsync(container: HTMLElement): Promise<HTMLElement> {\n if(this._chartAdapter) {\n const chartNode: HTMLElement = DocumentHelper.createElement(\"div\");\n container.innerHTML = \"\";\n container.appendChild(chartNode);\n await this._chartAdapter.create(chartNode);\n } else {\n container.innerText = localization.getString(\"noVisualizerForQuestion\");\n }\n return container;\n }\n\n protected ensureQuestionIsReady(): Promise<void> {\n return new Promise<void>((resolve) => {\n if(this.question) {\n this.question.waitForQuestionIsReady().then(() => resolve());\n } else {\n resolve();\n }\n });\n }\n\n protected renderContent(container: HTMLElement): void {\n if (!!this.options && typeof this.options.renderContent === \"function\") {\n const rendered = this.options.renderContent(container, this);\n if(rendered !== false) {\n this.afterRender(container);\n }\n } else {\n if(this.loadingData) {\n this.renderLoadingIndicator(this.contentContainer);\n }\n this.ensureQuestionIsReady().then(() => this.renderContentAsync(container).then(el => this.afterRender(el)));\n }\n }\n\n protected destroyFooter(container: HTMLElement) {\n container.innerHTML = \"\";\n }\n\n public get isFooterCollapsed(): boolean {\n if(this._footerIsCollapsed === undefined) {\n this._footerIsCollapsed = VisualizerBase.otherCommentCollapsed;\n }\n return this._footerIsCollapsed;\n }\n public set isFooterCollapsed(newVal: boolean) {\n this._footerIsCollapsed = newVal;\n }\n\n protected renderFooter(container: HTMLElement) {\n container.innerHTML = \"\";\n if (this.hasFooter) {\n const footerTitleElement = DocumentHelper.createElement(\n \"h4\",\n \"sa-visualizer__footer-title\",\n { innerText: localization.getString(\"otherCommentTitle\") }\n );\n container.appendChild(footerTitleElement);\n\n const footerContentElement = DocumentHelper.createElement(\n \"div\",\n \"sa-visualizer__footer-content\"\n );\n footerContentElement.style.display = this.isFooterCollapsed ? \"none\" : \"block\";\n const visibilityButtonText = localization.getString(this.isFooterCollapsed ? \"showButton\" : \"hideButton\");\n\n const visibilityButton = DocumentHelper.createButton(() => {\n if (footerContentElement.style.display === \"none\") {\n footerContentElement.style.display = \"block\";\n visibilityButton.innerText = localization.getString(\"hideButton\");\n this._footerIsCollapsed = false;\n } else {\n footerContentElement.style.display = \"none\";\n visibilityButton.innerText = localization.getString(\"showButton\");\n this._footerIsCollapsed = true;\n }\n this.footerVisualizer.invokeOnUpdate();\n }, visibilityButtonText /*, \"sa-toolbar__button--right\"*/);\n container.appendChild(visibilityButton);\n\n container.appendChild(footerContentElement);\n\n this.footerVisualizer.render(footerContentElement);\n }\n }\n\n /**\n * Renders the visualizer in a specified container.\n * @param targetElement An `HTMLElement` or an `id` of a page element in which you want to render the visualizer.\n */\n render(targetElement: HTMLElement | string) {\n if (typeof targetElement === \"string\") {\n targetElement = document.getElementById(targetElement);\n }\n this.renderResult = targetElement;\n\n this.toolbarContainer = DocumentHelper.createElement(\n \"div\",\n \"sa-visualizer__toolbar\"\n );\n targetElement.appendChild(this.toolbarContainer);\n this.renderToolbar(this.toolbarContainer);\n\n if (this.hasHeader) {\n this.headerContainer = DocumentHelper.createElement(\n \"div\",\n \"sa-visualizer__header\"\n );\n targetElement.appendChild(this.headerContainer);\n this.renderHeader(this.headerContainer);\n }\n\n this.contentContainer = DocumentHelper.createElement(\n \"div\",\n \"sa-visualizer__content\"\n );\n targetElement.appendChild(this.contentContainer);\n this.renderContent(this.contentContainer);\n\n this.footerContainer = DocumentHelper.createElement(\n \"div\",\n \"sa-visualizer__footer\"\n );\n targetElement.appendChild(this.footerContainer);\n this.renderFooter(this.footerContainer);\n }\n\n public updateToolbar(): void {\n if (!!this.toolbarContainer) {\n PostponeHelper.postpone(() => {\n this.destroyToolbar(this.toolbarContainer);\n this.renderToolbar(this.toolbarContainer);\n });\n }\n }\n\n protected isSupportSoftUpdateContent(): boolean {\n return false;\n }\n\n protected softUpdateContent(): void {\n }\n\n protected hardUpdateContent(): void {\n this.destroyContent(this.contentContainer);\n this.renderContent(this.contentContainer);\n }\n\n public updateContent(): void {\n if(!this.isSupportSoftUpdateContent()) {\n this.hardUpdateContent();\n } else {\n this.softUpdateContent();\n }\n }\n\n /**\n * Re-renders the visualizer and its content.\n */\n public refresh(): void {\n if (!!this.headerContainer) {\n PostponeHelper.postpone(() => {\n this.destroyHeader(this.headerContainer);\n this.renderHeader(this.headerContainer);\n this.invokeOnUpdate();\n });\n }\n if (!!this.contentContainer) {\n PostponeHelper.postpone(() => {\n this.updateContent();\n this.invokeOnUpdate();\n });\n }\n if (!!this.footerContainer) {\n PostponeHelper.postpone(() => {\n this.destroyFooter(this.footerContainer);\n this.renderFooter(this.footerContainer);\n this.invokeOnUpdate();\n });\n }\n }\n\n protected processText(text: string): string {\n if (this.options.stripHtmlFromTitles !== false) {\n let originalText = text || \"\";\n let processedText = originalText.replace(/(<([^>]+)>)/gi, \"\");\n return processedText;\n }\n return text;\n }\n\n getRandomColor() {\n const colors = this.getColors();\n return colors[Math.floor(Math.random() * colors.length)];\n }\n\n private _backgroundColor = \"#f7f7f7\";\n\n get backgroundColor() { return this.getBackgroundColorCore(); }\n set backgroundColor(value) { this.setBackgroundColorCore(value); }\n\n protected getBackgroundColorCore() {\n return this._backgroundColor;\n }\n protected setBackgroundColorCore(color: string) {\n this._backgroundColor = color;\n if (this.footerVisualizer) this.footerVisualizer.backgroundColor = color;\n }\n\n static customColors: string[] = [];\n private static colors = [\n \"#86e1fb\",\n \"#3999fb\",\n \"#ff6771\",\n \"#1eb496\",\n \"#ffc152\",\n \"#aba1ff\",\n \"#7d8da5\",\n \"#4ec46c\",\n \"#cf37a6\",\n \"#4e6198\",\n ];\n\n getColors(count = 10) {\n const colors =\n Array.isArray(VisualizerBase.customColors) &&\n VisualizerBase.customColors.length > 0\n ? VisualizerBase.customColors\n : VisualizerBase.colors;\n\n let manyColors: any = [];\n\n for (let index = 0; index < count; index++) {\n manyColors = manyColors.concat(colors);\n }\n\n return manyColors;\n }\n\n /**\n * Gets or sets the visibility of the visualizer's toolbar.\n *\n * Default value: `true`\n */\n get showToolbar() {\n return this._showToolbar;\n }\n set showToolbar(newValue: boolean) {\n if (newValue != this._showToolbar) {\n this._showToolbar = newValue;\n if (!!this.toolbarContainer) {\n this.destroyToolbar(this.toolbarContainer);\n this.renderToolbar(this.toolbarContainer);\n }\n }\n }\n\n /**\n * @deprecated Use [`getCalculatedValues()`](https://surveyjs.io/dashboard/documentation/api-reference/visualizationpanel#getCalculatedValues) instead.\n */\n getData(): any {\n return this.getCalculatedValuesCore();\n }\n\n private _calculationsCache: Array<any> = undefined;\n\n protected getCalculatedValuesCore(): Array<any> {\n if (!!this._getDataCore) {\n return this._getDataCore(this);\n }\n\n return defaultStatisticsCalculator(this.surveyData, this);\n }\n\n protected loadingData: boolean = false;\n\n public renderLoadingIndicator(contentContainer: HTMLElement): void {\n contentContainer.appendChild(createLoadingIndicator());\n }\n\n public convertFromExternalData(externalCalculatedData: any): any[] {\n return externalCalculatedData;\n }\n\n /**\n * Returns an array of calculated and visualized values. If a user applies a filter, the array is also filtered.\n *\n * To get an array of source survey results, use the [`surveyData`](https://surveyjs.io/dashboard/documentation/api-reference/visualizerbase#surveyData) property.\n */\n public getCalculatedValues(): Promise<Array<Object>> {\n return new Promise<Array<Object>>((resolve, reject) => {\n if(this._calculationsCache !== undefined) {\n resolve(this._calculationsCache);\n }\n if(!!this.dataProvider.dataFn) {\n this.loadingData = true;\n const dataLoadingPromise = this.dataProvider.dataFn({\n visualizer: this,\n filter: this.dataProvider.getFilters(),\n callback: (loadedData: { data: Array<Object>, error?: any }) => {\n this.loadingData = false;\n if(!loadedData.error && Array.isArray(loadedData.data)) {\n this._calculationsCache = this.convertFromExternalData(loadedData.data);\n resolve(this._calculationsCache);\n } else {\n reject();\n }\n }\n });\n if(dataLoadingPromise) {\n dataLoadingPromise\n .then(calculatedData => {\n this.loadingData = false;\n this._calculationsCache = this.convertFromExternalData(calculatedData);\n resolve(this._calculationsCache);\n })\n .catch(() => {\n this.loadingData = false;\n reject();\n });\n }\n } else {\n this._calculationsCache = this.getCalculatedValuesCore();\n resolve(this._calculationsCache);\n }\n });\n }\n\n protected _settingState = false;\n\n /**\n * Returns an object with properties that describe a current visualizer state. The properties are different for each individual visualizer.\n *\n * > This method is overriden in classes descendant from `VisualizerBase`.\n * @see setState\n * @see resetState\n * @see onStateChanged\n */\n public getState(): any {\n return {};\n }\n /**\n * Sets the visualizer's state.\n *\n * [View Demo](https://surveyjs.io/dashboard/examples/save-dashboard-state-to-local-storage/ (linkStyle))\n *\n * > This method is overriden in classes descendant from `VisualizerBase`.\n * @see getState\n * @see resetState\n * @see onStateChanged\n */\n public setState(state: any): void {\n }\n /**\n * Resets the visualizer's state.\n *\n * > This method is overriden in classes descendant from `VisualizerBase`.\n * @see getState\n * @see setState\n * @see onStateChanged\n */\n public resetState(): void {\n }\n\n /**\n * Gets or sets the current locale.\n *\n * If you want to inherit the locale from a visualized survey, assign a [`SurveyModel`](https://surveyjs.io/form-library/documentation/api-reference/survey-data-model) instance to the [`survey`](https://surveyjs.io/dashboard/documentation/api-reference/ivisualizationpaneloptions#survey) property of the `IVisualizationPanelOptions` object in the [`VisualizationPanel`](https://surveyjs.io/dashboard/documentation/api-reference/visualizationpanel) constructor.\n *\n * If the survey is [translated into more than one language](https://surveyjs.io/form-library/examples/survey-localization/), the toolbar displays a language selection drop-down menu.\n *\n * [View Demo](https://surveyjs.io/dashboard/examples/localize-survey-data-dashboard-ui/ (linkStyle))\n * @see onLocaleChanged\n */\n public get locale(): string {\n var survey = this.options.survey;\n if (!!survey) {\n return survey.locale;\n }\n return localization.currentLocale;\n }\n\n public set locale(newLocale: string) {\n this.setLocale(newLocale);\n this.onLocaleChanged.fire(this, { locale: newLocale });\n this.refresh();\n }\n\n protected setLocale(newLocale: string): void {\n localization.currentLocale = newLocale;\n var survey = this.options.survey;\n if (!!survey && survey.locale !== newLocale) {\n survey.locale = newLocale;\n }\n }\n\n}\n\nVisualizationManager.defaultVisualizer = VisualizerBase;","import { Question, QuestionCompositeModel, QuestionCustomModel } from \"survey-core\";\nimport { VisualizerBase } from \"./visualizerBase\";\nimport { VisualizationManager } from \"./visualizationManager\";\n\n/**\n * An object that allows you to create individual visualizers without creating a [visualization panel](https://surveyjs.io/dashboard/documentation/api-reference/visualizationpanel).\n */\nexport class VisualizerFactory {\n /**\n * Creates a visualizer for a single question.\n *\n * ```js\n * import { VisualizerFactory } from \"survey-analytics\";\n *\n * const visualizer = new VisualizerFactory.createVisualizer(\n * question,\n * data,\n * options\n * );\n *\n * visualizer.render(\"containerId\")\n * ```\n *\n * If a question has more than one [registered](https://surveyjs.io/dashboard/documentation/api-reference/visualizationmanager#registerVisualizer) visualizer, users can switch between them using a drop-down menu.\n * @param question A question for which to create a visualizer.\n * @param data A data array with survey results to be visualized.\n * @param options An object with any custom properties you need within the visualizer.\n */\n public static createVisualizer(\n question: Question,\n data: Array<{ [index: string]: any }>,\n options?: { [index: string]: any }\n ): VisualizerBase {\n let type = question.getType();\n let creators = [];\n let questionForCreator: Question | Question[] = question;\n let optionsForCreator = Object.assign({}, options);\n\n if (type === \"text\" && (<any>question).inputType) {\n creators = VisualizationManager.getVisualizersByType((<any>question).inputType, type);\n } else {\n let fallbackType = undefined;\n if(question instanceof QuestionCustomModel) {\n fallbackType = question.getDynamicType();\n // questionForCreator = question.contentQuestion;\n } else if(question instanceof QuestionCompositeModel) {\n fallbackType = \"composite\";\n }\n creators = VisualizationManager.getVisualizersByType(type, fallbackType);\n }\n\n var visualizers = creators.map(\n (creator) => new creator(questionForCreator, data, optionsForCreator)\n );\n if (visualizers.length > 1) {\n const alternativesVisualizerConstructor = VisualizationManager.getAltVisualizerSelector();\n let visualizer = new alternativesVisualizerConstructor(\n visualizers,\n questionForCreator,\n data,\n optionsForCreator\n );\n return visualizer;\n }\n return visualizers[0];\n }\n}\n","export var stopWords = [\n \"de\",\n \"en\",\n \"van\",\n \"ik\",\n \"te\",\n \"dat\",\n \"die\",\n \"in\",\n \"een\",\n \"hij\",\n \"het\",\n \"niet\",\n \"zijn\",\n \"is\",\n \"was\",\n \"op\",\n \"aan\",\n \"met\",\n \"als\",\n \"voor\",\n \"had\",\n \"er\",\n \"maar\",\n \"om\",\n \"hem\",\n \"dan\",\n \"zou\",\n \"of\",\n \"wat\",\n \"mijn\",\n \"men\",\n \"dit\",\n \"zo\",\n \"door\",\n \"over\",\n \"ze\",\n \"zich\",\n \"bij\",\n \"ook\",\n \"tot\",\n \"je\",\n \"mij\",\n \"uit\",\n \"der\",\n \"daar\",\n \"haar\",\n \"naar\",\n \"heb\",\n \"hoe\",\n \"heeft\",\n \"hebben\",\n \"deze\",\n \"u\",\n \"want\",\n \"nog\",\n \"zal\",\n \"me\",\n \"zij\",\n \"nu\",\n \"ge\",\n \"geen\",\n \"omdat\",\n \"iets\",\n \"worden\",\n \"toch\",\n \"al\",\n \"waren\",\n \"veel\",\n \"meer\",\n \"doen\",\n \"toen\",\n \"moet\",\n \"ben\",\n \"zonder\",\n \"kan\",\n \"hun\",\n \"dus\",\n \"alles\",\n \"onder\",\n \"ja\",\n \"eens\",\n \"hier\",\n \"wie\",\n \"werd\",\n \"altijd\",\n \"doch\",\n \"wordt\",\n \"wezen\",\n \"kunnen\",\n \"ons\",\n \"zelf\",\n \"tegen\",\n \"na\",\n \"reeds\",\n \"wil\",\n \"kon\",\n \"niets\",\n \"uw\",\n \"iemand\",\n \"geweest\",\n \"andere\"\n];\n","export var stopWords = [\n \"...\",\n \"a\",\n \"about\",\n \"above\",\n \"across\",\n \"after\",\n \"again\",\n \"against\",\n \"all\",\n \"almost\",\n \"alone\",\n \"along\",\n \"already\",\n \"also\",\n \"although\",\n \"always\",\n \"among\",\n \"an\",\n \"and\",\n \"another\",\n \"any\",\n \"anybody\",\n \"anyone\",\n \"anything\",\n \"anywhere\",\n \"are\",\n \"area\",\n \"areas\",\n \"around\",\n \"as\",\n \"ask\",\n \"asked\",\n \"asking\",\n \"asks\",\n \"at\",\n \"away\",\n \"b\",\n \"back\",\n \"backed\",\n \"backing\",\n \"backs\",\n \"be\",\n \"became\",\n \"because\",\n \"become\",\n \"becomes\",\n \"been\",\n \"before\",\n \"began\",\n \"behind\",\n \"being\",\n \"beings\",\n \"best\",\n \"better\",\n \"between\",\n \"big\",\n \"both\",\n \"but\",\n \"by\",\n \"c\",\n \"came\",\n \"can\",\n \"cannot\",\n \"case\",\n \"cases\",\n \"certain\",\n \"certainly\",\n \"clear\",\n \"clearly\",\n \"come\",\n \"could\",\n \"d\",\n \"did\",\n \"differ\",\n \"different\",\n \"differently\",\n \"do\",\n \"does\",\n \"done\",\n \"down\",\n \"down\",\n \"downed\",\n \"downing\",\n \"downs\",\n \"during\",\n \"e\",\n \"each\",\n \"early\",\n \"either\",\n \"end\",\n \"ended\",\n \"ending\",\n \"ends\",\n \"enough\",\n \"even\",\n \"evenly\",\n \"ever\",\n \"every\",\n \"everybody\",\n \"everyone\",\n \"everything\",\n \"everywhere\",\n \"f\",\n \"face\",\n \"faces\",\n \"fact\",\n \"facts\",\n \"far\",\n \"felt\",\n \"few\",\n \"find\",\n \"finds\",\n \"first\",\n \"for\",\n \"four\",\n \"from\",\n \"full\",\n \"fully\",\n \"further\",\n \"furthered\",\n \"furthering\",\n \"furthers\",\n \"g\",\n \"gave\",\n \"general\",\n \"generally\",\n \"get\",\n \"gets\",\n \"give\",\n \"given\",\n \"gives\",\n \"go\",\n \"going\",\n \"good\",\n \"goods\",\n \"got\",\n \"great\",\n \"greater\",\n \"greatest\",\n \"group\",\n \"grouped\",\n \"grouping\",\n \"groups\",\n \"h\",\n \"had\",\n \"has\",\n \"have\",\n \"having\",\n \"he\",\n \"her\",\n \"here\",\n \"herself\",\n \"high\",\n \"high\",\n \"high\",\n \"higher\",\n \"highest\",\n \"him\",\n \"himself\",\n \"his\",\n \"how\",\n \"however\",\n \"i\",\n \"if\",\n \"important\",\n \"in\",\n \"interest\",\n \"interested\",\n \"interesting\",\n \"interests\",\n \"into\",\n \"is\",\n \"it\",\n \"its\",\n \"itself\",\n \"j\",\n \"just\",\n \"k\",\n \"keep\",\n \"keeps\",\n \"kind\",\n \"knew\",\n \"know\",\n \"known\",\n \"knows\",\n \"l\",\n \"large\",\n \"largely\",\n \"last\",\n \"later\",\n \"latest\",\n \"least\",\n \"less\",\n \"let\",\n \"lets\",\n \"like\",\n \"likely\",\n \"long\",\n \"longer\",\n \"longest\",\n \"m\",\n \"made\",\n \"make\",\n \"making\",\n \"man\",\n \"many\",\n \"may\",\n \"me\",\n \"member\",\n \"members\",\n \"men\",\n \"might\",\n \"more\",\n \"most\",\n \"mostly\",\n \"mr\",\n \"mrs\",\n \"much\",\n \"must\",\n \"my\",\n \"myself\",\n \"n\",\n \"necessary\",\n \"need\",\n \"needed\",\n \"needing\",\n \"needs\",\n \"never\",\n \"new\",\n \"new\",\n \"newer\",\n \"newest\",\n \"next\",\n \"no\",\n \"nobody\",\n \"non\",\n \"noone\",\n \"not\",\n \"nothing\",\n \"now\",\n \"nowhere\",\n \"number\",\n \"numbers\",\n \"o\",\n \"of\",\n \"off\",\n \"often\",\n \"old\",\n \"older\",\n \"oldest\",\n \"on\",\n \"once\",\n \"one\",\n \"only\",\n \"open\",\n \"opened\",\n \"opening\",\n \"opens\",\n \"or\",\n \"order\",\n \"ordered\",\n \"ordering\",\n \"orders\",\n \"other\",\n \"others\",\n \"our\",\n \"out\",\n \"over\",\n \"p\",\n \"part\",\n \"parted\",\n \"parting\",\n \"parts\",\n \"per\",\n \"perhaps\",\n \"place\",\n \"places\",\n \"point\",\n \"pointed\",\n \"pointing\",\n \"points\",\n \"possible\",\n \"present\",\n \"presented\",\n \"presenting\",\n \"presents\",\n \"problem\",\n \"problems\",\n \"put\",\n \"puts\",\n \"q\",\n \"quite\",\n \"r\",\n \"rather\",\n \"really\",\n \"right\",\n \"right\",\n \"room\",\n \"rooms\",\n \"s\",\n \"said\",\n \"same\",\n \"saw\",\n \"say\",\n \"says\",\n \"second\",\n \"seconds\",\n \"see\",\n \"seem\",\n \"seemed\",\n \"seeming\",\n \"seems\",\n \"sees\",\n \"several\",\n \"shall\",\n \"she\",\n \"should\",\n \"show\",\n \"showed\",\n \"showing\",\n \"shows\",\n \"side\",\n \"sides\",\n \"since\",\n \"small\",\n \"smaller\",\n \"smallest\",\n \"so\",\n \"some\",\n \"somebody\",\n \"someone\",\n \"something\",\n \"somewhere\",\n \"state\",\n \"states\",\n \"still\",\n \"still\",\n \"such\",\n \"sure\",\n \"t\",\n \"take\",\n \"taken\",\n \"than\",\n \"that\",\n \"the\",\n \"their\",\n \"them\",\n \"then\",\n \"there\",\n \"therefore\",\n \"these\",\n \"they\",\n \"thing\",\n \"things\",\n \"think\",\n \"thinks\",\n \"this\",\n \"those\",\n \"though\",\n \"thought\",\n \"thoughts\",\n \"three\",\n \"through\",\n \"thus\",\n \"to\",\n \"today\",\n \"together\",\n \"too\",\n \"took\",\n \"toward\",\n \"turn\",\n \"turned\",\n \"turning\",\n \"turns\",\n \"two\",\n \"u\",\n \"under\",\n \"until\",\n \"up\",\n \"upon\",\n \"us\",\n \"use\",\n \"used\",\n \"uses\",\n \"v\",\n \"very\",\n \"w\",\n \"want\",\n \"wanted\",\n \"wanting\",\n \"wants\",\n \"was\",\n \"way\",\n \"ways\",\n \"we\",\n \"well\",\n \"wells\",\n \"went\",\n \"were\",\n \"what\",\n \"when\",\n \"where\",\n \"whether\",\n \"which\",\n \"while\",\n \"who\",\n \"whole\",\n \"whose\",\n \"why\",\n \"will\",\n \"with\",\n \"within\",\n \"without\",\n \"work\",\n \"worked\",\n \"working\",\n \"works\",\n \"would\",\n \"x\",\n \"y\",\n \"year\",\n \"years\",\n \"yet\",\n \"you\",\n \"young\",\n \"younger\",\n \"youngest\",\n \"your\",\n \"yours\",\n \"z\"\n];\n","import { stopWords } from \"./english\";\nimport { stopWords as noStopWords } from \"./norwegian\";\nimport { stopWords as nlStopWords } from \"./dutch\";\nimport { stopWords as esStopWords } from \"./spanish\";\n\nvar stopWordsDictionary: { [index: string]: Array<string> } = {};\nstopWordsDictionary[\"en\"] = stopWords;\nstopWordsDictionary[\"no\"] = noStopWords;\nstopWordsDictionary[\"nl\"] = nlStopWords;\nstopWordsDictionary[\"es\"] = esStopWords;\n\nexport var textHelper = {\n getStopWords: (locale: string = \"\") => {\n return stopWordsDictionary[locale || \"en\"] || [];\n },\n};\n","export var stopWords = [\n \"...\",\n \"alle\",\n \"andre\",\n \"arbeid\",\n \"at\",\n \"av\",\n \"bare\",\n \"begge\",\n \"ble\",\n \"blei\",\n \"bli\",\n \"blir\",\n \"blitt\",\n \"bort\",\n \"bruke\",\n \"både\",\n \"båe\",\n \"da\",\n \"de\",\n \"deg\",\n \"dei\",\n \"deim\",\n \"deira\",\n \"deires\",\n \"dem\",\n \"den\",\n \"denne\",\n \"der\",\n \"dere\",\n \"deres\",\n \"det\",\n \"dette\",\n \"di\",\n \"din\",\n \"disse\",\n \"ditt\",\n \"du\",\n \"dykk\",\n \"dykkar\",\n \"då\",\n \"eg\",\n \"ein\",\n \"eit\",\n \"eitt\",\n \"eller\",\n \"elles\",\n \"en\",\n \"ene\",\n \"eneste\",\n \"enhver\",\n \"enn\",\n \"er\",\n \"et\",\n \"ett\",\n \"etter\",\n \"folk\",\n \"for\",\n \"fordi\",\n \"forsøke\",\n \"fra\",\n \"få\",\n \"før\",\n \"før\",\n \"først\",\n \"gjorde\",\n \"gjøre\",\n \"god\",\n \"gå\",\n \"ha\",\n \"hadde\",\n \"han\",\n \"hans\",\n \"har\",\n \"hennar\",\n \"henne\",\n \"hennes\",\n \"her\",\n \"hjå\",\n \"ho\",\n \"hoe\",\n \"honom\",\n \"hoss\",\n \"hossen\",\n \"hun\",\n \"hva\",\n \"hvem\",\n \"hver\",\n \"hvilke\",\n \"hvilken\",\n \"hvis\",\n \"hvor\",\n \"hvordan\",\n \"hvorfor\",\n \"i\",\n \"ikke\",\n \"ikkje\",\n \"ingen\",\n \"ingi\",\n \"inkje\",\n \"inn\",\n \"innen\",\n \"inni\",\n \"ja\",\n \"jeg\",\n \"kan\",\n \"kom\",\n \"korleis\",\n \"korso\",\n \"kun\",\n \"kunne\",\n \"kva\",\n \"kvar\",\n \"kvarhelst\",\n \"kven\",\n \"kvi\",\n \"kvifor\",\n \"lage\",\n \"lang\",\n \"lik\",\n \"like\",\n \"makt\",\n \"man\",\n \"mange\",\n \"me\",\n \"med\",\n \"medan\",\n \"meg\",\n \"meget\",\n \"mellom\",\n \"men\",\n \"mens\",\n \"mer\",\n \"mest\",\n \"mi\",\n \"min\",\n \"mine\",\n \"mitt\",\n \"mot\",\n \"mye\",\n \"mykje\",\n \"må\",\n \"måte\",\n \"navn\",\n \"ned\",\n \"nei\",\n \"no\",\n \"noe\",\n \"noen\",\n \"noka\",\n \"noko\",\n \"nokon\",\n \"nokor\",\n \"nokre\",\n \"ny\",\n \"nå\",\n \"når\",\n \"og\",\n \"også\",\n \"om\",\n \"opp\",\n \"oss\",\n \"over\",\n \"part\",\n \"punkt\",\n \"på\",\n \"samme\",\n \"seg\",\n \"selv\",\n \"si\",\n \"sia\",\n \"sidan\",\n \"siden\",\n \"sin\",\n \"sine\",\n \"sist\",\n \"sitt\",\n \"sjøl\",\n \"skal\",\n \"skulle\",\n \"slik\",\n \"slutt\",\n \"so\",\n \"som\",\n \"somme\",\n \"somt\",\n \"start\",\n \"stille\",\n \"så\",\n \"sånn\",\n \"tid\",\n \"til\",\n \"tilbake\",\n \"tilstand\",\n \"um\",\n \"under\",\n \"upp\",\n \"ut\",\n \"uten\",\n \"var\",\n \"vart\",\n \"varte\",\n \"ved\",\n \"verdi\",\n \"vere\",\n \"verte\",\n \"vi\",\n \"vil\",\n \"ville\",\n \"vite\",\n \"vore\",\n \"vors\",\n \"vort\",\n \"vår\",\n \"være\",\n \"vært\",\n \"vøre\",\n \"vørt\",\n \"æ\",\n \"å\"\n];\n","export var stopWords = [\n \"...\",\n \"a\",\n \"actualmente\",\n \"adelante\",\n \"además\",\n \"afirmó\",\n \"agregó\",\n \"ahora\",\n \"ahí\",\n \"al\",\n \"algo\",\n \"alguna\",\n \"algunas\",\n \"alguno\",\n \"algunos\",\n \"algún\",\n \"alrededor\",\n \"ambos\",\n \"ampleamos\",\n \"ante\",\n \"anterior\",\n \"antes\",\n \"apenas\",\n \"aproximadamente\",\n \"aquel\",\n \"aquellas\",\n \"aquellos\",\n \"aqui\",\n \"aquí\",\n \"arriba\",\n \"aseguró\",\n \"así\",\n \"atras\",\n \"aunque\",\n \"ayer\",\n \"añadió\",\n \"aún\",\n \"bajo\",\n \"bastante\",\n \"bien\",\n \"buen\",\n \"buena\",\n \"buenas\",\n \"bueno\",\n \"buenos\",\n \"cada\",\n \"casi\",\n \"cerca\",\n \"cierta\",\n \"ciertas\",\n \"cierto\",\n \"ciertos\",\n \"cinco\",\n \"comentó\",\n \"como\",\n \"con\",\n \"conocer\",\n \"conseguimos\",\n \"conseguir\",\n \"considera\",\n \"consideró\",\n \"consigo\",\n \"consigue\",\n \"consiguen\",\n \"consigues\",\n \"contra\",\n \"cosas\",\n \"creo\",\n \"cual\",\n \"cuales\",\n \"cualquier\",\n \"cuando\",\n \"cuanto\",\n \"cuatro\",\n \"cuenta\",\n \"cómo\",\n \"da\",\n \"dado\",\n \"dan\",\n \"dar\",\n \"de\",\n \"debe\",\n \"deben\",\n \"debido\",\n \"decir\",\n \"dejó\",\n \"del\",\n \"demás\",\n \"dentro\",\n \"desde\",\n \"después\",\n \"dice\",\n \"dicen\",\n \"dicho\",\n \"dieron\",\n \"diferente\",\n \"diferentes\",\n \"dijeron\",\n \"dijo\",\n \"dio\",\n \"donde\",\n \"dos\",\n \"durante\",\n \"e\",\n \"ejemplo\",\n \"el\",\n \"ella\",\n \"ellas\",\n \"ello\",\n \"ellos\",\n \"embargo\",\n \"empleais\",\n \"emplean\",\n \"emplear\",\n \"empleas\",\n \"empleo\",\n \"en\",\n \"encima\",\n \"encuentra\",\n \"entonces\",\n \"entre\",\n \"era\",\n \"erais\",\n \"eramos\",\n \"eran\",\n \"eras\",\n \"eres\",\n \"es\",\n \"esa\",\n \"esas\",\n \"ese\",\n \"eso\",\n \"esos\",\n \"esta\",\n \"estaba\",\n \"estabais\",\n \"estaban\",\n \"estabas\",\n \"estad\",\n \"estada\",\n \"estadas\",\n \"estado\",\n \"estados\",\n \"estais\",\n \"estamos\",\n \"estan\",\n \"estando\",\n \"estar\",\n \"estaremos\",\n \"estará\",\n \"estarán\",\n \"estarás\",\n \"estaré\",\n \"estaréis\",\n \"estaría\",\n \"estaríais\",\n \"estaríamos\",\n \"estarían\",\n \"estarías\",\n \"estas\",\n \"este\",\n \"estemos\",\n \"esto\",\n \"estos\",\n \"estoy\",\n \"estuve\",\n \"estuviera\",\n \"estuvierais\",\n \"estuvieran\",\n \"estuvieras\",\n \"estuvieron\",\n \"estuviese\",\n \"estuvieseis\",\n \"estuviesen\",\n \"estuvieses\",\n \"estuvimos\",\n \"estuviste\",\n \"estuvisteis\",\n \"estuviéramos\",\n \"estuviésemos\",\n \"estuvo\",\n \"está\",\n \"estábamos\",\n \"estáis\",\n \"están\",\n \"estás\",\n \"esté\",\n \"estéis\",\n \"estén\",\n \"estés\",\n \"ex\",\n \"existe\",\n \"existen\",\n \"explicó\",\n \"expresó\",\n \"fin\",\n \"fue\",\n \"fuera\",\n \"fuerais\",\n \"fueran\",\n \"fueras\",\n \"fueron\",\n \"fuese\",\n \"fueseis\",\n \"fuesen\",\n \"fueses\",\n \"fui\",\n \"fuimos\",\n \"fuiste\",\n \"fuisteis\",\n \"fuéramos\",\n \"fuésemos\",\n \"gran\",\n \"grandes\",\n \"gueno\",\n \"ha\",\n \"haber\",\n \"habida\",\n \"habidas\",\n \"habido\",\n \"habidos\",\n \"habiendo\",\n \"habremos\",\n \"habrá\",\n \"habrán\",\n \"habrás\",\n \"habré\",\n \"habréis\",\n \"habría\",\n \"habríais\",\n \"habríamos\",\n \"habrían\",\n \"habrías\",\n \"habéis\",\n \"había\",\n \"habíais\",\n \"habíamos\",\n \"habían\",\n \"habías\",\n \"hace\",\n \"haceis\",\n \"hacemos\",\n \"hacen\",\n \"hacer\",\n \"hacerlo\",\n \"haces\",\n \"hacia\",\n \"haciendo\",\n \"hago\",\n \"han\",\n \"has\",\n \"hasta\",\n \"hay\",\n \"haya\",\n \"hayamos\",\n \"hayan\",\n \"hayas\",\n \"hayáis\",\n \"he\",\n \"hecho\",\n \"hemos\",\n \"hicieron\",\n \"hizo\",\n \"hoy\",\n \"hube\",\n \"hubiera\",\n \"hubierais\",\n \"hubieran\",\n \"hubieras\",\n \"hubieron\",\n \"hubiese\",\n \"hubieseis\",\n \"hubiesen\",\n \"hubieses\",\n \"hubimos\",\n \"hubiste\",\n \"hubisteis\",\n \"hubiéramos\",\n \"hubiésemos\",\n \"hubo\",\n \"igual\",\n \"incluso\",\n \"indicó\",\n \"informó\",\n \"intenta\",\n \"intentais\",\n \"intentamos\",\n \"intentan\",\n \"intentar\",\n \"intentas\",\n \"intento\",\n \"ir\",\n \"junto\",\n \"la\",\n \"lado\",\n \"largo\",\n \"las\",\n \"le\",\n \"les\",\n \"llegó\",\n \"lleva\",\n \"llevar\",\n \"lo\",\n \"los\",\n \"luego\",\n \"lugar\",\n \"manera\",\n \"manifestó\",\n \"mayor\",\n \"me\",\n \"mediante\",\n \"mejor\",\n \"mencionó\",\n \"menos\",\n \"mi\",\n \"mientras\",\n \"mio\",\n \"mis\",\n \"misma\",\n \"mismas\",\n \"mismo\",\n \"mismos\",\n \"modo\",\n \"momento\",\n \"mucha\",\n \"muchas\",\n \"mucho\",\n \"muchos\",\n \"muy\",\n \"más\",\n \"mí\",\n \"mía\",\n \"mías\",\n \"mío\",\n \"míos\",\n \"nada\",\n \"nadie\",\n \"ni\",\n \"ninguna\",\n \"ningunas\",\n \"ninguno\",\n \"ningunos\",\n \"ningún\",\n \"no\",\n \"nos\",\n \"nosotras\",\n \"nosotros\",\n \"nuestra\",\n \"nuestras\",\n \"nuestro\",\n \"nuestros\",\n \"nueva\",\n \"nuevas\",\n \"nuevo\",\n \"nuevos\",\n \"nunca\",\n \"o\",\n \"ocho\",\n \"os\",\n \"otra\",\n \"otras\",\n \"otro\",\n \"otros\",\n \"para\",\n \"parece\",\n \"parte\",\n \"partir\",\n \"pasada\",\n \"pasado\",\n \"pero\",\n \"pesar\",\n \"poca\",\n \"pocas\",\n \"poco\",\n \"pocos\",\n \"podeis\",\n \"podemos\",\n \"poder\",\n \"podria\",\n \"podriais\",\n \"podriamos\",\n \"podrian\",\n \"podrias\",\n \"podrá\",\n \"podrán\",\n \"podría\",\n \"podrían\",\n \"poner\",\n \"por\",\n \"por qué\",\n \"porque\",\n \"posible\",\n \"primer\",\n \"primera\",\n \"primero\",\n \"primeros\",\n \"principalmente\",\n \"propia\",\n \"propias\",\n \"propio\",\n \"propios\",\n \"próximo\",\n \"próximos\",\n \"pudo\",\n \"pueda\",\n \"puede\",\n \"pueden\",\n \"puedo\",\n \"pues\",\n \"que\",\n \"quedó\",\n \"queremos\",\n \"quien\",\n \"quienes\",\n \"quiere\",\n \"quién\",\n \"qué\",\n \"realizado\",\n \"realizar\",\n \"realizó\",\n \"respecto\",\n \"sabe\",\n \"sabeis\",\n \"sabemos\",\n \"saben\",\n \"saber\",\n \"sabes\",\n \"se\",\n \"sea\",\n \"seamos\",\n \"sean\",\n \"seas\",\n \"segunda\",\n \"segundo\",\n \"según\",\n \"seis\",\n \"ser\",\n \"seremos\",\n \"será\",\n \"serán\",\n \"serás\",\n \"seré\",\n \"seréis\",\n \"sería\",\n \"seríais\",\n \"seríamos\",\n \"serían\",\n \"serías\",\n \"seáis\",\n \"señaló\",\n \"si\",\n \"sido\",\n \"siempre\",\n \"siendo\",\n \"siete\",\n \"sigue\",\n \"siguiente\",\n \"sin\",\n \"sino\",\n \"sobre\",\n \"sois\",\n \"sola\",\n \"solamente\",\n \"solas\",\n \"solo\",\n \"solos\",\n \"somos\",\n \"son\",\n \"soy\",\n \"su\",\n \"sus\",\n \"suya\",\n \"suyas\",\n \"suyo\",\n \"suyos\",\n \"sí\",\n \"sólo\",\n \"tal\",\n \"también\",\n \"tampoco\",\n \"tan\",\n \"tanto\",\n \"te\",\n \"tendremos\",\n \"tendrá\",\n \"tendrán\",\n \"tendrás\",\n \"tendré\",\n \"tendréis\",\n \"tendría\",\n \"tendríais\",\n \"tendríamos\",\n \"tendrían\",\n \"tendrías\",\n \"tened\",\n \"teneis\",\n \"tenemos\",\n \"tener\",\n \"tenga\",\n \"tengamos\",\n \"tengan\",\n \"tengas\",\n \"tengo\",\n \"tengáis\",\n \"tenida\",\n \"tenidas\",\n \"tenido\",\n \"tenidos\",\n \"teniendo\",\n \"tenéis\",\n \"tenía\",\n \"teníais\",\n \"teníamos\",\n \"tenían\",\n \"tenías\",\n \"tercera\",\n \"ti\",\n \"tiempo\",\n \"tiene\",\n \"tienen\",\n \"tienes\",\n \"toda\",\n \"todas\",\n \"todavía\",\n \"todo\",\n \"todos\",\n \"total\",\n \"trabaja\",\n \"trabajais\",\n \"trabajamos\",\n \"trabajan\",\n \"trabajar\",\n \"trabajas\",\n \"trabajo\",\n \"tras\",\n \"trata\",\n \"través\",\n \"tres\",\n \"tu\",\n \"tus\",\n \"tuve\",\n \"tuviera\",\n \"tuvierais\",\n \"tuvieran\",\n \"tuvieras\",\n \"tuvieron\",\n \"tuviese\",\n \"tuvieseis\",\n \"tuviesen\",\n \"tuvieses\",\n \"tuvimos\",\n \"tuviste\",\n \"tuvisteis\",\n \"tuviéramos\",\n \"tuviésemos\",\n \"tuvo\",\n \"tuya\",\n \"tuyas\",\n \"tuyo\",\n \"tuyos\",\n \"tú\",\n \"ultimo\",\n \"un\",\n \"una\",\n \"unas\",\n \"uno\",\n \"unos\",\n \"usa\",\n \"usais\",\n \"usamos\",\n \"usan\",\n \"usar\",\n \"usas\",\n \"uso\",\n \"usted\",\n \"va\",\n \"vais\",\n \"valor\",\n \"vamos\",\n \"van\",\n \"varias\",\n \"varios\",\n \"vaya\",\n \"veces\",\n \"ver\",\n \"verdad\",\n \"verdadera\",\n \"verdadero\",\n \"vez\",\n \"vosotras\",\n \"vosotros\",\n \"voy\",\n \"vuestra\",\n \"vuestras\",\n \"vuestro\",\n \"vuestros\",\n \"y\",\n \"ya\",\n \"yo\",\n \"él\",\n \"éramos\",\n \"ésta\",\n \"éstas\",\n \"éste\",\n \"éstos\",\n \"última\",\n \"últimas\",\n \"último\",\n \"últimos\"\n];","export const defaultOptions = {\n spiralResolution: 1,\n spiralLimit: 360 * 5,\n lineHeight: 0.8,\n xWordPadding: 0,\n yWordPadding: 3,\n weightFactor: 40,\n topN: 40,\n maxHeight: 0,\n padding: 10\n};\n\nexport class WordCloudWidget {\n private _words: Array<Array<any>> = [];\n private _placedWords: Array<{element: HTMLDivElement, rect: DOMRect, left: number, top: number}> = [];\n private _minWeight = 1;\n private _weightFactor = 1;\n private _renderedTarget: HTMLDivElement = undefined;\n\n constructor(private _options = defaultOptions) {\n }\n\n colors = [\"black\"];\n get words(): Array<Array<any>> {\n return this._words;\n }\n set words(w: Array<Array<any>>) {\n this._words = [].concat(w || []);\n this._minWeight = 1;\n this._weightFactor = 1;\n if(this._words.length > 0) {\n this._words.sort((a, b) => -1 * (a[1] - b[1]));\n this._minWeight = this._words[this._words.length - 1][1];\n this._weightFactor = (this._words[0][1] - this._minWeight + 1) / this._options.weightFactor;\n }\n }\n\n private createWordElement(text: string, weight: number, color: number) {\n var element = document.createElement(\"div\");\n element.style.position = \"absolute\";\n element.style.fontSize = (weight - this._minWeight + 1) / this._weightFactor + \"px\";\n element.style.lineHeight = this._options.lineHeight + \"em\";\n if(this.colors.length > 0) {\n element.style.color = this.colors[color % this.colors.length];\n }\n element.title = text + \" (\" + weight + \")\";\n element.appendChild(document.createTextNode(text));\n return element;\n }\n private isIntersectWithPlaced(currentWordRect: DOMRect) {\n for(var i = 0; i < this._placedWords.length; i+=1) {\n var existingWordRect = this._placedWords[i].rect;\n if(!(currentWordRect.right + this._options.xWordPadding < existingWordRect.left - this._options.xWordPadding ||\n currentWordRect.left - this._options.xWordPadding > existingWordRect.right + this._options.xWordPadding ||\n currentWordRect.bottom + this._options.yWordPadding < existingWordRect.top - this._options.yWordPadding ||\n currentWordRect.top - this._options.yWordPadding > existingWordRect.bottom + this._options.yWordPadding)) {\n return true;\n }\n }\n return false;\n }\n private arrangeWords(cloudElement: HTMLDivElement, startPoint) {\n const currentPoint = {\n x: 0,\n y: 0\n };\n let yMin = currentPoint.y;\n let yMax = currentPoint.y;\n const displayWordsCount = Math.min(this._options.topN, this.words.length);\n for (var i = 0; i < displayWordsCount; i += 1) {\n var wordElement = this.createWordElement(this.words[i][0], this.words[i][1], i);\n cloudElement.appendChild(wordElement);\n for (var j = 0; j < this._options.spiralLimit; j++) {\n const angle = this._options.spiralResolution * j;\n currentPoint.x = (1 + angle) * Math.cos(angle);\n currentPoint.y = (1 + angle) * Math.sin(angle);\n const left = startPoint.x + currentPoint.x - wordElement.offsetWidth/2;\n const top = startPoint.y + currentPoint.y - wordElement.offsetHeight/2;\n wordElement.style.left = left + \"px\";\n wordElement.style.top = top + \"px\";\n const wordRect = wordElement.getBoundingClientRect();\n if (!this.isIntersectWithPlaced(wordRect)) {\n this._placedWords.push({\n element: wordElement,\n rect: wordRect,\n left,\n top\n });\n break;\n }\n }\n const yMinProbe = currentPoint.y - wordElement.offsetHeight/2;\n if(yMin > yMinProbe) {\n yMin = yMinProbe;\n }\n const yMaxProbe = currentPoint.y + wordElement.offsetHeight/2;\n if(yMax < yMaxProbe) {\n yMax = yMaxProbe;\n }\n }\n return [yMin, yMax];\n }\n public render(target: HTMLDivElement): void {\n this._renderedTarget = target;\n var cloudElement = document.createElement(\"div\");\n\n document.body.appendChild(cloudElement);\n cloudElement.style.position = \"fixed\";\n cloudElement.style.top = \"-1000px\";\n cloudElement.style.width = \"0\";\n cloudElement.style.height = \"0\";\n\n const startPoint = {\n x: cloudElement.offsetWidth / 2,\n y: cloudElement.offsetHeight / 2\n };\n const [yMin, yMax] = this.arrangeWords(cloudElement, startPoint);\n this._placedWords.forEach(wordInfo => {\n wordInfo.element.style.top = wordInfo.top - yMin + this._options.padding + \"px\";\n });\n\n cloudElement.remove();\n cloudElement.style.top = \"auto\";\n cloudElement.style.left = \"50%\";\n cloudElement.className = \"sa-visualizer-wordcloud\";\n cloudElement.style.position = \"relative\";\n if(this._options.maxHeight > 0) {\n cloudElement.style.height = this._options.maxHeight + \"px\";\n cloudElement.style.overflow = \"auto\";\n }\n if(this._options.maxHeight == 0) {\n cloudElement.style.height = yMax - yMin + this._options.padding * 2 + \"px\";\n }\n target.appendChild(cloudElement);\n }\n public dispose(): void {\n if(!!this._renderedTarget) {\n this._renderedTarget.innerHTML = \"\";\n this._renderedTarget = undefined;\n }\n }\n}\n","import { Question, Event } from \"survey-core\";\nimport { VisualizerBase } from \"../visualizerBase\";\nimport { VisualizationManager } from \"../visualizationManager\";\nimport { textHelper } from \"./stopwords/index\";\nimport { DocumentHelper } from \"../utils\";\nimport { localization } from \"../localizationManager\";\nimport { WordCloudWidget, defaultOptions } from \"./widget\";\n\nexport class WordCloudAdapter {\n private _wordcloud: any;\n\n public static drawOutOfBound = false;\n public static shrinkToFit = true;\n public static abortThreshold: any = undefined;\n public static weightFactor = 20;\n\n public static onWordcloudCreating = new Event<\n (sender: WordCloud, options: any) => any,\n WordCloud,\n any\n >();\n\n constructor(private model: WordCloud) {}\n\n public get wordcloud(): any {\n return this._wordcloud;\n }\n\n public async create(element: HTMLElement): Promise<any> {\n const data = await this.model.getCalculatedValues();\n const colors = this.model.getColors();\n\n if (data.length === 0) {\n const emptyTextNode = <HTMLElement>DocumentHelper.createElement(\"p\", \"\", {\n innerText: localization.getString(\"noResults\"),\n });\n element.appendChild(emptyTextNode);\n return;\n }\n\n const config = JSON.parse(JSON.stringify(defaultOptions));\n const options = {\n config\n };\n WordCloudAdapter.onWordcloudCreating.fire(this.model, options);\n this._wordcloud = new WordCloudWidget(config);\n this._wordcloud.colors = this.model.getColors();\n this._wordcloud.words = data;\n this._wordcloud.render(element);\n return this._wordcloud;\n }\n\n public destroy(node: HTMLElement): void {\n if(this._wordcloud && typeof this._wordcloud.dispose === \"function\") {\n this._wordcloud.dispose();\n }\n this._wordcloud = undefined;\n }\n}\nexport class WordCloud extends VisualizerBase {\n private _wordcloudAdapter: WordCloudAdapter;\n\n constructor(\n question: Question,\n data: Array<{ [index: string]: any }>,\n options?: Object,\n name?: string\n ) {\n super(question, data, options, name || \"wordcloud\");\n this._wordcloudAdapter = new WordCloudAdapter(this);\n }\n\n public convertFromExternalData(externalCalculatedData: any): any[] {\n const innerCalculatedData = [];\n Object.keys(externalCalculatedData || []).forEach(word => {\n innerCalculatedData.push([word, externalCalculatedData[word]]);\n });\n return innerCalculatedData;\n }\n\n protected getCalculatedValuesCore(): Array<any> {\n let result: { [key: string]: number } = {};\n\n let stopWords: string[] = [];\n const locale = localization.currentLocale;\n if (locale) {\n stopWords = textHelper.getStopWords(locale);\n } else {\n stopWords = textHelper.getStopWords();\n }\n const clearWordRegexp = new RegExp(\"[.,\\/#!$%\\^\\*;:{}=\\-_`~()]\", \"g\");\n\n const stopTheWord = (word: string) => {\n if (stopWords.indexOf(word) !== -1) {\n return \"\";\n }\n return word;\n };\n\n const processString = (row: string) => {\n row = \"\" + row;\n // if (row.length > 15) row = row.substring(0, 14) + \"...\";\n\n if (!!row) {\n row.split(\" \").forEach((word) => {\n let clearedWord = (word || \"\").toLowerCase().replace(clearWordRegexp, \"\");\n clearedWord = stopTheWord(clearedWord);\n if (!!clearedWord) {\n if (!result[clearedWord]) {\n result[clearedWord] = 1;\n } else {\n result[clearedWord]++;\n }\n }\n });\n }\n };\n\n this.surveyData.forEach((row) => {\n const rowValue: any = row[this.question.name];\n if (!!rowValue) {\n if (Array.isArray(rowValue)) {\n rowValue.forEach(processString);\n } else {\n if (typeof rowValue === \"object\") {\n Object.keys(rowValue).forEach((key) =>\n processString(rowValue[key])\n );\n } else {\n processString(rowValue);\n }\n }\n }\n });\n\n return Object.keys(result).map((key) => {\n return [key, result[key]];\n });\n }\n\n protected destroyContent(container: HTMLElement) {\n this._wordcloudAdapter.destroy(container);\n super.destroyContent(container);\n }\n\n protected async renderContentAsync(container: HTMLElement) {\n const chartNode: HTMLElement = DocumentHelper.createElement(\"div\");\n container.appendChild(chartNode);\n await this._wordcloudAdapter.create(chartNode);\n container.innerHTML = \"\";\n container.appendChild(chartNode);\n return container;\n }\n\n destroy() {\n this._wordcloudAdapter.destroy(this.contentContainer);\n super.destroy();\n }\n}\n\nVisualizationManager.registerVisualizer(\"text\", WordCloud);\nVisualizationManager.registerVisualizer(\"comment\", WordCloud);\nVisualizationManager.registerVisualizer(\"multipletext\", WordCloud);\n","module.exports = __WEBPACK_EXTERNAL_MODULE_plotly_js_dist_min__;","module.exports = __WEBPACK_EXTERNAL_MODULE_survey_core__;","// 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","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\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};","export * from \"../plotly/index\";\nexport * from \"./summary.core\";\n"],"names":[],"sourceRoot":""}
|
|
1
|
+
{"version":3,"file":"survey.analytics.js","mappings":";;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;;;;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,EAAE,KAA4D;AAC9D,EAAE,CACmD;AACrD,CAAC,qBAAqB;;AAEtB;AACA;;AAEA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB,aAAa,UAAU;AACvB,eAAe;AACf;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB,aAAa,UAAU;AACvB,eAAe;AACf;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB,aAAa,GAAG;AAChB,aAAa,GAAG;AAChB,aAAa,GAAG;AAChB,eAAe;AACf;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAgB,sBAAsB;AACtC;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,8CAA8C,aAAa;AAC3D;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;;AAEA;AACA;AACA;AACA,aAAa,aAAa;AAC1B,aAAa,QAAQ;AACrB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,aAAa,QAAQ;AACrB,eAAe;AACf;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,aAAa,GAAG;AAChB,eAAe;AACf;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,aAAa,aAAa;AAC1B,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,aAAa;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB,aAAa,UAAU;AACvB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,kBAAkB,yBAAyB;AAC3C;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;;AAEA;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;;AAEA;;AAEA;AACA;AACA,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA,8CAA8C;AAC9C;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,qDAAqD,gBAAgB;;AAErE;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,aAAa;AAC1B,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,sBAAsB,iCAAiC;AACvD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB,aAAa,sCAAsC;AACnD,eAAe;AACf;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,aAAa,QAAQ;AACrB,aAAa,sCAAsC;AACnD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,eAAe;AACf;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,sCAAsC;AACnD;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,sCAAsC;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,sCAAsC;AACnD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,sCAAsC;AACnD;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,sCAAsC;AACnD;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB;AACA,aAAa,UAAU;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB;AACA,aAAa,UAAU;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,gBAAgB,YAAY;AAC5B;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,gBAAgB,YAAY;AAC5B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,gBAAgB,YAAY;AAC5B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,SAAS;AACtB,aAAa,QAAQ;AACrB,eAAe;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,aAAa;AAC1B,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,GAAG;AAChB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,QAAQ;AACrB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,QAAQ;AACrB;AACA,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,QAAQ;AACrB;AACA,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,UAAU;AACvB,aAAa,QAAQ;AACrB,eAAe;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,aAAa;AAC1B,eAAe;AACf;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,aAAa;AAC1B,aAAa,SAAS;AACtB;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,aAAa;AAC1B,aAAa,QAAQ;AACrB,eAAe;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,2BAA2B;AACxC,aAAa,QAAQ;AACrB;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,aAAa,aAAa;AAC1B,aAAa,aAAa;AAC1B,aAAa,SAAS;AACtB;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,aAAa;AAC1B,eAAe;AACf;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,aAAa,aAAa;AAC1B,aAAa,SAAS;AACtB,aAAa,OAAO;AACpB,eAAe;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,0BAA0B,EAAE;AAC5B,4BAA4B,GAAG;AAC/B;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,aAAa;AAC1B,eAAe;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB,eAAe;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,aAAa;AAC1B,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,MAAM;AACnB,aAAa,cAAc;AAC3B,aAAa,QAAQ;AACrB;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,MAAM;AACnB,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;;AAEA;AACA;;AAEA;AACA,kBAAkB,kBAAkB;AACpC;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;;AAEA;AACA,kBAAkB,wBAAwB;AAC1C;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,0BAA0B;AAC5C;AACA;AACA;AACA;AACA;;AAEA;AACA,gBAAgB,sBAAsB;AACtC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,gBAAgB,sBAAsB;AACtC;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,cAAc;AAC3B,eAAe;AACf;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,cAAc;AAC3B,eAAe;AACf;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,cAAc;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,cAAc;AAC3B;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,cAAc;AAC3B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,cAAc;AAC3B,eAAe;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;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;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAM;AACN;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;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;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,cAAc;AAC3B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,cAAc;AAC3B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,cAAc;AAC3B;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,gCAAgC,wDAAwD;AACxF;;AAEA;AACA;AACA;AACA;AACA,2BAA2B,wDAAwD;AACnF;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,cAAc;AAC3B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;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;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,cAAc;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,WAAW;AACxB,aAAa,WAAW;AACxB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,aAAa,aAAa;AAC1B;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,2BAA2B;AAC3B;AACA;AACA,QAAQ;AACR;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,yBAAyB;;AAEzB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB,aAAa,MAAM;AACnB,aAAa,MAAM;AACnB,aAAa,QAAQ;AACrB,aAAa,MAAM;AACnB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,UAAU;AACvB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,GAAG;AAChB,aAAa,GAAG;AAChB,eAAe;AACf;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,gBAAgB,YAAY;AAC5B;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,SAAS;AACtB,aAAa,UAAU;AACvB,eAAe;AACf;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,SAAS;AACtB,aAAa,QAAQ;AACrB,eAAe;AACf;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;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;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;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;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,MAAM;AACnB,aAAa,qBAAqB;AAClC,aAAa,aAAa;AAC1B,eAAe;AACf;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,gCAAgC,uDAAuD;AACvF;;AAEA;AACA;AACA;AACA;AACA,wBAAwB,uDAAuD;AAC/E;;AAEA;AACA;AACA;AACA;AACA,iCAAiC,uDAAuD;AACxF;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,SAAS;AACtB;AACA,aAAa,QAAQ;AACrB;AACA,eAAe;AACf;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,SAAS;AACtB;AACA;AACA;AACA,aAAa,QAAQ;AACrB;AACA,eAAe;AACf;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;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,aAAa,aAAa;AAC1B,aAAa,QAAQ;AACrB,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,SAAS;AACtB,aAAa,UAAU;AACvB,eAAe;AACf;AACA;AACA;;AAEA;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;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,SAAS;AACtB,aAAa,UAAU;AACvB,eAAe;AACf;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,0BAA0B;;AAE1B;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,SAAS;AACtB,aAAa,SAAS;AACtB,aAAa,UAAU;AACvB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB;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;;AAEA;;AAEA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,MAAM;AACnB,aAAa,aAAa;AAC1B,aAAa,SAAS;AACtB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,mCAAmC;AACnC;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,SAAS;AACtB;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;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;AACA;AACA;AACA,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB,aAAa,UAAU;AACvB,aAAa,QAAQ;AACrB,aAAa,SAAS;AACtB,aAAa,SAAS;AACtB,aAAa,SAAS;AACtB,aAAa,SAAS;AACtB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,gBAAgB,kBAAkB;AAClC;AACA;;AAEA;AACA;AACA,kBAAkB,yBAAyB;AAC3C;AACA;AACA;;AAEA;AACA;AACA,kBAAkB,yBAAyB;AAC3C;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,MAAM;AACnB,aAAa,SAAS;AACtB,aAAa,SAAS;AACtB,aAAa,SAAS;AACtB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,kBAAkB,sBAAsB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,yEAAyE,sBAAsB;AAC/F;AACA;AACA;AACA;AACA,qBAAqB,4BAA4B;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAQ;AACR;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB,eAAe;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB,eAAe;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,WAAW;AACxB,aAAa,WAAW;AACxB,eAAe;AACf;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;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,aAAa,WAAW;AACxB,aAAa,WAAW;AACxB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,WAAW;AACxB,aAAa,WAAW;AACxB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,UAAU;AACvB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA,aAAa,GAAG;AAChB,eAAe;AACf;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,GAAG;AAChB,eAAe;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,GAAG;AAChB,eAAe;AACf;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,sBAAsB;AACnC,aAAa,QAAQ;AACrB,aAAa,kCAAkC;AAC/C,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB,aAAa,mBAAmB;AAChC,aAAa,SAAS;AACtB,aAAa,SAAS;AACtB,aAAa,SAAS;AACtB,aAAa,SAAS;AACtB,aAAa,SAAS;AACtB,aAAa,kBAAkB;AAC/B,aAAa,SAAS;AACtB,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB,aAAa,SAAS;AACtB,aAAa,SAAS;AACtB,aAAa,cAAc;AAC3B,aAAa,WAAW;AACxB,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB,aAAa,kBAAkB;AAC/B,aAAa,SAAS;AACtB,aAAa,oBAAoB;AACjC,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB,aAAa,mBAAmB;AAChC,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB,aAAa,SAAS;AACtB,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB,aAAa,WAAW;AACxB,aAAa,WAAW;AACxB,aAAa,WAAW;AACxB,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,8BAA8B,gBAAgB;AAC9C;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,MAAM;AACN;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB,aAAa,UAAU;AACvB,eAAe;AACf;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB,aAAa,UAAU;AACvB,eAAe;AACf;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,oBAAoB;AACjC,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,gBAAgB,wBAAwB;AACxC;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,oBAAoB;AACjC,eAAe;AACf;AACA;AACA;;AAEA;AACA;;AAEA,gBAAgB,oBAAoB;AACpC;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,oBAAoB;AACjC,eAAe;AACf;AACA;AACA;;AAEA;AACA;;AAEA,gBAAgB,wBAAwB;AACxC;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,kBAAkB,kBAAkB;AACpC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,SAAS;AACtB,aAAa,gBAAgB;AAC7B,eAAe;AACf;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;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,QAAQ;AACR;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,gBAAgB,iBAAiB;AACjC;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,6BAA6B;AAC1C,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB,aAAa,SAAS;AACtB,aAAa,iCAAiC;AAC9C,eAAe;AACf;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,gBAAgB,qBAAqB;AACrC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,oBAAoB;AACjC,aAAa,QAAQ;AACrB,aAAa,SAAS;AACtB,aAAa,iCAAiC;AAC9C,eAAe;AACf;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,gBAAgB,wBAAwB;AACxC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,oBAAoB;AACjC,aAAa,QAAQ;AACrB,aAAa,SAAS;AACtB,aAAa,cAAc;AAC3B,aAAa,iCAAiC;AAC9C,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,oBAAoB;AACjC,aAAa,QAAQ;AACrB,aAAa,SAAS;AACtB,aAAa,cAAc;AAC3B,aAAa,iCAAiC;AAC9C,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,mBAAmB;AAChC,aAAa,QAAQ;AACrB,aAAa,SAAS;AACtB,aAAa,gBAAgB;AAC7B,aAAa,iCAAiC;AAC9C,eAAe;AACf;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,kBAAkB,wBAAwB;AAC1C;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,MAAM;AACN;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,MAAM;AACN;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,mCAAmC;AAChD,aAAa,QAAQ;AACrB,aAAa,SAAS;AACtB,aAAa,iCAAiC;AAC9C,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA,sBAAsB,kBAAkB;AACxC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,sBAAsB,yBAAyB;AAC/C;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,kBAAkB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,aAAa,qBAAqB;AAClC,aAAa,qBAAqB;AAClC,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB;AACA;AACA;AACA,aAAa,iCAAiC;AAC9C,eAAe;AACf;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAQ;AACR;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,qBAAqB;AAClC,aAAa,MAAM;AACnB,aAAa,qBAAqB;AAClC,aAAa,QAAQ;AACrB,aAAa,aAAa;AAC1B,aAAa,iCAAiC;AAC9C,aAAa,iCAAiC;AAC9C,eAAe;AACf;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,SAAS;AACtB,eAAe;AACf;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,gBAAgB,kBAAkB;AAClC;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,qBAAqB;AAClC,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,oBAAoB,wBAAwB;AAC5C;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,gBAAgB,wBAAwB;AACxC;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAM;AACN;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB,eAAe;AACf;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,SAAS;AACtB,aAAa,SAAS;AACtB,aAAa,SAAS;AACtB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa,oBAAoB;AACjC,aAAa,SAAS;AACtB,aAAa,QAAQ;AACrB,aAAa,SAAS;AACtB,aAAa,6BAA6B;AAC1C,aAAa,iCAAiC;AAC9C;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;;AAEA;AACA,gBAAgB,wBAAwB;AACxC;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AA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","sources":["webpack://SurveyAnalyticsTabulator/webpack/universalModuleDefinition","webpack://SurveyAnalytics/./node_modules/muuri/dist/muuri.js","webpack://SurveyAnalytics/./src/alternativeVizualizersWrapper.ts","webpack://SurveyAnalyticsTabulator/./src/analytics-localization/arabic.ts","webpack://SurveyAnalyticsTabulator/./src/analytics-localization/dutch.ts","webpack://SurveyAnalyticsTabulator/./src/analytics-localization/english.ts","webpack://SurveyAnalyticsTabulator/./src/analytics-localization/farsi.ts","webpack://SurveyAnalyticsTabulator/./src/analytics-localization/finnish.ts","webpack://SurveyAnalyticsTabulator/./src/analytics-localization/french.ts","webpack://SurveyAnalyticsTabulator/./src/analytics-localization/german.ts","webpack://SurveyAnalyticsTabulator/./src/analytics-localization/italian.ts","webpack://SurveyAnalyticsTabulator/./src/analytics-localization/japanese.ts","webpack://SurveyAnalyticsTabulator/./src/analytics-localization/norwegian.ts","webpack://SurveyAnalyticsTabulator/./src/analytics-localization/polish.ts","webpack://SurveyAnalyticsTabulator/./src/analytics-localization/portuguese.ts","webpack://SurveyAnalyticsTabulator/./src/analytics-localization/russian.ts","webpack://SurveyAnalyticsTabulator/./src/analytics-localization/spanish.ts","webpack://SurveyAnalyticsTabulator/./src/analytics-localization/swedish.ts","webpack://SurveyAnalytics/./src/boolean.ts","webpack://SurveyAnalytics/./src/dataProvider.ts","webpack://SurveyAnalytics/./src/entries/summary.core.ts","webpack://SurveyAnalytics/./src/filterInfo.ts","webpack://SurveyAnalytics/./src/histogram.ts","webpack://SurveyAnalyticsTabulator/./src/icons.ts","webpack://SurveyAnalyticsTabulator/./src/images/ sync \\.svg$","webpack://SurveyAnalyticsTabulator/./src/images/detail.svg","webpack://SurveyAnalyticsTabulator/./src/images/drag.svg","webpack://SurveyAnalyticsTabulator/./src/images/hide.svg","webpack://SurveyAnalyticsTabulator/./src/images/makeprivate.svg","webpack://SurveyAnalyticsTabulator/./src/images/makepublic.svg","webpack://SurveyAnalyticsTabulator/./src/images/moveToDetails.svg","webpack://SurveyAnalyticsTabulator/./src/images/nonCommercial.svg","webpack://SurveyAnalyticsTabulator/./src/images/sorting.svg","webpack://SurveyAnalytics/./src/layoutEngine.ts","webpack://SurveyAnalyticsTabulator/./src/localizationManager.ts","webpack://SurveyAnalytics/./src/matrix.ts","webpack://SurveyAnalytics/./src/matrixDropdownGrouped.ts","webpack://[pc-name]/./src/nps.scss?086b","webpack://SurveyAnalytics/./src/nps.ts","webpack://SurveyAnalytics/./src/number.ts","webpack://SurveyAnalytics/./src/pivot.ts","webpack://SurveyAnalytics/./src/plotly/chart-adapter.ts","webpack://SurveyAnalytics/./src/plotly/index.ts","webpack://SurveyAnalytics/./src/plotly/legacy.ts","webpack://SurveyAnalytics/./src/plotly/setup.ts","webpack://SurveyAnalytics/./src/ranking.ts","webpack://SurveyAnalytics/./src/selectBase.ts","webpack://SurveyAnalytics/./src/statisticCalculators.ts","webpack://[pc-name]/./src/statistics-table.scss?5f2d","webpack://SurveyAnalytics/./src/statistics-table.ts","webpack://SurveyAnalyticsTabulator/./src/svgbundle.ts","webpack://[pc-name]/./src/text.scss?2dd1","webpack://SurveyAnalytics/./src/text.ts","webpack://SurveyAnalyticsTabulator/./src/utils/helpers.ts","webpack://SurveyAnalyticsTabulator/./src/utils/index.ts","webpack://SurveyAnalytics/./src/visualizationComposite.ts","webpack://SurveyAnalytics/./src/visualizationManager.ts","webpack://SurveyAnalytics/./src/visualizationMatrixDropdown.ts","webpack://SurveyAnalytics/./src/visualizationMatrixDynamic.ts","webpack://[pc-name]/./src/visualizationPanel.scss?77db","webpack://SurveyAnalytics/./src/visualizationPanel.ts","webpack://SurveyAnalytics/./src/visualizationPanelDynamic.ts","webpack://[pc-name]/./src/visualizerBase.scss?df18","webpack://SurveyAnalytics/./src/visualizerBase.ts","webpack://SurveyAnalytics/./src/visualizerFactory.ts","webpack://SurveyAnalytics/./src/wordcloud/stopwords/dutch.ts","webpack://SurveyAnalytics/./src/wordcloud/stopwords/english.ts","webpack://SurveyAnalytics/./src/wordcloud/stopwords/index.ts","webpack://SurveyAnalytics/./src/wordcloud/stopwords/norwegian.ts","webpack://SurveyAnalytics/./src/wordcloud/stopwords/spanish.ts","webpack://SurveyAnalytics/./src/wordcloud/widget.ts","webpack://SurveyAnalytics/./src/wordcloud/wordcloud.ts","webpack://SurveyAnalytics/external umd {\"root\":\"Plotly\",\"commonjs2\":\"plotly.js-dist-min\",\"commonjs\":\"plotly.js-dist-min\",\"amd\":\"plotly.js-dist-min\"}","webpack://SurveyAnalyticsTabulator/external umd {\"root\":\"Survey\",\"commonjs2\":\"survey-core\",\"commonjs\":\"survey-core\",\"amd\":\"survey-core\"}","webpack://SurveyAnalyticsTabulator/webpack/bootstrap","webpack://SurveyAnalyticsTabulator/webpack/runtime/compat get default export","webpack://SurveyAnalyticsTabulator/webpack/runtime/define property getters","webpack://SurveyAnalyticsTabulator/webpack/runtime/hasOwnProperty shorthand","webpack://SurveyAnalyticsTabulator/webpack/runtime/make namespace object","webpack://SurveyAnalytics/./src/entries/summary.ts"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"plotly.js-dist-min\"), require(\"survey-core\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"SurveyAnalytics\", [\"plotly.js-dist-min\", \"survey-core\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"SurveyAnalytics\"] = factory(require(\"plotly.js-dist-min\"), require(\"survey-core\"));\n\telse\n\t\troot[\"SurveyAnalytics\"] = factory(root[\"Plotly\"], root[\"Survey\"]);\n})(this, (__WEBPACK_EXTERNAL_MODULE_plotly_js_dist_min__, __WEBPACK_EXTERNAL_MODULE_survey_core__) => {\nreturn ","/**\n* Muuri v0.8.0\n* https://github.com/haltu/muuri\n* Copyright (c) 2015-present, Haltu Oy\n* Released under the MIT license\n* https://github.com/haltu/muuri/blob/master/LICENSE.md\n* @license MIT\n*\n* Muuri Packer\n* Copyright (c) 2016-present, Niklas Rämö <inramo@gmail.com>\n* @license MIT\n*\n* Muuri Ticker / Muuri Emitter / Muuri Queue\n* Copyright (c) 2018-present, Niklas Rämö <inramo@gmail.com>\n* @license MIT\n*/\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global = global || self, global.Muuri = factory());\n}(this, function () { 'use strict';\n\n var namespace = 'Muuri';\n var gridInstances = {};\n\n var actionSwap = 'swap';\n var actionMove = 'move';\n\n var eventSynchronize = 'synchronize';\n var eventLayoutStart = 'layoutStart';\n var eventLayoutEnd = 'layoutEnd';\n var eventAdd = 'add';\n var eventRemove = 'remove';\n var eventShowStart = 'showStart';\n var eventShowEnd = 'showEnd';\n var eventHideStart = 'hideStart';\n var eventHideEnd = 'hideEnd';\n var eventFilter = 'filter';\n var eventSort = 'sort';\n var eventMove = 'move';\n var eventSend = 'send';\n var eventBeforeSend = 'beforeSend';\n var eventReceive = 'receive';\n var eventBeforeReceive = 'beforeReceive';\n var eventDragInit = 'dragInit';\n var eventDragStart = 'dragStart';\n var eventDragMove = 'dragMove';\n var eventDragScroll = 'dragScroll';\n var eventDragEnd = 'dragEnd';\n var eventDragReleaseStart = 'dragReleaseStart';\n var eventDragReleaseEnd = 'dragReleaseEnd';\n var eventDestroy = 'destroy';\n\n /**\n * Event emitter constructor.\n *\n * @class\n */\n function Emitter() {\n this._events = {};\n this._queue = [];\n this._counter = 0;\n this._isDestroyed = false;\n }\n\n /**\n * Public prototype methods\n * ************************\n */\n\n /**\n * Bind an event listener.\n *\n * @public\n * @memberof Emitter.prototype\n * @param {String} event\n * @param {Function} listener\n * @returns {Emitter}\n */\n Emitter.prototype.on = function(event, listener) {\n if (this._isDestroyed) return this;\n\n // Get listeners queue and create it if it does not exist.\n var listeners = this._events[event];\n if (!listeners) listeners = this._events[event] = [];\n\n // Add the listener to the queue.\n listeners.push(listener);\n\n return this;\n };\n\n /**\n * Unbind all event listeners that match the provided listener function.\n *\n * @public\n * @memberof Emitter.prototype\n * @param {String} event\n * @param {Function} [listener]\n * @returns {Emitter}\n */\n Emitter.prototype.off = function(event, listener) {\n if (this._isDestroyed) return this;\n\n // Get listeners and return immediately if none is found.\n var listeners = this._events[event];\n if (!listeners || !listeners.length) return this;\n\n // If no specific listener is provided remove all listeners.\n if (!listener) {\n listeners.length = 0;\n return this;\n }\n\n // Remove all matching listeners.\n var i = listeners.length;\n while (i--) {\n if (listener === listeners[i]) listeners.splice(i, 1);\n }\n\n return this;\n };\n\n /**\n * Emit all listeners in a specified event with the provided arguments.\n *\n * @public\n * @memberof Emitter.prototype\n * @param {String} event\n * @param {*} [arg1]\n * @param {*} [arg2]\n * @param {*} [arg3]\n * @returns {Emitter}\n */\n Emitter.prototype.emit = function(event, arg1, arg2, arg3) {\n if (this._isDestroyed) return this;\n\n // Get event listeners and quit early if there's no listeners.\n var listeners = this._events[event];\n if (!listeners || !listeners.length) return this;\n\n var queue = this._queue;\n var qLength = queue.length;\n var aLength = arguments.length - 1;\n var i;\n\n // Add the current listeners to the callback queue before we process them.\n // This is necessary to guarantee that all of the listeners are called in\n // correct order even if new event listeners are removed/added during\n // processing and/or events are emitted during processing.\n for (i = 0; i < listeners.length; i++) {\n queue.push(listeners[i]);\n }\n\n // Increment queue counter. This is needed for the scenarios where emit is\n // triggered while the queue is already processing. We need to keep track of\n // how many \"queue processors\" there are active so that we can safely reset\n // the queue in the end when the last queue processor is finished.\n ++this._counter;\n\n // Process the queue (the specific part of it for this emit).\n for (i = qLength, qLength = queue.length; i < qLength; i++) {\n // prettier-ignore\n aLength === 0 ? queue[i]() :\n aLength === 1 ? queue[i](arg1) :\n aLength === 2 ? queue[i](arg1, arg2) :\n queue[i](arg1, arg2, arg3);\n\n // Stop processing if the emitter is destroyed.\n if (this._isDestroyed) return this;\n }\n\n // Decrement queue process counter.\n --this._counter;\n\n // Reset the queue if there are no more queue processes running.\n if (!this._counter) queue.length = 0;\n\n return this;\n };\n\n /**\n * Destroy emitter instance. Basically just removes all bound listeners.\n *\n * @public\n * @memberof Emitter.prototype\n * @returns {Emitter}\n */\n Emitter.prototype.destroy = function() {\n if (this._isDestroyed) return this;\n\n var events = this._events;\n var event;\n\n // Flag as destroyed.\n this._isDestroyed = true;\n\n // Reset queue (if queue is currently processing this will also stop that).\n this._queue.length = this._counter = 0;\n\n // Remove all listeners.\n for (event in events) {\n if (events[event]) {\n events[event].length = 0;\n events[event] = undefined;\n }\n }\n\n return this;\n };\n\n // Set up the default export values.\n var transformStyle = 'transform';\n var transformProp = 'transform';\n\n // Find the supported transform prop and style names.\n var docElemStyle = window.document.documentElement.style;\n var style = 'transform';\n var styleCap = 'Transform';\n var found = false;\n ['', 'Webkit', 'Moz', 'O', 'ms'].forEach(function(prefix) {\n if (found) return;\n var propName = prefix ? prefix + styleCap : style;\n if (docElemStyle[propName] !== undefined) {\n prefix = prefix.toLowerCase();\n transformStyle = prefix ? '-' + prefix + '-' + style : style;\n transformProp = propName;\n found = true;\n }\n });\n\n var stylesCache = typeof WeakMap === 'function' ? new WeakMap() : null;\n\n /**\n * Returns the computed value of an element's style property as a string.\n *\n * @param {HTMLElement} element\n * @param {String} style\n * @returns {String}\n */\n function getStyle(element, style) {\n var styles = stylesCache && stylesCache.get(element);\n if (!styles) {\n styles = window.getComputedStyle(element, null);\n if (stylesCache) stylesCache.set(element, styles);\n }\n return styles.getPropertyValue(style === 'transform' ? transformStyle : style);\n }\n\n var styleNameRegEx = /([A-Z])/g;\n\n /**\n * Transforms a camel case style property to kebab case style property.\n *\n * @param {String} string\n * @returns {String}\n */\n function getStyleName(string) {\n return string.replace(styleNameRegEx, '-$1').toLowerCase();\n }\n\n var strFunction = 'function';\n\n /**\n * Check if a value is a function.\n *\n * @param {*} val\n * @returns {Boolean}\n */\n function isFunction(val) {\n return typeof val === strFunction;\n }\n\n var transformStyle$1 = 'transform';\n\n /**\n * Set inline styles to an element.\n *\n * @param {HTMLElement} element\n * @param {Object} styles\n */\n function setStyles(element, styles) {\n for (var prop in styles) {\n element.style[prop === transformStyle$1 ? transformProp : prop] = styles[prop];\n }\n }\n\n /**\n * Item animation handler powered by Web Animations API.\n *\n * @class\n * @param {HTMLElement} element\n */\n function ItemAnimate(element) {\n this._element = element;\n this._animation = null;\n this._callback = null;\n this._props = [];\n this._values = [];\n this._keyframes = [];\n this._options = {};\n this._isDestroyed = false;\n this._onFinish = this._onFinish.bind(this);\n }\n\n /**\n * Public prototype methods\n * ************************\n */\n\n /**\n * Start instance's animation. Automatically stops current animation if it is\n * running.\n *\n * @public\n * @memberof ItemAnimate.prototype\n * @param {Object} propsFrom\n * @param {Object} propsTo\n * @param {Object} [options]\n * @param {Number} [options.duration=300]\n * @param {String} [options.easing='ease']\n * @param {Function} [options.onFinish]\n */\n ItemAnimate.prototype.start = function(propsFrom, propsTo, options) {\n if (this._isDestroyed) return;\n\n var animation = this._animation;\n var currentProps = this._props;\n var currentValues = this._values;\n var opts = options || 0;\n var cancelAnimation = false;\n\n // If we have an existing animation running, let's check if it needs to be\n // cancelled or if it can continue running.\n if (animation) {\n var propCount = 0;\n var propIndex;\n\n // Check if the requested animation target props and values match with the\n // current props and values.\n for (var propName in propsTo) {\n ++propCount;\n propIndex = currentProps.indexOf(propName);\n if (propIndex === -1 || propsTo[propName] !== currentValues[propIndex]) {\n cancelAnimation = true;\n break;\n }\n }\n\n // Check if the target props count matches current props count. This is\n // needed for the edge case scenario where target props contain the same\n // styles as current props, but the current props have some additional\n // props.\n if (!cancelAnimation && propCount !== currentProps.length) {\n cancelAnimation = true;\n }\n }\n\n // Cancel animation (if required).\n if (cancelAnimation) animation.cancel();\n\n // Store animation callback.\n this._callback = isFunction(opts.onFinish) ? opts.onFinish : null;\n\n // If we have a running animation that does not need to be cancelled, let's\n // call it a day here and let it run.\n if (animation && !cancelAnimation) return;\n\n // Store target props and values to instance.\n currentProps.length = currentValues.length = 0;\n for (propName in propsTo) {\n currentProps.push(propName);\n currentValues.push(propsTo[propName]);\n }\n\n // Set up keyframes.\n var animKeyframes = this._keyframes;\n animKeyframes[0] = propsFrom;\n animKeyframes[1] = propsTo;\n\n // Set up options.\n var animOptions = this._options;\n animOptions.duration = opts.duration || 300;\n animOptions.easing = opts.easing || 'ease';\n\n // Start the animation\n var element = this._element;\n animation = element.animate(animKeyframes, animOptions);\n animation.onfinish = this._onFinish;\n this._animation = animation;\n\n // Set the end styles. This makes sure that the element stays at the end\n // values after animation is finished.\n setStyles(element, propsTo);\n };\n\n /**\n * Stop instance's current animation if running.\n *\n * @public\n * @memberof ItemAnimate.prototype\n * @param {Object} [styles]\n */\n ItemAnimate.prototype.stop = function(styles) {\n if (this._isDestroyed || !this._animation) return;\n\n var element = this._element;\n var currentProps = this._props;\n var currentValues = this._values;\n var propName;\n var propValue;\n var i;\n\n // Calculate (if not provided) and set styles.\n if (!styles) {\n for (i = 0; i < currentProps.length; i++) {\n propName = currentProps[i];\n propValue = getStyle(element, getStyleName(propName));\n element.style[propName === 'transform' ? transformProp : propName] = propValue;\n }\n } else {\n setStyles(element, styles);\n }\n\n // Cancel animation.\n this._animation.cancel();\n this._animation = this._callback = null;\n\n // Reset current props and values.\n currentProps.length = currentValues.length = 0;\n };\n\n /**\n * Check if the item is being animated currently.\n *\n * @public\n * @memberof ItemAnimate.prototype\n * @return {Boolean}\n */\n ItemAnimate.prototype.isAnimating = function() {\n return !!this._animation;\n };\n\n /**\n * Destroy the instance and stop current animation if it is running.\n *\n * @public\n * @memberof ItemAnimate.prototype\n */\n ItemAnimate.prototype.destroy = function() {\n if (this._isDestroyed) return;\n this.stop();\n this._element = this._options = this._keyframes = null;\n this._isDestroyed = true;\n };\n\n /**\n * Private prototype methods\n * *************************\n */\n\n /**\n * Animation end handler.\n *\n * @private\n * @memberof ItemAnimate.prototype\n */\n ItemAnimate.prototype._onFinish = function() {\n var callback = this._callback;\n this._animation = this._callback = null;\n this._props.length = this._values.length = 0;\n callback && callback();\n };\n\n var vendorPrefixes = ['', 'webkit', 'moz', 'ms', 'o', 'Webkit', 'Moz', 'MS', 'O'];\n\n /**\n * Get prefixed CSS property name when given a non-prefixed CSS property name.\n * @param {Object} elemStyle\n * @param {String} propName\n * @returns {!String}\n */\n function getPrefixedPropName(elemStyle, propName) {\n var camelPropName = propName[0].toUpperCase() + propName.slice(1);\n var i = 0;\n var prefix;\n var prefixedPropName;\n\n while (i < vendorPrefixes.length) {\n prefix = vendorPrefixes[i];\n prefixedPropName = prefix ? prefix + camelPropName : propName;\n if (prefixedPropName in elemStyle) return prefixedPropName;\n ++i;\n }\n\n return null;\n }\n\n var dt = 1000 / 60;\n\n var raf = (\n window.requestAnimationFrame ||\n window.webkitRequestAnimationFrame ||\n window.mozRequestAnimationFrame ||\n window.msRequestAnimationFrame ||\n function(callback) {\n return this.setTimeout(function() {\n callback(dt);\n }, dt);\n }\n ).bind(window);\n\n // Detect support for passive events:\n // https://github.com/WICG/EventListenerOptions/blob/gh-pages/explainer.md#feature-detection\n var isPassiveEventsSupported = false;\n try {\n var passiveOpts = Object.defineProperty({}, 'passive', {\n get: function() {\n isPassiveEventsSupported = true;\n }\n });\n window.addEventListener('testPassive', null, passiveOpts);\n window.removeEventListener('testPassive', null, passiveOpts);\n } catch (e) {}\n\n // Dragger events.\n var events = {\n start: 'start',\n move: 'move',\n end: 'end',\n cancel: 'cancel'\n };\n\n var hasTouchEvents = !!('ontouchstart' in window || window.TouchEvent);\n var hasPointerEvents = !!window.PointerEvent;\n var hasMsPointerEvents = !!window.navigator.msPointerEnabled;\n var isAndroid = /(android)/i.test(window.navigator.userAgent);\n var listenerOptions = isPassiveEventsSupported ? { passive: true } : false;\n\n var taProp = 'touchAction';\n var taPropPrefixed = getPrefixedPropName(window.document.documentElement.style, taProp);\n var taDefaultValue = 'auto';\n\n /**\n * Creates a new Dragger instance for an element.\n *\n * @public\n * @class\n * @param {HTMLElement} element\n * @param {Object} [cssProps]\n */\n function Dragger(element, cssProps) {\n this._element = element;\n this._emitter = new Emitter();\n this._isDestroyed = false;\n this._cssProps = {};\n this._touchAction = '';\n this._startEvent = null;\n\n this._pointerId = null;\n this._startTime = 0;\n this._startX = 0;\n this._startY = 0;\n this._currentX = 0;\n this._currentY = 0;\n\n this._preStartCheck = this._preStartCheck.bind(this);\n this._abortNonCancelable = this._abortNonCancelable.bind(this);\n this._onStart = this._onStart.bind(this);\n this._onMove = this._onMove.bind(this);\n this._onCancel = this._onCancel.bind(this);\n this._onEnd = this._onEnd.bind(this);\n\n // Apply initial css props.\n this.setCssProps(cssProps);\n\n // If touch action was not provided with initial css props let's assume it's\n // auto.\n if (!this._touchAction) {\n this.setTouchAction(taDefaultValue);\n }\n\n // Prevent native link/image dragging for the item and it's ancestors.\n element.addEventListener('dragstart', Dragger._preventDefault, false);\n\n // Listen to start event.\n element.addEventListener(Dragger._events.start, this._preStartCheck, listenerOptions);\n\n // If we have touch events, but no pointer events we need to also listen for\n // mouse events in addition to touch events for devices which support both\n // mouse and touch interaction.\n if (hasTouchEvents && !hasPointerEvents && !hasMsPointerEvents) {\n element.addEventListener(Dragger._mouseEvents.start, this._preStartCheck, listenerOptions);\n }\n }\n\n /**\n * Protected properties\n * ********************\n */\n\n Dragger._pointerEvents = {\n start: 'pointerdown',\n move: 'pointermove',\n cancel: 'pointercancel',\n end: 'pointerup'\n };\n\n Dragger._msPointerEvents = {\n start: 'MSPointerDown',\n move: 'MSPointerMove',\n cancel: 'MSPointerCancel',\n end: 'MSPointerUp'\n };\n\n Dragger._touchEvents = {\n start: 'touchstart',\n move: 'touchmove',\n cancel: 'touchcancel',\n end: 'touchend'\n };\n\n Dragger._mouseEvents = {\n start: 'mousedown',\n move: 'mousemove',\n cancel: '',\n end: 'mouseup'\n };\n\n Dragger._events = (function() {\n if (hasPointerEvents) return Dragger._pointerEvents;\n if (hasMsPointerEvents) return Dragger._msPointerEvents;\n if (hasTouchEvents) return Dragger._touchEvents;\n return Dragger._mouseEvents;\n })();\n\n Dragger._emitter = new Emitter();\n\n Dragger._activeInstances = [];\n\n /**\n * Protected static methods\n * ************************\n */\n\n Dragger._preventDefault = function(e) {\n if (e.preventDefault && e.cancelable !== false) e.preventDefault();\n };\n\n Dragger._activateInstance = function(instance) {\n var index = Dragger._activeInstances.indexOf(instance);\n if (index > -1) return;\n\n Dragger._activeInstances.push(instance);\n Dragger._emitter.on(events.move, instance._onMove);\n Dragger._emitter.on(events.cancel, instance._onCancel);\n Dragger._emitter.on(events.end, instance._onEnd);\n\n if (Dragger._activeInstances.length === 1) {\n Dragger._bindListeners();\n }\n };\n\n Dragger._deactivateInstance = function(instance) {\n var index = Dragger._activeInstances.indexOf(instance);\n if (index === -1) return;\n\n Dragger._activeInstances.splice(index, 1);\n Dragger._emitter.off(events.move, instance._onMove);\n Dragger._emitter.off(events.cancel, instance._onCancel);\n Dragger._emitter.off(events.end, instance._onEnd);\n\n if (!Dragger._activeInstances.length) {\n Dragger._unbindListeners();\n }\n };\n\n Dragger._bindListeners = function() {\n var events = Dragger._events;\n window.addEventListener(events.move, Dragger._onMove, listenerOptions);\n window.addEventListener(events.end, Dragger._onEnd, listenerOptions);\n events.cancel && window.addEventListener(events.cancel, Dragger._onCancel, listenerOptions);\n };\n\n Dragger._unbindListeners = function() {\n var events = Dragger._events;\n window.removeEventListener(events.move, Dragger._onMove, listenerOptions);\n window.removeEventListener(events.end, Dragger._onEnd, listenerOptions);\n events.cancel && window.removeEventListener(events.cancel, Dragger._onCancel, listenerOptions);\n };\n\n Dragger._getEventPointerId = function(event) {\n // If we have pointer id available let's use it.\n if (typeof event.pointerId === 'number') {\n return event.pointerId;\n }\n\n // For touch events let's get the first changed touch's identifier.\n if (event.changedTouches) {\n return event.changedTouches[0] ? event.changedTouches[0].identifier : null;\n }\n\n // For mouse/other events let's provide a static id.\n return 1;\n };\n\n Dragger._getTouchById = function(event, id) {\n // If we have a pointer event return the whole event if there's a match, and\n // null otherwise.\n if (typeof event.pointerId === 'number') {\n return event.pointerId === id ? event : null;\n }\n\n // For touch events let's check if there's a changed touch object that matches\n // the pointerId in which case return the touch object.\n if (event.changedTouches) {\n for (var i = 0; i < event.changedTouches.length; i++) {\n if (event.changedTouches[i].identifier === id) {\n return event.changedTouches[i];\n }\n }\n return null;\n }\n\n // For mouse/other events let's assume there's only one pointer and just\n // return the event.\n return event;\n };\n\n Dragger._onMove = function(e) {\n Dragger._emitter.emit(events.move, e);\n };\n\n Dragger._onCancel = function(e) {\n Dragger._emitter.emit(events.cancel, e);\n };\n\n Dragger._onEnd = function(e) {\n Dragger._emitter.emit(events.end, e);\n };\n\n /**\n * Private prototype methods\n * *************************\n */\n\n /**\n * Reset current drag operation (if any).\n *\n * @private\n * @memberof Dragger.prototype\n */\n Dragger.prototype._reset = function() {\n if (this._isDestroyed) return;\n\n this._pointerId = null;\n this._startTime = 0;\n this._startX = 0;\n this._startY = 0;\n this._currentX = 0;\n this._currentY = 0;\n this._startEvent = null;\n\n this._element.removeEventListener(\n Dragger._touchEvents.start,\n this._abortNonCancelable,\n listenerOptions\n );\n\n Dragger._deactivateInstance(this);\n };\n\n /**\n * Create a custom dragger event from a raw event.\n *\n * @private\n * @memberof Dragger.prototype\n * @param {String} type\n * @param {(PointerEvent|TouchEvent|MouseEvent)} e\n * @returns {DraggerEvent}\n */\n Dragger.prototype._createEvent = function(type, e) {\n var touch = this._getTrackedTouch(e);\n return {\n // Hammer.js compatibility interface.\n type: type,\n srcEvent: e,\n distance: this.getDistance(),\n deltaX: this.getDeltaX(),\n deltaY: this.getDeltaY(),\n deltaTime: type === events.start ? 0 : this.getDeltaTime(),\n isFirst: type === events.start,\n isFinal: type === events.end || type === events.cancel,\n // Partial Touch API interface.\n identifier: this._pointerId,\n screenX: touch.screenX,\n screenY: touch.screenY,\n clientX: touch.clientX,\n clientY: touch.clientY,\n pageX: touch.pageX,\n pageY: touch.pageY,\n target: touch.target\n };\n };\n\n /**\n * Emit a raw event as dragger event internally.\n *\n * @private\n * @memberof Dragger.prototype\n * @param {String} type\n * @param {(PointerEvent|TouchEvent|MouseEvent)} e\n */\n Dragger.prototype._emit = function(type, e) {\n this._emitter.emit(type, this._createEvent(type, e));\n };\n\n /**\n * If the provided event is a PointerEvent this method will return it if it has\n * the same pointerId as the instance. If the provided event is a TouchEvent\n * this method will try to look for a Touch instance in the changedTouches that\n * has an identifier matching this instance's pointerId. If the provided event\n * is a MouseEvent (or just any other event than PointerEvent or TouchEvent)\n * it will be returned immediately.\n *\n * @private\n * @memberof Dragger.prototype\n * @param {(PointerEvent|TouchEvent|MouseEvent)}\n * @returns {?(Touch|PointerEvent|MouseEvent)}\n */\n Dragger.prototype._getTrackedTouch = function(e) {\n if (this._pointerId === null) {\n return null;\n } else {\n return Dragger._getTouchById(e, this._pointerId);\n }\n };\n\n /**\n * A pre-handler for start event that checks if we can start dragging.\n *\n * @private\n * @memberof Dragger.prototype\n * @param {(PointerEvent|TouchEvent|MouseEvent)} e\n */\n Dragger.prototype._preStartCheck = function(e) {\n if (this._isDestroyed) return;\n\n // Make sure the element is not being dragged currently.\n if (this.isDragging()) return;\n\n // Special cancelable check for Android to prevent drag procedure from\n // starting if native scrolling is in progress. Part 1.\n if (isAndroid && e.cancelable === false) return;\n\n // Make sure left button is pressed on mouse.\n if (e.button) return;\n\n // Get (and set) pointer id.\n this._pointerId = Dragger._getEventPointerId(e);\n if (this._pointerId === null) return;\n\n // Store the start event and trigger start (async or sync). Pointer events\n // are emitted before touch events if the browser supports both of them. And\n // if you try to move an element before `touchstart` is emitted the pointer\n // events for that element will be canceled. The fix is to delay the emitted\n // pointer events in such a scenario by one frame so that `touchstart` has\n // time to be emitted before the element is (potentially) moved.\n this._startEvent = e;\n if (hasTouchEvents && (hasPointerEvents || hasMsPointerEvents)) {\n // Special cancelable check for Android to prevent drag procedure from\n // starting if native scrolling is in progress. Part 2.\n if (isAndroid) {\n this._element.addEventListener(\n Dragger._touchEvents.start,\n this._abortNonCancelable,\n listenerOptions\n );\n }\n raf(this._onStart);\n } else {\n this._onStart();\n }\n };\n\n /**\n * Abort start event if it turns out to be non-cancelable.\n *\n * @private\n * @memberof Dragger.prototype\n * @param {(PointerEvent|TouchEvent|MouseEvent)} e\n */\n Dragger.prototype._abortNonCancelable = function(e) {\n this._element.removeEventListener(\n Dragger._touchEvents.start,\n this._abortNonCancelable,\n listenerOptions\n );\n\n if (this._startEvent && e.cancelable === false) {\n this._pointerId = null;\n this._startEvent = null;\n }\n };\n\n /**\n * Start the drag procedure if possible.\n *\n * @private\n * @memberof Dragger.prototype\n */\n Dragger.prototype._onStart = function() {\n var e = this._startEvent;\n if (!e) return;\n\n this._startEvent = null;\n\n var touch = this._getTrackedTouch(e);\n if (!touch) return;\n\n // Set up init data and emit start event.\n this._startX = this._currentX = touch.clientX;\n this._startY = this._currentY = touch.clientY;\n this._startTime = Date.now();\n this._emit(events.start, e);\n Dragger._activateInstance(this);\n };\n\n /**\n * Handler for move event.\n *\n * @private\n * @memberof Dragger.prototype\n * @param {(PointerEvent|TouchEvent|MouseEvent)} e\n */\n Dragger.prototype._onMove = function(e) {\n var touch = this._getTrackedTouch(e);\n if (!touch) return;\n\n this._currentX = touch.clientX;\n this._currentY = touch.clientY;\n this._emit(events.move, e);\n };\n\n /**\n * Handler for move cancel event.\n *\n * @private\n * @memberof Dragger.prototype\n * @param {(PointerEvent|TouchEvent|MouseEvent)} e\n */\n Dragger.prototype._onCancel = function(e) {\n if (!this._getTrackedTouch(e)) return;\n\n this._emit(events.cancel, e);\n this._reset();\n };\n\n /**\n * Handler for end event.\n *\n * @private\n * @memberof Dragger.prototype\n * @param {(PointerEvent|TouchEvent|MouseEvent)} e\n */\n Dragger.prototype._onEnd = function(e) {\n if (!this._getTrackedTouch(e)) return;\n\n this._emit(events.end, e);\n this._reset();\n };\n\n /**\n * Public prototype methods\n * ************************\n */\n\n /**\n * Check if the element is being dragged at the moment.\n *\n * @public\n * @memberof Dragger.prototype\n * @returns {Boolean}\n */\n Dragger.prototype.isDragging = function() {\n return this._pointerId !== null;\n };\n\n /**\n * Set element's touch-action CSS property.\n *\n * @public\n * @memberof Dragger.prototype\n * @param {String} value\n */\n Dragger.prototype.setTouchAction = function(value) {\n // Store unmodified touch action value (we trust user input here).\n this._touchAction = value;\n\n // Set touch-action style.\n if (taPropPrefixed) {\n this._cssProps[taPropPrefixed] = '';\n this._element.style[taPropPrefixed] = value;\n }\n\n // If we have an unsupported touch-action value let's add a special listener\n // that prevents default action on touch start event. A dirty hack, but best\n // we can do for now. The other options would be to somehow polyfill the\n // unsupported touch action behavior with custom heuristics which sounds like\n // a can of worms.\n if (hasTouchEvents) {\n this._element.removeEventListener(Dragger._touchEvents.start, Dragger._preventDefault, false);\n if (this._element.style[taPropPrefixed] !== value) {\n this._element.addEventListener(Dragger._touchEvents.start, Dragger._preventDefault, false);\n }\n }\n };\n\n /**\n * Update element's CSS properties. Accepts an object with camel cased style\n * props with value pairs as it's first argument.\n *\n * @public\n * @memberof Dragger.prototype\n * @param {Object} [newProps]\n */\n Dragger.prototype.setCssProps = function(newProps) {\n if (!newProps) return;\n\n var currentProps = this._cssProps;\n var element = this._element;\n var prop;\n var prefixedProp;\n\n // Reset current props.\n for (prop in currentProps) {\n element.style[prop] = currentProps[prop];\n delete currentProps[prop];\n }\n\n // Set new props.\n for (prop in newProps) {\n // Make sure we have a value for the prop.\n if (!newProps[prop]) continue;\n\n // Special handling for touch-action.\n if (prop === taProp) {\n this.setTouchAction(newProps[prop]);\n continue;\n }\n\n // Get prefixed prop and skip if it does not exist.\n prefixedProp = getPrefixedPropName(element.style, prop);\n if (!prefixedProp) continue;\n\n // Store the prop and add the style.\n currentProps[prefixedProp] = '';\n element.style[prefixedProp] = newProps[prop];\n }\n };\n\n /**\n * How much the pointer has moved on x-axis from start position, in pixels.\n * Positive value indicates movement from left to right.\n *\n * @public\n * @memberof Dragger.prototype\n * @returns {Number}\n */\n Dragger.prototype.getDeltaX = function() {\n return this._currentX - this._startX;\n };\n\n /**\n * How much the pointer has moved on y-axis from start position, in pixels.\n * Positive value indicates movement from top to bottom.\n *\n * @public\n * @memberof Dragger.prototype\n * @returns {Number}\n */\n Dragger.prototype.getDeltaY = function() {\n return this._currentY - this._startY;\n };\n\n /**\n * How far (in pixels) has pointer moved from start position.\n *\n * @public\n * @memberof Dragger.prototype\n * @returns {Number}\n */\n Dragger.prototype.getDistance = function() {\n var x = this.getDeltaX();\n var y = this.getDeltaY();\n return Math.sqrt(x * x + y * y);\n };\n\n /**\n * How long has pointer been dragged.\n *\n * @public\n * @memberof Dragger.prototype\n * @returns {Number}\n */\n Dragger.prototype.getDeltaTime = function() {\n return this._startTime ? Date.now() - this._startTime : 0;\n };\n\n /**\n * Bind drag event listeners.\n *\n * @public\n * @memberof Dragger.prototype\n * @param {String} eventName\n * - 'start', 'move', 'cancel' or 'end'.\n * @param {Function} listener\n */\n Dragger.prototype.on = function(eventName, listener) {\n this._emitter.on(eventName, listener);\n };\n\n /**\n * Unbind drag event listeners.\n *\n * @public\n * @memberof Dragger.prototype\n * @param {String} eventName\n * - 'start', 'move', 'cancel' or 'end'.\n * @param {Function} listener\n */\n Dragger.prototype.off = function(events, listener) {\n this._emitter.off(eventName, listener);\n };\n\n /**\n * Destroy the instance and unbind all drag event listeners.\n *\n * @public\n * @memberof Dragger.prototype\n */\n Dragger.prototype.destroy = function() {\n if (this._isDestroyed) return;\n\n var element = this._element;\n var events = Dragger._events;\n\n // Reset data and deactivate the instance.\n this._reset();\n\n // Destroy emitter.\n this._emitter.destroy();\n\n // Unbind event handlers.\n element.removeEventListener(events.start, this._preStartCheck, listenerOptions);\n element.removeEventListener(Dragger._mouseEvents.start, this._preStartCheck, listenerOptions);\n element.removeEventListener('dragstart', Dragger._preventDefault, false);\n element.removeEventListener(Dragger._touchEvents.start, Dragger._preventDefault, false);\n\n // Reset styles.\n for (var prop in this._cssProps) {\n element.style[prop] = this._cssProps[prop];\n delete this._cssProps[prop];\n }\n\n // Reset data.\n this._element = null;\n\n // Mark as destroyed.\n this._isDestroyed = true;\n };\n\n /**\n * A ticker system for handling DOM reads and writes in an efficient way.\n * Contains a read queue and a write queue that are processed on the next\n * animation frame when needed.\n *\n * @class\n */\n function Ticker() {\n this._nextStep = null;\n\n this._queue = [];\n this._reads = {};\n this._writes = {};\n\n this._batch = [];\n this._batchReads = {};\n this._batchWrites = {};\n\n this._step = this._step.bind(this);\n }\n\n Ticker.prototype.add = function(id, readOperation, writeOperation, isPrioritized) {\n // First, let's check if an item has been added to the queues with the same id\n // and if so -> remove it.\n var currentIndex = this._queue.indexOf(id);\n if (currentIndex > -1) this._queue[currentIndex] = undefined;\n\n // Add entry.\n isPrioritized ? this._queue.unshift(id) : this._queue.push(id);\n this._reads[id] = readOperation;\n this._writes[id] = writeOperation;\n\n // Finally, let's kick-start the next tick if it is not running yet.\n if (!this._nextStep) this._nextStep = raf(this._step);\n };\n\n Ticker.prototype.cancel = function(id) {\n var currentIndex = this._queue.indexOf(id);\n if (currentIndex > -1) {\n this._queue[currentIndex] = undefined;\n delete this._reads[id];\n delete this._writes[id];\n }\n };\n\n Ticker.prototype._step = function() {\n var queue = this._queue;\n var reads = this._reads;\n var writes = this._writes;\n var batch = this._batch;\n var batchReads = this._batchReads;\n var batchWrites = this._batchWrites;\n var length = queue.length;\n var id;\n var i;\n\n // Reset ticker.\n this._nextStep = null;\n\n // Setup queues and callback placeholders.\n for (i = 0; i < length; i++) {\n id = queue[i];\n if (!id) continue;\n\n batch.push(id);\n\n batchReads[id] = reads[id];\n delete reads[id];\n\n batchWrites[id] = writes[id];\n delete writes[id];\n }\n\n // Reset queue.\n queue.length = 0;\n\n // Process read callbacks.\n for (i = 0; i < length; i++) {\n id = batch[i];\n if (batchReads[id]) {\n batchReads[id]();\n delete batchReads[id];\n }\n }\n\n // Process write callbacks.\n for (i = 0; i < length; i++) {\n id = batch[i];\n if (batchWrites[id]) {\n batchWrites[id]();\n delete batchWrites[id];\n }\n }\n\n // Reset batch.\n batch.length = 0;\n\n // Restart the ticker if needed.\n if (!this._nextStep && queue.length) {\n this._nextStep = raf(this._step);\n }\n };\n\n var ticker = new Ticker();\n\n var layoutTick = 'layout';\n var visibilityTick = 'visibility';\n var moveTick = 'move';\n var scrollTick = 'scroll';\n var placeholderTick = 'placeholder';\n\n function addLayoutTick(itemId, readCallback, writeCallback) {\n return ticker.add(itemId + layoutTick, readCallback, writeCallback);\n }\n\n function cancelLayoutTick(itemId) {\n return ticker.cancel(itemId + layoutTick);\n }\n\n function addVisibilityTick(itemId, readCallback, writeCallback) {\n return ticker.add(itemId + visibilityTick, readCallback, writeCallback);\n }\n\n function cancelVisibilityTick(itemId) {\n return ticker.cancel(itemId + visibilityTick);\n }\n\n function addMoveTick(itemId, readCallback, writeCallback) {\n return ticker.add(itemId + moveTick, readCallback, writeCallback, true);\n }\n\n function cancelMoveTick(itemId) {\n return ticker.cancel(itemId + moveTick);\n }\n\n function addScrollTick(itemId, readCallback, writeCallback) {\n return ticker.add(itemId + scrollTick, readCallback, writeCallback, true);\n }\n\n function cancelScrollTick(itemId) {\n return ticker.cancel(itemId + scrollTick);\n }\n\n function addPlaceholderTick(itemId, readCallback, writeCallback) {\n return ticker.add(itemId + placeholderTick, readCallback, writeCallback);\n }\n\n function cancelPlaceholderTick(itemId) {\n return ticker.cancel(itemId + placeholderTick);\n }\n\n var ElProto = window.Element.prototype;\n var matchesFn =\n ElProto.matches ||\n ElProto.matchesSelector ||\n ElProto.webkitMatchesSelector ||\n ElProto.mozMatchesSelector ||\n ElProto.msMatchesSelector ||\n ElProto.oMatchesSelector ||\n function() {\n return false;\n };\n\n /**\n * Check if element matches a CSS selector.\n *\n * @param {Element} el\n * @param {String} selector\n * @returns {Boolean}\n */\n function elementMatches(el, selector) {\n return matchesFn.call(el, selector);\n }\n\n /**\n * Add class to an element.\n *\n * @param {HTMLElement} element\n * @param {String} className\n */\n function addClass(element, className) {\n if (element.classList) {\n element.classList.add(className);\n } else {\n if (!elementMatches(element, '.' + className)) {\n element.className += ' ' + className;\n }\n }\n }\n\n var tempArray = [];\n var numberType = 'number';\n\n /**\n * Insert an item or an array of items to array to a specified index. Mutates\n * the array. The index can be negative in which case the items will be added\n * to the end of the array.\n *\n * @param {Array} array\n * @param {*} items\n * @param {Number} [index=-1]\n */\n function arrayInsert(array, items, index) {\n var startIndex = typeof index === numberType ? index : -1;\n if (startIndex < 0) startIndex = array.length - startIndex + 1;\n\n array.splice.apply(array, tempArray.concat(startIndex, 0, items));\n tempArray.length = 0;\n }\n\n /**\n * Normalize array index. Basically this function makes sure that the provided\n * array index is within the bounds of the provided array and also transforms\n * negative index to the matching positive index.\n *\n * @param {Array} array\n * @param {Number} index\n * @param {Boolean} isMigration\n */\n function normalizeArrayIndex(array, index, isMigration) {\n var length = array.length;\n var maxIndex = Math.max(0, isMigration ? length : length - 1);\n return index > maxIndex ? maxIndex : index < 0 ? Math.max(maxIndex + index + 1, 0) : index;\n }\n\n /**\n * Move array item to another index.\n *\n * @param {Array} array\n * @param {Number} fromIndex\n * - Index (positive or negative) of the item that will be moved.\n * @param {Number} toIndex\n * - Index (positive or negative) where the item should be moved to.\n */\n function arrayMove(array, fromIndex, toIndex) {\n // Make sure the array has two or more items.\n if (array.length < 2) return;\n\n // Normalize the indices.\n var from = normalizeArrayIndex(array, fromIndex);\n var to = normalizeArrayIndex(array, toIndex);\n\n // Add target item to the new position.\n if (from !== to) {\n array.splice(to, 0, array.splice(from, 1)[0]);\n }\n }\n\n /**\n * Swap array items.\n *\n * @param {Array} array\n * @param {Number} index\n * - Index (positive or negative) of the item that will be swapped.\n * @param {Number} withIndex\n * - Index (positive or negative) of the other item that will be swapped.\n */\n function arraySwap(array, index, withIndex) {\n // Make sure the array has two or more items.\n if (array.length < 2) return;\n\n // Normalize the indices.\n var indexA = normalizeArrayIndex(array, index);\n var indexB = normalizeArrayIndex(array, withIndex);\n var temp;\n\n // Swap the items.\n if (indexA !== indexB) {\n temp = array[indexA];\n array[indexA] = array[indexB];\n array[indexB] = temp;\n }\n }\n\n var actionCancel = 'cancel';\n var actionFinish = 'finish';\n var debounceTick = 'debounce';\n var debounceId = 0;\n\n /**\n * Returns a function, that, as long as it continues to be invoked, will not\n * be triggered. The function will be called after it stops being called for\n * N milliseconds. The returned function accepts one argument which, when\n * being \"finish\", calls the debounce function immediately if it is currently\n * waiting to be called, and when being \"cancel\" cancels the currently queued\n * function call.\n *\n * @param {Function} fn\n * @param {Number} wait\n * @returns {Function}\n */\n function debounce(fn, wait) {\n var timeout;\n var tickerId = ++debounceId + debounceTick;\n\n if (wait > 0) {\n return function(action) {\n if (timeout !== undefined) {\n timeout = window.clearTimeout(timeout);\n ticker.cancel(tickerId);\n if (action === actionFinish) fn();\n }\n\n if (action !== actionCancel && action !== actionFinish) {\n timeout = window.setTimeout(function() {\n timeout = undefined;\n ticker.add(tickerId, fn, null, true);\n }, wait);\n }\n };\n }\n\n return function(action) {\n if (action !== actionCancel) fn();\n };\n }\n\n /**\n * Returns true if element is transformed, false if not. In practice the\n * element's display value must be anything else than \"none\" or \"inline\" as\n * well as have a valid transform value applied in order to be counted as a\n * transformed element.\n *\n * Borrowed from Mezr (v0.6.1):\n * https://github.com/niklasramo/mezr/blob/0.6.1/mezr.js#L661\n *\n * @param {HTMLElement} element\n * @returns {Boolean}\n */\n function isTransformed(element) {\n var transform = getStyle(element, 'transform');\n if (!transform || transform === 'none') return false;\n\n var display = getStyle(element, 'display');\n if (display === 'inline' || display === 'none') return false;\n\n return true;\n }\n\n /**\n * Returns an absolute positioned element's containing block, which is\n * considered to be the closest ancestor element that the target element's\n * positioning is relative to. Disclaimer: this only works as intended for\n * absolute positioned elements.\n *\n * @param {HTMLElement} element\n * @param {Boolean} [includeSelf=false]\n * - When this is set to true the containing block checking is started from\n * the provided element. Otherwise the checking is started from the\n * provided element's parent element.\n * @returns {(Document|Element)}\n */\n function getContainingBlock(element, includeSelf) {\n // As long as the containing block is an element, static and not\n // transformed, try to get the element's parent element and fallback to\n // document. https://github.com/niklasramo/mezr/blob/0.6.1/mezr.js#L339\n var document = window.document;\n var ret = (includeSelf ? element : element.parentElement) || document;\n while (ret && ret !== document && getStyle(ret, 'position') === 'static' && !isTransformed(ret)) {\n ret = ret.parentElement || document;\n }\n return ret;\n }\n\n /**\n * Returns the computed value of an element's style property transformed into\n * a float value.\n *\n * @param {HTMLElement} el\n * @param {String} style\n * @returns {Number}\n */\n function getStyleAsFloat(el, style) {\n return parseFloat(getStyle(el, style)) || 0;\n }\n\n var offsetA = {};\n var offsetB = {};\n var offsetDiff = {};\n\n /**\n * Returns the element's document offset, which in practice means the vertical\n * and horizontal distance between the element's northwest corner and the\n * document's northwest corner. Note that this function always returns the same\n * object so be sure to read the data from it instead using it as a reference.\n *\n * @param {(Document|Element|Window)} element\n * @param {Object} [offsetData]\n * - Optional data object where the offset data will be inserted to. If not\n * provided a new object will be created for the return data.\n * @returns {Object}\n */\n function getOffset(element, offsetData) {\n var ret = offsetData || {};\n var rect;\n\n // Set up return data.\n ret.left = 0;\n ret.top = 0;\n\n // Document's offsets are always 0.\n if (element === document) return ret;\n\n // Add viewport scroll left/top to the respective offsets.\n ret.left = window.pageXOffset || 0;\n ret.top = window.pageYOffset || 0;\n\n // Window's offsets are the viewport scroll left/top values.\n if (element.self === window.self) return ret;\n\n // Add element's client rects to the offsets.\n rect = element.getBoundingClientRect();\n ret.left += rect.left;\n ret.top += rect.top;\n\n // Exclude element's borders from the offset.\n ret.left += getStyleAsFloat(element, 'border-left-width');\n ret.top += getStyleAsFloat(element, 'border-top-width');\n\n return ret;\n }\n\n /**\n * Calculate the offset difference two elements.\n *\n * @param {HTMLElement} elemA\n * @param {HTMLElement} elemB\n * @param {Boolean} [compareContainingBlocks=false]\n * - When this is set to true the containing blocks of the provided elements\n * will be used for calculating the difference. Otherwise the provided\n * elements will be compared directly.\n * @returns {Object}\n */\n function getOffsetDiff(elemA, elemB, compareContainingBlocks) {\n offsetDiff.left = 0;\n offsetDiff.top = 0;\n\n // If elements are same let's return early.\n if (elemA === elemB) return offsetDiff;\n\n // Compare containing blocks if necessary.\n if (compareContainingBlocks) {\n elemA = getContainingBlock(elemA, true);\n elemB = getContainingBlock(elemB, true);\n\n // If containing blocks are identical, let's return early.\n if (elemA === elemB) return offsetDiff;\n }\n\n // Finally, let's calculate the offset diff.\n getOffset(elemA, offsetA);\n getOffset(elemB, offsetB);\n offsetDiff.left = offsetB.left - offsetA.left;\n offsetDiff.top = offsetB.top - offsetA.top;\n\n return offsetDiff;\n }\n\n var styleOverflow = 'overflow';\n var styleOverflowX = 'overflow-x';\n var styleOverflowY = 'overflow-y';\n var overflowAuto = 'auto';\n var overflowScroll = 'scroll';\n\n /**\n * Check if an element is scrollable.\n *\n * @param {HTMLElement} element\n * @returns {Boolean}\n */\n function isScrollable(element) {\n var overflow = getStyle(element, styleOverflow);\n if (overflow === overflowAuto || overflow === overflowScroll) return true;\n\n overflow = getStyle(element, styleOverflowX);\n if (overflow === overflowAuto || overflow === overflowScroll) return true;\n\n overflow = getStyle(element, styleOverflowY);\n if (overflow === overflowAuto || overflow === overflowScroll) return true;\n\n return false;\n }\n\n /**\n * Collect element's ancestors that are potentially scrollable elements.\n *\n * @param {HTMLElement} element\n * @param {Boolean} [includeSelf=false]\n * @param {Array} [data]\n * @returns {Array}\n */\n function getScrollableAncestors(element, includeSelf, data) {\n var ret = data || [];\n var parent = includeSelf ? element : element.parentNode;\n\n // Find scroll parents.\n while (parent && parent !== document) {\n // If element is inside ShadowDOM let's get it's host node from the real\n // DOM and continue looping.\n if (parent.getRootNode && parent instanceof DocumentFragment) {\n parent = parent.getRootNode().host;\n continue;\n }\n\n // If element is scrollable let's add it to the scrollable list.\n if (isScrollable(parent)) {\n ret.push(parent);\n }\n\n parent = parent.parentNode;\n }\n\n // Always add window to the results.\n ret.push(window);\n\n return ret;\n }\n\n var translateValue = {};\n var transformStyle$2 = 'transform';\n var transformNone = 'none';\n var rxMat3d = /^matrix3d/;\n var rxMatTx = /([^,]*,){4}/;\n var rxMat3dTx = /([^,]*,){12}/;\n var rxNextItem = /[^,]*,/;\n\n /**\n * Returns the element's computed translateX and translateY values as a floats.\n * The returned object is always the same object and updated every time this\n * function is called.\n *\n * @param {HTMLElement} element\n * @returns {Object}\n */\n function getTranslate(element) {\n translateValue.x = 0;\n translateValue.y = 0;\n\n var transform = getStyle(element, transformStyle$2);\n if (!transform || transform === transformNone) {\n return translateValue;\n }\n\n // Transform style can be in either matrix3d(...) or matrix(...).\n var isMat3d = rxMat3d.test(transform);\n var tX = transform.replace(isMat3d ? rxMat3dTx : rxMatTx, '');\n var tY = tX.replace(rxNextItem, '');\n\n translateValue.x = parseFloat(tX) || 0;\n translateValue.y = parseFloat(tY) || 0;\n\n return translateValue;\n }\n\n /**\n * Transform translateX and translateY value into CSS transform style\n * property's value.\n *\n * @param {Number} x\n * @param {Number} y\n * @returns {String}\n */\n function getTranslateString(x, y) {\n return 'translateX(' + x + 'px) translateY(' + y + 'px)';\n }\n\n /**\n * Remove class from an element.\n *\n * @param {HTMLElement} element\n * @param {String} className\n */\n function removeClass(element, className) {\n if (element.classList) {\n element.classList.remove(className);\n } else {\n if (elementMatches(element, '.' + className)) {\n element.className = (' ' + element.className + ' ')\n .replace(' ' + className + ' ', ' ')\n .trim();\n }\n }\n }\n\n // Drag start predicate states.\n var startPredicateInactive = 0;\n var startPredicatePending = 1;\n var startPredicateResolved = 2;\n var startPredicateRejected = 3;\n\n /**\n * Bind touch interaction to an item.\n *\n * @class\n * @param {Item} item\n */\n function ItemDrag(item) {\n var element = item._element;\n var grid = item.getGrid();\n var settings = grid._settings;\n\n this._item = item;\n this._gridId = grid._id;\n this._isDestroyed = false;\n this._isMigrating = false;\n\n // Start predicate data.\n this._startPredicate = isFunction(settings.dragStartPredicate)\n ? settings.dragStartPredicate\n : ItemDrag.defaultStartPredicate;\n this._startPredicateState = startPredicateInactive;\n this._startPredicateResult = undefined;\n\n // Data for drag sort predicate heuristics.\n this._hBlockedIndex = null;\n this._hX1 = 0;\n this._hX2 = 0;\n this._hY1 = 0;\n this._hY2 = 0;\n\n // Setup item's initial drag data.\n this._reset();\n\n // Bind the methods that needs binding.\n this._preStartCheck = this._preStartCheck.bind(this);\n this._preEndCheck = this._preEndCheck.bind(this);\n this._onScroll = this._onScroll.bind(this);\n this._prepareMove = this._prepareMove.bind(this);\n this._applyMove = this._applyMove.bind(this);\n this._prepareScroll = this._prepareScroll.bind(this);\n this._applyScroll = this._applyScroll.bind(this);\n this._checkOverlap = this._checkOverlap.bind(this);\n\n // Create debounce overlap checker function.\n var sortInterval = settings.dragSortHeuristics.sortInterval;\n this._checkOverlapDebounce = debounce(this._checkOverlap, sortInterval);\n\n // Init dragger.\n this._dragger = new Dragger(element, settings.dragCssProps);\n this._dragger.on('start', this._preStartCheck);\n this._dragger.on('move', this._preStartCheck);\n this._dragger.on('cancel', this._preEndCheck);\n this._dragger.on('end', this._preEndCheck);\n }\n\n /**\n * Public static methods\n * *********************\n */\n\n /**\n * Default drag start predicate handler that handles anchor elements\n * gracefully. The return value of this function defines if the drag is\n * started, rejected or pending. When true is returned the dragging is started\n * and when false is returned the dragging is rejected. If nothing is returned\n * the predicate will be called again on the next drag movement.\n *\n * @public\n * @memberof ItemDrag\n * @param {Item} item\n * @param {DraggerEvent} event\n * @param {Object} [options]\n * - An optional options object which can be used to pass the predicate\n * it's options manually. By default the predicate retrieves the options\n * from the grid's settings.\n * @returns {Boolean}\n */\n ItemDrag.defaultStartPredicate = function(item, event, options) {\n var drag = item._drag;\n var predicate = drag._startPredicateData || drag._setupStartPredicate(options);\n\n // Final event logic. At this stage return value does not matter anymore,\n // the predicate is either resolved or it's not and there's nothing to do\n // about it. Here we just reset data and if the item element is a link\n // we follow it (if there has only been slight movement).\n if (event.isFinal) {\n drag._finishStartPredicate(event);\n return;\n }\n\n // Find and store the handle element so we can check later on if the\n // cursor is within the handle. If we have a handle selector let's find\n // the corresponding element. Otherwise let's use the item element as the\n // handle.\n if (!predicate.handleElement) {\n predicate.handleElement = drag._getStartPredicateHandle(event);\n if (!predicate.handleElement) return false;\n }\n\n // If delay is defined let's keep track of the latest event and initiate\n // delay if it has not been done yet.\n if (predicate.delay) {\n predicate.event = event;\n if (!predicate.delayTimer) {\n predicate.delayTimer = window.setTimeout(function() {\n predicate.delay = 0;\n if (drag._resolveStartPredicate(predicate.event)) {\n drag._forceResolveStartPredicate(predicate.event);\n drag._resetStartPredicate();\n }\n }, predicate.delay);\n }\n }\n\n return drag._resolveStartPredicate(event);\n };\n\n /**\n * Default drag sort predicate.\n *\n * @public\n * @memberof ItemDrag\n * @param {Item} item\n * @param {Object} [options]\n * @param {Number} [options.threshold=50]\n * @param {String} [options.action='move']\n * @returns {(Boolean|DragSortCommand)}\n * - Returns false if no valid index was found. Otherwise returns drag sort\n * command.\n */\n ItemDrag.defaultSortPredicate = (function() {\n var itemRect = {};\n var targetRect = {};\n var returnData = {};\n var rootGridArray = [];\n\n function getTargetGrid(item, rootGrid, threshold) {\n var target = null;\n var dragSort = rootGrid._settings.dragSort;\n var bestScore = -1;\n var gridScore;\n var grids;\n var grid;\n var i;\n\n // Get potential target grids.\n if (dragSort === true) {\n rootGridArray[0] = rootGrid;\n grids = rootGridArray;\n } else {\n grids = dragSort.call(rootGrid, item);\n }\n\n // Return immediately if there are no grids.\n if (!Array.isArray(grids)) return target;\n\n // Loop through the grids and get the best match.\n for (i = 0; i < grids.length; i++) {\n grid = grids[i];\n\n // Filter out all destroyed grids.\n if (grid._isDestroyed) continue;\n\n // We need to update the grid's offsets and dimensions since they might\n // have changed (e.g during scrolling).\n grid._updateBoundingRect();\n\n // Check how much dragged element overlaps the container element.\n targetRect.width = grid._width;\n targetRect.height = grid._height;\n targetRect.left = grid._left;\n targetRect.top = grid._top;\n gridScore = getRectOverlapScore(itemRect, targetRect);\n\n // Check if this grid is the best match so far.\n if (gridScore > threshold && gridScore > bestScore) {\n bestScore = gridScore;\n target = grid;\n }\n }\n\n // Always reset root grid array.\n rootGridArray.length = 0;\n\n return target;\n }\n\n return function(item, options) {\n var drag = item._drag;\n var rootGrid = drag._getGrid();\n\n // Get drag sort predicate settings.\n var sortThreshold = options && typeof options.threshold === 'number' ? options.threshold : 50;\n var sortAction = options && options.action === actionSwap ? actionSwap : actionMove;\n\n // Populate item rect data.\n itemRect.width = item._width;\n itemRect.height = item._height;\n itemRect.left = drag._elementClientX;\n itemRect.top = drag._elementClientY;\n\n // Calculate the target grid.\n var grid = getTargetGrid(item, rootGrid, sortThreshold);\n\n // Return early if we found no grid container element that overlaps the\n // dragged item enough.\n if (!grid) return false;\n\n var gridOffsetLeft = 0;\n var gridOffsetTop = 0;\n var matchScore = -1;\n var matchIndex;\n var hasValidTargets;\n var target;\n var score;\n var i;\n\n // If item is moved within it's originating grid adjust item's left and\n // top props. Otherwise if item is moved to/within another grid get the\n // container element's offset (from the element's content edge).\n if (grid === rootGrid) {\n itemRect.left = drag._gridX + item._marginLeft;\n itemRect.top = drag._gridY + item._marginTop;\n } else {\n grid._updateBorders(1, 0, 1, 0);\n gridOffsetLeft = grid._left + grid._borderLeft;\n gridOffsetTop = grid._top + grid._borderTop;\n }\n\n // Loop through the target grid items and try to find the best match.\n for (i = 0; i < grid._items.length; i++) {\n target = grid._items[i];\n\n // If the target item is not active or the target item is the dragged\n // item let's skip to the next item.\n if (!target._isActive || target === item) {\n continue;\n }\n\n // Mark the grid as having valid target items.\n hasValidTargets = true;\n\n // Calculate the target's overlap score with the dragged item.\n targetRect.width = target._width;\n targetRect.height = target._height;\n targetRect.left = target._left + target._marginLeft + gridOffsetLeft;\n targetRect.top = target._top + target._marginTop + gridOffsetTop;\n score = getRectOverlapScore(itemRect, targetRect);\n\n // Update best match index and score if the target's overlap score with\n // the dragged item is higher than the current best match score.\n if (score > matchScore) {\n matchIndex = i;\n matchScore = score;\n }\n }\n\n // If there is no valid match and the item is being moved into another\n // grid.\n if (matchScore < sortThreshold && item.getGrid() !== grid) {\n matchIndex = hasValidTargets ? -1 : 0;\n matchScore = Infinity;\n }\n\n // Check if the best match overlaps enough to justify a placement switch.\n if (matchScore >= sortThreshold) {\n returnData.grid = grid;\n returnData.index = matchIndex;\n returnData.action = sortAction;\n return returnData;\n }\n\n return false;\n };\n })();\n\n /**\n * Public prototype methods\n * ************************\n */\n\n /**\n * Abort dragging and reset drag data.\n *\n * @public\n * @memberof ItemDrag.prototype\n * @returns {ItemDrag}\n */\n ItemDrag.prototype.stop = function() {\n var item = this._item;\n var element = item._element;\n var grid = this._getGrid();\n\n if (!this._isActive) return this;\n\n // If the item is being dropped into another grid, finish it up and return\n // immediately.\n if (this._isMigrating) {\n this._finishMigration();\n return this;\n }\n\n // Cancel queued move and scroll ticks.\n cancelMoveTick(item._id);\n cancelScrollTick(item._id);\n\n // Remove scroll listeners.\n this._unbindScrollListeners();\n\n // Cancel overlap check.\n this._checkOverlapDebounce('cancel');\n\n // Append item element to the container if it's not it's child. Also make\n // sure the translate values are adjusted to account for the DOM shift.\n if (element.parentNode !== grid._element) {\n grid._element.appendChild(element);\n element.style[transformProp] = getTranslateString(this._gridX, this._gridY);\n }\n\n // Remove dragging class.\n removeClass(element, grid._settings.itemDraggingClass);\n\n // Reset drag data.\n this._reset();\n\n return this;\n };\n\n /**\n * Destroy instance.\n *\n * @public\n * @memberof ItemDrag.prototype\n * @returns {ItemDrag}\n */\n ItemDrag.prototype.destroy = function() {\n if (this._isDestroyed) return this;\n this.stop();\n this._dragger.destroy();\n this._isDestroyed = true;\n return this;\n };\n\n /**\n * Private prototype methods\n * *************************\n */\n\n /**\n * Get Grid instance.\n *\n * @private\n * @memberof ItemDrag.prototype\n * @returns {?Grid}\n */\n ItemDrag.prototype._getGrid = function() {\n return gridInstances[this._gridId] || null;\n };\n\n /**\n * Setup/reset drag data.\n *\n * @private\n * @memberof ItemDrag.prototype\n */\n ItemDrag.prototype._reset = function() {\n // Is item being dragged?\n this._isActive = false;\n\n // The dragged item's container element.\n this._container = null;\n\n // The dragged item's containing block.\n this._containingBlock = null;\n\n // Drag/scroll event data.\n this._dragEvent = null;\n this._scrollEvent = null;\n\n // All the elements which need to be listened for scroll events during\n // dragging.\n this._scrollers = [];\n\n // The current translateX/translateY position.\n this._left = 0;\n this._top = 0;\n\n // Dragged element's current position within the grid.\n this._gridX = 0;\n this._gridY = 0;\n\n // Dragged element's current offset from window's northwest corner. Does\n // not account for element's margins.\n this._elementClientX = 0;\n this._elementClientY = 0;\n\n // Offset difference between the dragged element's temporary drag\n // container and it's original container.\n this._containerDiffX = 0;\n this._containerDiffY = 0;\n };\n\n /**\n * Bind drag scroll handlers to all scrollable ancestor elements of the\n * dragged element and the drag container element.\n *\n * @private\n * @memberof ItemDrag.prototype\n */\n ItemDrag.prototype._bindScrollListeners = function() {\n var gridContainer = this._getGrid()._element;\n var dragContainer = this._container;\n var scrollers = this._scrollers;\n var gridScrollers;\n var i;\n\n // Get dragged element's scrolling parents.\n scrollers.length = 0;\n getScrollableAncestors(this._item._element, false, scrollers);\n\n // If drag container is defined and it's not the same element as grid\n // container then we need to add the grid container and it's scroll parents\n // to the elements which are going to be listener for scroll events.\n if (dragContainer !== gridContainer) {\n gridScrollers = [];\n getScrollableAncestors(gridContainer, true, gridScrollers);\n for (i = 0; i < gridScrollers.length; i++) {\n if (scrollers.indexOf(gridScrollers[i]) < 0) {\n scrollers.push(gridScrollers[i]);\n }\n }\n }\n\n // Bind scroll listeners.\n for (i = 0; i < scrollers.length; i++) {\n scrollers[i].addEventListener('scroll', this._onScroll);\n }\n };\n\n /**\n * Unbind currently bound drag scroll handlers from all scrollable ancestor\n * elements of the dragged element and the drag container element.\n *\n * @private\n * @memberof ItemDrag.prototype\n */\n ItemDrag.prototype._unbindScrollListeners = function() {\n var scrollers = this._scrollers;\n var i;\n\n for (i = 0; i < scrollers.length; i++) {\n scrollers[i].removeEventListener('scroll', this._onScroll);\n }\n\n scrollers.length = 0;\n };\n\n /**\n * Setup default start predicate.\n *\n * @private\n * @memberof ItemDrag.prototype\n * @param {Object} [options]\n * @returns {Object}\n */\n ItemDrag.prototype._setupStartPredicate = function(options) {\n var config = options || this._getGrid()._settings.dragStartPredicate || 0;\n return (this._startPredicateData = {\n distance: Math.abs(config.distance) || 0,\n delay: Math.max(config.delay, 0) || 0,\n handle: typeof config.handle === 'string' ? config.handle : false\n });\n };\n\n /**\n * Setup default start predicate handle.\n *\n * @private\n * @memberof ItemDrag.prototype\n * @param {DraggerEvent} event\n * @returns {?HTMLElement}\n */\n ItemDrag.prototype._getStartPredicateHandle = function(event) {\n var predicate = this._startPredicateData;\n var element = this._item._element;\n var handleElement = element;\n\n // No handle, no hassle -> let's use the item element as the handle.\n if (!predicate.handle) return handleElement;\n\n // If there is a specific predicate handle defined, let's try to get it.\n handleElement = event.target;\n while (handleElement && !elementMatches(handleElement, predicate.handle)) {\n handleElement = handleElement !== element ? handleElement.parentElement : null;\n }\n return handleElement || null;\n };\n\n /**\n * Unbind currently bound drag scroll handlers from all scrollable ancestor\n * elements of the dragged element and the drag container element.\n *\n * @private\n * @memberof ItemDrag.prototype\n * @param {DraggerEvent} event\n * @returns {Boolean}\n */\n ItemDrag.prototype._resolveStartPredicate = function(event) {\n var predicate = this._startPredicateData;\n\n // If the moved distance is smaller than the threshold distance or there is\n // some delay left, ignore this predicate cycle.\n if (event.distance < predicate.distance || predicate.delay) return;\n\n // Get handle rect data.\n var handleRect = predicate.handleElement.getBoundingClientRect();\n var handleLeft = handleRect.left + (window.pageXOffset || 0);\n var handleTop = handleRect.top + (window.pageYOffset || 0);\n var handleWidth = handleRect.width;\n var handleHeight = handleRect.height;\n\n // Reset predicate data.\n this._resetStartPredicate();\n\n // If the cursor is still within the handle let's start the drag.\n return (\n handleWidth &&\n handleHeight &&\n event.pageX >= handleLeft &&\n event.pageX < handleLeft + handleWidth &&\n event.pageY >= handleTop &&\n event.pageY < handleTop + handleHeight\n );\n };\n\n /**\n * Forcefully resolve drag start predicate.\n *\n * @private\n * @memberof ItemDrag.prototype\n * @param {DraggerEvent} event\n */\n ItemDrag.prototype._forceResolveStartPredicate = function(event) {\n if (!this._isDestroyed && this._startPredicateState === startPredicatePending) {\n this._startPredicateState = startPredicateResolved;\n this._onStart(event);\n }\n };\n\n /**\n * Finalize start predicate.\n *\n * @private\n * @memberof ItemDrag.prototype\n * @param {DraggerEvent} event\n */\n ItemDrag.prototype._finishStartPredicate = function(event) {\n var element = this._item._element;\n\n // Check if this is a click (very subjective heuristics).\n var isClick = Math.abs(event.deltaX) < 2 && Math.abs(event.deltaY) < 2 && event.deltaTime < 200;\n\n // Reset predicate.\n this._resetStartPredicate();\n\n // If the gesture can be interpreted as click let's try to open the element's\n // href url (if it is an anchor element).\n if (isClick) openAnchorHref(element);\n };\n\n /**\n * Reset drag sort heuristics.\n *\n * @private\n * @memberof ItemDrag.prototype\n * @param {DraggerEvent} event\n */\n ItemDrag.prototype._resetHeuristics = function(event) {\n this._hBlockedIndex = null;\n this._hX1 = this._hX2 = event.clientX;\n this._hY1 = this._hY2 = event.clientY;\n };\n\n /**\n * Run heuristics and return true if overlap check can be performed, and false\n * if it can not.\n *\n * @private\n * @memberof ItemDrag.prototype\n * @param {DraggerEvent} event\n * @returns {Boolean}\n */\n ItemDrag.prototype._checkHeuristics = function(event) {\n var settings = this._getGrid()._settings.dragSortHeuristics;\n var minDist = settings.minDragDistance;\n\n // Skip heuristics if not needed.\n if (minDist <= 0) {\n this._hBlockedIndex = null;\n return true;\n }\n\n var x = event.clientX;\n var y = event.clientY;\n var diffX = x - this._hX2;\n var diffY = y - this._hY2;\n\n // If we can't do proper bounce back check make sure that the blocked index\n // is not set.\n var canCheckBounceBack = minDist > 3 && settings.minBounceBackAngle > 0;\n if (!canCheckBounceBack) {\n this._hBlockedIndex = null;\n }\n\n if (Math.abs(diffX) > minDist || Math.abs(diffY) > minDist) {\n // Reset blocked index if angle changed enough. This check requires a\n // minimum value of 3 for minDragDistance to function properly.\n if (canCheckBounceBack) {\n var angle = Math.atan2(diffX, diffY);\n var prevAngle = Math.atan2(this._hX2 - this._hX1, this._hY2 - this._hY1);\n var deltaAngle = Math.atan2(Math.sin(angle - prevAngle), Math.cos(angle - prevAngle));\n if (Math.abs(deltaAngle) > settings.minBounceBackAngle) {\n this._hBlockedIndex = null;\n }\n }\n\n // Update points.\n this._hX1 = this._hX2;\n this._hY1 = this._hY2;\n this._hX2 = x;\n this._hY2 = y;\n\n return true;\n }\n\n return false;\n };\n\n /**\n * Reset for default drag start predicate function.\n *\n * @private\n * @memberof ItemDrag.prototype\n */\n ItemDrag.prototype._resetStartPredicate = function() {\n var predicate = this._startPredicateData;\n if (predicate) {\n if (predicate.delayTimer) {\n predicate.delayTimer = window.clearTimeout(predicate.delayTimer);\n }\n this._startPredicateData = null;\n }\n };\n\n /**\n * Check (during drag) if an item is overlapping other items and based on\n * the configuration layout the items.\n *\n * @private\n * @memberof ItemDrag.prototype\n */\n ItemDrag.prototype._checkOverlap = function() {\n if (!this._isActive) return;\n\n var item = this._item;\n var settings = this._getGrid()._settings;\n var result;\n var currentGrid;\n var currentIndex;\n var targetGrid;\n var targetIndex;\n var sortAction;\n var isMigration;\n\n // Get overlap check result.\n if (isFunction(settings.dragSortPredicate)) {\n result = settings.dragSortPredicate(item, this._dragEvent);\n } else {\n result = ItemDrag.defaultSortPredicate(item, settings.dragSortPredicate);\n }\n\n // Let's make sure the result object has a valid index before going further.\n if (!result || typeof result.index !== 'number') return;\n\n currentGrid = item.getGrid();\n targetGrid = result.grid || currentGrid;\n isMigration = currentGrid !== targetGrid;\n currentIndex = currentGrid._items.indexOf(item);\n targetIndex = normalizeArrayIndex(targetGrid._items, result.index, isMigration);\n sortAction = result.action === actionSwap ? actionSwap : actionMove;\n\n // Prevent position bounce.\n if (!isMigration && targetIndex === this._hBlockedIndex) {\n return;\n }\n\n // If the item was moved within it's current grid.\n if (!isMigration) {\n // Make sure the target index is not the current index.\n if (currentIndex !== targetIndex) {\n this._hBlockedIndex = currentIndex;\n\n // Do the sort.\n (sortAction === actionSwap ? arraySwap : arrayMove)(\n currentGrid._items,\n currentIndex,\n targetIndex\n );\n\n // Emit move event.\n if (currentGrid._hasListeners(eventMove)) {\n currentGrid._emit(eventMove, {\n item: item,\n fromIndex: currentIndex,\n toIndex: targetIndex,\n action: sortAction\n });\n }\n\n // Layout the grid.\n currentGrid.layout();\n }\n }\n\n // If the item was moved to another grid.\n else {\n this._hBlockedIndex = null;\n\n // Emit beforeSend event.\n if (currentGrid._hasListeners(eventBeforeSend)) {\n currentGrid._emit(eventBeforeSend, {\n item: item,\n fromGrid: currentGrid,\n fromIndex: currentIndex,\n toGrid: targetGrid,\n toIndex: targetIndex\n });\n }\n\n // Emit beforeReceive event.\n if (targetGrid._hasListeners(eventBeforeReceive)) {\n targetGrid._emit(eventBeforeReceive, {\n item: item,\n fromGrid: currentGrid,\n fromIndex: currentIndex,\n toGrid: targetGrid,\n toIndex: targetIndex\n });\n }\n\n // Update item's grid id reference.\n item._gridId = targetGrid._id;\n\n // Update drag instance's migrating indicator.\n this._isMigrating = item._gridId !== this._gridId;\n\n // Move item instance from current grid to target grid.\n currentGrid._items.splice(currentIndex, 1);\n arrayInsert(targetGrid._items, item, targetIndex);\n\n // Set sort data as null, which is an indicator for the item comparison\n // function that the sort data of this specific item should be fetched\n // lazily.\n item._sortData = null;\n\n // Emit send event.\n if (currentGrid._hasListeners(eventSend)) {\n currentGrid._emit(eventSend, {\n item: item,\n fromGrid: currentGrid,\n fromIndex: currentIndex,\n toGrid: targetGrid,\n toIndex: targetIndex\n });\n }\n\n // Emit receive event.\n if (targetGrid._hasListeners(eventReceive)) {\n targetGrid._emit(eventReceive, {\n item: item,\n fromGrid: currentGrid,\n fromIndex: currentIndex,\n toGrid: targetGrid,\n toIndex: targetIndex\n });\n }\n\n // Layout both grids.\n currentGrid.layout();\n targetGrid.layout();\n }\n };\n\n /**\n * If item is dragged into another grid, finish the migration process\n * gracefully.\n *\n * @private\n * @memberof ItemDrag.prototype\n */\n ItemDrag.prototype._finishMigration = function() {\n var item = this._item;\n var release = item._release;\n var element = item._element;\n var isActive = item._isActive;\n var targetGrid = item.getGrid();\n var targetGridElement = targetGrid._element;\n var targetSettings = targetGrid._settings;\n var targetContainer = targetSettings.dragContainer || targetGridElement;\n var currentSettings = this._getGrid()._settings;\n var currentContainer = element.parentNode;\n var translate;\n var offsetDiff;\n\n // Destroy current drag. Note that we need to set the migrating flag to\n // false first, because otherwise we create an infinite loop between this\n // and the drag.stop() method.\n this._isMigrating = false;\n this.destroy();\n\n // Remove current classnames.\n removeClass(element, currentSettings.itemClass);\n removeClass(element, currentSettings.itemVisibleClass);\n removeClass(element, currentSettings.itemHiddenClass);\n\n // Add new classnames.\n addClass(element, targetSettings.itemClass);\n addClass(element, isActive ? targetSettings.itemVisibleClass : targetSettings.itemHiddenClass);\n\n // Move the item inside the target container if it's different than the\n // current container.\n if (targetContainer !== currentContainer) {\n targetContainer.appendChild(element);\n offsetDiff = getOffsetDiff(currentContainer, targetContainer, true);\n translate = getTranslate(element);\n translate.x -= offsetDiff.left;\n translate.y -= offsetDiff.top;\n }\n\n // Update item's cached dimensions and sort data.\n item._refreshDimensions();\n item._refreshSortData();\n\n // Calculate the offset difference between target's drag container (if any)\n // and actual grid container element. We save it later for the release\n // process.\n offsetDiff = getOffsetDiff(targetContainer, targetGridElement, true);\n release._containerDiffX = offsetDiff.left;\n release._containerDiffY = offsetDiff.top;\n\n // Recreate item's drag handler.\n item._drag = targetSettings.dragEnabled ? new ItemDrag(item) : null;\n\n // Adjust the position of the item element if it was moved from a container\n // to another.\n if (targetContainer !== currentContainer) {\n element.style[transformProp] = getTranslateString(translate.x, translate.y);\n }\n\n // Update child element's styles to reflect the current visibility state.\n item._child.removeAttribute('style');\n setStyles(item._child, isActive ? targetSettings.visibleStyles : targetSettings.hiddenStyles);\n\n // Start the release.\n release.start();\n };\n\n /**\n * Drag pre-start handler.\n *\n * @private\n * @memberof ItemDrag.prototype\n * @param {DraggerEvent} event\n */\n ItemDrag.prototype._preStartCheck = function(event) {\n // Let's activate drag start predicate state.\n if (this._startPredicateState === startPredicateInactive) {\n this._startPredicateState = startPredicatePending;\n }\n\n // If predicate is pending try to resolve it.\n if (this._startPredicateState === startPredicatePending) {\n this._startPredicateResult = this._startPredicate(this._item, event);\n if (this._startPredicateResult === true) {\n this._startPredicateState = startPredicateResolved;\n this._onStart(event);\n } else if (this._startPredicateResult === false) {\n this._startPredicateState = startPredicateRejected;\n }\n }\n\n // Otherwise if predicate is resolved and drag is active, move the item.\n else if (this._startPredicateState === startPredicateResolved && this._isActive) {\n this._onMove(event);\n }\n };\n\n /**\n * Drag pre-end handler.\n *\n * @private\n * @memberof ItemDrag.prototype\n * @param {DraggerEvent} event\n */\n ItemDrag.prototype._preEndCheck = function(event) {\n // Check if the start predicate was resolved during drag.\n var isResolved = this._startPredicateState === startPredicateResolved;\n\n // Do final predicate check to allow user to unbind stuff for the current\n // drag procedure within the predicate callback. The return value of this\n // check will have no effect to the state of the predicate.\n this._startPredicate(this._item, event);\n\n // Reset start predicate state.\n this._startPredicateState = startPredicateInactive;\n\n // If predicate is resolved and dragging is active, call the end handler.\n if (isResolved && this._isActive) this._onEnd(event);\n };\n\n /**\n * Drag start handler.\n *\n * @private\n * @memberof ItemDrag.prototype\n * @param {DraggerEvent} event\n */\n ItemDrag.prototype._onStart = function(event) {\n var item = this._item;\n\n // If item is not active, don't start the drag.\n if (!item._isActive) return;\n\n var element = item._element;\n var grid = this._getGrid();\n var settings = grid._settings;\n var release = item._release;\n var migrate = item._migrate;\n var gridContainer = grid._element;\n var dragContainer = settings.dragContainer || gridContainer;\n var containingBlock = getContainingBlock(dragContainer, true);\n var translate = getTranslate(element);\n var currentLeft = translate.x;\n var currentTop = translate.y;\n var elementRect = element.getBoundingClientRect();\n var hasDragContainer = dragContainer !== gridContainer;\n var offsetDiff;\n\n // Reset heuristics data.\n this._resetHeuristics(event);\n\n // If grid container is not the drag container, we need to calculate the\n // offset difference between grid container and drag container's containing\n // element.\n if (hasDragContainer) {\n offsetDiff = getOffsetDiff(containingBlock, gridContainer);\n }\n\n // Stop current positioning animation.\n if (item.isPositioning()) {\n item._layout.stop(true, { transform: getTranslateString(currentLeft, currentTop) });\n }\n\n // Stop current migration animation.\n if (migrate._isActive) {\n currentLeft -= migrate._containerDiffX;\n currentTop -= migrate._containerDiffY;\n migrate.stop(true, { transform: getTranslateString(currentLeft, currentTop) });\n }\n\n // If item is being released reset release data.\n if (item.isReleasing()) release._reset();\n\n // Setup drag data.\n this._isActive = true;\n this._dragEvent = event;\n this._container = dragContainer;\n this._containingBlock = containingBlock;\n this._elementClientX = elementRect.left;\n this._elementClientY = elementRect.top;\n this._left = this._gridX = currentLeft;\n this._top = this._gridY = currentTop;\n\n // Create placeholder (if necessary).\n if (settings.dragPlaceholder.enabled) {\n item._dragPlaceholder.create();\n }\n\n // Emit dragInit event.\n grid._emit(eventDragInit, item, event);\n\n // If a specific drag container is set and it is different from the\n // grid's container element we need to cast some extra spells.\n if (hasDragContainer) {\n // Store the container offset diffs to drag data.\n this._containerDiffX = offsetDiff.left;\n this._containerDiffY = offsetDiff.top;\n\n // If the dragged element is a child of the drag container all we need to\n // do is setup the relative drag position data.\n if (element.parentNode === dragContainer) {\n this._gridX = currentLeft - this._containerDiffX;\n this._gridY = currentTop - this._containerDiffY;\n }\n\n // Otherwise we need to append the element inside the correct container,\n // setup the actual drag position data and adjust the element's translate\n // values to account for the DOM position shift.\n else {\n this._left = currentLeft + this._containerDiffX;\n this._top = currentTop + this._containerDiffY;\n dragContainer.appendChild(element);\n element.style[transformProp] = getTranslateString(this._left, this._top);\n }\n }\n\n // Set drag class and bind scrollers.\n addClass(element, settings.itemDraggingClass);\n this._bindScrollListeners();\n\n // Emit dragStart event.\n grid._emit(eventDragStart, item, event);\n };\n\n /**\n * Drag move handler.\n *\n * @private\n * @memberof ItemDrag.prototype\n * @param {DraggerEvent} event\n */\n ItemDrag.prototype._onMove = function(event) {\n var item = this._item;\n\n // If item is not active, reset drag.\n if (!item._isActive) {\n this.stop();\n return;\n }\n\n var settings = this._getGrid()._settings;\n var axis = settings.dragAxis;\n\n // Update horizontal position data.\n if (axis !== 'y') {\n var xDiff = event.clientX - this._dragEvent.clientX;\n this._left += xDiff;\n this._gridX += xDiff;\n this._elementClientX += xDiff;\n }\n\n // Update vertical position data.\n if (axis !== 'x') {\n var yDiff = event.clientY - this._dragEvent.clientY;\n this._top += yDiff;\n this._gridY += yDiff;\n this._elementClientY += yDiff;\n }\n\n // Update event data.\n this._dragEvent = event;\n\n // Do move prepare/apply handling in the next tick.\n addMoveTick(item._id, this._prepareMove, this._applyMove);\n };\n\n /**\n * Prepare dragged item for moving.\n *\n * @private\n * @memberof ItemDrag.prototype\n */\n ItemDrag.prototype._prepareMove = function() {\n // Do nothing if item is not active.\n if (!this._item._isActive) return;\n\n // If drag sort is enabled -> check overlap.\n if (this._getGrid()._settings.dragSort) {\n if (this._checkHeuristics(this._dragEvent)) {\n this._checkOverlapDebounce();\n }\n }\n };\n\n /**\n * Apply movement to dragged item.\n *\n * @private\n * @memberof ItemDrag.prototype\n */\n ItemDrag.prototype._applyMove = function() {\n var item = this._item;\n\n // Do nothing if item is not active.\n if (!item._isActive) return;\n\n // Update element's translateX/Y values.\n item._element.style[transformProp] = getTranslateString(this._left, this._top);\n\n // Emit dragMove event.\n this._getGrid()._emit(eventDragMove, item, this._dragEvent);\n };\n\n /**\n * Drag scroll handler.\n *\n * @private\n * @memberof ItemDrag.prototype\n * @param {Event} event\n */\n ItemDrag.prototype._onScroll = function(event) {\n var item = this._item;\n\n // If item is not active, reset drag.\n if (!item._isActive) {\n this.stop();\n return;\n }\n\n // Update last scroll event.\n this._scrollEvent = event;\n\n // Do scroll prepare/apply handling in the next tick.\n addScrollTick(item._id, this._prepareScroll, this._applyScroll);\n };\n\n /**\n * Prepare dragged item for scrolling.\n *\n * @private\n * @memberof ItemDrag.prototype\n */\n ItemDrag.prototype._prepareScroll = function() {\n var item = this._item;\n\n // If item is not active do nothing.\n if (!item._isActive) return;\n\n var element = item._element;\n var grid = this._getGrid();\n var settings = grid._settings;\n var axis = settings.dragAxis;\n var gridContainer = grid._element;\n var offsetDiff;\n\n // Calculate element's rect and x/y diff.\n var rect = element.getBoundingClientRect();\n var xDiff = this._elementClientX - rect.left;\n var yDiff = this._elementClientY - rect.top;\n\n // Update container diff.\n if (this._container !== gridContainer) {\n offsetDiff = getOffsetDiff(this._containingBlock, gridContainer);\n this._containerDiffX = offsetDiff.left;\n this._containerDiffY = offsetDiff.top;\n }\n\n // Update horizontal position data.\n if (axis !== 'y') {\n this._left += xDiff;\n this._gridX = this._left - this._containerDiffX;\n }\n\n // Update vertical position data.\n if (axis !== 'x') {\n this._top += yDiff;\n this._gridY = this._top - this._containerDiffY;\n }\n\n // Overlap handling.\n if (settings.dragSort) this._checkOverlapDebounce();\n };\n\n /**\n * Apply scroll to dragged item.\n *\n * @private\n * @memberof ItemDrag.prototype\n */\n ItemDrag.prototype._applyScroll = function() {\n var item = this._item;\n\n // If item is not active do nothing.\n if (!item._isActive) return;\n\n // Update element's translateX/Y values.\n item._element.style[transformProp] = getTranslateString(this._left, this._top);\n\n // Emit dragScroll event.\n this._getGrid()._emit(eventDragScroll, item, this._scrollEvent);\n };\n\n /**\n * Drag end handler.\n *\n * @private\n * @memberof ItemDrag.prototype\n * @param {DraggerEvent} event\n */\n ItemDrag.prototype._onEnd = function(event) {\n var item = this._item;\n var element = item._element;\n var grid = this._getGrid();\n var settings = grid._settings;\n var release = item._release;\n\n // If item is not active, reset drag.\n if (!item._isActive) {\n this.stop();\n return;\n }\n\n // Cancel queued move and scroll ticks.\n cancelMoveTick(item._id);\n cancelScrollTick(item._id);\n\n // Finish currently queued overlap check.\n settings.dragSort && this._checkOverlapDebounce('finish');\n\n // Remove scroll listeners.\n this._unbindScrollListeners();\n\n // Setup release data.\n release._containerDiffX = this._containerDiffX;\n release._containerDiffY = this._containerDiffY;\n\n // Reset drag data.\n this._reset();\n\n // Remove drag class name from element.\n removeClass(element, settings.itemDraggingClass);\n\n // Emit dragEnd event.\n grid._emit(eventDragEnd, item, event);\n\n // Finish up the migration process or start the release process.\n this._isMigrating ? this._finishMigration() : release.start();\n };\n\n /**\n * Private helpers\n * ***************\n */\n\n /**\n * Calculate how many percent the intersection area of two rectangles is from\n * the maximum potential intersection area between the rectangles.\n *\n * @param {Rectangle} a\n * @param {Rectangle} b\n * @returns {Number}\n * - A number between 0-100.\n */\n function getRectOverlapScore(a, b) {\n // Return 0 immediately if the rectangles do not overlap.\n if (\n a.left + a.width <= b.left ||\n b.left + b.width <= a.left ||\n a.top + a.height <= b.top ||\n b.top + b.height <= a.top\n ) {\n return 0;\n }\n\n // Calculate intersection area's width, height, max height and max width.\n var width = Math.min(a.left + a.width, b.left + b.width) - Math.max(a.left, b.left);\n var height = Math.min(a.top + a.height, b.top + b.height) - Math.max(a.top, b.top);\n var maxWidth = Math.min(a.width, b.width);\n var maxHeight = Math.min(a.height, b.height);\n\n return ((width * height) / (maxWidth * maxHeight)) * 100;\n }\n\n /**\n * Check if an element is an anchor element and open the href url if possible.\n *\n * @param {HTMLElement} element\n */\n function openAnchorHref(element) {\n // Make sure the element is anchor element.\n if (element.tagName.toLowerCase() !== 'a') return;\n\n // Get href and make sure it exists.\n var href = element.getAttribute('href');\n if (!href) return;\n\n // Finally let's navigate to the link href.\n var target = element.getAttribute('target');\n if (target && target !== '_self') {\n window.open(href, target);\n } else {\n window.location.href = href;\n }\n }\n\n /**\n * Drag placeholder.\n *\n * @class\n * @param {Item} item\n */\n function ItemDragPlaceholder(item) {\n this._item = item;\n this._animate = new ItemAnimate();\n this._element = null;\n this._className = '';\n this._didMigrate = false;\n this._resetAfterLayout = false;\n this._currentLeft = 0;\n this._currentTop = 0;\n this._nextLeft = 0;\n this._nextTop = 0;\n\n // Bind animation handlers.\n this._setupAnimation = this._setupAnimation.bind(this);\n this._startAnimation = this._startAnimation.bind(this);\n\n // Bind event handlers.\n this._onLayoutStart = this._onLayoutStart.bind(this);\n this._onLayoutEnd = this._onLayoutEnd.bind(this);\n this._onReleaseEnd = this._onReleaseEnd.bind(this);\n this._onMigrate = this._onMigrate.bind(this);\n }\n\n /**\n * Private prototype methods\n * *************************\n */\n\n /**\n * Move placeholder to a new position.\n *\n * @private\n * @memberof ItemDragPlaceholder.prototype\n */\n ItemDragPlaceholder.prototype._onLayoutStart = function() {\n var item = this._item;\n var grid = item.getGrid();\n\n // Find out the item's new (unapplied) left and top position.\n var itemIndex = grid._items.indexOf(item);\n var nextLeft = grid._layout.slots[itemIndex * 2];\n var nextTop = grid._layout.slots[itemIndex * 2 + 1];\n\n // If item's position did not change and the item did not migrate we can\n // safely skip layout.\n if (!this._didMigrate && item._left === nextLeft && item._top === nextTop) {\n return;\n }\n\n // Slots data is calculated with item margins added to them so we need to add\n // item's left and top margin to the slot data to get the placeholder's\n // next position.\n nextLeft += item._marginLeft;\n nextTop += item._marginTop;\n\n // Just snap to new position without any animations if no animation is\n // required or if placeholder moves between grids.\n var animEnabled = grid._settings.dragPlaceholder.duration > 0;\n if (!animEnabled || this._didMigrate) {\n // Cancel potential (queued) layout tick.\n cancelPlaceholderTick(item._id);\n\n // Snap placeholder to correct position.\n var targetStyles = { transform: getTranslateString(nextLeft, nextTop) };\n if (this._animate.isAnimating()) {\n this._animate.stop(targetStyles);\n } else {\n setStyles(this._element, targetStyles);\n }\n\n // Move placeholder inside correct container after migration.\n if (this._didMigrate) {\n grid.getElement().appendChild(this._element);\n this._didMigrate = false;\n }\n\n return;\n }\n\n // Start the placeholder's layout animation in the next tick. We do this to\n // avoid layout thrashing.\n this._nextLeft = nextLeft;\n this._nextTop = nextTop;\n addPlaceholderTick(item._id, this._setupAnimation, this._startAnimation);\n };\n\n /**\n * Prepare placeholder for layout animation.\n *\n * @private\n * @memberof ItemDragPlaceholder.prototype\n */\n ItemDragPlaceholder.prototype._setupAnimation = function() {\n if (!this.isActive()) return;\n\n var translate = getTranslate(this._element);\n this._currentLeft = translate.x;\n this._currentTop = translate.y;\n };\n\n /**\n * Start layout animation.\n *\n * @private\n * @memberof ItemDragPlaceholder.prototype\n */\n ItemDragPlaceholder.prototype._startAnimation = function() {\n if (!this.isActive()) return;\n\n var animation = this._animate;\n var currentLeft = this._currentLeft;\n var currentTop = this._currentTop;\n var nextLeft = this._nextLeft;\n var nextTop = this._nextTop;\n var targetStyles = { transform: getTranslateString(nextLeft, nextTop) };\n\n // If placeholder is already in correct position let's just stop animation\n // and be done with it.\n if (currentLeft === nextLeft && currentTop === nextTop) {\n if (animation.isAnimating()) animation.stop(targetStyles);\n return;\n }\n\n // Otherwise let's start the animation.\n var settings = this._item.getGrid()._settings.dragPlaceholder;\n var currentStyles = { transform: getTranslateString(currentLeft, currentTop) };\n animation.start(currentStyles, targetStyles, {\n duration: settings.duration,\n easing: settings.easing,\n onFinish: this._onLayoutEnd\n });\n };\n\n /**\n * Layout end handler.\n *\n * @private\n * @memberof ItemDragPlaceholder.prototype\n */\n ItemDragPlaceholder.prototype._onLayoutEnd = function() {\n if (this._resetAfterLayout) {\n this.reset();\n }\n };\n\n /**\n * Drag end handler. This handler is called when dragReleaseEnd event is\n * emitted and receives the event data as it's argument.\n *\n * @private\n * @memberof ItemDragPlaceholder.prototype\n * @param {Item} item\n */\n ItemDragPlaceholder.prototype._onReleaseEnd = function(item) {\n if (item._id === this._item._id) {\n // If the placeholder is not animating anymore we can safely reset it.\n if (!this._animate.isAnimating()) {\n this.reset();\n return;\n }\n\n // If the placeholder item is still animating here, let's wait for it to\n // finish it's animation.\n this._resetAfterLayout = true;\n }\n };\n\n /**\n * Migration start handler. This handler is called when beforeSend event is\n * emitted and receives the event data as it's argument.\n *\n * @private\n * @memberof ItemDragPlaceholder.prototype\n * @param {Object} data\n * @param {Item} data.item\n * @param {Grid} data.fromGrid\n * @param {Number} data.fromIndex\n * @param {Grid} data.toGrid\n * @param {Number} data.toIndex\n */\n ItemDragPlaceholder.prototype._onMigrate = function(data) {\n // Make sure we have a matching item.\n if (data.item !== this._item) return;\n\n var grid = this._item.getGrid();\n var nextGrid = data.toGrid;\n\n // Unbind listeners from current grid.\n grid.off(eventDragReleaseEnd, this._onReleaseEnd);\n grid.off(eventLayoutStart, this._onLayoutStart);\n grid.off(eventBeforeSend, this._onMigrate);\n\n // Bind listeners to the next grid.\n nextGrid.on(eventDragReleaseEnd, this._onReleaseEnd);\n nextGrid.on(eventLayoutStart, this._onLayoutStart);\n nextGrid.on(eventBeforeSend, this._onMigrate);\n\n // Mark the item as migrated.\n this._didMigrate = true;\n };\n\n /**\n * Public prototype methods\n * ************************\n */\n\n /**\n * Create placeholder. Note that this method only writes to DOM and does not\n * read anything from DOM so it should not cause any additional layout\n * thrashing when it's called at the end of the drag start procedure.\n *\n * @public\n * @memberof ItemDragPlaceholder.prototype\n */\n ItemDragPlaceholder.prototype.create = function() {\n // If we already have placeholder set up we can skip the initiation logic.\n if (this.isActive()) {\n this._resetAfterLayout = false;\n return;\n }\n\n var item = this._item;\n var grid = item.getGrid();\n var settings = grid._settings;\n var animation = this._animate;\n\n // Create placeholder element.\n var element;\n if (isFunction(settings.dragPlaceholder.createElement)) {\n element = settings.dragPlaceholder.createElement(item);\n } else {\n element = window.document.createElement('div');\n }\n this._element = element;\n\n // Update element to animation instance.\n animation._element = element;\n\n // Add placeholder class to the placeholder element.\n this._className = settings.itemPlaceholderClass || '';\n if (this._className) {\n addClass(element, this._className);\n }\n\n // Position the placeholder item correctly.\n var left = item._left + item._marginLeft;\n var top = item._top + item._marginTop;\n setStyles(element, {\n display: 'block',\n position: 'absolute',\n left: '0',\n top: '0',\n width: item._width + 'px',\n height: item._height + 'px',\n transform: getTranslateString(left, top)\n });\n\n // Bind event listeners.\n grid.on(eventLayoutStart, this._onLayoutStart);\n grid.on(eventDragReleaseEnd, this._onReleaseEnd);\n grid.on(eventBeforeSend, this._onMigrate);\n\n // onCreate hook.\n if (isFunction(settings.dragPlaceholder.onCreate)) {\n settings.dragPlaceholder.onCreate(item, element);\n }\n\n // Insert the placeholder element to the grid.\n grid.getElement().appendChild(element);\n };\n\n /**\n * Reset placeholder data.\n *\n * @public\n * @memberof ItemDragPlaceholder.prototype\n */\n ItemDragPlaceholder.prototype.reset = function() {\n if (!this.isActive()) return;\n\n var element = this._element;\n var item = this._item;\n var grid = item.getGrid();\n var settings = grid._settings;\n var animation = this._animate;\n\n // Reset flag.\n this._resetAfterLayout = false;\n\n // Cancel potential (queued) layout tick.\n cancelPlaceholderTick(item._id);\n\n // Reset animation instance.\n animation.stop();\n animation._element = null;\n\n // Unbind event listeners.\n grid.off(eventDragReleaseEnd, this._onReleaseEnd);\n grid.off(eventLayoutStart, this._onLayoutStart);\n grid.off(eventBeforeSend, this._onMigrate);\n\n // Remove placeholder class from the placeholder element.\n if (this._className) {\n removeClass(element, this._className);\n this._className = '';\n }\n\n // Remove element.\n element.parentNode.removeChild(element);\n this._element = null;\n\n // onRemove hook. Note that here we use the current grid's onRemove callback\n // so if the item has migrated during drag the onRemove method will not be\n // the originating grid's method.\n if (isFunction(settings.dragPlaceholder.onRemove)) {\n settings.dragPlaceholder.onRemove(item, element);\n }\n };\n\n /**\n * Update placeholder's dimensions.\n *\n * @public\n * @memberof ItemDragPlaceholder.prototype\n * @param {Number} width\n * @param {height} height\n */\n ItemDragPlaceholder.prototype.updateDimensions = function(width, height) {\n if (this.isActive()) {\n setStyles(this._element, {\n width: width + 'px',\n height: height + 'px'\n });\n }\n };\n\n /**\n * Check if placeholder is currently active (visible).\n *\n * @public\n * @memberof ItemDragPlaceholder.prototype\n * @returns {Boolean}\n */\n ItemDragPlaceholder.prototype.isActive = function() {\n return !!this._element;\n };\n\n /**\n * Destroy placeholder instance.\n *\n * @public\n * @memberof ItemDragPlaceholder.prototype\n */\n ItemDragPlaceholder.prototype.destroy = function() {\n this.reset();\n this._animate.destroy();\n this._item = this._animate = null;\n };\n\n /**\n * Queue constructor.\n *\n * @class\n */\n function Queue() {\n this._queue = [];\n this._isDestroyed = false;\n }\n\n /**\n * Public prototype methods\n * ************************\n */\n\n /**\n * Add callback to the queue.\n *\n * @public\n * @memberof Queue.prototype\n * @param {Function} callback\n * @returns {Queue}\n */\n Queue.prototype.add = function(callback) {\n if (this._isDestroyed) return this;\n this._queue.push(callback);\n return this;\n };\n\n /**\n * Process queue callbacks and reset the queue.\n *\n * @public\n * @memberof Queue.prototype\n * @param {*} arg1\n * @param {*} arg2\n * @returns {Queue}\n */\n Queue.prototype.flush = function(arg1, arg2) {\n if (this._isDestroyed) return this;\n\n var queue = this._queue;\n var length = queue.length;\n var i;\n\n // Quit early if the queue is empty.\n if (!length) return this;\n\n var singleCallback = length === 1;\n var snapshot = singleCallback ? queue[0] : queue.slice(0);\n\n // Reset queue.\n queue.length = 0;\n\n // If we only have a single callback let's just call it.\n if (singleCallback) {\n snapshot(arg1, arg2);\n return this;\n }\n\n // If we have multiple callbacks, let's process them.\n for (i = 0; i < length; i++) {\n snapshot[i](arg1, arg2);\n if (this._isDestroyed) break;\n }\n\n return this;\n };\n\n /**\n * Destroy Queue instance.\n *\n * @public\n * @memberof Queue.prototype\n * @returns {Queue}\n */\n Queue.prototype.destroy = function() {\n if (this._isDestroyed) return this;\n\n this._isDestroyed = true;\n this._queue.length = 0;\n\n return this;\n };\n\n /**\n * Layout manager for Item instance.\n *\n * @class\n * @param {Item} item\n */\n function ItemLayout(item) {\n this._item = item;\n this._isActive = false;\n this._isDestroyed = false;\n this._isInterrupted = false;\n this._currentStyles = {};\n this._targetStyles = {};\n this._currentLeft = 0;\n this._currentTop = 0;\n this._offsetLeft = 0;\n this._offsetTop = 0;\n this._skipNextAnimation = false;\n this._animateOptions = {\n onFinish: this._finish.bind(this)\n };\n this._queue = new Queue();\n\n // Bind animation handlers and finish method.\n this._setupAnimation = this._setupAnimation.bind(this);\n this._startAnimation = this._startAnimation.bind(this);\n }\n\n /**\n * Public prototype methods\n * ************************\n */\n\n /**\n * Start item layout based on it's current data.\n *\n * @public\n * @memberof ItemLayout.prototype\n * @param {Boolean} [instant=false]\n * @param {Function} [onFinish]\n * @returns {ItemLayout}\n */\n ItemLayout.prototype.start = function(instant, onFinish) {\n if (this._isDestroyed) return;\n\n var item = this._item;\n var element = item._element;\n var release = item._release;\n var gridSettings = item.getGrid()._settings;\n var isPositioning = this._isActive;\n var isJustReleased = release._isActive && release._isPositioningStarted === false;\n var animDuration = isJustReleased\n ? gridSettings.dragReleaseDuration\n : gridSettings.layoutDuration;\n var animEasing = isJustReleased ? gridSettings.dragReleaseEasing : gridSettings.layoutEasing;\n var animEnabled = !instant && !this._skipNextAnimation && animDuration > 0;\n var isAnimating;\n\n // If the item is currently positioning process current layout callback\n // queue with interrupted flag on.\n if (isPositioning) this._queue.flush(true, item);\n\n // Mark release positioning as started.\n if (isJustReleased) release._isPositioningStarted = true;\n\n // Push the callback to the callback queue.\n if (isFunction(onFinish)) this._queue.add(onFinish);\n\n // If no animations are needed, easy peasy!\n if (!animEnabled) {\n this._updateOffsets();\n this._updateTargetStyles();\n isAnimating = item._animate.isAnimating();\n this.stop(false, this._targetStyles);\n !isAnimating && setStyles(element, this._targetStyles);\n this._skipNextAnimation = false;\n return this._finish();\n }\n\n // Set item active and store some data for the animation that is about to be\n // triggered.\n this._isActive = true;\n this._animateOptions.easing = animEasing;\n this._animateOptions.duration = animDuration;\n this._isInterrupted = isPositioning;\n\n // Start the item's layout animation in the next tick.\n addLayoutTick(item._id, this._setupAnimation, this._startAnimation);\n\n return this;\n };\n\n /**\n * Stop item's position animation if it is currently animating.\n *\n * @public\n * @memberof ItemLayout.prototype\n * @param {Boolean} [processCallbackQueue=false]\n * @param {Object} [targetStyles]\n * @returns {ItemLayout}\n */\n ItemLayout.prototype.stop = function(processCallbackQueue, targetStyles) {\n if (this._isDestroyed || !this._isActive) return this;\n\n var item = this._item;\n\n // Cancel animation init.\n cancelLayoutTick(item._id);\n\n // Stop animation.\n item._animate.stop(targetStyles);\n\n // Remove positioning class.\n removeClass(item._element, item.getGrid()._settings.itemPositioningClass);\n\n // Reset active state.\n this._isActive = false;\n\n // Process callback queue if needed.\n if (processCallbackQueue) this._queue.flush(true, item);\n\n return this;\n };\n\n /**\n * Destroy the instance and stop current animation if it is running.\n *\n * @public\n * @memberof ItemLayout.prototype\n * @returns {ItemLayout}\n */\n ItemLayout.prototype.destroy = function() {\n if (this._isDestroyed) return this;\n this.stop(true, {});\n this._queue.destroy();\n this._item = this._currentStyles = this._targetStyles = this._animateOptions = null;\n this._isDestroyed = true;\n return this;\n };\n\n /**\n * Private prototype methods\n * *************************\n */\n\n /**\n * Calculate and update item's current layout offset data.\n *\n * @private\n * @memberof ItemLayout.prototype\n */\n ItemLayout.prototype._updateOffsets = function() {\n if (this._isDestroyed) return;\n\n var item = this._item;\n var migrate = item._migrate;\n var release = item._release;\n\n this._offsetLeft = release._isActive\n ? release._containerDiffX\n : migrate._isActive\n ? migrate._containerDiffX\n : 0;\n\n this._offsetTop = release._isActive\n ? release._containerDiffY\n : migrate._isActive\n ? migrate._containerDiffY\n : 0;\n };\n\n /**\n * Calculate and update item's layout target styles.\n *\n * @private\n * @memberof ItemLayout.prototype\n */\n ItemLayout.prototype._updateTargetStyles = function() {\n if (this._isDestroyed) return;\n this._targetStyles.transform = getTranslateString(\n this._item._left + this._offsetLeft,\n this._item._top + this._offsetTop\n );\n };\n\n /**\n * Finish item layout procedure.\n *\n * @private\n * @memberof ItemLayout.prototype\n */\n ItemLayout.prototype._finish = function() {\n if (this._isDestroyed) return;\n\n var item = this._item;\n var migrate = item._migrate;\n var release = item._release;\n\n // Mark the item as inactive and remove positioning classes.\n if (this._isActive) {\n this._isActive = false;\n removeClass(item._element, item.getGrid()._settings.itemPositioningClass);\n }\n\n // Finish up release and migration.\n if (release._isActive) release.stop();\n if (migrate._isActive) migrate.stop();\n\n // Process the callback queue.\n this._queue.flush(false, item);\n };\n\n /**\n * Prepare item for layout animation.\n *\n * @private\n * @memberof ItemLayout.prototype\n */\n ItemLayout.prototype._setupAnimation = function() {\n var translate = getTranslate(this._item._element);\n this._currentLeft = translate.x;\n this._currentTop = translate.y;\n };\n\n /**\n * Start layout animation.\n *\n * @private\n * @memberof ItemLayout.prototype\n */\n ItemLayout.prototype._startAnimation = function() {\n var item = this._item;\n var settings = item.getGrid()._settings;\n\n // Let's update the offset data and target styles.\n this._updateOffsets();\n this._updateTargetStyles();\n\n // If the item is already in correct position let's quit early.\n if (\n item._left === this._currentLeft - this._offsetLeft &&\n item._top === this._currentTop - this._offsetTop\n ) {\n if (this._isInterrupted) this.stop(false, this._targetStyles);\n this._isActive = false;\n this._finish();\n return;\n }\n\n // Set item's positioning class if needed.\n if (!this._isInterrupted) {\n addClass(item._element, settings.itemPositioningClass);\n }\n\n // Get current styles for animation.\n this._currentStyles.transform = getTranslateString(this._currentLeft, this._currentTop);\n\n // Animate.\n item._animate.start(this._currentStyles, this._targetStyles, this._animateOptions);\n };\n\n var tempStyles = {};\n\n /**\n * The migrate process handler constructor.\n *\n * @class\n * @param {Item} item\n */\n function ItemMigrate(item) {\n // Private props.\n this._item = item;\n this._isActive = false;\n this._isDestroyed = false;\n this._container = false;\n this._containerDiffX = 0;\n this._containerDiffY = 0;\n }\n\n /**\n * Public prototype methods\n * ************************\n */\n\n /**\n * Start the migrate process of an item.\n *\n * @public\n * @memberof ItemMigrate.prototype\n * @param {Grid} targetGrid\n * @param {GridSingleItemQuery} position\n * @param {HTMLElement} [container]\n * @returns {ItemMigrate}\n */\n ItemMigrate.prototype.start = function(targetGrid, position, container) {\n if (this._isDestroyed) return this;\n\n var item = this._item;\n var element = item._element;\n var isVisible = item.isVisible();\n var grid = item.getGrid();\n var settings = grid._settings;\n var targetSettings = targetGrid._settings;\n var targetElement = targetGrid._element;\n var targetItems = targetGrid._items;\n var currentIndex = grid._items.indexOf(item);\n var targetContainer = container || window.document.body;\n var targetIndex;\n var targetItem;\n var currentContainer;\n var offsetDiff;\n var containerDiff;\n var translate;\n var translateX;\n var translateY;\n\n // Get target index.\n if (typeof position === 'number') {\n targetIndex = normalizeArrayIndex(targetItems, position, true);\n } else {\n targetItem = targetGrid._getItem(position);\n /** @todo Consider throwing an error here instead of silently failing. */\n if (!targetItem) return this;\n targetIndex = targetItems.indexOf(targetItem);\n }\n\n // Get current translateX and translateY values if needed.\n if (item.isPositioning() || this._isActive || item.isReleasing()) {\n translate = getTranslate(element);\n translateX = translate.x;\n translateY = translate.y;\n }\n\n // Abort current positioning.\n if (item.isPositioning()) {\n item._layout.stop(true, { transform: getTranslateString(translateX, translateY) });\n }\n\n // Abort current migration.\n if (this._isActive) {\n translateX -= this._containerDiffX;\n translateY -= this._containerDiffY;\n this.stop(true, { transform: getTranslateString(translateX, translateY) });\n }\n\n // Abort current release.\n if (item.isReleasing()) {\n translateX -= item._release._containerDiffX;\n translateY -= item._release._containerDiffY;\n item._release.stop(true, { transform: getTranslateString(translateX, translateY) });\n }\n\n // Stop current visibility animations.\n item._visibility._stopAnimation();\n\n // Destroy current drag.\n if (item._drag) item._drag.destroy();\n\n // Process current visibility animation queue.\n item._visibility._queue.flush(true, item);\n\n // Emit beforeSend event.\n if (grid._hasListeners(eventBeforeSend)) {\n grid._emit(eventBeforeSend, {\n item: item,\n fromGrid: grid,\n fromIndex: currentIndex,\n toGrid: targetGrid,\n toIndex: targetIndex\n });\n }\n\n // Emit beforeReceive event.\n if (targetGrid._hasListeners(eventBeforeReceive)) {\n targetGrid._emit(eventBeforeReceive, {\n item: item,\n fromGrid: grid,\n fromIndex: currentIndex,\n toGrid: targetGrid,\n toIndex: targetIndex\n });\n }\n\n // Remove current classnames.\n removeClass(element, settings.itemClass);\n removeClass(element, settings.itemVisibleClass);\n removeClass(element, settings.itemHiddenClass);\n\n // Add new classnames.\n addClass(element, targetSettings.itemClass);\n addClass(element, isVisible ? targetSettings.itemVisibleClass : targetSettings.itemHiddenClass);\n\n // Move item instance from current grid to target grid.\n grid._items.splice(currentIndex, 1);\n arrayInsert(targetItems, item, targetIndex);\n\n // Update item's grid id reference.\n item._gridId = targetGrid._id;\n\n // Get current container.\n currentContainer = element.parentNode;\n\n // Move the item inside the target container if it's different than the\n // current container.\n if (targetContainer !== currentContainer) {\n targetContainer.appendChild(element);\n offsetDiff = getOffsetDiff(targetContainer, currentContainer, true);\n if (!translate) {\n translate = getTranslate(element);\n translateX = translate.x;\n translateY = translate.y;\n }\n element.style[transformProp] = getTranslateString(\n translateX + offsetDiff.left,\n translateY + offsetDiff.top\n );\n }\n\n // Update child element's styles to reflect the current visibility state.\n item._child.removeAttribute('style');\n setStyles(item._child, isVisible ? targetSettings.visibleStyles : targetSettings.hiddenStyles);\n\n // Update display style.\n element.style.display = isVisible ? 'block' : 'hidden';\n\n // Get offset diff for the migration data.\n containerDiff = getOffsetDiff(targetContainer, targetElement, true);\n\n // Update item's cached dimensions and sort data.\n item._refreshDimensions();\n item._refreshSortData();\n\n // Create new drag handler.\n item._drag = targetSettings.dragEnabled ? new ItemDrag(item) : null;\n\n // Setup migration data.\n this._isActive = true;\n this._container = targetContainer;\n this._containerDiffX = containerDiff.left;\n this._containerDiffY = containerDiff.top;\n\n // Emit send event.\n if (grid._hasListeners(eventSend)) {\n grid._emit(eventSend, {\n item: item,\n fromGrid: grid,\n fromIndex: currentIndex,\n toGrid: targetGrid,\n toIndex: targetIndex\n });\n }\n\n // Emit receive event.\n if (targetGrid._hasListeners(eventReceive)) {\n targetGrid._emit(eventReceive, {\n item: item,\n fromGrid: grid,\n fromIndex: currentIndex,\n toGrid: targetGrid,\n toIndex: targetIndex\n });\n }\n\n return this;\n };\n\n /**\n * End the migrate process of an item. This method can be used to abort an\n * ongoing migrate process (animation) or finish the migrate process.\n *\n * @public\n * @memberof ItemMigrate.prototype\n * @param {Boolean} [abort=false]\n * - Should the migration be aborted?\n * @param {Object} [currentStyles]\n * - Optional current translateX and translateY styles.\n * @returns {ItemMigrate}\n */\n ItemMigrate.prototype.stop = function(abort, currentStyles) {\n if (this._isDestroyed || !this._isActive) return this;\n\n var item = this._item;\n var element = item._element;\n var grid = item.getGrid();\n var gridElement = grid._element;\n var translate;\n\n if (this._container !== gridElement) {\n if (!currentStyles) {\n if (abort) {\n translate = getTranslate(element);\n tempStyles.transform = getTranslateString(\n translate.x - this._containerDiffX,\n translate.y - this._containerDiffY\n );\n } else {\n tempStyles.transform = getTranslateString(item._left, item._top);\n }\n currentStyles = tempStyles;\n }\n gridElement.appendChild(element);\n setStyles(element, currentStyles);\n }\n\n this._isActive = false;\n this._container = null;\n this._containerDiffX = 0;\n this._containerDiffY = 0;\n\n return this;\n };\n\n /**\n * Destroy instance.\n *\n * @public\n * @memberof ItemMigrate.prototype\n * @returns {ItemMigrate}\n */\n ItemMigrate.prototype.destroy = function() {\n if (this._isDestroyed) return this;\n this.stop(true);\n this._item = null;\n this._isDestroyed = true;\n return this;\n };\n\n var tempStyles$1 = {};\n\n /**\n * The release process handler constructor. Although this might seem as proper\n * fit for the drag process this needs to be separated into it's own logic\n * because there might be a scenario where drag is disabled, but the release\n * process still needs to be implemented (dragging from a grid to another).\n *\n * @class\n * @param {Item} item\n */\n function ItemRelease(item) {\n this._item = item;\n this._isActive = false;\n this._isDestroyed = false;\n this._isPositioningStarted = false;\n this._containerDiffX = 0;\n this._containerDiffY = 0;\n }\n\n /**\n * Public prototype methods\n * ************************\n */\n\n /**\n * Start the release process of an item.\n *\n * @public\n * @memberof ItemRelease.prototype\n * @returns {ItemRelease}\n */\n ItemRelease.prototype.start = function() {\n if (this._isDestroyed || this._isActive) return this;\n\n var item = this._item;\n var grid = item.getGrid();\n\n // Flag release as active.\n this._isActive = true;\n\n // Add release class name to the released element.\n addClass(item._element, grid._settings.itemReleasingClass);\n\n // Emit dragReleaseStart event.\n grid._emit(eventDragReleaseStart, item);\n\n // Position the released item.\n item._layout.start(false);\n\n return this;\n };\n\n /**\n * End the release process of an item. This method can be used to abort an\n * ongoing release process (animation) or finish the release process.\n *\n * @public\n * @memberof ItemRelease.prototype\n * @param {Boolean} [abort=false]\n * - Should the release be aborted? When true, the release end event won't be\n * emitted. Set to true only when you need to abort the release process\n * while the item is animating to it's position.\n * @param {Object} [currentStyles]\n * - Optional current translateX and translateY styles.\n * @returns {ItemRelease}\n */\n ItemRelease.prototype.stop = function(abort, currentStyles) {\n if (this._isDestroyed || !this._isActive) return this;\n\n var item = this._item;\n var element = item._element;\n var grid = item.getGrid();\n var container = grid._element;\n var translate;\n\n // Reset data and remove releasing class name from the element.\n this._reset();\n\n // If the released element is outside the grid's container element put it\n // back there and adjust position accordingly.\n if (element.parentNode !== container) {\n if (!currentStyles) {\n if (abort) {\n translate = getTranslate(element);\n tempStyles$1.transform = getTranslateString(\n translate.x - this._containerDiffX,\n translate.y - this._containerDiffY\n );\n } else {\n tempStyles$1.transform = getTranslateString(item._left, item._top);\n }\n currentStyles = tempStyles$1;\n }\n container.appendChild(element);\n setStyles(element, currentStyles);\n }\n\n // Emit dragReleaseEnd event.\n if (!abort) grid._emit(eventDragReleaseEnd, item);\n\n return this;\n };\n\n /**\n * Destroy instance.\n *\n * @public\n * @memberof ItemRelease.prototype\n * @returns {ItemRelease}\n */\n ItemRelease.prototype.destroy = function() {\n if (this._isDestroyed) return this;\n this.stop(true);\n this._item = null;\n this._isDestroyed = true;\n return this;\n };\n\n /**\n * Private prototype methods\n * *************************\n */\n\n /**\n * Reset public data and remove releasing class.\n *\n * @private\n * @memberof ItemRelease.prototype\n */\n ItemRelease.prototype._reset = function() {\n if (this._isDestroyed) return;\n var item = this._item;\n this._isActive = false;\n this._isPositioningStarted = false;\n this._containerDiffX = 0;\n this._containerDiffY = 0;\n removeClass(item._element, item.getGrid()._settings.itemReleasingClass);\n };\n\n /**\n * Get current values of the provided styles definition object.\n *\n * @param {HTMLElement} element\n * @param {Object} styles\n * @return {Object}\n */\n function getCurrentStyles(element, styles) {\n var current = {};\n for (var prop in styles) {\n current[prop] = getStyle(element, getStyleName(prop));\n }\n return current;\n }\n\n /**\n * Visibility manager for Item instance.\n *\n * @class\n * @param {Item} item\n */\n function ItemVisibility(item) {\n var isActive = item._isActive;\n var element = item._element;\n var settings = item.getGrid()._settings;\n\n this._item = item;\n this._isDestroyed = false;\n\n // Set up visibility states.\n this._isHidden = !isActive;\n this._isHiding = false;\n this._isShowing = false;\n\n // Callback queue.\n this._queue = new Queue();\n\n // Bind show/hide finishers.\n this._finishShow = this._finishShow.bind(this);\n this._finishHide = this._finishHide.bind(this);\n\n // Force item to be either visible or hidden on init.\n element.style.display = isActive ? 'block' : 'none';\n\n // Set visible/hidden class.\n addClass(element, isActive ? settings.itemVisibleClass : settings.itemHiddenClass);\n\n // Set initial styles for the child element.\n setStyles(item._child, isActive ? settings.visibleStyles : settings.hiddenStyles);\n }\n\n /**\n * Public prototype methods\n * ************************\n */\n\n /**\n * Show item.\n *\n * @public\n * @memberof ItemVisibility.prototype\n * @param {Boolean} instant\n * @param {Function} [onFinish]\n * @returns {ItemVisibility}\n */\n ItemVisibility.prototype.show = function(instant, onFinish) {\n if (this._isDestroyed) return this;\n\n var item = this._item;\n var element = item._element;\n var queue = this._queue;\n var callback = isFunction(onFinish) ? onFinish : null;\n var grid = item.getGrid();\n var settings = grid._settings;\n\n // If item is visible call the callback and be done with it.\n if (!this._isShowing && !this._isHidden) {\n callback && callback(false, item);\n return this;\n }\n\n // If item is showing and does not need to be shown instantly, let's just\n // push callback to the callback queue and be done with it.\n if (this._isShowing && !instant) {\n callback && queue.add(callback);\n return this;\n }\n\n // If the item is hiding or hidden process the current visibility callback\n // queue with the interrupted flag active, update classes and set display\n // to block if necessary.\n if (!this._isShowing) {\n queue.flush(true, item);\n removeClass(element, settings.itemHiddenClass);\n addClass(element, settings.itemVisibleClass);\n if (!this._isHiding) element.style.display = 'block';\n }\n\n // Push callback to the callback queue.\n callback && queue.add(callback);\n\n // Update visibility states.\n item._isActive = this._isShowing = true;\n this._isHiding = this._isHidden = false;\n\n // Finally let's start show animation.\n this._startAnimation(true, instant, this._finishShow);\n\n return this;\n };\n\n /**\n * Hide item.\n *\n * @public\n * @memberof ItemVisibility.prototype\n * @param {Boolean} instant\n * @param {Function} [onFinish]\n * @returns {ItemVisibility}\n */\n ItemVisibility.prototype.hide = function(instant, onFinish) {\n if (this._isDestroyed) return this;\n\n var item = this._item;\n var element = item._element;\n var queue = this._queue;\n var callback = isFunction(onFinish) ? onFinish : null;\n var grid = item.getGrid();\n var settings = grid._settings;\n\n // If item is already hidden call the callback and be done with it.\n if (!this._isHiding && this._isHidden) {\n callback && callback(false, item);\n return this;\n }\n\n // If item is hiding and does not need to be hidden instantly, let's just\n // push callback to the callback queue and be done with it.\n if (this._isHiding && !instant) {\n callback && queue.add(callback);\n return this;\n }\n\n // If the item is showing or visible process the current visibility callback\n // queue with the interrupted flag active, update classes and set display\n // to block if necessary.\n if (!this._isHiding) {\n queue.flush(true, item);\n addClass(element, settings.itemHiddenClass);\n removeClass(element, settings.itemVisibleClass);\n }\n\n // Push callback to the callback queue.\n callback && queue.add(callback);\n\n // Update visibility states.\n this._isHidden = this._isHiding = true;\n item._isActive = this._isShowing = false;\n\n // Finally let's start hide animation.\n this._startAnimation(false, instant, this._finishHide);\n\n return this;\n };\n\n /**\n * Destroy the instance and stop current animation if it is running.\n *\n * @public\n * @memberof ItemVisibility.prototype\n * @returns {ItemVisibility}\n */\n ItemVisibility.prototype.destroy = function() {\n if (this._isDestroyed) return this;\n\n var item = this._item;\n var element = item._element;\n var grid = item.getGrid();\n var queue = this._queue;\n var settings = grid._settings;\n\n // Stop visibility animation.\n this._stopAnimation({});\n\n // Fire all uncompleted callbacks with interrupted flag and destroy the queue.\n queue.flush(true, item).destroy();\n\n // Remove visible/hidden classes.\n removeClass(element, settings.itemVisibleClass);\n removeClass(element, settings.itemHiddenClass);\n\n // Reset state.\n this._item = null;\n this._isHiding = this._isShowing = false;\n this._isDestroyed = this._isHidden = true;\n\n return this;\n };\n\n /**\n * Private prototype methods\n * *************************\n */\n\n /**\n * Start visibility animation.\n *\n * @private\n * @memberof ItemVisibility.prototype\n * @param {Boolean} toVisible\n * @param {Boolean} [instant]\n * @param {Function} [onFinish]\n */\n ItemVisibility.prototype._startAnimation = function(toVisible, instant, onFinish) {\n if (this._isDestroyed) return;\n\n var item = this._item;\n var settings = item.getGrid()._settings;\n var targetStyles = toVisible ? settings.visibleStyles : settings.hiddenStyles;\n var duration = parseInt(toVisible ? settings.showDuration : settings.hideDuration) || 0;\n var easing = (toVisible ? settings.showEasing : settings.hideEasing) || 'ease';\n var isInstant = instant || duration <= 0;\n var currentStyles;\n\n // No target styles? Let's quit early.\n if (!targetStyles) {\n onFinish && onFinish();\n return;\n }\n\n // Cancel queued visibility tick.\n cancelVisibilityTick(item._id);\n\n // If we need to apply the styles instantly without animation.\n if (isInstant) {\n if (item._animateChild.isAnimating()) {\n item._animateChild.stop(targetStyles);\n } else {\n setStyles(item._child, targetStyles);\n }\n onFinish && onFinish();\n return;\n }\n\n // Start the animation in the next tick (to avoid layout thrashing).\n addVisibilityTick(\n item._id,\n function() {\n currentStyles = getCurrentStyles(item._child, targetStyles);\n },\n function() {\n item._animateChild.start(currentStyles, targetStyles, {\n duration: duration,\n easing: easing,\n onFinish: onFinish\n });\n }\n );\n };\n\n /**\n * Stop visibility animation.\n *\n * @private\n * @memberof ItemVisibility.prototype\n * @param {Object} [targetStyles]\n */\n ItemVisibility.prototype._stopAnimation = function(targetStyles) {\n if (this._isDestroyed) return;\n var item = this._item;\n cancelVisibilityTick(item._id);\n item._animateChild.stop(targetStyles);\n };\n\n /**\n * Finish show procedure.\n *\n * @private\n * @memberof ItemVisibility.prototype\n */\n ItemVisibility.prototype._finishShow = function() {\n if (this._isHidden) return;\n this._isShowing = false;\n this._queue.flush(false, this._item);\n };\n\n /**\n * Finish hide procedure.\n *\n * @private\n * @memberof ItemVisibility.prototype\n */\n var finishStyles = {};\n ItemVisibility.prototype._finishHide = function() {\n if (!this._isHidden) return;\n var item = this._item;\n this._isHiding = false;\n finishStyles.transform = getTranslateString(0, 0);\n item._layout.stop(true, finishStyles);\n item._element.style.display = 'none';\n this._queue.flush(false, item);\n };\n\n var id = 0;\n\n /**\n * Returns a unique numeric id (increments a base value on every call).\n * @returns {Number}\n */\n function createUid() {\n return ++id;\n }\n\n /**\n * Creates a new Item instance for a Grid instance.\n *\n * @class\n * @param {Grid} grid\n * @param {HTMLElement} element\n * @param {Boolean} [isActive]\n */\n function Item(grid, element, isActive) {\n var settings = grid._settings;\n\n // Create instance id.\n this._id = createUid();\n\n // Reference to connected Grid instance's id.\n this._gridId = grid._id;\n\n // Destroyed flag.\n this._isDestroyed = false;\n\n // Set up initial positions.\n this._left = 0;\n this._top = 0;\n\n // The elements.\n this._element = element;\n this._child = element.children[0];\n\n // If the provided item element is not a direct child of the grid container\n // element, append it to the grid container.\n if (element.parentNode !== grid._element) {\n grid._element.appendChild(element);\n }\n\n // Set item class.\n addClass(element, settings.itemClass);\n\n // If isActive is not defined, let's try to auto-detect it.\n if (typeof isActive !== 'boolean') {\n isActive = getStyle(element, 'display') !== 'none';\n }\n\n // Set up active state (defines if the item is considered part of the layout\n // or not).\n this._isActive = isActive;\n\n // Set element's initial position styles.\n element.style.left = '0';\n element.style.top = '0';\n element.style[transformProp] = getTranslateString(0, 0);\n\n // Initiate item's animation controllers.\n this._animate = new ItemAnimate(element);\n this._animateChild = new ItemAnimate(this._child);\n\n // Setup visibility handler.\n this._visibility = new ItemVisibility(this);\n\n // Set up layout handler.\n this._layout = new ItemLayout(this);\n\n // Set up migration handler data.\n this._migrate = new ItemMigrate(this);\n\n // Set up release handler. Note that although this is fully linked to dragging\n // this still needs to be always instantiated to handle migration scenarios\n // correctly.\n this._release = new ItemRelease(this);\n\n // Set up drag placeholder handler. Note that although this is fully linked to\n // dragging this still needs to be always instantiated to handle migration\n // scenarios correctly.\n this._dragPlaceholder = new ItemDragPlaceholder(this);\n\n // Set up drag handler.\n this._drag = settings.dragEnabled ? new ItemDrag(this) : null;\n\n // Set up the initial dimensions and sort data.\n this._refreshDimensions();\n this._refreshSortData();\n }\n\n /**\n * Public prototype methods\n * ************************\n */\n\n /**\n * Get the instance grid reference.\n *\n * @public\n * @memberof Item.prototype\n * @returns {Grid}\n */\n Item.prototype.getGrid = function() {\n return gridInstances[this._gridId];\n };\n\n /**\n * Get the instance element.\n *\n * @public\n * @memberof Item.prototype\n * @returns {HTMLElement}\n */\n Item.prototype.getElement = function() {\n return this._element;\n };\n\n /**\n * Get instance element's cached width.\n *\n * @public\n * @memberof Item.prototype\n * @returns {Number}\n */\n Item.prototype.getWidth = function() {\n return this._width;\n };\n\n /**\n * Get instance element's cached height.\n *\n * @public\n * @memberof Item.prototype\n * @returns {Number}\n */\n Item.prototype.getHeight = function() {\n return this._height;\n };\n\n /**\n * Get instance element's cached margins.\n *\n * @public\n * @memberof Item.prototype\n * @returns {Object}\n * - The returned object contains left, right, top and bottom properties\n * which indicate the item element's cached margins.\n */\n Item.prototype.getMargin = function() {\n return {\n left: this._marginLeft,\n right: this._marginRight,\n top: this._marginTop,\n bottom: this._marginBottom\n };\n };\n\n /**\n * Get instance element's cached position.\n *\n * @public\n * @memberof Item.prototype\n * @returns {Object}\n * - The returned object contains left and top properties which indicate the\n * item element's cached position in the grid.\n */\n Item.prototype.getPosition = function() {\n return {\n left: this._left,\n top: this._top\n };\n };\n\n /**\n * Is the item active?\n *\n * @public\n * @memberof Item.prototype\n * @returns {Boolean}\n */\n Item.prototype.isActive = function() {\n return this._isActive;\n };\n\n /**\n * Is the item visible?\n *\n * @public\n * @memberof Item.prototype\n * @returns {Boolean}\n */\n Item.prototype.isVisible = function() {\n return !!this._visibility && !this._visibility._isHidden;\n };\n\n /**\n * Is the item being animated to visible?\n *\n * @public\n * @memberof Item.prototype\n * @returns {Boolean}\n */\n Item.prototype.isShowing = function() {\n return !!(this._visibility && this._visibility._isShowing);\n };\n\n /**\n * Is the item being animated to hidden?\n *\n * @public\n * @memberof Item.prototype\n * @returns {Boolean}\n */\n Item.prototype.isHiding = function() {\n return !!(this._visibility && this._visibility._isHiding);\n };\n\n /**\n * Is the item positioning?\n *\n * @public\n * @memberof Item.prototype\n * @returns {Boolean}\n */\n Item.prototype.isPositioning = function() {\n return !!(this._layout && this._layout._isActive);\n };\n\n /**\n * Is the item being dragged?\n *\n * @public\n * @memberof Item.prototype\n * @returns {Boolean}\n */\n Item.prototype.isDragging = function() {\n return !!(this._drag && this._drag._isActive);\n };\n\n /**\n * Is the item being released?\n *\n * @public\n * @memberof Item.prototype\n * @returns {Boolean}\n */\n Item.prototype.isReleasing = function() {\n return !!(this._release && this._release._isActive);\n };\n\n /**\n * Is the item destroyed?\n *\n * @public\n * @memberof Item.prototype\n * @returns {Boolean}\n */\n Item.prototype.isDestroyed = function() {\n return this._isDestroyed;\n };\n\n /**\n * Private prototype methods\n * *************************\n */\n\n /**\n * Recalculate item's dimensions.\n *\n * @private\n * @memberof Item.prototype\n */\n Item.prototype._refreshDimensions = function() {\n if (this._isDestroyed || this._visibility._isHidden) return;\n\n var element = this._element;\n var dragPlaceholder = this._dragPlaceholder;\n var rect = element.getBoundingClientRect();\n\n // Calculate width and height.\n this._width = rect.width;\n this._height = rect.height;\n\n // Calculate margins (ignore negative margins).\n this._marginLeft = Math.max(0, getStyleAsFloat(element, 'margin-left'));\n this._marginRight = Math.max(0, getStyleAsFloat(element, 'margin-right'));\n this._marginTop = Math.max(0, getStyleAsFloat(element, 'margin-top'));\n this._marginBottom = Math.max(0, getStyleAsFloat(element, 'margin-bottom'));\n\n // Keep drag placeholder's dimensions synced with the item's.\n if (dragPlaceholder) {\n dragPlaceholder.updateDimensions(this._width, this._height);\n }\n };\n\n /**\n * Fetch and store item's sort data.\n *\n * @private\n * @memberof Item.prototype\n */\n Item.prototype._refreshSortData = function() {\n if (this._isDestroyed) return;\n\n var data = (this._sortData = {});\n var getters = this.getGrid()._settings.sortData;\n var prop;\n\n for (prop in getters) {\n data[prop] = getters[prop](this, this._element);\n }\n };\n\n /**\n * Destroy item instance.\n *\n * @private\n * @memberof Item.prototype\n * @param {Boolean} [removeElement=false]\n */\n Item.prototype._destroy = function(removeElement) {\n if (this._isDestroyed) return;\n\n var element = this._element;\n var grid = this.getGrid();\n var settings = grid._settings;\n var index = grid._items.indexOf(this);\n\n // Destroy handlers.\n this._release.destroy();\n this._migrate.destroy();\n this._layout.destroy();\n this._visibility.destroy();\n this._animate.destroy();\n this._animateChild.destroy();\n this._dragPlaceholder.destroy();\n this._drag && this._drag.destroy();\n\n // Remove all inline styles.\n element.removeAttribute('style');\n this._child.removeAttribute('style');\n\n // Remove item class.\n removeClass(element, settings.itemClass);\n\n // Remove item from Grid instance if it still exists there.\n index > -1 && grid._items.splice(index, 1);\n\n // Remove element from DOM.\n removeElement && element.parentNode.removeChild(element);\n\n // Reset state.\n this._isActive = false;\n this._isDestroyed = true;\n };\n\n /**\n * This is the default layout algorithm for Muuri. Based on MAXRECTS approach\n * as described by Jukka Jylänki in his survey: \"A Thousand Ways to Pack the\n * Bin - A Practical Approach to Two-Dimensional Rectangle Bin Packing.\".\n *\n * @class\n */\n function Packer() {\n this._slots = [];\n this._slotSizes = [];\n this._freeSlots = [];\n this._newSlots = [];\n this._rectItem = {};\n this._rectStore = [];\n this._rectId = 0;\n\n // The layout return data, which will be populated in getLayout.\n this._layout = {\n slots: null,\n setWidth: false,\n setHeight: false,\n width: false,\n height: false\n };\n\n // Bind sort handlers.\n this._sortRectsLeftTop = this._sortRectsLeftTop.bind(this);\n this._sortRectsTopLeft = this._sortRectsTopLeft.bind(this);\n }\n\n /**\n * @public\n * @memberof Packer.prototype\n * @param {Item[]} items\n * @param {Number} width\n * @param {Number} height\n * @param {Number[]} [slots]\n * @param {Object} [options]\n * @param {Boolean} [options.fillGaps=false]\n * @param {Boolean} [options.horizontal=false]\n * @param {Boolean} [options.alignRight=false]\n * @param {Boolean} [options.alignBottom=false]\n * @returns {LayoutData}\n */\n Packer.prototype.getLayout = function(items, width, height, slots, options) {\n var layout = this._layout;\n var fillGaps = !!(options && options.fillGaps);\n var isHorizontal = !!(options && options.horizontal);\n var alignRight = !!(options && options.alignRight);\n var alignBottom = !!(options && options.alignBottom);\n var rounding = !!(options && options.rounding);\n var slotSizes = this._slotSizes;\n var i;\n\n // Reset layout data.\n layout.slots = slots ? slots : this._slots;\n layout.width = isHorizontal ? 0 : rounding ? Math.round(width) : width;\n layout.height = !isHorizontal ? 0 : rounding ? Math.round(height) : height;\n layout.setWidth = isHorizontal;\n layout.setHeight = !isHorizontal;\n\n // Make sure slots and slot size arrays are reset.\n layout.slots.length = 0;\n slotSizes.length = 0;\n\n // No need to go further if items do not exist.\n if (!items.length) return layout;\n\n // Find slots for items.\n for (i = 0; i < items.length; i++) {\n this._addSlot(items[i], isHorizontal, fillGaps, rounding, alignRight || alignBottom);\n }\n\n // If the alignment is set to right we need to adjust the results.\n if (alignRight) {\n for (i = 0; i < layout.slots.length; i = i + 2) {\n layout.slots[i] = layout.width - (layout.slots[i] + slotSizes[i]);\n }\n }\n\n // If the alignment is set to bottom we need to adjust the results.\n if (alignBottom) {\n for (i = 1; i < layout.slots.length; i = i + 2) {\n layout.slots[i] = layout.height - (layout.slots[i] + slotSizes[i]);\n }\n }\n\n // Reset slots arrays and rect id.\n slotSizes.length = 0;\n this._freeSlots.length = 0;\n this._newSlots.length = 0;\n this._rectId = 0;\n\n return layout;\n };\n\n /**\n * Calculate position for the layout item. Returns the left and top position\n * of the item in pixels.\n *\n * @private\n * @memberof Packer.prototype\n * @param {Item} item\n * @param {Boolean} isHorizontal\n * @param {Boolean} fillGaps\n * @param {Boolean} rounding\n * @returns {Array}\n */\n Packer.prototype._addSlot = (function() {\n var eps = 0.001;\n var itemSlot = {};\n return function(item, isHorizontal, fillGaps, rounding, trackSize) {\n var layout = this._layout;\n var freeSlots = this._freeSlots;\n var newSlots = this._newSlots;\n var rect;\n var rectId;\n var potentialSlots;\n var ignoreCurrentSlots;\n var i;\n var ii;\n\n // Reset new slots.\n newSlots.length = 0;\n\n // Set item slot initial data.\n itemSlot.left = null;\n itemSlot.top = null;\n itemSlot.width = item._width + item._marginLeft + item._marginRight;\n itemSlot.height = item._height + item._marginTop + item._marginBottom;\n\n // Round item slot width and height if needed.\n if (rounding) {\n itemSlot.width = Math.round(itemSlot.width);\n itemSlot.height = Math.round(itemSlot.height);\n }\n\n // Try to find a slot for the item.\n for (i = 0; i < freeSlots.length; i++) {\n rectId = freeSlots[i];\n if (!rectId) continue;\n rect = this._getRect(rectId);\n if (itemSlot.width <= rect.width + eps && itemSlot.height <= rect.height + eps) {\n itemSlot.left = rect.left;\n itemSlot.top = rect.top;\n break;\n }\n }\n\n // If no slot was found for the item.\n if (itemSlot.left === null) {\n // Position the item in to the bottom left (vertical mode) or top right\n // (horizontal mode) of the grid.\n itemSlot.left = !isHorizontal ? 0 : layout.width;\n itemSlot.top = !isHorizontal ? layout.height : 0;\n\n // If gaps don't need filling do not add any current slots to the new\n // slots array.\n if (!fillGaps) {\n ignoreCurrentSlots = true;\n }\n }\n\n // In vertical mode, if the item's bottom overlaps the grid's bottom.\n if (!isHorizontal && itemSlot.top + itemSlot.height > layout.height) {\n // If item is not aligned to the left edge, create a new slot.\n if (itemSlot.left > 0) {\n newSlots.push(this._addRect(0, layout.height, itemSlot.left, Infinity));\n }\n\n // If item is not aligned to the right edge, create a new slot.\n if (itemSlot.left + itemSlot.width < layout.width) {\n newSlots.push(\n this._addRect(\n itemSlot.left + itemSlot.width,\n layout.height,\n layout.width - itemSlot.left - itemSlot.width,\n Infinity\n )\n );\n }\n\n // Update grid height.\n layout.height = itemSlot.top + itemSlot.height;\n }\n\n // In horizontal mode, if the item's right overlaps the grid's right edge.\n if (isHorizontal && itemSlot.left + itemSlot.width > layout.width) {\n // If item is not aligned to the top, create a new slot.\n if (itemSlot.top > 0) {\n newSlots.push(this._addRect(layout.width, 0, Infinity, itemSlot.top));\n }\n\n // If item is not aligned to the bottom, create a new slot.\n if (itemSlot.top + itemSlot.height < layout.height) {\n newSlots.push(\n this._addRect(\n layout.width,\n itemSlot.top + itemSlot.height,\n Infinity,\n layout.height - itemSlot.top - itemSlot.height\n )\n );\n }\n\n // Update grid width.\n layout.width = itemSlot.left + itemSlot.width;\n }\n\n // Clean up the current slots making sure there are no old slots that\n // overlap with the item. If an old slot overlaps with the item, split it\n // into smaller slots if necessary.\n for (i = fillGaps ? 0 : ignoreCurrentSlots ? freeSlots.length : i; i < freeSlots.length; i++) {\n rectId = freeSlots[i];\n if (!rectId) continue;\n rect = this._getRect(rectId);\n potentialSlots = this._splitRect(rect, itemSlot);\n for (ii = 0; ii < potentialSlots.length; ii++) {\n rectId = potentialSlots[ii];\n rect = this._getRect(rectId);\n // Let's make sure here that we have a big enough slot\n // (width/height > 0.49px) and also let's make sure that the slot is\n // within the boundaries of the grid.\n if (\n rect.width > 0.49 &&\n rect.height > 0.49 &&\n ((!isHorizontal && rect.top < layout.height) ||\n (isHorizontal && rect.left < layout.width))\n ) {\n newSlots.push(rectId);\n }\n }\n }\n\n // Sanitize new slots.\n if (newSlots.length) {\n this._purgeRects(newSlots).sort(\n isHorizontal ? this._sortRectsLeftTop : this._sortRectsTopLeft\n );\n }\n\n // Update layout width/height.\n if (isHorizontal) {\n layout.width = Math.max(layout.width, itemSlot.left + itemSlot.width);\n } else {\n layout.height = Math.max(layout.height, itemSlot.top + itemSlot.height);\n }\n\n // Add item slot data to layout slots (and store the slot size for later\n // usage too if necessary).\n layout.slots.push(itemSlot.left, itemSlot.top);\n if (trackSize) this._slotSizes.push(itemSlot.width, itemSlot.height);\n\n // Free/new slots switcheroo!\n this._freeSlots = newSlots;\n this._newSlots = freeSlots;\n };\n })();\n\n /**\n * Add a new rectangle to the rectangle store. Returns the id of the new\n * rectangle.\n *\n * @private\n * @memberof Packer.prototype\n * @param {Number} left\n * @param {Number} top\n * @param {Number} width\n * @param {Number} height\n * @returns {RectId}\n */\n Packer.prototype._addRect = function(left, top, width, height) {\n var rectId = ++this._rectId;\n var rectStore = this._rectStore;\n\n rectStore[rectId] = left || 0;\n rectStore[++this._rectId] = top || 0;\n rectStore[++this._rectId] = width || 0;\n rectStore[++this._rectId] = height || 0;\n\n return rectId;\n };\n\n /**\n * Get rectangle data from the rectangle store by id. Optionally you can\n * provide a target object where the rectangle data will be written in. By\n * default an internal object is reused as a target object.\n *\n * @private\n * @memberof Packer.prototype\n * @param {RectId} id\n * @param {Object} [target]\n * @returns {Object}\n */\n Packer.prototype._getRect = function(id, target) {\n var rectItem = target ? target : this._rectItem;\n var rectStore = this._rectStore;\n\n rectItem.left = rectStore[id] || 0;\n rectItem.top = rectStore[++id] || 0;\n rectItem.width = rectStore[++id] || 0;\n rectItem.height = rectStore[++id] || 0;\n\n return rectItem;\n };\n\n /**\n * Punch a hole into a rectangle and split the remaining area into smaller\n * rectangles (4 at max).\n *\n * @private\n * @memberof Packer.prototype\n * @param {Rectangle} rect\n * @param {Rectangle} hole\n * @returns {RectId[]}\n */\n Packer.prototype._splitRect = (function() {\n var results = [];\n return function(rect, hole) {\n // Reset old results.\n results.length = 0;\n\n // If the rect does not overlap with the hole add rect to the return data\n // as is.\n if (!this._doRectsOverlap(rect, hole)) {\n results.push(this._addRect(rect.left, rect.top, rect.width, rect.height));\n return results;\n }\n\n // Left split.\n if (rect.left < hole.left) {\n results.push(this._addRect(rect.left, rect.top, hole.left - rect.left, rect.height));\n }\n\n // Right split.\n if (rect.left + rect.width > hole.left + hole.width) {\n results.push(\n this._addRect(\n hole.left + hole.width,\n rect.top,\n rect.left + rect.width - (hole.left + hole.width),\n rect.height\n )\n );\n }\n\n // Top split.\n if (rect.top < hole.top) {\n results.push(this._addRect(rect.left, rect.top, rect.width, hole.top - rect.top));\n }\n\n // Bottom split.\n if (rect.top + rect.height > hole.top + hole.height) {\n results.push(\n this._addRect(\n rect.left,\n hole.top + hole.height,\n rect.width,\n rect.top + rect.height - (hole.top + hole.height)\n )\n );\n }\n\n return results;\n };\n })();\n\n /**\n * Check if two rectangles overlap.\n *\n * @private\n * @memberof Packer.prototype\n * @param {Rectangle} a\n * @param {Rectangle} b\n * @returns {Boolean}\n */\n Packer.prototype._doRectsOverlap = function(a, b) {\n return !(\n a.left + a.width <= b.left ||\n b.left + b.width <= a.left ||\n a.top + a.height <= b.top ||\n b.top + b.height <= a.top\n );\n };\n\n /**\n * Check if a rectangle is fully within another rectangle.\n *\n * @private\n * @memberof Packer.prototype\n * @param {Rectangle} a\n * @param {Rectangle} b\n * @returns {Boolean}\n */\n Packer.prototype._isRectWithinRect = function(a, b) {\n return (\n a.left >= b.left &&\n a.top >= b.top &&\n a.left + a.width <= b.left + b.width &&\n a.top + a.height <= b.top + b.height\n );\n };\n\n /**\n * Loops through an array of rectangle ids and resets all that are fully\n * within another rectangle in the array. Resetting in this case means that\n * the rectangle id value is replaced with zero.\n *\n * @private\n * @memberof Packer.prototype\n * @param {RectId[]} rectIds\n * @returns {RectId[]}\n */\n Packer.prototype._purgeRects = (function() {\n var rectA = {};\n var rectB = {};\n return function(rectIds) {\n var i = rectIds.length;\n var ii;\n\n while (i--) {\n ii = rectIds.length;\n if (!rectIds[i]) continue;\n this._getRect(rectIds[i], rectA);\n while (ii--) {\n if (!rectIds[ii] || i === ii) continue;\n if (this._isRectWithinRect(rectA, this._getRect(rectIds[ii], rectB))) {\n rectIds[i] = 0;\n break;\n }\n }\n }\n\n return rectIds;\n };\n })();\n\n /**\n * Sort rectangles with top-left gravity.\n *\n * @private\n * @memberof Packer.prototype\n * @param {RectId} aId\n * @param {RectId} bId\n * @returns {Number}\n */\n Packer.prototype._sortRectsTopLeft = (function() {\n var rectA = {};\n var rectB = {};\n return function(aId, bId) {\n this._getRect(aId, rectA);\n this._getRect(bId, rectB);\n // prettier-ignore\n return rectA.top < rectB.top ? -1 :\n rectA.top > rectB.top ? 1 :\n rectA.left < rectB.left ? -1 :\n rectA.left > rectB.left ? 1 : 0;\n };\n })();\n\n /**\n * Sort rectangles with left-top gravity.\n *\n * @private\n * @memberof Packer.prototype\n * @param {RectId} aId\n * @param {RectId} bId\n * @returns {Number}\n */\n Packer.prototype._sortRectsLeftTop = (function() {\n var rectA = {};\n var rectB = {};\n return function(aId, bId) {\n this._getRect(aId, rectA);\n this._getRect(bId, rectB);\n // prettier-ignore\n return rectA.left < rectB.left ? -1 :\n rectA.left > rectB.left ? 1 :\n rectA.top < rectB.top ? -1 :\n rectA.top > rectB.top ? 1 : 0;\n };\n })();\n\n var htmlCollectionType = '[object HTMLCollection]';\n var nodeListType = '[object NodeList]';\n\n /**\n * Check if a value is a node list\n *\n * @param {*} val\n * @returns {Boolean}\n */\n function isNodeList(val) {\n var type = Object.prototype.toString.call(val);\n return type === htmlCollectionType || type === nodeListType;\n }\n\n var objectType = 'object';\n var objectToStringType = '[object Object]';\n var toString = Object.prototype.toString;\n\n /**\n * Check if a value is a plain object.\n *\n * @param {*} val\n * @returns {Boolean}\n */\n function isPlainObject(val) {\n return typeof val === objectType && toString.call(val) === objectToStringType;\n }\n\n /**\n * Converts a value to an array or clones an array.\n *\n * @param {*} target\n * @returns {Array}\n */\n function toArray(target) {\n return isNodeList(target) ? Array.prototype.slice.call(target) : Array.prototype.concat(target);\n }\n\n var packer = new Packer();\n var noop = function() {};\n\n var numberType$1 = 'number';\n var stringType = 'string';\n var instantLayout = 'instant';\n\n /**\n * Creates a new Grid instance.\n *\n * @class\n * @param {(HTMLElement|String)} element\n * @param {Object} [options]\n * @param {?(HTMLElement[]|NodeList|String)} [options.items]\n * @param {Number} [options.showDuration=300]\n * @param {String} [options.showEasing=\"ease\"]\n * @param {Object} [options.visibleStyles]\n * @param {Number} [options.hideDuration=300]\n * @param {String} [options.hideEasing=\"ease\"]\n * @param {Object} [options.hiddenStyles]\n * @param {(Function|Object)} [options.layout]\n * @param {Boolean} [options.layout.fillGaps=false]\n * @param {Boolean} [options.layout.horizontal=false]\n * @param {Boolean} [options.layout.alignRight=false]\n * @param {Boolean} [options.layout.alignBottom=false]\n * @param {Boolean} [options.layout.rounding=true]\n * @param {(Boolean|Number)} [options.layoutOnResize=100]\n * @param {Boolean} [options.layoutOnInit=true]\n * @param {Number} [options.layoutDuration=300]\n * @param {String} [options.layoutEasing=\"ease\"]\n * @param {?Object} [options.sortData=null]\n * @param {Boolean} [options.dragEnabled=false]\n * @param {?HtmlElement} [options.dragContainer=null]\n * @param {?Function} [options.dragStartPredicate]\n * @param {Number} [options.dragStartPredicate.distance=0]\n * @param {Number} [options.dragStartPredicate.delay=0]\n * @param {(Boolean|String)} [options.dragStartPredicate.handle=false]\n * @param {?String} [options.dragAxis]\n * @param {(Boolean|Function)} [options.dragSort=true]\n * @param {Object} [options.dragSortHeuristics]\n * @param {Number} [options.dragSortHeuristics.sortInterval=100]\n * @param {Number} [options.dragSortHeuristics.minDragDistance=10]\n * @param {Number} [options.dragSortHeuristics.minBounceBackAngle=1]\n * @param {(Function|Object)} [options.dragSortPredicate]\n * @param {Number} [options.dragSortPredicate.threshold=50]\n * @param {String} [options.dragSortPredicate.action=\"move\"]\n * @param {Number} [options.dragReleaseDuration=300]\n * @param {String} [options.dragReleaseEasing=\"ease\"]\n * @param {Object} [options.dragCssProps]\n * @param {Object} [options.dragPlaceholder]\n * @param {Boolean} [options.dragPlaceholder.enabled=false]\n * @param {Number} [options.dragPlaceholder.duration=300]\n * @param {String} [options.dragPlaceholder.easing=\"ease\"]\n * @param {?Function} [options.dragPlaceholder.createElement=null]\n * @param {?Function} [options.dragPlaceholder.onCreate=null]\n * @param {?Function} [options.dragPlaceholder.onRemove=null]\n * @param {String} [options.containerClass=\"muuri\"]\n * @param {String} [options.itemClass=\"muuri-item\"]\n * @param {String} [options.itemVisibleClass=\"muuri-item-visible\"]\n * @param {String} [options.itemHiddenClass=\"muuri-item-hidden\"]\n * @param {String} [options.itemPositioningClass=\"muuri-item-positioning\"]\n * @param {String} [options.itemDraggingClass=\"muuri-item-dragging\"]\n * @param {String} [options.itemReleasingClass=\"muuri-item-releasing\"]\n * @param {String} [options.itemPlaceholderClass=\"muuri-item-placeholder\"]\n */\n\n function Grid(element, options) {\n var inst = this;\n var settings;\n var items;\n var layoutOnResize;\n\n // Allow passing element as selector string. Store element for instance.\n element = this._element =\n typeof element === stringType ? window.document.querySelector(element) : element;\n\n // Throw an error if the container element is not body element or does not\n // exist within the body element.\n var isElementInDom = element.getRootNode\n ? element.getRootNode({ composed: true }) === document\n : window.document.body.contains(element);\n if (!isElementInDom || element === window.document.documentElement) {\n throw new Error('Container element must be an existing DOM element');\n }\n\n // Create instance settings by merging the options with default options.\n settings = this._settings = mergeSettings(Grid.defaultOptions, options);\n\n // Sanitize dragSort setting.\n if (!isFunction(settings.dragSort)) {\n settings.dragSort = !!settings.dragSort;\n }\n\n // Create instance id and store it to the grid instances collection.\n this._id = createUid();\n gridInstances[this._id] = inst;\n\n // Destroyed flag.\n this._isDestroyed = false;\n\n // The layout object (mutated on every layout).\n this._layout = {\n id: 0,\n items: [],\n slots: [],\n setWidth: false,\n setHeight: false,\n width: 0,\n height: 0\n };\n\n // Create private Emitter instance.\n this._emitter = new Emitter();\n\n // Add container element's class name.\n addClass(element, settings.containerClass);\n\n // Create initial items.\n this._items = [];\n items = settings.items;\n if (typeof items === stringType) {\n toArray(element.children).forEach(function(itemElement) {\n if (items === '*' || elementMatches(itemElement, items)) {\n inst._items.push(new Item(inst, itemElement));\n }\n });\n } else if (Array.isArray(items) || isNodeList(items)) {\n this._items = toArray(items).map(function(itemElement) {\n return new Item(inst, itemElement);\n });\n }\n\n // If layoutOnResize option is a valid number sanitize it and bind the resize\n // handler.\n layoutOnResize = settings.layoutOnResize;\n if (typeof layoutOnResize !== numberType$1) {\n layoutOnResize = layoutOnResize === true ? 0 : -1;\n }\n if (layoutOnResize >= 0) {\n window.addEventListener(\n 'resize',\n (inst._resizeHandler = debounce(function() {\n inst.refreshItems().layout();\n }, layoutOnResize))\n );\n }\n\n // Layout on init if necessary.\n if (settings.layoutOnInit) {\n this.layout(true);\n }\n }\n\n /**\n * Public properties\n * *****************\n */\n\n /**\n * @see Item\n */\n Grid.Item = Item;\n\n /**\n * @see ItemLayout\n */\n Grid.ItemLayout = ItemLayout;\n\n /**\n * @see ItemVisibility\n */\n Grid.ItemVisibility = ItemVisibility;\n\n /**\n * @see ItemMigrate\n */\n Grid.ItemMigrate = ItemMigrate;\n\n /**\n * @see ItemAnimate\n */\n Grid.ItemAnimate = ItemAnimate;\n\n /**\n * @see ItemDrag\n */\n Grid.ItemDrag = ItemDrag;\n\n /**\n * @see ItemRelease\n */\n Grid.ItemRelease = ItemRelease;\n\n /**\n * @see ItemDragPlaceholder\n */\n Grid.ItemDragPlaceholder = ItemDragPlaceholder;\n\n /**\n * @see Emitter\n */\n Grid.Emitter = Emitter;\n\n /**\n * @see Dragger\n */\n Grid.Dragger = Dragger;\n\n /**\n * @see Packer\n */\n Grid.Packer = Packer;\n\n /**\n * Default options for Grid instance.\n *\n * @public\n * @memberof Grid\n */\n Grid.defaultOptions = {\n // Item elements\n items: '*',\n\n // Default show animation\n showDuration: 300,\n showEasing: 'ease',\n\n // Default hide animation\n hideDuration: 300,\n hideEasing: 'ease',\n\n // Item's visible/hidden state styles\n visibleStyles: {\n opacity: '1',\n transform: 'scale(1)'\n },\n hiddenStyles: {\n opacity: '0',\n transform: 'scale(0.5)'\n },\n\n // Layout\n layout: {\n fillGaps: false,\n horizontal: false,\n alignRight: false,\n alignBottom: false,\n rounding: true\n },\n layoutOnResize: 100,\n layoutOnInit: true,\n layoutDuration: 300,\n layoutEasing: 'ease',\n\n // Sorting\n sortData: null,\n\n // Drag & Drop\n dragEnabled: false,\n dragContainer: null,\n dragStartPredicate: {\n distance: 0,\n delay: 0,\n handle: false\n },\n dragAxis: null,\n dragSort: true,\n dragSortHeuristics: {\n sortInterval: 100,\n minDragDistance: 10,\n minBounceBackAngle: 1\n },\n dragSortPredicate: {\n threshold: 50,\n action: actionMove\n },\n dragReleaseDuration: 300,\n dragReleaseEasing: 'ease',\n dragCssProps: {\n touchAction: 'none',\n userSelect: 'none',\n userDrag: 'none',\n tapHighlightColor: 'rgba(0, 0, 0, 0)',\n touchCallout: 'none',\n contentZooming: 'none'\n },\n dragPlaceholder: {\n enabled: false,\n duration: 300,\n easing: 'ease',\n createElement: null,\n onCreate: null,\n onRemove: null\n },\n\n // Classnames\n containerClass: 'muuri',\n itemClass: 'muuri-item',\n itemVisibleClass: 'muuri-item-shown',\n itemHiddenClass: 'muuri-item-hidden',\n itemPositioningClass: 'muuri-item-positioning',\n itemDraggingClass: 'muuri-item-dragging',\n itemReleasingClass: 'muuri-item-releasing',\n itemPlaceholderClass: 'muuri-item-placeholder'\n };\n\n /**\n * Public prototype methods\n * ************************\n */\n\n /**\n * Bind an event listener.\n *\n * @public\n * @memberof Grid.prototype\n * @param {String} event\n * @param {Function} listener\n * @returns {Grid}\n */\n Grid.prototype.on = function(event, listener) {\n this._emitter.on(event, listener);\n return this;\n };\n\n /**\n * Unbind an event listener.\n *\n * @public\n * @memberof Grid.prototype\n * @param {String} event\n * @param {Function} listener\n * @returns {Grid}\n */\n Grid.prototype.off = function(event, listener) {\n this._emitter.off(event, listener);\n return this;\n };\n\n /**\n * Get the container element.\n *\n * @public\n * @memberof Grid.prototype\n * @returns {HTMLElement}\n */\n Grid.prototype.getElement = function() {\n return this._element;\n };\n\n /**\n * Get all items. Optionally you can provide specific targets (elements and\n * indices). Note that the returned array is not the same object used by the\n * instance so modifying it will not affect instance's items. All items that\n * are not found are omitted from the returned array.\n *\n * @public\n * @memberof Grid.prototype\n * @param {GridMultiItemQuery} [targets]\n * @returns {Item[]}\n */\n Grid.prototype.getItems = function(targets) {\n // Return all items immediately if no targets were provided or if the\n // instance is destroyed.\n if (this._isDestroyed || (!targets && targets !== 0)) {\n return this._items.slice(0);\n }\n\n var ret = [];\n var targetItems = toArray(targets);\n var item;\n var i;\n\n // If target items are defined return filtered results.\n for (i = 0; i < targetItems.length; i++) {\n item = this._getItem(targetItems[i]);\n item && ret.push(item);\n }\n\n return ret;\n };\n\n /**\n * Update the cached dimensions of the instance's items.\n *\n * @public\n * @memberof Grid.prototype\n * @param {GridMultiItemQuery} [items]\n * @returns {Grid}\n */\n Grid.prototype.refreshItems = function(items) {\n if (this._isDestroyed) return this;\n\n var targets = this.getItems(items);\n var i;\n\n for (i = 0; i < targets.length; i++) {\n targets[i]._refreshDimensions();\n }\n\n return this;\n };\n\n /**\n * Update the sort data of the instance's items.\n *\n * @public\n * @memberof Grid.prototype\n * @param {GridMultiItemQuery} [items]\n * @returns {Grid}\n */\n Grid.prototype.refreshSortData = function(items) {\n if (this._isDestroyed) return this;\n\n var targetItems = this.getItems(items);\n var i;\n\n for (i = 0; i < targetItems.length; i++) {\n targetItems[i]._refreshSortData();\n }\n\n return this;\n };\n\n /**\n * Synchronize the item elements to match the order of the items in the DOM.\n * This comes handy if you need to keep the DOM structure matched with the\n * order of the items. Note that if an item's element is not currently a child\n * of the container element (if it is dragged for example) it is ignored and\n * left untouched.\n *\n * @public\n * @memberof Grid.prototype\n * @returns {Grid}\n */\n Grid.prototype.synchronize = function() {\n if (this._isDestroyed) return this;\n\n var container = this._element;\n var items = this._items;\n var fragment;\n var element;\n var i;\n\n // Append all elements in order to the container element.\n if (items.length) {\n for (i = 0; i < items.length; i++) {\n element = items[i]._element;\n if (element.parentNode === container) {\n fragment = fragment || window.document.createDocumentFragment();\n fragment.appendChild(element);\n }\n }\n\n if (fragment) container.appendChild(fragment);\n }\n\n // Emit synchronize event.\n this._emit(eventSynchronize);\n\n return this;\n };\n\n /**\n * Calculate and apply item positions.\n *\n * @public\n * @memberof Grid.prototype\n * @param {Boolean} [instant=false]\n * @param {LayoutCallback} [onFinish]\n * @returns {Grid}\n */\n Grid.prototype.layout = function(instant, onFinish) {\n if (this._isDestroyed) return this;\n\n var inst = this;\n var element = this._element;\n var layout = this._updateLayout();\n var layoutId = layout.id;\n var itemsLength = layout.items.length;\n var counter = itemsLength;\n var isBorderBox;\n var item;\n var i;\n\n // The finish function, which will be used for checking if all the items\n // have laid out yet. After all items have finished their animations call\n // callback and emit layoutEnd event. Only emit layoutEnd event if there\n // hasn't been a new layout call during this layout.\n function tryFinish() {\n if (--counter > 0) return;\n\n var hasLayoutChanged = inst._layout.id !== layoutId;\n var callback = isFunction(instant) ? instant : onFinish;\n\n if (isFunction(callback)) {\n callback(hasLayoutChanged, layout.items.slice(0));\n }\n\n if (!hasLayoutChanged && inst._hasListeners(eventLayoutEnd)) {\n inst._emit(eventLayoutEnd, layout.items.slice(0));\n }\n }\n\n // If grid's width or height was modified, we need to update it's cached\n // dimensions. Also keep in mind that grid's cached width/height should\n // always equal to what elem.getBoundingClientRect() would return, so\n // therefore we need to add the grid element's borders to the dimensions if\n // it's box-sizing is border-box. Note that we support providing the\n // dimensions as a string here too so that one can define the unit of the\n // dimensions, in which case we don't do the border-box check.\n if (\n (layout.setHeight && typeof layout.height === numberType$1) ||\n (layout.setWidth && typeof layout.width === numberType$1)\n ) {\n isBorderBox = getStyle(element, 'box-sizing') === 'border-box';\n }\n if (layout.setHeight) {\n if (typeof layout.height === numberType$1) {\n element.style.height =\n (isBorderBox ? layout.height + this._borderTop + this._borderBottom : layout.height) + 'px';\n } else {\n element.style.height = layout.height;\n }\n }\n if (layout.setWidth) {\n if (typeof layout.width === numberType$1) {\n element.style.width =\n (isBorderBox ? layout.width + this._borderLeft + this._borderRight : layout.width) + 'px';\n } else {\n element.style.width = layout.width;\n }\n }\n\n // Emit layoutStart event. Note that this is intentionally emitted after the\n // container element's dimensions are set, because otherwise there would be\n // no hook for reacting to container dimension changes.\n if (this._hasListeners(eventLayoutStart)) {\n this._emit(eventLayoutStart, layout.items.slice(0));\n }\n\n // If there are no items let's finish quickly.\n if (!itemsLength) {\n tryFinish();\n return this;\n }\n\n // If there are items let's position them.\n for (i = 0; i < itemsLength; i++) {\n item = layout.items[i];\n if (!item) continue;\n\n // Update item's position.\n item._left = layout.slots[i * 2];\n item._top = layout.slots[i * 2 + 1];\n\n // Layout item if it is not dragged.\n item.isDragging() ? tryFinish() : item._layout.start(instant === true, tryFinish);\n }\n\n return this;\n };\n\n /**\n * Add new items by providing the elements you wish to add to the instance and\n * optionally provide the index where you want the items to be inserted into.\n * All elements that are not already children of the container element will be\n * automatically appended to the container element. If an element has it's CSS\n * display property set to \"none\" it will be marked as inactive during the\n * initiation process. As long as the item is inactive it will not be part of\n * the layout, but it will retain it's index. You can activate items at any\n * point with grid.show() method. This method will automatically call\n * grid.layout() if one or more of the added elements are visible. If only\n * hidden items are added no layout will be called. All the new visible items\n * are positioned without animation during their first layout.\n *\n * @public\n * @memberof Grid.prototype\n * @param {(HTMLElement|HTMLElement[])} elements\n * @param {Object} [options]\n * @param {Number} [options.index=-1]\n * @param {Boolean} [options.isActive]\n * @param {(Boolean|LayoutCallback|String)} [options.layout=true]\n * @returns {Item[]}\n */\n Grid.prototype.add = function(elements, options) {\n if (this._isDestroyed || !elements) return [];\n\n var newItems = toArray(elements);\n if (!newItems.length) return newItems;\n\n var opts = options || 0;\n var layout = opts.layout ? opts.layout : opts.layout === undefined;\n var items = this._items;\n var needsLayout = false;\n var item;\n var i;\n\n // Map provided elements into new grid items.\n for (i = 0; i < newItems.length; i++) {\n item = new Item(this, newItems[i], opts.isActive);\n newItems[i] = item;\n\n // If the item to be added is active, we need to do a layout. Also, we\n // need to mark the item with the skipNextAnimation flag to make it\n // position instantly (without animation) during the next layout. Without\n // the hack the item would animate to it's new position from the northwest\n // corner of the grid, which feels a bit buggy (imho).\n if (item._isActive) {\n needsLayout = true;\n item._layout._skipNextAnimation = true;\n }\n }\n\n // Add the new items to the items collection to correct index.\n arrayInsert(items, newItems, opts.index);\n\n // Emit add event.\n if (this._hasListeners(eventAdd)) {\n this._emit(eventAdd, newItems.slice(0));\n }\n\n // If layout is needed.\n if (needsLayout && layout) {\n this.layout(layout === instantLayout, isFunction(layout) ? layout : undefined);\n }\n\n return newItems;\n };\n\n /**\n * Remove items from the instance.\n *\n * @public\n * @memberof Grid.prototype\n * @param {GridMultiItemQuery} items\n * @param {Object} [options]\n * @param {Boolean} [options.removeElements=false]\n * @param {(Boolean|LayoutCallback|String)} [options.layout=true]\n * @returns {Item[]}\n */\n Grid.prototype.remove = function(items, options) {\n if (this._isDestroyed) return this;\n\n var opts = options || 0;\n var layout = opts.layout ? opts.layout : opts.layout === undefined;\n var needsLayout = false;\n var allItems = this.getItems();\n var targetItems = this.getItems(items);\n var indices = [];\n var item;\n var i;\n\n // Remove the individual items.\n for (i = 0; i < targetItems.length; i++) {\n item = targetItems[i];\n indices.push(allItems.indexOf(item));\n if (item._isActive) needsLayout = true;\n item._destroy(opts.removeElements);\n }\n\n // Emit remove event.\n if (this._hasListeners(eventRemove)) {\n this._emit(eventRemove, targetItems.slice(0), indices);\n }\n\n // If layout is needed.\n if (needsLayout && layout) {\n this.layout(layout === instantLayout, isFunction(layout) ? layout : undefined);\n }\n\n return targetItems;\n };\n\n /**\n * Show instance items.\n *\n * @public\n * @memberof Grid.prototype\n * @param {GridMultiItemQuery} items\n * @param {Object} [options]\n * @param {Boolean} [options.instant=false]\n * @param {ShowCallback} [options.onFinish]\n * @param {(Boolean|LayoutCallback|String)} [options.layout=true]\n * @returns {Grid}\n */\n Grid.prototype.show = function(items, options) {\n if (this._isDestroyed) return this;\n this._setItemsVisibility(items, true, options);\n return this;\n };\n\n /**\n * Hide instance items.\n *\n * @public\n * @memberof Grid.prototype\n * @param {GridMultiItemQuery} items\n * @param {Object} [options]\n * @param {Boolean} [options.instant=false]\n * @param {HideCallback} [options.onFinish]\n * @param {(Boolean|LayoutCallback|String)} [options.layout=true]\n * @returns {Grid}\n */\n Grid.prototype.hide = function(items, options) {\n if (this._isDestroyed) return this;\n this._setItemsVisibility(items, false, options);\n return this;\n };\n\n /**\n * Filter items. Expects at least one argument, a predicate, which should be\n * either a function or a string. The predicate callback is executed for every\n * item in the instance. If the return value of the predicate is truthy the\n * item in question will be shown and otherwise hidden. The predicate callback\n * receives the item instance as it's argument. If the predicate is a string\n * it is considered to be a selector and it is checked against every item\n * element in the instance with the native element.matches() method. All the\n * matching items will be shown and others hidden.\n *\n * @public\n * @memberof Grid.prototype\n * @param {(Function|String)} predicate\n * @param {Object} [options]\n * @param {Boolean} [options.instant=false]\n * @param {FilterCallback} [options.onFinish]\n * @param {(Boolean|LayoutCallback|String)} [options.layout=true]\n * @returns {Grid}\n */\n Grid.prototype.filter = function(predicate, options) {\n if (this._isDestroyed || !this._items.length) return this;\n\n var itemsToShow = [];\n var itemsToHide = [];\n var isPredicateString = typeof predicate === stringType;\n var isPredicateFn = isFunction(predicate);\n var opts = options || 0;\n var isInstant = opts.instant === true;\n var layout = opts.layout ? opts.layout : opts.layout === undefined;\n var onFinish = isFunction(opts.onFinish) ? opts.onFinish : null;\n var tryFinishCounter = -1;\n var tryFinish = noop;\n var item;\n var i;\n\n // If we have onFinish callback, let's create proper tryFinish callback.\n if (onFinish) {\n tryFinish = function() {\n ++tryFinishCounter && onFinish(itemsToShow.slice(0), itemsToHide.slice(0));\n };\n }\n\n // Check which items need to be shown and which hidden.\n if (isPredicateFn || isPredicateString) {\n for (i = 0; i < this._items.length; i++) {\n item = this._items[i];\n if (isPredicateFn ? predicate(item) : elementMatches(item._element, predicate)) {\n itemsToShow.push(item);\n } else {\n itemsToHide.push(item);\n }\n }\n }\n\n // Show items that need to be shown.\n if (itemsToShow.length) {\n this.show(itemsToShow, {\n instant: isInstant,\n onFinish: tryFinish,\n layout: false\n });\n } else {\n tryFinish();\n }\n\n // Hide items that need to be hidden.\n if (itemsToHide.length) {\n this.hide(itemsToHide, {\n instant: isInstant,\n onFinish: tryFinish,\n layout: false\n });\n } else {\n tryFinish();\n }\n\n // If there are any items to filter.\n if (itemsToShow.length || itemsToHide.length) {\n // Emit filter event.\n if (this._hasListeners(eventFilter)) {\n this._emit(eventFilter, itemsToShow.slice(0), itemsToHide.slice(0));\n }\n\n // If layout is needed.\n if (layout) {\n this.layout(layout === instantLayout, isFunction(layout) ? layout : undefined);\n }\n }\n\n return this;\n };\n\n /**\n * Sort items. There are three ways to sort the items. The first is simply by\n * providing a function as the comparer which works identically to native\n * array sort. Alternatively you can sort by the sort data you have provided\n * in the instance's options. Just provide the sort data key(s) as a string\n * (separated by space) and the items will be sorted based on the provided\n * sort data keys. Lastly you have the opportunity to provide a presorted\n * array of items which will be used to sync the internal items array in the\n * same order.\n *\n * @public\n * @memberof Grid.prototype\n * @param {(Function|Item[]|String|String[])} comparer\n * @param {Object} [options]\n * @param {Boolean} [options.descending=false]\n * @param {(Boolean|LayoutCallback|String)} [options.layout=true]\n * @returns {Grid}\n */\n Grid.prototype.sort = (function() {\n var sortComparer;\n var isDescending;\n var origItems;\n var indexMap;\n\n function parseCriteria(data) {\n return data\n .trim()\n .split(' ')\n .map(function(val) {\n return val.split(':');\n });\n }\n\n function getIndexMap(items) {\n var ret = {};\n for (var i = 0; i < items.length; i++) {\n ret[items[i]._id] = i;\n }\n return ret;\n }\n\n function compareIndices(itemA, itemB) {\n var indexA = indexMap[itemA._id];\n var indexB = indexMap[itemB._id];\n return isDescending ? indexB - indexA : indexA - indexB;\n }\n\n function defaultComparer(a, b) {\n var result = 0;\n var criteriaName;\n var criteriaOrder;\n var valA;\n var valB;\n\n // Loop through the list of sort criteria.\n for (var i = 0; i < sortComparer.length; i++) {\n // Get the criteria name, which should match an item's sort data key.\n criteriaName = sortComparer[i][0];\n criteriaOrder = sortComparer[i][1];\n\n // Get items' cached sort values for the criteria. If the item has no sort\n // data let's update the items sort data (this is a lazy load mechanism).\n valA = (a._sortData ? a : a._refreshSortData())._sortData[criteriaName];\n valB = (b._sortData ? b : b._refreshSortData())._sortData[criteriaName];\n\n // Sort the items in descending order if defined so explicitly. Otherwise\n // sort items in ascending order.\n if (criteriaOrder === 'desc' || (!criteriaOrder && isDescending)) {\n result = valB < valA ? -1 : valB > valA ? 1 : 0;\n } else {\n result = valA < valB ? -1 : valA > valB ? 1 : 0;\n }\n\n // If we have -1 or 1 as the return value, let's return it immediately.\n if (result) return result;\n }\n\n // If values are equal let's compare the item indices to make sure we\n // have a stable sort.\n if (!result) {\n if (!indexMap) indexMap = getIndexMap(origItems);\n result = compareIndices(a, b);\n }\n return result;\n }\n\n function customComparer(a, b) {\n var result = sortComparer(a, b);\n // If descending let's invert the result value.\n if (isDescending && result) result = -result;\n // If we have a valid result (not zero) let's return it right away.\n if (result) return result;\n // If result is zero let's compare the item indices to make sure we have a\n // stable sort.\n if (!indexMap) indexMap = getIndexMap(origItems);\n return compareIndices(a, b);\n }\n\n return function(comparer, options) {\n if (this._isDestroyed || this._items.length < 2) return this;\n\n var items = this._items;\n var opts = options || 0;\n var layout = opts.layout ? opts.layout : opts.layout === undefined;\n var i;\n\n // Setup parent scope data.\n sortComparer = comparer;\n isDescending = !!opts.descending;\n origItems = items.slice(0);\n indexMap = null;\n\n // If function is provided do a native array sort.\n if (isFunction(sortComparer)) {\n items.sort(customComparer);\n }\n // Otherwise if we got a string, let's sort by the sort data as provided in\n // the instance's options.\n else if (typeof sortComparer === stringType) {\n sortComparer = parseCriteria(comparer);\n items.sort(defaultComparer);\n }\n // Otherwise if we got an array, let's assume it's a presorted array of the\n // items and order the items based on it.\n else if (Array.isArray(sortComparer)) {\n if (sortComparer.length !== items.length) {\n throw new Error('[' + namespace + '] sort reference items do not match with grid items.');\n }\n for (i = 0; i < items.length; i++) {\n if (sortComparer.indexOf(items[i]) < 0) {\n throw new Error('[' + namespace + '] sort reference items do not match with grid items.');\n }\n items[i] = sortComparer[i];\n }\n if (isDescending) items.reverse();\n }\n // Otherwise let's just skip it, nothing we can do here.\n else {\n /** @todo Maybe throw an error here? */\n return this;\n }\n\n // Emit sort event.\n if (this._hasListeners(eventSort)) {\n this._emit(eventSort, items.slice(0), origItems);\n }\n\n // If layout is needed.\n if (layout) {\n this.layout(layout === instantLayout, isFunction(layout) ? layout : undefined);\n }\n\n return this;\n };\n })();\n\n /**\n * Move item to another index or in place of another item.\n *\n * @public\n * @memberof Grid.prototype\n * @param {GridSingleItemQuery} item\n * @param {GridSingleItemQuery} position\n * @param {Object} [options]\n * @param {String} [options.action=\"move\"]\n * - Accepts either \"move\" or \"swap\".\n * - \"move\" moves the item in place of the other item.\n * - \"swap\" swaps the position of the items.\n * @param {(Boolean|LayoutCallback|String)} [options.layout=true]\n * @returns {Grid}\n */\n Grid.prototype.move = function(item, position, options) {\n if (this._isDestroyed || this._items.length < 2) return this;\n\n var items = this._items;\n var opts = options || 0;\n var layout = opts.layout ? opts.layout : opts.layout === undefined;\n var isSwap = opts.action === actionSwap;\n var action = isSwap ? actionSwap : actionMove;\n var fromItem = this._getItem(item);\n var toItem = this._getItem(position);\n var fromIndex;\n var toIndex;\n\n // Make sure the items exist and are not the same.\n if (fromItem && toItem && fromItem !== toItem) {\n // Get the indices of the items.\n fromIndex = items.indexOf(fromItem);\n toIndex = items.indexOf(toItem);\n\n // Do the move/swap.\n if (isSwap) {\n arraySwap(items, fromIndex, toIndex);\n } else {\n arrayMove(items, fromIndex, toIndex);\n }\n\n // Emit move event.\n if (this._hasListeners(eventMove)) {\n this._emit(eventMove, {\n item: fromItem,\n fromIndex: fromIndex,\n toIndex: toIndex,\n action: action\n });\n }\n\n // If layout is needed.\n if (layout) {\n this.layout(layout === instantLayout, isFunction(layout) ? layout : undefined);\n }\n }\n\n return this;\n };\n\n /**\n * Send item to another Grid instance.\n *\n * @public\n * @memberof Grid.prototype\n * @param {GridSingleItemQuery} item\n * @param {Grid} grid\n * @param {GridSingleItemQuery} position\n * @param {Object} [options]\n * @param {HTMLElement} [options.appendTo=document.body]\n * @param {(Boolean|LayoutCallback|String)} [options.layoutSender=true]\n * @param {(Boolean|LayoutCallback|String)} [options.layoutReceiver=true]\n * @returns {Grid}\n */\n Grid.prototype.send = function(item, grid, position, options) {\n if (this._isDestroyed || grid._isDestroyed || this === grid) return this;\n\n // Make sure we have a valid target item.\n item = this._getItem(item);\n if (!item) return this;\n\n var opts = options || 0;\n var container = opts.appendTo || window.document.body;\n var layoutSender = opts.layoutSender ? opts.layoutSender : opts.layoutSender === undefined;\n var layoutReceiver = opts.layoutReceiver\n ? opts.layoutReceiver\n : opts.layoutReceiver === undefined;\n\n // Start the migration process.\n item._migrate.start(grid, position, container);\n\n // If migration was started successfully and the item is active, let's layout\n // the grids.\n if (item._migrate._isActive && item._isActive) {\n if (layoutSender) {\n this.layout(\n layoutSender === instantLayout,\n isFunction(layoutSender) ? layoutSender : undefined\n );\n }\n if (layoutReceiver) {\n grid.layout(\n layoutReceiver === instantLayout,\n isFunction(layoutReceiver) ? layoutReceiver : undefined\n );\n }\n }\n\n return this;\n };\n\n /**\n * Destroy the instance.\n *\n * @public\n * @memberof Grid.prototype\n * @param {Boolean} [removeElements=false]\n * @returns {Grid}\n */\n Grid.prototype.destroy = function(removeElements) {\n if (this._isDestroyed) return this;\n\n var container = this._element;\n var items = this._items.slice(0);\n var i;\n\n // Unbind window resize event listener.\n if (this._resizeHandler) {\n window.removeEventListener('resize', this._resizeHandler);\n }\n\n // Destroy items.\n for (i = 0; i < items.length; i++) {\n items[i]._destroy(removeElements);\n }\n\n // Restore container.\n removeClass(container, this._settings.containerClass);\n container.style.height = '';\n container.style.width = '';\n\n // Emit destroy event and unbind all events.\n this._emit(eventDestroy);\n this._emitter.destroy();\n\n // Remove reference from the grid instances collection.\n gridInstances[this._id] = undefined;\n\n // Flag instance as destroyed.\n this._isDestroyed = true;\n\n return this;\n };\n\n /**\n * Private prototype methods\n * *************************\n */\n\n /**\n * Get instance's item by element or by index. Target can also be an Item\n * instance in which case the function returns the item if it exists within\n * related Grid instance. If nothing is found with the provided target, null\n * is returned.\n *\n * @private\n * @memberof Grid.prototype\n * @param {GridSingleItemQuery} [target]\n * @returns {?Item}\n */\n Grid.prototype._getItem = function(target) {\n // If no target is specified or the instance is destroyed, return null.\n if (this._isDestroyed || (!target && target !== 0)) {\n return null;\n }\n\n // If target is number return the item in that index. If the number is lower\n // than zero look for the item starting from the end of the items array. For\n // example -1 for the last item, -2 for the second last item, etc.\n if (typeof target === numberType$1) {\n return this._items[target > -1 ? target : this._items.length + target] || null;\n }\n\n // If the target is an instance of Item return it if it is attached to this\n // Grid instance, otherwise return null.\n if (target instanceof Item) {\n return target._gridId === this._id ? target : null;\n }\n\n // In other cases let's assume that the target is an element, so let's try\n // to find an item that matches the element and return it. If item is not\n // found return null.\n /** @todo This could be made a lot faster by using Map/WeakMap of elements. */\n for (var i = 0; i < this._items.length; i++) {\n if (this._items[i]._element === target) {\n return this._items[i];\n }\n }\n\n return null;\n };\n\n /**\n * Recalculates and updates instance's layout data.\n *\n * @private\n * @memberof Grid.prototype\n * @returns {LayoutData}\n */\n Grid.prototype._updateLayout = function() {\n var layout = this._layout;\n var settings = this._settings.layout;\n var width;\n var height;\n var newLayout;\n var i;\n\n // Let's increment layout id.\n ++layout.id;\n\n // Let's update layout items\n layout.items.length = 0;\n for (i = 0; i < this._items.length; i++) {\n if (this._items[i]._isActive) layout.items.push(this._items[i]);\n }\n\n // Let's make sure we have the correct container dimensions.\n this._refreshDimensions();\n\n // Calculate container width and height (without borders).\n width = this._width - this._borderLeft - this._borderRight;\n height = this._height - this._borderTop - this._borderBottom;\n\n // Calculate new layout.\n if (isFunction(settings)) {\n newLayout = settings(layout.items, width, height);\n } else {\n newLayout = packer.getLayout(layout.items, width, height, layout.slots, settings);\n }\n\n // Let's update the grid's layout.\n layout.slots = newLayout.slots;\n layout.setWidth = Boolean(newLayout.setWidth);\n layout.setHeight = Boolean(newLayout.setHeight);\n layout.width = newLayout.width;\n layout.height = newLayout.height;\n\n return layout;\n };\n\n /**\n * Emit a grid event.\n *\n * @private\n * @memberof Grid.prototype\n * @param {String} event\n * @param {...*} [arg]\n */\n Grid.prototype._emit = function() {\n if (this._isDestroyed) return;\n this._emitter.emit.apply(this._emitter, arguments);\n };\n\n /**\n * Check if there are any events listeners for an event.\n *\n * @private\n * @memberof Grid.prototype\n * @param {String} event\n * @returns {Boolean}\n */\n Grid.prototype._hasListeners = function(event) {\n var listeners = this._emitter._events[event];\n return !!(listeners && listeners.length);\n };\n\n /**\n * Update container's width, height and offsets.\n *\n * @private\n * @memberof Grid.prototype\n */\n Grid.prototype._updateBoundingRect = function() {\n var element = this._element;\n var rect = element.getBoundingClientRect();\n this._width = rect.width;\n this._height = rect.height;\n this._left = rect.left;\n this._top = rect.top;\n };\n\n /**\n * Update container's border sizes.\n *\n * @private\n * @memberof Grid.prototype\n * @param {Boolean} left\n * @param {Boolean} right\n * @param {Boolean} top\n * @param {Boolean} bottom\n */\n Grid.prototype._updateBorders = function(left, right, top, bottom) {\n var element = this._element;\n if (left) this._borderLeft = getStyleAsFloat(element, 'border-left-width');\n if (right) this._borderRight = getStyleAsFloat(element, 'border-right-width');\n if (top) this._borderTop = getStyleAsFloat(element, 'border-top-width');\n if (bottom) this._borderBottom = getStyleAsFloat(element, 'border-bottom-width');\n };\n\n /**\n * Refresh all of container's internal dimensions and offsets.\n *\n * @private\n * @memberof Grid.prototype\n */\n Grid.prototype._refreshDimensions = function() {\n this._updateBoundingRect();\n this._updateBorders(1, 1, 1, 1);\n };\n\n /**\n * Show or hide Grid instance's items.\n *\n * @private\n * @memberof Grid.prototype\n * @param {GridMultiItemQuery} items\n * @param {Boolean} toVisible\n * @param {Object} [options]\n * @param {Boolean} [options.instant=false]\n * @param {(ShowCallback|HideCallback)} [options.onFinish]\n * @param {(Boolean|LayoutCallback|String)} [options.layout=true]\n */\n Grid.prototype._setItemsVisibility = function(items, toVisible, options) {\n var grid = this;\n var targetItems = this.getItems(items);\n var opts = options || 0;\n var isInstant = opts.instant === true;\n var callback = opts.onFinish;\n var layout = opts.layout ? opts.layout : opts.layout === undefined;\n var counter = targetItems.length;\n var startEvent = toVisible ? eventShowStart : eventHideStart;\n var endEvent = toVisible ? eventShowEnd : eventHideEnd;\n var method = toVisible ? 'show' : 'hide';\n var needsLayout = false;\n var completedItems = [];\n var hiddenItems = [];\n var item;\n var i;\n\n // If there are no items call the callback, but don't emit any events.\n if (!counter) {\n if (isFunction(callback)) callback(targetItems);\n return;\n }\n\n // Emit showStart/hideStart event.\n if (this._hasListeners(startEvent)) {\n this._emit(startEvent, targetItems.slice(0));\n }\n\n // Show/hide items.\n for (i = 0; i < targetItems.length; i++) {\n item = targetItems[i];\n\n // If inactive item is shown or active item is hidden we need to do\n // layout.\n if ((toVisible && !item._isActive) || (!toVisible && item._isActive)) {\n needsLayout = true;\n }\n\n // If inactive item is shown we also need to do a little hack to make the\n // item not animate it's next positioning (layout).\n if (toVisible && !item._isActive) {\n item._layout._skipNextAnimation = true;\n }\n\n // If a hidden item is being shown we need to refresh the item's\n // dimensions.\n if (toVisible && item._visibility._isHidden) {\n hiddenItems.push(item);\n }\n\n // Show/hide the item.\n item._visibility[method](isInstant, function(interrupted, item) {\n // If the current item's animation was not interrupted add it to the\n // completedItems array.\n if (!interrupted) completedItems.push(item);\n\n // If all items have finished their animations call the callback\n // and emit showEnd/hideEnd event.\n if (--counter < 1) {\n if (isFunction(callback)) callback(completedItems.slice(0));\n if (grid._hasListeners(endEvent)) grid._emit(endEvent, completedItems.slice(0));\n }\n });\n }\n\n // Refresh hidden items.\n if (hiddenItems.length) this.refreshItems(hiddenItems);\n\n // Layout if needed.\n if (needsLayout && layout) {\n this.layout(layout === instantLayout, isFunction(layout) ? layout : undefined);\n }\n };\n\n /**\n * Private helpers\n * ***************\n */\n\n /**\n * Merge default settings with user settings. The returned object is a new\n * object with merged values. The merging is a deep merge meaning that all\n * objects and arrays within the provided settings objects will be also merged\n * so that modifying the values of the settings object will have no effect on\n * the returned object.\n *\n * @param {Object} defaultSettings\n * @param {Object} [userSettings]\n * @returns {Object} Returns a new object.\n */\n function mergeSettings(defaultSettings, userSettings) {\n // Create a fresh copy of default settings.\n var ret = mergeObjects({}, defaultSettings);\n\n // Merge user settings to default settings.\n if (userSettings) {\n ret = mergeObjects(ret, userSettings);\n }\n\n // Handle visible/hidden styles manually so that the whole object is\n // overridden instead of the props.\n ret.visibleStyles = (userSettings || 0).visibleStyles || (defaultSettings || 0).visibleStyles;\n ret.hiddenStyles = (userSettings || 0).hiddenStyles || (defaultSettings || 0).hiddenStyles;\n\n return ret;\n }\n\n /**\n * Merge two objects recursively (deep merge). The source object's properties\n * are merged to the target object.\n *\n * @param {Object} target\n * - The target object.\n * @param {Object} source\n * - The source object.\n * @returns {Object} Returns the target object.\n */\n function mergeObjects(target, source) {\n var sourceKeys = Object.keys(source);\n var length = sourceKeys.length;\n var isSourceObject;\n var propName;\n var i;\n\n for (i = 0; i < length; i++) {\n propName = sourceKeys[i];\n isSourceObject = isPlainObject(source[propName]);\n\n // If target and source values are both objects, merge the objects and\n // assign the merged value to the target property.\n if (isPlainObject(target[propName]) && isSourceObject) {\n target[propName] = mergeObjects(mergeObjects({}, target[propName]), source[propName]);\n continue;\n }\n\n // If source's value is object and target's is not let's clone the object as\n // the target's value.\n if (isSourceObject) {\n target[propName] = mergeObjects({}, source[propName]);\n continue;\n }\n\n // If source's value is an array let's clone the array as the target's\n // value.\n if (Array.isArray(source[propName])) {\n target[propName] = source[propName].slice(0);\n continue;\n }\n\n // In all other cases let's just directly assign the source's value as the\n // target's value.\n target[propName] = source[propName];\n }\n\n return target;\n }\n\n return Grid;\n\n}));\n","import { Question, ItemValue } from \"survey-core\";\nimport { VisualizerBase } from \"./visualizerBase\";\nimport { localization } from \"./localizationManager\";\nimport { DocumentHelper } from \"./utils/index\";\nimport { VisualizationManager } from \"./visualizationManager\";\nimport { IVisualizerWithSelection } from \"./selectBase\";\nimport { Event } from \"survey-core\";\n\nexport class AlternativeVisualizersWrapper\n extends VisualizerBase\n implements IVisualizerWithSelection {\n\n private visualizerSelector: HTMLDivElement;\n\n private updateVisualizerSelector() {\n if (!!this.visualizerSelector) {\n this.visualizerSelector.getElementsByTagName(\n \"select\"\n )[0].value = this.visualizer.type;\n }\n }\n\n constructor(\n private visualizers: Array<VisualizerBase>,\n question: Question,\n data: Array<{ [index: string]: any }>,\n options?: Object\n ) {\n super(question, data, options, \"alternative\");\n this.showToolbar = false;\n this.loadingData = false;\n if (!visualizers || visualizers.length < 2) {\n throw new Error(\n \"VisualizerArrayWrapper works with visualizers collection only.\"\n );\n }\n this.visualizers.forEach((visualizer) => {\n visualizer.onUpdate = () => this.invokeOnUpdate();\n visualizer.onGetToolbarItemCreators = () => this.toolbarItemCreators;\n if (visualizer.supportSelection) {\n this._supportSelection = true;\n this.visualizersWithSelection.push(\n <IVisualizerWithSelection>(<any>visualizer)\n );\n }\n });\n\n if(this.options.allowChangeVisualizerType !== false) {\n this.registerToolbarItem(\"changeVisualizer\", () =>\n this.visualizerSelector = DocumentHelper.createSelector(\n this.visualizers.map((visualizer) => {\n return {\n value: visualizer.type,\n text: localization.getString(\"visualizer_\" + visualizer.type),\n };\n }),\n (option: any) => this.visualizer.type === option.value,\n (e: any) => this.setVisualizer(e.target.value)\n ), 0\n );\n }\n\n this.visualizer = visualizers[0];\n this.visualizer.onAfterRender.add(this.onAfterVisualizerRenderCallback);\n this.visualizer.onStateChanged.add(this.onVisualizerStateChangedCallback);\n }\n\n protected visualizerContainer: HTMLElement;\n public get hasFooter(): boolean {\n return false;\n }\n\n public getVisualizers() {\n return this.visualizers;\n }\n\n private visualizersWithSelection: Array<IVisualizerWithSelection> = [];\n private selectedItem: ItemValue;\n private visualizer: VisualizerBase;\n\n private onAfterVisualizerRenderCallback = () => {\n this.afterRender(this.contentContainer);\n };\n private onVisualizerStateChangedCallback = (s, options) => {\n this.stateChanged(\"visualizer\", options);\n };\n\n /**\n * The event is fired right after AlternativeVisualizersWrapper content type has been changed.\n **/\n public onVisualizerChanged: Event<\n (sender: AlternativeVisualizersWrapper, options: any) => any,\n AlternativeVisualizersWrapper,\n any\n > = new Event<(sender: AlternativeVisualizersWrapper, options: any) => any, AlternativeVisualizersWrapper, any>();\n\n /**\n * This method selects visualizer to show by it name.\n *\n * parameters:\n * name - the name of visualizer to show,\n * quiet - set it to true if you don't want to rise a notification event\n *\n **/\n public setVisualizer(type: string, quiet = false): void {\n const visualizerCandidate = this.visualizers.filter((v) => v.type === type)[0];\n if (!!visualizerCandidate && visualizerCandidate !== this.visualizer) {\n let isFooterCollapsed;\n if (!!this.visualizer) {\n isFooterCollapsed = this.visualizer.isFooterCollapsed;\n this.visualizer.onStateChanged.remove(this.onVisualizerStateChangedCallback);\n this.visualizer.onAfterRender.remove(this.onAfterVisualizerRenderCallback);\n this.visualizer.destroy();\n }\n this.visualizer = visualizerCandidate;\n this.visualizer.isFooterCollapsed = isFooterCollapsed;\n this.refresh();\n this.visualizer.onAfterRender.add(this.onAfterVisualizerRenderCallback);\n this.visualizer.onStateChanged.add(this.onVisualizerStateChangedCallback);\n if (!quiet) {\n this.onVisualizerChanged.fire(this, { visualizer: this.visualizer });\n this.stateChanged(\"visualizer\", type);\n }\n this.updateVisualizerSelector();\n }\n }\n\n public getVisualizer(): VisualizerBase {\n return this.visualizer;\n }\n\n updateData(data: Array<{ [index: string]: any }>) {\n super.updateData(data);\n this.visualizers.forEach((visualizer) => {\n visualizer.updateData(data);\n });\n }\n\n public set onDataItemSelected(\n val: (selectedValue: any, selectedText: string) => void\n ) {\n this.visualizersWithSelection.forEach((visualizer) => {\n visualizer.onDataItemSelected = val;\n });\n }\n\n setSelection(item: ItemValue) {\n this.visualizersWithSelection.forEach((visualizer) => {\n visualizer.setSelection(item);\n });\n }\n\n get selection() {\n return (<any>this.visualizer).selection || this.selectedItem;\n }\n\n protected renderContent(container: HTMLElement): void {\n this.visualizerContainer = container;\n this.visualizer.render(this.visualizerContainer);\n }\n\n protected setBackgroundColorCore(color: string) {\n super.setBackgroundColorCore(color);\n this.visualizers.forEach(visualizer => visualizer.backgroundColor = color);\n }\n\n /**\n * Returns an object with properties that describe a current visualizer state. The properties are different for each individual visualizer.\n *\n * > This method is overriden in descendant classes.\n * @see setState\n * @see resetState\n */\n public getState(): any {\n const currentVisualizerState = this.visualizer.getState();\n const state: any = {\n visualizer: this.visualizer.type,\n };\n if(Object.keys(currentVisualizerState).length > 0) {\n state.state = currentVisualizerState;\n }\n return state;\n }\n /**\n * Sets the visualizer's state.\n *\n * @see getState\n * @see resetState\n */\n public setState(state: any): void {\n if(!!state.visualizer) {\n this.setVisualizer(state.visualizer, true);\n }\n if(!!state.state) {\n this.visualizer.setState(state.state);\n }\n }\n /**\n * Resets the visualizer's state.\n *\n * @see getState\n * @see setState\n */\n public resetState(): void {\n super.resetState();\n this.visualizers.forEach(visualizer => visualizer.resetState());\n this.setVisualizer(this.visualizers[0].type, true);\n }\n\n getValues(): Array<any> {\n return this.visualizer.getValues();\n }\n\n getLabels(): Array<string> {\n return this.visualizer.getLabels();\n }\n\n public getCalculatedValues(): Promise<Array<Object>> {\n return this.visualizer.getCalculatedValues();\n }\n\n destroy() {\n this.visualizers.forEach((visualizer) => {\n visualizer.onAfterRender.remove(this.onAfterVisualizerRenderCallback);\n visualizer.onStateChanged.remove(this.onVisualizerStateChangedCallback);\n visualizer.onUpdate = undefined;\n });\n this.visualizer.destroy();\n super.destroy();\n }\n}\n\nVisualizationManager.registerAltVisualizerSelector(\n AlternativeVisualizersWrapper\n);\n","import { setupLocale } from \"../localizationManager\";\n\nexport var arabicStrings = {\n // \"Group By Me\"\n groupButton: \"زرار المجموعة\",\n // \"Ungroup By Me\"\n ungroupButton: \"تم التحديث من خلالى\",\n // \"Select Me\"\n selectButton: \"اختر\",\n // \"Hide column\"\n hideColumn: \"اخفاء العمود\",\n // \"Show column\"\n showColumn: \"اظهار\",\n // \"Make column private\"\n makePrivateColumn: \"أجعل العمود خاص\",\n // \"Make column public\"\n makePublicColumn: \"أجعل العمود عام\",\n // \"Move to Detail\"\n moveToDetail: \"انتقل إلى التفاصيل\",\n // \"Show as Column\"\n showAsColumn: \"إظهار كعمود\",\n // \"Search...\"\n filterPlaceholder: \"بحث...\",\n // \"Remove rows\"\n removeRows: \"حذف\",\n // \"Show\"\n showLabel: \"اظهار\",\n // \"entries\"\n entriesLabel: \"مدخلات\",\n // \"Texts in table\"\n visualizer_text: \"جداول\",\n // \"Wordcloud\"\n visualizer_wordcloud: \"كلمات\",\n // \"Histogram\"\n visualizer_histogram: \"الرسم البياني\",\n // \"Average\"\n visualizer_number: \"متوسط\",\n // \"Table\"\n visualizer_choices: \"جدول\",\n // \"Chart\"\n visualizer_selectBase: \"رسم بياني\",\n // [Auto-translated] \"Chart\"\n visualizer_matrix: \"جدول\",\n // [Auto-translated] \"Bar\"\n chartType_bar: \"بار\",\n // \"Vertical Bar\"\n chartType_vbar: \"شريط عمودي\",\n // \"Stacked Bar\"\n chartType_stackedbar: \"شريط مكدس\",\n // \"Doughnut\"\n chartType_doughnut: \"مخطط حلقي\",\n // \"Pie\"\n chartType_pie: \"مخطط دائري\",\n // \"Scatter\"\n chartType_scatter: \"مخطط التشتت\",\n // \"Gauge\"\n chartType_gauge: \"مخطط القياس\",\n // \"Bullet\"\n chartType_bullet: \"مخطط نقطي\",\n // [Auto-translated] \"Line\"\n chartType_line: \"سطر\",\n // [Auto-translated] \"Radar\"\n chartType_radar: \"رادار\",\n // \"Hide\"\n hideButton: \"اخفاء\",\n // \"Make private\"\n makePrivateButton: \"أجعل خاص\",\n // \"Make public\"\n makePublicButton: \"أجعل عام\",\n // \"Show\"\n showButton: \"اظهار\",\n // \"Filter\"\n filter: \"ترشح\",\n // \"Reset Filter\"\n resetFilter: \"إعادة تعيين\",\n // \"Change Locale\"\n changeLocale: \"تغيير اللغة\",\n // \"Clear\"\n clearButton: \"مسح\",\n // \"Choose question to show...\"\n addElement: \"اختر سؤالاً للعرض ...\",\n // \"Default Order\"\n defaultOrder: \"الترتيب الافتراضي\",\n // \"Ascending\"\n ascOrder: \"تصاعدى\",\n // \"Descending\"\n descOrder: \"تنازلى\",\n // \"Show minor columns\"\n showMinorColumns: \"إظهار الأعمدة الثانوية\",\n // [Auto-translated] \"Actions\"\n actionsColumn: \"الاجراءات\",\n // \"Other items and comments\"\n otherCommentTitle: \"بنود وتعليقات أخرى\",\n // \"Show percentages\"\n showPercentages: \"عرض النسب المئوية\",\n // \"Hide percentages\"\n hidePercentages: \"إخفاء النسب\",\n // \"PDF\"\n pdfDownloadCaption: \"PDF\",\n // \"Excel\"\n xlsxDownloadCaption: \"Excel\",\n // \"CSV\"\n csvDownloadCaption: \"CSV\",\n // \"Download plot as a PNG file\"\n saveDiagramAsPNG: \"تنزيل بصيغة png\",\n // \"Hide empty answers\"\n hideEmptyAnswers: \"إخفاء الإجابات الفارغة\",\n // \"Show empty answers\"\n showEmptyAnswers: \"إظهار الإجابات الفارغة\",\n // \"All answers\"\n \"topNValueText-1\": \"جميع الإجابات\",\n // \"Top 5 answers\"\n topNValueText5: \"أهم 5 إجابات\",\n // \"Top 10 answers\"\n topNValueText10: \"أفضل 10 إجابات\",\n // \"Top 20 answers\"\n topNValueText20: \"أفضل 20 إجابة\",\n // \"Hide missing answers\"\n hideMissingAnswers: \"إخفاء الإجابات المفقودة\",\n // \"Show missing answers\"\n showMissingAnswers: \"عرض الإجابات المفقودة\",\n // \"Missing answers\"\n missingAnswersLabel: \"أجوبة مفقودة\",\n // \"This question type is not visualized yet\"\n noVisualizerForQuestion: \"لم يتم العرض بعد\",\n // \"There are no results yet\"\n noResults: \"لا يوجد نتائج للعرض\",\n // \"Per Values\"\n showPerValues: \"لكل القيم\",\n // \"Per Columns\"\n showPerColumns: \"لكل الأعمدة\",\n // \"Answer\"\n answer: \"إجب\",\n // \"Correct answer: \"\n correctAnswer: \"الاجابة الصحيحة: \",\n // \"Percent\"\n percent: \"النسبه المئويه\",\n // [Auto-translated] \"Percentage\"\n percentage: \"النسبه المئويه\",\n // [Auto-translated] \"Chart\"\n statistics_chart: \"جدول\",\n // \"Responses\"\n responses: \"الاستجابات\",\n // [Auto-translated] \"NPS\"\n visualizer_nps: \"NPS\",\n // [Auto-translated] \"Chart\"\n visualizer_boolean: \"جدول\",\n // [Auto-translated] \"Table\"\n visualizer_options: \"جدول\",\n // [Auto-translated] \"NPS\"\n npsScore: \"NPS\",\n // [Auto-translated] \"Promoters\"\n npsPromoters: \"المروجين\",\n // [Auto-translated] \"Passives\"\n npsPassives: \"سلبيات\",\n // [Auto-translated] \"Detractors\"\n npsDetractors: \"المنتقدين\",\n // [Auto-translated] \"Category (X Axis):\"\n axisXSelectorTitle: \"الفئة (المحور X):\",\n // [Auto-translated] \"Legend (Series):\"\n axisYSelectorTitle: \"أسطورة (سلسلة):\",\n // [Auto-translated] \"Segments:\"\n axisXAlternativeSelectorTitle: \"قطاعات:\",\n // [Auto-translated] \"Groups:\"\n axisYAlternativeSelectorTitle: \"المجموعات:\",\n // [Auto-translated] \"Not selected\"\n notSelected: \"غير محدد\",\n // [Auto-translated] \"Default\"\n intervalMode_default: \"افتراضي\",\n // [Auto-translated] \"Decades\"\n intervalMode_decades: \"عقود\",\n // [Auto-translated] \"Years\"\n intervalMode_years: \"اعوام\",\n // [Auto-translated] \"Quarters\"\n intervalMode_quarters: \"ارباع\",\n // [Auto-translated] \"Months\"\n intervalMode_months: \"أشهر\",\n // [Auto-translated] \"Days\"\n intervalMode_days: \"أيام\",\n // [Auto-translated] \"Custom\"\n intervalMode_custom: \"تقليد\",\n // [Auto-translated] \"Auto\"\n intervalMode_auto: \"تلقائي\",\n // [Auto-translated] \"Intervals:\"\n intervalModeTitle: \"فترات:\",\n // [Auto-translated] \"Show individual values\"\n noRunningTotals: \"إظهار القيم الفردية\",\n // [Auto-translated] \"Show running totals\"\n runningTotals: \"إظهار الإجماليات الجارية\",\n // [Auto-translated] \"Compare periods\"\n groupDateSeries: \"مقارنة الفترات\",\n // [Auto-translated] \"View timeline\"\n ungroupDateSeries: \"عرض الجدول الزمني\",\n // [Auto-translated] \"None\"\n noneAggregateText: \"اي\",\n // [Auto-translated] \"Aggregate:\"\n selectAggregateText: \"تجميع:\",\n // [Auto-translated] \"Year ends with\"\n groupedYearsAxisTitle: \"ينتهي العام ب\"\n};\n\nsetupLocale({ localeCode: \"ar\", strings: arabicStrings, nativeName: \"العربية\" });","import { setupLocale } from \"../localizationManager\";\n\nexport var dutchStrings = {\n // \"Group By Me\"\n groupButton: \"Groeperen op\",\n // \"Ungroup By Me\"\n ungroupButton: \"Groepering verwijderen\",\n // \"Select Me\"\n selectButton: \"Selecteer mij\",\n // \"Hide column\"\n hideColumn: \"Kolom verbergen\",\n // \"Show column\"\n showColumn: \"Toon kolom\",\n // \"Make column private\"\n makePrivateColumn: \"Kolom privé maken\",\n // \"Make column public\"\n makePublicColumn: \"Maak kolom openbaar\",\n // \"Move to Detail\"\n moveToDetail: \"Ga naar detail\",\n // \"Show as Column\"\n showAsColumn: \"Weergeven als kolom\",\n // \"Search...\"\n filterPlaceholder: \"Zoeken...\",\n // \"Remove rows\"\n removeRows: \"Verwijder rijen\",\n // \"Show\"\n showLabel: \"Tonen\",\n // \"entries\"\n entriesLabel: \"inzendingen\",\n // \"Texts in table\"\n visualizer_text: \"Teksten in tabel\",\n // \"Wordcloud\"\n visualizer_wordcloud: \"Wordcloud\",\n // \"Histogram\"\n visualizer_histogram: \"Histogram\",\n // \"Average\"\n visualizer_number: \"Gemiddeld\",\n // \"Table\"\n visualizer_choices: \"Tabel\",\n // \"Chart\"\n visualizer_selectBase: \"Grafiek\",\n // [Auto-translated] \"Chart\"\n visualizer_matrix: \"Zeekaart\",\n // [Auto-translated] \"Bar\"\n chartType_bar: \"Bar\",\n // \"Vertical Bar\"\n chartType_vbar: \"Staafdiagram\",\n // \"Stacked Bar\"\n chartType_stackedbar: \"Staafdiagram (gestapeld)\",\n // \"Doughnut\"\n chartType_doughnut: \"Donut\",\n // \"Pie\"\n chartType_pie: \"Cirkeldiagram\",\n // \"Scatter\"\n chartType_scatter: \"Spreidingsdiagram\",\n // \"Gauge\"\n chartType_gauge: \"Meterdiagram\",\n // \"Bullet\"\n chartType_bullet: \"Kogelgrafiek\",\n // [Auto-translated] \"Line\"\n chartType_line: \"Lijn\",\n // [Auto-translated] \"Radar\"\n chartType_radar: \"Radar\",\n // \"Hide\"\n hideButton: \"Verbergen\",\n // \"Make private\"\n makePrivateButton: \"Maak prive\",\n // \"Make public\"\n makePublicButton: \"Openbaar maken\",\n // \"Show\"\n showButton: \"Tonen\",\n // \"Filter\"\n filter: \"Filter\",\n // \"Reset Filter\"\n resetFilter: \"Filter resetten\",\n // \"Change Locale\"\n changeLocale: \"Wijzig de landinstelling\",\n // \"Clear\"\n clearButton: \"Wissen\",\n // \"Choose question to show...\"\n addElement: \"Kies een vraag om weer te geven ...\",\n // \"Default Order\"\n defaultOrder: \"Standaardvolgorde\",\n // \"Ascending\"\n ascOrder: \"Oplopend\",\n // \"Descending\"\n descOrder: \"Aflopend\",\n // \"Show minor columns\"\n showMinorColumns: \"Toon kleine kolommen\",\n // [Auto-translated] \"Actions\"\n actionsColumn: \"Acties\",\n // \"Other items and comments\"\n otherCommentTitle: \"Andere items en opmerkingen\",\n // \"Show percentages\"\n showPercentages: \"Percentages weergeven\",\n // \"Hide percentages\"\n hidePercentages: \"Verberg percentages\",\n // \"PDF\"\n pdfDownloadCaption: \"PDF\",\n // \"Excel\"\n xlsxDownloadCaption: \"Excel\",\n // \"CSV\"\n csvDownloadCaption: \"CSV\",\n // \"Download plot as a PNG file\"\n saveDiagramAsPNG: \"Download plot als PNG\",\n // \"Hide empty answers\"\n hideEmptyAnswers: \"Verberg lege antwoorden\",\n // \"Show empty answers\"\n showEmptyAnswers: \"Toon lege antwoorden\",\n // \"All answers\"\n \"topNValueText-1\": \"Alle antwoorden\",\n // \"Top 5 answers\"\n topNValueText5: \"Top 5 antwoorden\",\n // \"Top 10 answers\"\n topNValueText10: \"Top 10 antwoorden\",\n // \"Top 20 answers\"\n topNValueText20: \"Top 20 antwoorden\",\n // \"Hide missing answers\"\n hideMissingAnswers: \"Ontbrekende antwoorden verbergen\",\n // \"Show missing answers\"\n showMissingAnswers: \"Ontbrekende antwoorden weergeven\",\n // \"Missing answers\"\n missingAnswersLabel: \"Ontbrekende antwoorden\",\n // \"This question type is not visualized yet\"\n noVisualizerForQuestion: \"Dit vraagtype is nog niet gevisualiseerd\",\n // \"There are no results yet\"\n noResults: \"Er zijn nog geen resultaten\",\n // \"Per Values\"\n showPerValues: \"Per waarden\",\n // \"Per Columns\"\n showPerColumns: \"Per Kolommen\",\n // \"Answer\"\n answer: \"Antwoorden\",\n // \"Correct answer: \"\n correctAnswer: \"Goed antwoord: \",\n // \"Percent\"\n percent: \"Procent\",\n // [Auto-translated] \"Percentage\"\n percentage: \"Percentage\",\n // [Auto-translated] \"Chart\"\n statistics_chart: \"Zeekaart\",\n // \"Responses\"\n responses: \"Reacties\",\n // [Auto-translated] \"NPS\"\n visualizer_nps: \"NPS\",\n // [Auto-translated] \"Chart\"\n visualizer_boolean: \"Zeekaart\",\n // [Auto-translated] \"Table\"\n visualizer_options: \"Tafel\",\n // [Auto-translated] \"NPS\"\n npsScore: \"NPS\",\n // [Auto-translated] \"Promoters\"\n npsPromoters: \"Initiatiefnemers\",\n // [Auto-translated] \"Passives\"\n npsPassives: \"Passief personeel\",\n // [Auto-translated] \"Detractors\"\n npsDetractors: \"Tegenstanders\",\n // [Auto-translated] \"Category (X Axis):\"\n axisXSelectorTitle: \"Categorie (X-as):\",\n // [Auto-translated] \"Legend (Series):\"\n axisYSelectorTitle: \"Legende (serie):\",\n // [Auto-translated] \"Segments:\"\n axisXAlternativeSelectorTitle: \"Segmenten:\",\n // [Auto-translated] \"Groups:\"\n axisYAlternativeSelectorTitle: \"Groepen:\",\n // [Auto-translated] \"Not selected\"\n notSelected: \"Niet geselecteerd\",\n // [Auto-translated] \"Default\"\n intervalMode_default: \"Verstek\",\n // [Auto-translated] \"Decades\"\n intervalMode_decades: \"Decennia\",\n // [Auto-translated] \"Years\"\n intervalMode_years: \"Jaren\",\n // [Auto-translated] \"Quarters\"\n intervalMode_quarters: \"Vertrekken\",\n // [Auto-translated] \"Months\"\n intervalMode_months: \"Maanden\",\n // [Auto-translated] \"Days\"\n intervalMode_days: \"Dagen\",\n // [Auto-translated] \"Custom\"\n intervalMode_custom: \"Gewoonte\",\n // [Auto-translated] \"Auto\"\n intervalMode_auto: \"Auto\",\n // [Auto-translated] \"Intervals:\"\n intervalModeTitle: \"Intervallen:\",\n // [Auto-translated] \"Show individual values\"\n noRunningTotals: \"Toon individuele waarden\",\n // [Auto-translated] \"Show running totals\"\n runningTotals: \"Toon lopende totalen\",\n // [Auto-translated] \"Compare periods\"\n groupDateSeries: \"Vergelijk periodes\",\n // [Auto-translated] \"View timeline\"\n ungroupDateSeries: \"Tijdlijn bekijken\",\n // [Auto-translated] \"None\"\n noneAggregateText: \"Geen\",\n // [Auto-translated] \"Aggregate:\"\n selectAggregateText: \"Aggregaat:\",\n // [Auto-translated] \"Year ends with\"\n groupedYearsAxisTitle: \"Het jaar eindigt met\"\n};\n\nsetupLocale({ localeCode: \"nl\", strings: dutchStrings, nativeName: \"Nederlands\" });","// Uncomment the line below if you create a custom dictionary\n// import { setupLocale } from \"../localizationManager\";\n\nexport var englishStrings = {\n groupButton: \"Group By Me\",\n ungroupButton: \"Ungroup By Me\",\n selectButton: \"Select Me\",\n hideColumn: \"Hide column\",\n showColumn: \"Show column\",\n makePrivateColumn: \"Make column private\",\n makePublicColumn: \"Make column public\",\n moveToDetail: \"Move to Detail\",\n showAsColumn: \"Show as Column\",\n filterPlaceholder: \"Search...\",\n removeRows: \"Remove rows\",\n showLabel: \"Show\",\n entriesLabel: \"entries\",\n visualizer_text: \"Texts in table\",\n visualizer_wordcloud: \"Wordcloud\",\n visualizer_histogram: \"Histogram\",\n visualizer_number: \"Average\",\n visualizer_choices: \"Table\",\n visualizer_selectBase: \"Chart\",\n visualizer_matrix: \"Chart\",\n chartType_bar: \"Bar\",\n chartType_vbar: \"Vertical Bar\",\n chartType_stackedbar: \"Stacked Bar\",\n chartType_doughnut: \"Doughnut\",\n chartType_pie: \"Pie\",\n chartType_scatter: \"Scatter\",\n chartType_gauge: \"Gauge\",\n chartType_bullet: \"Bullet\",\n chartType_line: \"Line\",\n chartType_radar: \"Radar\",\n hideButton: \"Hide\",\n makePrivateButton: \"Make private\",\n makePublicButton: \"Make public\",\n showButton: \"Show\",\n filter: \"Filter\",\n resetFilter: \"Reset Filter\",\n changeLocale: \"Change Locale\",\n clearButton: \"Clear\",\n addElement: \"Choose question to show...\",\n defaultOrder: \"Default Order\",\n ascOrder: \"Ascending\",\n descOrder: \"Descending\",\n showMinorColumns: \"Show minor columns\",\n actionsColumn: \"Actions\",\n otherCommentTitle: \"Other items and comments\",\n showPercentages: \"Show percentages\",\n hidePercentages: \"Hide percentages\",\n pdfDownloadCaption: \"PDF\",\n xlsxDownloadCaption: \"Excel\",\n csvDownloadCaption: \"CSV\",\n saveDiagramAsPNG: \"Download plot as a PNG file\",\n hideEmptyAnswers: \"Hide empty answers\",\n showEmptyAnswers: \"Show empty answers\",\n \"topNValueText-1\": \"All answers\",\n \"topNValueText5\": \"Top 5 answers\",\n \"topNValueText10\": \"Top 10 answers\",\n \"topNValueText20\": \"Top 20 answers\",\n hideMissingAnswers: \"Hide missing answers\",\n showMissingAnswers: \"Show missing answers\",\n missingAnswersLabel: \"Missing answers\",\n noVisualizerForQuestion: \"This question type is not visualized yet\",\n noResults: \"There are no results yet\",\n showPerValues: \"Per Values\",\n showPerColumns: \"Per Columns\",\n answer: \"Answer\",\n correctAnswer: \"Correct answer: \",\n percent: \"Percent\",\n percentage: \"Percentage\",\n statistics_chart: \"Chart\",\n responses: \"Responses\",\n visualizer_nps: \"NPS\",\n visualizer_boolean: \"Chart\",\n visualizer_options: \"Table\",\n npsScore: \"NPS\",\n npsPromoters: \"Promoters\",\n npsPassives: \"Passives\",\n npsDetractors: \"Detractors\",\n axisXSelectorTitle: \"Category (X Axis):\",\n axisYSelectorTitle: \"Legend (Series):\",\n axisXAlternativeSelectorTitle: \"Segments:\",\n axisYAlternativeSelectorTitle: \"Groups:\",\n notSelected: \"Not selected\",\n intervalMode_default: \"Default\",\n intervalMode_decades: \"Decades\",\n intervalMode_years: \"Years\",\n intervalMode_quarters: \"Quarters\",\n intervalMode_months: \"Months\",\n intervalMode_days: \"Days\",\n intervalMode_custom: \"Custom\",\n intervalMode_auto: \"Auto\",\n intervalModeTitle: \"Intervals:\",\n noRunningTotals: \"Show individual values\",\n runningTotals: \"Show running totals\",\n groupDateSeries: \"Compare periods\",\n ungroupDateSeries: \"View timeline\",\n noneAggregateText: \"None\",\n selectAggregateText: \"Aggregate:\",\n groupedYearsAxisTitle: \"Year ends with\",\n license: \"To use the Dashboard library in your application, a <a href='https://surveyjs.io/licensing' target='_blank'>developer license</a> is required. If you have an active license, please <a href='https://surveyjs.io/remove-alert-banner' target='_blank'>set up your license key</a> and ensure you're using the <a href='https://surveyjs.io/stay-updated/release-notes' target='_blank'>latest version</a>.\",\n license2: \"This banner appears because your maintenance subscription for the Dashboard library expired on {date}. You may continue using <a href='https://surveyjs.io/stay-updated/release-notes' target='_blank'>all versions released up to that date</a>. To remove this banner in the latest version, please <a href='https://surveyjs.io/manage#license-manager' target='_blank'>renew your subscription</a> and <a href='https://surveyjs.io/remove-alert-banner' target='_blank'>set up a new license key</a>.\"\n};\n\n// Uncomment the line below if you create a custom dictionary.\n// Replace \"en\" with a custom locale code (for example, \"fr\" or \"de\"),\n// Replace `englishStrings` with the name of the variable that contains the custom dictionary.\n// setupLocale({ localeCode: \"en\", strings: englishStrings });\n","import { setupLocale } from \"../localizationManager\";\n\nexport var farsiStrings = {\n // \"Group By Me\"\n groupButton: \"گروه بندی با\",\n // \"Ungroup By Me\"\n ungroupButton: \"حذف گروه\",\n // \"Select Me\"\n selectButton: \"انتخاب\",\n // \"Hide column\"\n hideColumn: \"مخفی کردن ستون\",\n // \"Show column\"\n showColumn: \"نمایش ستون\",\n // \"Make column private\"\n makePrivateColumn: \"خصوصی کردن ستون\",\n // \"Make column public\"\n makePublicColumn: \"عمومی کردن ستون\",\n // \"Move to Detail\"\n moveToDetail: \"انتقال به جزئیات\",\n // \"Show as Column\"\n showAsColumn: \"نمایش به عنوان ستون\",\n // \"Search...\"\n filterPlaceholder: \"جستجو...\",\n // \"Remove rows\"\n removeRows: \"حذف سطرها\",\n // \"Show\"\n showLabel: \"نمایش\",\n // \"entries\"\n entriesLabel: \"ورودی\",\n // \"Texts in table\"\n visualizer_text: \"متون در جدول\",\n // \"Wordcloud\"\n visualizer_wordcloud: \"ابر کلمات\",\n // \"Histogram\"\n visualizer_histogram: \"هیستوگرام\",\n // \"Average\"\n visualizer_number: \"متوسط\",\n // \"Table\"\n visualizer_choices: \"جدول\",\n // \"Chart\"\n visualizer_selectBase: \"نمودار\",\n // [Auto-translated] \"Chart\"\n visualizer_matrix: \"نمودار\",\n // [Auto-translated] \"Bar\"\n chartType_bar: \"نوار\",\n // \"Vertical Bar\"\n chartType_vbar: \"نوار عمودی\",\n // \"Stacked Bar\"\n chartType_stackedbar: \"نوار پشته\",\n // \"Doughnut\"\n chartType_doughnut: \"دونات\",\n // \"Pie\"\n chartType_pie: \"دابره ای(pie)\",\n // \"Scatter\"\n chartType_scatter: \"پراکندگی(Scatter)\",\n // \"Gauge\"\n chartType_gauge: \"عقربه ای\",\n // \"Bullet\"\n chartType_bullet: \"Bullet\",\n // [Auto-translated] \"Line\"\n chartType_line: \"خط\",\n // [Auto-translated] \"Radar\"\n chartType_radar: \"رادار\",\n // \"Hide\"\n hideButton: \"مخفی\",\n // \"Make private\"\n makePrivateButton: \"خصوصی کردن\",\n // \"Make public\"\n makePublicButton: \"عمومی کردن\",\n // \"Show\"\n showButton: \"نمایش\",\n // \"Filter\"\n filter: \"فیلتر\",\n // \"Reset Filter\"\n resetFilter: \"بازنشانی فیلترها\",\n // \"Change Locale\"\n changeLocale: \"تغییر محلی\",\n // \"Clear\"\n clearButton: \"پاک کردن\",\n // \"Choose question to show...\"\n addElement: \"انتخاب سوال برای نمایش...\",\n // \"Default Order\"\n defaultOrder: \"ترتیب پیشفرض\",\n // \"Ascending\"\n ascOrder: \"صعودی\",\n // \"Descending\"\n descOrder: \"نزولی\",\n // \"Show minor columns\"\n showMinorColumns: \"نمایش ستونهای فرعی\",\n // [Auto-translated] \"Actions\"\n actionsColumn: \"اقدامات\",\n // \"Other items and comments\"\n otherCommentTitle: \"سایر موارد و نظرات\",\n // \"Show percentages\"\n showPercentages: \"نمایش درصد\",\n // \"Hide percentages\"\n hidePercentages: \"درصدهای مخفی\",\n // \"PDF\"\n pdfDownloadCaption: \"پی دی اف\",\n // \"Excel\"\n xlsxDownloadCaption: \"اکسل\",\n // \"CSV\"\n csvDownloadCaption: \"Csv\",\n // \"Download plot as a PNG file\"\n saveDiagramAsPNG: \"دانلود طرح به عنوان یک فایل PNG\",\n // \"Hide empty answers\"\n hideEmptyAnswers: \"مخفی کردن پاسخهای خالی\",\n // \"Show empty answers\"\n showEmptyAnswers: \"نمایش پاسخهای خالی\",\n // \"All answers\"\n \"topNValueText-1\": \"همه پاسخ ها\",\n // \"Top 5 answers\"\n topNValueText5: \"5 پاسخ برتر\",\n // \"Top 10 answers\"\n topNValueText10: \"10 پاسخ برتر\",\n // \"Top 20 answers\"\n topNValueText20: \"20 پاسخ برتر\",\n // \"Hide missing answers\"\n hideMissingAnswers: \"مخفی کردن پاسخهای گمشده\",\n // \"Show missing answers\"\n showMissingAnswers: \"نمایش پاسخهای گمشده\",\n // \"Missing answers\"\n missingAnswersLabel: \"پاسخ های گمشده\",\n // \"This question type is not visualized yet\"\n noVisualizerForQuestion: \"این نوع سوال هنوز تجسم نشده است\",\n // \"There are no results yet\"\n noResults: \"هنوز نتیجه ای حاصل نشده است\",\n // \"Per Values\"\n showPerValues: \"به ازای هر ارزش\",\n // \"Per Columns\"\n showPerColumns: \"در هر ستون\",\n // \"Answer\"\n answer: \"پاسخ\",\n // \"Correct answer: \"\n correctAnswer: \"پاسخ صحیح: \",\n // \"Percent\"\n percent: \"درصد\",\n // [Auto-translated] \"Percentage\"\n percentage: \"درصد\",\n // [Auto-translated] \"Chart\"\n statistics_chart: \"نمودار\",\n // \"Responses\"\n responses: \"پاسخ\",\n // [Auto-translated] \"NPS\"\n visualizer_nps: \"NPS\",\n // [Auto-translated] \"Chart\"\n visualizer_boolean: \"نمودار\",\n // [Auto-translated] \"Table\"\n visualizer_options: \"جدول\",\n // [Auto-translated] \"NPS\"\n npsScore: \"NPS\",\n // [Auto-translated] \"Promoters\"\n npsPromoters: \"مروج\",\n // [Auto-translated] \"Passives\"\n npsPassives: \"منفعل ها\",\n // [Auto-translated] \"Detractors\"\n npsDetractors: \"بدهیدان\",\n // [Auto-translated] \"Category (X Axis):\"\n axisXSelectorTitle: \"دسته (محور X):\",\n // [Auto-translated] \"Legend (Series):\"\n axisYSelectorTitle: \"افسانه (سری):\",\n // [Auto-translated] \"Segments:\"\n axisXAlternativeSelectorTitle: \"بخش:\",\n // [Auto-translated] \"Groups:\"\n axisYAlternativeSelectorTitle: \"گروه:\",\n // [Auto-translated] \"Not selected\"\n notSelected: \"انتخاب نشده است\",\n // [Auto-translated] \"Default\"\n intervalMode_default: \"پیش فرض\",\n // [Auto-translated] \"Decades\"\n intervalMode_decades: \"دهه\",\n // [Auto-translated] \"Years\"\n intervalMode_years: \"سال\",\n // [Auto-translated] \"Quarters\"\n intervalMode_quarters: \"چهارم\",\n // [Auto-translated] \"Months\"\n intervalMode_months: \"ماهها\",\n // [Auto-translated] \"Days\"\n intervalMode_days: \"روزها\",\n // [Auto-translated] \"Custom\"\n intervalMode_custom: \"سفارشی\",\n // [Auto-translated] \"Auto\"\n intervalMode_auto: \"خودکار\",\n // [Auto-translated] \"Intervals:\"\n intervalModeTitle: \"فواصل:\",\n // [Auto-translated] \"Show individual values\"\n noRunningTotals: \"نمایش ارزش های فردی\",\n // [Auto-translated] \"Show running totals\"\n runningTotals: \"نمایش مجموع در حال اجرا\",\n // [Auto-translated] \"Compare periods\"\n groupDateSeries: \"دوره ها را مقایسه کنید\",\n // [Auto-translated] \"View timeline\"\n ungroupDateSeries: \"مشاهده جدول زمانی\",\n // [Auto-translated] \"None\"\n noneAggregateText: \"هیچ کدام\",\n // [Auto-translated] \"Aggregate:\"\n selectAggregateText: \"مجموع:\",\n // [Auto-translated] \"Year ends with\"\n groupedYearsAxisTitle: \"سال به پایان می رسد با\"\n};\n\nsetupLocale({ localeCode: \"fa\", strings: farsiStrings, nativeName: \"فارسی\" });\n","import { setupLocale } from \"../localizationManager\";\n\nexport var finnishStrings = {\n // \"Group By Me\"\n groupButton: \"Erottele minulla\",\n // \"Ungroup By Me\"\n ungroupButton: \"Poista erottele minulla\",\n // \"Select Me\"\n selectButton: \"Valitse minut\",\n // \"Hide column\"\n hideColumn: \"Piilota sarake\",\n // \"Show column\"\n showColumn: \"Näytä sarake\",\n // \"Make column private\"\n makePrivateColumn: \"Merkitse sarake yksityiseksi\",\n // \"Make column public\"\n makePublicColumn: \"Merkitse sarake julkiseksi\",\n // \"Move to Detail\"\n moveToDetail: \"Siirrä yksityiskohtiin\",\n // \"Show as Column\"\n showAsColumn: \"Näytä sarakkeena\",\n // \"Search...\"\n filterPlaceholder: \"Etsi...\",\n // \"Remove rows\"\n removeRows: \"Poista rivejä\",\n // \"Show\"\n showLabel: \"Näytä\",\n // \"entries\"\n entriesLabel: \"vastauksia\",\n // \"Texts in table\"\n visualizer_text: \"Tekstitaulukko\",\n // \"Wordcloud\"\n visualizer_wordcloud: \"Sanapilvi\",\n // \"Histogram\"\n visualizer_histogram: \"Histogrammi\",\n // \"Average\"\n visualizer_number: \"Keskiarvo\",\n // \"Table\"\n visualizer_choices: \"Taulukko\",\n // \"Chart\"\n visualizer_selectBase: \"Kuvaaja\",\n // \"Chart\"\n visualizer_matrix: \"Kuvaaja\",\n // \"Bar\"\n chartType_bar: \"Pylväs\",\n // \"Vertical Bar\"\n chartType_vbar: \"Vaakapyöväs\",\n // \"Stacked Bar\"\n chartType_stackedbar: \"Pinottu pylväs\",\n // \"Doughnut\"\n chartType_doughnut: \"Donitsi\",\n // \"Pie\"\n chartType_pie: \"Piirakka\",\n // \"Scatter\"\n chartType_scatter: \"Hajonta\",\n // \"Gauge\"\n chartType_gauge: \"Mittari\",\n // \"Bullet\"\n chartType_bullet: \"Luoti\",\n // \"Line\"\n chartType_line: \"Viiva\",\n // [Auto-translated] \"Radar\"\n chartType_radar: \"Tutka\",\n // \"Hide\"\n hideButton: \"Piilota\",\n // \"Make private\"\n makePrivateButton: \"Merkise yksityiseksi\",\n // \"Make public\"\n makePublicButton: \"Merkitse julkiseksi\",\n // \"Show\"\n showButton: \"Näytä\",\n // \"Filter\"\n filter: \"Rajaa\",\n // \"Reset Filter\"\n resetFilter: \"Nollaa Rajaus\",\n // \"Change Locale\"\n changeLocale: \"Vaihda kieli\",\n // \"Clear\"\n clearButton: \"Nollaa\",\n // \"Choose question to show...\"\n addElement: \"Valitse näytettävä kysymys...\",\n // \"Default Order\"\n defaultOrder: \"Oletusjärjestys\",\n // \"Ascending\"\n ascOrder: \"Nouseva\",\n // \"Descending\"\n descOrder: \"Laskeva\",\n // \"Show minor columns\"\n showMinorColumns: \"Näytä alasarakkeet\",\n // [Auto-translated] \"Actions\"\n actionsColumn: \"Toimet\",\n // \"Other items and comments\"\n otherCommentTitle: \"Muut asiat ja kommentit\",\n // \"Show percentages\"\n showPercentages: \"Näytä prosentit\",\n // \"Hide percentages\"\n hidePercentages: \"Piilota prosentit\",\n // \"PDF\"\n pdfDownloadCaption: \"PDF\",\n // \"Excel\"\n xlsxDownloadCaption: \"Excel\",\n // \"CSV\"\n csvDownloadCaption: \"CSV\",\n // \"Download plot as a PNG file\"\n saveDiagramAsPNG: \"Lataa kuvaaja PNG kuvana\",\n // \"Hide empty answers\"\n hideEmptyAnswers: \"Piilota tyhjät vastaukset\",\n // \"Show empty answers\"\n showEmptyAnswers: \"Näytä tyhjät vastaukset\",\n // \"All answers\"\n \"topNValueText-1\": \"Kaikki vastaukset\",\n // \"Top 5 answers\"\n topNValueText5: \"Top 5 vastaukset\",\n // \"Top 10 answers\"\n topNValueText10: \"Top 10 vastaukset\",\n // \"Top 20 answers\"\n topNValueText20: \"Top 20 vastaukset\",\n // \"Hide missing answers\"\n hideMissingAnswers: \"Piilota puuttuvat vastaukset\",\n // \"Show missing answers\"\n showMissingAnswers: \"Näytä puuttuvat vastaukset\",\n // \"Missing answers\"\n missingAnswersLabel: \"Puuttuvat vastaukset\",\n // \"This question type is not visualized yet\"\n noVisualizerForQuestion: \"Tätä kysymystyyppiä ei voida visualisoida.\",\n // \"There are no results yet\"\n noResults: \"Ei vielä tuloksia\",\n // \"Per Values\"\n showPerValues: \"Näytä arvottain\",\n // \"Per Columns\"\n showPerColumns: \"Näytä sarakkeittain\",\n // \"Answer\"\n answer: \"Vastaus\",\n // \"Correct answer: \"\n correctAnswer: \"Oikea vastaus: \",\n // \"Percent\"\n percent: \"Prosentti\",\n // \"Percentage\"\n percentage: \"Prosenttiyksikkö\",\n // \"Chart\"\n statistics_chart: \"Kuvaaja\",\n // \"Responses\"\n responses: \"Vastaukset\",\n // \"NPS\"\n visualizer_nps: \"NPS\",\n // [Auto-translated] \"Chart\"\n visualizer_boolean: \"Kaavio\",\n // [Auto-translated] \"Table\"\n visualizer_options: \"Pöytä\",\n // \"NPS\"\n npsScore: \"NPS\",\n // \"Promoters\"\n npsPromoters: \"Suosittelija\",\n // \"Passives\"\n npsPassives: \"Passiivinen\",\n // \"Detractors\"\n npsDetractors: \"Arvostelija\",\n // [Auto-translated] \"Category (X Axis):\"\n axisXSelectorTitle: \"Luokka (X-akseli):\",\n // [Auto-translated] \"Legend (Series):\"\n axisYSelectorTitle: \"Legenda (sarja):\",\n // [Auto-translated] \"Segments:\"\n axisXAlternativeSelectorTitle: \"Segmentit:\",\n // [Auto-translated] \"Groups:\"\n axisYAlternativeSelectorTitle: \"Ryhmät:\",\n // [Auto-translated] \"Not selected\"\n notSelected: \"Ei valittu\",\n // [Auto-translated] \"Default\"\n intervalMode_default: \"Laiminlyönti\",\n // [Auto-translated] \"Decades\"\n intervalMode_decades: \"Vuosikymmeniä\",\n // [Auto-translated] \"Years\"\n intervalMode_years: \"Vuosia\",\n // [Auto-translated] \"Quarters\"\n intervalMode_quarters: \"Neljäsosaa\",\n // [Auto-translated] \"Months\"\n intervalMode_months: \"Kuukautta\",\n // [Auto-translated] \"Days\"\n intervalMode_days: \"Päivää\",\n // [Auto-translated] \"Custom\"\n intervalMode_custom: \"Tapa\",\n // [Auto-translated] \"Auto\"\n intervalMode_auto: \"Auto\",\n // [Auto-translated] \"Intervals:\"\n intervalModeTitle: \"Välein:\",\n // [Auto-translated] \"Show individual values\"\n noRunningTotals: \"Näytä yksittäiset arvot\",\n // [Auto-translated] \"Show running totals\"\n runningTotals: \"Näytä juoksevat kokonaismäärät\",\n // [Auto-translated] \"Compare periods\"\n groupDateSeries: \"Vertaile kausia\",\n // [Auto-translated] \"View timeline\"\n ungroupDateSeries: \"Näytä aikajana\",\n // [Auto-translated] \"None\"\n noneAggregateText: \"Ei lainkaan\",\n // [Auto-translated] \"Aggregate:\"\n selectAggregateText: \"Aggregaatti:\",\n // [Auto-translated] \"Year ends with\"\n groupedYearsAxisTitle: \"Vuosi päättyy\"\n};\n\nsetupLocale({ localeCode: \"fi\", strings: finnishStrings, nativeName: \"Suomi\" });\n","import { setupLocale } from \"../localizationManager\";\n\nexport var frenchStrings = {\n // \"Group By Me\"\n groupButton: \"Grouper\",\n // \"Ungroup By Me\"\n ungroupButton: \"Dissocier\",\n // \"Select Me\"\n selectButton: \"Sélectionner\",\n // \"Hide column\"\n hideColumn: \"Masquer colonne\",\n // \"Show column\"\n showColumn: \"Afficher colonne\",\n // \"Make column private\"\n makePrivateColumn: \"Rendre la colonne privé\",\n // \"Make column public\"\n makePublicColumn: \"Rendre la colonne public\",\n // \"Move to Detail\"\n moveToDetail: \"Déplacer vers détails\",\n // \"Show as Column\"\n showAsColumn: \"Afficher en colonne\",\n // \"Search...\"\n filterPlaceholder: \"Rechercher...\",\n // \"Remove rows\"\n removeRows: \"Supprimer colonne\",\n // \"Show\"\n showLabel: \"Afficher\",\n // \"entries\"\n entriesLabel: \"entrées\",\n // \"Texts in table\"\n visualizer_text: \"Textes en table\",\n // \"Wordcloud\"\n visualizer_wordcloud: \"Nuages de mots\",\n // \"Histogram\"\n visualizer_histogram: \"Histogramme\",\n // \"Average\"\n visualizer_number: \"Moyenne\",\n // \"Table\"\n visualizer_choices: \"Table\",\n // \"Chart\"\n visualizer_selectBase: \"Graphique\",\n // [Auto-translated] \"Chart\"\n visualizer_matrix: \"Graphique\",\n // [Auto-translated] \"Bar\"\n chartType_bar: \"Bar\",\n // \"Vertical Bar\"\n chartType_vbar: \"Barre verticale\",\n // \"Stacked Bar\"\n chartType_stackedbar: \"Barres empilées\",\n // \"Doughnut\"\n chartType_doughnut: \"Anneau\",\n // \"Pie\"\n chartType_pie: \"Secteurs\",\n // \"Scatter\"\n chartType_scatter: \"Nuages de points\",\n // \"Gauge\"\n chartType_gauge: \"Gauge\",\n // \"Bullet\"\n chartType_bullet: \"Bulles\",\n // [Auto-translated] \"Line\"\n chartType_line: \"Ligne\",\n // [Auto-translated] \"Radar\"\n chartType_radar: \"Radar\",\n // \"Hide\"\n hideButton: \"Masquer\",\n // \"Make private\"\n makePrivateButton: \"Rendre privé\",\n // \"Make public\"\n makePublicButton: \"Rendre publique\",\n // \"Show\"\n showButton: \"Afficher\",\n // \"Filter\"\n filter: \"Filtre\",\n // \"Reset Filter\"\n resetFilter: \"Rafraichir Filtres\",\n // \"Change Locale\"\n changeLocale: \"Changer les paramètres régionaux\",\n // \"Clear\"\n clearButton: \"Rafraichir\",\n // \"Choose question to show...\"\n addElement: \"Choisir la question à afficher...\",\n // \"Default Order\"\n defaultOrder: \"Defaut\",\n // \"Ascending\"\n ascOrder: \"Ascendant\",\n // \"Descending\"\n descOrder: \"Descendant\",\n // \"Show minor columns\"\n showMinorColumns: \"Afficher les colonnes mineures\",\n // [Auto-translated] \"Actions\"\n actionsColumn: \"Actions\",\n // \"Other items and comments\"\n otherCommentTitle: \"Autre élément et commentaires\",\n // \"Show percentages\"\n showPercentages: \"Afficher les pourcentages\",\n // \"Hide percentages\"\n hidePercentages: \"Masquer les pourcentages\",\n // \"PDF\"\n pdfDownloadCaption: \"PDF\",\n // \"Excel\"\n xlsxDownloadCaption: \"Exceller\",\n // \"CSV\"\n csvDownloadCaption: \"Fichier CSV\",\n // \"Download plot as a PNG file\"\n saveDiagramAsPNG: \"Sauver en png\",\n // \"Hide empty answers\"\n hideEmptyAnswers: \"Masquer les réponses vides\",\n // \"Show empty answers\"\n showEmptyAnswers: \"Afficher les réponses vides\",\n // \"All answers\"\n \"topNValueText-1\": \"Toutes les réponses\",\n // \"Top 5 answers\"\n topNValueText5: \"Top 5 des réponses\",\n // \"Top 10 answers\"\n topNValueText10: \"Top 10 des réponses\",\n // \"Top 20 answers\"\n topNValueText20: \"Top 20 des réponses\",\n // \"Hide missing answers\"\n hideMissingAnswers: \"Masquer les réponses manquantes\",\n // \"Show missing answers\"\n showMissingAnswers: \"Afficher les réponses manquantes\",\n // \"Missing answers\"\n missingAnswersLabel: \"Réponses manquantes\",\n // \"This question type is not visualized yet\"\n noVisualizerForQuestion: \"Ce type de question n'est pas encore visualisé\",\n // \"There are no results yet\"\n noResults: \"Il n'y a pas encore de résultats\",\n // \"Per Values\"\n showPerValues: \"Par valeur\",\n // \"Per Columns\"\n showPerColumns: \"Par colonne\",\n // \"Answer\"\n answer: \"Réponse\",\n // \"Correct answer: \"\n correctAnswer: \"Réponse correcte: \",\n // \"Percent\"\n percent: \"Pourcentage\",\n // [Auto-translated] \"Percentage\"\n percentage: \"Pourcentage\",\n // [Auto-translated] \"Chart\"\n statistics_chart: \"Graphique\",\n // \"Responses\"\n responses: \"Réponses\",\n // [Auto-translated] \"NPS\"\n visualizer_nps: \"Le NPS\",\n // [Auto-translated] \"Chart\"\n visualizer_boolean: \"Graphique\",\n // [Auto-translated] \"Table\"\n visualizer_options: \"Table\",\n // [Auto-translated] \"NPS\"\n npsScore: \"Le NPS\",\n // [Auto-translated] \"Promoters\"\n npsPromoters: \"Promoteurs\",\n // [Auto-translated] \"Passives\"\n npsPassives: \"Passifs\",\n // [Auto-translated] \"Detractors\"\n npsDetractors: \"Détracteurs\",\n // [Auto-translated] \"Category (X Axis):\"\n axisXSelectorTitle: \"Catégorie (axe X) :\",\n // [Auto-translated] \"Legend (Series):\"\n axisYSelectorTitle: \"Légende (série) :\",\n // [Auto-translated] \"Segments:\"\n axisXAlternativeSelectorTitle: \"Segments:\",\n // [Auto-translated] \"Groups:\"\n axisYAlternativeSelectorTitle: \"Groupe:\",\n // [Auto-translated] \"Not selected\"\n notSelected: \"Non sélectionné\",\n // [Auto-translated] \"Default\"\n intervalMode_default: \"Faire défaut\",\n // [Auto-translated] \"Decades\"\n intervalMode_decades: \"Décennies\",\n // [Auto-translated] \"Years\"\n intervalMode_years: \"Années\",\n // [Auto-translated] \"Quarters\"\n intervalMode_quarters: \"Quartier\",\n // [Auto-translated] \"Months\"\n intervalMode_months: \"Mois\",\n // [Auto-translated] \"Days\"\n intervalMode_days: \"Jours\",\n // [Auto-translated] \"Custom\"\n intervalMode_custom: \"Coutume\",\n // [Auto-translated] \"Auto\"\n intervalMode_auto: \"Auto\",\n // [Auto-translated] \"Intervals:\"\n intervalModeTitle: \"Intervalles:\",\n // [Auto-translated] \"Show individual values\"\n noRunningTotals: \"Afficher les valeurs individuelles\",\n // [Auto-translated] \"Show running totals\"\n runningTotals: \"Afficher les totaux cumulés\",\n // [Auto-translated] \"Compare periods\"\n groupDateSeries: \"Comparer les périodes\",\n // [Auto-translated] \"View timeline\"\n ungroupDateSeries: \"Voir la chronologie\",\n // [Auto-translated] \"None\"\n noneAggregateText: \"Aucun\",\n // [Auto-translated] \"Aggregate:\"\n selectAggregateText: \"Agrégat:\",\n // [Auto-translated] \"Year ends with\"\n groupedYearsAxisTitle: \"L’exercice se termine avec\"\n};\n\nsetupLocale({ localeCode: \"fr\", strings: frenchStrings, nativeName: \"Français\" });\n","import { setupLocale } from \"../localizationManager\";\n\nexport var germanStrings = {\n // \"Group By Me\"\n groupButton: \"Gruppieren\",\n // \"Ungroup By Me\"\n ungroupButton: \"Gruppierung aufheben\",\n // \"Select Me\"\n selectButton: \"Mich auswählen\",\n // \"Hide column\"\n hideColumn: \"Spalte ausblenden\",\n // \"Show column\"\n showColumn: \"Spalte einblenden\",\n // \"Make column private\"\n makePrivateColumn: \"Spalte privat machen\",\n // \"Make column public\"\n makePublicColumn: \"Spalte veröffentlichen\",\n // \"Move to Detail\"\n moveToDetail: \"in Details verschieben\",\n // \"Show as Column\"\n showAsColumn: \"Als Spalte anzeigen\",\n // \"Search...\"\n filterPlaceholder: \"Suche...\",\n // \"Remove rows\"\n removeRows: \"Zeilen entfernen\",\n // \"Show\"\n showLabel: \"Anzeigen\",\n // \"entries\"\n entriesLabel: \"Einträge\",\n // \"Texts in table\"\n visualizer_text: \"Texte in Tabellenform\",\n // \"Wordcloud\"\n visualizer_wordcloud: \"Wordcloud\",\n // \"Histogram\"\n visualizer_histogram: \"Histogramm\",\n // \"Average\"\n visualizer_number: \"Durchschnitt\",\n // \"Table\"\n visualizer_choices: \"Tabelle\",\n // \"Chart\"\n visualizer_selectBase: \"Diagrammtyp\",\n // [Auto-translated] \"Chart\"\n visualizer_matrix: \"Diagramm\",\n // \"Bar\"\n chartType_bar: \"Balkendiagramm\",\n // \"Vertical Bar\"\n chartType_vbar: \"Balkendiagramm vertikal\",\n // \"Stacked Bar\"\n chartType_stackedbar: \"Gestapeltes Balkendiagramm\",\n // \"Doughnut\"\n chartType_doughnut: \"Donut-Diagramm\",\n // \"Pie\"\n chartType_pie: \"Kreisdiagramm\",\n // \"Scatter\"\n chartType_scatter: \"Punktediagramm\",\n // \"Gauge\"\n chartType_gauge: \"Pegeldiagramm\",\n // \"Bullet\"\n chartType_bullet: \"Aufzählungsdiagramm\",\n // [Auto-translated] \"Line\"\n chartType_line: \"Linie\",\n // [Auto-translated] \"Radar\"\n chartType_radar: \"Radar\",\n // \"Hide\"\n hideButton: \"Ausblenden\",\n // \"Make private\"\n makePrivateButton: \"Privat machen\",\n // \"Make public\"\n makePublicButton: \"Öffentlich machen\",\n // \"Show\"\n showButton: \"Anzeigen\",\n // \"Filter\"\n filter: \"Filter\",\n // \"Reset Filter\"\n resetFilter: \"Filter zurücksetzen\",\n // \"Change Locale\"\n changeLocale: \"Lokalisierung ändern\",\n // \"Clear\"\n clearButton: \"Einstellungen löschen\",\n // \"Choose question to show...\"\n addElement: \"Wählen Sie eine Frage, um zu zeigen...\",\n // \"Default Order\"\n defaultOrder: \"Standardreihenfolge\",\n // \"Ascending\"\n ascOrder: \"Aufsteigend\",\n // \"Descending\"\n descOrder: \"Absteigend\",\n // \"Show minor columns\"\n showMinorColumns: \"Kleinere Spalten anzeigen\",\n // [Auto-translated] \"Actions\"\n actionsColumn: \"Aktionen\",\n // \"Other items and comments\"\n otherCommentTitle: \"Andere Punkte und Kommentare\",\n // \"Show percentages\"\n showPercentages: \"Prozentsätze anzeigen\",\n // \"Hide percentages\"\n hidePercentages: \"Prozentsätze ausblenden\",\n // \"PDF\"\n pdfDownloadCaption: \"PDF\",\n // \"Excel\"\n xlsxDownloadCaption: \"Excel\",\n // \"CSV\"\n csvDownloadCaption: \"CSV\",\n // \"Download plot as a PNG file\"\n saveDiagramAsPNG: \"Diagramm als PNG herunterladen\",\n // \"Hide empty answers\"\n hideEmptyAnswers: \"Leere Antworten ausblenden\",\n // \"Show empty answers\"\n showEmptyAnswers: \"Leere Antworten anzeigen\",\n // \"All answers\"\n \"topNValueText-1\": \"Alle Antworten\",\n // \"Top 5 answers\"\n topNValueText5: \"Top 5 Antworten\",\n // \"Top 10 answers\"\n topNValueText10: \"Top 10 Antworten\",\n // \"Top 20 answers\"\n topNValueText20: \"Top 20 Antworten\",\n // \"Hide missing answers\"\n hideMissingAnswers: \"Fehlende Antworten ausblenden\",\n // \"Show missing answers\"\n showMissingAnswers: \"Fehlende Antworten anzeigen\",\n // \"Missing answers\"\n missingAnswersLabel: \"Fehlende Antworten\",\n // \"This question type is not visualized yet\"\n noVisualizerForQuestion: \"Für diesen Fragetyp gibt es noch keine Visualisierung.\",\n // \"There are no results yet\"\n noResults: \"Es liegen noch keine Ergebnisse vor\",\n // \"Per Values\"\n showPerValues: \"Pro Wert\",\n // \"Per Columns\"\n showPerColumns: \"Pro Spalte\",\n // \"Answer\"\n answer: \"Antwort\",\n // \"Correct answer: \"\n correctAnswer: \"Korrekte Antwort: \",\n // \"Percent\"\n percent: \"Prozent\",\n // [Auto-translated] \"Percentage\"\n percentage: \"Prozentsatz\",\n // [Auto-translated] \"Chart\"\n statistics_chart: \"Diagramm\",\n // \"Responses\"\n responses: \"Antworten\",\n // \"NPS\"\n visualizer_nps: \"NPS\",\n // [Auto-translated] \"Chart\"\n visualizer_boolean: \"Diagramm\",\n // \"Table\"\n visualizer_options: \"Tabelle\",\n // \"NPS\"\n npsScore: \"NPS\",\n // \"Promoters\"\n npsPromoters: \"Promotoren\",\n // \"Passives\"\n npsPassives: \"Passive\",\n // \"Detractors\"\n npsDetractors: \"Detraktoren\",\n // [Auto-translated] \"Category (X Axis):\"\n axisXSelectorTitle: \"Kategorie (X-Achse):\",\n // [Auto-translated] \"Legend (Series):\"\n axisYSelectorTitle: \"Legende (Serie):\",\n // [Auto-translated] \"Segments:\"\n axisXAlternativeSelectorTitle: \"Segmente:\",\n // [Auto-translated] \"Groups:\"\n axisYAlternativeSelectorTitle: \"Gruppen:\",\n // [Auto-translated] \"Not selected\"\n notSelected: \"Nicht ausgewählt\",\n // [Auto-translated] \"Default\"\n intervalMode_default: \"Vorgabe\",\n // [Auto-translated] \"Decades\"\n intervalMode_decades: \"Dekaden\",\n // [Auto-translated] \"Years\"\n intervalMode_years: \"Jahre\",\n // [Auto-translated] \"Quarters\"\n intervalMode_quarters: \"Quartier\",\n // [Auto-translated] \"Months\"\n intervalMode_months: \"Monate\",\n // [Auto-translated] \"Days\"\n intervalMode_days: \"Tage\",\n // [Auto-translated] \"Custom\"\n intervalMode_custom: \"Gewohnheit\",\n // [Auto-translated] \"Auto\"\n intervalMode_auto: \"Auto\",\n // [Auto-translated] \"Intervals:\"\n intervalModeTitle: \"Intervalle:\",\n // [Auto-translated] \"Show individual values\"\n noRunningTotals: \"Einzelne Werte anzeigen\",\n // [Auto-translated] \"Show running totals\"\n runningTotals: \"Laufende Summen anzeigen\",\n // [Auto-translated] \"Compare periods\"\n groupDateSeries: \"Zeiträume vergleichen\",\n // [Auto-translated] \"View timeline\"\n ungroupDateSeries: \"Zeitleiste anzeigen\",\n // [Auto-translated] \"None\"\n noneAggregateText: \"Nichts\",\n // [Auto-translated] \"Aggregate:\"\n selectAggregateText: \"Aggregat:\",\n // [Auto-translated] \"Year ends with\"\n groupedYearsAxisTitle: \"Das Jahr endet mit\"\n};\n\nsetupLocale({ localeCode: \"de\", strings: germanStrings, nativeName: \"Deutsch\" });","import { setupLocale } from \"../localizationManager\";\n\nexport var italianStrings = {\n // \"Group By Me\"\n groupButton: \"Raggruppa\",\n // \"Ungroup By Me\"\n ungroupButton: \"Dividi\",\n // \"Select Me\"\n selectButton: \"Selezionami\",\n // \"Hide column\"\n hideColumn: \"Nascondi colonna\",\n // \"Show column\"\n showColumn: \"Mostra colonna\",\n // \"Make column private\"\n makePrivateColumn: \"Rendi la colonna privata\",\n // \"Make column public\"\n makePublicColumn: \"Rendi la colonna pubblica\",\n // \"Move to Detail\"\n moveToDetail: \"Sposta in Dettaglio\",\n // \"Show as Column\"\n showAsColumn: \"Mostra come Colonna\",\n // \"Search...\"\n filterPlaceholder: \"Cerca...\",\n // \"Remove rows\"\n removeRows: \"Rimuovi righe\",\n // \"Show\"\n showLabel: \"Mostra\",\n // \"entries\"\n entriesLabel: \"voci\",\n // \"Texts in table\"\n visualizer_text: \"Parole in tabella\",\n // \"Wordcloud\"\n visualizer_wordcloud: \"Nuvola di parole\",\n // \"Histogram\"\n visualizer_histogram: \"Istogramma\",\n // \"Average\"\n visualizer_number: \"Media\",\n // \"Table\"\n visualizer_choices: \"Tabella\",\n // \"Chart\"\n visualizer_selectBase: \"Grafico\",\n // [Auto-translated] \"Chart\"\n visualizer_matrix: \"Tabella\",\n // [Auto-translated] \"Bar\"\n chartType_bar: \"Bar\",\n // \"Vertical Bar\"\n chartType_vbar: \"Grafico a barre verticali\",\n // \"Stacked Bar\"\n chartType_stackedbar: \"Grafico a barre sovrapposte\",\n // \"Doughnut\"\n chartType_doughnut: \"Grafico a ciambella\",\n // \"Pie\"\n chartType_pie: \"Grafico a torta\",\n // \"Scatter\"\n chartType_scatter: \"Grafico a dispersione\",\n // \"Gauge\"\n chartType_gauge: \"Grafico Gauge\",\n // \"Bullet\"\n chartType_bullet: \"Punto\",\n // [Auto-translated] \"Line\"\n chartType_line: \"Linea\",\n // [Auto-translated] \"Radar\"\n chartType_radar: \"Radar\",\n // \"Hide\"\n hideButton: \"Nascondi\",\n // \"Make private\"\n makePrivateButton: \"Rendi privato\",\n // \"Make public\"\n makePublicButton: \"Rendi pubblico\",\n // \"Show\"\n showButton: \"Mostra\",\n // \"Filter\"\n filter: \"Filtro\",\n // \"Reset Filter\"\n resetFilter: \"Cancella filtro\",\n // \"Change Locale\"\n changeLocale: \"Cambia lingua\",\n // \"Clear\"\n clearButton: \"Cancella\",\n // \"Choose question to show...\"\n addElement: \"Scegli la domanda da mostrare...\",\n // \"Default Order\"\n defaultOrder: \"Ordine di Default\",\n // \"Ascending\"\n ascOrder: \"Ascendente\",\n // \"Descending\"\n descOrder: \"Discendente\",\n // \"Show minor columns\"\n showMinorColumns: \"Mostra colonne secondarie\",\n // [Auto-translated] \"Actions\"\n actionsColumn: \"Azioni\",\n // \"Other items and comments\"\n otherCommentTitle: \"Altri punti e commenti\",\n // \"Show percentages\"\n showPercentages: \"Mostra percentuali\",\n // \"Hide percentages\"\n hidePercentages: \"Nascondi percentuali\",\n // \"PDF\"\n pdfDownloadCaption: \"PDF\",\n // \"Excel\"\n xlsxDownloadCaption: \"Excel\",\n // \"CSV\"\n csvDownloadCaption: \"CSV\",\n // \"Download plot as a PNG file\"\n saveDiagramAsPNG: \"Scarica il grafico in formato png\",\n // \"Hide empty answers\"\n hideEmptyAnswers: \"Nascondi risposte vuote\",\n // \"Show empty answers\"\n showEmptyAnswers: \"Mostra risposte vuote\",\n // \"All answers\"\n \"topNValueText-1\": \"Tutte le risposte\",\n // \"Top 5 answers\"\n topNValueText5: \"Top 5 risposte\",\n // \"Top 10 answers\"\n topNValueText10: \"Top 10 risposte\",\n // \"Top 20 answers\"\n topNValueText20: \"Top 20 risposte\",\n // \"Hide missing answers\"\n hideMissingAnswers: \"Nascondi le risposte mancanti\",\n // \"Show missing answers\"\n showMissingAnswers: \"Mostra le risposte mancanti\",\n // \"Missing answers\"\n missingAnswersLabel: \"Risposte mancanti\",\n // \"This question type is not visualized yet\"\n noVisualizerForQuestion: \"Questo tipo di domanda non è ancora stato visualizzato\",\n // \"There are no results yet\"\n noResults: \"Non ci sono ancora risultati\",\n // \"Per Values\"\n showPerValues: \"Per Valori\",\n // \"Per Columns\"\n showPerColumns: \"Per Colonne\",\n // \"Answer\"\n answer: \"Risposta\",\n // \"Correct answer: \"\n correctAnswer: \"Risposta esatta: \",\n // \"Percent\"\n percent: \"Percentuale\",\n // [Auto-translated] \"Percentage\"\n percentage: \"Percentuale\",\n // [Auto-translated] \"Chart\"\n statistics_chart: \"Tabella\",\n // \"Responses\"\n responses: \"Risposte\",\n // [Auto-translated] \"NPS\"\n visualizer_nps: \"Rete nazionale di dati\",\n // [Auto-translated] \"Chart\"\n visualizer_boolean: \"Tabella\",\n // [Auto-translated] \"Table\"\n visualizer_options: \"Tavolo\",\n // [Auto-translated] \"NPS\"\n npsScore: \"Rete nazionale di dati\",\n // [Auto-translated] \"Promoters\"\n npsPromoters: \"Promotori\",\n // [Auto-translated] \"Passives\"\n npsPassives: \"Passivi\",\n // [Auto-translated] \"Detractors\"\n npsDetractors: \"Detrattori\",\n // [Auto-translated] \"Category (X Axis):\"\n axisXSelectorTitle: \"Categoria (asse X):\",\n // [Auto-translated] \"Legend (Series):\"\n axisYSelectorTitle: \"Leggenda (serie):\",\n // [Auto-translated] \"Segments:\"\n axisXAlternativeSelectorTitle: \"Segmenti:\",\n // [Auto-translated] \"Groups:\"\n axisYAlternativeSelectorTitle: \"Gruppi:\",\n // [Auto-translated] \"Not selected\"\n notSelected: \"Non selezionato\",\n // [Auto-translated] \"Default\"\n intervalMode_default: \"Default\",\n // [Auto-translated] \"Decades\"\n intervalMode_decades: \"Decenni\",\n // [Auto-translated] \"Years\"\n intervalMode_years: \"Anni\",\n // [Auto-translated] \"Quarters\"\n intervalMode_quarters: \"Quarti\",\n // [Auto-translated] \"Months\"\n intervalMode_months: \"Mesi\",\n // [Auto-translated] \"Days\"\n intervalMode_days: \"Giorni\",\n // [Auto-translated] \"Custom\"\n intervalMode_custom: \"Costume\",\n // [Auto-translated] \"Auto\"\n intervalMode_auto: \"Automatico\",\n // [Auto-translated] \"Intervals:\"\n intervalModeTitle: \"Intervalli:\",\n // [Auto-translated] \"Show individual values\"\n noRunningTotals: \"Mostra i singoli valori\",\n // [Auto-translated] \"Show running totals\"\n runningTotals: \"Mostra totali parziali\",\n // [Auto-translated] \"Compare periods\"\n groupDateSeries: \"Confronta i periodi\",\n // [Auto-translated] \"View timeline\"\n ungroupDateSeries: \"Visualizza la timeline\",\n // [Auto-translated] \"None\"\n noneAggregateText: \"Nessuno\",\n // [Auto-translated] \"Aggregate:\"\n selectAggregateText: \"Aggregato:\",\n // [Auto-translated] \"Year ends with\"\n groupedYearsAxisTitle: \"L'anno si chiude con\"\n};\n\nsetupLocale({ localeCode: \"it\", strings: italianStrings, nativeName: \"Italiano\" });","import { setupLocale } from \"../localizationManager\";\n\nexport var japaneseStrings = {\n // \"Group By Me\"\n groupButton: \"グループ化\",\n // \"Ungroup By Me\"\n ungroupButton: \"グループ解除\",\n // \"Select Me\"\n selectButton: \"選択\",\n // \"Hide column\"\n hideColumn: \"列を非表示\",\n // \"Show column\"\n showColumn: \"列を表示\",\n // \"Make column private\"\n makePrivateColumn: \"列を非公開にする\",\n // \"Make column public\"\n makePublicColumn: \"列を公開する\",\n // \"Move to Detail\"\n moveToDetail: \"詳細に移動\",\n // \"Show as Column\"\n showAsColumn: \"列として表示\",\n // \"Search...\"\n filterPlaceholder: \"検索...\",\n // \"Remove rows\"\n removeRows: \"行を削除\",\n // \"Show\"\n showLabel: \"表示\",\n // \"entries\"\n entriesLabel: \"件\",\n // \"Texts in table\"\n visualizer_text: \"テキスト\",\n // \"Wordcloud\"\n visualizer_wordcloud: \"ワードクラウド\",\n // \"Histogram\"\n visualizer_histogram: \"ヒストグラム\",\n // \"Average\"\n visualizer_number: \"平均\",\n // \"Table\"\n visualizer_choices: \"テーブル\",\n // \"Chart\"\n visualizer_selectBase: \"チャート\",\n // [Auto-translated] \"Chart\"\n visualizer_matrix: \"チャート\",\n // \"Bar\"\n chartType_bar: \"棒グラフ\",\n // \"Vertical Bar\"\n chartType_vbar: \"縦棒グラフ\",\n // \"Stacked Bar\"\n chartType_stackedbar: \"積み上げ棒グラフ\",\n // \"Doughnut\"\n chartType_doughnut: \"ドーナツチャート\",\n // \"Pie\"\n chartType_pie: \"円グラフ\",\n // \"Scatter\"\n chartType_scatter: \"散布図\",\n // \"Gauge\"\n chartType_gauge: \"ゲージ\",\n // \"Bullet\"\n chartType_bullet: \"バレット\",\n // [Auto-translated] \"Line\"\n chartType_line: \"線\",\n // [Auto-translated] \"Radar\"\n chartType_radar: \"レーダー\",\n // \"Hide\"\n hideButton: \"非表示\",\n // \"Make private\"\n makePrivateButton: \"非公開にする\",\n // \"Make public\"\n makePublicButton: \"公開する\",\n // \"Show\"\n showButton: \"表示\",\n // \"Filter\"\n filter: \"フィルター\",\n // \"Reset Filter\"\n resetFilter: \"フィルターをリセット\",\n // \"Change Locale\"\n changeLocale: \"言語を変更\",\n // \"Clear\"\n clearButton: \"クリア\",\n // \"Choose question to show...\"\n addElement: \"表示する質問を選択...\",\n // \"Default Order\"\n defaultOrder: \"デフォルト順\",\n // \"Ascending\"\n ascOrder: \"昇順\",\n // \"Descending\"\n descOrder: \"降順\",\n // \"Show minor columns\"\n showMinorColumns: \"マイナー列を表示\",\n // [Auto-translated] \"Actions\"\n actionsColumn: \"アクション\",\n // \"Other items and comments\"\n otherCommentTitle: \"その他のアイテムとコメント\",\n // \"Show percentages\"\n showPercentages: \"パーセンテージを表示\",\n // \"Hide percentages\"\n hidePercentages: \"パーセンテージを非表示\",\n // \"PDF\"\n pdfDownloadCaption: \"PDF\",\n // \"Excel\"\n xlsxDownloadCaption: \"Excel\",\n // \"CSV\"\n csvDownloadCaption: \"CSV\",\n // \"Download plot as a PNG file\"\n saveDiagramAsPNG: \"プロットをPNGファイルとして保存\",\n // \"Hide empty answers\"\n hideEmptyAnswers: \"空の回答を非表示\",\n // \"Show empty answers\"\n showEmptyAnswers: \"空の回答を表示\",\n // \"All answers\"\n \"topNValueText-1\": \"すべての回答\",\n // \"Top 5 answers\"\n topNValueText5: \"上位5つの回答\",\n // \"Top 10 answers\"\n topNValueText10: \"上位10の回答\",\n // \"Top 20 answers\"\n topNValueText20: \"上位20の回答\",\n // \"Hide missing answers\"\n hideMissingAnswers: \"欠損値を非表示\",\n // \"Show missing answers\"\n showMissingAnswers: \"欠損値を表示\",\n // \"Missing answers\"\n missingAnswersLabel: \"欠損値\",\n // \"This question type is not visualized yet\"\n noVisualizerForQuestion: \"この質問タイプはまだ視覚化されていません\",\n // \"There are no results yet\"\n noResults: \"まだ結果がありません\",\n // \"Per Values\"\n showPerValues: \"値ごとに表示\",\n // \"Per Columns\"\n showPerColumns: \"列ごとに表示\",\n // \"Answer\"\n answer: \"回答\",\n // \"Correct answer: \"\n correctAnswer: \"正解: \",\n // \"Percent\"\n percent: \"パーセント\",\n // [Auto-translated] \"Percentage\"\n percentage: \"百分率\",\n // [Auto-translated] \"Chart\"\n statistics_chart: \"チャート\",\n // \"Responses\"\n responses: \"回答数\",\n // [Auto-translated] \"NPS\"\n visualizer_nps: \"NPSの\",\n // [Auto-translated] \"Chart\"\n visualizer_boolean: \"チャート\",\n // [Auto-translated] \"Table\"\n visualizer_options: \"テーブル\",\n // [Auto-translated] \"NPS\"\n npsScore: \"NPSの\",\n // [Auto-translated] \"Promoters\"\n npsPromoters: \"プロモーター\",\n // [Auto-translated] \"Passives\"\n npsPassives: \"パッシブ\",\n // [Auto-translated] \"Detractors\"\n npsDetractors: \"中傷\",\n // [Auto-translated] \"Category (X Axis):\"\n axisXSelectorTitle: \"カテゴリ(X軸):\",\n // [Auto-translated] \"Legend (Series):\"\n axisYSelectorTitle: \"凡例(シリーズ):\",\n // [Auto-translated] \"Segments:\"\n axisXAlternativeSelectorTitle: \"セグメント:\",\n // [Auto-translated] \"Groups:\"\n axisYAlternativeSelectorTitle: \"グループ:\",\n // [Auto-translated] \"Not selected\"\n notSelected: \"選択されていない\",\n // [Auto-translated] \"Default\"\n intervalMode_default: \"デフォルト\",\n // [Auto-translated] \"Decades\"\n intervalMode_decades: \"数 十 年\",\n // [Auto-translated] \"Years\"\n intervalMode_years: \"月日\",\n // [Auto-translated] \"Quarters\"\n intervalMode_quarters: \"四半期\",\n // [Auto-translated] \"Months\"\n intervalMode_months: \"月\",\n // [Auto-translated] \"Days\"\n intervalMode_days: \"日\",\n // [Auto-translated] \"Custom\"\n intervalMode_custom: \"習慣\",\n // [Auto-translated] \"Auto\"\n intervalMode_auto: \"自動\",\n // [Auto-translated] \"Intervals:\"\n intervalModeTitle: \"間隔:\",\n // [Auto-translated] \"Show individual values\"\n noRunningTotals: \"個々の値を表示する\",\n // [Auto-translated] \"Show running totals\"\n runningTotals: \"累計を表示する\",\n // [Auto-translated] \"Compare periods\"\n groupDateSeries: \"期間の比較\",\n // [Auto-translated] \"View timeline\"\n ungroupDateSeries: \"タイムラインの表示\",\n // [Auto-translated] \"None\"\n noneAggregateText: \"何一つ\",\n // [Auto-translated] \"Aggregate:\"\n selectAggregateText: \"骨材:\",\n // [Auto-translated] \"Year ends with\"\n groupedYearsAxisTitle: \"年末は\"\n};\n\nsetupLocale({ localeCode: \"ja\", strings: japaneseStrings, nativeName: \"日本語\" });","import { setupLocale } from \"../localizationManager\";\n\nexport var norwegianStrings = {\n // \"Group By Me\"\n groupButton: \"Grupper\",\n // \"Ungroup By Me\"\n ungroupButton: \"Opphev gruppering\",\n // \"Select Me\"\n selectButton: \"Velg\",\n // \"Hide column\"\n hideColumn: \"Skjul kolonne\",\n // \"Show column\"\n showColumn: \"Vis kolonne\",\n // \"Make column private\"\n makePrivateColumn: \"Gjør kolonne privat\",\n // \"Make column public\"\n makePublicColumn: \"Gjør kolonne offentlig\",\n // \"Move to Detail\"\n moveToDetail: \"Flytt til detaljert visning\",\n // \"Show as Column\"\n showAsColumn: \"Vis som kolonne\",\n // \"Search...\"\n filterPlaceholder: \"Søk...\",\n // \"Remove rows\"\n removeRows: \"Fjern rader\",\n // \"Show\"\n showLabel: \"Vis\",\n // \"entries\"\n entriesLabel: \"oppføringer\",\n // \"Texts in table\"\n visualizer_text: \"Tabellvisning\",\n // \"Wordcloud\"\n visualizer_wordcloud: \"Ordsky\",\n // \"Histogram\"\n visualizer_histogram: \"Histogram\",\n // \"Average\"\n visualizer_number: \"Gjennomsnitt\",\n // \"Table\"\n visualizer_choices: \"Bord\",\n // \"Chart\"\n visualizer_selectBase: \"Sjøkart\",\n // [Auto-translated] \"Chart\"\n visualizer_matrix: \"Sjøkart\",\n // [Auto-translated] \"Bar\"\n chartType_bar: \"Bar\",\n // \"Vertical Bar\"\n chartType_vbar: \"Vertikal stolpe\",\n // \"Stacked Bar\"\n chartType_stackedbar: \"Stablet stolpediagram\",\n // \"Doughnut\"\n chartType_doughnut: \"Hjuldiagram\",\n // \"Pie\"\n chartType_pie: \"Sektordiagram\",\n // \"Scatter\"\n chartType_scatter: \"Punktdiagram\",\n // \"Gauge\"\n chartType_gauge: \"Målediagram\",\n // \"Bullet\"\n chartType_bullet: \"Kulediagram\",\n // [Auto-translated] \"Line\"\n chartType_line: \"Linje\",\n // [Auto-translated] \"Radar\"\n chartType_radar: \"Radar\",\n // \"Hide\"\n hideButton: \"Skjul\",\n // \"Make private\"\n makePrivateButton: \"Gjør privat\",\n // \"Make public\"\n makePublicButton: \"Gjør offentlig\",\n // \"Show\"\n showButton: \"Vis\",\n // \"Filter\"\n filter: \"Filter\",\n // \"Reset Filter\"\n resetFilter: \"Nullstill filter\",\n // \"Change Locale\"\n changeLocale: \"Bytt språk\",\n // \"Clear\"\n clearButton: \"Tøm\",\n // \"Choose question to show...\"\n addElement: \"Velg spørsmål...\",\n // \"Default Order\"\n defaultOrder: \"Standard\",\n // \"Ascending\"\n ascOrder: \"Stigende\",\n // \"Descending\"\n descOrder: \"Synkende\",\n // \"Show minor columns\"\n showMinorColumns: \"Vis mindre kolonner\",\n // [Auto-translated] \"Actions\"\n actionsColumn: \"Handlinger\",\n // \"Other items and comments\"\n otherCommentTitle: \"Annet og kommentarer\",\n // \"Show percentages\"\n showPercentages: \"Vis prosenter\",\n // \"Hide percentages\"\n hidePercentages: \"Skjul prosenter\",\n // \"PDF\"\n pdfDownloadCaption: \"PDF\",\n // \"Excel\"\n xlsxDownloadCaption: \"Overgå\",\n // \"CSV\"\n csvDownloadCaption: \"CSV\",\n // \"Download plot as a PNG file\"\n saveDiagramAsPNG: \"Last ned plott som en PNG-fil\",\n // \"Hide empty answers\"\n hideEmptyAnswers: \"Skjul tomme svar\",\n // \"Show empty answers\"\n showEmptyAnswers: \"Vis tomme svar\",\n // \"All answers\"\n \"topNValueText-1\": \"Alle svar\",\n // \"Top 5 answers\"\n topNValueText5: \"Topp 5 svar\",\n // \"Top 10 answers\"\n topNValueText10: \"Topp 10 svar\",\n // \"Top 20 answers\"\n topNValueText20: \"Topp 20 svar\",\n // \"Hide missing answers\"\n hideMissingAnswers: \"Skjul manglende svar\",\n // \"Show missing answers\"\n showMissingAnswers: \"Vis manglende svar\",\n // \"Missing answers\"\n missingAnswersLabel: \"Mangler svar\",\n // \"This question type is not visualized yet\"\n noVisualizerForQuestion: \"Denne spørsmålstypen er ikke visualisert ennå\",\n // \"There are no results yet\"\n noResults: \"Det er ingen resultater ennå\",\n // \"Per Values\"\n showPerValues: \"Per verdier\",\n // \"Per Columns\"\n showPerColumns: \"Per kolonner\",\n // \"Answer\"\n answer: \"Svare\",\n // \"Correct answer: \"\n correctAnswer: \"Riktig svar: \",\n // \"Percent\"\n percent: \"Prosent\",\n // [Auto-translated] \"Percentage\"\n percentage: \"Prosent\",\n // [Auto-translated] \"Chart\"\n statistics_chart: \"Sjøkart\",\n // \"Responses\"\n responses: \"Svar\",\n // [Auto-translated] \"NPS\"\n visualizer_nps: \"NPS\",\n // [Auto-translated] \"Chart\"\n visualizer_boolean: \"Sjøkart\",\n // [Auto-translated] \"Table\"\n visualizer_options: \"Bord\",\n // [Auto-translated] \"NPS\"\n npsScore: \"NPS\",\n // [Auto-translated] \"Promoters\"\n npsPromoters: \"Arrangører\",\n // [Auto-translated] \"Passives\"\n npsPassives: \"Passive\",\n // [Auto-translated] \"Detractors\"\n npsDetractors: \"Motstandere\",\n // [Auto-translated] \"Category (X Axis):\"\n axisXSelectorTitle: \"Kategori (X-akse):\",\n // [Auto-translated] \"Legend (Series):\"\n axisYSelectorTitle: \"Legende (serie):\",\n // [Auto-translated] \"Segments:\"\n axisXAlternativeSelectorTitle: \"Segmenter:\",\n // [Auto-translated] \"Groups:\"\n axisYAlternativeSelectorTitle: \"Grupper:\",\n // [Auto-translated] \"Not selected\"\n notSelected: \"Ikke valgt\",\n // [Auto-translated] \"Default\"\n intervalMode_default: \"Standard\",\n // [Auto-translated] \"Decades\"\n intervalMode_decades: \"Tiår\",\n // [Auto-translated] \"Years\"\n intervalMode_years: \"År\",\n // [Auto-translated] \"Quarters\"\n intervalMode_quarters: \"Kvartaler\",\n // [Auto-translated] \"Months\"\n intervalMode_months: \"Måneder\",\n // [Auto-translated] \"Days\"\n intervalMode_days: \"Dager\",\n // [Auto-translated] \"Custom\"\n intervalMode_custom: \"Skikk\",\n // [Auto-translated] \"Auto\"\n intervalMode_auto: \"Auto\",\n // [Auto-translated] \"Intervals:\"\n intervalModeTitle: \"Intervaller:\",\n // [Auto-translated] \"Show individual values\"\n noRunningTotals: \"Vis individuelle verdier\",\n // [Auto-translated] \"Show running totals\"\n runningTotals: \"Vis løpende totaler\",\n // [Auto-translated] \"Compare periods\"\n groupDateSeries: \"Sammenlign perioder\",\n // [Auto-translated] \"View timeline\"\n ungroupDateSeries: \"Vis tidslinje\",\n // [Auto-translated] \"None\"\n noneAggregateText: \"Ingen\",\n // [Auto-translated] \"Aggregate:\"\n selectAggregateText: \"Samlet:\",\n // [Auto-translated] \"Year ends with\"\n groupedYearsAxisTitle: \"Året avsluttes med\"\n};\n\nsetupLocale({ localeCode: \"no\", strings: norwegianStrings, nativeName: \"Norsk\" });","import { setupLocale } from \"../localizationManager\";\n\nexport var plStrings = {\n // \"Group By Me\"\n groupButton: \"Grupuj według mnie\",\n // \"Ungroup By Me\"\n ungroupButton: \"Rozgrupuj według mnie\",\n // \"Select Me\"\n selectButton: \"Wybierz\",\n // \"Hide column\"\n hideColumn: \"Ukryj kolumnę\",\n // \"Show column\"\n showColumn: \"Pokaż kolumnę\",\n // \"Make column private\"\n makePrivateColumn: \"Uczyń kolumnę prywatną\",\n // \"Make column public\"\n makePublicColumn: \"Uczyń kolumnę publiczną\",\n // \"Move to Detail\"\n moveToDetail: \"Przenieś do szczegółów\",\n // \"Show as Column\"\n showAsColumn: \"Pokaż jako kolumnę\",\n // \"Search...\"\n filterPlaceholder: \"Szukaj...\",\n // \"Remove rows\"\n removeRows: \"Usuń wiersze\",\n // \"Show\"\n showLabel: \"Pokaż\",\n // \"entries\"\n entriesLabel: \"wejścia\",\n // \"Texts in table\"\n visualizer_text: \"Teksty w tabeli\",\n // \"Wordcloud\"\n visualizer_wordcloud: \"Chmura słów\",\n // \"Histogram\"\n visualizer_histogram: \"Histogram\",\n // \"Average\"\n visualizer_number: \"Średnia\",\n // \"Table\"\n visualizer_choices: \"Tabela\",\n // \"Chart\"\n visualizer_selectBase: \"Wykres\",\n // \"Chart\"\n visualizer_matrix: \"Wykres\",\n // \"Bar\"\n chartType_bar: \"Słupkowy\",\n // \"Vertical Bar\"\n chartType_vbar: \"Słupkowy pionowy\",\n // \"Stacked Bar\"\n chartType_stackedbar: \"Słupkowy skumulowany\",\n // \"Doughnut\"\n chartType_doughnut: \"Oponka\",\n // \"Pie\"\n chartType_pie: \"Tarta\",\n // \"Scatter\"\n chartType_scatter: \"Rozrzut\",\n // \"Gauge\"\n chartType_gauge: \"Skala\",\n // \"Bullet\"\n chartType_bullet: \"Pocisk\",\n // [Auto-translated] \"Line\"\n chartType_line: \"Linia\",\n // [Auto-translated] \"Radar\"\n chartType_radar: \"Radar\",\n // \"Hide\"\n hideButton: \"Ukryj\",\n // \"Make private\"\n makePrivateButton: \"Uczyń prywatnym\",\n // \"Make public\"\n makePublicButton: \"Uczyń publicznym\",\n // \"Show\"\n showButton: \"Pokaż\",\n // \"Filter\"\n filter: \"Filtruj\",\n // \"Reset Filter\"\n resetFilter: \"Resetuj filtr\",\n // \"Change Locale\"\n changeLocale: \"Zmień lokalizację\",\n // \"Clear\"\n clearButton: \"Wyczyść\",\n // \"Choose question to show...\"\n addElement: \"Wybierz pytanie do pokazania...\",\n // \"Default Order\"\n defaultOrder: \"Domyślne sortowanie\",\n // \"Ascending\"\n ascOrder: \"Rosnąco\",\n // \"Descending\"\n descOrder: \"Malejąco\",\n // \"Show minor columns\"\n showMinorColumns: \"Pokaż mniejsze kolumny\",\n // [Auto-translated] \"Actions\"\n actionsColumn: \"Akcje\",\n // \"Other items and comments\"\n otherCommentTitle: \"Inne elementy i komentarze\",\n // \"Show percentages\"\n showPercentages: \"Pokaż procenty\",\n // \"Hide percentages\"\n hidePercentages: \"Ukryj procenty\",\n // \"PDF\"\n pdfDownloadCaption: \"PDF\",\n // \"Excel\"\n xlsxDownloadCaption: \"Excel\",\n // \"CSV\"\n csvDownloadCaption: \"CSV\",\n // \"Download plot as a PNG file\"\n saveDiagramAsPNG: \"Pobierz diagram jako PNG\",\n // \"Hide empty answers\"\n hideEmptyAnswers: \"Ukryj puste odpowiedzi\",\n // \"Show empty answers\"\n showEmptyAnswers: \"Pokaż puste odpowiedzi\",\n // \"All answers\"\n \"topNValueText-1\": \"Wszystkie odpowiedzi\",\n // \"Top 5 answers\"\n topNValueText5: \"Pierwsze 5 odpowiedzi\",\n // \"Top 10 answers\"\n topNValueText10: \"Pierwsze 10 odpowiedzi\",\n // \"Top 20 answers\"\n topNValueText20: \"Pierwsze 20 odpowiedzi\",\n // \"Hide missing answers\"\n hideMissingAnswers: \"Ukryj nieodpowiedziane pytania\",\n // \"Show missing answers\"\n showMissingAnswers: \"Pokaż nieodpowiedziane pytania\",\n // \"Missing answers\"\n missingAnswersLabel: \"Nieodpowiedziane pytania\",\n // \"This question type is not visualized yet\"\n noVisualizerForQuestion: \"Ten typ pytania nie został jeszcze zwizualizowany\",\n // \"There are no results yet\"\n noResults: \"Nie ma jeszcze wyników\",\n // \"Per Values\"\n showPerValues: \"Według wartości\",\n // \"Per Columns\"\n showPerColumns: \"Według kolumn\",\n // \"Answer\"\n answer: \"Odpowiedź\",\n // \"Correct answer: \"\n correctAnswer: \"Odpowiedź poprawna: \",\n // \"Percent\"\n percent: \"Procent\",\n // [Auto-translated] \"Percentage\"\n percentage: \"Procent\",\n // [Auto-translated] \"Chart\"\n statistics_chart: \"Wykres\",\n // \"Responses\"\n responses: \"Odpowiedzi\",\n // [Auto-translated] \"NPS\"\n visualizer_nps: \"Wskaźnik NPS\",\n // [Auto-translated] \"Chart\"\n visualizer_boolean: \"Wykres\",\n // [Auto-translated] \"Table\"\n visualizer_options: \"Stół\",\n // [Auto-translated] \"NPS\"\n npsScore: \"Wskaźnik NPS\",\n // [Auto-translated] \"Promoters\"\n npsPromoters: \"Promotorów\",\n // [Auto-translated] \"Passives\"\n npsPassives: \"Passives\",\n // [Auto-translated] \"Detractors\"\n npsDetractors: \"Przeciwników\",\n // [Auto-translated] \"Category (X Axis):\"\n axisXSelectorTitle: \"Kategoria (oś X):\",\n // [Auto-translated] \"Legend (Series):\"\n axisYSelectorTitle: \"Legenda (seria):\",\n // [Auto-translated] \"Segments:\"\n axisXAlternativeSelectorTitle: \"Segmenty:\",\n // [Auto-translated] \"Groups:\"\n axisYAlternativeSelectorTitle: \"Grupy:\",\n // [Auto-translated] \"Not selected\"\n notSelected: \"Nie wybrano\",\n // [Auto-translated] \"Default\"\n intervalMode_default: \"Domyślny\",\n // [Auto-translated] \"Decades\"\n intervalMode_decades: \"Dziesięciolecia\",\n // [Auto-translated] \"Years\"\n intervalMode_years: \"Lata\",\n // [Auto-translated] \"Quarters\"\n intervalMode_quarters: \"Kwartałów\",\n // [Auto-translated] \"Months\"\n intervalMode_months: \"Miesiące\",\n // [Auto-translated] \"Days\"\n intervalMode_days: \"Dni\",\n // [Auto-translated] \"Custom\"\n intervalMode_custom: \"Zwyczaj\",\n // [Auto-translated] \"Auto\"\n intervalMode_auto: \"Automatycznie\",\n // [Auto-translated] \"Intervals:\"\n intervalModeTitle: \"Odstępach czasu:\",\n // [Auto-translated] \"Show individual values\"\n noRunningTotals: \"Pokaż poszczególne wartości\",\n // [Auto-translated] \"Show running totals\"\n runningTotals: \"Pokazywanie sum bieżących\",\n // [Auto-translated] \"Compare periods\"\n groupDateSeries: \"Porównywanie okresów\",\n // [Auto-translated] \"View timeline\"\n ungroupDateSeries: \"Wyświetl oś czasu\",\n // [Auto-translated] \"None\"\n noneAggregateText: \"Żaden\",\n // [Auto-translated] \"Aggregate:\"\n selectAggregateText: \"Kruszywo:\",\n // [Auto-translated] \"Year ends with\"\n groupedYearsAxisTitle: \"Rok kończy się na\"\n};\n\nsetupLocale({ localeCode: \"pl\", strings: plStrings, nativeName: \"Polski\" });","import { setupLocale } from \"../localizationManager\";\n\nexport var portugueseStrings = {\n // \"Group By Me\"\n groupButton: \"Agrupar Por Mim\",\n // \"Ungroup By Me\"\n ungroupButton: \"Desagrupar Por Mim\",\n // \"Select Me\"\n selectButton: \"Selecionar\",\n // \"Hide column\"\n hideColumn: \"Esconder coluna\",\n // \"Show column\"\n showColumn: \"Mostrar coluna\",\n // \"Make column private\"\n makePrivateColumn: \"Tornar coluna privada\",\n // \"Make column public\"\n makePublicColumn: \"Tornar coluna pública\",\n // \"Move to Detail\"\n moveToDetail: \"Mover para Detalhes\",\n // \"Show as Column\"\n showAsColumn: \"Mostrar como Coluna\",\n // \"Search...\"\n filterPlaceholder: \"Pesquisar...\",\n // \"Remove rows\"\n removeRows: \"Remover linhas\",\n // \"Show\"\n showLabel: \"Mostrar\",\n // \"entries\"\n entriesLabel: \"entradas\",\n // \"Texts in table\"\n visualizer_text: \"Textos em tabela\",\n // \"Wordcloud\"\n visualizer_wordcloud: \"Nuvem de palavras\",\n // \"Histogram\"\n visualizer_histogram: \"Histograma\",\n // \"Average\"\n visualizer_number: \"Média\",\n // \"Table\"\n visualizer_choices: \"Tabela\",\n // \"Chart\"\n visualizer_selectBase: \"Gráfico\",\n // [Auto-translated] \"Chart\"\n visualizer_matrix: \"Gráfico\",\n // [Auto-translated] \"Bar\"\n chartType_bar: \"Barra\",\n // \"Vertical Bar\"\n chartType_vbar: \"Barra vertical\",\n // \"Stacked Bar\"\n chartType_stackedbar: \"Barra Empilhada\",\n // \"Doughnut\"\n chartType_doughnut: \"Rosca\",\n // \"Pie\"\n chartType_pie: \"Tarte\",\n // \"Scatter\"\n chartType_scatter: \"Lastro\",\n // \"Gauge\"\n chartType_gauge: \"Escala\",\n // \"Bullet\"\n chartType_bullet: \"Bala\",\n // [Auto-translated] \"Line\"\n chartType_line: \"Linha\",\n // [Auto-translated] \"Radar\"\n chartType_radar: \"Radar\",\n // \"Hide\"\n hideButton: \"Esconder\",\n // \"Make private\"\n makePrivateButton: \"Tornar privado\",\n // \"Make public\"\n makePublicButton: \"Tornar público\",\n // \"Show\"\n showButton: \"Mostrar\",\n // \"Filter\"\n filter: \"Filtrar\",\n // \"Reset Filter\"\n resetFilter: \"Restaurar Filtro\",\n // \"Change Locale\"\n changeLocale: \"Mudar Localização\",\n // \"Clear\"\n clearButton: \"Limpar\",\n // \"Choose question to show...\"\n addElement: \"Escolher questão para mostrar...\",\n // \"Default Order\"\n defaultOrder: \"Ordenação Padrão\",\n // \"Ascending\"\n ascOrder: \"Ascendente\",\n // \"Descending\"\n descOrder: \"Descendente\",\n // \"Show minor columns\"\n showMinorColumns: \"Mostrar colunas menores\",\n // [Auto-translated] \"Actions\"\n actionsColumn: \"Ações\",\n // \"Other items and comments\"\n otherCommentTitle: \"Outros itens e comentários\",\n // \"Show percentages\"\n showPercentages: \"Mostrar percentuais\",\n // \"Hide percentages\"\n hidePercentages: \"Esconder percentuais\",\n // \"PDF\"\n pdfDownloadCaption: \"PDF\",\n // \"Excel\"\n xlsxDownloadCaption: \"Excel\",\n // \"CSV\"\n csvDownloadCaption: \"CSV\",\n // \"Download plot as a PNG file\"\n saveDiagramAsPNG: \"Baixar diagrama como PNG\",\n // \"Hide empty answers\"\n hideEmptyAnswers: \"Esconder perguntas vazias\",\n // \"Show empty answers\"\n showEmptyAnswers: \"Mostrar perguntas vazias\",\n // \"All answers\"\n \"topNValueText-1\": \"Todas as respostas\",\n // \"Top 5 answers\"\n topNValueText5: \"Primeiras 5 respostas\",\n // \"Top 10 answers\"\n topNValueText10: \"Primeiras 10 respostas\",\n // \"Top 20 answers\"\n topNValueText20: \"Primeiras 20 respostas\",\n // \"Hide missing answers\"\n hideMissingAnswers: \"Ocultar perguntas não respondidas\",\n // \"Show missing answers\"\n showMissingAnswers: \"Mostrar perguntas não respondidas\",\n // \"Missing answers\"\n missingAnswersLabel: \"Perguntas não respondidas\",\n // \"This question type is not visualized yet\"\n noVisualizerForQuestion: \"Este tipo de pergunta ainda não foi visualizada\",\n // \"There are no results yet\"\n noResults: \"Ainda não possui resultados\",\n // \"Per Values\"\n showPerValues: \"Por valores\",\n // \"Per Columns\"\n showPerColumns: \"Por colunas\",\n // \"Answer\"\n answer: \"Resposta\",\n // \"Correct answer: \"\n correctAnswer: \"Resposta correta: \",\n // \"Percent\"\n percent: \"Percentagem\",\n // [Auto-translated] \"Percentage\"\n percentage: \"Porcentagem\",\n // [Auto-translated] \"Chart\"\n statistics_chart: \"Gráfico\",\n // \"Responses\"\n responses: \"Respostas\",\n // [Auto-translated] \"NPS\"\n visualizer_nps: \"NPS\",\n // [Auto-translated] \"Chart\"\n visualizer_boolean: \"Gráfico\",\n // [Auto-translated] \"Table\"\n visualizer_options: \"Mesa\",\n // [Auto-translated] \"NPS\"\n npsScore: \"NPS\",\n // [Auto-translated] \"Promoters\"\n npsPromoters: \"Promotores\",\n // [Auto-translated] \"Passives\"\n npsPassives: \"Passivos\",\n // [Auto-translated] \"Detractors\"\n npsDetractors: \"Detratores\",\n // [Auto-translated] \"Category (X Axis):\"\n axisXSelectorTitle: \"Categoria (eixo X):\",\n // [Auto-translated] \"Legend (Series):\"\n axisYSelectorTitle: \"Lenda (Série):\",\n // [Auto-translated] \"Segments:\"\n axisXAlternativeSelectorTitle: \"Segmentos:\",\n // [Auto-translated] \"Groups:\"\n axisYAlternativeSelectorTitle: \"Grupos:\",\n // [Auto-translated] \"Not selected\"\n notSelected: \"Não selecionado\",\n // [Auto-translated] \"Default\"\n intervalMode_default: \"Inadimplência\",\n // [Auto-translated] \"Decades\"\n intervalMode_decades: \"Décadas\",\n // [Auto-translated] \"Years\"\n intervalMode_years: \"Anos\",\n // [Auto-translated] \"Quarters\"\n intervalMode_quarters: \"Quartos\",\n // [Auto-translated] \"Months\"\n intervalMode_months: \"Meses\",\n // [Auto-translated] \"Days\"\n intervalMode_days: \"Dias\",\n // [Auto-translated] \"Custom\"\n intervalMode_custom: \"Costume\",\n // [Auto-translated] \"Auto\"\n intervalMode_auto: \"Automático\",\n // [Auto-translated] \"Intervals:\"\n intervalModeTitle: \"Intervalos:\",\n // [Auto-translated] \"Show individual values\"\n noRunningTotals: \"Mostrar valores individuais\",\n // [Auto-translated] \"Show running totals\"\n runningTotals: \"Mostrar totais acumulados\",\n // [Auto-translated] \"Compare periods\"\n groupDateSeries: \"Comparar períodos\",\n // [Auto-translated] \"View timeline\"\n ungroupDateSeries: \"Ver linha do tempo\",\n // [Auto-translated] \"None\"\n noneAggregateText: \"Nenhum\",\n // [Auto-translated] \"Aggregate:\"\n selectAggregateText: \"Agregado:\",\n // [Auto-translated] \"Year ends with\"\n groupedYearsAxisTitle: \"O ano termina com\"\n};\n\nsetupLocale({ localeCode: \"pt\", strings: portugueseStrings, nativeName: \"Português\" });","import { setupLocale } from \"../localizationManager\";\n\nexport var russianStrings = {\n // \"Group By Me\"\n groupButton: \"Сгруппировать\",\n // \"Ungroup By Me\"\n ungroupButton: \"Разгруппировать\",\n // \"Select Me\"\n selectButton: \"Выбрать\",\n // \"Hide column\"\n hideColumn: \"Скрыть столбец\",\n // \"Show column\"\n showColumn: \"Показать столбец\",\n // \"Make column private\"\n makePrivateColumn: \"Сделать столбец приватным\",\n // \"Make column public\"\n makePublicColumn: \"Сделать столбец публичным\",\n // \"Move to Detail\"\n moveToDetail: \"Спрятать в раскрывающуюся секцию\",\n // \"Show as Column\"\n showAsColumn: \"Показать как столбец\",\n // \"Search...\"\n filterPlaceholder: \"Поиск...\",\n // \"Remove rows\"\n removeRows: \"Удалить строки\",\n // \"Show\"\n showLabel: \"Показать\",\n // \"entries\"\n entriesLabel: \"записей\",\n // \"Texts in table\"\n visualizer_text: \"Таблица\",\n // \"Wordcloud\"\n visualizer_wordcloud: \"Облако тэгов\",\n // \"Histogram\"\n visualizer_histogram: \"Гистограмма\",\n // \"Average\"\n visualizer_number: \"Среднее значение\",\n // \"Table\"\n visualizer_choices: \"Таблица\",\n // \"Chart\"\n visualizer_selectBase: \"Диаграмма\",\n // \"Chart\"\n visualizer_matrix: \"Диаграмма\",\n // \"Bar\"\n chartType_bar: \"Столбчатая диаграмма\",\n // \"Vertical Bar\"\n chartType_vbar: \"Вертикальная столбчатая диаграмма\",\n // \"Stacked Bar\"\n chartType_stackedbar: \"Столбчатая диаграмма с накоплением\",\n // \"Doughnut\"\n chartType_doughnut: \"Кольцевая диаграмма\",\n // \"Pie\"\n chartType_pie: \"Круговая диаграмма\",\n // \"Scatter\"\n chartType_scatter: \"Точечная диаграмма\",\n // \"Gauge\"\n chartType_gauge: \"Измерительная диаграмма\",\n // \"Bullet\"\n chartType_bullet: \"Маркированная диаграмма\",\n // [Auto-translated] \"Line\"\n chartType_line: \"Линия\",\n // [Auto-translated] \"Radar\"\n chartType_radar: \"Радар\",\n // \"Hide\"\n hideButton: \"Скрыть\",\n // \"Make private\"\n makePrivateButton: \"Сделать приватным\",\n // \"Make public\"\n makePublicButton: \"Сделать публичным\",\n // \"Show\"\n showButton: \"Показать\",\n // \"Filter\"\n filter: \"Фильтр\",\n // \"Reset Filter\"\n resetFilter: \"Очистить фильтр\",\n // \"Change Locale\"\n changeLocale: \"Сменить язык\",\n // \"Clear\"\n clearButton: \"Очистить\",\n // \"Choose question to show...\"\n addElement: \"Выберите вопрос...\",\n // \"Default Order\"\n defaultOrder: \"Порядок по умолчанию\",\n // \"Ascending\"\n ascOrder: \"Сортировать по возрастанию\",\n // \"Descending\"\n descOrder: \"Сортировать по убыванию\",\n // \"Show minor columns\"\n showMinorColumns: \"Показать второстепенные столбцы\",\n // [Auto-translated] \"Actions\"\n actionsColumn: \"Действия\",\n // \"Other items and comments\"\n otherCommentTitle: \"Другое и комментарии\",\n // \"Show percentages\"\n showPercentages: \"Показать проценты\",\n // \"Hide percentages\"\n hidePercentages: \"Скрыть проценты\",\n // \"PDF\"\n pdfDownloadCaption: \"PDF\",\n // \"Excel\"\n xlsxDownloadCaption: \"Excel\",\n // \"CSV\"\n csvDownloadCaption: \"CSV\",\n // \"Download plot as a PNG file\"\n saveDiagramAsPNG: \"Скачать диаграмму в формате PNG\",\n // \"Hide empty answers\"\n hideEmptyAnswers: \"Скрыть пустые ответы\",\n // \"Show empty answers\"\n showEmptyAnswers: \"Показать пустые ответы\",\n // \"All answers\"\n \"topNValueText-1\": \"Все ответы\",\n // \"Top 5 answers\"\n topNValueText5: \"Первые 5 ответов\",\n // \"Top 10 answers\"\n topNValueText10: \"Первые 10 ответов\",\n // \"Top 20 answers\"\n topNValueText20: \"Первые 20 ответов\",\n // \"Hide missing answers\"\n hideMissingAnswers: \"Скрыть отсутствующие ответы\",\n // \"Show missing answers\"\n showMissingAnswers: \"Показать отсутствующие ответы\",\n // \"Missing answers\"\n missingAnswersLabel: \"Отсутствующие ответы\",\n // \"This question type is not visualized yet\"\n noVisualizerForQuestion: \"Этот тип вопроса не поддерживается\",\n // \"There are no results yet\"\n noResults: \"Результаты отсутствуют\",\n // \"Per Values\"\n showPerValues: \"По значениям\",\n // \"Per Columns\"\n showPerColumns: \"По столбцам\",\n // \"Answer\"\n answer: \"Ответ\",\n // \"Correct answer: \"\n correctAnswer: \"Правильный ответ: \",\n // \"Percent\"\n percent: \"процентов\",\n // [Auto-translated] \"Percentage\"\n percentage: \"Процент\",\n // [Auto-translated] \"Chart\"\n statistics_chart: \"Диаграмма\",\n // \"Responses\"\n responses: \"ответов\",\n // [Auto-translated] \"NPS\"\n visualizer_nps: \"NPS\",\n // [Auto-translated] \"Chart\"\n visualizer_boolean: \"Диаграмма\",\n // [Auto-translated] \"Table\"\n visualizer_options: \"Стол\",\n // [Auto-translated] \"NPS\"\n npsScore: \"NPS\",\n // [Auto-translated] \"Promoters\"\n npsPromoters: \"Промоутеров\",\n // [Auto-translated] \"Passives\"\n npsPassives: \"Пассивные способности\",\n // [Auto-translated] \"Detractors\"\n npsDetractors: \"Критики\",\n // [Auto-translated] \"Category (X Axis):\"\n axisXSelectorTitle: \"Категория (ось X):\",\n // [Auto-translated] \"Legend (Series):\"\n axisYSelectorTitle: \"Легенда (Серия):\",\n // [Auto-translated] \"Segments:\"\n axisXAlternativeSelectorTitle: \"Сегментов:\",\n // [Auto-translated] \"Groups:\"\n axisYAlternativeSelectorTitle: \"Группы:\",\n // [Auto-translated] \"Not selected\"\n notSelected: \"Не выбрано\",\n // [Auto-translated] \"Default\"\n intervalMode_default: \"По умолчанию\",\n // [Auto-translated] \"Decades\"\n intervalMode_decades: \"Десятилетий\",\n // [Auto-translated] \"Years\"\n intervalMode_years: \"Годы\",\n // [Auto-translated] \"Quarters\"\n intervalMode_quarters: \"Квартира\",\n // [Auto-translated] \"Months\"\n intervalMode_months: \"Месяцы\",\n // [Auto-translated] \"Days\"\n intervalMode_days: \"Дни недели\",\n // [Auto-translated] \"Custom\"\n intervalMode_custom: \"Обычай\",\n // [Auto-translated] \"Auto\"\n intervalMode_auto: \"Авто\",\n // [Auto-translated] \"Intervals:\"\n intervalModeTitle: \"Интервалы:\",\n // [Auto-translated] \"Show individual values\"\n noRunningTotals: \"Отображение отдельных значений\",\n // [Auto-translated] \"Show running totals\"\n runningTotals: \"Показать промежуточные итоги\",\n // [Auto-translated] \"Compare periods\"\n groupDateSeries: \"Сравнение периодов\",\n // [Auto-translated] \"View timeline\"\n ungroupDateSeries: \"Просмотр временной шкалы\",\n // [Auto-translated] \"None\"\n noneAggregateText: \"Никакой\",\n // [Auto-translated] \"Aggregate:\"\n selectAggregateText: \"Совокупность:\",\n // [Auto-translated] \"Year ends with\"\n groupedYearsAxisTitle: \"Год заканчивается с\"\n};\n\nsetupLocale({ localeCode: \"ru\", strings: russianStrings, nativeName: \"Русский\" });","import { setupLocale } from \"../localizationManager\";\n\nexport var spanishStrings = {\n // \"Group By Me\"\n groupButton: \"Grupo Por Mí\",\n // \"Ungroup By Me\"\n ungroupButton: \"Desagrupar por mí\",\n // \"Select Me\"\n selectButton: \"Seleccionarme\",\n // \"Hide column\"\n hideColumn: \"Ocultar columna\",\n // \"Show column\"\n showColumn: \"Mostrar columna\",\n // \"Make column private\"\n makePrivateColumn: \"Hacer que la columna sea privada\",\n // \"Make column public\"\n makePublicColumn: \"Hacer pública la columna\",\n // \"Move to Detail\"\n moveToDetail: \"Mover al detalle\",\n // \"Show as Column\"\n showAsColumn: \"Mostrar como columna\",\n // \"Search...\"\n filterPlaceholder: \"Buscar ...\",\n // \"Remove rows\"\n removeRows: \"Eliminar filas\",\n // \"Show\"\n showLabel: \"Mostrar\",\n // \"entries\"\n entriesLabel: \"Entradas\",\n // \"Texts in table\"\n visualizer_text: \"Textos en tabla\",\n // \"Wordcloud\"\n visualizer_wordcloud: \"Wordcloud\",\n // \"Histogram\"\n visualizer_histogram: \"Histograma\",\n // \"Average\"\n visualizer_number: \"Promedio\",\n // \"Table\"\n visualizer_choices: \"Mesa\",\n // \"Chart\"\n visualizer_selectBase: \"Gráfico\",\n // [Auto-translated] \"Chart\"\n visualizer_matrix: \"Gráfico\",\n // [Auto-translated] \"Bar\"\n chartType_bar: \"Barra\",\n // \"Vertical Bar\"\n chartType_vbar: \"Barra vertical\",\n // \"Stacked Bar\"\n chartType_stackedbar: \"Barra apilada\",\n // \"Doughnut\"\n chartType_doughnut: \"Donut\",\n // \"Pie\"\n chartType_pie: \"Pie\",\n // \"Scatter\"\n chartType_scatter: \"Dispersión\",\n // \"Gauge\"\n chartType_gauge: \"Gauge\",\n // \"Bullet\"\n chartType_bullet: \"Bullet\",\n // [Auto-translated] \"Line\"\n chartType_line: \"Línea\",\n // [Auto-translated] \"Radar\"\n chartType_radar: \"Radar\",\n // \"Hide\"\n hideButton: \"Ocultar\",\n // \"Make private\"\n makePrivateButton: \"Hacer privado\",\n // \"Make public\"\n makePublicButton: \"Hacer público\",\n // \"Show\"\n showButton: \"Mostrar\",\n // \"Filter\"\n filter: \"Filtro\",\n // \"Reset Filter\"\n resetFilter: \"Restablecer filtro\",\n // \"Change Locale\"\n changeLocale: \"Cambiar configuración regional\",\n // \"Clear\"\n clearButton: \"Borrar\",\n // \"Choose question to show...\"\n addElement: \"Elija la pregunta para mostrar ...\",\n // \"Default Order\"\n defaultOrder: \"Orden predeterminado\",\n // \"Ascending\"\n ascOrder: \"Ascendente\",\n // \"Descending\"\n descOrder: \"Descendente\",\n // \"Show minor columns\"\n showMinorColumns: \"Mostrar columnas secundarias\",\n // [Auto-translated] \"Actions\"\n actionsColumn: \"Acciones\",\n // \"Other items and comments\"\n otherCommentTitle: \"Otros elementos y comentarios\",\n // \"Show percentages\"\n showPercentages: \"Mostrar porcentajes\",\n // \"Hide percentages\"\n hidePercentages: \"Ocultar porcentajes\",\n // \"PDF\"\n pdfDownloadCaption: \"PDF\",\n // \"Excel\"\n xlsxDownloadCaption: \"Excel\",\n // \"CSV\"\n csvDownloadCaption: \"CSV\",\n // \"Download plot as a PNG file\"\n saveDiagramAsPNG: \"Descargar el gráfico como png\",\n // \"Hide empty answers\"\n hideEmptyAnswers: \"Ocultar respuestas vacías\",\n // \"Show empty answers\"\n showEmptyAnswers: \"Mostrar respuestas vacías\",\n // \"All answers\"\n \"topNValueText-1\": \"Todas las respuestas\",\n // \"Top 5 answers\"\n topNValueText5: \"Las 5 respuestas principales\",\n // \"Top 10 answers\"\n topNValueText10: \"Las 10 respuestas principales\",\n // \"Top 20 answers\"\n topNValueText20: \"20 respuestas principales\",\n // \"Hide missing answers\"\n hideMissingAnswers: \"Ocultar las respuestas que faltan\",\n // \"Show missing answers\"\n showMissingAnswers: \"Mostrar las respuestas que faltan\",\n // \"Missing answers\"\n missingAnswersLabel: \"Respuestas faltantes\",\n // \"This question type is not visualized yet\"\n noVisualizerForQuestion: \"Este tipo de pregunta aún no se visualiza\",\n // \"There are no results yet\"\n noResults: \"Aún no hay resultados\",\n // \"Per Values\"\n showPerValues: \"Por valores\",\n // \"Per Columns\"\n showPerColumns: \"Por columnas\",\n // \"Answer\"\n answer: \"Respuesta\",\n // \"Correct answer: \"\n correctAnswer: \"Respuesta correcta: \",\n // \"Percent\"\n percent: \"Por ciento\",\n // [Auto-translated] \"Percentage\"\n percentage: \"Porcentaje\",\n // [Auto-translated] \"Chart\"\n statistics_chart: \"Gráfico\",\n // \"Responses\"\n responses: \"Respuestas\",\n // [Auto-translated] \"NPS\"\n visualizer_nps: \"NPS\",\n // [Auto-translated] \"Chart\"\n visualizer_boolean: \"Gráfico\",\n // [Auto-translated] \"Table\"\n visualizer_options: \"Mesa\",\n // [Auto-translated] \"NPS\"\n npsScore: \"NPS\",\n // [Auto-translated] \"Promoters\"\n npsPromoters: \"Promotores\",\n // [Auto-translated] \"Passives\"\n npsPassives: \"Pasivos\",\n // [Auto-translated] \"Detractors\"\n npsDetractors: \"Detractores\",\n // [Auto-translated] \"Category (X Axis):\"\n axisXSelectorTitle: \"Categoría (eje X):\",\n // [Auto-translated] \"Legend (Series):\"\n axisYSelectorTitle: \"Leyenda (Serie):\",\n // [Auto-translated] \"Segments:\"\n axisXAlternativeSelectorTitle: \"Segmentos:\",\n // [Auto-translated] \"Groups:\"\n axisYAlternativeSelectorTitle: \"Grupos:\",\n // [Auto-translated] \"Not selected\"\n notSelected: \"No seleccionado\",\n // [Auto-translated] \"Default\"\n intervalMode_default: \"Predeterminado\",\n // [Auto-translated] \"Decades\"\n intervalMode_decades: \"Décadas\",\n // [Auto-translated] \"Years\"\n intervalMode_years: \"Años\",\n // [Auto-translated] \"Quarters\"\n intervalMode_quarters: \"Alojamiento\",\n // [Auto-translated] \"Months\"\n intervalMode_months: \"Meses\",\n // [Auto-translated] \"Days\"\n intervalMode_days: \"Días\",\n // [Auto-translated] \"Custom\"\n intervalMode_custom: \"Costumbre\",\n // [Auto-translated] \"Auto\"\n intervalMode_auto: \"Automático\",\n // [Auto-translated] \"Intervals:\"\n intervalModeTitle: \"Intervalos:\",\n // [Auto-translated] \"Show individual values\"\n noRunningTotals: \"Mostrar valores individuales\",\n // [Auto-translated] \"Show running totals\"\n runningTotals: \"Mostrar totales acumulados\",\n // [Auto-translated] \"Compare periods\"\n groupDateSeries: \"Comparar períodos\",\n // [Auto-translated] \"View timeline\"\n ungroupDateSeries: \"Ver cronograma\",\n // [Auto-translated] \"None\"\n noneAggregateText: \"Ninguno\",\n // [Auto-translated] \"Aggregate:\"\n selectAggregateText: \"Agregado:\",\n // [Auto-translated] \"Year ends with\"\n groupedYearsAxisTitle: \"El año termina con\"\n};\n\nsetupLocale({ localeCode: \"es\", strings: spanishStrings, nativeName: \"Español\" });","import { setupLocale } from \"../localizationManager\";\n\nexport var swedishStrings = {\n // \"Group By Me\"\n groupButton: \"Gruppera av mig\",\n // \"Ungroup By Me\"\n ungroupButton: \"Avgruppera av mig\",\n // \"Select Me\"\n selectButton: \"Välj mig\",\n // \"Hide column\"\n hideColumn: \"Göm kolumn\",\n // \"Show column\"\n showColumn: \"Visa kolumn\",\n // \"Make column private\"\n makePrivateColumn: \"Gör kolumn privat\",\n // \"Make column public\"\n makePublicColumn: \"Gör kolumn offentlig\",\n // \"Move to Detail\"\n moveToDetail: \"Flytta till detalj\",\n // \"Show as Column\"\n showAsColumn: \"Visa som kolumn\",\n // \"Search...\"\n filterPlaceholder: \"Sök...\",\n // \"Remove rows\"\n removeRows: \"Ta bort rader\",\n // \"Show\"\n showLabel: \"Visa\",\n // \"entries\"\n entriesLabel: \"poster\",\n // \"Texts in table\"\n visualizer_text: \"Texter i tabell\",\n // \"Wordcloud\"\n visualizer_wordcloud: \"Ordmoln\",\n // \"Histogram\"\n visualizer_histogram: \"Histogram\",\n // \"Average\"\n visualizer_number: \"Genomsnitt\",\n // \"Table\"\n visualizer_choices: \"Tabell\",\n // \"Chart\"\n visualizer_selectBase: \"Diagram\",\n // \"Chart\"\n visualizer_matrix: \"Diagram\",\n // \"Bar\"\n chartType_bar: \"Stapel\",\n // \"Vertical Bar\"\n chartType_vbar: \"Vertikal stapel\",\n // \"Stacked Bar\"\n chartType_stackedbar: \"Staplad stapel\",\n // \"Doughnut\"\n chartType_doughnut: \"Ring\",\n // \"Pie\"\n chartType_pie: \"Cirkel\",\n // \"Scatter\"\n chartType_scatter: \"Punkt\",\n // \"Gauge\"\n chartType_gauge: \"Mätare\",\n // \"Bullet\"\n chartType_bullet: \"Bullet\",\n // \"Line\"\n chartType_line: \"Linje\",\n // \"Radar\"\n chartType_radar: \"Radar\",\n // \"Hide\"\n hideButton: \"Göm\",\n // \"Make private\"\n makePrivateButton: \"Gör privat\",\n // \"Make public\"\n makePublicButton: \"Gör offentlig\",\n // \"Show\"\n showButton: \"Visa\",\n // \"Filter\"\n filter: \"Filter\",\n // \"Reset Filter\"\n resetFilter: \"Återställ filter\",\n // \"Change Locale\"\n changeLocale: \"Ändra språk\",\n // \"Clear\"\n clearButton: \"Rensa\",\n // \"Choose question to show...\"\n addElement: \"Välj fråga att visa...\",\n // \"Default Order\"\n defaultOrder: \"Standard ordning\",\n // \"Ascending\"\n ascOrder: \"Stigande\",\n // \"Descending\"\n descOrder: \"Fallande\",\n // \"Show minor columns\"\n showMinorColumns: \"Visa mindre kolumner\",\n // \"Actions\"\n actionsColumn: \"Åtgärder\",\n // \"Other items and comments\"\n otherCommentTitle: \"Övriga objekt och kommentarer\",\n // \"Show percentages\"\n showPercentages: \"Visa procent\",\n // \"Hide percentages\"\n hidePercentages: \"Göm procent\",\n // \"PDF\"\n pdfDownloadCaption: \"PDF\",\n // \"Excel\"\n xlsxDownloadCaption: \"Excel\",\n // \"CSV\"\n csvDownloadCaption: \"CSV\",\n // \"Download plot as a PNG file\"\n saveDiagramAsPNG: \"Ladda ner diagram som PNG-fil\",\n // \"Hide empty answers\"\n hideEmptyAnswers: \"Göm tomma svar\",\n // \"Show empty answers\"\n showEmptyAnswers: \"Visa tomma svar\",\n // \"All answers\"\n \"topNValueText-1\": \"Alla svar\",\n // \"Top 5 answers\"\n topNValueText5: \"Topp 5 svar\",\n // \"Top 10 answers\"\n topNValueText10: \"Topp 10 svar\",\n // \"Top 20 answers\"\n topNValueText20: \"Topp 20 svar\",\n // \"Hide missing answers\"\n hideMissingAnswers: \"Göm saknade svar\",\n // \"Show missing answers\"\n showMissingAnswers: \"Visa saknade svar\",\n // \"Missing answers\"\n missingAnswersLabel: \"Saknade svar\",\n // \"This question type is not visualized yet\"\n noVisualizerForQuestion: \"Detta frågetyp är inte visualiserad ännu\",\n // \"There are no results yet\"\n noResults: \"Det finns inga resultat ännu\",\n // \"Per Values\"\n showPerValues: \"Per värden\",\n // \"Per Columns\"\n showPerColumns: \"Per kolumner\",\n // \"Answer\"\n answer: \"Svar\",\n // \"Correct answer: \"\n correctAnswer: \"Rätt svar: \",\n // \"Percent\"\n percent: \"Procent\",\n // \"Percentage\"\n percentage: \"Procent\",\n // \"Chart\"\n statistics_chart: \"Diagram\",\n // \"Responses\"\n responses: \"Svar\",\n // \"NPS\"\n visualizer_nps: \"NPS\",\n // [Auto-translated] \"Chart\"\n visualizer_boolean: \"Diagram\",\n // [Auto-translated] \"Table\"\n visualizer_options: \"Bord\",\n // \"NPS\"\n npsScore: \"NPS\",\n // \"Promoters\"\n npsPromoters: \"Promotorer\",\n // \"Passives\"\n npsPassives: \"Passiva\",\n // \"Detractors\"\n npsDetractors: \"Kritiker\",\n // \"Category (X Axis):\"\n axisXSelectorTitle: \"X-axel:\",\n // \"Legend (Series):\"\n axisYSelectorTitle: \"Y-axel:\",\n // [Auto-translated] \"Segments:\"\n axisXAlternativeSelectorTitle: \"Segment:\",\n // [Auto-translated] \"Groups:\"\n axisYAlternativeSelectorTitle: \"Grupper:\",\n // [Auto-translated] \"Not selected\"\n notSelected: \"Inte valt\",\n // [Auto-translated] \"Default\"\n intervalMode_default: \"Standard\",\n // [Auto-translated] \"Decades\"\n intervalMode_decades: \"Årtionden\",\n // [Auto-translated] \"Years\"\n intervalMode_years: \"År\",\n // [Auto-translated] \"Quarters\"\n intervalMode_quarters: \"Bostad\",\n // [Auto-translated] \"Months\"\n intervalMode_months: \"Månader\",\n // [Auto-translated] \"Days\"\n intervalMode_days: \"Dagar\",\n // [Auto-translated] \"Custom\"\n intervalMode_custom: \"Sed\",\n // [Auto-translated] \"Auto\"\n intervalMode_auto: \"Bil\",\n // [Auto-translated] \"Intervals:\"\n intervalModeTitle: \"Mellanrum:\",\n // [Auto-translated] \"Show individual values\"\n noRunningTotals: \"Visa individuella värden\",\n // [Auto-translated] \"Show running totals\"\n runningTotals: \"Visa löpande totaler\",\n // [Auto-translated] \"Compare periods\"\n groupDateSeries: \"Jämför perioder\",\n // [Auto-translated] \"View timeline\"\n ungroupDateSeries: \"Visa tidslinjen\",\n // [Auto-translated] \"None\"\n noneAggregateText: \"Ingen\",\n // [Auto-translated] \"Aggregate:\"\n selectAggregateText: \"Aggregat:\",\n // [Auto-translated] \"Year ends with\"\n groupedYearsAxisTitle: \"Året slutar med\"\n};\n\nsetupLocale({ localeCode: \"sv\", strings: swedishStrings, nativeName: \"Svenska\" });","import { Question, QuestionBooleanModel } from \"survey-core\";\nimport { ItemValue } from \"survey-core\";\nimport { SelectBase } from \"./selectBase\";\nimport { localization } from \"./localizationManager\";\nimport { VisualizationManager } from \"./visualizationManager\";\n\nexport class BooleanModel extends SelectBase {\n\n constructor(\n question: Question,\n data: Array<{ [index: string]: any }>,\n options?: Object,\n name?: string\n ) {\n super(question, data, options, name || \"boolean\");\n }\n\n protected getCorrectAnswerText(): string {\n const correctAnswerValue = this.booleanQuestion.correctAnswer;\n if (this.booleanQuestion.valueTrue !== undefined && this.booleanQuestion.valueTrue === correctAnswerValue || !!correctAnswerValue) {\n return this.booleanQuestion.locLabelTrue.textOrHtml;\n }\n if (this.booleanQuestion.valueFalse !== undefined && this.booleanQuestion.valueFalse === correctAnswerValue || !correctAnswerValue) {\n return this.booleanQuestion.locLabelFalse.textOrHtml;\n }\n return correctAnswerValue;\n }\n\n public get booleanQuestion() {\n return <QuestionBooleanModel>this.question;\n }\n\n public static trueColor = \"\";\n public static falseColor = \"\";\n\n public getSelectedItemByText(itemText: string) {\n const labels = this.getLabels();\n const values = this.getValues();\n return new ItemValue(values[labels.indexOf(itemText)], itemText);\n }\n\n getValues(): Array<any> {\n const values = [\n this.booleanQuestion.valueTrue !== undefined\n ? this.booleanQuestion.valueTrue\n : true,\n this.booleanQuestion.valueFalse !== undefined\n ? this.booleanQuestion.valueFalse\n : false,\n ];\n if (this.showMissingAnswers) {\n values.push(undefined);\n }\n return values;\n }\n\n getLabels(): Array<string> {\n var labels = [].concat(this.getValues());\n if (this.booleanQuestion.labelTrue !== undefined) {\n labels[0] = this.booleanQuestion.locLabelTrue.textOrHtml;\n }\n if (this.booleanQuestion.labelFalse !== undefined) {\n labels[1] = this.booleanQuestion.locLabelFalse.textOrHtml;\n }\n if (this.showMissingAnswers) {\n labels[2] = localization.getString(\"missingAnswersLabel\");\n }\n return labels;\n }\n}\n\nVisualizationManager.registerVisualizer(\"boolean\", BooleanModel);","import { Event } from \"survey-core\";\r\n\r\nexport type SummaryFilter = { field: string, type: string, value: any };\r\nexport type GetDataUsingCallbackFn = (params: { visualizer: any, filter?: Array<SummaryFilter>, callback?: (response: { data: Array<Object>, error?: any }) => void }) => void;\r\nexport type GetDataUsingPromiseFn = (params: { visualizer: any, filter?: Array<SummaryFilter> }) => Promise<Array<Object>>;\r\nexport type GetDataFn = GetDataUsingCallbackFn | GetDataUsingPromiseFn;\r\n\r\nexport class DataProvider {\r\n public static seriesMarkerKey = \"__sa_series_name\";\r\n\r\n private _filteredData: Array<{ [index: string]: any }>;\r\n protected filterValues: { [index: string]: any } = {};\r\n\r\n constructor(private _data: Array<any> | GetDataFn = []) {\r\n }\r\n\r\n public get data(): Array<any> {\r\n if(Array.isArray(this._data)) {\r\n return this._data;\r\n }\r\n return undefined;\r\n }\r\n public set data(data: Array<any> | GetDataFn) {\r\n if(Array.isArray(data)) {\r\n this._data = [].concat(data);\r\n } else {\r\n this._data = data;\r\n }\r\n this.raiseDataChanged();\r\n }\r\n public get dataFn(): GetDataFn {\r\n if(typeof this._data === \"function\") {\r\n return this._data;\r\n }\r\n return undefined;\r\n }\r\n\r\n public get filteredData(): Array<any> {\r\n if (this._filteredData === undefined) {\r\n let filterKeys = Object.keys(this.filterValues);\r\n if (filterKeys.length > 0) {\r\n this._filteredData = this.data.filter((item) => {\r\n return !Object.keys(this.filterValues).some(\r\n (key) => {\r\n const filterValue = this.filterValues[key];\r\n const filterValueType = typeof filterValue;\r\n const questionValue = item[key];\r\n if (Array.isArray(questionValue)) {\r\n if (filterValueType === \"object\") {\r\n return !questionArrayValueContainsValue(questionValue, filterValue);\r\n } else {\r\n return questionValue.indexOf(filterValue) == -1;\r\n }\r\n }\r\n if (typeof questionValue === \"object\") {\r\n if (filterValueType !== \"object\")\r\n return true;\r\n return !questionValueContainsValue(questionValue, filterValue);\r\n }\r\n const seriesValue = item[DataProvider.seriesMarkerKey];\r\n if (!!seriesValue && filterValueType === \"object\") {\r\n return questionValue !== filterValue[seriesValue];\r\n }\r\n if (filterValueType === \"object\" && filterValue.start !== undefined && filterValue.end !== undefined) {\r\n let continioiusValue = typeof questionValue === \"number\" ? questionValue : Date.parse(questionValue);\r\n if (isNaN(continioiusValue)) {\r\n continioiusValue = parseFloat(questionValue);\r\n if (isNaN(continioiusValue)) {\r\n return true;\r\n }\r\n }\r\n return continioiusValue < filterValue.start || continioiusValue >= filterValue.end;\r\n }\r\n return item[key] !== this.filterValues[key];\r\n }\r\n );\r\n });\r\n } else {\r\n this._filteredData = this.data;\r\n }\r\n }\r\n return this._filteredData;\r\n }\r\n\r\n /**\r\n * Sets filter by question name and value.\r\n */\r\n public setFilter(questionName: string, selectedValue: any): void {\r\n var filterChanged = true;\r\n if (selectedValue !== undefined) {\r\n filterChanged = this.filterValues[questionName] !== selectedValue;\r\n if (filterChanged) {\r\n this.filterValues[questionName] = selectedValue;\r\n }\r\n } else {\r\n filterChanged = this.filterValues[questionName] !== undefined;\r\n if (filterChanged) {\r\n delete this.filterValues[questionName];\r\n }\r\n }\r\n if (filterChanged) {\r\n this.raiseFilterChanged(questionName, selectedValue);\r\n this.raiseDataChanged();\r\n }\r\n }\r\n\r\n /**\r\n * Resets filter.\r\n */\r\n public resetFilter(): void {\r\n if (Object.keys(this.filterValues).length === 0) {\r\n return;\r\n }\r\n Object.keys(this.filterValues).forEach(key => delete this.filterValues[key]);\r\n this.raiseFilterChanged();\r\n this.raiseDataChanged();\r\n }\r\n\r\n /**\r\n * Fires when data has been changed.\r\n */\r\n public onFilterChanged = new Event<\r\n (sender: DataProvider, options: any) => any,\r\n DataProvider,\r\n any\r\n >();\r\n\r\n public raiseFilterChanged(questionName?: string, selectedValue?: any): void {\r\n if (!this.onFilterChanged.isEmpty) {\r\n this.onFilterChanged.fire(this, { questionName, selectedValue });\r\n }\r\n }\r\n\r\n /**\r\n * Fires when data has been changed.\r\n */\r\n public onDataChanged = new Event<\r\n (sender: DataProvider, options: any) => any,\r\n DataProvider,\r\n any\r\n >();\r\n\r\n public raiseDataChanged(questionName?: string): void {\r\n this._filteredData = undefined;\r\n if (!this.onDataChanged.isEmpty) {\r\n this.onDataChanged.fire(this, { questionName });\r\n }\r\n }\r\n\r\n public getFilters(): SummaryFilter[] {\r\n return Object.keys(this.filterValues).map(key => ({ field: key, type: \"=\", value: this.filterValues[key] }));\r\n }\r\n\r\n public fixDropdownData(dataNames: string[]): void {\r\n (this.data || []).forEach((dataItem) => {\r\n let rawDataItem = dataItem[dataNames[0]];\r\n if (!!rawDataItem && typeof rawDataItem === \"object\" && !Array.isArray(rawDataItem)) {\r\n const arrayData = [];\r\n Object.keys(rawDataItem).forEach((key) => {\r\n var nestedDataItem = Object.assign({}, rawDataItem[key]);\r\n nestedDataItem[DataProvider.seriesMarkerKey] = key;\r\n arrayData.push(nestedDataItem);\r\n });\r\n dataItem[dataNames[0]] = arrayData;\r\n }\r\n });\r\n }\r\n}\r\n\r\nfunction questionArrayValueContainsValue(questionValues: Array<any>, filterValue: any) {\r\n for(let i = 0; i < questionValues.length; i ++) {\r\n if(questionValueContainsValue(questionValues[i], filterValue)) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n}\r\n\r\nfunction questionValueContainsValue(questionValue: any, filterValue: any) {\r\n const questionValueKeys = Object.keys(questionValue);\r\n const filterValueKeys = Object.keys(filterValue);\r\n\r\n if (filterValueKeys.length > questionValueKeys.length) return false;\r\n\r\n for (var key of filterValueKeys) {\r\n if (filterValue[key] != questionValue[key]) return false;\r\n }\r\n\r\n return true;\r\n}\r\n","export * from \"../localizationManager\";\n\n//localization\nimport \"../analytics-localization/farsi\";\nimport \"../analytics-localization/french\";\nimport \"../analytics-localization/german\";\nimport \"../analytics-localization/norwegian\";\nimport \"../analytics-localization/portuguese\";\nimport \"../analytics-localization/russian\";\nimport \"../analytics-localization/dutch\";\nimport \"../analytics-localization/spanish\";\nimport \"../analytics-localization/italian\";\nimport \"../analytics-localization/arabic\";\nimport \"../analytics-localization/japanese\";\nimport \"../analytics-localization/polish\";\nimport \"../analytics-localization/finnish\";\nimport \"../analytics-localization/swedish\";\n\nexport * from \"../dataProvider\";\nexport * from \"../visualizerFactory\";\n\nexport * from \"../selectBase\";\nexport * from \"../matrix\";\nexport * from \"../boolean\";\nexport * from \"../histogram\";\nexport * from \"../number\";\nexport * from \"../visualizerBase\";\nexport * from \"../visualizationManager\";\nexport * from \"../visualizationPanel\";\nexport * from \"../visualizationPanelDynamic\";\nexport * from \"../visualizationMatrixDynamic\";\nexport * from \"../visualizationMatrixDropdown\";\nexport * from \"../alternativeVizualizersWrapper\";\nexport * from \"../visualizationComposite\";\n\nexport * from \"../wordcloud/wordcloud\";\nexport * from \"../wordcloud/stopwords/index\";\nexport * from \"../text\";\nexport * from \"../statistics-table\";\nexport * from \"../nps\";\nexport * from \"../ranking\";\nexport * from \"../pivot\";\n\nexport { DocumentHelper } from \"../utils/index\";\n","import { IVisualizerWithSelection } from \"./selectBase\";\r\nimport { DocumentHelper } from \"./utils\";\r\nimport { localization } from \"./localizationManager\";\r\n\r\nexport class FilterInfo {\r\n private _htmlElement: HTMLDivElement = undefined;\r\n private text: HTMLElement = undefined;\r\n\r\n constructor(visualizer: IVisualizerWithSelection) {\r\n this._htmlElement = <HTMLDivElement>(\r\n DocumentHelper.createElement(\"div\", \"sa-question__filter\")\r\n );\r\n this.text = DocumentHelper.createElement(\r\n \"span\",\r\n \"sa-question__filter-text\"\r\n );\r\n this._htmlElement.appendChild(this.text);\r\n const filterClear = DocumentHelper.createButton(() => {\r\n visualizer.setSelection(undefined);\r\n }, localization.getString(\"clearButton\"));\r\n this._htmlElement.appendChild(filterClear);\r\n }\r\n\r\n public get htmlElement() {\r\n return this._htmlElement;\r\n }\r\n\r\n public update(selection: { value: any, text: string }) {\r\n if (selection !== undefined && selection.value !== undefined) {\r\n this._htmlElement.style.display = \"inline-flex\";\r\n this.text.innerText = localization.getString(\"filter\") + \": [\" + selection.text + \"]\";\r\n } else {\r\n this._htmlElement.style.display = \"none\";\r\n this.text.innerText = \"\";\r\n }\r\n }\r\n}\r\n","import { ItemValue, Question } from \"survey-core\";\nimport { DataProvider } from \"./dataProvider\";\nimport { IAnswersData, SelectBase } from \"./selectBase\";\nimport { VisualizationManager } from \"./visualizationManager\";\nimport { getNestedDataRows, histogramStatisticsCalculator } from \"./statisticCalculators\";\nimport { DocumentHelper } from \"./utils\";\nimport { localization } from \"./localizationManager\";\n\nexport declare type HistogramIntervalMode = \"auto\" | \"custom\" | \"decades\" | \"years\" | \"quarters\" | \"months\" | \"days\";\nexport interface IHistogramInterval { start: number, end: number, label: string }\n\nfunction getQuarter(date: Date): string {\n switch(Math.floor(date.getMonth() / 3) + 1) {\n case 1: return \"I\";\n case 2: return \"II\";\n case 3: return \"III\";\n case 4: return \"IV\";\n }\n}\n\nexport function getBestIntervalMode(min: number, max: number): HistogramIntervalMode {\n const start = new Date(min);\n const end = new Date(max);\n const totalMonths = (end.getFullYear() - start.getFullYear()) * 12 + (end.getMonth() - start.getMonth());\n if(totalMonths > 10 * 12) return \"decades\";\n if(totalMonths > 2 * 12) return \"years\";\n if(totalMonths > 1 * 12) return \"quarters\";\n if(totalMonths > 4) return \"months\";\n return \"days\";\n}\n\nexport const intervalCalculators = {\n decades: (min: number, max: number) => {\n const intervals = [];\n let start = new Date(min);\n start.setFullYear(Math.floor(start.getFullYear() / 10) * 10);\n start.setMonth(0);\n start.setDate(1);\n start.setHours(0, 0, 0, 0);\n let startYear = start.getFullYear();\n const end = new Date(max);\n const endYear = end.getFullYear();\n while (startYear <= endYear) {\n const intervalStart = new Date(startYear, 0, 1);\n const intervalEnd = new Date(startYear + 10, 0, 1);\n intervals.push({\n start: intervalStart.getTime(),\n end: intervalEnd.getTime(),\n label: \"\" + startYear + \"s\"\n });\n startYear += 10;\n }\n return intervals;\n },\n years: (min: number, max: number) => {\n const intervals = [];\n let start = new Date(min);\n start.setMonth(0);\n start.setDate(1);\n start.setHours(0, 0, 0, 0);\n let startYear = start.getFullYear();\n const end = new Date(max);\n const endYear = end.getFullYear();\n while (startYear <= endYear) {\n const intervalStart = new Date(startYear, 0, 1);\n const intervalEnd = new Date(startYear + 1, 0, 1);\n intervals.push({\n start: intervalStart.getTime(),\n end: intervalEnd.getTime(),\n label: \"\" + startYear\n });\n startYear++;\n }\n return intervals;\n },\n months: (min: number, max: number) => {\n const intervals = [];\n let start = new Date(min);\n start.setDate(1);\n start.setHours(0, 0, 0, 0);\n let startYear = start.getFullYear();\n let startMonth = start.getMonth();\n const end = new Date(max);\n const endYear = end.getFullYear();\n const endMonth = end.getMonth();\n while (startYear < endYear || (startYear === endYear && startMonth <= endMonth)) {\n const intervalStart = new Date(startYear, startMonth, 1);\n const intervalEnd = new Date(startYear, startMonth + 1, 1);\n intervals.push({\n start: intervalStart.getTime(),\n end: intervalEnd.getTime(),\n label: intervalStart.toLocaleDateString(undefined, { year: \"numeric\", month: \"short\" })\n });\n startMonth++;\n if (startMonth >= 12) {\n startMonth = 0;\n startYear++;\n }\n }\n return intervals;\n },\n quarters: (min: number, max: number) => {\n const intervals = [];\n let start = new Date(min);\n start.setDate(1);\n start.setHours(0, 0, 0, 0);\n let startYear = start.getFullYear();\n let startMonth = start.getMonth();\n const end = new Date(max);\n const endYear = end.getFullYear();\n const endMonth = end.getMonth();\n while (startYear < endYear || (startYear === endYear && startMonth <= endMonth)) {\n const intervalStart = new Date(startYear, startMonth, 1);\n const intervalEnd = new Date(startYear, startMonth + 3, 1);\n intervals.push({\n start: intervalStart.getTime(),\n end: intervalEnd.getTime(),\n label: getQuarter(intervalStart) + \" \" + intervalStart.getFullYear().toString()\n });\n startMonth += 3;\n if (startMonth >= 12) {\n startMonth = startMonth % 12;\n startYear++;\n }\n }\n return intervals;\n },\n days: (min: number, max: number) => {\n const intervals = [];\n let start = new Date(min);\n start.setHours(0, 0, 0, 0);\n const end = new Date(max);\n end.setHours(0, 0, 0, 0);\n while (start <= end) {\n const intervalStart = new Date(start);\n const intervalEnd = new Date(start);\n intervalEnd.setDate(intervalEnd.getDate() + 1);\n intervals.push({\n start: intervalStart.getTime(),\n end: intervalEnd.getTime(),\n label: intervalStart.toLocaleDateString()\n });\n start.setDate(start.getDate() + 1);\n }\n return intervals;\n }\n};\n\nexport class HistogramModel extends SelectBase {\n protected valueType: \"date\" | \"number\" = \"number\";\n private _cachedValues: Array<{ original: any, continuous: number, row: any }> = undefined;\n private _continuousData: { [series: string]: Array<{continuous: number, row: any}> } = undefined;\n private _cachedIntervals: Array<{ start: number, end: number, label: string }> = undefined;\n private _intervalPrecision: number = 2;\n private showRunningTotalsBtn: HTMLElement = undefined;\n private showGroupedBtn: HTMLElement = undefined;\n private changeIntervalsModeSelector: HTMLDivElement = undefined;\n private aggregateDataNameSelector: HTMLDivElement = undefined;\n public static IntervalsCount = 10;\n public static UseIntervalsFrom = 10;\n\n constructor(\n question: Question,\n data: Array<{ [index: string]: any }>,\n options?: Object,\n name?: string\n ) {\n super(question, data, options, name || \"histogram\");\n this._transposeData = false;\n if (this.options.intervalPrecision !== undefined) {\n this._intervalPrecision = this.options.intervalPrecision;\n }\n const questionType = question.getType();\n if (questionType === \"text\" && (question[\"inputType\"] === \"date\" || question[\"inputType\"] === \"datetime\")) {\n this.valueType = \"date\";\n } else {\n this.valueType = \"number\";\n }\n this._intervalsMode = this.valueType === \"date\" ? \"auto\" : \"default\" as any;\n\n if(this.allowChangeIntervals) {\n this.registerToolbarItem(\"changeIntervalsMode\", () => {\n this.changeIntervalsModeSelector = DocumentHelper.createSelector(\n this.intervalModes.map((intervalModeValue) => {\n return {\n value: intervalModeValue,\n text: localization.getString(\"intervalMode_\" + intervalModeValue),\n };\n }),\n (option: any) => this.intervalsMode === option.value,\n (e: any) => {\n this.intervalsMode = e.target.value;\n },\n localization.getString(\"intervalModeTitle\")\n );\n return this.changeIntervalsModeSelector;\n });\n }\n if (this.possibleAggregateDataNames.length > 0) {\n this.registerToolbarItem(\"aggregateDataName\", () => {\n const choices = this.possibleAggregateDataNames.map((dataName) => {\n return typeof dataName === \"string\" ? { value: dataName, text: dataName } : dataName;\n });\n choices.unshift({ value: \"\", text: localization.getString(\"noneAggregateText\") }),\n\n this.aggregateDataNameSelector = DocumentHelper.createSelector(\n choices,\n (option: any) => this.aggregateDataName === option.value,\n (e) => {\n this.aggregateDataName = e.target.value;\n },\n localization.getString(\"selectAggregateText\")\n );\n this.updateAggregateDataNameSelector();\n return this.aggregateDataNameSelector;\n });\n }\n if(this.allowChangeIntervals && this.options.allowRunningTotals) {\n this.registerToolbarItem(\"showRunningTotals\", () => {\n this.showRunningTotalsBtn = DocumentHelper.createButton(() => {\n this.showRunningTotals = !this.showRunningTotals;\n });\n this.updateShowRunningTotalsBtn();\n return this.showRunningTotalsBtn;\n });\n }\n if(this.allowChangeIntervals && this.options.allowCompareDatePeriods) {\n this.registerToolbarItem(\"showGrouped\", () => {\n this.showGroupedBtn = DocumentHelper.createButton(() => {\n this.showGrouped = !this.showGrouped;\n });\n this.updateShowGroupedBtn();\n return this.showGroupedBtn;\n });\n }\n }\n\n private updateIntervalsModeSelector() {\n if (!!this.changeIntervalsModeSelector) {\n this.changeIntervalsModeSelector.getElementsByTagName(\n \"select\"\n )[0].value = this.intervalsMode;\n }\n }\n\n private updateAggregateDataNameSelector() {\n if (!!this.aggregateDataNameSelector) {\n this.aggregateDataNameSelector.getElementsByTagName(\n \"select\"\n )[0].value = this.aggregateDataName;\n }\n }\n\n private reset() {\n this._continuousData = undefined;\n this._cachedValues = undefined;\n this._cachedIntervals = undefined;\n }\n\n public getContinuousValue(value: any): number {\n if (this.valueType === \"date\") {\n return Date.parse(value);\n }\n return parseFloat(value);\n }\n\n public getString(value: number): string {\n if (this.valueType === \"date\") {\n return new Date(value).toLocaleDateString();\n }\n return \"\" + value;\n }\n\n private toPrecision(value: number) {\n const base = Math.pow(10, this._intervalPrecision);\n return Math.round(base * value) / base;\n }\n\n public getSelectedItemByText(itemText: string) {\n if (this.hasCustomIntervals || this.getContinuousValues().length > HistogramModel.UseIntervalsFrom) {\n const interval = this.intervals.filter(interval => interval.label === itemText)[0];\n return new ItemValue(interval, interval !== undefined ? interval.label : \"\");\n }\n const labels = this.getLabels();\n const labelIndex = labels.indexOf(itemText);\n return new ItemValue(this.getValues()[labelIndex], labels[labelIndex]);\n }\n\n /**\n * Updates visualizer data.\n */\n public updateData(data: Array<{ [index: string]: any }>) {\n this.reset();\n super.updateData(data);\n }\n\n protected onDataChanged() {\n this.reset();\n super.onDataChanged();\n }\n\n protected onSelectionChanged(item: ItemValue): void {\n if (item !== undefined && this.onDataItemSelected !== undefined) {\n if (this.valueType === \"date\") {\n const currIntervalCalueIndex = this.intervalModes.indexOf(this.intervalsMode);\n if(currIntervalCalueIndex > 0 && currIntervalCalueIndex < this.intervalModes.length - 1) {\n this.intervalsMode = this.intervalModes[currIntervalCalueIndex + 1];\n }\n }\n }\n super.onSelectionChanged(item);\n }\n\n protected getContinuousValues() {\n if (this._cachedValues === undefined) {\n const series = this.getSeriesValues();\n if (series.length === 0) {\n series.push(\"\");\n }\n this._continuousData = {};\n series.forEach(seriesValue => this._continuousData[seriesValue] = []);\n const hash = {};\n this.data.forEach(dataRow => {\n const nestedDataRows = getNestedDataRows(dataRow, this);\n nestedDataRows.forEach(nestedDataRow => {\n const answerData = nestedDataRow[this.dataNames[0]];\n if (answerData !== undefined) {\n const seriesValue = nestedDataRow[DataProvider.seriesMarkerKey] || \"\";\n // TODO: _continuousData should be sorted in order to speed-up statistics calculation in the getData function\n this._continuousData[seriesValue].push({ continuous: this.getContinuousValue(answerData), row: nestedDataRow });\n hash[answerData] = answerData;\n }\n });\n });\n this._cachedValues = Object.keys(hash).map(key => ({ original: hash[key], continuous: this.getContinuousValue(key), row: hash[key].row }));\n this._cachedValues.sort((a, b) => a.continuous - b.continuous);\n }\n return this._cachedValues;\n }\n\n protected isSupportSoftUpdateContent(): boolean {\n return false;\n }\n\n protected isSupportMissingAnswers(): boolean {\n return false;\n }\n\n protected get needUseRateValues() {\n return this.question.getType() == \"rating\" && Array.isArray(this.question[\"rateValues\"]) && this.question[\"rateValues\"].length > 0;\n }\n\n public getValues(): Array<any> {\n return this.intervals.map(interval => interval.start);\n }\n\n public getLabels(): Array<string> {\n return this.intervals.map(interval => interval.label);\n }\n\n public get hasCustomIntervals() {\n return !!this.questionOptions && Array.isArray(this.questionOptions.intervals);\n }\n\n public get intervals() {\n if (this.hasCustomIntervals) {\n return this.questionOptions.intervals;\n }\n\n if(this.question.getType() == \"rating\") {\n if (this.needUseRateValues) {\n const rateValues = this.question[\"rateValues\"] as ItemValue[];\n rateValues.sort((iv1, iv2) => iv1.value - iv2.value);\n return rateValues.map((rateValue, i) => ({\n start: rateValue.value,\n end: i < rateValues.length - 1 ? rateValues[i + 1].value : rateValue.value + 1,\n label: rateValue.text\n }));\n } else {\n const rateIntervals = [];\n for(let i = (this.question[\"rateMin\"] || 0); i <= (this.question[\"rateMax\"] || (HistogramModel.IntervalsCount - 1)); i += (this.question[\"rateStep\"] || 1)) {\n rateIntervals.push({\n start: i,\n end: i + 1,\n label: \"\" + (!!this.question[\"rateMin\"] && !!this.question[\"rateMax\"] ? i : (i + \"-\" + (i+1)))\n });\n }\n return rateIntervals;\n }\n }\n\n if (this._cachedIntervals === undefined) {\n const continuousValues = this.getContinuousValues();\n this._cachedIntervals = [];\n if (continuousValues.length) {\n let start = continuousValues[0].continuous;\n const end = continuousValues[continuousValues.length - 1].continuous;\n const intervalsMode = this.intervalsMode === \"auto\" ? getBestIntervalMode(start, end) : this.intervalsMode;\n if(intervalCalculators[intervalsMode] !== undefined) {\n this._cachedIntervals = intervalCalculators[intervalsMode](start, end);\n } else {\n const intervalsCount = HistogramModel.IntervalsCount;\n const delta = (end - start) / intervalsCount;\n for (let i = 0; i < intervalsCount; ++i) {\n const next = start + delta;\n const istart = this.toPrecision(start);\n const inext = this.toPrecision(next);\n this._cachedIntervals.push({\n start: istart,\n end: i < intervalsCount - 1 ? inext : inext + delta / 100,\n label: \"\" + this.getString(istart) + \"-\" + this.getString(inext)\n });\n start = next;\n }\n }\n }\n }\n return this._cachedIntervals;\n }\n\n public intervalModes: HistogramIntervalMode[] = [\"auto\", \"decades\", \"years\", \"quarters\", \"months\", \"days\"];\n\n private _intervalsMode: HistogramIntervalMode;\n public get intervalsMode(): HistogramIntervalMode {\n if(this.hasCustomIntervals) return \"custom\";\n return this._intervalsMode;\n }\n public set intervalsMode(val: HistogramIntervalMode) {\n if (this.allowChangeIntervals && this._intervalsMode !== val) {\n this._intervalsMode = val;\n if(!this.canShowGroupedDateSeries) {\n this._showGrouped = false;\n }\n this.updateIntervalsModeSelector();\n this.updateShowGroupedBtn();\n this.onDataChanged();\n }\n }\n\n public get allowChangeIntervals(): boolean {\n return this.valueType === \"date\" && !this.hasCustomIntervals && this.options.allowChangeIntervals === true;\n }\n\n private _showRunningTotals: boolean = false;\n public get showRunningTotals(): boolean {\n return this._showRunningTotals;\n }\n public set showRunningTotals(val: boolean) {\n this._showRunningTotals = val;\n this.updateShowRunningTotalsBtn();\n this.stateChanged(\"showRunningTotals\", val);\n this.refreshContent();\n }\n\n private updateShowRunningTotalsBtn() {\n if (!!this.showRunningTotalsBtn) {\n this.showRunningTotalsBtn.innerText = this.showRunningTotals\n ? localization.getString(\"noRunningTotals\")\n : localization.getString(\"runningTotals\");\n }\n }\n\n private _showGrouped: boolean = false;\n public get showGrouped(): boolean {\n return this._showGrouped;\n }\n public set showGrouped(val: boolean) {\n this._showGrouped = val;\n this.updateShowGroupedBtn();\n this.stateChanged(\"showGrouped\", val);\n this.refreshContent();\n }\n\n private updateShowGroupedBtn() {\n if (!!this.showGroupedBtn) {\n this.showGroupedBtn.innerText = this.showGrouped\n ? localization.getString(\"ungroupDateSeries\")\n : localization.getString(\"groupDateSeries\");\n this.showGroupedBtn.style.display = this.canShowGroupedDateSeries ? \"inline\" : \"none\";\n }\n }\n\n public get canShowGroupedDateSeries(): boolean {\n return [\"years\", \"quarters\", \"months\"].indexOf(this.intervalsMode) !== -1;\n }\n\n private _aggregateDataName: string = \"\";\n public get aggregateDataName(): string {\n return this._aggregateDataName;\n }\n public set aggregateDataName(val: string) {\n if (this._aggregateDataName !== val) {\n this._aggregateDataName = val;\n this.onDataChanged();\n }\n }\n\n public get possibleAggregateDataNames(): Array<string> {\n return this.questionOptions?.aggregateDataNames ?? [];\n }\n\n public convertFromExternalData(externalCalculatedData: any): any[] {\n return [externalCalculatedData];\n }\n\n protected getCalculatedValuesCore(): Array<any> {\n const continuousValues = this.getContinuousValues();\n return histogramStatisticsCalculator(this._continuousData, this.intervals, this, [this.aggregateDataName].filter(name => !!name));\n }\n\n public async getCalculatedValues(): Promise<Array<Object>> {\n const values = await super.getCalculatedValues();\n const result: Array<Array<number>> = JSON.parse(JSON.stringify(values));\n if(this.showRunningTotals) {\n for(let i = 0; i < result.length; i++) {\n for(let j = 1; j < result[i].length; j++) {\n result[i][j] += result[i][j - 1];\n }\n }\n }\n return result;\n }\n\n private async getGroupedDateAnswersData(): Promise<IAnswersData> {\n let datasets = (await this.getCalculatedValues()) as number[][];\n let colors = this.getColors();\n let labels = this.getLabels();\n let seriesLabels = this.getSeriesLabels();\n\n const intervals = [].concat(this.intervals);\n const start = new Date(intervals[0].start);\n const end = new Date(intervals[intervals.length - 1].end);\n const startYear = start.getFullYear();\n const endYear = end.getFullYear();\n if(this.intervalsMode === \"years\") {\n seriesLabels = [];\n const groupedDatasets = [];\n for(let year = Math.floor(startYear / 10) * 10; year <= endYear; year += 10) {\n seriesLabels.push(year.toString() + \"s\");\n groupedDatasets.push(new Array(10).fill(0));\n }\n for(let i = 0; i < intervals.length; i++) {\n const interval = intervals[i];\n const intervalDate = new Date(interval.start);\n const decade = Math.floor(intervalDate.getFullYear() / 10) * 10;\n const yearInDecade = intervalDate.getFullYear() - decade;\n const decadeIndex = Math.floor((decade - Math.floor(startYear / 10) * 10) / 10);\n groupedDatasets[decadeIndex][yearInDecade] = datasets[0][i];\n }\n datasets = groupedDatasets;\n labels = [\"0\", \"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\"];\n } else if(this.intervalsMode === \"quarters\") {\n seriesLabels = [];\n const groupedDatasets = [];\n for(let year = startYear; year <= endYear; year++) {\n seriesLabels.push(year.toString());\n groupedDatasets.push(new Array(4).fill(0));\n }\n for(let i = 0; i < intervals.length; i++) {\n const interval = intervals[i];\n const intervalDate = new Date(interval.start);\n const quarter = Math.floor(intervalDate.getMonth() / 3);\n const year = intervalDate.getFullYear();\n const yearIndex = year - startYear;\n groupedDatasets[yearIndex][quarter] = datasets[0][i];\n }\n datasets = groupedDatasets;\n labels = [\"I\", \"II\", \"III\", \"IV\"];\n } else if(this.intervalsMode === \"months\") {\n seriesLabels = [];\n const groupedDatasets = [];\n for(let year = startYear; year <= endYear; year++) {\n seriesLabels.push(year.toString());\n groupedDatasets.push(new Array(12).fill(0));\n }\n for(let i = 0; i < intervals.length; i++) {\n const interval = intervals[i];\n const intervalDate = new Date(interval.start);\n const month = intervalDate.getMonth();\n const year = intervalDate.getFullYear();\n const yearIndex = year - startYear;\n groupedDatasets[yearIndex][month] = datasets[0][i];\n }\n datasets = groupedDatasets;\n labels = [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"];\n }\n\n let texts = datasets;\n return {\n datasets,\n labels,\n colors,\n texts,\n seriesLabels,\n };\n }\n\n /**\n * Returns object with all infotmation for data visualization: datasets, labels, colors, additional texts (percentage).\n */\n public async getAnswersData(): Promise<IAnswersData> {\n if(!this.showGrouped) {\n return super.getAnswersData();\n }\n\n const answersData = await this.getGroupedDateAnswersData();\n\n const continuousValues = this.getContinuousValues();\n if (continuousValues.length) {\n let start = continuousValues[0].continuous;\n const end = continuousValues[continuousValues.length - 1].continuous;\n const intervalsMode = this.intervalsMode === \"auto\" ? getBestIntervalMode(start, end) : this.intervalsMode;\n if(intervalsMode === \"years\" && this.showGrouped) {\n answersData.labelsTitle = localization.getString(\"groupedYearsAxisTitle\");\n }\n }\n\n this.onAnswersDataReady.fire(this, answersData);\n\n return answersData;\n }\n\n public getValueType(): \"date\" | \"number\" {\n return this.valueType;\n }\n}\n\nVisualizationManager.registerVisualizer(\"date\", HistogramModel);\nVisualizationManager.registerVisualizer(\"number\", HistogramModel, 100);\nVisualizationManager.registerVisualizer(\"rating\", HistogramModel, 300);\n","function getIconsData(path) {\r\n const icons: { [index: string]: string } = {};\r\n path.keys().forEach((key: string) => {\r\n icons[key.substring(2, key.length - 4).toLowerCase()] = path(key);\r\n });\r\n return icons;\r\n}\r\n\r\nexport default getIconsData((<any>require).context(\"./images\", true, /\\.svg$/));","var map = {\n\t\"./detail.svg\": \"./src/images/detail.svg\",\n\t\"./drag.svg\": \"./src/images/drag.svg\",\n\t\"./hide.svg\": \"./src/images/hide.svg\",\n\t\"./makeprivate.svg\": \"./src/images/makeprivate.svg\",\n\t\"./makepublic.svg\": \"./src/images/makepublic.svg\",\n\t\"./moveToDetails.svg\": \"./src/images/moveToDetails.svg\",\n\t\"./nonCommercial.svg\": \"./src/images/nonCommercial.svg\",\n\t\"./sorting.svg\": \"./src/images/sorting.svg\"\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = \"./src/images sync recursive \\\\.svg$\";","module.exports = \"<svg version=\\\"1.1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 16 16\\\"><g><circle cx=\\\"1.5\\\" cy=\\\"8.5\\\" r=\\\"1.5\\\"></circle><circle cx=\\\"7.5\\\" cy=\\\"8.5\\\" r=\\\"1.5\\\"></circle><circle cx=\\\"13.5\\\" cy=\\\"8.5\\\" r=\\\"1.5\\\"></circle></g></svg>\"","module.exports = \"<svg version=\\\"1.1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 16 16\\\"><g><polygon points=\\\"13,5 12,6 13,7 9,7 9,3 10,4 11,3 8,0 5,3 6,4 7,3 7,7 3,7 4,6 3,5 0,8 3,11 4,10 3,9 7,9 7,13 6,12 5,13 8,16 11,13 10,12 9,13 9,9 13,9 12,10 13,11 16,8 \\\"></polygon></g></svg>\"","module.exports = \"<svg version=\\\"1.1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 16 16\\\"><g><path d=\\\"M12.79,4.2L16,1l-1-1l-3.32,3.32C10.57,2.55,9.32,2,8,2C3.63,2,0,7.97,0,7.97s1.27,2.1,3.21,3.82l-3.23,3.23 L0.96,16l3.35-3.34C5.41,13.44,6.67,14,8,14c4.37,0,8-6,8-6S14.73,5.91,12.79,4.2z M2,7.97c1.07-1.47,3.61-4,6-4 c0.8,0,1.6,0.27,2.35,0.68L9.57,5.43C9.11,5.14,8.58,4.97,8,4.97c-1.66,0-3,1.34-3,3c0,0.58,0.17,1.11,0.46,1.57l-0.97,0.97 C3.36,9.64,2.45,8.59,2,7.97z M8,11.97c-0.8,0-1.59-0.27-2.33-0.67l0.78-0.77C6.9,10.8,7.43,10.97,8,10.97c1.66,0,3-1.34,3-3 c0-0.57-0.17-1.09-0.44-1.55l0.98-0.98c1.11,0.87,2.01,1.91,2.46,2.52C12.93,9.44,10.39,11.97,8,11.97z\\\"></path></g></svg>\"","module.exports = \"<svg version=\\\"1.1\\\" id=\\\"Layer_1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\" x=\\\"0px\\\" y=\\\"0px\\\" viewBox=\\\"0 0 16 16\\\" style=\\\"enable-background:new 0 0 16 16;\\\" xml:space=\\\"preserve\\\"><g><circle cx=\\\"8\\\" cy=\\\"4\\\" r=\\\"3\\\"></circle><path d=\\\"M8,8c-3.31,0-6,2.73-6,4.67S5.27,15,8,15s6-0.4,6-2.33S11.31,8,8,8z\\\"></path></g></svg>\"","module.exports = \"<svg version=\\\"1.1\\\" id=\\\"Layer_1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\" x=\\\"0px\\\" y=\\\"0px\\\" viewBox=\\\"0 0 16 16\\\" style=\\\"enable-background:new 0 0 16 16;\\\" xml:space=\\\"preserve\\\"><g><circle cx=\\\"6\\\" cy=\\\"5\\\" r=\\\"3\\\"></circle><path d=\\\"M10,5c0,0.34-0.06,0.67-0.14,0.99C9.91,5.99,9.95,6,10,6c1.66,0,3-1.34,3-3s-1.34-3-3-3 C8.97,0,8.07,0.52,7.53,1.3C8.98,1.91,10,3.33,10,5z\\\"></path><path d=\\\"M6,9c-3.31,0-6,2.73-6,4.67S3.27,16,6,16s6-0.4,6-2.33S9.31,9,6,9z\\\"></path><path d=\\\"M10,7C9.81,7,9.62,7.01,9.43,7.03C9.09,7.6,8.62,8.07,8.06,8.42c3,0.83,5.23,3.31,5.42,5.28 c1.44-0.31,2.52-0.92,2.52-2.03C16,9.74,13.31,7,10,7z\\\"></path></g></svg>\"","module.exports = \"<svg version=\\\"1.1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 16 16\\\"><g><circle cx=\\\"1.5\\\" cy=\\\"14.5\\\" r=\\\"1.5\\\"></circle><circle cx=\\\"7.5\\\" cy=\\\"14.5\\\" r=\\\"1.5\\\"></circle><circle cx=\\\"13.5\\\" cy=\\\"14.5\\\" r=\\\"1.5\\\"></circle><rect x=\\\"12\\\" y=\\\"1\\\" width=\\\"3\\\" height=\\\"9\\\"></rect><path d=\\\"M2.02,7.02L1,6L0,7l3,3l3-3L5,6L4.06,6.94C4.33,4.73,6.21,3,8.5,3C8.67,3,8.83,3.03,9,3.05V1.03 C8.83,1.01,8.67,1,8.5,1C5.08,1,2.27,3.66,2.02,7.02z\\\"></path></g></svg>\"","module.exports = \"<svg version=\\\"1.1\\\" id=\\\"Layer_1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\" x=\\\"0px\\\" y=\\\"0px\\\" viewBox=\\\"0 0 16 16\\\" style=\\\"enable-background:new 0 0 16 16;\\\" xml:space=\\\"preserve\\\"><path d=\\\"M8,0L0,15h16L8,0z M9,13H7v-2h2V13z M7,10V5h2v5H7z\\\"></path></svg>\"","module.exports = \"<svg version=\\\"1.1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 16 16\\\"><g><polygon points=\\\"8,3 10,5 11,4 8,1 5,4 6,5 \\\"></polygon><polygon points=\\\"8,13 6,11 5,12 8,15 11,12 10,11\\\"></polygon></g></svg>\"","import Muuri from \"muuri\";\r\n\r\n/**\r\n * A base class used to implement custom layout engines or integrate third-party layout engines with SurveyJS Dashboard.\r\n */\r\nexport class LayoutEngine {\r\n constructor(protected _allowed: boolean) { }\r\n\r\n protected startCore(container: HTMLElement) { }\r\n protected stopCore() { }\r\n protected updateCore() { }\r\n\r\n get allowed() {\r\n return this._allowed;\r\n }\r\n\r\n /**\r\n * Enables the dynamic layout in a given HTML element.\r\n *\r\n * This method should arrange visualization items based on the available screen space and allow users to reorder them via drag and drop.\r\n */\r\n start(container: HTMLElement) {\r\n if (this._allowed) {\r\n this.startCore(container);\r\n }\r\n }\r\n /**\r\n * Disables the dynamic layout.\r\n */\r\n stop() {\r\n if (this._allowed) {\r\n this.stopCore();\r\n }\r\n }\r\n /**\r\n * Updates the dynamic layout.\r\n */\r\n update() {\r\n if (this._allowed) {\r\n this.updateCore();\r\n }\r\n }\r\n\r\n add(elements: Array<HTMLElement>, options?: any) { }\r\n remove(elements: Array<HTMLElement>, options?: any) { }\r\n\r\n onMoveCallback: (order: Array<string>) => void;\r\n\r\n destroy() {\r\n this.stop();\r\n }\r\n}\r\n\r\nexport class MuuriLayoutEngine extends LayoutEngine {\r\n private _muuri: any = undefined;\r\n private _layoutingTimer: any = undefined;\r\n\r\n constructor(allowed: boolean, private _selector: string, private dragEnabled = true) {\r\n super(allowed);\r\n }\r\n\r\n protected startCore(container: HTMLElement) {\r\n this._muuri = new Muuri(container, {\r\n dragStartPredicate: {\r\n handle: \".sa-question__title--draggable\",\r\n },\r\n items: this._selector,\r\n dragEnabled: this.dragEnabled,\r\n });\r\n this._muuri.on(\r\n \"dragReleaseEnd\",\r\n (item: any) => {\r\n const newOrder = item.getGrid().getItems().map(gridItem => gridItem.getElement().dataset.question);\r\n this.onMoveCallback && this.onMoveCallback(newOrder);\r\n }\r\n );\r\n }\r\n protected stopCore() {\r\n this._muuri.off(\"dragReleaseEnd\");\r\n this._muuri.destroy();\r\n this._muuri = undefined;\r\n }\r\n protected updateCore() {\r\n if(!this._muuri) return;\r\n if (this._layoutingTimer !== undefined) {\r\n clearTimeout(this._layoutingTimer);\r\n }\r\n this._layoutingTimer = setTimeout(() => {\r\n this._layoutingTimer = undefined;\r\n if(!this._muuri) return;\r\n this._muuri.refreshItems();\r\n this._muuri.layout();\r\n }, 10);\r\n }\r\n\r\n add(elements: Array<HTMLElement>, options?: any) {\r\n if (this._allowed) this._muuri.add(elements, options);\r\n }\r\n remove(elements: Array<HTMLElement>, options?: any) {\r\n if (this._allowed) this._muuri.remove(elements, options);\r\n }\r\n}\r\n","import { englishStrings } from \"./analytics-localization/english\";\nimport { surveyLocalization } from \"survey-core\";\n\nexport var localization = {\n currentLocaleValue: \"\",\n defaultLocaleValue: \"en\",\n locales: <{ [index: string]: any }>{},\n localeNames: <{ [index: string]: any }>{},\n supportedLocales: <Array<any>>[],\n get currentLocale() {\n return this.currentLocaleValue === this.defaultLocaleValue\n ? \"\"\n : this.currentLocaleValue;\n },\n set currentLocale(val: string) {\n this.currentLocaleValue = val;\n },\n get defaultLocale() {\n return this.defaultLocaleValue;\n },\n set defaultLocale(val: string) {\n this.defaultLocaleValue = val;\n },\n setupLocale: function (loc: string, strings: any) {\n this.locales[loc] = strings;\n },\n getLocaleName: function (loc: string, inEnglish: boolean = false): string {\n const res = !inEnglish ? this.localeNames[loc] : \"\";\n return res || surveyLocalization.getLocaleName(loc, inEnglish);\n },\n getString: function (strName: string) {\n var loc = this.currentLocale\n ? this.locales[this.currentLocale]\n : this.locales[this.defaultLocale];\n if (!loc || !loc[strName]) loc = this.locales[this.defaultLocale];\n var result = loc[strName];\n if (result === undefined) {\n result = this.locales[\"en\"][strName] || strName;\n }\n return result;\n },\n getLocales: function (): Array<string> {\n var res = [];\n res.push(\"\");\n if (this.supportedLocales && this.supportedLocales.length > 0) {\n for (var i = 0; i < this.supportedLocales.length; i++) {\n res.push(this.supportedLocales[i]);\n }\n } else {\n for (var key in this.locales) {\n res.push(key);\n }\n }\n res.sort();\n return res;\n }\n};\n\nexport var surveyStrings = englishStrings;\nexport function setupLocale(localeConfig: { localeCode: string, strings: any, nativeName?: string }): void {\n const loc = localeConfig.localeCode;\n localization.setupLocale(loc, localeConfig.strings);\n if (localeConfig.nativeName) {\n localization.localeNames[loc] = localeConfig.nativeName;\n }\n}\nsetupLocale({ localeCode: \"en\", strings: englishStrings, nativeName: \"English\" });","import { ItemValue, QuestionMatrixModel, Question } from \"survey-core\";\nimport { IAnswersData, SelectBase } from \"./selectBase\";\nimport { VisualizationManager } from \"./visualizationManager\";\n\nexport class Matrix extends SelectBase {\n constructor(\n question: Question,\n data: Array<{ [index: string]: any }>,\n options?: Object,\n name?: string\n ) {\n super(question, data, options, name || \"matrix\");\n this._transposeData = true;\n // this.getAnswersData();\n }\n\n protected get matrixQuestion(): QuestionMatrixModel {\n return <QuestionMatrixModel>this.question;\n }\n\n protected isSupportMissingAnswers(): boolean {\n return false;\n }\n\n getSeriesValues(): Array<string> {\n return this.matrixQuestion.rows.map((row: ItemValue) => \"\" + row.value);\n }\n\n getSeriesLabels(): Array<string> {\n return this.matrixQuestion.rows.map((row: ItemValue) =>\n ItemValue.getTextOrHtmlByValue(this.matrixQuestion.rows, row.value)\n );\n }\n\n public getSelectedItemByText(itemText: string) {\n return this.matrixQuestion.columns.filter(\n (column: ItemValue) => column.text === itemText\n )[0];\n }\n\n valuesSource(): Array<ItemValue> {\n return this.matrixQuestion.columns;\n }\n\n private getHasAnswersInAllSeriesArray(\n datasets: Array<Array<any>>\n ): Array<boolean> {\n let result: Array<boolean> = Array<boolean>();\n for (let i = 0; i < datasets[0].length; i++) {\n for (let j = 0; j < datasets.length; j++) {\n if (datasets[j][i] != 0) {\n result[i] = true;\n }\n }\n }\n return result;\n }\n\n private getHasAnswersInSeries(dataset: Array<any>) {\n for (let i = 0; i < dataset.length; i++) {\n if (dataset[i] != 0) {\n return true;\n }\n }\n return false;\n }\n\n protected hideEmptyAnswersInData(answersData: IAnswersData): IAnswersData {\n const result: IAnswersData = {\n datasets: <Array<Array<any>>>[],\n labels: <Array<string>>[],\n colors: <Array<string>>[],\n texts: <Array<Array<any>>>[],\n seriesLabels: <Array<string>>[],\n };\n\n const hasAnswersInAllSeriesArr = this.getHasAnswersInAllSeriesArray(\n answersData.datasets\n );\n for (let i = 0; i < answersData.datasets.length; i++) {\n const hasAnswersInSeries = this.getHasAnswersInSeries(\n answersData.datasets[i]\n );\n if (hasAnswersInSeries) {\n result.labels.push(answersData.labels[i]);\n result.colors.push(answersData.colors[i]);\n } else {\n continue;\n }\n const datasets = [];\n const texts = [];\n for (let j = 0; j < answersData.datasets[0].length; j++) {\n if (hasAnswersInAllSeriesArr[j]) {\n datasets.push(answersData.datasets[i][j]);\n texts.push(answersData.texts[i][j]);\n }\n }\n result.datasets.push(datasets);\n result.texts.push(texts);\n }\n for (let i = 0; i < answersData.datasets[0].length; i++) {\n if (hasAnswersInAllSeriesArr[i]) {\n result.seriesLabels.push(answersData.seriesLabels[i]);\n }\n }\n return result;\n }\n\n}\n\nVisualizationManager.registerVisualizer(\"matrix\", Matrix);","import { ItemValue, QuestionMatrixDropdownModel, Question, MatrixDropdownColumn, MatrixDropdownRowModelBase } from \"survey-core\";\nimport { IAnswersData, SelectBase } from \"./selectBase\";\nimport { defaultStatisticsCalculator } from \"./statisticCalculators\";\nimport { VisualizationManager } from \"./visualizationManager\";\n\nexport class MatrixDropdownGrouped extends SelectBase {\n constructor(\n question: Question,\n data: Array<{ [index: string]: any }>,\n options?: Object,\n name?: string\n ) {\n super(question, data, options, name || \"matrixDropdownGrouped\");\n }\n\n protected get matrixQuestion(): QuestionMatrixDropdownModel {\n return <QuestionMatrixDropdownModel>this.question;\n }\n\n get dataNames(): Array<string> {\n return this.matrixQuestion.columns.map(column => column.name);\n }\n\n getSeriesValues(): Array<string> {\n return this.matrixQuestion.columns.map((column: MatrixDropdownColumn) => column.name);\n }\n\n getSeriesLabels(): Array<string> {\n return this.matrixQuestion.columns.map((column: MatrixDropdownColumn) => column.title);\n }\n\n // public getSelectedItemByText(itemText: string) {\n // return this.matrixQuestion.columns.filter(\n // (column: ItemValue) => column.text === itemText\n // )[0];\n // }\n\n valuesSource(): Array<ItemValue> {\n return this.matrixQuestion.choices;\n }\n\n protected isSupportMissingAnswers(): boolean {\n return false;\n }\n\n protected getCalculatedValuesCore(): Array<any> {\n const values = this.getValues();\n const series = this.getSeriesValues();\n const rows = this.matrixQuestion.rows.map(row => row.value);\n\n const statistics = defaultStatisticsCalculator(this.surveyData, {\n name: this.name,\n dataNames: series,\n dataPath: this.dataPath,\n getValues: () => values,\n getLabels: () => values,\n getSeriesValues: () => rows,\n getSeriesLabels: () => rows,\n });\n\n return statistics.map(s => s[0]);\n }\n}\n\nVisualizationManager.registerVisualizer(\"matrixdropdown-grouped\", MatrixDropdownGrouped);","// extracted by mini-css-extract-plugin\nexport {};","import { Question, Event } from \"survey-core\";\nimport { VisualizerBase } from \"./visualizerBase\";\nimport { VisualizationManager } from \"./visualizationManager\";\nimport { DocumentHelper, toPrecision } from \"./utils\";\nimport { localization } from \"./localizationManager\";\n\nimport \"./nps.scss\";\n\nexport class NpsVisualizerWidget {\n private _renderedTarget: HTMLDivElement = undefined;\n\n constructor(private _model: NpsVisualizer, private _data: { detractors: number, passive: number, promoters: number, total: number }) {\n }\n\n private renderScorePart(partId: string, value: number, percent?: number) {\n const scorePartElement = DocumentHelper.createElement(\"div\", \"sa-visualizer-nps__score-part\");\n const titleElement = DocumentHelper.createElement(\"div\", \"sa-visualizer-nps__score-part-title\");\n titleElement.innerText = localization.getString(partId);\n scorePartElement.appendChild(titleElement);\n const valuesElement = DocumentHelper.createElement(\"div\", \"sa-visualizer-nps__score-part-values\");\n scorePartElement.appendChild(valuesElement);\n const valueElement = DocumentHelper.createElement(\"div\", \"sa-visualizer-nps__score-part-value\");\n valueElement.innerText = \"\" + value;\n valuesElement.appendChild(valueElement);\n if(percent) {\n const percentElement = DocumentHelper.createElement(\"div\", \"sa-visualizer-nps__score-part-percent\");\n percentElement.innerText = \"\" + percent + \"%\";\n valuesElement.appendChild(percentElement);\n }\n return scorePartElement;\n }\n public render(target: HTMLDivElement): void {\n this._renderedTarget = target;\n var npsElement = DocumentHelper.createElement(\"div\", \"sa-visualizer-nps\");\n npsElement.appendChild(this.renderScorePart(\"npsScore\", this.npsScore));\n npsElement.appendChild(this.renderScorePart(\"npsPromoters\", this._data.promoters, this.promotersPercent));\n npsElement.appendChild(this.renderScorePart(\"npsPassives\", this._data.total - this._data.promoters - this._data.detractors, this.passivePercent));\n npsElement.appendChild(this.renderScorePart(\"npsDetractors\", this._data.detractors, this.detractorsPercent));\n target.appendChild(npsElement);\n }\n public get npsScore(): number {\n return toPrecision(((this._data.promoters - this._data.detractors) / this._data.total) * 100, this._model.precision);\n }\n public get promotersPercent(): number {\n return toPrecision(this._data.promoters / this._data.total * 100, this._model.precision);\n }\n public get passivePercent(): number {\n return toPrecision((this._data.total - this._data.promoters - this._data.detractors) / this._data.total * 100, this._model.precision);\n }\n public get detractorsPercent(): number {\n return toPrecision(this._data.detractors / this._data.total * 100, this._model.precision);\n }\n public dispose(): void {\n if(!!this._renderedTarget) {\n this._renderedTarget.innerHTML = \"\";\n this._renderedTarget = undefined;\n }\n }\n}\n\nexport class NpsAdapter {\n private _npsVisualizer: any;\n\n constructor(private model: NpsVisualizer) {}\n\n public get npsVisualizer(): any {\n return this._npsVisualizer;\n }\n\n public async create(element: HTMLElement) {\n const data = await this.model.getCalculatedValues();\n this._npsVisualizer = new NpsVisualizerWidget(this.model, data as any);\n this._npsVisualizer.render(element);\n return this._npsVisualizer;\n }\n\n public destroy(node: HTMLElement): void {\n if(this._npsVisualizer && typeof this._npsVisualizer.dispose === \"function\") {\n this._npsVisualizer.dispose();\n }\n this._npsVisualizer = undefined;\n }\n}\n\nexport class NpsVisualizer extends VisualizerBase {\n public static DetractorScore = 6;\n public static PromoterScore = 9;\n public precision = 2;\n private _npsAdapter: NpsAdapter;\n\n constructor(\n question: Question,\n data: Array<{ [index: string]: any }>,\n options?: Object,\n name?: string\n ) {\n super(question, data, options, name || \"nps\");\n this._npsAdapter = new NpsAdapter(this);\n }\n\n protected getCalculatedValuesCore(): any {\n let result = {\n detractors: 0,\n passive: 0,\n promoters: 0,\n total: 0,\n };\n\n this.data.forEach((row) => {\n const rowValue: any = row[this.question.name];\n const scoreValue = parseInt(rowValue);\n if (!Number.isNaN(scoreValue)) {\n if(scoreValue <= NpsVisualizer.DetractorScore) {\n result.detractors++;\n } else if(scoreValue >= NpsVisualizer.PromoterScore) {\n result.promoters++;\n } else {\n result.passive++;\n }\n result.total++;\n }\n });\n\n return result;\n }\n\n protected destroyContent(container: HTMLElement) {\n this._npsAdapter.destroy(container);\n super.destroyContent(container);\n }\n\n protected async renderContentAsync(container: HTMLElement) {\n const npsNode: HTMLElement = DocumentHelper.createElement(\"div\");\n container.appendChild(npsNode);\n await this._npsAdapter.create(npsNode);\n container.innerHTML = \"\";\n container.appendChild(npsNode);\n return container;\n }\n\n destroy() {\n this._npsAdapter.destroy(this.contentContainer);\n super.destroy();\n }\n}\n\n// VisualizationManager.registerVisualizer(\"rating\", NpsVisualizer);\n","import { Question } from \"survey-core\";\nimport { VisualizerBase } from \"./visualizerBase\";\nimport { localization } from \"./localizationManager\";\nimport { DocumentHelper } from \"./utils/index\";\nimport { VisualizationManager } from \"./visualizationManager\";\nimport { mathStatisticsCalculator } from \"./statisticCalculators\";\n\nexport class NumberModel extends VisualizerBase {\n private _resultAverage: number;\n private _resultMin: number;\n private _resultMax: number;\n\n public static stepsCount = 5;\n public static generateTextsCallback: (\n question: Question,\n maxValue: number,\n minValue: number,\n stepsCount: number,\n texts: string[]\n ) => string[];\n\n protected chartTypes: Array<string>;\n chartType: String;\n\n public static showAsPercentage = false;\n\n constructor(\n question: Question,\n data: Array<{ [index: string]: any }>,\n options: { [index: string]: any } = {},\n name?: string\n ) {\n super(question, data, options, name || \"number\");\n\n if (VisualizerBase.chartAdapterType) {\n this._chartAdapter = new VisualizerBase.chartAdapterType(this);\n this.chartTypes = this._chartAdapter.getChartTypes();\n this.chartType = this.chartTypes[0];\n }\n\n if(this.options.allowChangeVisualizerType !== false) {\n this.registerToolbarItem(\"changeChartType\", () => {\n if (this.chartTypes.length > 1) {\n return DocumentHelper.createSelector(\n this.chartTypes.map((chartType) => {\n return {\n value: chartType,\n text: localization.getString(\"chartType_\" + chartType),\n };\n }),\n (option: any) => this.chartType === option.value,\n (e: any) => {\n this.setChartType(e.target.value);\n }\n );\n }\n return null;\n });\n }\n }\n\n protected onDataChanged() {\n this._resultAverage = undefined;\n this._resultMin = undefined;\n this._resultMax = undefined;\n super.onDataChanged();\n }\n\n protected onChartTypeChanged() {}\n\n protected setChartType(chartType: string) {\n if (\n this.chartTypes.indexOf(chartType) !== -1 &&\n this.chartType !== chartType\n ) {\n this.chartType = chartType;\n this.onChartTypeChanged();\n if (!!this.contentContainer) {\n this.destroyContent(this.contentContainer);\n this.renderContent(this.contentContainer);\n }\n this.invokeOnUpdate();\n }\n }\n\n destroy(): void {\n this._resultAverage = undefined;\n this._resultMin = undefined;\n this._resultMax = undefined;\n super.destroy();\n }\n\n generateText(maxValue: number, minValue: number, stepsCount: number): string[] {\n let texts: any = [];\n\n if (stepsCount === 5) {\n texts = [\n \"very high (\" + maxValue + \")\",\n \"high\",\n \"medium\",\n \"low\",\n \"very low (\" + minValue + \")\",\n ];\n } else {\n texts.push(maxValue);\n for (let i = 0; i < stepsCount - 2; i++) {\n texts.push(\"\");\n }\n texts.push(minValue);\n }\n\n if (!!NumberModel.generateTextsCallback) {\n return NumberModel.generateTextsCallback(\n this.question,\n maxValue,\n minValue,\n stepsCount,\n texts\n );\n }\n\n return texts;\n }\n\n generateValues(maxValue: number, stepsCount: number): number[] {\n const values = [];\n for (let i = 0; i < stepsCount; i++) {\n values.push(maxValue / stepsCount);\n }\n values.push(maxValue);\n return values;\n }\n\n generateColors(maxValue: number, minValue: number, stepsCount: number): string[] {\n const palette = this.getColors();\n const colors = [];\n for (let i = 0; i < stepsCount; i++) {\n colors.push(palette[i]);\n }\n colors.push(\"rgba(255, 255, 255, 0)\");\n return colors;\n }\n\n public convertFromExternalData(externalCalculatedData: any): any[] {\n return [externalCalculatedData.value || 0, externalCalculatedData.minValue || 0, externalCalculatedData.maxValue || 0];\n }\n\n protected getCalculatedValuesCore(): Array<any> {\n if (this._resultAverage === undefined ||\n this._resultMin === undefined ||\n this._resultMax === undefined) {\n [this._resultAverage, this._resultMin, this._resultMax] = mathStatisticsCalculator(this.surveyData, this);\n }\n return [this._resultAverage, this._resultMin, this._resultMax];\n }\n\n}\n\nVisualizationManager.registerVisualizer(\"number\", NumberModel, 200);\nVisualizationManager.registerVisualizer(\"rating\", NumberModel, 200);\nVisualizationManager.registerVisualizer(\"expression\", NumberModel);","import { ItemValue, Question } from \"survey-core\";\nimport { SelectBase } from \"./selectBase\";\nimport { createCommercialLicenseLink, DocumentHelper } from \"./utils\";\nimport { VisualizerBase } from \"./visualizerBase\";\nimport { localization } from \"./localizationManager\";\nimport { VisualizationManager } from \"./visualizationManager\";\n\nexport class PivotModel extends SelectBase {\n protected valueType: \"enum\" | \"date\" | \"number\" = \"enum\";\n private _cachedValues: Array<{ original: any, continuous: number, row: any }> = undefined;\n private _continuousData: Array<{ continuous: number, row: any }> = undefined;\n private _cachedIntervals: Array<{ start: number, end: number, label: string }> = undefined;\n private _intervalPrecision: number = 2;\n\n private axisXSelector: HTMLDivElement;\n public axisXQuestionName: string;\n private axisYSelectors: Array<HTMLDivElement> = [];\n public axisYQuestionNames: Array<string> = [];\n private questionsY: Array<VisualizerBase> = [];\n\n public static IntervalsCount = 10;\n public static UseIntervalsFrom = 10;\n\n constructor(\n private questions: Array<Question>,\n data: Array<{ [index: string]: any }>,\n options?: Object,\n name?: string,\n private isRoot = true\n ) {\n super(null, data, options, name || \"pivot\");\n this.questions = this.questions.filter((question) => [\"matrixdropdown\", \"matrixdynamic\", \"matrix\", \"file\", \"signature\", \"multipletext\", \"comment\", \"html\", \"image\"].indexOf(question.getType()) === -1);\n if (this.options.intervalPrecision !== undefined) {\n this._intervalPrecision = this.options.intervalPrecision;\n }\n\n this.axisXQuestionName = this.questions.length > 0 ? this.questions[0].name : undefined;\n this.registerToolbarItem(\"axisXSelector\", () =>\n this.axisXSelector = DocumentHelper.createSelector(\n this.questions.map((question) => {\n return {\n value: question.name,\n text: question.title || question.name,\n };\n }),\n (option: any) => this.axisXQuestionName === option.value,\n (e: any) => {\n this.axisXQuestionName = e.target.value;\n this.updateQuestionsSelection();\n this.updateToolbar();\n this.setupPivot();\n },\n () => this.isXYChart() ? localization.getString(\"axisXSelectorTitle\") : localization.getString(\"axisXAlternativeSelectorTitle\")\n )\n );\n this.registerToolbarItem(\"axisYSelector0\", this.createYSelecterGenerator());\n this.setupPivot();\n }\n\n private createYSelecterGenerator(): () => HTMLDivElement {\n const selectorIndex: number = this.axisYSelectors.length;\n return () => {\n let selector = this.axisYSelectors[selectorIndex];\n if(!selector) {\n selector = this.createAxisYSelector(selectorIndex);\n this.axisYSelectors.push(selector);\n } else {\n selector[\"__updateSelect\"] && selector[\"__updateSelect\"]();\n }\n return selector;\n };\n }\n\n public setAxisQuestions(...axisQuestionNames: string[]): void {\n if(axisQuestionNames.length < 1) {\n return;\n }\n this.axisXQuestionName = axisQuestionNames[0];\n this.axisYQuestionNames = axisQuestionNames.splice(1);\n this.setupPivot();\n }\n\n public onAxisYSelectorChanged(index: number, value: any): void {\n this.axisYQuestionNames[index] = value;\n\n if (index < this.axisYSelectors.length - 1) {\n if(!value) {\n for(let i = index + 1; i < this.axisYSelectors.length; ++i) {\n this.unregisterToolbarItem(\"axisYSelector\" + i);\n }\n this.axisYSelectors = this.axisYSelectors.slice(0, index + 1);\n this.axisYQuestionNames = this.axisYQuestionNames.slice(0, index + 1);\n }\n } else {\n if(!!value) {\n this.registerToolbarItem(\"axisYSelector\" + this.axisYSelectors.length, this.createYSelecterGenerator());\n }\n }\n\n this.updateQuestionsSelection();\n this.updateToolbar();\n this.setupPivot();\n }\n\n protected updateQuestionsSelection() {\n const selectedQuestions = [this.axisXQuestionName];\n for(let i = 0; i < this.axisYQuestionNames.length; ++i) {\n const questionName = this.axisYQuestionNames[i];\n if (selectedQuestions.indexOf(questionName) !== -1) {\n this.onAxisYSelectorChanged(i, undefined);\n break;\n } else {\n selectedQuestions.push(questionName);\n }\n }\n }\n\n private createAxisYSelector(selectorIndex: number): HTMLDivElement {\n const getChoices = () => {\n const choices = this.questions.filter(q => {\n if(q.name === this.axisXQuestionName) {\n return false;\n }\n const usedIndex = this.axisYQuestionNames.indexOf(q.name);\n return usedIndex == -1 || usedIndex >= selectorIndex;\n }).map((question) => {\n return {\n value: question.name,\n text: question.title || question.name,\n };\n });\n return [{ value: \"\", text: localization.getString(\"notSelected\") }].concat(choices);\n };\n if(getChoices().length == 1) {\n return undefined;\n }\n const selector = DocumentHelper.createSelector(\n getChoices,\n (option: any) => this.axisYQuestionNames[selectorIndex] === option.value,\n (e: any) => { this.onAxisYSelectorChanged(selectorIndex, e.target.value); },\n () => selectorIndex ? undefined : (this.isXYChart() ? localization.getString(\"axisYSelectorTitle\") : localization.getString(\"axisYAlternativeSelectorTitle\"))\n );\n return selector;\n }\n\n protected setChartType(chartType: string) {\n const prev2Dchart = this.isXYChart();\n super.setChartType(chartType);\n if (prev2Dchart !== this.isXYChart()) {\n this.updateToolbar();\n }\n }\n\n private isXYChart() {\n return [\"pie\", \"doughnut\"].indexOf(this.chartType) === -1;\n }\n\n public getQuestionValueType(question: Question): \"enum\" | \"date\" | \"number\" {\n const questionType = question.getType();\n if (questionType === \"text\" && (question[\"inputType\"] === \"date\" || question[\"inputType\"] === \"datetime\")) {\n return \"date\";\n } else if(questionType === \"text\" || questionType === \"rating\" || questionType === \"expression\" || questionType === \"range\") {\n return \"number\";\n }\n return \"enum\";\n }\n\n private setupPivot() {\n const questionX = this.questions.filter((q) => q.name === this.axisXQuestionName)[0];\n if(!questionX) {\n return;\n }\n this.question = questionX;\n this.valueType = this.getQuestionValueType(questionX);\n\n this.questionsY = this.axisYQuestionNames.map((name) => {\n const questionY = this.questions.filter((q) => q.name === name)[0];\n if(!!questionY) {\n return this.getQuestionValueType(questionY) === \"enum\" ? new SelectBase(questionY, []) : new VisualizerBase(questionY, []);\n }\n }).filter((q) => !!q);\n\n this.onDataChanged();\n }\n\n private reset() {\n this._continuousData = undefined;\n this._cachedValues = undefined;\n this._cachedIntervals = undefined;\n }\n\n public getContinuousValue(value: any): number {\n if (this.valueType === \"date\") {\n return Date.parse(value);\n }\n return parseFloat(value);\n }\n\n public getString(value: number): string {\n if (this.valueType === \"date\") {\n return new Date(value).toLocaleDateString();\n }\n return \"\" + value;\n }\n\n private toPrecision(value: number) {\n const base = Math.pow(10, this._intervalPrecision);\n return Math.round(base * value) / base;\n }\n\n public getSelectedItemByText(itemText: string) {\n if (this.hasCustomIntervals || this.getContinuousValues().length > PivotModel.UseIntervalsFrom) {\n const interval = this.intervals.filter(interval => interval.label === itemText)[0];\n return new ItemValue(interval, interval !== undefined ? interval.label : \"\");\n }\n const labels = this.getLabels();\n const labelIndex = labels.indexOf(itemText);\n return new ItemValue(this.getValues()[labelIndex], labels[labelIndex]);\n }\n\n /**\n * Updates visualizer data.\n */\n public updateData(data: Array<{ [index: string]: any }>) {\n this.reset();\n super.updateData(data);\n }\n\n protected onDataChanged() {\n this.reset();\n super.onDataChanged();\n }\n\n protected getContinuousValues() {\n if (this._cachedValues === undefined) {\n this._continuousData = [];\n if(this.valueType === \"enum\") {\n this._cachedValues = [];\n return this._cachedValues;\n }\n const hash = {};\n this.data.forEach(dataItem => {\n const answerData = dataItem[this.name];\n if (answerData !== undefined) {\n // TODO: _continuousData should be sorted in order to speed-up statistics calculation in the getData function\n this._continuousData.push({ continuous: this.getContinuousValue(answerData), row: dataItem });\n hash[answerData] = { value: answerData, row: dataItem };\n }\n });\n this._cachedValues = Object.keys(hash).map(key => ({ original: hash[key].value, continuous: this.getContinuousValue(key), row: hash[key].row }));\n this._cachedValues.sort((a, b) => a.continuous - b.continuous);\n }\n return this._cachedValues;\n }\n\n protected isSupportAnswersOrder(): boolean {\n return false;\n }\n\n protected isSupportMissingAnswers(): boolean {\n return false;\n }\n\n protected get needUseRateValues() {\n return this.question.getType() == \"rating\" && Array.isArray(this.question[\"rateValues\"]) && this.question[\"rateValues\"].length > 0;\n }\n\n public getSeriesValues(): Array<string> {\n if(!this.questionsY || this.questionsY.length === 0) {\n return this.options.seriesValues || [];\n }\n const seriesValues = [];\n this.questionsY.forEach(q => {\n if (this.getQuestionValueType(q.question) === \"enum\") {\n seriesValues.push.apply(seriesValues, q.getValues().reverse());\n } else {\n seriesValues.push(q.question.name);\n }\n });\n return seriesValues;\n }\n\n public getSeriesLabels(): Array<string> {\n if(this.questionsY.length === 0) {\n return this.getSeriesValues();\n }\n const seriesLabels = [];\n this.questionsY.forEach(q => {\n if (this.getQuestionValueType(q.question) === \"enum\") {\n seriesLabels.push.apply(seriesLabels, q.getLabels().reverse());\n } else {\n seriesLabels.push(q.question.title || q.question.name);\n }\n });\n return seriesLabels;\n }\n\n public getValues(): Array<any> {\n if(this.valueType === \"enum\") {\n return super.getValues().reverse();\n }\n return this.intervals.map(interval => interval.start);\n }\n\n public getLabels(): Array<string> {\n if(this.valueType === \"enum\") {\n return super.getLabels().reverse();\n }\n return this.intervals.map(interval => interval.label);\n }\n\n public get hasCustomIntervals() {\n return !!this.questionOptions && Array.isArray(this.questionOptions.intervals);\n }\n\n public get intervals() {\n if (this.hasCustomIntervals) {\n return this.questionOptions.intervals;\n }\n\n if(this.question.getType() == \"rating\") {\n if (this.needUseRateValues) {\n const rateValues = this.question[\"rateValues\"] as ItemValue[];\n rateValues.sort((iv1, iv2) => iv1.value - iv2.value);\n return rateValues.map((rateValue, i) => ({\n start: rateValue.value,\n end: i < rateValues.length - 1 ? rateValues[i + 1].value : rateValue.value + 1,\n label: rateValue.text\n }));\n } else {\n const rateIntervals = [];\n for(let i = (this.question[\"rateMin\"] || 0); i <= (this.question[\"rateMax\"] || (PivotModel.IntervalsCount - 1)); i += (this.question[\"rateStep\"] || 1)) {\n rateIntervals.push({\n start: i,\n end: i + 1,\n label: \"\" + (!!this.question[\"rateMin\"] && !!this.question[\"rateMax\"] ? i : (i + \"-\" + (i+1)))\n });\n }\n return rateIntervals;\n }\n }\n\n if (this._cachedIntervals === undefined) {\n const continuousValues = this.getContinuousValues();\n this._cachedIntervals = [];\n if (continuousValues.length) {\n let start = continuousValues[0].continuous;\n const end = continuousValues[continuousValues.length - 1].continuous;\n const intervalsCount = PivotModel.IntervalsCount;\n const delta = (end - start) / intervalsCount;\n for (let i = 0; i < intervalsCount; ++i) {\n const next = start + delta;\n const istart = this.toPrecision(start);\n const inext = this.toPrecision(next);\n this._cachedIntervals.push({\n start: istart,\n end: i < intervalsCount - 1 ? inext : inext + delta / 100,\n label: \"\" + this.getString(istart) + \"-\" + this.getString(inext)\n });\n start = next;\n }\n }\n }\n return this._cachedIntervals;\n }\n\n public convertFromExternalData(externalCalculatedData: any): any[] {\n return [externalCalculatedData];\n }\n\n getSeriesValueIndexes(): { [index: string]: number } {\n const seriesValueIndexes = {};\n let valueIndex = 0;\n for (var i = 0; i < this.questionsY.length; ++i) {\n const questionValueType = this.getQuestionValueType(this.questionsY[i].question);\n if(questionValueType === \"enum\") {\n this.questionsY[i].getValues().reverse().forEach((value) => {\n seriesValueIndexes[this.questionsY[i].name + \"_\" + value] = valueIndex++;\n });\n } else {\n seriesValueIndexes[this.questionsY[i].name] = valueIndex++;\n }\n }\n return seriesValueIndexes;\n }\n\n public updateStatisticsSeriesValue(statistics: Array<Array<number>>, dataRow: { [index: string]: any }, valueIndex: number, seriesValueIndexes: { [index: string]: number }): void {\n for (let j = 0; j < this.questionsY.length; ++j) {\n if (dataRow[this.questionsY[j].name] !== undefined) {\n const questionValueType = this.getQuestionValueType(this.questionsY[j].question);\n if (questionValueType === \"enum\" || questionValueType === \"date\") {\n const seriesValueIndex = seriesValueIndexes[this.questionsY[j].name + \"_\" + dataRow[this.questionsY[j].name]];\n statistics[seriesValueIndex][valueIndex]++;\n } else {\n const seriesValueIndex = seriesValueIndexes[this.questionsY[j].name];\n statistics[seriesValueIndex][valueIndex] += parseFloat(dataRow[this.questionsY[j].name]);\n }\n }\n }\n }\n\n protected getCalculatedValuesCore(): Array<any> {\n const statistics: Array<Array<number>> = [];\n const series = this.getSeriesValues();\n if (series.length === 0) {\n series.push(\"\");\n }\n const seriesValueIndexes = this.getSeriesValueIndexes();\n if (this.valueType === \"enum\") {\n const values = this.getValues();\n const valueIndexes = {};\n values.forEach((value, index) => {\n valueIndexes[value] = index;\n });\n for (var i = 0; i < series.length; ++i) {\n statistics.push(values.map(i => 0));\n }\n this.data.forEach(dataRow => {\n const answerData = dataRow[this.name];\n if (answerData !== undefined && valueIndexes[answerData] !== undefined) {\n const valueIndex = valueIndexes[answerData];\n if(this.questionsY.length === 0) {\n statistics[0][valueIndex]++;\n } else {\n this.updateStatisticsSeriesValue(statistics, dataRow, valueIndex, seriesValueIndexes);\n }\n }\n });\n } else {\n const continuousValues = this.getContinuousValues();\n const intervals = this.intervals;\n for (var i = 0; i < series.length; ++i) {\n statistics.push(intervals.map(i => 0));\n }\n this._continuousData.forEach(dataValue => {\n for (let valueIndex = 0; valueIndex < intervals.length; ++valueIndex) {\n if (intervals[valueIndex].start <= dataValue.continuous && (dataValue.continuous < intervals[valueIndex].end || valueIndex == intervals.length - 1)) {\n if(this.questionsY.length === 0) {\n statistics[0][valueIndex]++;\n } else {\n this.updateStatisticsSeriesValue(statistics, dataValue.row, valueIndex, seriesValueIndexes);\n }\n break;\n }\n }\n });\n }\n return statistics;\n }\n\n public getValueType(): \"enum\" | \"date\" | \"number\" {\n return this.valueType;\n }\n\n protected isSupportSoftUpdateContent(): boolean {\n return false;\n }\n\n protected renderToolbar(container: HTMLElement) {\n if (!this.haveCommercialLicense && this.isRoot) {\n const banner = createCommercialLicenseLink();\n container.appendChild(banner);\n }\n container.className += \" sa-pivot__header\";\n super.renderToolbar(container);\n }\n}\n\nVisualizationManager.registerPivotVisualizer(PivotModel);","import { Question, ItemValue, Event } from \"survey-core\";\nimport { SelectBase } from \"../selectBase\";\nimport { VisualizationManager } from \"../visualizationManager\";\nimport { localization } from \"../localizationManager\";\nimport Plotly from \"plotly.js-dist-min\";\nimport { PlotlySetup } from \"./setup\";\nimport { VisualizerBase, IChartAdapter } from \"../visualizerBase\";\nimport { BooleanModel } from \"../boolean\";\nimport { BooleanPlotly, GaugePlotly, HistogramPlotly, MatrixDropdownGroupedPlotly, MatrixPlotly, PivotPlotly, SelectBasePlotly } from \"./legacy\";\n\nexport const plotlyChartTypes = {\n \"boolean\": BooleanPlotly.types,\n \"number\": GaugePlotly.types,\n \"selectBase\": SelectBasePlotly.types,\n \"histogram\": HistogramPlotly.types,\n \"matrix\": MatrixPlotly.types,\n \"matrixDropdownGrouped\": MatrixDropdownGroupedPlotly.types,\n \"pivot\": PivotPlotly.types,\n \"ranking\": [].concat(SelectBasePlotly.types).concat([\"radar\"]),\n};\n\nexport class PlotlyChartAdapter implements IChartAdapter {\n private _chart: Promise<Plotly.PlotlyHTMLElement> = undefined;\n\n constructor(protected model: SelectBase | VisualizerBase) { }\n\n protected patchConfigParameters(\n chartNode: object,\n traces: Array<object>,\n layout: object,\n config: any\n ) {\n if(this.model.question.getType() === \"boolean\") {\n const colors = this.model.getColors();\n const boolColors = [\n BooleanModel.trueColor || colors[0],\n BooleanModel.falseColor || colors[1],\n ];\n if((this.model as SelectBase).showMissingAnswers) {\n boolColors.push(colors[2]);\n }\n\n const chartType = (this.model as any).chartType;\n if (chartType === \"pie\" || chartType === \"doughnut\") {\n traces.forEach((trace: any) => {\n if (!trace) return;\n if (!trace.marker) trace.marker = {};\n trace.marker.colors = boolColors;\n });\n } else if (chartType === \"bar\") {\n traces.forEach((trace: any) => {\n if (!trace) return;\n if (!trace.marker) trace.marker = {};\n trace.marker.color = boolColors;\n });\n }\n }\n if(this.model.type === \"number\") {\n config.displayModeBar = true;\n }\n }\n\n public get chart() {\n return this._chart;\n }\n\n getChartTypes(): string[] {\n const visualizerType = this.model.type;\n const chartCtypes = plotlyChartTypes[visualizerType];\n return chartCtypes || [];\n }\n\n public async create(chartNode: HTMLElement): Promise<any> {\n const [plot, plotlyOptions] = await this.update(chartNode);\n\n if(this.model instanceof SelectBase && this.model.supportSelection) {\n const _model = this.model as SelectBase;\n (<any>chartNode)[\"on\"](\"plotly_click\", (data: any) => {\n if (data.points.length > 0) {\n let itemText = \"\";\n if (!plotlyOptions.hasSeries) {\n itemText = Array.isArray(data.points[0].customdata)\n ? data.points[0].customdata[0]\n : data.points[0].customdata;\n const item: ItemValue = _model.getSelectedItemByText(itemText);\n _model.setSelection(item);\n } else {\n itemText = data.points[0].data.name;\n const propertyLabel = data.points[0].label;\n const seriesValues = this.model.getSeriesValues();\n const seriesLabels = this.model.getSeriesLabels();\n const propertyValue = seriesValues[seriesLabels.indexOf(propertyLabel)];\n const selectedItem: ItemValue = _model.getSelectedItemByText(itemText);\n const item = new ItemValue({ [propertyValue]: selectedItem.value }, propertyLabel + \": \" + selectedItem.text);\n _model.setSelection(item);\n }\n\n // const itemText = plotlyOptions.hasSeries\n // ? data.points[0].data.name\n // : Array.isArray(data.points[0].customdata)\n // ? data.points[0].customdata[0]\n // : data.points[0].customdata;\n // const item: ItemValue = this.model.getSelectedItemByText(itemText);\n // this.model.setSelection(item);\n }\n });\n }\n\n var getDragLayer = () =>\n <HTMLElement>chartNode.getElementsByClassName(\"nsewdrag\")[0];\n (<any>chartNode)[\"on\"](\"plotly_hover\", () => {\n const dragLayer = getDragLayer();\n dragLayer && (dragLayer.style.cursor = \"pointer\");\n });\n (<any>chartNode)[\"on\"](\"plotly_unhover\", () => {\n const dragLayer = getDragLayer();\n dragLayer && (dragLayer.style.cursor = \"\");\n });\n\n // setTimeout(() => Plotly.Plots.resize(chartNode), 10);\n this._chart = plot;\n return plot;\n }\n\n public async update(chartNode: HTMLElement): Promise<any> {\n const answersData = (this.model instanceof SelectBase) ? await this.model.getAnswersData() : await this.model.getCalculatedValues();\n var plotlyOptions = PlotlySetup.setup((this.model as any).chartType, this.model, answersData as any);\n\n let config: any = {\n displaylogo: false,\n responsive: true,\n locale: localization.currentLocale,\n modeBarButtonsToRemove: [\"toImage\"],\n modeBarButtonsToAdd: [\n {\n name: \"toImageSjs\",\n title: localization.getString(\"saveDiagramAsPNG\"),\n icon: (<any>Plotly).Icons.camera,\n click: (gd: any) => {\n let options = {\n format: PlotlySetup.imageExportFormat,\n // width: 800,\n // height: 600,\n filename: this.model.question.name,\n };\n PlotlySetup.onImageSaving.fire(this.model, options);\n (<any>Plotly).downloadImage(gd, options);\n },\n },\n ],\n };\n if (SelectBasePlotly.displayModeBar !== undefined) {\n config.displayModeBar = SelectBasePlotly.displayModeBar;\n }\n\n this.patchConfigParameters(\n chartNode,\n plotlyOptions.traces,\n plotlyOptions.layout,\n config\n );\n\n let options = {\n traces: plotlyOptions.traces,\n layout: plotlyOptions.layout,\n data: answersData,\n config: config,\n };\n PlotlySetup.onPlotCreating.fire(this.model, options);\n\n const plot = (<any>Plotly).react(\n chartNode,\n options.traces,\n options.layout,\n options.config\n );\n\n return [plot, plotlyOptions];\n }\n\n public destroy(node: HTMLElement) {\n if(!!node) {\n (<any>Plotly).purge(node);\n }\n this._chart = undefined;\n }\n}\n\nVisualizerBase.chartAdapterType = PlotlyChartAdapter;\n","export * from \"./setup\";\nexport * from \"./chart-adapter\";\nexport * from \"./legacy\";\n","import { BooleanModel } from \"../boolean\";\nimport { SelectBase } from \"../selectBase\";\nimport { HistogramModel } from \"../histogram\";\nimport { Matrix } from \"../matrix\";\nimport { MatrixDropdownGrouped } from \"../matrixDropdownGrouped\";\nimport { PivotModel } from \"../pivot\";\nimport { NumberModel } from \"../number\";\nimport { RankingModel } from \"../ranking\";\n\nexport class SelectBasePlotly extends SelectBase {\n public static types = [\"bar\", \"vbar\", \"pie\", \"doughnut\"];\n public static displayModeBar: any = undefined;\n}\n\nexport class BooleanPlotly extends BooleanModel {\n public static types = [\"pie\", \"bar\", \"doughnut\"];\n}\n\nexport class HistogramPlotly extends HistogramModel {\n public static types = [\"vbar\", \"bar\"];\n}\n\nexport class MatrixPlotly extends Matrix {\n public static types = [\"bar\", \"stackedbar\", \"pie\", \"doughnut\"];\n}\n\nexport class MatrixDropdownGroupedPlotly extends MatrixDropdownGrouped {\n public static types = [\"stackedbar\", \"bar\", \"pie\", \"doughnut\"];\n}\n\nexport class PivotPlotly extends PivotModel {\n public static types = [\"vbar\", \"bar\", \"line\", \"stackedbar\", \"pie\", \"doughnut\"]; // [\"vbar\", \"bar\"];\n}\n\nexport class GaugePlotly extends NumberModel {\n public static displayModeBar: any = undefined;\n public static types = [\"gauge\", \"bullet\"];\n}\n\nexport class RankingPlotly extends RankingModel {}","import { Event, QuestionRatingModel } from \"survey-core\";\nimport { IAnswersData, SelectBase } from \"../selectBase\";\nimport { VisualizerBase } from \"../visualizerBase\";\nimport { localization } from \"../localizationManager\";\nimport { DataHelper } from \"../utils\";\nimport { NumberModel } from \"../number\";\n\nexport interface PlotlyOptions {\n traces: Array<any>;\n layout: any;\n hasSeries: boolean;\n}\n\nexport class PlotlySetup {\n public static imageExportFormat = \"png\";\n /**\n * Fires when end user clicks on the 'save as image' button.\n */\n public static onImageSaving = new Event<\n (sender: VisualizerBase, options: any) => any,\n VisualizerBase,\n any\n >();\n\n /**\n * Fires before plot will be created. User can change traces, layout and config of the plot.\n * Options is an object with the following fields: traces, layout and config of the plot.\n */\n public static onPlotCreating = new Event<\n (sender: VisualizerBase, options: any) => any,\n VisualizerBase,\n any\n >();\n\n static setups: { [type: string]: (model: VisualizerBase, answersData: IAnswersData) => PlotlyOptions } = {\n bar: PlotlySetup.setupBar,\n vbar: PlotlySetup.setupVBar,\n line: PlotlySetup.setupVBar,\n stackedbar: PlotlySetup.setupBar,\n doughnut: PlotlySetup.setupPie,\n pie: PlotlySetup.setupPie,\n scatter: PlotlySetup.setupScatter,\n gauge: PlotlySetup.setupGauge,\n bullet: PlotlySetup.setupGauge,\n radar: PlotlySetup.setupRadar,\n };\n\n static setup(charType: string, model: VisualizerBase, answersData: IAnswersData): PlotlyOptions {\n return this.setups[charType](model, answersData);\n }\n\n static getTruncatedLabel = (label: string, labelTruncateLength: number) => {\n const truncateSymbols = \"...\";\n const truncateSymbolsLength = truncateSymbols.length;\n\n if (!labelTruncateLength) return label;\n if (labelTruncateLength === -1) return label;\n if (label.length <= labelTruncateLength + truncateSymbolsLength)\n return label;\n\n return label.substring(0, labelTruncateLength) + truncateSymbols;\n };\n\n static setupPie(model: SelectBase, answersData: IAnswersData): PlotlyOptions {\n let {\n datasets,\n labels,\n colors,\n texts,\n seriesLabels,\n } = answersData;\n\n const hasSeries = seriesLabels.length > 1 || model.question.getType() === \"matrix\";\n const layoutColumns = 2;\n\n let traces: any = [];\n const traceConfig: any = {\n type: model.chartType,\n sort: false,\n labels: labels,\n customdata: labels,\n text: labels.map((label: string) => {\n return PlotlySetup.getTruncatedLabel(\n label,\n model.labelTruncateLength\n );\n }),\n hoverinfo: \"value+text\",\n textposition: \"inside\",\n texttemplate: \"%{text}\"\n };\n\n if (model.chartType === \"doughnut\") {\n traceConfig.type = \"pie\";\n traceConfig.hole = 0.4;\n }\n\n if (!hasSeries) {\n traceConfig.mode = \"markers\",\n traceConfig.marker = { color: colors };\n traceConfig.marker.symbol = \"circle\";\n traceConfig.marker.size = 16;\n }\n\n datasets.forEach((dataset: Array<number>, index: number) => {\n const isNotEmpty = dataset.some((value: number) => value != 0);\n let pieTexts = traceConfig.text;\n if(model.showPercentages) {\n const percentages = model.getPercentages([dataset])[0];\n pieTexts = labels.map((l, li) => (model.showOnlyPercentages ? percentages[li] : PlotlySetup.getTruncatedLabel(l, model.labelTruncateLength) + \"<br>\" + percentages[li]) + \"%\");\n }\n if(isNotEmpty) {\n traces.push(\n Object.assign({}, traceConfig, {\n values: dataset,\n text: pieTexts,\n domain: {\n column: traces.length % layoutColumns,\n row: Math.floor(traces.length / layoutColumns),\n },\n title: { position: \"bottom center\", text: seriesLabels[index] }\n })\n );\n }\n });\n\n const radius = labels.length < 10 ? labels.length * 50 + 100 : 550;\n const height = (radius + 25) * Math.ceil(traces.length / layoutColumns);\n\n const layout: any = {\n font: {\n family: \"Segoe UI, sans-serif\",\n size: 14,\n weight: \"normal\",\n color: \"#404040\",\n },\n height: height,\n margin: {\n l: 0,\n t: 25,\n b: 0,\n r: 10,\n },\n colorway: colors,\n hovermode: \"closest\",\n plot_bgcolor: model.backgroundColor,\n paper_bgcolor: model.backgroundColor,\n showlegend: false,\n };\n\n if (hasSeries) {\n layout.annotations = [];\n layout.grid = { rows: Math.ceil(traces.length / layoutColumns), columns: layoutColumns };\n }\n return { traces, layout, hasSeries };\n }\n\n static setupBar(model: SelectBase, answersData: IAnswersData): PlotlyOptions {\n let lineHeight = 30;\n let topMargin = 30;\n let bottomMargin = 30;\n let {\n datasets,\n labels,\n colors,\n texts,\n seriesLabels,\n labelsTitle,\n valuesTitle\n } = answersData;\n\n const hasSeries = seriesLabels.length > 1 || model.question.getType() === \"matrix\";\n\n const traces: any = [];\n const traceConfig: any = {\n type: model.chartType === \"line\" ? \"line\" : \"bar\",\n y: labels,\n customdata: labels,\n hoverinfo: \"text\",\n orientation: \"h\",\n textposition: \"none\",\n };\n if (!hasSeries) {\n traceConfig.width = 0.5;\n traceConfig.bargap = 0.5;\n traceConfig.mode = \"markers\",\n traceConfig.marker = { color: colors };\n }\n\n datasets.forEach((dataset: Array<number>, index: number) => {\n const traceName = hasSeries ? seriesLabels[index] : labels[index];\n const percentString = model.showPercentages ? \"%\" : \"\";\n const trace = Object.assign({}, traceConfig, {\n x: dataset,\n name: traceName,\n width: hasSeries && model.chartType !== \"stackedbar\" ? 0.5 / seriesLabels.length : 0.5,\n text: texts[index],\n hovertext: labels.map((label: string, labelIndex: number) => {\n if(model.showOnlyPercentages) {\n return `${texts[index][labelIndex]}${percentString}`;\n } else {\n return hasSeries ? `${traceName} : ${label}, ${texts[index][labelIndex]}${percentString}` : `${texts[index][labelIndex]}${percentString}, ${label}`;\n }\n }),\n });\n if (model.showPercentages) {\n let texttemplate = model.showOnlyPercentages ? \"%{text}%\" : \"%{value} (%{text}%)\";\n trace.textposition = \"inside\";\n trace.texttemplate = texttemplate;\n trace.width = hasSeries && model.chartType !== \"stackedbar\" ? 0.7 / seriesLabels.length : 0.9;\n trace.bargap = hasSeries && model.chartType !== \"stackedbar\" ? 0.3 / seriesLabels.length : 0.1;\n }\n traces.push(trace);\n });\n\n const height = (labels.length + 1) * lineHeight + topMargin + bottomMargin;\n\n const layout: any = {\n font: {\n family: \"Segoe UI, sans-serif\",\n size: 14,\n weight: \"normal\",\n color: \"#404040\",\n },\n height: height,\n margin: {\n t: topMargin,\n b: bottomMargin,\n r: 10,\n },\n colorway: colors,\n hovermode: \"closest\",\n plot_bgcolor: model.backgroundColor,\n paper_bgcolor: model.backgroundColor,\n showlegend: hasSeries,\n barmode: hasSeries && model.chartType == \"stackedbar\" ? \"stack\" : \"group\",\n xaxis: {\n rangemode: \"nonnegative\",\n automargin: true,\n },\n yaxis: {\n automargin: true,\n type: \"category\",\n orientation: \"h\",\n tickmode: \"array\",\n tickvals: labels,\n ticktext: labels.map((label: string) => {\n return PlotlySetup.getTruncatedLabel(\n label,\n model.labelTruncateLength\n ) + \" \";\n }),\n },\n };\n\n if(labelsTitle) {\n layout.yaxis.title = { text: labelsTitle };\n }\n if(valuesTitle) {\n layout.xaxis.title = { text: valuesTitle };\n }\n\n if (hasSeries && model.chartType !== \"stackedbar\") {\n layout.height =\n (labels.length * seriesLabels.length + 1) * lineHeight +\n topMargin +\n bottomMargin;\n }\n\n if([\"ar\", \"fa\"].indexOf(localization.currentLocale) !== -1) {\n layout.xaxis.autorange = \"reversed\";\n layout.yaxis.side = \"right\";\n layout.legend = {\n x: 0,\n y: 1,\n xanchor: \"left\",\n yanchor: \"top\"\n };\n }\n\n return { traces, layout, hasSeries };\n }\n\n static setupVBar(model: SelectBase, answersData: IAnswersData): PlotlyOptions {\n let topMargin = 30;\n let bottomMargin = 30;\n let {\n datasets,\n labels,\n colors,\n texts,\n seriesLabels,\n labelsTitle,\n valuesTitle\n } = answersData;\n\n const hasSeries = seriesLabels.length > 1 || model.question.getType() === \"matrix\";\n\n if (model.type !== \"histogram\" && model.type !== \"pivot\") {\n labels = [].concat(labels).reverse();\n seriesLabels = [].concat(seriesLabels).reverse();\n colors = [].concat(colors.slice(0, hasSeries ? seriesLabels.length : labels.length)).reverse();\n const ts = [];\n texts.forEach(text => {\n ts.push([].concat(text).reverse());\n });\n texts = ts;\n const ds = [];\n datasets.forEach(dataset => {\n ds.push([].concat(dataset).reverse());\n });\n datasets = ds;\n }\n\n const traces: any = [];\n const traceConfig: any = {\n type: model.chartType === \"line\" ? \"line\" : \"bar\",\n x: labels,\n customdata: hasSeries ? seriesLabels : labels,\n hoverinfo: hasSeries ? undefined : \"x+y\",\n orientation: \"v\",\n textposition: \"none\",\n };\n if (!hasSeries) {\n traceConfig.width = 0.5;\n traceConfig.bargap = 0.5;\n traceConfig.mode = \"markers\",\n traceConfig.marker = { color: colors };\n }\n\n datasets.forEach((dataset: Array<number>, index: number) => {\n var trace = Object.assign({}, traceConfig, {\n y: dataset,\n name: hasSeries ? seriesLabels[index] : labels[index],\n text: texts[index],\n });\n if (model.showPercentages) {\n let texttemplate = model.showOnlyPercentages ? \"%{text}%\" : \"%{value} (%{text}%)\";\n trace.textposition = \"inside\";\n trace.texttemplate = texttemplate;\n if (!hasSeries) {\n trace.width = 0.9;\n trace.bargap = 0.1;\n }\n }\n traces.push(trace);\n });\n\n const maxTicks = 50;\n const tickStep = Math.ceil(labels.length / maxTicks);\n\n const layout: any = {\n font: {\n family: \"Segoe UI, sans-serif\",\n size: 14,\n weight: \"normal\",\n color: \"#404040\",\n },\n margin: {\n t: topMargin,\n b: bottomMargin,\n r: 10,\n },\n colorway: colors,\n hovermode: \"closest\",\n plot_bgcolor: model.backgroundColor,\n paper_bgcolor: model.backgroundColor,\n showlegend: hasSeries,\n yaxis: {\n rangemode: \"nonnegative\",\n automargin: true,\n },\n xaxis: {\n automargin: true,\n type: \"category\",\n tickmode: \"array\",\n tickvals: labels,\n ticktext: labels.map((label: string, index: number) => {\n if(labels.length > maxTicks && index % tickStep !== 0) {\n return \"\";\n }\n return PlotlySetup.getTruncatedLabel(\n label,\n model.labelTruncateLength\n );\n }),\n },\n };\n\n if(labelsTitle) {\n layout.xaxis.title = { text: labelsTitle };\n }\n if(valuesTitle) {\n layout.yaxis.title = { text: valuesTitle };\n }\n\n if (model.showPercentages && model.showOnlyPercentages) {\n layout.yaxis = {\n automargin: true,\n tickformat: \".0%\",\n range: [0, 1],\n ticklen: model.showOnlyPercentages ? 25 : 5,\n tickcolor: \"transparent\",\n };\n }\n if(!(model as any).getValueType || (model as any).getValueType() != \"date\") {\n layout.xaxis = {\n automargin: true,\n type: \"category\",\n };\n }\n\n return { traces, layout, hasSeries };\n }\n\n static setupScatter(model: SelectBase, answersData: IAnswersData): PlotlyOptions {\n let lineHeight = 30;\n let topMargin = 30;\n let bottomMargin = 30;\n let {\n datasets,\n labels,\n colors,\n texts,\n seriesLabels,\n } = answersData;\n const hasSeries = seriesLabels.length > 1 || model.question.getType() === \"matrix\";\n const traces: any = [];\n\n const traceConfig: any = {\n type: \"scatter\",\n y: (hasSeries ? seriesLabels : labels).map((label: string) => {\n return PlotlySetup.getTruncatedLabel(\n label,\n model.labelTruncateLength\n );\n }),\n customdata: hasSeries ? seriesLabels : labels,\n text: hasSeries ? seriesLabels : labels,\n hoverinfo: \"x+y\",\n orientation: \"h\",\n mode: \"markers\",\n width: 0.5,\n marker: <any>{},\n };\n\n if (!hasSeries) {\n traceConfig.marker.symbol = \"circle\";\n traceConfig.marker.size = 16;\n }\n\n datasets.forEach((dataset: Array<number>) => {\n {\n var trace = Object.assign({}, traceConfig, {\n x: dataset,\n });\n traces.push(trace);\n }\n });\n\n const height = (labels.length + 1) * lineHeight + topMargin + bottomMargin;\n\n const layout: any = {\n font: {\n family: \"Segoe UI, sans-serif\",\n size: 14,\n weight: \"normal\",\n color: \"#404040\",\n },\n height: height,\n margin: {\n t: topMargin,\n b: bottomMargin,\n r: 10,\n },\n colorway: colors,\n hovermode: \"closest\",\n yaxis: {\n automargin: true,\n type: \"category\",\n ticklen: 5,\n tickcolor: \"transparent\",\n },\n xaxis: {\n rangemode: \"nonnegative\",\n automargin: true,\n },\n plot_bgcolor: model.backgroundColor,\n paper_bgcolor: model.backgroundColor,\n showlegend: false,\n };\n\n if (hasSeries) {\n layout.showlegend = true;\n layout.height = undefined;\n\n labels.forEach((label, index) => {\n traces[index].hoverinfo = \"x+name\";\n traces[index].marker.color = undefined;\n traces[index].name = label;\n });\n }\n return { traces, layout, hasSeries };\n }\n\n static setupGauge(model: NumberModel, answersData: IAnswersData): PlotlyOptions {\n let [level, minValue, maxValue] = answersData as any;\n\n if (model.question.getType() === \"rating\") {\n const rateValues = model.question.visibleRateValues;\n maxValue = rateValues[rateValues.length - 1].value;\n minValue = rateValues[0].value;\n }\n\n const colors = model.generateColors(\n maxValue,\n minValue,\n NumberModel.stepsCount\n );\n\n if (NumberModel.showAsPercentage) {\n level = DataHelper.toPercentage(level, maxValue);\n minValue = DataHelper.toPercentage(minValue, maxValue);\n maxValue = DataHelper.toPercentage(maxValue, maxValue);\n }\n\n var traces: any = [\n {\n type: \"indicator\",\n mode: \"gauge+number\",\n gauge: {\n axis: { range: [minValue, maxValue] },\n shape: model.chartType,\n bgcolor: \"white\",\n bar: { color: colors[0] },\n },\n value: level,\n text: model.name,\n domain: { x: [0, 1], y: [0, 1] },\n },\n ];\n\n const chartMargin = model.chartType === \"bullet\" ? 60 : 30;\n var layout: any = {\n height: 250,\n margin: {\n l: chartMargin,\n r: chartMargin,\n b: chartMargin,\n t: chartMargin,\n pad: 5\n },\n plot_bgcolor: model.backgroundColor,\n paper_bgcolor: model.backgroundColor,\n };\n\n return { traces, layout, hasSeries: false };\n }\n\n static setupRadar(model: SelectBase, answersData: IAnswersData): PlotlyOptions {\n let {\n datasets,\n labels,\n colors,\n texts,\n seriesLabels,\n } = answersData;\n const hasSeries = seriesLabels.length > 1 || model.question.getType() === \"matrix\";\n const traces: any = [];\n\n const traceConfig: any = {\n type: \"scatterpolar\",\n mode: \"lines+markers\",\n fill: \"toself\",\n line: {\n width: 2\n },\n marker: {\n size: 6\n }\n };\n\n datasets.forEach((dataset: Array<number>, index: number) => {\n const traceName = hasSeries ? seriesLabels[index] : \"\";\n const trace = Object.assign({}, traceConfig, {\n r: dataset,\n theta: labels,\n name: traceName,\n text: texts[index],\n hoverinfo: \"r+theta+name\",\n customdata: labels,\n hovertemplate: \"%{theta}: %{r}\" +\n \"<extra></extra>\",\n line: {\n ...traceConfig.line,\n color: colors[index % colors.length]\n },\n marker: {\n ...traceConfig.marker,\n color: colors[index % colors.length]\n }\n });\n traces.push(trace);\n });\n\n const layout: any = {\n font: {\n family: \"Segoe UI, sans-serif\",\n size: 14,\n weight: \"normal\",\n color: \"#404040\",\n },\n polar: {\n radialaxis: {\n visible: true,\n range: [0, Math.max(...datasets.map(s => Math.max(...s))) * 1.1],\n tickfont: {\n size: 12\n }\n },\n angularaxis: {\n tickfont: {\n size: 12\n },\n ticktext: labels.map((label: string) => {\n return PlotlySetup.getTruncatedLabel(\n label,\n model.labelTruncateLength\n );\n }),\n tickvals: labels\n }\n },\n showlegend: hasSeries,\n colorway: colors,\n plot_bgcolor: model.backgroundColor,\n paper_bgcolor: model.backgroundColor,\n margin: {\n l: 50,\n r: 50,\n t: 50,\n b: 50\n }\n };\n\n return { traces, layout, hasSeries };\n }\n}\n","import { VisualizationManager } from \"./visualizationManager\";\nimport { SelectBase } from \"./selectBase\";\nimport { QuestionRankingModel } from \"survey-core\";\n\nexport class RankingModel extends SelectBase {\n\n constructor(\n question: QuestionRankingModel,\n data: Array<{ [index: string]: any }>,\n options?: any,\n name?: string\n ) {\n super(question, data, options, name || \"ranking\");\n }\n\n getQuestionResults() {\n const name = this.question.name;\n return this.data.map((dataItem) => dataItem[name]);\n }\n\n getEmptyData() {\n const choices = this.getValues();\n let data: any = [];\n\n data.length = choices.length;\n data.fill(0);\n\n return data;\n }\n\n protected getCalculatedValuesCore(): Array<any> {\n const results = this.getQuestionResults();\n const choices = this.getValues();\n\n let plotlyData = this.getEmptyData();\n\n results.forEach((result) => {\n this.applyResultToPlotlyData(result, plotlyData, choices);\n });\n\n return [plotlyData];\n }\n\n applyResultToPlotlyData(result: any[], plotlyData: any, choices: any) {\n if (!result || !plotlyData || !choices) return;\n\n result.forEach((resultValue: any, resultValueIndex: number, result: any[]) => {\n let index = choices.indexOf(resultValue);\n plotlyData[index] =\n +plotlyData[index] + (result.length - resultValueIndex);\n });\n }\n}\n\nVisualizationManager.registerVisualizer(\"ranking\", RankingModel);\n","import { Question, QuestionSelectBase, ItemValue, Event, QuestionRatingModel } from \"survey-core\";\nimport { VisualizerBase } from \"./visualizerBase\";\nimport { localization } from \"./localizationManager\";\nimport { DataHelper, DocumentHelper } from \"./utils/index\";\nimport { VisualizationManager } from \"./visualizationManager\";\n\nexport interface IVisualizerWithSelection {\n selection: ItemValue;\n onDataItemSelected: (selectedValue: any, selectedText: string) => void;\n setSelection(item: ItemValue): void;\n}\n\nexport interface IAnswersData {\n datasets: Array<Array<any>>;\n labels: Array<string>;\n colors: Array<string>;\n texts: Array<Array<any>>;\n seriesLabels: Array<string>;\n labelsTitle?: string;\n valuesTitle?: string;\n}\n\nexport function hideEmptyAnswersInData(answersData: IAnswersData): IAnswersData {\n const result = {\n datasets: <Array<any>>[],\n labels: <Array<string>>[],\n colors: <Array<string>>[],\n texts: <Array<any>>[],\n seriesLabels: <Array<any>>[],\n };\n if(answersData.seriesLabels.length === 0) {\n result.datasets.push([]);\n result.texts.push([]);\n for (var i = 0; i < answersData.datasets[0].length; i++) {\n if (answersData.datasets[0][i] != 0) {\n result.datasets[0].push(answersData.datasets[0][i]);\n result.labels.push(answersData.labels[i]);\n result.colors.push(answersData.colors[i]);\n result.texts[0].push(answersData.texts[0][i]);\n }\n }\n return result;\n }\n const seriesDataExistence = <Array<boolean>>[];\n seriesDataExistence.length = answersData.seriesLabels.length;\n const valuesDataExistence = <Array<boolean>>[];\n valuesDataExistence.length = answersData.labels.length;\n for (var seriesIndex = 0; seriesIndex < answersData.seriesLabels.length; seriesIndex++) {\n for (var valueIndex = 0; valueIndex < answersData.labels.length; valueIndex++) {\n if (answersData.datasets[seriesIndex][valueIndex] != 0) {\n seriesDataExistence[seriesIndex] = true;\n valuesDataExistence[valueIndex] = true;\n }\n }\n }\n for (var valueIndex = 0; valueIndex < valuesDataExistence.length; valueIndex++) {\n if (valuesDataExistence[valueIndex]) {\n result.labels.push(answersData.labels[valueIndex]);\n result.colors.push(answersData.colors[valueIndex]);\n }\n }\n for (var seriesIndex = 0; seriesIndex < answersData.seriesLabels.length; seriesIndex++) {\n if (seriesDataExistence[seriesIndex]) {\n result.seriesLabels.push(answersData.seriesLabels[seriesIndex]);\n }\n }\n for (var seriesIndex = 0; seriesIndex < answersData.datasets.length; seriesIndex++) {\n if (seriesDataExistence[seriesIndex]) {\n const dataset = [];\n const texts = [];\n for (var valueIndex = 0; valueIndex < answersData.labels.length; valueIndex++) {\n if (valuesDataExistence[valueIndex]) {\n dataset.push(answersData.datasets[seriesIndex][valueIndex]);\n texts.push(answersData.texts[seriesIndex][valueIndex]);\n }\n }\n result.datasets.push(dataset);\n result.texts.push(texts);\n }\n }\n return result;\n}\n\nexport class SelectBase\n extends VisualizerBase\n implements IVisualizerWithSelection {\n protected selectedItem: ItemValue = undefined;\n private choicesOrderSelector: HTMLDivElement = undefined;\n private showPercentageBtn: HTMLElement = undefined;\n private emptyAnswersBtn: HTMLElement = undefined;\n private transposeDataBtn: HTMLElement = undefined;\n private topNSelector: HTMLDivElement = undefined;\n private _showPercentages: boolean;\n private _showOnlyPercentages: boolean = false;\n private _percentagePrecision: number = 2;\n protected _answersOrder: string = \"default\";\n private _hideEmptyAnswers = false;\n private _topN = -1;\n public static topNValuesDefaults = [-1, 5, 10, 20];\n public topNValues = [].concat(SelectBase.topNValuesDefaults);\n protected _transposeData: boolean = false;\n private _showMissingAnswers: boolean = false;\n private missingAnswersBtn: HTMLElement = undefined;\n\n constructor(\n question: Question,\n data: Array<{ [index: string]: any }>,\n options?: any,\n name?: string\n ) {\n super(question, data, options, name || \"selectBase\");\n if (!!question) { // TODO: move somewhere else\n (<any>question).visibleChoicesChangedCallback = () => {\n this.dataProvider.raiseDataChanged();\n };\n }\n this._supportSelection = true;\n this._showOnlyPercentages = this.options.showOnlyPercentages === true;\n\n if (this.options.percentagePrecision) {\n this._percentagePrecision = this.options.percentagePrecision;\n }\n if (this.options.transposeData !== undefined) {\n this._transposeData = this.options.transposeData;\n }\n\n this._hideEmptyAnswers = this.options.hideEmptyAnswers === true;\n this._answersOrder = this.options.answersOrder || \"default\";\n this._showMissingAnswers = this.isSupportMissingAnswers() && this.options.showMissingAnswers === true;\n\n if(this.options.allowExperimentalFeatures) {\n // this.chartTypes.splice(1, 0, \"vbar\");\n }\n if (VisualizerBase.chartAdapterType) {\n this._chartAdapter = new VisualizerBase.chartAdapterType(this);\n this.chartTypes = this._chartAdapter.getChartTypes();\n if (this.getSeriesValues().length > 0 && this.chartTypes.indexOf(\"stackedbar\") === -1) {\n this.chartTypes.push(\"stackedbar\");\n }\n this._chartType = this.chartTypes[0];\n if (this.chartTypes.indexOf(this.options.defaultChartType) !== -1) {\n this._chartType = this.options.defaultChartType;\n }\n }\n\n if(this.options.allowChangeVisualizerType !== false) {\n this.registerToolbarItem(\"changeChartType\", () => {\n if (this.chartTypes.length > 1) {\n return DocumentHelper.createSelector(\n this.chartTypes.map((chartType) => {\n return {\n value: chartType,\n text: localization.getString(\"chartType_\" + chartType),\n };\n }),\n (option: any) => this.chartType === option.value,\n (e: any) => {\n this.setChartType(e.target.value);\n }\n );\n }\n return null;\n });\n }\n\n this.registerToolbarItem(\"changeAnswersOrder\", () => {\n if (this.isSupportAnswersOrder()) {\n this.choicesOrderSelector = DocumentHelper.createSelector(\n [\n { text: localization.getString(\"defaultOrder\"), value: \"default\" },\n { text: localization.getString(\"ascOrder\"), value: \"asc\" },\n { text: localization.getString(\"descOrder\"), value: \"desc\" },\n ],\n (option) => false,\n (e) => {\n this.answersOrder = e.target.value;\n }\n );\n this.updateOrderSelector();\n }\n return this.choicesOrderSelector;\n });\n this.registerToolbarItem(\"showPercentages\", () => {\n if (\n this.options.allowShowPercentages &&\n (this.chartTypes.indexOf(\"bar\") !== -1 ||\n this.chartTypes.indexOf(\"stackedbar\") !== -1)\n ) {\n this.showPercentageBtn = DocumentHelper.createButton(() => {\n this.showPercentages = !this.showPercentages;\n });\n this.updateShowPercentageBtn();\n return this.showPercentageBtn;\n }\n });\n this.registerToolbarItem(\"hideEmptyAnswers\", () => {\n if (this.options.allowHideEmptyAnswers) {\n this.emptyAnswersBtn = DocumentHelper.createButton(() => {\n this.hideEmptyAnswers = !this._hideEmptyAnswers;\n });\n this.updateEmptyAnswersBtn();\n }\n return this.emptyAnswersBtn;\n }, 1000);\n this.registerToolbarItem(\"topNAnswers\", () => {\n if (\n this.options.allowTopNAnswers &&\n this.getSeriesValues().length === 0\n ) {\n this.topNSelector = DocumentHelper.createSelector(\n this.topNValues.map((value) => {\n return {\n text: localization.getString(\"topNValueText\" + value),\n value: value,\n };\n }),\n (option) => false,\n (e) => {\n this.topN = parseInt(e.target.value);\n }\n );\n this.updateTopNSelector();\n }\n return this.topNSelector;\n });\n this.registerToolbarItem(\"transposeData\", () => {\n if (this.options.allowTransposeData) {\n this.transposeDataBtn = DocumentHelper.createButton(() => {\n this.transposeData = !this.transposeData;\n });\n this.updateTransposeDataBtn();\n }\n return this.transposeDataBtn;\n });\n this.registerToolbarItem(\"showMissingAnswers\", () => {\n if (this.isSupportMissingAnswers() && this.options.allowShowMissingAnswers) {\n this.missingAnswersBtn = DocumentHelper.createButton(() => {\n this.showMissingAnswers = !this._showMissingAnswers;\n });\n this.updateMissingAnswersBtn();\n }\n return this.missingAnswersBtn;\n });\n }\n\n protected chartTypes: string[] = [];\n protected _chartType: string = \"bar\";\n /**\n * Chart type - current chart type.\n */\n public get chartType(): string {\n return this._chartType;\n }\n public set chartType(newChartType: string) {\n this.setChartType(newChartType);\n }\n\n private updateEmptyAnswersBtn() {\n if (!!this.emptyAnswersBtn) {\n this.emptyAnswersBtn.innerText = this._hideEmptyAnswers\n ? localization.getString(\"showEmptyAnswers\")\n : localization.getString(\"hideEmptyAnswers\");\n if (this.chartType == \"bar\" || this.chartType == \"vbar\" || this.chartType == \"line\" || this.chartType == \"scatter\") {\n this.emptyAnswersBtn.style.display = \"inline\";\n } else {\n this.emptyAnswersBtn.style.display = \"none\";\n }\n }\n }\n\n private updateTransposeDataBtn() {\n if (!!this.transposeDataBtn) {\n this.transposeDataBtn.innerText = this.transposeData\n ? localization.getString(\"showPerColumns\")\n : localization.getString(\"showPerValues\");\n if (this.getSeriesValues().length > 0) {\n this.transposeDataBtn.style.display = \"inline\";\n } else {\n this.transposeDataBtn.style.display = \"none\";\n }\n }\n }\n\n private updateOrderSelector() {\n if (!!this.choicesOrderSelector) {\n if (\n this.chartType == \"bar\" ||\n this.chartType == \"vbar\" ||\n this.chartType == \"line\" ||\n this.chartType == \"scatter\" ||\n ((this.chartType == \"pie\" || this.chartType == \"doughnut\") &&\n this.topN > 0)\n ) {\n this.choicesOrderSelector.style.display = \"inline-flex\";\n } else {\n this.choicesOrderSelector.style.display = \"none\";\n }\n this.choicesOrderSelector.getElementsByTagName(\n \"select\"\n )[0].value = this.answersOrder;\n }\n }\n\n private updateShowPercentageBtn() {\n if (!!this.showPercentageBtn) {\n this.showPercentageBtn.innerText = this._showPercentages\n ? localization.getString(\"hidePercentages\")\n : localization.getString(\"showPercentages\");\n if (this.chartType == \"bar\" || this.chartType == \"vbar\" || this.chartType == \"stackedbar\") {\n this.showPercentageBtn.style.display = \"inline\";\n } else {\n this.showPercentageBtn.style.display = \"none\";\n }\n }\n }\n\n private updateTopNSelector() {\n if (!!this.topNSelector) {\n this.topNSelector.getElementsByTagName(\"select\")[0].value = <any>(\n this._topN\n );\n }\n }\n\n private updateMissingAnswersBtn() {\n if (!!this.missingAnswersBtn) {\n this.missingAnswersBtn.innerText = this._showMissingAnswers\n ? localization.getString(\"hideMissingAnswers\")\n : localization.getString(\"showMissingAnswers\");\n }\n }\n\n protected onChartTypeChanged() {\n this.updateOrderSelector();\n this.updateShowPercentageBtn();\n this.updateEmptyAnswersBtn();\n this.updateTopNSelector();\n this.stateChanged(\"chartType\", this._chartType);\n }\n\n protected setChartType(chartType: string) {\n if (\n this.chartTypes.indexOf(chartType) !== -1 &&\n this._chartType !== chartType\n ) {\n this._chartType = chartType;\n this.onChartTypeChanged();\n this.refreshContent();\n }\n }\n\n protected getCorrectAnswerText(): string {\n const correctAnswerValue = super.getCorrectAnswerText();\n const resultValues = Array.isArray(correctAnswerValue) ? correctAnswerValue : [correctAnswerValue];\n const selectBaseQuestion = this.question as QuestionSelectBase;\n return resultValues.map((value: any) => ItemValue.getTextOrHtmlByValue(selectBaseQuestion.choices, value)).join(\", \");\n }\n\n protected isSupportSoftUpdateContent(): boolean {\n return true;\n }\n\n protected softUpdateContent(): void {\n const chartNode: HTMLElement = <HTMLElement>this.contentContainer?.children[0];\n if(chartNode) {\n this._chartAdapter.update(chartNode);\n }\n }\n\n public getSelectedItemByText(itemText: string) {\n if(this.question instanceof QuestionRatingModel) {\n const rateValues = this.question.rateValues;\n return rateValues?.filter((choice: ItemValue) => choice.text === itemText)[0] ?? new ItemValue(parseFloat(itemText), itemText);\n }\n const selBase = <QuestionSelectBase>this.question;\n if (this.question.hasOther && itemText == selBase.otherText) {\n return selBase.otherItem;\n } else {\n return selBase.choices.filter(\n (choice: ItemValue) => choice.text === itemText\n )[0];\n }\n }\n\n protected onSelectionChanged(item: ItemValue): void {\n if (this.onDataItemSelected !== undefined) {\n this.onDataItemSelected(\n item !== undefined ? item.value : undefined,\n item !== undefined ? item.text : \"\"\n );\n }\n this.stateChanged(\"filter\", this.selectedItem?.value);\n }\n\n setSelection(item: ItemValue): void {\n if (this.selectedItem !== item) {\n this.selectedItem = item;\n this.onSelectionChanged(item);\n }\n }\n get selection() {\n return this.selectedItem;\n }\n\n /**\n * Gets and sets whether chart should show percentages only.\n */\n public get showOnlyPercentages(): boolean {\n return this._showOnlyPercentages;\n }\n\n public set showOnlyPercentages(val: boolean) {\n this._showOnlyPercentages = val;\n this.refreshContent();\n this.stateChanged(\"showOnlyPercentages\", val);\n }\n\n protected getShowPercentagesDefault(): boolean {\n if(this.options.showPercentages === undefined) {\n return [\"pie\", \"doughnut\"].indexOf(this.chartType) !== -1;\n }\n return this.options.showPercentages === true;\n }\n\n /**\n * Gets and sets whether chart should show values and percentages.\n */\n public get showPercentages(): boolean {\n if(this._showPercentages !== undefined) {\n return this._showPercentages;\n } else {\n return this.getShowPercentagesDefault();\n }\n }\n\n public set showPercentages(val: boolean) {\n this._showPercentages = val;\n this.updateShowPercentageBtn();\n this.refreshContent();\n this.stateChanged(\"showPercentages\", val);\n }\n\n /**\n * Gets and sets chart elements order.\n */\n public get answersOrder() {\n return this._answersOrder;\n }\n\n public set answersOrder(value: string) {\n this._answersOrder = value;\n this.updateOrderSelector();\n this.refreshContent();\n this.stateChanged(\"answersOrder\", value);\n }\n\n /**\n * Set to true if need to hide empty chart elements (e.g. bars vith zero value).\n */\n public get hideEmptyAnswers() {\n return this._hideEmptyAnswers;\n }\n\n public set hideEmptyAnswers(value: boolean) {\n this._hideEmptyAnswers = value;\n this.updateEmptyAnswersBtn();\n this.refreshContent();\n this.stateChanged(\"hideEmptyAnswers\", value);\n }\n\n public get transposeData(): boolean {\n return this._transposeData;\n }\n\n public set transposeData(value: boolean) {\n this._transposeData = value;\n this.updateTransposeDataBtn();\n this.refreshContent();\n this.stateChanged(\"transposeData\", value);\n }\n\n /**\n * Set to some value if need to show top N chart elements.\n */\n public get topN(): number {\n return this._topN;\n }\n\n public set topN(value: number) {\n this._topN = value;\n this.updateTopNSelector();\n this.updateOrderSelector();\n this.refreshContent();\n this.stateChanged(\"topN\", value);\n }\n\n protected isSupportAnswersOrder(): boolean {\n return this.options.allowSortAnswers !== false &&\n this.options.allowChangeAnswersOrder !== false &&\n this.getSeriesValues().length === 0;\n }\n\n protected isSupportMissingAnswers(): boolean {\n return true;\n }\n\n /**\n * Set to true if you want to see chart elements for missing answers (e.g. radiogroup items never been selected by surveyee).\n */\n public get showMissingAnswers() {\n return this._showMissingAnswers;\n }\n\n public set showMissingAnswers(value: boolean) {\n this._showMissingAnswers = this.isSupportMissingAnswers() && value;\n this.updateMissingAnswersBtn();\n this.dataProvider.raiseDataChanged(this.name);\n this.refreshContent();\n this.stateChanged(\"showMissingAnsewrs\", value);\n }\n\n refreshContent() {\n if (!!this.contentContainer) {\n this.destroyContent(this.contentContainer);\n this.renderContent(this.contentContainer);\n }\n this.invokeOnUpdate();\n }\n\n onDataItemSelected: (selectedValue: any, selectedText: string) => void;\n\n get showValuesInOriginalOrder() {\n return this.options.showValuesInOriginalOrder !== false;\n }\n\n valuesSource(): Array<ItemValue> {\n let question = <QuestionSelectBase>this.question;\n if(!!question.choicesFromQuestion && !!question.survey) {\n question = <QuestionSelectBase>question.survey.getQuestionByName(question.choicesFromQuestion);\n }\n return question[\"activeChoices\"] || question.visibleChoices || question.choices || [];\n }\n\n getValues(): Array<any> {\n const values: Array<any> = this.valuesSource().map(\n (choice) => choice.value\n );\n\n if ((<QuestionSelectBase>this.question).hasNone) {\n values.push((<QuestionSelectBase>this.question).noneItem.value);\n }\n if (this.question.hasOther) {\n values.push(\"other\");\n }\n if (this.showMissingAnswers) {\n values.unshift(undefined);\n }\n if (this.showValuesInOriginalOrder) {\n return values.reverse();\n }\n return values;\n }\n\n getLabels(): Array<string> {\n if (this.options.useValuesAsLabels) {\n return this.getValues();\n }\n const labels: Array<string> = this.valuesSource().map((choice) =>\n ItemValue.getTextOrHtmlByValue(this.valuesSource(), choice.value)\n );\n const selBase = <QuestionSelectBase>this.question;\n if (selBase.hasNone) {\n labels.push(selBase.noneText);\n }\n if (selBase.hasOther) {\n labels.push(selBase.otherText);\n }\n if (this.showMissingAnswers) {\n labels.unshift(localization.getString(\"missingAnswersLabel\"));\n }\n if (this.showValuesInOriginalOrder) {\n return labels.reverse();\n }\n return labels;\n }\n\n getPercentages(data: Array<Array<number>>): Array<Array<number>> {\n var percentages: Array<Array<number>> = [];\n var percentagePrecision = this._percentagePrecision;\n\n if (data.length < 2) {\n var sum = data[0].reduce((sum, val) => sum + val, 0);\n percentages[0] = data[0].map((val) => {\n var value = percentagePrecision ? + (val / sum * 100).toFixed(percentagePrecision) : Math.round(val / sum * 100);\n return sum && value;\n });\n } else {\n for (var i = 0; i < data[0].length; i++) {\n var sum = 0;\n for (var j = 0; j < data.length; j++) {\n sum += data[j][i];\n }\n for (var j = 0; j < data.length; j++) {\n if (!Array.isArray(percentages[j])) percentages[j] = [];\n var value = percentagePrecision ? + (data[j][i] / sum * 100).toFixed(percentagePrecision) : Math.round(data[j][i] / sum * 100);\n percentages[j][i] = sum && value;\n }\n }\n }\n return percentages;\n }\n\n /**\n * Fires when answer data has been combined before they passed to draw graph.\n * options - the answers data object containing: datasets, labels, colors, additional texts (percentage).\n * options fields can be modified\n */\n public onAnswersDataReady = new Event<\n (sender: SelectBase, options: any) => any,\n SelectBase,\n any\n >();\n\n /**\n * Returns object with all infotmation for data visualization: datasets, labels, colors, additional texts (percentage).\n */\n public async getAnswersData(): Promise<IAnswersData> {\n let seriesLabels = this.getSeriesLabels();\n let datasets = (await this.getCalculatedValues()) as number[][];\n let labels = this.getLabels();\n let colors = this.getColors();\n\n if (this.transposeData) {\n datasets = this.transpose(datasets);\n const temp = seriesLabels;\n seriesLabels = labels;\n labels = temp;\n }\n\n var texts = this.showPercentages ? this.getPercentages(datasets) : datasets;\n\n if (this.answersOrder == \"asc\" || this.answersOrder == \"desc\") {\n var zippedArray = this.showPercentages\n ? DataHelper.zipArrays(labels, colors, texts[0])\n : DataHelper.zipArrays(labels, colors);\n let dict = DataHelper.sortDictionary(\n zippedArray,\n datasets[0],\n this.answersOrder == \"desc\"\n );\n let unzippedArray = DataHelper.unzipArrays(dict.keys);\n labels = unzippedArray[0];\n colors = unzippedArray[1];\n if (this.showPercentages) texts[0] = unzippedArray[2];\n datasets[0] = dict.values;\n }\n\n let answersData = {\n datasets,\n labels,\n colors,\n texts,\n seriesLabels,\n };\n\n if (this.hideEmptyAnswers) {\n answersData = hideEmptyAnswersInData(answersData);\n }\n if (this.topN > 0) {\n answersData.datasets[0] = answersData.datasets[0].slice(-this.topN);\n answersData.labels = answersData.labels.slice(-this.topN);\n answersData.colors = answersData.colors.slice(-this.topN);\n answersData.texts[0] = answersData.texts[0].slice(-this.topN);\n }\n this.onAnswersDataReady.fire(this, answersData);\n\n return answersData;\n }\n\n public convertFromExternalData(externalCalculatedData: any): any[] {\n const values = this.getValues();\n const series = this.getSeriesValues();\n const innerCalculatedData = [];\n if(series.length > 0) {\n for(let j=0; j<series.length; j++) {\n const seriesData = [];\n for(let i=0; i<values.length; i++) {\n if(!!externalCalculatedData[series[j]]) {\n seriesData.push(externalCalculatedData[series[j]][values[i]] || 0);\n } else {\n seriesData.push(0);\n }\n }\n innerCalculatedData.push(seriesData);\n }\n } else {\n const seriesData = [];\n for(let i=0; i<values.length; i++) {\n seriesData.push(externalCalculatedData[values[i]] || 0);\n }\n innerCalculatedData.push(seriesData);\n }\n return innerCalculatedData;\n }\n\n protected transpose(data: Array<Array<number>>): Array<Array<number>> {\n const dim2 = data[0].length;\n const result = new Array<Array<number>>(dim2);\n for (let i = 0; i < dim2; ++i)\n result[i] = new Array<number>(data.length);\n\n for (let i = 0; i < data.length; ++i)\n for (let j = 0; j < dim2; ++j) {\n result[j][i] = data[i][j];\n }\n return result;\n }\n\n private static _stateProperties = [\"chartType\", \"answersOrder\", \"hideEmptyAnswers\", \"topN\"];\n public getState(): any {\n let state: any = {};\n SelectBase._stateProperties.forEach(propertyName => {\n state[propertyName] = (<any>this)[propertyName];\n });\n if(!!this.selectedItem) {\n state.filter = this.selectedItem.value;\n }\n return state;\n }\n public setState(state: any): void {\n SelectBase._stateProperties.forEach(propertyName => {\n if (state[propertyName] !== undefined) {\n (<any>this)[propertyName] = state[propertyName];\n }\n });\n const selectedItem = ItemValue.getItemByValue((this.question as QuestionSelectBase).visibleChoices, state.filter);\n this.setSelection(selectedItem ?? undefined);\n }\n public resetState(): void {\n super.resetState();\n // this._showPercentages = this.options.showPercentages === true;\n // this._showOnlyPercentages = this.options.showOnlyPercentages === true;\n // this._showMissingAnswers = this.isSupportMissingAnswers() && this.options.showMissingAnswers === true;\n // this._transposeData = this.options.transposeData || false;\n this._hideEmptyAnswers = this.options.hideEmptyAnswers === true;\n this._answersOrder = this.options.answersOrder || \"default\";\n this._topN = -1;\n this.chartType = this.chartTypes[0];\n this.setSelection(undefined);\n }\n}\n\nVisualizationManager.registerVisualizer(\"checkbox\", SelectBase);\nVisualizationManager.registerVisualizer(\"radiogroup\", SelectBase);\nVisualizationManager.registerVisualizer(\"dropdown\", SelectBase);\nVisualizationManager.registerVisualizer(\"imagepicker\", SelectBase);\nVisualizationManager.registerVisualizer(\"tagbox\", SelectBase);\nVisualizationManager.registerVisualizer(\"rating\", SelectBase, 100);","import { DataProvider } from \"./dataProvider\";\nimport { IDataInfo } from \"./visualizerBase\";\n\nexport function defaultStatisticsCalculator(data: Array<any>, dataInfo: IDataInfo): Array<any> {\n const dataNames = dataInfo.dataNames;\n const statistics: Array<Array<Array<number>>> = [];\n\n const values = dataInfo.getValues();\n const valuesIndex: { [index: string]: number } = {};\n values.forEach((val: any, index: number) => {\n valuesIndex[val] = index;\n });\n const processMissingAnswers = values.indexOf(undefined) !== -1;\n\n const series = dataInfo.getSeriesValues();\n const seriesIndex: { [index: string]: number } = {};\n series.forEach((val: any, index: number) => {\n seriesIndex[val] = index;\n });\n\n const seriesLength = series.length || 1;\n for (var i = 0; i < dataNames.length; ++i) {\n const dataNameStatistics = new Array<Array<number>>();\n for (var j = 0; j < seriesLength; ++j) {\n dataNameStatistics.push(new Array<number>(values.length).fill(0));\n }\n statistics.push(dataNameStatistics);\n }\n const getValueIndex = (val) => {\n if(val !== null && typeof val === \"object\") return valuesIndex[val.value];\n return valuesIndex[val];\n };\n\n const processDataRow = (dataRow, dataName, index) => {\n const rowValue = dataRow[dataName];\n if (rowValue !== undefined || processMissingAnswers) {\n const rowValues = Array.isArray(rowValue) ? rowValue : [rowValue];\n if (series.length > 0) {\n const rowName = dataRow[DataProvider.seriesMarkerKey];\n if (rowName !== undefined) {\n // Series are labelled by seriesMarkerKey in row data\n const seriesNo = seriesIndex[rowName] || 0;\n rowValues.forEach((val) => {\n const valIndex = getValueIndex(val);\n statistics[index][seriesNo][valIndex]++;\n });\n } else {\n // Series are the keys in question value (matrix question)\n // TODO: think about the de-normalization and combine with the previous case\n rowValues.forEach((val) => {\n series.forEach((seriesName) => {\n if (val[seriesName] !== undefined) {\n const seriesNo = seriesIndex[seriesName] || 0;\n const values = Array.isArray(val[seriesName]) ? val[seriesName] : [val[seriesName]];\n values.forEach(value => {\n const valIndex = getValueIndex(value);\n statistics[index][seriesNo][valIndex]++;\n });\n }\n });\n });\n }\n } else {\n // No series\n rowValues.forEach((val) => {\n const valIndex = getValueIndex(val);\n statistics[0][0][valIndex]++;\n });\n }\n }\n };\n\n data.forEach((dataRow: any) => {\n const nestedDataRows = getNestedDataRows(dataRow, dataInfo);\n nestedDataRows.forEach(nestedDataRow => {\n dataNames.forEach((dataName, index) => {\n processDataRow(nestedDataRow, dataName, index);\n });\n });\n });\n\n return dataInfo.dataNames.length > 1 ? statistics : statistics[0] as any;\n}\n\nexport function histogramStatisticsCalculator(data: { [series: string]: Array<{continuous: number, row: any}> }, intervals: Array<{ start: number, end: number, label: string }>, dataInfo: IDataInfo, aggregateDataNames = []): Array<any> {\n const seriesValues = dataInfo.getSeriesValues();\n const statistics: Array<Array<number>> = [];\n if (seriesValues.length === 0) {\n seriesValues.push(\"\");\n }\n for (var i = 0; i < seriesValues.length; ++i) {\n statistics.push(intervals.map(i => 0));\n data[seriesValues[i]].forEach(dataValue => {\n for (let j = 0; j < intervals.length; ++j) {\n if (intervals[j].start <= dataValue.continuous && (dataValue.continuous < intervals[j].end || j == intervals.length - 1)) {\n if(aggregateDataNames.length > 0) {\n aggregateDataNames.forEach(aggregateDataName => {\n const aggregateDataValue = dataValue.row[aggregateDataName];\n const numberValue = parseFloat(aggregateDataValue);\n if(aggregateDataValue !== undefined && !isNaN(numberValue)) {\n statistics[i][j] += numberValue;\n }\n });\n } else {\n statistics[i][j]++;\n }\n break;\n }\n }\n });\n }\n return statistics;\n}\n\nexport function mathStatisticsCalculator(data: Array<any>, dataInfo: IDataInfo) {\n let resultMin = Number.MAX_VALUE,\n resultMax = -Number.MAX_VALUE,\n resultAverage = 0;\n let actualAnswerCount = 0;\n\n data.forEach((dataRow) => {\n const nestedDataRows = getNestedDataRows(dataRow, dataInfo);\n nestedDataRows.forEach(nestedDataRow => {\n const answerData = nestedDataRow[dataInfo.dataNames[0]];\n if (answerData !== undefined) {\n const questionValue: number = +answerData;\n actualAnswerCount++;\n resultAverage += questionValue;\n if (resultMin > questionValue) {\n resultMin = questionValue;\n }\n if (resultMax < questionValue) {\n resultMax = questionValue;\n }\n }\n });\n });\n\n if (actualAnswerCount > 0) {\n resultAverage = resultAverage / actualAnswerCount;\n }\n resultAverage = Math.ceil(resultAverage * 100) / 100;\n\n return [resultAverage, resultMin, resultMax];\n}\n\nexport function getNestedDataRows(dataRow: any, dataInfo: IDataInfo): Array<any> {\n let nestedDataRows = [];\n if(!dataInfo.dataPath) {\n nestedDataRows = [dataRow];\n } else {\n if(dataRow[dataInfo.dataPath] === undefined) return [];\n if(typeof dataRow[dataInfo.dataPath] !== \"object\") return [];\n if(Array.isArray(dataRow[dataInfo.dataPath])) {\n nestedDataRows = dataRow[dataInfo.dataPath];\n } else {\n nestedDataRows = [dataRow[dataInfo.dataPath]];\n }\n }\n return nestedDataRows;\n}\n","// extracted by mini-css-extract-plugin\nexport {};","import { Question } from \"survey-core\";\nimport { SelectBase } from \"./selectBase\";\nimport { BooleanModel } from \"./boolean\";\nimport { VisualizationManager } from \"./visualizationManager\";\nimport { DocumentHelper } from \"./utils\";\nimport { localization } from \"./localizationManager\";\n\nimport \"./statistics-table.scss\";\n\nexport class StatisticsTableAdapter {\n constructor(private model: SelectBase) {}\n\n public async create(container: HTMLElement): Promise<void> {\n let {\n datasets,\n labels,\n colors,\n texts,\n seriesLabels,\n } = await this.model.getAnswersData();\n\n const hasSeries = seriesLabels.length > 1;\n\n const emptyTextNode = <HTMLElement>DocumentHelper.createElement(\"p\", \"\", {\n innerText: localization.getString(\"noResults\"),\n });\n\n if (datasets.length === 0 || datasets[0].length === 0) {\n container.appendChild(emptyTextNode);\n return;\n }\n\n datasets.forEach((data, idx) => {\n const tableNode = <HTMLTableElement>(\n DocumentHelper.createElement(\"table\", \"sa-statistics-table\")\n );\n\n tableNode.style.backgroundColor = this.model.backgroundColor;\n container.appendChild(tableNode);\n\n var headerRow = DocumentHelper.createElement(\"tr\");\n var labelCell = DocumentHelper.createElement(\"th\", \"sa-statistics-table__cell-header\", {\n textContent: localization.getString(\"answer\"),\n });\n headerRow.appendChild(labelCell);\n var sparklineCell = DocumentHelper.createElement(\"th\", \"sa-statistics-table__cell-header\", {\n textContent: localization.getString(\"statistics_chart\"),\n });\n headerRow.appendChild(sparklineCell);\n var percentCell = DocumentHelper.createElement(\"th\", \"sa-statistics-table__cell-header\", {\n textContent: localization.getString(\"percentage\"),\n });\n headerRow.appendChild(percentCell);\n var valueCell = DocumentHelper.createElement(\"th\", \"sa-statistics-table__cell-header\", {\n textContent: localization.getString(\"responses\"),\n });\n headerRow.appendChild(valueCell);\n tableNode.appendChild(headerRow);\n\n for(let index = data.length - 1; index >= 0; index--) {\n var row = DocumentHelper.createElement(\"tr\");\n var labelCell = DocumentHelper.createElement(\"td\", \"sa-statistics-table__cell\", {\n textContent: labels[index],\n });\n row.appendChild(labelCell);\n var sparklineCell = DocumentHelper.createElement(\"td\", \"sa-statistics-table__cell\");\n var outerBar = DocumentHelper.createElement(\"div\", \"sa-choices-sparkline\");\n var innerBar = DocumentHelper.createElement(\"div\", \"sa-choices-sparkline-value\");\n innerBar.style.width = texts[idx][index] + \"%\";\n outerBar.appendChild(innerBar);\n sparklineCell.appendChild(outerBar);\n row.appendChild(sparklineCell);\n var percentCell = DocumentHelper.createElement(\"td\", \"sa-statistics-table__cell sa-statistics-table__cell-value\", {\n textContent: \"\" + texts[idx][index] + \"%\",\n });\n row.appendChild(percentCell);\n var valueCell = DocumentHelper.createElement(\"td\", \"sa-statistics-table__cell sa-statistics-table__cell-value\", {\n textContent: data[index],\n });\n row.appendChild(valueCell);\n tableNode.appendChild(row);\n }\n\n container.className = \"sa-statistics-table__container\";\n container.appendChild(tableNode);\n });\n }\n\n public destroy(node: HTMLElement) {\n node.innerHTML = \"\";\n }\n}\n\nexport class StatisticsTable extends SelectBase {\n private _statisticsTableAdapter: StatisticsTableAdapter;\n\n constructor(\n question: Question,\n data: Array<{ [index: string]: any }>,\n options?: Object,\n name?: string\n ) {\n super(question, data, options, name || \"choices\");\n this._statisticsTableAdapter = new StatisticsTableAdapter(this);\n this.showPercentages = true;\n }\n\n protected destroyContent(container: HTMLElement) {\n this._statisticsTableAdapter.destroy(container);\n super.destroyContent(container);\n }\n\n protected async renderContentAsync(container: HTMLElement) {\n const tableNode: HTMLElement = DocumentHelper.createElement(\"div\");\n await this._statisticsTableAdapter.create(tableNode);\n container.innerHTML = \"\";\n container.appendChild(tableNode);\n return container;\n }\n\n destroy() {\n this._statisticsTableAdapter.destroy(this.contentContainer);\n super.destroy();\n }\n}\n\nexport class StatisticsTableBoolean extends BooleanModel {\n private _statisticsTableAdapter: StatisticsTableAdapter;\n\n constructor(\n question: Question,\n data: Array<{ [index: string]: any }>,\n options?: Object,\n name?: string\n ) {\n super(question, data, options, name || \"options\");\n this._statisticsTableAdapter = new StatisticsTableAdapter(this);\n this.showPercentages = true;\n }\n\n protected destroyContent(container: HTMLElement) {\n this._statisticsTableAdapter.destroy(container);\n super.destroyContent(container);\n }\n\n protected async renderContentAsync(container: HTMLElement) {\n const tableNode: HTMLElement = DocumentHelper.createElement(\"div\");\n await this._statisticsTableAdapter.create(tableNode);\n container.innerHTML = \"\";\n container.appendChild(tableNode);\n return container;\n }\n\n destroy() {\n this._statisticsTableAdapter.destroy(this.contentContainer);\n super.destroy();\n }\n}\n\nVisualizationManager.registerVisualizer(\"radiogroup\", StatisticsTable);\nVisualizationManager.registerVisualizer(\"dropdown\", StatisticsTable);\nVisualizationManager.registerVisualizer(\"checkbox\", StatisticsTable);\nVisualizationManager.registerVisualizer(\"boolean\", StatisticsTableBoolean);\n","// eslint-disable-next-line @typescript-eslint/ban-ts-comment\r\n//@ts-ignore\r\nimport iconsData from \"icons\";\r\n\r\nconst iconPrefix = \"sa-svg-\";\r\nfunction getIconSymbolTemplate(iconId: string, iconSvg: string): string {\r\n const startStr = \"<svg \";\r\n const endStr = \"</svg>\";\r\n iconSvg = iconSvg.trim();\r\n const str = iconSvg.toLowerCase();\r\n\r\n if (str.substring(0, startStr.length) === startStr &&\r\n str.substring(str.length - endStr.length, str.length) === endStr) {\r\n return \"<symbol \" +\r\n \"id=\\\"\" + iconPrefix + iconId + \"\\\" \" +\r\n iconSvg.substring(startStr.length, str.length - endStr.length) +\r\n \"</symbol>\";\r\n }\r\n}\r\n\r\nconst iconsHtml = Object.keys(iconsData).map(iconId => getIconSymbolTemplate(iconId, iconsData[iconId]));\r\nconst svgTemplate = `<svg style=\"display:none;\">${iconsHtml}<svg>`;\r\nexport { svgTemplate };","// extracted by mini-css-extract-plugin\nexport {};","import { Question, QuestionMultipleTextModel } from \"survey-core\";\r\nimport { VisualizerBase } from \"./visualizerBase\";\r\nimport { VisualizationManager } from \"./visualizationManager\";\r\nimport { localization } from \"./localizationManager\";\r\nimport { DocumentHelper } from \"./utils\";\r\n\r\nimport \"./text.scss\";\r\n\r\nexport class TextTableAdapter {\r\n constructor(private model: Text) {}\r\n\r\n public async create(container: HTMLElement): Promise<void> {\r\n const { columnCount, data } = (await this.model.getCalculatedValues()) as any;\r\n const emptyTextNode = <HTMLElement>DocumentHelper.createElement(\"p\", \"\", {\r\n innerText: localization.getString(\"noResults\"),\r\n });\r\n\r\n if (data.length === 0) {\r\n container.appendChild(emptyTextNode);\r\n return;\r\n }\r\n\r\n const tableNode = <HTMLTableElement>(\r\n DocumentHelper.createElement(\"table\", \"sa-text-table\")\r\n );\r\n\r\n tableNode.style.backgroundColor = this.model.backgroundColor;\r\n container.appendChild(tableNode);\r\n\r\n if(this.model.columns) {\r\n var row = DocumentHelper.createElement(\"tr\");\r\n this.model.columns.forEach(column => {\r\n var td = DocumentHelper.createElement(\"th\", \"sa-text-table__cell\", {\r\n textContent: column.title,\r\n });\r\n row.appendChild(td);\r\n });\r\n tableNode.appendChild(row);\r\n }\r\n\r\n data.forEach((rowData) => {\r\n var row = DocumentHelper.createElement(\"tr\");\r\n for (var i = 0; i < columnCount; i++) {\r\n const column = this.model.columns[i];\r\n var td = DocumentHelper.createElement(\"td\", \"sa-text-table__cell\" + (column?.type == \"number\" ? \" sa-text-table__cell--number\" : \"\"), {\r\n textContent: rowData[i],\r\n });\r\n row.appendChild(td);\r\n }\r\n tableNode.appendChild(row);\r\n });\r\n\r\n container.className = \"sa-text-table__container\";\r\n container.appendChild(tableNode);\r\n }\r\n\r\n public destroy(node: HTMLElement) {\r\n node.innerHTML = \"\";\r\n }\r\n}\r\n\r\nexport class Text extends VisualizerBase {\r\n private _textTableAdapter: TextTableAdapter;\r\n\r\n constructor(\r\n question: Question,\r\n data: Array<{ [index: string]: any }>,\r\n options?: Object,\r\n name?: string\r\n ) {\r\n super(question, data, options, name || \"text\");\r\n this._textTableAdapter = new TextTableAdapter(this);\r\n }\r\n\r\n public get columns(): Array<{ name: string, title: string, type: string }> {\r\n const columns = [];\r\n if(this.question.getType() == \"multipletext\") {\r\n (this.question as QuestionMultipleTextModel).items.forEach(item => {\r\n columns.push({ name: item.name, title: item.title, type: item.inputType });\r\n });\r\n }\r\n return columns;\r\n }\r\n\r\n protected getCalculatedValuesCore(): any {\r\n let result: Array<Array<string>> = [];\r\n let columnCount = 0;\r\n\r\n this.surveyData.forEach((row) => {\r\n const rowValue: any = row[this.question.name];\r\n let dataStrings: Array<string> = [];\r\n if (!!rowValue) {\r\n if (Array.isArray(rowValue)) {\r\n dataStrings = dataStrings.concat(rowValue);\r\n } else {\r\n if (typeof rowValue === \"object\") {\r\n Object.keys(rowValue).forEach((key) =>\r\n dataStrings.push(rowValue[key])\r\n );\r\n } else {\r\n dataStrings.push(rowValue);\r\n }\r\n }\r\n result.push(dataStrings);\r\n if (dataStrings.length > columnCount) {\r\n columnCount = dataStrings.length;\r\n }\r\n }\r\n });\r\n\r\n return { columnCount: columnCount, data: result };\r\n }\r\n\r\n protected destroyContent(container: HTMLElement) {\r\n this._textTableAdapter.destroy(container);\r\n super.destroyContent(container);\r\n }\r\n\r\n protected async renderContentAsync(container: HTMLElement) {\r\n const tableNode: HTMLElement = DocumentHelper.createElement(\"div\");\r\n await this._textTableAdapter.create(tableNode);\r\n container.innerHTML = \"\";\r\n container.appendChild(tableNode);\r\n return container;\r\n }\r\n\r\n destroy() {\r\n this._textTableAdapter.destroy(this.contentContainer);\r\n super.destroy();\r\n }\r\n}\r\n\r\nVisualizationManager.registerVisualizer(\"text\", Text);\r\nVisualizationManager.registerVisualizer(\"comment\", Text);\r\nVisualizationManager.registerVisualizer(\"multipletext\", Text);\r\n","export var __assign =\n (<any>Object)[\"assign\"] ||\n function(target: any) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s)\n if (Object.prototype.hasOwnProperty.call(s, p)) target[p] = s[p];\n }\n return target;\n };\n\nexport function __extends(thisClass: any, baseClass: any) {\n for (var p in baseClass)\n if (baseClass.hasOwnProperty(p)) thisClass[p] = baseClass[p];\n function __() {\n this.constructor = thisClass;\n }\n thisClass.prototype =\n baseClass === null\n ? Object.create(baseClass)\n : ((__.prototype = baseClass.prototype), new (<any>__)());\n}\n\nexport var __rest = function(source: any, e: any) {\n var result: any = {};\n for (var propertyName in source)\n if (\n Object.prototype.hasOwnProperty.call(source, propertyName) &&\n e.indexOf(propertyName) < 0\n )\n result[propertyName] = source[propertyName];\n if (\n source != null &&\n typeof (<any>Object)[\"getOwnPropertySymbols\"] === \"function\"\n )\n for (\n var i = 0,\n propertySymbols = (<any>Object)[\"getOwnPropertySymbols\"](source);\n i < propertySymbols.length;\n i++\n )\n if (e.indexOf(propertySymbols[i]) < 0)\n result[propertySymbols[i]] = source[propertySymbols[i]];\n return result;\n};\n\ndeclare var Reflect: any;\n\nexport var __decorate = function(\n decorators: any,\n target: any,\n key: any,\n desc: any\n) {\n var c = arguments.length,\n r =\n c < 3\n ? target\n : desc === null\n ? (desc = Object.getOwnPropertyDescriptor(target, key))\n : desc,\n d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\")\n r = Reflect.decorate(decorators, target, key, desc);\n else\n for (var i = decorators.length - 1; i >= 0; i--)\n if ((d = decorators[i]))\n r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n\nexport function __awaiter(thisArg: any, _arguments: any, P: any, generator: any) {\n function adopt(value: any) { return value instanceof P ? value : new P(function (resolve: any) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve: any, reject: any) {\n function fulfilled(value: any) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value: any) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result: any) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg: any, body: any) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: <any>[], ops: <any>[] }, f: any, y: any, t: any, g: any;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n: any) { return function (v: any) { return step([n, v]); }; }\n function step(op: any) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { (<any>_) = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __spreadArrays = function () {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n};\n\nexport function __spreadArray (to: any, from: any, pack: any) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar: any; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}","import { glc } from \"survey-core\";\r\nimport { localization } from \"../localizationManager\";\r\n\r\nexport class DocumentHelper {\r\n public static createSelector(\r\n options: Array<{ value: string, text: string }> | Function,\r\n isSelected: (option: { value: string, text: string }) => boolean,\r\n handler: (e: any) => void,\r\n title?: string | Function\r\n ) {\r\n const selectWrapper = document.createElement(\"div\");\r\n selectWrapper.className = \"sa-question__select-wrapper\";\r\n const titleElement = DocumentHelper.createElement(\"span\", \"sa-question__select-title\");\r\n const select = document.createElement(\"select\");\r\n select.className = \"sa-question__select\";\r\n const updateTitle = () => {\r\n const titleText = !!title && (typeof title == \"string\" ? title : title());\r\n titleElement.innerText = titleText;\r\n if (!!titleText) {\r\n selectWrapper.insertBefore(titleElement, select);\r\n } else if (titleElement.parentElement === selectWrapper) {\r\n selectWrapper.removeChild(titleElement);\r\n }\r\n };\r\n select.onchange = handler;\r\n selectWrapper.appendChild(select);\r\n const updateOptions = () => {\r\n select.innerHTML = \"\";\r\n const optionsSource = options || [];\r\n const optionItems = Array.isArray(optionsSource) ? optionsSource : optionsSource();\r\n optionItems.forEach((option) => {\r\n let optionElement = DocumentHelper.createElement(\"option\", \"\", {\r\n value: option.value,\r\n text: option.text,\r\n selected: isSelected(option),\r\n });\r\n select.appendChild(optionElement);\r\n });\r\n };\r\n selectWrapper[\"__updateSelect\"] = () => {\r\n updateTitle();\r\n updateOptions();\r\n };\r\n selectWrapper[\"__updateSelect\"]();\r\n return selectWrapper;\r\n }\r\n\r\n public static createButton(\r\n handler: (e: any) => void,\r\n text = \"\",\r\n className = \"sa-toolbar__button\"\r\n ) {\r\n const button = DocumentHelper.createElement(\"span\", className, {\r\n innerText: text,\r\n onclick: handler,\r\n });\r\n return button;\r\n }\r\n\r\n public static createElement(\r\n tagName: string,\r\n className: string = \"\",\r\n attrs?: any\r\n ): HTMLElement {\r\n var el = document.createElement(tagName);\r\n el.className = className;\r\n if (!!attrs) {\r\n Object.keys(attrs).forEach(function (key) {\r\n (<any>el)[key] = attrs[key];\r\n });\r\n }\r\n return el;\r\n }\r\n\r\n public static createSvgElement(path: string): SVGSVGElement {\r\n const svgElem = document.createElementNS(\r\n \"http://www.w3.org/2000/svg\",\r\n \"svg\"\r\n );\r\n const useElem = document.createElementNS(\r\n \"http://www.w3.org/2000/svg\",\r\n \"use\"\r\n );\r\n useElem.setAttributeNS(\r\n \"http://www.w3.org/1999/xlink\",\r\n \"href\",\r\n \"#sa-svg-\" + path\r\n );\r\n svgElem.appendChild(useElem);\r\n return svgElem;\r\n }\r\n\r\n public static createSvgButton(path: string): HTMLButtonElement {\r\n const btn = <HTMLButtonElement>(\r\n DocumentHelper.createElement(\"button\", \"sa-table__svg-button\")\r\n );\r\n btn.appendChild(DocumentHelper.createSvgElement(path));\r\n return btn;\r\n }\r\n\r\n public static createSvgToggleButton(\r\n svgPath1: string,\r\n svPpath2: string,\r\n text1: string,\r\n text2: string,\r\n handler1: (e: any) => any,\r\n handler2: (e: any) => any,\r\n state = \"first\",\r\n className = \"sa-toolbar__button sa-toolbar__svg-button\"\r\n ): HTMLElement {\r\n const svg1 = DocumentHelper.createSvgElement(svgPath1);\r\n const svg2 = DocumentHelper.createSvgElement(svPpath2);\r\n const button = DocumentHelper.createElement(\"button\", className);\r\n\r\n const toggle = (e: any) => {\r\n if (state === \"first\") {\r\n state = \"second\";\r\n button.title = text2;\r\n button.removeChild(svg1);\r\n button.appendChild(svg2);\r\n handler2(e);\r\n } else if (state === \"second\") {\r\n state = \"first\";\r\n button.title = text1;\r\n button.removeChild(svg2);\r\n button.appendChild(svg1);\r\n handler1(e);\r\n }\r\n };\r\n\r\n if (state === \"first\") {\r\n button.title = text1;\r\n button.appendChild(svg1);\r\n } else if ((state = \"second\")) {\r\n button.title = text2;\r\n button.appendChild(svg2);\r\n }\r\n\r\n button.onclick = toggle;\r\n\r\n return button;\r\n }\r\n\r\n public static createInput(\r\n className: string,\r\n placeholder = \"\",\r\n defaultValue = \"\"\r\n ): HTMLInputElement {\r\n var el = <HTMLInputElement>DocumentHelper.createElement(\r\n \"input\",\r\n className,\r\n {\r\n placeholder: placeholder,\r\n defaultValue: defaultValue,\r\n }\r\n );\r\n return el;\r\n }\r\n}\r\n\r\nexport var options = {\r\n runningInBrowser: typeof window.URL.createObjectURL === \"function\",\r\n};\r\n\r\nexport function allowDomRendering() {\r\n return options.runningInBrowser;\r\n}\r\n\r\nfunction getLicenseText(): string {\r\n const d: any = !!glc ? glc(1) : false;\r\n if (!!d && d.toLocaleDateString) return localization.getString(\"license2\").replace(\"{date}\", d.toLocaleDateString());\r\n return localization.getString(\"license\");\r\n}\r\n\r\nexport function createCommercialLicenseLink() {\r\n const container = DocumentHelper.createElement(\"div\", \"sa-commercial\");\r\n const link = DocumentHelper.createElement(\"div\", \"sa-commercial__text\");\r\n const containerSpan = DocumentHelper.createElement(\"span\", \"\");\r\n const textSpan = DocumentHelper.createElement(\r\n \"span\",\r\n \"sa-commercial__product\",\r\n { innerHTML: getLicenseText() }\r\n );\r\n container.appendChild(link).appendChild(containerSpan);\r\n containerSpan.appendChild(textSpan);\r\n return container;\r\n}\r\n\r\nexport function createLoadingIndicator() {\r\n const container = DocumentHelper.createElement(\"div\", \"sa-data-loading-indicator-panel\");\r\n const loadingIndicator = DocumentHelper.createElement(\"div\", \"sa-data-loading-indicator\");\r\n loadingIndicator.innerHTML = `\r\n <svg width=\"64\" height=\"64\" viewBox=\"0 0 64 64\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <g clip-path=\"url(#clip0_17928_11482)\">\r\n <path d=\"M32 64C14.36 64 0 49.65 0 32C0 14.35 14.36 0 32 0C49.64 0 64 14.35 64 32C64 49.65 49.64 64 32 64ZM32 4C16.56 4 4 16.56 4 32C4 47.44 16.56 60 32 60C47.44 60 60 47.44 60 32C60 16.56 47.44 4 32 4Z\" fill=\"#E5E5E5\"></path>\r\n <path d=\"M53.2101 55.2104C52.7001 55.2104 52.1901 55.0104 51.8001 54.6204C51.0201 53.8404 51.0201 52.5704 51.8001 51.7904C57.0901 46.5004 60.0001 39.4704 60.0001 31.9904C60.0001 24.5104 57.0901 17.4804 51.8001 12.1904C51.0201 11.4104 51.0201 10.1404 51.8001 9.36039C52.5801 8.58039 53.8501 8.58039 54.6301 9.36039C60.6701 15.4004 64.0001 23.4404 64.0001 31.9904C64.0001 40.5404 60.6701 48.5704 54.6301 54.6204C54.2401 55.0104 53.7301 55.2104 53.2201 55.2104H53.2101Z\" fill=\"#19B394\"></path>\r\n </g>\r\n <defs>\r\n <clipPath id=\"clip0_17928_11482\">\r\n <rect width=\"64\" height=\"64\" fill=\"white\"></rect>\r\n </clipPath>\r\n </defs>\r\n </svg>\r\n `;\r\n container.appendChild(loadingIndicator);\r\n return container;\r\n}\r\n\r\nexport class DataHelper {\r\n public static zipArrays(...arrays: any[]): any[][] {\r\n let zipArray: any[] = [];\r\n for (let i = 0; i < arrays[0].length; i++) {\r\n zipArray[i] = [];\r\n arrays.forEach((arr) => {\r\n zipArray[i].push(arr[i]);\r\n });\r\n }\r\n return zipArray;\r\n }\r\n\r\n public static unzipArrays(zipArray: any[][]): any[][] {\r\n let arrays: any[][] = [];\r\n zipArray.forEach((value, i) => {\r\n value.forEach((val, j) => {\r\n if (!arrays[j]) arrays[j] = [];\r\n arrays[j][i] = val;\r\n });\r\n });\r\n return arrays;\r\n }\r\n public static sortDictionary(\r\n keys: any[],\r\n values: any[],\r\n desc: boolean\r\n ): { keys: any[], values: any[] } {\r\n let dictionary = this.zipArrays(keys, values);\r\n let comparator = (a: any[], b: any[], asc: boolean = true) => {\r\n let result = a[1] < b[1] ? 1 : a[1] == b[1] ? 0 : -1;\r\n return asc ? result : result * -1;\r\n };\r\n dictionary.sort((a: any[], b: any[]) => {\r\n return desc ? comparator(a, b, false) : comparator(a, b);\r\n });\r\n let keysAndValues = this.unzipArrays(dictionary);\r\n return { keys: keysAndValues[0], values: keysAndValues[1] };\r\n }\r\n\r\n public static toPercentage(value: number, maxValue: number) {\r\n return (value / maxValue) * 100;\r\n }\r\n}\r\n\r\nexport function createLinksContainer(\r\n links: Array<{ name: string, content: any }>\r\n): HTMLElement {\r\n const linksContainer = DocumentHelper.createElement(\"div\");\r\n links.forEach((link) => {\r\n linksContainer.appendChild(\r\n DocumentHelper.createElement(\"a\", \"\", {\r\n innerText: link.name,\r\n download: link.name,\r\n href: link.content,\r\n })\r\n );\r\n });\r\n return linksContainer;\r\n}\r\n\r\nexport function createImagesContainer(\r\n links: Array<{ name: string, content: any }>\r\n): HTMLElement {\r\n const linksContainer = DocumentHelper.createElement(\"div\");\r\n links.forEach((link) => {\r\n linksContainer.appendChild(\r\n DocumentHelper.createElement(\"img\", \"\", {\r\n alt: link.name,\r\n src: link.content,\r\n })\r\n );\r\n });\r\n return linksContainer;\r\n}\r\n\r\nexport function toPrecision(value: number, precision = 2): number {\r\n const base = Math.pow(10, precision);\r\n return Math.round(base * value) / base;\r\n}\r\n","import { Question, QuestionCompositeModel, QuestionMatrixDropdownModel } from \"survey-core\";\nimport { VisualizationManager } from \"./visualizationManager\";\nimport { VisualizationPanelDynamic } from \"./visualizationPanelDynamic\";\n\nexport class VisualizationComposite extends VisualizationPanelDynamic {\n constructor(\n question: Question,\n data: Array<{ [index: string]: any }>,\n options?: Object,\n name?: string\n ) {\n super(question, data, options, name || \"composite\");\n }\n\n getQuestions(): Array<Question> {\n const questionComposite: QuestionCompositeModel = <any>this.question;\n const innerQuestions = [];\n questionComposite.contentPanel.addQuestionsToList(innerQuestions);\n return innerQuestions;\n }\n}\n\nVisualizationManager.registerVisualizer(\n \"composite\",\n VisualizationComposite\n);\n","import { Question } from \"survey-core\";\n\ndeclare type VisualizerConstructor = new (\n question: Question,\n data: Array<{ [index: string]: any }>,\n options?: Object\n) => any;\n\n/**\n * An object with methods used to register and unregister visualizers for individual question types.\n *\n * [View Demo](https://surveyjs.io/dashboard/examples/custom-survey-data-visualizer/ (linkStyle))\n */\nexport class VisualizationManager {\n static defaultVisualizer: any = undefined;\n static alternativesVisualizer: any = undefined;\n static pivotVisualizer: any = undefined;\n static vizualizers: { [index: string]: Array<{ ctor: VisualizerConstructor, index: number }> } = {};\n /**\n * Registers a visualizer for a specified question type.\n *\n * [View Demo](https://surveyjs.io/dashboard/examples/custom-survey-data-visualizer/ (linkStyle))\n * @param questionType A question [type](https://surveyjs.io/form-library/documentation/api-reference/question#getType).\n * @param constructor A function that returns a visualizer constructor to register.\n * @param index A zero-based index that specifies the visualizer's position in the visualizer list for the specified question type. Pass `0` to insert the visualizer at the beginning of the list and use it by default. If `index` is not specified, the visualizer is added to the end of the list.\n */\n public static registerVisualizer(\n questionType: string,\n constructor: VisualizerConstructor,\n index = Number.MAX_VALUE\n ) {\n let visualizers = VisualizationManager.vizualizers[questionType];\n if (!visualizers) {\n visualizers = [];\n VisualizationManager.vizualizers[questionType] = visualizers;\n }\n visualizers.push({ ctor: constructor, index });\n }\n /**\n * Unregisters a visualizer for a specified question type.\n *\n * [View Demo](https://surveyjs.io/dashboard/examples/visualize-answers-from-text-entry-fields-with-charts/ (linkStyle))\n * @param questionType A question [type](https://surveyjs.io/form-library/documentation/api-reference/question#getType).\n * @param constructor A function that returns a visualizer constructor to unregister.\n */\n public static unregisterVisualizer(questionType: string | undefined, constructor: VisualizerConstructor): void {\n let questionTypes = [questionType];\n if(!questionType) {\n questionTypes = Object.keys(VisualizationManager.vizualizers);\n }\n questionTypes.forEach(qType => {\n if(constructor) {\n let visualizers = VisualizationManager.vizualizers[qType];\n if (!!visualizers) {\n const vDescr = visualizers.filter(v => v.ctor === constructor)[0];\n if(!!vDescr) {\n let index = visualizers.indexOf(vDescr);\n if (index !== -1) {\n visualizers.splice(index, 1);\n }\n }\n }\n } else {\n VisualizationManager.vizualizers[qType] = [];\n }\n });\n }\n /**\n * @deprecated Call the [`unregisterVisualizer()`](https://surveyjs.io/dashboard/documentation/api-reference/visualizationmanager#unregisterVisualizer) method instead.\n * @param constructor A function that returns a visualizer constructor to unregister.\n */\n public static unregisterVisualizerForAll(constructor: VisualizerConstructor): void {\n VisualizationManager.unregisterVisualizer(undefined, constructor);\n }\n /**\n * Returns all visualizer constructors for a specified question type.\n * @param visualizerType A question [type](https://surveyjs.io/form-library/documentation/api-reference/question#getType).\n */\n public static getVisualizersByType(\n visualizerType: string,\n fallbackVisualizerType?: string\n ): VisualizerConstructor[] {\n let vDescrs = VisualizationManager.vizualizers[visualizerType];\n if (!!fallbackVisualizerType && (!vDescrs || vDescrs.length == 0)) {\n vDescrs = VisualizationManager.vizualizers[fallbackVisualizerType];\n }\n if (!vDescrs) {\n if(VisualizationManager.defaultVisualizer.suppressVisualizerStubRendering) {\n return [];\n }\n return [VisualizationManager.defaultVisualizer];\n }\n vDescrs = [].concat(vDescrs);\n vDescrs.sort((v1, v2) => v1.index - v2.index);\n return vDescrs.map(v => v.ctor);\n }\n /**\n * Returns a constructor for an alternative visualizer selector.\n * @see registerAltVisualizerSelector\n */\n public static getAltVisualizerSelector() {\n return VisualizationManager.alternativesVisualizer || VisualizationManager.defaultVisualizer;\n }\n /**\n * Registers an alternative visualizer selector.\n * @param constructor A function that returns a constructor for an alternative visualizer selector.\n */\n public static registerAltVisualizerSelector(constructor: any) {\n VisualizationManager.alternativesVisualizer = constructor;\n }\n public static getPivotVisualizerConstructor() {\n return VisualizationManager.pivotVisualizer || VisualizationManager.defaultVisualizer;\n }\n public static registerPivotVisualizer(constructor: any) {\n VisualizationManager.pivotVisualizer = constructor;\n }\n}\n","import {\n QuestionMatrixDropdownModel,\n MatrixDropdownColumn,\n ItemValue,\n QuestionSelectBase,\n Question,\n} from \"survey-core\";\nimport { VisualizerBase } from \"./visualizerBase\";\nimport { VisualizationManager } from \"./visualizationManager\";\nimport { VisualizationPanel } from \"./visualizationPanel\";\n\nfunction isChoicesArraysEqual(\n choices1: Array<ItemValue>,\n choices2: Array<ItemValue>\n): boolean {\n if (choices1.length !== choices2.length) return false;\n for (let i = 0; i < choices1.length; i++) {\n if (\n choices1[i].value !== choices2[i].value ||\n choices1[i].text !== choices2[i].text\n ) {\n return false;\n }\n }\n return true;\n}\n\nexport class VisualizationMatrixDropdown extends VisualizerBase {\n protected _contentVisualizer: VisualizerBase = undefined;\n private readonly _childOptions;\n\n constructor(\n question: QuestionMatrixDropdownModel,\n data: Array<{ [index: string]: any }>,\n options: { [index: string]: any } = {},\n name?: string\n ) {\n super(question, data, options, name || \"matrixDropdown\");\n this.loadingData = false;\n this._childOptions = Object.assign({}, options);\n this._childOptions.disableLocaleSwitch = true;\n this._childOptions.allowDynamicLayout = false;\n this._childOptions.transposeData = true;\n this._childOptions.dataProvider = this.dataProvider;\n this._childOptions.dataPath = this.dataNames[0];\n this._childOptions.seriesValues = question.rows.map((row: ItemValue) => row.value);\n this._childOptions.seriesLabels = question.rows.map((row: ItemValue) => row.text);\n\n this.dataProvider.fixDropdownData(this.dataNames);\n if (this.canGroupColumns) {\n var creators = VisualizationManager.getVisualizersByType(\"matrixdropdown-grouped\");\n this._contentVisualizer = new creators[0](this.question, [], this._childOptions);\n } else {\n const innerQuestions = this.getQuestions();\n this._contentVisualizer = new VisualizationPanel(innerQuestions, [], this._childOptions, undefined, false);\n }\n this._contentVisualizer.onAfterRender.add(this.onPanelAfterRenderCallback);\n }\n\n public get canGroupColumns(): boolean {\n const innerQuestions = this.getQuestions();\n const canGroupColumns = this._childOptions.seriesValues.length == 1 && innerQuestions.every(innerQuestion =>\n innerQuestion.getType() !== \"boolean\" && isChoicesArraysEqual(innerQuestion.choices, (<QuestionSelectBase>this.question).choices));\n return canGroupColumns;\n }\n\n protected setLocale(newLocale: string) {\n super.setLocale(newLocale);\n this._childOptions.seriesLabels = this.question.rows.map((row: ItemValue) => row.text);\n this._contentVisualizer.locale = newLocale;\n }\n\n public get contentVisualizer() {\n return this._contentVisualizer;\n }\n\n private onPanelAfterRenderCallback = () => {\n this.afterRender(this.contentContainer);\n };\n\n updateData(data: Array<{ [index: string]: any }>) {\n super.updateData(data);\n this.dataProvider.fixDropdownData(this.dataNames);\n }\n\n getQuestions(): Array<Question> {\n const matrixdropdown: QuestionMatrixDropdownModel = <any>this.question;\n return matrixdropdown.columns.map(\n (column: MatrixDropdownColumn) => {\n const cellQuestion: any = column.templateQuestion;\n if (Array.isArray(cellQuestion.choices) && cellQuestion.choices.length === 0) {\n cellQuestion.choices = matrixdropdown.choices;\n }\n return cellQuestion;\n }\n );\n }\n\n destroyContent(container: HTMLElement) {\n this._contentVisualizer.clear();\n super.destroyContent(this.contentContainer);\n }\n\n renderContent(container: HTMLElement): void {\n this._contentVisualizer.render(container);\n }\n\n destroy() {\n super.destroy();\n this._contentVisualizer.onAfterRender.remove(this.onPanelAfterRenderCallback);\n }\n}\n\nVisualizationManager.registerVisualizer(\n \"matrixdropdown\",\n VisualizationMatrixDropdown\n);\n","import { Question, QuestionMatrixDropdownModel } from \"survey-core\";\nimport { VisualizationManager } from \"./visualizationManager\";\nimport { VisualizationPanelDynamic } from \"./visualizationPanelDynamic\";\n\nexport class VisualizationMatrixDynamic extends VisualizationPanelDynamic {\n constructor(\n question: Question,\n data: Array<{ [index: string]: any }>,\n options?: Object,\n name?: string\n ) {\n super(question, data, options, name || \"matrixDynamic\");\n }\n\n getQuestions() {\n const matrixdynamic: QuestionMatrixDropdownModel = <any>this.question;\n const visibleRows = matrixdynamic.visibleRows;\n\n if (visibleRows.length === 0) return [];\n\n return visibleRows[0].cells.map(c => c.question);\n }\n}\n\nVisualizationManager.registerVisualizer(\n \"matrixdynamic\",\n VisualizationMatrixDynamic\n);\n","// extracted by mini-css-extract-plugin\nexport {};","import { Event, Question, SurveyModel, surveyLocalization } from \"survey-core\";\nimport { IsTouch } from \"survey-core\";\nimport { VisualizerBase } from \"./visualizerBase\";\nimport { SelectBase, IVisualizerWithSelection } from \"./selectBase\";\nimport { AlternativeVisualizersWrapper } from \"./alternativeVizualizersWrapper\";\nimport { DocumentHelper, createCommercialLicenseLink } from \"./utils/index\";\nimport { localization } from \"./localizationManager\";\nimport { IVisualizerPanelElement, IState, IPermission } from \"./config\";\nimport { FilterInfo } from \"./filterInfo\";\nimport { LayoutEngine, MuuriLayoutEngine } from \"./layoutEngine\";\nimport { DataProvider } from \"./dataProvider\";\nimport { svgTemplate } from \"./svgbundle\";\nimport { VisualizationManager } from \"./visualizationManager\";\nimport \"./visualizationPanel.scss\";\nimport { VisualizationPanelDynamic } from \"./visualizationPanelDynamic\";\n\nconst questionElementClassName = \"sa-question\";\nconst questionLayoutedElementClassName = \"sa-question-layouted\";\n\nif (!!document) {\n const templateHolder = document.createElement(\"div\");\n templateHolder.style.display = \"none\";\n templateHolder.innerHTML = svgTemplate;\n document.head.appendChild(templateHolder);\n}\n\nexport interface IVisualizerPanelRenderedElement\n extends IVisualizerPanelElement {\n renderedElement?: HTMLElement;\n}\n\n/**\n * Visualization Panel configuration. Pass it as the third argument to the [`VisualizationPanel`](https://surveyjs.io/dashboard/documentation/api-reference/visualizationpanel) constructor:\n *\n * ```js\n * import { VisualizationPanel } from \"survey-analytics\";\n *\n * const vizPanel = new VisualizationPanel(\n * surveyQuestions,\n * surveyResults,\n * vizPanelOptions\n * );\n * ```\n *\n * [View Demo](https://surveyjs.io/dashboard/examples/interactive-survey-data-dashboard/ (linkStyle))\n */\nexport interface IVisualizationPanelOptions {\n // An object named after a question that it configures.\n // questionName: {\n // intervals: []\n // },\n\n /**\n * The number of label characters after which truncation starts.\n *\n * Set this property to -1 to disable truncation.\n *\n * Default value: 27\n */\n labelTruncateLength?: number;\n\n allowMakeQuestionsPrivate?: boolean;\n\n seriesValues?: string[];\n seriesLabels?: string[];\n useValuesAsLabels?: boolean;\n\n /**\n * Pass a survey instance to use survey locales in the Visualization Panel.\n *\n * [View Demo](https://surveyjs.io/dashboard/examples/localize-survey-data-dashboard-ui/ (linkStyle))\n */\n survey?: SurveyModel;\n /**\n * A common data provider for all visualizers.\n */\n dataProvider?: DataProvider;\n /**\n * Allows users to change the visibility of individual charts.\n *\n * This property adds a Hide button to each chart.\n *\n * Default value: `true`\n */\n allowHideQuestions?: boolean;\n /**\n * Specifies whether to arrange charts based on the available screen space and allow users to reorder them via drag and drop.\n *\n * If this property is disabled, charts are displayed one under another, and users cannot drag and drop them. If you want to disable only drag and drop, set the [`allowDragDrop`](https://surveyjs.io/dashboard/documentation/api-reference/ivisualizationpaneloptions#allowDynamicLayout) property to `false`.\n *\n * Default value: `true`\n *\n * [View Demo](https://surveyjs.io/dashboard/examples/custom-layout/ (linkStyle))\n * @see layoutEngine\n */\n allowDynamicLayout?: boolean;\n /**\n * Specifies whether users can drag and drop charts. Applies only if [`allowDynamicLayout`](https://surveyjs.io/dashboard/documentation/api-reference/ivisualizationpaneloptions#allowDynamicLayout) is `true`.\n *\n * Default value: `true`\n * @see layoutEngine\n */\n allowDragDrop?: boolean;\n /**\n * A layout engine used to arrange charts on the Visualization Panel.\n *\n * You can use this property to integrate a third-party layout engine with SurveyJS Dashboard.\n *\n * @see allowDynamicLayout\n */\n layoutEngine?: LayoutEngine;\n /**\n * Allows users to switch between absolute and percentage values in bar charts.\n *\n * This property adds a Show Percentages button to each bar chart.\n *\n * Default value: `false`\n *\n * @see showPercentages\n * @see showOnlyPercentages\n * @see percentagePrecision\n */\n allowShowPercentages?: boolean;\n /**\n * Specifies whether bar charts display percentages in addition to absolute values.\n *\n * Users can change this property value if you enable the `allowShowPercentages` property.\n *\n * Default value: `false`\n *\n * @see allowShowPercentages\n * @see showOnlyPercentages\n * @see percentagePrecision\n */\n showPercentages?: boolean;\n /**\n * Specifies whether bar charts display only percentages, without absolute values.\n *\n * Applies only if the `allowShowPercentages` or `showPercentages` property is enabled.\n *\n * Default value: `false`\n *\n * @see allowShowPercentages\n * @see showPercentages\n * @see percentagePrecision\n */\n showOnlyPercentages?: boolean;\n /**\n * Specifies percentage precision.\n *\n * Default value: 2\n *\n * @see allowShowPercentages\n * @see showPercentages\n * @see showOnlyPercentages\n */\n percentagePrecision?: number;\n haveCommercialLicense?: boolean;\n /**\n * Allows users to sort answers by answer count. Applies only to [bar charts](https://surveyjs.io/dashboard/documentation/chart-types#bar-chart), [histograms](https://surveyjs.io/dashboard/documentation/chart-types#histogram), and [statistics tables](https://surveyjs.io/dashboard/documentation/chart-types#statistics-table).\n *\n * This property adds a Sorting dropdown to each supported visualizer.\n *\n * Default value: `true`\n *\n * @see answersOrder\n */\n allowSortAnswers?: boolean;\n /**\n * @deprecated Use the [`allowSortAnswers`](https://surveyjs.io/dashboard/documentation/api-reference/ivisualizationpaneloptions#allowSortAnswers) property instead.\n */\n allowChangeAnswersOrder?: boolean;\n /**\n * Specifies how to sort answers in [bar charts](https://surveyjs.io/dashboard/documentation/chart-types#bar-chart), [histograms](https://surveyjs.io/dashboard/documentation/chart-types#histogram), and [statistics tables](https://surveyjs.io/dashboard/documentation/chart-types#statistics-table).\n *\n * Accepted values:\n *\n * - `\"default\"` (default) - Do not sort answers.\n * - `\"asc\"` - Sort answers by ascending answer count.\n * - `\"desc\"` - Sort answers by descending answer count.\n *\n * Users can change this property value if you enable the `allowSortAnswers` property.\n *\n * @see allowSortAnswers\n */\n answersOrder?: \"default\" | \"asc\" | \"desc\";\n /**\n * Allows users to hide answers with zero count in [bar charts](https://surveyjs.io/dashboard/documentation/chart-types#bar-chart), [histograms](https://surveyjs.io/dashboard/documentation/chart-types#histogram), and [statistics tables](https://surveyjs.io/dashboard/documentation/chart-types#statistics-table).\n *\n * This property adds a Hide Empty Answers button to each supported visualizer.\n *\n * Default value: `false`\n */\n allowHideEmptyAnswers?: boolean;\n /**\n * Hides answers with zero count in [bar charts](https://surveyjs.io/dashboard/documentation/chart-types#bar-chart), [histograms](https://surveyjs.io/dashboard/documentation/chart-types#histogram), and [statistics tables](https://surveyjs.io/dashboard/documentation/chart-types#statistics-table).\n *\n * Users can change this property value if you enable the `allowHideEmptyAnswers` property.\n *\n * Default value: `false`\n *\n * @see allowHideEmptyAnswers\n */\n hideEmptyAnswers?: boolean;\n /**\n * Allows users to select whether to show top 5, 10, or 20 answers by answer count.\n *\n * This property adds a Top N Answers dropdown to each chart.\n *\n * Default value: `false`\n */\n allowTopNAnswers?: boolean;\n /**\n * Allows users to show the number of respondents who did not answer a particular question.\n *\n * This property adds a Show Missing Answers button to each chart.\n *\n * Default value: `false`\n */\n allowShowMissingAnswers?: boolean;\n\n allowExperimentalFeatures?: boolean;\n /**\n * Default chart type.\n *\n * Accepted values depend on the question type as follows:\n *\n * - Boolean: `\"bar\"` | `\"vbar\"` | `\"pie\"` | `\"doughnut\"`\n * - Date, Number: `\"bar\"` | `\"vbar\"`\n * - Matrix: `\"bar\"` | `\"vbar\"` | `\"pie\"` | `\"doughnut\"` | `\"stackedbar\"`\n * - Rating: `\"bar\"` | `\"vbar\"` | `\"gauge\"` | `\"bullet\"`\n * - Radiogroup, Checkbox, Dropdown, Image Picker: `\"bar\"` | `\"vbar\"` | `\"pie\"` | `\"doughnut\"`\n * - Ranking: `\"bar\"` | `\"vbar\"` | `\"pie\"` | `\"doughnut\" | `\"radar\"`\n *\n * To set a type for an individual chart, access this chart in the `visualizers` array or using the [`getVisualizer(questionName)`](https://surveyjs.io/dashboard/documentation/api-reference/visualizationpanel#getVisualizer) method and set its `chartType` property to one of the values described above:\n *\n * ```js\n * const vizPanel = new SurveyAnalytics.VisualizationPanel( ... );\n * vizPanel.visualizers[0].chartType = \"stackedbar\";\n * // --- or ---\n * vizPanel.getVisualizer(\"my-question\").chartType = \"stackedbar\";\n * ```\n */\n defaultChartType?: string;\n /**\n * Allows users to transpose a visualized matrix question.\n *\n * This property adds a Transpose button to charts that visualize matrixes. When users select Per Values, matrix rows go to chart arguments and matrix columns form chart series. When users select Per Columns, matrix rows form chart series and matrix columns go to chart arguments.\n *\n * Default value: `false`\n */\n allowTransposeData?: boolean;\n /**\n * Allows users to cross-filter charts. The filter applies when users select a series point.\n *\n * Default value: `true`\n */\n allowSelection?: boolean;\n\n renderContent?: Function;\n destroyContent?: Function;\n\n /**\n * Removes HTML tags from survey element titles.\n *\n * Survey element titles can contain HTML markup and are specified by users. An attacker can inject malicious code into the titles. To guard against it, keep this property set to `true`.\n *\n * Default value: `true`\n */\n stripHtmlFromTitles?: boolean;\n\n /**\n * Allows users to switch between different visualizer types.\n *\n * Default value: `true`\n */\n allowChangeVisualizerType?: boolean;\n}\n\n/**\n * An object that visualizes survey results and allows users to analyze them.\n *\n * Constructor parameters:\n *\n * - `questions`: Array\\<[`Question`](https://surveyjs.io/form-library/documentation/api-reference/question)\\>\\\n * Survey questions to visualize. Call `SurveyModel`'s [`getAllQuestions()`](https://surveyjs.io/form-library/documentation/api-reference/survey-data-model#getQuestionByName) method to access all survey questions and pass its result as the `questions` parameter.\n * - `data`: `Array<any>`\\\n * Survey results.\n * - `vizPanelOptions`: [`IVisualizationPanelOptions`](https://surveyjs.io/dashboard/documentation/api-reference/ivisualizationpaneloptions)\\\n * Visualization Panel configuration.\n *\n * [View Demo](https://surveyjs.io/dashboard/examples/interactive-survey-data-dashboard/ (linkStyle))\n */\nexport class VisualizationPanel extends VisualizerBase {\n public visualizers: Array<VisualizerBase> = [];\n private renderedQuestionsCount: number = 0;\n constructor(\n protected questions: Array<any>,\n data: Array<{ [index: string]: any }>,\n options: IVisualizationPanelOptions = {},\n private _elements: Array<IVisualizerPanelRenderedElement> = undefined,\n private isRoot = true\n ) {\n super(null, data, options, \"panel\");\n this.loadingData = false;\n\n this._layoutEngine =\n options.layoutEngine ||\n new MuuriLayoutEngine(\n this.allowDynamicLayout,\n \".\" + questionLayoutedElementClassName,\n this.allowDragDrop\n );\n this._layoutEngine.onMoveCallback = (order: Array<string>) =>\n this.reorderVisibleElements(order);\n\n this.showToolbar = isRoot;\n if (this.options.survey) {\n localization.currentLocale = this.options.survey.locale;\n }\n\n if (_elements === undefined) {\n this._elements = this.buildElements(questions);\n }\n\n this.buildVisualizers(questions);\n\n if (!this.haveCommercialLicense && this.isRoot) {\n this.registerToolbarItem(\"commercialLicense\", () => {\n return createCommercialLicenseLink();\n });\n }\n\n this._supportSelection = true;\n if(this.supportSelection !== false) {\n this.registerToolbarItem(\"resetFilter\", () => {\n return DocumentHelper.createButton(() => {\n this.resetFilter();\n }, localization.getString(\"resetFilter\"));\n }, 900);\n }\n\n this.registerToolbarItem(\"addElement\", (toolbar: HTMLDivElement) => {\n if (this.allowHideQuestions) {\n let addElementSelector: HTMLElement = undefined;\n const addElementSelectorUpdater = (\n panel: VisualizationPanel,\n options: any\n ) => {\n const hiddenElements = this.hiddenElements;\n const selectWrapper = DocumentHelper.createSelector(\n [\n <any>{\n name: undefined,\n displayName: localization.getString(\"addElement\"),\n },\n ]\n .concat(hiddenElements)\n .map((element) => {\n return {\n value: element.name,\n text: element.displayName,\n };\n }),\n (option: any) => false,\n (e: any) => {\n this.showElement(e.target.value);\n }\n );\n if(addElementSelector) {\n toolbar.replaceChild(selectWrapper, addElementSelector);\n }\n addElementSelector = selectWrapper;\n\n if (hiddenElements.length > 0) {\n addElementSelector.style.display = undefined;\n } else if(addElementSelector) {\n addElementSelector.style.display = \"none\";\n }\n };\n addElementSelectorUpdater(this, {});\n this.onVisibleElementsChanged.add(addElementSelectorUpdater);\n return addElementSelector;\n }\n return undefined;\n });\n if (!this.options.disableLocaleSwitch && this.locales.length > 1) {\n const localeChoices = this.locales.map((element) => {\n return {\n value: element,\n text: localization.getLocaleName(element)\n };\n });\n // localeChoices.unshift({\n // value: \"\",\n // text: localization.getString(\"changeLocale\"),\n // });\n this.registerToolbarItem(\"changeLocale\", () => {\n return DocumentHelper.createSelector(localeChoices,\n (option: any) => !!option.value && (this.locale || surveyLocalization.defaultLocale) === option.value,\n (e: any) => {\n var newLocale = e.target.value;\n this.locale = newLocale;\n }\n );\n });\n }\n }\n\n public resetFilter(): void {\n this.dataProvider?.resetFilter();\n this.visualizers.forEach((visualizer) => {\n if (visualizer instanceof SelectBase || visualizer instanceof AlternativeVisualizersWrapper) {\n visualizer.setSelection(undefined);\n }\n if (visualizer instanceof VisualizationPanelDynamic) {\n visualizer.resetFilter();\n }\n });\n }\n\n reorderVisibleElements(order: string[]): void {\n const newElements = [];\n order.forEach(name => {\n newElements.push(this._elements.filter(el => el.name === name)[0]);\n });\n this._elements.forEach(el => {\n if(order.indexOf(el.name) == -1) {\n newElements.push(el);\n }\n });\n this._elements = newElements;\n this.visibleElementsChanged(undefined, \"REORDERED\");\n }\n\n private onAfterRenderQuestionCallback = (\n sender: VisualizerBase,\n options: any\n ) => {\n this.renderedQuestionsCount++;\n if (this.renderedQuestionsCount == this.visibleElements.length) {\n this.renderedQuestionsCount = 0;\n this.layoutEngine.update();\n this.afterRender(this.contentContainer);\n }\n };\n\n private onStateChangedCallback = (\n sender: VisualizerBase,\n options: any\n ) => {\n this.stateChanged(sender.question?.name, options);\n };\n\n /**\n * An event that is raised when a user selects a different visualizer type from the Type drop-down menu.\n *\n * Parameters:\n *\n * - `sender`: `AlternativeVisualizersWrapper`\\\n * An object that controls altenative visualizers.\n *\n * - `options.visualizer`: `VisualizerBase`\\\n * An applied visualizer.\n **/\n public onAlternativeVisualizerChanged: Event<\n (sender: AlternativeVisualizersWrapper, options: any) => any,\n AlternativeVisualizersWrapper,\n any\n > = new Event<(sender: AlternativeVisualizersWrapper, options: any) => any, AlternativeVisualizersWrapper, any>();\n\n private onAlternativeVisualizerChangedCallback = (\n sender: AlternativeVisualizersWrapper,\n options: { visualizer: VisualizerBase }\n ) => {\n this.onAlternativeVisualizerChanged.fire(sender, options);\n };\n\n protected onDataChanged(): void {\n }\n\n protected showElementCore(element: IVisualizerPanelRenderedElement, elementIndex = -1): void {\n element.isVisible = true;\n const questionElement = this.renderPanelElement(\n element,\n this.contentContainer\n );\n let options = undefined;\n if(elementIndex >= 0) {\n options = { index: elementIndex };\n }\n this.layoutEngine.add([questionElement], options);\n }\n\n public showElement(elementName: string) {\n const element = this.getElement(elementName);\n const elementIndex = this._elements.indexOf(element);\n this.showElementCore(element, elementIndex);\n this.visibleElementsChanged(element, \"ADDED\");\n }\n\n protected hideElementCore(element: IVisualizerPanelRenderedElement) {\n element.isVisible = false;\n if (!!element.renderedElement) {\n this.layoutEngine.remove([element.renderedElement]);\n this.contentContainer.removeChild(element.renderedElement);\n element.renderedElement = undefined;\n }\n }\n\n public hideElement(elementName: string) {\n const element = this.getElement(elementName);\n this.hideElementCore(element);\n this.visibleElementsChanged(element, \"REMOVED\");\n }\n\n /**\n * Hides all panel elements. Users can select the elements they want to show from a drop-down menu.\n * @see showAllElements\n * @see allowHideQuestions\n */\n public hideAllElements(): void {\n const affectedElements = [];\n this._elements.forEach(element => {\n if(element.isVisible) {\n this.hideElementCore(element);\n affectedElements.push(element);\n }\n });\n this.visibleElementsChanged(undefined, \"REMOVEDALL\");\n }\n\n /**\n * Shows all panel elements if they are hidden to a drop-down menu.\n * @see hideAllElements\n * @see allowHideQuestions\n */\n public showAllElements() {\n const affectedElements = [];\n this._elements.forEach(element => {\n if(!element.isVisible) {\n this.showElementCore(element);\n affectedElements.push(element);\n }\n });\n this.visibleElementsChanged(undefined, \"ADDEDDALL\");\n }\n\n protected makeElementPrivate(element: IVisualizerPanelElement) {\n element.isPublic = false;\n this.stateChanged(\"isPublic\", false);\n this.onPermissionsChangedCallback &&\n this.onPermissionsChangedCallback(this);\n }\n\n protected makeElementPublic(element: IVisualizerPanelElement) {\n element.isPublic = true;\n this.stateChanged(\"isPublic\", true);\n this.onPermissionsChangedCallback &&\n this.onPermissionsChangedCallback(this);\n }\n\n protected moveVisibleElement(\n fromVisibleIndex: number,\n toVisibleIndex: number\n ) {\n let fromIndex, toIndex;\n\n let fromVisibleIndexElement = this.visibleElements[fromVisibleIndex];\n let toVisibleIndexElement = this.visibleElements[toVisibleIndex];\n\n fromIndex = this._elements.indexOf(fromVisibleIndexElement);\n toIndex = this._elements.indexOf(toVisibleIndexElement);\n\n this.moveElement(fromIndex, toIndex);\n }\n\n protected moveElement(fromIndex: number, toIndex: number) {\n var elements = this._elements.splice(fromIndex, 1);\n this._elements.splice(toIndex, 0, elements[0]);\n this.visibleElementsChanged(elements[0], \"MOVED\");\n }\n\n protected setBackgroundColorCore(color: string) {\n super.setBackgroundColorCore(color);\n this.visualizers.forEach(visualizer => visualizer.backgroundColor = color);\n }\n\n private buildVisualizers(questions: Array<Question>) {\n questions.forEach((question) => {\n let visualizerOptions = Object.assign({}, this.options);\n if(visualizerOptions.dataProvider === undefined) {\n visualizerOptions.dataProvider = this.dataProvider;\n }\n let visualizer: VisualizerBase;\n if(Array.isArray(question)) {\n visualizer = new (VisualizationManager.getPivotVisualizerConstructor() as any)(question, [], visualizerOptions, undefined, false);\n } else {\n visualizer = this.createVisualizer(question, visualizerOptions, []);\n }\n if(!visualizer) {\n return;\n }\n\n if (this.allowHideQuestions) {\n visualizer.registerToolbarItem(\"removeQuestion\", () => {\n return DocumentHelper.createButton(() => {\n setTimeout(() => this.hideElement(question.name), 0);\n }, localization.getString(\"hideButton\"));\n }, 1000);\n }\n\n if (this.allowMakeQuestionsPrivate) {\n visualizer.registerToolbarItem(\"makePrivatePublic\", () => {\n const element = this.getElement(question.name);\n\n const state = element.isPublic ? \"first\" : \"second\";\n\n const pathMakePrivateSvg = \"makeprivate\";\n const pathMakePublicSvg = \"makepublic\";\n const makePrivateTitle = localization.getString(\"makePrivateButton\");\n const makePublicTitle = localization.getString(\"makePublicButton\");\n const doPrivate = (e: any) => {\n setTimeout(() => this.makeElementPrivate(element), 0);\n };\n const doPublic = (e: any) => {\n setTimeout(() => this.makeElementPublic(element), 0);\n };\n\n return DocumentHelper.createSvgToggleButton(\n pathMakePublicSvg,\n pathMakePrivateSvg,\n makePrivateTitle,\n makePublicTitle,\n doPublic,\n doPrivate,\n state\n );\n });\n }\n\n if (visualizer.supportSelection) {\n const visualizerWithSelection = <IVisualizerWithSelection>(\n (<any>visualizer)\n );\n let filterInfo = new FilterInfo(visualizerWithSelection);\n\n visualizer.registerToolbarItem(\"questionFilterInfo\", () => {\n filterInfo.update(visualizerWithSelection.selection);\n return filterInfo.htmlElement;\n }, 900);\n\n visualizerWithSelection.onDataItemSelected = (\n selectedValue: any,\n selectedText: string\n ) => {\n filterInfo.update({ value: selectedValue, text: selectedText });\n this.setFilter(question.name, selectedValue);\n };\n }\n\n visualizer.onUpdate = () => this.layout();\n visualizer.onAfterRender.add(this.onAfterRenderQuestionCallback);\n visualizer.onStateChanged.add(this.onStateChangedCallback);\n\n if (visualizer instanceof AlternativeVisualizersWrapper) {\n visualizer.onVisualizerChanged.add(this.onAlternativeVisualizerChangedCallback);\n }\n\n this.visualizers.push(visualizer);\n });\n }\n\n private destroyVisualizers() {\n this.visualizers.forEach((visualizer) => {\n visualizer.onUpdate = undefined;\n if (visualizer instanceof SelectBase) {\n visualizer.onDataItemSelected = undefined;\n }\n if (visualizer instanceof AlternativeVisualizersWrapper) {\n visualizer.onVisualizerChanged.remove(this.onAlternativeVisualizerChangedCallback);\n }\n visualizer.onStateChanged.remove(this.onStateChangedCallback);\n visualizer.onAfterRender.remove(this.onAfterRenderQuestionCallback);\n visualizer.destroy();\n });\n this.visualizers = [];\n }\n\n protected setLocale(newLocale: string) {\n super.setLocale(newLocale);\n (this.questions || []).forEach((question) => {\n question = Array.isArray(question) ? question[0] : question;\n const element = this.getElement(question.name);\n if (!!element) {\n element.displayName = this.getTitle(question);\n }\n });\n this.visualizers.forEach(v => {\n v.options.seriesLabels = this.options.seriesLabels;\n v.locale = newLocale;\n });\n this.stateChanged(\"locale\", newLocale);\n }\n\n /**\n * Returns the [`allowDynamicLayout`](https://surveyjs.io/dashboard/documentation/api-reference/ivisualizationpaneloptions#allowDynamicLayout) property value of the [`IVisualizationPanelOptions`](https://surveyjs.io/dashboard/documentation/api-reference/ivisualizationpaneloptions) object.\n */\n public get allowDynamicLayout() {\n return (\n this.options.allowDynamicLayout === undefined ||\n this.options.allowDynamicLayout === true\n );\n }\n\n /**\n * Returns the [`allowDragDrop`](https://surveyjs.io/dashboard/documentation/api-reference/ivisualizationpaneloptions#allowDragDrop) property value of the [`IVisualizationPanelOptions`](https://surveyjs.io/dashboard/documentation/api-reference/ivisualizationpaneloptions) object.\n */\n public get allowDragDrop() {\n if(IsTouch) {\n return false;\n }\n return (\n this.options.allowDragDrop === undefined ||\n this.options.allowDragDrop === true\n );\n }\n\n /**\n * Returns the [`allowHideQuestions`](https://surveyjs.io/dashboard/documentation/api-reference/ivisualizationpaneloptions#allowHideQuestions) property value of the [`IVisualizationPanelOptions`](https://surveyjs.io/dashboard/documentation/api-reference/ivisualizationpaneloptions) object.\n */\n public get allowHideQuestions() {\n return (\n this.options.allowHideQuestions === undefined ||\n this.options.allowHideQuestions === true\n );\n }\n\n public get allowMakeQuestionsPrivate() {\n return this.options.allowMakeQuestionsPrivate === true;\n }\n\n private _layoutEngine: LayoutEngine;\n /**\n * Returns a [`LayoutEngine`](https://surveyjs.io/dashboard/documentation/api-reference/layoutengine) instance used to arrange visualization items on `VisualizationPanel`.\n */\n public get layoutEngine() {\n return this._layoutEngine;\n }\n\n protected buildElements(questions: any[]): IVisualizerPanelElement[] {\n return (questions || []).map((question) => {\n question = Array.isArray(question) ? question[0] : question;\n return {\n name: question.name,\n displayName: this.getTitle(question),\n isVisible: true,\n isPublic: true,\n };\n });\n }\n\n /**\n * Returns an array of [`IVisualizerPanelElement`](https://surveyjs.io/dashboard/documentation/api-reference/ivisualizerpanelelement) objects with information about visualization items.\n * @param questionNames Question [names](https://surveyjs.io/form-library/documentation/api-reference/question#name). Do not specify this parameter to get an array of all visualization items.\n * @see visibleElements\n * @see hiddenElements\n */\n public getElements(questionNames?: Array<string>): IVisualizerPanelElement[] {\n const result = [];\n (this._elements || []).forEach((element) => {\n if(!questionNames || questionNames.indexOf(element.name) !== -1) {\n result.push({\n name: element.name,\n displayName: element.displayName,\n isVisible: element.isVisible,\n isPublic: element.isPublic,\n });\n }\n });\n return result;\n }\n\n /**\n * Returns an array of [`IVisualizerPanelElement`](https://surveyjs.io/dashboard/documentation/api-reference/ivisualizerpanelelement) objects with information about currently visible visualization items.\n *\n * If you want to disallow users to hide visualization items, set the [`allowHideQuestions`](https://surveyjs.io/dashboard/documentation/api-reference/ivisualizationpaneloptions#allowHideQuestions) property to `false`.\n * @see hiddenElements\n * @see getElements\n */\n public get visibleElements() {\n return this._elements.filter((el: IVisualizerPanelElement) => el.isVisible);\n }\n\n /**\n * Returns an array of [`IVisualizerPanelElement`](https://surveyjs.io/dashboard/documentation/api-reference/ivisualizerpanelelement) objects with information about currently hidden visualization items.\n *\n * If you want to disallow users to hide visualization items, set the [`allowHideQuestions`](https://surveyjs.io/dashboard/documentation/api-reference/ivisualizationpaneloptions#allowHideQuestions) property to `false`.\n * @see visibleElements\n * @see getElements\n */\n public get hiddenElements() {\n return this._elements.filter(\n (el: IVisualizerPanelElement) => !el.isVisible\n );\n }\n\n public get publicElements() {\n return this._elements.filter((el: IVisualizerPanelElement) => el.isPublic);\n }\n\n public get privateElements() {\n return this._elements.filter((el: IVisualizerPanelElement) => !el.isPublic);\n }\n\n protected get locales() {\n if (this.options.survey) return this.options.survey.getUsedLocales();\n return [];\n }\n\n /**\n * Returns a visualization item with a specified question name.\n * @param name A question [name](https://surveyjs.io/form-library/documentation/api-reference/question#name).\n */\n public getElement(questionName: string) {\n return this._elements.filter((el) => el.name === questionName)[0];\n }\n\n /**\n * Returns a [visualizer](https://surveyjs.io/dashboard/documentation/api-reference/visualizerbase) that visualizes a specified survey question.\n * @param questionName A question [name](https://surveyjs.io/form-library/documentation/api-reference/question#name).\n */\n public getVisualizer(questionName: string) {\n return this.visualizers.filter((v) => v.question.name === questionName)[0];\n }\n\n /**\n * @deprecated Use [`onElementShown`](https://surveyjs.io/dashboard/documentation/api-reference/visualizationpanel#onElementShown), [`onElementHidden`](https://surveyjs.io/dashboard/documentation/api-reference/visualizationpanel#onElementHidden), or [`onElementMoved`](https://surveyjs.io/dashboard/documentation/api-reference/visualizationpanel#onElementMoved) instead.\n */\n public onVisibleElementsChanged = new Event<\n (sender: VisualizationPanel, options: any) => any, VisualizationPanel,\n any\n >();\n\n /**\n * An event that is raised when users [show a visualization item](https://surveyjs.io/dashboard/documentation/api-reference/ivisualizationpaneloptions#allowHideQuestions).\n *\n * Parameters:\n *\n * - `sender`: [`VisualizationPanel`](https://surveyjs.io/dashboard/documentation/api-reference/visualizationpanel)\\\n * A `VisualizationPanel` that raised the event.\n *\n * - `options.elements`: Array\\<[`IVisualizerPanelElement`](https://surveyjs.io/dashboard/documentation/api-reference/ivisualizerpanelelement)\\>\\\n * Information about all visualization items rendered by this `VisualizationPanel`.\n *\n * - `options.element`: [`IVisualizerPanelElement`](https://surveyjs.io/dashboard/documentation/api-reference/ivisualizerpanelelement)\\\n * A visualization item that has been shown.\n */\n public onElementShown = new Event<\n (sender: VisualizationPanel, options: any) => any, VisualizationPanel,\n any\n >();\n\n /**\n * An event that is raised when users [hide a visualization item](https://surveyjs.io/dashboard/documentation/api-reference/ivisualizationpaneloptions#allowHideQuestions).\n *\n * Parameters:\n *\n * - `sender`: [`VisualizationPanel`](https://surveyjs.io/dashboard/documentation/api-reference/visualizationpanel)\\\n * A `VisualizationPanel` that raised the event.\n *\n * - `options.elements`: Array\\<[`IVisualizerPanelElement`](https://surveyjs.io/dashboard/documentation/api-reference/ivisualizerpanelelement)\\>\\\n * Information about all visualization items rendered by this `VisualizationPanel`.\n *\n * - `options.element`: [`IVisualizerPanelElement`](https://surveyjs.io/dashboard/documentation/api-reference/ivisualizerpanelelement)\\\n * A visualization item that has been hidden.\n */\n public onElementHidden = new Event<\n (sender: VisualizationPanel, options: any) => any, VisualizationPanel,\n any\n >();\n\n /**\n * An event that is raised when users [move a visualization item](https://surveyjs.io/dashboard/documentation/api-reference/ivisualizationpaneloptions#allowDynamicLayout).\n *\n * Parameters:\n *\n * - `sender`: [`VisualizationPanel`](https://surveyjs.io/dashboard/documentation/api-reference/visualizationpanel)\\\n * A `VisualizationPanel` that raised the event.\n *\n * - `options.elements`: Array\\<[`IVisualizerPanelElement`](https://surveyjs.io/dashboard/documentation/api-reference/ivisualizerpanelelement)\\>\\\n * Information about all visualization items rendered by this `VisualizationPanel`.\n *\n * - `options.element`: [`IVisualizerPanelElement`](https://surveyjs.io/dashboard/documentation/api-reference/ivisualizerpanelelement)\\\n * A visualization item that has been moved.\n */\n public onElementMoved = new Event<\n (sender: VisualizationPanel, options: any) => any, VisualizationPanel,\n any\n >();\n\n protected visibleElementsChanged(\n element: IVisualizerPanelElement,\n reason: string\n ): void {\n if (reason === \"SHOWN\" && !this.onElementShown.isEmpty) {\n this.onElementShown.fire(this, {\n elements: this._elements,\n element: element\n });\n }\n if (reason === \"REMOVED\" && !this.onElementHidden.isEmpty) {\n this.onElementHidden.fire(this, {\n elements: this._elements,\n element: element\n });\n }\n if (reason === \"MOVED\" && !this.onElementMoved.isEmpty) {\n this.onElementMoved.fire(this, {\n elements: this._elements,\n element: element\n });\n }\n\n if (!this.onVisibleElementsChanged.isEmpty) {\n this.onVisibleElementsChanged.fire(this, {\n elements: this._elements,\n changed: element,\n reason: reason,\n });\n }\n this.stateChanged(\"visibleElements\", reason);\n this.layout();\n }\n\n public onPermissionsChangedCallback: any;\n\n protected renderPanelElement(\n element: IVisualizerPanelRenderedElement,\n container: HTMLElement\n ) {\n const visualizer = this.getVisualizer(element.name);\n if(!visualizer) {\n return;\n }\n\n const questionElement = DocumentHelper.createElement(\"div\");\n questionElement.dataset.question = element.name;\n\n !!container && container.appendChild(questionElement);\n\n const questionContent = DocumentHelper.createElement(\"div\");\n const titleElement = DocumentHelper.createElement(\"h3\");\n const vizualizerElement = DocumentHelper.createElement(\"div\");\n\n titleElement.innerText = element.displayName;\n\n questionElement.className = this.allowDynamicLayout\n ? questionElementClassName + \" \" + questionLayoutedElementClassName\n : questionElementClassName;\n titleElement.className = questionElementClassName + \"__title\";\n if (this.allowDynamicLayout && this.allowDragDrop) {\n titleElement.className =\n titleElement.className +\n \" \" +\n questionElementClassName +\n \"__title--draggable\";\n }\n questionContent.className = questionElementClassName + \"__content\";\n questionContent.style.backgroundColor = this.backgroundColor;\n\n questionContent.appendChild(titleElement);\n questionContent.appendChild(vizualizerElement);\n questionElement.appendChild(questionContent);\n\n visualizer.render(vizualizerElement);\n\n element.renderedElement = questionElement;\n return questionElement;\n }\n\n protected renderToolbar(container: HTMLElement) {\n container.className += \" sa-panel__header\";\n super.renderToolbar(container);\n }\n\n public renderContent(container: HTMLElement): void {\n container.className += \" sa-panel__content sa-grid\";\n\n this.visibleElements.forEach((element) => {\n let questionElement = this.renderPanelElement(element, container);\n });\n\n this.layoutEngine.start(container);\n // !!window && window.dispatchEvent(new UIEvent(\"resize\"));\n }\n\n protected destroyContent(container: HTMLElement) {\n this.layoutEngine.stop();\n super.destroyContent(container);\n }\n\n /**\n * Redraws the `VisualizationPanel` and all its content.\n */\n public refresh() {\n if (!!this.toolbarContainer) {\n this.destroyToolbar(this.toolbarContainer);\n this.renderToolbar(this.toolbarContainer);\n }\n super.refresh();\n }\n\n public layout() {\n this.layoutEngine.update();\n }\n\n /**\n * Filters visualized data based on a specified question name and value. This method is called when a user clicks a chart point.\n * @param questionName A question [name](https://surveyjs.io/form-library/documentation/api-reference/question#name).\n * @param selectedValue\n * @see IVisualizationPanelOptions.allowSelection\n */\n public setFilter(questionName: string, selectedValue: any) {\n if(!this.dataPath) {\n this.dataProvider.setFilter(questionName, selectedValue);\n } else {\n if(selectedValue !== undefined && selectedValue !== null) {\n if(typeof selectedValue === \"object\" && Object.keys(selectedValue)[0]) {\n const seriesValue = Object.keys(selectedValue)[0];\n this.dataProvider.setFilter(this.dataPath, { [questionName]: selectedValue[seriesValue], [DataProvider.seriesMarkerKey]: seriesValue });\n } else {\n this.dataProvider.setFilter(this.dataPath, { [questionName]: selectedValue });\n }\n } else {\n this.dataProvider.setFilter(this.dataPath, undefined);\n }\n }\n }\n\n public getState(): IState {\n return {\n locale: this.locale,\n elements: [].concat(this._elements.map(element => {\n const visualizer = this.getVisualizer(element.name);\n const elementState = { ...element, ...visualizer?.getState() };\n if (elementState.renderedElement !== undefined) {\n delete elementState.renderedElement;\n }\n return elementState;\n })),\n };\n }\n\n /**\n * The state of `VisualizationPanel`. Includes information about the visualized elements and current locale.\n *\n * [View Demo](https://surveyjs.io/dashboard/examples/save-dashboard-state-to-local-storage/ (linkStyle))\n * @see onStateChanged\n */\n public get state(): IState {\n return this.getState();\n }\n public set state(newState: IState) {\n if (!newState) return;\n this._settingState = true;\n try {\n\n if (Array.isArray(newState.elements)) {\n const questionNames = this.questions.map(q => Array.isArray(q) ? q[0].name : q.name);\n this._elements = [].concat(newState.elements.filter(e => (questionNames.indexOf(e.name) !== -1)));\n }\n\n if (typeof newState.locale !== \"undefined\") this.setLocale(newState.locale);\n\n this._elements.forEach(elementState => {\n const visualizer = this.getVisualizer(elementState.name);\n if (visualizer !== undefined) {\n visualizer.setState(elementState);\n }\n });\n\n } finally {\n this._settingState = false;\n }\n this.refresh();\n }\n public resetState(): void {\n this._settingState = true;\n super.resetState();\n try {\n this.visualizers.forEach(visualizer => visualizer.resetState());\n this.locale = surveyLocalization.defaultLocale;\n } finally {\n this._settingState = false;\n }\n this.refresh();\n }\n\n public get permissions(): IPermission[] {\n return <any>this._elements.map((element) => {\n return {\n name: element.name,\n isPublic: element.isPublic,\n };\n });\n }\n public set permissions(permissions: IPermission[]) {\n const updatedElements = this._elements.map((element) => {\n permissions.forEach((permission) => {\n if (permission.name === element.name)\n element.isPublic = permission.isPublic;\n });\n\n return { ...element };\n });\n this._elements = [].concat(updatedElements);\n this.refresh();\n this.onPermissionsChangedCallback &&\n this.onPermissionsChangedCallback(this);\n }\n\n protected getCalculatedValuesCore(): Array<any> {\n return [];\n }\n\n destroy() {\n super.destroy();\n this.destroyVisualizers();\n }\n}\n","import { VisualizerBase } from \"./visualizerBase\";\nimport { VisualizationManager } from \"./visualizationManager\";\nimport { VisualizationPanel } from \"./visualizationPanel\";\nimport { Question, QuestionPanelDynamicModel, IQuestion } from \"survey-core\";\n\nexport class VisualizationPanelDynamic extends VisualizerBase {\n protected _contentVisualizer: VisualizationPanel = undefined;\n constructor(\n question: Question,\n data: Array<{ [index: string]: any }>,\n options: { [index: string]: any } = {},\n name?: string\n ) {\n super(question, data, options, name || \"panelDynamic\");\n this.loadingData = false;\n var options = Object.assign({}, options);\n options.allowHideQuestions = false;\n options.allowDynamicLayout = false;\n options.dataProvider = this.dataProvider;\n options.dataPath = this.dataNames[0];\n this._contentVisualizer = new VisualizationPanel(this.getQuestions(), [], options, undefined, false);\n this._contentVisualizer.onAfterRender.add(this.onAfterRenderPanelCallback);\n }\n\n public get contentVisualizer(): VisualizationPanel {\n return this._contentVisualizer;\n }\n\n protected setLocale(newLocale: string) {\n super.setLocale(newLocale);\n this._contentVisualizer.locale = newLocale;\n }\n\n private onAfterRenderPanelCallback = () => {\n this.afterRender(this.contentContainer);\n };\n\n public resetFilter(): void {\n this.contentVisualizer.resetFilter();\n }\n\n getQuestions(): IQuestion[] {\n const paneldynamic: QuestionPanelDynamicModel = <any>this.question;\n return paneldynamic.template.questions;\n }\n\n destroyContent(container: HTMLElement) {\n this._contentVisualizer.clear();\n super.destroyContent(this.contentContainer);\n }\n\n renderContent(container: HTMLElement): void {\n this._contentVisualizer.render(container);\n }\n\n public destroy() {\n super.destroy();\n this._contentVisualizer.onAfterRender.remove(this.onAfterRenderPanelCallback);\n }\n}\n\nVisualizationManager.registerVisualizer(\n \"paneldynamic\",\n VisualizationPanelDynamic\n);\n","// extracted by mini-css-extract-plugin\nexport {};","import { Question, QuestionCommentModel, Event, settings, hasLicense } from \"survey-core\";\nimport { DataProvider, GetDataFn } from \"./dataProvider\";\nimport { VisualizerFactory } from \"./visualizerFactory\";\nimport { VisualizationManager } from \"./visualizationManager\";\nimport { DocumentHelper, createLoadingIndicator } from \"./utils\";\nimport { localization } from \"./localizationManager\";\nimport { defaultStatisticsCalculator } from \"./statisticCalculators\";\n\nimport \"./visualizerBase.scss\";\n\nexport interface IChartAdapter {\n getChartTypes(): string[];\n create(chartNode: HTMLElement): Promise<any>;\n update(chartNode: HTMLElement): Promise<any> ;\n destroy(node: HTMLElement): void;\n}\n\nexport interface IDataInfo {\n name: string; // TODO - remove from this interface\n dataPath?: string;\n dataNames: Array<string>;\n getValues(): Array<any>;\n getLabels(): Array<string>;\n getSeriesValues(): Array<string>;\n getSeriesLabels(): Array<string>;\n}\n\ntype ToolbarItemCreators = {\n [name: string]: {\n creator: (toolbar?: HTMLDivElement) => HTMLElement,\n // type: ToolbarItemType,\n order: number,\n // groupIndex: number,\n },\n};\n\nexport class PostponeHelper {\n public static postponeFunction: (fn: () => void, timeout?: number) => any;\n public static postpone(fn: () => void, timeout?: number): any {\n if(PostponeHelper.postponeFunction) {\n return PostponeHelper.postponeFunction(fn, timeout);\n } else {\n return setTimeout(fn, timeout);\n }\n }\n}\n\n/**\n * A base object for all visualizers. Use it to implement a custom visualizer.\n *\n * Constructor parameters:\n *\n * - `question`: [`Question`](https://surveyjs.io/form-library/documentation/api-reference/question)\\\n * A survey question to visualize.\n * - `data`: `Array<any>`\\\n * Survey results.\n * - `options`\\\n * An object with the following properties:\n * - `dataProvider`: `DataProvider`\\\n * A data provider for this visualizer.\n * - `renderContent`: `(contentContainer: HTMLElement, visualizer: VisualizerBase) => void`\\\n * A function that renders the visualizer's HTML markup. Append the markup to `contentContainer`.\n * - `survey`: [`SurveyModel`](https://surveyjs.io/form-library/documentation/api-reference/survey-data-model)\\\n * Pass a `SurveyModel` instance if you want to use locales from the survey JSON schema.\n * - `seriesValues`: `Array<string>`\\\n * Series values used to group data.\n * - `seriesLabels`: `Array<string>`\\\n * Series labels to display. If this property is not set, `seriesValues` are used as labels.\n * - `type`: `string`\\\n * *(Optional)* The visualizer's type.\n *\n * [View Demo](https://surveyjs.io/dashboard/examples/how-to-plot-survey-data-in-custom-bar-chart/ (linkStyle))\n */\nexport class VisualizerBase implements IDataInfo {\n public static haveCommercialLicense: boolean = false;\n public static suppressVisualizerStubRendering: boolean = false;\n public static chartAdapterType: any = undefined;\n\n private _showToolbar = true;\n private _footerVisualizer: VisualizerBase = undefined;\n private _dataProvider: DataProvider = undefined;\n private _getDataCore: (dataInfo: IDataInfo) => number[][] = undefined\n public labelTruncateLength: number = 27;\n protected haveCommercialLicense: boolean = false;\n protected renderResult: HTMLElement = undefined;\n protected toolbarContainer: HTMLElement = undefined;\n protected headerContainer: HTMLElement = undefined;\n protected contentContainer: HTMLElement = undefined;\n protected footerContainer: HTMLElement = undefined;\n protected _supportSelection: boolean = false;\n protected _chartAdapter: IChartAdapter = undefined;\n // public static otherCommentQuestionType = \"comment\"; // TODO: make it configureable - allow choose what kind of question/visualizer will be used for comments/others\n public static otherCommentCollapsed = true;\n protected _footerIsCollapsed: boolean = undefined;\n\n /**\n * An event that is raised after the visualizer's content is rendered.\n *\n * Parameters:\n *\n * - `sender`: `VisualizerBase`\\\n * A `VisualizerBase` instance that raised the event.\n *\n * - `options.htmlElement`: `HTMLElement`\\\n * A page element with the visualizer's content.\n * @see render\n * @see refresh\n **/\n public onAfterRender: Event<\n (sender: VisualizerBase, options: any) => any,\n VisualizerBase,\n any\n > = new Event<(sender: VisualizerBase, options: any) => any, VisualizerBase, any>();\n\n protected afterRender(contentContainer: HTMLElement) {\n this.onAfterRender.fire(this, { htmlElement: contentContainer });\n }\n\n /**\n * An event that is raised after a new locale is set.\n *\n * Parameters:\n *\n * - `sender`: `VisualizerBase`\\\n * A `VisualizerBase` instance that raised the event.\n *\n * - `options.locale`: `string`\\\n * The indentifier of a new locale (for example, \"en\").\n * @see locale\n */\n public onLocaleChanged = new Event<\n (sender: VisualizerBase, options: { locale: string }) => any,\n VisualizerBase,\n any\n >();\n\n // public onStateChanged = new Event<\n // (sender: VisualizationPanel, state: IState) => any,\n // VisualizationPanel,\n // any\n // >();\n /**\n * An event that is raised when the visualizer's state has changed.\n *\n * The state includes selected chart types, chart layout, sorting, filtering, and other customizations that a user has made while using the dashboard. Handle the `onStateChanged` event to save these customizations, for example, in `localStorage` and restore them when the user reloads the page.\n *\n * Parameters:\n *\n * - `sender`: `VisualizerBase`\\\n * A `VisualizerBase` instance that raised the event.\n *\n * - `state`: `any`\\\n * A new state of the visualizer. Includes information about the visualized elements and current locale.\n *\n * [View Demo](https://surveyjs.io/dashboard/examples/save-dashboard-state-to-local-storage/ (linkStyle))\n * @see getState\n * @see setState\n */\n public onStateChanged: Event<\n (sender: VisualizerBase, options: any) => any,\n VisualizerBase,\n any\n > = new Event<(sender: VisualizerBase, options: any) => any, VisualizerBase, any>();\n\n protected stateChanged(name: string, value: any): void {\n if(this._settingState) {\n return;\n }\n this.onStateChanged.fire(this, this.getState());\n }\n\n protected toolbarItemCreators: ToolbarItemCreators = {};\n\n public onGetToolbarItemCreators: () => ToolbarItemCreators;\n\n protected getToolbarItemCreators(): ToolbarItemCreators {\n return Object.assign({}, this.toolbarItemCreators, this.onGetToolbarItemCreators && this.onGetToolbarItemCreators() || {});\n }\n\n constructor(\n public question: Question,\n data: Array<{ [index: string]: any }> | GetDataFn,\n public options: { [index: string]: any } = {},\n private _type?: string\n ) {\n const f = hasLicense;\n this.haveCommercialLicense = (!!f && f(4)) ||\n VisualizerBase.haveCommercialLicense ||\n (typeof options.haveCommercialLicense !== \"undefined\" ? options.haveCommercialLicense : false);\n\n this._getDataCore = this.questionOptions?.getDataCore;\n this._dataProvider = options.dataProvider || new DataProvider(data);\n this._dataProvider.onDataChanged.add(() => this.onDataChanged());\n this.loadingData = !!this._dataProvider.dataFn;\n\n if (typeof options.labelTruncateLength !== \"undefined\") {\n this.labelTruncateLength = options.labelTruncateLength;\n }\n }\n\n protected get questionOptions() {\n return this.options[this.question?.name];\n }\n\n protected onDataChanged(): void {\n this._calculationsCache = undefined;\n this.loadingData = !!this._dataProvider.dataFn;\n this.refresh();\n }\n\n /**\n * Returns the identifier of a visualized question.\n */\n get name(): string {\n return this.question.valueName || this.question.name;\n }\n\n get dataNames(): Array<string> {\n return [this.name];\n }\n\n get dataPath(): string {\n return this.options.dataPath;\n }\n\n /**\n * Indicates whether the visualizer displays a header. This property is `true` when a visualized question has a correct answer.\n * @see hasFooter\n */\n get hasHeader(): boolean {\n if (!this.options || !this.options.showCorrectAnswers) {\n return false;\n }\n return !!this.question && !!this.question.correctAnswer;\n }\n\n /**\n * Indicates whether the visualizer displays a footer. This property is `true` when a visualized question has a comment.\n * @see hasHeader\n */\n get hasFooter(): boolean {\n return (\n !!this.question && (this.question.hasComment || this.question.hasOther)\n );\n }\n\n protected createVisualizer<T = VisualizerBase>(question: Question, options?: { [index: string]: any }, data?: any[]): T {\n let visualizerOptions = Object.assign({}, options || this.options);\n if (visualizerOptions.dataProvider === undefined) {\n visualizerOptions.dataProvider = this.dataProvider;\n }\n return VisualizerFactory.createVisualizer(question, data || this.data, visualizerOptions) as T;\n }\n\n /**\n * Allows you to access the footer visualizer. Returns `undefined` if the footer is absent.\n * @see hasFooter\n */\n get footerVisualizer(): VisualizerBase {\n if (!this.hasFooter) {\n return undefined;\n }\n if (!this._footerVisualizer) {\n const question = new QuestionCommentModel(\n this.question.name + (settings || {}).commentPrefix\n );\n question.title = this.processText(this.question.title);\n\n let visualizerOptions = Object.assign({}, this.options);\n visualizerOptions.renderContent = undefined;\n this._footerVisualizer = this.createVisualizer(question, visualizerOptions);\n if(!!this._footerVisualizer) {\n this._footerVisualizer.onUpdate = () => this.invokeOnUpdate();\n }\n }\n return this._footerVisualizer;\n }\n\n /**\n * Indicates whether users can select series points to cross-filter charts. To allow or disallow selection, set the [`allowSelection`](https://surveyjs.io/dashboard/documentation/api-reference/ivisualizationpaneloptions#allowSelection) property of the `IVisualizationPanelOptions` object in the [`VisualizationPanel`](https://surveyjs.io/dashboard/documentation/api-reference/visualizationpanel) constructor.\n */\n public get supportSelection(): boolean {\n return (this.options.allowSelection === undefined ||\n this.options.allowSelection) &&\n this._supportSelection;\n }\n\n public getSeriesValues(): Array<string> {\n return this.options.seriesValues || [];\n }\n\n public getSeriesLabels(): Array<string> {\n return this.options.seriesLabels || this.getSeriesValues();\n }\n\n public getValues(): Array<any> {\n throw new Error(\"Method not implemented.\");\n }\n\n public getLabels(): Array<string> {\n return this.getValues();\n }\n\n /**\n * Registers a function used to create a toolbar item for this visualizer.\n *\n * The following code shows how to add a custom button and drop-down menu to the toolbar:\n *\n * ```js\n * import { VisualizationPanel, DocumentHelper } from \"survey-analytics\";\n *\n * const vizPanel = new VisualizationPanel( ... );\n *\n * // Add a custom button to the toolbar\n * vizPanel.visualizers[0].registerToolbarItem(\"my-toolbar-button\", () => {\n * return DocumentHelper.createButton(\n * // A button click event handler\n * () => {\n * alert(\"Custom toolbar button is clicked\");\n * },\n * // Button caption\n * \"Button\"\n * );\n * });\n *\n * // Add a custom drop-down menu to the toolbar\n * vizPanel.visualizers[0].registerToolbarItem(\"my-toolbar-dropdown\", () => {\n * return DocumentHelper.createSelector(\n * // Menu items\n * [\n * { value: 1, text: \"One\" },\n * { value: 2, text: \"Two\" },\n * { value: 3, text: \"Three\" }\n * ],\n * // A function that specifies initial selection\n * (option) => false,\n * // An event handler that is executed when selection is changed\n * (e) => {\n * alert(e.target.value);\n * }\n * );\n * });\n * ```\n * @param name A custom name for the toolbar item.\n * @param creator A function that accepts the toolbar and should return an `HTMLElement` with the toolbar item.\n * @see unregisterToolbarItem\n */\n public registerToolbarItem(\n name: string,\n creator: (toolbar?: HTMLDivElement) => HTMLElement,\n order = 100\n ): void {\n this.toolbarItemCreators[name] = { creator, order };\n }\n\n /**\n *\n * Unregisters a function used to create a toolbar item. Allows you to remove a toolbar item.\n * @param name A toolbar item name.\n * @returns A function previously used to [register](#registerToolbarItem) the removed toolbar item.\n * @see registerToolbarItem\n */\n public unregisterToolbarItem(\n name: string\n ): (toolbar?: HTMLDivElement) => HTMLElement {\n if(this.toolbarItemCreators[name] !== undefined) {\n const item = this.toolbarItemCreators[name];\n delete this.toolbarItemCreators[name];\n return item.creator;\n }\n return undefined;\n }\n\n /**\n * Returns the visualizer's title.\n */\n public get title(): string {\n return this.getTitle(this.question);\n }\n\n protected getTitle(question: Question): string {\n if(question === undefined) return \"\";\n return this.processText(question.locTitle?.renderedHtml ? question.locTitle.renderedHtml : question.title);\n }\n\n /**\n * Returns the visualizer's type.\n */\n public get type(): string {\n return this._type || \"visualizer\";\n }\n\n /**\n * @deprecated Use [`surveyData`](https://surveyjs.io/dashboard/documentation/api-reference/visualizationpanel#surveyData) instead.\n */\n protected get data() {\n return this.dataProvider.filteredData;\n }\n\n /**\n * Returns an array of survey results used to calculate values for visualization. If a user applies a filter, the array is also filtered.\n *\n * To get an array of calculated and visualized values, call the [`getCalculatedValues()`](https://surveyjs.io/dashboard/documentation/api-reference/visualizerbase#getCalculatedValues) method.\n */\n protected get surveyData() {\n return this.dataProvider.filteredData;\n }\n\n protected get dataProvider(): DataProvider {\n return this._dataProvider;\n }\n\n /**\n * Updates visualized data.\n * @param data A data array with survey results to be visualized.\n */\n updateData(data: Array<{ [index: string]: any }> | GetDataFn) {\n this.dataProvider.data = data;\n if (this.hasFooter) {\n this.footerVisualizer.updateData(data);\n }\n }\n\n onUpdate: () => void;\n\n invokeOnUpdate() {\n this.onUpdate && this.onUpdate();\n }\n\n /**\n * Deletes the visualizer and all its elements from the DOM.\n * @see clear\n */\n destroy() {\n if (!!this.renderResult) {\n this.clear();\n this.toolbarContainer = undefined;\n this.headerContainer = undefined;\n this.contentContainer = undefined;\n this.footerContainer = undefined;\n this.renderResult.innerHTML = \"\";\n this.renderResult = undefined;\n }\n if (!!this._footerVisualizer) {\n this._footerVisualizer.destroy();\n this._footerVisualizer.onUpdate = undefined;\n this._footerVisualizer = undefined;\n }\n }\n\n /**\n * Empties the toolbar, header, footer, and content containers.\n *\n * If you want to empty and delete the visualizer and all its elements from the DOM, call the [`destroy()`](https://surveyjs.io/dashboard/documentation/api-reference/visualizerbase#destroy) method instead.\n */\n public clear() {\n if (!!this.toolbarContainer) {\n this.destroyToolbar(this.toolbarContainer);\n }\n if (!!this.headerContainer) {\n this.destroyHeader(this.headerContainer);\n }\n if (!!this.contentContainer) {\n this.destroyContent(this.contentContainer);\n }\n if (!!this.footerContainer) {\n this.destroyFooter(this.footerContainer);\n }\n }\n\n protected createToolbarItems(toolbar: HTMLDivElement) {\n const toolbarItemCreators = this.getToolbarItemCreators();\n const sortedItems = Object.keys(toolbarItemCreators || {})\n .map(name => ({ name, ...toolbarItemCreators[name] }))\n .sort((a, b) => a.order - b.order);\n\n sortedItems.forEach((item) => {\n let toolbarItem = item.creator(toolbar);\n if (!!toolbarItem) {\n toolbar.appendChild(toolbarItem);\n }\n });\n }\n\n protected getCorrectAnswerText(): string {\n return !!this.question ? this.question.correctAnswer : \"\";\n }\n\n protected destroyToolbar(container: HTMLElement) {\n container.innerHTML = \"\";\n }\n\n protected renderToolbar(container: HTMLElement) {\n if (this.showToolbar) {\n const toolbar = <HTMLDivElement>(\n DocumentHelper.createElement(\"div\", \"sa-toolbar\")\n );\n this.createToolbarItems(toolbar);\n container.appendChild(toolbar);\n }\n }\n\n protected destroyHeader(container: HTMLElement) {\n if (!!this.options && typeof this.options.destroyHeader === \"function\") {\n this.options.destroyHeader(container, this);\n } else {\n container.innerHTML = \"\";\n }\n }\n\n protected destroyContent(container: HTMLElement) {\n if (!!this.options && typeof this.options.destroyContent === \"function\") {\n this.options.destroyContent(container, this);\n } else if (this._chartAdapter) {\n this._chartAdapter.destroy(<HTMLElement>container.children[0]);\n }\n container.innerHTML = \"\";\n }\n\n protected renderHeader(container: HTMLElement) {\n if (!!this.options && typeof this.options.renderHeader === \"function\") {\n this.options.renderHeader(container, this);\n } else {\n const correctAnswerElement = DocumentHelper.createElement(\n \"div\",\n \"sa-visualizer__correct-answer\"\n );\n correctAnswerElement.innerText = localization.getString(\"correctAnswer\") + this.getCorrectAnswerText();\n container.appendChild(correctAnswerElement);\n }\n }\n\n protected async renderContentAsync(container: HTMLElement): Promise<HTMLElement> {\n if(this._chartAdapter) {\n const chartNode: HTMLElement = DocumentHelper.createElement(\"div\");\n container.innerHTML = \"\";\n container.appendChild(chartNode);\n await this._chartAdapter.create(chartNode);\n } else {\n container.innerText = localization.getString(\"noVisualizerForQuestion\");\n }\n return container;\n }\n\n protected ensureQuestionIsReady(): Promise<void> {\n return new Promise<void>((resolve) => {\n if(this.question) {\n this.question.waitForQuestionIsReady().then(() => resolve());\n } else {\n resolve();\n }\n });\n }\n\n protected renderContent(container: HTMLElement): void {\n if (!!this.options && typeof this.options.renderContent === \"function\") {\n const rendered = this.options.renderContent(container, this);\n if(rendered !== false) {\n this.afterRender(container);\n }\n } else {\n if(this.loadingData) {\n this.renderLoadingIndicator(this.contentContainer);\n }\n this.ensureQuestionIsReady().then(() => this.renderContentAsync(container).then(el => this.afterRender(el)));\n }\n }\n\n protected destroyFooter(container: HTMLElement) {\n container.innerHTML = \"\";\n }\n\n public get isFooterCollapsed(): boolean {\n if(this._footerIsCollapsed === undefined) {\n this._footerIsCollapsed = VisualizerBase.otherCommentCollapsed;\n }\n return this._footerIsCollapsed;\n }\n public set isFooterCollapsed(newVal: boolean) {\n this._footerIsCollapsed = newVal;\n }\n\n protected renderFooter(container: HTMLElement) {\n container.innerHTML = \"\";\n if (this.hasFooter) {\n const footerTitleElement = DocumentHelper.createElement(\n \"h4\",\n \"sa-visualizer__footer-title\",\n { innerText: localization.getString(\"otherCommentTitle\") }\n );\n container.appendChild(footerTitleElement);\n\n const footerContentElement = DocumentHelper.createElement(\n \"div\",\n \"sa-visualizer__footer-content\"\n );\n footerContentElement.style.display = this.isFooterCollapsed ? \"none\" : \"block\";\n const visibilityButtonText = localization.getString(this.isFooterCollapsed ? \"showButton\" : \"hideButton\");\n\n const visibilityButton = DocumentHelper.createButton(() => {\n if (footerContentElement.style.display === \"none\") {\n footerContentElement.style.display = \"block\";\n visibilityButton.innerText = localization.getString(\"hideButton\");\n this._footerIsCollapsed = false;\n } else {\n footerContentElement.style.display = \"none\";\n visibilityButton.innerText = localization.getString(\"showButton\");\n this._footerIsCollapsed = true;\n }\n this.footerVisualizer.invokeOnUpdate();\n }, visibilityButtonText /*, \"sa-toolbar__button--right\"*/);\n container.appendChild(visibilityButton);\n\n container.appendChild(footerContentElement);\n\n this.footerVisualizer.render(footerContentElement);\n }\n }\n\n /**\n * Renders the visualizer in a specified container.\n * @param targetElement An `HTMLElement` or an `id` of a page element in which you want to render the visualizer.\n */\n render(targetElement: HTMLElement | string) {\n if (typeof targetElement === \"string\") {\n targetElement = document.getElementById(targetElement);\n }\n this.renderResult = targetElement;\n\n this.toolbarContainer = DocumentHelper.createElement(\n \"div\",\n \"sa-visualizer__toolbar\"\n );\n targetElement.appendChild(this.toolbarContainer);\n this.renderToolbar(this.toolbarContainer);\n\n if (this.hasHeader) {\n this.headerContainer = DocumentHelper.createElement(\n \"div\",\n \"sa-visualizer__header\"\n );\n targetElement.appendChild(this.headerContainer);\n this.renderHeader(this.headerContainer);\n }\n\n this.contentContainer = DocumentHelper.createElement(\n \"div\",\n \"sa-visualizer__content\"\n );\n targetElement.appendChild(this.contentContainer);\n this.renderContent(this.contentContainer);\n\n this.footerContainer = DocumentHelper.createElement(\n \"div\",\n \"sa-visualizer__footer\"\n );\n targetElement.appendChild(this.footerContainer);\n this.renderFooter(this.footerContainer);\n }\n\n public updateToolbar(): void {\n if (!!this.toolbarContainer) {\n PostponeHelper.postpone(() => {\n this.destroyToolbar(this.toolbarContainer);\n this.renderToolbar(this.toolbarContainer);\n });\n }\n }\n\n protected isSupportSoftUpdateContent(): boolean {\n return false;\n }\n\n protected softUpdateContent(): void {\n }\n\n protected hardUpdateContent(): void {\n this.destroyContent(this.contentContainer);\n this.renderContent(this.contentContainer);\n }\n\n public updateContent(): void {\n if(!this.isSupportSoftUpdateContent()) {\n this.hardUpdateContent();\n } else {\n this.softUpdateContent();\n }\n }\n\n /**\n * Re-renders the visualizer and its content.\n */\n public refresh(): void {\n if (!!this.headerContainer) {\n PostponeHelper.postpone(() => {\n this.destroyHeader(this.headerContainer);\n this.renderHeader(this.headerContainer);\n this.invokeOnUpdate();\n });\n }\n if (!!this.contentContainer) {\n PostponeHelper.postpone(() => {\n this.updateContent();\n this.invokeOnUpdate();\n });\n }\n if (!!this.footerContainer) {\n PostponeHelper.postpone(() => {\n this.destroyFooter(this.footerContainer);\n this.renderFooter(this.footerContainer);\n this.invokeOnUpdate();\n });\n }\n }\n\n protected processText(text: string): string {\n if (this.options.stripHtmlFromTitles !== false) {\n let originalText = text || \"\";\n let processedText = originalText.replace(/(<([^>]+)>)/gi, \"\");\n return processedText;\n }\n return text;\n }\n\n getRandomColor() {\n const colors = this.getColors();\n return colors[Math.floor(Math.random() * colors.length)];\n }\n\n private _backgroundColor = \"#f7f7f7\";\n\n get backgroundColor() { return this.getBackgroundColorCore(); }\n set backgroundColor(value) { this.setBackgroundColorCore(value); }\n\n protected getBackgroundColorCore() {\n return this._backgroundColor;\n }\n protected setBackgroundColorCore(color: string) {\n this._backgroundColor = color;\n if (this.footerVisualizer) this.footerVisualizer.backgroundColor = color;\n }\n\n static customColors: string[] = [];\n private static colors = [\n \"#86e1fb\",\n \"#3999fb\",\n \"#ff6771\",\n \"#1eb496\",\n \"#ffc152\",\n \"#aba1ff\",\n \"#7d8da5\",\n \"#4ec46c\",\n \"#cf37a6\",\n \"#4e6198\",\n ];\n\n getColors(count = 10) {\n const colors =\n Array.isArray(VisualizerBase.customColors) &&\n VisualizerBase.customColors.length > 0\n ? VisualizerBase.customColors\n : VisualizerBase.colors;\n\n let manyColors: any = [];\n\n for (let index = 0; index < count; index++) {\n manyColors = manyColors.concat(colors);\n }\n\n return manyColors;\n }\n\n /**\n * Gets or sets the visibility of the visualizer's toolbar.\n *\n * Default value: `true`\n */\n get showToolbar() {\n return this._showToolbar;\n }\n set showToolbar(newValue: boolean) {\n if (newValue != this._showToolbar) {\n this._showToolbar = newValue;\n if (!!this.toolbarContainer) {\n this.destroyToolbar(this.toolbarContainer);\n this.renderToolbar(this.toolbarContainer);\n }\n }\n }\n\n /**\n * @deprecated Use [`getCalculatedValues()`](https://surveyjs.io/dashboard/documentation/api-reference/visualizationpanel#getCalculatedValues) instead.\n */\n getData(): any {\n return this.getCalculatedValuesCore();\n }\n\n private _calculationsCache: Array<any> = undefined;\n\n protected getCalculatedValuesCore(): Array<any> {\n if (!!this._getDataCore) {\n return this._getDataCore(this);\n }\n\n return defaultStatisticsCalculator(this.surveyData, this);\n }\n\n protected loadingData: boolean = false;\n\n public renderLoadingIndicator(contentContainer: HTMLElement): void {\n contentContainer.appendChild(createLoadingIndicator());\n }\n\n public convertFromExternalData(externalCalculatedData: any): any[] {\n return externalCalculatedData;\n }\n\n /**\n * Returns an array of calculated and visualized values. If a user applies a filter, the array is also filtered.\n *\n * To get an array of source survey results, use the [`surveyData`](https://surveyjs.io/dashboard/documentation/api-reference/visualizerbase#surveyData) property.\n */\n public getCalculatedValues(): Promise<Array<Object>> {\n return new Promise<Array<Object>>((resolve, reject) => {\n if(this._calculationsCache !== undefined) {\n resolve(this._calculationsCache);\n }\n if(!!this.dataProvider.dataFn) {\n this.loadingData = true;\n const dataLoadingPromise = this.dataProvider.dataFn({\n visualizer: this,\n filter: this.dataProvider.getFilters(),\n callback: (loadedData: { data: Array<Object>, error?: any }) => {\n this.loadingData = false;\n if(!loadedData.error && Array.isArray(loadedData.data)) {\n this._calculationsCache = this.convertFromExternalData(loadedData.data);\n resolve(this._calculationsCache);\n } else {\n reject();\n }\n }\n });\n if(dataLoadingPromise) {\n dataLoadingPromise\n .then(calculatedData => {\n this.loadingData = false;\n this._calculationsCache = this.convertFromExternalData(calculatedData);\n resolve(this._calculationsCache);\n })\n .catch(() => {\n this.loadingData = false;\n reject();\n });\n }\n } else {\n this._calculationsCache = this.getCalculatedValuesCore();\n resolve(this._calculationsCache);\n }\n });\n }\n\n protected _settingState = false;\n\n /**\n * Returns an object with properties that describe a current visualizer state. The properties are different for each individual visualizer.\n *\n * > This method is overriden in classes descendant from `VisualizerBase`.\n * @see setState\n * @see resetState\n * @see onStateChanged\n */\n public getState(): any {\n return {};\n }\n /**\n * Sets the visualizer's state.\n *\n * [View Demo](https://surveyjs.io/dashboard/examples/save-dashboard-state-to-local-storage/ (linkStyle))\n *\n * > This method is overriden in classes descendant from `VisualizerBase`.\n * @see getState\n * @see resetState\n * @see onStateChanged\n */\n public setState(state: any): void {\n }\n /**\n * Resets the visualizer's state.\n *\n * > This method is overriden in classes descendant from `VisualizerBase`.\n * @see getState\n * @see setState\n * @see onStateChanged\n */\n public resetState(): void {\n }\n\n /**\n * Gets or sets the current locale.\n *\n * If you want to inherit the locale from a visualized survey, assign a [`SurveyModel`](https://surveyjs.io/form-library/documentation/api-reference/survey-data-model) instance to the [`survey`](https://surveyjs.io/dashboard/documentation/api-reference/ivisualizationpaneloptions#survey) property of the `IVisualizationPanelOptions` object in the [`VisualizationPanel`](https://surveyjs.io/dashboard/documentation/api-reference/visualizationpanel) constructor.\n *\n * If the survey is [translated into more than one language](https://surveyjs.io/form-library/examples/survey-localization/), the toolbar displays a language selection drop-down menu.\n *\n * [View Demo](https://surveyjs.io/dashboard/examples/localize-survey-data-dashboard-ui/ (linkStyle))\n * @see onLocaleChanged\n */\n public get locale(): string {\n var survey = this.options.survey;\n if (!!survey) {\n return survey.locale;\n }\n return localization.currentLocale;\n }\n\n public set locale(newLocale: string) {\n this.setLocale(newLocale);\n this.onLocaleChanged.fire(this, { locale: newLocale });\n this.refresh();\n }\n\n protected setLocale(newLocale: string): void {\n localization.currentLocale = newLocale;\n var survey = this.options.survey;\n if (!!survey && survey.locale !== newLocale) {\n survey.locale = newLocale;\n }\n }\n\n}\n\nVisualizationManager.defaultVisualizer = VisualizerBase;","import { Question, QuestionCompositeModel, QuestionCustomModel } from \"survey-core\";\nimport { VisualizerBase } from \"./visualizerBase\";\nimport { VisualizationManager } from \"./visualizationManager\";\n\n/**\n * An object that allows you to create individual visualizers without creating a [visualization panel](https://surveyjs.io/dashboard/documentation/api-reference/visualizationpanel).\n */\nexport class VisualizerFactory {\n /**\n * Creates a visualizer for a single question.\n *\n * ```js\n * import { VisualizerFactory } from \"survey-analytics\";\n *\n * const visualizer = new VisualizerFactory.createVisualizer(\n * question,\n * data,\n * options\n * );\n *\n * visualizer.render(\"containerId\")\n * ```\n *\n * If a question has more than one [registered](https://surveyjs.io/dashboard/documentation/api-reference/visualizationmanager#registerVisualizer) visualizer, users can switch between them using a drop-down menu.\n * @param question A question for which to create a visualizer.\n * @param data A data array with survey results to be visualized.\n * @param options An object with any custom properties you need within the visualizer.\n */\n public static createVisualizer(\n question: Question,\n data: Array<{ [index: string]: any }>,\n options?: { [index: string]: any }\n ): VisualizerBase {\n let type = question.getType();\n let creators = [];\n let questionForCreator: Question | Question[] = question;\n let optionsForCreator = Object.assign({}, options);\n\n if (type === \"text\" && (<any>question).inputType) {\n creators = VisualizationManager.getVisualizersByType((<any>question).inputType, type);\n } else {\n let fallbackType = undefined;\n if(question instanceof QuestionCustomModel) {\n fallbackType = question.getDynamicType();\n // questionForCreator = question.contentQuestion;\n } else if(question instanceof QuestionCompositeModel) {\n fallbackType = \"composite\";\n }\n creators = VisualizationManager.getVisualizersByType(type, fallbackType);\n }\n\n var visualizers = creators.map(\n (creator) => new creator(questionForCreator, data, optionsForCreator)\n );\n if (visualizers.length > 1) {\n const alternativesVisualizerConstructor = VisualizationManager.getAltVisualizerSelector();\n let visualizer = new alternativesVisualizerConstructor(\n visualizers,\n questionForCreator,\n data,\n optionsForCreator\n );\n return visualizer;\n }\n return visualizers[0];\n }\n}\n","export var stopWords = [\n \"de\",\n \"en\",\n \"van\",\n \"ik\",\n \"te\",\n \"dat\",\n \"die\",\n \"in\",\n \"een\",\n \"hij\",\n \"het\",\n \"niet\",\n \"zijn\",\n \"is\",\n \"was\",\n \"op\",\n \"aan\",\n \"met\",\n \"als\",\n \"voor\",\n \"had\",\n \"er\",\n \"maar\",\n \"om\",\n \"hem\",\n \"dan\",\n \"zou\",\n \"of\",\n \"wat\",\n \"mijn\",\n \"men\",\n \"dit\",\n \"zo\",\n \"door\",\n \"over\",\n \"ze\",\n \"zich\",\n \"bij\",\n \"ook\",\n \"tot\",\n \"je\",\n \"mij\",\n \"uit\",\n \"der\",\n \"daar\",\n \"haar\",\n \"naar\",\n \"heb\",\n \"hoe\",\n \"heeft\",\n \"hebben\",\n \"deze\",\n \"u\",\n \"want\",\n \"nog\",\n \"zal\",\n \"me\",\n \"zij\",\n \"nu\",\n \"ge\",\n \"geen\",\n \"omdat\",\n \"iets\",\n \"worden\",\n \"toch\",\n \"al\",\n \"waren\",\n \"veel\",\n \"meer\",\n \"doen\",\n \"toen\",\n \"moet\",\n \"ben\",\n \"zonder\",\n \"kan\",\n \"hun\",\n \"dus\",\n \"alles\",\n \"onder\",\n \"ja\",\n \"eens\",\n \"hier\",\n \"wie\",\n \"werd\",\n \"altijd\",\n \"doch\",\n \"wordt\",\n \"wezen\",\n \"kunnen\",\n \"ons\",\n \"zelf\",\n \"tegen\",\n \"na\",\n \"reeds\",\n \"wil\",\n \"kon\",\n \"niets\",\n \"uw\",\n \"iemand\",\n \"geweest\",\n \"andere\"\n];\n","export var stopWords = [\n \"...\",\n \"a\",\n \"about\",\n \"above\",\n \"across\",\n \"after\",\n \"again\",\n \"against\",\n \"all\",\n \"almost\",\n \"alone\",\n \"along\",\n \"already\",\n \"also\",\n \"although\",\n \"always\",\n \"among\",\n \"an\",\n \"and\",\n \"another\",\n \"any\",\n \"anybody\",\n \"anyone\",\n \"anything\",\n \"anywhere\",\n \"are\",\n \"area\",\n \"areas\",\n \"around\",\n \"as\",\n \"ask\",\n \"asked\",\n \"asking\",\n \"asks\",\n \"at\",\n \"away\",\n \"b\",\n \"back\",\n \"backed\",\n \"backing\",\n \"backs\",\n \"be\",\n \"became\",\n \"because\",\n \"become\",\n \"becomes\",\n \"been\",\n \"before\",\n \"began\",\n \"behind\",\n \"being\",\n \"beings\",\n \"best\",\n \"better\",\n \"between\",\n \"big\",\n \"both\",\n \"but\",\n \"by\",\n \"c\",\n \"came\",\n \"can\",\n \"cannot\",\n \"case\",\n \"cases\",\n \"certain\",\n \"certainly\",\n \"clear\",\n \"clearly\",\n \"come\",\n \"could\",\n \"d\",\n \"did\",\n \"differ\",\n \"different\",\n \"differently\",\n \"do\",\n \"does\",\n \"done\",\n \"down\",\n \"down\",\n \"downed\",\n \"downing\",\n \"downs\",\n \"during\",\n \"e\",\n \"each\",\n \"early\",\n \"either\",\n \"end\",\n \"ended\",\n \"ending\",\n \"ends\",\n \"enough\",\n \"even\",\n \"evenly\",\n \"ever\",\n \"every\",\n \"everybody\",\n \"everyone\",\n \"everything\",\n \"everywhere\",\n \"f\",\n \"face\",\n \"faces\",\n \"fact\",\n \"facts\",\n \"far\",\n \"felt\",\n \"few\",\n \"find\",\n \"finds\",\n \"first\",\n \"for\",\n \"four\",\n \"from\",\n \"full\",\n \"fully\",\n \"further\",\n \"furthered\",\n \"furthering\",\n \"furthers\",\n \"g\",\n \"gave\",\n \"general\",\n \"generally\",\n \"get\",\n \"gets\",\n \"give\",\n \"given\",\n \"gives\",\n \"go\",\n \"going\",\n \"good\",\n \"goods\",\n \"got\",\n \"great\",\n \"greater\",\n \"greatest\",\n \"group\",\n \"grouped\",\n \"grouping\",\n \"groups\",\n \"h\",\n \"had\",\n \"has\",\n \"have\",\n \"having\",\n \"he\",\n \"her\",\n \"here\",\n \"herself\",\n \"high\",\n \"high\",\n \"high\",\n \"higher\",\n \"highest\",\n \"him\",\n \"himself\",\n \"his\",\n \"how\",\n \"however\",\n \"i\",\n \"if\",\n \"important\",\n \"in\",\n \"interest\",\n \"interested\",\n \"interesting\",\n \"interests\",\n \"into\",\n \"is\",\n \"it\",\n \"its\",\n \"itself\",\n \"j\",\n \"just\",\n \"k\",\n \"keep\",\n \"keeps\",\n \"kind\",\n \"knew\",\n \"know\",\n \"known\",\n \"knows\",\n \"l\",\n \"large\",\n \"largely\",\n \"last\",\n \"later\",\n \"latest\",\n \"least\",\n \"less\",\n \"let\",\n \"lets\",\n \"like\",\n \"likely\",\n \"long\",\n \"longer\",\n \"longest\",\n \"m\",\n \"made\",\n \"make\",\n \"making\",\n \"man\",\n \"many\",\n \"may\",\n \"me\",\n \"member\",\n \"members\",\n \"men\",\n \"might\",\n \"more\",\n \"most\",\n \"mostly\",\n \"mr\",\n \"mrs\",\n \"much\",\n \"must\",\n \"my\",\n \"myself\",\n \"n\",\n \"necessary\",\n \"need\",\n \"needed\",\n \"needing\",\n \"needs\",\n \"never\",\n \"new\",\n \"new\",\n \"newer\",\n \"newest\",\n \"next\",\n \"no\",\n \"nobody\",\n \"non\",\n \"noone\",\n \"not\",\n \"nothing\",\n \"now\",\n \"nowhere\",\n \"number\",\n \"numbers\",\n \"o\",\n \"of\",\n \"off\",\n \"often\",\n \"old\",\n \"older\",\n \"oldest\",\n \"on\",\n \"once\",\n \"one\",\n \"only\",\n \"open\",\n \"opened\",\n \"opening\",\n \"opens\",\n \"or\",\n \"order\",\n \"ordered\",\n \"ordering\",\n \"orders\",\n \"other\",\n \"others\",\n \"our\",\n \"out\",\n \"over\",\n \"p\",\n \"part\",\n \"parted\",\n \"parting\",\n \"parts\",\n \"per\",\n \"perhaps\",\n \"place\",\n \"places\",\n \"point\",\n \"pointed\",\n \"pointing\",\n \"points\",\n \"possible\",\n \"present\",\n \"presented\",\n \"presenting\",\n \"presents\",\n \"problem\",\n \"problems\",\n \"put\",\n \"puts\",\n \"q\",\n \"quite\",\n \"r\",\n \"rather\",\n \"really\",\n \"right\",\n \"right\",\n \"room\",\n \"rooms\",\n \"s\",\n \"said\",\n \"same\",\n \"saw\",\n \"say\",\n \"says\",\n \"second\",\n \"seconds\",\n \"see\",\n \"seem\",\n \"seemed\",\n \"seeming\",\n \"seems\",\n \"sees\",\n \"several\",\n \"shall\",\n \"she\",\n \"should\",\n \"show\",\n \"showed\",\n \"showing\",\n \"shows\",\n \"side\",\n \"sides\",\n \"since\",\n \"small\",\n \"smaller\",\n \"smallest\",\n \"so\",\n \"some\",\n \"somebody\",\n \"someone\",\n \"something\",\n \"somewhere\",\n \"state\",\n \"states\",\n \"still\",\n \"still\",\n \"such\",\n \"sure\",\n \"t\",\n \"take\",\n \"taken\",\n \"than\",\n \"that\",\n \"the\",\n \"their\",\n \"them\",\n \"then\",\n \"there\",\n \"therefore\",\n \"these\",\n \"they\",\n \"thing\",\n \"things\",\n \"think\",\n \"thinks\",\n \"this\",\n \"those\",\n \"though\",\n \"thought\",\n \"thoughts\",\n \"three\",\n \"through\",\n \"thus\",\n \"to\",\n \"today\",\n \"together\",\n \"too\",\n \"took\",\n \"toward\",\n \"turn\",\n \"turned\",\n \"turning\",\n \"turns\",\n \"two\",\n \"u\",\n \"under\",\n \"until\",\n \"up\",\n \"upon\",\n \"us\",\n \"use\",\n \"used\",\n \"uses\",\n \"v\",\n \"very\",\n \"w\",\n \"want\",\n \"wanted\",\n \"wanting\",\n \"wants\",\n \"was\",\n \"way\",\n \"ways\",\n \"we\",\n \"well\",\n \"wells\",\n \"went\",\n \"were\",\n \"what\",\n \"when\",\n \"where\",\n \"whether\",\n \"which\",\n \"while\",\n \"who\",\n \"whole\",\n \"whose\",\n \"why\",\n \"will\",\n \"with\",\n \"within\",\n \"without\",\n \"work\",\n \"worked\",\n \"working\",\n \"works\",\n \"would\",\n \"x\",\n \"y\",\n \"year\",\n \"years\",\n \"yet\",\n \"you\",\n \"young\",\n \"younger\",\n \"youngest\",\n \"your\",\n \"yours\",\n \"z\"\n];\n","import { stopWords } from \"./english\";\nimport { stopWords as noStopWords } from \"./norwegian\";\nimport { stopWords as nlStopWords } from \"./dutch\";\nimport { stopWords as esStopWords } from \"./spanish\";\n\nvar stopWordsDictionary: { [index: string]: Array<string> } = {};\nstopWordsDictionary[\"en\"] = stopWords;\nstopWordsDictionary[\"no\"] = noStopWords;\nstopWordsDictionary[\"nl\"] = nlStopWords;\nstopWordsDictionary[\"es\"] = esStopWords;\n\nexport var textHelper = {\n getStopWords: (locale: string = \"\") => {\n return stopWordsDictionary[locale || \"en\"] || [];\n },\n};\n","export var stopWords = [\n \"...\",\n \"alle\",\n \"andre\",\n \"arbeid\",\n \"at\",\n \"av\",\n \"bare\",\n \"begge\",\n \"ble\",\n \"blei\",\n \"bli\",\n \"blir\",\n \"blitt\",\n \"bort\",\n \"bruke\",\n \"både\",\n \"båe\",\n \"da\",\n \"de\",\n \"deg\",\n \"dei\",\n \"deim\",\n \"deira\",\n \"deires\",\n \"dem\",\n \"den\",\n \"denne\",\n \"der\",\n \"dere\",\n \"deres\",\n \"det\",\n \"dette\",\n \"di\",\n \"din\",\n \"disse\",\n \"ditt\",\n \"du\",\n \"dykk\",\n \"dykkar\",\n \"då\",\n \"eg\",\n \"ein\",\n \"eit\",\n \"eitt\",\n \"eller\",\n \"elles\",\n \"en\",\n \"ene\",\n \"eneste\",\n \"enhver\",\n \"enn\",\n \"er\",\n \"et\",\n \"ett\",\n \"etter\",\n \"folk\",\n \"for\",\n \"fordi\",\n \"forsøke\",\n \"fra\",\n \"få\",\n \"før\",\n \"før\",\n \"først\",\n \"gjorde\",\n \"gjøre\",\n \"god\",\n \"gå\",\n \"ha\",\n \"hadde\",\n \"han\",\n \"hans\",\n \"har\",\n \"hennar\",\n \"henne\",\n \"hennes\",\n \"her\",\n \"hjå\",\n \"ho\",\n \"hoe\",\n \"honom\",\n \"hoss\",\n \"hossen\",\n \"hun\",\n \"hva\",\n \"hvem\",\n \"hver\",\n \"hvilke\",\n \"hvilken\",\n \"hvis\",\n \"hvor\",\n \"hvordan\",\n \"hvorfor\",\n \"i\",\n \"ikke\",\n \"ikkje\",\n \"ingen\",\n \"ingi\",\n \"inkje\",\n \"inn\",\n \"innen\",\n \"inni\",\n \"ja\",\n \"jeg\",\n \"kan\",\n \"kom\",\n \"korleis\",\n \"korso\",\n \"kun\",\n \"kunne\",\n \"kva\",\n \"kvar\",\n \"kvarhelst\",\n \"kven\",\n \"kvi\",\n \"kvifor\",\n \"lage\",\n \"lang\",\n \"lik\",\n \"like\",\n \"makt\",\n \"man\",\n \"mange\",\n \"me\",\n \"med\",\n \"medan\",\n \"meg\",\n \"meget\",\n \"mellom\",\n \"men\",\n \"mens\",\n \"mer\",\n \"mest\",\n \"mi\",\n \"min\",\n \"mine\",\n \"mitt\",\n \"mot\",\n \"mye\",\n \"mykje\",\n \"må\",\n \"måte\",\n \"navn\",\n \"ned\",\n \"nei\",\n \"no\",\n \"noe\",\n \"noen\",\n \"noka\",\n \"noko\",\n \"nokon\",\n \"nokor\",\n \"nokre\",\n \"ny\",\n \"nå\",\n \"når\",\n \"og\",\n \"også\",\n \"om\",\n \"opp\",\n \"oss\",\n \"over\",\n \"part\",\n \"punkt\",\n \"på\",\n \"samme\",\n \"seg\",\n \"selv\",\n \"si\",\n \"sia\",\n \"sidan\",\n \"siden\",\n \"sin\",\n \"sine\",\n \"sist\",\n \"sitt\",\n \"sjøl\",\n \"skal\",\n \"skulle\",\n \"slik\",\n \"slutt\",\n \"so\",\n \"som\",\n \"somme\",\n \"somt\",\n \"start\",\n \"stille\",\n \"så\",\n \"sånn\",\n \"tid\",\n \"til\",\n \"tilbake\",\n \"tilstand\",\n \"um\",\n \"under\",\n \"upp\",\n \"ut\",\n \"uten\",\n \"var\",\n \"vart\",\n \"varte\",\n \"ved\",\n \"verdi\",\n \"vere\",\n \"verte\",\n \"vi\",\n \"vil\",\n \"ville\",\n \"vite\",\n \"vore\",\n \"vors\",\n \"vort\",\n \"vår\",\n \"være\",\n \"vært\",\n \"vøre\",\n \"vørt\",\n \"æ\",\n \"å\"\n];\n","export var stopWords = [\n \"...\",\n \"a\",\n \"actualmente\",\n \"adelante\",\n \"además\",\n \"afirmó\",\n \"agregó\",\n \"ahora\",\n \"ahí\",\n \"al\",\n \"algo\",\n \"alguna\",\n \"algunas\",\n \"alguno\",\n \"algunos\",\n \"algún\",\n \"alrededor\",\n \"ambos\",\n \"ampleamos\",\n \"ante\",\n \"anterior\",\n \"antes\",\n \"apenas\",\n \"aproximadamente\",\n \"aquel\",\n \"aquellas\",\n \"aquellos\",\n \"aqui\",\n \"aquí\",\n \"arriba\",\n \"aseguró\",\n \"así\",\n \"atras\",\n \"aunque\",\n \"ayer\",\n \"añadió\",\n \"aún\",\n \"bajo\",\n \"bastante\",\n \"bien\",\n \"buen\",\n \"buena\",\n \"buenas\",\n \"bueno\",\n \"buenos\",\n \"cada\",\n \"casi\",\n \"cerca\",\n \"cierta\",\n \"ciertas\",\n \"cierto\",\n \"ciertos\",\n \"cinco\",\n \"comentó\",\n \"como\",\n \"con\",\n \"conocer\",\n \"conseguimos\",\n \"conseguir\",\n \"considera\",\n \"consideró\",\n \"consigo\",\n \"consigue\",\n \"consiguen\",\n \"consigues\",\n \"contra\",\n \"cosas\",\n \"creo\",\n \"cual\",\n \"cuales\",\n \"cualquier\",\n \"cuando\",\n \"cuanto\",\n \"cuatro\",\n \"cuenta\",\n \"cómo\",\n \"da\",\n \"dado\",\n \"dan\",\n \"dar\",\n \"de\",\n \"debe\",\n \"deben\",\n \"debido\",\n \"decir\",\n \"dejó\",\n \"del\",\n \"demás\",\n \"dentro\",\n \"desde\",\n \"después\",\n \"dice\",\n \"dicen\",\n \"dicho\",\n \"dieron\",\n \"diferente\",\n \"diferentes\",\n \"dijeron\",\n \"dijo\",\n \"dio\",\n \"donde\",\n \"dos\",\n \"durante\",\n \"e\",\n \"ejemplo\",\n \"el\",\n \"ella\",\n \"ellas\",\n \"ello\",\n \"ellos\",\n \"embargo\",\n \"empleais\",\n \"emplean\",\n \"emplear\",\n \"empleas\",\n \"empleo\",\n \"en\",\n \"encima\",\n \"encuentra\",\n \"entonces\",\n \"entre\",\n \"era\",\n \"erais\",\n \"eramos\",\n \"eran\",\n \"eras\",\n \"eres\",\n \"es\",\n \"esa\",\n \"esas\",\n \"ese\",\n \"eso\",\n \"esos\",\n \"esta\",\n \"estaba\",\n \"estabais\",\n \"estaban\",\n \"estabas\",\n \"estad\",\n \"estada\",\n \"estadas\",\n \"estado\",\n \"estados\",\n \"estais\",\n \"estamos\",\n \"estan\",\n \"estando\",\n \"estar\",\n \"estaremos\",\n \"estará\",\n \"estarán\",\n \"estarás\",\n \"estaré\",\n \"estaréis\",\n \"estaría\",\n \"estaríais\",\n \"estaríamos\",\n \"estarían\",\n \"estarías\",\n \"estas\",\n \"este\",\n \"estemos\",\n \"esto\",\n \"estos\",\n \"estoy\",\n \"estuve\",\n \"estuviera\",\n \"estuvierais\",\n \"estuvieran\",\n \"estuvieras\",\n \"estuvieron\",\n \"estuviese\",\n \"estuvieseis\",\n \"estuviesen\",\n \"estuvieses\",\n \"estuvimos\",\n \"estuviste\",\n \"estuvisteis\",\n \"estuviéramos\",\n \"estuviésemos\",\n \"estuvo\",\n \"está\",\n \"estábamos\",\n \"estáis\",\n \"están\",\n \"estás\",\n \"esté\",\n \"estéis\",\n \"estén\",\n \"estés\",\n \"ex\",\n \"existe\",\n \"existen\",\n \"explicó\",\n \"expresó\",\n \"fin\",\n \"fue\",\n \"fuera\",\n \"fuerais\",\n \"fueran\",\n \"fueras\",\n \"fueron\",\n \"fuese\",\n \"fueseis\",\n \"fuesen\",\n \"fueses\",\n \"fui\",\n \"fuimos\",\n \"fuiste\",\n \"fuisteis\",\n \"fuéramos\",\n \"fuésemos\",\n \"gran\",\n \"grandes\",\n \"gueno\",\n \"ha\",\n \"haber\",\n \"habida\",\n \"habidas\",\n \"habido\",\n \"habidos\",\n \"habiendo\",\n \"habremos\",\n \"habrá\",\n \"habrán\",\n \"habrás\",\n \"habré\",\n \"habréis\",\n \"habría\",\n \"habríais\",\n \"habríamos\",\n \"habrían\",\n \"habrías\",\n \"habéis\",\n \"había\",\n \"habíais\",\n \"habíamos\",\n \"habían\",\n \"habías\",\n \"hace\",\n \"haceis\",\n \"hacemos\",\n \"hacen\",\n \"hacer\",\n \"hacerlo\",\n \"haces\",\n \"hacia\",\n \"haciendo\",\n \"hago\",\n \"han\",\n \"has\",\n \"hasta\",\n \"hay\",\n \"haya\",\n \"hayamos\",\n \"hayan\",\n \"hayas\",\n \"hayáis\",\n \"he\",\n \"hecho\",\n \"hemos\",\n \"hicieron\",\n \"hizo\",\n \"hoy\",\n \"hube\",\n \"hubiera\",\n \"hubierais\",\n \"hubieran\",\n \"hubieras\",\n \"hubieron\",\n \"hubiese\",\n \"hubieseis\",\n \"hubiesen\",\n \"hubieses\",\n \"hubimos\",\n \"hubiste\",\n \"hubisteis\",\n \"hubiéramos\",\n \"hubiésemos\",\n \"hubo\",\n \"igual\",\n \"incluso\",\n \"indicó\",\n \"informó\",\n \"intenta\",\n \"intentais\",\n \"intentamos\",\n \"intentan\",\n \"intentar\",\n \"intentas\",\n \"intento\",\n \"ir\",\n \"junto\",\n \"la\",\n \"lado\",\n \"largo\",\n \"las\",\n \"le\",\n \"les\",\n \"llegó\",\n \"lleva\",\n \"llevar\",\n \"lo\",\n \"los\",\n \"luego\",\n \"lugar\",\n \"manera\",\n \"manifestó\",\n \"mayor\",\n \"me\",\n \"mediante\",\n \"mejor\",\n \"mencionó\",\n \"menos\",\n \"mi\",\n \"mientras\",\n \"mio\",\n \"mis\",\n \"misma\",\n \"mismas\",\n \"mismo\",\n \"mismos\",\n \"modo\",\n \"momento\",\n \"mucha\",\n \"muchas\",\n \"mucho\",\n \"muchos\",\n \"muy\",\n \"más\",\n \"mí\",\n \"mía\",\n \"mías\",\n \"mío\",\n \"míos\",\n \"nada\",\n \"nadie\",\n \"ni\",\n \"ninguna\",\n \"ningunas\",\n \"ninguno\",\n \"ningunos\",\n \"ningún\",\n \"no\",\n \"nos\",\n \"nosotras\",\n \"nosotros\",\n \"nuestra\",\n \"nuestras\",\n \"nuestro\",\n \"nuestros\",\n \"nueva\",\n \"nuevas\",\n \"nuevo\",\n \"nuevos\",\n \"nunca\",\n \"o\",\n \"ocho\",\n \"os\",\n \"otra\",\n \"otras\",\n \"otro\",\n \"otros\",\n \"para\",\n \"parece\",\n \"parte\",\n \"partir\",\n \"pasada\",\n \"pasado\",\n \"pero\",\n \"pesar\",\n \"poca\",\n \"pocas\",\n \"poco\",\n \"pocos\",\n \"podeis\",\n \"podemos\",\n \"poder\",\n \"podria\",\n \"podriais\",\n \"podriamos\",\n \"podrian\",\n \"podrias\",\n \"podrá\",\n \"podrán\",\n \"podría\",\n \"podrían\",\n \"poner\",\n \"por\",\n \"por qué\",\n \"porque\",\n \"posible\",\n \"primer\",\n \"primera\",\n \"primero\",\n \"primeros\",\n \"principalmente\",\n \"propia\",\n \"propias\",\n \"propio\",\n \"propios\",\n \"próximo\",\n \"próximos\",\n \"pudo\",\n \"pueda\",\n \"puede\",\n \"pueden\",\n \"puedo\",\n \"pues\",\n \"que\",\n \"quedó\",\n \"queremos\",\n \"quien\",\n \"quienes\",\n \"quiere\",\n \"quién\",\n \"qué\",\n \"realizado\",\n \"realizar\",\n \"realizó\",\n \"respecto\",\n \"sabe\",\n \"sabeis\",\n \"sabemos\",\n \"saben\",\n \"saber\",\n \"sabes\",\n \"se\",\n \"sea\",\n \"seamos\",\n \"sean\",\n \"seas\",\n \"segunda\",\n \"segundo\",\n \"según\",\n \"seis\",\n \"ser\",\n \"seremos\",\n \"será\",\n \"serán\",\n \"serás\",\n \"seré\",\n \"seréis\",\n \"sería\",\n \"seríais\",\n \"seríamos\",\n \"serían\",\n \"serías\",\n \"seáis\",\n \"señaló\",\n \"si\",\n \"sido\",\n \"siempre\",\n \"siendo\",\n \"siete\",\n \"sigue\",\n \"siguiente\",\n \"sin\",\n \"sino\",\n \"sobre\",\n \"sois\",\n \"sola\",\n \"solamente\",\n \"solas\",\n \"solo\",\n \"solos\",\n \"somos\",\n \"son\",\n \"soy\",\n \"su\",\n \"sus\",\n \"suya\",\n \"suyas\",\n \"suyo\",\n \"suyos\",\n \"sí\",\n \"sólo\",\n \"tal\",\n \"también\",\n \"tampoco\",\n \"tan\",\n \"tanto\",\n \"te\",\n \"tendremos\",\n \"tendrá\",\n \"tendrán\",\n \"tendrás\",\n \"tendré\",\n \"tendréis\",\n \"tendría\",\n \"tendríais\",\n \"tendríamos\",\n \"tendrían\",\n \"tendrías\",\n \"tened\",\n \"teneis\",\n \"tenemos\",\n \"tener\",\n \"tenga\",\n \"tengamos\",\n \"tengan\",\n \"tengas\",\n \"tengo\",\n \"tengáis\",\n \"tenida\",\n \"tenidas\",\n \"tenido\",\n \"tenidos\",\n \"teniendo\",\n \"tenéis\",\n \"tenía\",\n \"teníais\",\n \"teníamos\",\n \"tenían\",\n \"tenías\",\n \"tercera\",\n \"ti\",\n \"tiempo\",\n \"tiene\",\n \"tienen\",\n \"tienes\",\n \"toda\",\n \"todas\",\n \"todavía\",\n \"todo\",\n \"todos\",\n \"total\",\n \"trabaja\",\n \"trabajais\",\n \"trabajamos\",\n \"trabajan\",\n \"trabajar\",\n \"trabajas\",\n \"trabajo\",\n \"tras\",\n \"trata\",\n \"través\",\n \"tres\",\n \"tu\",\n \"tus\",\n \"tuve\",\n \"tuviera\",\n \"tuvierais\",\n \"tuvieran\",\n \"tuvieras\",\n \"tuvieron\",\n \"tuviese\",\n \"tuvieseis\",\n \"tuviesen\",\n \"tuvieses\",\n \"tuvimos\",\n \"tuviste\",\n \"tuvisteis\",\n \"tuviéramos\",\n \"tuviésemos\",\n \"tuvo\",\n \"tuya\",\n \"tuyas\",\n \"tuyo\",\n \"tuyos\",\n \"tú\",\n \"ultimo\",\n \"un\",\n \"una\",\n \"unas\",\n \"uno\",\n \"unos\",\n \"usa\",\n \"usais\",\n \"usamos\",\n \"usan\",\n \"usar\",\n \"usas\",\n \"uso\",\n \"usted\",\n \"va\",\n \"vais\",\n \"valor\",\n \"vamos\",\n \"van\",\n \"varias\",\n \"varios\",\n \"vaya\",\n \"veces\",\n \"ver\",\n \"verdad\",\n \"verdadera\",\n \"verdadero\",\n \"vez\",\n \"vosotras\",\n \"vosotros\",\n \"voy\",\n \"vuestra\",\n \"vuestras\",\n \"vuestro\",\n \"vuestros\",\n \"y\",\n \"ya\",\n \"yo\",\n \"él\",\n \"éramos\",\n \"ésta\",\n \"éstas\",\n \"éste\",\n \"éstos\",\n \"última\",\n \"últimas\",\n \"último\",\n \"últimos\"\n];","export const defaultOptions = {\n spiralResolution: 1,\n spiralLimit: 360 * 5,\n lineHeight: 0.8,\n xWordPadding: 0,\n yWordPadding: 3,\n weightFactor: 40,\n topN: 40,\n maxHeight: 0,\n padding: 10\n};\n\nexport class WordCloudWidget {\n private _words: Array<Array<any>> = [];\n private _placedWords: Array<{element: HTMLDivElement, rect: DOMRect, left: number, top: number}> = [];\n private _minWeight = 1;\n private _weightFactor = 1;\n private _renderedTarget: HTMLDivElement = undefined;\n\n constructor(private _options = defaultOptions) {\n }\n\n colors = [\"black\"];\n get words(): Array<Array<any>> {\n return this._words;\n }\n set words(w: Array<Array<any>>) {\n this._words = [].concat(w || []);\n this._minWeight = 1;\n this._weightFactor = 1;\n if(this._words.length > 0) {\n this._words.sort((a, b) => -1 * (a[1] - b[1]));\n this._minWeight = this._words[this._words.length - 1][1];\n this._weightFactor = (this._words[0][1] - this._minWeight + 1) / this._options.weightFactor;\n }\n }\n\n private createWordElement(text: string, weight: number, color: number) {\n var element = document.createElement(\"div\");\n element.style.position = \"absolute\";\n element.style.fontSize = (weight - this._minWeight + 1) / this._weightFactor + \"px\";\n element.style.lineHeight = this._options.lineHeight + \"em\";\n if(this.colors.length > 0) {\n element.style.color = this.colors[color % this.colors.length];\n }\n element.title = text + \" (\" + weight + \")\";\n element.appendChild(document.createTextNode(text));\n return element;\n }\n private isIntersectWithPlaced(currentWordRect: DOMRect) {\n for(var i = 0; i < this._placedWords.length; i+=1) {\n var existingWordRect = this._placedWords[i].rect;\n if(!(currentWordRect.right + this._options.xWordPadding < existingWordRect.left - this._options.xWordPadding ||\n currentWordRect.left - this._options.xWordPadding > existingWordRect.right + this._options.xWordPadding ||\n currentWordRect.bottom + this._options.yWordPadding < existingWordRect.top - this._options.yWordPadding ||\n currentWordRect.top - this._options.yWordPadding > existingWordRect.bottom + this._options.yWordPadding)) {\n return true;\n }\n }\n return false;\n }\n private arrangeWords(cloudElement: HTMLDivElement, startPoint) {\n const currentPoint = {\n x: 0,\n y: 0\n };\n let yMin = currentPoint.y;\n let yMax = currentPoint.y;\n const displayWordsCount = Math.min(this._options.topN, this.words.length);\n for (var i = 0; i < displayWordsCount; i += 1) {\n var wordElement = this.createWordElement(this.words[i][0], this.words[i][1], i);\n cloudElement.appendChild(wordElement);\n for (var j = 0; j < this._options.spiralLimit; j++) {\n const angle = this._options.spiralResolution * j;\n currentPoint.x = (1 + angle) * Math.cos(angle);\n currentPoint.y = (1 + angle) * Math.sin(angle);\n const left = startPoint.x + currentPoint.x - wordElement.offsetWidth/2;\n const top = startPoint.y + currentPoint.y - wordElement.offsetHeight/2;\n wordElement.style.left = left + \"px\";\n wordElement.style.top = top + \"px\";\n const wordRect = wordElement.getBoundingClientRect();\n if (!this.isIntersectWithPlaced(wordRect)) {\n this._placedWords.push({\n element: wordElement,\n rect: wordRect,\n left,\n top\n });\n break;\n }\n }\n const yMinProbe = currentPoint.y - wordElement.offsetHeight/2;\n if(yMin > yMinProbe) {\n yMin = yMinProbe;\n }\n const yMaxProbe = currentPoint.y + wordElement.offsetHeight/2;\n if(yMax < yMaxProbe) {\n yMax = yMaxProbe;\n }\n }\n return [yMin, yMax];\n }\n public render(target: HTMLDivElement): void {\n this._renderedTarget = target;\n var cloudElement = document.createElement(\"div\");\n\n document.body.appendChild(cloudElement);\n cloudElement.style.position = \"fixed\";\n cloudElement.style.top = \"-1000px\";\n cloudElement.style.width = \"0\";\n cloudElement.style.height = \"0\";\n\n const startPoint = {\n x: cloudElement.offsetWidth / 2,\n y: cloudElement.offsetHeight / 2\n };\n const [yMin, yMax] = this.arrangeWords(cloudElement, startPoint);\n this._placedWords.forEach(wordInfo => {\n wordInfo.element.style.top = wordInfo.top - yMin + this._options.padding + \"px\";\n });\n\n cloudElement.remove();\n cloudElement.style.top = \"auto\";\n cloudElement.style.left = \"50%\";\n cloudElement.className = \"sa-visualizer-wordcloud\";\n cloudElement.style.position = \"relative\";\n if(this._options.maxHeight > 0) {\n cloudElement.style.height = this._options.maxHeight + \"px\";\n cloudElement.style.overflow = \"auto\";\n }\n if(this._options.maxHeight == 0) {\n cloudElement.style.height = yMax - yMin + this._options.padding * 2 + \"px\";\n }\n target.appendChild(cloudElement);\n }\n public dispose(): void {\n if(!!this._renderedTarget) {\n this._renderedTarget.innerHTML = \"\";\n this._renderedTarget = undefined;\n }\n }\n}\n","import { Question, Event } from \"survey-core\";\nimport { VisualizerBase } from \"../visualizerBase\";\nimport { VisualizationManager } from \"../visualizationManager\";\nimport { textHelper } from \"./stopwords/index\";\nimport { DocumentHelper } from \"../utils\";\nimport { localization } from \"../localizationManager\";\nimport { WordCloudWidget, defaultOptions } from \"./widget\";\n\nexport class WordCloudAdapter {\n private _wordcloud: any;\n\n public static drawOutOfBound = false;\n public static shrinkToFit = true;\n public static abortThreshold: any = undefined;\n public static weightFactor = 20;\n\n public static onWordcloudCreating = new Event<\n (sender: WordCloud, options: any) => any,\n WordCloud,\n any\n >();\n\n constructor(private model: WordCloud) {}\n\n public get wordcloud(): any {\n return this._wordcloud;\n }\n\n public async create(element: HTMLElement): Promise<any> {\n const data = await this.model.getCalculatedValues();\n const colors = this.model.getColors();\n\n if (data.length === 0) {\n const emptyTextNode = <HTMLElement>DocumentHelper.createElement(\"p\", \"\", {\n innerText: localization.getString(\"noResults\"),\n });\n element.appendChild(emptyTextNode);\n return;\n }\n\n const config = JSON.parse(JSON.stringify(defaultOptions));\n const options = {\n config\n };\n WordCloudAdapter.onWordcloudCreating.fire(this.model, options);\n this._wordcloud = new WordCloudWidget(config);\n this._wordcloud.colors = this.model.getColors();\n this._wordcloud.words = data;\n this._wordcloud.render(element);\n return this._wordcloud;\n }\n\n public destroy(node: HTMLElement): void {\n if(this._wordcloud && typeof this._wordcloud.dispose === \"function\") {\n this._wordcloud.dispose();\n }\n this._wordcloud = undefined;\n }\n}\nexport class WordCloud extends VisualizerBase {\n private _wordcloudAdapter: WordCloudAdapter;\n\n constructor(\n question: Question,\n data: Array<{ [index: string]: any }>,\n options?: Object,\n name?: string\n ) {\n super(question, data, options, name || \"wordcloud\");\n this._wordcloudAdapter = new WordCloudAdapter(this);\n }\n\n public convertFromExternalData(externalCalculatedData: any): any[] {\n const innerCalculatedData = [];\n Object.keys(externalCalculatedData || []).forEach(word => {\n innerCalculatedData.push([word, externalCalculatedData[word]]);\n });\n return innerCalculatedData;\n }\n\n protected getCalculatedValuesCore(): Array<any> {\n let result: { [key: string]: number } = {};\n\n let stopWords: string[] = [];\n const locale = localization.currentLocale;\n if (locale) {\n stopWords = textHelper.getStopWords(locale);\n } else {\n stopWords = textHelper.getStopWords();\n }\n const clearWordRegexp = new RegExp(\"[.,\\/#!$%\\^\\*;:{}=\\-_`~()]\", \"g\");\n\n const stopTheWord = (word: string) => {\n if (stopWords.indexOf(word) !== -1) {\n return \"\";\n }\n return word;\n };\n\n const processString = (row: string) => {\n row = \"\" + row;\n // if (row.length > 15) row = row.substring(0, 14) + \"...\";\n\n if (!!row) {\n row.split(\" \").forEach((word) => {\n let clearedWord = (word || \"\").toLowerCase().replace(clearWordRegexp, \"\");\n clearedWord = stopTheWord(clearedWord);\n if (!!clearedWord) {\n if (!result[clearedWord]) {\n result[clearedWord] = 1;\n } else {\n result[clearedWord]++;\n }\n }\n });\n }\n };\n\n this.surveyData.forEach((row) => {\n const rowValue: any = row[this.question.name];\n if (!!rowValue) {\n if (Array.isArray(rowValue)) {\n rowValue.forEach(processString);\n } else {\n if (typeof rowValue === \"object\") {\n Object.keys(rowValue).forEach((key) =>\n processString(rowValue[key])\n );\n } else {\n processString(rowValue);\n }\n }\n }\n });\n\n return Object.keys(result).map((key) => {\n return [key, result[key]];\n });\n }\n\n protected destroyContent(container: HTMLElement) {\n this._wordcloudAdapter.destroy(container);\n super.destroyContent(container);\n }\n\n protected async renderContentAsync(container: HTMLElement) {\n const chartNode: HTMLElement = DocumentHelper.createElement(\"div\");\n container.appendChild(chartNode);\n await this._wordcloudAdapter.create(chartNode);\n container.innerHTML = \"\";\n container.appendChild(chartNode);\n return container;\n }\n\n destroy() {\n this._wordcloudAdapter.destroy(this.contentContainer);\n super.destroy();\n }\n}\n\nVisualizationManager.registerVisualizer(\"text\", WordCloud);\nVisualizationManager.registerVisualizer(\"comment\", WordCloud);\nVisualizationManager.registerVisualizer(\"multipletext\", WordCloud);\n","module.exports = __WEBPACK_EXTERNAL_MODULE_plotly_js_dist_min__;","module.exports = __WEBPACK_EXTERNAL_MODULE_survey_core__;","// 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","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\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};","export * from \"../plotly/index\";\nexport * from \"./summary.core\";\n"],"names":[],"sourceRoot":""}
|