@visactor/vtable 0.12.1-alpha.1 → 0.12.2
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/cjs/ListTable.js +2 -0
- package/cjs/ListTable.js.map +1 -1
- package/cjs/PivotTable.js +2 -2
- package/cjs/PivotTable.js.map +1 -1
- package/cjs/components/tooltip/TooltipHandler.js +17 -8
- package/cjs/components/tooltip/TooltipHandler.js.map +1 -1
- package/cjs/core/BaseTable.js +1 -1
- package/cjs/core/BaseTable.js.map +1 -1
- package/cjs/dataset/dataset.d.ts +1 -0
- package/cjs/dataset/dataset.js +89 -58
- package/cjs/dataset/dataset.js.map +1 -1
- package/cjs/event/event.js +2 -3
- package/cjs/event/event.js.map +1 -1
- package/cjs/index.d.ts +1 -1
- package/cjs/index.js +1 -1
- package/cjs/index.js.map +1 -1
- package/cjs/layout/chart-helper/get-axis-config.d.ts +11 -0
- package/cjs/layout/chart-helper/get-axis-config.js +65 -62
- package/cjs/layout/chart-helper/get-axis-config.js.map +1 -1
- package/cjs/layout/chart-helper/get-chart-spec.js +9 -24
- package/cjs/layout/chart-helper/get-chart-spec.js.map +1 -1
- package/cjs/layout/pivot-header-layout.js +2 -2
- package/cjs/layout/pivot-header-layout.js.map +1 -1
- package/cjs/scenegraph/group-creater/progress/update-position/dynamic-set-x.js +3 -3
- package/cjs/scenegraph/group-creater/progress/update-position/dynamic-set-x.js.map +1 -1
- package/cjs/scenegraph/group-creater/progress/update-position/util.d.ts +1 -1
- package/cjs/scenegraph/group-creater/progress/update-position/util.js +10 -5
- package/cjs/scenegraph/group-creater/progress/update-position/util.js.map +1 -1
- package/cjs/scenegraph/stick-text/index.js +20 -18
- package/cjs/scenegraph/stick-text/index.js.map +1 -1
- package/cjs/themes/DARK.js +1 -1
- package/cjs/themes/DARK.js.map +1 -1
- package/cjs/themes/SIMPLIFY.js +1 -1
- package/cjs/themes/SIMPLIFY.js.map +1 -1
- package/cjs/ts-types/base-table.js.map +1 -1
- package/cjs/ts-types/new-data-set.js.map +1 -1
- package/cjs/ts-types/table-engine.js.map +1 -1
- package/dist/vtable.js +238 -199
- package/dist/vtable.min.js +2 -2
- package/es/ListTable.js +2 -0
- package/es/ListTable.js.map +1 -1
- package/es/PivotTable.js +2 -2
- package/es/PivotTable.js.map +1 -1
- package/es/components/tooltip/TooltipHandler.js +17 -8
- package/es/components/tooltip/TooltipHandler.js.map +1 -1
- package/es/core/BaseTable.js +1 -1
- package/es/core/BaseTable.js.map +1 -1
- package/es/dataset/dataset.d.ts +1 -0
- package/es/dataset/dataset.js +89 -58
- package/es/dataset/dataset.js.map +1 -1
- package/es/event/event.js +2 -3
- package/es/event/event.js.map +1 -1
- package/es/index.d.ts +1 -1
- package/es/index.js +1 -1
- package/es/index.js.map +1 -1
- package/es/layout/chart-helper/get-axis-config.d.ts +11 -0
- package/es/layout/chart-helper/get-axis-config.js +61 -57
- package/es/layout/chart-helper/get-axis-config.js.map +1 -1
- package/es/layout/chart-helper/get-chart-spec.js +6 -21
- package/es/layout/chart-helper/get-chart-spec.js.map +1 -1
- package/es/layout/pivot-header-layout.js +2 -2
- package/es/layout/pivot-header-layout.js.map +1 -1
- package/es/scenegraph/group-creater/progress/update-position/dynamic-set-x.js +3 -3
- package/es/scenegraph/group-creater/progress/update-position/dynamic-set-x.js.map +1 -1
- package/es/scenegraph/group-creater/progress/update-position/util.d.ts +1 -1
- package/es/scenegraph/group-creater/progress/update-position/util.js +10 -5
- package/es/scenegraph/group-creater/progress/update-position/util.js.map +1 -1
- package/es/scenegraph/stick-text/index.js +20 -18
- package/es/scenegraph/stick-text/index.js.map +1 -1
- package/es/themes/DARK.js +1 -1
- package/es/themes/DARK.js.map +1 -1
- package/es/themes/SIMPLIFY.js +1 -1
- package/es/themes/SIMPLIFY.js.map +1 -1
- package/es/ts-types/base-table.js.map +1 -1
- package/es/ts-types/new-data-set.js.map +1 -1
- package/es/ts-types/table-engine.js.map +1 -1
- package/package.json +2 -2
- package/cjs/components/axis/get-axis-attributes.d.ts +0 -151
- package/es/components/axis/get-axis-attributes.d.ts +0 -151
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["dataset/dataset.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAuB3C,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAExD,OAAO,EACL,aAAa,EACb,eAAe,EACf,aAAa,EACb,aAAa,EACb,gBAAgB,EAChB,aAAa,EACb,WAAW,EACX,MAAM,EACN,QAAQ,EACT,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAIvD,MAAM,OAAO,OAAO;IAoFlB,YACE,UAAuB,EAEvB,IAAc,EACd,OAAiB,EACjB,aAAuB,EACvB,UAAmC,EACnC,eAAwB,EACxB,OAAsC,EACtC,gBAAkC,EAClC,aAAmC,EACnC,aAAmC,EACnC,4BAAsC;;QAhFxC,SAAI,GAAiD,EAAE,CAAC;QAChD,gBAAW,GAAG,EAAE,CAAC;QACjB,gBAAW,GAAG,EAAE,CAAC;QAGzB,YAAO,GAAe,EAAE,CAAC;QAEzB,YAAO,GAAe,EAAE,CAAC;QAUzB,aAAQ,GAAG,YAAY,CAAC;QACxB,aAAQ,GAAG,YAAY,CAAC;QAExB,WAAM,GAAG,KAAK,CAAC;QAaf,wBAAmB,GAA8D,EAAE,CAAC;QAEpF,gBAAW,GASP,EAAE,CAAC;QAEP,mBAAc,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAEhC,gBAAW,GAAc,EAAE,CAAC;QAC5B,gBAAW,GAAc,EAAE,CAAC;QAOpC,oBAAe,GAAmD,EAAE,CAAC;QACrE,yBAAoB,GAAmD,EAAE,CAAC;QAyBxE,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC3B,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,aAAhB,gBAAgB,cAAhB,gBAAgB,GAAI,MAAM,CAAC;QAEnD,IAAI,CAAC,SAAS,GAAG,MAAA,IAAI,CAAC,UAAU,0CAAE,SAAS,CAAC;QAC5C,IAAI,CAAC,gBAAgB,GAAG,MAAA,IAAI,CAAC,UAAU,0CAAE,gBAAgB,CAAC;QAC1D,IAAI,CAAC,iBAAiB,GAAG,MAAA,IAAI,CAAC,UAAU,0CAAE,iBAAiB,CAAC;QAC5D,IAAI,CAAC,YAAY,GAAG,MAAA,IAAI,CAAC,UAAU,0CAAE,YAAY,CAAC;QAClD,IAAI,CAAC,MAAM,GAAG,MAAA,IAAI,CAAC,UAAU,0CAAE,MAAM,CAAC;QACtC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QACnC,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;QACvC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,kBAAkB,GAAG,MAAA,MAAA,MAAA,IAAI,CAAC,MAAM,0CAAE,MAAM,0CAAE,eAAe,mCAAI,IAAI,CAAC;QACvE,IAAI,CAAC,gBAAgB,GAAG,MAAA,MAAA,MAAA,IAAI,CAAC,MAAM,0CAAE,MAAM,0CAAE,aAAa,mCAAI,IAAI,CAAC;QACnE,IAAI,CAAC,kBAAkB,GAAG,MAAA,MAAA,MAAA,IAAI,CAAC,MAAM,0CAAE,GAAG,0CAAE,eAAe,mCAAI,IAAI,CAAC;QACpE,IAAI,CAAC,gBAAgB,GAAG,MAAA,MAAA,MAAA,IAAI,CAAC,MAAM,0CAAE,GAAG,0CAAE,aAAa,mCAAI,IAAI,CAAC;QAChE,IAAI,CAAC,eAAe,GAAG,MAAA,IAAI,CAAC,UAAU,0CAAE,eAAe,CAAC;QACxD,IAAI,CAAC,4BAA4B,GAAG,4BAA4B,aAA5B,4BAA4B,cAA5B,4BAA4B,GAAI,KAAK,CAAC;QAC1E,IAAI,CAAC,WAAW,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC3D,IAAI,CAAC,WAAW,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC9D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,MAAA,MAAA,MAAA,IAAI,CAAC,MAAM,0CAAE,GAAG,0CAAE,mBAAmB,0CAAE,MAAM,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;YACjF,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC;YACzD,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YACpD,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,GAAG,IAAI,CAAC;SACzC;QACD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,MAAA,MAAA,MAAA,IAAI,CAAC,MAAM,0CAAE,MAAM,0CAAE,mBAAmB,0CAAE,MAAM,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;YACpF,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC;YAC5D,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YACvD,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,GAAG,IAAI,CAAC;SACzC;QAID,IAAI,OAAO,EAAE;YAEX,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;YACvB,MAAM,EAAE,GAAG,OAAO,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YACxE,IAAI,CAAC,UAAU,EAAE,CAAC;YAGlB,IAAI,CAAC,+BAA+B,EAAE,CAAC;YAEvC,IAAI,CAAC,gCAAgC,EAAE,CAAC;YACxC,MAAM,EAAE,GAAG,OAAO,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YACxE,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;YAGxC,MAAM,EAAE,GAAG,OAAO,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YACxE,IAAI,CAAC,eAAe,EAAE,CAAC;YACvB,MAAM,EAAE,GAAG,OAAO,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YACxE,OAAO,CAAC,GAAG,CAAC,kBAAkB,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;YAGzC,MAAM,EAAE,GAAG,OAAO,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YACxE,IAAI,CAAC,QAAQ,EAAE,CAAC;YAChB,MAAM,EAAE,GAAG,OAAO,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YACxE,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;YAOlC,MAAM,EAAE,GAAG,OAAO,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YACxE,IAAI,aAAa,EAAE;gBACjB,IAAI,CAAC,eAAe,EAAE;oBACpB,aAAa,GAAG,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,CAAC;iBACvD;gBAED,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;aACpC;iBAAM;gBACL,IAAI,IAAI,CAAC,gBAAgB,KAAK,MAAM,EAAE;oBACpC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;iBACzG;qBAAM;oBACL,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,SAAS,CACjC,IAAI,CAAC,OAAO,EACZ,IAAI,CAAC,IAAI,EACT,eAAe,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,EACxC,IAAI,CAAC,WAAW,EAChB,CAAA,MAAA,MAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,MAAM,0CAAE,GAAG,0CAAE,eAAe;wBAChC,CAAC,CAAC,eAAe,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC;wBAC/C,CAAC,eAAe,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,EAC7C,IAAI,CAAC,kBAAkB,EACvB,IAAI,CAAC,gBAAgB,CACtB,CAAC;iBACH;aACF;YACD,IAAI,aAAa,EAAE;gBACjB,IAAI,eAAe,EAAE;oBACnB,aAAa,GAAG,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,CAAC;iBACvD;gBACD,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;aACpC;iBAAM;gBACL,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,SAAS,CACjC,IAAI,CAAC,OAAO,EACZ,IAAI,CAAC,OAAO,EACZ,eAAe,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,EACxC,IAAI,CAAC,WAAW,EAChB,MAAA,MAAA,IAAI,CAAC,MAAM,0CAAE,MAAM,0CAAE,eAAe,EACpC,IAAI,CAAC,kBAAkB,EACvB,IAAI,CAAC,gBAAgB,CACtB,CAAC;aACH;YACD,MAAM,EAAE,GAAG,OAAO,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YACxE,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;YAEnC,IAAI,MAAA,IAAI,CAAC,UAAU,0CAAE,YAAY,EAAE;gBAEjC,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBAGzB,IAAI,CAAC,6BAA6B,EAAE,CAAC;aACtC;SACF;IAEH,CAAC;IAED,kBAAkB,CAAC,IAAY,EAAE,UAAe;QAC9C,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC;IACtC,CAAC;IAED,mBAAmB;QACjB,IAAI,CAAC,kBAAkB,CAAC,eAAe,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;QAClE,IAAI,CAAC,kBAAkB,CAAC,eAAe,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;QAC5D,IAAI,CAAC,kBAAkB,CAAC,eAAe,CAAC,KAAK,EAAE,eAAe,CAAC,CAAC;QAChE,IAAI,CAAC,kBAAkB,CAAC,eAAe,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;QAC5D,IAAI,CAAC,kBAAkB,CAAC,eAAe,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;QAC5D,IAAI,CAAC,kBAAkB,CAAC,eAAe,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;IAC9D,CAAC;IACO,UAAU;QAChB,IAAI,CAAC,cAAc,EAAE,CAAC;IACxB,CAAC;IAEO,+BAA+B;;QACrC,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,eAAe,EAAE;YACxC,IAAI,MAAA,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,0CAAE,KAAK,EAAE;gBACtC,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE;oBAChD,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;wBACjF,OAAO,GAAG,CAAC,KAAK,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;oBAC/C,CAAC,EAAE,MAAM,CAAC,gBAAgB,CAAC,CAAC;oBAC5B,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;wBACjF,OAAO,GAAG,CAAC,KAAK,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;oBAC/C,CAAC,EAAE,MAAM,CAAC,gBAAgB,CAAC,CAAC;oBAC5B,IAAI,WAAW,CAAC;oBAChB,IAAI,WAAW,CAAC;oBAChB,IAAI,IAAI,CAAC,4BAA4B,EAAE;wBACrC,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;4BACnF,OAAO,GAAG,CAAC,aAAa,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;wBAC/D,CAAC,EAAE,MAAM,CAAC,gBAAgB,CAAC,CAAC;wBAC5B,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;4BACnF,OAAO,GAAG,CAAC,aAAa,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;wBAC/D,CAAC,EAAE,MAAM,CAAC,gBAAgB,CAAC,CAAC;qBAC7B;oBAED,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;oBAEvC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,MAAM,CAMnC,CAAC,GAAG,GAAG,GAAG,CAAC;oBAEV,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,MAAM,CAMnC,CAAC,GAAG,GAAG,GAAG,CAAC;oBACZ,IAAI,IAAI,CAAC,4BAA4B,EAAE;wBAEnC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,MAAM,CAMnC,CAAC,WAAW,GAAG,WAAW,CAAC;wBAE1B,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,MAAM,CAMnC,CAAC,WAAW,GAAG,WAAW,CAAC;qBAC7B;iBACF;aACF;SACF;IACH,CAAC;IAEO,gCAAgC;;QACtC,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,eAAe,EAAE;YACxC,IAAI,MAAA,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,0CAAE,MAAM,EAAE;gBACvC,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE;oBAChD,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,GAAI,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,MAAM,CAAmB,CAAC,IAAI,CAC/F,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,eAAC,OAAA,CAAA,MAAA,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,0CAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,KAAG,MAAA,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,0CAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA,CAAA,EAAA,CAC1G,CAAC;iBACH;aACF;SACF;IACH,CAAC;IAIO,cAAc;;QACpB,IAAI,YAAY,GAAG,KAAK,CAAC;QACzB,IAAI,CAAA,MAAA,MAAA,IAAI,CAAC,UAAU,0CAAE,WAAW,0CAAE,MAAM,KAAI,CAAC,EAAE;YAC7C,YAAY,GAAG,IAAI,CAAC;SACrB;QAED,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;YAC/B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;gBACvD,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;gBAC/B,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE;oBAC9C,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;iBAC5B;aACF;SACF;aAAM;YAEL,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,OAAO,EAAE;gBAC9B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;oBAC5D,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;oBACpC,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE;wBAC9C,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;qBACjC;iBACF;aACF;SACF;QACD,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;QACtB,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;IACxB,CAAC;IACO,YAAY,CAAC,MAAW;;QAC9B,IAAI,UAAU,GAAG,IAAI,CAAC;QACtB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAC3D,MAAM,UAAU,GAAG,MAAA,IAAI,CAAC,UAAU,0CAAE,WAAW,CAAC,CAAC,CAAC,CAAC;YACnD,IAAI,UAAU,CAAC,SAAS,EAAE;gBACxB,MAAM,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;gBACjD,IAAI,UAAU,CAAC,cAAc,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE;oBACzD,UAAU,GAAG,KAAK,CAAC;oBACnB,MAAM;iBACP;aACF;iBAAM,IAAI,CAAC,CAAA,MAAA,UAAU,CAAC,UAAU,2DAAG,MAAM,CAAC,CAAA,EAAE;gBAC3C,UAAU,GAAG,KAAK,CAAC;gBACnB,MAAM;aACP;SACF;QACD,OAAO,UAAU,CAAC;IACpB,CAAC;IAMO,aAAa,CAAC,MAAW,EAAE,oBAA6B;;QAE9D,MAAA,IAAI,CAAC,iBAAiB,0CAAE,OAAO,CAAC,CAAC,gBAAkC,EAAE,CAAS,EAAE,EAAE;YAChF,MAAM,CAAC,gBAAgB,CAAC,SAAS,CAAC,GAAG,gBAAgB,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAC5E,CAAC,CAAC,CAAC;QACH,MAAM,MAAM,GAAG,EAAE,CAAC;QAClB,MAAM,MAAM,GAAG,EAAE,CAAC;QAElB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE;YACtD,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAC7B,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;SAC9B;QACD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE;YACzD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YAChC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;SAC9B;QAGD,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,eAAe,EAAE;YACxC,IAAI,MAAM,CAAC,KAAK,CAAC,EAAE;gBACjB,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE;oBAChC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;iBAClC;gBACD,MAAM,WAAW,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;gBAC7G,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,EAAE;oBAC7C,IAAI,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE;wBACrC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC;qBAC/C;yBAAM,IAAI,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE;wBAC5C,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,GAAG;4BACzC,GAAG,EAAE,MAAM,CAAC,gBAAgB;4BAC5B,GAAG,EAAE,MAAM,CAAC,gBAAgB;yBAC7B,CAAC;qBACH;yBAAM;wBACL,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC;qBAC/C;iBACF;gBAED,IAAI,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE;oBACrC,MAAM,SAAS,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;oBAC9G,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC,EAAE;wBACxD,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC,GAAG,IAAI,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,GAAG,CAAC,CAC7F,KAAK,EACL,SAAS,EACT,SAAS,EACT,IAAI,CAAC,4BAA4B,CAClC,CAAC;qBACH;oBACD,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;iBAClE;qBAAM,IAAI,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE;oBAC5C,MAAM,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,WAAW,CAGzD,CAAC;oBACF,UAAU,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC;oBACzD,UAAU,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC;iBAC1D;qBAAM;oBACL,MAAM,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,WAAW,CAAkB,CAAC;oBAC7E,IAAI,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE;wBAC5C,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;qBAChC;iBACF;aACF;SACF;QAID,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QACpD,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAOpD,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;YACvB,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,EAAE;gBACjC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBAC1B,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;aAClC;SAYF;QACD,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;YACvB,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,EAAE;gBACjC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBAC1B,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;aAClC;SAYF;QAID,IAAI,IAAI,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;YACtD,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;gBAC1B,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC;aAC5B;YAED,IAAI,CAAC,CAAA,MAAA,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,0CAAG,UAAU,CAAC,CAAA,EAAE;gBACxC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC;aACxC;YACD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBAClD,MAAM,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC9D,IAAI,CAAC,CAAA,MAAA,MAAA,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,0CAAG,UAAU,CAAC,0CAAG,CAAC,CAAC,CAAA,EAAE;oBAC7C,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,CAAC,WAAW,CAAC,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,eAAe,mCAAI,eAAe,CAAC,GAAG,CAAC,CAC1G,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,KAAK,mCAAI,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,EACvC,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,SAAS,mCAChB,MACE,MAAA,IAAI,CAAC,UAAU,0CAAE,IAAI,CAAC,CAAC,SAA8B,EAAE,EAAE;wBACvD,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE;4BACjC,OAAO,SAAS,CAAC,YAAY,KAAK,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;yBACzD;wBACD,OAAO,KAAK,CAAC;oBACf,CAAC,CACF,0CAAE,MAAM,CACZ,CAAC;iBACH;gBACD,IAAI,oBAAoB,EAAE;oBACxB,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,oBAAoB,KAAI,MAAA,MAAA,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,0CAAG,UAAU,CAAC,0CAAG,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAA,CAAC;iBACzG;qBAEI,IAAI,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,KAAK,EAAE;oBACvB,IAAI,OAAO,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,KAAK,CAAA,KAAK,QAAQ,EAAE;wBACtC,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,KAAK,KAAI,MAAM,KAAI,MAAA,MAAA,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,0CAAG,UAAU,CAAC,0CAAG,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAA,CAAC;qBACnF;yBAAM;wBACL,MAAM,MAAM,GAAG,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,KAAK,CAAC,IAAI,CAAC,CAAC,KAAa,EAAE,EAAE;4BACnD,OAAO,KAAK,IAAI,MAAM,CAAC;wBACzB,CAAC,CAAC,CAAC;wBACH,MAAM,KAAI,MAAA,MAAA,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,0CAAG,UAAU,CAAC,0CAAG,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAA,CAAC;qBACjE;iBACF;qBAAM;oBAEL,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,MAAM,KAAI,MAAA,MAAA,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,0CAAG,UAAU,CAAC,0CAAG,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAA,CAAC;iBAC1F;aACF;SACF;QAED,IAAI,IAAI,CAAC,YAAY,EAAE;YACrB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBAClD,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,EAAE;oBAChC,MAAM,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC9D,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,GAAG;wBAC5B,GAAG,EAAE,IAAI,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;wBACrE,GAAG,EAAE,IAAI,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;wBACrE,KAAK,EAAE,IAAI,IAAI,CAAC,WAAW,CAAC,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,eAAe,mCAAI,eAAe,CAAC,GAAG,CAAC,CAC1E,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,KAAK,mCAAI,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,EACvC,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,SAAS,mCAChB,MACE,MAAA,IAAI,CAAC,UAAU,0CAAE,IAAI,CAAC,CAAC,SAA8B,EAAE,EAAE;4BACvD,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE;gCACjC,OAAO,SAAS,CAAC,YAAY,KAAK,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;6BACzD;4BACD,OAAO,KAAK,CAAC;wBACf,CAAC,CACF,0CAAE,MAAM,CACZ;qBACF,CAAC;iBACH;gBAED,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,MAAA,MAAA,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,0CAAG,UAAU,CAAC,0CAAG,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;gBACvF,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,MAAA,MAAA,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,0CAAG,UAAU,CAAC,0CAAG,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;gBACvF,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;aAChD;SACF;IACH,CAAC;IAMD,eAAe,CAAC,SAAoB;QAClC,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,QAAQ,EAAE,CAAC;IAuBlB,CAAC;IAED,iBAAiB,CAAC,WAAwB,EAAE,cAAuB,KAAK;;QACtE,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,WAAW,EAAE;YACf,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;SAChB;aAAM;YACL,KAAK,MAAM,UAAU,IAAI,IAAI,CAAC,IAAI,EAAE;gBAClC,KAAK,MAAM,UAAU,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;oBAC9C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,UAAU,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;wBACjE,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;qBAC9C;iBACF;aACF;SACF;QACD,IAAI,CAAC,eAAe,GAAG,EAAE,CAAC;QAC1B,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,IAAI,CAAC,+BAA+B,EAAE,CAAC;QACvC,IAAI,CAAC,gCAAgC,EAAE,CAAC;QAExC,IAAI,MAAA,IAAI,CAAC,UAAU,0CAAE,YAAY,EAAE;YAEjC,IAAI,CAAC,iBAAiB,EAAE,CAAC;SAC1B;IACH,CAAC;IAkBO,iBAAiB,CAAC,YAAoB;;QAC5C,OAAO,MAAA,IAAI,CAAC,gBAAgB,0CAAE,IAAI,CAAC,CAAC,KAAuC,EAAE,KAAa,EAAE,EAAE;YAC5F,OAAO,YAAY,KAAK,KAAK,CAAC,YAAY,CAAC;QAC7C,CAAC,CAAC,CAAC;IACL,CAAC;IAQD,aAAa,CAAC,SAA4B,EAAE,EAAE,SAA4B,EAAE,EAAE,SAAiB;;QAC7F,MAAM,cAAc,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAC7D,IAAI,GAAG,CAAC;QACR,IAAI,UAAU,CAAC;QACf,IAAI,UAAU,CAAC;QACf,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;YAC9B,UAAU,GAAG,MAAM,CAAC;SACrB;aAAM;YACL,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;SAC/C;QAED,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;YAC9B,UAAU,GAAG,MAAM,CAAC;SACrB;aAAM;YACL,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;SAC/C;QAED,IAAI,KAAK,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;SAQxD;aAAM;YACL,GAAG,GAAG,MAAA,MAAA,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,0CAAG,UAAU,CAAC,0CAAG,cAAc,CAAC,CAAC;SAC7D;QACD,OAAO,GAAG;YACR,CAAC,CAAC,GAAG;YACL,CAAC,CAAC;gBACE,SAAS,EAAE,EAAE;gBACb,IAAI;gBAEJ,CAAC;gBACD,KAAK;oBACH,OAAO,IAAI,CAAC;gBACd,CAAC;gBACD,WAAW;oBACT,OAAO,EAAE,CAAC;gBACZ,CAAC;gBACD,KAAK;gBAEL,CAAC;aACF,CAAC;IACR,CAAC;IAID,QAAQ;QACN,MAAM,IAAI,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;YAChB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;YACnB,MAAM,QAAQ,GAAG,UAAU,MAAW,EAAE,MAAW;gBACjD,OAAO,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;YACxD,CAAC,CAAC;YAEF,QAAQ,IAAI,CAAC,QAAQ,EAAE;gBACrB,KAAK,cAAc;oBACjB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;wBAC9B,OAAO,WAAW,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;oBACvD,CAAC,CAAC,CAAC;oBACH,MAAM;gBACR,KAAK,cAAc;oBACjB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;wBAC9B,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;oBACxD,CAAC,CAAC,CAAC;oBACH,MAAM;gBACR;oBACE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;aACpD;YACD,QAAQ,IAAI,CAAC,QAAQ,EAAE;gBACrB,KAAK,cAAc;oBACjB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;wBAC9B,OAAO,WAAW,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;oBACvD,CAAC,CAAC,CAAC;oBACH,MAAM;gBACR,KAAK,cAAc;oBACjB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;wBAC9B,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;oBACxD,CAAC,CAAC,CAAC;oBACH,MAAM;gBACR;oBACE,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;oBAClD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;aAC9B;SACF;IACH,CAAC;IAMD,OAAO,CAAC,QAAkB,EAAE,KAAc;QACxC,IAAI,KAAK,CAAC;QACV,MAAM,IAAI,GAAG,IAAI,CAAC;QAClB,MAAM,UAAU,GAAU,UAAU,KAAU;YAC5C,MAAM,OAAO,GAAG,EAAE,CAAC;YACnB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE;gBACrD,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;gBACpB,IAAI,aAAa,GAAG,KAAK,CAAC;gBAC1B,IAAI,IAAI,CAAC,SAAS,EAAE;oBAClB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE;wBAC3D,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,KAAK,KAAK,EAAE;4BACzC,aAAa,GAAG,IAAI,CAAC;4BACrB,OAAO,CAAC,IAAI,CAAC;gCACX,KAAK;gCACL,UAAU,EAAE,CAAC;gCACb,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;gCAC3B,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC;6BAC7C,CAAC,CAAC;yBAWJ;qBACF;iBACF;gBACD,IAAI,CAAC,aAAa,EAAE;oBAClB,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC;iBAC3D;aACF;YACD,OAAO,OAAO,CAAC;QACjB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACb,OAAO,UAAU,CAAW,EAAE,CAAW;;YACvC,IAAI,UAAU,CAAC;YACf,IAAI,MAAM,CAAC;YACX,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBAC1C,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;gBACvB,IAAI,MAAA,MAAM,CAAC,QAAQ,0CAAE,eAAe,EAAE;oBACpC,IAAI,QAAQ,GAAG,CAAC,CAAC;oBACjB,IAAI,QAAQ,GAAG,CAAC,CAAC;oBACjB,IAAI,MAAM,CAAC,UAAU,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;wBAC3C,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;wBAC7C,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,MAAA,MAAA,IAAI,CAAC,MAAM,0CAAE,GAAG,0CAAE,aAAa,CAAC,CAAC,CAAC,MAAA,MAAA,IAAI,CAAC,MAAM,0CAAE,MAAM,0CAAE,aAAa,CAAC,CAAC;wBAC5F,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;wBAC7C,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,MAAA,MAAA,IAAI,CAAC,MAAM,0CAAE,GAAG,0CAAE,aAAa,CAAC,CAAC,CAAC,MAAA,MAAA,IAAI,CAAC,MAAM,0CAAE,MAAM,0CAAE,aAAa,CAAC,CAAC;qBAC7F;oBACD,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;iBAC9C;qBAAM;oBACL,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC;iBACtE;gBACD,IAAI,UAAU,KAAK,CAAC,EAAE;oBACpB,OAAO,UAAU,GAAG,CAAC,CAAA,MAAA,MAAM,CAAC,QAAQ,0CAAE,QAAQ,MAAK,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;iBAC5E;aACF;YACD,OAAO,CAAC,CAAC;QACX,CAAC,CAAC;IACJ,CAAC;IAMD,OAAO,CAAC,QAAkB,EAAE,SAAkB;QAC5C,MAAM,IAAI,GAAG,IAAI,CAAC;QAElB,IAA0B,QAAS,CAAC,eAAe,EAAE;YACnD,OAAO,CAAC,CAAW,EAAE,CAAW,EAAE,EAAE;gBAOlC,MAAM,QAAQ,GAAG,UAAU,MAAW,EAAE,MAAW;oBAEjD,IACE,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM;wBAChC,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC,gBAAgB;wBACnD,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC,kBAAkB,EACrD;wBACA,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;qBACpC;oBACD,IACE,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM;wBACnC,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC,gBAAgB;wBACnD,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC,kBAAkB,EACrD;wBACA,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;qBACpC;oBACD,OAAO,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,MAAM,EAAwB,QAAS,CAAC,eAAe,CAAC,CAAC,KAAK,EAAE,CAAC;gBACrG,CAAC,CAAC;gBACF,IAAI,SAAS,EAAE;oBACb,OAAO,WAAW,CAChB,QAAQ,CAAC,CAAC,EAAwB,QAAS,CAAC,KAAK,CAAC,EAClD,QAAQ,CAAC,CAAC,EAAwB,QAAS,CAAC,KAAK,CAAC,CACnD,CAAC;iBACH;gBACD,OAAO,WAAW,CAChB,QAAQ,CAAuB,QAAS,CAAC,KAAK,EAAE,CAAC,CAAC,EAClD,QAAQ,CAAuB,QAAS,CAAC,KAAK,EAAE,CAAC,CAAC,CACnD,CAAC;YACJ,CAAC,CAAC;SACH;aAAM,IAAiB,QAAS,CAAC,MAAM,EAAE;YACxC,OAAO,MAAM,CAAc,QAAS,CAAC,MAAM,CAAC,CAAC;SAC9C;QACD,IAAmB,QAAS,CAAC,QAAQ,EAAE;YACrC,OAAO,QAAQ,CAAC;SACjB;QACD,IAAmB,QAAS,CAAC,QAAQ,EAAE;YACrC,OAAsB,QAAS,CAAC,QAAQ,CAAC;SAC1C;QACD,OAAO,WAAW,CAAC;IACrB,CAAC;IAID,eAAe;;QACb,MAAM,IAAI,GAAG,IAAI,CAAC;QAClB,IACE,CAAC,CAAA,MAAA,MAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,MAAM,0CAAE,MAAM,0CAAE,aAAa,KAAI,CAAA,MAAA,MAAA,MAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,MAAM,0CAAE,MAAM,0CAAE,mBAAmB,0CAAE,MAAM,KAAI,CAAC,CAAC;YAC/F,CAAC,CAAA,MAAA,MAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,MAAM,0CAAE,GAAG,0CAAE,aAAa,KAAI,CAAA,MAAA,MAAA,MAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,MAAM,0CAAE,GAAG,0CAAE,mBAAmB,0CAAE,MAAM,KAAI,CAAC,CAAC;aACzF,MAAA,MAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,MAAM,0CAAE,MAAM,0CAAE,eAAe,CAAA;aACrC,MAAA,MAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,MAAM,0CAAE,GAAG,0CAAE,eAAe,CAAA,EAIlC;YACA,MAAM,YAAY,GAAa,EAAE,CAAC;YAMlC,MAAM,UAAU,GAAG,CAAC,UAAkB,EAAE,UAAkB,EAAE,EAAE;;gBAC5D,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;gBACrD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,MAAA,MAAA,MAAA,IAAI,CAAC,MAAM,0CAAE,MAAM,0CAAE,mBAAmB,0CAAE,MAAM,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;oBACpF,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC;oBAC5D,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;oBACvD,IAAI,cAAc,IAAI,CAAC,EAAE;wBACvB,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,cAAc,GAAG,CAAC,CAAC,CAAC;wBACxD,IAAI,IAAI,CAAC,gBAAgB,KAAK,MAAM,EAAE;4BAEpC,WAAW,CAAC,IAAI,CAAC,MAAA,MAAA,MAAA,IAAI,CAAC,MAAM,0CAAE,MAAM,0CAAE,aAAa,mCAAI,IAAI,CAAC,CAAC;yBAC9D;wBACD,MAAM,eAAe,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;wBAC9D,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,eAAe,CAAC,EAAE;4BAC3C,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,eAAe,CAAC,GAAG,EAAE,CAAC;yBAC7C;wBACD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;4BAClD,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,EAAE;gCAC9C,MAAM,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;gCAC9D,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,CAAC,WAAW,CAC9D,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,eAAe,mCAAI,eAAe,CAAC,GAAG,CAChD,CACC,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,KAAK,mCAAI,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,EACvC,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,SAAS,mCAChB,MACE,MAAA,IAAI,CAAC,UAAU,0CAAE,IAAI,CAAC,CAAC,SAA8B,EAAE,EAAE;oCACvD,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE;wCACjC,OAAO,SAAS,CAAC,YAAY,KAAK,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;qCACzD;oCACD,OAAO,KAAK,CAAC;gCACf,CAAC,CACF,0CAAE,MAAM,CACZ,CAAC;6BACH;4BACD,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAA,MAAA,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,0CAAG,UAAU,CAAC,0CAAG,CAAC,CAAC,CAAC,CAAC;yBAC1F;qBACF;iBACF;gBACD,IAAI,CAAA,MAAA,MAAA,IAAI,CAAC,MAAM,0CAAE,MAAM,0CAAE,eAAe,KAAI,IAAI,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;oBAClE,MAAM,eAAe,GAAG,IAAI,CAAC,kBAAkB,CAAC;oBAChD,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,eAAe,CAAC,EAAE;wBAC3C,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,eAAe,CAAC,GAAG,EAAE,CAAC;qBAC7C;oBACD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;wBAClD,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,EAAE;4BAC9C,MAAM,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;4BAC9D,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,CAAC,WAAW,CAC9D,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,eAAe,mCAAI,eAAe,CAAC,GAAG,CAChD,CACC,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,KAAK,mCAAI,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,EACvC,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,SAAS,mCAChB,MACE,MAAA,IAAI,CAAC,UAAU,0CAAE,IAAI,CAAC,CAAC,SAA8B,EAAE,EAAE;gCACvD,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE;oCACjC,OAAO,SAAS,CAAC,YAAY,KAAK,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;iCACzD;gCACD,OAAO,KAAK,CAAC;4BACf,CAAC,CACF,0CAAE,MAAM,CACZ,CAAC;yBACH;wBACD,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAA,MAAA,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,0CAAG,UAAU,CAAC,0CAAG,CAAC,CAAC,CAAC,CAAC;qBAC1F;iBACF;YACH,CAAC,CAAC;YACF,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;gBAC1C,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;gBACrD,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;;oBACtD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,MAAA,MAAA,MAAA,IAAI,CAAC,MAAM,0CAAE,GAAG,0CAAE,mBAAmB,0CAAE,MAAM,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;wBACjF,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC;wBACzD,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;wBACpD,IAAI,cAAc,IAAI,CAAC,EAAE;4BACvB,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,cAAc,GAAG,CAAC,CAAC,CAAC;4BACxD,IAAI,IAAI,CAAC,gBAAgB,KAAK,MAAM,EAAE;gCAEpC,WAAW,CAAC,IAAI,CAAC,MAAA,MAAA,MAAA,IAAI,CAAC,MAAM,0CAAE,GAAG,0CAAE,aAAa,mCAAI,IAAI,CAAC,CAAC;6BAC3D;4BACD,MAAM,eAAe,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;4BAC9D,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE;gCAC/B,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,CAAC;gCAChC,YAAY,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;6BACpC;4BACD,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,UAAU,CAAC,EAAE;gCAC3C,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC;gCAC5C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;oCAClD,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE;wCAC9C,MAAM,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;wCAC9D,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,CAAC,WAAW,CAC9D,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,eAAe,mCAAI,eAAe,CAAC,GAAG,CAChD,CACC,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,KAAK,mCAAI,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,EACvC,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,SAAS,mCAChB,MACE,MAAA,IAAI,CAAC,UAAU,0CAAE,IAAI,CAAC,CAAC,SAA8B,EAAE,EAAE;4CACvD,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE;gDACjC,OAAO,SAAS,CAAC,YAAY,KAAK,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;6CACzD;4CACD,OAAO,KAAK,CAAC;wCACf,CAAC,CACF,0CAAE,MAAM,CACZ,CAAC;qCACH;oCACD,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAA,MAAA,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,0CAAG,UAAU,CAAC,0CAAG,CAAC,CAAC,CAAC,CAAC;iCAC1F;6BACF;yBACF;qBACF;oBAED,IAAI,CAAA,MAAA,MAAA,IAAI,CAAC,MAAM,0CAAE,GAAG,0CAAE,eAAe,KAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;wBAClE,MAAM,eAAe,GAAG,IAAI,CAAC,kBAAkB,CAAC;wBAChD,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE;4BAC/B,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,CAAC;4BAChC,YAAY,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;yBACpC;wBACD,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,UAAU,CAAC,EAAE;4BAC3C,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC;yBAC7C;wBACD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;4BAClD,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE;gCAC9C,MAAM,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;gCAC9D,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,CAAC,WAAW,CAC9D,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,eAAe,mCAAI,eAAe,CAAC,GAAG,CAChD,CACC,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,KAAK,mCAAI,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,EACvC,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,SAAS,mCAChB,MACE,MAAA,IAAI,CAAC,UAAU,0CAAE,IAAI,CAAC,CAAC,SAA8B,EAAE,EAAE;oCACvD,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE;wCACjC,OAAO,SAAS,CAAC,YAAY,KAAK,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;qCACzD;oCACD,OAAO,KAAK,CAAC;gCACf,CAAC,CACF,0CAAE,MAAM,CACZ,CAAC;6BACH;4BACD,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAA,MAAA,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,0CAAG,UAAU,CAAC,0CAAG,CAAC,CAAC,CAAC,CAAC;yBAC1F;qBACF;oBACD,UAAU,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;gBACrC,CAAC,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;YAEH,YAAY,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;gBAChC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;oBACtD,UAAU,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;gBACrC,CAAC,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;SACJ;IACH,CAAC;IAMO,UAAU,CAAC,GAAe,EAAE,IAAc,EAAE,UAAmC;QAOrF,MAAM,MAAM,GAAU,EAAE,CAAC;QACzB,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC;QACtC,MAAM,GAAG,GAAG,IAAI,GAAG,EAAE,CAAC;QACtB,SAAS,OAAO,CAAC,IAAS;YACxB,MAAM,IAAI,GAAU,EAAE,CAAC;YACvB,IAAI,IAAS,CAAC;YACd,IAAI,CAAC,OAAO,CAAC,CAAC,KAAU,EAAE,KAAa,EAAE,EAAE;gBACzC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACjB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBAErC,IAAI,IAAI,GAA6D,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;gBACtF,IAAI,CAAC,IAAI,EAAE;oBACT,IAAI,GAAG;wBACL,KAAK;wBAEL,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC;wBAEzB,QAAQ,EACN,KAAK,KAAK,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,MAAM,KAAI,CAAC;4BAClD,CAAC,CAAC,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,GAAG,CAAC,SAAS,CAAC,EAAE;gCAC1B,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE;oCACjC,OAAO;wCACL,YAAY,EAAE,SAAS;wCACvB,KAAK,EAAE,SAAS;qCACjB,CAAC;iCACH;gCACD,OAAO;oCACL,YAAY,EAAE,SAAS,CAAC,YAAY;oCACpC,KAAK,EAAE,SAAS,CAAC,KAAK;iCACvB,CAAC;4BACJ,CAAC,CAAC;4BACJ,CAAC,CAAC,EAAE;qBACT,CAAC;oBAEF,GAAG,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;oBACvB,IAAI,IAAI,EAAE;wBACR,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;qBAC1B;yBAAM;wBACL,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;qBACnB;iBACF;gBACD,IAAI,GAAG,IAAI,CAAC;YACd,CAAC,CAAC,CAAC;QACL,CAAC;QAED,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;QAEnC,OAAO,MAAM,CAAC;IAChB,CAAC;IAOO,SAAS,CACf,GAAe,EACf,IAAc,EACd,UAAmC,EACnC,aAAwB,EACxB,YAAqB,EACrB,eAAuB,EACvB,aAAqB;;QAQrB,IAAI,MAAM,GAAU,EAAE,CAAC;QACvB,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC;QACtC,MAAM,GAAG,GAAG,IAAI,GAAG,EAAE,CAAC;QACtB,SAAS,OAAO,CAAC,IAAS;YACxB,MAAM,IAAI,GAAU,EAAE,CAAC;YACvB,IAAI,IAAS,CAAC;YACd,IAAI,CAAC,OAAO,CAAC,CAAC,KAAU,EAAE,KAAa,EAAE,EAAE;gBACzC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACjB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBAErC,IAAI,IAAI,GAA6D,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;gBACtF,IAAI,CAAC,IAAI,EAAE;oBACT,IAAI,GAAG;wBACL,KAAK;wBACL,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC;wBAGzB,QAAQ,EACN,KAAK,KAAK,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,MAAM,KAAI,CAAC;4BAClD,CAAC,CAAC,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,GAAG,CAAC,SAAS,CAAC,EAAE;gCAC1B,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE;oCACjC,OAAO;wCACL,YAAY,EAAE,SAAS;wCACvB,KAAK,EAAE,SAAS;qCACjB,CAAC;iCACH;gCACD,OAAO;oCACL,YAAY,EAAE,SAAS,CAAC,YAAY;oCACpC,KAAK,EAAE,SAAS,CAAC,KAAK;iCACvB,CAAC;4BACJ,CAAC,CAAC;4BACJ,CAAC,CAAC,EAAE;qBACT,CAAC;oBACF,IAAI,aAAa,CAAC,KAAK,CAAC,EAAE;wBACxB,IAAI,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;wBAC7B,KAAK,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;4BAC5C,MAAM,UAAU,GAA6D;gCAC3E,KAAK,EAAE,aAAa;gCACpB,YAAY,EAAE,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;gCAG7B,QAAQ,EACN,KAAK,GAAG,CAAC,KAAK,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,MAAM,KAAI,CAAC;oCACtD,CAAC,CAAC,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,GAAG,CAAC,SAAS,CAAC,EAAE;wCAC1B,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE;4CACjC,OAAO;gDACL,YAAY,EAAE,SAAS;gDACvB,KAAK,EAAE,SAAS;6CACjB,CAAC;yCACH;wCACD,OAAO;4CACL,YAAY,EAAE,SAAS,CAAC,YAAY;4CACpC,KAAK,EAAE,SAAS,CAAC,KAAK;yCACvB,CAAC;oCACJ,CAAC,CAAC;oCACJ,CAAC,CAAC,EAAE;6BACT,CAAC;4BACF,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;4BAC1B,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC;yBAChC;qBACF;oBACD,GAAG,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;oBACvB,IAAI,IAAI,EAAE;wBAER,IAAI,aAAa,CAAC,KAAK,GAAG,CAAC,CAAC,EAAE;4BAC5B,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;yBACzD;6BAAM;4BACL,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;yBAC1B;qBACF;yBAAM;wBACL,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;qBACnB;iBACF;gBACD,IAAI,GAAG,IAAI,CAAC;YACd,CAAC,CAAC,CAAC;QACL,CAAC;QACD,IAAI,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,MAAM,EAAE;YACf,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;SACpC;aAAM,IAAI,UAAU,EAAE;YACrB,MAAM,GAAG,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,GAAG,CAAC,CAAC,SAAqB,EAA2C,EAAE;;gBAC1F,OAAO,EAAE,YAAY,EAAE,SAAS,CAAC,YAAY,EAAE,KAAK,EAAE,MAAA,SAAS,CAAC,KAAK,mCAAI,SAAS,CAAC,YAAY,EAAE,CAAC;YACpG,CAAC,CAAC,CAAC;SACJ;QAED,IAAI,YAAY,KAAI,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,MAAM,CAAA,EAAE;YAC/B,MAAM,IAAI,GAA8E;gBACtF,KAAK,EAAE,eAAe;gBACtB,YAAY,EAAE,IAAI,CAAC,CAAC,CAAC;gBACrB,OAAO,EAAE,aAAa,CAAC,MAAM;gBAC7B,QAAQ,EACN,MAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,GAAG,CAAC,SAAS,CAAC,EAAE;oBAC1B,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE;wBACjC,OAAO;4BACL,YAAY,EAAE,SAAS;4BACvB,KAAK,EAAE,SAAS;yBACjB,CAAC;qBACH;oBACD,OAAO;wBACL,YAAY,EAAE,SAAS,CAAC,YAAY;wBACpC,KAAK,EAAE,SAAS,CAAC,KAAK;qBACvB,CAAC;gBACJ,CAAC,CAAC,mCAAI,EAAE;aACX,CAAC;YAEF,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SACnB;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAEO,SAAS,CAAC,IAAS;QACzB,MAAM,MAAM,GAAU,EAAE,CAAC;QACzB,SAAS,OAAO,CAAC,IAAS,EAAE,GAAQ;;YAClC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAClB,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;gBAE5B,MAAA,IAAI,CAAC,QAAQ,0CAAE,OAAO,CAAC,CAAC,SAAc,EAAE,EAAE,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;aAC1E;iBAAM;gBACL,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;aAClB;QACH,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,CAAC,QAAa,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC;QACvD,OAAO,MAAM,CAAC;IAChB,CAAC;IACO,iBAAiB;QACvB,MAAM,iBAAiB,GAAG,EAAE,CAAC;QAC7B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACrD,MAAM,IAAI,GAAG,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;YACtC,IAAI,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;gBAClD,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aACpC;SACF;QAED,iBAAiB,CAAC,OAAO,CAAC,gBAAgB,CAAC,EAAE;;YAC3C,MAAM,UAAU,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;YACvC,MAAM,UAAU,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;YACvC,MAAM,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;YACzD,MAAM,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;YACzD,IAAI,CAAC,eAAe,CAAC,UAAU,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC;YACjD,IAAI,CAAC,eAAe,CAAC,UAAU,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC;YAEjD,MAAM,qBAAqB,GAAG,eAAe,IAAI,eAAe,CAAC;YACjE,KAAK,MAAM,GAAG,IAAI,qBAAqB,EAAE;gBACvC,MAAM,MAAM,GAAG,MAAA,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAG,GAAG,CAAC,mCAAI,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC;gBAC5D,MAAM,MAAM,GAAG,MAAA,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAG,GAAG,CAAC,mCAAI,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC;gBAE5D,MAAM,SAAS,GAAG,kBAAkB,CAClC,MAAsC,EACtC,MAAsC,CACvC,CAAC;gBACF,IAAI,CAAC,SAAS,EAAE;oBAEd,IAAI,CAAC,eAAe,CAAC,UAAU,GAAG,QAAQ,CAAC,CAAC,GAAG,CAAC,GAAG;wBACjD,GAAG,EAAG,MAAuC,CAAC,GAAG;wBACjD,GAAG,EAAG,MAAuC,CAAC,GAAG;qBAClD,CAAC;oBACF,IAAI,CAAC,eAAe,CAAC,UAAU,GAAG,QAAQ,CAAC,CAAC,GAAG,CAAC,GAAG;wBACjD,GAAG,EAAG,MAAuC,CAAC,GAAG;wBACjD,GAAG,EAAG,MAAuC,CAAC,GAAG;qBAClD,CAAC;iBACH;qBAAM;oBACL,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,SAAS,CAAC;oBAC3D,IAAI,CAAC,eAAe,CAAC,UAAU,GAAG,QAAQ,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;oBAC5F,IAAI,CAAC,eAAe,CAAC,UAAU,GAAG,QAAQ,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;iBAC7F;aACF;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,6BAA6B;QACnC,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,eAAe,EAAE;YACtC,IAAI,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,QAAQ,EAAE;gBAC9F,IAAI,IAAI,CAAC,UAAU,CAAC,kBAAkB,EAAE;oBACtC,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,GAAG,uBAAuB,CACtD,IAAI,CAAC,eAAe,CAAC,GAAG,CAAwB,EAChD,IAAI,CAAC,UAAU,CAAC,kBAAkB,CACU,CAAC;iBAChD;qBAAM;oBACL,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;iBAC5D;aACF;SACF;IACH,CAAC;IAEO,iBAAiB,CAAC,UAA+B;;QACvD,MAAM,SAAS,GAAG,CAAC,KAA0B,EAAE,cAAuB,EAAE,EAAE;YACxE,KAAK,CAAC,OAAO,CAAC,CAAC,IAAuB,EAAE,EAAE;;gBACxC,IAAI,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC,cAAc,IAAI,CAAC,CAAA,MAAA,IAAI,CAAC,QAAQ,0CAAE,MAAM,CAAA,EAAE;oBACnE,IAAI,CAAC,QAAQ,GAAG,MAAA,IAAI,CAAC,UAAU,0CAAE,GAAG,CAAC,CAAC,SAAqB,EAA2C,EAAE;;wBACtG,OAAO,EAAE,YAAY,EAAE,SAAS,CAAC,YAAY,EAAE,KAAK,EAAE,MAAA,SAAS,CAAC,KAAK,mCAAI,SAAS,CAAC,YAAY,EAAE,CAAC;oBACpG,CAAC,CAAC,CAAC;iBACJ;qBAAM,IAAI,IAAI,CAAC,QAAQ,EAAE;oBACxB,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,cAAc,IAAI,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;iBACjE;YACH,CAAC,CAAC,CAAC;QACL,CAAC,CAAC;QACF,IAAI,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,MAAM,EAAE;YACtB,SAAS,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;SAC9B;aAAM;YACL,UAAU,GAAG,MAAA,IAAI,CAAC,UAAU,0CAAE,GAAG,CAAC,CAAC,SAAqB,EAA2C,EAAE;;gBACnG,OAAO,EAAE,YAAY,EAAE,SAAS,CAAC,YAAY,EAAE,KAAK,EAAE,MAAA,SAAS,CAAC,KAAK,mCAAI,SAAS,CAAC,YAAY,EAAE,CAAC;YACpG,CAAC,CAAC,CAAC;SACJ;QACD,OAAO,UAAU,CAAC;IACpB,CAAC;CACF;AAED,SAAS,uBAAuB,CAAC,KAAe,EAAE,SAAmB;IACnE,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACzB,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QACpC,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QACpC,IAAI,MAAM,GAAG,MAAM,EAAE;YACnB,OAAO,CAAC,CAAC,CAAC;SACX;QACD,IAAI,MAAM,GAAG,MAAM,EAAE;YACnB,OAAO,CAAC,CAAC;SACV;QACD,OAAO,CAAC,CAAC;IACX,CAAC,CAAC,CAAC;AACL,CAAC","file":"dataset.js","sourcesContent":["import { isArray } from '@visactor/vutils';\nimport { isValid } from '../tools/util';\nimport type {\n FilterRules,\n IDataConfig,\n SortRule,\n AggregationRules,\n AggregationRule,\n SortRules,\n DerivedFieldRule,\n DerivedFieldRules,\n SortByIndicatorRule,\n SortByRule,\n SortTypeRule,\n SortFuncRule,\n Totals,\n MappingRules,\n SortOrder,\n IHeaderTreeDefine,\n CollectValueBy,\n CollectedValue,\n IIndicator\n} from '../ts-types';\nimport { AggregationType, SortType } from '../ts-types';\nimport type { Aggregator } from './statistics-helper';\nimport {\n AvgAggregator,\n CountAggregator,\n MaxAggregator,\n MinAggregator,\n RecordAggregator,\n SumAggregator,\n naturalSort,\n sortBy,\n typeSort\n} from './statistics-helper';\nimport { getNewRangeToAlign } from './util/zero-align';\n/**\n * 数据处理模块\n */\nexport class Dataset {\n /**\n * 用户配置\n */\n dataConfig: IDataConfig;\n // /**\n // * 分页配置\n // */\n // pagination: IPagination;\n /**\n * 明细数据\n */\n records: any[] | Record<string, any[]>;\n /**\n * 树形节点,最后的子节点对应到body部分的每个单元格 树结构: 行-列-单元格\n */\n tree: Record<string, Record<string, Aggregator[]>> = {};\n private colFlatKeys = {};\n private rowFlatKeys = {};\n\n //列表头的每列对应的表头键值\n colKeys: string[][] = [];\n //行表头的每行对应的表头键值\n rowKeys: string[][] = [];\n // /**\n // * 对应dataset中的rowKeys,行表头的每行表头键值,包含小计总计\n // */\n // rowKeysPath: string[][];\n // /**\n // * 对应dataset中的colKeys,列表头的每列表头键值,包含小计总计\n // */\n // colKeysPath: string[][];\n // allTotal: SumAggregator;\n rowOrder = 'key_a_to_z';\n colOrder = 'key_a_to_z';\n //是否已排序\n sorted = false;\n //排序规则\n sortRules: SortRules;\n //过滤规则\n filterRules: FilterRules;\n //聚合规则\n aggregationRules: AggregationRules;\n //派生字段规则\n derivedFieldRules: DerivedFieldRules;\n mappingRules: MappingRules;\n //汇总配置\n totals: Totals;\n //全局统计各指标的极值\n indicatorStatistics: { max: Aggregator; min: Aggregator; total: Aggregator }[] = [];\n\n aggregators: {\n [key: string]: {\n new (\n dimension: string | string[],\n formatFun?: any,\n isRecord?: boolean,\n needSplitPositiveAndNegative?: boolean\n ): Aggregator;\n };\n } = {};\n\n stringJoinChar = String.fromCharCode(0);\n //缓存rows对应每个值是否为汇总字段\n private rowsIsTotal: boolean[] = [];\n private colsIsTotal: boolean[] = [];\n private colGrandTotalLabel: string;\n private colSubTotalLabel: string;\n private rowGrandTotalLabel: string;\n private rowSubTotalLabel: string;\n private needSplitPositiveAndNegative?: boolean;\n collectValuesBy: Record<string, CollectValueBy>; //收集维度值,field收集维度,by按什么进行分组收集\n collectedValues: Record<string, Record<string, CollectedValue>> = {};\n cacheCollectedValues: Record<string, Record<string, CollectedValue>> = {};\n rows: string[];\n columns: string[];\n indicatorKeys: string[];\n // // 存储行表头path 这个是全量的 对比于分页截取的rowKeysPath;\n // private rowKeysPath_FULL: string[][];\n colHeaderTree: any[];\n rowHeaderTree: any[];\n rowHierarchyType: 'grid' | 'tree';\n indicators: (string | IIndicator)[];\n indicatorsAsCol: boolean;\n constructor(\n dataConfig: IDataConfig,\n // pagination: IPagination,\n rows: string[],\n columns: string[],\n indicatorKeys: string[],\n indicators: (string | IIndicator)[],\n indicatorsAsCol: boolean,\n records: any[] | Record<string, any[]>,\n rowHierarchyType?: 'grid' | 'tree',\n customColTree?: IHeaderTreeDefine[],\n customRowTree?: IHeaderTreeDefine[],\n needSplitPositiveAndNegative?: boolean\n ) {\n this.registerAggregators();\n this.dataConfig = dataConfig;\n this.rowHierarchyType = rowHierarchyType ?? 'grid';\n // this.allTotal = new SumAggregator(this.indicators[0]);\n this.sortRules = this.dataConfig?.sortRules;\n this.aggregationRules = this.dataConfig?.aggregationRules;\n this.derivedFieldRules = this.dataConfig?.derivedFieldRules;\n this.mappingRules = this.dataConfig?.mappingRules;\n this.totals = this.dataConfig?.totals;\n this.rows = rows;\n this.columns = columns;\n this.indicatorKeys = indicatorKeys;\n this.indicatorsAsCol = indicatorsAsCol;\n this.indicators = indicators;\n this.colGrandTotalLabel = this.totals?.column?.grandTotalLabel ?? '总计';\n this.colSubTotalLabel = this.totals?.column?.subTotalLabel ?? '小计';\n this.rowGrandTotalLabel = this.totals?.row?.grandTotalLabel ?? '总计';\n this.rowSubTotalLabel = this.totals?.row?.subTotalLabel ?? '小计';\n this.collectValuesBy = this.dataConfig?.collectValuesBy;\n this.needSplitPositiveAndNegative = needSplitPositiveAndNegative ?? false;\n this.rowsIsTotal = new Array(this.rows.length).fill(false);\n this.colsIsTotal = new Array(this.columns.length).fill(false);\n for (let i = 0, len = this.totals?.row?.subTotalsDimensions?.length; i < len; i++) {\n const dimension = this.totals.row.subTotalsDimensions[i];\n const dimensionIndex = this.rows.indexOf(dimension);\n this.rowsIsTotal[dimensionIndex] = true;\n }\n for (let i = 0, len = this.totals?.column?.subTotalsDimensions?.length; i < len; i++) {\n const dimension = this.totals.column.subTotalsDimensions[i];\n const dimensionIndex = this.columns.indexOf(dimension);\n this.colsIsTotal[dimensionIndex] = true;\n }\n // this.rowKeysPath = [];\n // this.rowKeysPath_FULL = [];\n // this.colKeysPath = [];\n if (records) {\n //处理数据\n this.records = records;\n const t0 = typeof window !== 'undefined' ? window.performance.now() : 0;\n this.setRecords();\n\n //processRecord中按照collectValuesBy 收集了维度值。现在需要对有聚合需求的sumby 处理收集维度值范围\n this.processCollectedValuesWithSumBy();\n //processRecord中按照collectValuesBy 收集了维度值。现在需要对有排序需求的处理sortby\n this.processCollectedValuesWithSortBy();\n const t1 = typeof window !== 'undefined' ? window.performance.now() : 0;\n console.log('processRecords:', t1 - t0);\n\n // 处理汇总\n const t4 = typeof window !== 'undefined' ? window.performance.now() : 0;\n this.totalStatistics();\n const t5 = typeof window !== 'undefined' ? window.performance.now() : 0;\n console.log('totalStatistics:', t5 - t4);\n\n //对维度排序\n const t2 = typeof window !== 'undefined' ? window.performance.now() : 0;\n this.sortKeys();\n const t3 = typeof window !== 'undefined' ? window.performance.now() : 0;\n console.log('sortKeys:', t3 - t2);\n //转为树形\n // const t4 = typeof window !== 'undefined' ? window.performance.now() : 0;\n // this.madeTree(this.rowKeys);\n // const t41 = typeof window !== 'undefined' ? window.performance.now() : 0;\n // console.log('madeTree:', t41 - t4);\n\n const t7 = typeof window !== 'undefined' ? window.performance.now() : 0;\n if (customRowTree) {\n if (!indicatorsAsCol) {\n customRowTree = this._adjustCustomTree(customRowTree);\n }\n\n this.rowHeaderTree = customRowTree;\n } else {\n if (this.rowHierarchyType === 'tree') {\n this.rowHeaderTree = this.ArrToTree1(this.rowKeys, this.rows, indicatorsAsCol ? undefined : indicators);\n } else {\n this.rowHeaderTree = this.ArrToTree(\n this.rowKeys,\n this.rows,\n indicatorsAsCol ? undefined : indicators,\n this.rowsIsTotal,\n this?.totals?.row?.showGrandTotals ||\n (!indicatorsAsCol && this.columns.length === 0) ||\n (indicatorsAsCol && this.rows.length === 0),\n this.rowGrandTotalLabel,\n this.rowSubTotalLabel\n );\n }\n }\n if (customColTree) {\n if (indicatorsAsCol) {\n customColTree = this._adjustCustomTree(customColTree);\n }\n this.colHeaderTree = customColTree;\n } else {\n this.colHeaderTree = this.ArrToTree(\n this.colKeys,\n this.columns,\n indicatorsAsCol ? indicators : undefined,\n this.colsIsTotal,\n this.totals?.column?.showGrandTotals, // || this.rows.length === 0,//todo 这里原有逻辑暂时注释掉\n this.colGrandTotalLabel,\n this.colSubTotalLabel\n );\n }\n const t8 = typeof window !== 'undefined' ? window.performance.now() : 0;\n console.log('TreeToArr:', t8 - t7);\n\n if (this.dataConfig?.isPivotChart) {\n // 处理PivotChart双轴图0值对齐\n this.dealWithZeroAlign();\n\n // 记录PivotChart维度对应的数据\n this.cacheDeminsionCollectedValues();\n }\n }\n // this.updatePagination(pagination);\n }\n //将聚合类型注册 收集到aggregators\n registerAggregator(type: string, aggregator: any) {\n this.aggregators[type] = aggregator;\n }\n //将聚合类型注册\n registerAggregators() {\n this.registerAggregator(AggregationType.RECORD, RecordAggregator);\n this.registerAggregator(AggregationType.SUM, SumAggregator);\n this.registerAggregator(AggregationType.COUNT, CountAggregator);\n this.registerAggregator(AggregationType.MAX, MaxAggregator);\n this.registerAggregator(AggregationType.MIN, MinAggregator);\n this.registerAggregator(AggregationType.AVG, AvgAggregator);\n }\n private setRecords() {\n this.processRecords();\n }\n /**processRecord中按照collectValuesBy 收集了维度值。现在需要对有聚合需求的 处理收集维度值范围 */\n private processCollectedValuesWithSumBy() {\n for (const field in this.collectedValues) {\n if (this.collectValuesBy[field]?.sumBy) {\n for (const byKeys in this.collectedValues[field]) {\n const max = Object.values(this.collectedValues[field][byKeys]).reduce((acc, cur) => {\n return cur.value() > acc ? cur.value() : acc;\n }, Number.MIN_SAFE_INTEGER);\n const min = Object.values(this.collectedValues[field][byKeys]).reduce((acc, cur) => {\n return cur.value() < acc ? cur.value() : acc;\n }, Number.MAX_SAFE_INTEGER);\n let positiveMax;\n let negativeMin;\n if (this.needSplitPositiveAndNegative) {\n positiveMax = Object.values(this.collectedValues[field][byKeys]).reduce((acc, cur) => {\n return cur.positiveValue() > acc ? cur.positiveValue() : acc;\n }, Number.MIN_SAFE_INTEGER);\n negativeMin = Object.values(this.collectedValues[field][byKeys]).reduce((acc, cur) => {\n return cur.negativeValue() < acc ? cur.negativeValue() : acc;\n }, Number.MAX_SAFE_INTEGER);\n }\n\n this.collectedValues[field][byKeys] = {};\n (\n this.collectedValues[field][byKeys] as {\n max: number;\n min: number;\n positiveMax?: number;\n negativeMin?: number;\n }\n ).max = max;\n (\n this.collectedValues[field][byKeys] as {\n max: number;\n min: number;\n positiveMax?: number;\n negativeMin?: number;\n }\n ).min = min;\n if (this.needSplitPositiveAndNegative) {\n (\n this.collectedValues[field][byKeys] as {\n max: number;\n min: number;\n positiveMax?: number;\n negativeMin?: number;\n }\n ).positiveMax = positiveMax;\n (\n this.collectedValues[field][byKeys] as {\n max: number;\n min: number;\n positiveMax?: number;\n negativeMin?: number;\n }\n ).negativeMin = negativeMin;\n }\n }\n }\n }\n }\n /**processRecord中按照collectValuesBy 收集了维度值。现在需要对有排序需求的处理 */\n private processCollectedValuesWithSortBy() {\n for (const field in this.collectedValues) {\n if (this.collectValuesBy[field]?.sortBy) {\n for (const byKeys in this.collectedValues[field]) {\n this.collectedValues[field][byKeys] = (this.collectedValues[field][byKeys] as Array<string>).sort(\n (a, b) => this.collectValuesBy[field]?.sortBy.indexOf(a) - this.collectValuesBy[field]?.sortBy.indexOf(b)\n );\n }\n }\n }\n }\n /**\n * 处理数据,遍历所有条目,过滤和派生字段的处理有待优化TODO\n */\n private processRecords() {\n let isNeedFilter = false;\n if (this.dataConfig?.filterRules?.length >= 1) {\n isNeedFilter = true;\n }\n //常规records是数组的情况\n if (Array.isArray(this.records)) {\n for (let i = 0, len = this.records.length; i < len; i++) {\n const record = this.records[i];\n if (!isNeedFilter || this.filterRecord(record)) {\n this.processRecord(record);\n }\n }\n } else {\n //records是用户传来的按指标分组后的数据\n for (const key in this.records) {\n for (let i = 0, len = this.records[key].length; i < len; i++) {\n const record = this.records[key][i];\n if (!isNeedFilter || this.filterRecord(record)) {\n this.processRecord(record, key);\n }\n }\n }\n }\n this.rowFlatKeys = {};\n this.colFlatKeys = {};\n }\n private filterRecord(record: any) {\n let isReserved = true;\n for (let i = 0; i < this.dataConfig.filterRules.length; i++) {\n const filterRule = this.dataConfig?.filterRules[i];\n if (filterRule.filterKey) {\n const filterValue = record[filterRule.filterKey];\n if (filterRule.filteredValues.indexOf(filterValue) === -1) {\n isReserved = false;\n break;\n }\n } else if (!filterRule.filterFunc?.(record)) {\n isReserved = false;\n break;\n }\n }\n return isReserved;\n }\n /**\n * 处理单条数据\n * @param record\n * @returns\n */\n private processRecord(record: any, assignedIndicatorKey?: string) {\n //这个派生字段的计算位置有待确定,是否应该放到filter之前\n this.derivedFieldRules?.forEach((derivedFieldRule: DerivedFieldRule, i: number) => {\n record[derivedFieldRule.fieldName] = derivedFieldRule.derivedFunc(record);\n });\n const colKey = [];\n const rowKey = [];\n\n for (let l = 0, len1 = this.rows.length; l < len1; l++) {\n const rowAttr = this.rows[l];\n rowKey.push(record[rowAttr]);\n }\n for (let n = 0, len2 = this.columns.length; n < len2; n++) {\n const colAttr = this.columns[n];\n colKey.push(record[colAttr]);\n }\n\n //#region 按照collectValuesBy 收集维度值\n for (const field in this.collectValuesBy) {\n if (record[field]) {\n if (!this.collectedValues[field]) {\n this.collectedValues[field] = {};\n }\n const collectKeys = this.collectValuesBy[field].by.map(byField => record[byField]).join(this.stringJoinChar);\n if (!this.collectedValues[field][collectKeys]) {\n if (this.collectValuesBy[field].sumBy) {\n this.collectedValues[field][collectKeys] = {};\n } else if (this.collectValuesBy[field].range) {\n this.collectedValues[field][collectKeys] = {\n min: Number.MAX_SAFE_INTEGER,\n max: Number.MIN_SAFE_INTEGER\n };\n } else {\n this.collectedValues[field][collectKeys] = [];\n }\n }\n\n if (this.collectValuesBy[field].sumBy) {\n const sumByKeys = this.collectValuesBy[field].sumBy.map(byField => record[byField]).join(this.stringJoinChar);\n if (!this.collectedValues[field][collectKeys][sumByKeys]) {\n this.collectedValues[field][collectKeys][sumByKeys] = new this.aggregators[AggregationType.SUM](\n field,\n undefined,\n undefined,\n this.needSplitPositiveAndNegative\n );\n }\n this.collectedValues[field][collectKeys][sumByKeys].push(record);\n } else if (this.collectValuesBy[field].range) {\n const fieldRange = this.collectedValues[field][collectKeys] as {\n max: number;\n min: number;\n };\n fieldRange.max = Math.max(record[field], fieldRange.max);\n fieldRange.min = Math.min(record[field], fieldRange.min);\n } else {\n const fieldRange = this.collectedValues[field][collectKeys] as Array<string>;\n if (fieldRange.indexOf(record[field]) === -1) {\n fieldRange.push(record[field]);\n }\n }\n }\n }\n //#endregion\n // this.allTotal.push(record);\n\n const flatRowKey = rowKey.join(this.stringJoinChar);\n const flatColKey = colKey.join(this.stringJoinChar);\n\n // 此方法判断效率很低\n // if (this.rowKeys.indexOf(rowKey) === -1) this.rowKeys.push(rowKey);\n // if (this.colKeys.indexOf(colKey) === -1) this.colKeys.push(colKey);\n\n // rowTotals colTotals原本汇总的每行每列的总计,当columns或者rows不配置的时候 可以用这个值展示,现在放到了tree上 'total'作为默认键值\n if (rowKey.length !== 0) {\n if (!this.rowFlatKeys[flatRowKey]) {\n this.rowKeys.push(rowKey);\n this.rowFlatKeys[flatRowKey] = 1;\n }\n //如有需要显示总计 或者columns配置空\n // if (this.totals?.row?.showGrandTotals || !(this.dataConfig?.columns?.length > 0))\n // for (let i = 0; i < this.indicators?.length; i++) {\n // if (!this.rowTotals[flatRowKey][i]) {\n // const aggRule = this.getAggregatorRule(this.indicators[i]);\n // this.rowTotals[flatRowKey][i] = new this.aggregators[\n // aggRule?.aggregationType ?? AggregationType.SUM\n // ](aggRule?.field ?? this.indicators[i], aggRule?.formatFun);\n // }\n // this.rowTotals[flatRowKey][i].push(record);\n // }\n }\n if (colKey.length !== 0) {\n if (!this.colFlatKeys[flatColKey]) {\n this.colKeys.push(colKey);\n this.colFlatKeys[flatColKey] = 1;\n }\n //如有需要显示总计 或者rows配置空\n // if (this.totals?.column?.showGrandTotals || !(this.dataConfig?.rows?.length > 0))\n // for (let i = 0; i < this.indicators?.length; i++) {\n // if (!this.colTotals[flatColKey][i]) {\n // const aggRule = this.getAggregatorRule(this.indicators[i]);\n // this.colTotals[flatColKey][i] = new this.aggregators[\n // aggRule?.aggregationType ?? AggregationType.SUM\n // ](aggRule?.field ?? this.indicators[i], aggRule?.formatFun);\n // }\n // this.colTotals[flatColKey][i].push(record);\n // }\n }\n\n //组织树结构: 行-列-单元格 行key为flatRowKey如’山东青岛‘ 列key为flatColKey如’家具椅子‘\n // TODO 原先pivotTable是必须有行或列维度的 pivotChart这里强制进入\n if (true || colKey.length !== 0 || rowKey.length !== 0) {\n if (!this.tree[flatRowKey]) {\n this.tree[flatRowKey] = {};\n }\n //这里改成数组 因为可能是多个指标值 遍历indicators 生成对应类型的聚合对象\n if (!this.tree[flatRowKey]?.[flatColKey]) {\n this.tree[flatRowKey][flatColKey] = [];\n }\n for (let i = 0; i < this.indicatorKeys.length; i++) {\n const aggRule = this.getAggregatorRule(this.indicatorKeys[i]);\n if (!this.tree[flatRowKey]?.[flatColKey]?.[i]) {\n this.tree[flatRowKey][flatColKey][i] = new this.aggregators[aggRule?.aggregationType ?? AggregationType.SUM](\n aggRule?.field ?? this.indicatorKeys[i],\n aggRule?.formatFun ??\n (\n this.indicators?.find((indicator: string | IIndicator) => {\n if (typeof indicator !== 'string') {\n return indicator.indicatorKey === this.indicatorKeys[i];\n }\n return false;\n }) as IIndicator\n )?.format\n );\n }\n if (assignedIndicatorKey) {\n this.indicatorKeys[i] === assignedIndicatorKey && this.tree[flatRowKey]?.[flatColKey]?.[i].push(record);\n }\n //加入聚合结果 考虑field为数组的情况\n else if (aggRule?.field) {\n if (typeof aggRule?.field === 'string') {\n aggRule?.field in record && this.tree[flatRowKey]?.[flatColKey]?.[i].push(record);\n } else {\n const isPush = aggRule?.field.find((field: string) => {\n return field in record;\n });\n isPush && this.tree[flatRowKey]?.[flatColKey]?.[i].push(record);\n }\n } else {\n //push融合了计算过程\n this.indicatorKeys[i] in record && this.tree[flatRowKey]?.[flatColKey]?.[i].push(record);\n }\n }\n }\n //统计整体的最大最小值和总计值 共mapping使用\n if (this.mappingRules) {\n for (let i = 0; i < this.indicatorKeys.length; i++) {\n if (!this.indicatorStatistics[i]) {\n const aggRule = this.getAggregatorRule(this.indicatorKeys[i]);\n this.indicatorStatistics[i] = {\n max: new this.aggregators[AggregationType.MAX](this.indicatorKeys[i]),\n min: new this.aggregators[AggregationType.MIN](this.indicatorKeys[i]),\n total: new this.aggregators[aggRule?.aggregationType ?? AggregationType.SUM](\n aggRule?.field ?? this.indicatorKeys[i],\n aggRule?.formatFun ??\n (\n this.indicators?.find((indicator: string | IIndicator) => {\n if (typeof indicator !== 'string') {\n return indicator.indicatorKey === this.indicatorKeys[i];\n }\n return false;\n }) as IIndicator\n )?.format\n )\n };\n }\n //push融合了计算过程\n this.indicatorStatistics[i].max.push(this.tree[flatRowKey]?.[flatColKey]?.[i].value());\n this.indicatorStatistics[i].min.push(this.tree[flatRowKey]?.[flatColKey]?.[i].value());\n this.indicatorStatistics[i].total.push(record);\n }\n }\n }\n /**\n * TODO 需要完善TreeToArr这里的逻辑\n * 全量更新排序规则 对数据重新排序 生成行列paths\n * @param sortRules\n */\n updateSortRules(sortRules: SortRules) {\n this.sorted = false;\n this.sortRules = sortRules;\n this.sortKeys();\n // this.rowKeysPath_FULL = this.TreeToArr(\n // this.ArrToTree(\n // this.rowKeys,\n // this.rows,\n // this.indicatorsAsCol ? undefined : this.indicators,\n // this.rowsIsTotal,\n // this?.totals?.row?.showGrandTotals || this.columns.length === 0,\n // this.rowGrandTotalLabel,\n // this.rowSubTotalLabel\n // )\n // );\n // this.colKeysPath = this.TreeToArr(\n // this.ArrToTree(\n // this.colKeys,\n // this.columns,\n // this.indicatorsAsCol ? this.indicators : undefined,\n // this.colsIsTotal,\n // this.totals?.column?.showGrandTotals || this.rows.length === 0,\n // this.colGrandTotalLabel,\n // this.colSubTotalLabel\n // )\n // );\n }\n /** 更新过滤规则 修改tree数据及收集的value */\n updateFilterRules(filterRules: FilterRules, isResetTree: boolean = false) {\n this.filterRules = filterRules;\n if (isResetTree) {\n this.tree = {};\n } else {\n for (const treeRowKey in this.tree) {\n for (const treeColKey in this.tree[treeRowKey]) {\n for (let i = 0; i < this.tree[treeRowKey][treeColKey].length; i++) {\n this.tree[treeRowKey][treeColKey][i].reset();\n }\n }\n }\n }\n this.collectedValues = {};\n this.processRecords();\n this.processCollectedValuesWithSumBy();\n this.processCollectedValuesWithSortBy();\n\n if (this.dataConfig?.isPivotChart) {\n // 处理PivotChart双轴图0值对齐\n this.dealWithZeroAlign();\n }\n }\n\n // updatePagination(pagination: IPagination) {\n // this.pagination = pagination;\n\n // if (isValid(this.pagination?.perPageCount) && isValid(this.pagination?.currentPage)) {\n // //调整perPageCount的数量 需要是indicatorKeys.length的整数倍\n // this.pagination.perPageCount =\n // Math.ceil(this.pagination.perPageCount / this.indicatorKeys.length) * this.indicatorKeys.length;\n // const { perPageCount, currentPage } = this.pagination;\n // const startIndex = Math.ceil((perPageCount * (currentPage || 0)) / this.indicatorKeys.length);\n // const endIndex = startIndex + Math.ceil(perPageCount / this.indicatorKeys.length);\n // this.rowKeysPath = this.rowKeysPath_FULL?.slice(startIndex, endIndex);\n // } else {\n // this.rowKeysPath = this.rowKeysPath_FULL;\n // }\n // this.pagination && (this.pagination.totalCount = this.rowKeysPath_FULL?.length);\n // }\n private getAggregatorRule(indicatorKey: string): AggregationRule<AggregationType> | undefined {\n return this.aggregationRules?.find((value: AggregationRule<AggregationType>, index: number) => {\n return indicatorKey === value.indicatorKey;\n });\n }\n /**\n * 根据行列的维度key 获取聚合对象\n * @param rowKey\n * @param colKey\n * @param indicator\n * @returns\n */\n getAggregator(rowKey: string[] | string = [], colKey: string[] | string = [], indicator: string): Aggregator {\n const indicatorIndex = this.indicatorKeys.indexOf(indicator);\n let agg;\n let flatRowKey;\n let flatColKey;\n if (typeof rowKey === 'string') {\n flatRowKey = rowKey;\n } else {\n flatRowKey = rowKey.join(this.stringJoinChar);\n }\n\n if (typeof colKey === 'string') {\n flatColKey = colKey;\n } else {\n flatColKey = colKey.join(this.stringJoinChar);\n }\n //TODO 原有逻辑 但这里先强制跳过\n if (false && rowKey.length === 0 && colKey.length === 0) {\n // agg = this.allTotal;\n // } else if (rowKey.length === 0) {\n // // agg = this.tree.total[flatColKey]?.[sortByIndicatorIndex];\n // agg = this.colTotals[flatColKey]?.[sortByIndicatorIndex];\n // } else if (colKey.length === 0) {\n // // agg = this.tree[flatRowKey].total?.[sortByIndicatorIndex];\n // agg = this.rowTotals[flatRowKey]?.[sortByIndicatorIndex];\n } else {\n agg = this.tree[flatRowKey]?.[flatColKey]?.[indicatorIndex];\n }\n return agg\n ? agg\n : {\n className: '',\n push() {\n // do nothing\n },\n value(): any {\n return null;\n },\n formatValue() {\n return '';\n },\n reset() {\n // do nothing\n }\n };\n }\n /**\n * 根据排序规则 对维度keys排序\n */\n sortKeys() {\n const that = this;\n if (!this.sorted) {\n this.sorted = true;\n const getValue = function (rowKey: any, colKey: any) {\n return that.getAggregator(rowKey, colKey, '').value();\n };\n\n switch (this.rowOrder) {\n case 'value_a_to_z':\n this.rowKeys.sort(function (a, b) {\n return naturalSort(getValue(a, []), getValue(b, []));\n });\n break;\n case 'value_z_to_a':\n this.rowKeys.sort(function (a, b) {\n return -naturalSort(getValue(a, []), getValue(b, []));\n });\n break;\n default:\n this.rowKeys.sort(this.arrSort(this.rows, true));\n }\n switch (this.colOrder) {\n case 'value_a_to_z':\n this.colKeys.sort(function (a, b) {\n return naturalSort(getValue([], a), getValue([], b));\n });\n break;\n case 'value_z_to_a':\n this.colKeys.sort(function (a, b) {\n return -naturalSort(getValue([], a), getValue([], b));\n });\n break;\n default:\n const sortfun = this.arrSort(this.columns, false);\n this.colKeys.sort(sortfun);\n }\n }\n }\n /**\n * 生成排序函数 综合配置的多条排序规则\n * @param fieldArr 排序维度名称 如行rows 列columns\n * @returns\n */\n arrSort(fieldArr: string[], isRow: boolean) {\n let field;\n const that = this;\n const sortersArr: any[] = function (_this: any) {\n const results = [];\n for (let l = 0, len1 = fieldArr.length; l < len1; l++) {\n field = fieldArr[l];\n let isHasSortRule = false;\n if (that.sortRules) {\n for (let m = 0, len2 = that.sortRules.length; m < len2; m++) {\n if (that.sortRules[m].sortField === field) {\n isHasSortRule = true;\n results.push({\n field,\n fieldIndex: l,\n sortRule: that.sortRules[m],\n func: that.getSort(that.sortRules[m], isRow)\n });\n\n // if (that.sortRules[m].sortByIndicator) {\n // isHasSortRule = true;\n // results.push({\n // field,\n // fieldIndex: l,\n // sortRule: that.sortRules[m],\n // func: that.getSort(that.sortRules[m], field),\n // });\n // }\n }\n }\n }\n if (!isHasSortRule) {\n results.push({ field, fieldIndex: l, func: naturalSort });\n }\n }\n return results;\n }.call(this);\n return function (a: string[], b: string[]) {\n let comparison;\n let sorter;\n for (let i = 0; i < sortersArr.length; i++) {\n sorter = sortersArr[i];\n if (sorter.sortRule?.sortByIndicator) {\n let aChanged = a;\n let bChanged = b;\n if (sorter.fieldIndex < fieldArr.length - 1) {\n aChanged = a.slice(0, sorter.fieldIndex + 1);\n aChanged.push(isRow ? that.totals?.row?.subTotalLabel : that.totals?.column?.subTotalLabel);\n bChanged = b.slice(0, sorter.fieldIndex + 1);\n bChanged.push(isRow ? that.totals?.row?.subTotalLabel : that.totals?.column?.subTotalLabel);\n }\n comparison = sorter.func(aChanged, bChanged);\n } else {\n comparison = sorter.func(a[sorter.fieldIndex], b[sorter.fieldIndex]);\n }\n if (comparison !== 0) {\n return comparison * (sorter.sortRule?.sortType === SortType.DESC ? -1 : 1);\n }\n }\n return 0;\n };\n }\n /**\n * 根据具体排序 获取不同的排序函数\n * @param sortRule\n * @returns\n */\n getSort(sortRule: SortRule, isSortRow: boolean) {\n const that = this;\n\n if ((<SortByIndicatorRule>sortRule).sortByIndicator) {\n return (a: string[], b: string[]) => {\n /**\n * 根据rowKey和colKey获取tree上对应的聚合值\n * @param rowKey\n * @param colKey\n * @returns\n */\n const getValue = function (rowKey: any, colKey: any) {\n //如果rowKey提供的不全 如 [地区,省,城市] 只提供了如[华东,山东] 会补全为[华东,山东,小计]\n if (\n rowKey.length < that.rows.length &&\n rowKey[rowKey.length - 1] !== that.rowSubTotalLabel &&\n rowKey[rowKey.length - 1] !== that.rowGrandTotalLabel\n ) {\n rowKey.push(that.rowSubTotalLabel);\n }\n if (\n colKey.length < that.columns.length &&\n colKey[colKey.length - 1] !== that.colSubTotalLabel &&\n colKey[colKey.length - 1] !== that.colGrandTotalLabel\n ) {\n colKey.push(that.colSubTotalLabel);\n }\n return that.getAggregator(rowKey, colKey, (<SortByIndicatorRule>sortRule).sortByIndicator).value();\n };\n if (isSortRow) {\n return naturalSort(\n getValue(a, (<SortByIndicatorRule>sortRule).query),\n getValue(b, (<SortByIndicatorRule>sortRule).query)\n );\n }\n return naturalSort(\n getValue((<SortByIndicatorRule>sortRule).query, a),\n getValue((<SortByIndicatorRule>sortRule).query, b)\n );\n };\n } else if ((<SortByRule>sortRule).sortBy) {\n return sortBy((<SortByRule>sortRule).sortBy);\n }\n if ((<SortTypeRule>sortRule).sortType) {\n return typeSort;\n }\n if ((<SortFuncRule>sortRule).sortFunc) {\n return (<SortFuncRule>sortRule).sortFunc;\n }\n return naturalSort;\n }\n /**\n * 汇总小计\n */\n totalStatistics() {\n const that = this;\n if (\n (that?.totals?.column?.showSubTotals && that?.totals?.column?.subTotalsDimensions?.length >= 1) ||\n (that?.totals?.row?.showSubTotals && that?.totals?.row?.subTotalsDimensions?.length >= 1) ||\n that?.totals?.column?.showGrandTotals ||\n that?.totals?.row?.showGrandTotals\n // ||\n // that.rows.length === 0 || //todo 这里原有逻辑暂时注释掉\n // that.columns.length === 0\n ) {\n const rowTotalKeys: string[] = [];\n /**\n * 计算每一行的所有列的汇总值\n * @param flatRowKey\n * @param flatColKey\n */\n const colCompute = (flatRowKey: string, flatColKey: string) => {\n const colKey = flatColKey.split(this.stringJoinChar);\n for (let i = 0, len = that.totals?.column?.subTotalsDimensions?.length; i < len; i++) {\n const dimension = that.totals.column.subTotalsDimensions[i];\n const dimensionIndex = that.columns.indexOf(dimension);\n if (dimensionIndex >= 0) {\n const colTotalKey = colKey.slice(0, dimensionIndex + 1);\n if (this.rowHierarchyType === 'grid') {\n // 如果是tree的情况则不追加小计单元格值\n colTotalKey.push(that.totals?.column?.subTotalLabel ?? '小计');\n }\n const flatColTotalKey = colTotalKey.join(this.stringJoinChar);\n if (!this.tree[flatRowKey][flatColTotalKey]) {\n this.tree[flatRowKey][flatColTotalKey] = [];\n }\n for (let i = 0; i < this.indicatorKeys.length; i++) {\n if (!this.tree[flatRowKey][flatColTotalKey][i]) {\n const aggRule = this.getAggregatorRule(this.indicatorKeys[i]);\n this.tree[flatRowKey][flatColTotalKey][i] = new this.aggregators[\n aggRule?.aggregationType ?? AggregationType.SUM\n ](\n aggRule?.field ?? this.indicatorKeys[i],\n aggRule?.formatFun ??\n (\n this.indicators?.find((indicator: string | IIndicator) => {\n if (typeof indicator !== 'string') {\n return indicator.indicatorKey === this.indicatorKeys[i];\n }\n return false;\n }) as IIndicator\n )?.format\n );\n }\n this.tree[flatRowKey][flatColTotalKey][i].push(that.tree[flatRowKey]?.[flatColKey]?.[i]);\n }\n }\n }\n if (that.totals?.column?.showGrandTotals || this.rows.length === 0) {\n const flatColTotalKey = that.colGrandTotalLabel;\n if (!this.tree[flatRowKey][flatColTotalKey]) {\n this.tree[flatRowKey][flatColTotalKey] = [];\n }\n for (let i = 0; i < this.indicatorKeys.length; i++) {\n if (!this.tree[flatRowKey][flatColTotalKey][i]) {\n const aggRule = this.getAggregatorRule(this.indicatorKeys[i]);\n this.tree[flatRowKey][flatColTotalKey][i] = new this.aggregators[\n aggRule?.aggregationType ?? AggregationType.SUM\n ](\n aggRule?.field ?? this.indicatorKeys[i],\n aggRule?.formatFun ??\n (\n this.indicators?.find((indicator: string | IIndicator) => {\n if (typeof indicator !== 'string') {\n return indicator.indicatorKey === this.indicatorKeys[i];\n }\n return false;\n }) as IIndicator\n )?.format\n );\n }\n this.tree[flatRowKey][flatColTotalKey][i].push(that.tree[flatRowKey]?.[flatColKey]?.[i]);\n }\n }\n };\n Object.keys(that.tree).forEach(flatRowKey => {\n const rowKey = flatRowKey.split(this.stringJoinChar);\n Object.keys(that.tree[flatRowKey]).forEach(flatColKey => {\n for (let i = 0, len = that.totals?.row?.subTotalsDimensions?.length; i < len; i++) {\n const dimension = that.totals.row.subTotalsDimensions[i];\n const dimensionIndex = that.rows.indexOf(dimension);\n if (dimensionIndex >= 0) {\n const rowTotalKey = rowKey.slice(0, dimensionIndex + 1);\n if (this.rowHierarchyType === 'grid') {\n // 如果是tree的情况则不追加小计单元格值\n rowTotalKey.push(that.totals?.row?.subTotalLabel ?? '小计');\n }\n const flatRowTotalKey = rowTotalKey.join(this.stringJoinChar);\n if (!this.tree[flatRowTotalKey]) {\n this.tree[flatRowTotalKey] = {};\n rowTotalKeys.push(flatRowTotalKey);\n }\n if (!this.tree[flatRowTotalKey][flatColKey]) {\n this.tree[flatRowTotalKey][flatColKey] = [];\n for (let i = 0; i < this.indicatorKeys.length; i++) {\n if (!this.tree[flatRowTotalKey][flatColKey][i]) {\n const aggRule = this.getAggregatorRule(this.indicatorKeys[i]);\n this.tree[flatRowTotalKey][flatColKey][i] = new this.aggregators[\n aggRule?.aggregationType ?? AggregationType.SUM\n ](\n aggRule?.field ?? this.indicatorKeys[i],\n aggRule?.formatFun ??\n (\n this.indicators?.find((indicator: string | IIndicator) => {\n if (typeof indicator !== 'string') {\n return indicator.indicatorKey === this.indicatorKeys[i];\n }\n return false;\n }) as IIndicator\n )?.format\n );\n }\n this.tree[flatRowTotalKey][flatColKey][i].push(that.tree[flatRowKey]?.[flatColKey]?.[i]);\n }\n }\n }\n }\n\n if (that.totals?.row?.showGrandTotals || this.columns.length === 0) {\n const flatRowTotalKey = that.rowGrandTotalLabel;\n if (!this.tree[flatRowTotalKey]) {\n this.tree[flatRowTotalKey] = {};\n rowTotalKeys.push(flatRowTotalKey);\n }\n if (!this.tree[flatRowTotalKey][flatColKey]) {\n this.tree[flatRowTotalKey][flatColKey] = [];\n }\n for (let i = 0; i < this.indicatorKeys.length; i++) {\n if (!this.tree[flatRowTotalKey][flatColKey][i]) {\n const aggRule = this.getAggregatorRule(this.indicatorKeys[i]);\n this.tree[flatRowTotalKey][flatColKey][i] = new this.aggregators[\n aggRule?.aggregationType ?? AggregationType.SUM\n ](\n aggRule?.field ?? this.indicatorKeys[i],\n aggRule?.formatFun ??\n (\n this.indicators?.find((indicator: string | IIndicator) => {\n if (typeof indicator !== 'string') {\n return indicator.indicatorKey === this.indicatorKeys[i];\n }\n return false;\n }) as IIndicator\n )?.format\n );\n }\n this.tree[flatRowTotalKey][flatColKey][i].push(that.tree[flatRowKey]?.[flatColKey]?.[i]);\n }\n }\n colCompute(flatRowKey, flatColKey);\n });\n });\n //增加出来的rowTotalKeys 再遍历一次 汇总小计的小计 如 东北小计(row)-办公用品小计(col)所指单元格的值\n rowTotalKeys.forEach(flatRowKey => {\n Object.keys(that.tree[flatRowKey]).forEach(flatColKey => {\n colCompute(flatRowKey, flatColKey);\n });\n });\n }\n }\n /**\n * 将rowKeys和colKeys 转为树形结构\n * @param arr\n * @returns\n */\n private ArrToTree1(arr: string[][], rows: string[], indicators: (string | IIndicator)[]) {\n /**\n *\n * @param {string} s 父级id\n * @param {number} n 需转换数字\n */\n // const getId = (pId: any, curId: any) => `${pId}$${curId}`;\n const result: any[] = []; // 结果\n const concatStr = this.stringJoinChar; // 连接符(随便写,保证key唯一性就OK)\n const map = new Map(); // 存储根节点 主要提升性能\n function addList(list: any) {\n const path: any[] = []; // 路径\n let node: any; // 当前节点\n list.forEach((value: any, index: number) => {\n path.push(value);\n const flatKey = path.join(concatStr);\n //id的值可以每次生成一个新的 这里用的path作为id 方便layout对象获取\n let item: { value: string; dimensionKey: string; children: any[] } = map.get(flatKey); // 当前节点\n if (!item) {\n item = {\n value,\n // id: flatKey, //getId(node?.id ?? '', (node?.children?.length ?? result.length) + 1),\n dimensionKey: rows[index],\n //树的叶子节点补充指标\n children:\n index === list.length - 1 && indicators?.length >= 1\n ? indicators?.map(indicator => {\n if (typeof indicator === 'string') {\n return {\n indicatorKey: indicator,\n value: indicator\n };\n }\n return {\n indicatorKey: indicator.indicatorKey,\n value: indicator.title\n };\n })\n : []\n };\n\n map.set(flatKey, item); // 存储路径对应的节点\n if (node) {\n node.children.push(item);\n } else {\n result.push(item);\n }\n }\n node = item; // 更新当前节点\n });\n }\n\n arr.forEach(item => addList(item));\n\n return result;\n }\n /**\n * 将rowKeys和colKeys 转为树形结构\n * @param arr\n * @param subTotalFlags 标志小计的维度\n * @returns\n */\n private ArrToTree(\n arr: string[][],\n rows: string[],\n indicators: (string | IIndicator)[],\n subTotalFlags: boolean[],\n isGrandTotal: boolean,\n grandTotalLabel: string,\n subTotalLabel: string\n ) {\n /**\n *\n * @param {string} s 父级id\n * @param {number} n 需转换数字\n */\n // const getId = (pId: any, curId: any) => `${pId}$${curId}`;\n let result: any[] = []; // 结果\n const concatStr = this.stringJoinChar; // 连接符(随便写,保证key唯一性就OK)\n const map = new Map(); // 存储根节点 主要提升性能\n function addList(list: any) {\n const path: any[] = []; // 路径\n let node: any; // 当前节点\n list.forEach((value: any, index: number) => {\n path.push(value);\n const flatKey = path.join(concatStr);\n //id的值可以每次生成一个新的 这里用的path作为id 方便layout对象获取\n let item: { value: string; dimensionKey: string; children: any[] } = map.get(flatKey); // 当前节点\n if (!item) {\n item = {\n value,\n dimensionKey: rows[index],\n // id: flatKey, //getId(node?.id ?? '', (node?.children?.length ?? result.length) + 1),\n //树的叶子节点补充指标\n children:\n index === list.length - 1 && indicators?.length >= 1\n ? indicators?.map(indicator => {\n if (typeof indicator === 'string') {\n return {\n indicatorKey: indicator,\n value: indicator\n };\n }\n return {\n indicatorKey: indicator.indicatorKey,\n value: indicator.title\n };\n })\n : []\n };\n if (subTotalFlags[index]) {\n let curChild = item.children;\n for (let i = index; i < list.length - 1; i++) {\n const totalChild: { value: string; dimensionKey: string; children: any[] } = {\n value: subTotalLabel,\n dimensionKey: rows[index + 1],\n // id: `${flatKey}${concatStr}${subTotalLabel}`, // getId(item?.id, 1),\n //树的叶子节点补充指标\n children:\n index + 1 === list.length - 1 && indicators?.length >= 1\n ? indicators?.map(indicator => {\n if (typeof indicator === 'string') {\n return {\n indicatorKey: indicator,\n value: indicator\n };\n }\n return {\n indicatorKey: indicator.indicatorKey,\n value: indicator.title\n };\n })\n : []\n };\n curChild.push(totalChild);\n curChild = totalChild.children;\n }\n }\n map.set(flatKey, item); // 存储路径对应的节点\n if (node) {\n //为了确保汇总小计放到最后 使用splice插入到倒数第二个位置。如果小计放前面 直接push就行\n if (subTotalFlags[index - 1]) {\n node.children.splice(node.children.length - 1, 0, item);\n } else {\n node.children.push(item);\n }\n } else {\n result.push(item);\n }\n }\n node = item; // 更新当前节点\n });\n }\n if (arr?.length) {\n arr.forEach(item => addList(item));\n } else if (indicators) {\n result = indicators?.map((indicator: IIndicator): { indicatorKey: string; value: string } => {\n return { indicatorKey: indicator.indicatorKey, value: indicator.title ?? indicator.indicatorKey };\n });\n }\n //最后将总计的节点加上\n if (isGrandTotal && arr?.length) {\n const node: { value: string; dimensionKey: string; children: any[]; rowSpan: number } = {\n value: grandTotalLabel, // getId(item?.id, 1),\n dimensionKey: rows[0],\n rowSpan: subTotalFlags.length,\n children:\n indicators?.map(indicator => {\n if (typeof indicator === 'string') {\n return {\n indicatorKey: indicator,\n value: indicator\n };\n }\n return {\n indicatorKey: indicator.indicatorKey,\n value: indicator.title\n };\n }) ?? []\n };\n\n result.push(node);\n }\n return result;\n }\n //将树形结构转为二维数组 值为node.id\n private TreeToArr(tree: any) {\n const result: any[] = []; // 结果\n function getPath(node: any, arr: any) {\n arr.push(node.id);\n if (node.children.length > 0) {\n // 存在多个节点就递归\n node.children?.forEach((childItem: any) => getPath(childItem, [...arr]));\n } else {\n result.push(arr);\n }\n }\n tree.forEach((treeNode: any) => getPath(treeNode, []));\n return result;\n }\n private dealWithZeroAlign() {\n const indicatorsToAlign = [];\n for (let i = 0; i < this.aggregationRules.length; i++) {\n const rule = this.aggregationRules[i];\n if (isArray(rule.field) && rule.field.length === 2) {\n indicatorsToAlign.push(rule.field);\n }\n }\n\n indicatorsToAlign.forEach(indicatorToAlign => {\n const indicator1 = indicatorToAlign[0];\n const indicator2 = indicatorToAlign[1];\n const collectedValue1 = this.collectedValues[indicator1];\n const collectedValue2 = this.collectedValues[indicator2];\n this.collectedValues[indicator1 + '_align'] = {};\n this.collectedValues[indicator2 + '_align'] = {};\n\n const toAlignCollectedValue = collectedValue1 || collectedValue2;\n for (const key in toAlignCollectedValue) {\n const range1 = collectedValue1?.[key] ?? { min: 0, max: 1 };\n const range2 = collectedValue2?.[key] ?? { min: 0, max: 1 };\n\n const newRanges = getNewRangeToAlign(\n range1 as { min: number; max: number },\n range2 as { min: number; max: number }\n );\n if (!newRanges) {\n // 没有正确完成0值对齐,直接沿用之前的range\n this.collectedValues[indicator1 + '_align'][key] = {\n min: (range1 as { min: number; max: number }).min,\n max: (range1 as { min: number; max: number }).max\n };\n this.collectedValues[indicator2 + '_align'][key] = {\n min: (range2 as { min: number; max: number }).min,\n max: (range2 as { min: number; max: number }).max\n };\n } else {\n const { range1: newRange1, range2: newRange2 } = newRanges;\n this.collectedValues[indicator1 + '_align'][key] = { min: newRange1[0], max: newRange1[1] };\n this.collectedValues[indicator2 + '_align'][key] = { min: newRange2[0], max: newRange2[1] };\n }\n }\n });\n }\n\n private cacheDeminsionCollectedValues() {\n for (const key in this.collectValuesBy) {\n if (this.collectValuesBy[key].type === 'xField' || this.collectValuesBy[key].type === 'yField') {\n if (this.dataConfig.dimensionSortArray) {\n this.cacheCollectedValues[key] = arraySortByAnotherArray(\n this.collectedValues[key] as unknown as string[],\n this.dataConfig.dimensionSortArray\n ) as unknown as Record<string, CollectedValue>;\n } else {\n this.cacheCollectedValues[key] = this.collectedValues[key];\n }\n }\n }\n }\n\n private _adjustCustomTree(customTree: IHeaderTreeDefine[]) {\n const checkNode = (nodes: IHeaderTreeDefine[], isHasIndicator: boolean) => {\n nodes.forEach((node: IHeaderTreeDefine) => {\n if (!node.indicatorKey && !isHasIndicator && !node.children?.length) {\n node.children = this.indicators?.map((indicator: IIndicator): { indicatorKey: string; value: string } => {\n return { indicatorKey: indicator.indicatorKey, value: indicator.title ?? indicator.indicatorKey };\n });\n } else if (node.children) {\n checkNode(node.children, isHasIndicator || !!node.indicatorKey);\n }\n });\n };\n if (customTree?.length) {\n checkNode(customTree, false);\n } else {\n customTree = this.indicators?.map((indicator: IIndicator): { indicatorKey: string; value: string } => {\n return { indicatorKey: indicator.indicatorKey, value: indicator.title ?? indicator.indicatorKey };\n });\n }\n return customTree;\n }\n}\n\nfunction arraySortByAnotherArray(array: string[], sortArray: string[]) {\n return array.sort((a, b) => {\n const aIndex = sortArray.indexOf(a);\n const bIndex = sortArray.indexOf(b);\n if (aIndex < bIndex) {\n return -1;\n }\n if (aIndex > bIndex) {\n return 1;\n }\n return 0;\n });\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["dataset/dataset.ts"],"names":[],"mappings":"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","file":"dataset.js","sourcesContent":["import { isArray } from '@visactor/vutils';\nimport { isValid } from '../tools/util';\nimport type {\n FilterRules,\n IDataConfig,\n SortRule,\n AggregationRules,\n AggregationRule,\n SortRules,\n DerivedFieldRule,\n DerivedFieldRules,\n SortByIndicatorRule,\n SortByRule,\n SortTypeRule,\n SortFuncRule,\n Totals,\n MappingRules,\n SortOrder,\n IHeaderTreeDefine,\n CollectValueBy,\n CollectedValue,\n IIndicator\n} from '../ts-types';\nimport { AggregationType, SortType } from '../ts-types';\nimport type { Aggregator } from './statistics-helper';\nimport {\n AvgAggregator,\n CountAggregator,\n MaxAggregator,\n MinAggregator,\n RecordAggregator,\n SumAggregator,\n naturalSort,\n sortBy,\n typeSort\n} from './statistics-helper';\nimport { getNewRangeToAlign } from './util/zero-align';\n/**\n * 数据处理模块\n */\nexport class Dataset {\n /**\n * 用户配置\n */\n dataConfig: IDataConfig;\n // /**\n // * 分页配置\n // */\n // pagination: IPagination;\n /**\n * 明细数据\n */\n records: any[] | Record<string, any[]>;\n /**\n * 树形节点,最后的子节点对应到body部分的每个单元格 树结构: 行-列-单元格\n */\n tree: Record<string, Record<string, Aggregator[]>> = {};\n private colFlatKeys = {};\n private rowFlatKeys = {};\n\n //列表头的每列对应的表头键值\n colKeys: string[][] = [];\n //行表头的每行对应的表头键值\n rowKeys: string[][] = [];\n // /**\n // * 对应dataset中的rowKeys,行表头的每行表头键值,包含小计总计\n // */\n // rowKeysPath: string[][];\n // /**\n // * 对应dataset中的colKeys,列表头的每列表头键值,包含小计总计\n // */\n // colKeysPath: string[][];\n // allTotal: SumAggregator;\n rowOrder = 'key_a_to_z';\n colOrder = 'key_a_to_z';\n //是否已排序\n sorted = false;\n //排序规则\n sortRules: SortRules;\n //过滤规则\n filterRules: FilterRules;\n //聚合规则\n aggregationRules: AggregationRules;\n //派生字段规则\n derivedFieldRules: DerivedFieldRules;\n mappingRules: MappingRules;\n //汇总配置\n totals: Totals;\n //全局统计各指标的极值\n indicatorStatistics: { max: Aggregator; min: Aggregator; total: Aggregator }[] = [];\n\n aggregators: {\n [key: string]: {\n new (\n dimension: string | string[],\n formatFun?: any,\n isRecord?: boolean,\n needSplitPositiveAndNegative?: boolean\n ): Aggregator;\n };\n } = {};\n\n stringJoinChar = String.fromCharCode(0);\n //缓存rows对应每个值是否为汇总字段\n private rowsIsTotal: boolean[] = [];\n private colsIsTotal: boolean[] = [];\n private colGrandTotalLabel: string;\n private colSubTotalLabel: string;\n private rowGrandTotalLabel: string;\n private rowSubTotalLabel: string;\n private needSplitPositiveAndNegative?: boolean;\n collectValuesBy: Record<string, CollectValueBy>; //收集维度值,field收集维度,by按什么进行分组收集\n collectedValues: Record<string, Record<string, CollectedValue>> = {};\n cacheCollectedValues: Record<string, Record<string, CollectedValue>> = {};\n rows: string[];\n columns: string[];\n indicatorKeys: string[];\n // // 存储行表头path 这个是全量的 对比于分页截取的rowKeysPath;\n // private rowKeysPath_FULL: string[][];\n colHeaderTree: any[];\n rowHeaderTree: any[];\n rowHierarchyType: 'grid' | 'tree';\n indicators: (string | IIndicator)[];\n indicatorsAsCol: boolean;\n // 记录用户传入的汇总数据\n totalRecordsTree: Record<string, Record<string, Aggregator[]>> = {};\n constructor(\n dataConfig: IDataConfig,\n // pagination: IPagination,\n rows: string[],\n columns: string[],\n indicatorKeys: string[],\n indicators: (string | IIndicator)[],\n indicatorsAsCol: boolean,\n records: any[] | Record<string, any[]>,\n rowHierarchyType?: 'grid' | 'tree',\n customColTree?: IHeaderTreeDefine[],\n customRowTree?: IHeaderTreeDefine[],\n needSplitPositiveAndNegative?: boolean\n ) {\n this.registerAggregators();\n this.dataConfig = dataConfig;\n this.rowHierarchyType = rowHierarchyType ?? 'grid';\n // this.allTotal = new SumAggregator(this.indicators[0]);\n this.sortRules = this.dataConfig?.sortRules;\n this.aggregationRules = this.dataConfig?.aggregationRules;\n this.derivedFieldRules = this.dataConfig?.derivedFieldRules;\n this.mappingRules = this.dataConfig?.mappingRules;\n this.totals = this.dataConfig?.totals;\n this.rows = rows;\n this.columns = columns;\n this.indicatorKeys = indicatorKeys;\n this.indicatorsAsCol = indicatorsAsCol;\n this.indicators = indicators;\n this.colGrandTotalLabel = this.totals?.column?.grandTotalLabel ?? '总计';\n this.colSubTotalLabel = this.totals?.column?.subTotalLabel ?? '小计';\n this.rowGrandTotalLabel = this.totals?.row?.grandTotalLabel ?? '总计';\n this.rowSubTotalLabel = this.totals?.row?.subTotalLabel ?? '小计';\n this.collectValuesBy = this.dataConfig?.collectValuesBy;\n this.needSplitPositiveAndNegative = needSplitPositiveAndNegative ?? false;\n this.rowsIsTotal = new Array(this.rows.length).fill(false);\n this.colsIsTotal = new Array(this.columns.length).fill(false);\n for (let i = 0, len = this.totals?.row?.subTotalsDimensions?.length; i < len; i++) {\n const dimension = this.totals.row.subTotalsDimensions[i];\n const dimensionIndex = this.rows.indexOf(dimension);\n this.rowsIsTotal[dimensionIndex] = true;\n }\n for (let i = 0, len = this.totals?.column?.subTotalsDimensions?.length; i < len; i++) {\n const dimension = this.totals.column.subTotalsDimensions[i];\n const dimensionIndex = this.columns.indexOf(dimension);\n this.colsIsTotal[dimensionIndex] = true;\n }\n // this.rowKeysPath = [];\n // this.rowKeysPath_FULL = [];\n // this.colKeysPath = [];\n if (records) {\n //处理数据\n this.records = records;\n const t0 = typeof window !== 'undefined' ? window.performance.now() : 0;\n this.setRecords();\n\n //processRecord中按照collectValuesBy 收集了维度值。现在需要对有聚合需求的sumby 处理收集维度值范围\n this.processCollectedValuesWithSumBy();\n //processRecord中按照collectValuesBy 收集了维度值。现在需要对有排序需求的处理sortby\n this.processCollectedValuesWithSortBy();\n const t1 = typeof window !== 'undefined' ? window.performance.now() : 0;\n console.log('processRecords:', t1 - t0);\n\n // 处理汇总\n const t4 = typeof window !== 'undefined' ? window.performance.now() : 0;\n this.totalStatistics();\n const t5 = typeof window !== 'undefined' ? window.performance.now() : 0;\n console.log('totalStatistics:', t5 - t4);\n\n //对维度排序\n const t2 = typeof window !== 'undefined' ? window.performance.now() : 0;\n this.sortKeys();\n const t3 = typeof window !== 'undefined' ? window.performance.now() : 0;\n console.log('sortKeys:', t3 - t2);\n //转为树形\n // const t4 = typeof window !== 'undefined' ? window.performance.now() : 0;\n // this.madeTree(this.rowKeys);\n // const t41 = typeof window !== 'undefined' ? window.performance.now() : 0;\n // console.log('madeTree:', t41 - t4);\n\n const t7 = typeof window !== 'undefined' ? window.performance.now() : 0;\n if (customRowTree) {\n if (!indicatorsAsCol) {\n customRowTree = this._adjustCustomTree(customRowTree);\n }\n\n this.rowHeaderTree = customRowTree;\n } else {\n if (this.rowHierarchyType === 'tree') {\n this.rowHeaderTree = this.ArrToTree1(\n this.rowKeys,\n this.rows,\n indicatorsAsCol ? undefined : indicators,\n this?.totals?.row?.showGrandTotals ||\n (!indicatorsAsCol && this.columns.length === 0) ||\n (indicatorsAsCol && this.rows.length === 0),\n this.rowGrandTotalLabel\n );\n } else {\n this.rowHeaderTree = this.ArrToTree(\n this.rowKeys,\n this.rows,\n indicatorsAsCol ? undefined : indicators,\n this.rowsIsTotal,\n this?.totals?.row?.showGrandTotals ||\n (!indicatorsAsCol && this.columns.length === 0) ||\n (indicatorsAsCol && this.rows.length === 0),\n this.rowGrandTotalLabel,\n this.rowSubTotalLabel\n );\n }\n }\n if (customColTree) {\n if (indicatorsAsCol) {\n customColTree = this._adjustCustomTree(customColTree);\n }\n this.colHeaderTree = customColTree;\n } else {\n this.colHeaderTree = this.ArrToTree(\n this.colKeys,\n this.columns,\n indicatorsAsCol ? indicators : undefined,\n this.colsIsTotal,\n this.totals?.column?.showGrandTotals, // || this.rows.length === 0,//todo 这里原有逻辑暂时注释掉\n this.colGrandTotalLabel,\n this.colSubTotalLabel\n );\n }\n const t8 = typeof window !== 'undefined' ? window.performance.now() : 0;\n console.log('TreeToArr:', t8 - t7);\n\n if (this.dataConfig?.isPivotChart) {\n // 处理PivotChart双轴图0值对齐\n this.dealWithZeroAlign();\n\n // 记录PivotChart维度对应的数据\n this.cacheDeminsionCollectedValues();\n }\n }\n // this.updatePagination(pagination);\n }\n //将聚合类型注册 收集到aggregators\n registerAggregator(type: string, aggregator: any) {\n this.aggregators[type] = aggregator;\n }\n //将聚合类型注册\n registerAggregators() {\n this.registerAggregator(AggregationType.RECORD, RecordAggregator);\n this.registerAggregator(AggregationType.SUM, SumAggregator);\n this.registerAggregator(AggregationType.COUNT, CountAggregator);\n this.registerAggregator(AggregationType.MAX, MaxAggregator);\n this.registerAggregator(AggregationType.MIN, MinAggregator);\n this.registerAggregator(AggregationType.AVG, AvgAggregator);\n }\n private setRecords() {\n this.processRecords();\n }\n /**processRecord中按照collectValuesBy 收集了维度值。现在需要对有聚合需求的 处理收集维度值范围 */\n private processCollectedValuesWithSumBy() {\n for (const field in this.collectedValues) {\n if (this.collectValuesBy[field]?.sumBy) {\n for (const byKeys in this.collectedValues[field]) {\n const max = Object.values(this.collectedValues[field][byKeys]).reduce((acc, cur) => {\n return cur.value() > acc ? cur.value() : acc;\n }, Number.MIN_SAFE_INTEGER);\n const min = Object.values(this.collectedValues[field][byKeys]).reduce((acc, cur) => {\n return cur.value() < acc ? cur.value() : acc;\n }, Number.MAX_SAFE_INTEGER);\n let positiveMax;\n let negativeMin;\n if (this.needSplitPositiveAndNegative) {\n positiveMax = Object.values(this.collectedValues[field][byKeys]).reduce((acc, cur) => {\n return cur.positiveValue() > acc ? cur.positiveValue() : acc;\n }, Number.MIN_SAFE_INTEGER);\n negativeMin = Object.values(this.collectedValues[field][byKeys]).reduce((acc, cur) => {\n return cur.negativeValue() < acc ? cur.negativeValue() : acc;\n }, Number.MAX_SAFE_INTEGER);\n }\n\n this.collectedValues[field][byKeys] = {};\n (\n this.collectedValues[field][byKeys] as {\n max: number;\n min: number;\n positiveMax?: number;\n negativeMin?: number;\n }\n ).max = max;\n (\n this.collectedValues[field][byKeys] as {\n max: number;\n min: number;\n positiveMax?: number;\n negativeMin?: number;\n }\n ).min = min;\n if (this.needSplitPositiveAndNegative) {\n (\n this.collectedValues[field][byKeys] as {\n max: number;\n min: number;\n positiveMax?: number;\n negativeMin?: number;\n }\n ).positiveMax = positiveMax;\n (\n this.collectedValues[field][byKeys] as {\n max: number;\n min: number;\n positiveMax?: number;\n negativeMin?: number;\n }\n ).negativeMin = negativeMin;\n }\n }\n }\n }\n }\n /**processRecord中按照collectValuesBy 收集了维度值。现在需要对有排序需求的处理 */\n private processCollectedValuesWithSortBy() {\n for (const field in this.collectedValues) {\n if (this.collectValuesBy[field]?.sortBy) {\n for (const byKeys in this.collectedValues[field]) {\n this.collectedValues[field][byKeys] = (this.collectedValues[field][byKeys] as Array<string>).sort(\n (a, b) => this.collectValuesBy[field]?.sortBy.indexOf(a) - this.collectValuesBy[field]?.sortBy.indexOf(b)\n );\n }\n }\n }\n }\n /**\n * 处理数据,遍历所有条目,过滤和派生字段的处理有待优化TODO\n */\n private processRecords() {\n let isNeedFilter = false;\n if (this.dataConfig?.filterRules?.length >= 1) {\n isNeedFilter = true;\n }\n //常规records是数组的情况\n if (Array.isArray(this.records)) {\n for (let i = 0, len = this.records.length; i < len; i++) {\n const record = this.records[i];\n if (!isNeedFilter || this.filterRecord(record)) {\n this.processRecord(record);\n }\n }\n } else {\n //records是用户传来的按指标分组后的数据\n for (const key in this.records) {\n for (let i = 0, len = this.records[key].length; i < len; i++) {\n const record = this.records[key][i];\n if (!isNeedFilter || this.filterRecord(record)) {\n this.processRecord(record, key);\n }\n }\n }\n }\n this.rowFlatKeys = {};\n this.colFlatKeys = {};\n }\n private filterRecord(record: any) {\n let isReserved = true;\n for (let i = 0; i < this.dataConfig.filterRules.length; i++) {\n const filterRule = this.dataConfig?.filterRules[i];\n if (filterRule.filterKey) {\n const filterValue = record[filterRule.filterKey];\n if (filterRule.filteredValues.indexOf(filterValue) === -1) {\n isReserved = false;\n break;\n }\n } else if (!filterRule.filterFunc?.(record)) {\n isReserved = false;\n break;\n }\n }\n return isReserved;\n }\n /**\n * 处理单条数据\n * @param record\n * @returns\n */\n private processRecord(record: any, assignedIndicatorKey?: string) {\n //这个派生字段的计算位置有待确定,是否应该放到filter之前\n this.derivedFieldRules?.forEach((derivedFieldRule: DerivedFieldRule, i: number) => {\n record[derivedFieldRule.fieldName] = derivedFieldRule.derivedFunc(record);\n });\n //#region 按照collectValuesBy 收集维度值\n for (const field in this.collectValuesBy) {\n if (record[field]) {\n if (!this.collectedValues[field]) {\n this.collectedValues[field] = {};\n }\n const collectKeys = this.collectValuesBy[field].by.map(byField => record[byField]).join(this.stringJoinChar);\n if (!this.collectedValues[field][collectKeys]) {\n if (this.collectValuesBy[field].sumBy) {\n this.collectedValues[field][collectKeys] = {};\n } else if (this.collectValuesBy[field].range) {\n this.collectedValues[field][collectKeys] = {\n min: Number.MAX_SAFE_INTEGER,\n max: Number.MIN_SAFE_INTEGER\n };\n } else {\n this.collectedValues[field][collectKeys] = [];\n }\n }\n\n if (this.collectValuesBy[field].sumBy) {\n const sumByKeys = this.collectValuesBy[field].sumBy.map(byField => record[byField]).join(this.stringJoinChar);\n if (!this.collectedValues[field][collectKeys][sumByKeys]) {\n this.collectedValues[field][collectKeys][sumByKeys] = new this.aggregators[AggregationType.SUM](\n field,\n undefined,\n undefined,\n this.needSplitPositiveAndNegative\n );\n }\n this.collectedValues[field][collectKeys][sumByKeys].push(record);\n } else if (this.collectValuesBy[field].range) {\n const fieldRange = this.collectedValues[field][collectKeys] as {\n max: number;\n min: number;\n };\n fieldRange.max = Math.max(record[field], fieldRange.max);\n fieldRange.min = Math.min(record[field], fieldRange.min);\n } else {\n const fieldRange = this.collectedValues[field][collectKeys] as Array<string>;\n if (fieldRange.indexOf(record[field]) === -1) {\n fieldRange.push(record[field]);\n }\n }\n }\n }\n //#endregion\n\n //#region 收集rowKey colKey\n const colKey = [];\n const rowKey = [];\n\n let isToTalRecord = false;\n for (let l = 0, len1 = this.rows.length; l < len1; l++) {\n const rowAttr = this.rows[l];\n if (rowAttr in record) {\n rowKey.push(record[rowAttr]);\n } else {\n //如果数据中缺失某个维度的值 可以认为是用户传入的汇总数据\n if (\n this.dataConfig?.totals?.row?.showGrandTotals &&\n l === 0 &&\n !this.rows.find((rk: string) => {\n // 判断没有其他字段在record中 例如rows中维度有省份和城市,当前在判断省份 数据中确实省份自动 可以认为是行总计的前提是城市也不应该存在\n return rk in record;\n })\n ) {\n rowKey.push(this.rowGrandTotalLabel);\n isToTalRecord = true;\n break;\n } else if (\n this.dataConfig?.totals?.row?.showSubTotals &&\n this.dataConfig?.totals?.row?.subTotalsDimensions.indexOf(this.rows[l - 1]) >= 0\n ) {\n if (this.rowHierarchyType === 'grid') {\n //如果是tree的话 不附加标签'小计'\n rowKey.push(this.rowSubTotalLabel);\n }\n isToTalRecord = true;\n break;\n }\n }\n }\n for (let n = 0, len2 = this.columns.length; n < len2; n++) {\n const colAttr = this.columns[n];\n if (colAttr in record) {\n colKey.push(record[colAttr]);\n } else {\n //如果数据中缺失某个维度的值 可以认为是用户传入的汇总数据\n if (\n this.dataConfig?.totals?.column?.showGrandTotals &&\n n === 0 &&\n !this.columns.find((ck: string) => {\n // 判断没有其他字段在record中\n return ck in record;\n })\n ) {\n colKey.push(this.colGrandTotalLabel);\n isToTalRecord = true;\n break;\n } else if (\n this.dataConfig?.totals?.column?.showSubTotals &&\n this.dataConfig?.totals?.column?.subTotalsDimensions.indexOf(this.columns[n - 1]) >= 0\n ) {\n colKey.push(this.colSubTotalLabel);\n isToTalRecord = true;\n break;\n }\n }\n }\n //#endregion\n\n // this.allTotal.push(record);\n\n const flatRowKey = rowKey.join(this.stringJoinChar);\n const flatColKey = colKey.join(this.stringJoinChar);\n\n //#region 收集用户传入的汇总数据到totalRecordsTree\n //该条数据为汇总数据\n if (isToTalRecord) {\n if (!this.totalRecordsTree[flatRowKey]) {\n this.totalRecordsTree[flatRowKey] = {};\n }\n if (!this.totalRecordsTree[flatRowKey][flatColKey]) {\n this.totalRecordsTree[flatRowKey][flatColKey] = [];\n }\n\n for (let i = 0; i < this.indicatorKeys.length; i++) {\n const aggRule = this.getAggregatorRule(this.indicatorKeys[i]);\n if (!this.totalRecordsTree[flatRowKey]?.[flatColKey]?.[i]) {\n this.totalRecordsTree[flatRowKey][flatColKey][i] = new this.aggregators[\n aggRule?.aggregationType ?? AggregationType.SUM\n ](\n aggRule?.field ?? this.indicatorKeys[i],\n aggRule?.formatFun ??\n (\n this.indicators?.find((indicator: string | IIndicator) => {\n if (typeof indicator !== 'string') {\n return indicator.indicatorKey === this.indicatorKeys[i];\n }\n return false;\n }) as IIndicator\n )?.format\n );\n }\n\n //push融合了计算过程\n this.indicatorKeys[i] in record && this.totalRecordsTree[flatRowKey]?.[flatColKey]?.[i].push(record);\n }\n return;\n }\n //#endregion\n\n // 此方法判断效率很低\n // if (this.rowKeys.indexOf(rowKey) === -1) this.rowKeys.push(rowKey);\n // if (this.colKeys.indexOf(colKey) === -1) this.colKeys.push(colKey);\n\n if (rowKey.length !== 0) {\n if (!this.rowFlatKeys[flatRowKey]) {\n this.rowKeys.push(rowKey);\n this.rowFlatKeys[flatRowKey] = 1;\n }\n }\n if (colKey.length !== 0) {\n if (!this.colFlatKeys[flatColKey]) {\n this.colKeys.push(colKey);\n this.colFlatKeys[flatColKey] = 1;\n }\n }\n\n //组织树结构: 行-列-单元格 行key为flatRowKey如’山东青岛‘ 列key为flatColKey如’家具椅子‘\n // TODO 原先pivotTable是必须有行或列维度的 pivotChart这里强制进入\n if (true || colKey.length !== 0 || rowKey.length !== 0) {\n if (!this.tree[flatRowKey]) {\n this.tree[flatRowKey] = {};\n }\n //这里改成数组 因为可能是多个指标值 遍历indicators 生成对应类型的聚合对象\n if (!this.tree[flatRowKey]?.[flatColKey]) {\n this.tree[flatRowKey][flatColKey] = [];\n }\n for (let i = 0; i < this.indicatorKeys.length; i++) {\n const aggRule = this.getAggregatorRule(this.indicatorKeys[i]);\n if (!this.tree[flatRowKey]?.[flatColKey]?.[i]) {\n this.tree[flatRowKey][flatColKey][i] = new this.aggregators[aggRule?.aggregationType ?? AggregationType.SUM](\n aggRule?.field ?? this.indicatorKeys[i],\n aggRule?.formatFun ??\n (\n this.indicators?.find((indicator: string | IIndicator) => {\n if (typeof indicator !== 'string') {\n return indicator.indicatorKey === this.indicatorKeys[i];\n }\n return false;\n }) as IIndicator\n )?.format\n );\n }\n if (assignedIndicatorKey) {\n this.indicatorKeys[i] === assignedIndicatorKey && this.tree[flatRowKey]?.[flatColKey]?.[i].push(record);\n }\n //加入聚合结果 考虑field为数组的情况\n else if (aggRule?.field) {\n if (typeof aggRule?.field === 'string') {\n aggRule?.field in record && this.tree[flatRowKey]?.[flatColKey]?.[i].push(record);\n } else {\n const isPush = aggRule?.field.find((field: string) => {\n return field in record;\n });\n isPush && this.tree[flatRowKey]?.[flatColKey]?.[i].push(record);\n }\n } else {\n //push融合了计算过程\n this.indicatorKeys[i] in record && this.tree[flatRowKey]?.[flatColKey]?.[i].push(record);\n }\n }\n }\n //统计整体的最大最小值和总计值 共mapping使用\n if (this.mappingRules) {\n for (let i = 0; i < this.indicatorKeys.length; i++) {\n if (!this.indicatorStatistics[i]) {\n const aggRule = this.getAggregatorRule(this.indicatorKeys[i]);\n this.indicatorStatistics[i] = {\n max: new this.aggregators[AggregationType.MAX](this.indicatorKeys[i]),\n min: new this.aggregators[AggregationType.MIN](this.indicatorKeys[i]),\n total: new this.aggregators[aggRule?.aggregationType ?? AggregationType.SUM](\n aggRule?.field ?? this.indicatorKeys[i],\n aggRule?.formatFun ??\n (\n this.indicators?.find((indicator: string | IIndicator) => {\n if (typeof indicator !== 'string') {\n return indicator.indicatorKey === this.indicatorKeys[i];\n }\n return false;\n }) as IIndicator\n )?.format\n )\n };\n }\n //push融合了计算过程\n this.indicatorStatistics[i].max.push(this.tree[flatRowKey]?.[flatColKey]?.[i].value());\n this.indicatorStatistics[i].min.push(this.tree[flatRowKey]?.[flatColKey]?.[i].value());\n this.indicatorStatistics[i].total.push(record);\n }\n }\n }\n /**\n * TODO 需要完善TreeToArr这里的逻辑\n * 全量更新排序规则 对数据重新排序 生成行列paths\n * @param sortRules\n */\n updateSortRules(sortRules: SortRules) {\n this.sorted = false;\n this.sortRules = sortRules;\n this.sortKeys();\n // this.rowKeysPath_FULL = this.TreeToArr(\n // this.ArrToTree(\n // this.rowKeys,\n // this.rows,\n // this.indicatorsAsCol ? undefined : this.indicators,\n // this.rowsIsTotal,\n // this?.totals?.row?.showGrandTotals || this.columns.length === 0,\n // this.rowGrandTotalLabel,\n // this.rowSubTotalLabel\n // )\n // );\n // this.colKeysPath = this.TreeToArr(\n // this.ArrToTree(\n // this.colKeys,\n // this.columns,\n // this.indicatorsAsCol ? this.indicators : undefined,\n // this.colsIsTotal,\n // this.totals?.column?.showGrandTotals || this.rows.length === 0,\n // this.colGrandTotalLabel,\n // this.colSubTotalLabel\n // )\n // );\n }\n /** 更新过滤规则 修改tree数据及收集的value */\n updateFilterRules(filterRules: FilterRules, isResetTree: boolean = false) {\n this.filterRules = filterRules;\n if (isResetTree) {\n this.tree = {};\n } else {\n for (const treeRowKey in this.tree) {\n for (const treeColKey in this.tree[treeRowKey]) {\n for (let i = 0; i < this.tree[treeRowKey][treeColKey].length; i++) {\n this.tree[treeRowKey][treeColKey][i].reset();\n }\n }\n }\n }\n this.collectedValues = {};\n this.processRecords();\n this.processCollectedValuesWithSumBy();\n this.processCollectedValuesWithSortBy();\n\n if (this.dataConfig?.isPivotChart) {\n // 处理PivotChart双轴图0值对齐\n this.dealWithZeroAlign();\n }\n }\n private getAggregatorRule(indicatorKey: string): AggregationRule<AggregationType> | undefined {\n return this.aggregationRules?.find((value: AggregationRule<AggregationType>, index: number) => {\n return indicatorKey === value.indicatorKey;\n });\n }\n /**\n * 根据行列的维度key 获取聚合对象\n * @param rowKey\n * @param colKey\n * @param indicator\n * @returns\n */\n getAggregator(rowKey: string[] | string = [], colKey: string[] | string = [], indicator: string): Aggregator {\n const indicatorIndex = this.indicatorKeys.indexOf(indicator);\n let agg;\n let flatRowKey;\n let flatColKey;\n if (typeof rowKey === 'string') {\n flatRowKey = rowKey;\n } else {\n flatRowKey = rowKey.join(this.stringJoinChar);\n }\n\n if (typeof colKey === 'string') {\n flatColKey = colKey;\n } else {\n flatColKey = colKey.join(this.stringJoinChar);\n }\n //TODO 原有逻辑 但这里先强制跳过\n if (false && rowKey.length === 0 && colKey.length === 0) {\n // agg = this.allTotal;\n // } else if (rowKey.length === 0) {\n // // agg = this.tree.total[flatColKey]?.[sortByIndicatorIndex];\n // agg = this.colTotals[flatColKey]?.[sortByIndicatorIndex];\n // } else if (colKey.length === 0) {\n // // agg = this.tree[flatRowKey].total?.[sortByIndicatorIndex];\n // agg = this.rowTotals[flatRowKey]?.[sortByIndicatorIndex];\n } else {\n agg = this.tree[flatRowKey]?.[flatColKey]?.[indicatorIndex];\n }\n return agg\n ? agg\n : {\n className: '',\n push() {\n // do nothing\n },\n value(): any {\n return null;\n },\n formatValue() {\n return '';\n },\n reset() {\n // do nothing\n }\n };\n }\n /**\n * 根据排序规则 对维度keys排序\n */\n sortKeys() {\n const that = this;\n if (!this.sorted) {\n this.sorted = true;\n const getValue = function (rowKey: any, colKey: any) {\n return that.getAggregator(rowKey, colKey, '').value();\n };\n\n switch (this.rowOrder) {\n case 'value_a_to_z':\n this.rowKeys.sort(function (a, b) {\n return naturalSort(getValue(a, []), getValue(b, []));\n });\n break;\n case 'value_z_to_a':\n this.rowKeys.sort(function (a, b) {\n return -naturalSort(getValue(a, []), getValue(b, []));\n });\n break;\n default:\n this.rowKeys.sort(this.arrSort(this.rows, true));\n }\n switch (this.colOrder) {\n case 'value_a_to_z':\n this.colKeys.sort(function (a, b) {\n return naturalSort(getValue([], a), getValue([], b));\n });\n break;\n case 'value_z_to_a':\n this.colKeys.sort(function (a, b) {\n return -naturalSort(getValue([], a), getValue([], b));\n });\n break;\n default:\n const sortfun = this.arrSort(this.columns, false);\n this.colKeys.sort(sortfun);\n }\n }\n }\n /**\n * 生成排序函数 综合配置的多条排序规则\n * @param fieldArr 排序维度名称 如行rows 列columns\n * @returns\n */\n arrSort(fieldArr: string[], isRow: boolean) {\n let field;\n const that = this;\n const sortersArr: any[] = function (_this: any) {\n const results = [];\n for (let l = 0, len1 = fieldArr.length; l < len1; l++) {\n field = fieldArr[l];\n let isHasSortRule = false;\n if (that.sortRules) {\n for (let m = 0, len2 = that.sortRules.length; m < len2; m++) {\n if (that.sortRules[m].sortField === field) {\n isHasSortRule = true;\n results.push({\n field,\n fieldIndex: l,\n sortRule: that.sortRules[m],\n func: that.getSort(that.sortRules[m], isRow)\n });\n\n // if (that.sortRules[m].sortByIndicator) {\n // isHasSortRule = true;\n // results.push({\n // field,\n // fieldIndex: l,\n // sortRule: that.sortRules[m],\n // func: that.getSort(that.sortRules[m], field),\n // });\n // }\n }\n }\n }\n if (!isHasSortRule) {\n results.push({ field, fieldIndex: l, func: naturalSort });\n }\n }\n return results;\n }.call(this);\n return function (a: string[], b: string[]) {\n let comparison;\n let sorter;\n for (let i = 0; i < sortersArr.length; i++) {\n sorter = sortersArr[i];\n if (sorter.sortRule?.sortByIndicator) {\n let aChanged = a;\n let bChanged = b;\n if (sorter.fieldIndex < fieldArr.length - 1) {\n aChanged = a.slice(0, sorter.fieldIndex + 1);\n aChanged.push(isRow ? that.totals?.row?.subTotalLabel : that.totals?.column?.subTotalLabel);\n bChanged = b.slice(0, sorter.fieldIndex + 1);\n bChanged.push(isRow ? that.totals?.row?.subTotalLabel : that.totals?.column?.subTotalLabel);\n }\n comparison = sorter.func(aChanged, bChanged);\n } else {\n comparison = sorter.func(a[sorter.fieldIndex], b[sorter.fieldIndex]);\n }\n if (comparison !== 0) {\n return comparison * (sorter.sortRule?.sortType === SortType.DESC ? -1 : 1);\n }\n }\n return 0;\n };\n }\n /**\n * 根据具体排序 获取不同的排序函数\n * @param sortRule\n * @returns\n */\n getSort(sortRule: SortRule, isSortRow: boolean) {\n const that = this;\n\n if ((<SortByIndicatorRule>sortRule).sortByIndicator) {\n return (a: string[], b: string[]) => {\n /**\n * 根据rowKey和colKey获取tree上对应的聚合值\n * @param rowKey\n * @param colKey\n * @returns\n */\n const getValue = function (rowKey: any, colKey: any) {\n //如果rowKey提供的不全 如 [地区,省,城市] 只提供了如[华东,山东] 会补全为[华东,山东,小计]\n if (\n rowKey.length < that.rows.length &&\n rowKey[rowKey.length - 1] !== that.rowSubTotalLabel &&\n rowKey[rowKey.length - 1] !== that.rowGrandTotalLabel\n ) {\n rowKey.push(that.rowSubTotalLabel);\n }\n if (\n colKey.length < that.columns.length &&\n colKey[colKey.length - 1] !== that.colSubTotalLabel &&\n colKey[colKey.length - 1] !== that.colGrandTotalLabel\n ) {\n colKey.push(that.colSubTotalLabel);\n }\n return that.getAggregator(rowKey, colKey, (<SortByIndicatorRule>sortRule).sortByIndicator).value();\n };\n if (isSortRow) {\n return naturalSort(\n getValue(a, (<SortByIndicatorRule>sortRule).query),\n getValue(b, (<SortByIndicatorRule>sortRule).query)\n );\n }\n return naturalSort(\n getValue((<SortByIndicatorRule>sortRule).query, a),\n getValue((<SortByIndicatorRule>sortRule).query, b)\n );\n };\n } else if ((<SortByRule>sortRule).sortBy) {\n return sortBy((<SortByRule>sortRule).sortBy);\n }\n if ((<SortTypeRule>sortRule).sortType) {\n return typeSort;\n }\n if ((<SortFuncRule>sortRule).sortFunc) {\n return (<SortFuncRule>sortRule).sortFunc;\n }\n return naturalSort;\n }\n /**\n * 汇总小计\n */\n totalStatistics() {\n const that = this;\n if (\n (that?.totals?.column?.showSubTotals && that?.totals?.column?.subTotalsDimensions?.length >= 1) ||\n (that?.totals?.row?.showSubTotals && that?.totals?.row?.subTotalsDimensions?.length >= 1) ||\n that?.totals?.column?.showGrandTotals ||\n that?.totals?.row?.showGrandTotals\n // ||\n // that.rows.length === 0 || //todo 这里原有逻辑暂时注释掉\n // that.columns.length === 0\n ) {\n const rowTotalKeys: string[] = [];\n /**\n * 计算每一行的所有列的汇总值\n * @param flatRowKey\n * @param flatColKey\n */\n const colCompute = (flatRowKey: string, flatColKey: string) => {\n console.log('totalStatistics', flatRowKey);\n if (this.totalRecordsTree?.[flatRowKey]?.[flatColKey]) {\n // 利用汇总数据替换\n this.tree[flatRowKey][flatColKey] = this.totalRecordsTree?.[flatRowKey]?.[flatColKey];\n return;\n }\n const colKey = flatColKey.split(this.stringJoinChar);\n for (let i = 0, len = that.totals?.column?.subTotalsDimensions?.length; i < len; i++) {\n const dimension = that.totals.column.subTotalsDimensions[i];\n const dimensionIndex = that.columns.indexOf(dimension);\n if (dimensionIndex >= 0) {\n const colTotalKey = colKey.slice(0, dimensionIndex + 1);\n // if (this.rowHierarchyType === 'grid') {\n colTotalKey.push(that.totals?.column?.subTotalLabel ?? '小计');\n // }\n const flatColTotalKey = colTotalKey.join(this.stringJoinChar);\n if (this.totalRecordsTree?.[flatRowKey]?.[flatColTotalKey]) {\n // 利用汇总数据替换\n this.tree[flatRowKey][flatColTotalKey] = this.totalRecordsTree?.[flatRowKey]?.[flatColTotalKey];\n return;\n }\n if (!this.tree[flatRowKey][flatColTotalKey]) {\n this.tree[flatRowKey][flatColTotalKey] = [];\n }\n for (let i = 0; i < this.indicatorKeys.length; i++) {\n if (!this.tree[flatRowKey][flatColTotalKey][i]) {\n const aggRule = this.getAggregatorRule(this.indicatorKeys[i]);\n this.tree[flatRowKey][flatColTotalKey][i] = new this.aggregators[\n aggRule?.aggregationType ?? AggregationType.SUM\n ](\n aggRule?.field ?? this.indicatorKeys[i],\n aggRule?.formatFun ??\n (\n this.indicators?.find((indicator: string | IIndicator) => {\n if (typeof indicator !== 'string') {\n return indicator.indicatorKey === this.indicatorKeys[i];\n }\n return false;\n }) as IIndicator\n )?.format\n );\n }\n this.tree[flatRowKey][flatColTotalKey][i].push(that.tree[flatRowKey]?.[flatColKey]?.[i]);\n }\n }\n }\n if (that.totals?.column?.showGrandTotals || this.rows.length === 0) {\n const flatColTotalKey = that.colGrandTotalLabel;\n if (this.totalRecordsTree?.[flatRowKey]?.[flatColTotalKey]) {\n // 利用汇总数据替换\n this.tree[flatRowKey][flatColTotalKey] = this.totalRecordsTree?.[flatRowKey]?.[flatColTotalKey];\n return;\n }\n if (!this.tree[flatRowKey][flatColTotalKey]) {\n this.tree[flatRowKey][flatColTotalKey] = [];\n }\n for (let i = 0; i < this.indicatorKeys.length; i++) {\n if (!this.tree[flatRowKey][flatColTotalKey][i]) {\n const aggRule = this.getAggregatorRule(this.indicatorKeys[i]);\n this.tree[flatRowKey][flatColTotalKey][i] = new this.aggregators[\n aggRule?.aggregationType ?? AggregationType.SUM\n ](\n aggRule?.field ?? this.indicatorKeys[i],\n aggRule?.formatFun ??\n (\n this.indicators?.find((indicator: string | IIndicator) => {\n if (typeof indicator !== 'string') {\n return indicator.indicatorKey === this.indicatorKeys[i];\n }\n return false;\n }) as IIndicator\n )?.format\n );\n }\n this.tree[flatRowKey][flatColTotalKey][i].push(that.tree[flatRowKey]?.[flatColKey]?.[i]);\n }\n }\n };\n Object.keys(that.tree).forEach(flatRowKey => {\n const rowKey = flatRowKey.split(this.stringJoinChar);\n Object.keys(that.tree[flatRowKey]).forEach(flatColKey => {\n for (let i = 0, len = that.totals?.row?.subTotalsDimensions?.length; i < len; i++) {\n const dimension = that.totals.row.subTotalsDimensions[i];\n const dimensionIndex = that.rows.indexOf(dimension);\n if (dimensionIndex >= 0 && dimensionIndex < that.rows.length - 1) {\n const rowTotalKey = rowKey.slice(0, dimensionIndex + 1);\n if (this.rowHierarchyType === 'grid') {\n // 如果是tree的情况则不追加小计单元格值\n rowTotalKey.push(that.totals?.row?.subTotalLabel ?? '小计');\n }\n const flatRowTotalKey = rowTotalKey.join(this.stringJoinChar);\n if (!this.tree[flatRowTotalKey]) {\n this.tree[flatRowTotalKey] = {};\n rowTotalKeys.push(flatRowTotalKey);\n }\n if (!this.tree[flatRowTotalKey][flatColKey]) {\n this.tree[flatRowTotalKey][flatColKey] = [];\n }\n for (let i = 0; i < this.indicatorKeys.length; i++) {\n if (!this.tree[flatRowTotalKey][flatColKey][i]) {\n const aggRule = this.getAggregatorRule(this.indicatorKeys[i]);\n this.tree[flatRowTotalKey][flatColKey][i] = new this.aggregators[\n aggRule?.aggregationType ?? AggregationType.SUM\n ](\n aggRule?.field ?? this.indicatorKeys[i],\n aggRule?.formatFun ??\n (\n this.indicators?.find((indicator: string | IIndicator) => {\n if (typeof indicator !== 'string') {\n return indicator.indicatorKey === this.indicatorKeys[i];\n }\n return false;\n }) as IIndicator\n )?.format\n );\n }\n this.tree[flatRowTotalKey][flatColKey][i].push(that.tree[flatRowKey]?.[flatColKey]?.[i]);\n }\n }\n }\n\n if (that.totals?.row?.showGrandTotals || this.columns.length === 0) {\n const flatRowTotalKey = that.rowGrandTotalLabel;\n if (!this.tree[flatRowTotalKey]) {\n this.tree[flatRowTotalKey] = {};\n rowTotalKeys.push(flatRowTotalKey);\n }\n if (!this.tree[flatRowTotalKey][flatColKey]) {\n this.tree[flatRowTotalKey][flatColKey] = [];\n }\n for (let i = 0; i < this.indicatorKeys.length; i++) {\n if (!this.tree[flatRowTotalKey][flatColKey][i]) {\n const aggRule = this.getAggregatorRule(this.indicatorKeys[i]);\n this.tree[flatRowTotalKey][flatColKey][i] = new this.aggregators[\n aggRule?.aggregationType ?? AggregationType.SUM\n ](\n aggRule?.field ?? this.indicatorKeys[i],\n aggRule?.formatFun ??\n (\n this.indicators?.find((indicator: string | IIndicator) => {\n if (typeof indicator !== 'string') {\n return indicator.indicatorKey === this.indicatorKeys[i];\n }\n return false;\n }) as IIndicator\n )?.format\n );\n }\n this.tree[flatRowTotalKey][flatColKey][i].push(that.tree[flatRowKey]?.[flatColKey]?.[i]);\n }\n }\n colCompute(flatRowKey, flatColKey);\n });\n });\n //增加出来的rowTotalKeys 再遍历一次 汇总小计的小计 如 东北小计(row)-办公用品小计(col)所指单元格的值\n rowTotalKeys.forEach(flatRowKey => {\n Object.keys(that.tree[flatRowKey]).forEach(flatColKey => {\n colCompute(flatRowKey, flatColKey);\n });\n });\n }\n }\n /**\n * 将rowKeys和colKeys 转为树形结构\n * @param arr\n * @returns\n */\n private ArrToTree1(\n arr: string[][],\n rows: string[],\n indicators: (string | IIndicator)[],\n isGrandTotal: boolean,\n grandTotalLabel: string\n ) {\n /**\n *\n * @param {string} s 父级id\n * @param {number} n 需转换数字\n */\n // const getId = (pId: any, curId: any) => `${pId}$${curId}`;\n const result: any[] = []; // 结果\n const concatStr = this.stringJoinChar; // 连接符(随便写,保证key唯一性就OK)\n const map = new Map(); // 存储根节点 主要提升性能\n function addList(list: any) {\n const path: any[] = []; // 路径\n let node: any; // 当前节点\n list.forEach((value: any, index: number) => {\n path.push(value);\n const flatKey = path.join(concatStr);\n //id的值可以每次生成一个新的 这里用的path作为id 方便layout对象获取\n let item: { value: string; dimensionKey: string; children: any[] } = map.get(flatKey); // 当前节点\n if (!item) {\n item = {\n value,\n // id: flatKey, //getId(node?.id ?? '', (node?.children?.length ?? result.length) + 1),\n dimensionKey: rows[index],\n //树的叶子节点补充指标\n children:\n index === list.length - 1 && indicators?.length >= 1\n ? indicators?.map(indicator => {\n if (typeof indicator === 'string') {\n return {\n indicatorKey: indicator,\n value: indicator\n };\n }\n return {\n indicatorKey: indicator.indicatorKey,\n value: indicator.title\n };\n })\n : []\n };\n\n map.set(flatKey, item); // 存储路径对应的节点\n if (node) {\n node.children.push(item);\n } else {\n result.push(item);\n }\n }\n node = item; // 更新当前节点\n });\n }\n\n arr.forEach(item => addList(item));\n if (isGrandTotal) {\n addList([grandTotalLabel]);\n }\n return result;\n }\n /**\n * 将rowKeys和colKeys 转为树形结构\n * @param arr\n * @param subTotalFlags 标志小计的维度\n * @returns\n */\n private ArrToTree(\n arr: string[][],\n rows: string[],\n indicators: (string | IIndicator)[],\n subTotalFlags: boolean[],\n isGrandTotal: boolean,\n grandTotalLabel: string,\n subTotalLabel: string\n ) {\n /**\n *\n * @param {string} s 父级id\n * @param {number} n 需转换数字\n */\n // const getId = (pId: any, curId: any) => `${pId}$${curId}`;\n let result: any[] = []; // 结果\n const concatStr = this.stringJoinChar; // 连接符(随便写,保证key唯一性就OK)\n const map = new Map(); // 存储根节点 主要提升性能\n function addList(list: any) {\n const path: any[] = []; // 路径\n let node: any; // 当前节点\n list.forEach((value: any, index: number) => {\n path.push(value);\n const flatKey = path.join(concatStr);\n //id的值可以每次生成一个新的 这里用的path作为id 方便layout对象获取\n let item: { value: string; dimensionKey: string; children: any[] } = map.get(flatKey); // 当前节点\n if (!item) {\n item = {\n value,\n dimensionKey: rows[index],\n // id: flatKey, //getId(node?.id ?? '', (node?.children?.length ?? result.length) + 1),\n //树的叶子节点补充指标\n children:\n index === list.length - 1 && indicators?.length >= 1\n ? indicators?.map(indicator => {\n if (typeof indicator === 'string') {\n return {\n indicatorKey: indicator,\n value: indicator\n };\n }\n return {\n indicatorKey: indicator.indicatorKey,\n value: indicator.title\n };\n })\n : []\n };\n if (subTotalFlags[index]) {\n let curChild = item.children;\n for (let i = index; i < list.length - 1; i++) {\n const totalChild: { value: string; dimensionKey: string; children: any[] } = {\n value: subTotalLabel,\n dimensionKey: rows[index + 1],\n // id: `${flatKey}${concatStr}${subTotalLabel}`, // getId(item?.id, 1),\n //树的叶子节点补充指标\n children:\n index + 1 === list.length - 1 && indicators?.length >= 1\n ? indicators?.map(indicator => {\n if (typeof indicator === 'string') {\n return {\n indicatorKey: indicator,\n value: indicator\n };\n }\n return {\n indicatorKey: indicator.indicatorKey,\n value: indicator.title\n };\n })\n : []\n };\n curChild.push(totalChild);\n curChild = totalChild.children;\n }\n }\n map.set(flatKey, item); // 存储路径对应的节点\n if (node) {\n //为了确保汇总小计放到最后 使用splice插入到倒数第二个位置。如果小计放前面 直接push就行\n if (subTotalFlags[index - 1]) {\n node.children.splice(node.children.length - 1, 0, item);\n } else {\n node.children.push(item);\n }\n } else {\n result.push(item);\n }\n }\n node = item; // 更新当前节点\n });\n }\n if (arr?.length) {\n arr.forEach(item => addList(item));\n } else if (indicators) {\n result = indicators?.map((indicator: IIndicator): { indicatorKey: string; value: string } => {\n return { indicatorKey: indicator.indicatorKey, value: indicator.title ?? indicator.indicatorKey };\n });\n }\n //最后将总计的节点加上\n if (isGrandTotal && arr?.length) {\n const node: { value: string; dimensionKey: string; children: any[]; rowSpan: number } = {\n value: grandTotalLabel, // getId(item?.id, 1),\n dimensionKey: rows[0],\n rowSpan: subTotalFlags.length,\n children:\n indicators?.map(indicator => {\n if (typeof indicator === 'string') {\n return {\n indicatorKey: indicator,\n value: indicator\n };\n }\n return {\n indicatorKey: indicator.indicatorKey,\n value: indicator.title\n };\n }) ?? []\n };\n\n result.push(node);\n }\n return result;\n }\n //将树形结构转为二维数组 值为node.id\n private TreeToArr(tree: any) {\n const result: any[] = []; // 结果\n function getPath(node: any, arr: any) {\n arr.push(node.id);\n if (node.children.length > 0) {\n // 存在多个节点就递归\n node.children?.forEach((childItem: any) => getPath(childItem, [...arr]));\n } else {\n result.push(arr);\n }\n }\n tree.forEach((treeNode: any) => getPath(treeNode, []));\n return result;\n }\n private dealWithZeroAlign() {\n const indicatorsToAlign = [];\n for (let i = 0; i < this.aggregationRules.length; i++) {\n const rule = this.aggregationRules[i];\n if (isArray(rule.field) && rule.field.length === 2) {\n indicatorsToAlign.push(rule.field);\n }\n }\n\n indicatorsToAlign.forEach(indicatorToAlign => {\n const indicator1 = indicatorToAlign[0];\n const indicator2 = indicatorToAlign[1];\n const collectedValue1 = this.collectedValues[indicator1];\n const collectedValue2 = this.collectedValues[indicator2];\n this.collectedValues[indicator1 + '_align'] = {};\n this.collectedValues[indicator2 + '_align'] = {};\n\n const toAlignCollectedValue = collectedValue1 || collectedValue2;\n for (const key in toAlignCollectedValue) {\n const range1 = collectedValue1?.[key] ?? { min: 0, max: 1 };\n const range2 = collectedValue2?.[key] ?? { min: 0, max: 1 };\n\n const newRanges = getNewRangeToAlign(\n range1 as { min: number; max: number },\n range2 as { min: number; max: number }\n );\n if (!newRanges) {\n // 没有正确完成0值对齐,直接沿用之前的range\n this.collectedValues[indicator1 + '_align'][key] = {\n min: (range1 as { min: number; max: number }).min,\n max: (range1 as { min: number; max: number }).max\n };\n this.collectedValues[indicator2 + '_align'][key] = {\n min: (range2 as { min: number; max: number }).min,\n max: (range2 as { min: number; max: number }).max\n };\n } else {\n const { range1: newRange1, range2: newRange2 } = newRanges;\n this.collectedValues[indicator1 + '_align'][key] = { min: newRange1[0], max: newRange1[1] };\n this.collectedValues[indicator2 + '_align'][key] = { min: newRange2[0], max: newRange2[1] };\n }\n }\n });\n }\n\n private cacheDeminsionCollectedValues() {\n for (const key in this.collectValuesBy) {\n if (this.collectValuesBy[key].type === 'xField' || this.collectValuesBy[key].type === 'yField') {\n if (this.dataConfig.dimensionSortArray) {\n this.cacheCollectedValues[key] = arraySortByAnotherArray(\n this.collectedValues[key] as unknown as string[],\n this.dataConfig.dimensionSortArray\n ) as unknown as Record<string, CollectedValue>;\n } else {\n this.cacheCollectedValues[key] = this.collectedValues[key];\n }\n }\n }\n }\n\n private _adjustCustomTree(customTree: IHeaderTreeDefine[]) {\n const checkNode = (nodes: IHeaderTreeDefine[], isHasIndicator: boolean) => {\n nodes.forEach((node: IHeaderTreeDefine) => {\n if (!node.indicatorKey && !isHasIndicator && !node.children?.length) {\n node.children = this.indicators?.map((indicator: IIndicator): { indicatorKey: string; value: string } => {\n return { indicatorKey: indicator.indicatorKey, value: indicator.title ?? indicator.indicatorKey };\n });\n } else if (node.children) {\n checkNode(node.children, isHasIndicator || !!node.indicatorKey);\n }\n });\n };\n if (customTree?.length) {\n checkNode(customTree, false);\n } else {\n customTree = this.indicators?.map((indicator: IIndicator): { indicatorKey: string; value: string } => {\n return { indicatorKey: indicator.indicatorKey, value: indicator.title ?? indicator.indicatorKey };\n });\n }\n return customTree;\n }\n}\n\nfunction arraySortByAnotherArray(array: string[], sortArray: string[]) {\n return array.sort((a, b) => {\n const aIndex = sortArray.indexOf(a);\n const bIndex = sortArray.indexOf(b);\n if (aIndex < bIndex) {\n return -1;\n }\n if (aIndex > bIndex) {\n return 1;\n }\n return 0;\n });\n}\n"]}
|
package/es/event/event.js
CHANGED
|
@@ -69,11 +69,10 @@ export class EventManeger {
|
|
|
69
69
|
}
|
|
70
70
|
dealMenuHover(eventArgsSet) {}
|
|
71
71
|
dealTableSelect(eventArgsSet) {
|
|
72
|
-
var _a, _b
|
|
72
|
+
var _a, _b;
|
|
73
73
|
if (!eventArgsSet) return this.table.stateManeger.updateSelectPos(-1, -1), !1;
|
|
74
74
|
const {eventArgs: eventArgs} = eventArgsSet;
|
|
75
|
-
return !!eventArgs && (this.table.isPivotChart() || "
|
|
76
|
-
!this.table.isPivotChart() || "axis-label" !== (null === (_b = null == eventArgsSet ? void 0 : eventArgsSet.eventArgs) || void 0 === _b ? void 0 : _b.target.name) && "chart" !== (null === (_c = null == eventArgsSet ? void 0 : eventArgsSet.eventArgs) || void 0 === _c ? void 0 : _c.target.type) ? (this.table.stateManeger.updateSelectPos(eventArgs.col, eventArgs.row, eventArgs.event.shiftKey, eventArgs.event.ctrlKey || eventArgs.event.metaKey),
|
|
75
|
+
return !!eventArgs && (!this.table.isPivotChart() || "axis-label" !== (null === (_a = null == eventArgsSet ? void 0 : eventArgsSet.eventArgs) || void 0 === _a ? void 0 : _a.target.name) && "chart" !== (null === (_b = null == eventArgsSet ? void 0 : eventArgsSet.eventArgs) || void 0 === _b ? void 0 : _b.target.type) ? (this.table.stateManeger.updateSelectPos(eventArgs.col, eventArgs.row, eventArgs.event.shiftKey, eventArgs.event.ctrlKey || eventArgs.event.metaKey),
|
|
77
76
|
!0) : (this.table.stateManeger.updateSelectPos(-1, -1), !1));
|
|
78
77
|
}
|
|
79
78
|
deelTableSelectAll() {
|
package/es/event/event.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["event/event.ts"],"names":[],"mappings":"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","file":"event.js","sourcesContent":["// import { FederatedPointerEvent } from '@visactor/vrender';\nimport type { FederatedPointerEvent, IEventTarget } from '@visactor/vrender';\nimport { RichText } from '@visactor/vrender';\nimport type { MousePointerCellEvent } from '../ts-types';\nimport { IconFuncTypeEnum } from '../ts-types';\nimport type { StateManeger } from '../state/state';\nimport type { Group } from '../scenegraph/graphic/group';\nimport { TABLE_EVENT_TYPE } from '../core/TABLE_EVENT_TYPE';\nimport type { Icon } from '../scenegraph/graphic/icon';\nimport { checkCellInSelect } from '../state/common/check-in-select';\nimport { bindMediaClick } from './media-click';\nimport { bindDrillEvent, checkHaveDrill, drillClick } from './drill';\nimport { bindSparklineHoverEvent } from './sparkline-event';\nimport type { BaseTableAPI } from '../ts-types/base-table';\nimport { checkHaveTextStick, handleTextStick } from '../scenegraph/stick-text';\nimport { bindTableGroupListener } from './listener/table-group';\nimport { bindScrollBarListener } from './listener/scroll-bar';\nimport { bindContainerDomListener } from './listener/container-dom';\nimport { bindTouchListener } from './listener/touch';\nimport { getCellEventArgsSet, type SceneEvent } from './util';\nimport { bindAxisClickEvent } from './pivot-chart/axis-click';\nimport { bindAxisHoverEvent } from './pivot-chart/axis-hover';\nimport type { PivotTable } from '../PivotTable';\n\nexport class EventManeger {\n table: BaseTableAPI;\n // _col: number;\n // _resizing: boolean = false;\n\n isTouchdown: boolean; // touch scrolling mode on\n touchMovePoints: {\n x: number;\n y: number;\n timestamp: number;\n }[]; // touch points record in touch scrolling mode\n touchSetTimeout: any; // touch start timeout, use to distinguish touch scrolling mode and default touch event\n touchEnd: boolean; // is touch event end when default touch event listener response\n touchMove: boolean; // is touch listener working, use to disable document touch scrolling function\n constructor(table: BaseTableAPI) {\n this.table = table;\n this.bindOuterEvent();\n setTimeout(() => {\n this.bindSelfEvent();\n }, 0);\n }\n\n // 绑定DOM事件\n bindOuterEvent() {\n bindTableGroupListener(this);\n bindContainerDomListener(this);\n bindScrollBarListener(this);\n bindTouchListener(this);\n }\n\n bindSelfEvent() {\n if (this.table.isReleased) {\n return;\n }\n\n const stateManeger: StateManeger = this.table.stateManeger;\n\n // 图标点击\n this.table.on(TABLE_EVENT_TYPE.ICON_CLICK, iconInfo => {\n const { col, row, x, y, funcType, icon } = iconInfo;\n // 下拉菜单按钮点击\n if (funcType === IconFuncTypeEnum.dropDown) {\n stateManeger.triggerDropDownMenu(col, row, x, y);\n } else if (funcType === IconFuncTypeEnum.sort) {\n stateManeger.triggerSort(col, row, icon);\n } else if (funcType === IconFuncTypeEnum.frozen) {\n stateManeger.triggerFreeze(col, row, icon);\n } else if (funcType === IconFuncTypeEnum.drillDown) {\n drillClick(this.table);\n } else if (funcType === IconFuncTypeEnum.collapse || funcType === IconFuncTypeEnum.expand) {\n this.table.stateManeger.updateSelectPos(-1, -1);\n this.table.toggleHierarchyState(col, row);\n }\n });\n\n // 下拉菜单内容点击\n this.table.on(TABLE_EVENT_TYPE.DROPDOWNMENU_CLICK, () => {\n stateManeger.hideMenu();\n });\n\n // 处理textStick\n if (checkHaveTextStick(this.table)) {\n this.table.on(TABLE_EVENT_TYPE.SCROLL, e => {\n handleTextStick(this.table);\n });\n }\n\n // link/image/video点击\n bindMediaClick(this.table);\n\n // 双击自动列宽\n this.table.on(TABLE_EVENT_TYPE.DBLCLICK_CELL, (e: MousePointerCellEvent) => {\n if (e.federatedEvent) {\n const eventArgsSet = getCellEventArgsSet(e.federatedEvent as any);\n const resizeCol = this.table.scenegraph.getResizeColAt(\n eventArgsSet.abstractPos.x,\n eventArgsSet.abstractPos.y,\n eventArgsSet.eventArgs?.targetCell\n );\n if (this.table._canResizeColumn(resizeCol.col, resizeCol.row) && resizeCol.col >= 0) {\n this.table.scenegraph.updateAutoColWidth(resizeCol.col);\n }\n }\n });\n\n // drill icon\n if (this.table.isPivotTable() && checkHaveDrill(this.table as PivotTable)) {\n bindDrillEvent(this.table);\n }\n\n // chart hover\n bindSparklineHoverEvent(this.table);\n\n // axis click\n bindAxisClickEvent(this.table);\n\n // chart axis event\n bindAxisHoverEvent(this.table);\n }\n\n dealTableHover(eventArgsSet?: SceneEvent) {\n if (!eventArgsSet) {\n this.table.stateManeger.updateHoverPos(-1, -1);\n return;\n }\n const { eventArgs } = eventArgsSet;\n\n if (eventArgs) {\n this.table.stateManeger.updateHoverPos(eventArgs.col, eventArgs.row);\n } else {\n this.table.stateManeger.updateHoverPos(-1, -1);\n }\n }\n\n dealIconHover(eventArgsSet: SceneEvent) {\n const { eventArgs } = eventArgsSet;\n\n if (eventArgs) {\n this.table.stateManeger.updateHoverIcon(\n eventArgs.col,\n eventArgs.row,\n eventArgs.target,\n eventArgs.targetCell,\n eventArgs.event\n );\n } else {\n this.table.stateManeger.updateHoverIcon(-1, -1, undefined, undefined);\n }\n }\n\n dealMenuHover(eventArgsSet: SceneEvent) {\n // menu自身状态实现\n }\n\n dealTableSelect(eventArgsSet?: SceneEvent): boolean {\n if (!eventArgsSet) {\n this.table.stateManeger.updateSelectPos(-1, -1);\n return false;\n }\n const { eventArgs } = eventArgsSet;\n\n if (eventArgs) {\n // 注意:如果启用下面这句代码逻辑 则在点击选中单元格时失效hover效果。但是会导致chart实例的click事件失效,所以先特殊处理这个逻辑\n if (\n !this.table.isPivotChart() &&\n eventArgsSet?.eventArgs?.target.type !== 'chart' &&\n eventArgs.event.pointerType !== 'touch'\n ) {\n this.table.stateManeger.updateHoverPos(-1, -1);\n }\n\n if (\n this.table.isPivotChart() &&\n (eventArgsSet?.eventArgs?.target.name === 'axis-label' || eventArgsSet?.eventArgs?.target.type === 'chart')\n ) {\n // 点击透视图坐标轴标签或图标内容,执行图表状态更新,不触发Select\n this.table.stateManeger.updateSelectPos(-1, -1);\n return false;\n }\n this.table.stateManeger.updateSelectPos(\n eventArgs.col,\n eventArgs.row,\n eventArgs.event.shiftKey,\n eventArgs.event.ctrlKey || eventArgs.event.metaKey\n );\n return true;\n }\n // this.table.stateManeger.updateSelectPos(-1, -1); 这句有问题 如drag框选鼠标超出表格范围 这里就直接情况是不对的\n return false;\n }\n\n deelTableSelectAll() {\n this.table.stateManeger.updateSelectPos(-1, -1, false, false, true);\n }\n\n dealMenuSelect(eventArgsSet: SceneEvent) {\n // do nothing\n }\n\n checkColumnResize(eventArgsSet: SceneEvent, update?: boolean): boolean {\n // return false;\n const { eventArgs } = eventArgsSet;\n\n if (eventArgs) {\n const resizeCol = this.table.scenegraph.getResizeColAt(\n eventArgsSet.abstractPos.x,\n eventArgsSet.abstractPos.y,\n eventArgs.targetCell\n );\n if (this.table._canResizeColumn(resizeCol.col, resizeCol.row) && resizeCol.col >= 0) {\n // this.table.stateManeger.updateResizeCol(resizeCol.col, eventArgsSet.abstractPos.x, first);\n // this._col = resizeCol.col;\n if (update) {\n this.table.stateManeger.startResizeCol(\n resizeCol.col,\n eventArgsSet.abstractPos.x,\n eventArgsSet.abstractPos.y,\n resizeCol.rightFrozen\n );\n }\n return true;\n }\n }\n\n return false;\n }\n\n dealColumnResize(xInTable: number, yInTable: number) {\n this.table.stateManeger.updateResizeCol(xInTable, yInTable);\n }\n\n chechColumnMover(eventArgsSet: SceneEvent): boolean {\n // return false;\n const { eventArgs } = eventArgsSet;\n\n if (\n eventArgs &&\n this.table.isHeader(eventArgs.col, eventArgs.row) &&\n checkCellInSelect(eventArgs.col, eventArgs.row, this.table.stateManeger.select.ranges) &&\n // this.table.stateManeger.select.cellPosStart.col === eventArgs.col &&\n // this.table.stateManeger.select.cellPosStart.row === eventArgs.row &&\n this.table._canDragHeaderPosition(eventArgs.col, eventArgs.row)\n ) {\n this.table.stateManeger.startMoveCol(\n eventArgs.col,\n eventArgs.row,\n eventArgsSet.abstractPos.x,\n eventArgsSet.abstractPos.y\n );\n return true;\n }\n\n return false;\n }\n\n dealColumnMover(eventArgsSet: SceneEvent) {\n const { eventArgs } = eventArgsSet;\n this.table.stateManeger.updateMoveCol(\n eventArgs.col,\n eventArgs.row,\n eventArgsSet.abstractPos.x,\n eventArgsSet.abstractPos.y\n );\n }\n\n startColumnResize(eventArgsSet: SceneEvent) {\n // do nothing\n }\n\n dealIconClick(e: FederatedPointerEvent, eventArgsSet: SceneEvent): boolean {\n const { eventArgs } = eventArgsSet;\n // if (!eventArgs) {\n // return false;\n // }\n\n const { target, event, col, row } = eventArgs || {\n target: e.target,\n event: e,\n col: -1,\n row: -1\n };\n const icon = target as unknown as Icon;\n\n if (icon.role && icon.role.startsWith('icon-')) {\n this.table.fireListeners(TABLE_EVENT_TYPE.ICON_CLICK, {\n name: icon.name,\n // 默认位置:icon中部正下方\n x: (icon.globalAABBBounds.x1 + icon.globalAABBBounds.x2) / 2,\n y: icon.globalAABBBounds.y2,\n col,\n row,\n funcType: icon.attribute.funcType,\n icon\n });\n\n return true;\n } else if (target instanceof RichText) {\n const icon = target.pickIcon(event.global);\n if (icon) {\n this.table.fireListeners(TABLE_EVENT_TYPE.ICON_CLICK, {\n name: icon.attribute.id,\n // 默认位置:icon中部正下方\n x: icon.globalX + icon.globalAABBBounds.width() / 2,\n y: icon.globalY + icon.AABBBounds.height(),\n col,\n row,\n funcType: (icon.attribute as any).funcType,\n icon: icon as unknown as Icon\n });\n return true;\n }\n }\n\n return false;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["event/event.ts"],"names":[],"mappings":"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","file":"event.js","sourcesContent":["// import { FederatedPointerEvent } from '@visactor/vrender';\nimport type { FederatedPointerEvent, IEventTarget } from '@visactor/vrender';\nimport { RichText } from '@visactor/vrender';\nimport type { MousePointerCellEvent } from '../ts-types';\nimport { IconFuncTypeEnum } from '../ts-types';\nimport type { StateManeger } from '../state/state';\nimport type { Group } from '../scenegraph/graphic/group';\nimport { TABLE_EVENT_TYPE } from '../core/TABLE_EVENT_TYPE';\nimport type { Icon } from '../scenegraph/graphic/icon';\nimport { checkCellInSelect } from '../state/common/check-in-select';\nimport { bindMediaClick } from './media-click';\nimport { bindDrillEvent, checkHaveDrill, drillClick } from './drill';\nimport { bindSparklineHoverEvent } from './sparkline-event';\nimport type { BaseTableAPI } from '../ts-types/base-table';\nimport { checkHaveTextStick, handleTextStick } from '../scenegraph/stick-text';\nimport { bindTableGroupListener } from './listener/table-group';\nimport { bindScrollBarListener } from './listener/scroll-bar';\nimport { bindContainerDomListener } from './listener/container-dom';\nimport { bindTouchListener } from './listener/touch';\nimport { getCellEventArgsSet, type SceneEvent } from './util';\nimport { bindAxisClickEvent } from './pivot-chart/axis-click';\nimport { bindAxisHoverEvent } from './pivot-chart/axis-hover';\nimport type { PivotTable } from '../PivotTable';\n\nexport class EventManeger {\n table: BaseTableAPI;\n // _col: number;\n // _resizing: boolean = false;\n\n isTouchdown: boolean; // touch scrolling mode on\n touchMovePoints: {\n x: number;\n y: number;\n timestamp: number;\n }[]; // touch points record in touch scrolling mode\n touchSetTimeout: any; // touch start timeout, use to distinguish touch scrolling mode and default touch event\n touchEnd: boolean; // is touch event end when default touch event listener response\n touchMove: boolean; // is touch listener working, use to disable document touch scrolling function\n constructor(table: BaseTableAPI) {\n this.table = table;\n this.bindOuterEvent();\n setTimeout(() => {\n this.bindSelfEvent();\n }, 0);\n }\n\n // 绑定DOM事件\n bindOuterEvent() {\n bindTableGroupListener(this);\n bindContainerDomListener(this);\n bindScrollBarListener(this);\n bindTouchListener(this);\n }\n\n bindSelfEvent() {\n if (this.table.isReleased) {\n return;\n }\n\n const stateManeger: StateManeger = this.table.stateManeger;\n\n // 图标点击\n this.table.on(TABLE_EVENT_TYPE.ICON_CLICK, iconInfo => {\n const { col, row, x, y, funcType, icon } = iconInfo;\n // 下拉菜单按钮点击\n if (funcType === IconFuncTypeEnum.dropDown) {\n stateManeger.triggerDropDownMenu(col, row, x, y);\n } else if (funcType === IconFuncTypeEnum.sort) {\n stateManeger.triggerSort(col, row, icon);\n } else if (funcType === IconFuncTypeEnum.frozen) {\n stateManeger.triggerFreeze(col, row, icon);\n } else if (funcType === IconFuncTypeEnum.drillDown) {\n drillClick(this.table);\n } else if (funcType === IconFuncTypeEnum.collapse || funcType === IconFuncTypeEnum.expand) {\n this.table.stateManeger.updateSelectPos(-1, -1);\n this.table.toggleHierarchyState(col, row);\n }\n });\n\n // 下拉菜单内容点击\n this.table.on(TABLE_EVENT_TYPE.DROPDOWNMENU_CLICK, () => {\n stateManeger.hideMenu();\n });\n\n // 处理textStick\n if (checkHaveTextStick(this.table)) {\n this.table.on(TABLE_EVENT_TYPE.SCROLL, e => {\n handleTextStick(this.table);\n });\n }\n\n // link/image/video点击\n bindMediaClick(this.table);\n\n // 双击自动列宽\n this.table.on(TABLE_EVENT_TYPE.DBLCLICK_CELL, (e: MousePointerCellEvent) => {\n if (e.federatedEvent) {\n const eventArgsSet = getCellEventArgsSet(e.federatedEvent as any);\n const resizeCol = this.table.scenegraph.getResizeColAt(\n eventArgsSet.abstractPos.x,\n eventArgsSet.abstractPos.y,\n eventArgsSet.eventArgs?.targetCell\n );\n if (this.table._canResizeColumn(resizeCol.col, resizeCol.row) && resizeCol.col >= 0) {\n this.table.scenegraph.updateAutoColWidth(resizeCol.col);\n }\n }\n });\n\n // drill icon\n if (this.table.isPivotTable() && checkHaveDrill(this.table as PivotTable)) {\n bindDrillEvent(this.table);\n }\n\n // chart hover\n bindSparklineHoverEvent(this.table);\n\n // axis click\n bindAxisClickEvent(this.table);\n\n // chart axis event\n bindAxisHoverEvent(this.table);\n }\n\n dealTableHover(eventArgsSet?: SceneEvent) {\n if (!eventArgsSet) {\n this.table.stateManeger.updateHoverPos(-1, -1);\n return;\n }\n const { eventArgs } = eventArgsSet;\n\n if (eventArgs) {\n this.table.stateManeger.updateHoverPos(eventArgs.col, eventArgs.row);\n } else {\n this.table.stateManeger.updateHoverPos(-1, -1);\n }\n }\n\n dealIconHover(eventArgsSet: SceneEvent) {\n const { eventArgs } = eventArgsSet;\n\n if (eventArgs) {\n this.table.stateManeger.updateHoverIcon(\n eventArgs.col,\n eventArgs.row,\n eventArgs.target,\n eventArgs.targetCell,\n eventArgs.event\n );\n } else {\n this.table.stateManeger.updateHoverIcon(-1, -1, undefined, undefined);\n }\n }\n\n dealMenuHover(eventArgsSet: SceneEvent) {\n // menu自身状态实现\n }\n\n dealTableSelect(eventArgsSet?: SceneEvent): boolean {\n if (!eventArgsSet) {\n this.table.stateManeger.updateSelectPos(-1, -1);\n return false;\n }\n const { eventArgs } = eventArgsSet;\n\n if (eventArgs) {\n // // 注意:如果启用下面这句代码逻辑 则在点击选中单元格时失效hover效果。但是会导致chart实例的click事件失效,所以先特殊处理这个逻辑\n // if (\n // !this.table.isPivotChart() &&\n // eventArgsSet?.eventArgs?.target.type !== 'chart' &&\n // eventArgs.event.pointerType !== 'touch'\n // ) {\n // this.table.stateManeger.updateHoverPos(-1, -1);\n // }\n\n if (\n this.table.isPivotChart() &&\n (eventArgsSet?.eventArgs?.target.name === 'axis-label' || eventArgsSet?.eventArgs?.target.type === 'chart')\n ) {\n // 点击透视图坐标轴标签或图标内容,执行图表状态更新,不触发Select\n this.table.stateManeger.updateSelectPos(-1, -1);\n return false;\n }\n this.table.stateManeger.updateSelectPos(\n eventArgs.col,\n eventArgs.row,\n eventArgs.event.shiftKey,\n eventArgs.event.ctrlKey || eventArgs.event.metaKey\n );\n return true;\n }\n // this.table.stateManeger.updateSelectPos(-1, -1); 这句有问题 如drag框选鼠标超出表格范围 这里就直接情况是不对的\n return false;\n }\n\n deelTableSelectAll() {\n this.table.stateManeger.updateSelectPos(-1, -1, false, false, true);\n }\n\n dealMenuSelect(eventArgsSet: SceneEvent) {\n // do nothing\n }\n\n checkColumnResize(eventArgsSet: SceneEvent, update?: boolean): boolean {\n // return false;\n const { eventArgs } = eventArgsSet;\n\n if (eventArgs) {\n const resizeCol = this.table.scenegraph.getResizeColAt(\n eventArgsSet.abstractPos.x,\n eventArgsSet.abstractPos.y,\n eventArgs.targetCell\n );\n if (this.table._canResizeColumn(resizeCol.col, resizeCol.row) && resizeCol.col >= 0) {\n // this.table.stateManeger.updateResizeCol(resizeCol.col, eventArgsSet.abstractPos.x, first);\n // this._col = resizeCol.col;\n if (update) {\n this.table.stateManeger.startResizeCol(\n resizeCol.col,\n eventArgsSet.abstractPos.x,\n eventArgsSet.abstractPos.y,\n resizeCol.rightFrozen\n );\n }\n return true;\n }\n }\n\n return false;\n }\n\n dealColumnResize(xInTable: number, yInTable: number) {\n this.table.stateManeger.updateResizeCol(xInTable, yInTable);\n }\n\n chechColumnMover(eventArgsSet: SceneEvent): boolean {\n // return false;\n const { eventArgs } = eventArgsSet;\n\n if (\n eventArgs &&\n this.table.isHeader(eventArgs.col, eventArgs.row) &&\n checkCellInSelect(eventArgs.col, eventArgs.row, this.table.stateManeger.select.ranges) &&\n // this.table.stateManeger.select.cellPosStart.col === eventArgs.col &&\n // this.table.stateManeger.select.cellPosStart.row === eventArgs.row &&\n this.table._canDragHeaderPosition(eventArgs.col, eventArgs.row)\n ) {\n this.table.stateManeger.startMoveCol(\n eventArgs.col,\n eventArgs.row,\n eventArgsSet.abstractPos.x,\n eventArgsSet.abstractPos.y\n );\n return true;\n }\n\n return false;\n }\n\n dealColumnMover(eventArgsSet: SceneEvent) {\n const { eventArgs } = eventArgsSet;\n this.table.stateManeger.updateMoveCol(\n eventArgs.col,\n eventArgs.row,\n eventArgsSet.abstractPos.x,\n eventArgsSet.abstractPos.y\n );\n }\n\n startColumnResize(eventArgsSet: SceneEvent) {\n // do nothing\n }\n\n dealIconClick(e: FederatedPointerEvent, eventArgsSet: SceneEvent): boolean {\n const { eventArgs } = eventArgsSet;\n // if (!eventArgs) {\n // return false;\n // }\n\n const { target, event, col, row } = eventArgs || {\n target: e.target,\n event: e,\n col: -1,\n row: -1\n };\n const icon = target as unknown as Icon;\n\n if (icon.role && icon.role.startsWith('icon-')) {\n this.table.fireListeners(TABLE_EVENT_TYPE.ICON_CLICK, {\n name: icon.name,\n // 默认位置:icon中部正下方\n x: (icon.globalAABBBounds.x1 + icon.globalAABBBounds.x2) / 2,\n y: icon.globalAABBBounds.y2,\n col,\n row,\n funcType: icon.attribute.funcType,\n icon\n });\n\n return true;\n } else if (target instanceof RichText) {\n const icon = target.pickIcon(event.global);\n if (icon) {\n this.table.fireListeners(TABLE_EVENT_TYPE.ICON_CLICK, {\n name: icon.attribute.id,\n // 默认位置:icon中部正下方\n x: icon.globalX + icon.globalAABBBounds.width() / 2,\n y: icon.globalY + icon.AABBBounds.height(),\n col,\n row,\n funcType: (icon.attribute as any).funcType,\n icon: icon as unknown as Icon\n });\n return true;\n }\n }\n\n return false;\n }\n}\n"]}
|
package/es/index.d.ts
CHANGED
|
@@ -12,7 +12,7 @@ import type { MousePointerCellEvent } from './ts-types/events';
|
|
|
12
12
|
import * as CustomLayout from './render/layout';
|
|
13
13
|
export { getDataCellPath } from './tools/get-data-path';
|
|
14
14
|
export * from './render/jsx';
|
|
15
|
-
export declare const version = "0.12.
|
|
15
|
+
export declare const version = "0.12.2";
|
|
16
16
|
export { TYPES, core, ListTable, ListTableConstructorOptions, PivotTable, PivotTableConstructorOptions, PivotChartConstructorOptions, PivotChart, IHeaderTreeDefine, IDimension, ColumnsDefine, ColumnDefine, LinkColumnDefine, ChartColumnDefine, ImageColumnDefine, SparklineColumnDefine, ProgressbarColumnDefine, TextColumnDefine, GroupColumnDefine, TextAlignType, TextBaselineType, themes, data, MousePointerCellEvent, getIcons, clearGlobal, register, DataStatistics, CustomLayout };
|
|
17
17
|
declare function getIcons(): {
|
|
18
18
|
[key: string]: TYPES.ColumnIconOption;
|
package/es/index.js
CHANGED
|
@@ -24,7 +24,7 @@ export { getDataCellPath } from "./tools/get-data-path";
|
|
|
24
24
|
|
|
25
25
|
export * from "./render/jsx";
|
|
26
26
|
|
|
27
|
-
export const version = "0.12.
|
|
27
|
+
export const version = "0.12.2";
|
|
28
28
|
|
|
29
29
|
export { TYPES, core, ListTable, PivotTable, PivotChart, themes, data, getIcons, clearGlobal, register, DataStatistics, CustomLayout };
|
|
30
30
|
|