@visactor/vrender-core 0.21.7 → 0.22.0-vstory.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/cjs/animate/Ticker/default-ticker.d.ts +2 -0
- package/cjs/animate/Ticker/default-ticker.js +7 -1
- package/cjs/animate/Ticker/default-ticker.js.map +1 -1
- package/cjs/animate/animate.js +1 -1
- package/cjs/animate/animate.js.map +1 -1
- package/cjs/animate/custom-animate.js +14 -25
- package/cjs/animate/custom-animate.js.map +1 -1
- package/cjs/animate/easing-func.d.ts +1 -0
- package/cjs/animate/easing-func.js +16 -0
- package/cjs/animate/easing-func.js.map +1 -0
- package/cjs/animate/easing.d.ts +4 -0
- package/cjs/animate/easing.js +24 -1
- package/cjs/animate/easing.js.map +1 -1
- package/cjs/animate/index.d.ts +1 -0
- package/cjs/animate/index.js +1 -1
- package/cjs/animate/index.js.map +1 -1
- package/cjs/color-string/store.js +1 -2
- package/cjs/common/3d-interceptor.js +2 -1
- package/cjs/common/bezier-utils.d.ts +3 -0
- package/cjs/common/bezier-utils.js +17 -2
- package/cjs/common/bezier-utils.js.map +1 -1
- package/cjs/common/custom-path2d.d.ts +4 -0
- package/cjs/common/custom-path2d.js +43 -11
- package/cjs/common/custom-path2d.js.map +1 -1
- package/cjs/common/render-area.js +0 -1
- package/cjs/common/render-command-list.js +2 -1
- package/cjs/common/segment/curve/arc.d.ts +4 -1
- package/cjs/common/segment/curve/arc.js +10 -1
- package/cjs/common/segment/curve/arc.js.map +1 -1
- package/cjs/common/segment/curve/base.d.ts +4 -1
- package/cjs/common/segment/curve/base.js.map +1 -1
- package/cjs/common/segment/curve/cubic-bezier.d.ts +5 -1
- package/cjs/common/segment/curve/cubic-bezier.js +24 -3
- package/cjs/common/segment/curve/cubic-bezier.js.map +1 -1
- package/cjs/common/segment/curve/curve-context.js +5 -4
- package/cjs/common/segment/curve/curve-context.js.map +1 -1
- package/cjs/common/segment/curve/ellipse.d.ts +4 -1
- package/cjs/common/segment/curve/ellipse.js +9 -0
- package/cjs/common/segment/curve/ellipse.js.map +1 -1
- package/cjs/common/segment/curve/line.d.ts +4 -1
- package/cjs/common/segment/curve/line.js +18 -0
- package/cjs/common/segment/curve/line.js.map +1 -1
- package/cjs/common/segment/curve/move.d.ts +4 -1
- package/cjs/common/segment/curve/move.js +9 -0
- package/cjs/common/segment/curve/move.js.map +1 -1
- package/cjs/common/segment/curve/path.d.ts +2 -1
- package/cjs/common/segment/curve/path.js +5 -2
- package/cjs/common/segment/curve/path.js.map +1 -1
- package/cjs/common/segment/curve/quadratic-bezier.d.ts +6 -2
- package/cjs/common/segment/curve/quadratic-bezier.js +23 -5
- package/cjs/common/segment/curve/quadratic-bezier.js.map +1 -1
- package/cjs/common/shape/rect.d.ts +1 -1
- package/cjs/common/shape/rect.js +30 -25
- package/cjs/common/shape/rect.js.map +1 -1
- package/cjs/common/store.js +1 -1
- package/cjs/core/contributions/env/base-contribution.d.ts +2 -0
- package/cjs/core/contributions/env/base-contribution.js +6 -0
- package/cjs/core/contributions/env/base-contribution.js.map +1 -1
- package/cjs/core/global.d.ts +5 -0
- package/cjs/core/global.js +13 -1
- package/cjs/core/global.js.map +1 -1
- package/cjs/graphic/builtin-symbol/rect.d.ts +2 -1
- package/cjs/graphic/builtin-symbol/rect.js +28 -0
- package/cjs/graphic/builtin-symbol/rect.js.map +1 -1
- package/cjs/graphic/builtin-symbol/utils.d.ts +2 -1
- package/cjs/graphic/builtin-symbol/utils.js +5 -0
- package/cjs/graphic/builtin-symbol/utils.js.map +1 -1
- package/cjs/graphic/config.js +19 -5
- package/cjs/graphic/config.js.map +1 -1
- package/cjs/graphic/graphic.js +15 -1
- package/cjs/graphic/graphic.js.map +1 -1
- package/cjs/graphic/richtext/line.js +1 -1
- package/cjs/graphic/richtext/line.js.map +1 -1
- package/cjs/graphic/richtext/paragraph.d.ts +1 -1
- package/cjs/graphic/richtext/paragraph.js +9 -4
- package/cjs/graphic/richtext/paragraph.js.map +1 -1
- package/cjs/graphic/richtext/utils.d.ts +4 -0
- package/cjs/graphic/richtext/utils.js +19 -6
- package/cjs/graphic/richtext/utils.js.map +1 -1
- package/cjs/graphic/richtext/wrapper.d.ts +1 -0
- package/cjs/graphic/richtext/wrapper.js +1 -1
- package/cjs/graphic/richtext/wrapper.js.map +1 -1
- package/cjs/graphic/richtext.d.ts +7 -2
- package/cjs/graphic/richtext.js +33 -3
- package/cjs/graphic/richtext.js.map +1 -1
- package/cjs/index.d.ts +2 -0
- package/cjs/index.js +2 -1
- package/cjs/index.js.map +1 -1
- package/cjs/interface/animate.d.ts +5 -39
- package/cjs/interface/animate.js.map +1 -1
- package/cjs/interface/context.d.ts +1 -0
- package/cjs/interface/context.js.map +1 -1
- package/cjs/interface/global.d.ts +5 -0
- package/cjs/interface/global.js.map +1 -1
- package/cjs/interface/graphic/group.d.ts +1 -0
- package/cjs/interface/graphic/group.js.map +1 -1
- package/cjs/interface/graphic/image.d.ts +1 -0
- package/cjs/interface/graphic/image.js.map +1 -1
- package/cjs/interface/graphic/path.d.ts +1 -0
- package/cjs/interface/graphic/path.js.map +1 -1
- package/cjs/interface/graphic/rect.d.ts +1 -0
- package/cjs/interface/graphic/rect.js.map +1 -1
- package/cjs/interface/graphic/richText.d.ts +2 -0
- package/cjs/interface/graphic/richText.js.map +1 -1
- package/cjs/interface/graphic/symbol.d.ts +2 -0
- package/cjs/interface/graphic/symbol.js.map +1 -1
- package/cjs/interface/graphic.d.ts +11 -2
- package/cjs/interface/graphic.js.map +1 -1
- package/cjs/interface/path.d.ts +5 -0
- package/cjs/interface/path.js.map +1 -1
- package/cjs/interface/picker.d.ts +13 -0
- package/cjs/interface/picker.js.map +1 -1
- package/cjs/picker/constants.d.ts +2 -0
- package/cjs/picker/constants.js +3 -2
- package/cjs/picker/constants.js.map +1 -1
- package/cjs/picker/pick-interceptor.d.ts +7 -2
- package/cjs/picker/pick-interceptor.js +19 -2
- package/cjs/picker/pick-interceptor.js.map +1 -1
- package/cjs/picker/pick-modules.js +7 -4
- package/cjs/picker/pick-modules.js.map +1 -1
- package/cjs/picker/picker-service.d.ts +4 -2
- package/cjs/picker/picker-service.js +13 -12
- package/cjs/picker/picker-service.js.map +1 -1
- package/cjs/plugins/builtin-plugin/edit-module.d.ts +15 -5
- package/cjs/plugins/builtin-plugin/edit-module.js +123 -42
- package/cjs/plugins/builtin-plugin/edit-module.js.map +1 -1
- package/cjs/plugins/builtin-plugin/richtext-edit-plugin-old.d.ts +1 -0
- package/cjs/plugins/builtin-plugin/richtext-edit-plugin-old.js +3 -0
- package/cjs/plugins/builtin-plugin/richtext-edit-plugin-old.js.map +1 -0
- package/cjs/plugins/builtin-plugin/richtext-edit-plugin.d.ts +62 -29
- package/cjs/plugins/builtin-plugin/richtext-edit-plugin.js +346 -212
- package/cjs/plugins/builtin-plugin/richtext-edit-plugin.js.map +1 -1
- package/cjs/render/contributions/render/arc3d-render.js.map +1 -1
- package/cjs/render/contributions/render/base-render.d.ts +1 -0
- package/cjs/render/contributions/render/base-render.js +20 -2
- package/cjs/render/contributions/render/base-render.js.map +1 -1
- package/cjs/render/contributions/render/contributions/base-contribution-render.d.ts +7 -1
- package/cjs/render/contributions/render/contributions/base-contribution-render.js +16 -8
- package/cjs/render/contributions/render/contributions/base-contribution-render.js.map +1 -1
- package/cjs/render/contributions/render/contributions/base-texture-contribution-render.js +29 -2
- package/cjs/render/contributions/render/contributions/base-texture-contribution-render.js.map +1 -1
- package/cjs/render/contributions/render/contributions/group-contribution-render.js +8 -3
- package/cjs/render/contributions/render/contributions/group-contribution-render.js.map +1 -1
- package/cjs/render/contributions/render/contributions/image-contribution-render.d.ts +1 -1
- package/cjs/render/contributions/render/contributions/image-contribution-render.js +2 -2
- package/cjs/render/contributions/render/contributions/image-contribution-render.js.map +1 -1
- package/cjs/render/contributions/render/contributions/rect-contribution-render.js +4 -4
- package/cjs/render/contributions/render/contributions/rect-contribution-render.js.map +1 -1
- package/cjs/render/contributions/render/contributions/symbol-contribution-render.d.ts +8 -1
- package/cjs/render/contributions/render/contributions/symbol-contribution-render.js +30 -2
- package/cjs/render/contributions/render/contributions/symbol-contribution-render.js.map +1 -1
- package/cjs/render/contributions/render/contributions/text-contribution-render.js +5 -3
- package/cjs/render/contributions/render/contributions/text-contribution-render.js.map +1 -1
- package/cjs/render/contributions/render/group-render.js +2 -2
- package/cjs/render/contributions/render/group-render.js.map +1 -1
- package/cjs/render/contributions/render/image-render.js +3 -3
- package/cjs/render/contributions/render/image-render.js.map +1 -1
- package/cjs/render/contributions/render/path-render.js.map +1 -1
- package/cjs/render/contributions/render/polygon-render.js.map +1 -1
- package/cjs/render/contributions/render/rect-render.js +2 -2
- package/cjs/render/contributions/render/rect-render.js.map +1 -1
- package/cjs/render/contributions/render/richtext-render.js +1 -1
- package/cjs/render/contributions/render/richtext-render.js.map +1 -1
- package/cjs/render/contributions/render/symbol-render.js +15 -13
- package/cjs/render/contributions/render/symbol-render.js.map +1 -1
- package/cjs/render/contributions/render/utils.d.ts +1 -2
- package/cjs/render/contributions/render/utils.js +4 -20
- package/cjs/render/contributions/render/utils.js.map +1 -1
- package/cjs/resource-loader/loader.js +1 -1
- package/cjs/resource-loader/loader.js.map +1 -1
- package/dist/index.es.js +8652 -7685
- package/es/animate/Ticker/default-ticker.d.ts +2 -0
- package/es/animate/Ticker/default-ticker.js +7 -1
- package/es/animate/Ticker/default-ticker.js.map +1 -1
- package/es/animate/animate.js +1 -1
- package/es/animate/animate.js.map +1 -1
- package/es/animate/custom-animate.js +14 -25
- package/es/animate/custom-animate.js.map +1 -1
- package/es/animate/easing-func.d.ts +1 -0
- package/es/animate/easing-func.js +10 -0
- package/es/animate/easing-func.js.map +1 -0
- package/es/animate/easing.d.ts +4 -0
- package/es/animate/easing.js +24 -1
- package/es/animate/easing.js.map +1 -1
- package/es/animate/index.d.ts +1 -0
- package/es/animate/index.js +2 -0
- package/es/animate/index.js.map +1 -1
- package/es/color-string/store.js +1 -2
- package/es/common/3d-interceptor.js +2 -1
- package/es/common/bezier-utils.d.ts +3 -0
- package/es/common/bezier-utils.js +14 -0
- package/es/common/bezier-utils.js.map +1 -1
- package/es/common/custom-path2d.d.ts +4 -0
- package/es/common/custom-path2d.js +44 -12
- package/es/common/custom-path2d.js.map +1 -1
- package/es/common/render-area.js +1 -2
- package/es/common/render-command-list.js +2 -1
- package/es/common/segment/curve/arc.d.ts +4 -1
- package/es/common/segment/curve/arc.js +10 -1
- package/es/common/segment/curve/arc.js.map +1 -1
- package/es/common/segment/curve/base.d.ts +4 -1
- package/es/common/segment/curve/base.js.map +1 -1
- package/es/common/segment/curve/cubic-bezier.d.ts +5 -1
- package/es/common/segment/curve/cubic-bezier.js +22 -1
- package/es/common/segment/curve/cubic-bezier.js.map +1 -1
- package/es/common/segment/curve/curve-context.js +6 -3
- package/es/common/segment/curve/curve-context.js.map +1 -1
- package/es/common/segment/curve/ellipse.d.ts +4 -1
- package/es/common/segment/curve/ellipse.js +9 -0
- package/es/common/segment/curve/ellipse.js.map +1 -1
- package/es/common/segment/curve/line.d.ts +4 -1
- package/es/common/segment/curve/line.js +18 -0
- package/es/common/segment/curve/line.js.map +1 -1
- package/es/common/segment/curve/move.d.ts +4 -1
- package/es/common/segment/curve/move.js +9 -0
- package/es/common/segment/curve/move.js.map +1 -1
- package/es/common/segment/curve/path.d.ts +2 -1
- package/es/common/segment/curve/path.js +5 -2
- package/es/common/segment/curve/path.js.map +1 -1
- package/es/common/segment/curve/quadratic-bezier.d.ts +6 -2
- package/es/common/segment/curve/quadratic-bezier.js +28 -5
- package/es/common/segment/curve/quadratic-bezier.js.map +1 -1
- package/es/common/shape/rect.d.ts +1 -1
- package/es/common/shape/rect.js +30 -25
- package/es/common/shape/rect.js.map +1 -1
- package/es/common/store.js +1 -1
- package/es/core/contributions/env/base-contribution.d.ts +2 -0
- package/es/core/contributions/env/base-contribution.js +6 -0
- package/es/core/contributions/env/base-contribution.js.map +1 -1
- package/es/core/global.d.ts +5 -0
- package/es/core/global.js +14 -1
- package/es/core/global.js.map +1 -1
- package/es/graphic/builtin-symbol/rect.d.ts +2 -1
- package/es/graphic/builtin-symbol/rect.js +28 -0
- package/es/graphic/builtin-symbol/rect.js.map +1 -1
- package/es/graphic/builtin-symbol/utils.d.ts +2 -1
- package/es/graphic/builtin-symbol/utils.js +5 -0
- package/es/graphic/builtin-symbol/utils.js.map +1 -1
- package/es/graphic/config.js +19 -5
- package/es/graphic/config.js.map +1 -1
- package/es/graphic/graphic.js +15 -1
- package/es/graphic/graphic.js.map +1 -1
- package/es/graphic/richtext/line.js +1 -1
- package/es/graphic/richtext/line.js.map +1 -1
- package/es/graphic/richtext/paragraph.d.ts +1 -1
- package/es/graphic/richtext/paragraph.js +9 -4
- package/es/graphic/richtext/paragraph.js.map +1 -1
- package/es/graphic/richtext/utils.d.ts +4 -0
- package/es/graphic/richtext/utils.js +15 -2
- package/es/graphic/richtext/utils.js.map +1 -1
- package/es/graphic/richtext/wrapper.d.ts +1 -0
- package/es/graphic/richtext/wrapper.js +1 -1
- package/es/graphic/richtext/wrapper.js.map +1 -1
- package/es/graphic/richtext.d.ts +7 -2
- package/es/graphic/richtext.js +33 -4
- package/es/graphic/richtext.js.map +1 -1
- package/es/index.d.ts +2 -0
- package/es/index.js +4 -0
- package/es/index.js.map +1 -1
- package/es/interface/animate.d.ts +5 -39
- package/es/interface/animate.js.map +1 -1
- package/es/interface/context.d.ts +1 -0
- package/es/interface/context.js.map +1 -1
- package/es/interface/global.d.ts +5 -0
- package/es/interface/global.js.map +1 -1
- package/es/interface/graphic/group.d.ts +1 -0
- package/es/interface/graphic/group.js.map +1 -1
- package/es/interface/graphic/image.d.ts +1 -0
- package/es/interface/graphic/image.js.map +1 -1
- package/es/interface/graphic/path.d.ts +1 -0
- package/es/interface/graphic/path.js.map +1 -1
- package/es/interface/graphic/rect.d.ts +1 -0
- package/es/interface/graphic/rect.js.map +1 -1
- package/es/interface/graphic/richText.d.ts +2 -0
- package/es/interface/graphic/richText.js.map +1 -1
- package/es/interface/graphic/symbol.d.ts +2 -0
- package/es/interface/graphic/symbol.js.map +1 -1
- package/es/interface/graphic.d.ts +11 -2
- package/es/interface/graphic.js.map +1 -1
- package/es/interface/path.d.ts +5 -0
- package/es/interface/path.js.map +1 -1
- package/es/interface/picker.d.ts +13 -0
- package/es/interface/picker.js.map +1 -1
- package/es/picker/constants.d.ts +2 -0
- package/es/picker/constants.js +4 -0
- package/es/picker/constants.js.map +1 -1
- package/es/picker/pick-interceptor.d.ts +7 -2
- package/es/picker/pick-interceptor.js +19 -1
- package/es/picker/pick-interceptor.js.map +1 -1
- package/es/picker/pick-modules.js +5 -3
- package/es/picker/pick-modules.js.map +1 -1
- package/es/picker/picker-service.d.ts +4 -2
- package/es/picker/picker-service.js +13 -13
- package/es/picker/picker-service.js.map +1 -1
- package/es/plugins/builtin-plugin/edit-module.d.ts +15 -5
- package/es/plugins/builtin-plugin/edit-module.js +119 -40
- package/es/plugins/builtin-plugin/edit-module.js.map +1 -1
- package/es/plugins/builtin-plugin/richtext-edit-plugin-old.d.ts +1 -0
- package/es/plugins/builtin-plugin/richtext-edit-plugin-old.js +3 -0
- package/es/plugins/builtin-plugin/richtext-edit-plugin-old.js.map +1 -0
- package/es/plugins/builtin-plugin/richtext-edit-plugin.d.ts +62 -29
- package/es/plugins/builtin-plugin/richtext-edit-plugin.js +349 -211
- package/es/plugins/builtin-plugin/richtext-edit-plugin.js.map +1 -1
- package/es/render/contributions/render/arc3d-render.js.map +1 -1
- package/es/render/contributions/render/base-render.d.ts +1 -0
- package/es/render/contributions/render/base-render.js +21 -2
- package/es/render/contributions/render/base-render.js.map +1 -1
- package/es/render/contributions/render/contributions/base-contribution-render.d.ts +7 -1
- package/es/render/contributions/render/contributions/base-contribution-render.js +16 -8
- package/es/render/contributions/render/contributions/base-contribution-render.js.map +1 -1
- package/es/render/contributions/render/contributions/base-texture-contribution-render.js +29 -2
- package/es/render/contributions/render/contributions/base-texture-contribution-render.js.map +1 -1
- package/es/render/contributions/render/contributions/group-contribution-render.js +8 -3
- package/es/render/contributions/render/contributions/group-contribution-render.js.map +1 -1
- package/es/render/contributions/render/contributions/image-contribution-render.d.ts +1 -1
- package/es/render/contributions/render/contributions/image-contribution-render.js +2 -2
- package/es/render/contributions/render/contributions/image-contribution-render.js.map +1 -1
- package/es/render/contributions/render/contributions/rect-contribution-render.js +4 -4
- package/es/render/contributions/render/contributions/rect-contribution-render.js.map +1 -1
- package/es/render/contributions/render/contributions/symbol-contribution-render.d.ts +8 -1
- package/es/render/contributions/render/contributions/symbol-contribution-render.js +26 -0
- package/es/render/contributions/render/contributions/symbol-contribution-render.js.map +1 -1
- package/es/render/contributions/render/contributions/text-contribution-render.js +5 -3
- package/es/render/contributions/render/contributions/text-contribution-render.js.map +1 -1
- package/es/render/contributions/render/group-render.js +2 -2
- package/es/render/contributions/render/group-render.js.map +1 -1
- package/es/render/contributions/render/image-render.js +3 -2
- package/es/render/contributions/render/image-render.js.map +1 -1
- package/es/render/contributions/render/path-render.js.map +1 -1
- package/es/render/contributions/render/polygon-render.js.map +1 -1
- package/es/render/contributions/render/rect-render.js +2 -2
- package/es/render/contributions/render/rect-render.js.map +1 -1
- package/es/render/contributions/render/richtext-render.js +1 -1
- package/es/render/contributions/render/richtext-render.js.map +1 -1
- package/es/render/contributions/render/symbol-render.js +16 -14
- package/es/render/contributions/render/symbol-render.js.map +1 -1
- package/es/render/contributions/render/utils.d.ts +1 -2
- package/es/render/contributions/render/utils.js +0 -18
- package/es/render/contributions/render/utils.js.map +1 -1
- package/es/resource-loader/loader.js +1 -1
- package/es/resource-loader/loader.js.map +1 -1
- package/package.json +3 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/render/contributions/render/symbol-render.ts"],"names":[],"mappings":"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","file":"symbol-render.js","sourcesContent":["import { inject, injectable, named } from '../../../common/inversify-lite';\n// eslint-disable-next-line\nimport { ContributionProvider } from '../../../common/contribution-provider';\nimport { getTheme } from '../../../graphic/theme';\nimport { SYMBOL_NUMBER_TYPE } from '../../../graphic/constants';\nimport type {\n IGraphicAttribute,\n IContext2d,\n IMarkAttribute,\n ISymbol,\n IThemeAttribute,\n ISymbolRenderContribution,\n IDrawContext,\n IRenderService,\n IGraphicRender,\n IGraphicRenderDrawParams,\n IContributionProvider,\n ICustomPath2D\n} from '../../../interface';\nimport type {} from '../../render-service';\nimport { BaseRender } from './base-render';\nimport { SymbolRenderContribution } from './contributions/constants';\nimport { isArray } from '@visactor/vutils';\nimport {\n defaultSymbolBackgroundRenderContribution,\n defaultSymbolRenderContribution,\n defaultSymbolTextureRenderContribution\n} from './contributions';\n\n@injectable()\nexport class DefaultCanvasSymbolRender extends BaseRender<ISymbol> implements IGraphicRender {\n type: 'symbol';\n numberType: number = SYMBOL_NUMBER_TYPE;\n\n constructor(\n @inject(ContributionProvider)\n @named(SymbolRenderContribution)\n protected readonly symbolRenderContribitions: IContributionProvider<ISymbolRenderContribution>\n ) {\n super();\n this.builtinContributions = [\n defaultSymbolRenderContribution,\n defaultSymbolBackgroundRenderContribution,\n defaultSymbolTextureRenderContribution\n ];\n this.init(symbolRenderContribitions);\n }\n\n drawShape(\n symbol: ISymbol,\n context: IContext2d,\n x: number,\n y: number,\n drawContext: IDrawContext,\n params?: IGraphicRenderDrawParams,\n fillCb?: (\n ctx: IContext2d,\n markAttribute: Partial<IMarkAttribute & IGraphicAttribute>,\n themeAttribute: IThemeAttribute\n ) => boolean,\n strokeCb?: (\n ctx: IContext2d,\n markAttribute: Partial<IMarkAttribute & IGraphicAttribute>,\n themeAttribute: IThemeAttribute\n ) => boolean\n ) {\n // const symbolAttribute = graphicService.themeService.getCurrentTheme().symbolAttribute;\n const symbolAttribute = getTheme(symbol, params?.theme).symbol;\n\n const {\n size = symbolAttribute.size,\n x: originX = symbolAttribute.x,\n y: originY = symbolAttribute.y,\n scaleX = symbolAttribute.scaleX,\n scaleY = symbolAttribute.scaleY,\n fillStrokeOrder = symbolAttribute.fillStrokeOrder\n } = symbol.attribute;\n\n const data = this.valid(symbol, symbolAttribute, fillCb, strokeCb);\n if (!data) {\n return;\n }\n const { fVisible, sVisible, doFill, doStroke } = data;\n\n const parsedPath = symbol.getParsedPath();\n // todo: 考虑使用path\n if (!parsedPath) {\n return;\n }\n\n const { keepDirIn3d = symbolAttribute.keepDirIn3d } = symbol.attribute;\n const z = this.z ?? 0;\n context.beginPath();\n\n const callback = (p: ICustomPath2D, a: any) => {\n // 如果是svg的话,合并一下fill和stroke\n if (symbol._parsedPath.svgCache) {\n const obj = Object.assign({}, a);\n obj.fill = a.fill ?? symbol.attribute.fill;\n obj.opacity = a.opacity ?? symbol.attribute.opacity;\n obj.fillOpacity = symbol.attribute.fillOpacity;\n obj.stroke = a.stroke ?? symbol.attribute.stroke;\n a = obj;\n }\n const _runFill = () => {\n if (a.fill) {\n if (fillCb) {\n fillCb(context, symbol.attribute, symbolAttribute);\n } else {\n context.setCommonStyle(symbol, a, originX - x, originY - y, symbolAttribute);\n context.fill();\n }\n }\n };\n const _runStroke = () => {\n if (a.stroke) {\n if (strokeCb) {\n strokeCb(context, symbol.attribute, symbolAttribute);\n } else {\n context.setStrokeStyle(symbol, a, (originX - x) / scaleX, (originY - y) / scaleY, symbolAttribute);\n context.stroke();\n }\n }\n };\n if (!fillStrokeOrder) {\n _runFill();\n _runStroke();\n } else {\n _runStroke();\n _runFill();\n }\n };\n if (keepDirIn3d && context.camera && context.project) {\n const p = context.project(x, y, z);\n const camera = context.camera;\n context.camera = null;\n if (\n parsedPath.draw(\n context,\n isArray(size) ? [size[0] * scaleX, size[1] * scaleY] : size * scaleX,\n p.x,\n p.y,\n undefined,\n callback\n ) === false\n ) {\n context.closePath();\n }\n context.camera = camera;\n } else {\n if (parsedPath.draw(context, size, x, y, z, callback) === false) {\n context.closePath();\n }\n }\n\n // shadow\n context.setShadowBlendStyle && context.setShadowBlendStyle(symbol, symbol.attribute, symbolAttribute);\n\n this.beforeRenderStep(\n symbol,\n context,\n x,\n y,\n doFill,\n doStroke,\n fVisible,\n sVisible,\n symbolAttribute,\n drawContext,\n fillCb,\n strokeCb\n );\n\n // if (fill !== false) {\n // context.setCommonStyle(symbol.attribute, symbolAttribute);\n // context.fill();\n // }\n // if (stroke !== false) {\n // context.setStrokeStyle(symbol.attribute, symbolAttribute);\n // context.stroke();\n // }\n\n // svg就不用fill和stroke了\n const _runFill = () => {\n if (doFill && !parsedPath.isSvg) {\n if (fillCb) {\n fillCb(context, symbol.attribute, symbolAttribute);\n } else if (fVisible) {\n context.setCommonStyle(symbol, symbol.attribute, originX - x, originY - y, symbolAttribute);\n context.fill();\n }\n }\n };\n const _runStroke = () => {\n if (doStroke && !parsedPath.isSvg) {\n if (strokeCb) {\n strokeCb(context, symbol.attribute, symbolAttribute);\n } else if (sVisible) {\n context.setStrokeStyle(\n symbol,\n symbol.attribute,\n (originX - x) / scaleX,\n (originY - y) / scaleY,\n symbolAttribute\n );\n context.stroke();\n }\n }\n };\n\n if (!fillStrokeOrder) {\n _runFill();\n _runStroke();\n } else {\n _runStroke();\n _runFill();\n }\n\n this.afterRenderStep(\n symbol,\n context,\n x,\n y,\n doFill,\n doStroke,\n fVisible,\n sVisible,\n symbolAttribute,\n drawContext,\n fillCb,\n strokeCb\n );\n }\n\n draw(symbol: ISymbol, renderService: IRenderService, drawContext: IDrawContext, params?: IGraphicRenderDrawParams) {\n const symbolAttribute = getTheme(symbol, params?.theme).symbol;\n this._draw(symbol, symbolAttribute, false, drawContext, params);\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/render/contributions/render/symbol-render.ts"],"names":[],"mappings":"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","file":"symbol-render.js","sourcesContent":["import { inject, injectable, named } from '../../../common/inversify-lite';\n// eslint-disable-next-line\nimport { ContributionProvider } from '../../../common/contribution-provider';\nimport { getTheme } from '../../../graphic/theme';\nimport { SYMBOL_NUMBER_TYPE } from '../../../graphic/constants';\nimport type {\n IGraphicAttribute,\n IContext2d,\n IMarkAttribute,\n ISymbol,\n IThemeAttribute,\n ISymbolRenderContribution,\n IDrawContext,\n IRenderService,\n IGraphicRender,\n IGraphicRenderDrawParams,\n IContributionProvider,\n ICustomPath2D\n} from '../../../interface';\nimport type {} from '../../render-service';\nimport { BaseRender } from './base-render';\nimport { SymbolRenderContribution } from './contributions/constants';\nimport { isArray } from '@visactor/vutils';\nimport {\n defaultSymbolBackgroundRenderContribution,\n defaultSymbolClipRangeStrokeRenderContribution,\n defaultSymbolRenderContribution,\n defaultSymbolTextureRenderContribution\n} from './contributions';\n\n@injectable()\nexport class DefaultCanvasSymbolRender extends BaseRender<ISymbol> implements IGraphicRender {\n type: 'symbol';\n numberType: number = SYMBOL_NUMBER_TYPE;\n\n constructor(\n @inject(ContributionProvider)\n @named(SymbolRenderContribution)\n protected readonly symbolRenderContribitions: IContributionProvider<ISymbolRenderContribution>\n ) {\n super();\n this.builtinContributions = [\n defaultSymbolRenderContribution,\n defaultSymbolBackgroundRenderContribution,\n defaultSymbolTextureRenderContribution,\n defaultSymbolClipRangeStrokeRenderContribution\n ];\n this.init(symbolRenderContribitions);\n }\n\n drawShape(\n symbol: ISymbol,\n context: IContext2d,\n x: number,\n y: number,\n drawContext: IDrawContext,\n params?: IGraphicRenderDrawParams,\n fillCb?: (\n ctx: IContext2d,\n markAttribute: Partial<IMarkAttribute & IGraphicAttribute>,\n themeAttribute: IThemeAttribute\n ) => boolean,\n strokeCb?: (\n ctx: IContext2d,\n markAttribute: Partial<IMarkAttribute & IGraphicAttribute>,\n themeAttribute: IThemeAttribute\n ) => boolean\n ) {\n // const symbolAttribute = graphicService.themeService.getCurrentTheme().symbolAttribute;\n const symbolAttribute = getTheme(symbol, params?.theme).symbol;\n\n const {\n size = symbolAttribute.size,\n x: originX = symbolAttribute.x,\n y: originY = symbolAttribute.y,\n scaleX = symbolAttribute.scaleX,\n scaleY = symbolAttribute.scaleY,\n fillStrokeOrder = symbolAttribute.fillStrokeOrder,\n clipRange = symbolAttribute.clipRange\n } = symbol.attribute;\n\n const data = this.valid(symbol, symbolAttribute, fillCb, strokeCb);\n if (!data) {\n return;\n }\n const { fVisible, sVisible, doFill, doStroke } = data;\n\n const parsedPath = symbol.getParsedPath();\n // todo: 考虑使用path\n if (!parsedPath) {\n return;\n }\n\n const { keepDirIn3d = symbolAttribute.keepDirIn3d } = symbol.attribute;\n const z = this.z ?? 0;\n context.beginPath();\n\n const callback = (p: ICustomPath2D, a: any) => {\n // 如果是svg的话,合并一下fill和stroke\n if (symbol._parsedPath.svgCache) {\n const obj = Object.assign({}, a);\n obj.fill = a.fill ?? symbol.attribute.fill;\n obj.opacity = a.opacity ?? symbol.attribute.opacity;\n obj.fillOpacity = symbol.attribute.fillOpacity;\n obj.stroke = a.stroke ?? symbol.attribute.stroke;\n obj.lineWidth = a.lineWidth ?? symbol.attribute.lineWidth;\n a = obj;\n }\n const _runFill = () => {\n if (a.fill) {\n if (fillCb) {\n fillCb(context, symbol.attribute, symbolAttribute);\n } else {\n context.setCommonStyle(symbol, a, originX - x, originY - y, symbolAttribute);\n context.fill();\n }\n }\n };\n const _runStroke = () => {\n if (a.stroke) {\n if (strokeCb) {\n strokeCb(context, symbol.attribute, symbolAttribute);\n } else if (sVisible && clipRange >= 1) {\n context.setStrokeStyle(symbol, a, (originX - x) / scaleX, (originY - y) / scaleY, symbolAttribute);\n context.stroke();\n }\n }\n };\n if (!fillStrokeOrder) {\n _runFill();\n _runStroke();\n } else {\n _runStroke();\n _runFill();\n }\n };\n let _size = size;\n let _x = x;\n let _y = y;\n let _z = z;\n const camera = context.camera;\n if (keepDirIn3d && camera && context.project) {\n const p = context.project(x, y, z);\n context.camera = null;\n _size = isArray(size) ? [size[0] * scaleX, size[1] * scaleY] : size * scaleX;\n _x = p.x;\n _y = p.y;\n _z = undefined;\n }\n if (parsedPath.draw(context, size, _x, _y, _z, callback) === false) {\n context.closePath();\n }\n context.camera = camera;\n\n // shadow\n context.setShadowBlendStyle && context.setShadowBlendStyle(symbol, symbol.attribute, symbolAttribute);\n\n this.beforeRenderStep(\n symbol,\n context,\n x,\n y,\n doFill,\n doStroke,\n fVisible,\n sVisible,\n symbolAttribute,\n drawContext,\n fillCb,\n strokeCb\n );\n\n // if (fill !== false) {\n // context.setCommonStyle(symbol.attribute, symbolAttribute);\n // context.fill();\n // }\n // if (stroke !== false) {\n // context.setStrokeStyle(symbol.attribute, symbolAttribute);\n // context.stroke();\n // }\n\n // svg就不用fill和stroke了\n const _runFill = () => {\n if (doFill && !parsedPath.isSvg) {\n if (fillCb) {\n fillCb(context, symbol.attribute, symbolAttribute);\n } else if (fVisible) {\n context.setCommonStyle(symbol, symbol.attribute, originX - x, originY - y, symbolAttribute);\n context.fill();\n }\n }\n };\n const _runStroke = () => {\n if (doStroke && !parsedPath.isSvg) {\n if (strokeCb) {\n strokeCb(context, symbol.attribute, symbolAttribute);\n } else if (sVisible && clipRange >= 1) {\n // 如果clipRange < 1,就需要靠afterRender进行绘制了\n context.setStrokeStyle(\n symbol,\n symbol.attribute,\n (originX - x) / scaleX,\n (originY - y) / scaleY,\n symbolAttribute\n );\n context.stroke();\n }\n }\n };\n\n if (!fillStrokeOrder) {\n _runFill();\n _runStroke();\n } else {\n _runStroke();\n _runFill();\n }\n\n this.afterRenderStep(\n symbol,\n context,\n x,\n y,\n doFill,\n doStroke,\n fVisible,\n sVisible,\n symbolAttribute,\n drawContext,\n fillCb,\n strokeCb\n );\n }\n\n draw(symbol: ISymbol, renderService: IRenderService, drawContext: IDrawContext, params?: IGraphicRenderDrawParams) {\n const symbolAttribute = getTheme(symbol, params?.theme).symbol;\n this._draw(symbol, symbolAttribute, false, drawContext, params);\n }\n}\n"]}
|
|
@@ -1,11 +1,10 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { IContext2d, IFillType, IStrokeType, IArc, IPath2D, IBackgroundConfig } from '../../../interface';
|
|
2
2
|
export declare function runFill(fill: IFillType, background?: string | any | HTMLImageElement | HTMLCanvasElement | IBackgroundConfig): boolean;
|
|
3
3
|
export declare function runStroke(stroke: IStrokeType | IStrokeType[], lineWidth: number): boolean;
|
|
4
4
|
export declare function fillVisible(opacity: number, fillOpacity: number, fill: IFillType): boolean;
|
|
5
5
|
export declare function rectFillVisible(opacity: number, fillOpacity: number, width: number, height: number, fill: IFillType): boolean;
|
|
6
6
|
export declare function strokeVisible(opacity: number, strokeOpacity: number): boolean;
|
|
7
7
|
export declare function rectStrokeVisible(opacity: number, strokeOpacity: number, width: number, height: number): boolean;
|
|
8
|
-
export declare function drawPathProxy(graphic: IGraphic, context: IContext2d, x: number, y: number, drawContext: IDrawContext, params?: IGraphicRenderDrawParams, fillCb?: (ctx: IContext2d, markAttribute: Partial<IMarkAttribute & IGraphicAttribute>, themeAttribute: IThemeAttribute) => boolean, strokeCb?: (ctx: IContext2d, markAttribute: Partial<IMarkAttribute & IGraphicAttribute>, themeAttribute: IThemeAttribute) => boolean): boolean;
|
|
9
8
|
export declare function intersect(x0: number, y0: number, x1: number, y1: number, x2: number, y2: number, x3: number, y3: number): number[];
|
|
10
9
|
export declare function cornerTangents(x0: number, y0: number, x1: number, y1: number, r1: number, rc: number, clockwise: number): {
|
|
11
10
|
cx: number;
|
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: !0
|
|
5
|
-
}), exports.drawArcPath = exports.calculateArcCornerRadius = exports.cornerTangents = exports.intersect = exports.
|
|
5
|
+
}), exports.drawArcPath = exports.calculateArcCornerRadius = exports.cornerTangents = exports.intersect = exports.rectStrokeVisible = exports.strokeVisible = exports.rectFillVisible = exports.fillVisible = exports.runStroke = exports.runFill = void 0;
|
|
6
6
|
|
|
7
|
-
const vutils_1 = require("@visactor/vutils")
|
|
7
|
+
const vutils_1 = require("@visactor/vutils");
|
|
8
8
|
|
|
9
9
|
function runFill(fill, background) {
|
|
10
10
|
return !(!fill && !background);
|
|
@@ -32,21 +32,6 @@ function rectStrokeVisible(opacity, strokeOpacity, width, height) {
|
|
|
32
32
|
return opacity * strokeOpacity > 0 && 0 !== width && 0 !== height;
|
|
33
33
|
}
|
|
34
34
|
|
|
35
|
-
function drawPathProxy(graphic, context, x, y, drawContext, params, fillCb, strokeCb) {
|
|
36
|
-
if (!graphic.pathProxy) return !1;
|
|
37
|
-
const themeAttributes = (0, theme_1.getTheme)(graphic, null == params ? void 0 : params.theme)[graphic.type.replace("3d", "")], {fill: fill = themeAttributes.fill, stroke: stroke = themeAttributes.stroke, opacity: opacity = themeAttributes.opacity, fillOpacity: fillOpacity = themeAttributes.fillOpacity, lineWidth: lineWidth = themeAttributes.lineWidth, strokeOpacity: strokeOpacity = themeAttributes.strokeOpacity, visible: visible = themeAttributes.visible, x: originX = themeAttributes.x, y: originY = themeAttributes.y} = graphic.attribute, fVisible = fillVisible(opacity, fillOpacity, fill), sVisible = strokeVisible(opacity, strokeOpacity), doFill = runFill(fill), doStroke = runStroke(stroke, lineWidth);
|
|
38
|
-
if (!visible) return !0;
|
|
39
|
-
if (!doFill && !doStroke) return !0;
|
|
40
|
-
if (!(fVisible || sVisible || fillCb || strokeCb)) return !0;
|
|
41
|
-
context.beginPath();
|
|
42
|
-
const path = "function" == typeof graphic.pathProxy ? graphic.pathProxy(graphic.attribute) : graphic.pathProxy;
|
|
43
|
-
return (0, render_command_list_1.renderCommandList)(path.commandList, context, x, y),
|
|
44
|
-
context.setShadowBlendStyle && context.setShadowBlendStyle(graphic, graphic.attribute, themeAttributes),
|
|
45
|
-
doStroke && (strokeCb ? strokeCb(context, graphic.attribute, themeAttributes) : sVisible && (context.setStrokeStyle(graphic, graphic.attribute, x - originX, y - originY, themeAttributes),
|
|
46
|
-
context.stroke())), doFill && (fillCb ? fillCb(context, graphic.attribute, themeAttributes) : fVisible && (context.setCommonStyle(graphic, graphic.attribute, x - originX, y - originY, themeAttributes),
|
|
47
|
-
context.fill())), !0;
|
|
48
|
-
}
|
|
49
|
-
|
|
50
35
|
function intersect(x0, y0, x1, y1, x2, y2, x3, y3) {
|
|
51
36
|
const x10 = x1 - x0, y10 = y1 - y0, x32 = x3 - x2, y32 = y3 - y2;
|
|
52
37
|
let t = y32 * x10 - x32 * y10;
|
|
@@ -175,7 +160,6 @@ function drawArcPath(arc, context, cx, cy, outerRadius, innerRadius, partStroke)
|
|
|
175
160
|
|
|
176
161
|
exports.runFill = runFill, exports.runStroke = runStroke, exports.fillVisible = fillVisible,
|
|
177
162
|
exports.rectFillVisible = rectFillVisible, exports.strokeVisible = strokeVisible,
|
|
178
|
-
exports.rectStrokeVisible = rectStrokeVisible, exports.
|
|
179
|
-
exports.
|
|
180
|
-
exports.drawArcPath = drawArcPath;
|
|
163
|
+
exports.rectStrokeVisible = rectStrokeVisible, exports.intersect = intersect, exports.cornerTangents = cornerTangents,
|
|
164
|
+
exports.calculateArcCornerRadius = calculateArcCornerRadius, exports.drawArcPath = drawArcPath;
|
|
181
165
|
//# sourceMappingURL=utils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/render/contributions/render/utils.ts"],"names":[],"mappings":";;;AAAA,6CAAoG;AACpG,6EAAwE;AACxE,kDAAkD;AAoBlD,SAAgB,OAAO,CACrB,IAAe,EACf,UAAoF;IAEpF,OAAO,CAAC,CAAC,CAAC,IAAI,IAAI,UAAU,CAAC,CAAC;AAChC,CAAC;AALD,0BAKC;AAMD,SAAgB,SAAS,CAAC,MAAmC,EAAE,SAAiB;IAC9E,IAAI,CAAmB,CAAC;IACxB,IAAI,IAAA,gBAAO,EAAC,MAAM,CAAC,EAAE;QACnB,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,IAAI,IAAI,KAAK,SAAS,CAAC,CAAC;KACrD;SAAM;QACL,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;KACd;IACD,OAAO,CAAC,IAAI,SAAS,GAAG,CAAC,CAAC;AAC5B,CAAC;AARD,8BAQC;AAQD,SAAgB,WAAW,CAAC,OAAe,EAAE,WAAmB,EAAE,IAAe;IAC/E,OAAO,IAAI,IAAI,OAAO,GAAG,WAAW,GAAG,CAAC,CAAC;AAC3C,CAAC;AAFD,kCAEC;AAED,SAAgB,eAAe,CAAC,OAAe,EAAE,WAAmB,EAAE,KAAa,EAAE,MAAc,EAAE,IAAe;IAClH,OAAO,IAAI,IAAI,OAAO,GAAG,WAAW,GAAG,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,MAAM,KAAK,CAAC,CAAC;AAC1E,CAAC;AAFD,0CAEC;AASD,SAAgB,aAAa,CAAC,OAAe,EAAE,aAAqB;IAClE,OAAO,OAAO,GAAG,aAAa,GAAG,CAAC,CAAC;AACrC,CAAC;AAFD,sCAEC;AAED,SAAgB,iBAAiB,CAAC,OAAe,EAAE,aAAqB,EAAE,KAAa,EAAE,MAAc;IACrG,OAAO,OAAO,GAAG,aAAa,GAAG,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,MAAM,KAAK,CAAC,CAAC;AACpE,CAAC;AAFD,8CAEC;AAED,SAAgB,aAAa,CAC3B,OAAiB,EACjB,OAAmB,EACnB,CAAS,EACT,CAAS,EACT,WAAyB,EACzB,MAAiC,EACjC,MAIY,EACZ,QAIY;IAEZ,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE;QACtB,OAAO,KAAK,CAAC;KACd;IAED,MAAM,eAAe,GAAI,IAAA,gBAAQ,EAAC,OAAO,EAAE,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,KAAK,CAAS,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;IAElG,MAAM,EACJ,IAAI,GAAG,eAAe,CAAC,IAAI,EAC3B,MAAM,GAAG,eAAe,CAAC,MAAM,EAC/B,OAAO,GAAG,eAAe,CAAC,OAAO,EACjC,WAAW,GAAG,eAAe,CAAC,WAAW,EACzC,SAAS,GAAG,eAAe,CAAC,SAAS,EACrC,aAAa,GAAG,eAAe,CAAC,aAAa,EAC7C,OAAO,GAAG,eAAe,CAAC,OAAO,EACjC,CAAC,EAAE,OAAO,GAAG,eAAe,CAAC,CAAC,EAC9B,CAAC,EAAE,OAAO,GAAG,eAAe,CAAC,CAAC,EAC/B,GAAG,OAAO,CAAC,SAAS,CAAC;IAEtB,MAAM,QAAQ,GAAG,WAAW,CAAC,OAAO,EAAE,WAAW,EAAE,IAAI,CAAC,CAAC;IACzD,MAAM,QAAQ,GAAG,aAAa,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;IACvD,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7B,MAAM,QAAQ,GAAG,SAAS,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAE9C,IAAI,CAAC,OAAO,EAAE;QACZ,OAAO,IAAI,CAAC;KACb;IAED,IAAI,CAAC,CAAC,MAAM,IAAI,QAAQ,CAAC,EAAE;QACzB,OAAO,IAAI,CAAC;KACb;IAGD,IAAI,CAAC,CAAC,QAAQ,IAAI,QAAQ,IAAI,MAAM,IAAI,QAAQ,CAAC,EAAE;QACjD,OAAO,IAAI,CAAC;KACb;IAED,OAAO,CAAC,SAAS,EAAE,CAAC;IACpB,MAAM,IAAI,GAAG,OAAO,OAAO,CAAC,SAAS,KAAK,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC;IAChH,IAAA,uCAAiB,EAAC,IAAI,CAAC,WAAW,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAGnD,OAAO,CAAC,mBAAmB,IAAI,OAAO,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC;IAExG,IAAI,QAAQ,EAAE;QACZ,IAAI,QAAQ,EAAE;YACZ,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC;SACvD;aAAM,IAAI,QAAQ,EAAE;YACnB,OAAO,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC,GAAG,OAAO,EAAE,CAAC,GAAG,OAAO,EAAE,eAAe,CAAC,CAAC;YAC9F,OAAO,CAAC,MAAM,EAAE,CAAC;SAClB;KACF;IACD,IAAI,MAAM,EAAE;QACV,IAAI,MAAM,EAAE;YACV,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC;SACrD;aAAM,IAAI,QAAQ,EAAE;YACnB,OAAO,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC,GAAG,OAAO,EAAE,CAAC,GAAG,OAAO,EAAE,eAAe,CAAC,CAAC;YAC9F,OAAO,CAAC,IAAI,EAAE,CAAC;SAChB;KACF;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AA9ED,sCA8EC;AAqBD,SAAgB,SAAS,CACvB,EAAU,EACV,EAAU,EACV,EAAU,EACV,EAAU,EACV,EAAU,EACV,EAAU,EACV,EAAU,EACV,EAAU;IAEV,MAAM,GAAG,GAAG,EAAE,GAAG,EAAE,CAAC;IACpB,MAAM,GAAG,GAAG,EAAE,GAAG,EAAE,CAAC;IACpB,MAAM,GAAG,GAAG,EAAE,GAAG,EAAE,CAAC;IACpB,MAAM,GAAG,GAAG,EAAE,GAAG,EAAE,CAAC;IACpB,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;IAC9B,IAAI,CAAC,GAAG,CAAC,GAAG,gBAAO,EAAE;QACnB,OAAO,EAAE,CAAC;KACX;IACD,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;IAE5C,OAAO,CAAC,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,EAAE,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC;AACtC,CAAC;AArBD,8BAqBC;AAMD,SAAgB,cAAc,CAC5B,EAAU,EACV,EAAU,EACV,EAAU,EACV,EAAU,EACV,EAAU,EACV,EAAU,EACV,SAAiB;IAEjB,MAAM,GAAG,GAAG,EAAE,GAAG,EAAE,CAAC;IACpB,MAAM,GAAG,GAAG,EAAE,GAAG,EAAE,CAAC;IACpB,MAAM,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;IACrE,MAAM,EAAE,GAAG,EAAE,GAAG,GAAG,CAAC;IACpB,MAAM,EAAE,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC;IACrB,MAAM,GAAG,GAAG,EAAE,GAAG,EAAE,CAAC;IACpB,MAAM,GAAG,GAAG,EAAE,GAAG,EAAE,CAAC;IACpB,MAAM,GAAG,GAAG,EAAE,GAAG,EAAE,CAAC;IACpB,MAAM,GAAG,GAAG,EAAE,GAAG,EAAE,CAAC;IACpB,MAAM,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;IAC5B,MAAM,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;IAC5B,MAAM,EAAE,GAAG,GAAG,GAAG,GAAG,CAAC;IACrB,MAAM,EAAE,GAAG,GAAG,GAAG,GAAG,CAAC;IACrB,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;IAC7B,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC;IAClB,MAAM,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;IAChC,MAAM,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACzE,IAAI,GAAG,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;IACjC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;IAClC,MAAM,GAAG,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;IACnC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;IACpC,MAAM,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;IACtB,MAAM,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;IACtB,MAAM,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;IACtB,MAAM,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;IAItB,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE;QACjD,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;KAC1B;IAED,OAAO;QACL,EAAE,EAAE,GAAG;QACP,EAAE,EAAE,GAAG;QACP,GAAG,EAAE,CAAC,EAAE;QACR,GAAG,EAAE,CAAC,EAAE;QACR,GAAG,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;QACvB,GAAG,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;KACxB,CAAC;AACJ,CAAC;AAjDD,wCAiDC;AAED,SAAgB,wBAAwB,CACtC,GAAS,EACT,UAAkB,EAClB,QAAgB,EAChB,WAAmB,EACnB,WAAmB;IAEnB,MAAM,UAAU,GAAG,IAAA,YAAG,EAAC,QAAQ,GAAG,UAAU,CAAC,CAAC;IAC9C,MAAM,YAAY,GAAG,GAAG,CAAC,qBAAqB,EAAE,CAAC;IACjD,MAAM,mBAAmB,GAAG,IAAA,gBAAO,EAAC,YAAY,CAAC,CAAC;IAElD,MAAM,EAAE,eAAe,EAAE,eAAe,EAAE,eAAe,EAAE,aAAa,EAAE,aAAa,EAAE,eAAe,EAAE,GACxG,GAAG,CAAC,gBAAgB,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;IAE7C,MAAM,sBAAsB,GAAG,mBAAmB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC;IACpF,MAAM,oBAAoB,GAAG,mBAAmB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC;IAClF,MAAM,oBAAoB,GAAG,mBAAmB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC;IAClF,MAAM,sBAAsB,GAAG,mBAAmB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC;IACpF,MAAM,oBAAoB,GAAG,IAAI,CAAC,GAAG,CAAC,oBAAoB,EAAE,sBAAsB,CAAC,CAAC;IACpF,MAAM,oBAAoB,GAAG,IAAI,CAAC,GAAG,CAAC,oBAAoB,EAAE,sBAAsB,CAAC,CAAC;IACpF,IAAI,UAAU,GAAG,oBAAoB,CAAC;IACtC,IAAI,UAAU,GAAG,oBAAoB,CAAC;IAEtC,MAAM,IAAI,GAAG,WAAW,GAAG,IAAA,YAAG,EAAC,eAAe,CAAC,CAAC;IAChD,MAAM,IAAI,GAAG,WAAW,GAAG,IAAA,YAAG,EAAC,eAAe,CAAC,CAAC;IAChD,MAAM,IAAI,GAAG,WAAW,GAAG,IAAA,YAAG,EAAC,aAAa,CAAC,CAAC;IAC9C,MAAM,IAAI,GAAG,WAAW,GAAG,IAAA,YAAG,EAAC,aAAa,CAAC,CAAC;IAG9C,IAAI,IAAY,CAAC;IACjB,IAAI,IAAY,CAAC;IACjB,IAAI,IAAY,CAAC;IACjB,IAAI,IAAY,CAAC;IACjB,IAAI,oBAAoB,GAAG,gBAAO,IAAI,oBAAoB,GAAG,gBAAO,EAAE;QACpE,IAAI,GAAG,WAAW,GAAG,IAAA,YAAG,EAAC,aAAa,CAAC,CAAC;QACxC,IAAI,GAAG,WAAW,GAAG,IAAA,YAAG,EAAC,aAAa,CAAC,CAAC;QACxC,IAAI,GAAG,WAAW,GAAG,IAAA,YAAG,EAAC,eAAe,CAAC,CAAC;QAC1C,IAAI,GAAG,WAAW,GAAG,IAAA,YAAG,EAAC,eAAe,CAAC,CAAC;QAG1C,IAAI,UAAU,GAAG,WAAE,EAAE;YACnB,MAAM,EAAE,GAAG,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;YAErE,IAAI,EAAE,EAAE;gBACN,MAAM,EAAE,GAAG,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;gBACxB,MAAM,EAAE,GAAG,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;gBACxB,MAAM,EAAE,GAAG,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;gBACxB,MAAM,EAAE,GAAG,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;gBACxB,MAAM,EAAE,GAAG,CAAC,GAAG,IAAA,YAAG,EAAC,IAAA,aAAI,EAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,IAAA,aAAI,EAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,GAAG,IAAA,aAAI,EAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;gBACxG,MAAM,EAAE,GAAG,IAAA,aAAI,EAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;gBAE/C,UAAU,GAAG,IAAA,YAAG,EAAC,oBAAoB,EAAE,CAAC,WAAW,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;gBACtE,UAAU,GAAG,IAAA,YAAG,EAAC,oBAAoB,EAAE,CAAC,WAAW,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;aACvE;SACF;KACF;IAED,OAAO;QACL,eAAe;QACf,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,UAAU;QACV,UAAU;QACV,sBAAsB;QACtB,oBAAoB;QACpB,oBAAoB;QACpB,oBAAoB;QACpB,eAAe;QACf,aAAa;QACb,eAAe;QACf,aAAa;QACb,eAAe;QACf,sBAAsB;QACtB,oBAAoB;KACrB,CAAC;AACJ,CAAC;AAjFD,4DAiFC;AAID,SAAgB,WAAW,CACzB,GAAS,EACT,OAA6B,EAC7B,EAAU,EACV,EAAU,EACV,WAAmB,EACnB,WAAmB,EACnB,UAAiC;IAEjC,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,GAAG,CAAC,cAAc,EAAE,CAAC;IAEtD,MAAM,UAAU,GAAG,IAAA,YAAG,EAAC,QAAQ,GAAG,UAAU,CAAC,CAAC;IAC9C,MAAM,SAAS,GAAY,QAAQ,GAAG,UAAU,CAAC;IACjD,IAAI,eAAe,GAAY,KAAK,CAAC;IAErC,IAAI,WAAW,GAAG,WAAW,EAAE;QAC7B,MAAM,IAAI,GAAG,WAAW,CAAC;QACzB,WAAW,GAAG,WAAW,CAAC;QAC1B,WAAW,GAAG,IAAI,CAAC;KACpB;IAED,IAAI,WAAW,IAAI,gBAAO,EAAE;QAC1B,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;KACxB;SAAM,IAAI,UAAU,IAAI,YAAG,GAAG,gBAAO,EAAE;QAGtC,OAAO,CAAC,MAAM,CAAC,EAAE,GAAG,WAAW,GAAG,IAAA,YAAG,EAAC,UAAU,CAAC,EAAE,EAAE,GAAG,WAAW,GAAG,IAAA,YAAG,EAAC,UAAU,CAAC,CAAC,CAAC;QACvF,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC,SAAS,CAAC,CAAC;QACnE,IAAI,WAAW,GAAG,gBAAO,EAAE;YACzB,OAAO,CAAC,MAAM,CAAC,EAAE,GAAG,WAAW,GAAG,IAAA,YAAG,EAAC,QAAQ,CAAC,EAAE,EAAE,GAAG,WAAW,GAAG,IAAA,YAAG,EAAC,QAAQ,CAAC,CAAC,CAAC;YACnF,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,WAAW,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC;SACnE;KACF;SAAM;QACL,MAAM,EACJ,eAAe,EACf,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,UAAU,EACV,sBAAsB,EACtB,oBAAoB,EACpB,oBAAoB,EACpB,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,eAAe,EACf,aAAa,EACb,UAAU,EACV,eAAe,EACf,aAAa,EACb,eAAe,EACf,sBAAsB,EACtB,oBAAoB,EACpB,oBAAoB,EACrB,GAAG,wBAAwB,CAAC,GAAG,EAAE,UAAU,EAAE,QAAQ,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;QAGlF,IAAI,eAAe,GAAG,KAAK,EAAE;YAE3B,IAAI,UAAU,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE;gBAClD,OAAO,CAAC,MAAM,CAAC,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC;aACtC;YACD,eAAe,GAAG,IAAI,CAAC;SACxB;aAAM,IAAI,UAAU,GAAG,gBAAO,EAAE;YAC/B,MAAM,iBAAiB,GAAG,IAAA,YAAG,EAAC,sBAAsB,EAAE,UAAU,CAAC,CAAC;YAClE,MAAM,eAAe,GAAG,IAAA,YAAG,EAAC,oBAAoB,EAAE,UAAU,CAAC,CAAC;YAE9D,MAAM,EAAE,GAAG,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;YACrG,MAAM,EAAE,GAAG,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;YAGnG,IAAI,UAAU,GAAG,oBAAoB,IAAI,iBAAiB,KAAK,eAAe,EAAE;gBAC9E,IAAI,CAAC,UAAU,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE;oBAChC,OAAO,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC;oBACzD,OAAO,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,UAAU,EAAE,IAAA,cAAK,EAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,IAAA,cAAK,EAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC;iBAC3G;qBAAM;oBACL,OAAO,CAAC,MAAM,CACZ,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,UAAU,GAAG,IAAA,YAAG,EAAC,IAAA,cAAK,EAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,EACpD,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,UAAU,GAAG,IAAA,YAAG,EAAC,IAAA,cAAK,EAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CACrD,CAAC;iBACH;aACF;iBAAM;gBAEL,IAAI,CAAC,UAAU,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE;oBAChC,OAAO,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC;oBACzD,iBAAiB,GAAG,CAAC;wBACnB,OAAO,CAAC,GAAG,CACT,EAAE,GAAG,EAAE,CAAC,EAAE,EACV,EAAE,GAAG,EAAE,CAAC,EAAE,EACV,iBAAiB,EACjB,IAAA,cAAK,EAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,EACrB,IAAA,cAAK,EAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,EACrB,CAAC,SAAS,CACX,CAAC;oBACJ,OAAO,CAAC,GAAG,CACT,EAAE,EACF,EAAE,EACF,WAAW,EACX,IAAA,cAAK,EAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EACrC,IAAA,cAAK,EAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EACrC,CAAC,SAAS,CACX,CAAC;oBACF,eAAe,GAAG,CAAC;wBACjB,OAAO,CAAC,GAAG,CACT,EAAE,GAAG,EAAE,CAAC,EAAE,EACV,EAAE,GAAG,EAAE,CAAC,EAAE,EACV,eAAe,EACf,IAAA,cAAK,EAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,EACrB,IAAA,cAAK,EAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,EACrB,CAAC,SAAS,CACX,CAAC;iBACL;qBAAM;oBACL,IAAI,eAAe,GAAG,CAAC,EAAE;wBACvB,OAAO,CAAC,MAAM,CACZ,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,eAAe,GAAG,IAAA,YAAG,EAAC,IAAA,cAAK,EAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,EACzD,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,eAAe,GAAG,IAAA,YAAG,EAAC,IAAA,cAAK,EAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAC1D,CAAC;qBACH;yBAAM;wBACL,OAAO,CAAC,MAAM,CAAC,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG,WAAW,GAAG,IAAA,YAAG,EAAC,aAAa,CAAC,CAAC,CAAC;qBAClE;iBACF;aACF;SACF;aAAM;YAEL,IAAI,CAAC,UAAU,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE;gBAChC,OAAO,CAAC,MAAM,CAAC,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC;gBACrC,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,WAAW,EAAE,eAAe,EAAE,aAAa,EAAE,CAAC,SAAS,CAAC,CAAC;aAC9E;iBAAM;gBACL,OAAO,CAAC,MAAM,CAAC,EAAE,GAAG,WAAW,GAAG,IAAA,YAAG,EAAC,aAAa,CAAC,EAAE,EAAE,GAAG,WAAW,GAAG,IAAA,YAAG,EAAC,aAAa,CAAC,CAAC,CAAC;aAC9F;SACF;QAGD,IAAI,CAAC,CAAC,WAAW,GAAG,gBAAO,CAAC,IAAI,eAAe,GAAG,KAAK,EAAE;YACvD,IAAI,CAAC,UAAU,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE;gBAChC,OAAO,CAAC,MAAM,CAAC,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC;aACtC;iBAAM;gBACL,OAAO,CAAC,MAAM,CAAC,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC;aACtC;YACD,eAAe,GAAG,IAAI,CAAC;SACxB;aAAM,IAAI,UAAU,GAAG,gBAAO,EAAE;YAC/B,MAAM,iBAAiB,GAAG,IAAA,YAAG,EAAC,sBAAsB,EAAE,UAAU,CAAC,CAAC;YAClE,MAAM,eAAe,GAAG,IAAA,YAAG,EAAC,oBAAoB,EAAE,UAAU,CAAC,CAAC;YAE9D,MAAM,EAAE,GAAG,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,eAAe,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;YACpG,MAAM,EAAE,GAAG,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,iBAAiB,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;YAEtG,IAAI,CAAC,UAAU,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE;gBAChC,OAAO,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC;aAC1D;iBAAM;gBACL,OAAO,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC;aAC1D;YAGD,IAAI,UAAU,GAAG,oBAAoB,IAAI,iBAAiB,KAAK,eAAe,EAAE;gBAC9E,MAAM,WAAW,GAAG,IAAA,cAAK,EAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC;gBAC1C,IAAI,CAAC,UAAU,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE;oBAChC,OAAO,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,UAAU,EAAE,IAAA,cAAK,EAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,WAAW,EAAE,CAAC,SAAS,CAAC,CAAC;iBACjG;qBAAM;oBACL,OAAO,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,IAAA,YAAG,EAAC,WAAW,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,IAAA,YAAG,EAAC,WAAW,CAAC,CAAC,CAAC;iBAC9E;aACF;iBAAM;gBAEL,IAAI,CAAC,UAAU,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE;oBAChC,eAAe,GAAG,CAAC;wBACjB,OAAO,CAAC,GAAG,CACT,EAAE,GAAG,EAAE,CAAC,EAAE,EACV,EAAE,GAAG,EAAE,CAAC,EAAE,EACV,eAAe,EACf,IAAA,cAAK,EAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,EACrB,IAAA,cAAK,EAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,EACrB,CAAC,SAAS,CACX,CAAC;oBACJ,OAAO,CAAC,GAAG,CACT,EAAE,EACF,EAAE,EACF,WAAW,EACX,IAAA,cAAK,EAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EACrC,IAAA,cAAK,EAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EACrC,SAAS,CACV,CAAC;oBACF,iBAAiB,GAAG,CAAC;wBACnB,OAAO,CAAC,GAAG,CACT,EAAE,GAAG,EAAE,CAAC,EAAE,EACV,EAAE,GAAG,EAAE,CAAC,EAAE,EACV,iBAAiB,EACjB,IAAA,cAAK,EAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,EACrB,IAAA,cAAK,EAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,EACrB,CAAC,SAAS,CACX,CAAC;iBACL;qBAAM;oBACL,IAAI,iBAAiB,GAAG,CAAC,EAAE;wBACzB,OAAO,CAAC,MAAM,CACZ,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,iBAAiB,GAAG,IAAA,YAAG,EAAC,IAAA,cAAK,EAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,EAC3D,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,iBAAiB,GAAG,IAAA,YAAG,EAAC,IAAA,cAAK,EAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAC5D,CAAC;qBACH;yBAAM;wBACL,OAAO,CAAC,MAAM,CAAC,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC;qBACtC;iBACF;aACF;SACF;aAAM;YAEL,IAAI,CAAC,UAAU,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE;gBAChC,OAAO,CAAC,MAAM,CAAC,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC;aACtC;iBAAM;gBACL,OAAO,CAAC,MAAM,CAAC,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC;aACtC;YACD,IAAI,CAAC,UAAU,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE;gBAChC,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,WAAW,EAAE,aAAa,EAAE,eAAe,EAAE,SAAS,CAAC,CAAC;aAC7E;iBAAM;gBACL,OAAO,CAAC,MAAM,CAAC,EAAE,GAAG,WAAW,GAAG,IAAA,YAAG,EAAC,eAAe,CAAC,EAAE,EAAE,GAAG,WAAW,GAAG,IAAA,YAAG,EAAC,eAAe,CAAC,CAAC,CAAC;aAClG;SACF;KACF;IAED,IAAI,CAAC,UAAU,EAAE;QACf,OAAO,CAAC,SAAS,EAAE,CAAC;KACrB;SAAM,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE;QACxB,OAAO,CAAC,MAAM,CAAC,EAAE,GAAG,WAAW,GAAG,IAAA,YAAG,EAAC,UAAU,CAAC,EAAE,EAAE,GAAG,WAAW,GAAG,IAAA,YAAG,EAAC,UAAU,CAAC,CAAC,CAAC;KACxF;IAED,OAAO,eAAe,CAAC;AACzB,CAAC;AAjOD,kCAiOC","file":"utils.js","sourcesContent":["import { isArray, abs, acos, atan2, cos, epsilon, min, pi, sin, sqrt, pi2 } from '@visactor/vutils';\nimport { renderCommandList } from '../../../common/render-command-list';\nimport { getTheme } from '../../../graphic/theme';\nimport type {\n IGraphicAttribute,\n IContext2d,\n IGraphic,\n IMarkAttribute,\n IThemeAttribute,\n IFillType,\n IStrokeType,\n IArc,\n IPath2D,\n IGraphicRenderDrawParams,\n IDrawContext,\n IBackgroundConfig\n} from '../../../interface';\n/**\n * 是否需要执行fill逻辑\n * @param fill\n * @returns\n */\nexport function runFill(\n fill: IFillType,\n background?: string | any | HTMLImageElement | HTMLCanvasElement | IBackgroundConfig\n) {\n return !!(fill || background);\n}\n/**\n * 是否需要执行stroke逻辑\n * @param stroke\n * @returns\n */\nexport function runStroke(stroke: IStrokeType | IStrokeType[], lineWidth: number) {\n let s: boolean | number;\n if (isArray(stroke)) {\n s = stroke.some(item => item || item === undefined);\n } else {\n s = !!stroke;\n }\n return s && lineWidth > 0;\n}\n\n/**\n * 是否fill部分可见\n * @param opacity\n * @param fillOpacity\n * @returns\n */\nexport function fillVisible(opacity: number, fillOpacity: number, fill: IFillType) {\n return fill && opacity * fillOpacity > 0;\n}\n\nexport function rectFillVisible(opacity: number, fillOpacity: number, width: number, height: number, fill: IFillType) {\n return fill && opacity * fillOpacity > 0 && width !== 0 && height !== 0;\n}\n\n/**\n * 是否stroke部分可见\n * @param opacity\n * @param strokeOpacity\n * @param lineWidth\n * @returns\n */\nexport function strokeVisible(opacity: number, strokeOpacity: number) {\n return opacity * strokeOpacity > 0;\n}\n\nexport function rectStrokeVisible(opacity: number, strokeOpacity: number, width: number, height: number) {\n return opacity * strokeOpacity > 0 && width !== 0 && height !== 0;\n}\n\nexport function drawPathProxy(\n graphic: IGraphic,\n context: IContext2d,\n x: number,\n y: number,\n drawContext: IDrawContext,\n params?: IGraphicRenderDrawParams,\n fillCb?: (\n ctx: IContext2d,\n markAttribute: Partial<IMarkAttribute & IGraphicAttribute>,\n themeAttribute: IThemeAttribute\n ) => boolean,\n strokeCb?: (\n ctx: IContext2d,\n markAttribute: Partial<IMarkAttribute & IGraphicAttribute>,\n themeAttribute: IThemeAttribute\n ) => boolean\n) {\n if (!graphic.pathProxy) {\n return false;\n }\n\n const themeAttributes = (getTheme(graphic, params?.theme) as any)[graphic.type.replace('3d', '')];\n\n const {\n fill = themeAttributes.fill,\n stroke = themeAttributes.stroke,\n opacity = themeAttributes.opacity,\n fillOpacity = themeAttributes.fillOpacity,\n lineWidth = themeAttributes.lineWidth,\n strokeOpacity = themeAttributes.strokeOpacity,\n visible = themeAttributes.visible,\n x: originX = themeAttributes.x,\n y: originY = themeAttributes.y\n } = graphic.attribute;\n // 不绘制或者透明\n const fVisible = fillVisible(opacity, fillOpacity, fill);\n const sVisible = strokeVisible(opacity, strokeOpacity);\n const doFill = runFill(fill);\n const doStroke = runStroke(stroke, lineWidth);\n\n if (!visible) {\n return true;\n }\n\n if (!(doFill || doStroke)) {\n return true;\n }\n\n // 如果存在fillCb和strokeCb,那就不直接跳过\n if (!(fVisible || sVisible || fillCb || strokeCb)) {\n return true;\n }\n\n context.beginPath();\n const path = typeof graphic.pathProxy === 'function' ? graphic.pathProxy(graphic.attribute) : graphic.pathProxy;\n renderCommandList(path.commandList, context, x, y);\n\n // shadow\n context.setShadowBlendStyle && context.setShadowBlendStyle(graphic, graphic.attribute, themeAttributes);\n\n if (doStroke) {\n if (strokeCb) {\n strokeCb(context, graphic.attribute, themeAttributes);\n } else if (sVisible) {\n context.setStrokeStyle(graphic, graphic.attribute, x - originX, y - originY, themeAttributes);\n context.stroke();\n }\n }\n if (doFill) {\n if (fillCb) {\n fillCb(context, graphic.attribute, themeAttributes);\n } else if (fVisible) {\n context.setCommonStyle(graphic, graphic.attribute, x - originX, y - originY, themeAttributes);\n context.fill();\n }\n }\n return true;\n}\n\n/**\n * 部分源码参考 https://github.com/d3/d3-shape/\n * Copyright 2010-2022 Mike Bostock\n\n Permission to use, copy, modify, and/or distribute this software for any purpose\n with or without fee is hereby granted, provided that the above copyright notice\n and this permission notice appear in all copies.\n\n THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND\n FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS\n OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER\n TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF\n THIS SOFTWARE.\n */\n\n// 基于d3-shape\n// https://github.com/d3/d3-shape/blob/main/src/arc.js\nexport function intersect(\n x0: number,\n y0: number,\n x1: number,\n y1: number,\n x2: number,\n y2: number,\n x3: number,\n y3: number\n) {\n const x10 = x1 - x0;\n const y10 = y1 - y0;\n const x32 = x3 - x2;\n const y32 = y3 - y2;\n let t = y32 * x10 - x32 * y10;\n if (t * t < epsilon) {\n return [];\n }\n t = (x32 * (y0 - y2) - y32 * (x0 - x2)) / t;\n\n return [x0 + t * x10, y0 + t * y10];\n}\n\n// 基于d3-shape\n// https://github.com/d3/d3-shape/blob/main/src/arc.js\n// Compute perpendicular offset line of length rc.\n// http://mathworld.wolfram.com/Circle-LineIntersection.html\nexport function cornerTangents(\n x0: number,\n y0: number,\n x1: number,\n y1: number,\n r1: number,\n rc: number,\n clockwise: number\n) {\n const x01 = x0 - x1;\n const y01 = y0 - y1;\n const lo = (clockwise ? rc : -rc) / Math.sqrt(x01 * x01 + y01 * y01);\n const ox = lo * y01;\n const oy = -lo * x01;\n const x11 = x0 + ox;\n const y11 = y0 + oy;\n const x10 = x1 + ox;\n const y10 = y1 + oy;\n const x00 = (x11 + x10) / 2;\n const y00 = (y11 + y10) / 2;\n const dx = x10 - x11;\n const dy = y10 - y11;\n const d2 = dx * dx + dy * dy;\n const r = r1 - rc;\n const D = x11 * y10 - x10 * y11;\n const d = (dy < 0 ? -1 : 1) * Math.sqrt(Math.max(0, r * r * d2 - D * D));\n let cx0 = (D * dy - dx * d) / d2;\n let cy0 = (-D * dx - dy * d) / d2;\n const cx1 = (D * dy + dx * d) / d2;\n const cy1 = (-D * dx + dy * d) / d2;\n const dx0 = cx0 - x00;\n const dy0 = cy0 - y00;\n const dx1 = cx1 - x00;\n const dy1 = cy1 - y00;\n\n // Pick the closer of the two intersection points.\n // TODO Is there a faster way to determine which intersection to use?\n if (dx0 * dx0 + dy0 * dy0 > dx1 * dx1 + dy1 * dy1) {\n (cx0 = cx1), (cy0 = cy1);\n }\n\n return {\n cx: cx0,\n cy: cy0,\n x01: -ox,\n y01: -oy,\n x11: cx0 * (r1 / r - 1),\n y11: cy0 * (r1 / r - 1)\n };\n}\n\nexport function calculateArcCornerRadius(\n arc: IArc,\n startAngle: number,\n endAngle: number,\n innerRadius: number,\n outerRadius: number\n) {\n const deltaAngle = abs(endAngle - startAngle);\n const cornerRadius = arc.getParsedCornerRadius();\n const cornerRadiusIsArray = isArray(cornerRadius);\n // Or is it a circular or annular sector?\n const { outerDeltaAngle, innerDeltaAngle, outerStartAngle, outerEndAngle, innerEndAngle, innerStartAngle } =\n arc.getParsePadAngle(startAngle, endAngle);\n\n const outerCornerRadiusStart = cornerRadiusIsArray ? cornerRadius[0] : cornerRadius;\n const outerCornerRadiusEnd = cornerRadiusIsArray ? cornerRadius[1] : cornerRadius;\n const innerCornerRadiusEnd = cornerRadiusIsArray ? cornerRadius[2] : cornerRadius;\n const innerCornerRadiusStart = cornerRadiusIsArray ? cornerRadius[3] : cornerRadius;\n const maxOuterCornerRadius = Math.max(outerCornerRadiusEnd, outerCornerRadiusStart);\n const maxInnerCornerRadius = Math.max(innerCornerRadiusEnd, innerCornerRadiusStart);\n let limitedOcr = maxOuterCornerRadius;\n let limitedIcr = maxInnerCornerRadius;\n\n const xors = outerRadius * cos(outerStartAngle);\n const yors = outerRadius * sin(outerStartAngle);\n const xire = innerRadius * cos(innerEndAngle);\n const yire = innerRadius * sin(innerEndAngle);\n\n // Apply rounded corners?\n let xore: number;\n let yore: number;\n let xirs: number;\n let yirs: number;\n if (maxInnerCornerRadius > epsilon || maxOuterCornerRadius > epsilon) {\n xore = outerRadius * cos(outerEndAngle);\n yore = outerRadius * sin(outerEndAngle);\n xirs = innerRadius * cos(innerStartAngle);\n yirs = innerRadius * sin(innerStartAngle);\n\n // Restrict the corner radius according to the sector angle.\n if (deltaAngle < pi) {\n const oc = intersect(xors, yors, xirs, yirs, xore, yore, xire, yire);\n\n if (oc) {\n const ax = xors - oc[0];\n const ay = yors - oc[1];\n const bx = xore - oc[0];\n const by = yore - oc[1];\n const kc = 1 / sin(acos((ax * bx + ay * by) / (sqrt(ax * ax + ay * ay) * sqrt(bx * bx + by * by))) / 2);\n const lc = sqrt(oc[0] * oc[0] + oc[1] * oc[1]);\n\n limitedIcr = min(maxInnerCornerRadius, (innerRadius - lc) / (kc - 1));\n limitedOcr = min(maxOuterCornerRadius, (outerRadius - lc) / (kc + 1));\n }\n }\n }\n\n return {\n outerDeltaAngle,\n xors,\n yors,\n xirs,\n yirs,\n xore,\n yore,\n xire,\n yire,\n limitedOcr,\n limitedIcr,\n outerCornerRadiusStart,\n outerCornerRadiusEnd,\n maxOuterCornerRadius,\n maxInnerCornerRadius,\n outerStartAngle,\n outerEndAngle,\n innerDeltaAngle,\n innerEndAngle,\n innerStartAngle,\n innerCornerRadiusStart,\n innerCornerRadiusEnd\n };\n}\n\n// 基于d3-shape\n// https://github.com/d3/d3-shape/blob/main/src/arc.js\nexport function drawArcPath(\n arc: IArc,\n context: IContext2d | IPath2D,\n cx: number,\n cy: number,\n outerRadius: number,\n innerRadius: number,\n partStroke?: (boolean | string)[]\n) {\n const { startAngle, endAngle } = arc.getParsedAngle();\n\n const deltaAngle = abs(endAngle - startAngle);\n const clockwise: boolean = endAngle > startAngle;\n let collapsedToLine: boolean = false;\n // 规范化outerRadius和innerRadius\n if (outerRadius < innerRadius) {\n const temp = outerRadius;\n outerRadius = innerRadius;\n innerRadius = temp;\n }\n // Is it a point?\n if (outerRadius <= epsilon) {\n context.moveTo(cx, cy);\n } else if (deltaAngle >= pi2 - epsilon) {\n // 是个完整的圆环\n // Or is it a circle or annulus?\n context.moveTo(cx + outerRadius * cos(startAngle), cy + outerRadius * sin(startAngle));\n context.arc(cx, cy, outerRadius, startAngle, endAngle, !clockwise);\n if (innerRadius > epsilon) {\n context.moveTo(cx + innerRadius * cos(endAngle), cy + innerRadius * sin(endAngle));\n context.arc(cx, cy, innerRadius, endAngle, startAngle, clockwise);\n }\n } else {\n const {\n outerDeltaAngle,\n xors,\n yors,\n xirs,\n yirs,\n limitedOcr,\n outerCornerRadiusStart,\n outerCornerRadiusEnd,\n maxOuterCornerRadius,\n xore,\n yore,\n xire,\n yire,\n outerStartAngle,\n outerEndAngle,\n limitedIcr,\n innerDeltaAngle,\n innerEndAngle,\n innerStartAngle,\n innerCornerRadiusStart,\n innerCornerRadiusEnd,\n maxInnerCornerRadius\n } = calculateArcCornerRadius(arc, startAngle, endAngle, innerRadius, outerRadius);\n // Is the sector collapsed to a line?\n // 角度过小,会将acr处理为圆心到半径的一条线\n if (outerDeltaAngle < 0.001) {\n // 如果有左右边的话\n if (partStroke && (partStroke[3] || partStroke[1])) {\n context.moveTo(cx + xors, cy + yors);\n }\n collapsedToLine = true;\n } else if (limitedOcr > epsilon) {\n const cornerRadiusStart = min(outerCornerRadiusStart, limitedOcr);\n const cornerRadiusEnd = min(outerCornerRadiusEnd, limitedOcr);\n // Does the sector’s outer ring have rounded corners?\n const t0 = cornerTangents(xirs, yirs, xors, yors, outerRadius, cornerRadiusStart, Number(clockwise));\n const t1 = cornerTangents(xore, yore, xire, yire, outerRadius, cornerRadiusEnd, Number(clockwise));\n\n // Have the corners merged?\n if (limitedOcr < maxOuterCornerRadius && cornerRadiusStart === cornerRadiusEnd) {\n if (!partStroke || partStroke[0]) {\n context.moveTo(cx + t0.cx + t0.x01, cy + t0.cy + t0.y01);\n context.arc(cx + t0.cx, cy + t0.cy, limitedOcr, atan2(t0.y01, t0.x01), atan2(t1.y01, t1.x01), !clockwise);\n } else {\n context.moveTo(\n cx + t0.cx + limitedOcr * cos(atan2(t1.y01, t1.x01)),\n cy + t0.cy + limitedOcr * sin(atan2(t1.y01, t1.x01))\n );\n }\n } else {\n // Otherwise, draw the two corners and the ring.\n if (!partStroke || partStroke[0]) {\n context.moveTo(cx + t0.cx + t0.x01, cy + t0.cy + t0.y01);\n cornerRadiusStart > 0 &&\n context.arc(\n cx + t0.cx,\n cy + t0.cy,\n cornerRadiusStart,\n atan2(t0.y01, t0.x01),\n atan2(t0.y11, t0.x11),\n !clockwise\n );\n context.arc(\n cx,\n cy,\n outerRadius,\n atan2(t0.cy + t0.y11, t0.cx + t0.x11),\n atan2(t1.cy + t1.y11, t1.cx + t1.x11),\n !clockwise\n );\n cornerRadiusEnd > 0 &&\n context.arc(\n cx + t1.cx,\n cy + t1.cy,\n cornerRadiusEnd,\n atan2(t1.y11, t1.x11),\n atan2(t1.y01, t1.x01),\n !clockwise\n );\n } else {\n if (cornerRadiusEnd > 0) {\n context.moveTo(\n cx + t1.cx + cornerRadiusEnd * cos(atan2(t1.y01, t1.x01)),\n cy + t1.cy + cornerRadiusEnd * sin(atan2(t1.y01, t1.x01))\n );\n } else {\n context.moveTo(cx + xore, cy + outerRadius * sin(outerEndAngle));\n }\n }\n }\n } else {\n // Or is the outer ring just a circular arc?\n if (!partStroke || partStroke[0]) {\n context.moveTo(cx + xors, cy + yors);\n context.arc(cx, cy, outerRadius, outerStartAngle, outerEndAngle, !clockwise);\n } else {\n context.moveTo(cx + outerRadius * cos(outerEndAngle), cy + outerRadius * sin(outerEndAngle));\n }\n }\n // Is there no inner ring, and it’s a circular sector?\n // Or perhaps it’s an annular sector collapsed due to padding?\n if (!(innerRadius > epsilon) || innerDeltaAngle < 0.001) {\n if (!partStroke || partStroke[1]) {\n context.lineTo(cx + xire, cy + yire);\n } else {\n context.moveTo(cx + xire, cy + yire);\n }\n collapsedToLine = true;\n } else if (limitedIcr > epsilon) {\n const cornerRadiusStart = min(innerCornerRadiusStart, limitedIcr);\n const cornerRadiusEnd = min(innerCornerRadiusEnd, limitedIcr);\n // Does the sector’s inner ring (or point) have rounded corners?\n const t0 = cornerTangents(xire, yire, xore, yore, innerRadius, -cornerRadiusEnd, Number(clockwise));\n const t1 = cornerTangents(xors, yors, xirs, yirs, innerRadius, -cornerRadiusStart, Number(clockwise));\n\n if (!partStroke || partStroke[1]) {\n context.lineTo(cx + t0.cx + t0.x01, cy + t0.cy + t0.y01);\n } else {\n context.moveTo(cx + t0.cx + t0.x01, cy + t0.cy + t0.y01);\n }\n\n // Have the corners merged?\n if (limitedIcr < maxInnerCornerRadius && cornerRadiusStart === cornerRadiusEnd) {\n const arcEndAngle = atan2(t1.y01, t1.x01);\n if (!partStroke || partStroke[2]) {\n context.arc(cx + t0.cx, cy + t0.cy, limitedIcr, atan2(t0.y01, t0.x01), arcEndAngle, !clockwise);\n } else {\n context.moveTo(cx + t0.cx + cos(arcEndAngle), cy + t0.cy + sin(arcEndAngle));\n }\n } else {\n // Otherwise, draw the two corners and the ring.\n if (!partStroke || partStroke[2]) {\n cornerRadiusEnd > 0 &&\n context.arc(\n cx + t0.cx,\n cy + t0.cy,\n cornerRadiusEnd,\n atan2(t0.y01, t0.x01),\n atan2(t0.y11, t0.x11),\n !clockwise\n );\n context.arc(\n cx,\n cy,\n innerRadius,\n atan2(t0.cy + t0.y11, t0.cx + t0.x11),\n atan2(t1.cy + t1.y11, t1.cx + t1.x11),\n clockwise\n );\n cornerRadiusStart > 0 &&\n context.arc(\n cx + t1.cx,\n cy + t1.cy,\n cornerRadiusStart,\n atan2(t1.y11, t1.x11),\n atan2(t1.y01, t1.x01),\n !clockwise\n );\n } else {\n if (cornerRadiusStart > 0) {\n context.moveTo(\n cx + t1.cx + cornerRadiusStart * cos(atan2(t1.y01, t1.x01)),\n cy + t1.cy + cornerRadiusStart * sin(atan2(t1.y01, t1.x01))\n );\n } else {\n context.moveTo(cx + xirs, cy + yirs);\n }\n }\n }\n } else {\n // Or is the inner ring just a circular arc?\n if (!partStroke || partStroke[1]) {\n context.lineTo(cx + xire, cy + yire);\n } else {\n context.moveTo(cx + xire, cy + yire);\n }\n if (!partStroke || partStroke[2]) {\n context.arc(cx, cy, innerRadius, innerEndAngle, innerStartAngle, clockwise);\n } else {\n context.moveTo(cx + innerRadius * cos(innerStartAngle), cy + innerRadius * sin(innerStartAngle));\n }\n }\n }\n\n if (!partStroke) {\n context.closePath();\n } else if (partStroke[3]) {\n context.lineTo(cx + outerRadius * cos(startAngle), cy + outerRadius * sin(startAngle));\n }\n\n return collapsedToLine;\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/render/contributions/render/utils.ts"],"names":[],"mappings":"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","file":"utils.js","sourcesContent":["import { isArray, abs, acos, atan2, cos, epsilon, min, pi, sin, sqrt, pi2 } from '@visactor/vutils';\nimport { renderCommandList } from '../../../common/render-command-list';\nimport { getTheme } from '../../../graphic/theme';\nimport type {\n IGraphicAttribute,\n IContext2d,\n IGraphic,\n IMarkAttribute,\n IThemeAttribute,\n IFillType,\n IStrokeType,\n IArc,\n IPath2D,\n IGraphicRenderDrawParams,\n IDrawContext,\n IBackgroundConfig\n} from '../../../interface';\n/**\n * 是否需要执行fill逻辑\n * @param fill\n * @returns\n */\nexport function runFill(\n fill: IFillType,\n background?: string | any | HTMLImageElement | HTMLCanvasElement | IBackgroundConfig\n) {\n return !!(fill || background);\n}\n/**\n * 是否需要执行stroke逻辑\n * @param stroke\n * @returns\n */\nexport function runStroke(stroke: IStrokeType | IStrokeType[], lineWidth: number) {\n let s: boolean | number;\n if (isArray(stroke)) {\n s = stroke.some(item => item || item === undefined);\n } else {\n s = !!stroke;\n }\n return s && lineWidth > 0;\n}\n\n/**\n * 是否fill部分可见\n * @param opacity\n * @param fillOpacity\n * @returns\n */\nexport function fillVisible(opacity: number, fillOpacity: number, fill: IFillType) {\n return fill && opacity * fillOpacity > 0;\n}\n\nexport function rectFillVisible(opacity: number, fillOpacity: number, width: number, height: number, fill: IFillType) {\n return fill && opacity * fillOpacity > 0 && width !== 0 && height !== 0;\n}\n\n/**\n * 是否stroke部分可见\n * @param opacity\n * @param strokeOpacity\n * @param lineWidth\n * @returns\n */\nexport function strokeVisible(opacity: number, strokeOpacity: number) {\n return opacity * strokeOpacity > 0;\n}\n\nexport function rectStrokeVisible(opacity: number, strokeOpacity: number, width: number, height: number) {\n return opacity * strokeOpacity > 0 && width !== 0 && height !== 0;\n}\n\n/**\n * 部分源码参考 https://github.com/d3/d3-shape/\n * Copyright 2010-2022 Mike Bostock\n\n Permission to use, copy, modify, and/or distribute this software for any purpose\n with or without fee is hereby granted, provided that the above copyright notice\n and this permission notice appear in all copies.\n\n THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND\n FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS\n OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER\n TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF\n THIS SOFTWARE.\n */\n\n// 基于d3-shape\n// https://github.com/d3/d3-shape/blob/main/src/arc.js\nexport function intersect(\n x0: number,\n y0: number,\n x1: number,\n y1: number,\n x2: number,\n y2: number,\n x3: number,\n y3: number\n) {\n const x10 = x1 - x0;\n const y10 = y1 - y0;\n const x32 = x3 - x2;\n const y32 = y3 - y2;\n let t = y32 * x10 - x32 * y10;\n if (t * t < epsilon) {\n return [];\n }\n t = (x32 * (y0 - y2) - y32 * (x0 - x2)) / t;\n\n return [x0 + t * x10, y0 + t * y10];\n}\n\n// 基于d3-shape\n// https://github.com/d3/d3-shape/blob/main/src/arc.js\n// Compute perpendicular offset line of length rc.\n// http://mathworld.wolfram.com/Circle-LineIntersection.html\nexport function cornerTangents(\n x0: number,\n y0: number,\n x1: number,\n y1: number,\n r1: number,\n rc: number,\n clockwise: number\n) {\n const x01 = x0 - x1;\n const y01 = y0 - y1;\n const lo = (clockwise ? rc : -rc) / Math.sqrt(x01 * x01 + y01 * y01);\n const ox = lo * y01;\n const oy = -lo * x01;\n const x11 = x0 + ox;\n const y11 = y0 + oy;\n const x10 = x1 + ox;\n const y10 = y1 + oy;\n const x00 = (x11 + x10) / 2;\n const y00 = (y11 + y10) / 2;\n const dx = x10 - x11;\n const dy = y10 - y11;\n const d2 = dx * dx + dy * dy;\n const r = r1 - rc;\n const D = x11 * y10 - x10 * y11;\n const d = (dy < 0 ? -1 : 1) * Math.sqrt(Math.max(0, r * r * d2 - D * D));\n let cx0 = (D * dy - dx * d) / d2;\n let cy0 = (-D * dx - dy * d) / d2;\n const cx1 = (D * dy + dx * d) / d2;\n const cy1 = (-D * dx + dy * d) / d2;\n const dx0 = cx0 - x00;\n const dy0 = cy0 - y00;\n const dx1 = cx1 - x00;\n const dy1 = cy1 - y00;\n\n // Pick the closer of the two intersection points.\n // TODO Is there a faster way to determine which intersection to use?\n if (dx0 * dx0 + dy0 * dy0 > dx1 * dx1 + dy1 * dy1) {\n (cx0 = cx1), (cy0 = cy1);\n }\n\n return {\n cx: cx0,\n cy: cy0,\n x01: -ox,\n y01: -oy,\n x11: cx0 * (r1 / r - 1),\n y11: cy0 * (r1 / r - 1)\n };\n}\n\nexport function calculateArcCornerRadius(\n arc: IArc,\n startAngle: number,\n endAngle: number,\n innerRadius: number,\n outerRadius: number\n) {\n const deltaAngle = abs(endAngle - startAngle);\n const cornerRadius = arc.getParsedCornerRadius();\n const cornerRadiusIsArray = isArray(cornerRadius);\n // Or is it a circular or annular sector?\n const { outerDeltaAngle, innerDeltaAngle, outerStartAngle, outerEndAngle, innerEndAngle, innerStartAngle } =\n arc.getParsePadAngle(startAngle, endAngle);\n\n const outerCornerRadiusStart = cornerRadiusIsArray ? cornerRadius[0] : cornerRadius;\n const outerCornerRadiusEnd = cornerRadiusIsArray ? cornerRadius[1] : cornerRadius;\n const innerCornerRadiusEnd = cornerRadiusIsArray ? cornerRadius[2] : cornerRadius;\n const innerCornerRadiusStart = cornerRadiusIsArray ? cornerRadius[3] : cornerRadius;\n const maxOuterCornerRadius = Math.max(outerCornerRadiusEnd, outerCornerRadiusStart);\n const maxInnerCornerRadius = Math.max(innerCornerRadiusEnd, innerCornerRadiusStart);\n let limitedOcr = maxOuterCornerRadius;\n let limitedIcr = maxInnerCornerRadius;\n\n const xors = outerRadius * cos(outerStartAngle);\n const yors = outerRadius * sin(outerStartAngle);\n const xire = innerRadius * cos(innerEndAngle);\n const yire = innerRadius * sin(innerEndAngle);\n\n // Apply rounded corners?\n let xore: number;\n let yore: number;\n let xirs: number;\n let yirs: number;\n if (maxInnerCornerRadius > epsilon || maxOuterCornerRadius > epsilon) {\n xore = outerRadius * cos(outerEndAngle);\n yore = outerRadius * sin(outerEndAngle);\n xirs = innerRadius * cos(innerStartAngle);\n yirs = innerRadius * sin(innerStartAngle);\n\n // Restrict the corner radius according to the sector angle.\n if (deltaAngle < pi) {\n const oc = intersect(xors, yors, xirs, yirs, xore, yore, xire, yire);\n\n if (oc) {\n const ax = xors - oc[0];\n const ay = yors - oc[1];\n const bx = xore - oc[0];\n const by = yore - oc[1];\n const kc = 1 / sin(acos((ax * bx + ay * by) / (sqrt(ax * ax + ay * ay) * sqrt(bx * bx + by * by))) / 2);\n const lc = sqrt(oc[0] * oc[0] + oc[1] * oc[1]);\n\n limitedIcr = min(maxInnerCornerRadius, (innerRadius - lc) / (kc - 1));\n limitedOcr = min(maxOuterCornerRadius, (outerRadius - lc) / (kc + 1));\n }\n }\n }\n\n return {\n outerDeltaAngle,\n xors,\n yors,\n xirs,\n yirs,\n xore,\n yore,\n xire,\n yire,\n limitedOcr,\n limitedIcr,\n outerCornerRadiusStart,\n outerCornerRadiusEnd,\n maxOuterCornerRadius,\n maxInnerCornerRadius,\n outerStartAngle,\n outerEndAngle,\n innerDeltaAngle,\n innerEndAngle,\n innerStartAngle,\n innerCornerRadiusStart,\n innerCornerRadiusEnd\n };\n}\n\n// 基于d3-shape\n// https://github.com/d3/d3-shape/blob/main/src/arc.js\nexport function drawArcPath(\n arc: IArc,\n context: IContext2d | IPath2D,\n cx: number,\n cy: number,\n outerRadius: number,\n innerRadius: number,\n partStroke?: (boolean | string)[]\n) {\n const { startAngle, endAngle } = arc.getParsedAngle();\n\n const deltaAngle = abs(endAngle - startAngle);\n const clockwise: boolean = endAngle > startAngle;\n let collapsedToLine: boolean = false;\n // 规范化outerRadius和innerRadius\n if (outerRadius < innerRadius) {\n const temp = outerRadius;\n outerRadius = innerRadius;\n innerRadius = temp;\n }\n // Is it a point?\n if (outerRadius <= epsilon) {\n context.moveTo(cx, cy);\n } else if (deltaAngle >= pi2 - epsilon) {\n // 是个完整的圆环\n // Or is it a circle or annulus?\n context.moveTo(cx + outerRadius * cos(startAngle), cy + outerRadius * sin(startAngle));\n context.arc(cx, cy, outerRadius, startAngle, endAngle, !clockwise);\n if (innerRadius > epsilon) {\n context.moveTo(cx + innerRadius * cos(endAngle), cy + innerRadius * sin(endAngle));\n context.arc(cx, cy, innerRadius, endAngle, startAngle, clockwise);\n }\n } else {\n const {\n outerDeltaAngle,\n xors,\n yors,\n xirs,\n yirs,\n limitedOcr,\n outerCornerRadiusStart,\n outerCornerRadiusEnd,\n maxOuterCornerRadius,\n xore,\n yore,\n xire,\n yire,\n outerStartAngle,\n outerEndAngle,\n limitedIcr,\n innerDeltaAngle,\n innerEndAngle,\n innerStartAngle,\n innerCornerRadiusStart,\n innerCornerRadiusEnd,\n maxInnerCornerRadius\n } = calculateArcCornerRadius(arc, startAngle, endAngle, innerRadius, outerRadius);\n // Is the sector collapsed to a line?\n // 角度过小,会将acr处理为圆心到半径的一条线\n if (outerDeltaAngle < 0.001) {\n // 如果有左右边的话\n if (partStroke && (partStroke[3] || partStroke[1])) {\n context.moveTo(cx + xors, cy + yors);\n }\n collapsedToLine = true;\n } else if (limitedOcr > epsilon) {\n const cornerRadiusStart = min(outerCornerRadiusStart, limitedOcr);\n const cornerRadiusEnd = min(outerCornerRadiusEnd, limitedOcr);\n // Does the sector’s outer ring have rounded corners?\n const t0 = cornerTangents(xirs, yirs, xors, yors, outerRadius, cornerRadiusStart, Number(clockwise));\n const t1 = cornerTangents(xore, yore, xire, yire, outerRadius, cornerRadiusEnd, Number(clockwise));\n\n // Have the corners merged?\n if (limitedOcr < maxOuterCornerRadius && cornerRadiusStart === cornerRadiusEnd) {\n if (!partStroke || partStroke[0]) {\n context.moveTo(cx + t0.cx + t0.x01, cy + t0.cy + t0.y01);\n context.arc(cx + t0.cx, cy + t0.cy, limitedOcr, atan2(t0.y01, t0.x01), atan2(t1.y01, t1.x01), !clockwise);\n } else {\n context.moveTo(\n cx + t0.cx + limitedOcr * cos(atan2(t1.y01, t1.x01)),\n cy + t0.cy + limitedOcr * sin(atan2(t1.y01, t1.x01))\n );\n }\n } else {\n // Otherwise, draw the two corners and the ring.\n if (!partStroke || partStroke[0]) {\n context.moveTo(cx + t0.cx + t0.x01, cy + t0.cy + t0.y01);\n cornerRadiusStart > 0 &&\n context.arc(\n cx + t0.cx,\n cy + t0.cy,\n cornerRadiusStart,\n atan2(t0.y01, t0.x01),\n atan2(t0.y11, t0.x11),\n !clockwise\n );\n context.arc(\n cx,\n cy,\n outerRadius,\n atan2(t0.cy + t0.y11, t0.cx + t0.x11),\n atan2(t1.cy + t1.y11, t1.cx + t1.x11),\n !clockwise\n );\n cornerRadiusEnd > 0 &&\n context.arc(\n cx + t1.cx,\n cy + t1.cy,\n cornerRadiusEnd,\n atan2(t1.y11, t1.x11),\n atan2(t1.y01, t1.x01),\n !clockwise\n );\n } else {\n if (cornerRadiusEnd > 0) {\n context.moveTo(\n cx + t1.cx + cornerRadiusEnd * cos(atan2(t1.y01, t1.x01)),\n cy + t1.cy + cornerRadiusEnd * sin(atan2(t1.y01, t1.x01))\n );\n } else {\n context.moveTo(cx + xore, cy + outerRadius * sin(outerEndAngle));\n }\n }\n }\n } else {\n // Or is the outer ring just a circular arc?\n if (!partStroke || partStroke[0]) {\n context.moveTo(cx + xors, cy + yors);\n context.arc(cx, cy, outerRadius, outerStartAngle, outerEndAngle, !clockwise);\n } else {\n context.moveTo(cx + outerRadius * cos(outerEndAngle), cy + outerRadius * sin(outerEndAngle));\n }\n }\n // Is there no inner ring, and it’s a circular sector?\n // Or perhaps it’s an annular sector collapsed due to padding?\n if (!(innerRadius > epsilon) || innerDeltaAngle < 0.001) {\n if (!partStroke || partStroke[1]) {\n context.lineTo(cx + xire, cy + yire);\n } else {\n context.moveTo(cx + xire, cy + yire);\n }\n collapsedToLine = true;\n } else if (limitedIcr > epsilon) {\n const cornerRadiusStart = min(innerCornerRadiusStart, limitedIcr);\n const cornerRadiusEnd = min(innerCornerRadiusEnd, limitedIcr);\n // Does the sector’s inner ring (or point) have rounded corners?\n const t0 = cornerTangents(xire, yire, xore, yore, innerRadius, -cornerRadiusEnd, Number(clockwise));\n const t1 = cornerTangents(xors, yors, xirs, yirs, innerRadius, -cornerRadiusStart, Number(clockwise));\n\n if (!partStroke || partStroke[1]) {\n context.lineTo(cx + t0.cx + t0.x01, cy + t0.cy + t0.y01);\n } else {\n context.moveTo(cx + t0.cx + t0.x01, cy + t0.cy + t0.y01);\n }\n\n // Have the corners merged?\n if (limitedIcr < maxInnerCornerRadius && cornerRadiusStart === cornerRadiusEnd) {\n const arcEndAngle = atan2(t1.y01, t1.x01);\n if (!partStroke || partStroke[2]) {\n context.arc(cx + t0.cx, cy + t0.cy, limitedIcr, atan2(t0.y01, t0.x01), arcEndAngle, !clockwise);\n } else {\n context.moveTo(cx + t0.cx + cos(arcEndAngle), cy + t0.cy + sin(arcEndAngle));\n }\n } else {\n // Otherwise, draw the two corners and the ring.\n if (!partStroke || partStroke[2]) {\n cornerRadiusEnd > 0 &&\n context.arc(\n cx + t0.cx,\n cy + t0.cy,\n cornerRadiusEnd,\n atan2(t0.y01, t0.x01),\n atan2(t0.y11, t0.x11),\n !clockwise\n );\n context.arc(\n cx,\n cy,\n innerRadius,\n atan2(t0.cy + t0.y11, t0.cx + t0.x11),\n atan2(t1.cy + t1.y11, t1.cx + t1.x11),\n clockwise\n );\n cornerRadiusStart > 0 &&\n context.arc(\n cx + t1.cx,\n cy + t1.cy,\n cornerRadiusStart,\n atan2(t1.y11, t1.x11),\n atan2(t1.y01, t1.x01),\n !clockwise\n );\n } else {\n if (cornerRadiusStart > 0) {\n context.moveTo(\n cx + t1.cx + cornerRadiusStart * cos(atan2(t1.y01, t1.x01)),\n cy + t1.cy + cornerRadiusStart * sin(atan2(t1.y01, t1.x01))\n );\n } else {\n context.moveTo(cx + xirs, cy + yirs);\n }\n }\n }\n } else {\n // Or is the inner ring just a circular arc?\n if (!partStroke || partStroke[1]) {\n context.lineTo(cx + xire, cy + yire);\n } else {\n context.moveTo(cx + xire, cy + yire);\n }\n if (!partStroke || partStroke[2]) {\n context.arc(cx, cy, innerRadius, innerEndAngle, innerStartAngle, clockwise);\n } else {\n context.moveTo(cx + innerRadius * cos(innerStartAngle), cy + innerRadius * sin(innerStartAngle));\n }\n }\n }\n\n if (!partStroke) {\n context.closePath();\n } else if (partStroke[3]) {\n context.lineTo(cx + outerRadius * cos(startAngle), cy + outerRadius * sin(startAngle));\n }\n\n return collapsedToLine;\n}\n"]}
|
|
@@ -34,7 +34,7 @@ class ResourceLoader {
|
|
|
34
34
|
}
|
|
35
35
|
static GetFile(url, type) {
|
|
36
36
|
let data = ResourceLoader.cache.get(url);
|
|
37
|
-
return data ? "
|
|
37
|
+
return data ? "fail" === data.loadState ? Promise.reject() : "init" === data.loadState || "loading" === data.loadState ? data.dataPromise.then((data => data.data)) : Promise.resolve(data.data) : (data = {
|
|
38
38
|
type: type,
|
|
39
39
|
loadState: "init"
|
|
40
40
|
}, ResourceLoader.cache.set(url, data), "arrayBuffer" === type ? data.dataPromise = application_1.application.global.loadArrayBuffer(url) : "blob" === type ? data.dataPromise = application_1.application.global.loadBlob(url) : "json" === type && (data.dataPromise = application_1.application.global.loadJson(url)),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/resource-loader/loader.ts"],"names":[],"mappings":"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","file":"loader.js","sourcesContent":["import type { IImage, ImagePayload, ResourceData } from '../interface';\nimport { application } from '../application';\n\nconst PARALLEL_NUMBER = 10;\nexport class ResourceLoader {\n private static cache: Map<string, ResourceData> = new Map();\n private static isLoading: boolean = false;\n private static toLoadAueue: { url: string; marks: ImagePayload[] }[] = [];\n private static onLoadSuccessCb: (() => void)[] = [];\n\n static GetImage(url: string, mark: ImagePayload) {\n const data = ResourceLoader.cache.get(url);\n if (data) {\n // 存在缓存\n if (data.loadState === 'fail') {\n // 资源请求失败,修改mark状态\n application.global.getRequestAnimationFrame()(() => {\n mark.imageLoadFail(url);\n });\n } else if (data.loadState === 'init' || data.loadState === 'loading') {\n // 资源padding队列加入mark信息\n data.waitingMark?.push(mark);\n } else if (mark) {\n mark.imageLoadSuccess(url, data.data as HTMLImageElement);\n }\n } else {\n ResourceLoader.loadImage(url, mark);\n // data = { type: 'image', loadState: 'init' };\n // ResourceLoader.cache.set(url, data);\n\n // data.dataPromise = application.global.loadImage(url);\n // if (!data.dataPromise) {\n // // 无法获取资源,修改缓存和mark状态\n // data.loadState = 'fail';\n // mark.imageLoadFail(url);\n // } else {\n // // 资源padding队列加入mark信息\n // data.waitingMark = [mark];\n\n // data.dataPromise.then(res => {\n // data.loadState = res?.data ? 'success' : 'fail';\n // data.data = res?.data;\n // // 遍历资源padding队列,更新mark信息\n // data.waitingMark?.map((mark: IImage, index) => {\n // if (res?.data) {\n // data.loadState = 'success';\n // data.data = res.data;\n // mark.imageLoadSuccess(url, res.data as HTMLImageElement);\n // } else {\n // data.loadState = 'fail';\n // mark.imageLoadFail(url);\n // }\n // });\n // });\n // }\n }\n }\n\n static GetSvg(svgStr: string, mark: IImage) {\n let data = ResourceLoader.cache.get(svgStr);\n if (data) {\n // 存在缓存\n if (data.loadState === 'fail') {\n // 资源请求失败,修改mark状态\n application.global.getRequestAnimationFrame()(() => {\n mark.imageLoadFail(svgStr);\n });\n } else if (data.loadState === 'init' || data.loadState === 'loading') {\n // 资源padding队列加入mark信息\n data.waitingMark?.push(mark);\n } else if (mark) {\n mark.imageLoadSuccess(svgStr, data.data as HTMLImageElement);\n }\n } else {\n data = { type: 'image', loadState: 'init' };\n ResourceLoader.cache.set(svgStr, data);\n\n data.dataPromise = application.global.loadSvg(svgStr);\n if (!data.dataPromise) {\n // 无法获取资源,修改缓存和mark状态\n data.loadState = 'fail';\n mark.imageLoadFail(svgStr);\n } else {\n // 资源padding队列加入mark信息\n data.waitingMark = [mark];\n\n data.dataPromise.then(res => {\n data.loadState = res?.data ? 'success' : 'fail';\n data.data = res?.data;\n // 遍历资源padding队列,更新mark信息\n data.waitingMark?.map((mark: IImage, index) => {\n if (res?.data) {\n data.loadState = 'success';\n data.data = res.data;\n mark.imageLoadSuccess(svgStr, res.data as HTMLImageElement);\n } else {\n data.loadState = 'fail';\n mark.imageLoadFail(svgStr);\n }\n });\n data.waitingMark && (data.waitingMark = []);\n });\n }\n }\n }\n\n static GetFile(url: string, type: 'json' | 'arrayBuffer' | 'blob') {\n let data = ResourceLoader.cache.get(url);\n if (data) {\n // 存在缓存\n if (data.loadState === 'init' || data.loadState === 'fail') {\n return Promise.reject();\n } else if (data.loadState === 'loading') {\n return data.dataPromise.then(data => data.data);\n }\n return Promise.resolve(data.data);\n }\n data = { type, loadState: 'init' };\n ResourceLoader.cache.set(url, data);\n\n if (type === 'arrayBuffer') {\n data.dataPromise = application.global.loadArrayBuffer(url);\n } else if (type === 'blob') {\n data.dataPromise = application.global.loadBlob(url);\n } else if (type === 'json') {\n data.dataPromise = application.global.loadJson(url);\n }\n\n return data.dataPromise.then(data => data.data);\n }\n\n static loading() {\n setTimeout(() => {\n if (!ResourceLoader.isLoading && ResourceLoader.toLoadAueue.length) {\n ResourceLoader.isLoading = true;\n const tasks = ResourceLoader.toLoadAueue.splice(0, PARALLEL_NUMBER);\n const promises: Promise<void>[] = [];\n tasks.forEach(task => {\n const { url, marks } = task;\n const data: ResourceData = { type: 'image', loadState: 'init' };\n ResourceLoader.cache.set(url, data);\n\n data.dataPromise = application.global.loadImage(url);\n if (!data.dataPromise) {\n // 无法获取资源,修改缓存和mark状态\n data.loadState = 'fail';\n // mark.imageLoadFail(url);\n marks.forEach(mark => mark.imageLoadFail(url));\n } else {\n // 资源padding队列加入mark信息\n // data.waitingMark = [mark];\n data.waitingMark = marks;\n\n const end = data.dataPromise.then(res => {\n data.loadState = res?.data ? 'success' : 'fail';\n data.data = res?.data;\n // 遍历资源padding队列,更新mark信息\n data.waitingMark?.map((mark: IImage, index) => {\n if (res?.data) {\n data.loadState = 'success';\n data.data = res.data;\n // console.log(mark.attribute.y)\n mark.imageLoadSuccess(url, res.data as HTMLImageElement);\n } else {\n data.loadState = 'fail';\n mark.imageLoadFail(url);\n }\n });\n\n data.waitingMark && (data.waitingMark = []);\n });\n\n promises.push(end);\n }\n });\n\n Promise.all(promises)\n .then(() => {\n ResourceLoader.isLoading = false;\n this.onLoadSuccessCb.forEach(cb => cb());\n ResourceLoader.loading();\n })\n .catch(error => {\n console.error(error);\n ResourceLoader.isLoading = false;\n this.onLoadSuccessCb.forEach(cb => cb());\n ResourceLoader.loading();\n });\n }\n }, 0);\n }\n\n static loadImage(url: string, mark: ImagePayload) {\n // find url in toLoadAueue\n const index = getIndex(url, ResourceLoader.toLoadAueue);\n if (index !== -1) {\n // add mark to aueue\n ResourceLoader.toLoadAueue[index].marks.push(mark);\n ResourceLoader.loading();\n return;\n }\n\n // add task to aueue\n ResourceLoader.toLoadAueue.push({ url, marks: [mark] });\n ResourceLoader.loading();\n }\n\n static improveImageLoading(url: string) {\n const index = getIndex(url, ResourceLoader.toLoadAueue);\n if (index !== -1) {\n const elememt = ResourceLoader.toLoadAueue.splice(index, 1);\n ResourceLoader.toLoadAueue.unshift(elememt[0]);\n }\n }\n\n static onLoadSuccess(cb: () => void) {\n this.onLoadSuccessCb.push(cb);\n }\n}\n\nfunction getIndex(url: string, arr: { url: string; marks: ImagePayload[] }[]) {\n for (let i = 0; i < arr.length; i++) {\n if (arr[i].url === url) {\n return i;\n }\n }\n return -1;\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/resource-loader/loader.ts"],"names":[],"mappings":";;;AACA,gDAA6C;AAE7C,MAAM,eAAe,GAAG,EAAE,CAAC;AAC3B,MAAa,cAAc;IAMzB,MAAM,CAAC,QAAQ,CAAC,GAAW,EAAE,IAAkB;;QAC7C,MAAM,IAAI,GAAG,cAAc,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC3C,IAAI,IAAI,EAAE;YAER,IAAI,IAAI,CAAC,SAAS,KAAK,MAAM,EAAE;gBAE7B,yBAAW,CAAC,MAAM,CAAC,wBAAwB,EAAE,CAAC,GAAG,EAAE;oBACjD,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;gBAC1B,CAAC,CAAC,CAAC;aACJ;iBAAM,IAAI,IAAI,CAAC,SAAS,KAAK,MAAM,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,EAAE;gBAEpE,MAAA,IAAI,CAAC,WAAW,0CAAE,IAAI,CAAC,IAAI,CAAC,CAAC;aAC9B;iBAAM,IAAI,IAAI,EAAE;gBACf,IAAI,CAAC,gBAAgB,CAAC,GAAG,EAAE,IAAI,CAAC,IAAwB,CAAC,CAAC;aAC3D;SACF;aAAM;YACL,cAAc,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;SA6BrC;IACH,CAAC;IAED,MAAM,CAAC,MAAM,CAAC,MAAc,EAAE,IAAY;;QACxC,IAAI,IAAI,GAAG,cAAc,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC5C,IAAI,IAAI,EAAE;YAER,IAAI,IAAI,CAAC,SAAS,KAAK,MAAM,EAAE;gBAE7B,yBAAW,CAAC,MAAM,CAAC,wBAAwB,EAAE,CAAC,GAAG,EAAE;oBACjD,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;gBAC7B,CAAC,CAAC,CAAC;aACJ;iBAAM,IAAI,IAAI,CAAC,SAAS,KAAK,MAAM,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,EAAE;gBAEpE,MAAA,IAAI,CAAC,WAAW,0CAAE,IAAI,CAAC,IAAI,CAAC,CAAC;aAC9B;iBAAM,IAAI,IAAI,EAAE;gBACf,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,IAAwB,CAAC,CAAC;aAC9D;SACF;aAAM;YACL,IAAI,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC;YAC5C,cAAc,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YAEvC,IAAI,CAAC,WAAW,GAAG,yBAAW,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YACtD,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;gBAErB,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC;gBACxB,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;aAC5B;iBAAM;gBAEL,IAAI,CAAC,WAAW,GAAG,CAAC,IAAI,CAAC,CAAC;gBAE1B,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;;oBAC1B,IAAI,CAAC,SAAS,GAAG,CAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,IAAI,EAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC;oBAChD,IAAI,CAAC,IAAI,GAAG,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,IAAI,CAAC;oBAEtB,MAAA,IAAI,CAAC,WAAW,0CAAE,GAAG,CAAC,CAAC,IAAY,EAAE,KAAK,EAAE,EAAE;wBAC5C,IAAI,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,IAAI,EAAE;4BACb,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;4BAC3B,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;4BACrB,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,GAAG,CAAC,IAAwB,CAAC,CAAC;yBAC7D;6BAAM;4BACL,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC;4BACxB,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;yBAC5B;oBACH,CAAC,CAAC,CAAC;oBACH,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC,CAAC;gBAC9C,CAAC,CAAC,CAAC;aACJ;SACF;IACH,CAAC;IAED,MAAM,CAAC,OAAO,CAAC,GAAW,EAAE,IAAqC;QAC/D,IAAI,IAAI,GAAG,cAAc,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACzC,IAAI,IAAI,EAAE;YAER,IAAI,IAAI,CAAC,SAAS,KAAK,MAAM,EAAE;gBAC7B,OAAO,OAAO,CAAC,MAAM,EAAE,CAAC;aACzB;iBAAM,IAAI,IAAI,CAAC,SAAS,KAAK,MAAM,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,EAAE;gBACpE,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aACjD;YACD,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SACnC;QACD,IAAI,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC;QACnC,cAAc,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QAEpC,IAAI,IAAI,KAAK,aAAa,EAAE;YAC1B,IAAI,CAAC,WAAW,GAAG,yBAAW,CAAC,MAAM,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;SAC5D;aAAM,IAAI,IAAI,KAAK,MAAM,EAAE;YAC1B,IAAI,CAAC,WAAW,GAAG,yBAAW,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;SACrD;aAAM,IAAI,IAAI,KAAK,MAAM,EAAE;YAC1B,IAAI,CAAC,WAAW,GAAG,yBAAW,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;SACrD;QAED,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAClD,CAAC;IAED,MAAM,CAAC,OAAO;QACZ,UAAU,CAAC,GAAG,EAAE;YACd,IAAI,CAAC,cAAc,CAAC,SAAS,IAAI,cAAc,CAAC,WAAW,CAAC,MAAM,EAAE;gBAClE,cAAc,CAAC,SAAS,GAAG,IAAI,CAAC;gBAChC,MAAM,KAAK,GAAG,cAAc,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,EAAE,eAAe,CAAC,CAAC;gBACpE,MAAM,QAAQ,GAAoB,EAAE,CAAC;gBACrC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;oBACnB,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;oBAC5B,MAAM,IAAI,GAAiB,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC;oBAChE,cAAc,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;oBAEpC,IAAI,CAAC,WAAW,GAAG,yBAAW,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;oBACrD,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;wBAErB,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC;wBAExB,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC;qBAChD;yBAAM;wBAGL,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;wBAEzB,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;;4BACtC,IAAI,CAAC,SAAS,GAAG,CAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,IAAI,EAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC;4BAChD,IAAI,CAAC,IAAI,GAAG,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,IAAI,CAAC;4BAEtB,MAAA,IAAI,CAAC,WAAW,0CAAE,GAAG,CAAC,CAAC,IAAY,EAAE,KAAK,EAAE,EAAE;gCAC5C,IAAI,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,IAAI,EAAE;oCACb,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;oCAC3B,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;oCAErB,IAAI,CAAC,gBAAgB,CAAC,GAAG,EAAE,GAAG,CAAC,IAAwB,CAAC,CAAC;iCAC1D;qCAAM;oCACL,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC;oCACxB,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;iCACzB;4BACH,CAAC,CAAC,CAAC;4BAEH,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC,CAAC;wBAC9C,CAAC,CAAC,CAAC;wBAEH,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;qBACpB;gBACH,CAAC,CAAC,CAAC;gBAEH,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC;qBAClB,IAAI,CAAC,GAAG,EAAE;oBACT,cAAc,CAAC,SAAS,GAAG,KAAK,CAAC;oBACjC,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;oBACzC,cAAc,CAAC,OAAO,EAAE,CAAC;gBAC3B,CAAC,CAAC;qBACD,KAAK,CAAC,KAAK,CAAC,EAAE;oBACb,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;oBACrB,cAAc,CAAC,SAAS,GAAG,KAAK,CAAC;oBACjC,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;oBACzC,cAAc,CAAC,OAAO,EAAE,CAAC;gBAC3B,CAAC,CAAC,CAAC;aACN;QACH,CAAC,EAAE,CAAC,CAAC,CAAC;IACR,CAAC;IAED,MAAM,CAAC,SAAS,CAAC,GAAW,EAAE,IAAkB;QAE9C,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,EAAE,cAAc,CAAC,WAAW,CAAC,CAAC;QACxD,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;YAEhB,cAAc,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACnD,cAAc,CAAC,OAAO,EAAE,CAAC;YACzB,OAAO;SACR;QAGD,cAAc,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACxD,cAAc,CAAC,OAAO,EAAE,CAAC;IAC3B,CAAC;IAED,MAAM,CAAC,mBAAmB,CAAC,GAAW;QACpC,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,EAAE,cAAc,CAAC,WAAW,CAAC,CAAC;QACxD,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;YAChB,MAAM,OAAO,GAAG,cAAc,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YAC5D,cAAc,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;SAChD;IACH,CAAC;IAED,MAAM,CAAC,aAAa,CAAC,EAAc;QACjC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAChC,CAAC;;AArNH,wCAsNC;AArNgB,oBAAK,GAA8B,IAAI,GAAG,EAAE,CAAC;AAC7C,wBAAS,GAAY,KAAK,CAAC;AAC3B,0BAAW,GAA6C,EAAE,CAAC;AAC3D,8BAAe,GAAmB,EAAE,CAAC;AAoNtD,SAAS,QAAQ,CAAC,GAAW,EAAE,GAA6C;IAC1E,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QACnC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,EAAE;YACtB,OAAO,CAAC,CAAC;SACV;KACF;IACD,OAAO,CAAC,CAAC,CAAC;AACZ,CAAC","file":"loader.js","sourcesContent":["import type { IImage, ImagePayload, ResourceData } from '../interface';\nimport { application } from '../application';\n\nconst PARALLEL_NUMBER = 10;\nexport class ResourceLoader {\n private static cache: Map<string, ResourceData> = new Map();\n private static isLoading: boolean = false;\n private static toLoadAueue: { url: string; marks: ImagePayload[] }[] = [];\n private static onLoadSuccessCb: (() => void)[] = [];\n\n static GetImage(url: string, mark: ImagePayload) {\n const data = ResourceLoader.cache.get(url);\n if (data) {\n // 存在缓存\n if (data.loadState === 'fail') {\n // 资源请求失败,修改mark状态\n application.global.getRequestAnimationFrame()(() => {\n mark.imageLoadFail(url);\n });\n } else if (data.loadState === 'init' || data.loadState === 'loading') {\n // 资源padding队列加入mark信息\n data.waitingMark?.push(mark);\n } else if (mark) {\n mark.imageLoadSuccess(url, data.data as HTMLImageElement);\n }\n } else {\n ResourceLoader.loadImage(url, mark);\n // data = { type: 'image', loadState: 'init' };\n // ResourceLoader.cache.set(url, data);\n\n // data.dataPromise = application.global.loadImage(url);\n // if (!data.dataPromise) {\n // // 无法获取资源,修改缓存和mark状态\n // data.loadState = 'fail';\n // mark.imageLoadFail(url);\n // } else {\n // // 资源padding队列加入mark信息\n // data.waitingMark = [mark];\n\n // data.dataPromise.then(res => {\n // data.loadState = res?.data ? 'success' : 'fail';\n // data.data = res?.data;\n // // 遍历资源padding队列,更新mark信息\n // data.waitingMark?.map((mark: IImage, index) => {\n // if (res?.data) {\n // data.loadState = 'success';\n // data.data = res.data;\n // mark.imageLoadSuccess(url, res.data as HTMLImageElement);\n // } else {\n // data.loadState = 'fail';\n // mark.imageLoadFail(url);\n // }\n // });\n // });\n // }\n }\n }\n\n static GetSvg(svgStr: string, mark: IImage) {\n let data = ResourceLoader.cache.get(svgStr);\n if (data) {\n // 存在缓存\n if (data.loadState === 'fail') {\n // 资源请求失败,修改mark状态\n application.global.getRequestAnimationFrame()(() => {\n mark.imageLoadFail(svgStr);\n });\n } else if (data.loadState === 'init' || data.loadState === 'loading') {\n // 资源padding队列加入mark信息\n data.waitingMark?.push(mark);\n } else if (mark) {\n mark.imageLoadSuccess(svgStr, data.data as HTMLImageElement);\n }\n } else {\n data = { type: 'image', loadState: 'init' };\n ResourceLoader.cache.set(svgStr, data);\n\n data.dataPromise = application.global.loadSvg(svgStr);\n if (!data.dataPromise) {\n // 无法获取资源,修改缓存和mark状态\n data.loadState = 'fail';\n mark.imageLoadFail(svgStr);\n } else {\n // 资源padding队列加入mark信息\n data.waitingMark = [mark];\n\n data.dataPromise.then(res => {\n data.loadState = res?.data ? 'success' : 'fail';\n data.data = res?.data;\n // 遍历资源padding队列,更新mark信息\n data.waitingMark?.map((mark: IImage, index) => {\n if (res?.data) {\n data.loadState = 'success';\n data.data = res.data;\n mark.imageLoadSuccess(svgStr, res.data as HTMLImageElement);\n } else {\n data.loadState = 'fail';\n mark.imageLoadFail(svgStr);\n }\n });\n data.waitingMark && (data.waitingMark = []);\n });\n }\n }\n }\n\n static GetFile(url: string, type: 'json' | 'arrayBuffer' | 'blob') {\n let data = ResourceLoader.cache.get(url);\n if (data) {\n // 存在缓存\n if (data.loadState === 'fail') {\n return Promise.reject();\n } else if (data.loadState === 'init' || data.loadState === 'loading') {\n return data.dataPromise.then(data => data.data);\n }\n return Promise.resolve(data.data);\n }\n data = { type, loadState: 'init' };\n ResourceLoader.cache.set(url, data);\n\n if (type === 'arrayBuffer') {\n data.dataPromise = application.global.loadArrayBuffer(url);\n } else if (type === 'blob') {\n data.dataPromise = application.global.loadBlob(url);\n } else if (type === 'json') {\n data.dataPromise = application.global.loadJson(url);\n }\n\n return data.dataPromise.then(data => data.data);\n }\n\n static loading() {\n setTimeout(() => {\n if (!ResourceLoader.isLoading && ResourceLoader.toLoadAueue.length) {\n ResourceLoader.isLoading = true;\n const tasks = ResourceLoader.toLoadAueue.splice(0, PARALLEL_NUMBER);\n const promises: Promise<void>[] = [];\n tasks.forEach(task => {\n const { url, marks } = task;\n const data: ResourceData = { type: 'image', loadState: 'init' };\n ResourceLoader.cache.set(url, data);\n\n data.dataPromise = application.global.loadImage(url);\n if (!data.dataPromise) {\n // 无法获取资源,修改缓存和mark状态\n data.loadState = 'fail';\n // mark.imageLoadFail(url);\n marks.forEach(mark => mark.imageLoadFail(url));\n } else {\n // 资源padding队列加入mark信息\n // data.waitingMark = [mark];\n data.waitingMark = marks;\n\n const end = data.dataPromise.then(res => {\n data.loadState = res?.data ? 'success' : 'fail';\n data.data = res?.data;\n // 遍历资源padding队列,更新mark信息\n data.waitingMark?.map((mark: IImage, index) => {\n if (res?.data) {\n data.loadState = 'success';\n data.data = res.data;\n // console.log(mark.attribute.y)\n mark.imageLoadSuccess(url, res.data as HTMLImageElement);\n } else {\n data.loadState = 'fail';\n mark.imageLoadFail(url);\n }\n });\n\n data.waitingMark && (data.waitingMark = []);\n });\n\n promises.push(end);\n }\n });\n\n Promise.all(promises)\n .then(() => {\n ResourceLoader.isLoading = false;\n this.onLoadSuccessCb.forEach(cb => cb());\n ResourceLoader.loading();\n })\n .catch(error => {\n console.error(error);\n ResourceLoader.isLoading = false;\n this.onLoadSuccessCb.forEach(cb => cb());\n ResourceLoader.loading();\n });\n }\n }, 0);\n }\n\n static loadImage(url: string, mark: ImagePayload) {\n // find url in toLoadAueue\n const index = getIndex(url, ResourceLoader.toLoadAueue);\n if (index !== -1) {\n // add mark to aueue\n ResourceLoader.toLoadAueue[index].marks.push(mark);\n ResourceLoader.loading();\n return;\n }\n\n // add task to aueue\n ResourceLoader.toLoadAueue.push({ url, marks: [mark] });\n ResourceLoader.loading();\n }\n\n static improveImageLoading(url: string) {\n const index = getIndex(url, ResourceLoader.toLoadAueue);\n if (index !== -1) {\n const elememt = ResourceLoader.toLoadAueue.splice(index, 1);\n ResourceLoader.toLoadAueue.unshift(elememt[0]);\n }\n }\n\n static onLoadSuccess(cb: () => void) {\n this.onLoadSuccessCb.push(cb);\n }\n}\n\nfunction getIndex(url: string, arr: { url: string; marks: ImagePayload[] }[]) {\n for (let i = 0; i < arr.length; i++) {\n if (arr[i].url === url) {\n return i;\n }\n }\n return -1;\n}\n"]}
|