fabric 7.0.0 → 7.2.0
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/.husky/pre-commit +1 -0
- package/CHANGELOG.md +21 -0
- package/dist/extensions/cropping_controls/croppingControls.d.ts +16 -0
- package/dist/extensions/cropping_controls/croppingControls.d.ts.map +1 -0
- package/dist/extensions/cropping_controls/croppingHandlers.d.ts +39 -0
- package/dist/extensions/cropping_controls/croppingHandlers.d.ts.map +1 -0
- package/dist/extensions/cropping_controls/enterCropMode.d.ts +7 -0
- package/dist/extensions/cropping_controls/enterCropMode.d.ts.map +1 -0
- package/dist/extensions/cropping_controls/renderCornerControl.d.ts +14 -0
- package/dist/extensions/cropping_controls/renderCornerControl.d.ts.map +1 -0
- package/dist/extensions/index.d.ts +3 -0
- package/dist/extensions/index.d.ts.map +1 -1
- package/dist/fabric.d.ts +1 -0
- package/dist/fabric.d.ts.map +1 -1
- package/dist/index.js +628 -537
- package/dist/index.js.map +1 -1
- package/dist/index.min.js +1 -1
- package/dist/index.min.js.map +1 -1
- package/dist/index.min.mjs +1 -1
- package/dist/index.min.mjs.map +1 -1
- package/dist/index.mjs +628 -537
- package/dist/index.mjs.map +1 -1
- package/dist/index.node.cjs +628 -537
- package/dist/index.node.cjs.map +1 -1
- package/dist/index.node.mjs +628 -537
- package/dist/index.node.mjs.map +1 -1
- package/dist/package.json.min.mjs +1 -1
- package/dist/package.json.mjs +1 -1
- package/dist/src/EventTypeDefs.d.ts +5 -0
- package/dist/src/EventTypeDefs.d.ts.map +1 -1
- package/dist/src/Pattern/Pattern.d.ts.map +1 -1
- package/dist/src/Pattern/Pattern.min.mjs +1 -1
- package/dist/src/Pattern/Pattern.min.mjs.map +1 -1
- package/dist/src/Pattern/Pattern.mjs +2 -1
- package/dist/src/Pattern/Pattern.mjs.map +1 -1
- package/dist/src/Shadow.d.ts +1 -1
- package/dist/src/Shadow.d.ts.map +1 -1
- package/dist/src/Shadow.min.mjs +1 -1
- package/dist/src/Shadow.min.mjs.map +1 -1
- package/dist/src/Shadow.mjs +5 -4
- package/dist/src/Shadow.mjs.map +1 -1
- package/dist/src/canvas/CanvasOptions.d.ts.map +1 -1
- package/dist/src/canvas/CanvasOptions.min.mjs.map +1 -1
- package/dist/src/canvas/CanvasOptions.mjs.map +1 -1
- package/dist/src/canvas/SelectableCanvas.d.ts +2 -0
- package/dist/src/canvas/SelectableCanvas.d.ts.map +1 -1
- package/dist/src/canvas/SelectableCanvas.min.mjs +1 -1
- package/dist/src/canvas/SelectableCanvas.min.mjs.map +1 -1
- package/dist/src/canvas/SelectableCanvas.mjs +33 -13
- package/dist/src/canvas/SelectableCanvas.mjs.map +1 -1
- package/dist/src/canvas/StaticCanvas.d.ts.map +1 -1
- package/dist/src/canvas/StaticCanvas.min.mjs +1 -1
- package/dist/src/canvas/StaticCanvas.min.mjs.map +1 -1
- package/dist/src/canvas/StaticCanvas.mjs +3 -1
- package/dist/src/canvas/StaticCanvas.mjs.map +1 -1
- package/dist/src/canvas/StaticCanvasOptions.d.ts.map +1 -1
- package/dist/src/canvas/StaticCanvasOptions.min.mjs.map +1 -1
- package/dist/src/canvas/StaticCanvasOptions.mjs.map +1 -1
- package/dist/src/constants.d.ts +1 -0
- package/dist/src/constants.d.ts.map +1 -1
- package/dist/src/constants.min.mjs.map +1 -1
- package/dist/src/constants.mjs.map +1 -1
- package/dist/src/controls/Control.d.ts +22 -1
- package/dist/src/controls/Control.d.ts.map +1 -1
- package/dist/src/controls/Control.min.mjs +1 -1
- package/dist/src/controls/Control.min.mjs.map +1 -1
- package/dist/src/controls/Control.mjs +45 -1
- package/dist/src/controls/Control.mjs.map +1 -1
- package/dist/src/controls/changeWidth.d.ts +22 -0
- package/dist/src/controls/changeWidth.d.ts.map +1 -1
- package/dist/src/controls/changeWidth.min.mjs +1 -1
- package/dist/src/controls/changeWidth.min.mjs.map +1 -1
- package/dist/src/controls/changeWidth.mjs +46 -18
- package/dist/src/controls/changeWidth.mjs.map +1 -1
- package/dist/src/controls/controlRendering.d.ts.map +1 -1
- package/dist/src/controls/controlRendering.min.mjs +1 -1
- package/dist/src/controls/controlRendering.min.mjs.map +1 -1
- package/dist/src/controls/controlRendering.mjs +18 -34
- package/dist/src/controls/controlRendering.mjs.map +1 -1
- package/dist/src/controls/index.d.ts +2 -1
- package/dist/src/controls/index.d.ts.map +1 -1
- package/dist/src/controls/index.min.mjs +1 -1
- package/dist/src/controls/index.mjs +1 -1
- package/dist/src/gradient/Gradient.d.ts.map +1 -1
- package/dist/src/gradient/Gradient.min.mjs +1 -1
- package/dist/src/gradient/Gradient.min.mjs.map +1 -1
- package/dist/src/gradient/Gradient.mjs +19 -6
- package/dist/src/gradient/Gradient.mjs.map +1 -1
- package/dist/src/shapes/Circle.d.ts.map +1 -1
- package/dist/src/shapes/Circle.min.mjs +1 -1
- package/dist/src/shapes/Circle.min.mjs.map +1 -1
- package/dist/src/shapes/Circle.mjs +10 -7
- package/dist/src/shapes/Circle.mjs.map +1 -1
- package/dist/src/shapes/Ellipse.d.ts.map +1 -1
- package/dist/src/shapes/Ellipse.min.mjs +1 -1
- package/dist/src/shapes/Ellipse.min.mjs.map +1 -1
- package/dist/src/shapes/Ellipse.mjs +2 -1
- package/dist/src/shapes/Ellipse.mjs.map +1 -1
- package/dist/src/shapes/Group.d.ts.map +1 -1
- package/dist/src/shapes/Group.min.mjs +1 -1
- package/dist/src/shapes/Group.min.mjs.map +1 -1
- package/dist/src/shapes/Group.mjs +2 -1
- package/dist/src/shapes/Group.mjs.map +1 -1
- package/dist/src/shapes/IText/IText.d.ts.map +1 -1
- package/dist/src/shapes/IText/IText.min.mjs.map +1 -1
- package/dist/src/shapes/IText/IText.mjs.map +1 -1
- package/dist/src/shapes/Image.d.ts +1 -1
- package/dist/src/shapes/Image.d.ts.map +1 -1
- package/dist/src/shapes/Image.min.mjs +1 -1
- package/dist/src/shapes/Image.min.mjs.map +1 -1
- package/dist/src/shapes/Image.mjs +4 -3
- package/dist/src/shapes/Image.mjs.map +1 -1
- package/dist/src/shapes/Line.d.ts.map +1 -1
- package/dist/src/shapes/Line.min.mjs +1 -1
- package/dist/src/shapes/Line.min.mjs.map +1 -1
- package/dist/src/shapes/Line.mjs +6 -10
- package/dist/src/shapes/Line.mjs.map +1 -1
- package/dist/src/shapes/Object/FabricObjectSVGExportMixin.d.ts.map +1 -1
- package/dist/src/shapes/Object/FabricObjectSVGExportMixin.min.mjs +1 -1
- package/dist/src/shapes/Object/FabricObjectSVGExportMixin.min.mjs.map +1 -1
- package/dist/src/shapes/Object/FabricObjectSVGExportMixin.mjs +5 -4
- package/dist/src/shapes/Object/FabricObjectSVGExportMixin.mjs.map +1 -1
- package/dist/src/shapes/Object/InteractiveObject.d.ts.map +1 -1
- package/dist/src/shapes/Object/InteractiveObject.min.mjs.map +1 -1
- package/dist/src/shapes/Object/InteractiveObject.mjs.map +1 -1
- package/dist/src/shapes/Object/Object.d.ts.map +1 -1
- package/dist/src/shapes/Object/Object.min.mjs +1 -1
- package/dist/src/shapes/Object/Object.min.mjs.map +1 -1
- package/dist/src/shapes/Object/Object.mjs +3 -0
- package/dist/src/shapes/Object/Object.mjs.map +1 -1
- package/dist/src/shapes/Object/ObjectGeometry.min.mjs +1 -1
- package/dist/src/shapes/Object/ObjectGeometry.min.mjs.map +1 -1
- package/dist/src/shapes/Object/ObjectGeometry.mjs +1 -1
- package/dist/src/shapes/Object/ObjectGeometry.mjs.map +1 -1
- package/dist/src/shapes/Object/types/FabricObjectProps.d.ts.map +1 -1
- package/dist/src/shapes/Object/types/ObjectProps.d.ts.map +1 -1
- package/dist/src/shapes/Path.d.ts.map +1 -1
- package/dist/src/shapes/Path.min.mjs.map +1 -1
- package/dist/src/shapes/Path.mjs +1 -2
- package/dist/src/shapes/Path.mjs.map +1 -1
- package/dist/src/shapes/Polyline.d.ts.map +1 -1
- package/dist/src/shapes/Polyline.min.mjs +1 -1
- package/dist/src/shapes/Polyline.min.mjs.map +1 -1
- package/dist/src/shapes/Polyline.mjs +10 -6
- package/dist/src/shapes/Polyline.mjs.map +1 -1
- package/dist/src/shapes/Rect.d.ts.map +1 -1
- package/dist/src/shapes/Rect.min.mjs +1 -1
- package/dist/src/shapes/Rect.min.mjs.map +1 -1
- package/dist/src/shapes/Rect.mjs +2 -1
- package/dist/src/shapes/Rect.mjs.map +1 -1
- package/dist/src/shapes/Text/StyledText.d.ts.map +1 -1
- package/dist/src/shapes/Text/StyledText.min.mjs.map +1 -1
- package/dist/src/shapes/Text/StyledText.mjs +0 -3
- package/dist/src/shapes/Text/StyledText.mjs.map +1 -1
- package/dist/src/shapes/Text/Text.d.ts.map +1 -1
- package/dist/src/shapes/Text/Text.min.mjs.map +1 -1
- package/dist/src/shapes/Text/Text.mjs.map +1 -1
- package/dist/src/shapes/Text/TextSVGExportMixin.d.ts.map +1 -1
- package/dist/src/shapes/Text/TextSVGExportMixin.min.mjs +1 -1
- package/dist/src/shapes/Text/TextSVGExportMixin.min.mjs.map +1 -1
- package/dist/src/shapes/Text/TextSVGExportMixin.mjs +5 -6
- package/dist/src/shapes/Text/TextSVGExportMixin.mjs.map +1 -1
- package/dist/src/shapes/Textbox.d.ts.map +1 -1
- package/dist/src/shapes/Textbox.min.mjs.map +1 -1
- package/dist/src/shapes/Textbox.mjs.map +1 -1
- package/dist/src/shapes/Triangle.d.ts.map +1 -1
- package/dist/src/shapes/Triangle.min.mjs.map +1 -1
- package/dist/src/shapes/Triangle.mjs.map +1 -1
- package/dist/src/util/lang_string.d.ts +1 -1
- package/dist/src/util/lang_string.d.ts.map +1 -1
- package/dist/src/util/lang_string.min.mjs +1 -1
- package/dist/src/util/lang_string.min.mjs.map +1 -1
- package/dist/src/util/lang_string.mjs +1 -1
- package/dist/src/util/lang_string.mjs.map +1 -1
- package/dist/src/util/misc/svgParsing.d.ts.map +1 -1
- package/dist/src/util/misc/svgParsing.min.mjs +1 -1
- package/dist/src/util/misc/svgParsing.min.mjs.map +1 -1
- package/dist/src/util/misc/svgParsing.mjs +2 -1
- package/dist/src/util/misc/svgParsing.mjs.map +1 -1
- package/dist-extensions/cropping_controls/croppingControls.mjs +140 -0
- package/dist-extensions/cropping_controls/croppingControls.mjs.map +1 -0
- package/dist-extensions/cropping_controls/croppingHandlers.mjs +228 -0
- package/dist-extensions/cropping_controls/croppingHandlers.mjs.map +1 -0
- package/dist-extensions/cropping_controls/enterCropMode.mjs +38 -0
- package/dist-extensions/cropping_controls/enterCropMode.mjs.map +1 -0
- package/dist-extensions/cropping_controls/renderCornerControl.mjs +45 -0
- package/dist-extensions/cropping_controls/renderCornerControl.mjs.map +1 -0
- package/dist-extensions/extensions/cropping_controls/croppingControls.d.ts +16 -0
- package/dist-extensions/extensions/cropping_controls/croppingControls.d.ts.map +1 -0
- package/dist-extensions/extensions/cropping_controls/croppingHandlers.d.ts +39 -0
- package/dist-extensions/extensions/cropping_controls/croppingHandlers.d.ts.map +1 -0
- package/dist-extensions/extensions/cropping_controls/enterCropMode.d.ts +7 -0
- package/dist-extensions/extensions/cropping_controls/enterCropMode.d.ts.map +1 -0
- package/dist-extensions/extensions/cropping_controls/renderCornerControl.d.ts +14 -0
- package/dist-extensions/extensions/cropping_controls/renderCornerControl.d.ts.map +1 -0
- package/dist-extensions/extensions/index.d.ts +3 -0
- package/dist-extensions/extensions/index.d.ts.map +1 -1
- package/dist-extensions/fabric-extensions.min.js +1 -1
- package/dist-extensions/fabric-extensions.min.js.map +1 -1
- package/dist-extensions/fabric.d.ts +1 -0
- package/dist-extensions/fabric.d.ts.map +1 -1
- package/dist-extensions/index.mjs +3 -0
- package/dist-extensions/index.mjs.map +1 -1
- package/dist-extensions/src/EventTypeDefs.d.ts +5 -0
- package/dist-extensions/src/EventTypeDefs.d.ts.map +1 -1
- package/dist-extensions/src/Pattern/Pattern.d.ts.map +1 -1
- package/dist-extensions/src/Shadow.d.ts +1 -1
- package/dist-extensions/src/Shadow.d.ts.map +1 -1
- package/dist-extensions/src/canvas/CanvasOptions.d.ts.map +1 -1
- package/dist-extensions/src/canvas/SelectableCanvas.d.ts +2 -0
- package/dist-extensions/src/canvas/SelectableCanvas.d.ts.map +1 -1
- package/dist-extensions/src/canvas/StaticCanvas.d.ts.map +1 -1
- package/dist-extensions/src/canvas/StaticCanvasOptions.d.ts.map +1 -1
- package/dist-extensions/src/constants.d.ts +1 -0
- package/dist-extensions/src/constants.d.ts.map +1 -1
- package/dist-extensions/src/controls/Control.d.ts +22 -1
- package/dist-extensions/src/controls/Control.d.ts.map +1 -1
- package/dist-extensions/src/controls/changeWidth.d.ts +22 -0
- package/dist-extensions/src/controls/changeWidth.d.ts.map +1 -1
- package/dist-extensions/src/controls/controlRendering.d.ts.map +1 -1
- package/dist-extensions/src/controls/index.d.ts +2 -1
- package/dist-extensions/src/controls/index.d.ts.map +1 -1
- package/dist-extensions/src/gradient/Gradient.d.ts.map +1 -1
- package/dist-extensions/src/shapes/Circle.d.ts.map +1 -1
- package/dist-extensions/src/shapes/Ellipse.d.ts.map +1 -1
- package/dist-extensions/src/shapes/Group.d.ts.map +1 -1
- package/dist-extensions/src/shapes/IText/IText.d.ts.map +1 -1
- package/dist-extensions/src/shapes/Image.d.ts.map +1 -1
- package/dist-extensions/src/shapes/Line.d.ts.map +1 -1
- package/dist-extensions/src/shapes/Object/FabricObjectSVGExportMixin.d.ts.map +1 -1
- package/dist-extensions/src/shapes/Object/InteractiveObject.d.ts.map +1 -1
- package/dist-extensions/src/shapes/Object/Object.d.ts.map +1 -1
- package/dist-extensions/src/shapes/Object/types/FabricObjectProps.d.ts.map +1 -1
- package/dist-extensions/src/shapes/Object/types/ObjectProps.d.ts.map +1 -1
- package/dist-extensions/src/shapes/Path.d.ts +1 -1
- package/dist-extensions/src/shapes/Path.d.ts.map +1 -1
- package/dist-extensions/src/shapes/Polyline.d.ts.map +1 -1
- package/dist-extensions/src/shapes/Rect.d.ts.map +1 -1
- package/dist-extensions/src/shapes/Text/StyledText.d.ts.map +1 -1
- package/dist-extensions/src/shapes/Text/Text.d.ts.map +1 -1
- package/dist-extensions/src/shapes/Text/TextSVGExportMixin.d.ts.map +1 -1
- package/dist-extensions/src/shapes/Textbox.d.ts.map +1 -1
- package/dist-extensions/src/shapes/Triangle.d.ts.map +1 -1
- package/dist-extensions/src/util/lang_string.d.ts +1 -1
- package/dist-extensions/src/util/lang_string.d.ts.map +1 -1
- package/dist-extensions/src/util/misc/svgParsing.d.ts.map +1 -1
- package/eslint.config.mjs +2 -0
- package/extensions/cropping_controls/croppingControls.spec.ts +115 -0
- package/extensions/cropping_controls/croppingControls.ts +150 -0
- package/extensions/cropping_controls/croppingHandlers.spec.ts +579 -0
- package/extensions/cropping_controls/croppingHandlers.ts +285 -0
- package/extensions/cropping_controls/enterCropMode.ts +30 -0
- package/extensions/cropping_controls/renderCornerControl.ts +53 -0
- package/extensions/index.ts +9 -0
- package/fabric.ts +1 -0
- package/package.json +17 -8
- package/src/ClassRegistry.spec.ts +18 -19
- package/src/EventTypeDefs.ts +15 -11
- package/src/Pattern/Pattern.spec.ts +12 -0
- package/src/Pattern/Pattern.ts +3 -2
- package/src/Shadow.ts +9 -8
- package/src/brushes/PencilBrush.spec.ts +11 -11
- package/src/canvas/Canvas-dispose.spec.ts +8 -7
- package/src/canvas/Canvas.spec.ts +27 -29
- package/src/canvas/CanvasOptions.ts +2 -1
- package/src/canvas/SelectableCanvas.ts +38 -15
- package/src/canvas/StaticCanvas.spec.ts +20 -0
- package/src/canvas/StaticCanvas.ts +7 -4
- package/src/canvas/StaticCanvasOptions.ts +1 -3
- package/src/constants.ts +1 -0
- package/src/controls/Control.spec.ts +102 -0
- package/src/controls/Control.ts +71 -2
- package/src/controls/changeHeight.spec.ts +147 -0
- package/src/controls/changeWidth.ts +68 -35
- package/src/controls/controlRendering.ts +20 -48
- package/src/controls/index.ts +7 -1
- package/src/gradient/Gradient.spec.ts +101 -46
- package/src/gradient/Gradient.ts +27 -14
- package/src/shapes/Circle.spec.ts +10 -39
- package/src/shapes/Circle.ts +11 -11
- package/src/shapes/Ellipse.spec.ts +8 -37
- package/src/shapes/Ellipse.ts +7 -7
- package/src/shapes/Group.ts +3 -3
- package/src/shapes/IText/IText-click-behavior.spec.ts +36 -49
- package/src/shapes/IText/IText.ts +5 -6
- package/src/shapes/IText/ITextKeyBehavior.test.ts +0 -1
- package/src/shapes/IText/__snapshots__/ITextBehavior.test.ts.snap +6 -6
- package/src/shapes/Image.spec.ts +17 -33
- package/src/shapes/Image.ts +15 -11
- package/src/shapes/Line.spec.ts +4 -30
- package/src/shapes/Line.ts +11 -16
- package/src/shapes/Object/FabricObjectSVGExportMixin.ts +11 -4
- package/src/shapes/Object/InteractiveObject.ts +4 -4
- package/src/shapes/Object/Object.ts +6 -5
- package/src/shapes/Object/ObjectGeometry.spec.ts +15 -0
- package/src/shapes/Object/ObjectGeometry.ts +1 -1
- package/src/shapes/Object/objectSvgExport.spec.ts +112 -0
- package/src/shapes/Object/types/FabricObjectProps.ts +1 -4
- package/src/shapes/Object/types/ObjectProps.ts +1 -3
- package/src/shapes/Path.spec.ts +4 -27
- package/src/shapes/Path.ts +2 -4
- package/src/shapes/Polygon.spec.ts +4 -31
- package/src/shapes/Polyline.spec.ts +4 -31
- package/src/shapes/Polyline.ts +11 -12
- package/src/shapes/Rect.spec.ts +25 -33
- package/src/shapes/Rect.ts +7 -7
- package/src/shapes/Text/StyledText.ts +0 -3
- package/src/shapes/Text/Text.spec.ts +3 -32
- package/src/shapes/Text/Text.ts +5 -6
- package/src/shapes/Text/TextSVGExportMixin.spec.ts +9 -0
- package/src/shapes/Text/TextSVGExportMixin.ts +14 -16
- package/src/shapes/Text/__snapshots__/Text.spec.ts.snap +1 -1
- package/src/shapes/Text/__snapshots__/TextSVGExportMixin.spec.ts.snap +1 -1
- package/src/shapes/Textbox.spec.ts +5 -5
- package/src/shapes/Textbox.ts +6 -5
- package/src/shapes/Triangle.ts +4 -4
- package/src/shapes/__snapshots__/Image.spec.ts.snap +4 -4
- package/src/shapes/__snapshots__/Textbox.spec.ts.snap +5 -5
- package/src/util/lang_string.ts +3 -2
- package/src/util/misc/svgParsing.ts +2 -1
- package/tsconfig.spec.json +1 -0
- package/vitest.config.ts +12 -2
- package/vitest.extend.ts +6 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StaticCanvas.mjs","sources":["../../../src/canvas/StaticCanvas.ts"],"sourcesContent":["import { config } from '../config';\nimport { CENTER, VERSION } from '../constants';\nimport type { CanvasEvents, StaticCanvasEvents } from '../EventTypeDefs';\nimport type { Gradient } from '../gradient/Gradient';\nimport { createCollectionMixin, isCollection } from '../Collection';\nimport { CommonMethods } from '../CommonMethods';\nimport type { Pattern } from '../Pattern';\nimport { Point } from '../Point';\nimport type { TCachedFabricObject } from '../shapes/Object/Object';\nimport type {\n Abortable,\n Constructor,\n TCornerPoint,\n TDataUrlOptions,\n TFiller,\n TMat2D,\n TSize,\n TSVGReviver,\n TToCanvasElementOptions,\n TValidToObjectMethod,\n TOptions,\n} from '../typedefs';\nimport {\n cancelAnimFrame,\n requestAnimFrame,\n} from '../util/animation/AnimationFrameProvider';\nimport { runningAnimations } from '../util/animation/AnimationRegistry';\nimport { uid } from '../util/internals/uid';\nimport { createCanvasElementFor, toBlob, toDataURL } from '../util/misc/dom';\nimport { invertTransform, transformPoint } from '../util/misc/matrix';\nimport type { EnlivenObjectOptions } from '../util/misc/objectEnlive';\nimport {\n enlivenObjectEnlivables,\n enlivenObjects,\n} from '../util/misc/objectEnlive';\nimport { pick } from '../util/misc/pick';\nimport { matrixToSVG } from '../util/misc/svgExport';\nimport { toFixed } from '../util/misc/toFixed';\nimport { isFiller, isPattern, isTextObject } from '../util/typeAssertions';\nimport { StaticCanvasDOMManager } from './DOMManagers/StaticCanvasDOMManager';\nimport type { CSSDimensions } from './DOMManagers/util';\nimport type { FabricObject } from '../shapes/Object/FabricObject';\nimport type { StaticCanvasOptions } from './StaticCanvasOptions';\nimport { staticCanvasDefaults } from './StaticCanvasOptions';\nimport { log, FabricError } from '../util/internals/console';\nimport { getDevicePixelRatio } from '../env';\n\n/**\n * Having both options in TCanvasSizeOptions set to true transform the call in a calcOffset\n * Better try to restrict with types to avoid confusion.\n */\nexport type TCanvasSizeOptions =\n | {\n backstoreOnly?: true;\n cssOnly?: false;\n }\n | {\n backstoreOnly?: false;\n cssOnly?: true;\n };\n\nexport type TSVGExportOptions = {\n suppressPreamble?: boolean;\n viewBox?: {\n x: number;\n y: number;\n width: number;\n height: number;\n };\n encoding?: 'UTF-8'; // test Encoding type and see what happens\n width?: string;\n height?: string;\n reviver?: TSVGReviver;\n};\n\nexport type PatternQuality = 'fast' | 'good' | 'best' | 'nearest' | 'bilinear';\n\n/**\n * Static canvas class\n * @see {@link http://fabric5.fabricjs.com/static_canvas|StaticCanvas demo}\n * @fires before:render\n * @fires after:render\n * @fires canvas:cleared\n * @fires object:added\n * @fires object:removed\n */\n// TODO: fix `EventSpec` inheritance https://github.com/microsoft/TypeScript/issues/26154#issuecomment-1366616260\nexport class StaticCanvas<\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n EventSpec extends StaticCanvasEvents = StaticCanvasEvents,\n >\n extends createCollectionMixin(CommonMethods<CanvasEvents>)\n implements StaticCanvasOptions\n{\n declare width: number;\n declare height: number;\n\n // background\n declare backgroundVpt: boolean;\n declare backgroundColor: TFiller | string;\n declare backgroundImage?: FabricObject;\n // overlay\n declare overlayVpt: boolean;\n declare overlayColor: TFiller | string;\n declare overlayImage?: FabricObject;\n\n declare clipPath?: FabricObject;\n\n declare includeDefaultValues: boolean;\n\n // rendering config\n declare renderOnAddRemove: boolean;\n declare skipOffscreen: boolean;\n declare enableRetinaScaling: boolean;\n declare imageSmoothingEnabled: boolean;\n\n /**\n * @todo move to Canvas\n */\n declare controlsAboveOverlay: boolean;\n\n /**\n * @todo move to Canvas\n */\n declare allowTouchScrolling: boolean;\n\n declare viewportTransform: TMat2D;\n\n /**\n * The viewport bounding box in scene plane coordinates, see {@link calcViewportBoundaries}\n */\n declare vptCoords: TCornerPoint;\n\n /**\n * A reference to the canvas actual HTMLCanvasElement.\n * Can be use to read the raw pixels, but never write or manipulate\n * @type HTMLCanvasElement\n */\n get lowerCanvasEl() {\n return this.elements.lower?.el;\n }\n\n get contextContainer() {\n return this.elements.lower?.ctx;\n }\n\n /**\n * If true the Canvas is in the process or has been disposed/destroyed.\n * No more rendering operation will be executed on this canvas.\n * @type boolean\n */\n declare destroyed?: boolean;\n\n /**\n * Started the process of disposing but not done yet.\n * WIll likely complete the render cycle already scheduled but stopping adding more.\n * @type boolean\n */\n declare disposed?: boolean;\n\n declare _offset: { left: number; top: number };\n declare protected hasLostContext: boolean;\n declare protected nextRenderHandle: number;\n\n declare elements: StaticCanvasDOMManager;\n\n /**\n * When true control drawing is skipped.\n * This boolean is used to avoid toDataURL to export controls.\n * Usage of this boolean to build up other flows and features is not supported\n * @type Boolean\n * @default false\n */\n declare protected skipControlsDrawing: boolean;\n\n /**\n * Controls the rendering of images under node-canvas.\n * Has no effects on the browser context.\n */\n declare patternQuality: PatternQuality;\n\n static ownDefaults = staticCanvasDefaults;\n\n // reference to\n declare protected __cleanupTask?: {\n (): void;\n kill: (reason?: any) => void;\n };\n\n static getDefaults(): Record<string, any> {\n return StaticCanvas.ownDefaults;\n }\n\n constructor(\n el?: string | HTMLCanvasElement,\n options: TOptions<StaticCanvasOptions> = {},\n ) {\n super();\n Object.assign(\n this,\n (this.constructor as typeof StaticCanvas).getDefaults(),\n );\n this.set(options);\n this.initElements(el);\n this._setDimensionsImpl({\n width: this.width || this.elements.lower.el.width || 0,\n height: this.height || this.elements.lower.el.height || 0,\n });\n this.skipControlsDrawing = false;\n this.viewportTransform = [...this.viewportTransform];\n this.calcViewportBoundaries();\n }\n\n protected initElements(el?: string | HTMLCanvasElement) {\n this.elements = new StaticCanvasDOMManager(el);\n }\n\n add(...objects: FabricObject[]) {\n const size = super.add(...objects);\n objects.length > 0 && this.renderOnAddRemove && this.requestRenderAll();\n return size;\n }\n\n insertAt(index: number, ...objects: FabricObject[]) {\n const size = super.insertAt(index, ...objects);\n objects.length > 0 && this.renderOnAddRemove && this.requestRenderAll();\n return size;\n }\n\n remove(...objects: FabricObject[]) {\n const removed = super.remove(...objects);\n removed.length > 0 && this.renderOnAddRemove && this.requestRenderAll();\n return removed;\n }\n\n _onObjectAdded(obj: FabricObject) {\n if (obj.canvas && (obj.canvas as StaticCanvas) !== this) {\n log(\n 'warn',\n 'Canvas is trying to add an object that belongs to a different canvas.\\n' +\n 'Resulting to default behavior: removing object from previous canvas and adding to new canvas',\n );\n obj.canvas.remove(obj);\n }\n obj._set('canvas', this);\n obj.setCoords();\n this.fire('object:added', { target: obj });\n obj.fire('added', { target: this });\n }\n\n _onObjectRemoved(obj: FabricObject) {\n obj._set('canvas', undefined);\n this.fire('object:removed', { target: obj });\n obj.fire('removed', { target: this });\n }\n\n _onStackOrderChanged() {\n this.renderOnAddRemove && this.requestRenderAll();\n }\n\n /**\n * @private\n * @see https://developer.apple.com/library/safari/documentation/AudioVideo/Conceptual/HTML-canvas-guide/SettingUptheCanvas/SettingUptheCanvas.html\n * @return {Number} retinaScaling if applied, otherwise 1;\n */\n getRetinaScaling() {\n return this.enableRetinaScaling ? getDevicePixelRatio() : 1;\n }\n\n /**\n * Calculates canvas element offset relative to the document\n * This method is also attached as \"resize\" event handler of window\n */\n calcOffset() {\n return (this._offset = this.elements.calcOffset());\n }\n\n /**\n * Returns canvas width (in px)\n * @return {Number}\n */\n getWidth(): number {\n return this.width;\n }\n\n /**\n * Returns canvas height (in px)\n * @return {Number}\n */\n getHeight(): number {\n return this.height;\n }\n\n /**\n * Internal use only\n * @protected\n */\n protected _setDimensionsImpl(\n dimensions: Partial<TSize | CSSDimensions>,\n { cssOnly = false, backstoreOnly = false }: TCanvasSizeOptions = {},\n ) {\n if (!cssOnly) {\n const size = {\n width: this.width,\n height: this.height,\n ...(dimensions as Partial<TSize>),\n };\n this.elements.setDimensions(size, this.getRetinaScaling());\n this.hasLostContext = true;\n this.width = size.width;\n this.height = size.height;\n }\n if (!backstoreOnly) {\n this.elements.setCSSDimensions(dimensions);\n }\n\n this.calcOffset();\n }\n\n /**\n * Sets dimensions (width, height) of this canvas instance. when options.cssOnly flag active you should also supply the unit of measure (px/%/em)\n * @param {Object} dimensions Object with width/height properties\n * @param {Number|String} [dimensions.width] Width of canvas element\n * @param {Number|String} [dimensions.height] Height of canvas element\n * @param {Object} [options] Options object\n * @param {Boolean} [options.backstoreOnly=false] Set the given dimensions only as canvas backstore dimensions\n * @param {Boolean} [options.cssOnly=false] Set the given dimensions only as css dimensions\n */\n setDimensions(\n dimensions: Partial<CSSDimensions>,\n options?: { cssOnly?: true; backstoreOnly?: false },\n ): void;\n setDimensions(\n dimensions: Partial<TSize>,\n options?: { backstoreOnly?: true; cssOnly?: false },\n ): void;\n setDimensions(dimensions: Partial<TSize>, options?: never): void;\n setDimensions(\n dimensions: Partial<TSize | CSSDimensions>,\n options?: TCanvasSizeOptions,\n ) {\n this._setDimensionsImpl(dimensions, options);\n if (!options || !options.cssOnly) {\n this.requestRenderAll();\n }\n }\n\n /**\n * Returns canvas zoom level\n * @return {Number}\n */\n getZoom() {\n return this.viewportTransform[0];\n }\n\n /**\n * Sets viewport transformation of this canvas instance\n * @param {Array} vpt a Canvas 2D API transform matrix\n */\n setViewportTransform(vpt: TMat2D) {\n this.viewportTransform = vpt;\n this.calcViewportBoundaries();\n this.renderOnAddRemove && this.requestRenderAll();\n }\n\n /**\n * Sets zoom level of this canvas instance, the zoom centered around point\n * meaning that following zoom to point with the same point will have the visual\n * effect of the zoom originating from that point. The point won't move.\n * It has nothing to do with canvas center or visual center of the viewport.\n * @param {Point} point to zoom with respect to\n * @param {Number} value to set zoom to, less than 1 zooms out\n */\n zoomToPoint(point: Point, value: number) {\n // TODO: just change the scale, preserve other transformations\n const before = point,\n vpt: TMat2D = [...this.viewportTransform];\n const newPoint = transformPoint(point, invertTransform(vpt));\n vpt[0] = value;\n vpt[3] = value;\n const after = transformPoint(newPoint, vpt);\n vpt[4] += before.x - after.x;\n vpt[5] += before.y - after.y;\n this.setViewportTransform(vpt);\n }\n\n /**\n * Sets zoom level of this canvas instance\n * @param {Number} value to set zoom to, less than 1 zooms out\n */\n setZoom(value: number) {\n this.zoomToPoint(new Point(0, 0), value);\n }\n\n /**\n * Pan viewport so as to place point at top left corner of canvas\n * @param {Point} point to move to\n */\n absolutePan(point: Point) {\n const vpt: TMat2D = [...this.viewportTransform];\n vpt[4] = -point.x;\n vpt[5] = -point.y;\n return this.setViewportTransform(vpt);\n }\n\n /**\n * Pans viewpoint relatively\n * @param {Point} point (position vector) to move by\n */\n relativePan(point: Point) {\n return this.absolutePan(\n new Point(\n -point.x - this.viewportTransform[4],\n -point.y - this.viewportTransform[5],\n ),\n );\n }\n\n /**\n * Returns <canvas> element corresponding to this instance\n * @return {HTMLCanvasElement}\n */\n getElement(): HTMLCanvasElement {\n return this.elements.lower.el;\n }\n\n /**\n * Clears specified context of canvas element\n * @param {CanvasRenderingContext2D} ctx Context to clear\n */\n clearContext(ctx: CanvasRenderingContext2D) {\n ctx.clearRect(0, 0, this.width, this.height);\n }\n\n /**\n * Returns context of canvas where objects are drawn\n * @return {CanvasRenderingContext2D}\n */\n getContext(): CanvasRenderingContext2D {\n return this.elements.lower.ctx;\n }\n\n /**\n * Clears all contexts (background, main, top) of an instance\n */\n clear() {\n this.remove(...this.getObjects());\n this.backgroundImage = undefined;\n this.overlayImage = undefined;\n this.backgroundColor = '';\n this.overlayColor = '';\n this.clearContext(this.getContext());\n this.fire('canvas:cleared');\n this.renderOnAddRemove && this.requestRenderAll();\n }\n\n /**\n * Renders the canvas\n */\n renderAll() {\n this.cancelRequestedRender();\n if (this.destroyed) {\n return;\n }\n this.renderCanvas(this.getContext(), this._objects);\n }\n\n /**\n * Function created to be instance bound at initialization\n * used in requestAnimationFrame rendering\n * Let the fabricJS call it. If you call it manually you could have more\n * animationFrame stacking on to of each other\n * for an imperative rendering, use canvas.renderAll\n * @private\n */\n renderAndReset() {\n this.nextRenderHandle = 0;\n this.renderAll();\n }\n\n /**\n * Append a renderAll request to next animation frame.\n * unless one is already in progress, in that case nothing is done\n * a boolean flag will avoid appending more.\n */\n requestRenderAll() {\n if (!this.nextRenderHandle && !this.disposed && !this.destroyed) {\n this.nextRenderHandle = requestAnimFrame(() => this.renderAndReset());\n }\n }\n\n /**\n * Calculate the position of the 4 corner of canvas with current viewportTransform.\n * helps to determinate when an object is in the current rendering viewport\n */\n calcViewportBoundaries(): TCornerPoint {\n const width = this.width,\n height = this.height,\n iVpt = invertTransform(this.viewportTransform),\n a = transformPoint({ x: 0, y: 0 }, iVpt),\n b = transformPoint({ x: width, y: height }, iVpt),\n // we don't support vpt flipping\n // but the code is robust enough to mostly work with flipping\n min = a.min(b),\n max = a.max(b);\n return (this.vptCoords = {\n tl: min,\n tr: new Point(max.x, min.y),\n bl: new Point(min.x, max.y),\n br: max,\n });\n }\n\n cancelRequestedRender() {\n if (this.nextRenderHandle) {\n cancelAnimFrame(this.nextRenderHandle);\n this.nextRenderHandle = 0;\n }\n }\n\n drawControls(_ctx: CanvasRenderingContext2D) {\n // Static canvas has no controls\n }\n\n /**\n * Renders background, objects, overlay and controls.\n * @param {CanvasRenderingContext2D} ctx\n * @param {Array} objects to render\n */\n renderCanvas(ctx: CanvasRenderingContext2D, objects: FabricObject[]) {\n if (this.destroyed) {\n return;\n }\n\n const v = this.viewportTransform,\n path = this.clipPath;\n this.calcViewportBoundaries();\n this.clearContext(ctx);\n ctx.imageSmoothingEnabled = this.imageSmoothingEnabled;\n // @ts-expect-error node-canvas stuff\n ctx.patternQuality = this.patternQuality;\n this.fire('before:render', { ctx });\n this._renderBackground(ctx);\n\n ctx.save();\n //apply viewport transform once for all rendering process\n ctx.transform(v[0], v[1], v[2], v[3], v[4], v[5]);\n this._renderObjects(ctx, objects);\n ctx.restore();\n if (!this.controlsAboveOverlay && !this.skipControlsDrawing) {\n this.drawControls(ctx);\n }\n if (path) {\n path._set('canvas', this);\n // needed to setup a couple of variables\n // todo migrate to the newer one\n path.shouldCache();\n path._transformDone = true;\n (path as TCachedFabricObject).renderCache({ forClipping: true });\n this.drawClipPathOnCanvas(ctx, path as TCachedFabricObject);\n }\n this._renderOverlay(ctx);\n if (this.controlsAboveOverlay && !this.skipControlsDrawing) {\n this.drawControls(ctx);\n }\n this.fire('after:render', { ctx });\n\n if (this.__cleanupTask) {\n this.__cleanupTask();\n this.__cleanupTask = undefined;\n }\n }\n\n /**\n * Paint the cached clipPath on the lowerCanvasEl\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n drawClipPathOnCanvas(\n ctx: CanvasRenderingContext2D,\n clipPath: TCachedFabricObject,\n ) {\n const v = this.viewportTransform;\n ctx.save();\n ctx.transform(...v);\n // DEBUG: uncomment this line, comment the following\n // ctx.globalAlpha = 0.4;\n ctx.globalCompositeOperation = 'destination-in';\n clipPath.transform(ctx);\n ctx.scale(1 / clipPath.zoomX, 1 / clipPath.zoomY);\n ctx.drawImage(\n clipPath._cacheCanvas,\n -clipPath.cacheTranslationX,\n -clipPath.cacheTranslationY,\n );\n ctx.restore();\n }\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n * @param {Array} objects to render\n */\n _renderObjects(ctx: CanvasRenderingContext2D, objects: FabricObject[]) {\n for (let i = 0, len = objects.length; i < len; ++i) {\n objects[i] && objects[i].render(ctx);\n }\n }\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n * @param {string} property 'background' or 'overlay'\n */\n _renderBackgroundOrOverlay(\n ctx: CanvasRenderingContext2D,\n property: 'background' | 'overlay',\n ) {\n const fill = this[`${property}Color`],\n object = this[`${property}Image`],\n v = this.viewportTransform,\n needsVpt = this[`${property}Vpt`];\n if (!fill && !object) {\n return;\n }\n const isAFiller = isFiller(fill);\n if (fill) {\n ctx.save();\n ctx.beginPath();\n ctx.moveTo(0, 0);\n ctx.lineTo(this.width, 0);\n ctx.lineTo(this.width, this.height);\n ctx.lineTo(0, this.height);\n ctx.closePath();\n ctx.fillStyle = isAFiller ? fill.toLive(ctx /* this */)! : fill;\n if (needsVpt) {\n ctx.transform(...v);\n }\n if (isAFiller) {\n ctx.transform(1, 0, 0, 1, fill.offsetX || 0, fill.offsetY || 0);\n const m = ((fill as Gradient<'linear'>).gradientTransform ||\n (fill as Pattern).patternTransform) as TMat2D;\n m && ctx.transform(...m);\n }\n ctx.fill();\n ctx.restore();\n }\n if (object) {\n ctx.save();\n const { skipOffscreen } = this;\n // if the object doesn't move with the viewport,\n // the offscreen concept does not apply;\n this.skipOffscreen = needsVpt;\n if (needsVpt) {\n ctx.transform(...v);\n }\n object.render(ctx);\n this.skipOffscreen = skipOffscreen;\n ctx.restore();\n }\n }\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n _renderBackground(ctx: CanvasRenderingContext2D) {\n this._renderBackgroundOrOverlay(ctx, 'background');\n }\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n _renderOverlay(ctx: CanvasRenderingContext2D) {\n this._renderBackgroundOrOverlay(ctx, 'overlay');\n }\n\n /**\n * Returns coordinates of a center of canvas.\n * @return {Point}\n */\n getCenterPoint() {\n return new Point(this.width / 2, this.height / 2);\n }\n\n /**\n * Centers object horizontally in the canvas\n */\n centerObjectH(object: FabricObject) {\n return this._centerObject(\n object,\n new Point(this.getCenterPoint().x, object.getCenterPoint().y),\n );\n }\n\n /**\n * Centers object vertically in the canvas\n * @param {FabricObject} object Object to center vertically\n */\n centerObjectV(object: FabricObject) {\n return this._centerObject(\n object,\n new Point(object.getCenterPoint().x, this.getCenterPoint().y),\n );\n }\n\n /**\n * Centers object vertically and horizontally in the canvas\n * @param {FabricObject} object Object to center vertically and horizontally\n */\n centerObject(object: FabricObject) {\n return this._centerObject(object, this.getCenterPoint());\n }\n\n /**\n * Centers object vertically and horizontally in the viewport\n * @param {FabricObject} object Object to center vertically and horizontally\n */\n viewportCenterObject(object: FabricObject) {\n return this._centerObject(object, this.getVpCenter());\n }\n\n /**\n * Centers object horizontally in the viewport, object.top is unchanged\n * @param {FabricObject} object Object to center vertically and horizontally\n */\n viewportCenterObjectH(object: FabricObject) {\n return this._centerObject(\n object,\n new Point(this.getVpCenter().x, object.getCenterPoint().y),\n );\n }\n\n /**\n * Centers object Vertically in the viewport, object.top is unchanged\n * @param {FabricObject} object Object to center vertically and horizontally\n */\n viewportCenterObjectV(object: FabricObject) {\n return this._centerObject(\n object,\n new Point(object.getCenterPoint().x, this.getVpCenter().y),\n );\n }\n\n /**\n * Calculate the point in canvas that correspond to the center of actual viewport.\n * @return {Point} vpCenter, viewport center\n */\n getVpCenter(): Point {\n return transformPoint(\n this.getCenterPoint(),\n invertTransform(this.viewportTransform),\n );\n }\n\n /**\n * @private\n * @param {FabricObject} object Object to center\n * @param {Point} center Center point\n */\n _centerObject(object: FabricObject, center: Point) {\n object.setXY(center, CENTER, CENTER);\n object.setCoords();\n this.renderOnAddRemove && this.requestRenderAll();\n }\n\n /**\n * Returns dataless JSON representation of canvas\n * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output\n * @return {String} json string\n */\n toDatalessJSON(propertiesToInclude?: string[]) {\n return this.toDatalessObject(propertiesToInclude);\n }\n\n /**\n * Returns object representation of canvas\n * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output\n * @return {Object} object representation of an instance\n */\n toObject(propertiesToInclude?: string[]) {\n return this._toObjectMethod('toObject', propertiesToInclude);\n }\n\n /**\n * Returns Object representation of canvas\n * this alias is provided because if you call JSON.stringify on an instance,\n * the toJSON object will be invoked if it exists.\n * Having a toJSON method means you can do JSON.stringify(myCanvas)\n * JSON does not support additional properties because toJSON has its own signature\n * @return {Object} JSON compatible object\n * @see {@link http://fabric5.fabricjs.com/fabric-intro-part-3#serialization}\n * @see {@link http://jsfiddle.net/fabricjs/pec86/|jsFiddle demo}\n * @example <caption>JSON representation of canvas </caption>\n * const json = canvas.toJSON();\n * @example <caption>JSON representation of canvas </caption>\n * const json = JSON.stringify(canvas);\n */\n toJSON() {\n return this.toObject();\n }\n\n /**\n * Returns dataless object representation of canvas\n * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output\n * @return {Object} object representation of an instance\n */\n toDatalessObject(propertiesToInclude?: string[]) {\n return this._toObjectMethod('toDatalessObject', propertiesToInclude);\n }\n\n /**\n * @private\n */\n _toObjectMethod(\n methodName: TValidToObjectMethod,\n propertiesToInclude?: string[],\n ) {\n const clipPath = this.clipPath;\n const clipPathData =\n clipPath && !clipPath.excludeFromExport\n ? this._toObject(clipPath, methodName, propertiesToInclude)\n : null;\n return {\n version: VERSION,\n ...pick(this, propertiesToInclude as (keyof this)[]),\n objects: this._objects\n .filter((object) => !object.excludeFromExport)\n .map((instance) =>\n this._toObject(instance, methodName, propertiesToInclude),\n ),\n ...this.__serializeBgOverlay(methodName, propertiesToInclude),\n ...(clipPathData ? { clipPath: clipPathData } : null),\n };\n }\n\n /**\n * @private\n */\n protected _toObject(\n instance: FabricObject,\n methodName: TValidToObjectMethod,\n propertiesToInclude?: string[],\n ) {\n let originalValue;\n\n if (!this.includeDefaultValues) {\n originalValue = instance.includeDefaultValues;\n instance.includeDefaultValues = false;\n }\n\n const object = instance[methodName](propertiesToInclude);\n if (!this.includeDefaultValues) {\n instance.includeDefaultValues = !!originalValue;\n }\n return object;\n }\n\n /**\n * @private\n */\n __serializeBgOverlay(\n methodName: TValidToObjectMethod,\n propertiesToInclude?: string[],\n ) {\n const data: any = {},\n bgImage = this.backgroundImage,\n overlayImage = this.overlayImage,\n bgColor = this.backgroundColor,\n overlayColor = this.overlayColor;\n\n if (isFiller(bgColor)) {\n if (!bgColor.excludeFromExport) {\n data.background = bgColor.toObject(propertiesToInclude);\n }\n } else if (bgColor) {\n data.background = bgColor;\n }\n\n if (isFiller(overlayColor)) {\n if (!overlayColor.excludeFromExport) {\n data.overlay = overlayColor.toObject(propertiesToInclude);\n }\n } else if (overlayColor) {\n data.overlay = overlayColor;\n }\n\n if (bgImage && !bgImage.excludeFromExport) {\n data.backgroundImage = this._toObject(\n bgImage,\n methodName,\n propertiesToInclude,\n );\n }\n if (overlayImage && !overlayImage.excludeFromExport) {\n data.overlayImage = this._toObject(\n overlayImage,\n methodName,\n propertiesToInclude,\n );\n }\n\n return data;\n }\n\n /* _TO_SVG_START_ */\n\n declare svgViewportTransformation: boolean;\n\n /**\n * Returns SVG representation of canvas\n * @param {Object} [options] Options object for SVG output\n * @param {Boolean} [options.suppressPreamble=false] If true xml tag is not included\n * @param {Object} [options.viewBox] SVG viewbox object\n * @param {Number} [options.viewBox.x] x-coordinate of viewbox\n * @param {Number} [options.viewBox.y] y-coordinate of viewbox\n * @param {Number} [options.viewBox.width] Width of viewbox\n * @param {Number} [options.viewBox.height] Height of viewbox\n * @param {String} [options.encoding=UTF-8] Encoding of SVG output\n * @param {String} [options.width] desired width of svg with or without units\n * @param {String} [options.height] desired height of svg with or without units\n * @param {Function} [reviver] Method for further parsing of svg elements, called after each fabric object converted into svg representation.\n * @return {String} SVG string\n * @see {@link http://fabric5.fabricjs.com/fabric-intro-part-3#serialization}\n * @see {@link http://jsfiddle.net/fabricjs/jQ3ZZ/|jsFiddle demo}\n * @example <caption>Normal SVG output</caption>\n * var svg = canvas.toSVG();\n * @example <caption>SVG output without preamble (without <?xml ../>)</caption>\n * var svg = canvas.toSVG({suppressPreamble: true});\n * @example <caption>SVG output with viewBox attribute</caption>\n * var svg = canvas.toSVG({\n * viewBox: {\n * x: 100,\n * y: 100,\n * width: 200,\n * height: 300\n * }\n * });\n * @example <caption>SVG output with different encoding (default: UTF-8)</caption>\n * var svg = canvas.toSVG({encoding: 'ISO-8859-1'});\n * @example <caption>Modify SVG output with reviver function</caption>\n * var svg = canvas.toSVG(null, function(svg) {\n * return svg.replace('stroke-dasharray: ; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 10; ', '');\n * });\n */\n toSVG(options: TSVGExportOptions = {}, reviver?: TSVGReviver) {\n options.reviver = reviver;\n const markup: string[] = [];\n\n this._setSVGPreamble(markup, options);\n this._setSVGHeader(markup, options);\n if (this.clipPath) {\n markup.push(`<g clip-path=\"url(#${this.clipPath.clipPathId})\" >\\n`);\n }\n this._setSVGBgOverlayColor(markup, 'background');\n this._setSVGBgOverlayImage(markup, 'backgroundImage', reviver);\n this._setSVGObjects(markup, reviver);\n if (this.clipPath) {\n markup.push('</g>\\n');\n }\n this._setSVGBgOverlayColor(markup, 'overlay');\n this._setSVGBgOverlayImage(markup, 'overlayImage', reviver);\n\n markup.push('</svg>');\n\n return markup.join('');\n }\n\n /**\n * @private\n */\n _setSVGPreamble(markup: string[], options: TSVGExportOptions): void {\n if (options.suppressPreamble) {\n return;\n }\n markup.push(\n '<?xml version=\"1.0\" encoding=\"',\n options.encoding || 'UTF-8',\n '\" standalone=\"no\" ?>\\n',\n '<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\" ',\n '\"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\\n',\n );\n }\n\n /**\n * @private\n */\n _setSVGHeader(markup: string[], options: TSVGExportOptions): void {\n const width = options.width || `${this.width}`,\n height = options.height || `${this.height}`,\n NUM_FRACTION_DIGITS = config.NUM_FRACTION_DIGITS,\n optViewBox = options.viewBox;\n let viewBox: string;\n if (optViewBox) {\n viewBox = `viewBox=\"${optViewBox.x} ${optViewBox.y} ${optViewBox.width} ${optViewBox.height}\" `;\n } else if (this.svgViewportTransformation) {\n const vpt = this.viewportTransform;\n viewBox = `viewBox=\"${toFixed(\n -vpt[4] / vpt[0],\n NUM_FRACTION_DIGITS,\n )} ${toFixed(-vpt[5] / vpt[3], NUM_FRACTION_DIGITS)} ${toFixed(\n this.width / vpt[0],\n NUM_FRACTION_DIGITS,\n )} ${toFixed(this.height / vpt[3], NUM_FRACTION_DIGITS)}\" `;\n } else {\n viewBox = `viewBox=\"0 0 ${this.width} ${this.height}\" `;\n }\n\n markup.push(\n '<svg ',\n 'xmlns=\"http://www.w3.org/2000/svg\" ',\n 'xmlns:xlink=\"http://www.w3.org/1999/xlink\" ',\n 'version=\"1.1\" ',\n 'width=\"',\n width,\n '\" ',\n 'height=\"',\n height,\n '\" ',\n viewBox,\n 'xml:space=\"preserve\">\\n',\n '<desc>Created with Fabric.js ',\n VERSION,\n '</desc>\\n',\n '<defs>\\n',\n this.createSVGFontFacesMarkup(),\n this.createSVGRefElementsMarkup(),\n this.createSVGClipPathMarkup(options),\n '</defs>\\n',\n );\n }\n\n createSVGClipPathMarkup(options: TSVGExportOptions): string {\n const clipPath = this.clipPath;\n if (clipPath) {\n clipPath.clipPathId = `CLIPPATH_${uid()}`;\n return `<clipPath id=\"${clipPath.clipPathId}\" >\\n${clipPath.toClipPathSVG(\n options.reviver,\n )}</clipPath>\\n`;\n }\n return '';\n }\n\n /**\n * Creates markup containing SVG referenced elements like patterns, gradients etc.\n * @return {String}\n */\n createSVGRefElementsMarkup(): string {\n return (['background', 'overlay'] as const)\n .map((prop) => {\n const fill = this[`${prop}Color`];\n if (isFiller(fill)) {\n const shouldTransform = this[`${prop}Vpt`],\n vpt = this.viewportTransform,\n object = {\n // otherwise circular dependency\n isType: () => false,\n width: this.width / (shouldTransform ? vpt[0] : 1),\n height: this.height / (shouldTransform ? vpt[3] : 1),\n };\n return fill.toSVG(object as FabricObject, {\n additionalTransform: shouldTransform ? matrixToSVG(vpt) : '',\n });\n }\n })\n .join('');\n }\n\n /**\n * Creates markup containing SVG font faces,\n * font URLs for font faces must be collected by developers\n * and are not extracted from the DOM by fabricjs\n * @param {Array} objects Array of fabric objects\n * @return {String}\n */\n createSVGFontFacesMarkup(): string {\n const objects: FabricObject[] = [],\n fontList: Record<string, boolean> = {},\n fontPaths = config.fontPaths;\n\n this._objects.forEach(function add(object) {\n objects.push(object);\n if (isCollection(object)) {\n object._objects.forEach(add);\n }\n });\n\n objects.forEach((obj) => {\n if (!isTextObject(obj)) {\n return;\n }\n const { styles, fontFamily } = obj;\n if (fontList[fontFamily] || !fontPaths[fontFamily]) {\n return;\n }\n fontList[fontFamily] = true;\n if (!styles) {\n return;\n }\n Object.values(styles).forEach((styleRow) => {\n Object.values(styleRow).forEach(({ fontFamily = '' }) => {\n if (!fontList[fontFamily] && fontPaths[fontFamily]) {\n fontList[fontFamily] = true;\n }\n });\n });\n });\n\n const fontListMarkup = Object.keys(fontList)\n .map(\n (fontFamily) =>\n `\\t\\t@font-face {\\n\\t\\t\\tfont-family: '${fontFamily}';\\n\\t\\t\\tsrc: url('${fontPaths[fontFamily]}');\\n\\t\\t}\\n`,\n )\n .join('');\n\n if (fontListMarkup) {\n return `\\t<style type=\"text/css\"><![CDATA[\\n${fontListMarkup}]]></style>\\n`;\n }\n return '';\n }\n\n /**\n * @private\n */\n _setSVGObjects(markup: string[], reviver?: TSVGReviver) {\n this.forEachObject((fabricObject) => {\n if (fabricObject.excludeFromExport) {\n return;\n }\n this._setSVGObject(markup, fabricObject, reviver);\n });\n }\n\n /**\n * This is its own function because the Canvas ( non static ) requires extra code here\n * @private\n */\n _setSVGObject(\n markup: string[],\n instance: FabricObject,\n reviver?: TSVGReviver,\n ) {\n markup.push(instance.toSVG(reviver));\n }\n\n /**\n * @private\n */\n _setSVGBgOverlayImage(\n markup: string[],\n property: 'overlayImage' | 'backgroundImage',\n reviver?: TSVGReviver,\n ) {\n const bgOrOverlay = this[property];\n if (bgOrOverlay && !bgOrOverlay.excludeFromExport && bgOrOverlay.toSVG) {\n markup.push(bgOrOverlay.toSVG(reviver));\n }\n }\n\n /**\n * @TODO this seems to handle patterns but fail at gradients.\n * @private\n */\n _setSVGBgOverlayColor(markup: string[], property: 'background' | 'overlay') {\n const filler = this[`${property}Color`];\n if (!filler) {\n return;\n }\n if (isFiller(filler)) {\n const repeat = (filler as Pattern).repeat || '',\n finalWidth = this.width,\n finalHeight = this.height,\n shouldInvert = this[`${property}Vpt`],\n additionalTransform = shouldInvert\n ? matrixToSVG(invertTransform(this.viewportTransform))\n : '';\n markup.push(\n `<rect transform=\"${additionalTransform} translate(${finalWidth / 2},${\n finalHeight / 2\n })\" x=\"${filler.offsetX - finalWidth / 2}\" y=\"${\n filler.offsetY - finalHeight / 2\n }\" width=\"${\n (repeat === 'repeat-y' || repeat === 'no-repeat') && isPattern(filler)\n ? (filler.source as HTMLImageElement).width\n : finalWidth\n }\" height=\"${\n (repeat === 'repeat-x' || repeat === 'no-repeat') && isPattern(filler)\n ? (filler.source as HTMLImageElement).height\n : finalHeight\n }\" fill=\"url(#SVGID_${filler.id})\"></rect>\\n`,\n );\n } else {\n markup.push(\n '<rect x=\"0\" y=\"0\" width=\"100%\" height=\"100%\" ',\n 'fill=\"',\n filler,\n '\"',\n '></rect>\\n',\n );\n }\n }\n /* _TO_SVG_END_ */\n\n /**\n * Populates canvas with data from the specified JSON.\n * JSON format must conform to the one of {@link fabric.Canvas#toJSON}\n *\n * **IMPORTANT**: It is recommended to abort loading tasks before calling this method to prevent race conditions and unnecessary networking\n *\n * @param {String|Object} json JSON string or object\n * @param {Function} [reviver] Method for further parsing of JSON elements, called after each fabric object created.\n * @param {Object} [options] options\n * @param {AbortSignal} [options.signal] see https://developer.mozilla.org/en-US/docs/Web/API/AbortController/signal\n * @return {Promise<Canvas | StaticCanvas>} instance\n * @see {@link http://fabric5.fabricjs.com/fabric-intro-part-3#deserialization}\n * @see {@link http://jsfiddle.net/fabricjs/fmgXt/|jsFiddle demo}\n * @example <caption>loadFromJSON</caption>\n * canvas.loadFromJSON(json).then((canvas) => canvas.requestRenderAll());\n * @example <caption>loadFromJSON with reviver</caption>\n * canvas.loadFromJSON(json, function(o, object) {\n * // `o` = json object\n * // `object` = fabric.Object instance\n * // ... do some stuff ...\n * }).then((canvas) => {\n * ... canvas is restored, add your code.\n * });\n *\n */\n loadFromJSON(\n json: string | Record<string, any>,\n reviver?: EnlivenObjectOptions['reviver'],\n { signal }: Abortable = {},\n ): Promise<this> {\n if (!json) {\n return Promise.reject(new FabricError('`json` is undefined'));\n }\n\n // parse json if it wasn't already\n const { objects = [], ...serialized } =\n typeof json === 'string' ? JSON.parse(json) : json;\n const { backgroundImage, background, overlayImage, overlay, clipPath } =\n serialized;\n const renderOnAddRemove = this.renderOnAddRemove;\n this.renderOnAddRemove = false;\n\n return Promise.all([\n enlivenObjects<FabricObject>(objects, {\n reviver,\n signal,\n }),\n enlivenObjectEnlivables(\n {\n backgroundImage,\n backgroundColor: background,\n overlayImage,\n overlayColor: overlay,\n clipPath,\n },\n { signal },\n ),\n ]).then(([enlived, enlivedMap]) => {\n this.clear();\n this.add(...enlived);\n this.set(serialized);\n this.set(enlivedMap);\n this.renderOnAddRemove = renderOnAddRemove;\n return this;\n });\n }\n\n /**\n * Clones canvas instance\n * @param {string[]} [properties] Array of properties to include in the cloned canvas and children\n */\n clone(properties: string[]) {\n const data = this.toObject(properties);\n const canvas = this.cloneWithoutData();\n return canvas.loadFromJSON(data);\n }\n\n /**\n * Clones canvas instance without cloning existing data.\n * This essentially copies canvas dimensions since loadFromJSON does not affect canvas size.\n */\n cloneWithoutData() {\n const el = createCanvasElementFor(this);\n return new (this.constructor as Constructor<this>)(el);\n }\n\n /**\n * Exports canvas element to a dataurl image. Note that when multiplier is used, cropping is scaled appropriately\n * @param {Object} [options] Options object\n * @param {String} [options.format=png] The format of the output image. Either \"jpeg\" or \"png\"\n * @param {Number} [options.quality=1] Quality level (0..1). Only used for jpeg.\n * @param {Number} [options.multiplier=1] Multiplier to scale by, to have consistent\n * @param {Number} [options.left] Cropping left offset. Introduced in v1.2.14\n * @param {Number} [options.top] Cropping top offset. Introduced in v1.2.14\n * @param {Number} [options.width] Cropping width. Introduced in v1.2.14\n * @param {Number} [options.height] Cropping height. Introduced in v1.2.14\n * @param {Boolean} [options.enableRetinaScaling] Enable retina scaling for clone image. Introduce in 2.0.0\n * @param {(object: fabric.Object) => boolean} [options.filter] Function to filter objects.\n * @return {String} Returns a data: URL containing a representation of the object in the format specified by options.format\n * @see {@link https://jsfiddle.net/xsjua1rd/ demo}\n * @example <caption>Generate jpeg dataURL with lower quality</caption>\n * var dataURL = canvas.toDataURL({\n * format: 'jpeg',\n * quality: 0.8\n * });\n * @example <caption>Generate cropped png dataURL (clipping of canvas)</caption>\n * var dataURL = canvas.toDataURL({\n * format: 'png',\n * left: 100,\n * top: 100,\n * width: 200,\n * height: 200\n * });\n * @example <caption>Generate double scaled png dataURL</caption>\n * var dataURL = canvas.toDataURL({\n * format: 'png',\n * multiplier: 2\n * });\n * @example <caption>Generate dataURL with objects that overlap a specified object</caption>\n * var myObject;\n * var dataURL = canvas.toDataURL({\n * filter: (object) => object.isContainedWithinObject(myObject) || object.intersectsWithObject(myObject)\n * });\n */\n toDataURL(options = {} as TDataUrlOptions): string {\n const {\n format = 'png',\n quality = 1,\n multiplier = 1,\n enableRetinaScaling = false,\n } = options;\n const finalMultiplier =\n multiplier * (enableRetinaScaling ? this.getRetinaScaling() : 1);\n\n return toDataURL(\n this.toCanvasElement(finalMultiplier, options),\n format,\n quality,\n );\n }\n toBlob(options = {} as TDataUrlOptions): Promise<Blob | null> {\n const {\n format = 'png',\n quality = 1,\n multiplier = 1,\n enableRetinaScaling = false,\n } = options;\n const finalMultiplier =\n multiplier * (enableRetinaScaling ? this.getRetinaScaling() : 1);\n\n return toBlob(\n this.toCanvasElement(finalMultiplier, options),\n format,\n quality,\n );\n }\n\n /**\n * Create a new HTMLCanvas element painted with the current canvas content.\n * No need to resize the actual one or repaint it.\n * Will transfer object ownership to a new canvas, paint it, and set everything back.\n * This is an intermediary step used to get to a dataUrl but also it is useful to\n * create quick image copies of a canvas without passing for the dataUrl string\n * @param {Number} [multiplier] a zoom factor.\n * @param {Object} [options] Cropping informations\n * @param {Number} [options.left] Cropping left offset.\n * @param {Number} [options.top] Cropping top offset.\n * @param {Number} [options.width] Cropping width.\n * @param {Number} [options.height] Cropping height.\n * @param {(object: fabric.Object) => boolean} [options.filter] Function to filter objects.\n */\n toCanvasElement(\n multiplier = 1,\n { width, height, left, top, filter } = {} as TToCanvasElementOptions,\n ): HTMLCanvasElement {\n const scaledWidth = (width || this.width) * multiplier,\n scaledHeight = (height || this.height) * multiplier,\n zoom = this.getZoom(),\n originalWidth = this.width,\n originalHeight = this.height,\n originalSkipControlsDrawing = this.skipControlsDrawing,\n newZoom = zoom * multiplier,\n vp = this.viewportTransform,\n translateX = (vp[4] - (left || 0)) * multiplier,\n translateY = (vp[5] - (top || 0)) * multiplier,\n newVp = [newZoom, 0, 0, newZoom, translateX, translateY] as TMat2D,\n originalRetina = this.enableRetinaScaling,\n canvasEl = createCanvasElementFor({\n width: scaledWidth,\n height: scaledHeight,\n }),\n objectsToRender = filter\n ? this._objects.filter((obj) => filter(obj))\n : this._objects;\n this.enableRetinaScaling = false;\n this.viewportTransform = newVp;\n this.width = scaledWidth;\n this.height = scaledHeight;\n this.skipControlsDrawing = true;\n this.calcViewportBoundaries();\n this.renderCanvas(canvasEl.getContext('2d')!, objectsToRender);\n this.viewportTransform = vp;\n this.width = originalWidth;\n this.height = originalHeight;\n this.calcViewportBoundaries();\n this.enableRetinaScaling = originalRetina;\n this.skipControlsDrawing = originalSkipControlsDrawing;\n return canvasEl;\n }\n\n /**\n * Waits until rendering has settled to destroy the canvas\n * @returns {Promise<boolean>} a promise resolving to `true` once the canvas has been destroyed or to `false` if the canvas has was already destroyed\n * @throws if aborted by a consequent call\n */\n dispose() {\n !this.disposed &&\n this.elements.cleanupDOM({ width: this.width, height: this.height });\n runningAnimations.cancelByCanvas(this);\n this.disposed = true;\n return new Promise<boolean>((resolve, reject) => {\n const task = () => {\n this.destroy();\n resolve(true);\n };\n task.kill = reject;\n if (this.__cleanupTask) {\n this.__cleanupTask.kill('aborted');\n }\n\n if (this.destroyed) {\n resolve(false);\n } else if (this.nextRenderHandle) {\n this.__cleanupTask = task;\n } else {\n task();\n }\n });\n }\n\n /**\n * Clears the canvas element, disposes objects and frees resources.\n *\n * Invoked as part of the **async** operation of {@link dispose}.\n *\n * **CAUTION**:\n *\n * This method is **UNSAFE**.\n * You may encounter a race condition using it if there's a requested render.\n * Call this method only if you are sure rendering has settled.\n * Consider using {@link dispose} as it is **SAFE**\n *\n * @private\n */\n destroy() {\n this.destroyed = true;\n this.cancelRequestedRender();\n this.forEachObject((object) => object.dispose());\n this._objects = [];\n if (this.backgroundImage) {\n this.backgroundImage.dispose();\n }\n this.backgroundImage = undefined;\n if (this.overlayImage) {\n this.overlayImage.dispose();\n }\n this.overlayImage = undefined;\n this.elements.dispose();\n }\n\n /**\n * Returns a string representation of an instance\n * @return {String} string representation of an instance\n */\n toString() {\n return `#<Canvas (${this.complexity()}): { objects: ${\n this._objects.length\n } }>`;\n }\n}\n"],"names":["StaticCanvas","createCollectionMixin","CommonMethods","lowerCanvasEl","_this$elements$lower","elements","lower","el","contextContainer","_this$elements$lower2","ctx","getDefaults","ownDefaults","constructor","options","arguments","length","undefined","Object","assign","set","initElements","_setDimensionsImpl","width","height","skipControlsDrawing","viewportTransform","calcViewportBoundaries","StaticCanvasDOMManager","add","size","renderOnAddRemove","requestRenderAll","insertAt","index","_len","objects","Array","_key","remove","removed","_onObjectAdded","obj","canvas","log","_set","setCoords","fire","target","_onObjectRemoved","_onStackOrderChanged","getRetinaScaling","enableRetinaScaling","getDevicePixelRatio","calcOffset","_offset","getWidth","getHeight","dimensions","cssOnly","backstoreOnly","setDimensions","hasLostContext","setCSSDimensions","getZoom","setViewportTransform","vpt","zoomToPoint","point","value","before","newPoint","transformPoint","invertTransform","after","x","y","setZoom","Point","absolutePan","relativePan","getElement","clearContext","clearRect","getContext","clear","getObjects","backgroundImage","overlayImage","backgroundColor","overlayColor","renderAll","cancelRequestedRender","destroyed","renderCanvas","_objects","renderAndReset","nextRenderHandle","disposed","requestAnimFrame","iVpt","a","b","min","max","vptCoords","tl","tr","bl","br","cancelAnimFrame","drawControls","_ctx","v","path","clipPath","imageSmoothingEnabled","patternQuality","_renderBackground","save","transform","_renderObjects","restore","controlsAboveOverlay","shouldCache","_transformDone","renderCache","forClipping","drawClipPathOnCanvas","_renderOverlay","__cleanupTask","globalCompositeOperation","scale","zoomX","zoomY","drawImage","_cacheCanvas","cacheTranslationX","cacheTranslationY","i","len","render","_renderBackgroundOrOverlay","property","fill","object","needsVpt","isAFiller","isFiller","beginPath","moveTo","lineTo","closePath","fillStyle","toLive","offsetX","offsetY","m","gradientTransform","patternTransform","skipOffscreen","getCenterPoint","centerObjectH","_centerObject","centerObjectV","centerObject","viewportCenterObject","getVpCenter","viewportCenterObjectH","viewportCenterObjectV","center","setXY","CENTER","toDatalessJSON","propertiesToInclude","toDatalessObject","toObject","_toObjectMethod","toJSON","methodName","clipPathData","excludeFromExport","_toObject","version","VERSION","pick","filter","map","instance","__serializeBgOverlay","originalValue","includeDefaultValues","data","bgImage","bgColor","background","overlay","toSVG","reviver","markup","_setSVGPreamble","_setSVGHeader","push","clipPathId","_setSVGBgOverlayColor","_setSVGBgOverlayImage","_setSVGObjects","join","suppressPreamble","encoding","NUM_FRACTION_DIGITS","config","optViewBox","viewBox","svgViewportTransformation","toFixed","createSVGFontFacesMarkup","createSVGRefElementsMarkup","createSVGClipPathMarkup","uid","toClipPathSVG","prop","shouldTransform","isType","additionalTransform","matrixToSVG","fontList","fontPaths","forEach","isCollection","isTextObject","styles","fontFamily","values","styleRow","_ref","fontListMarkup","keys","forEachObject","fabricObject","_setSVGObject","bgOrOverlay","filler","repeat","finalWidth","finalHeight","shouldInvert","isPattern","source","id","loadFromJSON","json","signal","Promise","reject","FabricError","serialized","JSON","parse","all","enlivenObjects","enlivenObjectEnlivables","then","_ref2","enlived","enlivedMap","clone","properties","cloneWithoutData","createCanvasElementFor","toDataURL","format","quality","multiplier","finalMultiplier","toCanvasElement","toBlob","left","top","scaledWidth","scaledHeight","zoom","originalWidth","originalHeight","originalSkipControlsDrawing","newZoom","vp","translateX","translateY","newVp","originalRetina","canvasEl","objectsToRender","dispose","cleanupDOM","runningAnimations","cancelByCanvas","resolve","task","destroy","kill","toString","complexity","_defineProperty","staticCanvasDefaults"],"mappings":";;;;;;;;;;;;;;;;;;;;;AA+CA;AACA;AACA;AACA;;AA2BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMA,YAAY,SAIfC,qBAAqB,CAACC,aAA2B,CAAC,CAE5D;AAIE;;AAIA;;AASA;;AAMA;AACF;AACA;;AAGE;AACF;AACA;;AAKE;AACF;AACA;;AAGE;AACF;AACA;AACA;AACA;EACE,IAAIC,aAAaA,GAAG;AAAA,IAAA,IAAAC,oBAAA;AAClB,IAAA,OAAA,CAAAA,oBAAA,GAAO,IAAI,CAACC,QAAQ,CAACC,KAAK,MAAA,IAAA,IAAAF,oBAAA,KAAA,MAAA,GAAA,MAAA,GAAnBA,oBAAA,CAAqBG,EAAE;AAChC,EAAA;EAEA,IAAIC,gBAAgBA,GAAG;AAAA,IAAA,IAAAC,qBAAA;AACrB,IAAA,OAAA,CAAAA,qBAAA,GAAO,IAAI,CAACJ,QAAQ,CAACC,KAAK,MAAA,IAAA,IAAAG,qBAAA,KAAA,MAAA,GAAA,MAAA,GAAnBA,qBAAA,CAAqBC,GAAG;AACjC,EAAA;;AAEA;AACF;AACA;AACA;AACA;;AAGE;AACF;AACA;AACA;AACA;;AASE;AACF;AACA;AACA;AACA;AACA;AACA;;AAGE;AACF;AACA;AACA;;AAKE;;EAMA,OAAOC,WAAWA,GAAwB;IACxC,OAAOX,YAAY,CAACY,WAAW;AACjC,EAAA;EAEAC,WAAWA,CACTN,EAA+B,EAE/B;AAAA,IAAA,IADAO,OAAsC,GAAAC,SAAA,CAAAC,MAAA,GAAA,CAAA,IAAAD,SAAA,CAAA,CAAA,CAAA,KAAAE,SAAA,GAAAF,SAAA,CAAA,CAAA,CAAA,GAAG,EAAE;AAE3C,IAAA,KAAK,EAAE;AACPG,IAAAA,MAAM,CAACC,MAAM,CACX,IAAI,EACH,IAAI,CAACN,WAAW,CAAyBF,WAAW,EACvD,CAAC;AACD,IAAA,IAAI,CAACS,GAAG,CAACN,OAAO,CAAC;AACjB,IAAA,IAAI,CAACO,YAAY,CAACd,EAAE,CAAC;IACrB,IAAI,CAACe,kBAAkB,CAAC;AACtBC,MAAAA,KAAK,EAAE,IAAI,CAACA,KAAK,IAAI,IAAI,CAAClB,QAAQ,CAACC,KAAK,CAACC,EAAE,CAACgB,KAAK,IAAI,CAAC;AACtDC,MAAAA,MAAM,EAAE,IAAI,CAACA,MAAM,IAAI,IAAI,CAACnB,QAAQ,CAACC,KAAK,CAACC,EAAE,CAACiB,MAAM,IAAI;AAC1D,KAAC,CAAC;IACF,IAAI,CAACC,mBAAmB,GAAG,KAAK;IAChC,IAAI,CAACC,iBAAiB,GAAG,CAAC,GAAG,IAAI,CAACA,iBAAiB,CAAC;IACpD,IAAI,CAACC,sBAAsB,EAAE;AAC/B,EAAA;EAEUN,YAAYA,CAACd,EAA+B,EAAE;AACtD,IAAA,IAAI,CAACF,QAAQ,GAAG,IAAIuB,sBAAsB,CAACrB,EAAE,CAAC;AAChD,EAAA;AAEAsB,EAAAA,GAAGA,GAA6B;IAC9B,MAAMC,IAAI,GAAG,KAAK,CAACD,GAAG,CAAC,GAAAd,SAAU,CAAC;AAClCA,IAAAA,SAAA,CAAQC,MAAM,GAAG,CAAC,IAAI,IAAI,CAACe,iBAAiB,IAAI,IAAI,CAACC,gBAAgB,EAAE;AACvE,IAAA,OAAOF,IAAI;AACb,EAAA;EAEAG,QAAQA,CAACC,KAAa,EAA8B;IAAA,KAAA,IAAAC,IAAA,GAAApB,SAAA,CAAAC,MAAA,EAAzBoB,OAAO,OAAAC,KAAA,CAAAF,IAAA,GAAA,CAAA,GAAAA,IAAA,WAAAG,IAAA,GAAA,CAAA,EAAAA,IAAA,GAAAH,IAAA,EAAAG,IAAA,EAAA,EAAA;AAAPF,MAAAA,OAAO,CAAAE,IAAA,GAAA,CAAA,CAAA,GAAAvB,SAAA,CAAAuB,IAAA,CAAA;AAAA,IAAA;IAChC,MAAMR,IAAI,GAAG,KAAK,CAACG,QAAQ,CAACC,KAAK,EAAE,GAAGE,OAAO,CAAC;AAC9CA,IAAAA,OAAO,CAACpB,MAAM,GAAG,CAAC,IAAI,IAAI,CAACe,iBAAiB,IAAI,IAAI,CAACC,gBAAgB,EAAE;AACvE,IAAA,OAAOF,IAAI;AACb,EAAA;AAEAS,EAAAA,MAAMA,GAA6B;IACjC,MAAMC,OAAO,GAAG,KAAK,CAACD,MAAM,CAAC,GAAAxB,SAAU,CAAC;AACxCyB,IAAAA,OAAO,CAACxB,MAAM,GAAG,CAAC,IAAI,IAAI,CAACe,iBAAiB,IAAI,IAAI,CAACC,gBAAgB,EAAE;AACvE,IAAA,OAAOQ,OAAO;AAChB,EAAA;EAEAC,cAAcA,CAACC,GAAiB,EAAE;IAChC,IAAIA,GAAG,CAACC,MAAM,IAAKD,GAAG,CAACC,MAAM,KAAsB,IAAI,EAAE;AACvDC,MAAAA,GAAG,CACD,MAAM,EACN,yEAAyE,GACvE,8FACJ,CAAC;AACDF,MAAAA,GAAG,CAACC,MAAM,CAACJ,MAAM,CAACG,GAAG,CAAC;AACxB,IAAA;AACAA,IAAAA,GAAG,CAACG,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC;IACxBH,GAAG,CAACI,SAAS,EAAE;AACf,IAAA,IAAI,CAACC,IAAI,CAAC,cAAc,EAAE;AAAEC,MAAAA,MAAM,EAAEN;AAAI,KAAC,CAAC;AAC1CA,IAAAA,GAAG,CAACK,IAAI,CAAC,OAAO,EAAE;AAAEC,MAAAA,MAAM,EAAE;AAAK,KAAC,CAAC;AACrC,EAAA;EAEAC,gBAAgBA,CAACP,GAAiB,EAAE;AAClCA,IAAAA,GAAG,CAACG,IAAI,CAAC,QAAQ,EAAE5B,SAAS,CAAC;AAC7B,IAAA,IAAI,CAAC8B,IAAI,CAAC,gBAAgB,EAAE;AAAEC,MAAAA,MAAM,EAAEN;AAAI,KAAC,CAAC;AAC5CA,IAAAA,GAAG,CAACK,IAAI,CAAC,SAAS,EAAE;AAAEC,MAAAA,MAAM,EAAE;AAAK,KAAC,CAAC;AACvC,EAAA;AAEAE,EAAAA,oBAAoBA,GAAG;AACrB,IAAA,IAAI,CAACnB,iBAAiB,IAAI,IAAI,CAACC,gBAAgB,EAAE;AACnD,EAAA;;AAEA;AACF;AACA;AACA;AACA;AACEmB,EAAAA,gBAAgBA,GAAG;IACjB,OAAO,IAAI,CAACC,mBAAmB,GAAGC,mBAAmB,EAAE,GAAG,CAAC;AAC7D,EAAA;;AAEA;AACF;AACA;AACA;AACEC,EAAAA,UAAUA,GAAG;IACX,OAAQ,IAAI,CAACC,OAAO,GAAG,IAAI,CAAClD,QAAQ,CAACiD,UAAU,EAAE;AACnD,EAAA;;AAEA;AACF;AACA;AACA;AACEE,EAAAA,QAAQA,GAAW;IACjB,OAAO,IAAI,CAACjC,KAAK;AACnB,EAAA;;AAEA;AACF;AACA;AACA;AACEkC,EAAAA,SAASA,GAAW;IAClB,OAAO,IAAI,CAACjC,MAAM;AACpB,EAAA;;AAEA;AACF;AACA;AACA;EACYF,kBAAkBA,CAC1BoC,UAA0C,EAE1C;IAAA,IADA;AAAEC,MAAAA,OAAO,GAAG,KAAK;AAAEC,MAAAA,aAAa,GAAG;AAA0B,KAAC,GAAA7C,SAAA,CAAAC,MAAA,GAAA,CAAA,IAAAD,SAAA,CAAA,CAAA,CAAA,KAAAE,SAAA,GAAAF,SAAA,CAAA,CAAA,CAAA,GAAG,EAAE;IAEnE,IAAI,CAAC4C,OAAO,EAAE;AACZ,MAAA,MAAM7B,IAAI,GAAG;QACXP,KAAK,EAAE,IAAI,CAACA,KAAK;QACjBC,MAAM,EAAE,IAAI,CAACA,MAAM;QACnB,GAAIkC;OACL;AACD,MAAA,IAAI,CAACrD,QAAQ,CAACwD,aAAa,CAAC/B,IAAI,EAAE,IAAI,CAACqB,gBAAgB,EAAE,CAAC;MAC1D,IAAI,CAACW,cAAc,GAAG,IAAI;AAC1B,MAAA,IAAI,CAACvC,KAAK,GAAGO,IAAI,CAACP,KAAK;AACvB,MAAA,IAAI,CAACC,MAAM,GAAGM,IAAI,CAACN,MAAM;AAC3B,IAAA;IACA,IAAI,CAACoC,aAAa,EAAE;AAClB,MAAA,IAAI,CAACvD,QAAQ,CAAC0D,gBAAgB,CAACL,UAAU,CAAC;AAC5C,IAAA;IAEA,IAAI,CAACJ,UAAU,EAAE;AACnB,EAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAUEO,EAAAA,aAAaA,CACXH,UAA0C,EAC1C5C,OAA4B,EAC5B;AACA,IAAA,IAAI,CAACQ,kBAAkB,CAACoC,UAAU,EAAE5C,OAAO,CAAC;AAC5C,IAAA,IAAI,CAACA,OAAO,IAAI,CAACA,OAAO,CAAC6C,OAAO,EAAE;MAChC,IAAI,CAAC3B,gBAAgB,EAAE;AACzB,IAAA;AACF,EAAA;;AAEA;AACF;AACA;AACA;AACEgC,EAAAA,OAAOA,GAAG;AACR,IAAA,OAAO,IAAI,CAACtC,iBAAiB,CAAC,CAAC,CAAC;AAClC,EAAA;;AAEA;AACF;AACA;AACA;EACEuC,oBAAoBA,CAACC,GAAW,EAAE;IAChC,IAAI,CAACxC,iBAAiB,GAAGwC,GAAG;IAC5B,IAAI,CAACvC,sBAAsB,EAAE;AAC7B,IAAA,IAAI,CAACI,iBAAiB,IAAI,IAAI,CAACC,gBAAgB,EAAE;AACnD,EAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACEmC,EAAAA,WAAWA,CAACC,KAAY,EAAEC,KAAa,EAAE;AACvC;IACA,MAAMC,MAAM,GAAGF,KAAK;AAClBF,MAAAA,GAAW,GAAG,CAAC,GAAG,IAAI,CAACxC,iBAAiB,CAAC;IAC3C,MAAM6C,QAAQ,GAAGC,cAAc,CAACJ,KAAK,EAAEK,eAAe,CAACP,GAAG,CAAC,CAAC;AAC5DA,IAAAA,GAAG,CAAC,CAAC,CAAC,GAAGG,KAAK;AACdH,IAAAA,GAAG,CAAC,CAAC,CAAC,GAAGG,KAAK;AACd,IAAA,MAAMK,KAAK,GAAGF,cAAc,CAACD,QAAQ,EAAEL,GAAG,CAAC;IAC3CA,GAAG,CAAC,CAAC,CAAC,IAAII,MAAM,CAACK,CAAC,GAAGD,KAAK,CAACC,CAAC;IAC5BT,GAAG,CAAC,CAAC,CAAC,IAAII,MAAM,CAACM,CAAC,GAAGF,KAAK,CAACE,CAAC;AAC5B,IAAA,IAAI,CAACX,oBAAoB,CAACC,GAAG,CAAC;AAChC,EAAA;;AAEA;AACF;AACA;AACA;EACEW,OAAOA,CAACR,KAAa,EAAE;AACrB,IAAA,IAAI,CAACF,WAAW,CAAC,IAAIW,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAET,KAAK,CAAC;AAC1C,EAAA;;AAEA;AACF;AACA;AACA;EACEU,WAAWA,CAACX,KAAY,EAAE;AACxB,IAAA,MAAMF,GAAW,GAAG,CAAC,GAAG,IAAI,CAACxC,iBAAiB,CAAC;AAC/CwC,IAAAA,GAAG,CAAC,CAAC,CAAC,GAAG,CAACE,KAAK,CAACO,CAAC;AACjBT,IAAAA,GAAG,CAAC,CAAC,CAAC,GAAG,CAACE,KAAK,CAACQ,CAAC;AACjB,IAAA,OAAO,IAAI,CAACX,oBAAoB,CAACC,GAAG,CAAC;AACvC,EAAA;;AAEA;AACF;AACA;AACA;EACEc,WAAWA,CAACZ,KAAY,EAAE;AACxB,IAAA,OAAO,IAAI,CAACW,WAAW,CACrB,IAAID,KAAK,CACP,CAACV,KAAK,CAACO,CAAC,GAAG,IAAI,CAACjD,iBAAiB,CAAC,CAAC,CAAC,EACpC,CAAC0C,KAAK,CAACQ,CAAC,GAAG,IAAI,CAAClD,iBAAiB,CAAC,CAAC,CACrC,CACF,CAAC;AACH,EAAA;;AAEA;AACF;AACA;AACA;AACEuD,EAAAA,UAAUA,GAAsB;AAC9B,IAAA,OAAO,IAAI,CAAC5E,QAAQ,CAACC,KAAK,CAACC,EAAE;AAC/B,EAAA;;AAEA;AACF;AACA;AACA;EACE2E,YAAYA,CAACxE,GAA6B,EAAE;AAC1CA,IAAAA,GAAG,CAACyE,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC5D,KAAK,EAAE,IAAI,CAACC,MAAM,CAAC;AAC9C,EAAA;;AAEA;AACF;AACA;AACA;AACE4D,EAAAA,UAAUA,GAA6B;AACrC,IAAA,OAAO,IAAI,CAAC/E,QAAQ,CAACC,KAAK,CAACI,GAAG;AAChC,EAAA;;AAEA;AACF;AACA;AACE2E,EAAAA,KAAKA,GAAG;IACN,IAAI,CAAC9C,MAAM,CAAC,GAAG,IAAI,CAAC+C,UAAU,EAAE,CAAC;IACjC,IAAI,CAACC,eAAe,GAAGtE,SAAS;IAChC,IAAI,CAACuE,YAAY,GAAGvE,SAAS;IAC7B,IAAI,CAACwE,eAAe,GAAG,EAAE;IACzB,IAAI,CAACC,YAAY,GAAG,EAAE;IACtB,IAAI,CAACR,YAAY,CAAC,IAAI,CAACE,UAAU,EAAE,CAAC;AACpC,IAAA,IAAI,CAACrC,IAAI,CAAC,gBAAgB,CAAC;AAC3B,IAAA,IAAI,CAAChB,iBAAiB,IAAI,IAAI,CAACC,gBAAgB,EAAE;AACnD,EAAA;;AAEA;AACF;AACA;AACE2D,EAAAA,SAASA,GAAG;IACV,IAAI,CAACC,qBAAqB,EAAE;IAC5B,IAAI,IAAI,CAACC,SAAS,EAAE;AAClB,MAAA;AACF,IAAA;AACA,IAAA,IAAI,CAACC,YAAY,CAAC,IAAI,CAACV,UAAU,EAAE,EAAE,IAAI,CAACW,QAAQ,CAAC;AACrD,EAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACEC,EAAAA,cAAcA,GAAG;IACf,IAAI,CAACC,gBAAgB,GAAG,CAAC;IACzB,IAAI,CAACN,SAAS,EAAE;AAClB,EAAA;;AAEA;AACF;AACA;AACA;AACA;AACE3D,EAAAA,gBAAgBA,GAAG;AACjB,IAAA,IAAI,CAAC,IAAI,CAACiE,gBAAgB,IAAI,CAAC,IAAI,CAACC,QAAQ,IAAI,CAAC,IAAI,CAACL,SAAS,EAAE;MAC/D,IAAI,CAACI,gBAAgB,GAAGE,gBAAgB,CAAC,MAAM,IAAI,CAACH,cAAc,EAAE,CAAC;AACvE,IAAA;AACF,EAAA;;AAEA;AACF;AACA;AACA;AACErE,EAAAA,sBAAsBA,GAAiB;AACrC,IAAA,MAAMJ,KAAK,GAAG,IAAI,CAACA,KAAK;MACtBC,MAAM,GAAG,IAAI,CAACA,MAAM;AACpB4E,MAAAA,IAAI,GAAG3B,eAAe,CAAC,IAAI,CAAC/C,iBAAiB,CAAC;MAC9C2E,CAAC,GAAG7B,cAAc,CAAC;AAAEG,QAAAA,CAAC,EAAE,CAAC;AAAEC,QAAAA,CAAC,EAAE;OAAG,EAAEwB,IAAI,CAAC;MACxCE,CAAC,GAAG9B,cAAc,CAAC;AAAEG,QAAAA,CAAC,EAAEpD,KAAK;AAAEqD,QAAAA,CAAC,EAAEpD;OAAQ,EAAE4E,IAAI,CAAC;AACjD;AACA;AACAG,MAAAA,GAAG,GAAGF,CAAC,CAACE,GAAG,CAACD,CAAC,CAAC;AACdE,MAAAA,GAAG,GAAGH,CAAC,CAACG,GAAG,CAACF,CAAC,CAAC;IAChB,OAAQ,IAAI,CAACG,SAAS,GAAG;AACvBC,MAAAA,EAAE,EAAEH,GAAG;MACPI,EAAE,EAAE,IAAI7B,KAAK,CAAC0B,GAAG,CAAC7B,CAAC,EAAE4B,GAAG,CAAC3B,CAAC,CAAC;MAC3BgC,EAAE,EAAE,IAAI9B,KAAK,CAACyB,GAAG,CAAC5B,CAAC,EAAE6B,GAAG,CAAC5B,CAAC,CAAC;AAC3BiC,MAAAA,EAAE,EAAEL;KACL;AACH,EAAA;AAEAZ,EAAAA,qBAAqBA,GAAG;IACtB,IAAI,IAAI,CAACK,gBAAgB,EAAE;AACzBa,MAAAA,eAAe,CAAC,IAAI,CAACb,gBAAgB,CAAC;MACtC,IAAI,CAACA,gBAAgB,GAAG,CAAC;AAC3B,IAAA;AACF,EAAA;EAEAc,YAAYA,CAACC,IAA8B,EAAE;AAC3C;AAAA,EAAA;;AAGF;AACF;AACA;AACA;AACA;AACElB,EAAAA,YAAYA,CAACpF,GAA6B,EAAE0B,OAAuB,EAAE;IACnE,IAAI,IAAI,CAACyD,SAAS,EAAE;AAClB,MAAA;AACF,IAAA;AAEA,IAAA,MAAMoB,CAAC,GAAG,IAAI,CAACvF,iBAAiB;MAC9BwF,IAAI,GAAG,IAAI,CAACC,QAAQ;IACtB,IAAI,CAACxF,sBAAsB,EAAE;AAC7B,IAAA,IAAI,CAACuD,YAAY,CAACxE,GAAG,CAAC;AACtBA,IAAAA,GAAG,CAAC0G,qBAAqB,GAAG,IAAI,CAACA,qBAAqB;AACtD;AACA1G,IAAAA,GAAG,CAAC2G,cAAc,GAAG,IAAI,CAACA,cAAc;AACxC,IAAA,IAAI,CAACtE,IAAI,CAAC,eAAe,EAAE;AAAErC,MAAAA;AAAI,KAAC,CAAC;AACnC,IAAA,IAAI,CAAC4G,iBAAiB,CAAC5G,GAAG,CAAC;IAE3BA,GAAG,CAAC6G,IAAI,EAAE;AACV;AACA7G,IAAAA,GAAG,CAAC8G,SAAS,CAACP,CAAC,CAAC,CAAC,CAAC,EAAEA,CAAC,CAAC,CAAC,CAAC,EAAEA,CAAC,CAAC,CAAC,CAAC,EAAEA,CAAC,CAAC,CAAC,CAAC,EAAEA,CAAC,CAAC,CAAC,CAAC,EAAEA,CAAC,CAAC,CAAC,CAAC,CAAC;AACjD,IAAA,IAAI,CAACQ,cAAc,CAAC/G,GAAG,EAAE0B,OAAO,CAAC;IACjC1B,GAAG,CAACgH,OAAO,EAAE;IACb,IAAI,CAAC,IAAI,CAACC,oBAAoB,IAAI,CAAC,IAAI,CAAClG,mBAAmB,EAAE;AAC3D,MAAA,IAAI,CAACsF,YAAY,CAACrG,GAAG,CAAC;AACxB,IAAA;AACA,IAAA,IAAIwG,IAAI,EAAE;AACRA,MAAAA,IAAI,CAACrE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC;AACzB;AACA;MACAqE,IAAI,CAACU,WAAW,EAAE;MAClBV,IAAI,CAACW,cAAc,GAAG,IAAI;MACzBX,IAAI,CAAyBY,WAAW,CAAC;AAAEC,QAAAA,WAAW,EAAE;AAAK,OAAC,CAAC;AAChE,MAAA,IAAI,CAACC,oBAAoB,CAACtH,GAAG,EAAEwG,IAA2B,CAAC;AAC7D,IAAA;AACA,IAAA,IAAI,CAACe,cAAc,CAACvH,GAAG,CAAC;IACxB,IAAI,IAAI,CAACiH,oBAAoB,IAAI,CAAC,IAAI,CAAClG,mBAAmB,EAAE;AAC1D,MAAA,IAAI,CAACsF,YAAY,CAACrG,GAAG,CAAC;AACxB,IAAA;AACA,IAAA,IAAI,CAACqC,IAAI,CAAC,cAAc,EAAE;AAAErC,MAAAA;AAAI,KAAC,CAAC;IAElC,IAAI,IAAI,CAACwH,aAAa,EAAE;MACtB,IAAI,CAACA,aAAa,EAAE;MACpB,IAAI,CAACA,aAAa,GAAGjH,SAAS;AAChC,IAAA;AACF,EAAA;;AAEA;AACF;AACA;AACA;AACE+G,EAAAA,oBAAoBA,CAClBtH,GAA6B,EAC7ByG,QAA6B,EAC7B;AACA,IAAA,MAAMF,CAAC,GAAG,IAAI,CAACvF,iBAAiB;IAChChB,GAAG,CAAC6G,IAAI,EAAE;AACV7G,IAAAA,GAAG,CAAC8G,SAAS,CAAC,GAAGP,CAAC,CAAC;AACnB;AACA;IACAvG,GAAG,CAACyH,wBAAwB,GAAG,gBAAgB;AAC/ChB,IAAAA,QAAQ,CAACK,SAAS,CAAC9G,GAAG,CAAC;AACvBA,IAAAA,GAAG,CAAC0H,KAAK,CAAC,CAAC,GAAGjB,QAAQ,CAACkB,KAAK,EAAE,CAAC,GAAGlB,QAAQ,CAACmB,KAAK,CAAC;AACjD5H,IAAAA,GAAG,CAAC6H,SAAS,CACXpB,QAAQ,CAACqB,YAAY,EACrB,CAACrB,QAAQ,CAACsB,iBAAiB,EAC3B,CAACtB,QAAQ,CAACuB,iBACZ,CAAC;IACDhI,GAAG,CAACgH,OAAO,EAAE;AACf,EAAA;;AAEA;AACF;AACA;AACA;AACA;AACED,EAAAA,cAAcA,CAAC/G,GAA6B,EAAE0B,OAAuB,EAAE;AACrE,IAAA,KAAK,IAAIuG,CAAC,GAAG,CAAC,EAAEC,GAAG,GAAGxG,OAAO,CAACpB,MAAM,EAAE2H,CAAC,GAAGC,GAAG,EAAE,EAAED,CAAC,EAAE;AAClDvG,MAAAA,OAAO,CAACuG,CAAC,CAAC,IAAIvG,OAAO,CAACuG,CAAC,CAAC,CAACE,MAAM,CAACnI,GAAG,CAAC;AACtC,IAAA;AACF,EAAA;;AAEA;AACF;AACA;AACA;AACA;AACEoI,EAAAA,0BAA0BA,CACxBpI,GAA6B,EAC7BqI,QAAkC,EAClC;AACA,IAAA,MAAMC,IAAI,GAAG,IAAI,CAAC,CAAA,EAAGD,QAAQ,OAAO,CAAC;AACnCE,MAAAA,MAAM,GAAG,IAAI,CAAC,CAAA,EAAGF,QAAQ,OAAO,CAAC;MACjC9B,CAAC,GAAG,IAAI,CAACvF,iBAAiB;AAC1BwH,MAAAA,QAAQ,GAAG,IAAI,CAAC,CAAA,EAAGH,QAAQ,KAAK,CAAC;AACnC,IAAA,IAAI,CAACC,IAAI,IAAI,CAACC,MAAM,EAAE;AACpB,MAAA;AACF,IAAA;AACA,IAAA,MAAME,SAAS,GAAGC,QAAQ,CAACJ,IAAI,CAAC;AAChC,IAAA,IAAIA,IAAI,EAAE;MACRtI,GAAG,CAAC6G,IAAI,EAAE;MACV7G,GAAG,CAAC2I,SAAS,EAAE;AACf3I,MAAAA,GAAG,CAAC4I,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;MAChB5I,GAAG,CAAC6I,MAAM,CAAC,IAAI,CAAChI,KAAK,EAAE,CAAC,CAAC;MACzBb,GAAG,CAAC6I,MAAM,CAAC,IAAI,CAAChI,KAAK,EAAE,IAAI,CAACC,MAAM,CAAC;MACnCd,GAAG,CAAC6I,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC/H,MAAM,CAAC;MAC1Bd,GAAG,CAAC8I,SAAS,EAAE;AACf9I,MAAAA,GAAG,CAAC+I,SAAS,GAAGN,SAAS,GAAGH,IAAI,CAACU,MAAM,CAAChJ,GAAG,YAAY,GAAIsI,IAAI;AAC/D,MAAA,IAAIE,QAAQ,EAAE;AACZxI,QAAAA,GAAG,CAAC8G,SAAS,CAAC,GAAGP,CAAC,CAAC;AACrB,MAAA;AACA,MAAA,IAAIkC,SAAS,EAAE;QACbzI,GAAG,CAAC8G,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAEwB,IAAI,CAACW,OAAO,IAAI,CAAC,EAAEX,IAAI,CAACY,OAAO,IAAI,CAAC,CAAC;QAC/D,MAAMC,CAAC,GAAKb,IAAI,CAAwBc,iBAAiB,IACtDd,IAAI,CAAae,gBAA2B;AAC/CF,QAAAA,CAAC,IAAInJ,GAAG,CAAC8G,SAAS,CAAC,GAAGqC,CAAC,CAAC;AAC1B,MAAA;MACAnJ,GAAG,CAACsI,IAAI,EAAE;MACVtI,GAAG,CAACgH,OAAO,EAAE;AACf,IAAA;AACA,IAAA,IAAIuB,MAAM,EAAE;MACVvI,GAAG,CAAC6G,IAAI,EAAE;MACV,MAAM;AAAEyC,QAAAA;AAAc,OAAC,GAAG,IAAI;AAC9B;AACA;MACA,IAAI,CAACA,aAAa,GAAGd,QAAQ;AAC7B,MAAA,IAAIA,QAAQ,EAAE;AACZxI,QAAAA,GAAG,CAAC8G,SAAS,CAAC,GAAGP,CAAC,CAAC;AACrB,MAAA;AACAgC,MAAAA,MAAM,CAACJ,MAAM,CAACnI,GAAG,CAAC;MAClB,IAAI,CAACsJ,aAAa,GAAGA,aAAa;MAClCtJ,GAAG,CAACgH,OAAO,EAAE;AACf,IAAA;AACF,EAAA;;AAEA;AACF;AACA;AACA;EACEJ,iBAAiBA,CAAC5G,GAA6B,EAAE;AAC/C,IAAA,IAAI,CAACoI,0BAA0B,CAACpI,GAAG,EAAE,YAAY,CAAC;AACpD,EAAA;;AAEA;AACF;AACA;AACA;EACEuH,cAAcA,CAACvH,GAA6B,EAAE;AAC5C,IAAA,IAAI,CAACoI,0BAA0B,CAACpI,GAAG,EAAE,SAAS,CAAC;AACjD,EAAA;;AAEA;AACF;AACA;AACA;AACEuJ,EAAAA,cAAcA,GAAG;AACf,IAAA,OAAO,IAAInF,KAAK,CAAC,IAAI,CAACvD,KAAK,GAAG,CAAC,EAAE,IAAI,CAACC,MAAM,GAAG,CAAC,CAAC;AACnD,EAAA;;AAEA;AACF;AACA;EACE0I,aAAaA,CAACjB,MAAoB,EAAE;IAClC,OAAO,IAAI,CAACkB,aAAa,CACvBlB,MAAM,EACN,IAAInE,KAAK,CAAC,IAAI,CAACmF,cAAc,EAAE,CAACtF,CAAC,EAAEsE,MAAM,CAACgB,cAAc,EAAE,CAACrF,CAAC,CAC9D,CAAC;AACH,EAAA;;AAEA;AACF;AACA;AACA;EACEwF,aAAaA,CAACnB,MAAoB,EAAE;IAClC,OAAO,IAAI,CAACkB,aAAa,CACvBlB,MAAM,EACN,IAAInE,KAAK,CAACmE,MAAM,CAACgB,cAAc,EAAE,CAACtF,CAAC,EAAE,IAAI,CAACsF,cAAc,EAAE,CAACrF,CAAC,CAC9D,CAAC;AACH,EAAA;;AAEA;AACF;AACA;AACA;EACEyF,YAAYA,CAACpB,MAAoB,EAAE;IACjC,OAAO,IAAI,CAACkB,aAAa,CAAClB,MAAM,EAAE,IAAI,CAACgB,cAAc,EAAE,CAAC;AAC1D,EAAA;;AAEA;AACF;AACA;AACA;EACEK,oBAAoBA,CAACrB,MAAoB,EAAE;IACzC,OAAO,IAAI,CAACkB,aAAa,CAAClB,MAAM,EAAE,IAAI,CAACsB,WAAW,EAAE,CAAC;AACvD,EAAA;;AAEA;AACF;AACA;AACA;EACEC,qBAAqBA,CAACvB,MAAoB,EAAE;IAC1C,OAAO,IAAI,CAACkB,aAAa,CACvBlB,MAAM,EACN,IAAInE,KAAK,CAAC,IAAI,CAACyF,WAAW,EAAE,CAAC5F,CAAC,EAAEsE,MAAM,CAACgB,cAAc,EAAE,CAACrF,CAAC,CAC3D,CAAC;AACH,EAAA;;AAEA;AACF;AACA;AACA;EACE6F,qBAAqBA,CAACxB,MAAoB,EAAE;IAC1C,OAAO,IAAI,CAACkB,aAAa,CACvBlB,MAAM,EACN,IAAInE,KAAK,CAACmE,MAAM,CAACgB,cAAc,EAAE,CAACtF,CAAC,EAAE,IAAI,CAAC4F,WAAW,EAAE,CAAC3F,CAAC,CAC3D,CAAC;AACH,EAAA;;AAEA;AACF;AACA;AACA;AACE2F,EAAAA,WAAWA,GAAU;AACnB,IAAA,OAAO/F,cAAc,CACnB,IAAI,CAACyF,cAAc,EAAE,EACrBxF,eAAe,CAAC,IAAI,CAAC/C,iBAAiB,CACxC,CAAC;AACH,EAAA;;AAEA;AACF;AACA;AACA;AACA;AACEyI,EAAAA,aAAaA,CAAClB,MAAoB,EAAEyB,MAAa,EAAE;IACjDzB,MAAM,CAAC0B,KAAK,CAACD,MAAM,EAAEE,MAAM,EAAEA,MAAM,CAAC;IACpC3B,MAAM,CAACnG,SAAS,EAAE;AAClB,IAAA,IAAI,CAACf,iBAAiB,IAAI,IAAI,CAACC,gBAAgB,EAAE;AACnD,EAAA;;AAEA;AACF;AACA;AACA;AACA;EACE6I,cAAcA,CAACC,mBAA8B,EAAE;AAC7C,IAAA,OAAO,IAAI,CAACC,gBAAgB,CAACD,mBAAmB,CAAC;AACnD,EAAA;;AAEA;AACF;AACA;AACA;AACA;EACEE,QAAQA,CAACF,mBAA8B,EAAE;AACvC,IAAA,OAAO,IAAI,CAACG,eAAe,CAAC,UAAU,EAAEH,mBAAmB,CAAC;AAC9D,EAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACEI,EAAAA,MAAMA,GAAG;AACP,IAAA,OAAO,IAAI,CAACF,QAAQ,EAAE;AACxB,EAAA;;AAEA;AACF;AACA;AACA;AACA;EACED,gBAAgBA,CAACD,mBAA8B,EAAE;AAC/C,IAAA,OAAO,IAAI,CAACG,eAAe,CAAC,kBAAkB,EAAEH,mBAAmB,CAAC;AACtE,EAAA;;AAEA;AACF;AACA;AACEG,EAAAA,eAAeA,CACbE,UAAgC,EAChCL,mBAA8B,EAC9B;AACA,IAAA,MAAM3D,QAAQ,GAAG,IAAI,CAACA,QAAQ;IAC9B,MAAMiE,YAAY,GAChBjE,QAAQ,IAAI,CAACA,QAAQ,CAACkE,iBAAiB,GACnC,IAAI,CAACC,SAAS,CAACnE,QAAQ,EAAEgE,UAAU,EAAEL,mBAAmB,CAAC,GACzD,IAAI;IACV,OAAO;AACLS,MAAAA,OAAO,EAAEC,OAAO;AAChB,MAAA,GAAGC,IAAI,CAAC,IAAI,EAAEX,mBAAqC,CAAC;AACpD1I,MAAAA,OAAO,EAAE,IAAI,CAAC2D,QAAQ,CACnB2F,MAAM,CAAEzC,MAAM,IAAK,CAACA,MAAM,CAACoC,iBAAiB,CAAC,CAC7CM,GAAG,CAAEC,QAAQ,IACZ,IAAI,CAACN,SAAS,CAACM,QAAQ,EAAET,UAAU,EAAEL,mBAAmB,CAC1D,CAAC;AACH,MAAA,GAAG,IAAI,CAACe,oBAAoB,CAACV,UAAU,EAAEL,mBAAmB,CAAC;AAC7D,MAAA,IAAIM,YAAY,GAAG;AAAEjE,QAAAA,QAAQ,EAAEiE;AAAa,OAAC,GAAG,IAAI;KACrD;AACH,EAAA;;AAEA;AACF;AACA;AACYE,EAAAA,SAASA,CACjBM,QAAsB,EACtBT,UAAgC,EAChCL,mBAA8B,EAC9B;AACA,IAAA,IAAIgB,aAAa;AAEjB,IAAA,IAAI,CAAC,IAAI,CAACC,oBAAoB,EAAE;MAC9BD,aAAa,GAAGF,QAAQ,CAACG,oBAAoB;MAC7CH,QAAQ,CAACG,oBAAoB,GAAG,KAAK;AACvC,IAAA;IAEA,MAAM9C,MAAM,GAAG2C,QAAQ,CAACT,UAAU,CAAC,CAACL,mBAAmB,CAAC;AACxD,IAAA,IAAI,CAAC,IAAI,CAACiB,oBAAoB,EAAE;AAC9BH,MAAAA,QAAQ,CAACG,oBAAoB,GAAG,CAAC,CAACD,aAAa;AACjD,IAAA;AACA,IAAA,OAAO7C,MAAM;AACf,EAAA;;AAEA;AACF;AACA;AACE4C,EAAAA,oBAAoBA,CAClBV,UAAgC,EAChCL,mBAA8B,EAC9B;IACA,MAAMkB,IAAS,GAAG,EAAE;MAClBC,OAAO,GAAG,IAAI,CAAC1G,eAAe;MAC9BC,YAAY,GAAG,IAAI,CAACA,YAAY;MAChC0G,OAAO,GAAG,IAAI,CAACzG,eAAe;MAC9BC,YAAY,GAAG,IAAI,CAACA,YAAY;AAElC,IAAA,IAAI0D,QAAQ,CAAC8C,OAAO,CAAC,EAAE;AACrB,MAAA,IAAI,CAACA,OAAO,CAACb,iBAAiB,EAAE;QAC9BW,IAAI,CAACG,UAAU,GAAGD,OAAO,CAAClB,QAAQ,CAACF,mBAAmB,CAAC;AACzD,MAAA;IACF,CAAC,MAAM,IAAIoB,OAAO,EAAE;MAClBF,IAAI,CAACG,UAAU,GAAGD,OAAO;AAC3B,IAAA;AAEA,IAAA,IAAI9C,QAAQ,CAAC1D,YAAY,CAAC,EAAE;AAC1B,MAAA,IAAI,CAACA,YAAY,CAAC2F,iBAAiB,EAAE;QACnCW,IAAI,CAACI,OAAO,GAAG1G,YAAY,CAACsF,QAAQ,CAACF,mBAAmB,CAAC;AAC3D,MAAA;IACF,CAAC,MAAM,IAAIpF,YAAY,EAAE;MACvBsG,IAAI,CAACI,OAAO,GAAG1G,YAAY;AAC7B,IAAA;AAEA,IAAA,IAAIuG,OAAO,IAAI,CAACA,OAAO,CAACZ,iBAAiB,EAAE;AACzCW,MAAAA,IAAI,CAACzG,eAAe,GAAG,IAAI,CAAC+F,SAAS,CACnCW,OAAO,EACPd,UAAU,EACVL,mBACF,CAAC;AACH,IAAA;AACA,IAAA,IAAItF,YAAY,IAAI,CAACA,YAAY,CAAC6F,iBAAiB,EAAE;AACnDW,MAAAA,IAAI,CAACxG,YAAY,GAAG,IAAI,CAAC8F,SAAS,CAChC9F,YAAY,EACZ2F,UAAU,EACVL,mBACF,CAAC;AACH,IAAA;AAEA,IAAA,OAAOkB,IAAI;AACb,EAAA;;AAEA;;AAIA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACEK,EAAAA,KAAKA,GAAyD;AAAA,IAAA,IAAxDvL,OAA0B,GAAAC,SAAA,CAAAC,MAAA,GAAA,CAAA,IAAAD,SAAA,CAAA,CAAA,CAAA,KAAAE,SAAA,GAAAF,SAAA,CAAA,CAAA,CAAA,GAAG,EAAE;IAAA,IAAEuL,OAAqB,GAAAvL,SAAA,CAAAC,MAAA,GAAA,CAAA,GAAAD,SAAA,MAAAE,SAAA;IAC1DH,OAAO,CAACwL,OAAO,GAAGA,OAAO;IACzB,MAAMC,MAAgB,GAAG,EAAE;AAE3B,IAAA,IAAI,CAACC,eAAe,CAACD,MAAM,EAAEzL,OAAO,CAAC;AACrC,IAAA,IAAI,CAAC2L,aAAa,CAACF,MAAM,EAAEzL,OAAO,CAAC;IACnC,IAAI,IAAI,CAACqG,QAAQ,EAAE;MACjBoF,MAAM,CAACG,IAAI,CAAC,CAAA,mBAAA,EAAsB,IAAI,CAACvF,QAAQ,CAACwF,UAAU,CAAA,MAAA,CAAQ,CAAC;AACrE,IAAA;AACA,IAAA,IAAI,CAACC,qBAAqB,CAACL,MAAM,EAAE,YAAY,CAAC;IAChD,IAAI,CAACM,qBAAqB,CAACN,MAAM,EAAE,iBAAiB,EAAED,OAAO,CAAC;AAC9D,IAAA,IAAI,CAACQ,cAAc,CAACP,MAAM,EAAED,OAAO,CAAC;IACpC,IAAI,IAAI,CAACnF,QAAQ,EAAE;AACjBoF,MAAAA,MAAM,CAACG,IAAI,CAAC,QAAQ,CAAC;AACvB,IAAA;AACA,IAAA,IAAI,CAACE,qBAAqB,CAACL,MAAM,EAAE,SAAS,CAAC;IAC7C,IAAI,CAACM,qBAAqB,CAACN,MAAM,EAAE,cAAc,EAAED,OAAO,CAAC;AAE3DC,IAAAA,MAAM,CAACG,IAAI,CAAC,QAAQ,CAAC;AAErB,IAAA,OAAOH,MAAM,CAACQ,IAAI,CAAC,EAAE,CAAC;AACxB,EAAA;;AAEA;AACF;AACA;AACEP,EAAAA,eAAeA,CAACD,MAAgB,EAAEzL,OAA0B,EAAQ;IAClE,IAAIA,OAAO,CAACkM,gBAAgB,EAAE;AAC5B,MAAA;AACF,IAAA;AACAT,IAAAA,MAAM,CAACG,IAAI,CACT,gCAAgC,EAChC5L,OAAO,CAACmM,QAAQ,IAAI,OAAO,EAC3B,wBAAwB,EACxB,iDAAiD,EACjD,uDACF,CAAC;AACH,EAAA;;AAEA;AACF;AACA;AACER,EAAAA,aAAaA,CAACF,MAAgB,EAAEzL,OAA0B,EAAQ;IAChE,MAAMS,KAAK,GAAGT,OAAO,CAACS,KAAK,IAAI,CAAA,EAAG,IAAI,CAACA,KAAK,CAAA,CAAE;MAC5CC,MAAM,GAAGV,OAAO,CAACU,MAAM,IAAI,CAAA,EAAG,IAAI,CAACA,MAAM,CAAA,CAAE;MAC3C0L,mBAAmB,GAAGC,MAAM,CAACD,mBAAmB;MAChDE,UAAU,GAAGtM,OAAO,CAACuM,OAAO;AAC9B,IAAA,IAAIA,OAAe;AACnB,IAAA,IAAID,UAAU,EAAE;AACdC,MAAAA,OAAO,GAAG,CAAA,SAAA,EAAYD,UAAU,CAACzI,CAAC,IAAIyI,UAAU,CAACxI,CAAC,CAAA,CAAA,EAAIwI,UAAU,CAAC7L,KAAK,IAAI6L,UAAU,CAAC5L,MAAM,CAAA,EAAA,CAAI;AACjG,IAAA,CAAC,MAAM,IAAI,IAAI,CAAC8L,yBAAyB,EAAE;AACzC,MAAA,MAAMpJ,GAAG,GAAG,IAAI,CAACxC,iBAAiB;AAClC2L,MAAAA,OAAO,GAAG,CAAA,SAAA,EAAYE,OAAO,CAC3B,CAACrJ,GAAG,CAAC,CAAC,CAAC,GAAGA,GAAG,CAAC,CAAC,CAAC,EAChBgJ,mBACF,CAAC,CAAA,CAAA,EAAIK,OAAO,CAAC,CAACrJ,GAAG,CAAC,CAAC,CAAC,GAAGA,GAAG,CAAC,CAAC,CAAC,EAAEgJ,mBAAmB,CAAC,CAAA,CAAA,EAAIK,OAAO,CAC5D,IAAI,CAAChM,KAAK,GAAG2C,GAAG,CAAC,CAAC,CAAC,EACnBgJ,mBACF,CAAC,CAAA,CAAA,EAAIK,OAAO,CAAC,IAAI,CAAC/L,MAAM,GAAG0C,GAAG,CAAC,CAAC,CAAC,EAAEgJ,mBAAmB,CAAC,CAAA,EAAA,CAAI;AAC7D,IAAA,CAAC,MAAM;MACLG,OAAO,GAAG,gBAAgB,IAAI,CAAC9L,KAAK,CAAA,CAAA,EAAI,IAAI,CAACC,MAAM,CAAA,EAAA,CAAI;AACzD,IAAA;IAEA+K,MAAM,CAACG,IAAI,CACT,OAAO,EACP,qCAAqC,EACrC,6CAA6C,EAC7C,gBAAgB,EAChB,SAAS,EACTnL,KAAK,EACL,IAAI,EACJ,UAAU,EACVC,MAAM,EACN,IAAI,EACJ6L,OAAO,EACP,yBAAyB,EACzB,+BAA+B,EAC/B7B,OAAO,EACP,WAAW,EACX,UAAU,EACV,IAAI,CAACgC,wBAAwB,EAAE,EAC/B,IAAI,CAACC,0BAA0B,EAAE,EACjC,IAAI,CAACC,uBAAuB,CAAC5M,OAAO,CAAC,EACrC,WACF,CAAC;AACH,EAAA;EAEA4M,uBAAuBA,CAAC5M,OAA0B,EAAU;AAC1D,IAAA,MAAMqG,QAAQ,GAAG,IAAI,CAACA,QAAQ;AAC9B,IAAA,IAAIA,QAAQ,EAAE;AACZA,MAAAA,QAAQ,CAACwF,UAAU,GAAG,YAAYgB,GAAG,EAAE,CAAA,CAAE;AACzC,MAAA,OAAO,CAAA,cAAA,EAAiBxG,QAAQ,CAACwF,UAAU,CAAA,KAAA,EAAQxF,QAAQ,CAACyG,aAAa,CACvE9M,OAAO,CAACwL,OACV,CAAC,CAAA,aAAA,CAAe;AAClB,IAAA;AACA,IAAA,OAAO,EAAE;AACX,EAAA;;AAEA;AACF;AACA;AACA;AACEmB,EAAAA,0BAA0BA,GAAW;IACnC,OAAQ,CAAC,YAAY,EAAE,SAAS,CAAC,CAC9B9B,GAAG,CAAEkC,IAAI,IAAK;AACb,MAAA,MAAM7E,IAAI,GAAG,IAAI,CAAC,CAAA,EAAG6E,IAAI,OAAO,CAAC;AACjC,MAAA,IAAIzE,QAAQ,CAACJ,IAAI,CAAC,EAAE;AAClB,QAAA,MAAM8E,eAAe,GAAG,IAAI,CAAC,CAAA,EAAGD,IAAI,KAAK,CAAC;UACxC3J,GAAG,GAAG,IAAI,CAACxC,iBAAiB;AAC5BuH,UAAAA,MAAM,GAAG;AACP;YACA8E,MAAM,EAAEA,MAAM,KAAK;AACnBxM,YAAAA,KAAK,EAAE,IAAI,CAACA,KAAK,IAAIuM,eAAe,GAAG5J,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AAClD1C,YAAAA,MAAM,EAAE,IAAI,CAACA,MAAM,IAAIsM,eAAe,GAAG5J,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;WACpD;AACH,QAAA,OAAO8E,IAAI,CAACqD,KAAK,CAACpD,MAAM,EAAkB;AACxC+E,UAAAA,mBAAmB,EAAEF,eAAe,GAAGG,WAAW,CAAC/J,GAAG,CAAC,GAAG;AAC5D,SAAC,CAAC;AACJ,MAAA;AACF,IAAA,CAAC,CAAC,CACD6I,IAAI,CAAC,EAAE,CAAC;AACb,EAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACES,EAAAA,wBAAwBA,GAAW;IACjC,MAAMpL,OAAuB,GAAG,EAAE;MAChC8L,QAAiC,GAAG,EAAE;MACtCC,SAAS,GAAGhB,MAAM,CAACgB,SAAS;IAE9B,IAAI,CAACpI,QAAQ,CAACqI,OAAO,CAAC,SAASvM,GAAGA,CAACoH,MAAM,EAAE;AACzC7G,MAAAA,OAAO,CAACsK,IAAI,CAACzD,MAAM,CAAC;AACpB,MAAA,IAAIoF,YAAY,CAACpF,MAAM,CAAC,EAAE;AACxBA,QAAAA,MAAM,CAAClD,QAAQ,CAACqI,OAAO,CAACvM,GAAG,CAAC;AAC9B,MAAA;AACF,IAAA,CAAC,CAAC;AAEFO,IAAAA,OAAO,CAACgM,OAAO,CAAE1L,GAAG,IAAK;AACvB,MAAA,IAAI,CAAC4L,YAAY,CAAC5L,GAAG,CAAC,EAAE;AACtB,QAAA;AACF,MAAA;MACA,MAAM;QAAE6L,MAAM;AAAEC,QAAAA;AAAW,OAAC,GAAG9L,GAAG;MAClC,IAAIwL,QAAQ,CAACM,UAAU,CAAC,IAAI,CAACL,SAAS,CAACK,UAAU,CAAC,EAAE;AAClD,QAAA;AACF,MAAA;AACAN,MAAAA,QAAQ,CAACM,UAAU,CAAC,GAAG,IAAI;MAC3B,IAAI,CAACD,MAAM,EAAE;AACX,QAAA;AACF,MAAA;MACArN,MAAM,CAACuN,MAAM,CAACF,MAAM,CAAC,CAACH,OAAO,CAAEM,QAAQ,IAAK;QAC1CxN,MAAM,CAACuN,MAAM,CAACC,QAAQ,CAAC,CAACN,OAAO,CAACO,IAAA,IAAyB;UAAA,IAAxB;AAAEH,YAAAA,UAAU,GAAG;AAAG,WAAC,GAAAG,IAAA;UAClD,IAAI,CAACT,QAAQ,CAACM,UAAU,CAAC,IAAIL,SAAS,CAACK,UAAU,CAAC,EAAE;AAClDN,YAAAA,QAAQ,CAACM,UAAU,CAAC,GAAG,IAAI;AAC7B,UAAA;AACF,QAAA,CAAC,CAAC;AACJ,MAAA,CAAC,CAAC;AACJ,IAAA,CAAC,CAAC;IAEF,MAAMI,cAAc,GAAG1N,MAAM,CAAC2N,IAAI,CAACX,QAAQ,CAAC,CACzCvC,GAAG,CACD6C,UAAU,IACT,yCAAyCA,UAAU,CAAA,oBAAA,EAAuBL,SAAS,CAACK,UAAU,CAAC,CAAA,YAAA,CACnG,CAAC,CACAzB,IAAI,CAAC,EAAE,CAAC;AAEX,IAAA,IAAI6B,cAAc,EAAE;MAClB,OAAO,CAAA,oCAAA,EAAuCA,cAAc,CAAA,aAAA,CAAe;AAC7E,IAAA;AACA,IAAA,OAAO,EAAE;AACX,EAAA;;AAEA;AACF;AACA;AACE9B,EAAAA,cAAcA,CAACP,MAAgB,EAAED,OAAqB,EAAE;AACtD,IAAA,IAAI,CAACwC,aAAa,CAAEC,YAAY,IAAK;MACnC,IAAIA,YAAY,CAAC1D,iBAAiB,EAAE;AAClC,QAAA;AACF,MAAA;MACA,IAAI,CAAC2D,aAAa,CAACzC,MAAM,EAAEwC,YAAY,EAAEzC,OAAO,CAAC;AACnD,IAAA,CAAC,CAAC;AACJ,EAAA;;AAEA;AACF;AACA;AACA;AACE0C,EAAAA,aAAaA,CACXzC,MAAgB,EAChBX,QAAsB,EACtBU,OAAqB,EACrB;IACAC,MAAM,CAACG,IAAI,CAACd,QAAQ,CAACS,KAAK,CAACC,OAAO,CAAC,CAAC;AACtC,EAAA;;AAEA;AACF;AACA;AACEO,EAAAA,qBAAqBA,CACnBN,MAAgB,EAChBxD,QAA4C,EAC5CuD,OAAqB,EACrB;AACA,IAAA,MAAM2C,WAAW,GAAG,IAAI,CAAClG,QAAQ,CAAC;IAClC,IAAIkG,WAAW,IAAI,CAACA,WAAW,CAAC5D,iBAAiB,IAAI4D,WAAW,CAAC5C,KAAK,EAAE;MACtEE,MAAM,CAACG,IAAI,CAACuC,WAAW,CAAC5C,KAAK,CAACC,OAAO,CAAC,CAAC;AACzC,IAAA;AACF,EAAA;;AAEA;AACF;AACA;AACA;AACEM,EAAAA,qBAAqBA,CAACL,MAAgB,EAAExD,QAAkC,EAAE;AAC1E,IAAA,MAAMmG,MAAM,GAAG,IAAI,CAAC,CAAA,EAAGnG,QAAQ,OAAO,CAAC;IACvC,IAAI,CAACmG,MAAM,EAAE;AACX,MAAA;AACF,IAAA;AACA,IAAA,IAAI9F,QAAQ,CAAC8F,MAAM,CAAC,EAAE;AACpB,MAAA,MAAMC,MAAM,GAAID,MAAM,CAAaC,MAAM,IAAI,EAAE;QAC7CC,UAAU,GAAG,IAAI,CAAC7N,KAAK;QACvB8N,WAAW,GAAG,IAAI,CAAC7N,MAAM;AACzB8N,QAAAA,YAAY,GAAG,IAAI,CAAC,CAAA,EAAGvG,QAAQ,KAAK,CAAC;AACrCiF,QAAAA,mBAAmB,GAAGsB,YAAY,GAC9BrB,WAAW,CAACxJ,eAAe,CAAC,IAAI,CAAC/C,iBAAiB,CAAC,CAAC,GACpD,EAAE;AACR6K,MAAAA,MAAM,CAACG,IAAI,CACT,CAAA,iBAAA,EAAoBsB,mBAAmB,cAAcoB,UAAU,GAAG,CAAC,CAAA,CAAA,EACjEC,WAAW,GAAG,CAAC,CAAA,MAAA,EACRH,MAAM,CAACvF,OAAO,GAAGyF,UAAU,GAAG,CAAC,CAAA,KAAA,EACtCF,MAAM,CAACtF,OAAO,GAAGyF,WAAW,GAAG,CAAC,CAAA,SAAA,EAEhC,CAACF,MAAM,KAAK,UAAU,IAAIA,MAAM,KAAK,WAAW,KAAKI,SAAS,CAACL,MAAM,CAAC,GACjEA,MAAM,CAACM,MAAM,CAAsBjO,KAAK,GACzC6N,UAAU,aAEd,CAACD,MAAM,KAAK,UAAU,IAAIA,MAAM,KAAK,WAAW,KAAKI,SAAS,CAACL,MAAM,CAAC,GACjEA,MAAM,CAACM,MAAM,CAAsBhO,MAAM,GAC1C6N,WAAW,CAAA,mBAAA,EACKH,MAAM,CAACO,EAAE,cACjC,CAAC;AACH,IAAA,CAAC,MAAM;AACLlD,MAAAA,MAAM,CAACG,IAAI,CACT,+CAA+C,EAC/C,QAAQ,EACRwC,MAAM,EACN,GAAG,EACH,YACF,CAAC;AACH,IAAA;AACF,EAAA;AACA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACEQ,EAAAA,YAAYA,CACVC,IAAkC,EAClCrD,OAAyC,EAE1B;IAAA,IADf;AAAEsD,MAAAA;AAAkB,KAAC,GAAA7O,SAAA,CAAAC,MAAA,GAAA,CAAA,IAAAD,SAAA,CAAA,CAAA,CAAA,KAAAE,SAAA,GAAAF,SAAA,CAAA,CAAA,CAAA,GAAG,EAAE;IAE1B,IAAI,CAAC4O,IAAI,EAAE;MACT,OAAOE,OAAO,CAACC,MAAM,CAAC,IAAIC,WAAW,CAAC,qBAAqB,CAAC,CAAC;AAC/D,IAAA;;AAEA;IACA,MAAM;AAAE3N,MAAAA,OAAO,GAAG,EAAE;MAAE,GAAG4N;AAAW,KAAC,GACnC,OAAOL,IAAI,KAAK,QAAQ,GAAGM,IAAI,CAACC,KAAK,CAACP,IAAI,CAAC,GAAGA,IAAI;IACpD,MAAM;MAAEpK,eAAe;MAAE4G,UAAU;MAAE3G,YAAY;MAAE4G,OAAO;AAAEjF,MAAAA;AAAS,KAAC,GACpE6I,UAAU;AACZ,IAAA,MAAMjO,iBAAiB,GAAG,IAAI,CAACA,iBAAiB;IAChD,IAAI,CAACA,iBAAiB,GAAG,KAAK;IAE9B,OAAO8N,OAAO,CAACM,GAAG,CAAC,CACjBC,cAAc,CAAehO,OAAO,EAAE;MACpCkK,OAAO;AACPsD,MAAAA;KACD,CAAC,EACFS,uBAAuB,CACrB;MACE9K,eAAe;AACfE,MAAAA,eAAe,EAAE0G,UAAU;MAC3B3G,YAAY;AACZE,MAAAA,YAAY,EAAE0G,OAAO;AACrBjF,MAAAA;AACF,KAAC,EACD;AAAEyI,MAAAA;AAAO,KACX,CAAC,CACF,CAAC,CAACU,IAAI,CAACC,KAAA,IAA2B;AAAA,MAAA,IAA1B,CAACC,OAAO,EAAEC,UAAU,CAAC,GAAAF,KAAA;MAC5B,IAAI,CAAClL,KAAK,EAAE;AACZ,MAAA,IAAI,CAACxD,GAAG,CAAC,GAAG2O,OAAO,CAAC;AACpB,MAAA,IAAI,CAACpP,GAAG,CAAC4O,UAAU,CAAC;AACpB,MAAA,IAAI,CAAC5O,GAAG,CAACqP,UAAU,CAAC;MACpB,IAAI,CAAC1O,iBAAiB,GAAGA,iBAAiB;AAC1C,MAAA,OAAO,IAAI;AACb,IAAA,CAAC,CAAC;AACJ,EAAA;;AAEA;AACF;AACA;AACA;EACE2O,KAAKA,CAACC,UAAoB,EAAE;AAC1B,IAAA,MAAM3E,IAAI,GAAG,IAAI,CAAChB,QAAQ,CAAC2F,UAAU,CAAC;AACtC,IAAA,MAAMhO,MAAM,GAAG,IAAI,CAACiO,gBAAgB,EAAE;AACtC,IAAA,OAAOjO,MAAM,CAAC+M,YAAY,CAAC1D,IAAI,CAAC;AAClC,EAAA;;AAEA;AACF;AACA;AACA;AACE4E,EAAAA,gBAAgBA,GAAG;AACjB,IAAA,MAAMrQ,EAAE,GAAGsQ,sBAAsB,CAAC,IAAI,CAAC;AACvC,IAAA,OAAO,IAAK,IAAI,CAAChQ,WAAW,CAAuBN,EAAE,CAAC;AACxD,EAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACEuQ,EAAAA,SAASA,GAA0C;AAAA,IAAA,IAAzChQ,OAAO,GAAAC,SAAA,CAAAC,MAAA,GAAA,CAAA,IAAAD,SAAA,CAAA,CAAA,CAAA,KAAAE,SAAA,GAAAF,SAAA,CAAA,CAAA,CAAA,GAAG,EAAE;IACpB,MAAM;AACJgQ,MAAAA,MAAM,GAAG,KAAK;AACdC,MAAAA,OAAO,GAAG,CAAC;AACXC,MAAAA,UAAU,GAAG,CAAC;AACd7N,MAAAA,mBAAmB,GAAG;AACxB,KAAC,GAAGtC,OAAO;AACX,IAAA,MAAMoQ,eAAe,GACnBD,UAAU,IAAI7N,mBAAmB,GAAG,IAAI,CAACD,gBAAgB,EAAE,GAAG,CAAC,CAAC;AAElE,IAAA,OAAO2N,SAAS,CACd,IAAI,CAACK,eAAe,CAACD,eAAe,EAAEpQ,OAAO,CAAC,EAC9CiQ,MAAM,EACNC,OACF,CAAC;AACH,EAAA;AACAI,EAAAA,MAAMA,GAAwD;AAAA,IAAA,IAAvDtQ,OAAO,GAAAC,SAAA,CAAAC,MAAA,GAAA,CAAA,IAAAD,SAAA,CAAA,CAAA,CAAA,KAAAE,SAAA,GAAAF,SAAA,CAAA,CAAA,CAAA,GAAG,EAAE;IACjB,MAAM;AACJgQ,MAAAA,MAAM,GAAG,KAAK;AACdC,MAAAA,OAAO,GAAG,CAAC;AACXC,MAAAA,UAAU,GAAG,CAAC;AACd7N,MAAAA,mBAAmB,GAAG;AACxB,KAAC,GAAGtC,OAAO;AACX,IAAA,MAAMoQ,eAAe,GACnBD,UAAU,IAAI7N,mBAAmB,GAAG,IAAI,CAACD,gBAAgB,EAAE,GAAG,CAAC,CAAC;AAElE,IAAA,OAAOiO,MAAM,CACX,IAAI,CAACD,eAAe,CAACD,eAAe,EAAEpQ,OAAO,CAAC,EAC9CiQ,MAAM,EACNC,OACF,CAAC;AACH,EAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACEG,EAAAA,eAAeA,GAGM;AAAA,IAAA,IAFnBF,UAAU,GAAAlQ,SAAA,CAAAC,MAAA,GAAA,CAAA,IAAAD,SAAA,CAAA,CAAA,CAAA,KAAAE,SAAA,GAAAF,SAAA,CAAA,CAAA,CAAA,GAAG,CAAC;IAAA,IACd;MAAEQ,KAAK;MAAEC,MAAM;MAAE6P,IAAI;MAAEC,GAAG;AAAE5F,MAAAA;AAAO,KAAC,GAAA3K,SAAA,CAAAC,MAAA,GAAA,CAAA,IAAAD,SAAA,CAAA,CAAA,CAAA,KAAAE,SAAA,GAAAF,SAAA,CAAA,CAAA,CAAA,GAAG,EAAE;IAEzC,MAAMwQ,WAAW,GAAG,CAAChQ,KAAK,IAAI,IAAI,CAACA,KAAK,IAAI0P,UAAU;MACpDO,YAAY,GAAG,CAAChQ,MAAM,IAAI,IAAI,CAACA,MAAM,IAAIyP,UAAU;AACnDQ,MAAAA,IAAI,GAAG,IAAI,CAACzN,OAAO,EAAE;MACrB0N,aAAa,GAAG,IAAI,CAACnQ,KAAK;MAC1BoQ,cAAc,GAAG,IAAI,CAACnQ,MAAM;MAC5BoQ,2BAA2B,GAAG,IAAI,CAACnQ,mBAAmB;MACtDoQ,OAAO,GAAGJ,IAAI,GAAGR,UAAU;MAC3Ba,EAAE,GAAG,IAAI,CAACpQ,iBAAiB;AAC3BqQ,MAAAA,UAAU,GAAG,CAACD,EAAE,CAAC,CAAC,CAAC,IAAIT,IAAI,IAAI,CAAC,CAAC,IAAIJ,UAAU;AAC/Ce,MAAAA,UAAU,GAAG,CAACF,EAAE,CAAC,CAAC,CAAC,IAAIR,GAAG,IAAI,CAAC,CAAC,IAAIL,UAAU;AAC9CgB,MAAAA,KAAK,GAAG,CAACJ,OAAO,EAAE,CAAC,EAAE,CAAC,EAAEA,OAAO,EAAEE,UAAU,EAAEC,UAAU,CAAW;MAClEE,cAAc,GAAG,IAAI,CAAC9O,mBAAmB;MACzC+O,QAAQ,GAAGtB,sBAAsB,CAAC;AAChCtP,QAAAA,KAAK,EAAEgQ,WAAW;AAClB/P,QAAAA,MAAM,EAAEgQ;AACV,OAAC,CAAC;AACFY,MAAAA,eAAe,GAAG1G,MAAM,GACpB,IAAI,CAAC3F,QAAQ,CAAC2F,MAAM,CAAEhJ,GAAG,IAAKgJ,MAAM,CAAChJ,GAAG,CAAC,CAAC,GAC1C,IAAI,CAACqD,QAAQ;IACnB,IAAI,CAAC3C,mBAAmB,GAAG,KAAK;IAChC,IAAI,CAAC1B,iBAAiB,GAAGuQ,KAAK;IAC9B,IAAI,CAAC1Q,KAAK,GAAGgQ,WAAW;IACxB,IAAI,CAAC/P,MAAM,GAAGgQ,YAAY;IAC1B,IAAI,CAAC/P,mBAAmB,GAAG,IAAI;IAC/B,IAAI,CAACE,sBAAsB,EAAE;IAC7B,IAAI,CAACmE,YAAY,CAACqM,QAAQ,CAAC/M,UAAU,CAAC,IAAI,CAAC,EAAGgN,eAAe,CAAC;IAC9D,IAAI,CAAC1Q,iBAAiB,GAAGoQ,EAAE;IAC3B,IAAI,CAACvQ,KAAK,GAAGmQ,aAAa;IAC1B,IAAI,CAAClQ,MAAM,GAAGmQ,cAAc;IAC5B,IAAI,CAAChQ,sBAAsB,EAAE;IAC7B,IAAI,CAACyB,mBAAmB,GAAG8O,cAAc;IACzC,IAAI,CAACzQ,mBAAmB,GAAGmQ,2BAA2B;AACtD,IAAA,OAAOO,QAAQ;AACjB,EAAA;;AAEA;AACF;AACA;AACA;AACA;AACEE,EAAAA,OAAOA,GAAG;IACR,CAAC,IAAI,CAACnM,QAAQ,IACZ,IAAI,CAAC7F,QAAQ,CAACiS,UAAU,CAAC;MAAE/Q,KAAK,EAAE,IAAI,CAACA,KAAK;MAAEC,MAAM,EAAE,IAAI,CAACA;AAAO,KAAC,CAAC;AACtE+Q,IAAAA,iBAAiB,CAACC,cAAc,CAAC,IAAI,CAAC;IACtC,IAAI,CAACtM,QAAQ,GAAG,IAAI;AACpB,IAAA,OAAO,IAAI2J,OAAO,CAAU,CAAC4C,OAAO,EAAE3C,MAAM,KAAK;MAC/C,MAAM4C,IAAI,GAAGA,MAAM;QACjB,IAAI,CAACC,OAAO,EAAE;QACdF,OAAO,CAAC,IAAI,CAAC;MACf,CAAC;MACDC,IAAI,CAACE,IAAI,GAAG9C,MAAM;MAClB,IAAI,IAAI,CAAC5H,aAAa,EAAE;AACtB,QAAA,IAAI,CAACA,aAAa,CAAC0K,IAAI,CAAC,SAAS,CAAC;AACpC,MAAA;MAEA,IAAI,IAAI,CAAC/M,SAAS,EAAE;QAClB4M,OAAO,CAAC,KAAK,CAAC;AAChB,MAAA,CAAC,MAAM,IAAI,IAAI,CAACxM,gBAAgB,EAAE;QAChC,IAAI,CAACiC,aAAa,GAAGwK,IAAI;AAC3B,MAAA,CAAC,MAAM;AACLA,QAAAA,IAAI,EAAE;AACR,MAAA;AACF,IAAA,CAAC,CAAC;AACJ,EAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACEC,EAAAA,OAAOA,GAAG;IACR,IAAI,CAAC9M,SAAS,GAAG,IAAI;IACrB,IAAI,CAACD,qBAAqB,EAAE;IAC5B,IAAI,CAACkJ,aAAa,CAAE7F,MAAM,IAAKA,MAAM,CAACoJ,OAAO,EAAE,CAAC;IAChD,IAAI,CAACtM,QAAQ,GAAG,EAAE;IAClB,IAAI,IAAI,CAACR,eAAe,EAAE;AACxB,MAAA,IAAI,CAACA,eAAe,CAAC8M,OAAO,EAAE;AAChC,IAAA;IACA,IAAI,CAAC9M,eAAe,GAAGtE,SAAS;IAChC,IAAI,IAAI,CAACuE,YAAY,EAAE;AACrB,MAAA,IAAI,CAACA,YAAY,CAAC6M,OAAO,EAAE;AAC7B,IAAA;IACA,IAAI,CAAC7M,YAAY,GAAGvE,SAAS;AAC7B,IAAA,IAAI,CAACZ,QAAQ,CAACgS,OAAO,EAAE;AACzB,EAAA;;AAEA;AACF;AACA;AACA;AACEQ,EAAAA,QAAQA,GAAG;AACT,IAAA,OAAO,CAAA,UAAA,EAAa,IAAI,CAACC,UAAU,EAAE,CAAA,cAAA,EACnC,IAAI,CAAC/M,QAAQ,CAAC/E,MAAM,CAAA,GAAA,CACjB;AACP,EAAA;AACF;AAAC+R,eAAA,CAn3CY/S,YAAY,EAAA,aAAA,EA8FFgT,oBAAoB,CAAA;;;;"}
|
|
1
|
+
{"version":3,"file":"StaticCanvas.mjs","sources":["../../../src/canvas/StaticCanvas.ts"],"sourcesContent":["import { config } from '../config';\nimport { CENTER, VERSION } from '../constants';\nimport type { CanvasEvents, StaticCanvasEvents } from '../EventTypeDefs';\nimport type { Gradient } from '../gradient/Gradient';\nimport { createCollectionMixin, isCollection } from '../Collection';\nimport { CommonMethods } from '../CommonMethods';\nimport type { Pattern } from '../Pattern';\nimport { Point } from '../Point';\nimport type { TCachedFabricObject } from '../shapes/Object/Object';\nimport type {\n Abortable,\n Constructor,\n TCornerPoint,\n TDataUrlOptions,\n TFiller,\n TMat2D,\n TSize,\n TSVGReviver,\n TToCanvasElementOptions,\n TValidToObjectMethod,\n TOptions,\n} from '../typedefs';\nimport {\n cancelAnimFrame,\n requestAnimFrame,\n} from '../util/animation/AnimationFrameProvider';\nimport { runningAnimations } from '../util/animation/AnimationRegistry';\nimport { uid } from '../util/internals/uid';\nimport { createCanvasElementFor, toBlob, toDataURL } from '../util/misc/dom';\nimport { invertTransform, transformPoint } from '../util/misc/matrix';\nimport type { EnlivenObjectOptions } from '../util/misc/objectEnlive';\nimport {\n enlivenObjectEnlivables,\n enlivenObjects,\n} from '../util/misc/objectEnlive';\nimport { pick } from '../util/misc/pick';\nimport { matrixToSVG } from '../util/misc/svgExport';\nimport { toFixed } from '../util/misc/toFixed';\nimport { isFiller, isPattern, isTextObject } from '../util/typeAssertions';\nimport { StaticCanvasDOMManager } from './DOMManagers/StaticCanvasDOMManager';\nimport type { CSSDimensions } from './DOMManagers/util';\nimport type { FabricObject } from '../shapes/Object/FabricObject';\nimport type { StaticCanvasOptions } from './StaticCanvasOptions';\nimport { staticCanvasDefaults } from './StaticCanvasOptions';\nimport { log, FabricError } from '../util/internals/console';\nimport { getDevicePixelRatio } from '../env';\nimport { escapeXml } from '../util/lang_string';\n\n/**\n * Having both options in TCanvasSizeOptions set to true transform the call in a calcOffset\n * Better try to restrict with types to avoid confusion.\n */\nexport type TCanvasSizeOptions =\n | {\n backstoreOnly?: true;\n cssOnly?: false;\n }\n | {\n backstoreOnly?: false;\n cssOnly?: true;\n };\n\nexport type TSVGExportOptions = {\n suppressPreamble?: boolean;\n viewBox?: {\n x: number;\n y: number;\n width: number;\n height: number;\n };\n encoding?: 'UTF-8'; // test Encoding type and see what happens\n width?: string;\n height?: string;\n reviver?: TSVGReviver;\n};\n\nexport type PatternQuality = 'fast' | 'good' | 'best' | 'nearest' | 'bilinear';\n\n/**\n * Static canvas class\n * @see {@link http://fabric5.fabricjs.com/static_canvas|StaticCanvas demo}\n * @fires before:render\n * @fires after:render\n * @fires canvas:cleared\n * @fires object:added\n * @fires object:removed\n */\n// TODO: fix `EventSpec` inheritance https://github.com/microsoft/TypeScript/issues/26154#issuecomment-1366616260\nexport class StaticCanvas<\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n EventSpec extends StaticCanvasEvents = StaticCanvasEvents,\n>\n extends createCollectionMixin(CommonMethods<CanvasEvents>)\n implements StaticCanvasOptions\n{\n declare width: number;\n declare height: number;\n\n // background\n declare backgroundVpt: boolean;\n declare backgroundColor: TFiller | string;\n declare backgroundImage?: FabricObject;\n // overlay\n declare overlayVpt: boolean;\n declare overlayColor: TFiller | string;\n declare overlayImage?: FabricObject;\n\n declare clipPath?: FabricObject;\n\n declare includeDefaultValues: boolean;\n\n // rendering config\n declare renderOnAddRemove: boolean;\n declare skipOffscreen: boolean;\n declare enableRetinaScaling: boolean;\n declare imageSmoothingEnabled: boolean;\n\n /**\n * @todo move to Canvas\n */\n declare controlsAboveOverlay: boolean;\n\n /**\n * @todo move to Canvas\n */\n declare allowTouchScrolling: boolean;\n\n declare viewportTransform: TMat2D;\n\n /**\n * The viewport bounding box in scene plane coordinates, see {@link calcViewportBoundaries}\n */\n declare vptCoords: TCornerPoint;\n\n /**\n * A reference to the canvas actual HTMLCanvasElement.\n * Can be use to read the raw pixels, but never write or manipulate\n * @type HTMLCanvasElement\n */\n get lowerCanvasEl() {\n return this.elements.lower?.el;\n }\n\n get contextContainer() {\n return this.elements.lower?.ctx;\n }\n\n /**\n * If true the Canvas is in the process or has been disposed/destroyed.\n * No more rendering operation will be executed on this canvas.\n * @type boolean\n */\n declare destroyed?: boolean;\n\n /**\n * Started the process of disposing but not done yet.\n * WIll likely complete the render cycle already scheduled but stopping adding more.\n * @type boolean\n */\n declare disposed?: boolean;\n\n declare _offset: { left: number; top: number };\n declare protected hasLostContext: boolean;\n declare protected nextRenderHandle: number;\n\n declare elements: StaticCanvasDOMManager;\n\n /**\n * When true control drawing is skipped.\n * This boolean is used to avoid toDataURL to export controls.\n * Usage of this boolean to build up other flows and features is not supported\n * @type Boolean\n * @default false\n */\n declare protected skipControlsDrawing: boolean;\n\n /**\n * Controls the rendering of images under node-canvas.\n * Has no effects on the browser context.\n */\n declare patternQuality: PatternQuality;\n\n static ownDefaults = staticCanvasDefaults;\n\n // reference to\n declare protected __cleanupTask?: {\n (): void;\n kill: (reason?: any) => void;\n };\n\n static getDefaults(): Record<string, any> {\n return StaticCanvas.ownDefaults;\n }\n\n constructor(\n el?: string | HTMLCanvasElement,\n options: TOptions<StaticCanvasOptions> = {},\n ) {\n super();\n Object.assign(\n this,\n (this.constructor as typeof StaticCanvas).getDefaults(),\n );\n this.set(options);\n this.initElements(el);\n this._setDimensionsImpl({\n width: this.width || this.elements.lower.el.width || 0,\n height: this.height || this.elements.lower.el.height || 0,\n });\n this.skipControlsDrawing = false;\n this.viewportTransform = [...this.viewportTransform];\n this.calcViewportBoundaries();\n }\n\n protected initElements(el?: string | HTMLCanvasElement) {\n this.elements = new StaticCanvasDOMManager(el);\n }\n\n add(...objects: FabricObject[]) {\n const size = super.add(...objects);\n objects.length > 0 && this.renderOnAddRemove && this.requestRenderAll();\n return size;\n }\n\n insertAt(index: number, ...objects: FabricObject[]) {\n const size = super.insertAt(index, ...objects);\n objects.length > 0 && this.renderOnAddRemove && this.requestRenderAll();\n return size;\n }\n\n remove(...objects: FabricObject[]) {\n const removed = super.remove(...objects);\n removed.length > 0 && this.renderOnAddRemove && this.requestRenderAll();\n return removed;\n }\n\n _onObjectAdded(obj: FabricObject) {\n if (obj.canvas && (obj.canvas as StaticCanvas) !== this) {\n log(\n 'warn',\n 'Canvas is trying to add an object that belongs to a different canvas.\\n' +\n 'Resulting to default behavior: removing object from previous canvas and adding to new canvas',\n );\n obj.canvas.remove(obj);\n }\n obj._set('canvas', this);\n obj.setCoords();\n this.fire('object:added', { target: obj });\n obj.fire('added', { target: this });\n }\n\n _onObjectRemoved(obj: FabricObject) {\n obj._set('canvas', undefined);\n this.fire('object:removed', { target: obj });\n obj.fire('removed', { target: this });\n }\n\n _onStackOrderChanged() {\n this.renderOnAddRemove && this.requestRenderAll();\n }\n\n /**\n * @private\n * @see https://developer.apple.com/library/safari/documentation/AudioVideo/Conceptual/HTML-canvas-guide/SettingUptheCanvas/SettingUptheCanvas.html\n * @return {Number} retinaScaling if applied, otherwise 1;\n */\n getRetinaScaling() {\n return this.enableRetinaScaling ? getDevicePixelRatio() : 1;\n }\n\n /**\n * Calculates canvas element offset relative to the document\n * This method is also attached as \"resize\" event handler of window\n */\n calcOffset() {\n return (this._offset = this.elements.calcOffset());\n }\n\n /**\n * Returns canvas width (in px)\n * @return {Number}\n */\n getWidth(): number {\n return this.width;\n }\n\n /**\n * Returns canvas height (in px)\n * @return {Number}\n */\n getHeight(): number {\n return this.height;\n }\n\n /**\n * Internal use only\n * @protected\n */\n protected _setDimensionsImpl(\n dimensions: Partial<TSize | CSSDimensions>,\n { cssOnly = false, backstoreOnly = false }: TCanvasSizeOptions = {},\n ) {\n if (!cssOnly) {\n const size = {\n width: this.width,\n height: this.height,\n ...(dimensions as Partial<TSize>),\n };\n this.elements.setDimensions(size, this.getRetinaScaling());\n this.hasLostContext = true;\n this.width = size.width;\n this.height = size.height;\n }\n if (!backstoreOnly) {\n this.elements.setCSSDimensions(dimensions);\n }\n\n this.calcOffset();\n }\n\n /**\n * Sets dimensions (width, height) of this canvas instance. when options.cssOnly flag active you should also supply the unit of measure (px/%/em)\n * @param {Object} dimensions Object with width/height properties\n * @param {Number|String} [dimensions.width] Width of canvas element\n * @param {Number|String} [dimensions.height] Height of canvas element\n * @param {Object} [options] Options object\n * @param {Boolean} [options.backstoreOnly=false] Set the given dimensions only as canvas backstore dimensions\n * @param {Boolean} [options.cssOnly=false] Set the given dimensions only as css dimensions\n */\n setDimensions(\n dimensions: Partial<CSSDimensions>,\n options?: { cssOnly?: true; backstoreOnly?: false },\n ): void;\n setDimensions(\n dimensions: Partial<TSize>,\n options?: { backstoreOnly?: true; cssOnly?: false },\n ): void;\n setDimensions(dimensions: Partial<TSize>, options?: never): void;\n setDimensions(\n dimensions: Partial<TSize | CSSDimensions>,\n options?: TCanvasSizeOptions,\n ) {\n this._setDimensionsImpl(dimensions, options);\n if (!options || !options.cssOnly) {\n this.requestRenderAll();\n }\n }\n\n /**\n * Returns canvas zoom level\n * @return {Number}\n */\n getZoom() {\n return this.viewportTransform[0];\n }\n\n /**\n * Sets viewport transformation of this canvas instance\n * @param {Array} vpt a Canvas 2D API transform matrix\n */\n setViewportTransform(vpt: TMat2D) {\n this.viewportTransform = vpt;\n this.calcViewportBoundaries();\n this.renderOnAddRemove && this.requestRenderAll();\n }\n\n /**\n * Sets zoom level of this canvas instance, the zoom centered around point\n * meaning that following zoom to point with the same point will have the visual\n * effect of the zoom originating from that point. The point won't move.\n * It has nothing to do with canvas center or visual center of the viewport.\n * @param {Point} point to zoom with respect to\n * @param {Number} value to set zoom to, less than 1 zooms out\n */\n zoomToPoint(point: Point, value: number) {\n // TODO: just change the scale, preserve other transformations\n const before = point,\n vpt: TMat2D = [...this.viewportTransform];\n const newPoint = transformPoint(point, invertTransform(vpt));\n vpt[0] = value;\n vpt[3] = value;\n const after = transformPoint(newPoint, vpt);\n vpt[4] += before.x - after.x;\n vpt[5] += before.y - after.y;\n this.setViewportTransform(vpt);\n }\n\n /**\n * Sets zoom level of this canvas instance\n * @param {Number} value to set zoom to, less than 1 zooms out\n */\n setZoom(value: number) {\n this.zoomToPoint(new Point(0, 0), value);\n }\n\n /**\n * Pan viewport so as to place point at top left corner of canvas\n * @param {Point} point to move to\n */\n absolutePan(point: Point) {\n const vpt: TMat2D = [...this.viewportTransform];\n vpt[4] = -point.x;\n vpt[5] = -point.y;\n return this.setViewportTransform(vpt);\n }\n\n /**\n * Pans viewpoint relatively\n * @param {Point} point (position vector) to move by\n */\n relativePan(point: Point) {\n return this.absolutePan(\n new Point(\n -point.x - this.viewportTransform[4],\n -point.y - this.viewportTransform[5],\n ),\n );\n }\n\n /**\n * Returns <canvas> element corresponding to this instance\n * @return {HTMLCanvasElement}\n */\n getElement(): HTMLCanvasElement {\n return this.elements.lower.el;\n }\n\n /**\n * Clears specified context of canvas element\n * @param {CanvasRenderingContext2D} ctx Context to clear\n */\n clearContext(ctx: CanvasRenderingContext2D) {\n ctx.clearRect(0, 0, this.width, this.height);\n }\n\n /**\n * Returns context of canvas where objects are drawn\n * @return {CanvasRenderingContext2D}\n */\n getContext(): CanvasRenderingContext2D {\n return this.elements.lower.ctx;\n }\n\n /**\n * Clears all contexts (background, main, top) of an instance\n */\n clear() {\n this.remove(...this.getObjects());\n this.backgroundImage = undefined;\n this.overlayImage = undefined;\n this.backgroundColor = '';\n this.overlayColor = '';\n this.clearContext(this.getContext());\n this.fire('canvas:cleared');\n this.renderOnAddRemove && this.requestRenderAll();\n }\n\n /**\n * Renders the canvas\n */\n renderAll() {\n this.cancelRequestedRender();\n if (this.destroyed) {\n return;\n }\n this.renderCanvas(this.getContext(), this._objects);\n }\n\n /**\n * Function created to be instance bound at initialization\n * used in requestAnimationFrame rendering\n * Let the fabricJS call it. If you call it manually you could have more\n * animationFrame stacking on to of each other\n * for an imperative rendering, use canvas.renderAll\n * @private\n */\n renderAndReset() {\n this.nextRenderHandle = 0;\n this.renderAll();\n }\n\n /**\n * Append a renderAll request to next animation frame.\n * unless one is already in progress, in that case nothing is done\n * a boolean flag will avoid appending more.\n */\n requestRenderAll() {\n if (!this.nextRenderHandle && !this.disposed && !this.destroyed) {\n this.nextRenderHandle = requestAnimFrame(() => this.renderAndReset());\n }\n }\n\n /**\n * Calculate the position of the 4 corner of canvas with current viewportTransform.\n * helps to determinate when an object is in the current rendering viewport\n */\n calcViewportBoundaries(): TCornerPoint {\n const width = this.width,\n height = this.height,\n iVpt = invertTransform(this.viewportTransform),\n a = transformPoint({ x: 0, y: 0 }, iVpt),\n b = transformPoint({ x: width, y: height }, iVpt),\n // we don't support vpt flipping\n // but the code is robust enough to mostly work with flipping\n min = a.min(b),\n max = a.max(b);\n return (this.vptCoords = {\n tl: min,\n tr: new Point(max.x, min.y),\n bl: new Point(min.x, max.y),\n br: max,\n });\n }\n\n cancelRequestedRender() {\n if (this.nextRenderHandle) {\n cancelAnimFrame(this.nextRenderHandle);\n this.nextRenderHandle = 0;\n }\n }\n\n drawControls(_ctx: CanvasRenderingContext2D) {\n // Static canvas has no controls\n }\n\n /**\n * Renders background, objects, overlay and controls.\n * @param {CanvasRenderingContext2D} ctx\n * @param {Array} objects to render\n */\n renderCanvas(ctx: CanvasRenderingContext2D, objects: FabricObject[]) {\n if (this.destroyed) {\n return;\n }\n\n const v = this.viewportTransform,\n path = this.clipPath;\n this.calcViewportBoundaries();\n this.clearContext(ctx);\n ctx.imageSmoothingEnabled = this.imageSmoothingEnabled;\n // @ts-expect-error node-canvas stuff\n ctx.patternQuality = this.patternQuality;\n this.fire('before:render', { ctx });\n this._renderBackground(ctx);\n\n ctx.save();\n //apply viewport transform once for all rendering process\n ctx.transform(v[0], v[1], v[2], v[3], v[4], v[5]);\n this._renderObjects(ctx, objects);\n ctx.restore();\n if (!this.controlsAboveOverlay && !this.skipControlsDrawing) {\n this.drawControls(ctx);\n }\n if (path) {\n path._set('canvas', this);\n // needed to setup a couple of variables\n // todo migrate to the newer one\n path.shouldCache();\n path._transformDone = true;\n (path as TCachedFabricObject).renderCache({ forClipping: true });\n this.drawClipPathOnCanvas(ctx, path as TCachedFabricObject);\n }\n this._renderOverlay(ctx);\n if (this.controlsAboveOverlay && !this.skipControlsDrawing) {\n this.drawControls(ctx);\n }\n this.fire('after:render', { ctx });\n\n if (this.__cleanupTask) {\n this.__cleanupTask();\n this.__cleanupTask = undefined;\n }\n }\n\n /**\n * Paint the cached clipPath on the lowerCanvasEl\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n drawClipPathOnCanvas(\n ctx: CanvasRenderingContext2D,\n clipPath: TCachedFabricObject,\n ) {\n const v = this.viewportTransform;\n ctx.save();\n ctx.transform(...v);\n // DEBUG: uncomment this line, comment the following\n // ctx.globalAlpha = 0.4;\n ctx.globalCompositeOperation = 'destination-in';\n clipPath.transform(ctx);\n ctx.scale(1 / clipPath.zoomX, 1 / clipPath.zoomY);\n ctx.drawImage(\n clipPath._cacheCanvas,\n -clipPath.cacheTranslationX,\n -clipPath.cacheTranslationY,\n );\n ctx.restore();\n }\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n * @param {Array} objects to render\n */\n _renderObjects(ctx: CanvasRenderingContext2D, objects: FabricObject[]) {\n for (let i = 0, len = objects.length; i < len; ++i) {\n objects[i] && objects[i].render(ctx);\n }\n }\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n * @param {string} property 'background' or 'overlay'\n */\n _renderBackgroundOrOverlay(\n ctx: CanvasRenderingContext2D,\n property: 'background' | 'overlay',\n ) {\n const fill = this[`${property}Color`],\n object = this[`${property}Image`],\n v = this.viewportTransform,\n needsVpt = this[`${property}Vpt`];\n if (!fill && !object) {\n return;\n }\n const isAFiller = isFiller(fill);\n if (fill) {\n ctx.save();\n ctx.beginPath();\n ctx.moveTo(0, 0);\n ctx.lineTo(this.width, 0);\n ctx.lineTo(this.width, this.height);\n ctx.lineTo(0, this.height);\n ctx.closePath();\n ctx.fillStyle = isAFiller ? fill.toLive(ctx /* this */)! : fill;\n if (needsVpt) {\n ctx.transform(...v);\n }\n if (isAFiller) {\n ctx.transform(1, 0, 0, 1, fill.offsetX || 0, fill.offsetY || 0);\n const m = ((fill as Gradient<'linear'>).gradientTransform ||\n (fill as Pattern).patternTransform) as TMat2D;\n m && ctx.transform(...m);\n }\n ctx.fill();\n ctx.restore();\n }\n if (object) {\n ctx.save();\n const { skipOffscreen } = this;\n // if the object doesn't move with the viewport,\n // the offscreen concept does not apply;\n this.skipOffscreen = needsVpt;\n if (needsVpt) {\n ctx.transform(...v);\n }\n object.render(ctx);\n this.skipOffscreen = skipOffscreen;\n ctx.restore();\n }\n }\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n _renderBackground(ctx: CanvasRenderingContext2D) {\n this._renderBackgroundOrOverlay(ctx, 'background');\n }\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n _renderOverlay(ctx: CanvasRenderingContext2D) {\n this._renderBackgroundOrOverlay(ctx, 'overlay');\n }\n\n /**\n * Returns coordinates of a center of canvas.\n * @return {Point}\n */\n getCenterPoint() {\n return new Point(this.width / 2, this.height / 2);\n }\n\n /**\n * Centers object horizontally in the canvas\n */\n centerObjectH(object: FabricObject) {\n return this._centerObject(\n object,\n new Point(this.getCenterPoint().x, object.getCenterPoint().y),\n );\n }\n\n /**\n * Centers object vertically in the canvas\n * @param {FabricObject} object Object to center vertically\n */\n centerObjectV(object: FabricObject) {\n return this._centerObject(\n object,\n new Point(object.getCenterPoint().x, this.getCenterPoint().y),\n );\n }\n\n /**\n * Centers object vertically and horizontally in the canvas\n * @param {FabricObject} object Object to center vertically and horizontally\n */\n centerObject(object: FabricObject) {\n return this._centerObject(object, this.getCenterPoint());\n }\n\n /**\n * Centers object vertically and horizontally in the viewport\n * @param {FabricObject} object Object to center vertically and horizontally\n */\n viewportCenterObject(object: FabricObject) {\n return this._centerObject(object, this.getVpCenter());\n }\n\n /**\n * Centers object horizontally in the viewport, object.top is unchanged\n * @param {FabricObject} object Object to center vertically and horizontally\n */\n viewportCenterObjectH(object: FabricObject) {\n return this._centerObject(\n object,\n new Point(this.getVpCenter().x, object.getCenterPoint().y),\n );\n }\n\n /**\n * Centers object Vertically in the viewport, object.top is unchanged\n * @param {FabricObject} object Object to center vertically and horizontally\n */\n viewportCenterObjectV(object: FabricObject) {\n return this._centerObject(\n object,\n new Point(object.getCenterPoint().x, this.getVpCenter().y),\n );\n }\n\n /**\n * Calculate the point in canvas that correspond to the center of actual viewport.\n * @return {Point} vpCenter, viewport center\n */\n getVpCenter(): Point {\n return transformPoint(\n this.getCenterPoint(),\n invertTransform(this.viewportTransform),\n );\n }\n\n /**\n * @private\n * @param {FabricObject} object Object to center\n * @param {Point} center Center point\n */\n _centerObject(object: FabricObject, center: Point) {\n object.setXY(center, CENTER, CENTER);\n object.setCoords();\n this.renderOnAddRemove && this.requestRenderAll();\n }\n\n /**\n * Returns dataless JSON representation of canvas\n * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output\n * @return {String} json string\n */\n toDatalessJSON(propertiesToInclude?: string[]) {\n return this.toDatalessObject(propertiesToInclude);\n }\n\n /**\n * Returns object representation of canvas\n * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output\n * @return {Object} object representation of an instance\n */\n toObject(propertiesToInclude?: string[]) {\n return this._toObjectMethod('toObject', propertiesToInclude);\n }\n\n /**\n * Returns Object representation of canvas\n * this alias is provided because if you call JSON.stringify on an instance,\n * the toJSON object will be invoked if it exists.\n * Having a toJSON method means you can do JSON.stringify(myCanvas)\n * JSON does not support additional properties because toJSON has its own signature\n * @return {Object} JSON compatible object\n * @see {@link http://fabric5.fabricjs.com/fabric-intro-part-3#serialization}\n * @see {@link http://jsfiddle.net/fabricjs/pec86/|jsFiddle demo}\n * @example <caption>JSON representation of canvas </caption>\n * const json = canvas.toJSON();\n * @example <caption>JSON representation of canvas </caption>\n * const json = JSON.stringify(canvas);\n */\n toJSON() {\n return this.toObject();\n }\n\n /**\n * Returns dataless object representation of canvas\n * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output\n * @return {Object} object representation of an instance\n */\n toDatalessObject(propertiesToInclude?: string[]) {\n return this._toObjectMethod('toDatalessObject', propertiesToInclude);\n }\n\n /**\n * @private\n */\n _toObjectMethod(\n methodName: TValidToObjectMethod,\n propertiesToInclude?: string[],\n ) {\n const clipPath = this.clipPath;\n const clipPathData =\n clipPath && !clipPath.excludeFromExport\n ? this._toObject(clipPath, methodName, propertiesToInclude)\n : null;\n return {\n version: VERSION,\n ...pick(this, propertiesToInclude as (keyof this)[]),\n objects: this._objects\n .filter((object) => !object.excludeFromExport)\n .map((instance) =>\n this._toObject(instance, methodName, propertiesToInclude),\n ),\n ...this.__serializeBgOverlay(methodName, propertiesToInclude),\n ...(clipPathData ? { clipPath: clipPathData } : null),\n };\n }\n\n /**\n * @private\n */\n protected _toObject(\n instance: FabricObject,\n methodName: TValidToObjectMethod,\n propertiesToInclude?: string[],\n ) {\n let originalValue;\n\n if (!this.includeDefaultValues) {\n originalValue = instance.includeDefaultValues;\n instance.includeDefaultValues = false;\n }\n\n const object = instance[methodName](propertiesToInclude);\n if (!this.includeDefaultValues) {\n instance.includeDefaultValues = !!originalValue;\n }\n return object;\n }\n\n /**\n * @private\n */\n __serializeBgOverlay(\n methodName: TValidToObjectMethod,\n propertiesToInclude?: string[],\n ) {\n const data: any = {},\n bgImage = this.backgroundImage,\n overlayImage = this.overlayImage,\n bgColor = this.backgroundColor,\n overlayColor = this.overlayColor;\n\n if (isFiller(bgColor)) {\n if (!bgColor.excludeFromExport) {\n data.background = bgColor.toObject(propertiesToInclude);\n }\n } else if (bgColor) {\n data.background = bgColor;\n }\n\n if (isFiller(overlayColor)) {\n if (!overlayColor.excludeFromExport) {\n data.overlay = overlayColor.toObject(propertiesToInclude);\n }\n } else if (overlayColor) {\n data.overlay = overlayColor;\n }\n\n if (bgImage && !bgImage.excludeFromExport) {\n data.backgroundImage = this._toObject(\n bgImage,\n methodName,\n propertiesToInclude,\n );\n }\n if (overlayImage && !overlayImage.excludeFromExport) {\n data.overlayImage = this._toObject(\n overlayImage,\n methodName,\n propertiesToInclude,\n );\n }\n\n return data;\n }\n\n /* _TO_SVG_START_ */\n\n declare svgViewportTransformation: boolean;\n\n /**\n * Returns SVG representation of canvas\n * @param {Object} [options] Options object for SVG output\n * @param {Boolean} [options.suppressPreamble=false] If true xml tag is not included\n * @param {Object} [options.viewBox] SVG viewbox object\n * @param {Number} [options.viewBox.x] x-coordinate of viewbox\n * @param {Number} [options.viewBox.y] y-coordinate of viewbox\n * @param {Number} [options.viewBox.width] Width of viewbox\n * @param {Number} [options.viewBox.height] Height of viewbox\n * @param {String} [options.encoding=UTF-8] Encoding of SVG output\n * @param {String} [options.width] desired width of svg with or without units\n * @param {String} [options.height] desired height of svg with or without units\n * @param {Function} [reviver] Method for further parsing of svg elements, called after each fabric object converted into svg representation.\n * @return {String} SVG string\n * @see {@link http://fabric5.fabricjs.com/fabric-intro-part-3#serialization}\n * @see {@link http://jsfiddle.net/fabricjs/jQ3ZZ/|jsFiddle demo}\n * @example <caption>Normal SVG output</caption>\n * var svg = canvas.toSVG();\n * @example <caption>SVG output without preamble (without <?xml ../>)</caption>\n * var svg = canvas.toSVG({suppressPreamble: true});\n * @example <caption>SVG output with viewBox attribute</caption>\n * var svg = canvas.toSVG({\n * viewBox: {\n * x: 100,\n * y: 100,\n * width: 200,\n * height: 300\n * }\n * });\n * @example <caption>SVG output with different encoding (default: UTF-8)</caption>\n * var svg = canvas.toSVG({encoding: 'ISO-8859-1'});\n * @example <caption>Modify SVG output with reviver function</caption>\n * var svg = canvas.toSVG(null, function(svg) {\n * return svg.replace('stroke-dasharray: ; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 10; ', '');\n * });\n */\n toSVG(options: TSVGExportOptions = {}, reviver?: TSVGReviver) {\n options.reviver = reviver;\n const markup: string[] = [];\n\n this._setSVGPreamble(markup, options);\n this._setSVGHeader(markup, options);\n if (this.clipPath) {\n markup.push(\n `<g clip-path=\"url(#${escapeXml(this.clipPath.clipPathId ?? '')})\" >\\n`,\n );\n }\n this._setSVGBgOverlayColor(markup, 'background');\n this._setSVGBgOverlayImage(markup, 'backgroundImage', reviver);\n this._setSVGObjects(markup, reviver);\n if (this.clipPath) {\n markup.push('</g>\\n');\n }\n this._setSVGBgOverlayColor(markup, 'overlay');\n this._setSVGBgOverlayImage(markup, 'overlayImage', reviver);\n\n markup.push('</svg>');\n\n return markup.join('');\n }\n\n /**\n * @private\n */\n _setSVGPreamble(markup: string[], options: TSVGExportOptions): void {\n if (options.suppressPreamble) {\n return;\n }\n markup.push(\n '<?xml version=\"1.0\" encoding=\"',\n options.encoding || 'UTF-8',\n '\" standalone=\"no\" ?>\\n',\n '<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\" ',\n '\"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\\n',\n );\n }\n\n /**\n * @private\n */\n _setSVGHeader(markup: string[], options: TSVGExportOptions): void {\n const width = options.width || `${this.width}`,\n height = options.height || `${this.height}`,\n NUM_FRACTION_DIGITS = config.NUM_FRACTION_DIGITS,\n optViewBox = options.viewBox;\n let viewBox: string;\n if (optViewBox) {\n viewBox = `viewBox=\"${optViewBox.x} ${optViewBox.y} ${optViewBox.width} ${optViewBox.height}\" `;\n } else if (this.svgViewportTransformation) {\n const vpt = this.viewportTransform;\n viewBox = `viewBox=\"${toFixed(\n -vpt[4] / vpt[0],\n NUM_FRACTION_DIGITS,\n )} ${toFixed(-vpt[5] / vpt[3], NUM_FRACTION_DIGITS)} ${toFixed(\n this.width / vpt[0],\n NUM_FRACTION_DIGITS,\n )} ${toFixed(this.height / vpt[3], NUM_FRACTION_DIGITS)}\" `;\n } else {\n viewBox = `viewBox=\"0 0 ${this.width} ${this.height}\" `;\n }\n\n markup.push(\n '<svg ',\n 'xmlns=\"http://www.w3.org/2000/svg\" ',\n 'xmlns:xlink=\"http://www.w3.org/1999/xlink\" ',\n 'version=\"1.1\" ',\n 'width=\"',\n width,\n '\" ',\n 'height=\"',\n height,\n '\" ',\n viewBox,\n 'xml:space=\"preserve\">\\n',\n '<desc>Created with Fabric.js ',\n VERSION,\n '</desc>\\n',\n '<defs>\\n',\n this.createSVGFontFacesMarkup(),\n this.createSVGRefElementsMarkup(),\n this.createSVGClipPathMarkup(options),\n '</defs>\\n',\n );\n }\n\n createSVGClipPathMarkup(options: TSVGExportOptions): string {\n const clipPath = this.clipPath;\n if (clipPath) {\n clipPath.clipPathId = `CLIPPATH_${uid()}`;\n return `<clipPath id=\"${clipPath.clipPathId}\" >\\n${clipPath.toClipPathSVG(\n options.reviver,\n )}</clipPath>\\n`;\n }\n return '';\n }\n\n /**\n * Creates markup containing SVG referenced elements like patterns, gradients etc.\n * @return {String}\n */\n createSVGRefElementsMarkup(): string {\n return (['background', 'overlay'] as const)\n .map((prop) => {\n const fill = this[`${prop}Color`];\n if (isFiller(fill)) {\n const shouldTransform = this[`${prop}Vpt`],\n vpt = this.viewportTransform,\n object = {\n // otherwise circular dependency\n isType: () => false,\n width: this.width / (shouldTransform ? vpt[0] : 1),\n height: this.height / (shouldTransform ? vpt[3] : 1),\n };\n return fill.toSVG(object as FabricObject, {\n additionalTransform: shouldTransform ? matrixToSVG(vpt) : '',\n });\n }\n })\n .join('');\n }\n\n /**\n * Creates markup containing SVG font faces,\n * font URLs for font faces must be collected by developers\n * and are not extracted from the DOM by fabricjs\n * @param {Array} objects Array of fabric objects\n * @return {String}\n */\n createSVGFontFacesMarkup(): string {\n const objects: FabricObject[] = [],\n fontList: Record<string, boolean> = {},\n fontPaths = config.fontPaths;\n\n this._objects.forEach(function add(object) {\n objects.push(object);\n if (isCollection(object)) {\n object._objects.forEach(add);\n }\n });\n\n objects.forEach((obj) => {\n if (!isTextObject(obj)) {\n return;\n }\n const { styles, fontFamily } = obj;\n if (fontList[fontFamily] || !fontPaths[fontFamily]) {\n return;\n }\n fontList[fontFamily] = true;\n if (!styles) {\n return;\n }\n Object.values(styles).forEach((styleRow) => {\n Object.values(styleRow).forEach(({ fontFamily = '' }) => {\n if (!fontList[fontFamily] && fontPaths[fontFamily]) {\n fontList[fontFamily] = true;\n }\n });\n });\n });\n\n const fontListMarkup = Object.keys(fontList)\n .map(\n (fontFamily) =>\n `\\t\\t@font-face {\\n\\t\\t\\tfont-family: '${fontFamily}';\\n\\t\\t\\tsrc: url('${fontPaths[fontFamily]}');\\n\\t\\t}\\n`,\n )\n .join('');\n\n if (fontListMarkup) {\n return `\\t<style type=\"text/css\"><![CDATA[\\n${fontListMarkup}]]></style>\\n`;\n }\n return '';\n }\n\n /**\n * @private\n */\n _setSVGObjects(markup: string[], reviver?: TSVGReviver) {\n this.forEachObject((fabricObject) => {\n if (fabricObject.excludeFromExport) {\n return;\n }\n this._setSVGObject(markup, fabricObject, reviver);\n });\n }\n\n /**\n * This is its own function because the Canvas ( non static ) requires extra code here\n * @private\n */\n _setSVGObject(\n markup: string[],\n instance: FabricObject,\n reviver?: TSVGReviver,\n ) {\n markup.push(instance.toSVG(reviver));\n }\n\n /**\n * @private\n */\n _setSVGBgOverlayImage(\n markup: string[],\n property: 'overlayImage' | 'backgroundImage',\n reviver?: TSVGReviver,\n ) {\n const bgOrOverlay = this[property];\n if (bgOrOverlay && !bgOrOverlay.excludeFromExport && bgOrOverlay.toSVG) {\n markup.push(bgOrOverlay.toSVG(reviver));\n }\n }\n\n /**\n * @TODO this seems to handle patterns but fail at gradients.\n * @private\n */\n _setSVGBgOverlayColor(markup: string[], property: 'background' | 'overlay') {\n const filler = this[`${property}Color`];\n if (!filler) {\n return;\n }\n if (isFiller(filler)) {\n const repeat = (filler as Pattern).repeat || '',\n finalWidth = this.width,\n finalHeight = this.height,\n shouldInvert = this[`${property}Vpt`],\n additionalTransform = shouldInvert\n ? matrixToSVG(invertTransform(this.viewportTransform))\n : '';\n markup.push(\n `<rect transform=\"${additionalTransform} translate(${finalWidth / 2},${\n finalHeight / 2\n })\" x=\"${filler.offsetX - finalWidth / 2}\" y=\"${\n filler.offsetY - finalHeight / 2\n }\" width=\"${\n (repeat === 'repeat-y' || repeat === 'no-repeat') && isPattern(filler)\n ? (filler.source as HTMLImageElement).width\n : finalWidth\n }\" height=\"${\n (repeat === 'repeat-x' || repeat === 'no-repeat') && isPattern(filler)\n ? (filler.source as HTMLImageElement).height\n : finalHeight\n }\" fill=\"url(#SVGID_${filler.id})\"></rect>\\n`,\n );\n } else {\n markup.push(\n '<rect x=\"0\" y=\"0\" width=\"100%\" height=\"100%\" ',\n 'fill=\"',\n filler,\n '\"',\n '></rect>\\n',\n );\n }\n }\n /* _TO_SVG_END_ */\n\n /**\n * Populates canvas with data from the specified JSON.\n * JSON format must conform to the one of {@link fabric.Canvas#toJSON}\n *\n * **IMPORTANT**: It is recommended to abort loading tasks before calling this method to prevent race conditions and unnecessary networking\n *\n * @param {String|Object} json JSON string or object\n * @param {Function} [reviver] Method for further parsing of JSON elements, called after each fabric object created.\n * @param {Object} [options] options\n * @param {AbortSignal} [options.signal] see https://developer.mozilla.org/en-US/docs/Web/API/AbortController/signal\n * @return {Promise<Canvas | StaticCanvas>} instance\n * @see {@link http://fabric5.fabricjs.com/fabric-intro-part-3#deserialization}\n * @see {@link http://jsfiddle.net/fabricjs/fmgXt/|jsFiddle demo}\n * @example <caption>loadFromJSON</caption>\n * canvas.loadFromJSON(json).then((canvas) => canvas.requestRenderAll());\n * @example <caption>loadFromJSON with reviver</caption>\n * canvas.loadFromJSON(json, function(o, object) {\n * // `o` = json object\n * // `object` = fabric.Object instance\n * // ... do some stuff ...\n * }).then((canvas) => {\n * ... canvas is restored, add your code.\n * });\n *\n */\n loadFromJSON(\n json: string | Record<string, any>,\n reviver?: EnlivenObjectOptions['reviver'],\n { signal }: Abortable = {},\n ): Promise<this> {\n if (!json) {\n return Promise.reject(new FabricError('`json` is undefined'));\n }\n\n // parse json if it wasn't already\n const { objects = [], ...serialized } =\n typeof json === 'string' ? JSON.parse(json) : json;\n const { backgroundImage, background, overlayImage, overlay, clipPath } =\n serialized;\n const renderOnAddRemove = this.renderOnAddRemove;\n this.renderOnAddRemove = false;\n\n return Promise.all([\n enlivenObjects<FabricObject>(objects, {\n reviver,\n signal,\n }),\n enlivenObjectEnlivables(\n {\n backgroundImage,\n backgroundColor: background,\n overlayImage,\n overlayColor: overlay,\n clipPath,\n },\n { signal },\n ),\n ]).then(([enlived, enlivedMap]) => {\n this.clear();\n this.add(...enlived);\n this.set(serialized);\n this.set(enlivedMap);\n this.renderOnAddRemove = renderOnAddRemove;\n return this;\n });\n }\n\n /**\n * Clones canvas instance\n * @param {string[]} [properties] Array of properties to include in the cloned canvas and children\n */\n clone(properties: string[]) {\n const data = this.toObject(properties);\n const canvas = this.cloneWithoutData();\n return canvas.loadFromJSON(data);\n }\n\n /**\n * Clones canvas instance without cloning existing data.\n * This essentially copies canvas dimensions since loadFromJSON does not affect canvas size.\n */\n cloneWithoutData() {\n const el = createCanvasElementFor(this);\n return new (this.constructor as Constructor<this>)(el);\n }\n\n /**\n * Exports canvas element to a dataurl image. Note that when multiplier is used, cropping is scaled appropriately\n * @param {Object} [options] Options object\n * @param {String} [options.format=png] The format of the output image. Either \"jpeg\" or \"png\"\n * @param {Number} [options.quality=1] Quality level (0..1). Only used for jpeg.\n * @param {Number} [options.multiplier=1] Multiplier to scale by, to have consistent\n * @param {Number} [options.left] Cropping left offset. Introduced in v1.2.14\n * @param {Number} [options.top] Cropping top offset. Introduced in v1.2.14\n * @param {Number} [options.width] Cropping width. Introduced in v1.2.14\n * @param {Number} [options.height] Cropping height. Introduced in v1.2.14\n * @param {Boolean} [options.enableRetinaScaling] Enable retina scaling for clone image. Introduce in 2.0.0\n * @param {(object: fabric.Object) => boolean} [options.filter] Function to filter objects.\n * @return {String} Returns a data: URL containing a representation of the object in the format specified by options.format\n * @see {@link https://jsfiddle.net/xsjua1rd/ demo}\n * @example <caption>Generate jpeg dataURL with lower quality</caption>\n * var dataURL = canvas.toDataURL({\n * format: 'jpeg',\n * quality: 0.8\n * });\n * @example <caption>Generate cropped png dataURL (clipping of canvas)</caption>\n * var dataURL = canvas.toDataURL({\n * format: 'png',\n * left: 100,\n * top: 100,\n * width: 200,\n * height: 200\n * });\n * @example <caption>Generate double scaled png dataURL</caption>\n * var dataURL = canvas.toDataURL({\n * format: 'png',\n * multiplier: 2\n * });\n * @example <caption>Generate dataURL with objects that overlap a specified object</caption>\n * var myObject;\n * var dataURL = canvas.toDataURL({\n * filter: (object) => object.isContainedWithinObject(myObject) || object.intersectsWithObject(myObject)\n * });\n */\n toDataURL(options = {} as TDataUrlOptions): string {\n const {\n format = 'png',\n quality = 1,\n multiplier = 1,\n enableRetinaScaling = false,\n } = options;\n const finalMultiplier =\n multiplier * (enableRetinaScaling ? this.getRetinaScaling() : 1);\n\n return toDataURL(\n this.toCanvasElement(finalMultiplier, options),\n format,\n quality,\n );\n }\n toBlob(options = {} as TDataUrlOptions): Promise<Blob | null> {\n const {\n format = 'png',\n quality = 1,\n multiplier = 1,\n enableRetinaScaling = false,\n } = options;\n const finalMultiplier =\n multiplier * (enableRetinaScaling ? this.getRetinaScaling() : 1);\n\n return toBlob(\n this.toCanvasElement(finalMultiplier, options),\n format,\n quality,\n );\n }\n\n /**\n * Create a new HTMLCanvas element painted with the current canvas content.\n * No need to resize the actual one or repaint it.\n * Will transfer object ownership to a new canvas, paint it, and set everything back.\n * This is an intermediary step used to get to a dataUrl but also it is useful to\n * create quick image copies of a canvas without passing for the dataUrl string\n * @param {Number} [multiplier] a zoom factor.\n * @param {Object} [options] Cropping informations\n * @param {Number} [options.left] Cropping left offset.\n * @param {Number} [options.top] Cropping top offset.\n * @param {Number} [options.width] Cropping width.\n * @param {Number} [options.height] Cropping height.\n * @param {(object: fabric.Object) => boolean} [options.filter] Function to filter objects.\n */\n toCanvasElement(\n multiplier = 1,\n { width, height, left, top, filter } = {} as TToCanvasElementOptions,\n ): HTMLCanvasElement {\n const scaledWidth = (width || this.width) * multiplier,\n scaledHeight = (height || this.height) * multiplier,\n zoom = this.getZoom(),\n originalWidth = this.width,\n originalHeight = this.height,\n originalSkipControlsDrawing = this.skipControlsDrawing,\n newZoom = zoom * multiplier,\n vp = this.viewportTransform,\n translateX = (vp[4] - (left || 0)) * multiplier,\n translateY = (vp[5] - (top || 0)) * multiplier,\n newVp = [newZoom, 0, 0, newZoom, translateX, translateY] as TMat2D,\n originalRetina = this.enableRetinaScaling,\n canvasEl = createCanvasElementFor({\n width: scaledWidth,\n height: scaledHeight,\n }),\n objectsToRender = filter\n ? this._objects.filter((obj) => filter(obj))\n : this._objects;\n this.enableRetinaScaling = false;\n this.viewportTransform = newVp;\n this.width = scaledWidth;\n this.height = scaledHeight;\n this.skipControlsDrawing = true;\n this.calcViewportBoundaries();\n this.renderCanvas(canvasEl.getContext('2d')!, objectsToRender);\n this.viewportTransform = vp;\n this.width = originalWidth;\n this.height = originalHeight;\n this.calcViewportBoundaries();\n this.enableRetinaScaling = originalRetina;\n this.skipControlsDrawing = originalSkipControlsDrawing;\n return canvasEl;\n }\n\n /**\n * Waits until rendering has settled to destroy the canvas\n * @returns {Promise<boolean>} a promise resolving to `true` once the canvas has been destroyed or to `false` if the canvas has was already destroyed\n * @throws if aborted by a consequent call\n */\n dispose() {\n !this.disposed &&\n this.elements.cleanupDOM({ width: this.width, height: this.height });\n runningAnimations.cancelByCanvas(this);\n this.disposed = true;\n return new Promise<boolean>((resolve, reject) => {\n const task = () => {\n this.destroy();\n resolve(true);\n };\n task.kill = reject;\n if (this.__cleanupTask) {\n this.__cleanupTask.kill('aborted');\n }\n\n if (this.destroyed) {\n resolve(false);\n } else if (this.nextRenderHandle) {\n this.__cleanupTask = task;\n } else {\n task();\n }\n });\n }\n\n /**\n * Clears the canvas element, disposes objects and frees resources.\n *\n * Invoked as part of the **async** operation of {@link dispose}.\n *\n * **CAUTION**:\n *\n * This method is **UNSAFE**.\n * You may encounter a race condition using it if there's a requested render.\n * Call this method only if you are sure rendering has settled.\n * Consider using {@link dispose} as it is **SAFE**\n *\n * @private\n */\n destroy() {\n this.destroyed = true;\n this.cancelRequestedRender();\n this.forEachObject((object) => object.dispose());\n this._objects = [];\n if (this.backgroundImage) {\n this.backgroundImage.dispose();\n }\n this.backgroundImage = undefined;\n if (this.overlayImage) {\n this.overlayImage.dispose();\n }\n this.overlayImage = undefined;\n this.elements.dispose();\n }\n\n /**\n * Returns a string representation of an instance\n * @return {String} string representation of an instance\n */\n toString() {\n return `#<Canvas (${this.complexity()}): { objects: ${\n this._objects.length\n } }>`;\n }\n}\n"],"names":["StaticCanvas","createCollectionMixin","CommonMethods","lowerCanvasEl","_this$elements$lower","elements","lower","el","contextContainer","_this$elements$lower2","ctx","getDefaults","ownDefaults","constructor","options","arguments","length","undefined","Object","assign","set","initElements","_setDimensionsImpl","width","height","skipControlsDrawing","viewportTransform","calcViewportBoundaries","StaticCanvasDOMManager","add","size","renderOnAddRemove","requestRenderAll","insertAt","index","_len","objects","Array","_key","remove","removed","_onObjectAdded","obj","canvas","log","_set","setCoords","fire","target","_onObjectRemoved","_onStackOrderChanged","getRetinaScaling","enableRetinaScaling","getDevicePixelRatio","calcOffset","_offset","getWidth","getHeight","dimensions","cssOnly","backstoreOnly","setDimensions","hasLostContext","setCSSDimensions","getZoom","setViewportTransform","vpt","zoomToPoint","point","value","before","newPoint","transformPoint","invertTransform","after","x","y","setZoom","Point","absolutePan","relativePan","getElement","clearContext","clearRect","getContext","clear","getObjects","backgroundImage","overlayImage","backgroundColor","overlayColor","renderAll","cancelRequestedRender","destroyed","renderCanvas","_objects","renderAndReset","nextRenderHandle","disposed","requestAnimFrame","iVpt","a","b","min","max","vptCoords","tl","tr","bl","br","cancelAnimFrame","drawControls","_ctx","v","path","clipPath","imageSmoothingEnabled","patternQuality","_renderBackground","save","transform","_renderObjects","restore","controlsAboveOverlay","shouldCache","_transformDone","renderCache","forClipping","drawClipPathOnCanvas","_renderOverlay","__cleanupTask","globalCompositeOperation","scale","zoomX","zoomY","drawImage","_cacheCanvas","cacheTranslationX","cacheTranslationY","i","len","render","_renderBackgroundOrOverlay","property","fill","object","needsVpt","isAFiller","isFiller","beginPath","moveTo","lineTo","closePath","fillStyle","toLive","offsetX","offsetY","m","gradientTransform","patternTransform","skipOffscreen","getCenterPoint","centerObjectH","_centerObject","centerObjectV","centerObject","viewportCenterObject","getVpCenter","viewportCenterObjectH","viewportCenterObjectV","center","setXY","CENTER","toDatalessJSON","propertiesToInclude","toDatalessObject","toObject","_toObjectMethod","toJSON","methodName","clipPathData","excludeFromExport","_toObject","version","VERSION","pick","filter","map","instance","__serializeBgOverlay","originalValue","includeDefaultValues","data","bgImage","bgColor","background","overlay","toSVG","reviver","markup","_setSVGPreamble","_setSVGHeader","_this$clipPath$clipPa","push","escapeXml","clipPathId","_setSVGBgOverlayColor","_setSVGBgOverlayImage","_setSVGObjects","join","suppressPreamble","encoding","NUM_FRACTION_DIGITS","config","optViewBox","viewBox","svgViewportTransformation","toFixed","createSVGFontFacesMarkup","createSVGRefElementsMarkup","createSVGClipPathMarkup","uid","toClipPathSVG","prop","shouldTransform","isType","additionalTransform","matrixToSVG","fontList","fontPaths","forEach","isCollection","isTextObject","styles","fontFamily","values","styleRow","_ref","fontListMarkup","keys","forEachObject","fabricObject","_setSVGObject","bgOrOverlay","filler","repeat","finalWidth","finalHeight","shouldInvert","isPattern","source","id","loadFromJSON","json","signal","Promise","reject","FabricError","serialized","JSON","parse","all","enlivenObjects","enlivenObjectEnlivables","then","_ref2","enlived","enlivedMap","clone","properties","cloneWithoutData","createCanvasElementFor","toDataURL","format","quality","multiplier","finalMultiplier","toCanvasElement","toBlob","left","top","scaledWidth","scaledHeight","zoom","originalWidth","originalHeight","originalSkipControlsDrawing","newZoom","vp","translateX","translateY","newVp","originalRetina","canvasEl","objectsToRender","dispose","cleanupDOM","runningAnimations","cancelByCanvas","resolve","task","destroy","kill","toString","complexity","_defineProperty","staticCanvasDefaults"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StaticCanvasOptions.d.ts","sourceRoot":"","sources":["../../../src/canvas/StaticCanvasOptions.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAE7D,UAAU,qBAAqB;IAC7B;;;;;OAKG;IACH,aAAa,EAAE,OAAO,CAAC;IAEvB;;;OAGG;IACH,eAAe,EAAE,OAAO,GAAG,MAAM,CAAC;IAElC;;;;;;OAMG;IACH,eAAe,CAAC,EAAE,YAAY,CAAC;IAE/B;;;;;OAKG;IACH,UAAU,EAAE,OAAO,CAAC;IAEpB;;;;OAIG;IACH,YAAY,EAAE,OAAO,GAAG,MAAM,CAAC;IAE/B;;;;;;OAMG;IACH,YAAY,CAAC,EAAE,YAAY,CAAC;CAC7B;AAED,UAAU,sBAAsB;IAC9B;;;;;;;;OAQG;IACH,iBAAiB,EAAE,OAAO,CAAC;IAE3B;;;;;;;;OAQG;IACH,aAAa,EAAE,OAAO,CAAC;IAEvB;;;OAGG;IACH,mBAAmB,EAAE,OAAO,CAAC;IAE7B;;;OAGG;IACH,qBAAqB,EAAE,OAAO,CAAC;IAE/B;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,YAAY,CAAC;CACzB;AAED,MAAM,WAAW,mBAAmB;IAClC;;;;OAIG;IACH,oBAAoB,EAAE,OAAO,CAAC;IAE9B;;;;OAIG;IACH,yBAAyB,EAAE,OAAO,CAAC;CACpC;AAED,MAAM,WAAW,mBACf,SAAQ,qBAAqB,
|
|
1
|
+
{"version":3,"file":"StaticCanvasOptions.d.ts","sourceRoot":"","sources":["../../../src/canvas/StaticCanvasOptions.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAE7D,UAAU,qBAAqB;IAC7B;;;;;OAKG;IACH,aAAa,EAAE,OAAO,CAAC;IAEvB;;;OAGG;IACH,eAAe,EAAE,OAAO,GAAG,MAAM,CAAC;IAElC;;;;;;OAMG;IACH,eAAe,CAAC,EAAE,YAAY,CAAC;IAE/B;;;;;OAKG;IACH,UAAU,EAAE,OAAO,CAAC;IAEpB;;;;OAIG;IACH,YAAY,EAAE,OAAO,GAAG,MAAM,CAAC;IAE/B;;;;;;OAMG;IACH,YAAY,CAAC,EAAE,YAAY,CAAC;CAC7B;AAED,UAAU,sBAAsB;IAC9B;;;;;;;;OAQG;IACH,iBAAiB,EAAE,OAAO,CAAC;IAE3B;;;;;;;;OAQG;IACH,aAAa,EAAE,OAAO,CAAC;IAEvB;;;OAGG;IACH,mBAAmB,EAAE,OAAO,CAAC;IAE7B;;;OAGG;IACH,qBAAqB,EAAE,OAAO,CAAC;IAE/B;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,YAAY,CAAC;CACzB;AAED,MAAM,WAAW,mBAAmB;IAClC;;;;OAIG;IACH,oBAAoB,EAAE,OAAO,CAAC;IAE9B;;;;OAIG;IACH,yBAAyB,EAAE,OAAO,CAAC;CACpC;AAED,MAAM,WAAW,mBACf,SAAQ,qBAAqB,EAAE,sBAAsB,EAAE,mBAAmB;IAC1E;;;;OAIG;IACH,KAAK,EAAE,MAAM,CAAC;IAEd;;;;OAIG;IACH,MAAM,EAAE,MAAM,CAAC;IAEf;;;;;OAKG;IACH,oBAAoB,EAAE,OAAO,CAAC;IAE9B;;;;;;;;OAQG;IACH,mBAAmB,EAAE,OAAO,CAAC;IAE7B;;;;;;;OAOG;IACH,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED,eAAO,MAAM,oBAAoB,EAAE,QAAQ,CAAC,mBAAmB,CAyB9D,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StaticCanvasOptions.min.mjs","sources":["../../../src/canvas/StaticCanvasOptions.ts"],"sourcesContent":["import { iMatrix } from '../constants';\nimport type { FabricObject } from '../shapes/Object/FabricObject';\nimport type { TFiller, TMat2D, TOptions } from '../typedefs';\n\ninterface CanvasDrawableOptions {\n /**\n * if set to false background image is not affected by viewport transform\n * @since 1.6.3\n * @type Boolean\n * @todo we should really find a different way to do this\n */\n backgroundVpt: boolean;\n\n /**\n * Background color of canvas instance.\n * @type {(String|TFiller)}\n */\n backgroundColor: TFiller | string;\n\n /**\n * Background image of canvas instance.\n * since 2.4.0 image caching is active, please when putting an image as background, add to the\n * canvas property a reference to the canvas it is on. Otherwise the image cannot detect the zoom\n * vale. As an alternative you can disable image objectCaching\n * @type FabricObject\n */\n backgroundImage?: FabricObject;\n\n /**\n * if set to false overlay image is not affected by viewport transform\n * @since 1.6.3\n * @type Boolean\n * @todo we should really find a different way to do this\n */\n overlayVpt: boolean;\n\n /**\n * Overlay color of canvas instance.\n * @since 1.3.9\n * @type {(String|TFiller)}\n */\n overlayColor: TFiller | string;\n\n /**\n * Overlay image of canvas instance.\n * since 2.4.0 image caching is active, please when putting an image as overlay, add to the\n * canvas property a reference to the canvas it is on. Otherwise the image cannot detect the zoom\n * vale. As an alternative you can disable image objectCaching\n * @type FabricObject\n */\n overlayImage?: FabricObject;\n}\n\ninterface CanvasRenderingOptions {\n /**\n * Indicates whether {@link StaticCanvas#add}, {@link StaticCanvas#insertAt} and {@link StaticCanvas#remove},\n * {@link StaticCanvas#moveTo}, {@link StaticCanvas#clear} and many more, should also re-render canvas.\n * Disabling this option will not give a performance boost when adding/removing a lot of objects to/from canvas at once\n * since the renders are queued and executed one per frame.\n * Disabling is suggested anyway and managing the renders of the app manually is not a big effort ( canvas.requestRenderAll() )\n * Left default to true to do not break documentation and old app, fiddles.\n * @type Boolean\n */\n renderOnAddRemove: boolean;\n\n /**\n * Based on vptCoords and object.aCoords, skip rendering of objects that\n * are not included in current viewport.\n * May greatly help in applications with crowded canvas and use of zoom/pan\n * If One of the corner of the bounding box of the object is on the canvas\n * the objects get rendered.\n * @type Boolean\n * @default true\n */\n skipOffscreen: boolean;\n\n /**\n * When true, canvas is scaled by devicePixelRatio for better rendering on retina screens\n * @type Boolean\n */\n enableRetinaScaling: boolean;\n\n /**\n * Indicates whether this canvas will use image smoothing, this is on by default in browsers\n * @type Boolean\n */\n imageSmoothingEnabled: boolean;\n\n /**\n * a fabricObject that, without stroke define a clipping area with their shape. filled in black\n * the clipPath object gets used when the canvas has rendered, and the context is placed in the\n * top left corner of the canvas.\n * clipPath will clip away controls, if you do not want this to happen use controlsAboveOverlay = true\n * @type FabricObject\n */\n clipPath?: FabricObject;\n}\n\nexport interface CanvasExportOptions {\n /**\n * Indicates whether toObject/toDatalessObject should include default values\n * if set to false, takes precedence over the object value.\n * @type Boolean\n */\n includeDefaultValues: boolean;\n\n /**\n * When true, getSvgTransform() will apply the StaticCanvas.viewportTransform to the SVG transformation. When true,\n * a zoomed canvas will then produce zoomed SVG output.\n * @type Boolean\n */\n svgViewportTransformation: boolean;\n}\n\nexport interface StaticCanvasOptions\n extends CanvasDrawableOptions
|
|
1
|
+
{"version":3,"file":"StaticCanvasOptions.min.mjs","sources":["../../../src/canvas/StaticCanvasOptions.ts"],"sourcesContent":["import { iMatrix } from '../constants';\nimport type { FabricObject } from '../shapes/Object/FabricObject';\nimport type { TFiller, TMat2D, TOptions } from '../typedefs';\n\ninterface CanvasDrawableOptions {\n /**\n * if set to false background image is not affected by viewport transform\n * @since 1.6.3\n * @type Boolean\n * @todo we should really find a different way to do this\n */\n backgroundVpt: boolean;\n\n /**\n * Background color of canvas instance.\n * @type {(String|TFiller)}\n */\n backgroundColor: TFiller | string;\n\n /**\n * Background image of canvas instance.\n * since 2.4.0 image caching is active, please when putting an image as background, add to the\n * canvas property a reference to the canvas it is on. Otherwise the image cannot detect the zoom\n * vale. As an alternative you can disable image objectCaching\n * @type FabricObject\n */\n backgroundImage?: FabricObject;\n\n /**\n * if set to false overlay image is not affected by viewport transform\n * @since 1.6.3\n * @type Boolean\n * @todo we should really find a different way to do this\n */\n overlayVpt: boolean;\n\n /**\n * Overlay color of canvas instance.\n * @since 1.3.9\n * @type {(String|TFiller)}\n */\n overlayColor: TFiller | string;\n\n /**\n * Overlay image of canvas instance.\n * since 2.4.0 image caching is active, please when putting an image as overlay, add to the\n * canvas property a reference to the canvas it is on. Otherwise the image cannot detect the zoom\n * vale. As an alternative you can disable image objectCaching\n * @type FabricObject\n */\n overlayImage?: FabricObject;\n}\n\ninterface CanvasRenderingOptions {\n /**\n * Indicates whether {@link StaticCanvas#add}, {@link StaticCanvas#insertAt} and {@link StaticCanvas#remove},\n * {@link StaticCanvas#moveTo}, {@link StaticCanvas#clear} and many more, should also re-render canvas.\n * Disabling this option will not give a performance boost when adding/removing a lot of objects to/from canvas at once\n * since the renders are queued and executed one per frame.\n * Disabling is suggested anyway and managing the renders of the app manually is not a big effort ( canvas.requestRenderAll() )\n * Left default to true to do not break documentation and old app, fiddles.\n * @type Boolean\n */\n renderOnAddRemove: boolean;\n\n /**\n * Based on vptCoords and object.aCoords, skip rendering of objects that\n * are not included in current viewport.\n * May greatly help in applications with crowded canvas and use of zoom/pan\n * If One of the corner of the bounding box of the object is on the canvas\n * the objects get rendered.\n * @type Boolean\n * @default true\n */\n skipOffscreen: boolean;\n\n /**\n * When true, canvas is scaled by devicePixelRatio for better rendering on retina screens\n * @type Boolean\n */\n enableRetinaScaling: boolean;\n\n /**\n * Indicates whether this canvas will use image smoothing, this is on by default in browsers\n * @type Boolean\n */\n imageSmoothingEnabled: boolean;\n\n /**\n * a fabricObject that, without stroke define a clipping area with their shape. filled in black\n * the clipPath object gets used when the canvas has rendered, and the context is placed in the\n * top left corner of the canvas.\n * clipPath will clip away controls, if you do not want this to happen use controlsAboveOverlay = true\n * @type FabricObject\n */\n clipPath?: FabricObject;\n}\n\nexport interface CanvasExportOptions {\n /**\n * Indicates whether toObject/toDatalessObject should include default values\n * if set to false, takes precedence over the object value.\n * @type Boolean\n */\n includeDefaultValues: boolean;\n\n /**\n * When true, getSvgTransform() will apply the StaticCanvas.viewportTransform to the SVG transformation. When true,\n * a zoomed canvas will then produce zoomed SVG output.\n * @type Boolean\n */\n svgViewportTransformation: boolean;\n}\n\nexport interface StaticCanvasOptions\n extends CanvasDrawableOptions, CanvasRenderingOptions, CanvasExportOptions {\n /**\n * Width in virtual/logical pixels of the canvas.\n * The canvas can be larger than width if retina scaling is active\n * @type number\n */\n width: number;\n\n /**\n * Height in virtual/logical pixels of the canvas.\n * The canvas can be taller than width if retina scaling is active\n * @type height\n */\n height: number;\n\n /**\n * Indicates whether object controls (borders/controls) are rendered above overlay image\n * @type Boolean\n *\n * @todo move to Canvas\n */\n controlsAboveOverlay: boolean;\n\n /**\n * Indicates whether the browser can be scrolled when using a touchscreen and dragging on the canvas\n * It gives PRIORITY to DOM scrolling, it doesn't make it always possible.\n * If is true, when using a touch event on the canvas, the canvas will scroll if scroll is possible.\n * If we are in drawing mode or if we are selecting an object the canvas preventDefault and so it won't scroll\n * @type Boolean\n *\n * @todo move to Canvas\n */\n allowTouchScrolling: boolean;\n\n /**\n * The transformation (a Canvas 2D API transform matrix) which focuses the viewport\n * @type Array\n * @example <caption>Default transform</caption>\n * canvas.viewportTransform = [1, 0, 0, 1, 0, 0];\n * @example <caption>Scale by 70% and translate toward bottom-right by 50, without skewing</caption>\n * canvas.viewportTransform = [0.7, 0, 0, 0.7, 50, 50];\n */\n viewportTransform: TMat2D;\n}\n\nexport const staticCanvasDefaults: TOptions<StaticCanvasOptions> = {\n backgroundVpt: true,\n backgroundColor: '',\n overlayVpt: true,\n overlayColor: '',\n\n includeDefaultValues: true,\n svgViewportTransformation: true,\n\n renderOnAddRemove: true,\n skipOffscreen: true,\n enableRetinaScaling: true,\n imageSmoothingEnabled: true,\n\n /**\n * @todo move to Canvas\n */\n controlsAboveOverlay: false,\n /**\n * @todo move to Canvas\n */\n allowTouchScrolling: false,\n\n viewportTransform: [...iMatrix],\n patternQuality: 'best',\n};\n"],"names":["staticCanvasDefaults","backgroundVpt","backgroundColor","overlayVpt","overlayColor","includeDefaultValues","svgViewportTransformation","renderOnAddRemove","skipOffscreen","enableRetinaScaling","imageSmoothingEnabled","controlsAboveOverlay","allowTouchScrolling","viewportTransform","iMatrix","patternQuality"],"mappings":"+CAgKO,MAAMA,EAAsD,CACjEC,eAAe,EACfC,gBAAiB,GACjBC,YAAY,EACZC,aAAc,GAEdC,sBAAsB,EACtBC,2BAA2B,EAE3BC,mBAAmB,EACnBC,eAAe,EACfC,qBAAqB,EACrBC,uBAAuB,EAKvBC,sBAAsB,EAItBC,qBAAqB,EAErBC,kBAAmB,IAAIC,GACvBC,eAAgB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StaticCanvasOptions.mjs","sources":["../../../src/canvas/StaticCanvasOptions.ts"],"sourcesContent":["import { iMatrix } from '../constants';\nimport type { FabricObject } from '../shapes/Object/FabricObject';\nimport type { TFiller, TMat2D, TOptions } from '../typedefs';\n\ninterface CanvasDrawableOptions {\n /**\n * if set to false background image is not affected by viewport transform\n * @since 1.6.3\n * @type Boolean\n * @todo we should really find a different way to do this\n */\n backgroundVpt: boolean;\n\n /**\n * Background color of canvas instance.\n * @type {(String|TFiller)}\n */\n backgroundColor: TFiller | string;\n\n /**\n * Background image of canvas instance.\n * since 2.4.0 image caching is active, please when putting an image as background, add to the\n * canvas property a reference to the canvas it is on. Otherwise the image cannot detect the zoom\n * vale. As an alternative you can disable image objectCaching\n * @type FabricObject\n */\n backgroundImage?: FabricObject;\n\n /**\n * if set to false overlay image is not affected by viewport transform\n * @since 1.6.3\n * @type Boolean\n * @todo we should really find a different way to do this\n */\n overlayVpt: boolean;\n\n /**\n * Overlay color of canvas instance.\n * @since 1.3.9\n * @type {(String|TFiller)}\n */\n overlayColor: TFiller | string;\n\n /**\n * Overlay image of canvas instance.\n * since 2.4.0 image caching is active, please when putting an image as overlay, add to the\n * canvas property a reference to the canvas it is on. Otherwise the image cannot detect the zoom\n * vale. As an alternative you can disable image objectCaching\n * @type FabricObject\n */\n overlayImage?: FabricObject;\n}\n\ninterface CanvasRenderingOptions {\n /**\n * Indicates whether {@link StaticCanvas#add}, {@link StaticCanvas#insertAt} and {@link StaticCanvas#remove},\n * {@link StaticCanvas#moveTo}, {@link StaticCanvas#clear} and many more, should also re-render canvas.\n * Disabling this option will not give a performance boost when adding/removing a lot of objects to/from canvas at once\n * since the renders are queued and executed one per frame.\n * Disabling is suggested anyway and managing the renders of the app manually is not a big effort ( canvas.requestRenderAll() )\n * Left default to true to do not break documentation and old app, fiddles.\n * @type Boolean\n */\n renderOnAddRemove: boolean;\n\n /**\n * Based on vptCoords and object.aCoords, skip rendering of objects that\n * are not included in current viewport.\n * May greatly help in applications with crowded canvas and use of zoom/pan\n * If One of the corner of the bounding box of the object is on the canvas\n * the objects get rendered.\n * @type Boolean\n * @default true\n */\n skipOffscreen: boolean;\n\n /**\n * When true, canvas is scaled by devicePixelRatio for better rendering on retina screens\n * @type Boolean\n */\n enableRetinaScaling: boolean;\n\n /**\n * Indicates whether this canvas will use image smoothing, this is on by default in browsers\n * @type Boolean\n */\n imageSmoothingEnabled: boolean;\n\n /**\n * a fabricObject that, without stroke define a clipping area with their shape. filled in black\n * the clipPath object gets used when the canvas has rendered, and the context is placed in the\n * top left corner of the canvas.\n * clipPath will clip away controls, if you do not want this to happen use controlsAboveOverlay = true\n * @type FabricObject\n */\n clipPath?: FabricObject;\n}\n\nexport interface CanvasExportOptions {\n /**\n * Indicates whether toObject/toDatalessObject should include default values\n * if set to false, takes precedence over the object value.\n * @type Boolean\n */\n includeDefaultValues: boolean;\n\n /**\n * When true, getSvgTransform() will apply the StaticCanvas.viewportTransform to the SVG transformation. When true,\n * a zoomed canvas will then produce zoomed SVG output.\n * @type Boolean\n */\n svgViewportTransformation: boolean;\n}\n\nexport interface StaticCanvasOptions\n extends CanvasDrawableOptions
|
|
1
|
+
{"version":3,"file":"StaticCanvasOptions.mjs","sources":["../../../src/canvas/StaticCanvasOptions.ts"],"sourcesContent":["import { iMatrix } from '../constants';\nimport type { FabricObject } from '../shapes/Object/FabricObject';\nimport type { TFiller, TMat2D, TOptions } from '../typedefs';\n\ninterface CanvasDrawableOptions {\n /**\n * if set to false background image is not affected by viewport transform\n * @since 1.6.3\n * @type Boolean\n * @todo we should really find a different way to do this\n */\n backgroundVpt: boolean;\n\n /**\n * Background color of canvas instance.\n * @type {(String|TFiller)}\n */\n backgroundColor: TFiller | string;\n\n /**\n * Background image of canvas instance.\n * since 2.4.0 image caching is active, please when putting an image as background, add to the\n * canvas property a reference to the canvas it is on. Otherwise the image cannot detect the zoom\n * vale. As an alternative you can disable image objectCaching\n * @type FabricObject\n */\n backgroundImage?: FabricObject;\n\n /**\n * if set to false overlay image is not affected by viewport transform\n * @since 1.6.3\n * @type Boolean\n * @todo we should really find a different way to do this\n */\n overlayVpt: boolean;\n\n /**\n * Overlay color of canvas instance.\n * @since 1.3.9\n * @type {(String|TFiller)}\n */\n overlayColor: TFiller | string;\n\n /**\n * Overlay image of canvas instance.\n * since 2.4.0 image caching is active, please when putting an image as overlay, add to the\n * canvas property a reference to the canvas it is on. Otherwise the image cannot detect the zoom\n * vale. As an alternative you can disable image objectCaching\n * @type FabricObject\n */\n overlayImage?: FabricObject;\n}\n\ninterface CanvasRenderingOptions {\n /**\n * Indicates whether {@link StaticCanvas#add}, {@link StaticCanvas#insertAt} and {@link StaticCanvas#remove},\n * {@link StaticCanvas#moveTo}, {@link StaticCanvas#clear} and many more, should also re-render canvas.\n * Disabling this option will not give a performance boost when adding/removing a lot of objects to/from canvas at once\n * since the renders are queued and executed one per frame.\n * Disabling is suggested anyway and managing the renders of the app manually is not a big effort ( canvas.requestRenderAll() )\n * Left default to true to do not break documentation and old app, fiddles.\n * @type Boolean\n */\n renderOnAddRemove: boolean;\n\n /**\n * Based on vptCoords and object.aCoords, skip rendering of objects that\n * are not included in current viewport.\n * May greatly help in applications with crowded canvas and use of zoom/pan\n * If One of the corner of the bounding box of the object is on the canvas\n * the objects get rendered.\n * @type Boolean\n * @default true\n */\n skipOffscreen: boolean;\n\n /**\n * When true, canvas is scaled by devicePixelRatio for better rendering on retina screens\n * @type Boolean\n */\n enableRetinaScaling: boolean;\n\n /**\n * Indicates whether this canvas will use image smoothing, this is on by default in browsers\n * @type Boolean\n */\n imageSmoothingEnabled: boolean;\n\n /**\n * a fabricObject that, without stroke define a clipping area with their shape. filled in black\n * the clipPath object gets used when the canvas has rendered, and the context is placed in the\n * top left corner of the canvas.\n * clipPath will clip away controls, if you do not want this to happen use controlsAboveOverlay = true\n * @type FabricObject\n */\n clipPath?: FabricObject;\n}\n\nexport interface CanvasExportOptions {\n /**\n * Indicates whether toObject/toDatalessObject should include default values\n * if set to false, takes precedence over the object value.\n * @type Boolean\n */\n includeDefaultValues: boolean;\n\n /**\n * When true, getSvgTransform() will apply the StaticCanvas.viewportTransform to the SVG transformation. When true,\n * a zoomed canvas will then produce zoomed SVG output.\n * @type Boolean\n */\n svgViewportTransformation: boolean;\n}\n\nexport interface StaticCanvasOptions\n extends CanvasDrawableOptions, CanvasRenderingOptions, CanvasExportOptions {\n /**\n * Width in virtual/logical pixels of the canvas.\n * The canvas can be larger than width if retina scaling is active\n * @type number\n */\n width: number;\n\n /**\n * Height in virtual/logical pixels of the canvas.\n * The canvas can be taller than width if retina scaling is active\n * @type height\n */\n height: number;\n\n /**\n * Indicates whether object controls (borders/controls) are rendered above overlay image\n * @type Boolean\n *\n * @todo move to Canvas\n */\n controlsAboveOverlay: boolean;\n\n /**\n * Indicates whether the browser can be scrolled when using a touchscreen and dragging on the canvas\n * It gives PRIORITY to DOM scrolling, it doesn't make it always possible.\n * If is true, when using a touch event on the canvas, the canvas will scroll if scroll is possible.\n * If we are in drawing mode or if we are selecting an object the canvas preventDefault and so it won't scroll\n * @type Boolean\n *\n * @todo move to Canvas\n */\n allowTouchScrolling: boolean;\n\n /**\n * The transformation (a Canvas 2D API transform matrix) which focuses the viewport\n * @type Array\n * @example <caption>Default transform</caption>\n * canvas.viewportTransform = [1, 0, 0, 1, 0, 0];\n * @example <caption>Scale by 70% and translate toward bottom-right by 50, without skewing</caption>\n * canvas.viewportTransform = [0.7, 0, 0, 0.7, 50, 50];\n */\n viewportTransform: TMat2D;\n}\n\nexport const staticCanvasDefaults: TOptions<StaticCanvasOptions> = {\n backgroundVpt: true,\n backgroundColor: '',\n overlayVpt: true,\n overlayColor: '',\n\n includeDefaultValues: true,\n svgViewportTransformation: true,\n\n renderOnAddRemove: true,\n skipOffscreen: true,\n enableRetinaScaling: true,\n imageSmoothingEnabled: true,\n\n /**\n * @todo move to Canvas\n */\n controlsAboveOverlay: false,\n /**\n * @todo move to Canvas\n */\n allowTouchScrolling: false,\n\n viewportTransform: [...iMatrix],\n patternQuality: 'best',\n};\n"],"names":["staticCanvasDefaults","backgroundVpt","backgroundColor","overlayVpt","overlayColor","includeDefaultValues","svgViewportTransformation","renderOnAddRemove","skipOffscreen","enableRetinaScaling","imageSmoothingEnabled","controlsAboveOverlay","allowTouchScrolling","viewportTransform","iMatrix","patternQuality"],"mappings":";;AAgKO,MAAMA,oBAAmD,GAAG;AACjEC,EAAAA,aAAa,EAAE,IAAI;AACnBC,EAAAA,eAAe,EAAE,EAAE;AACnBC,EAAAA,UAAU,EAAE,IAAI;AAChBC,EAAAA,YAAY,EAAE,EAAE;AAEhBC,EAAAA,oBAAoB,EAAE,IAAI;AAC1BC,EAAAA,yBAAyB,EAAE,IAAI;AAE/BC,EAAAA,iBAAiB,EAAE,IAAI;AACvBC,EAAAA,aAAa,EAAE,IAAI;AACnBC,EAAAA,mBAAmB,EAAE,IAAI;AACzBC,EAAAA,qBAAqB,EAAE,IAAI;AAE3B;AACF;AACA;AACEC,EAAAA,oBAAoB,EAAE,KAAK;AAC3B;AACF;AACA;AACEC,EAAAA,mBAAmB,EAAE,KAAK;AAE1BC,EAAAA,iBAAiB,EAAE,CAAC,GAAGC,OAAO,CAAC;AAC/BC,EAAAA,cAAc,EAAE;AAClB;;;;"}
|
package/dist/src/constants.d.ts
CHANGED
|
@@ -15,6 +15,7 @@ export declare const TOP = "top";
|
|
|
15
15
|
export declare const BOTTOM = "bottom";
|
|
16
16
|
export declare const RIGHT = "right";
|
|
17
17
|
export declare const NONE = "none";
|
|
18
|
+
export declare const HEIGHT = "height";
|
|
18
19
|
export declare const reNewline: RegExp;
|
|
19
20
|
export declare const MOVING = "moving";
|
|
20
21
|
export declare const SCALING = "scaling";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAIzC,eAAO,MAAM,OAAO,QAAU,CAAC;AAE/B,wBAAgB,IAAI,SAAK;AAEzB,eAAO,MAAM,MAAM,QAAc,CAAC;AAClC,eAAO,MAAM,SAAS,QAAc,CAAC;AACrC,eAAO,MAAM,SAAS,QAAc,CAAC;AACrC,eAAO,MAAM,OAAO,QAAgB,CAAC;AAErC,eAAO,MAAM,OAAO,EAAwC,MAAM,CAAC;AACnE,eAAO,MAAM,qBAAqB,KAAK,CAAC;AACxC,eAAO,MAAM,cAAc,IAAI,CAAC;AAGhC,eAAO,MAAM,KAAK,QAAmB,CAAC;AAEtC,eAAO,MAAM,MAAM,WAAW,CAAC;AAC/B,eAAO,MAAM,IAAI,SAAS,CAAC;AAC3B,eAAO,MAAM,GAAG,QAAQ,CAAC;AACzB,eAAO,MAAM,MAAM,WAAW,CAAC;AAC/B,eAAO,MAAM,KAAK,UAAU,CAAC;AAC7B,eAAO,MAAM,IAAI,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAIzC,eAAO,MAAM,OAAO,QAAU,CAAC;AAE/B,wBAAgB,IAAI,SAAK;AAEzB,eAAO,MAAM,MAAM,QAAc,CAAC;AAClC,eAAO,MAAM,SAAS,QAAc,CAAC;AACrC,eAAO,MAAM,SAAS,QAAc,CAAC;AACrC,eAAO,MAAM,OAAO,QAAgB,CAAC;AAErC,eAAO,MAAM,OAAO,EAAwC,MAAM,CAAC;AACnE,eAAO,MAAM,qBAAqB,KAAK,CAAC;AACxC,eAAO,MAAM,cAAc,IAAI,CAAC;AAGhC,eAAO,MAAM,KAAK,QAAmB,CAAC;AAEtC,eAAO,MAAM,MAAM,WAAW,CAAC;AAC/B,eAAO,MAAM,IAAI,SAAS,CAAC;AAC3B,eAAO,MAAM,GAAG,QAAQ,CAAC;AACzB,eAAO,MAAM,MAAM,WAAW,CAAC;AAC/B,eAAO,MAAM,KAAK,UAAU,CAAC;AAC7B,eAAO,MAAM,IAAI,SAAS,CAAC;AAC3B,eAAO,MAAM,MAAM,WAAW,CAAC;AAE/B,eAAO,MAAM,SAAS,QAAU,CAAC;AAEjC,eAAO,MAAM,MAAM,WAAW,CAAC;AAC/B,eAAO,MAAM,OAAO,YAAY,CAAC;AACjC,eAAO,MAAM,QAAQ,aAAa,CAAC;AACnC,eAAO,MAAM,MAAM,WAAW,CAAC;AAC/B,eAAO,MAAM,OAAO,YAAY,CAAC;AACjC,eAAO,MAAM,QAAQ,aAAa,CAAC;AACnC,eAAO,MAAM,WAAW,eAAe,CAAC;AACxC,eAAO,MAAM,WAAW,eAAe,CAAC;AACxC,eAAO,MAAM,OAAO,YAAY,CAAC;AACjC,eAAO,MAAM,KAAK,UAAU,CAAC;AAC7B,eAAO,MAAM,OAAO,WAAW,CAAC;AAChC,eAAO,MAAM,OAAO,WAAW,CAAC;AAChC,eAAO,MAAM,MAAM,UAAU,CAAC;AAC9B,eAAO,MAAM,MAAM,UAAU,CAAC;AAC9B,eAAO,MAAM,IAAI,SAAS,CAAC;AAC3B,eAAO,MAAM,MAAM,WAAW,CAAC;AAC/B,eAAO,MAAM,QAAQ,aAAa,CAAC;AAEnC,eAAO,MAAM,GAAG,QAAQ,CAAC;AACzB,eAAO,MAAM,GAAG,QAAQ,CAAC;AAEzB,eAAO,MAAM,MAAM,WAAW,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.min.mjs","sources":["../../src/constants.ts"],"sourcesContent":["import type { TMat2D } from './typedefs';\n// use this syntax so babel plugin see this import here\nimport { version } from '../package.json';\n\nexport const VERSION = version;\n// eslint-disable-next-line @typescript-eslint/no-empty-function\nexport function noop() {}\n\nexport const halfPI = Math.PI / 2;\nexport const quarterPI = Math.PI / 4;\nexport const twoMathPi = Math.PI * 2;\nexport const PiBy180 = Math.PI / 180;\n\nexport const iMatrix = Object.freeze([1, 0, 0, 1, 0, 0]) as TMat2D;\nexport const DEFAULT_SVG_FONT_SIZE = 16;\nexport const ALIASING_LIMIT = 2;\n\n/* \"magic number\" for bezier approximations of arcs (http://itc.ktu.lt/itc354/Riskus354.pdf) */\nexport const kRect = 1 - 0.5522847498;\n\nexport const CENTER = 'center';\nexport const LEFT = 'left';\nexport const TOP = 'top';\nexport const BOTTOM = 'bottom';\nexport const RIGHT = 'right';\nexport const NONE = 'none';\n\nexport const reNewline = /\\r?\\n/;\n\nexport const MOVING = 'moving';\nexport const SCALING = 'scaling';\nexport const ROTATING = 'rotating';\nexport const ROTATE = 'rotate';\nexport const SKEWING = 'skewing';\nexport const RESIZING = 'resizing';\nexport const MODIFY_POLY = 'modifyPoly';\nexport const MODIFY_PATH = 'modifyPath';\nexport const CHANGED = 'changed';\nexport const SCALE = 'scale';\nexport const SCALE_X = 'scaleX';\nexport const SCALE_Y = 'scaleY';\nexport const SKEW_X = 'skewX';\nexport const SKEW_Y = 'skewY';\nexport const FILL = 'fill';\nexport const STROKE = 'stroke';\nexport const MODIFIED = 'modified';\n\nexport const LTR = 'ltr';\nexport const RTL = 'rtl';\n\nexport const NORMAL = 'normal';\n"],"names":["VERSION","version","noop","halfPI","Math","PI","quarterPI","twoMathPi","PiBy180","iMatrix","Object","freeze","DEFAULT_SVG_FONT_SIZE","ALIASING_LIMIT","kRect","CENTER","LEFT","TOP","BOTTOM","RIGHT","NONE","reNewline","MOVING","SCALING","ROTATING","ROTATE","SKEWING","RESIZING","MODIFY_POLY","MODIFY_PATH","CHANGED","SCALE","SCALE_X","SCALE_Y","SKEW_X","SKEW_Y","FILL","STROKE","MODIFIED","LTR","RTL","NORMAL"],"mappings":"kDAIO,MAAMA,EAAUC,EAEhB,SAASC,IAAQ,OAEXC,EAASC,KAAKC,GAAK,EACnBC,EAAYF,KAAKC,GAAK,EACtBE,EAAsB,EAAVH,KAAKC,GACjBG,EAAUJ,KAAKC,GAAK,IAEpBI,EAAUC,OAAOC,OAAO,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IACxCC,EAAwB,GACxBC,EAAiB,EAGjBC,EAAQ,YAERC,EAAS,SACTC,EAAO,OACPC,EAAM,MACNC,EAAS,SACTC,EAAQ,QACRC,EAAO,
|
|
1
|
+
{"version":3,"file":"constants.min.mjs","sources":["../../src/constants.ts"],"sourcesContent":["import type { TMat2D } from './typedefs';\n// use this syntax so babel plugin see this import here\nimport { version } from '../package.json';\n\nexport const VERSION = version;\n// eslint-disable-next-line @typescript-eslint/no-empty-function\nexport function noop() {}\n\nexport const halfPI = Math.PI / 2;\nexport const quarterPI = Math.PI / 4;\nexport const twoMathPi = Math.PI * 2;\nexport const PiBy180 = Math.PI / 180;\n\nexport const iMatrix = Object.freeze([1, 0, 0, 1, 0, 0]) as TMat2D;\nexport const DEFAULT_SVG_FONT_SIZE = 16;\nexport const ALIASING_LIMIT = 2;\n\n/* \"magic number\" for bezier approximations of arcs (http://itc.ktu.lt/itc354/Riskus354.pdf) */\nexport const kRect = 1 - 0.5522847498;\n\nexport const CENTER = 'center';\nexport const LEFT = 'left';\nexport const TOP = 'top';\nexport const BOTTOM = 'bottom';\nexport const RIGHT = 'right';\nexport const NONE = 'none';\nexport const HEIGHT = 'height';\n\nexport const reNewline = /\\r?\\n/;\n\nexport const MOVING = 'moving';\nexport const SCALING = 'scaling';\nexport const ROTATING = 'rotating';\nexport const ROTATE = 'rotate';\nexport const SKEWING = 'skewing';\nexport const RESIZING = 'resizing';\nexport const MODIFY_POLY = 'modifyPoly';\nexport const MODIFY_PATH = 'modifyPath';\nexport const CHANGED = 'changed';\nexport const SCALE = 'scale';\nexport const SCALE_X = 'scaleX';\nexport const SCALE_Y = 'scaleY';\nexport const SKEW_X = 'skewX';\nexport const SKEW_Y = 'skewY';\nexport const FILL = 'fill';\nexport const STROKE = 'stroke';\nexport const MODIFIED = 'modified';\n\nexport const LTR = 'ltr';\nexport const RTL = 'rtl';\n\nexport const NORMAL = 'normal';\n"],"names":["VERSION","version","noop","halfPI","Math","PI","quarterPI","twoMathPi","PiBy180","iMatrix","Object","freeze","DEFAULT_SVG_FONT_SIZE","ALIASING_LIMIT","kRect","CENTER","LEFT","TOP","BOTTOM","RIGHT","NONE","reNewline","MOVING","SCALING","ROTATING","ROTATE","SKEWING","RESIZING","MODIFY_POLY","MODIFY_PATH","CHANGED","SCALE","SCALE_X","SCALE_Y","SKEW_X","SKEW_Y","FILL","STROKE","MODIFIED","LTR","RTL","NORMAL"],"mappings":"kDAIO,MAAMA,EAAUC,EAEhB,SAASC,IAAQ,OAEXC,EAASC,KAAKC,GAAK,EACnBC,EAAYF,KAAKC,GAAK,EACtBE,EAAsB,EAAVH,KAAKC,GACjBG,EAAUJ,KAAKC,GAAK,IAEpBI,EAAUC,OAAOC,OAAO,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,IACxCC,EAAwB,GACxBC,EAAiB,EAGjBC,EAAQ,YAERC,EAAS,SACTC,EAAO,OACPC,EAAM,MACNC,EAAS,SACTC,EAAQ,QACRC,EAAO,OAGPC,EAAY,QAEZC,EAAS,SACTC,EAAU,UACVC,EAAW,WACXC,EAAS,SACTC,EAAU,UACVC,EAAW,WACXC,EAAc,aACdC,EAAc,aACdC,EAAU,UACVC,EAAQ,QACRC,EAAU,SACVC,EAAU,SACVC,EAAS,QACTC,EAAS,QACTC,EAAO,OACPC,EAAS,SACTC,EAAW,WAEXC,EAAM,MACNC,EAAM,MAENC,EAAS"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.mjs","sources":["../../src/constants.ts"],"sourcesContent":["import type { TMat2D } from './typedefs';\n// use this syntax so babel plugin see this import here\nimport { version } from '../package.json';\n\nexport const VERSION = version;\n// eslint-disable-next-line @typescript-eslint/no-empty-function\nexport function noop() {}\n\nexport const halfPI = Math.PI / 2;\nexport const quarterPI = Math.PI / 4;\nexport const twoMathPi = Math.PI * 2;\nexport const PiBy180 = Math.PI / 180;\n\nexport const iMatrix = Object.freeze([1, 0, 0, 1, 0, 0]) as TMat2D;\nexport const DEFAULT_SVG_FONT_SIZE = 16;\nexport const ALIASING_LIMIT = 2;\n\n/* \"magic number\" for bezier approximations of arcs (http://itc.ktu.lt/itc354/Riskus354.pdf) */\nexport const kRect = 1 - 0.5522847498;\n\nexport const CENTER = 'center';\nexport const LEFT = 'left';\nexport const TOP = 'top';\nexport const BOTTOM = 'bottom';\nexport const RIGHT = 'right';\nexport const NONE = 'none';\n\nexport const reNewline = /\\r?\\n/;\n\nexport const MOVING = 'moving';\nexport const SCALING = 'scaling';\nexport const ROTATING = 'rotating';\nexport const ROTATE = 'rotate';\nexport const SKEWING = 'skewing';\nexport const RESIZING = 'resizing';\nexport const MODIFY_POLY = 'modifyPoly';\nexport const MODIFY_PATH = 'modifyPath';\nexport const CHANGED = 'changed';\nexport const SCALE = 'scale';\nexport const SCALE_X = 'scaleX';\nexport const SCALE_Y = 'scaleY';\nexport const SKEW_X = 'skewX';\nexport const SKEW_Y = 'skewY';\nexport const FILL = 'fill';\nexport const STROKE = 'stroke';\nexport const MODIFIED = 'modified';\n\nexport const LTR = 'ltr';\nexport const RTL = 'rtl';\n\nexport const NORMAL = 'normal';\n"],"names":["VERSION","version","noop","halfPI","Math","PI","quarterPI","twoMathPi","PiBy180","iMatrix","Object","freeze","DEFAULT_SVG_FONT_SIZE","ALIASING_LIMIT","kRect","CENTER","LEFT","TOP","BOTTOM","RIGHT","NONE","reNewline","MOVING","SCALING","ROTATING","ROTATE","SKEWING","RESIZING","MODIFY_POLY","MODIFY_PATH","CHANGED","SCALE","SCALE_X","SCALE_Y","SKEW_X","SKEW_Y","FILL","STROKE","MODIFIED","LTR","RTL","NORMAL"],"mappings":";;AACA;AAGO,MAAMA,OAAO,GAAGC;AACvB;AACO,SAASC,IAAIA,GAAG,CAAC;MAEXC,MAAM,GAAGC,IAAI,CAACC,EAAE,GAAG;MACnBC,SAAS,GAAGF,IAAI,CAACC,EAAE,GAAG;MACtBE,SAAS,GAAGH,IAAI,CAACC,EAAE,GAAG;MACtBG,OAAO,GAAGJ,IAAI,CAACC,EAAE,GAAG;AAE1B,MAAMI,OAAO,GAAGC,MAAM,CAACC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AAChD,MAAMC,qBAAqB,GAAG;AAC9B,MAAMC,cAAc,GAAG;;AAE9B;AACO,MAAMC,KAAK,GAAG,CAAC,GAAG;AAElB,MAAMC,MAAM,GAAG;AACf,MAAMC,IAAI,GAAG;AACb,MAAMC,GAAG,GAAG;AACZ,MAAMC,MAAM,GAAG;AACf,MAAMC,KAAK,GAAG;AACd,MAAMC,IAAI,GAAG;
|
|
1
|
+
{"version":3,"file":"constants.mjs","sources":["../../src/constants.ts"],"sourcesContent":["import type { TMat2D } from './typedefs';\n// use this syntax so babel plugin see this import here\nimport { version } from '../package.json';\n\nexport const VERSION = version;\n// eslint-disable-next-line @typescript-eslint/no-empty-function\nexport function noop() {}\n\nexport const halfPI = Math.PI / 2;\nexport const quarterPI = Math.PI / 4;\nexport const twoMathPi = Math.PI * 2;\nexport const PiBy180 = Math.PI / 180;\n\nexport const iMatrix = Object.freeze([1, 0, 0, 1, 0, 0]) as TMat2D;\nexport const DEFAULT_SVG_FONT_SIZE = 16;\nexport const ALIASING_LIMIT = 2;\n\n/* \"magic number\" for bezier approximations of arcs (http://itc.ktu.lt/itc354/Riskus354.pdf) */\nexport const kRect = 1 - 0.5522847498;\n\nexport const CENTER = 'center';\nexport const LEFT = 'left';\nexport const TOP = 'top';\nexport const BOTTOM = 'bottom';\nexport const RIGHT = 'right';\nexport const NONE = 'none';\nexport const HEIGHT = 'height';\n\nexport const reNewline = /\\r?\\n/;\n\nexport const MOVING = 'moving';\nexport const SCALING = 'scaling';\nexport const ROTATING = 'rotating';\nexport const ROTATE = 'rotate';\nexport const SKEWING = 'skewing';\nexport const RESIZING = 'resizing';\nexport const MODIFY_POLY = 'modifyPoly';\nexport const MODIFY_PATH = 'modifyPath';\nexport const CHANGED = 'changed';\nexport const SCALE = 'scale';\nexport const SCALE_X = 'scaleX';\nexport const SCALE_Y = 'scaleY';\nexport const SKEW_X = 'skewX';\nexport const SKEW_Y = 'skewY';\nexport const FILL = 'fill';\nexport const STROKE = 'stroke';\nexport const MODIFIED = 'modified';\n\nexport const LTR = 'ltr';\nexport const RTL = 'rtl';\n\nexport const NORMAL = 'normal';\n"],"names":["VERSION","version","noop","halfPI","Math","PI","quarterPI","twoMathPi","PiBy180","iMatrix","Object","freeze","DEFAULT_SVG_FONT_SIZE","ALIASING_LIMIT","kRect","CENTER","LEFT","TOP","BOTTOM","RIGHT","NONE","reNewline","MOVING","SCALING","ROTATING","ROTATE","SKEWING","RESIZING","MODIFY_POLY","MODIFY_PATH","CHANGED","SCALE","SCALE_X","SCALE_Y","SKEW_X","SKEW_Y","FILL","STROKE","MODIFIED","LTR","RTL","NORMAL"],"mappings":";;AACA;AAGO,MAAMA,OAAO,GAAGC;AACvB;AACO,SAASC,IAAIA,GAAG,CAAC;MAEXC,MAAM,GAAGC,IAAI,CAACC,EAAE,GAAG;MACnBC,SAAS,GAAGF,IAAI,CAACC,EAAE,GAAG;MACtBE,SAAS,GAAGH,IAAI,CAACC,EAAE,GAAG;MACtBG,OAAO,GAAGJ,IAAI,CAACC,EAAE,GAAG;AAE1B,MAAMI,OAAO,GAAGC,MAAM,CAACC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AAChD,MAAMC,qBAAqB,GAAG;AAC9B,MAAMC,cAAc,GAAG;;AAE9B;AACO,MAAMC,KAAK,GAAG,CAAC,GAAG;AAElB,MAAMC,MAAM,GAAG;AACf,MAAMC,IAAI,GAAG;AACb,MAAMC,GAAG,GAAG;AACZ,MAAMC,MAAM,GAAG;AACf,MAAMC,KAAK,GAAG;AACd,MAAMC,IAAI,GAAG;AAGb,MAAMC,SAAS,GAAG;AAElB,MAAMC,MAAM,GAAG;AACf,MAAMC,OAAO,GAAG;AAChB,MAAMC,QAAQ,GAAG;AACjB,MAAMC,MAAM,GAAG;AACf,MAAMC,OAAO,GAAG;AAChB,MAAMC,QAAQ,GAAG;AACjB,MAAMC,WAAW,GAAG;AACpB,MAAMC,WAAW,GAAG;AACpB,MAAMC,OAAO,GAAG;AAChB,MAAMC,KAAK,GAAG;AACd,MAAMC,OAAO,GAAG;AAChB,MAAMC,OAAO,GAAG;AAChB,MAAMC,MAAM,GAAG;AACf,MAAMC,MAAM,GAAG;AACf,MAAMC,IAAI,GAAG;AACb,MAAMC,MAAM,GAAG;AACf,MAAMC,QAAQ,GAAG;AAEjB,MAAMC,GAAG,GAAG;AACZ,MAAMC,GAAG,GAAG;AAEZ,MAAMC,MAAM,GAAG;;;;"}
|