@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,154 @@
|
|
|
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 _htmlOverlayContainer = _interopRequireDefault(require("./html-overlay-container.js"));
|
|
9
|
+
var _logger = require("../core/logger.js");
|
|
10
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
11
|
+
/*
|
|
12
|
+
* Copyright © HatioLab Inc. All rights reserved.
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
const NATURE = {
|
|
16
|
+
mutable: false,
|
|
17
|
+
resizable: true,
|
|
18
|
+
rotatable: true,
|
|
19
|
+
properties: [{
|
|
20
|
+
type: 'board-selector',
|
|
21
|
+
label: 'scene-number',
|
|
22
|
+
name: 'ref',
|
|
23
|
+
placeholder: 'SCENE-1'
|
|
24
|
+
}, {
|
|
25
|
+
type: 'number',
|
|
26
|
+
label: 'round',
|
|
27
|
+
name: 'round',
|
|
28
|
+
property: {
|
|
29
|
+
min: 0
|
|
30
|
+
}
|
|
31
|
+
}, {
|
|
32
|
+
type: 'select',
|
|
33
|
+
label: 'fit',
|
|
34
|
+
name: 'fit',
|
|
35
|
+
property: {
|
|
36
|
+
options: ['', 'both', 'ratio', 'width', 'height', 'none']
|
|
37
|
+
}
|
|
38
|
+
}, {
|
|
39
|
+
type: 'select',
|
|
40
|
+
label: 'mode',
|
|
41
|
+
name: 'mode',
|
|
42
|
+
property: {
|
|
43
|
+
options: ['view', 'interaction']
|
|
44
|
+
}
|
|
45
|
+
}],
|
|
46
|
+
'value-property': 'ref',
|
|
47
|
+
help: 'scene/component/global-ref'
|
|
48
|
+
};
|
|
49
|
+
class GlobalRef extends _htmlOverlayContainer.default {
|
|
50
|
+
dispose() {
|
|
51
|
+
this._releaseRef();
|
|
52
|
+
super.dispose();
|
|
53
|
+
}
|
|
54
|
+
get nature() {
|
|
55
|
+
return NATURE;
|
|
56
|
+
}
|
|
57
|
+
get hasTextProperty() {
|
|
58
|
+
return false;
|
|
59
|
+
}
|
|
60
|
+
get tagName() {
|
|
61
|
+
return 'div';
|
|
62
|
+
}
|
|
63
|
+
setElementProperties(element) {
|
|
64
|
+
var {
|
|
65
|
+
mode = 'view',
|
|
66
|
+
round = 0
|
|
67
|
+
} = this.state;
|
|
68
|
+
if (mode == 'view') {
|
|
69
|
+
element.style.pointerEvents = 'none';
|
|
70
|
+
} else {
|
|
71
|
+
element.style.pointerEvents = 'inherit';
|
|
72
|
+
}
|
|
73
|
+
element.style.borderRadius = round + 'px';
|
|
74
|
+
}
|
|
75
|
+
ready() {
|
|
76
|
+
super.ready();
|
|
77
|
+
this.fetchRef();
|
|
78
|
+
}
|
|
79
|
+
reposition() {
|
|
80
|
+
if (!this.element) return;
|
|
81
|
+
super.reposition();
|
|
82
|
+
|
|
83
|
+
/* 컴포넌트 자신의 bound가 변화했다면, reference 를 다시 맞춘다. */
|
|
84
|
+
let oldBounds = this._element_bounds;
|
|
85
|
+
let {
|
|
86
|
+
offsetWidth,
|
|
87
|
+
offsetHeight
|
|
88
|
+
} = this.element;
|
|
89
|
+
this._element_bounds = {
|
|
90
|
+
offsetWidth,
|
|
91
|
+
offsetHeight
|
|
92
|
+
};
|
|
93
|
+
if (oldBounds && oldBounds.offsetWidth == offsetWidth && oldBounds.offsetHeight == offsetHeight) {
|
|
94
|
+
return;
|
|
95
|
+
}
|
|
96
|
+
if (this.ref && this.root.target_element) {
|
|
97
|
+
let {
|
|
98
|
+
fit = 'ratio'
|
|
99
|
+
} = this.state;
|
|
100
|
+
this.ref.fit(fit);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
async fetchRef() {
|
|
104
|
+
this._releaseRef();
|
|
105
|
+
var {
|
|
106
|
+
ref,
|
|
107
|
+
fit = 'ratio'
|
|
108
|
+
} = this.state;
|
|
109
|
+
if (!ref) return;
|
|
110
|
+
var provider = this.app.refProvider;
|
|
111
|
+
if (provider && ref) {
|
|
112
|
+
try {
|
|
113
|
+
this.__ref = await provider.get(ref, true);
|
|
114
|
+
this.__ref.target = this.element;
|
|
115
|
+
this.__ref.fit(fit);
|
|
116
|
+
this.__ref.data = this.data;
|
|
117
|
+
} catch (e) {
|
|
118
|
+
(0, _logger.error)(e);
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
get ref() {
|
|
123
|
+
return this.__ref;
|
|
124
|
+
}
|
|
125
|
+
set ref(ref) {
|
|
126
|
+
this.setState('ref', ref);
|
|
127
|
+
}
|
|
128
|
+
_releaseRef() {
|
|
129
|
+
if (this.__ref && this.__ref.release) {
|
|
130
|
+
this.__ref.release();
|
|
131
|
+
}
|
|
132
|
+
delete this.__ref;
|
|
133
|
+
}
|
|
134
|
+
onchange(after, before, hint) {
|
|
135
|
+
super.onchange(after, before, hint);
|
|
136
|
+
'ref' in after && this.fetchRef();
|
|
137
|
+
if ('fit' in after && this.ref) {
|
|
138
|
+
requestAnimationFrame(() => {
|
|
139
|
+
let {
|
|
140
|
+
fit
|
|
141
|
+
} = this.state;
|
|
142
|
+
this.ref.fit(fit);
|
|
143
|
+
});
|
|
144
|
+
}
|
|
145
|
+
if ('data' in after && this.ref) {
|
|
146
|
+
requestAnimationFrame(() => {
|
|
147
|
+
this.ref.data = after.data;
|
|
148
|
+
});
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
exports.default = GlobalRef;
|
|
153
|
+
_component.default.register('global-ref', GlobalRef);
|
|
154
|
+
//# sourceMappingURL=global-ref.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"global-ref.js","names":["_component","_interopRequireDefault","require","_htmlOverlayContainer","_logger","e","__esModule","default","NATURE","mutable","resizable","rotatable","properties","type","label","name","placeholder","property","min","options","help","GlobalRef","HTMLOverlayContainer","dispose","_releaseRef","nature","hasTextProperty","tagName","setElementProperties","element","mode","round","state","style","pointerEvents","borderRadius","ready","fetchRef","reposition","oldBounds","_element_bounds","offsetWidth","offsetHeight","ref","root","target_element","fit","provider","app","refProvider","__ref","get","target","data","error","setState","release","onchange","after","before","hint","requestAnimationFrame","exports","Component","register"],"sources":["../../src/components/global-ref.js"],"sourcesContent":["/*\n * Copyright © HatioLab Inc. All rights reserved.\n */\n\nimport Component from './component.js'\nimport HTMLOverlayContainer from './html-overlay-container.js'\nimport { error } from '../core/logger.js'\n\nconst NATURE = {\n mutable: false,\n resizable: true,\n rotatable: true,\n properties: [\n {\n type: 'board-selector',\n label: 'scene-number',\n name: 'ref',\n placeholder: 'SCENE-1'\n },\n {\n type: 'number',\n label: 'round',\n name: 'round',\n property: {\n min: 0\n }\n },\n {\n type: 'select',\n label: 'fit',\n name: 'fit',\n property: {\n options: ['', 'both', 'ratio', 'width', 'height', 'none']\n }\n },\n {\n type: 'select',\n label: 'mode',\n name: 'mode',\n property: {\n options: ['view', 'interaction']\n }\n }\n ],\n 'value-property': 'ref',\n help: 'scene/component/global-ref'\n}\n\nexport default class GlobalRef extends HTMLOverlayContainer {\n dispose() {\n this._releaseRef()\n super.dispose()\n }\n\n get nature() {\n return NATURE\n }\n\n get hasTextProperty() {\n return false\n }\n\n get tagName() {\n return 'div'\n }\n\n setElementProperties(element) {\n var { mode = 'view', round = 0 } = this.state\n\n if (mode == 'view') {\n element.style.pointerEvents = 'none'\n } else {\n element.style.pointerEvents = 'inherit'\n }\n\n element.style.borderRadius = round + 'px'\n }\n\n ready() {\n super.ready()\n this.fetchRef()\n }\n\n reposition() {\n if (!this.element) return\n\n super.reposition()\n\n /* 컴포넌트 자신의 bound가 변화했다면, reference 를 다시 맞춘다. */\n let oldBounds = this._element_bounds\n let { offsetWidth, offsetHeight } = this.element\n this._element_bounds = { offsetWidth, offsetHeight }\n\n if (oldBounds && oldBounds.offsetWidth == offsetWidth && oldBounds.offsetHeight == offsetHeight) {\n return\n }\n\n if (this.ref && this.root.target_element) {\n let { fit = 'ratio' } = this.state\n\n this.ref.fit(fit)\n }\n }\n\n async fetchRef() {\n this._releaseRef()\n\n var { ref, fit = 'ratio' } = this.state\n\n if (!ref) return\n\n var provider = this.app.refProvider\n\n if (provider && ref) {\n try {\n this.__ref = await provider.get(ref, true)\n this.__ref.target = this.element\n this.__ref.fit(fit)\n this.__ref.data = this.data\n } catch (e) {\n error(e)\n }\n }\n }\n\n get ref() {\n return this.__ref\n }\n\n set ref(ref) {\n this.setState('ref', ref)\n }\n\n _releaseRef() {\n if (this.__ref && this.__ref.release) {\n this.__ref.release()\n }\n delete this.__ref\n }\n\n onchange(after, before, hint) {\n super.onchange(after, before, hint)\n\n 'ref' in after && this.fetchRef()\n if ('fit' in after && this.ref) {\n requestAnimationFrame(() => {\n let { fit } = this.state\n this.ref.fit(fit)\n })\n }\n\n if ('data' in after && this.ref) {\n requestAnimationFrame(() => {\n this.ref.data = after.data\n })\n }\n }\n}\n\nComponent.register('global-ref', GlobalRef)\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _container = _interopRequireDefault(require("./container.js"));
|
|
8
|
+
var _component = _interopRequireDefault(require("./component.js"));
|
|
9
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
10
|
+
/*
|
|
11
|
+
* Copyright © HatioLab Inc. All rights reserved.
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
const GROUP_PROPS = ['refid', 'left', 'top', 'width', 'height', 'rotation', 'animation'];
|
|
15
|
+
class Group extends _container.default {
|
|
16
|
+
isGroup() {
|
|
17
|
+
return true;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
/*
|
|
21
|
+
* 컴포넌트의 모델 속성값을 가져오는 메쏘드.
|
|
22
|
+
*/
|
|
23
|
+
get(property) {
|
|
24
|
+
return this._model[property];
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
/*
|
|
28
|
+
* 컴포넌트의 모델 속성값을 바꾸는 메쏘드. 그룹은 5개의 속성만을 가진다.
|
|
29
|
+
*
|
|
30
|
+
* - 하나의 속성을 변경하는 경우.
|
|
31
|
+
* component.set('top', 10)
|
|
32
|
+
* - 여러개의 속성을 변경하는 경우.
|
|
33
|
+
* component.set({top:10, left:50})
|
|
34
|
+
*/
|
|
35
|
+
|
|
36
|
+
set(props, propval) {
|
|
37
|
+
if (typeof props === 'string') return this.set({
|
|
38
|
+
[props]: propval
|
|
39
|
+
});
|
|
40
|
+
var filtered = GROUP_PROPS.reduce((filtered, prop) => {
|
|
41
|
+
if (props.hasOwnProperty(prop)) filtered[prop] = props[prop];
|
|
42
|
+
return filtered;
|
|
43
|
+
}, {});
|
|
44
|
+
return super.set(filtered);
|
|
45
|
+
}
|
|
46
|
+
capture(x, y, except) {
|
|
47
|
+
var captured = super.capture(x, y, except);
|
|
48
|
+
|
|
49
|
+
// 그룹 자신은 capture를 받을 수 없다.
|
|
50
|
+
if (captured === this) return;
|
|
51
|
+
return captured;
|
|
52
|
+
}
|
|
53
|
+
set bounds(bounds) {
|
|
54
|
+
if (this.__MUTATING__) {
|
|
55
|
+
super.bounds = bounds;
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
// 1. left, top의 변화만큼 translate 한다.
|
|
60
|
+
|
|
61
|
+
var old_bounds = this.bounds;
|
|
62
|
+
|
|
63
|
+
// 2. width, height의 변화비율을 scale-x, scale-y 에 보관한다.
|
|
64
|
+
|
|
65
|
+
var scale = {
|
|
66
|
+
x: bounds.width / old_bounds.width,
|
|
67
|
+
y: bounds.height / old_bounds.height
|
|
68
|
+
};
|
|
69
|
+
|
|
70
|
+
// 3. 기존 포인트들을 기존 거리에 scale-x, scale-y 만큼 조정된 위치로 새로운 bounds의 left-top으로부터 설정한다.
|
|
71
|
+
|
|
72
|
+
this.path = this.path.map(point => {
|
|
73
|
+
return {
|
|
74
|
+
x: bounds.left + (point.x - old_bounds.left) * scale.x,
|
|
75
|
+
y: bounds.top + (point.y - old_bounds.top) * scale.y
|
|
76
|
+
};
|
|
77
|
+
});
|
|
78
|
+
|
|
79
|
+
// 4. PATH스타일(mutable)의 도형은 mutatePath를 사용하고,
|
|
80
|
+
// Bounds 스타일 도형은 기존 포인트들을 기존 거리에 scale-x, scale-y 만큼 조정된 center 위치로부터
|
|
81
|
+
// 새로운 bounds를 설정한다.
|
|
82
|
+
|
|
83
|
+
this.components && this.components.forEach(comp => {
|
|
84
|
+
if (comp.mutable) {
|
|
85
|
+
comp.mutatePath(null, function (path_in_parent) {
|
|
86
|
+
return path_in_parent.map(function (point) {
|
|
87
|
+
return {
|
|
88
|
+
x: point.x * scale.x,
|
|
89
|
+
y: point.y * scale.y
|
|
90
|
+
};
|
|
91
|
+
});
|
|
92
|
+
});
|
|
93
|
+
} else {
|
|
94
|
+
let bounds = comp.bounds;
|
|
95
|
+
let center = comp.center;
|
|
96
|
+
let delta_center = {
|
|
97
|
+
x: center.x * (1 - scale.x),
|
|
98
|
+
y: center.y * (1 - scale.y)
|
|
99
|
+
};
|
|
100
|
+
let delta_width = bounds.width * (1 - scale.x);
|
|
101
|
+
let delta_height = bounds.height * (1 - scale.y);
|
|
102
|
+
let delta_left = -(delta_center.x - delta_width / 2);
|
|
103
|
+
let delta_top = -(delta_center.y - delta_height / 2);
|
|
104
|
+
comp.bounds = {
|
|
105
|
+
left: bounds.left + delta_left,
|
|
106
|
+
top: bounds.top + delta_top,
|
|
107
|
+
width: bounds.width * scale.x,
|
|
108
|
+
height: bounds.height * scale.y
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
get focusible() {
|
|
114
|
+
return false;
|
|
115
|
+
}
|
|
116
|
+
get bounds() {
|
|
117
|
+
return super.bounds;
|
|
118
|
+
}
|
|
119
|
+
get hasTextProperty() {
|
|
120
|
+
return false;
|
|
121
|
+
}
|
|
122
|
+
isIdentifiable() {
|
|
123
|
+
return false;
|
|
124
|
+
}
|
|
125
|
+
calculateBounds() {
|
|
126
|
+
this.clearCache();
|
|
127
|
+
this.__MUTATING__ = true;
|
|
128
|
+
this.mutateBounds(function (bounds) {
|
|
129
|
+
var union = _component.default.union(this.components.map(component => {
|
|
130
|
+
return component.bounds;
|
|
131
|
+
}));
|
|
132
|
+
this.components.forEach(component => {
|
|
133
|
+
let cbounds = component.bounds;
|
|
134
|
+
component.bounds = {
|
|
135
|
+
left: cbounds.left - union.left,
|
|
136
|
+
top: cbounds.top - union.top,
|
|
137
|
+
width: cbounds.width,
|
|
138
|
+
height: cbounds.height
|
|
139
|
+
};
|
|
140
|
+
});
|
|
141
|
+
return {
|
|
142
|
+
left: bounds.left + union.left,
|
|
143
|
+
top: bounds.top + union.top,
|
|
144
|
+
width: union.width,
|
|
145
|
+
height: union.height
|
|
146
|
+
};
|
|
147
|
+
}, this);
|
|
148
|
+
this.__MUTATING__ = false;
|
|
149
|
+
if (this.parent.isGroup()) this.parent.calculateBounds();
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
/* 그룹은 자체적으로는 아무것도 그리지 않는다. */
|
|
153
|
+
|
|
154
|
+
render(context) {}
|
|
155
|
+
postrender(context) {
|
|
156
|
+
/* 자식 컴포넌트들 그리기 */
|
|
157
|
+
var {
|
|
158
|
+
top,
|
|
159
|
+
left,
|
|
160
|
+
scale
|
|
161
|
+
} = this.state;
|
|
162
|
+
context.translate(left, top);
|
|
163
|
+
this.layout.drawables(this).forEach(m => {
|
|
164
|
+
m.draw(context);
|
|
165
|
+
});
|
|
166
|
+
context.translate(-left, -top);
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
exports.default = Group;
|
|
170
|
+
_component.default.register('group', Group);
|
|
171
|
+
//# sourceMappingURL=group.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"group.js","names":["_container","_interopRequireDefault","require","_component","e","__esModule","default","GROUP_PROPS","Group","Container","isGroup","get","property","_model","set","props","propval","filtered","reduce","prop","hasOwnProperty","capture","x","y","except","captured","bounds","__MUTATING__","old_bounds","scale","width","height","path","map","point","left","top","components","forEach","comp","mutable","mutatePath","path_in_parent","center","delta_center","delta_width","delta_height","delta_left","delta_top","focusible","hasTextProperty","isIdentifiable","calculateBounds","clearCache","mutateBounds","union","Component","component","cbounds","parent","render","context","postrender","state","translate","layout","drawables","m","draw","exports","register"],"sources":["../../src/components/group.js"],"sourcesContent":["/*\n * Copyright © HatioLab Inc. All rights reserved.\n */\n\nimport Container from './container.js'\nimport Component from './component.js'\n\nconst GROUP_PROPS = ['refid', 'left', 'top', 'width', 'height', 'rotation', 'animation']\n\nexport default class Group extends Container {\n isGroup() {\n return true\n }\n\n /*\n * 컴포넌트의 모델 속성값을 가져오는 메쏘드.\n */\n get(property) {\n return this._model[property]\n }\n\n /*\n * 컴포넌트의 모델 속성값을 바꾸는 메쏘드. 그룹은 5개의 속성만을 가진다.\n *\n * - 하나의 속성을 변경하는 경우.\n * component.set('top', 10)\n * - 여러개의 속성을 변경하는 경우.\n * component.set({top:10, left:50})\n */\n\n set(props, propval) {\n if (typeof props === 'string') return this.set({ [props]: propval })\n\n var filtered = GROUP_PROPS.reduce((filtered, prop) => {\n if (props.hasOwnProperty(prop)) filtered[prop] = props[prop]\n return filtered\n }, {})\n\n return super.set(filtered)\n }\n\n capture(x, y, except) {\n var captured = super.capture(x, y, except)\n\n // 그룹 자신은 capture를 받을 수 없다.\n if (captured === this) return\n\n return captured\n }\n\n set bounds(bounds) {\n if (this.__MUTATING__) {\n super.bounds = bounds\n return\n }\n\n // 1. left, top의 변화만큼 translate 한다.\n\n var old_bounds = this.bounds\n\n // 2. width, height의 변화비율을 scale-x, scale-y 에 보관한다.\n\n var scale = {\n x: bounds.width / old_bounds.width,\n y: bounds.height / old_bounds.height\n }\n\n // 3. 기존 포인트들을 기존 거리에 scale-x, scale-y 만큼 조정된 위치로 새로운 bounds의 left-top으로부터 설정한다.\n\n this.path = this.path.map(point => {\n return {\n x: bounds.left + (point.x - old_bounds.left) * scale.x,\n y: bounds.top + (point.y - old_bounds.top) * scale.y\n }\n })\n\n // 4. PATH스타일(mutable)의 도형은 mutatePath를 사용하고,\n // Bounds 스타일 도형은 기존 포인트들을 기존 거리에 scale-x, scale-y 만큼 조정된 center 위치로부터\n // 새로운 bounds를 설정한다.\n\n this.components &&\n this.components.forEach(comp => {\n if (comp.mutable) {\n comp.mutatePath(null, function (path_in_parent) {\n return path_in_parent.map(function (point) {\n return {\n x: point.x * scale.x,\n y: point.y * scale.y\n }\n })\n })\n } else {\n let bounds = comp.bounds\n let center = comp.center\n\n let delta_center = {\n x: center.x * (1 - scale.x),\n y: center.y * (1 - scale.y)\n }\n\n let delta_width = bounds.width * (1 - scale.x)\n let delta_height = bounds.height * (1 - scale.y)\n\n let delta_left = -(delta_center.x - delta_width / 2)\n let delta_top = -(delta_center.y - delta_height / 2)\n\n comp.bounds = {\n left: bounds.left + delta_left,\n top: bounds.top + delta_top,\n width: bounds.width * scale.x,\n height: bounds.height * scale.y\n }\n }\n })\n }\n\n get focusible() {\n return false\n }\n\n get bounds() {\n return super.bounds\n }\n\n get hasTextProperty() {\n return false\n }\n\n isIdentifiable() {\n return false\n }\n\n calculateBounds() {\n this.clearCache()\n\n this.__MUTATING__ = true\n\n this.mutateBounds(function (bounds) {\n var union = Component.union(\n this.components.map(component => {\n return component.bounds\n })\n )\n\n this.components.forEach(component => {\n let cbounds = component.bounds\n\n component.bounds = {\n left: cbounds.left - union.left,\n top: cbounds.top - union.top,\n width: cbounds.width,\n height: cbounds.height\n }\n })\n\n return {\n left: bounds.left + union.left,\n top: bounds.top + union.top,\n width: union.width,\n height: union.height\n }\n }, this)\n\n this.__MUTATING__ = false\n\n if (this.parent.isGroup()) this.parent.calculateBounds()\n }\n\n /* 그룹은 자체적으로는 아무것도 그리지 않는다. */\n\n render(context) {}\n\n postrender(context) {\n /* 자식 컴포넌트들 그리기 */\n var { top, left, scale } = this.state\n context.translate(left, top)\n\n this.layout.drawables(this).forEach(m => {\n m.draw(context)\n })\n\n context.translate(-left, -top)\n }\n}\n\nComponent.register('group', Group)\n"],"mappings":";;;;;;AAIA,IAAAA,UAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,UAAA,GAAAF,sBAAA,CAAAC,OAAA;AAAsC,SAAAD,uBAAAG,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AALtC;AACA;AACA;;AAKA,MAAMG,WAAW,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,WAAW,CAAC;AAEzE,MAAMC,KAAK,SAASC,kBAAS,CAAC;EAC3CC,OAAOA,CAAA,EAAG;IACR,OAAO,IAAI;EACb;;EAEA;AACF;AACA;EACEC,GAAGA,CAACC,QAAQ,EAAE;IACZ,OAAO,IAAI,CAACC,MAAM,CAACD,QAAQ,CAAC;EAC9B;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;;EAEEE,GAAGA,CAACC,KAAK,EAAEC,OAAO,EAAE;IAClB,IAAI,OAAOD,KAAK,KAAK,QAAQ,EAAE,OAAO,IAAI,CAACD,GAAG,CAAC;MAAE,CAACC,KAAK,GAAGC;IAAQ,CAAC,CAAC;IAEpE,IAAIC,QAAQ,GAAGV,WAAW,CAACW,MAAM,CAAC,CAACD,QAAQ,EAAEE,IAAI,KAAK;MACpD,IAAIJ,KAAK,CAACK,cAAc,CAACD,IAAI,CAAC,EAAEF,QAAQ,CAACE,IAAI,CAAC,GAAGJ,KAAK,CAACI,IAAI,CAAC;MAC5D,OAAOF,QAAQ;IACjB,CAAC,EAAE,CAAC,CAAC,CAAC;IAEN,OAAO,KAAK,CAACH,GAAG,CAACG,QAAQ,CAAC;EAC5B;EAEAI,OAAOA,CAACC,CAAC,EAAEC,CAAC,EAAEC,MAAM,EAAE;IACpB,IAAIC,QAAQ,GAAG,KAAK,CAACJ,OAAO,CAACC,CAAC,EAAEC,CAAC,EAAEC,MAAM,CAAC;;IAE1C;IACA,IAAIC,QAAQ,KAAK,IAAI,EAAE;IAEvB,OAAOA,QAAQ;EACjB;EAEA,IAAIC,MAAMA,CAACA,MAAM,EAAE;IACjB,IAAI,IAAI,CAACC,YAAY,EAAE;MACrB,KAAK,CAACD,MAAM,GAAGA,MAAM;MACrB;IACF;;IAEA;;IAEA,IAAIE,UAAU,GAAG,IAAI,CAACF,MAAM;;IAE5B;;IAEA,IAAIG,KAAK,GAAG;MACVP,CAAC,EAAEI,MAAM,CAACI,KAAK,GAAGF,UAAU,CAACE,KAAK;MAClCP,CAAC,EAAEG,MAAM,CAACK,MAAM,GAAGH,UAAU,CAACG;IAChC,CAAC;;IAED;;IAEA,IAAI,CAACC,IAAI,GAAG,IAAI,CAACA,IAAI,CAACC,GAAG,CAACC,KAAK,IAAI;MACjC,OAAO;QACLZ,CAAC,EAAEI,MAAM,CAACS,IAAI,GAAG,CAACD,KAAK,CAACZ,CAAC,GAAGM,UAAU,CAACO,IAAI,IAAIN,KAAK,CAACP,CAAC;QACtDC,CAAC,EAAEG,MAAM,CAACU,GAAG,GAAG,CAACF,KAAK,CAACX,CAAC,GAAGK,UAAU,CAACQ,GAAG,IAAIP,KAAK,CAACN;MACrD,CAAC;IACH,CAAC,CAAC;;IAEF;IACA;IACA;;IAEA,IAAI,CAACc,UAAU,IACb,IAAI,CAACA,UAAU,CAACC,OAAO,CAACC,IAAI,IAAI;MAC9B,IAAIA,IAAI,CAACC,OAAO,EAAE;QAChBD,IAAI,CAACE,UAAU,CAAC,IAAI,EAAE,UAAUC,cAAc,EAAE;UAC9C,OAAOA,cAAc,CAACT,GAAG,CAAC,UAAUC,KAAK,EAAE;YACzC,OAAO;cACLZ,CAAC,EAAEY,KAAK,CAACZ,CAAC,GAAGO,KAAK,CAACP,CAAC;cACpBC,CAAC,EAAEW,KAAK,CAACX,CAAC,GAAGM,KAAK,CAACN;YACrB,CAAC;UACH,CAAC,CAAC;QACJ,CAAC,CAAC;MACJ,CAAC,MAAM;QACL,IAAIG,MAAM,GAAGa,IAAI,CAACb,MAAM;QACxB,IAAIiB,MAAM,GAAGJ,IAAI,CAACI,MAAM;QAExB,IAAIC,YAAY,GAAG;UACjBtB,CAAC,EAAEqB,MAAM,CAACrB,CAAC,IAAI,CAAC,GAAGO,KAAK,CAACP,CAAC,CAAC;UAC3BC,CAAC,EAAEoB,MAAM,CAACpB,CAAC,IAAI,CAAC,GAAGM,KAAK,CAACN,CAAC;QAC5B,CAAC;QAED,IAAIsB,WAAW,GAAGnB,MAAM,CAACI,KAAK,IAAI,CAAC,GAAGD,KAAK,CAACP,CAAC,CAAC;QAC9C,IAAIwB,YAAY,GAAGpB,MAAM,CAACK,MAAM,IAAI,CAAC,GAAGF,KAAK,CAACN,CAAC,CAAC;QAEhD,IAAIwB,UAAU,GAAG,EAAEH,YAAY,CAACtB,CAAC,GAAGuB,WAAW,GAAG,CAAC,CAAC;QACpD,IAAIG,SAAS,GAAG,EAAEJ,YAAY,CAACrB,CAAC,GAAGuB,YAAY,GAAG,CAAC,CAAC;QAEpDP,IAAI,CAACb,MAAM,GAAG;UACZS,IAAI,EAAET,MAAM,CAACS,IAAI,GAAGY,UAAU;UAC9BX,GAAG,EAAEV,MAAM,CAACU,GAAG,GAAGY,SAAS;UAC3BlB,KAAK,EAAEJ,MAAM,CAACI,KAAK,GAAGD,KAAK,CAACP,CAAC;UAC7BS,MAAM,EAAEL,MAAM,CAACK,MAAM,GAAGF,KAAK,CAACN;QAChC,CAAC;MACH;IACF,CAAC,CAAC;EACN;EAEA,IAAI0B,SAASA,CAAA,EAAG;IACd,OAAO,KAAK;EACd;EAEA,IAAIvB,MAAMA,CAAA,EAAG;IACX,OAAO,KAAK,CAACA,MAAM;EACrB;EAEA,IAAIwB,eAAeA,CAAA,EAAG;IACpB,OAAO,KAAK;EACd;EAEAC,cAAcA,CAAA,EAAG;IACf,OAAO,KAAK;EACd;EAEAC,eAAeA,CAAA,EAAG;IAChB,IAAI,CAACC,UAAU,CAAC,CAAC;IAEjB,IAAI,CAAC1B,YAAY,GAAG,IAAI;IAExB,IAAI,CAAC2B,YAAY,CAAC,UAAU5B,MAAM,EAAE;MAClC,IAAI6B,KAAK,GAAGC,kBAAS,CAACD,KAAK,CACzB,IAAI,CAAClB,UAAU,CAACJ,GAAG,CAACwB,SAAS,IAAI;QAC/B,OAAOA,SAAS,CAAC/B,MAAM;MACzB,CAAC,CACH,CAAC;MAED,IAAI,CAACW,UAAU,CAACC,OAAO,CAACmB,SAAS,IAAI;QACnC,IAAIC,OAAO,GAAGD,SAAS,CAAC/B,MAAM;QAE9B+B,SAAS,CAAC/B,MAAM,GAAG;UACjBS,IAAI,EAAEuB,OAAO,CAACvB,IAAI,GAAGoB,KAAK,CAACpB,IAAI;UAC/BC,GAAG,EAAEsB,OAAO,CAACtB,GAAG,GAAGmB,KAAK,CAACnB,GAAG;UAC5BN,KAAK,EAAE4B,OAAO,CAAC5B,KAAK;UACpBC,MAAM,EAAE2B,OAAO,CAAC3B;QAClB,CAAC;MACH,CAAC,CAAC;MAEF,OAAO;QACLI,IAAI,EAAET,MAAM,CAACS,IAAI,GAAGoB,KAAK,CAACpB,IAAI;QAC9BC,GAAG,EAAEV,MAAM,CAACU,GAAG,GAAGmB,KAAK,CAACnB,GAAG;QAC3BN,KAAK,EAAEyB,KAAK,CAACzB,KAAK;QAClBC,MAAM,EAAEwB,KAAK,CAACxB;MAChB,CAAC;IACH,CAAC,EAAE,IAAI,CAAC;IAER,IAAI,CAACJ,YAAY,GAAG,KAAK;IAEzB,IAAI,IAAI,CAACgC,MAAM,CAACjD,OAAO,CAAC,CAAC,EAAE,IAAI,CAACiD,MAAM,CAACP,eAAe,CAAC,CAAC;EAC1D;;EAEA;;EAEAQ,MAAMA,CAACC,OAAO,EAAE,CAAC;EAEjBC,UAAUA,CAACD,OAAO,EAAE;IAClB;IACA,IAAI;MAAEzB,GAAG;MAAED,IAAI;MAAEN;IAAM,CAAC,GAAG,IAAI,CAACkC,KAAK;IACrCF,OAAO,CAACG,SAAS,CAAC7B,IAAI,EAAEC,GAAG,CAAC;IAE5B,IAAI,CAAC6B,MAAM,CAACC,SAAS,CAAC,IAAI,CAAC,CAAC5B,OAAO,CAAC6B,CAAC,IAAI;MACvCA,CAAC,CAACC,IAAI,CAACP,OAAO,CAAC;IACjB,CAAC,CAAC;IAEFA,OAAO,CAACG,SAAS,CAAC,CAAC7B,IAAI,EAAE,CAACC,GAAG,CAAC;EAChC;AACF;AAACiC,OAAA,CAAA/D,OAAA,GAAAE,KAAA;AAEDgD,kBAAS,CAACc,QAAQ,CAAC,OAAO,EAAE9D,KAAK,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.createElement = exports.createCanvas = void 0;
|
|
7
|
+
/*
|
|
8
|
+
* Copyright © HatioLab Inc. All rights reserved.
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
var createCanvas, createElement;
|
|
12
|
+
if (typeof document === 'undefined') {
|
|
13
|
+
exports.createCanvas = createCanvas = function (width, height) {
|
|
14
|
+
return new Canvas(width, height);
|
|
15
|
+
};
|
|
16
|
+
} else {
|
|
17
|
+
exports.createCanvas = createCanvas = function (width, height) {
|
|
18
|
+
var canvas = document.createElement('canvas');
|
|
19
|
+
canvas.width = width;
|
|
20
|
+
canvas.height = height;
|
|
21
|
+
return canvas;
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=elements.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"elements.js","names":["createCanvas","createElement","document","exports","width","height","Canvas","canvas"],"sources":["../../../src/components/html/elements.js"],"sourcesContent":["/*\n * Copyright © HatioLab Inc. All rights reserved.\n */\n\nexport var createCanvas, createElement\n\nif (typeof document === 'undefined') {\n createCanvas = function(width, height) {\n return new Canvas(width, height)\n }\n} else {\n createCanvas = function(width, height) {\n var canvas = document.createElement('canvas')\n canvas.width = width\n canvas.height = height\n return canvas\n }\n}\n"],"mappings":";;;;;;AAAA;AACA;AACA;;AAEO,IAAIA,YAAY,EAAEC,aAAa;AAEtC,IAAI,OAAOC,QAAQ,KAAK,WAAW,EAAE;EACnCC,OAAA,CAAAH,YAAA,GAAAA,YAAY,GAAG,SAAAA,CAASI,KAAK,EAAEC,MAAM,EAAE;IACrC,OAAO,IAAIC,MAAM,CAACF,KAAK,EAAEC,MAAM,CAAC;EAClC,CAAC;AACH,CAAC,MAAM;EACLF,OAAA,CAAAH,YAAA,GAAAA,YAAY,GAAG,SAAAA,CAASI,KAAK,EAAEC,MAAM,EAAE;IACrC,IAAIE,MAAM,GAAGL,QAAQ,CAACD,aAAa,CAAC,QAAQ,CAAC;IAC7CM,MAAM,CAACH,KAAK,GAAGA,KAAK;IACpBG,MAAM,CAACF,MAAM,GAAGA,MAAM;IACtB,OAAOE,MAAM;EACf,CAAC;AACH","ignoreList":[]}
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = fill;
|
|
7
|
+
/*
|
|
8
|
+
* Copyright © HatioLab Inc. All rights reserved.
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
function fill(component) {
|
|
12
|
+
var element = component.element;
|
|
13
|
+
var fillStyle = component.fillStyle;
|
|
14
|
+
var style = element.style;
|
|
15
|
+
if (!fillStyle) {
|
|
16
|
+
style.background = 'transparent';
|
|
17
|
+
return;
|
|
18
|
+
}
|
|
19
|
+
if (typeof fillStyle == 'string') {
|
|
20
|
+
style.backgroundColor = fillStyle;
|
|
21
|
+
} else {
|
|
22
|
+
switch (fillStyle.type) {
|
|
23
|
+
case 'pattern':
|
|
24
|
+
style.backgroundImage = 'url(' + fillStyle.image + ')';
|
|
25
|
+
style.backgroundColor = 'transparent';
|
|
26
|
+
if (fillStyle.fitPattern) {
|
|
27
|
+
style.backgroundSize = '100% 100%';
|
|
28
|
+
} else if (!fillStyle.width && !fillStyle.height) {
|
|
29
|
+
style.backgroundSize = 'contain';
|
|
30
|
+
} else {
|
|
31
|
+
style.backgroundSize = `${fillStyle.width ? fillStyle.width + 'px' : 'auto'} ${fillStyle.height ? fillStyle.height + 'px' : 'auto'}`;
|
|
32
|
+
}
|
|
33
|
+
if (fillStyle.fitPattern) {
|
|
34
|
+
style.backgroundRepeat = 'no-repeat';
|
|
35
|
+
} else {
|
|
36
|
+
const {
|
|
37
|
+
offsetX,
|
|
38
|
+
offsetY,
|
|
39
|
+
noRepeat,
|
|
40
|
+
align,
|
|
41
|
+
color
|
|
42
|
+
} = fillStyle;
|
|
43
|
+
if (noRepeat) {
|
|
44
|
+
style.backgroundRepeat = 'no-repeat';
|
|
45
|
+
}
|
|
46
|
+
if (color) {
|
|
47
|
+
style.backgroundColor = color;
|
|
48
|
+
}
|
|
49
|
+
if (align) {
|
|
50
|
+
switch (align) {
|
|
51
|
+
case 'center':
|
|
52
|
+
style.backgroundPosition = 'center center';
|
|
53
|
+
break;
|
|
54
|
+
case 'left-top':
|
|
55
|
+
style.backgroundPosition = 'left top';
|
|
56
|
+
break;
|
|
57
|
+
case 'left-bottom':
|
|
58
|
+
style.backgroundPosition = 'left bottom';
|
|
59
|
+
break;
|
|
60
|
+
case 'right-top':
|
|
61
|
+
style.backgroundPosition = 'right top';
|
|
62
|
+
break;
|
|
63
|
+
case 'right-bottom':
|
|
64
|
+
style.backgroundPosition = 'right bottom';
|
|
65
|
+
break;
|
|
66
|
+
case 'left':
|
|
67
|
+
style.backgroundPosition = 'left center';
|
|
68
|
+
break;
|
|
69
|
+
case 'right':
|
|
70
|
+
style.backgroundPosition = 'right center';
|
|
71
|
+
break;
|
|
72
|
+
case 'top':
|
|
73
|
+
style.backgroundPosition = 'center top';
|
|
74
|
+
break;
|
|
75
|
+
case 'bottom':
|
|
76
|
+
style.backgroundPosition = 'center bottom';
|
|
77
|
+
break;
|
|
78
|
+
}
|
|
79
|
+
} else if (offsetX || offsetY) {
|
|
80
|
+
style.backgroundPosition = `${Number(offsetX) || 0}px ${Number(offsetY) || 0}px`;
|
|
81
|
+
} else {
|
|
82
|
+
delete style.backgroundPosition;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
break;
|
|
86
|
+
case 'gradient':
|
|
87
|
+
style.background = gradation(component, fillStyle);
|
|
88
|
+
break;
|
|
89
|
+
default:
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
function gradation(component, fillStyle) {
|
|
94
|
+
var colorStops = fillStyle.colorStops;
|
|
95
|
+
var type = fillStyle.gradientType;
|
|
96
|
+
if (colorStops instanceof Array && colorStops.length > 0) {
|
|
97
|
+
switch (type) {
|
|
98
|
+
case 'radial':
|
|
99
|
+
let center = fillStyle.center || 'center';
|
|
100
|
+
return 'radial-gradient(farthest-corner at ' + position(component, center).map(p => p + 'px').join(' ') + ',' + colorStops.map(stop => `${stop.color} ${stop.position * 100}%`).join(',') + ')';
|
|
101
|
+
case 'linear':
|
|
102
|
+
let angle = (fillStyle.rotation || 0) * 180 / 3.141592653589793 + 90 + 'deg';
|
|
103
|
+
return 'linear-gradient(' + angle + ', ' + colorStops.map(stop => `${stop.color} ${stop.position * 100}%`).join(',') + ')';
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
return '';
|
|
107
|
+
}
|
|
108
|
+
function position(component, center) {
|
|
109
|
+
var {
|
|
110
|
+
width,
|
|
111
|
+
height
|
|
112
|
+
} = component.bounds;
|
|
113
|
+
switch (center) {
|
|
114
|
+
case 'center':
|
|
115
|
+
return [width / 2, height / 2];
|
|
116
|
+
case 'left-top':
|
|
117
|
+
return [0, 0];
|
|
118
|
+
case 'right-top':
|
|
119
|
+
return [width, 0];
|
|
120
|
+
case 'left-bottom':
|
|
121
|
+
return [0, height];
|
|
122
|
+
default:
|
|
123
|
+
return [width, height];
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
//# sourceMappingURL=fill.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fill.js","names":["fill","component","element","fillStyle","style","background","backgroundColor","type","backgroundImage","image","fitPattern","backgroundSize","width","height","backgroundRepeat","offsetX","offsetY","noRepeat","align","color","backgroundPosition","Number","gradation","colorStops","gradientType","Array","length","center","position","map","p","join","stop","angle","rotation","bounds"],"sources":["../../../src/components/html/fill.js"],"sourcesContent":["/*\n * Copyright © HatioLab Inc. All rights reserved.\n */\n\nexport default function fill(component) {\n var element = component.element\n var fillStyle = component.fillStyle\n var style = element.style\n\n if (!fillStyle) {\n style.background = 'transparent'\n return\n }\n\n if (typeof fillStyle == 'string') {\n style.backgroundColor = fillStyle\n } else {\n switch (fillStyle.type) {\n case 'pattern':\n style.backgroundImage = 'url(' + fillStyle.image + ')'\n style.backgroundColor = 'transparent'\n\n if (fillStyle.fitPattern) {\n style.backgroundSize = '100% 100%'\n } else if (!fillStyle.width && !fillStyle.height) {\n style.backgroundSize = 'contain'\n } else {\n style.backgroundSize = `${fillStyle.width ? fillStyle.width + 'px' : 'auto'} ${\n fillStyle.height ? fillStyle.height + 'px' : 'auto'\n }`\n }\n\n if (fillStyle.fitPattern) {\n style.backgroundRepeat = 'no-repeat'\n } else {\n const { offsetX, offsetY, noRepeat, align, color } = fillStyle\n if (noRepeat) {\n style.backgroundRepeat = 'no-repeat'\n }\n if (color) {\n style.backgroundColor = color\n }\n if (align) {\n switch (align) {\n case 'center':\n style.backgroundPosition = 'center center'\n break\n case 'left-top':\n style.backgroundPosition = 'left top'\n break\n case 'left-bottom':\n style.backgroundPosition = 'left bottom'\n break\n case 'right-top':\n style.backgroundPosition = 'right top'\n break\n case 'right-bottom':\n style.backgroundPosition = 'right bottom'\n break\n case 'left':\n style.backgroundPosition = 'left center'\n break\n case 'right':\n style.backgroundPosition = 'right center'\n break\n case 'top':\n style.backgroundPosition = 'center top'\n break\n case 'bottom':\n style.backgroundPosition = 'center bottom'\n break\n }\n } else if (offsetX || offsetY) {\n style.backgroundPosition = `${Number(offsetX) || 0}px ${Number(offsetY) || 0}px`\n } else {\n delete style.backgroundPosition\n }\n }\n break\n\n case 'gradient':\n style.background = gradation(component, fillStyle)\n break\n\n default:\n }\n }\n}\n\nfunction gradation(component, fillStyle) {\n var colorStops = fillStyle.colorStops\n var type = fillStyle.gradientType\n\n if (colorStops instanceof Array && colorStops.length > 0) {\n switch (type) {\n case 'radial':\n let center = fillStyle.center || 'center'\n return (\n 'radial-gradient(farthest-corner at ' +\n position(component, center)\n .map(p => p + 'px')\n .join(' ') +\n ',' +\n colorStops.map(stop => `${stop.color} ${stop.position * 100}%`).join(',') +\n ')'\n )\n\n case 'linear':\n let angle = ((fillStyle.rotation || 0) * 180) / 3.141592653589793 + 90 + 'deg'\n return (\n 'linear-gradient(' +\n angle +\n ', ' +\n colorStops.map(stop => `${stop.color} ${stop.position * 100}%`).join(',') +\n ')'\n )\n }\n }\n\n return ''\n}\n\nfunction position(component, center) {\n var { width, height } = component.bounds\n\n switch (center) {\n case 'center':\n return [width / 2, height / 2]\n case 'left-top':\n return [0, 0]\n case 'right-top':\n return [width, 0]\n case 'left-bottom':\n return [0, height]\n default:\n return [width, height]\n }\n}\n"],"mappings":";;;;;;AAAA;AACA;AACA;;AAEe,SAASA,IAAIA,CAACC,SAAS,EAAE;EACtC,IAAIC,OAAO,GAAGD,SAAS,CAACC,OAAO;EAC/B,IAAIC,SAAS,GAAGF,SAAS,CAACE,SAAS;EACnC,IAAIC,KAAK,GAAGF,OAAO,CAACE,KAAK;EAEzB,IAAI,CAACD,SAAS,EAAE;IACdC,KAAK,CAACC,UAAU,GAAG,aAAa;IAChC;EACF;EAEA,IAAI,OAAOF,SAAS,IAAI,QAAQ,EAAE;IAChCC,KAAK,CAACE,eAAe,GAAGH,SAAS;EACnC,CAAC,MAAM;IACL,QAAQA,SAAS,CAACI,IAAI;MACpB,KAAK,SAAS;QACZH,KAAK,CAACI,eAAe,GAAG,MAAM,GAAGL,SAAS,CAACM,KAAK,GAAG,GAAG;QACtDL,KAAK,CAACE,eAAe,GAAG,aAAa;QAErC,IAAIH,SAAS,CAACO,UAAU,EAAE;UACxBN,KAAK,CAACO,cAAc,GAAG,WAAW;QACpC,CAAC,MAAM,IAAI,CAACR,SAAS,CAACS,KAAK,IAAI,CAACT,SAAS,CAACU,MAAM,EAAE;UAChDT,KAAK,CAACO,cAAc,GAAG,SAAS;QAClC,CAAC,MAAM;UACLP,KAAK,CAACO,cAAc,GAAG,GAAGR,SAAS,CAACS,KAAK,GAAGT,SAAS,CAACS,KAAK,GAAG,IAAI,GAAG,MAAM,IACzET,SAAS,CAACU,MAAM,GAAGV,SAAS,CAACU,MAAM,GAAG,IAAI,GAAG,MAAM,EACnD;QACJ;QAEA,IAAIV,SAAS,CAACO,UAAU,EAAE;UACxBN,KAAK,CAACU,gBAAgB,GAAG,WAAW;QACtC,CAAC,MAAM;UACL,MAAM;YAAEC,OAAO;YAAEC,OAAO;YAAEC,QAAQ;YAAEC,KAAK;YAAEC;UAAM,CAAC,GAAGhB,SAAS;UAC9D,IAAIc,QAAQ,EAAE;YACZb,KAAK,CAACU,gBAAgB,GAAG,WAAW;UACtC;UACA,IAAIK,KAAK,EAAE;YACTf,KAAK,CAACE,eAAe,GAAGa,KAAK;UAC/B;UACA,IAAID,KAAK,EAAE;YACT,QAAQA,KAAK;cACX,KAAK,QAAQ;gBACXd,KAAK,CAACgB,kBAAkB,GAAG,eAAe;gBAC1C;cACF,KAAK,UAAU;gBACbhB,KAAK,CAACgB,kBAAkB,GAAG,UAAU;gBACrC;cACF,KAAK,aAAa;gBAChBhB,KAAK,CAACgB,kBAAkB,GAAG,aAAa;gBACxC;cACF,KAAK,WAAW;gBACdhB,KAAK,CAACgB,kBAAkB,GAAG,WAAW;gBACtC;cACF,KAAK,cAAc;gBACjBhB,KAAK,CAACgB,kBAAkB,GAAG,cAAc;gBACzC;cACF,KAAK,MAAM;gBACThB,KAAK,CAACgB,kBAAkB,GAAG,aAAa;gBACxC;cACF,KAAK,OAAO;gBACVhB,KAAK,CAACgB,kBAAkB,GAAG,cAAc;gBACzC;cACF,KAAK,KAAK;gBACRhB,KAAK,CAACgB,kBAAkB,GAAG,YAAY;gBACvC;cACF,KAAK,QAAQ;gBACXhB,KAAK,CAACgB,kBAAkB,GAAG,eAAe;gBAC1C;YACJ;UACF,CAAC,MAAM,IAAIL,OAAO,IAAIC,OAAO,EAAE;YAC7BZ,KAAK,CAACgB,kBAAkB,GAAG,GAAGC,MAAM,CAACN,OAAO,CAAC,IAAI,CAAC,MAAMM,MAAM,CAACL,OAAO,CAAC,IAAI,CAAC,IAAI;UAClF,CAAC,MAAM;YACL,OAAOZ,KAAK,CAACgB,kBAAkB;UACjC;QACF;QACA;MAEF,KAAK,UAAU;QACbhB,KAAK,CAACC,UAAU,GAAGiB,SAAS,CAACrB,SAAS,EAAEE,SAAS,CAAC;QAClD;MAEF;IACF;EACF;AACF;AAEA,SAASmB,SAASA,CAACrB,SAAS,EAAEE,SAAS,EAAE;EACvC,IAAIoB,UAAU,GAAGpB,SAAS,CAACoB,UAAU;EACrC,IAAIhB,IAAI,GAAGJ,SAAS,CAACqB,YAAY;EAEjC,IAAID,UAAU,YAAYE,KAAK,IAAIF,UAAU,CAACG,MAAM,GAAG,CAAC,EAAE;IACxD,QAAQnB,IAAI;MACV,KAAK,QAAQ;QACX,IAAIoB,MAAM,GAAGxB,SAAS,CAACwB,MAAM,IAAI,QAAQ;QACzC,OACE,qCAAqC,GACrCC,QAAQ,CAAC3B,SAAS,EAAE0B,MAAM,CAAC,CACxBE,GAAG,CAACC,CAAC,IAAIA,CAAC,GAAG,IAAI,CAAC,CAClBC,IAAI,CAAC,GAAG,CAAC,GACZ,GAAG,GACHR,UAAU,CAACM,GAAG,CAACG,IAAI,IAAI,GAAGA,IAAI,CAACb,KAAK,IAAIa,IAAI,CAACJ,QAAQ,GAAG,GAAG,GAAG,CAAC,CAACG,IAAI,CAAC,GAAG,CAAC,GACzE,GAAG;MAGP,KAAK,QAAQ;QACX,IAAIE,KAAK,GAAI,CAAC9B,SAAS,CAAC+B,QAAQ,IAAI,CAAC,IAAI,GAAG,GAAI,iBAAiB,GAAG,EAAE,GAAG,KAAK;QAC9E,OACE,kBAAkB,GAClBD,KAAK,GACL,IAAI,GACJV,UAAU,CAACM,GAAG,CAACG,IAAI,IAAI,GAAGA,IAAI,CAACb,KAAK,IAAIa,IAAI,CAACJ,QAAQ,GAAG,GAAG,GAAG,CAAC,CAACG,IAAI,CAAC,GAAG,CAAC,GACzE,GAAG;IAET;EACF;EAEA,OAAO,EAAE;AACX;AAEA,SAASH,QAAQA,CAAC3B,SAAS,EAAE0B,MAAM,EAAE;EACnC,IAAI;IAAEf,KAAK;IAAEC;EAAO,CAAC,GAAGZ,SAAS,CAACkC,MAAM;EAExC,QAAQR,MAAM;IACZ,KAAK,QAAQ;MACX,OAAO,CAACf,KAAK,GAAG,CAAC,EAAEC,MAAM,GAAG,CAAC,CAAC;IAChC,KAAK,UAAU;MACb,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,WAAW;MACd,OAAO,CAACD,KAAK,EAAE,CAAC,CAAC;IACnB,KAAK,aAAa;MAChB,OAAO,CAAC,CAAC,EAAEC,MAAM,CAAC;IACpB;MACE,OAAO,CAACD,KAAK,EAAEC,MAAM,CAAC;EAC1B;AACF","ignoreList":[]}
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = reposition;
|
|
7
|
+
var _const = require("../../const.js");
|
|
8
|
+
var _fill = _interopRequireDefault(require("./fill.js"));
|
|
9
|
+
var _shadow = _interopRequireDefault(require("./shadow.js"));
|
|
10
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
11
|
+
/*
|
|
12
|
+
* Copyright © HatioLab Inc. All rights reserved.
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
const SCALE_DEFAULT = {
|
|
16
|
+
x: 1,
|
|
17
|
+
y: 1
|
|
18
|
+
};
|
|
19
|
+
const TRANSLATE_DEFAULT = {
|
|
20
|
+
x: 0,
|
|
21
|
+
y: 0
|
|
22
|
+
};
|
|
23
|
+
const DEFAULT_STYLE = {
|
|
24
|
+
boxSizing: 'border-box',
|
|
25
|
+
margin: '0px',
|
|
26
|
+
position: 'absolute',
|
|
27
|
+
outline: 'none'
|
|
28
|
+
};
|
|
29
|
+
function reposition(component) {
|
|
30
|
+
var {
|
|
31
|
+
id,
|
|
32
|
+
scale = SCALE_DEFAULT,
|
|
33
|
+
translate = TRANSLATE_DEFAULT,
|
|
34
|
+
bold,
|
|
35
|
+
italic,
|
|
36
|
+
fontFamily = '',
|
|
37
|
+
textAlign,
|
|
38
|
+
textBaseline,
|
|
39
|
+
textOverflow,
|
|
40
|
+
paddingTop,
|
|
41
|
+
paddingBottom,
|
|
42
|
+
paddingLeft,
|
|
43
|
+
paddingRight,
|
|
44
|
+
fontSize = _const.DEFAULT.FONT_SIZE,
|
|
45
|
+
lineWidth = 0,
|
|
46
|
+
lineHeight,
|
|
47
|
+
lineDash
|
|
48
|
+
} = component.state;
|
|
49
|
+
paddingBottom ||= 0;
|
|
50
|
+
paddingTop ||= 0;
|
|
51
|
+
paddingLeft ||= 0;
|
|
52
|
+
paddingRight ||= 0;
|
|
53
|
+
var className = component.state['class'];
|
|
54
|
+
var text = component.text;
|
|
55
|
+
var {
|
|
56
|
+
strokeStyle,
|
|
57
|
+
fillStyle,
|
|
58
|
+
rotation = 0,
|
|
59
|
+
fontColor,
|
|
60
|
+
hidden
|
|
61
|
+
} = component;
|
|
62
|
+
var {
|
|
63
|
+
left,
|
|
64
|
+
top,
|
|
65
|
+
width,
|
|
66
|
+
height
|
|
67
|
+
} = component.bounds;
|
|
68
|
+
|
|
69
|
+
// element의 기본 속성을 설정한다.
|
|
70
|
+
var element = component.element;
|
|
71
|
+
element.hidden = hidden;
|
|
72
|
+
if (id) element.id = id;
|
|
73
|
+
if (className) element.className = className;
|
|
74
|
+
|
|
75
|
+
// element의 기본 style을 설정한다.
|
|
76
|
+
|
|
77
|
+
Object.assign(element.style, DEFAULT_STYLE, {
|
|
78
|
+
fontFamily: fontFamily,
|
|
79
|
+
fontSize: fontSize + 'px',
|
|
80
|
+
width: width + 'px',
|
|
81
|
+
height: height + 'px',
|
|
82
|
+
paddingTop: paddingTop + 'px',
|
|
83
|
+
paddingRight: paddingRight + 'px',
|
|
84
|
+
paddingBottom: paddingBottom + 'px',
|
|
85
|
+
paddingLeft: paddingLeft + 'px',
|
|
86
|
+
border: lineWidth + 'px',
|
|
87
|
+
borderColor: strokeStyle,
|
|
88
|
+
borderStyle: lineWidth > 0 ? lineDash || _const.DEFAULT.LINE_DASH : '',
|
|
89
|
+
color: fontColor,
|
|
90
|
+
fontWeight: bold ? 'bold' : '',
|
|
91
|
+
fontStyle: italic ? 'italic' : '',
|
|
92
|
+
textAlign: textAlign == 'end' ? 'right' : textAlign == 'start' ? 'left' : textAlign,
|
|
93
|
+
verticalAlign: textBaseline,
|
|
94
|
+
lineHeight: lineHeight === undefined ? '' : lineHeight + 'px',
|
|
95
|
+
whiteSpace: textOverflow ? 'nowrap' : '',
|
|
96
|
+
overflow: textOverflow ? 'hidden' : '',
|
|
97
|
+
textOverflow: textOverflow || ''
|
|
98
|
+
}, /* 3D 공간에서는 자체적으로 위치를 조정하므로, left, top을 설정하지 않는다. */
|
|
99
|
+
!component.isIn3DSpace() ? {
|
|
100
|
+
left: left + 'px',
|
|
101
|
+
top: top + 'px'
|
|
102
|
+
} : {});
|
|
103
|
+
(0, _fill.default)(component);
|
|
104
|
+
(0, _shadow.default)(component);
|
|
105
|
+
if (component.isIn3DSpace()) {
|
|
106
|
+
/* 3D 공간에서는 자체적으로 transform을 사용하므로 종료한다. */
|
|
107
|
+
return;
|
|
108
|
+
}
|
|
109
|
+
var delta = component.delta();
|
|
110
|
+
var sx = (scale && scale.x || 1) * delta.sx;
|
|
111
|
+
var sy = (scale && scale.y || 1) * delta.sy;
|
|
112
|
+
var theta = (rotation || 0) + delta.theta;
|
|
113
|
+
var tx = delta.tx || 0;
|
|
114
|
+
var ty = delta.ty || 0;
|
|
115
|
+
|
|
116
|
+
/* CONFIRM-ME `transform: perspective(1px)` 스타일 설정은 scaling된 dom element를 좀 더 선명하게 보이도록 해준다. (Chrome 브라우저에서) */
|
|
117
|
+
element.style.transform = `rotate(${theta}rad) translate(${tx}px, ${ty}px) scale(${sx}, ${sy}) perspective(1px)`;
|
|
118
|
+
}
|
|
119
|
+
//# sourceMappingURL=reposition.js.map
|