@hatiolab/things-scene 9.0.0-beta.35 → 9.0.0-beta.36
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/babel.config.js +4 -3
- package/db.sqlite +0 -0
- package/dist/animation/animate.js +63 -0
- package/dist/animation/animate.js.map +1 -0
- package/dist/animation/animations/animation.js +122 -0
- package/dist/animation/animations/animation.js.map +1 -0
- package/dist/animation/animations/fade.js +28 -0
- package/dist/animation/animations/fade.js.map +1 -0
- package/dist/animation/animations/heartbeat.js +28 -0
- package/dist/animation/animations/heartbeat.js.map +1 -0
- package/dist/animation/animations/moving.js +24 -0
- package/dist/animation/animations/moving.js.map +1 -0
- package/dist/animation/animations/outline.js +47 -0
- package/dist/animation/animations/outline.js.map +1 -0
- package/dist/animation/animations/rotation.js +22 -0
- package/dist/animation/animations/rotation.js.map +1 -0
- package/dist/animation/animations/vibration.js +31 -0
- package/dist/animation/animations/vibration.js.map +1 -0
- package/dist/animation/compile.js +31 -0
- package/dist/animation/compile.js.map +1 -0
- package/dist/animation/delta.js +51 -0
- package/dist/animation/delta.js.map +1 -0
- package/dist/animation/index.js +14 -0
- package/dist/animation/index.js.map +1 -0
- package/dist/command/command-change.js +33 -0
- package/dist/command/command-change.js.map +1 -0
- package/dist/command/command-migrate.js +103 -0
- package/dist/command/command-migrate.js.map +1 -0
- package/dist/command/command.js +18 -0
- package/dist/command/command.js.map +1 -0
- package/dist/command/snapshot-commander.js +84 -0
- package/dist/command/snapshot-commander.js.map +1 -0
- package/dist/components/anchor/anchor.js +105 -0
- package/dist/components/anchor/anchor.js.map +1 -0
- package/dist/components/anchor/ellipse-anchors.js +53 -0
- package/dist/components/anchor/ellipse-anchors.js.map +1 -0
- package/dist/components/anchor/rect-anchors.js +53 -0
- package/dist/components/anchor/rect-anchors.js.map +1 -0
- package/dist/components/audio.js +154 -0
- package/dist/components/audio.js.map +1 -0
- package/dist/components/cloud.js +44 -0
- package/dist/components/cloud.js.map +1 -0
- package/dist/components/component.js +1086 -0
- package/dist/components/component.js.map +1 -0
- package/dist/components/container-abstract.js +387 -0
- package/dist/components/container-abstract.js.map +1 -0
- package/dist/components/container.js +331 -0
- package/dist/components/container.js.map +1 -0
- package/dist/components/data/data-mapping.js +82 -0
- package/dist/components/data/data-mapping.js.map +1 -0
- package/dist/components/data/data.js +166 -0
- package/dist/components/data/data.js.map +1 -0
- package/dist/components/data/evaluator.js +103 -0
- package/dist/components/data/evaluator.js.map +1 -0
- package/dist/components/donut.js +104 -0
- package/dist/components/donut.js.map +1 -0
- package/dist/components/drawer/draw-image-pendable.js +20 -0
- package/dist/components/drawer/draw-image-pendable.js.map +1 -0
- package/dist/components/drawer/effect.js +19 -0
- package/dist/components/drawer/effect.js.map +1 -0
- package/dist/components/drawer/fill.js +228 -0
- package/dist/components/drawer/fill.js.map +1 -0
- package/dist/components/drawer/format.js +115 -0
- package/dist/components/drawer/format.js.map +1 -0
- package/dist/components/drawer/line.js +191 -0
- package/dist/components/drawer/line.js.map +1 -0
- package/dist/components/drawer/stroke.js +62 -0
- package/dist/components/drawer/stroke.js.map +1 -0
- package/dist/components/drawer/text-wrapper.js +51 -0
- package/dist/components/drawer/text-wrapper.js.map +1 -0
- package/dist/components/drawer/text.js +269 -0
- package/dist/components/drawer/text.js.map +1 -0
- package/dist/components/ellipse.js +110 -0
- package/dist/components/ellipse.js.map +1 -0
- package/dist/components/file/ondropfile.js +19 -0
- package/dist/components/file/ondropfile.js.map +1 -0
- package/dist/components/fit/fit.js +137 -0
- package/dist/components/fit/fit.js.map +1 -0
- package/dist/components/geometry/transcoord.js +339 -0
- package/dist/components/geometry/transcoord.js.map +1 -0
- package/dist/components/geometry/union.js +35 -0
- package/dist/components/geometry/union.js.map +1 -0
- package/dist/components/gif-view.js +128 -0
- package/dist/components/gif-view.js.map +1 -0
- package/dist/components/global-ref.js +154 -0
- package/dist/components/global-ref.js.map +1 -0
- package/dist/components/group.js +171 -0
- package/dist/components/group.js.map +1 -0
- package/dist/components/html/elements.js +24 -0
- package/dist/components/html/elements.js.map +1 -0
- package/dist/components/html/fill.js +126 -0
- package/dist/components/html/fill.js.map +1 -0
- package/dist/components/html/reposition.js +119 -0
- package/dist/components/html/reposition.js.map +1 -0
- package/dist/components/html/shadow.js +24 -0
- package/dist/components/html/shadow.js.map +1 -0
- package/dist/components/html-overlay-container.js +27 -0
- package/dist/components/html-overlay-container.js.map +1 -0
- package/dist/components/html-overlay-element.js +22 -0
- package/dist/components/html-overlay-element.js.map +1 -0
- package/dist/components/image-view.js +193 -0
- package/dist/components/image-view.js.map +1 -0
- package/dist/components/index.js +231 -0
- package/dist/components/index.js.map +1 -0
- package/dist/components/info-window.js +416 -0
- package/dist/components/info-window.js.map +1 -0
- package/dist/components/line.js +374 -0
- package/dist/components/line.js.map +1 -0
- package/dist/components/local-ref.js +114 -0
- package/dist/components/local-ref.js.map +1 -0
- package/dist/components/mixins/connectable.js +128 -0
- package/dist/components/mixins/connectable.js.map +1 -0
- package/dist/components/mixins/data-source.js +34 -0
- package/dist/components/mixins/data-source.js.map +1 -0
- package/dist/components/mixins/html-element.js +107 -0
- package/dist/components/mixins/html-element.js.map +1 -0
- package/dist/components/mixins/move-handle.js +73 -0
- package/dist/components/mixins/move-handle.js.map +1 -0
- package/dist/components/mixins/rect-path.js +113 -0
- package/dist/components/mixins/rect-path.js.map +1 -0
- package/dist/components/mixins/value-holder.js +81 -0
- package/dist/components/mixins/value-holder.js.map +1 -0
- package/dist/components/mutater/bounds.js +68 -0
- package/dist/components/mutater/bounds.js.map +1 -0
- package/dist/components/mutater/path.js +73 -0
- package/dist/components/mutater/path.js.map +1 -0
- package/dist/components/ortholine.js +763 -0
- package/dist/components/ortholine.js.map +1 -0
- package/dist/components/outline/ellipse-outline.js +23 -0
- package/dist/components/outline/ellipse-outline.js.map +1 -0
- package/dist/components/outline/path-outline.js +48 -0
- package/dist/components/outline/path-outline.js.map +1 -0
- package/dist/components/path.js +49 -0
- package/dist/components/path.js.map +1 -0
- package/dist/components/polygon.js +91 -0
- package/dist/components/polygon.js.map +1 -0
- package/dist/components/polyline.js +114 -0
- package/dist/components/polyline.js.map +1 -0
- package/dist/components/popup.js +160 -0
- package/dist/components/popup.js.map +1 -0
- package/dist/components/rect.js +72 -0
- package/dist/components/rect.js.map +1 -0
- package/dist/components/retention/retention-manager.js +81 -0
- package/dist/components/retention/retention-manager.js.map +1 -0
- package/dist/components/root-container.js +519 -0
- package/dist/components/root-container.js.map +1 -0
- package/dist/components/ruler.js +103 -0
- package/dist/components/ruler.js.map +1 -0
- package/dist/components/shape.js +97 -0
- package/dist/components/shape.js.map +1 -0
- package/dist/components/star.js +103 -0
- package/dist/components/star.js.map +1 -0
- package/dist/components/text/substitutor.js +92 -0
- package/dist/components/text/substitutor.js.map +1 -0
- package/dist/components/text.js +21 -0
- package/dist/components/text.js.map +1 -0
- package/dist/components/triangle.js +92 -0
- package/dist/components/triangle.js.map +1 -0
- package/dist/const.js +71 -0
- package/dist/const.js.map +1 -0
- package/dist/core/collection.js +28 -0
- package/dist/core/collection.js.map +1 -0
- package/dist/core/debug.js +12 -0
- package/dist/core/debug.js.map +1 -0
- package/dist/core/deep-equals.js +112 -0
- package/dist/core/deep-equals.js.map +1 -0
- package/dist/core/dom-to-image.js +617 -0
- package/dist/core/dom-to-image.js.map +1 -0
- package/dist/core/event.js +205 -0
- package/dist/core/event.js.map +1 -0
- package/dist/core/index.js +21 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/list.js +87 -0
- package/dist/core/list.js.map +1 -0
- package/dist/core/logger.js +29 -0
- package/dist/core/logger.js.map +1 -0
- package/dist/core/memoize.js +40 -0
- package/dist/core/memoize.js.map +1 -0
- package/dist/core/mixin.js +26 -0
- package/dist/core/mixin.js.map +1 -0
- package/dist/core/obj-accessor.js +26 -0
- package/dist/core/obj-accessor.js.map +1 -0
- package/dist/core/reference-map.js +147 -0
- package/dist/core/reference-map.js.map +1 -0
- package/dist/core/round-rect.js +62 -0
- package/dist/core/round-rect.js.map +1 -0
- package/dist/core/safe-round.js +10 -0
- package/dist/core/safe-round.js.map +1 -0
- package/dist/core/script-loader.js +148 -0
- package/dist/core/script-loader.js.map +1 -0
- package/dist/core/snapshot-taker.js +59 -0
- package/dist/core/snapshot-taker.js.map +1 -0
- package/dist/core/stack.js +18 -0
- package/dist/core/stack.js.map +1 -0
- package/dist/core/timecapsule.js +88 -0
- package/dist/core/timecapsule.js.map +1 -0
- package/dist/core/utils.js +309 -0
- package/dist/core/utils.js.map +1 -0
- package/dist/decorator/anchors-decorator.js +53 -0
- package/dist/decorator/anchors-decorator.js.map +1 -0
- package/dist/decorator/bouncing-arrow-decorator.js +52 -0
- package/dist/decorator/bouncing-arrow-decorator.js.map +1 -0
- package/dist/decorator/data-spread-decorator.js +69 -0
- package/dist/decorator/data-spread-decorator.js.map +1 -0
- package/dist/decorator/decotag-decorator.js +33 -0
- package/dist/decorator/decotag-decorator.js.map +1 -0
- package/dist/decorator/index.js +31 -0
- package/dist/decorator/index.js.map +1 -0
- package/dist/decorator/link-decorator.js +66 -0
- package/dist/decorator/link-decorator.js.map +1 -0
- package/dist/effect/gradation.js +37 -0
- package/dist/effect/gradation.js.map +1 -0
- package/dist/effect/index.js +23 -0
- package/dist/effect/index.js.map +1 -0
- package/dist/effect/shadow.js +33 -0
- package/dist/effect/shadow.js.map +1 -0
- package/dist/effect/turn.js +25 -0
- package/dist/effect/turn.js.map +1 -0
- package/dist/event/event-engine.js +76 -0
- package/dist/event/event-engine.js.map +1 -0
- package/dist/event/event-pump.js +92 -0
- package/dist/event/event-pump.js.map +1 -0
- package/dist/event/event-tracker.js +97 -0
- package/dist/event/event-tracker.js.map +1 -0
- package/dist/event/index.js +21 -0
- package/dist/event/index.js.map +1 -0
- package/dist/event/ua-event-handler.js +453 -0
- package/dist/event/ua-event-handler.js.map +1 -0
- package/dist/event-map/animator-handler.js +225 -0
- package/dist/event-map/animator-handler.js.map +1 -0
- package/dist/event-map/animators/animated-icon.js +265 -0
- package/dist/event-map/animators/animated-icon.js.map +1 -0
- package/dist/event-map/animators/border-highlighting.js +476 -0
- package/dist/event-map/animators/border-highlighting.js.map +1 -0
- package/dist/event-map/animators/bouncing-arrow.js +226 -0
- package/dist/event-map/animators/bouncing-arrow.js.map +1 -0
- package/dist/event-map/event-map.js +36 -0
- package/dist/event-map/event-map.js.map +1 -0
- package/dist/event-map/index.js +20 -0
- package/dist/event-map/index.js.map +1 -0
- package/dist/event-map/move-handler.js +233 -0
- package/dist/event-map/move-handler.js.map +1 -0
- package/dist/event-map/paste-handler.js +176 -0
- package/dist/event-map/paste-handler.js.map +1 -0
- package/dist/event-map/shift-handler.js +55 -0
- package/dist/event-map/shift-handler.js.map +1 -0
- package/dist/event-map/text-editor-lite.js +276 -0
- package/dist/event-map/text-editor-lite.js.map +1 -0
- package/dist/event-map/zoom-handler.js +49 -0
- package/dist/event-map/zoom-handler.js.map +1 -0
- package/dist/index.js +20 -0
- package/dist/index.js.map +1 -0
- package/dist/layer/action/emphasize.js +42 -0
- package/dist/layer/action/emphasize.js.map +1 -0
- package/dist/layer/action/popup.js +461 -0
- package/dist/layer/action/popup.js.map +1 -0
- package/dist/layer/action/pressed.js +31 -0
- package/dist/layer/action/pressed.js.map +1 -0
- package/dist/layer/add-layer.js +180 -0
- package/dist/layer/add-layer.js.map +1 -0
- package/dist/layer/decotag-layer.js +121 -0
- package/dist/layer/decotag-layer.js.map +1 -0
- package/dist/layer/guide-layer.js +292 -0
- package/dist/layer/guide-layer.js.map +1 -0
- package/dist/layer/index.js +70 -0
- package/dist/layer/index.js.map +1 -0
- package/dist/layer/layer.js +230 -0
- package/dist/layer/layer.js.map +1 -0
- package/dist/layer/minimap-layer.js +84 -0
- package/dist/layer/minimap-layer.js.map +1 -0
- package/dist/layer/model-layer.js +465 -0
- package/dist/layer/model-layer.js.map +1 -0
- package/dist/layer/modeler/anchor-handler.js +193 -0
- package/dist/layer/modeler/anchor-handler.js.map +1 -0
- package/dist/layer/modeler/control-handler.js +95 -0
- package/dist/layer/modeler/control-handler.js.map +1 -0
- package/dist/layer/modeler/focus-outline.js +41 -0
- package/dist/layer/modeler/focus-outline.js.map +1 -0
- package/dist/layer/modeler/group-outline.js +30 -0
- package/dist/layer/modeler/group-outline.js.map +1 -0
- package/dist/layer/modeler/index.js +56 -0
- package/dist/layer/modeler/index.js.map +1 -0
- package/dist/layer/modeler/path-handler.js +300 -0
- package/dist/layer/modeler/path-handler.js.map +1 -0
- package/dist/layer/modeler/resizer.js +333 -0
- package/dist/layer/modeler/resizer.js.map +1 -0
- package/dist/layer/modeler/rotator.js +134 -0
- package/dist/layer/modeler/rotator.js.map +1 -0
- package/dist/layer/modeling-layer.js +491 -0
- package/dist/layer/modeling-layer.js.map +1 -0
- package/dist/layer/reaction-layer.js +111 -0
- package/dist/layer/reaction-layer.js.map +1 -0
- package/dist/layer/scroll-layer.js +191 -0
- package/dist/layer/scroll-layer.js.map +1 -0
- package/dist/layer/selection/selected-finder.js +96 -0
- package/dist/layer/selection/selected-finder.js.map +1 -0
- package/dist/layer/selection-layer.js +373 -0
- package/dist/layer/selection-layer.js.map +1 -0
- package/dist/layer/shift-layer.js +83 -0
- package/dist/layer/shift-layer.js.map +1 -0
- package/dist/layout/absolute.js +30 -0
- package/dist/layout/absolute.js.map +1 -0
- package/dist/layout/card.js +52 -0
- package/dist/layout/card.js.map +1 -0
- package/dist/layout/html-absolute.js +32 -0
- package/dist/layout/html-absolute.js.map +1 -0
- package/dist/layout/index.js +56 -0
- package/dist/layout/index.js.map +1 -0
- package/dist/layout/layout.js +36 -0
- package/dist/layout/layout.js.map +1 -0
- package/dist/layout/linear-horizontal.js +56 -0
- package/dist/layout/linear-horizontal.js.map +1 -0
- package/dist/layout/linear-vertical.js +56 -0
- package/dist/layout/linear-vertical.js.map +1 -0
- package/dist/layout/table.js +106 -0
- package/dist/layout/table.js.map +1 -0
- package/dist/license/license.js +170 -0
- package/dist/license/license.js.map +1 -0
- package/dist/model/compile.js +40 -0
- package/dist/model/compile.js.map +1 -0
- package/dist/model/duplicate.js +19 -0
- package/dist/model/duplicate.js.map +1 -0
- package/dist/model/index.js +34 -0
- package/dist/model/index.js.map +1 -0
- package/dist/model/selector.js +104 -0
- package/dist/model/selector.js.map +1 -0
- package/dist/style/compile.js +14 -0
- package/dist/style/compile.js.map +1 -0
- package/dist/style/index.js +14 -0
- package/dist/style/index.js.map +1 -0
- package/dist/things-scene/api/add-start.js +18 -0
- package/dist/things-scene/api/add-start.js.map +1 -0
- package/dist/things-scene/api/add.js +71 -0
- package/dist/things-scene/api/add.js.map +1 -0
- package/dist/things-scene/api/align.js +116 -0
- package/dist/things-scene/api/align.js.map +1 -0
- package/dist/things-scene/api/center-to.js +50 -0
- package/dist/things-scene/api/center-to.js.map +1 -0
- package/dist/things-scene/api/change.js +27 -0
- package/dist/things-scene/api/change.js.map +1 -0
- package/dist/things-scene/api/clipboard.js +45 -0
- package/dist/things-scene/api/clipboard.js.map +1 -0
- package/dist/things-scene/api/distribute.js +57 -0
- package/dist/things-scene/api/distribute.js.map +1 -0
- package/dist/things-scene/api/duplicate.js +47 -0
- package/dist/things-scene/api/duplicate.js.map +1 -0
- package/dist/things-scene/api/fullscreen.js +26 -0
- package/dist/things-scene/api/fullscreen.js.map +1 -0
- package/dist/things-scene/api/group.js +91 -0
- package/dist/things-scene/api/group.js.map +1 -0
- package/dist/things-scene/api/ids.js +28 -0
- package/dist/things-scene/api/ids.js.map +1 -0
- package/dist/things-scene/api/index.js +192 -0
- package/dist/things-scene/api/index.js.map +1 -0
- package/dist/things-scene/api/listener.js +69 -0
- package/dist/things-scene/api/listener.js.map +1 -0
- package/dist/things-scene/api/paste-start.js +27 -0
- package/dist/things-scene/api/paste-start.js.map +1 -0
- package/dist/things-scene/api/place.js +98 -0
- package/dist/things-scene/api/place.js.map +1 -0
- package/dist/things-scene/api/remove.js +57 -0
- package/dist/things-scene/api/remove.js.map +1 -0
- package/dist/things-scene/api/symmetry.js +47 -0
- package/dist/things-scene/api/symmetry.js.map +1 -0
- package/dist/things-scene/api/to-data-url.js +76 -0
- package/dist/things-scene/api/to-data-url.js.map +1 -0
- package/dist/things-scene/api/zorder.js +68 -0
- package/dist/things-scene/api/zorder.js.map +1 -0
- package/dist/things-scene/application-context.js +168 -0
- package/dist/things-scene/application-context.js.map +1 -0
- package/dist/things-scene/config.js +18 -0
- package/dist/things-scene/config.js.map +1 -0
- package/dist/things-scene/create.js +67 -0
- package/dist/things-scene/create.js.map +1 -0
- package/dist/things-scene/fps.js +26 -0
- package/dist/things-scene/fps.js.map +1 -0
- package/dist/things-scene/index.js +152 -0
- package/dist/things-scene/index.js.map +1 -0
- package/dist/things-scene/polyfill.js +111 -0
- package/dist/things-scene/polyfill.js.map +1 -0
- package/dist/things-scene/scene.js +442 -0
- package/dist/things-scene/scene.js.map +1 -0
- package/dist/things-scene/version.js +12 -0
- package/dist/things-scene/version.js.map +1 -0
- package/package.json +8 -6
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = buildEvaluator;
|
|
7
|
+
var _logger = require("../../core/logger.js");
|
|
8
|
+
var _utils = require("../../core/utils.js");
|
|
9
|
+
/*
|
|
10
|
+
* Copyright © HatioLab Inc. All rights reserved.
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
function tostring(value) {
|
|
14
|
+
var v = (0, _utils.objToVal)(value);
|
|
15
|
+
return v == undefined ? '' : String(v);
|
|
16
|
+
}
|
|
17
|
+
function tonumber(value) {
|
|
18
|
+
return Number((0, _utils.objToVal)(value));
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
/* 값을 그대로 반환하는 evaluator */
|
|
22
|
+
function value(value) {
|
|
23
|
+
return value;
|
|
24
|
+
}
|
|
25
|
+
function valueString(value) {
|
|
26
|
+
return tostring(value);
|
|
27
|
+
}
|
|
28
|
+
function valueNumber(value) {
|
|
29
|
+
return tonumber(value);
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
/* map에 매핑된 값을 반환하는 evaluator */
|
|
33
|
+
function map(value) {
|
|
34
|
+
if (!this.param) return;
|
|
35
|
+
value = tostring(value);
|
|
36
|
+
if (this.param.hasOwnProperty(value)) return this.param[value];
|
|
37
|
+
return this.param['default'];
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
/* 범위에 매핑된 값을 반환하는 evaluator */
|
|
41
|
+
function range(value) {
|
|
42
|
+
var {
|
|
43
|
+
param
|
|
44
|
+
} = this;
|
|
45
|
+
if (!param) return;
|
|
46
|
+
for (let range in param) {
|
|
47
|
+
let [from, to] = range.split('~');
|
|
48
|
+
let from_defined = !!from;
|
|
49
|
+
let to_defined = !!to;
|
|
50
|
+
|
|
51
|
+
// if(type === 'number') {
|
|
52
|
+
from = parseFloat(from);
|
|
53
|
+
to = parseFloat(to);
|
|
54
|
+
value = tonumber(value);
|
|
55
|
+
// } else {
|
|
56
|
+
// from = String(from)
|
|
57
|
+
// to = String(to)
|
|
58
|
+
// value = tostring(value)
|
|
59
|
+
// }
|
|
60
|
+
|
|
61
|
+
// from이나 to 둘 중 하나만 있는 경우 먼저 계산
|
|
62
|
+
if (from_defined && !to_defined && value >= from) return param[range];else if (!from_defined && to_defined && value < from) return param[range];
|
|
63
|
+
|
|
64
|
+
// 소수점이 있으므로 from <= value < to 가 되야함
|
|
65
|
+
if (value >= from && value < to) return param[range];
|
|
66
|
+
}
|
|
67
|
+
return param['default'];
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
/* degree 값을 radian으로 변환하는 evaluator */
|
|
71
|
+
function radian(value) {
|
|
72
|
+
return tonumber(value) * Math.PI / 180;
|
|
73
|
+
}
|
|
74
|
+
function noop() {}
|
|
75
|
+
|
|
76
|
+
/* 자바스크립트 로직으로 문자열을 evaluator로 변환 */
|
|
77
|
+
function build(script) {
|
|
78
|
+
try {
|
|
79
|
+
return new Function('value', 'targets', script);
|
|
80
|
+
} catch (e) {
|
|
81
|
+
(0, _logger.error)(e);
|
|
82
|
+
return noop;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
function buildEvaluator(mapping, owner, rule, param, type) {
|
|
86
|
+
switch (rule) {
|
|
87
|
+
case 'value':
|
|
88
|
+
if (type === 'text' || type === 'string') return valueString.bind(mapping);
|
|
89
|
+
if (type === 'number') return valueNumber.bind(mapping);
|
|
90
|
+
return value.bind(owner);
|
|
91
|
+
case 'map':
|
|
92
|
+
return map.bind(mapping);
|
|
93
|
+
case 'range':
|
|
94
|
+
return range.bind(mapping);
|
|
95
|
+
case 'radian':
|
|
96
|
+
return radian.bind(mapping);
|
|
97
|
+
case 'eval':
|
|
98
|
+
return build(param).bind(owner);
|
|
99
|
+
default:
|
|
100
|
+
return value.bind(owner);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
//# sourceMappingURL=evaluator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"evaluator.js","names":["_logger","require","_utils","tostring","value","v","objToVal","undefined","String","tonumber","Number","valueString","valueNumber","map","param","hasOwnProperty","range","from","to","split","from_defined","to_defined","parseFloat","radian","Math","PI","noop","build","script","Function","e","error","buildEvaluator","mapping","owner","rule","type","bind"],"sources":["../../../src/components/data/evaluator.js"],"sourcesContent":["/*\n * Copyright © HatioLab Inc. All rights reserved.\n */\n\nimport { error } from '../../core/logger.js'\nimport { objToVal } from '../../core/utils.js'\n\nfunction tostring(value) {\n var v = objToVal(value)\n return v == undefined ? '' : String(v)\n}\n\nfunction tonumber(value) {\n return Number(objToVal(value))\n}\n\n/* 값을 그대로 반환하는 evaluator */\nfunction value(value) {\n return value\n}\n\nfunction valueString(value) {\n return tostring(value)\n}\n\nfunction valueNumber(value) {\n return tonumber(value)\n}\n\n/* map에 매핑된 값을 반환하는 evaluator */\nfunction map(value) {\n if (!this.param) return\n\n value = tostring(value)\n\n if (this.param.hasOwnProperty(value)) return this.param[value]\n\n return this.param['default']\n}\n\n/* 범위에 매핑된 값을 반환하는 evaluator */\nfunction range(value) {\n var { param } = this\n\n if (!param) return\n\n for (let range in param) {\n let [from, to] = range.split('~')\n let from_defined = !!from\n let to_defined = !!to\n\n // if(type === 'number') {\n from = parseFloat(from)\n to = parseFloat(to)\n value = tonumber(value)\n // } else {\n // from = String(from)\n // to = String(to)\n // value = tostring(value)\n // }\n\n // from이나 to 둘 중 하나만 있는 경우 먼저 계산\n if (from_defined && !to_defined && value >= from) return param[range]\n else if (!from_defined && to_defined && value < from) return param[range]\n\n // 소수점이 있으므로 from <= value < to 가 되야함\n if (value >= from && value < to) return param[range]\n }\n\n return param['default']\n}\n\n/* degree 값을 radian으로 변환하는 evaluator */\nfunction radian(value) {\n return (tonumber(value) * Math.PI) / 180\n}\n\nfunction noop() {}\n\n/* 자바스크립트 로직으로 문자열을 evaluator로 변환 */\nfunction build(script) {\n try {\n return new Function('value', 'targets', script)\n } catch (e) {\n error(e)\n return noop\n }\n}\n\nexport default function buildEvaluator(mapping, owner, rule, param, type) {\n switch (rule) {\n case 'value':\n if (type === 'text' || type === 'string') return valueString.bind(mapping)\n if (type === 'number') return valueNumber.bind(mapping)\n return value.bind(owner)\n case 'map':\n return map.bind(mapping)\n case 'range':\n return range.bind(mapping)\n case 'radian':\n return radian.bind(mapping)\n case 'eval':\n return build(param).bind(owner)\n default:\n return value.bind(owner)\n }\n}\n"],"mappings":";;;;;;AAIA,IAAAA,OAAA,GAAAC,OAAA;AACA,IAAAC,MAAA,GAAAD,OAAA;AALA;AACA;AACA;;AAKA,SAASE,QAAQA,CAACC,KAAK,EAAE;EACvB,IAAIC,CAAC,GAAG,IAAAC,eAAQ,EAACF,KAAK,CAAC;EACvB,OAAOC,CAAC,IAAIE,SAAS,GAAG,EAAE,GAAGC,MAAM,CAACH,CAAC,CAAC;AACxC;AAEA,SAASI,QAAQA,CAACL,KAAK,EAAE;EACvB,OAAOM,MAAM,CAAC,IAAAJ,eAAQ,EAACF,KAAK,CAAC,CAAC;AAChC;;AAEA;AACA,SAASA,KAAKA,CAACA,KAAK,EAAE;EACpB,OAAOA,KAAK;AACd;AAEA,SAASO,WAAWA,CAACP,KAAK,EAAE;EAC1B,OAAOD,QAAQ,CAACC,KAAK,CAAC;AACxB;AAEA,SAASQ,WAAWA,CAACR,KAAK,EAAE;EAC1B,OAAOK,QAAQ,CAACL,KAAK,CAAC;AACxB;;AAEA;AACA,SAASS,GAAGA,CAACT,KAAK,EAAE;EAClB,IAAI,CAAC,IAAI,CAACU,KAAK,EAAE;EAEjBV,KAAK,GAAGD,QAAQ,CAACC,KAAK,CAAC;EAEvB,IAAI,IAAI,CAACU,KAAK,CAACC,cAAc,CAACX,KAAK,CAAC,EAAE,OAAO,IAAI,CAACU,KAAK,CAACV,KAAK,CAAC;EAE9D,OAAO,IAAI,CAACU,KAAK,CAAC,SAAS,CAAC;AAC9B;;AAEA;AACA,SAASE,KAAKA,CAACZ,KAAK,EAAE;EACpB,IAAI;IAAEU;EAAM,CAAC,GAAG,IAAI;EAEpB,IAAI,CAACA,KAAK,EAAE;EAEZ,KAAK,IAAIE,KAAK,IAAIF,KAAK,EAAE;IACvB,IAAI,CAACG,IAAI,EAAEC,EAAE,CAAC,GAAGF,KAAK,CAACG,KAAK,CAAC,GAAG,CAAC;IACjC,IAAIC,YAAY,GAAG,CAAC,CAACH,IAAI;IACzB,IAAII,UAAU,GAAG,CAAC,CAACH,EAAE;;IAErB;IACAD,IAAI,GAAGK,UAAU,CAACL,IAAI,CAAC;IACvBC,EAAE,GAAGI,UAAU,CAACJ,EAAE,CAAC;IACnBd,KAAK,GAAGK,QAAQ,CAACL,KAAK,CAAC;IACvB;IACA;IACA;IACA;IACA;;IAEA;IACA,IAAIgB,YAAY,IAAI,CAACC,UAAU,IAAIjB,KAAK,IAAIa,IAAI,EAAE,OAAOH,KAAK,CAACE,KAAK,CAAC,MAChE,IAAI,CAACI,YAAY,IAAIC,UAAU,IAAIjB,KAAK,GAAGa,IAAI,EAAE,OAAOH,KAAK,CAACE,KAAK,CAAC;;IAEzE;IACA,IAAIZ,KAAK,IAAIa,IAAI,IAAIb,KAAK,GAAGc,EAAE,EAAE,OAAOJ,KAAK,CAACE,KAAK,CAAC;EACtD;EAEA,OAAOF,KAAK,CAAC,SAAS,CAAC;AACzB;;AAEA;AACA,SAASS,MAAMA,CAACnB,KAAK,EAAE;EACrB,OAAQK,QAAQ,CAACL,KAAK,CAAC,GAAGoB,IAAI,CAACC,EAAE,GAAI,GAAG;AAC1C;AAEA,SAASC,IAAIA,CAAA,EAAG,CAAC;;AAEjB;AACA,SAASC,KAAKA,CAACC,MAAM,EAAE;EACrB,IAAI;IACF,OAAO,IAAIC,QAAQ,CAAC,OAAO,EAAE,SAAS,EAAED,MAAM,CAAC;EACjD,CAAC,CAAC,OAAOE,CAAC,EAAE;IACV,IAAAC,aAAK,EAACD,CAAC,CAAC;IACR,OAAOJ,IAAI;EACb;AACF;AAEe,SAASM,cAAcA,CAACC,OAAO,EAAEC,KAAK,EAAEC,IAAI,EAAErB,KAAK,EAAEsB,IAAI,EAAE;EACxE,QAAQD,IAAI;IACV,KAAK,OAAO;MACV,IAAIC,IAAI,KAAK,MAAM,IAAIA,IAAI,KAAK,QAAQ,EAAE,OAAOzB,WAAW,CAAC0B,IAAI,CAACJ,OAAO,CAAC;MAC1E,IAAIG,IAAI,KAAK,QAAQ,EAAE,OAAOxB,WAAW,CAACyB,IAAI,CAACJ,OAAO,CAAC;MACvD,OAAO7B,KAAK,CAACiC,IAAI,CAACH,KAAK,CAAC;IAC1B,KAAK,KAAK;MACR,OAAOrB,GAAG,CAACwB,IAAI,CAACJ,OAAO,CAAC;IAC1B,KAAK,OAAO;MACV,OAAOjB,KAAK,CAACqB,IAAI,CAACJ,OAAO,CAAC;IAC5B,KAAK,QAAQ;MACX,OAAOV,MAAM,CAACc,IAAI,CAACJ,OAAO,CAAC;IAC7B,KAAK,MAAM;MACT,OAAON,KAAK,CAACb,KAAK,CAAC,CAACuB,IAAI,CAACH,KAAK,CAAC;IACjC;MACE,OAAO9B,KAAK,CAACiC,IAAI,CAACH,KAAK,CAAC;EAC5B;AACF","ignoreList":[]}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _component = _interopRequireDefault(require("./component.js"));
|
|
8
|
+
var _ellipse = _interopRequireDefault(require("./ellipse.js"));
|
|
9
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
10
|
+
/*
|
|
11
|
+
* Copyright © HatioLab Inc. All rights reserved.
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
const NATURE = {
|
|
15
|
+
mutable: false,
|
|
16
|
+
resizable: true,
|
|
17
|
+
rotatable: true,
|
|
18
|
+
properties: [{
|
|
19
|
+
type: 'number',
|
|
20
|
+
label: 'ratio',
|
|
21
|
+
name: 'ratio',
|
|
22
|
+
property: 'ratio'
|
|
23
|
+
}],
|
|
24
|
+
help: 'scene/component/donut'
|
|
25
|
+
};
|
|
26
|
+
var controlHandler = {
|
|
27
|
+
ondragmove: function (point, index, component) {
|
|
28
|
+
var controls = component.controls;
|
|
29
|
+
var {
|
|
30
|
+
cx,
|
|
31
|
+
rx
|
|
32
|
+
} = component.model;
|
|
33
|
+
rx = Math.abs(rx);
|
|
34
|
+
var transcoorded = component.transcoordP2S(point.x, point.y);
|
|
35
|
+
var ratio = (transcoorded.x - cx) / rx * 100;
|
|
36
|
+
ratio = ratio >= 100 || ratio <= -100 ? 100 : Math.abs(ratio);
|
|
37
|
+
component.set({
|
|
38
|
+
ratio
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
};
|
|
42
|
+
class Donut extends _ellipse.default {
|
|
43
|
+
is3dish() {
|
|
44
|
+
return false;
|
|
45
|
+
}
|
|
46
|
+
render(ctx) {
|
|
47
|
+
var {
|
|
48
|
+
ratio = 50,
|
|
49
|
+
cx,
|
|
50
|
+
cy,
|
|
51
|
+
rx,
|
|
52
|
+
ry,
|
|
53
|
+
startAngle,
|
|
54
|
+
endAngle,
|
|
55
|
+
anticlockwise
|
|
56
|
+
} = this.state;
|
|
57
|
+
rx = Math.abs(rx);
|
|
58
|
+
ry = Math.abs(ry);
|
|
59
|
+
ctx.beginPath();
|
|
60
|
+
ctx.ellipse(cx, cy, rx, ry, 0, startAngle || 0, endAngle || 2 * Math.PI, anticlockwise);
|
|
61
|
+
ctx.moveTo(cx + rx / 100 * ratio, cy);
|
|
62
|
+
// 맨 마지막 속성이 true면 원의 범위만큼 공백이 됨
|
|
63
|
+
ctx.ellipse(cx, cy, rx / 100 * ratio, ry / 100 * ratio, 0, startAngle || 0, endAngle || 2 * Math.PI, true);
|
|
64
|
+
}
|
|
65
|
+
contains(x, y) {
|
|
66
|
+
var {
|
|
67
|
+
cx,
|
|
68
|
+
cy,
|
|
69
|
+
rx,
|
|
70
|
+
ry,
|
|
71
|
+
ratio
|
|
72
|
+
} = this.state;
|
|
73
|
+
rx = Math.abs(rx);
|
|
74
|
+
ry = Math.abs(ry);
|
|
75
|
+
var normx = (x - cx) / (rx * 2 - 0.5);
|
|
76
|
+
var normy = (y - cy) / (ry * 2 - 0.5);
|
|
77
|
+
var ratiox = (x - cx) / (rx / 100 * ratio * 2 - 0.5);
|
|
78
|
+
var ratioy = (y - cy) / (ry / 100 * ratio * 2 - 0.5);
|
|
79
|
+
var result = false;
|
|
80
|
+
if (normx * normx + normy * normy < 0.25 && ratiox * ratiox + ratioy * ratioy > 0.25) result = !result;
|
|
81
|
+
return result;
|
|
82
|
+
}
|
|
83
|
+
get controls() {
|
|
84
|
+
var {
|
|
85
|
+
cx,
|
|
86
|
+
cy,
|
|
87
|
+
rx,
|
|
88
|
+
ratio
|
|
89
|
+
} = this.state;
|
|
90
|
+
rx = Math.abs(rx);
|
|
91
|
+
return [{
|
|
92
|
+
x: cx + rx / 100 * ratio,
|
|
93
|
+
y: cy,
|
|
94
|
+
handler: controlHandler
|
|
95
|
+
}];
|
|
96
|
+
}
|
|
97
|
+
get nature() {
|
|
98
|
+
return NATURE;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
exports.default = Donut;
|
|
102
|
+
_component.default.memoize(Donut.prototype, 'controls', false);
|
|
103
|
+
_component.default.register('donut', Donut);
|
|
104
|
+
//# sourceMappingURL=donut.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"donut.js","names":["_component","_interopRequireDefault","require","_ellipse","e","__esModule","default","NATURE","mutable","resizable","rotatable","properties","type","label","name","property","help","controlHandler","ondragmove","point","index","component","controls","cx","rx","model","Math","abs","transcoorded","transcoordP2S","x","y","ratio","set","Donut","Ellipse","is3dish","render","ctx","cy","ry","startAngle","endAngle","anticlockwise","state","beginPath","ellipse","PI","moveTo","contains","normx","normy","ratiox","ratioy","result","handler","nature","exports","Component","memoize","prototype","register"],"sources":["../../src/components/donut.js"],"sourcesContent":["/*\n * Copyright © HatioLab Inc. All rights reserved.\n */\n\nimport Component from './component.js'\nimport Ellipse from './ellipse.js'\n\nconst NATURE = {\n mutable: false,\n resizable: true,\n rotatable: true,\n properties: [\n {\n type: 'number',\n label: 'ratio',\n name: 'ratio',\n property: 'ratio'\n }\n ],\n help: 'scene/component/donut'\n}\n\nvar controlHandler = {\n ondragmove: function (point, index, component) {\n var controls = component.controls\n var { cx, rx } = component.model\n rx = Math.abs(rx)\n\n var transcoorded = component.transcoordP2S(point.x, point.y)\n\n var ratio = ((transcoorded.x - cx) / rx) * 100\n\n ratio = ratio >= 100 || ratio <= -100 ? 100 : Math.abs(ratio)\n\n component.set({ ratio })\n }\n}\n\nexport default class Donut extends Ellipse {\n is3dish() {\n return false\n }\n\n render(ctx) {\n var { ratio = 50, cx, cy, rx, ry, startAngle, endAngle, anticlockwise } = this.state\n rx = Math.abs(rx)\n ry = Math.abs(ry)\n\n ctx.beginPath()\n ctx.ellipse(cx, cy, rx, ry, 0, startAngle || 0, endAngle || 2 * Math.PI, anticlockwise)\n\n ctx.moveTo(cx + (rx / 100) * ratio, cy)\n // 맨 마지막 속성이 true면 원의 범위만큼 공백이 됨\n ctx.ellipse(cx, cy, (rx / 100) * ratio, (ry / 100) * ratio, 0, startAngle || 0, endAngle || 2 * Math.PI, true)\n }\n\n contains(x, y) {\n var { cx, cy, rx, ry, ratio } = this.state\n rx = Math.abs(rx)\n ry = Math.abs(ry)\n\n var normx = (x - cx) / (rx * 2 - 0.5)\n var normy = (y - cy) / (ry * 2 - 0.5)\n var ratiox = (x - cx) / ((rx / 100) * ratio * 2 - 0.5)\n var ratioy = (y - cy) / ((ry / 100) * ratio * 2 - 0.5)\n var result = false\n\n if (normx * normx + normy * normy < 0.25 && ratiox * ratiox + ratioy * ratioy > 0.25) result = !result\n\n return result\n }\n\n get controls() {\n var { cx, cy, rx, ratio } = this.state\n rx = Math.abs(rx)\n\n return [\n {\n x: cx + (rx / 100) * ratio,\n y: cy,\n handler: controlHandler\n }\n ]\n }\n\n get nature() {\n return NATURE\n }\n}\n\nComponent.memoize(Donut.prototype, 'controls', false)\n\nComponent.register('donut', Donut)\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = drawImage;
|
|
7
|
+
/*
|
|
8
|
+
* Copyright © HatioLab Inc. All rights reserved.
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
function drawImage(context, image, left, top, width, height) {
|
|
12
|
+
if (image.complete) {
|
|
13
|
+
context.drawImage(image, left, top, width, height);
|
|
14
|
+
} else {
|
|
15
|
+
image.addEventListener('load', () => {
|
|
16
|
+
this.invalidate();
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=draw-image-pendable.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"draw-image-pendable.js","names":["drawImage","context","image","left","top","width","height","complete","addEventListener","invalidate"],"sources":["../../../src/components/drawer/draw-image-pendable.js"],"sourcesContent":["/*\n * Copyright © HatioLab Inc. All rights reserved.\n */\n\nexport default function drawImage(context, image, left, top, width, height) {\n if (image.complete) {\n context.drawImage(image, left, top, width, height)\n } else {\n image.addEventListener('load', () => {\n this.invalidate()\n })\n }\n}\n"],"mappings":";;;;;;AAAA;AACA;AACA;;AAEe,SAASA,SAASA,CAACC,OAAO,EAAEC,KAAK,EAAEC,IAAI,EAAEC,GAAG,EAAEC,KAAK,EAAEC,MAAM,EAAE;EAC1E,IAAIJ,KAAK,CAACK,QAAQ,EAAE;IAClBN,OAAO,CAACD,SAAS,CAACE,KAAK,EAAEC,IAAI,EAAEC,GAAG,EAAEC,KAAK,EAAEC,MAAM,CAAC;EACpD,CAAC,MAAM;IACLJ,KAAK,CAACM,gBAAgB,CAAC,MAAM,EAAE,MAAM;MACnC,IAAI,CAACC,UAAU,CAAC,CAAC;IACnB,CAAC,CAAC;EACJ;AACF","ignoreList":[]}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = effect;
|
|
7
|
+
/*
|
|
8
|
+
* Copyright © HatioLab Inc. All rights reserved.
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
function effect(context) {
|
|
12
|
+
const {
|
|
13
|
+
effects
|
|
14
|
+
} = this.state;
|
|
15
|
+
(effects || []).forEach(effect => {
|
|
16
|
+
this.effect(context, effect);
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=effect.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"effect.js","names":["effect","context","effects","state","forEach"],"sources":["../../../src/components/drawer/effect.js"],"sourcesContent":["/*\n * Copyright © HatioLab Inc. All rights reserved.\n */\n\nexport default function effect(context) {\n const { effects } = this.state\n\n ;(effects || []).forEach(effect => {\n this.effect(context, effect)\n })\n}\n"],"mappings":";;;;;;AAAA;AACA;AACA;;AAEe,SAASA,MAAMA,CAACC,OAAO,EAAE;EACtC,MAAM;IAAEC;EAAQ,CAAC,GAAG,IAAI,CAACC,KAAK;EAE7B,CAACD,OAAO,IAAI,EAAE,EAAEE,OAAO,CAACJ,MAAM,IAAI;IACjC,IAAI,CAACA,MAAM,CAACC,OAAO,EAAED,MAAM,CAAC;EAC9B,CAAC,CAAC;AACJ","ignoreList":[]}
|
|
@@ -0,0 +1,228 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.drawFill = drawFill;
|
|
7
|
+
exports.onchangeFill = onchangeFill;
|
|
8
|
+
exports.prepareFill = prepareFill;
|
|
9
|
+
exports.prepareFillIf = prepareFillIf;
|
|
10
|
+
var _const = require("../../const.js");
|
|
11
|
+
var _logger = require("../../core/logger.js");
|
|
12
|
+
var _elements = require("../html/elements.js");
|
|
13
|
+
/*
|
|
14
|
+
* Copyright © HatioLab Inc. All rights reserved.
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
function drawFill(context, bounds, center, style, host_component) {
|
|
18
|
+
var {
|
|
19
|
+
alpha = 1
|
|
20
|
+
} = style;
|
|
21
|
+
var fillStyle = host_component.fillStyle;
|
|
22
|
+
context.globalAlpha *= alpha;
|
|
23
|
+
if (!fillStyle) {
|
|
24
|
+
return;
|
|
25
|
+
} else if (typeof fillStyle == 'string') {
|
|
26
|
+
context.fillStyle = fillStyle;
|
|
27
|
+
context.fill();
|
|
28
|
+
} else if (typeof fillStyle == 'object') {
|
|
29
|
+
if (fillStyle.type == 'gradient') {
|
|
30
|
+
context.translate(center.x, center.y); // 센터로 이동
|
|
31
|
+
|
|
32
|
+
let grd,
|
|
33
|
+
{
|
|
34
|
+
width,
|
|
35
|
+
height
|
|
36
|
+
} = bounds;
|
|
37
|
+
if (fillStyle.gradientType == 'linear') {
|
|
38
|
+
let degree180 = 3.141592653589793; // 라디안으로 180도 회전
|
|
39
|
+
let fRotation = fillStyle.rotation;
|
|
40
|
+
if (fRotation >= 0.436332 && fRotation <= 1.13446 || fRotation >= 2.00713 && fRotation <= 2.70526 || fRotation >= 3.57792 && fRotation <= 4.27606 || fRotation >= 5.14872 && fRotation <= 5.84685) {
|
|
41
|
+
let diagonal = Math.sqrt(Math.pow((width - 4) / 2, 2) + Math.pow((height - 4) / 2, 2));
|
|
42
|
+
diagonal = diagonal - (diagonal - (width + height) / 3);
|
|
43
|
+
grd = context.createLinearGradient(diagonal * Math.cos(fRotation + degree180), diagonal * Math.sin(fRotation + degree180), diagonal * Math.cos(fRotation), diagonal * Math.sin(fRotation));
|
|
44
|
+
} else {
|
|
45
|
+
grd = context.createLinearGradient((width - 4) / 2 * Math.cos(fRotation + degree180), (height - 4) / 2 * Math.sin(fRotation + degree180), (width - 4) / 2 * Math.cos(fRotation), (height - 4) / 2 * Math.sin(fRotation));
|
|
46
|
+
}
|
|
47
|
+
} else if (fillStyle.gradientType == 'radial') {
|
|
48
|
+
let length = Math.sqrt(Math.pow((width - 4) / 2, 2) + Math.pow((height - 4) / 2, 2)) * 0.95;
|
|
49
|
+
switch (fillStyle.center) {
|
|
50
|
+
case 'center':
|
|
51
|
+
grd = context.createRadialGradient(0, 0, 0, 0, 0, length);
|
|
52
|
+
break;
|
|
53
|
+
case 'left-top':
|
|
54
|
+
grd = context.createRadialGradient(-width / 2, -height / 2, 0, -width / 2, -height / 2, length * 2);
|
|
55
|
+
break;
|
|
56
|
+
case 'right-top':
|
|
57
|
+
grd = context.createRadialGradient(width / 2, -height / 2, 0, width / 2, -height / 2, length * 2);
|
|
58
|
+
break;
|
|
59
|
+
case 'left-bottom':
|
|
60
|
+
grd = context.createRadialGradient(-width / 2, height / 2, 0, -width / 2, height / 2, length * 2);
|
|
61
|
+
break;
|
|
62
|
+
case 'right-bottom':
|
|
63
|
+
grd = context.createRadialGradient(width / 2, height / 2, 0, width / 2, height / 2, length * 2);
|
|
64
|
+
break;
|
|
65
|
+
default:
|
|
66
|
+
grd = context.createRadialGradient(0, 0, 0, 0, 0, length);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
fillStyle.colorStops.forEach(v => {
|
|
70
|
+
// 값이 0~1 가 아니면 애러가 발생하므로 0과 1 사이가 아니면 무시한다.
|
|
71
|
+
if (v.position >= 0 && v.position <= 1) {
|
|
72
|
+
try {
|
|
73
|
+
grd.addColorStop(v.position, v.color);
|
|
74
|
+
} catch (e) {
|
|
75
|
+
(0, _logger.warn)('Invalid Color for colorstop : ', v.color);
|
|
76
|
+
grd.addColorStop(v.position, '#fff');
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
});
|
|
80
|
+
context.fillStyle = grd;
|
|
81
|
+
context.fill();
|
|
82
|
+
context.translate(-center.x, -center.y);
|
|
83
|
+
} else if (fillStyle.type == 'pattern' && fillStyle.image) {
|
|
84
|
+
if (!fillStyle.guideOnly || host_component.app.mode == _const.MODE_EDIT) {
|
|
85
|
+
host_component.prepareFillIf(!host_component._pattern_image_origin);
|
|
86
|
+
var pattern_image = host_component._pattern_image;
|
|
87
|
+
if (!pattern_image) return;
|
|
88
|
+
let offsetX = 0,
|
|
89
|
+
offsetY = 0,
|
|
90
|
+
alignX = 0,
|
|
91
|
+
alignY = 0;
|
|
92
|
+
let translateX = bounds.left,
|
|
93
|
+
translateY = bounds.top;
|
|
94
|
+
if (!fillStyle.fitPattern) {
|
|
95
|
+
offsetX = fillStyle.offsetX;
|
|
96
|
+
offsetY = fillStyle.offsetY;
|
|
97
|
+
const patternWidth = fillStyle.width ? fillStyle.width : pattern_image.width;
|
|
98
|
+
const patternHeight = fillStyle.height ? fillStyle.height : pattern_image.height;
|
|
99
|
+
switch (fillStyle.align) {
|
|
100
|
+
case 'center':
|
|
101
|
+
alignX = bounds.width / 2 - patternWidth / 2;
|
|
102
|
+
alignY = bounds.height / 2 - patternHeight / 2;
|
|
103
|
+
break;
|
|
104
|
+
case 'left-top':
|
|
105
|
+
alignX = 0;
|
|
106
|
+
alignY = 0;
|
|
107
|
+
break;
|
|
108
|
+
case 'left-bottom':
|
|
109
|
+
alignX = 0;
|
|
110
|
+
alignY = bounds.height - patternHeight;
|
|
111
|
+
break;
|
|
112
|
+
case 'right-top':
|
|
113
|
+
alignX = bounds.width - patternWidth;
|
|
114
|
+
alignY = 0;
|
|
115
|
+
break;
|
|
116
|
+
case 'right-bottom':
|
|
117
|
+
alignX = bounds.width - patternWidth;
|
|
118
|
+
alignY = bounds.height - patternHeight;
|
|
119
|
+
break;
|
|
120
|
+
case 'left':
|
|
121
|
+
alignX = 0;
|
|
122
|
+
alignY = bounds.height / 2 - patternHeight / 2;
|
|
123
|
+
break;
|
|
124
|
+
case 'right':
|
|
125
|
+
alignX = bounds.width - patternWidth;
|
|
126
|
+
alignY = bounds.height / 2 - patternHeight / 2;
|
|
127
|
+
break;
|
|
128
|
+
case 'top':
|
|
129
|
+
alignX = bounds.width / 2 - patternWidth / 2;
|
|
130
|
+
alignY = 0;
|
|
131
|
+
break;
|
|
132
|
+
case 'bottom':
|
|
133
|
+
alignX = bounds.width / 2 - patternWidth / 2;
|
|
134
|
+
alignY = bounds.height - patternHeight;
|
|
135
|
+
break;
|
|
136
|
+
}
|
|
137
|
+
translateX += offsetX + alignX;
|
|
138
|
+
translateY += offsetY + alignY;
|
|
139
|
+
}
|
|
140
|
+
context.translate(translateX, translateY);
|
|
141
|
+
if (fillStyle.color) {
|
|
142
|
+
context.fillStyle = fillStyle.color;
|
|
143
|
+
context.fill();
|
|
144
|
+
}
|
|
145
|
+
if (fillStyle.fitPattern) {
|
|
146
|
+
if (Math.abs((pattern_image.width - bounds.width) * (pattern_image.height - bounds.height)) > 1) {
|
|
147
|
+
delete host_component._pattern_image;
|
|
148
|
+
delete host_component._pattern_image_origin;
|
|
149
|
+
} else {
|
|
150
|
+
context.fillStyle = context.createPattern(pattern_image, 'no-repeat');
|
|
151
|
+
}
|
|
152
|
+
} else {
|
|
153
|
+
context.fillStyle = context.createPattern(pattern_image, fillStyle.noRepeat ? 'no-repeat' : 'repeat');
|
|
154
|
+
}
|
|
155
|
+
context.fill();
|
|
156
|
+
context.translate(-translateX, -translateY);
|
|
157
|
+
} else {
|
|
158
|
+
if (fillStyle.color) {
|
|
159
|
+
context.fillStyle = fillStyle.color;
|
|
160
|
+
context.fill();
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
function prepareFill(resolve, reject) {
|
|
167
|
+
var fillStyle = this.fillStyle;
|
|
168
|
+
if (!fillStyle || fillStyle.type != 'pattern' || !fillStyle.image) {
|
|
169
|
+
resolve(this);
|
|
170
|
+
return;
|
|
171
|
+
}
|
|
172
|
+
if (typeof fillStyle.image !== 'string') {
|
|
173
|
+
this._pattern_image_origin = this._pattern_image = fillStyle.image;
|
|
174
|
+
resolve(this);
|
|
175
|
+
return;
|
|
176
|
+
}
|
|
177
|
+
this._pattern_image = null;
|
|
178
|
+
this._pattern_image_origin = new Image();
|
|
179
|
+
var self = this;
|
|
180
|
+
this._pattern_image_origin.onload = function () {
|
|
181
|
+
if (!fillStyle.fitPattern && !fillStyle.width && !fillStyle.height) {
|
|
182
|
+
self._pattern_image = self._pattern_image_origin;
|
|
183
|
+
resolve(this);
|
|
184
|
+
return;
|
|
185
|
+
}
|
|
186
|
+
let width = fillStyle.width || this.width;
|
|
187
|
+
let height = fillStyle.height || this.height;
|
|
188
|
+
if (fillStyle.fitPattern) {
|
|
189
|
+
width = self.bounds.width;
|
|
190
|
+
height = self.bounds.height;
|
|
191
|
+
}
|
|
192
|
+
let offscreen_canvas = (0, _elements.createCanvas)(width, height);
|
|
193
|
+
let temp_context = offscreen_canvas.getContext('2d');
|
|
194
|
+
temp_context.drawImage(this, 0, 0, this.width, this.height, 0, 0, width, height);
|
|
195
|
+
self._pattern_image = offscreen_canvas;
|
|
196
|
+
resolve(this);
|
|
197
|
+
};
|
|
198
|
+
this._pattern_image_origin.onerror = function (e) {
|
|
199
|
+
reject(e);
|
|
200
|
+
};
|
|
201
|
+
try {
|
|
202
|
+
// this._pattern_image_origin.crossOrigin = 'use-credentials';
|
|
203
|
+
if (String(fillStyle.image).substring(0, 4) !== 'data') this._pattern_image_origin.crossOrigin = 'use-credentials';else this._pattern_image_origin.crossOrigin = null;
|
|
204
|
+
this._pattern_image_origin.src = this.app.url(fillStyle.image);
|
|
205
|
+
} catch (e) {
|
|
206
|
+
reject(e);
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
function prepareFillIf(condition) {
|
|
210
|
+
if (!condition) return;
|
|
211
|
+
this.prepareFill(resolve => {
|
|
212
|
+
this.invalidate();
|
|
213
|
+
}, reject => {
|
|
214
|
+
(0, _logger.error)(reject);
|
|
215
|
+
});
|
|
216
|
+
}
|
|
217
|
+
function onchangeFill(after, before) {
|
|
218
|
+
var fillStyle = this.fillStyle;
|
|
219
|
+
if (fillStyle && fillStyle.type !== 'pattern') {
|
|
220
|
+
if (this._pattern_image) {
|
|
221
|
+
this._pattern_image = null;
|
|
222
|
+
this._pattern_image_origin = null;
|
|
223
|
+
}
|
|
224
|
+
return;
|
|
225
|
+
}
|
|
226
|
+
fillStyle?.image && this.prepareFillIf(fillStyle.image);
|
|
227
|
+
}
|
|
228
|
+
//# sourceMappingURL=fill.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fill.js","names":["_const","require","_logger","_elements","drawFill","context","bounds","center","style","host_component","alpha","fillStyle","globalAlpha","fill","type","translate","x","y","grd","width","height","gradientType","degree180","fRotation","rotation","diagonal","Math","sqrt","pow","createLinearGradient","cos","sin","length","createRadialGradient","colorStops","forEach","v","position","addColorStop","color","e","warn","image","guideOnly","app","mode","MODE_EDIT","prepareFillIf","_pattern_image_origin","pattern_image","_pattern_image","offsetX","offsetY","alignX","alignY","translateX","left","translateY","top","fitPattern","patternWidth","patternHeight","align","abs","createPattern","noRepeat","prepareFill","resolve","reject","Image","self","onload","offscreen_canvas","createCanvas","temp_context","getContext","drawImage","onerror","String","substring","crossOrigin","src","url","condition","invalidate","error","onchangeFill","after","before"],"sources":["../../../src/components/drawer/fill.js"],"sourcesContent":["/*\n * Copyright © HatioLab Inc. All rights reserved.\n */\n\nimport { MODE_EDIT } from '../../const.js'\nimport { error, warn } from '../../core/logger.js'\nimport { createCanvas } from '../html/elements.js'\n\nexport function drawFill(context, bounds, center, style, host_component) {\n var { alpha = 1 } = style\n var fillStyle = host_component.fillStyle\n\n context.globalAlpha *= alpha\n\n if (!fillStyle) {\n return\n } else if (typeof fillStyle == 'string') {\n context.fillStyle = fillStyle\n\n context.fill()\n } else if (typeof fillStyle == 'object') {\n if (fillStyle.type == 'gradient') {\n context.translate(center.x, center.y) // 센터로 이동\n\n let grd,\n { width, height } = bounds\n\n if (fillStyle.gradientType == 'linear') {\n let degree180 = 3.141592653589793 // 라디안으로 180도 회전\n let fRotation = fillStyle.rotation\n\n if (\n (fRotation >= 0.436332 && fRotation <= 1.13446) ||\n (fRotation >= 2.00713 && fRotation <= 2.70526) ||\n (fRotation >= 3.57792 && fRotation <= 4.27606) ||\n (fRotation >= 5.14872 && fRotation <= 5.84685)\n ) {\n let diagonal = Math.sqrt(Math.pow((width - 4) / 2, 2) + Math.pow((height - 4) / 2, 2))\n diagonal = diagonal - (diagonal - (width + height) / 3)\n\n grd = context.createLinearGradient(\n diagonal * Math.cos(fRotation + degree180),\n diagonal * Math.sin(fRotation + degree180),\n diagonal * Math.cos(fRotation),\n diagonal * Math.sin(fRotation)\n )\n } else {\n grd = context.createLinearGradient(\n ((width - 4) / 2) * Math.cos(fRotation + degree180),\n ((height - 4) / 2) * Math.sin(fRotation + degree180),\n ((width - 4) / 2) * Math.cos(fRotation),\n ((height - 4) / 2) * Math.sin(fRotation)\n )\n }\n } else if (fillStyle.gradientType == 'radial') {\n let length = Math.sqrt(Math.pow((width - 4) / 2, 2) + Math.pow((height - 4) / 2, 2)) * 0.95\n\n switch (fillStyle.center) {\n case 'center':\n grd = context.createRadialGradient(0, 0, 0, 0, 0, length)\n break\n case 'left-top':\n grd = context.createRadialGradient(-width / 2, -height / 2, 0, -width / 2, -height / 2, length * 2)\n break\n case 'right-top':\n grd = context.createRadialGradient(width / 2, -height / 2, 0, width / 2, -height / 2, length * 2)\n break\n case 'left-bottom':\n grd = context.createRadialGradient(-width / 2, height / 2, 0, -width / 2, height / 2, length * 2)\n break\n case 'right-bottom':\n grd = context.createRadialGradient(width / 2, height / 2, 0, width / 2, height / 2, length * 2)\n break\n default:\n grd = context.createRadialGradient(0, 0, 0, 0, 0, length)\n }\n }\n\n fillStyle.colorStops.forEach(v => {\n // 값이 0~1 가 아니면 애러가 발생하므로 0과 1 사이가 아니면 무시한다.\n if (v.position >= 0 && v.position <= 1) {\n try {\n grd.addColorStop(v.position, v.color)\n } catch (e) {\n warn('Invalid Color for colorstop : ', v.color)\n grd.addColorStop(v.position, '#fff')\n }\n }\n })\n\n context.fillStyle = grd\n context.fill()\n\n context.translate(-center.x, -center.y)\n } else if (fillStyle.type == 'pattern' && fillStyle.image) {\n if (!fillStyle.guideOnly || host_component.app.mode == MODE_EDIT) {\n host_component.prepareFillIf(!host_component._pattern_image_origin)\n\n var pattern_image = host_component._pattern_image\n if (!pattern_image) return\n\n let offsetX = 0,\n offsetY = 0,\n alignX = 0,\n alignY = 0\n\n let translateX = bounds.left,\n translateY = bounds.top\n\n if (!fillStyle.fitPattern) {\n offsetX = fillStyle.offsetX\n offsetY = fillStyle.offsetY\n const patternWidth = fillStyle.width ? fillStyle.width : pattern_image.width\n const patternHeight = fillStyle.height ? fillStyle.height : pattern_image.height\n\n switch (fillStyle.align) {\n case 'center':\n alignX = bounds.width / 2 - patternWidth / 2\n alignY = bounds.height / 2 - patternHeight / 2\n break\n case 'left-top':\n alignX = 0\n alignY = 0\n break\n case 'left-bottom':\n alignX = 0\n alignY = bounds.height - patternHeight\n break\n case 'right-top':\n alignX = bounds.width - patternWidth\n alignY = 0\n break\n case 'right-bottom':\n alignX = bounds.width - patternWidth\n alignY = bounds.height - patternHeight\n break\n case 'left':\n alignX = 0\n alignY = bounds.height / 2 - patternHeight / 2\n break\n case 'right':\n alignX = bounds.width - patternWidth\n alignY = bounds.height / 2 - patternHeight / 2\n break\n case 'top':\n alignX = bounds.width / 2 - patternWidth / 2\n alignY = 0\n break\n case 'bottom':\n alignX = bounds.width / 2 - patternWidth / 2\n alignY = bounds.height - patternHeight\n break\n }\n\n translateX += offsetX + alignX\n translateY += offsetY + alignY\n }\n\n context.translate(translateX, translateY)\n\n if (fillStyle.color) {\n context.fillStyle = fillStyle.color\n context.fill()\n }\n\n if (fillStyle.fitPattern) {\n if (Math.abs((pattern_image.width - bounds.width) * (pattern_image.height - bounds.height)) > 1) {\n delete host_component._pattern_image\n delete host_component._pattern_image_origin\n } else {\n context.fillStyle = context.createPattern(pattern_image, 'no-repeat')\n }\n } else {\n context.fillStyle = context.createPattern(pattern_image, fillStyle.noRepeat ? 'no-repeat' : 'repeat')\n }\n\n context.fill()\n\n context.translate(-translateX, -translateY)\n } else {\n if (fillStyle.color) {\n context.fillStyle = fillStyle.color\n context.fill()\n }\n }\n }\n }\n}\n\nexport function prepareFill(resolve, reject) {\n var fillStyle = this.fillStyle\n\n if (!fillStyle || fillStyle.type != 'pattern' || !fillStyle.image) {\n resolve(this)\n return\n }\n\n if (typeof fillStyle.image !== 'string') {\n this._pattern_image_origin = this._pattern_image = fillStyle.image\n resolve(this)\n return\n }\n\n this._pattern_image = null\n\n this._pattern_image_origin = new Image()\n\n var self = this\n\n this._pattern_image_origin.onload = function () {\n if (!fillStyle.fitPattern && !fillStyle.width && !fillStyle.height) {\n self._pattern_image = self._pattern_image_origin\n\n resolve(this)\n return\n }\n\n let width = fillStyle.width || this.width\n let height = fillStyle.height || this.height\n\n if (fillStyle.fitPattern) {\n width = self.bounds.width\n height = self.bounds.height\n }\n\n let offscreen_canvas = createCanvas(width, height)\n let temp_context = offscreen_canvas.getContext('2d')\n\n temp_context.drawImage(this, 0, 0, this.width, this.height, 0, 0, width, height)\n self._pattern_image = offscreen_canvas\n\n resolve(this)\n }\n\n this._pattern_image_origin.onerror = function (e) {\n reject(e)\n }\n\n try {\n // this._pattern_image_origin.crossOrigin = 'use-credentials';\n if (String(fillStyle.image).substring(0, 4) !== 'data') this._pattern_image_origin.crossOrigin = 'use-credentials'\n else this._pattern_image_origin.crossOrigin = null\n\n this._pattern_image_origin.src = this.app.url(fillStyle.image)\n } catch (e) {\n reject(e)\n }\n}\n\nexport function prepareFillIf(condition) {\n if (!condition) return\n\n this.prepareFill(\n resolve => {\n this.invalidate()\n },\n reject => {\n error(reject)\n }\n )\n}\n\nexport function onchangeFill(after, before) {\n var fillStyle = this.fillStyle\n\n if (fillStyle && fillStyle.type !== 'pattern') {\n if (this._pattern_image) {\n this._pattern_image = null\n this._pattern_image_origin = null\n }\n\n return\n }\n\n fillStyle?.image && this.prepareFillIf(fillStyle.image)\n}\n"],"mappings":";;;;;;;;;AAIA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,OAAA,GAAAD,OAAA;AACA,IAAAE,SAAA,GAAAF,OAAA;AANA;AACA;AACA;;AAMO,SAASG,QAAQA,CAACC,OAAO,EAAEC,MAAM,EAAEC,MAAM,EAAEC,KAAK,EAAEC,cAAc,EAAE;EACvE,IAAI;IAAEC,KAAK,GAAG;EAAE,CAAC,GAAGF,KAAK;EACzB,IAAIG,SAAS,GAAGF,cAAc,CAACE,SAAS;EAExCN,OAAO,CAACO,WAAW,IAAIF,KAAK;EAE5B,IAAI,CAACC,SAAS,EAAE;IACd;EACF,CAAC,MAAM,IAAI,OAAOA,SAAS,IAAI,QAAQ,EAAE;IACvCN,OAAO,CAACM,SAAS,GAAGA,SAAS;IAE7BN,OAAO,CAACQ,IAAI,CAAC,CAAC;EAChB,CAAC,MAAM,IAAI,OAAOF,SAAS,IAAI,QAAQ,EAAE;IACvC,IAAIA,SAAS,CAACG,IAAI,IAAI,UAAU,EAAE;MAChCT,OAAO,CAACU,SAAS,CAACR,MAAM,CAACS,CAAC,EAAET,MAAM,CAACU,CAAC,CAAC,EAAC;;MAEtC,IAAIC,GAAG;QACL;UAAEC,KAAK;UAAEC;QAAO,CAAC,GAAGd,MAAM;MAE5B,IAAIK,SAAS,CAACU,YAAY,IAAI,QAAQ,EAAE;QACtC,IAAIC,SAAS,GAAG,iBAAiB,EAAC;QAClC,IAAIC,SAAS,GAAGZ,SAAS,CAACa,QAAQ;QAElC,IACGD,SAAS,IAAI,QAAQ,IAAIA,SAAS,IAAI,OAAO,IAC7CA,SAAS,IAAI,OAAO,IAAIA,SAAS,IAAI,OAAQ,IAC7CA,SAAS,IAAI,OAAO,IAAIA,SAAS,IAAI,OAAQ,IAC7CA,SAAS,IAAI,OAAO,IAAIA,SAAS,IAAI,OAAQ,EAC9C;UACA,IAAIE,QAAQ,GAAGC,IAAI,CAACC,IAAI,CAACD,IAAI,CAACE,GAAG,CAAC,CAACT,KAAK,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,GAAGO,IAAI,CAACE,GAAG,CAAC,CAACR,MAAM,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;UACtFK,QAAQ,GAAGA,QAAQ,IAAIA,QAAQ,GAAG,CAACN,KAAK,GAAGC,MAAM,IAAI,CAAC,CAAC;UAEvDF,GAAG,GAAGb,OAAO,CAACwB,oBAAoB,CAChCJ,QAAQ,GAAGC,IAAI,CAACI,GAAG,CAACP,SAAS,GAAGD,SAAS,CAAC,EAC1CG,QAAQ,GAAGC,IAAI,CAACK,GAAG,CAACR,SAAS,GAAGD,SAAS,CAAC,EAC1CG,QAAQ,GAAGC,IAAI,CAACI,GAAG,CAACP,SAAS,CAAC,EAC9BE,QAAQ,GAAGC,IAAI,CAACK,GAAG,CAACR,SAAS,CAC/B,CAAC;QACH,CAAC,MAAM;UACLL,GAAG,GAAGb,OAAO,CAACwB,oBAAoB,CAC/B,CAACV,KAAK,GAAG,CAAC,IAAI,CAAC,GAAIO,IAAI,CAACI,GAAG,CAACP,SAAS,GAAGD,SAAS,CAAC,EAClD,CAACF,MAAM,GAAG,CAAC,IAAI,CAAC,GAAIM,IAAI,CAACK,GAAG,CAACR,SAAS,GAAGD,SAAS,CAAC,EACnD,CAACH,KAAK,GAAG,CAAC,IAAI,CAAC,GAAIO,IAAI,CAACI,GAAG,CAACP,SAAS,CAAC,EACtC,CAACH,MAAM,GAAG,CAAC,IAAI,CAAC,GAAIM,IAAI,CAACK,GAAG,CAACR,SAAS,CACzC,CAAC;QACH;MACF,CAAC,MAAM,IAAIZ,SAAS,CAACU,YAAY,IAAI,QAAQ,EAAE;QAC7C,IAAIW,MAAM,GAAGN,IAAI,CAACC,IAAI,CAACD,IAAI,CAACE,GAAG,CAAC,CAACT,KAAK,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,GAAGO,IAAI,CAACE,GAAG,CAAC,CAACR,MAAM,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI;QAE3F,QAAQT,SAAS,CAACJ,MAAM;UACtB,KAAK,QAAQ;YACXW,GAAG,GAAGb,OAAO,CAAC4B,oBAAoB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAED,MAAM,CAAC;YACzD;UACF,KAAK,UAAU;YACbd,GAAG,GAAGb,OAAO,CAAC4B,oBAAoB,CAAC,CAACd,KAAK,GAAG,CAAC,EAAE,CAACC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,CAACD,KAAK,GAAG,CAAC,EAAE,CAACC,MAAM,GAAG,CAAC,EAAEY,MAAM,GAAG,CAAC,CAAC;YACnG;UACF,KAAK,WAAW;YACdd,GAAG,GAAGb,OAAO,CAAC4B,oBAAoB,CAACd,KAAK,GAAG,CAAC,EAAE,CAACC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAED,KAAK,GAAG,CAAC,EAAE,CAACC,MAAM,GAAG,CAAC,EAAEY,MAAM,GAAG,CAAC,CAAC;YACjG;UACF,KAAK,aAAa;YAChBd,GAAG,GAAGb,OAAO,CAAC4B,oBAAoB,CAAC,CAACd,KAAK,GAAG,CAAC,EAAEC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,CAACD,KAAK,GAAG,CAAC,EAAEC,MAAM,GAAG,CAAC,EAAEY,MAAM,GAAG,CAAC,CAAC;YACjG;UACF,KAAK,cAAc;YACjBd,GAAG,GAAGb,OAAO,CAAC4B,oBAAoB,CAACd,KAAK,GAAG,CAAC,EAAEC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAED,KAAK,GAAG,CAAC,EAAEC,MAAM,GAAG,CAAC,EAAEY,MAAM,GAAG,CAAC,CAAC;YAC/F;UACF;YACEd,GAAG,GAAGb,OAAO,CAAC4B,oBAAoB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAED,MAAM,CAAC;QAC7D;MACF;MAEArB,SAAS,CAACuB,UAAU,CAACC,OAAO,CAACC,CAAC,IAAI;QAChC;QACA,IAAIA,CAAC,CAACC,QAAQ,IAAI,CAAC,IAAID,CAAC,CAACC,QAAQ,IAAI,CAAC,EAAE;UACtC,IAAI;YACFnB,GAAG,CAACoB,YAAY,CAACF,CAAC,CAACC,QAAQ,EAAED,CAAC,CAACG,KAAK,CAAC;UACvC,CAAC,CAAC,OAAOC,CAAC,EAAE;YACV,IAAAC,YAAI,EAAC,gCAAgC,EAAEL,CAAC,CAACG,KAAK,CAAC;YAC/CrB,GAAG,CAACoB,YAAY,CAACF,CAAC,CAACC,QAAQ,EAAE,MAAM,CAAC;UACtC;QACF;MACF,CAAC,CAAC;MAEFhC,OAAO,CAACM,SAAS,GAAGO,GAAG;MACvBb,OAAO,CAACQ,IAAI,CAAC,CAAC;MAEdR,OAAO,CAACU,SAAS,CAAC,CAACR,MAAM,CAACS,CAAC,EAAE,CAACT,MAAM,CAACU,CAAC,CAAC;IACzC,CAAC,MAAM,IAAIN,SAAS,CAACG,IAAI,IAAI,SAAS,IAAIH,SAAS,CAAC+B,KAAK,EAAE;MACzD,IAAI,CAAC/B,SAAS,CAACgC,SAAS,IAAIlC,cAAc,CAACmC,GAAG,CAACC,IAAI,IAAIC,gBAAS,EAAE;QAChErC,cAAc,CAACsC,aAAa,CAAC,CAACtC,cAAc,CAACuC,qBAAqB,CAAC;QAEnE,IAAIC,aAAa,GAAGxC,cAAc,CAACyC,cAAc;QACjD,IAAI,CAACD,aAAa,EAAE;QAEpB,IAAIE,OAAO,GAAG,CAAC;UACbC,OAAO,GAAG,CAAC;UACXC,MAAM,GAAG,CAAC;UACVC,MAAM,GAAG,CAAC;QAEZ,IAAIC,UAAU,GAAGjD,MAAM,CAACkD,IAAI;UAC1BC,UAAU,GAAGnD,MAAM,CAACoD,GAAG;QAEzB,IAAI,CAAC/C,SAAS,CAACgD,UAAU,EAAE;UACzBR,OAAO,GAAGxC,SAAS,CAACwC,OAAO;UAC3BC,OAAO,GAAGzC,SAAS,CAACyC,OAAO;UAC3B,MAAMQ,YAAY,GAAGjD,SAAS,CAACQ,KAAK,GAAGR,SAAS,CAACQ,KAAK,GAAG8B,aAAa,CAAC9B,KAAK;UAC5E,MAAM0C,aAAa,GAAGlD,SAAS,CAACS,MAAM,GAAGT,SAAS,CAACS,MAAM,GAAG6B,aAAa,CAAC7B,MAAM;UAEhF,QAAQT,SAAS,CAACmD,KAAK;YACrB,KAAK,QAAQ;cACXT,MAAM,GAAG/C,MAAM,CAACa,KAAK,GAAG,CAAC,GAAGyC,YAAY,GAAG,CAAC;cAC5CN,MAAM,GAAGhD,MAAM,CAACc,MAAM,GAAG,CAAC,GAAGyC,aAAa,GAAG,CAAC;cAC9C;YACF,KAAK,UAAU;cACbR,MAAM,GAAG,CAAC;cACVC,MAAM,GAAG,CAAC;cACV;YACF,KAAK,aAAa;cAChBD,MAAM,GAAG,CAAC;cACVC,MAAM,GAAGhD,MAAM,CAACc,MAAM,GAAGyC,aAAa;cACtC;YACF,KAAK,WAAW;cACdR,MAAM,GAAG/C,MAAM,CAACa,KAAK,GAAGyC,YAAY;cACpCN,MAAM,GAAG,CAAC;cACV;YACF,KAAK,cAAc;cACjBD,MAAM,GAAG/C,MAAM,CAACa,KAAK,GAAGyC,YAAY;cACpCN,MAAM,GAAGhD,MAAM,CAACc,MAAM,GAAGyC,aAAa;cACtC;YACF,KAAK,MAAM;cACTR,MAAM,GAAG,CAAC;cACVC,MAAM,GAAGhD,MAAM,CAACc,MAAM,GAAG,CAAC,GAAGyC,aAAa,GAAG,CAAC;cAC9C;YACF,KAAK,OAAO;cACVR,MAAM,GAAG/C,MAAM,CAACa,KAAK,GAAGyC,YAAY;cACpCN,MAAM,GAAGhD,MAAM,CAACc,MAAM,GAAG,CAAC,GAAGyC,aAAa,GAAG,CAAC;cAC9C;YACF,KAAK,KAAK;cACRR,MAAM,GAAG/C,MAAM,CAACa,KAAK,GAAG,CAAC,GAAGyC,YAAY,GAAG,CAAC;cAC5CN,MAAM,GAAG,CAAC;cACV;YACF,KAAK,QAAQ;cACXD,MAAM,GAAG/C,MAAM,CAACa,KAAK,GAAG,CAAC,GAAGyC,YAAY,GAAG,CAAC;cAC5CN,MAAM,GAAGhD,MAAM,CAACc,MAAM,GAAGyC,aAAa;cACtC;UACJ;UAEAN,UAAU,IAAIJ,OAAO,GAAGE,MAAM;UAC9BI,UAAU,IAAIL,OAAO,GAAGE,MAAM;QAChC;QAEAjD,OAAO,CAACU,SAAS,CAACwC,UAAU,EAAEE,UAAU,CAAC;QAEzC,IAAI9C,SAAS,CAAC4B,KAAK,EAAE;UACnBlC,OAAO,CAACM,SAAS,GAAGA,SAAS,CAAC4B,KAAK;UACnClC,OAAO,CAACQ,IAAI,CAAC,CAAC;QAChB;QAEA,IAAIF,SAAS,CAACgD,UAAU,EAAE;UACxB,IAAIjC,IAAI,CAACqC,GAAG,CAAC,CAACd,aAAa,CAAC9B,KAAK,GAAGb,MAAM,CAACa,KAAK,KAAK8B,aAAa,CAAC7B,MAAM,GAAGd,MAAM,CAACc,MAAM,CAAC,CAAC,GAAG,CAAC,EAAE;YAC/F,OAAOX,cAAc,CAACyC,cAAc;YACpC,OAAOzC,cAAc,CAACuC,qBAAqB;UAC7C,CAAC,MAAM;YACL3C,OAAO,CAACM,SAAS,GAAGN,OAAO,CAAC2D,aAAa,CAACf,aAAa,EAAE,WAAW,CAAC;UACvE;QACF,CAAC,MAAM;UACL5C,OAAO,CAACM,SAAS,GAAGN,OAAO,CAAC2D,aAAa,CAACf,aAAa,EAAEtC,SAAS,CAACsD,QAAQ,GAAG,WAAW,GAAG,QAAQ,CAAC;QACvG;QAEA5D,OAAO,CAACQ,IAAI,CAAC,CAAC;QAEdR,OAAO,CAACU,SAAS,CAAC,CAACwC,UAAU,EAAE,CAACE,UAAU,CAAC;MAC7C,CAAC,MAAM;QACL,IAAI9C,SAAS,CAAC4B,KAAK,EAAE;UACnBlC,OAAO,CAACM,SAAS,GAAGA,SAAS,CAAC4B,KAAK;UACnClC,OAAO,CAACQ,IAAI,CAAC,CAAC;QAChB;MACF;IACF;EACF;AACF;AAEO,SAASqD,WAAWA,CAACC,OAAO,EAAEC,MAAM,EAAE;EAC3C,IAAIzD,SAAS,GAAG,IAAI,CAACA,SAAS;EAE9B,IAAI,CAACA,SAAS,IAAIA,SAAS,CAACG,IAAI,IAAI,SAAS,IAAI,CAACH,SAAS,CAAC+B,KAAK,EAAE;IACjEyB,OAAO,CAAC,IAAI,CAAC;IACb;EACF;EAEA,IAAI,OAAOxD,SAAS,CAAC+B,KAAK,KAAK,QAAQ,EAAE;IACvC,IAAI,CAACM,qBAAqB,GAAG,IAAI,CAACE,cAAc,GAAGvC,SAAS,CAAC+B,KAAK;IAClEyB,OAAO,CAAC,IAAI,CAAC;IACb;EACF;EAEA,IAAI,CAACjB,cAAc,GAAG,IAAI;EAE1B,IAAI,CAACF,qBAAqB,GAAG,IAAIqB,KAAK,CAAC,CAAC;EAExC,IAAIC,IAAI,GAAG,IAAI;EAEf,IAAI,CAACtB,qBAAqB,CAACuB,MAAM,GAAG,YAAY;IAC9C,IAAI,CAAC5D,SAAS,CAACgD,UAAU,IAAI,CAAChD,SAAS,CAACQ,KAAK,IAAI,CAACR,SAAS,CAACS,MAAM,EAAE;MAClEkD,IAAI,CAACpB,cAAc,GAAGoB,IAAI,CAACtB,qBAAqB;MAEhDmB,OAAO,CAAC,IAAI,CAAC;MACb;IACF;IAEA,IAAIhD,KAAK,GAAGR,SAAS,CAACQ,KAAK,IAAI,IAAI,CAACA,KAAK;IACzC,IAAIC,MAAM,GAAGT,SAAS,CAACS,MAAM,IAAI,IAAI,CAACA,MAAM;IAE5C,IAAIT,SAAS,CAACgD,UAAU,EAAE;MACxBxC,KAAK,GAAGmD,IAAI,CAAChE,MAAM,CAACa,KAAK;MACzBC,MAAM,GAAGkD,IAAI,CAAChE,MAAM,CAACc,MAAM;IAC7B;IAEA,IAAIoD,gBAAgB,GAAG,IAAAC,sBAAY,EAACtD,KAAK,EAAEC,MAAM,CAAC;IAClD,IAAIsD,YAAY,GAAGF,gBAAgB,CAACG,UAAU,CAAC,IAAI,CAAC;IAEpDD,YAAY,CAACE,SAAS,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAACzD,KAAK,EAAE,IAAI,CAACC,MAAM,EAAE,CAAC,EAAE,CAAC,EAAED,KAAK,EAAEC,MAAM,CAAC;IAChFkD,IAAI,CAACpB,cAAc,GAAGsB,gBAAgB;IAEtCL,OAAO,CAAC,IAAI,CAAC;EACf,CAAC;EAED,IAAI,CAACnB,qBAAqB,CAAC6B,OAAO,GAAG,UAAUrC,CAAC,EAAE;IAChD4B,MAAM,CAAC5B,CAAC,CAAC;EACX,CAAC;EAED,IAAI;IACF;IACA,IAAIsC,MAAM,CAACnE,SAAS,CAAC+B,KAAK,CAAC,CAACqC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,MAAM,EAAE,IAAI,CAAC/B,qBAAqB,CAACgC,WAAW,GAAG,iBAAiB,MAC7G,IAAI,CAAChC,qBAAqB,CAACgC,WAAW,GAAG,IAAI;IAElD,IAAI,CAAChC,qBAAqB,CAACiC,GAAG,GAAG,IAAI,CAACrC,GAAG,CAACsC,GAAG,CAACvE,SAAS,CAAC+B,KAAK,CAAC;EAChE,CAAC,CAAC,OAAOF,CAAC,EAAE;IACV4B,MAAM,CAAC5B,CAAC,CAAC;EACX;AACF;AAEO,SAASO,aAAaA,CAACoC,SAAS,EAAE;EACvC,IAAI,CAACA,SAAS,EAAE;EAEhB,IAAI,CAACjB,WAAW,CACdC,OAAO,IAAI;IACT,IAAI,CAACiB,UAAU,CAAC,CAAC;EACnB,CAAC,EACDhB,MAAM,IAAI;IACR,IAAAiB,aAAK,EAACjB,MAAM,CAAC;EACf,CACF,CAAC;AACH;AAEO,SAASkB,YAAYA,CAACC,KAAK,EAAEC,MAAM,EAAE;EAC1C,IAAI7E,SAAS,GAAG,IAAI,CAACA,SAAS;EAE9B,IAAIA,SAAS,IAAIA,SAAS,CAACG,IAAI,KAAK,SAAS,EAAE;IAC7C,IAAI,IAAI,CAACoC,cAAc,EAAE;MACvB,IAAI,CAACA,cAAc,GAAG,IAAI;MAC1B,IAAI,CAACF,qBAAqB,GAAG,IAAI;IACnC;IAEA;EACF;EAEArC,SAAS,EAAE+B,KAAK,IAAI,IAAI,CAACK,aAAa,CAACpC,SAAS,CAAC+B,KAAK,CAAC;AACzD","ignoreList":[]}
|