@visactor/vchart 2.1.0-alpha.11 → 2.1.0-alpha.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/es5/index.js +3 -3
- package/build/index.es.js +15389 -8369
- package/build/index.js +15390 -8370
- package/build/index.min.js +3 -3
- package/build/tsconfig.tsbuildinfo +1 -1
- package/cjs/chart/index.js +1 -1
- package/cjs/chart/stack.js +1 -1
- package/cjs/chart/util.js +1 -1
- package/cjs/compile/compiler.js +9 -3
- package/cjs/compile/compiler.js.map +1 -1
- package/cjs/compile/interface/compiler.d.ts +2 -0
- package/cjs/compile/interface/compiler.js.map +1 -1
- package/cjs/compile/stage-app.d.ts +15 -1
- package/cjs/compile/stage-app.js +138 -10
- package/cjs/compile/stage-app.js.map +1 -1
- package/cjs/component/legend/base-legend.js +1 -1
- package/cjs/component/legend/base-legend.js.map +1 -1
- package/cjs/component/marker/mark-line/cartesian-mark-line.js +18 -7
- package/cjs/component/marker/mark-line/cartesian-mark-line.js.map +1 -1
- package/cjs/component/marker/mark-line/interface/spec.d.ts +9 -2
- package/cjs/component/marker/mark-line/interface/spec.js.map +1 -1
- package/cjs/constant/animate.js +1 -2
- package/cjs/constant/attribute.js +2 -1
- package/cjs/constant/sunburst.js +1 -2
- package/cjs/constant/waterfall.js +2 -1
- package/cjs/core/expression-function.js +1 -1
- package/cjs/core/factory.js +1 -1
- package/cjs/core/index.js +1 -1
- package/cjs/core/instance-manager.js +1 -1
- package/cjs/core/interface.js +1 -1
- package/cjs/core/util.js +1 -1
- package/cjs/data/data-view-utils.js +1 -1
- package/cjs/data/initialize.js +1 -1
- package/cjs/data/register.js +1 -1
- package/cjs/mark/base/base-line.js +2 -2
- package/cjs/mark/base/base-line.js.map +1 -1
- package/cjs/series/waterfall/waterfall.d.ts +2 -0
- package/cjs/series/waterfall/waterfall.js +12 -4
- package/cjs/series/waterfall/waterfall.js.map +1 -1
- package/esm/chart/index.js +1 -1
- package/esm/chart/stack.js +1 -1
- package/esm/chart/util.js +1 -1
- package/esm/compile/compiler.js +9 -4
- package/esm/compile/compiler.js.map +1 -1
- package/esm/compile/interface/compiler.d.ts +2 -0
- package/esm/compile/interface/compiler.js.map +1 -1
- package/esm/compile/stage-app.d.ts +15 -1
- package/esm/compile/stage-app.js +112 -8
- package/esm/compile/stage-app.js.map +1 -1
- package/esm/component/legend/base-legend.js +1 -1
- package/esm/component/legend/base-legend.js.map +1 -1
- package/esm/component/marker/mark-line/cartesian-mark-line.js +18 -8
- package/esm/component/marker/mark-line/cartesian-mark-line.js.map +1 -1
- package/esm/component/marker/mark-line/interface/spec.d.ts +9 -2
- package/esm/component/marker/mark-line/interface/spec.js.map +1 -1
- package/esm/constant/animate.js +1 -2
- package/esm/constant/attribute.js +2 -1
- package/esm/constant/sunburst.js +1 -2
- package/esm/constant/waterfall.js +2 -1
- package/esm/core/expression-function.js +1 -1
- package/esm/core/factory.js +1 -1
- package/esm/core/index.js +1 -1
- package/esm/core/instance-manager.js +1 -1
- package/esm/core/interface.js +1 -1
- package/esm/core/util.js +1 -1
- package/esm/data/data-view-utils.js +1 -1
- package/esm/data/initialize.js +1 -1
- package/esm/data/register.js +1 -1
- package/esm/mark/base/base-line.js +2 -2
- package/esm/mark/base/base-line.js.map +1 -1
- package/esm/series/waterfall/waterfall.d.ts +2 -0
- package/esm/series/waterfall/waterfall.js +12 -4
- package/esm/series/waterfall/waterfall.js.map +1 -1
- package/package.json +9 -9
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/series/waterfall/waterfall.ts"],"names":[],"mappings":";;;AACA,6CAAuD;AACvD,8CAAyE;AACzE,+DAAgF;AAChF,oCAAuC;AACvC,4CAA2E;AAC3E,2CAAyD;AACzD,iDAA6E;AAG7E,4CAAuE;AACvE,mDAAoE;AAEpE,kDAAuE;AACvE,sDAA6D;AAK7D,0CAAmD;AACnD,yCAAiD;AACjD,yCAAsC;AACtC,gDAA6C;AAC7C,0CAAmD;AACnD,yCAAwD;AACxD,mEAAyE;AACzE,8DAAwG;AACxG,qDAAwD;AACxD,wDAAuE;AACvE,8CAA6C;AAC7C,wDAA0D;AAI1D,6CAA0E;AAC1E,2EAA0F;AAE1F,qCAA6D;AAGhD,QAAA,gBAAgB,GAAG,CAAC,CAAC;AAElC,MAAM,kCAAkC,GAAoC;IAC1E,eAAe,EAAE,IAAI;CACtB,CAAC;AAEF,MAAa,eAAuE,SAAQ,eAAc;IAA1G;;QAEE,SAAI,GAAG,qBAAc,CAAC,SAAS,CAAC;QAKvB,2BAAsB,GAAG,sDAAqC,CAAC;QAS9D,oBAAe,GAAc,IAAI,CAAC;QAClC,oBAAe,GAAc,IAAI,CAAC;QAClC,eAAU,GAAc,IAAI,CAAC;QA6F7B,kBAAa,GAAG,GAAG,EAAE;YAC7B,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;YACtC,MAAM,eAAe,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAClD,IAAI,SAAS,EAAE;gBACb,IAAA,iBAAU,EAAC,SAA4B,EAAE,eAAe,CAAC,CAAC;aAC3D;QACH,CAAC,CAAC;IA4NJ,CAAC;IAvUC,YAAY;;QACV,OAAO,MAAA,IAAI,CAAC,UAAU,0CAAE,aAAa,EAAE,CAAC;IAC1C,CAAC;IAQS,oBAAoB;QAC5B,MAAM,MAAM,GAAG,KAAK,CAAC,oBAAoB,EAAE,CAAC;QAC5C,uCACK,MAAM,KACT,eAAe,kCACV,MAAM,CAAC,eAAe,GACtB,kCAAkC,KAEvC;IACJ,CAAC;IAES,UAAU;QAClB,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QAC1C,IAAI,WAAW,IAAI,WAAW,CAAC,MAAM,EAAE;YACrC,IAAI,CAAC,OAAO,GAAG,IAAI,aAAK,CAAC,WAAW,CAAC,CAAC;YACtC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;SAC9E;IACH,CAAC;IAED,eAAe;QACb,KAAK,CAAC,eAAe,EAAE,CAAC;QAExB,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAE5B,IAAI,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;QACjC,IAAI,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;QACjC,IAAI,IAAA,cAAK,EAAC,IAAI,CAAC,YAAY,CAAC,EAAE;YAC5B,IAAI,CAAC,YAAY,GAAG,uCAA2B,CAAC;SACjD;IACH,CAAC;IAED,aAAa;QACX,IAAI,IAAI,CAAC,YAAY,KAAK,uCAA2B,EAAE;YACrD,OAAO;gBACL,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,QAAQ;gBACpC,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,QAAQ;gBACpC,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,KAAK;aAClC,CAAC;SACH;QACD,OAAO,KAAK,CAAC,aAAa,EAAE,CAAC;IAC/B,CAAC;IAES,QAAQ;;QAChB,KAAK,CAAC,QAAQ,EAAE,CAAC;QACjB,IAAA,2CAAgC,EAAC,IAAI,CAAC,QAAQ,EAAE,oBAAoB,EAAE,8BAAkB,CAAC,CAAC;QAC1F,IAAA,2CAAgC,EAAC,IAAI,CAAC,QAAQ,EAAE,WAAW,EAAE,qBAAS,CAAC,CAAC;QAExE,IAAI,IAAA,cAAK,EAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,KAAK,EAAE;YAC9D,MAAA,IAAI,CAAC,QAAQ,0CAAE,SAAS,CACtB;gBACE,IAAI,EAAE,oBAAoB;gBAC1B,OAAO,EAAE,GAAG,EAAE;;oBAAC,OAAA,CAAC;wBACd,UAAU,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;wBACpC,UAAU,EAAE,IAAI,CAAC,kBAAkB,EAAE;wBACrC,WAAW,EAAE,IAAI,CAAC,cAAc,EAAE;wBAClC,eAAe,EAAE,IAAI,CAAC,MAAM,CAAC,eAAe;wBAC5C,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK;wBACvB,eAAe,EAAE,MAAA,IAAI,CAAC,KAAK,CAAC,eAAe,mCAAI,UAAU;wBACzD,YAAY,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,eAAe,EAAE;qBACjD,CAAC,CAAA;iBAAA;aACH,EACD,KAAK,CACN,CAAC;SACH;QAED,MAAM,SAAS,GAAG,IAAA,iCAAoB,EAAC,IAAI,CAAC,WAAW,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAE;YACxE,IAAI,EAAE,GAAG,aAAM,WAAW,IAAI,CAAC,EAAE,YAAY;SAC9C,CAAC,CAAC;QACH,IAAI,CAAC,WAAW,EAAE,CAAC,MAAM,CAAC,cAAc,CAAC,QAAQ,EAAE,SAAS,CAAC,iBAAiB,CAAC,CAAC;QAChF,IAAI,CAAC,UAAU,GAAG,IAAI,qBAAc,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QAC9D,SAAS,CAAC,SAAS,CACjB;YACE,IAAI,EAAE,WAAW;YACjB,OAAO,EAAE,GAAG,EAAE;;gBAAC,OAAA,CAAC;oBACd,UAAU,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;oBACpC,UAAU,EAAE,IAAI,CAAC,kBAAkB,EAAE;oBACrC,WAAW,EAAE,IAAI,CAAC,cAAc,EAAE;oBAClC,eAAe,EAAE,IAAI,CAAC,MAAM,CAAC,eAAe;oBAC5C,OAAO,EAAE,wBAAiB;oBAC1B,KAAK,EAAE,sBAAe;oBACtB,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK;oBACvB,eAAe,EAAE,MAAA,IAAI,CAAC,KAAK,CAAC,eAAe,mCAAI,UAAU;oBACzD,SAAS,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,SAAS;oBAC3C,YAAY,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,eAAe,EAAE;iBACjD,CAAC,CAAA;aAAA;SACH,EACD,KAAK,CACN,CAAC;QACF,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC,QAAQ,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;IAC7D,CAAC;IAUD,WAAW;;QACT,KAAK,CAAC,WAAW,EAAE,CAAC;QACpB,MAAA,IAAI,CAAC,UAAU,0CAAE,OAAO,EAAE,CAAC;IAC7B,CAAC;IAED,aAAa;;QAGX,MAAM,wBAAwB,GAAwB;YACpD,MAAM,EAAE,IAAI,CAAC,SAAS,KAAK,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,kBAAkB,EAAE;YACrF,MAAM,EAAE,IAAI,CAAC,SAAS,KAAK,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;YACrF,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,QAAQ,EAAE,GAAG,EAAE;;gBACb,OAAA,IAAI,CAAC,SAAS,KAAK,YAAY;oBAC7B,CAAC,CAAC,MAAA,IAAI,CAAC,YAAY,0CAAE,QAAQ,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;oBACzC,CAAC,CAAC,MAAA,IAAI,CAAC,YAAY,0CAAE,QAAQ,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAA;aAAA;SAC9C,CAAC;QACF,MAAM,YAAY,GAAG,MAAC,MAAA,IAAI,CAAC,KAAK,0CAAE,eAA4D,0CAAE,MAAM,CAAC;QACvG,MAAM,eAAe,GAAG,IAAA,+BAAuB,EAAC,IAAI,CAAC,CAAC;QAEtD,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAC9B,IAAA,uBAAe,EACb,MAAA,iBAAO,CAAC,iBAAiB,CAAC,WAAW,CAAC,0CAAG,wBAAwB,EAAE,YAAY,CAAC,EAChF,IAAA,2BAAmB,SAAyB,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,qBAAqB,CAAC,EACnF,eAAe,CAChB,CACF,CAAC;QAEF,IAAI,IAAI,CAAC,eAAe,EAAE;YACxB,IAAI,CAAC,eAAe,CAAC,kBAAkB,CACrC,IAAA,uBAAe,EACb,MAAA,iBAAO,CAAC,iBAAiB,CAAC,WAAW,CAAC,2CAAI,EAC1C,IAAA,2BAAmB,gBAAgC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,qBAAqB,CAAC,CAC3F,CACF,CAAC;SACH;IACH,CAAC;IAED,cAAc,CAAC,CAAW;QACxB,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,iBAAiB,EAAE,CAAC;QAClD,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC;QAC7B,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;IAC1B,CAAC;IAKD,iBAAiB,CAAC,OAA0B;IAE5C,CAAC;IACD,gBAAgB;IAEhB,CAAC;IAED,aAAa,CAAC,GAAyB;QACrC,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;QACzB,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC;IAC/B,CAAC;IAED,QAAQ;QACN,KAAK,CAAC,QAAQ,EAAE,CAAC;QACjB,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,IAAI,CAAC,UAAU,EAAE;YACnE,GAAG,EAAE,OAAO;SACb,CAAc,CAAC;QAChB,IAAI,UAAU,EAAE;YACd,IAAI,CAAC,eAAe,GAAG,UAAU,CAAC;YAClC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;SACrC;IACH,CAAC;IAED,kBAAkB,CAAC,SAAqB;;QACtC,IAAI,CAAC,SAAS,EAAE;YACd,OAAO;SACR;QAED,IAAI,CAAC,IAAI,CAAC,UAAU,KAAI,MAAA,IAAI,CAAC,KAAK,CAAC,KAAK,0CAAE,OAAO,CAAA,EAAE;YACjD,KAAK,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC;YACpC,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;YAC5B,OAAO;SACR;IACH,CAAC;IAED,uBAAuB,CAAC,SAAqB;QAC3C,IAAI,CAAC,SAAS,EAAE;YACd,OAAO;SACR;QACD,IAAI,CAAC,eAAe,GAAG,SAAS,CAAC;QAEjC,SAAS,CAAC,UAAU,GAAG,IAAI,CAAC;QAC5B,SAAS,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QAChC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAEnC,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE;YAC3B,IAAI,EAAE,CAAC,KAAY,EAAE,EAAE;;gBACrB,OAAO,CAAA,MAAA,IAAI,CAAC,KAAK,CAAC,UAAU,0CAAE,SAAS,MAAK,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,IAAA,qBAAY,EAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;YAC5G,CAAC;SACF,CAAC,CAAC;IACL,CAAC;IAMD,uBAAuB,CAAC,SAAqB;QAC3C,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE;YAC3B,IAAI,EAAE,CAAC,KAAY,EAAE,EAAE;;gBACrB,IAAI,CAAC,CAAC,KAAK,IAAI,KAAK,CAAC,EAAE;oBACrB,OAAO,IAAI,CAAC,SAAS,iBAAyB,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;iBAClG;gBACD,OAAO,CAAA,MAAA,IAAI,CAAC,KAAK,CAAC,UAAU,0CAAE,SAAS,MAAK,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,IAAA,qBAAY,EAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;YAC5G,CAAC;SACF,CAAC,CAAC;IACL,CAAC;IAED,2BAA2B,CAAC,IAAgD;QAC1E,OAAO,IAAA,iBAAU,kCAEV,IAAI,KACP,MAAM,EAAE,IAAI,EAEZ,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,KAElC,CAAC,CAAC,EAAE;YACF,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,eAAuB,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;YAC9F,OAAO,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC,IAAI,CAAC,CAAC,EAAS,EAAE,EAAE,CAAC,EAAE,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC;QACjF,CAAC,CACF,CAAC;IACJ,CAAC;IAED,cAAc,CAAC,KAAY,EAAE,KAAa,EAAE,MAAc,GAAG;QAC3D,MAAM,EAAE,cAAc,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC;QAC3D,IAAI,IAAI,CAAC,UAAU,iBAAyB,EAAE;YAC5C,OAAO,IAAA,yBAAiB,EACtB,cAAc,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE;gBAC7B,YAAY,EAAE,IAAI,CAAC,aAAa;aACjC,CAAC,CACH,CAAC;SACH;QACD,OAAO,CACL,cAAc,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE;YAC7B,YAAY,EAAE,IAAI,CAAC,aAAa;SACjC,CAAC;YACF,YAAY,CAAC,CAAC,CAAC,GAAG,GAAG;YACpB,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,OAAO,EAAE,KAAK,CAAY,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,CACrE,CAAC;IACJ,CAAC;IAED,cAAc,CAAC,KAAY,EAAE,KAAa,EAAE,MAAc,GAAG;QAC3D,MAAM,EAAE,cAAc,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC;QAC3D,IAAI,IAAI,CAAC,UAAU,iBAAyB,EAAE;YAC5C,OAAO,CACL,cAAc,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE;gBAC7B,YAAY,EAAE,IAAI,CAAC,aAAa;aACjC,CAAC;gBACF,YAAY,CAAC,CAAC,CAAC,GAAG,GAAG;gBACpB,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,QAAQ,EAAE,KAAK,CAAY,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,CACtE,CAAC;SACH;QACD,OAAO,IAAA,yBAAiB,EACtB,cAAc,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE;YAC7B,YAAY,EAAE,IAAI,CAAC,aAAa;SACjC,CAAC,CACH,CAAC;IACJ,CAAC;IAED,aAAa;QACX,KAAK,CAAC,aAAa,EAAE,CAAC;QACtB,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,KAAK,UAAU,CAAC;QAC7D,IAAI,IAAI,CAAC,eAAe,EAAE;YACxB,IAAI,IAAI,CAAC,UAAU,iBAAyB,EAAE;gBAC5C,IAAI,CAAC,YAAY,CACf,IAAI,CAAC,eAAe,EACpB;oBACE,OAAO,EAAE,CAAC,KAAY,EAAE,EAAE,CAAC,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC;oBAC1D,CAAC,EAAE,CAAC,KAAY,EAAE,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;oBAC7D,EAAE,EAAE,CAAC,KAAY,EAAE,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;oBACpF,CAAC,EAAE,CAAC,KAAY,EAAE,EAAE;wBAClB,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE;4BACpB,OAAO,CAAC,CAAC;yBACV;wBACD,OAAO,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,WAAW,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBACrE,CAAC;oBACD,EAAE,EAAE,CAAC,KAAY,EAAE,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;iBAC9E,EACD,QAAQ,EACR,0BAAc,CAAC,MAAM,CACtB,CAAC;aACH;iBAAM;gBACL,IAAI,CAAC,YAAY,CACf,IAAI,CAAC,eAAe,EACpB;oBACE,OAAO,EAAE,CAAC,KAAY,EAAE,EAAE,CAAC,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC;oBAC1D,CAAC,EAAE,CAAC,KAAY,EAAE,EAAE;wBAClB,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE;4BACpB,OAAO,CAAC,CAAC;yBACV;wBACD,OAAO,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,WAAW,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBACrE,CAAC;oBACD,EAAE,EAAE,CAAC,KAAY,EAAE,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC7E,CAAC,EAAE,CAAC,KAAY,EAAE,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;oBAC7D,EAAE,EAAE,CAAC,KAAY,EAAE,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;iBACrF,EACD,QAAQ,EACR,0BAAc,CAAC,MAAM,CACtB,CAAC;aACH;SACF;IACH,CAAC;IAES,mBAAmB,CAAC,KAAY;QACxC,IAAI,IAAA,cAAK,EAAC,KAAK,CAAC,SAAS,CAAC,EAAE;YAC1B,OAAO,KAAK,CAAC;SACd;QACD,OAAO,IAAA,4BAAoB,EACzB,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EACvD,IAAI,CAAC,SAAS,iBAAyB,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,CACxG,CAAC;IACJ,CAAC;;AAhVH,0CAiVC;AAhViB,oBAAI,GAAW,qBAAc,CAAC,SAAS,CAAC;AAGxC,oBAAI,GAAkB,8BAAmB,CAAC;AAC1C,4BAAY,GAAG,EAAE,SAAS,EAAE,qBAAc,EAAE,CAAC;AAC7C,sCAAsB,GAAG,sDAAqC,CAAC;AA6U1E,MAAM,uBAAuB,GAAG,GAAG,EAAE;IAC1C,IAAA,uBAAgB,GAAE,CAAC;IACnB,IAAA,uBAAgB,GAAE,CAAC;IACnB,IAAA,sCAA0B,GAAE,CAAC;IAC7B,IAAA,mCAA0B,GAAE,CAAC;IAC7B,IAAA,qCAAyB,GAAE,CAAC;IAC5B,IAAA,uCAA2B,GAAE,CAAC;IAC9B,iBAAO,CAAC,cAAc,CAAC,eAAe,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC;AAChE,CAAC,CAAC;AARW,QAAA,uBAAuB,2BAQlC","file":"waterfall.js","sourcesContent":["/* eslint-disable no-duplicate-imports */\nimport { isNil, precisionSub } from '@visactor/vutils';\nimport { STACK_FIELD_END, STACK_FIELD_START } from '../../constant/data';\nimport { waterfall, waterfallFillTotal } from '../../data/transforms/waterfall';\nimport { BarSeries } from '../bar/bar';\nimport { isValueInScaleDomain, valueInScaleRange } from '../../util/scale';\nimport { registerWaterfallAnimation } from './animation';\nimport { animationConfig, userAnimationConfig } from '../../animation/utils';\nimport type { IWaterfallSeriesSpec, WaterfallAppearPreset } from './interface';\nimport type { SeriesMarkMap } from '../interface';\nimport { SeriesMarkNameEnum, SeriesTypeEnum } from '../interface/type';\nimport { registerFadeInOutAnimation } from '../../animation/config';\nimport type { ITransformOptions, DataView } from '@visactor/vdataset';\nimport { registerDataSetInstanceTransform } from '../../data/register';\nimport { dataViewFromDataView } from '../../data/initialize';\nimport type { IStateAnimateSpec } from '../../animation/spec';\nimport type { IModelEvaluateOption } from '../../model/interface';\nimport type { Datum } from '../../typings';\nimport { Direction } from '../../typings/space';\nimport { registerRuleMark } from '../../mark/rule';\nimport { waterfallSeriesMark } from './constant';\nimport { Group } from '../base/group';\nimport { Factory } from '../../core/factory';\nimport { registerRectMark } from '../../mark/rect';\nimport { getGroupAnimationParams } from '../util/utils';\nimport { WaterfallSeriesSpecTransformer } from './waterfall-transformer';\nimport { registerCartesianLinearAxis, registerCartesianBandAxis } from '../../component/axis/cartesian';\nimport { stackLabel } from '../../component/label/util';\nimport { WaterfallDefaultSeriesField } from '../../constant/waterfall';\nimport { PREFIX } from '../../constant/base';\nimport { AttributeLevel } from '../../constant/attribute';\nimport type { ILabelMark, IRuleMark, ITextMark } from '../../mark/interface';\nimport type { IBarAnimationParams } from '../bar/interface';\nimport type { ILabelInfo } from '../../component/label/interface';\nimport { CompilableData, type ICompilableData } from '../../compile/data';\nimport { waterfall as waterfallTheme } from '../../theme/builtin/common/series/waterfall';\nimport type { IStackCacheNode } from '../../util';\nimport { getRegionStackGroup, stackTotal } from '../../util';\nimport type { ISeriesSpecUpdatePolicy } from '../base/base-series';\n\nexport const DefaultBandWidth = 6; // 默认的bandWidth,避免连续轴没有bandWidth\n\nconst WATERFALL_SERIES_DATA_RELATED_KEYS: Record<'calculationMode', true> = {\n calculationMode: true\n};\n\nexport class WaterfallSeries<T extends IWaterfallSeriesSpec = IWaterfallSeriesSpec> extends BarSeries<any> {\n static readonly type: string = SeriesTypeEnum.waterfall;\n type = SeriesTypeEnum.waterfall;\n\n static readonly mark: SeriesMarkMap = waterfallSeriesMark;\n static readonly builtInTheme = { waterfall: waterfallTheme };\n static readonly transformerConstructor = WaterfallSeriesSpecTransformer as any;\n readonly transformerConstructor = WaterfallSeriesSpecTransformer as any;\n\n protected _totalData?: ICompilableData;\n getTotalData() {\n return this._totalData?.getLatestData();\n }\n\n protected declare _spec: T;\n\n protected _leaderLineMark: IRuleMark = null;\n protected _stackLabelMark: ITextMark = null;\n protected _labelMark: ITextMark = null;\n\n protected _getSpecUpdatePolicy(): ISeriesSpecUpdatePolicy {\n const policy = super._getSpecUpdatePolicy();\n return {\n ...policy,\n dataRelatedKeys: {\n ...policy.dataRelatedKeys,\n ...WATERFALL_SERIES_DATA_RELATED_KEYS\n }\n };\n }\n\n protected initGroups() {\n const groupFields = this.getGroupFields();\n if (groupFields && groupFields.length) {\n this._groups = new Group(groupFields);\n this._data && this._groups.initData(this._data.getDataView(), this._dataSet);\n }\n }\n\n setAttrFromSpec() {\n super.setAttrFromSpec();\n // waterfall data stack data\n this.setValueFieldToStack();\n // 不支持多维度;\n this._fieldX = [this._fieldX[0]];\n this._fieldY = [this._fieldY[0]];\n if (isNil(this._seriesField)) {\n this._seriesField = WaterfallDefaultSeriesField;\n }\n }\n\n getSeriesKeys(): string[] {\n if (this._seriesField === WaterfallDefaultSeriesField) {\n return [\n this._theme.seriesFieldName.increase,\n this._theme.seriesFieldName.decrease,\n this._theme.seriesFieldName.total\n ];\n }\n return super.getSeriesKeys();\n }\n\n protected initData(): void {\n super.initData();\n registerDataSetInstanceTransform(this._dataSet, 'waterfallFillTotal', waterfallFillTotal);\n registerDataSetInstanceTransform(this._dataSet, 'waterfall', waterfall);\n // 如果要在最后添加总计\n if (isNil(this._spec.total) || this._spec.total.type === 'end') {\n this._rawData?.transform(\n {\n type: 'waterfallFillTotal',\n options: () => ({\n indexField: this.getGroupFields()[0],\n valueField: this.getStackValueField(),\n seriesField: this.getSeriesField(),\n seriesFieldName: this._theme.seriesFieldName,\n total: this._spec.total,\n calculationMode: this._spec.calculationMode ?? 'increase',\n stackInverse: this.getRegion().getStackInverse()\n })\n },\n false\n );\n }\n // 总计数据\n const totalData = dataViewFromDataView(this.getViewData(), this._dataSet, {\n name: `${PREFIX}_series_${this.id}_totalData`\n });\n this.getViewData().target.removeListener('change', totalData.reRunAllTransform);\n this._totalData = new CompilableData(this._option, totalData);\n totalData.transform(\n {\n type: 'waterfall',\n options: () => ({\n indexField: this.getGroupFields()[0],\n valueField: this.getStackValueField(),\n seriesField: this.getSeriesField(),\n seriesFieldName: this._theme.seriesFieldName,\n startAs: STACK_FIELD_START,\n endAs: STACK_FIELD_END,\n total: this._spec.total,\n calculationMode: this._spec.calculationMode ?? 'increase',\n groupData: () => this.getGroups().groupData,\n stackInverse: this.getRegion().getStackInverse()\n })\n },\n false\n );\n totalData.target.addListener('change', this._reStackTotal);\n }\n\n protected _reStackTotal = () => {\n const stackData = this.getStackData();\n const stackValueField = this.getStackValueField();\n if (stackData) {\n stackTotal(stackData as IStackCacheNode, stackValueField);\n }\n };\n\n compileData() {\n super.compileData();\n this._totalData?.compile();\n }\n\n initAnimation() {\n // 这个数据在这个时候拿不到,因为组件还没创建结束,统计和筛选也还没添加。\n // 而且这个值理论上是动态的,建议 监听 viewDataStatisticsUpdate 消息动态更新\n const waterfallAnimationParams: IBarAnimationParams = {\n yField: this.direction === 'horizontal' ? this._fieldY[0] : this.getStackValueField(),\n xField: this.direction === 'horizontal' ? this.getStackValueField() : this._fieldX[0],\n direction: this.direction,\n growFrom: () =>\n this.direction === 'horizontal'\n ? this._xAxisHelper?.getScale(0).scale(0)\n : this._yAxisHelper?.getScale(0).scale(0)\n };\n const appearPreset = (this._spec?.animationAppear as IStateAnimateSpec<WaterfallAppearPreset>)?.preset;\n const animationParams = getGroupAnimationParams(this);\n\n this._barMark.setAnimationConfig(\n animationConfig(\n Factory.getAnimationInKey('waterfall')?.(waterfallAnimationParams, appearPreset),\n userAnimationConfig(SeriesMarkNameEnum.bar, this._spec, this._markAttributeContext),\n animationParams\n )\n );\n\n if (this._leaderLineMark) {\n this._leaderLineMark.setAnimationConfig(\n animationConfig(\n Factory.getAnimationInKey('fadeInOut')?.(),\n userAnimationConfig(SeriesMarkNameEnum.leaderLine, this._spec, this._markAttributeContext)\n )\n );\n }\n }\n\n viewDataUpdate(d: DataView): void {\n this._totalData.getDataView().reRunAllTransform();\n this._totalData.updateData();\n super.viewDataUpdate(d);\n }\n /**\n * data\n */\n // waterfall 不支持任何的 data filter\n addViewDataFilter(_option: ITransformOptions) {\n // do nothing\n }\n reFilterViewData() {\n // do nothing\n }\n\n onEvaluateEnd(ctx: IModelEvaluateOption): void {\n super.onEvaluateEnd(ctx);\n this._totalData.updateData();\n }\n\n initMark(): void {\n super.initMark();\n const leaderLine = this._createMark(WaterfallSeries.mark.leaderLine, {\n key: 'index'\n }) as IRuleMark;\n if (leaderLine) {\n this._leaderLineMark = leaderLine;\n leaderLine.setData(this._totalData);\n }\n }\n\n initLabelMarkStyle(labelMark: ILabelMark): void {\n if (!labelMark) {\n return;\n }\n\n if (!this._labelMark && this._spec.label?.visible) {\n super.initLabelMarkStyle(labelMark);\n this._labelMark = labelMark;\n return;\n }\n }\n\n initStackLabelMarkStyle(labelMark: ILabelMark): void {\n if (!labelMark) {\n return;\n }\n this._stackLabelMark = labelMark;\n // 瀑布图标签 encode 在自定义布局中计算\n labelMark.skipEncode = true;\n labelMark.setRule('stackLabel');\n labelMark.setData(this._totalData);\n\n this.setMarkStyle(labelMark, {\n text: (datum: Datum) => {\n return this._spec.stackLabel?.valueType === 'absolute' ? datum.end : precisionSub(datum.end, datum.start);\n }\n });\n }\n\n // 样式设置在这里的原因是执行顺序的问题\n // 首先执行这里的 mark.style\n // 然后执行用户的 formatMethod\n // 最后执行下方的 getTotalLabelComponentStyle 。如果在下方实现值函数,就会导致用户format无法生效\n initTotalLabelMarkStyle(labelMark: ILabelMark) {\n this.setMarkStyle(labelMark, {\n text: (datum: Datum) => {\n if (!('end' in datum)) {\n return this.direction === Direction.horizontal ? datum[this._fieldX[0]] : datum[this._fieldY[0]];\n }\n return this._spec.totalLabel?.valueType === 'absolute' ? datum.end : precisionSub(datum.end, datum.start);\n }\n });\n }\n\n getTotalLabelComponentStyle(info: Pick<ILabelInfo, 'baseMark' | 'labelMark'>) {\n return stackLabel(\n {\n ...info,\n series: this,\n // @ts-ignore\n labelSpec: this._spec.totalLabel\n },\n d => {\n const index = this.direction === Direction.vertical ? d[this._fieldX[0]] : d[this._fieldY[0]];\n return this._totalData.getLatestData().find((_d: Datum) => _d.index === index);\n }\n );\n }\n\n totalPositionX(datum: Datum, field: string, pos: number = 0.5) {\n const { dataToPosition, getBandwidth } = this._xAxisHelper;\n if (this._direction === Direction.horizontal) {\n return valueInScaleRange(\n dataToPosition([datum[field]], {\n bandPosition: this._bandPosition\n })\n );\n }\n return (\n dataToPosition([datum[field]], {\n bandPosition: this._bandPosition\n }) +\n getBandwidth(0) * 0.5 -\n (this._barMark.getAttribute('width', datum) as number) * (0.5 - pos)\n );\n }\n\n totalPositionY(datum: Datum, field: string, pos: number = 0.5) {\n const { dataToPosition, getBandwidth } = this._yAxisHelper;\n if (this._direction === Direction.horizontal) {\n return (\n dataToPosition([datum[field]], {\n bandPosition: this._bandPosition\n }) +\n getBandwidth(0) * 0.5 -\n (this._barMark.getAttribute('height', datum) as number) * (0.5 - pos)\n );\n }\n return valueInScaleRange(\n dataToPosition([datum[field]], {\n bandPosition: this._bandPosition\n })\n );\n }\n\n initMarkStyle(): void {\n super.initMarkStyle();\n const isDecrease = this._spec.calculationMode === 'decrease';\n if (this._leaderLineMark) {\n if (this._direction === Direction.horizontal) {\n this.setMarkStyle(\n this._leaderLineMark,\n {\n visible: (datum: Datum) => this.isVisibleLeaderLine(datum),\n x: (datum: Datum) => this.totalPositionX(datum, 'lastEnd', 0),\n x1: (datum: Datum) => this.totalPositionX(datum, datum.isTotal ? 'end' : 'start', 0),\n y: (datum: Datum) => {\n if (!datum.lastIndex) {\n return 0;\n }\n return this.totalPositionY(datum, 'lastIndex', isDecrease ? 0 : 1);\n },\n y1: (datum: Datum) => this.totalPositionY(datum, 'index', isDecrease ? 1 : 0)\n },\n 'normal',\n AttributeLevel.Series\n );\n } else {\n this.setMarkStyle(\n this._leaderLineMark,\n {\n visible: (datum: Datum) => this.isVisibleLeaderLine(datum),\n x: (datum: Datum) => {\n if (!datum.lastIndex) {\n return 0;\n }\n return this.totalPositionX(datum, 'lastIndex', isDecrease ? 0 : 1);\n },\n x1: (datum: Datum) => this.totalPositionX(datum, 'index', isDecrease ? 1 : 0),\n y: (datum: Datum) => this.totalPositionY(datum, 'lastEnd', 0),\n y1: (datum: Datum) => this.totalPositionY(datum, datum.isTotal ? 'end' : 'start', 0)\n },\n 'normal',\n AttributeLevel.Series\n );\n }\n }\n }\n\n protected isVisibleLeaderLine(datum: Datum): boolean {\n if (isNil(datum.lastIndex)) {\n return false;\n }\n return isValueInScaleDomain(\n [datum.lastEnd, datum[datum.isTotal ? 'end' : 'start']],\n this.direction === Direction.horizontal ? this._xAxisHelper.getScale(0) : this._yAxisHelper.getScale(0)\n );\n }\n}\n\nexport const registerWaterfallSeries = () => {\n registerRuleMark();\n registerRectMark();\n registerWaterfallAnimation();\n registerFadeInOutAnimation();\n registerCartesianBandAxis();\n registerCartesianLinearAxis();\n Factory.registerSeries(WaterfallSeries.type, WaterfallSeries);\n};\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/series/waterfall/waterfall.ts"],"names":[],"mappings":"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","file":"waterfall.js","sourcesContent":["/* eslint-disable no-duplicate-imports */\nimport { isNil, precisionSub } from '@visactor/vutils';\nimport { STACK_FIELD_END, STACK_FIELD_START } from '../../constant/data';\nimport { waterfall, waterfallFillTotal } from '../../data/transforms/waterfall';\nimport { BarSeries } from '../bar/bar';\nimport { isValueInScaleDomain, valueInScaleRange } from '../../util/scale';\nimport { registerWaterfallAnimation } from './animation';\nimport { animationConfig, userAnimationConfig } from '../../animation/utils';\nimport type { IWaterfallSeriesSpec, WaterfallAppearPreset } from './interface';\nimport type { SeriesMarkMap } from '../interface';\nimport { SeriesMarkNameEnum, SeriesTypeEnum } from '../interface/type';\nimport { registerFadeInOutAnimation } from '../../animation/config';\nimport type { ITransformOptions, DataView } from '@visactor/vdataset';\nimport { registerDataSetInstanceTransform } from '../../data/register';\nimport { dataViewFromDataView } from '../../data/initialize';\nimport type { IStateAnimateSpec } from '../../animation/spec';\nimport type { IModelEvaluateOption } from '../../model/interface';\nimport type { Datum } from '../../typings';\nimport { Direction } from '../../typings/space';\nimport { registerRuleMark } from '../../mark/rule';\nimport { waterfallSeriesMark } from './constant';\nimport { Group } from '../base/group';\nimport { Factory } from '../../core/factory';\nimport { registerRectMark } from '../../mark/rect';\nimport { getGroupAnimationParams } from '../util/utils';\nimport { WaterfallSeriesSpecTransformer } from './waterfall-transformer';\nimport { registerCartesianLinearAxis, registerCartesianBandAxis } from '../../component/axis/cartesian';\nimport { stackLabel } from '../../component/label/util';\nimport { WaterfallDefaultSeriesField } from '../../constant/waterfall';\nimport { PREFIX } from '../../constant/base';\nimport { AttributeLevel } from '../../constant/attribute';\nimport type { ILabelMark, IRuleMark, ITextMark } from '../../mark/interface';\nimport type { IBarAnimationParams } from '../bar/interface';\nimport type { ILabelInfo } from '../../component/label/interface';\nimport { CompilableData, type ICompilableData } from '../../compile/data';\nimport { waterfall as waterfallTheme } from '../../theme/builtin/common/series/waterfall';\nimport type { IStackCacheNode } from '../../util';\nimport { getRegionStackGroup, stackTotal } from '../../util';\nimport type { ISeriesSpecUpdatePolicy } from '../base/base-series';\n\nexport const DefaultBandWidth = 6; // 默认的bandWidth,避免连续轴没有bandWidth\n\nconst WATERFALL_SERIES_DATA_RELATED_KEYS: Record<'calculationMode', true> = {\n calculationMode: true\n};\n\nexport class WaterfallSeries<T extends IWaterfallSeriesSpec = IWaterfallSeriesSpec> extends BarSeries<any> {\n static readonly type: string = SeriesTypeEnum.waterfall;\n type = SeriesTypeEnum.waterfall;\n\n static readonly mark: SeriesMarkMap = waterfallSeriesMark;\n static readonly builtInTheme = { waterfall: waterfallTheme };\n static readonly transformerConstructor = WaterfallSeriesSpecTransformer as any;\n readonly transformerConstructor = WaterfallSeriesSpecTransformer as any;\n\n protected _totalData?: ICompilableData;\n getTotalData() {\n return this._totalData?.getLatestData();\n }\n\n declare protected _spec: T;\n\n protected _leaderLineMark: IRuleMark = null;\n protected _stackLabelMark: ITextMark = null;\n protected _labelMark: ITextMark = null;\n\n protected _getSpecUpdatePolicy(): ISeriesSpecUpdatePolicy {\n const policy = super._getSpecUpdatePolicy();\n return {\n ...policy,\n dataRelatedKeys: {\n ...policy.dataRelatedKeys,\n ...WATERFALL_SERIES_DATA_RELATED_KEYS\n }\n };\n }\n\n protected initGroups() {\n const groupFields = this.getGroupFields();\n if (groupFields && groupFields.length) {\n this._groups = new Group(groupFields);\n this._data && this._groups.initData(this._data.getDataView(), this._dataSet);\n }\n }\n\n setAttrFromSpec() {\n super.setAttrFromSpec();\n // waterfall data stack data\n this.setValueFieldToStack();\n // 不支持多维度;\n this._fieldX = [this._fieldX[0]];\n this._fieldY = [this._fieldY[0]];\n if (isNil(this._seriesField)) {\n this._seriesField = WaterfallDefaultSeriesField;\n }\n }\n\n getSeriesKeys(): string[] {\n if (this._seriesField === WaterfallDefaultSeriesField) {\n return [\n this._theme.seriesFieldName.increase,\n this._theme.seriesFieldName.decrease,\n this._theme.seriesFieldName.total\n ];\n }\n return super.getSeriesKeys();\n }\n\n protected initData(): void {\n super.initData();\n registerDataSetInstanceTransform(this._dataSet, 'waterfallFillTotal', waterfallFillTotal);\n registerDataSetInstanceTransform(this._dataSet, 'waterfall', waterfall);\n // 如果要在最后添加总计\n if (isNil(this._spec.total) || this._spec.total.type === 'end') {\n this._rawData?.transform(\n {\n type: 'waterfallFillTotal',\n options: () => ({\n indexField: this.getGroupFields()[0],\n valueField: this.getStackValueField(),\n seriesField: this.getSeriesField(),\n seriesFieldName: this._theme.seriesFieldName,\n total: this._spec.total,\n calculationMode: this._spec.calculationMode ?? 'increase',\n stackInverse: this.getRegion().getStackInverse()\n })\n },\n false\n );\n }\n // 总计数据\n const totalData = dataViewFromDataView(this.getViewData(), this._dataSet, {\n name: `${PREFIX}_series_${this.id}_totalData`\n });\n this.getViewData().target.removeListener('change', totalData.reRunAllTransform);\n this._totalData = new CompilableData(this._option, totalData);\n totalData.transform(\n {\n type: 'waterfall',\n options: () => ({\n indexField: this.getGroupFields()[0],\n valueField: this.getStackValueField(),\n seriesField: this.getSeriesField(),\n seriesFieldName: this._theme.seriesFieldName,\n startAs: STACK_FIELD_START,\n endAs: STACK_FIELD_END,\n total: this._spec.total,\n calculationMode: this._spec.calculationMode ?? 'increase',\n groupData: () => this.getGroups().groupData,\n stackInverse: this.getRegion().getStackInverse()\n })\n },\n false\n );\n totalData.target.addListener('change', this._reStackTotal);\n }\n\n protected _reStackTotal = () => {\n const stackData = this.getStackData();\n const stackValueField = this.getStackValueField();\n if (stackData) {\n stackTotal(stackData as IStackCacheNode, stackValueField);\n }\n };\n\n compileData() {\n super.compileData();\n this._totalData?.compile();\n }\n\n initAnimation() {\n // 这个数据在这个时候拿不到,因为组件还没创建结束,统计和筛选也还没添加。\n // 而且这个值理论上是动态的,建议 监听 viewDataStatisticsUpdate 消息动态更新\n const waterfallAnimationParams: IBarAnimationParams = {\n yField: this.direction === 'horizontal' ? this._fieldY[0] : this.getStackValueField(),\n xField: this.direction === 'horizontal' ? this.getStackValueField() : this._fieldX[0],\n direction: this.direction,\n growFrom: () =>\n this.direction === 'horizontal'\n ? this._xAxisHelper?.getScale(0).scale(0)\n : this._yAxisHelper?.getScale(0).scale(0)\n };\n const appearPreset = (this._spec?.animationAppear as IStateAnimateSpec<WaterfallAppearPreset>)?.preset;\n const animationParams = getGroupAnimationParams(this);\n\n this._barMark.setAnimationConfig(\n animationConfig(\n Factory.getAnimationInKey('waterfall')?.(waterfallAnimationParams, appearPreset),\n userAnimationConfig(SeriesMarkNameEnum.bar, this._spec, this._markAttributeContext),\n animationParams\n )\n );\n\n if (this._leaderLineMark) {\n this._leaderLineMark.setAnimationConfig(\n animationConfig(\n Factory.getAnimationInKey('fadeInOut')?.(),\n userAnimationConfig(SeriesMarkNameEnum.leaderLine, this._spec, this._markAttributeContext)\n )\n );\n }\n }\n\n viewDataUpdate(d: DataView): void {\n this._totalData.getDataView().reRunAllTransform();\n this._totalData.updateData();\n super.viewDataUpdate(d);\n }\n /**\n * data\n */\n // waterfall 不支持任何的 data filter\n addViewDataFilter(_option: ITransformOptions) {\n // do nothing\n }\n reFilterViewData() {\n // do nothing\n }\n\n onEvaluateEnd(ctx: IModelEvaluateOption): void {\n super.onEvaluateEnd(ctx);\n this._totalData.updateData();\n }\n\n initMark(): void {\n super.initMark();\n const leaderLine = this._createMark(WaterfallSeries.mark.leaderLine, {\n key: 'index'\n }) as IRuleMark;\n if (leaderLine) {\n this._leaderLineMark = leaderLine;\n leaderLine.setData(this._totalData);\n }\n }\n\n initLabelMarkStyle(labelMark: ILabelMark): void {\n if (!labelMark) {\n return;\n }\n\n if (!this._labelMark && this._spec.label?.visible) {\n super.initLabelMarkStyle(labelMark);\n this._labelMark = labelMark;\n return;\n }\n }\n\n initStackLabelMarkStyle(labelMark: ILabelMark): void {\n if (!labelMark) {\n return;\n }\n this._stackLabelMark = labelMark;\n // 瀑布图标签 encode 在自定义布局中计算\n labelMark.skipEncode = true;\n labelMark.setRule('stackLabel');\n labelMark.setData(this._totalData);\n\n this.setMarkStyle(labelMark, {\n text: (datum: Datum) => {\n return this._spec.stackLabel?.valueType === 'absolute' ? datum.end : precisionSub(datum.end, datum.start);\n }\n });\n }\n\n // 样式设置在这里的原因是执行顺序的问题\n // 首先执行这里的 mark.style\n // 然后执行用户的 formatMethod\n // 最后执行下方的 getTotalLabelComponentStyle 。如果在下方实现值函数,就会导致用户format无法生效\n initTotalLabelMarkStyle(labelMark: ILabelMark) {\n this.setMarkStyle(labelMark, {\n text: (datum: Datum) => {\n if (!('end' in datum)) {\n return this.direction === Direction.horizontal ? datum[this._fieldX[0]] : datum[this._fieldY[0]];\n }\n return this._spec.totalLabel?.valueType === 'absolute' ? datum.end : precisionSub(datum.end, datum.start);\n }\n });\n }\n\n getTotalLabelComponentStyle(info: Pick<ILabelInfo, 'baseMark' | 'labelMark'>) {\n return stackLabel(\n {\n ...info,\n series: this,\n // @ts-ignore\n labelSpec: this._spec.totalLabel\n },\n d => {\n const index = this.direction === Direction.vertical ? d[this._fieldX[0]] : d[this._fieldY[0]];\n return this._totalData.getLatestData().find((_d: Datum) => _d.index === index);\n }\n );\n }\n\n totalPositionX(datum: Datum, field: string, pos: number = 0.5) {\n const { dataToPosition, getBandwidth } = this._xAxisHelper;\n if (this._direction === Direction.horizontal) {\n return valueInScaleRange(\n dataToPosition([datum[field]], {\n bandPosition: this._bandPosition\n })\n );\n }\n return (\n dataToPosition([datum[field]], {\n bandPosition: this._bandPosition\n }) +\n getBandwidth(0) * 0.5 -\n (this._barMark.getAttribute('width', datum) as number) * (0.5 - pos)\n );\n }\n\n totalPositionY(datum: Datum, field: string, pos: number = 0.5) {\n const { dataToPosition, getBandwidth } = this._yAxisHelper;\n if (this._direction === Direction.horizontal) {\n return (\n dataToPosition([datum[field]], {\n bandPosition: this._bandPosition\n }) +\n getBandwidth(0) * 0.5 -\n (this._barMark.getAttribute('height', datum) as number) * (0.5 - pos)\n );\n }\n return valueInScaleRange(\n dataToPosition([datum[field]], {\n bandPosition: this._bandPosition\n })\n );\n }\n\n protected _isCategoryAxisInverse() {\n return this._direction === Direction.horizontal\n ? this._yAxisHelper?.isInverse?.()\n : this._xAxisHelper?.isInverse?.();\n }\n\n protected _getLeaderLineCategoryPos(isStart: boolean, isDecrease: boolean) {\n const inverse = !!this._isCategoryAxisInverse();\n const normalPos = isStart ? (isDecrease ? 0 : 1) : isDecrease ? 1 : 0;\n return inverse ? 1 - normalPos : normalPos;\n }\n\n initMarkStyle(): void {\n super.initMarkStyle();\n const isDecrease = this._spec.calculationMode === 'decrease';\n if (this._leaderLineMark) {\n if (this._direction === Direction.horizontal) {\n this.setMarkStyle(\n this._leaderLineMark,\n {\n visible: (datum: Datum) => this.isVisibleLeaderLine(datum),\n x: (datum: Datum) => this.totalPositionX(datum, 'lastEnd', 0),\n x1: (datum: Datum) => this.totalPositionX(datum, datum.isTotal ? 'end' : 'start', 0),\n y: (datum: Datum) => {\n if (!datum.lastIndex) {\n return 0;\n }\n return this.totalPositionY(datum, 'lastIndex', this._getLeaderLineCategoryPos(true, isDecrease));\n },\n y1: (datum: Datum) => this.totalPositionY(datum, 'index', this._getLeaderLineCategoryPos(false, isDecrease))\n },\n 'normal',\n AttributeLevel.Series\n );\n } else {\n this.setMarkStyle(\n this._leaderLineMark,\n {\n visible: (datum: Datum) => this.isVisibleLeaderLine(datum),\n x: (datum: Datum) => {\n if (!datum.lastIndex) {\n return 0;\n }\n return this.totalPositionX(datum, 'lastIndex', this._getLeaderLineCategoryPos(true, isDecrease));\n },\n x1: (datum: Datum) =>\n this.totalPositionX(datum, 'index', this._getLeaderLineCategoryPos(false, isDecrease)),\n y: (datum: Datum) => this.totalPositionY(datum, 'lastEnd', 0),\n y1: (datum: Datum) => this.totalPositionY(datum, datum.isTotal ? 'end' : 'start', 0)\n },\n 'normal',\n AttributeLevel.Series\n );\n }\n }\n }\n\n protected isVisibleLeaderLine(datum: Datum): boolean {\n if (isNil(datum.lastIndex)) {\n return false;\n }\n return isValueInScaleDomain(\n [datum.lastEnd, datum[datum.isTotal ? 'end' : 'start']],\n this.direction === Direction.horizontal ? this._xAxisHelper.getScale(0) : this._yAxisHelper.getScale(0)\n );\n }\n}\n\nexport const registerWaterfallSeries = () => {\n registerRuleMark();\n registerRectMark();\n registerWaterfallAnimation();\n registerFadeInOutAnimation();\n registerCartesianBandAxis();\n registerCartesianLinearAxis();\n Factory.registerSeries(WaterfallSeries.type, WaterfallSeries);\n};\n"]}
|
package/esm/chart/index.js
CHANGED
|
@@ -69,4 +69,4 @@ export { AreaChart, BarChart, BarChartSpecTransformer, BoxPlotChart, CirclePacki
|
|
|
69
69
|
export { registerLineChart, registerAreaChart, registerBarChart, registerBoxplotChart, registerCirclePackingChart, registerCircularProgressChart, registerCommonChart, registerFunnelChart, registerGaugeChart, registerHeatmapChart, registerHistogramChart, registerLinearProgressChart, registerMapChart, registerPieChart, registerRadarChart, registerRangeAreaChart, registerRangeColumnChart, registerRoseChart, registerSankeyChart, registerScatterChart, registerSequenceChart, registerSunburstChart, registerTreemapChart, registerWaterfallChart, registerWordCloudChart, registerCorrelationChart, registerLiquidChart, registerWordCloudShapeChart, registerVennChart, registerMosaicChart };
|
|
70
70
|
|
|
71
71
|
export { setDefaultCrosshairForCartesianChart } from "./util";
|
|
72
|
-
//# sourceMappingURL=index.js.map
|
|
72
|
+
//# sourceMappingURL=index.js.map
|
package/esm/chart/stack.js
CHANGED
package/esm/chart/util.js
CHANGED
package/esm/compile/compiler.js
CHANGED
|
@@ -22,7 +22,7 @@ import { AnimationStateEnum } from "../animation/interface";
|
|
|
22
22
|
|
|
23
23
|
import { BuiltIn_DISAPPEAR_ANIMATE_NAME } from "../constant/animate";
|
|
24
24
|
|
|
25
|
-
import { createStageFromApp, resolveVRenderApp } from "./stage-app";
|
|
25
|
+
import { createStageFromApp, getVRenderAppEnvParams, resolveVRenderApp } from "./stage-app";
|
|
26
26
|
|
|
27
27
|
export class Compiler {
|
|
28
28
|
get stateAnimationConfig() {
|
|
@@ -74,12 +74,17 @@ export class Compiler {
|
|
|
74
74
|
var _a, _b, _c, _d;
|
|
75
75
|
if (this._released) return;
|
|
76
76
|
if (this.isInited = !0, this._stage) return;
|
|
77
|
-
const {autoRefreshDpr: autoRefreshDpr, dpr: dpr, mode: mode, modeParams: modeParams, gestureConfig: gestureConfig, interactive: interactive, clickInterval: clickInterval, autoPreventDefault: autoPreventDefault, background: background} = this._option;
|
|
78
|
-
vglobal.setEnv(toRenderMode(mode), null !=
|
|
77
|
+
const {autoRefreshDpr: autoRefreshDpr, dpr: dpr, mode: mode, modeParams: modeParams, gestureConfig: gestureConfig, interactive: interactive, clickInterval: clickInterval, autoPreventDefault: autoPreventDefault, background: background} = this._option, appEnvParams = getVRenderAppEnvParams(mode, modeParams);
|
|
78
|
+
vglobal.setEnv(toRenderMode(mode), null != appEnvParams ? appEnvParams : {});
|
|
79
79
|
const externalStage = this._option.stage;
|
|
80
80
|
if (this._isExternalStage = !!externalStage, this._releaseVRenderAppRef = void 0,
|
|
81
81
|
this._stage = externalStage, !this._stage) {
|
|
82
|
-
const resolvedApp = resolveVRenderApp(
|
|
82
|
+
const resolvedApp = resolveVRenderApp({
|
|
83
|
+
app: this._option.app,
|
|
84
|
+
mode: mode,
|
|
85
|
+
modeParams: modeParams,
|
|
86
|
+
sharedVRenderApp: this._option.sharedVRenderApp
|
|
87
|
+
});
|
|
83
88
|
this._releaseVRenderAppRef = resolvedApp.releaseAppRef;
|
|
84
89
|
try {
|
|
85
90
|
this._stage = createStageFromApp(resolvedApp.app, Object.assign({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/compile/compiler.ts"],"names":[],"mappings":"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","file":"compiler.js","sourcesContent":["import { ChartEvent, Event_Source_Type } from './../constant/event';\nimport type { CompilerListenerParameters, ICompiler, IRenderContainer, IRenderOption } from './interface';\n// eslint-disable-next-line no-duplicate-imports\nimport { LayoutState } from './interface';\nimport { isMobileLikeMode, isTrueBrowser } from '../util/env';\nimport { isClass, isString } from '../util/type';\nimport type { IBoundsLike } from '@visactor/vutils';\n// eslint-disable-next-line no-duplicate-imports\nimport { array, isArray, isObject, isValid } from '@visactor/vutils';\nimport type { EventSourceType } from '../event/interface';\nimport type { IChart } from '../chart/interface';\nimport { createGroup, vglobal, waitForAllSubLayers } from '@visactor/vrender-core';\nimport type { IColor, IEventTarget, IGroup, IStage } from '@visactor/vrender-core';\nimport type { IMorphConfig } from '../animation/spec';\nimport type { IVChart, IVChartRenderOption } from '../core/interface';\nimport type { AnimationStateValues } from '../mark/interface';\nimport { type IGraphicContext, type IMark, type IMarkGraphic } from '../mark/interface';\nimport { Factory } from '../core/factory';\nimport type { Gesture } from '@visactor/vrender-kits';\nimport { findMarkGraphic, getDatumOfGraphic } from '../util/mark';\nimport { diffMarks, findSimpleMarks, toRenderMode, traverseGroupMark } from './util';\nimport { log } from '../util/debug';\nimport type { MarkAnimationSpec, TypeAnimationConfig } from '../animation/interface';\nimport { AnimationStateEnum } from '../animation/interface';\nimport { BuiltIn_DISAPPEAR_ANIMATE_NAME } from '../constant/animate';\nimport { createStageFromApp, resolveVRenderApp } from './stage-app';\n\ntype EventListener = {\n type: string;\n callback: (...args: any[]) => void;\n};\n\nexport class Compiler implements ICompiler {\n private _count: number = 0;\n /**\n * 更新后缓存的mark\n */\n private _cachedMarks: IMark[];\n\n private _progressiveMarks?: IMark[];\n\n /**\n * 增量渲染相关的raf id\n */\n private _progressiveRafId?: number;\n\n protected _rootMarks: IMark[] = [];\n\n protected _stage: IStage;\n\n private _isExternalStage: boolean = false;\n\n private _releaseVRenderAppRef?: () => void;\n\n protected _stateAnimationConfig: Partial<MarkAnimationSpec>;\n get stateAnimationConfig() {\n return this._stateAnimationConfig;\n }\n\n protected _rootGroup: IGroup;\n\n getRootGroup() {\n return this._rootGroup;\n }\n\n protected _viewListeners: Map<(...args: any[]) => any, EventListener> = new Map();\n protected _windowListeners: Map<(...args: any[]) => any, EventListener> = new Map();\n protected _canvasListeners: Map<(...args: any[]) => any, EventListener> = new Map();\n\n isInited: boolean = false;\n\n private _nextRafId: number;\n\n protected _width: number;\n protected _height: number;\n\n protected _container: IRenderContainer;\n protected _option: IRenderOption;\n getOption() {\n return this._option;\n }\n // 已释放标记\n private _released: boolean = false;\n\n /** 布局阶段 */\n private _layoutState?: LayoutState;\n\n private _compileChart: IChart = null;\n\n constructor(container: IRenderContainer, option: IRenderOption) {\n this._container = container;\n this._option = option;\n }\n\n getChart() {\n return this._compileChart;\n }\n /**\n * 获取 canvas dom\n * @returns HTMLCanvasElement | undefined\n */\n getCanvas(): HTMLCanvasElement | undefined {\n return this._stage?.window.getNativeHandler().nativeCanvas;\n }\n\n _gestureController?: Gesture;\n /**\n * 获取 渲染引擎\n */\n getStage(): IStage | undefined {\n return this._stage;\n }\n\n initView() {\n if (this._released) {\n return;\n }\n this.isInited = true;\n if (this._stage) {\n return;\n }\n\n const {\n autoRefreshDpr,\n dpr,\n mode,\n modeParams,\n gestureConfig,\n interactive,\n clickInterval,\n autoPreventDefault,\n background\n } = this._option;\n vglobal.setEnv(toRenderMode(mode), modeParams ?? {});\n const externalStage = this._option.stage;\n this._isExternalStage = !!externalStage;\n this._releaseVRenderAppRef = undefined;\n this._stage = externalStage;\n\n if (!this._stage) {\n const resolvedApp = resolveVRenderApp(this._option.app, mode);\n this._releaseVRenderAppRef = resolvedApp.releaseAppRef;\n\n try {\n this._stage = createStageFromApp(resolvedApp.app, {\n background,\n width: this._width,\n height: this._height,\n container: this._container.dom ?? null,\n canvas: this._container.canvas ?? null,\n dpr,\n viewBox: this._option.viewBox,\n canvasControled: this._option.canvasControled,\n beforeRender: (stage: IStage) => {\n this._compileChart?.onBeforeRender();\n this._option.beforeRender?.(stage);\n },\n afterRender: this._option.afterRender,\n disableDirtyBounds: true,\n autoRender: true,\n ticker: this._option.ticker,\n pluginList: this._option.pluginList,\n enableHtmlAttribute: this._option.enableHtmlAttribute,\n optimize: this._option.optimize,\n supportsTouchEvents: this._option.supportsTouchEvents,\n supportsPointerEvents: this._option.supportsPointerEvents,\n event: {\n clickInterval: clickInterval,\n autoPreventDefault: autoPreventDefault\n },\n ReactDOM: this._option.ReactDOM,\n autoRefresh: isValid(autoRefreshDpr) ? autoRefreshDpr : !isValid(dpr),\n ...(this._option.renderHooks ?? {})\n }) as unknown as IStage;\n } catch (error) {\n this._releaseVRenderAppRef?.();\n this._releaseVRenderAppRef = undefined;\n throw error;\n }\n }\n\n this._stage.enableIncrementalAutoRender();\n\n // 之前vgrammar 设置了一些默认配置\n (this._stage as any).setTheme({\n symbol: {\n shape: 'circle',\n size: 8\n },\n text: {\n fontSize: 14,\n fill: '#000000'\n }\n });\n\n const group = createGroup({\n x: 0,\n y: 0,\n width: this._width,\n height: this._height\n });\n group.name = 'root';\n this._stage.defaultLayer.appendChild(group);\n this._rootGroup = group;\n const GestureController =\n (isValid(gestureConfig) ? (gestureConfig as any) : isMobileLikeMode(mode)) &&\n interactive !== false &&\n Factory.getStageEventPlugin('gesture');\n\n if (GestureController) {\n this._gestureController = new GestureController(\n this._stage as unknown as IEventTarget,\n isObject(gestureConfig) ? gestureConfig : {}\n ) as Gesture;\n }\n\n this._setCanvasStyle();\n\n // emit afterRender event\n this.getStage().hooks.afterRender.tap('chart-event', this.handleStageRender);\n\n if (interactive !== false) {\n // 将 view 实例化之前监听的事件挂载到 view 上\n this._viewListeners.forEach(listener => {\n //this._view?.addEventListener(listener.type, listener.callback);\n });\n }\n }\n\n getLayoutState() {\n return this._layoutState;\n }\n\n updateLayoutTag() {\n this._layoutState = LayoutState.before;\n }\n\n protected handleLayoutEnd = () => {\n this._compileChart?.getEvent()?.emit(ChartEvent.afterMarkLayoutEnd, { chart: this._compileChart });\n };\n\n protected handleStageRender = () => {\n this._compileChart?.getEvent()?.emit(ChartEvent.afterRender, { chart: this._compileChart });\n };\n\n private _isGeoRegionRoamDragEnabled() {\n const chartSpec = this._compileChart?.getSpec?.();\n const regions = chartSpec?.region;\n if (!isArray(regions)) {\n return false;\n }\n\n return regions.some((region: any) => {\n if (region?.coordinate !== 'geo' || !region.roam) {\n return false;\n }\n\n if (region.roam === true) {\n return true;\n }\n\n return region.roam.drag ?? true;\n });\n }\n\n private _shouldDisableCanvasTouchAction() {\n if (!isTrueBrowser(this._option.mode)) {\n return false;\n }\n\n const supportsTouchEvents = isValid(this._option.supportsTouchEvents)\n ? this._option.supportsTouchEvents\n : vglobal.supportsTouchEvents;\n\n return supportsTouchEvents === false && this._isGeoRegionRoamDragEnabled();\n }\n\n private _setCanvasStyle() {\n if (!this._stage) {\n return;\n }\n if (this._container.dom && !isString(this._container.dom)) {\n this._container.dom.style.display = 'block';\n this._container.dom.style.position = 'relative';\n const canvas = this.getCanvas();\n if (canvas) {\n canvas.style.display = 'block';\n canvas.style.touchAction = this._shouldDisableCanvasTouchAction() ? 'none' : '';\n }\n }\n }\n\n compile(ctx: { chart: IChart; vChart: IVChart }, option?: IVChartRenderOption) {\n if (this._released) {\n return;\n }\n const { chart } = ctx;\n this._compileChart = chart;\n this.initView();\n if (!this._stage) {\n return;\n }\n\n if (option?.actionSource !== 'render' && this._cachedMarks) {\n this.reuseOrMorphing(option.morphConfig);\n // 清除缓存\n this._cachedMarks = null;\n }\n\n chart.compile();\n this._setCanvasStyle();\n chart.afterCompile();\n }\n protected clearNextRender() {\n if (this._nextRafId) {\n vglobal.getSpecifiedCancelAnimationFrame(10)(this._nextRafId);\n this._nextRafId = null;\n\n return true;\n }\n\n return false;\n }\n\n clear(ctx: { chart: IChart; vChart: IVChart }) {\n const { chart } = ctx;\n\n this.clearNextRender();\n chart.clear();\n }\n\n renderNextTick(morphConfig?: IMorphConfig): void {\n if (this._released) {\n return;\n }\n if (this._nextRafId) {\n this.clearNextRender();\n }\n\n this._nextRafId = vglobal.getSpecifiedRequestAnimationFrame(10)(() => {\n this._nextRafId = null;\n this.render(morphConfig);\n }) as unknown as number;\n }\n\n protected _commitedAll() {\n return this._rootMarks.some(mark => {\n return traverseGroupMark(mark, m => m.commit());\n });\n }\n\n protected _hasCommitedMark() {\n return this._rootMarks.some(mark => {\n return traverseGroupMark(mark, m => m.isCommited(), null, null, true);\n });\n }\n\n private _handleAfterNextRender = () => {\n if (this._stage && !this._option.disableDirtyBounds) {\n this._stage.enableDirtyBounds();\n }\n\n if (this._compileChart) {\n this._compileChart.getEvent()?.emit(ChartEvent.renderFinished, {\n chart: this._compileChart,\n vchart: this._compileChart.getOption()?.globalInstance\n });\n }\n this._option.performanceHook?.afterVRenderDraw?.(this._compileChart.getOption().globalInstance);\n };\n\n private _doRender(immediately: boolean) {\n this._option.performanceHook?.beforeDoRender?.(this._compileChart.getOption().globalInstance);\n if (this._stage) {\n this._rootMarks.forEach(g => {\n traverseGroupMark(\n g,\n m => {\n if (m.needClear) {\n if (!this._progressiveMarks) {\n m.runAnimation();\n }\n m.clearExitGraphics();\n m.needClear = false;\n }\n },\n null,\n true\n );\n });\n\n this._option.performanceHook?.beforeVRenderDraw?.(this._compileChart.getOption().globalInstance);\n // 全量渲染的时候先关闭dirty bounds 提升性能\n this._stage.disableDirtyBounds();\n this._stage.afterNextRender(this._handleAfterNextRender);\n\n if (immediately) {\n this._stage.render();\n\n this._option.performanceHook?.afterVRenderDraw?.(this._compileChart.getOption().globalInstance);\n }\n }\n }\n\n renderMarks() {\n let hasCommitedMark = this._hasCommitedMark();\n const needsLayout = this._layoutState === LayoutState.before;\n\n if (!hasCommitedMark && !needsLayout) {\n return;\n }\n\n log(`--- start of renderMarks(${this._count}) ---`);\n this.clearProgressive();\n\n // 更新所有的mark\n if (hasCommitedMark) {\n this._rootMarks.forEach(mark => {\n mark.render();\n });\n }\n\n if (needsLayout) {\n // 需要更新布局\n this._layoutState = LayoutState.layouting;\n this._compileChart?.onLayout();\n this._layoutState = LayoutState.reevaluate;\n hasCommitedMark = this._hasCommitedMark();\n\n if (hasCommitedMark) {\n // 第二次更新所有的mark\n this._rootMarks.forEach(mark => {\n mark.render();\n });\n }\n this.handleLayoutEnd();\n }\n\n if (hasCommitedMark) {\n this.findProgressiveMarks();\n\n // update stage animation state\n this.updateStateAnimation();\n }\n\n this._doRender(true);\n if (hasCommitedMark) {\n this.doPreProgressive();\n }\n\n log(`--- start of renderMarks(${this._count}) ---`);\n this._count++;\n }\n\n reuseOrMorphing(morphConfig: IMorphConfig = {}) {\n const { reuse = true, morph = true, morphAll = false, animation = {}, enableExitAnimation = false } = morphConfig;\n const newMarks = findSimpleMarks(this._rootMarks);\n const { update, exit } = diffMarks(this._cachedMarks, newMarks, { morph, morphAll, reuse });\n\n update.forEach(({ prev, next }) => {\n // const enableMarkMorphConfig =\n // prev.every(mark => mark.getMarkConfig().morph) && next.every(mark => mark.getMarkConfig().morph);\n\n // 优先复用\n if (reuse && prev.length === 1 && next.length === 1 && prev[0].type === next[0].type) {\n next[0].reuse(prev[0]);\n } else {\n // 执行morphing\n const prevMark = prev.filter(item => item.getMarkConfig().morph)[0];\n prevMark &&\n next.forEach(item => {\n item.getMarkConfig().morph && item.prepareMorph(prevMark);\n });\n }\n });\n\n // todo 离场元素执行exit动画\n exit.forEach(({ prev }) => {\n prev.forEach(m => {\n m.removeProduct();\n });\n });\n }\n\n render(morphConfig?: IMorphConfig) {\n if (this._released) {\n return;\n }\n this.clearNextRender();\n\n this.initView();\n if (!this._stage) {\n return;\n }\n\n const { width, height } = this._rootGroup.attribute;\n\n // 更新rootGroup的宽高\n if (this._width !== width || this._height !== height) {\n this._rootGroup.setAttributes({ width: this._width, height: this._height });\n }\n\n this.renderMarks();\n if (this.clearNextRender()) {\n this.renderMarks();\n }\n }\n\n setStageAnimationConfig(config: Partial<MarkAnimationSpec>) {\n // 封装options,批量添加一些默认参数\n const animationConfig: Partial<MarkAnimationSpec> = {};\n\n Object.keys(config).forEach(key => {\n const value = (config as any)[key];\n if (isArray(value)) {\n if (key === 'disappear') {\n (animationConfig as any)[key] = value.map(item => {\n if (isClass(item.callBack)) {\n return {\n ...item,\n custom: item.callBack\n };\n }\n return {\n ...item,\n type: BuiltIn_DISAPPEAR_ANIMATE_NAME,\n customParameters: {\n callBack: item.callBack\n }\n };\n });\n } else {\n (animationConfig as any)[key] = value.map(item => {\n const options = item!.options ?? {};\n\n return {\n ...item,\n options: (...args: any[]) => {\n const _options = typeof options === 'function' ? options(...args) : options;\n return {\n ..._options\n };\n }\n };\n });\n }\n } else {\n (animationConfig as any)[key] = {\n ...(config as any)[key]\n };\n }\n });\n this._stateAnimationConfig = animationConfig;\n }\n\n updateStateAnimation() {\n const allMarks: IMark[] = [];\n this._rootMarks.forEach(mark => {\n traverseGroupMark(mark, m => {\n allMarks.push(m);\n });\n });\n const markAnimationStates = allMarks.map(mark => mark.getAnimationState());\n const animationState = markAnimationStates.every(state => state === AnimationStateEnum.appear)\n ? AnimationStateEnum.appear\n : markAnimationStates.every(state => state === AnimationStateEnum.disappear)\n ? AnimationStateEnum.disappear\n : AnimationStateEnum.none;\n if (!this._stage.context) {\n this._stage.context = {};\n }\n this._stage.context.animationState = animationState;\n }\n\n updateViewBox(viewBox: IBoundsLike, reRender: boolean = true) {\n if (!this._stage) {\n return;\n }\n const prevViewBox = this._stage.viewBox;\n if (\n viewBox &&\n (!prevViewBox ||\n prevViewBox.x1 !== viewBox.x1 ||\n prevViewBox.y1 !== viewBox.y1 ||\n prevViewBox.x2 !== viewBox.x2 ||\n prevViewBox.y2 !== viewBox.y2)\n ) {\n (this._stage as any).setViewBox(viewBox, reRender);\n }\n }\n\n resize(width: number, height: number, reRender: boolean = true) {\n if (!this._stage) {\n return;\n }\n const hasChange = this._width !== width || this._height !== height;\n\n this._width = width;\n this._height = height;\n\n if (hasChange) {\n this._stage.resize(width, height);\n this._commitedAll();\n\n // todo resize\n if (reRender) {\n this.render({ morph: false });\n }\n }\n }\n\n setBackground(color: IColor) {\n if (this._stage) {\n this._stage.background = color;\n }\n }\n\n setSize(width: number, height: number) {\n this._width = width;\n this._height = height;\n if (!this._stage) {\n return;\n }\n\n // todo set size of stage\n }\n\n setViewBox(viewBox: IBoundsLike, reRender: boolean = true) {\n this.updateViewBox(viewBox, reRender);\n }\n\n addEventListener(\n source: EventSourceType,\n type: string,\n callback: (params: CompilerListenerParameters) => void\n ): void {\n // TODO: 需要明确一下 interactive 的作用范围,同时考虑是否存在非交互行为的事件以及是否需要生效\n if (this._option.interactive === false) {\n return;\n }\n if (source === Event_Source_Type.chart) {\n const rootGroup = this.getRootGroup();\n const wrappedCallback = function (event: any) {\n const graphic = event.target;\n let markGraphic: IMarkGraphic = null;\n\n if (graphic) {\n if (isValid(graphic.context)) {\n markGraphic = graphic;\n } else {\n markGraphic = findMarkGraphic(rootGroup, graphic) as unknown as IMarkGraphic;\n }\n }\n const context = (markGraphic?.context ?? {}) as Partial<IGraphicContext>;\n const markId = isValid(context.markId) ? context.markId : null;\n const modelId = isValid(context.modelId) ? context.modelId : null;\n const modelUserId = isValid(context.modelUserId) ? context.modelUserId : null;\n const markUserId = isValid(context.markUserId) ? context.markUserId : null;\n\n const params: CompilerListenerParameters = {\n event,\n type,\n source,\n item: markGraphic,\n datum: getDatumOfGraphic(markGraphic), // 是否要区分图元\n markId,\n modelId,\n markUserId,\n modelUserId\n };\n callback.call(null, params);\n }.bind(this);\n this._viewListeners.set(callback, { type, callback: wrappedCallback });\n // 如果 view 已经初始化则立刻挂载监听\n // FIXME: 目前 vgrammar 类型声明没有对齐,事件相关类型声明并没有使用 SceneItem\n //todo\n this._stage?.addEventListener(type, wrappedCallback as any);\n } else if (source === Event_Source_Type.window) {\n const wrappedCallback = function wrappedCallback(event: any) {\n // TODO: vgrammar 暂未提供基于事件直接筛选相应 mark 的能力,这里无法获取到相应的 item\n const params: CompilerListenerParameters = {\n event,\n type,\n source,\n item: null,\n datum: null,\n markId: null,\n modelId: null,\n markUserId: null,\n modelUserId: null\n };\n callback.call(null, params);\n }.bind(this);\n this._windowListeners.set(callback, { type, callback: wrappedCallback });\n const windowObject = this._getGlobalThis();\n windowObject?.addEventListener(type, wrappedCallback);\n } else if (source === Event_Source_Type.canvas) {\n const wrappedCallback = function wrappedCallback(event: any) {\n // TODO: vgrammar 暂未提供基于事件直接筛选相应 mark 的能力,这里无法获取到相应的 item\n const params: CompilerListenerParameters = {\n event,\n type,\n source,\n item: null,\n datum: null,\n markId: null,\n modelId: null,\n markUserId: null,\n modelUserId: null\n };\n callback.call(null, params);\n }.bind(this);\n this._canvasListeners.set(callback, { type, callback: wrappedCallback });\n const canvasObject = this.getStage()?.window;\n canvasObject?.addEventListener(type, wrappedCallback);\n }\n }\n\n removeEventListener(\n source: EventSourceType,\n type: string,\n callback: (params: CompilerListenerParameters) => void\n ): void {\n if (this._option.interactive === false) {\n return;\n }\n if (source === Event_Source_Type.chart) {\n const wrappedCallback = this._viewListeners.get(callback)?.callback;\n wrappedCallback && this._stage?.removeEventListener(type, wrappedCallback);\n this._viewListeners.delete(callback);\n } else if (source === Event_Source_Type.window) {\n const windowObject = this._getGlobalThis();\n const wrappedCallback = this._windowListeners.get(callback)?.callback;\n wrappedCallback && windowObject?.removeEventListener(type, wrappedCallback);\n this._windowListeners.delete(callback);\n } else if (source === Event_Source_Type.canvas) {\n const canvasObject = this.getStage()?.window;\n const wrappedCallback = this._canvasListeners.get(callback)?.callback;\n canvasObject && wrappedCallback && canvasObject?.removeEventListener(type, wrappedCallback);\n this._canvasListeners.delete(callback);\n }\n }\n\n protected releaseEvent(): void {\n const stage = this.getStage();\n\n if (stage) {\n stage.hooks.afterRender.unTap('chart-event', this.handleStageRender);\n }\n\n // 相应的事件remove在model中完成\n this._viewListeners.clear();\n this._windowListeners.clear();\n this._canvasListeners.clear();\n }\n\n release(): void {\n const stage = this._stage;\n const rootGroup = this._rootGroup;\n const shouldReleaseStage = !!stage && !this._isExternalStage;\n const releaseVRenderAppRef = this._releaseVRenderAppRef;\n\n this.clearNextRender();\n this.releaseEvent();\n // vgrammar release\n this.releaseGrammar(true);\n\n if (stage) {\n if (shouldReleaseStage) {\n stage.release();\n } else if (rootGroup) {\n stage.defaultLayer.removeChild(rootGroup, true);\n rootGroup.release();\n }\n }\n releaseVRenderAppRef?.();\n this._stage = null;\n this._rootGroup = null;\n this._isExternalStage = false;\n this._releaseVRenderAppRef = undefined;\n this._option = this._container = null as any;\n\n this.isInited = false;\n this._compileChart = null;\n this._released = true;\n }\n\n /**\n * 释放VGrammar\n * @param removeGraphicItems 是否删除场景元素,在同步渲染,并且无动画时,必须设置为true,否则有绘图残留\n */\n releaseGrammar(removeGraphicItems: boolean = false) {\n // this._releaseModel();\n if (removeGraphicItems) {\n // 彻底删除图形\n this._rootMarks.forEach(g => {\n traverseGroupMark(\n g,\n m => {\n m.removeProduct(true);\n },\n null,\n true\n );\n });\n } else {\n this._cachedMarks = findSimpleMarks(this._rootMarks);\n }\n this._rootMarks = [];\n }\n\n // protected _releaseModel() {\n // // 释放model\n // Object.keys(this._model).forEach(type => {\n // Object.values((this._model as any)[type] as IProductMap<IGrammarItem>).forEach(grammarItemMap => {\n // Object.values(grammarItemMap).forEach((item: IGrammarItem) => {\n // item.removeProduct(true); // 保留 vgrammar 语法元素,下面一起清空\n // });\n // });\n // (this._model as any)[type] = {};\n // });\n // }\n\n addRootMark(mark: IMark) {\n if (!this._rootMarks.includes(mark)) {\n this._rootMarks.push(mark);\n }\n }\n\n getRootMarks() {\n return this._rootMarks;\n }\n\n removeRootMark(mark: IMark) {\n const index = this._rootMarks.findIndex(m => m === mark);\n\n if (index >= 0) {\n this._rootMarks.splice(index, 1);\n\n return true;\n }\n return false;\n }\n\n private _getGlobalThis() {\n return isTrueBrowser(this._option.mode) ? globalThis : this.getStage()?.window;\n }\n\n private _combineIncrementalLayers() {\n if (this._stage) {\n waitForAllSubLayers(this._stage).then(() => {\n // stage might be null in current tick\n if (this._stage) {\n this._stage.defaultLayer.combineSubLayer();\n }\n });\n }\n }\n\n private findProgressiveMarks() {\n const marks: IMark[] = [];\n\n this._rootMarks.forEach(mark => {\n traverseGroupMark(mark, m => {\n if (m.isProgressive()) {\n marks.push(m);\n }\n });\n });\n\n if (!marks.length) {\n this._progressiveMarks = null;\n return null;\n }\n\n this._progressiveMarks = marks;\n\n this._combineIncrementalLayers();\n\n return marks;\n }\n\n private doPreProgressive() {\n if (this._progressiveMarks && this._progressiveMarks.some(mark => mark.isDoingProgressive())) {\n const raf = vglobal.getSpecifiedRequestAnimationFrame(10);\n this._progressiveRafId = raf(this.handleProgressiveFrame);\n } else if (this._progressiveMarks && this._progressiveMarks.every(mark => mark.canAnimateAfterProgressive())) {\n this._progressiveMarks.forEach(mark => {\n mark.runAnimation();\n mark.clearExitGraphics();\n });\n } else if (this._progressiveMarks) {\n this._progressiveMarks = null;\n }\n }\n\n /** 监听frame事件,更新增量元素的mark */\n private handleProgressiveFrame = () => {\n if (this._progressiveMarks.length) {\n this._progressiveMarks.forEach(mark => {\n if (mark.isDoingProgressive()) {\n mark.renderProgressive();\n }\n });\n }\n\n this.doPreProgressive();\n };\n\n /** 清除 */\n private clearProgressive() {\n if (this._progressiveRafId) {\n const cancelRaf = vglobal.getSpecifiedCancelAnimationFrame(10);\n cancelRaf(this._progressiveRafId);\n }\n\n if (this._progressiveMarks && this._progressiveMarks.length) {\n this._progressiveMarks.forEach(entry => {\n entry.clearProgressive();\n });\n\n this._progressiveMarks = null;\n }\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/compile/compiler.ts"],"names":[],"mappings":"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","file":"compiler.js","sourcesContent":["import { ChartEvent, Event_Source_Type } from './../constant/event';\nimport type { CompilerListenerParameters, ICompiler, IRenderContainer, IRenderOption } from './interface';\n// eslint-disable-next-line no-duplicate-imports\nimport { LayoutState } from './interface';\nimport { isMobileLikeMode, isTrueBrowser } from '../util/env';\nimport { isClass, isString } from '../util/type';\nimport type { IBoundsLike } from '@visactor/vutils';\n// eslint-disable-next-line no-duplicate-imports\nimport { array, isArray, isObject, isValid } from '@visactor/vutils';\nimport type { EventSourceType } from '../event/interface';\nimport type { IChart } from '../chart/interface';\nimport { createGroup, vglobal, waitForAllSubLayers } from '@visactor/vrender-core';\nimport type { IColor, IEventTarget, IGroup, IStage } from '@visactor/vrender-core';\nimport type { IMorphConfig } from '../animation/spec';\nimport type { IVChart, IVChartRenderOption } from '../core/interface';\nimport type { AnimationStateValues } from '../mark/interface';\nimport { type IGraphicContext, type IMark, type IMarkGraphic } from '../mark/interface';\nimport { Factory } from '../core/factory';\nimport type { Gesture } from '@visactor/vrender-kits';\nimport { findMarkGraphic, getDatumOfGraphic } from '../util/mark';\nimport { diffMarks, findSimpleMarks, toRenderMode, traverseGroupMark } from './util';\nimport { log } from '../util/debug';\nimport type { MarkAnimationSpec, TypeAnimationConfig } from '../animation/interface';\nimport { AnimationStateEnum } from '../animation/interface';\nimport { BuiltIn_DISAPPEAR_ANIMATE_NAME } from '../constant/animate';\nimport { createStageFromApp, getVRenderAppEnvParams, resolveVRenderApp } from './stage-app';\n\ntype EventListener = {\n type: string;\n callback: (...args: any[]) => void;\n};\n\nexport class Compiler implements ICompiler {\n private _count: number = 0;\n /**\n * 更新后缓存的mark\n */\n private _cachedMarks: IMark[];\n\n private _progressiveMarks?: IMark[];\n\n /**\n * 增量渲染相关的raf id\n */\n private _progressiveRafId?: number;\n\n protected _rootMarks: IMark[] = [];\n\n protected _stage: IStage;\n\n private _isExternalStage: boolean = false;\n\n private _releaseVRenderAppRef?: () => void;\n\n protected _stateAnimationConfig: Partial<MarkAnimationSpec>;\n get stateAnimationConfig() {\n return this._stateAnimationConfig;\n }\n\n protected _rootGroup: IGroup;\n\n getRootGroup() {\n return this._rootGroup;\n }\n\n protected _viewListeners: Map<(...args: any[]) => any, EventListener> = new Map();\n protected _windowListeners: Map<(...args: any[]) => any, EventListener> = new Map();\n protected _canvasListeners: Map<(...args: any[]) => any, EventListener> = new Map();\n\n isInited: boolean = false;\n\n private _nextRafId: number;\n\n protected _width: number;\n protected _height: number;\n\n protected _container: IRenderContainer;\n protected _option: IRenderOption;\n getOption() {\n return this._option;\n }\n // 已释放标记\n private _released: boolean = false;\n\n /** 布局阶段 */\n private _layoutState?: LayoutState;\n\n private _compileChart: IChart = null;\n\n constructor(container: IRenderContainer, option: IRenderOption) {\n this._container = container;\n this._option = option;\n }\n\n getChart() {\n return this._compileChart;\n }\n /**\n * 获取 canvas dom\n * @returns HTMLCanvasElement | undefined\n */\n getCanvas(): HTMLCanvasElement | undefined {\n return this._stage?.window.getNativeHandler().nativeCanvas;\n }\n\n _gestureController?: Gesture;\n /**\n * 获取 渲染引擎\n */\n getStage(): IStage | undefined {\n return this._stage;\n }\n\n initView() {\n if (this._released) {\n return;\n }\n this.isInited = true;\n if (this._stage) {\n return;\n }\n\n const {\n autoRefreshDpr,\n dpr,\n mode,\n modeParams,\n gestureConfig,\n interactive,\n clickInterval,\n autoPreventDefault,\n background\n } = this._option;\n const appEnvParams = getVRenderAppEnvParams(mode, modeParams);\n vglobal.setEnv(toRenderMode(mode), appEnvParams ?? {});\n const externalStage = this._option.stage;\n this._isExternalStage = !!externalStage;\n this._releaseVRenderAppRef = undefined;\n this._stage = externalStage;\n\n if (!this._stage) {\n const resolvedApp = resolveVRenderApp({\n app: this._option.app,\n mode,\n modeParams,\n sharedVRenderApp: this._option.sharedVRenderApp\n });\n this._releaseVRenderAppRef = resolvedApp.releaseAppRef;\n\n try {\n // Canvas view binding is stage-scoped. Keep it out of app envParams so\n // one app can safely host multiple VChart/VTable stages in Lynx pages.\n this._stage = createStageFromApp(resolvedApp.app, {\n background,\n width: this._width,\n height: this._height,\n container: this._container.dom ?? null,\n canvas: this._container.canvas ?? null,\n dpr,\n viewBox: this._option.viewBox,\n canvasControled: this._option.canvasControled,\n beforeRender: (stage: IStage) => {\n this._compileChart?.onBeforeRender();\n this._option.beforeRender?.(stage);\n },\n afterRender: this._option.afterRender,\n disableDirtyBounds: true,\n autoRender: true,\n ticker: this._option.ticker,\n pluginList: this._option.pluginList,\n enableHtmlAttribute: this._option.enableHtmlAttribute,\n optimize: this._option.optimize,\n supportsTouchEvents: this._option.supportsTouchEvents,\n supportsPointerEvents: this._option.supportsPointerEvents,\n event: {\n clickInterval: clickInterval,\n autoPreventDefault: autoPreventDefault\n },\n ReactDOM: this._option.ReactDOM,\n autoRefresh: isValid(autoRefreshDpr) ? autoRefreshDpr : !isValid(dpr),\n ...(this._option.renderHooks ?? {})\n }) as unknown as IStage;\n } catch (error) {\n this._releaseVRenderAppRef?.();\n this._releaseVRenderAppRef = undefined;\n throw error;\n }\n }\n\n this._stage.enableIncrementalAutoRender();\n\n // 之前vgrammar 设置了一些默认配置\n (this._stage as any).setTheme({\n symbol: {\n shape: 'circle',\n size: 8\n },\n text: {\n fontSize: 14,\n fill: '#000000'\n }\n });\n\n const group = createGroup({\n x: 0,\n y: 0,\n width: this._width,\n height: this._height\n });\n group.name = 'root';\n this._stage.defaultLayer.appendChild(group);\n this._rootGroup = group;\n const GestureController =\n (isValid(gestureConfig) ? (gestureConfig as any) : isMobileLikeMode(mode)) &&\n interactive !== false &&\n Factory.getStageEventPlugin('gesture');\n\n if (GestureController) {\n this._gestureController = new GestureController(\n this._stage as unknown as IEventTarget,\n isObject(gestureConfig) ? gestureConfig : {}\n ) as Gesture;\n }\n\n this._setCanvasStyle();\n\n // emit afterRender event\n this.getStage().hooks.afterRender.tap('chart-event', this.handleStageRender);\n\n if (interactive !== false) {\n // 将 view 实例化之前监听的事件挂载到 view 上\n this._viewListeners.forEach(listener => {\n //this._view?.addEventListener(listener.type, listener.callback);\n });\n }\n }\n\n getLayoutState() {\n return this._layoutState;\n }\n\n updateLayoutTag() {\n this._layoutState = LayoutState.before;\n }\n\n protected handleLayoutEnd = () => {\n this._compileChart?.getEvent()?.emit(ChartEvent.afterMarkLayoutEnd, { chart: this._compileChart });\n };\n\n protected handleStageRender = () => {\n this._compileChart?.getEvent()?.emit(ChartEvent.afterRender, { chart: this._compileChart });\n };\n\n private _isGeoRegionRoamDragEnabled() {\n const chartSpec = this._compileChart?.getSpec?.();\n const regions = chartSpec?.region;\n if (!isArray(regions)) {\n return false;\n }\n\n return regions.some((region: any) => {\n if (region?.coordinate !== 'geo' || !region.roam) {\n return false;\n }\n\n if (region.roam === true) {\n return true;\n }\n\n return region.roam.drag ?? true;\n });\n }\n\n private _shouldDisableCanvasTouchAction() {\n if (!isTrueBrowser(this._option.mode)) {\n return false;\n }\n\n const supportsTouchEvents = isValid(this._option.supportsTouchEvents)\n ? this._option.supportsTouchEvents\n : vglobal.supportsTouchEvents;\n\n return supportsTouchEvents === false && this._isGeoRegionRoamDragEnabled();\n }\n\n private _setCanvasStyle() {\n if (!this._stage) {\n return;\n }\n if (this._container.dom && !isString(this._container.dom)) {\n this._container.dom.style.display = 'block';\n this._container.dom.style.position = 'relative';\n const canvas = this.getCanvas();\n if (canvas) {\n canvas.style.display = 'block';\n canvas.style.touchAction = this._shouldDisableCanvasTouchAction() ? 'none' : '';\n }\n }\n }\n\n compile(ctx: { chart: IChart; vChart: IVChart }, option?: IVChartRenderOption) {\n if (this._released) {\n return;\n }\n const { chart } = ctx;\n this._compileChart = chart;\n this.initView();\n if (!this._stage) {\n return;\n }\n\n if (option?.actionSource !== 'render' && this._cachedMarks) {\n this.reuseOrMorphing(option.morphConfig);\n // 清除缓存\n this._cachedMarks = null;\n }\n\n chart.compile();\n this._setCanvasStyle();\n chart.afterCompile();\n }\n protected clearNextRender() {\n if (this._nextRafId) {\n vglobal.getSpecifiedCancelAnimationFrame(10)(this._nextRafId);\n this._nextRafId = null;\n\n return true;\n }\n\n return false;\n }\n\n clear(ctx: { chart: IChart; vChart: IVChart }) {\n const { chart } = ctx;\n\n this.clearNextRender();\n chart.clear();\n }\n\n renderNextTick(morphConfig?: IMorphConfig): void {\n if (this._released) {\n return;\n }\n if (this._nextRafId) {\n this.clearNextRender();\n }\n\n this._nextRafId = vglobal.getSpecifiedRequestAnimationFrame(10)(() => {\n this._nextRafId = null;\n this.render(morphConfig);\n }) as unknown as number;\n }\n\n protected _commitedAll() {\n return this._rootMarks.some(mark => {\n return traverseGroupMark(mark, m => m.commit());\n });\n }\n\n protected _hasCommitedMark() {\n return this._rootMarks.some(mark => {\n return traverseGroupMark(mark, m => m.isCommited(), null, null, true);\n });\n }\n\n private _handleAfterNextRender = () => {\n if (this._stage && !this._option.disableDirtyBounds) {\n this._stage.enableDirtyBounds();\n }\n\n if (this._compileChart) {\n this._compileChart.getEvent()?.emit(ChartEvent.renderFinished, {\n chart: this._compileChart,\n vchart: this._compileChart.getOption()?.globalInstance\n });\n }\n this._option.performanceHook?.afterVRenderDraw?.(this._compileChart.getOption().globalInstance);\n };\n\n private _doRender(immediately: boolean) {\n this._option.performanceHook?.beforeDoRender?.(this._compileChart.getOption().globalInstance);\n if (this._stage) {\n this._rootMarks.forEach(g => {\n traverseGroupMark(\n g,\n m => {\n if (m.needClear) {\n if (!this._progressiveMarks) {\n m.runAnimation();\n }\n m.clearExitGraphics();\n m.needClear = false;\n }\n },\n null,\n true\n );\n });\n\n this._option.performanceHook?.beforeVRenderDraw?.(this._compileChart.getOption().globalInstance);\n // 全量渲染的时候先关闭dirty bounds 提升性能\n this._stage.disableDirtyBounds();\n this._stage.afterNextRender(this._handleAfterNextRender);\n\n if (immediately) {\n this._stage.render();\n\n this._option.performanceHook?.afterVRenderDraw?.(this._compileChart.getOption().globalInstance);\n }\n }\n }\n\n renderMarks() {\n let hasCommitedMark = this._hasCommitedMark();\n const needsLayout = this._layoutState === LayoutState.before;\n\n if (!hasCommitedMark && !needsLayout) {\n return;\n }\n\n log(`--- start of renderMarks(${this._count}) ---`);\n this.clearProgressive();\n\n // 更新所有的mark\n if (hasCommitedMark) {\n this._rootMarks.forEach(mark => {\n mark.render();\n });\n }\n\n if (needsLayout) {\n // 需要更新布局\n this._layoutState = LayoutState.layouting;\n this._compileChart?.onLayout();\n this._layoutState = LayoutState.reevaluate;\n hasCommitedMark = this._hasCommitedMark();\n\n if (hasCommitedMark) {\n // 第二次更新所有的mark\n this._rootMarks.forEach(mark => {\n mark.render();\n });\n }\n this.handleLayoutEnd();\n }\n\n if (hasCommitedMark) {\n this.findProgressiveMarks();\n\n // update stage animation state\n this.updateStateAnimation();\n }\n\n this._doRender(true);\n if (hasCommitedMark) {\n this.doPreProgressive();\n }\n\n log(`--- start of renderMarks(${this._count}) ---`);\n this._count++;\n }\n\n reuseOrMorphing(morphConfig: IMorphConfig = {}) {\n const { reuse = true, morph = true, morphAll = false, animation = {}, enableExitAnimation = false } = morphConfig;\n const newMarks = findSimpleMarks(this._rootMarks);\n const { update, exit } = diffMarks(this._cachedMarks, newMarks, { morph, morphAll, reuse });\n\n update.forEach(({ prev, next }) => {\n // const enableMarkMorphConfig =\n // prev.every(mark => mark.getMarkConfig().morph) && next.every(mark => mark.getMarkConfig().morph);\n\n // 优先复用\n if (reuse && prev.length === 1 && next.length === 1 && prev[0].type === next[0].type) {\n next[0].reuse(prev[0]);\n } else {\n // 执行morphing\n const prevMark = prev.filter(item => item.getMarkConfig().morph)[0];\n prevMark &&\n next.forEach(item => {\n item.getMarkConfig().morph && item.prepareMorph(prevMark);\n });\n }\n });\n\n // todo 离场元素执行exit动画\n exit.forEach(({ prev }) => {\n prev.forEach(m => {\n m.removeProduct();\n });\n });\n }\n\n render(morphConfig?: IMorphConfig) {\n if (this._released) {\n return;\n }\n this.clearNextRender();\n\n this.initView();\n if (!this._stage) {\n return;\n }\n\n const { width, height } = this._rootGroup.attribute;\n\n // 更新rootGroup的宽高\n if (this._width !== width || this._height !== height) {\n this._rootGroup.setAttributes({ width: this._width, height: this._height });\n }\n\n this.renderMarks();\n if (this.clearNextRender()) {\n this.renderMarks();\n }\n }\n\n setStageAnimationConfig(config: Partial<MarkAnimationSpec>) {\n // 封装options,批量添加一些默认参数\n const animationConfig: Partial<MarkAnimationSpec> = {};\n\n Object.keys(config).forEach(key => {\n const value = (config as any)[key];\n if (isArray(value)) {\n if (key === 'disappear') {\n (animationConfig as any)[key] = value.map(item => {\n if (isClass(item.callBack)) {\n return {\n ...item,\n custom: item.callBack\n };\n }\n return {\n ...item,\n type: BuiltIn_DISAPPEAR_ANIMATE_NAME,\n customParameters: {\n callBack: item.callBack\n }\n };\n });\n } else {\n (animationConfig as any)[key] = value.map(item => {\n const options = item!.options ?? {};\n\n return {\n ...item,\n options: (...args: any[]) => {\n const _options = typeof options === 'function' ? options(...args) : options;\n return {\n ..._options\n };\n }\n };\n });\n }\n } else {\n (animationConfig as any)[key] = {\n ...(config as any)[key]\n };\n }\n });\n this._stateAnimationConfig = animationConfig;\n }\n\n updateStateAnimation() {\n const allMarks: IMark[] = [];\n this._rootMarks.forEach(mark => {\n traverseGroupMark(mark, m => {\n allMarks.push(m);\n });\n });\n const markAnimationStates = allMarks.map(mark => mark.getAnimationState());\n const animationState = markAnimationStates.every(state => state === AnimationStateEnum.appear)\n ? AnimationStateEnum.appear\n : markAnimationStates.every(state => state === AnimationStateEnum.disappear)\n ? AnimationStateEnum.disappear\n : AnimationStateEnum.none;\n if (!this._stage.context) {\n this._stage.context = {};\n }\n this._stage.context.animationState = animationState;\n }\n\n updateViewBox(viewBox: IBoundsLike, reRender: boolean = true) {\n if (!this._stage) {\n return;\n }\n const prevViewBox = this._stage.viewBox;\n if (\n viewBox &&\n (!prevViewBox ||\n prevViewBox.x1 !== viewBox.x1 ||\n prevViewBox.y1 !== viewBox.y1 ||\n prevViewBox.x2 !== viewBox.x2 ||\n prevViewBox.y2 !== viewBox.y2)\n ) {\n (this._stage as any).setViewBox(viewBox, reRender);\n }\n }\n\n resize(width: number, height: number, reRender: boolean = true) {\n if (!this._stage) {\n return;\n }\n const hasChange = this._width !== width || this._height !== height;\n\n this._width = width;\n this._height = height;\n\n if (hasChange) {\n this._stage.resize(width, height);\n this._commitedAll();\n\n // todo resize\n if (reRender) {\n this.render({ morph: false });\n }\n }\n }\n\n setBackground(color: IColor) {\n if (this._stage) {\n this._stage.background = color;\n }\n }\n\n setSize(width: number, height: number) {\n this._width = width;\n this._height = height;\n if (!this._stage) {\n return;\n }\n\n // todo set size of stage\n }\n\n setViewBox(viewBox: IBoundsLike, reRender: boolean = true) {\n this.updateViewBox(viewBox, reRender);\n }\n\n addEventListener(\n source: EventSourceType,\n type: string,\n callback: (params: CompilerListenerParameters) => void\n ): void {\n // TODO: 需要明确一下 interactive 的作用范围,同时考虑是否存在非交互行为的事件以及是否需要生效\n if (this._option.interactive === false) {\n return;\n }\n if (source === Event_Source_Type.chart) {\n const rootGroup = this.getRootGroup();\n const wrappedCallback = function (event: any) {\n const graphic = event.target;\n let markGraphic: IMarkGraphic = null;\n\n if (graphic) {\n if (isValid(graphic.context)) {\n markGraphic = graphic;\n } else {\n markGraphic = findMarkGraphic(rootGroup, graphic) as unknown as IMarkGraphic;\n }\n }\n const context = (markGraphic?.context ?? {}) as Partial<IGraphicContext>;\n const markId = isValid(context.markId) ? context.markId : null;\n const modelId = isValid(context.modelId) ? context.modelId : null;\n const modelUserId = isValid(context.modelUserId) ? context.modelUserId : null;\n const markUserId = isValid(context.markUserId) ? context.markUserId : null;\n\n const params: CompilerListenerParameters = {\n event,\n type,\n source,\n item: markGraphic,\n datum: getDatumOfGraphic(markGraphic), // 是否要区分图元\n markId,\n modelId,\n markUserId,\n modelUserId\n };\n callback.call(null, params);\n }.bind(this);\n this._viewListeners.set(callback, { type, callback: wrappedCallback });\n // 如果 view 已经初始化则立刻挂载监听\n // FIXME: 目前 vgrammar 类型声明没有对齐,事件相关类型声明并没有使用 SceneItem\n //todo\n this._stage?.addEventListener(type, wrappedCallback as any);\n } else if (source === Event_Source_Type.window) {\n const wrappedCallback = function wrappedCallback(event: any) {\n // TODO: vgrammar 暂未提供基于事件直接筛选相应 mark 的能力,这里无法获取到相应的 item\n const params: CompilerListenerParameters = {\n event,\n type,\n source,\n item: null,\n datum: null,\n markId: null,\n modelId: null,\n markUserId: null,\n modelUserId: null\n };\n callback.call(null, params);\n }.bind(this);\n this._windowListeners.set(callback, { type, callback: wrappedCallback });\n const windowObject = this._getGlobalThis();\n windowObject?.addEventListener(type, wrappedCallback);\n } else if (source === Event_Source_Type.canvas) {\n const wrappedCallback = function wrappedCallback(event: any) {\n // TODO: vgrammar 暂未提供基于事件直接筛选相应 mark 的能力,这里无法获取到相应的 item\n const params: CompilerListenerParameters = {\n event,\n type,\n source,\n item: null,\n datum: null,\n markId: null,\n modelId: null,\n markUserId: null,\n modelUserId: null\n };\n callback.call(null, params);\n }.bind(this);\n this._canvasListeners.set(callback, { type, callback: wrappedCallback });\n const canvasObject = this.getStage()?.window;\n canvasObject?.addEventListener(type, wrappedCallback);\n }\n }\n\n removeEventListener(\n source: EventSourceType,\n type: string,\n callback: (params: CompilerListenerParameters) => void\n ): void {\n if (this._option.interactive === false) {\n return;\n }\n if (source === Event_Source_Type.chart) {\n const wrappedCallback = this._viewListeners.get(callback)?.callback;\n wrappedCallback && this._stage?.removeEventListener(type, wrappedCallback);\n this._viewListeners.delete(callback);\n } else if (source === Event_Source_Type.window) {\n const windowObject = this._getGlobalThis();\n const wrappedCallback = this._windowListeners.get(callback)?.callback;\n wrappedCallback && windowObject?.removeEventListener(type, wrappedCallback);\n this._windowListeners.delete(callback);\n } else if (source === Event_Source_Type.canvas) {\n const canvasObject = this.getStage()?.window;\n const wrappedCallback = this._canvasListeners.get(callback)?.callback;\n canvasObject && wrappedCallback && canvasObject?.removeEventListener(type, wrappedCallback);\n this._canvasListeners.delete(callback);\n }\n }\n\n protected releaseEvent(): void {\n const stage = this.getStage();\n\n if (stage) {\n stage.hooks.afterRender.unTap('chart-event', this.handleStageRender);\n }\n\n // 相应的事件remove在model中完成\n this._viewListeners.clear();\n this._windowListeners.clear();\n this._canvasListeners.clear();\n }\n\n release(): void {\n const stage = this._stage;\n const rootGroup = this._rootGroup;\n const shouldReleaseStage = !!stage && !this._isExternalStage;\n const releaseVRenderAppRef = this._releaseVRenderAppRef;\n\n this.clearNextRender();\n this.releaseEvent();\n // vgrammar release\n this.releaseGrammar(true);\n\n if (stage) {\n if (shouldReleaseStage) {\n stage.release();\n } else if (rootGroup) {\n stage.defaultLayer.removeChild(rootGroup, true);\n rootGroup.release();\n }\n }\n releaseVRenderAppRef?.();\n this._stage = null;\n this._rootGroup = null;\n this._isExternalStage = false;\n this._releaseVRenderAppRef = undefined;\n this._option = this._container = null as any;\n\n this.isInited = false;\n this._compileChart = null;\n this._released = true;\n }\n\n /**\n * 释放VGrammar\n * @param removeGraphicItems 是否删除场景元素,在同步渲染,并且无动画时,必须设置为true,否则有绘图残留\n */\n releaseGrammar(removeGraphicItems: boolean = false) {\n // this._releaseModel();\n if (removeGraphicItems) {\n // 彻底删除图形\n this._rootMarks.forEach(g => {\n traverseGroupMark(\n g,\n m => {\n m.removeProduct(true);\n },\n null,\n true\n );\n });\n } else {\n this._cachedMarks = findSimpleMarks(this._rootMarks);\n }\n this._rootMarks = [];\n }\n\n // protected _releaseModel() {\n // // 释放model\n // Object.keys(this._model).forEach(type => {\n // Object.values((this._model as any)[type] as IProductMap<IGrammarItem>).forEach(grammarItemMap => {\n // Object.values(grammarItemMap).forEach((item: IGrammarItem) => {\n // item.removeProduct(true); // 保留 vgrammar 语法元素,下面一起清空\n // });\n // });\n // (this._model as any)[type] = {};\n // });\n // }\n\n addRootMark(mark: IMark) {\n if (!this._rootMarks.includes(mark)) {\n this._rootMarks.push(mark);\n }\n }\n\n getRootMarks() {\n return this._rootMarks;\n }\n\n removeRootMark(mark: IMark) {\n const index = this._rootMarks.findIndex(m => m === mark);\n\n if (index >= 0) {\n this._rootMarks.splice(index, 1);\n\n return true;\n }\n return false;\n }\n\n private _getGlobalThis() {\n return isTrueBrowser(this._option.mode) ? globalThis : this.getStage()?.window;\n }\n\n private _combineIncrementalLayers() {\n if (this._stage) {\n waitForAllSubLayers(this._stage).then(() => {\n // stage might be null in current tick\n if (this._stage) {\n this._stage.defaultLayer.combineSubLayer();\n }\n });\n }\n }\n\n private findProgressiveMarks() {\n const marks: IMark[] = [];\n\n this._rootMarks.forEach(mark => {\n traverseGroupMark(mark, m => {\n if (m.isProgressive()) {\n marks.push(m);\n }\n });\n });\n\n if (!marks.length) {\n this._progressiveMarks = null;\n return null;\n }\n\n this._progressiveMarks = marks;\n\n this._combineIncrementalLayers();\n\n return marks;\n }\n\n private doPreProgressive() {\n if (this._progressiveMarks && this._progressiveMarks.some(mark => mark.isDoingProgressive())) {\n const raf = vglobal.getSpecifiedRequestAnimationFrame(10);\n this._progressiveRafId = raf(this.handleProgressiveFrame);\n } else if (this._progressiveMarks && this._progressiveMarks.every(mark => mark.canAnimateAfterProgressive())) {\n this._progressiveMarks.forEach(mark => {\n mark.runAnimation();\n mark.clearExitGraphics();\n });\n } else if (this._progressiveMarks) {\n this._progressiveMarks = null;\n }\n }\n\n /** 监听frame事件,更新增量元素的mark */\n private handleProgressiveFrame = () => {\n if (this._progressiveMarks.length) {\n this._progressiveMarks.forEach(mark => {\n if (mark.isDoingProgressive()) {\n mark.renderProgressive();\n }\n });\n }\n\n this.doPreProgressive();\n };\n\n /** 清除 */\n private clearProgressive() {\n if (this._progressiveRafId) {\n const cancelRaf = vglobal.getSpecifiedCancelAnimationFrame(10);\n cancelRaf(this._progressiveRafId);\n }\n\n if (this._progressiveMarks && this._progressiveMarks.length) {\n this._progressiveMarks.forEach(entry => {\n entry.clearProgressive();\n });\n\n this._progressiveMarks = null;\n }\n }\n}\n"]}
|
|
@@ -2,6 +2,7 @@ import type { IApp, IColor, IStageParams, IStage, ILayer, IOption3D, ITicker } f
|
|
|
2
2
|
import type { IPerformanceHook, RenderMode } from '../../typings/spec/common';
|
|
3
3
|
import type { IBoundsLike } from '@visactor/vutils';
|
|
4
4
|
import type { StringOrNumber } from '../../typings';
|
|
5
|
+
import type { SharedVRenderAppOption } from '../stage-app';
|
|
5
6
|
export declare enum LayoutState {
|
|
6
7
|
before = "before",
|
|
7
8
|
layouting = "layouting",
|
|
@@ -43,6 +44,7 @@ export interface IRenderOption {
|
|
|
43
44
|
canvasControled?: boolean;
|
|
44
45
|
stage?: IStage;
|
|
45
46
|
app?: IApp;
|
|
47
|
+
sharedVRenderApp?: SharedVRenderAppOption;
|
|
46
48
|
layer?: ILayer;
|
|
47
49
|
beforeRender?: IStageParams['beforeRender'];
|
|
48
50
|
afterRender?: IStageParams['afterRender'];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/compile/interface/compiler.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../src/compile/interface/compiler.ts"],"names":[],"mappings":"AAOA,MAAM,CAAN,IAAY,WAKX;AALD,WAAY,WAAW;IACrB,gCAAiB,CAAA;IACjB,sCAAuB,CAAA;IACvB,wCAAyB,CAAA;IACzB,8BAAe,CAAA;AACjB,CAAC,EALW,WAAW,KAAX,WAAW,QAKtB","file":"compiler.js","sourcesContent":["import type { IApp, IColor, IStageParams, IStage, ILayer, IOption3D, ITicker } from '@visactor/vrender-core';\nimport type { IPerformanceHook, RenderMode } from '../../typings/spec/common';\nimport type { IBoundsLike } from '@visactor/vutils';\nimport type { StringOrNumber } from '../../typings';\nimport type { SharedVRenderAppOption } from '../stage-app';\n\n/** 布局阶段 */\nexport enum LayoutState {\n before = 'before',\n layouting = 'layouting',\n reevaluate = 'reevaluate',\n after = 'after'\n}\n\nexport interface IRenderContainer {\n dom?: HTMLElement | 'none';\n canvas?: HTMLCanvasElement | string;\n}\n\n/**\n * @since 1.8.0\n */\nexport type IOptimizeType = {\n // 视口不在可视区,跳过渲染,默认为true\n skipRenderWithOutRange?: boolean;\n // 跳过图元在区间外的判断\n // 不存在dirtyBounds的时候,根据该配置判断是否关闭图元的超出边界判定\n // 如果有dirtyBounds那么该配置不生效\n disableCheckGraphicWidthOutRange?: boolean;\n};\n\nexport interface GestureConfig {\n press?: {\n /**\n * @default 251\n * Minimal press time in ms.\n * @see http://hammerjs.github.io/recognizer-press/\n */\n time?: number;\n /**\n * @default 10\n * Maximal movement that is allowed while pressing.\n * @see http://hammerjs.github.io/recognizer-press/\n */\n threshold?: number;\n };\n swipe?: {\n /**\n * Minimal distance required before recognizing.\n * @default 10\n * @see https://hammerjs.github.io/recognizer-swipe/\n */\n threshold?: number;\n /**\n * Minimal velocity required before recognizing, unit is in px per ms.\n * @default 0.3\n * @see http://hammerjs.github.io/recognizer-swipe/\n */\n velocity?: number;\n };\n tap?: {\n /**\n * max time between the multi-tap taps\n * @default 300\n */\n interval?: number;\n };\n}\n\nexport interface IRenderOption {\n /**\n * 配置渲染环境,默认为 'desktop-browser',当需要在非浏览器环境渲染 VChart 时,需要配置该属性。\n * - 'desktop-browser': 默认模式,适用于 PC 及 H5\n * - 'mobile-browser': H5 模式\n * - 'node': Node 渲染\n * - 'worker': worker 模式\n * - 'miniApp': 小程序模式\n * - 'lynx': lynx 渲染\n * @default 'desktop-browser'\n */\n mode?: RenderMode;\n\n gestureConfig?: GestureConfig;\n /**\n * 渲染环境参数配置。\n *\n * app 级 envParams 只应放对整个 VRender app scope 都有效的环境能力;\n * 具体 canvas name/id、width、height、dpr 会随 stage 创建参数传入。\n * Lynx 新接入请优先使用 pixelRatio、lynx/runtime、canvasFactory 等全局能力,\n * 不要把 domref/canvasIdLists/freeCanvasIdx 作为新主路径依赖。\n */\n modeParams?:\n | {\n tooltipCanvasId?: StringOrNumber;\n [key: string]: any;\n }\n | unknown;\n\n /**\n * 是否自动刷线dpr\n * @since 1.12.14\n */\n autoRefreshDpr?: boolean;\n /**\n * 设置屏幕分辨率\n */\n dpr?: number;\n /**\n * 图表交互全局开关,默认为 `true`,开启。\n * @default true\n */\n interactive?: boolean;\n /**\n * 指定绘制的区域\n */\n viewBox?: IBoundsLike;\n /**\n * 用于告诉底层的渲染引擎 VRender,图表的 Canvas 是否是受控制的canvas,如果不是的话,不会进行resize等操作。\n * @default true\n */\n canvasControled?: boolean;\n /**\n * 外部传入的 VRender stage。普通用户仍应优先使用 dom/renderCanvas;\n * 显式传入 stage 时,stage ownership 属于外部,VChart release 不会释放该 stage。\n */\n stage?: IStage;\n /**\n * 外部传入的 VRender app。VChart 可使用它创建内部 stage,但 app ownership 属于外部,\n * VChart release 只释放自己创建的 stage,不释放该 app。\n */\n app?: IApp;\n /**\n * 使用 VRender 共享 app。必须提供明确的页面/容器/宿主 scope key;\n * VChart 不会在缺少 key 时使用 VRender 默认 shared key,避免不同全局环境能力误共用。\n *\n * VChart 仍会为每个实例创建并释放自己的 stage。共享 app 由 VRender handle 引用计数释放。\n */\n sharedVRenderApp?: SharedVRenderAppOption;\n /**\n * 外部传入的 VRender layer\n */\n layer?: ILayer;\n\n /**\n * 绘制之前的钩子函数\n */\n beforeRender?: IStageParams['beforeRender'];\n /**\n * 绘制之后的钩子函数\n */\n afterRender?: IStageParams['afterRender'];\n\n renderHooks?: {\n /**\n * 渲染层清除屏幕之后的钩子函数,这个钩子在实际渲染之前\n * @since 2.0.1\n */\n afterClearScreen?: IStageParams['afterClearScreen'];\n /**\n * 渲染层清除屏幕之后的钩子函数,这个钩子在实际渲染之前\n * @since 2.0.2\n */\n afterClearRect?: IStageParams['afterClearRect'];\n /**\n * 渲染层钩子 直接透传\n * @since 2.0.2\n */\n [key: string]: any;\n };\n /**\n * 绘图区域背景色设置\n */\n background?: IColor;\n /**\n * 日志类型,用于开发调试\n */\n logLevel?: number;\n /**\n * 错误消息回调函数\n */\n onError?: (...args: any[]) => void;\n /**\n * 是否关闭dirtyBounds\n * @default false\n */\n disableDirtyBounds?: boolean;\n /**\n * 是否开启view3d的变换模式\n */\n enableView3dTransform?: boolean;\n /**\n * vrender 的插件列表\n */\n pluginList?: string[];\n /**\n * vrender 的 ticker\n */\n ticker?: ITicker;\n /**\n * @since 1.8.0\n */\n optimize?: IOptimizeType;\n /**\n * @since 1.8.3\n */\n enableHtmlAttribute?: boolean;\n /**\n * @since 1.8.9\n * 是否支持touch事件\n */\n supportsTouchEvents?: boolean;\n /**\n * @since 1.8.9\n * 是否支持pointer事件\n */\n supportsPointerEvents?: boolean;\n /**\n * @since 1.11.0\n * 用于vrender渲染react元素,`react-dom`包导出元素\n */\n ReactDOM?: any;\n /**\n * @since 1.13.2\n * @default 200\n * 单位 ms\n * 多次点击之间的最大时间,默认为 200 ms,用于判断点击次数\n */\n clickInterval?: number;\n /**\n * @since 1.13.2\n * @default false\n * VRender 参数 是否自动阻止事件\n */\n autoPreventDefault?: boolean;\n /**\n * @deprecated\n * 请使用 hooks 代替\n */\n performanceHook?: IPerformanceHook;\n\n /**\n * 3d配置\n */\n options3d?: {\n enable?: boolean;\n /* 是否支持3d视角变换 */\n enableView3dTranform?: boolean;\n } & IOption3D;\n}\n"]}
|
|
@@ -1,9 +1,23 @@
|
|
|
1
1
|
import type { IApp, IStage, IStageParams } from '@visactor/vrender-core';
|
|
2
2
|
import { type RenderMode } from '../typings/spec/common';
|
|
3
|
+
type VRenderAppEnv = 'browser' | 'node' | 'feishu' | 'tt' | 'wx' | 'lynx' | 'harmony';
|
|
4
|
+
type VRenderSharedAppKey = string | symbol;
|
|
5
|
+
export type SharedVRenderAppOption = {
|
|
6
|
+
key: VRenderSharedAppKey;
|
|
7
|
+
};
|
|
8
|
+
export type ResolveVRenderAppOptions = {
|
|
9
|
+
app?: IApp;
|
|
10
|
+
mode?: RenderMode;
|
|
11
|
+
modeParams?: unknown;
|
|
12
|
+
sharedVRenderApp?: SharedVRenderAppOption;
|
|
13
|
+
};
|
|
3
14
|
export type ResolvedVRenderApp = {
|
|
4
15
|
app: IApp;
|
|
5
16
|
releaseAppRef?: () => void;
|
|
6
17
|
};
|
|
18
|
+
export declare const getVRenderAppEnv: (mode?: RenderMode) => VRenderAppEnv;
|
|
19
|
+
export declare const getVRenderAppEnvParams: (mode?: RenderMode, modeParams?: unknown) => unknown;
|
|
7
20
|
export declare const getDefaultVRenderApp: (mode?: RenderMode) => IApp;
|
|
8
|
-
export declare const resolveVRenderApp: (
|
|
21
|
+
export declare const resolveVRenderApp: (appOrOptions?: IApp | ResolveVRenderAppOptions, mode?: RenderMode) => ResolvedVRenderApp;
|
|
9
22
|
export declare const createStageFromApp: (app: IApp, params: Partial<IStageParams>) => IStage;
|
|
23
|
+
export {};
|