@hatiolab/things-scene 9.0.0-beta.36 → 9.0.0-beta.37
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/package.json +1 -1
- package/things-scene-min.js +11 -11
- package/things-scene-min.js.map +1 -1
- package/things-scene.mjs +11 -11
- package/things-scene.mjs.map +1 -1
- package/.cursorignore +0 -62
- package/.prettierrc +0 -21
- package/assets/icon-audio.png +0 -0
- package/assets/icon-gif-viewer.png +0 -0
- package/assets/images/spinner.png +0 -0
- package/babel.config.js +0 -23
- package/db.sqlite +0 -0
- package/dist/animation/animate.js +0 -63
- package/dist/animation/animate.js.map +0 -1
- package/dist/animation/animations/animation.js +0 -122
- package/dist/animation/animations/animation.js.map +0 -1
- package/dist/animation/animations/fade.js +0 -28
- package/dist/animation/animations/fade.js.map +0 -1
- package/dist/animation/animations/heartbeat.js +0 -28
- package/dist/animation/animations/heartbeat.js.map +0 -1
- package/dist/animation/animations/moving.js +0 -24
- package/dist/animation/animations/moving.js.map +0 -1
- package/dist/animation/animations/outline.js +0 -47
- package/dist/animation/animations/outline.js.map +0 -1
- package/dist/animation/animations/rotation.js +0 -22
- package/dist/animation/animations/rotation.js.map +0 -1
- package/dist/animation/animations/vibration.js +0 -31
- package/dist/animation/animations/vibration.js.map +0 -1
- package/dist/animation/compile.js +0 -31
- package/dist/animation/compile.js.map +0 -1
- package/dist/animation/delta.js +0 -51
- package/dist/animation/delta.js.map +0 -1
- package/dist/animation/index.js +0 -14
- package/dist/animation/index.js.map +0 -1
- package/dist/command/command-change.js +0 -33
- package/dist/command/command-change.js.map +0 -1
- package/dist/command/command-migrate.js +0 -103
- package/dist/command/command-migrate.js.map +0 -1
- package/dist/command/command.js +0 -18
- package/dist/command/command.js.map +0 -1
- package/dist/command/snapshot-commander.js +0 -84
- package/dist/command/snapshot-commander.js.map +0 -1
- package/dist/components/anchor/anchor.js +0 -105
- package/dist/components/anchor/anchor.js.map +0 -1
- package/dist/components/anchor/ellipse-anchors.js +0 -53
- package/dist/components/anchor/ellipse-anchors.js.map +0 -1
- package/dist/components/anchor/rect-anchors.js +0 -53
- package/dist/components/anchor/rect-anchors.js.map +0 -1
- package/dist/components/audio.js +0 -154
- package/dist/components/audio.js.map +0 -1
- package/dist/components/cloud.js +0 -44
- package/dist/components/cloud.js.map +0 -1
- package/dist/components/component.js +0 -1086
- package/dist/components/component.js.map +0 -1
- package/dist/components/container-abstract.js +0 -387
- package/dist/components/container-abstract.js.map +0 -1
- package/dist/components/container.js +0 -331
- package/dist/components/container.js.map +0 -1
- package/dist/components/data/data-mapping.js +0 -82
- package/dist/components/data/data-mapping.js.map +0 -1
- package/dist/components/data/data.js +0 -166
- package/dist/components/data/data.js.map +0 -1
- package/dist/components/data/evaluator.js +0 -103
- package/dist/components/data/evaluator.js.map +0 -1
- package/dist/components/donut.js +0 -104
- package/dist/components/donut.js.map +0 -1
- package/dist/components/drawer/draw-image-pendable.js +0 -20
- package/dist/components/drawer/draw-image-pendable.js.map +0 -1
- package/dist/components/drawer/effect.js +0 -19
- package/dist/components/drawer/effect.js.map +0 -1
- package/dist/components/drawer/fill.js +0 -228
- package/dist/components/drawer/fill.js.map +0 -1
- package/dist/components/drawer/format.js +0 -115
- package/dist/components/drawer/format.js.map +0 -1
- package/dist/components/drawer/line.js +0 -191
- package/dist/components/drawer/line.js.map +0 -1
- package/dist/components/drawer/stroke.js +0 -62
- package/dist/components/drawer/stroke.js.map +0 -1
- package/dist/components/drawer/text-wrapper.js +0 -51
- package/dist/components/drawer/text-wrapper.js.map +0 -1
- package/dist/components/drawer/text.js +0 -269
- package/dist/components/drawer/text.js.map +0 -1
- package/dist/components/ellipse.js +0 -110
- package/dist/components/ellipse.js.map +0 -1
- package/dist/components/file/ondropfile.js +0 -19
- package/dist/components/file/ondropfile.js.map +0 -1
- package/dist/components/fit/fit.js +0 -137
- package/dist/components/fit/fit.js.map +0 -1
- package/dist/components/geometry/transcoord.js +0 -339
- package/dist/components/geometry/transcoord.js.map +0 -1
- package/dist/components/geometry/union.js +0 -35
- package/dist/components/geometry/union.js.map +0 -1
- package/dist/components/gif-view.js +0 -128
- package/dist/components/gif-view.js.map +0 -1
- package/dist/components/global-ref.js +0 -154
- package/dist/components/global-ref.js.map +0 -1
- package/dist/components/group.js +0 -171
- package/dist/components/group.js.map +0 -1
- package/dist/components/html/elements.js +0 -24
- package/dist/components/html/elements.js.map +0 -1
- package/dist/components/html/fill.js +0 -126
- package/dist/components/html/fill.js.map +0 -1
- package/dist/components/html/reposition.js +0 -119
- package/dist/components/html/reposition.js.map +0 -1
- package/dist/components/html/shadow.js +0 -24
- package/dist/components/html/shadow.js.map +0 -1
- package/dist/components/html-overlay-container.js +0 -27
- package/dist/components/html-overlay-container.js.map +0 -1
- package/dist/components/html-overlay-element.js +0 -22
- package/dist/components/html-overlay-element.js.map +0 -1
- package/dist/components/image-view.js +0 -193
- package/dist/components/image-view.js.map +0 -1
- package/dist/components/index.js +0 -231
- package/dist/components/index.js.map +0 -1
- package/dist/components/info-window.js +0 -416
- package/dist/components/info-window.js.map +0 -1
- package/dist/components/line.js +0 -374
- package/dist/components/line.js.map +0 -1
- package/dist/components/local-ref.js +0 -114
- package/dist/components/local-ref.js.map +0 -1
- package/dist/components/mixins/connectable.js +0 -128
- package/dist/components/mixins/connectable.js.map +0 -1
- package/dist/components/mixins/data-source.js +0 -34
- package/dist/components/mixins/data-source.js.map +0 -1
- package/dist/components/mixins/html-element.js +0 -107
- package/dist/components/mixins/html-element.js.map +0 -1
- package/dist/components/mixins/move-handle.js +0 -73
- package/dist/components/mixins/move-handle.js.map +0 -1
- package/dist/components/mixins/rect-path.js +0 -113
- package/dist/components/mixins/rect-path.js.map +0 -1
- package/dist/components/mixins/value-holder.js +0 -81
- package/dist/components/mixins/value-holder.js.map +0 -1
- package/dist/components/mutater/bounds.js +0 -68
- package/dist/components/mutater/bounds.js.map +0 -1
- package/dist/components/mutater/path.js +0 -73
- package/dist/components/mutater/path.js.map +0 -1
- package/dist/components/ortholine.js +0 -763
- package/dist/components/ortholine.js.map +0 -1
- package/dist/components/outline/ellipse-outline.js +0 -23
- package/dist/components/outline/ellipse-outline.js.map +0 -1
- package/dist/components/outline/path-outline.js +0 -48
- package/dist/components/outline/path-outline.js.map +0 -1
- package/dist/components/path.js +0 -49
- package/dist/components/path.js.map +0 -1
- package/dist/components/polygon.js +0 -91
- package/dist/components/polygon.js.map +0 -1
- package/dist/components/polyline.js +0 -114
- package/dist/components/polyline.js.map +0 -1
- package/dist/components/popup.js +0 -160
- package/dist/components/popup.js.map +0 -1
- package/dist/components/rect.js +0 -72
- package/dist/components/rect.js.map +0 -1
- package/dist/components/retention/retention-manager.js +0 -81
- package/dist/components/retention/retention-manager.js.map +0 -1
- package/dist/components/root-container.js +0 -519
- package/dist/components/root-container.js.map +0 -1
- package/dist/components/ruler.js +0 -103
- package/dist/components/ruler.js.map +0 -1
- package/dist/components/shape.js +0 -97
- package/dist/components/shape.js.map +0 -1
- package/dist/components/star.js +0 -103
- package/dist/components/star.js.map +0 -1
- package/dist/components/text/substitutor.js +0 -92
- package/dist/components/text/substitutor.js.map +0 -1
- package/dist/components/text.js +0 -21
- package/dist/components/text.js.map +0 -1
- package/dist/components/triangle.js +0 -92
- package/dist/components/triangle.js.map +0 -1
- package/dist/const.js +0 -71
- package/dist/const.js.map +0 -1
- package/dist/core/collection.js +0 -28
- package/dist/core/collection.js.map +0 -1
- package/dist/core/debug.js +0 -12
- package/dist/core/debug.js.map +0 -1
- package/dist/core/deep-equals.js +0 -112
- package/dist/core/deep-equals.js.map +0 -1
- package/dist/core/dom-to-image.js +0 -617
- package/dist/core/dom-to-image.js.map +0 -1
- package/dist/core/event.js +0 -205
- package/dist/core/event.js.map +0 -1
- package/dist/core/index.js +0 -21
- package/dist/core/index.js.map +0 -1
- package/dist/core/list.js +0 -87
- package/dist/core/list.js.map +0 -1
- package/dist/core/logger.js +0 -29
- package/dist/core/logger.js.map +0 -1
- package/dist/core/memoize.js +0 -40
- package/dist/core/memoize.js.map +0 -1
- package/dist/core/mixin.js +0 -26
- package/dist/core/mixin.js.map +0 -1
- package/dist/core/obj-accessor.js +0 -26
- package/dist/core/obj-accessor.js.map +0 -1
- package/dist/core/reference-map.js +0 -147
- package/dist/core/reference-map.js.map +0 -1
- package/dist/core/round-rect.js +0 -62
- package/dist/core/round-rect.js.map +0 -1
- package/dist/core/safe-round.js +0 -10
- package/dist/core/safe-round.js.map +0 -1
- package/dist/core/script-loader.js +0 -148
- package/dist/core/script-loader.js.map +0 -1
- package/dist/core/snapshot-taker.js +0 -59
- package/dist/core/snapshot-taker.js.map +0 -1
- package/dist/core/stack.js +0 -18
- package/dist/core/stack.js.map +0 -1
- package/dist/core/timecapsule.js +0 -88
- package/dist/core/timecapsule.js.map +0 -1
- package/dist/core/utils.js +0 -309
- package/dist/core/utils.js.map +0 -1
- package/dist/decorator/anchors-decorator.js +0 -53
- package/dist/decorator/anchors-decorator.js.map +0 -1
- package/dist/decorator/bouncing-arrow-decorator.js +0 -52
- package/dist/decorator/bouncing-arrow-decorator.js.map +0 -1
- package/dist/decorator/data-spread-decorator.js +0 -69
- package/dist/decorator/data-spread-decorator.js.map +0 -1
- package/dist/decorator/decotag-decorator.js +0 -33
- package/dist/decorator/decotag-decorator.js.map +0 -1
- package/dist/decorator/index.js +0 -31
- package/dist/decorator/index.js.map +0 -1
- package/dist/decorator/link-decorator.js +0 -66
- package/dist/decorator/link-decorator.js.map +0 -1
- package/dist/effect/gradation.js +0 -37
- package/dist/effect/gradation.js.map +0 -1
- package/dist/effect/index.js +0 -23
- package/dist/effect/index.js.map +0 -1
- package/dist/effect/shadow.js +0 -33
- package/dist/effect/shadow.js.map +0 -1
- package/dist/effect/turn.js +0 -25
- package/dist/effect/turn.js.map +0 -1
- package/dist/event/event-engine.js +0 -76
- package/dist/event/event-engine.js.map +0 -1
- package/dist/event/event-pump.js +0 -92
- package/dist/event/event-pump.js.map +0 -1
- package/dist/event/event-tracker.js +0 -97
- package/dist/event/event-tracker.js.map +0 -1
- package/dist/event/index.js +0 -21
- package/dist/event/index.js.map +0 -1
- package/dist/event/ua-event-handler.js +0 -453
- package/dist/event/ua-event-handler.js.map +0 -1
- package/dist/event-map/animator-handler.js +0 -225
- package/dist/event-map/animator-handler.js.map +0 -1
- package/dist/event-map/animators/animated-icon.js +0 -265
- package/dist/event-map/animators/animated-icon.js.map +0 -1
- package/dist/event-map/animators/border-highlighting.js +0 -476
- package/dist/event-map/animators/border-highlighting.js.map +0 -1
- package/dist/event-map/animators/bouncing-arrow.js +0 -226
- package/dist/event-map/animators/bouncing-arrow.js.map +0 -1
- package/dist/event-map/event-map.js +0 -36
- package/dist/event-map/event-map.js.map +0 -1
- package/dist/event-map/index.js +0 -20
- package/dist/event-map/index.js.map +0 -1
- package/dist/event-map/move-handler.js +0 -233
- package/dist/event-map/move-handler.js.map +0 -1
- package/dist/event-map/paste-handler.js +0 -176
- package/dist/event-map/paste-handler.js.map +0 -1
- package/dist/event-map/shift-handler.js +0 -55
- package/dist/event-map/shift-handler.js.map +0 -1
- package/dist/event-map/text-editor-lite.js +0 -276
- package/dist/event-map/text-editor-lite.js.map +0 -1
- package/dist/event-map/zoom-handler.js +0 -49
- package/dist/event-map/zoom-handler.js.map +0 -1
- package/dist/index.js +0 -20
- package/dist/index.js.map +0 -1
- package/dist/layer/action/emphasize.js +0 -42
- package/dist/layer/action/emphasize.js.map +0 -1
- package/dist/layer/action/popup.js +0 -461
- package/dist/layer/action/popup.js.map +0 -1
- package/dist/layer/action/pressed.js +0 -31
- package/dist/layer/action/pressed.js.map +0 -1
- package/dist/layer/add-layer.js +0 -180
- package/dist/layer/add-layer.js.map +0 -1
- package/dist/layer/decotag-layer.js +0 -121
- package/dist/layer/decotag-layer.js.map +0 -1
- package/dist/layer/guide-layer.js +0 -292
- package/dist/layer/guide-layer.js.map +0 -1
- package/dist/layer/index.js +0 -70
- package/dist/layer/index.js.map +0 -1
- package/dist/layer/layer.js +0 -230
- package/dist/layer/layer.js.map +0 -1
- package/dist/layer/minimap-layer.js +0 -84
- package/dist/layer/minimap-layer.js.map +0 -1
- package/dist/layer/model-layer.js +0 -465
- package/dist/layer/model-layer.js.map +0 -1
- package/dist/layer/modeler/anchor-handler.js +0 -193
- package/dist/layer/modeler/anchor-handler.js.map +0 -1
- package/dist/layer/modeler/control-handler.js +0 -95
- package/dist/layer/modeler/control-handler.js.map +0 -1
- package/dist/layer/modeler/focus-outline.js +0 -41
- package/dist/layer/modeler/focus-outline.js.map +0 -1
- package/dist/layer/modeler/group-outline.js +0 -30
- package/dist/layer/modeler/group-outline.js.map +0 -1
- package/dist/layer/modeler/index.js +0 -56
- package/dist/layer/modeler/index.js.map +0 -1
- package/dist/layer/modeler/path-handler.js +0 -300
- package/dist/layer/modeler/path-handler.js.map +0 -1
- package/dist/layer/modeler/resizer.js +0 -333
- package/dist/layer/modeler/resizer.js.map +0 -1
- package/dist/layer/modeler/rotator.js +0 -134
- package/dist/layer/modeler/rotator.js.map +0 -1
- package/dist/layer/modeling-layer.js +0 -491
- package/dist/layer/modeling-layer.js.map +0 -1
- package/dist/layer/reaction-layer.js +0 -111
- package/dist/layer/reaction-layer.js.map +0 -1
- package/dist/layer/scroll-layer.js +0 -191
- package/dist/layer/scroll-layer.js.map +0 -1
- package/dist/layer/selection/selected-finder.js +0 -96
- package/dist/layer/selection/selected-finder.js.map +0 -1
- package/dist/layer/selection-layer.js +0 -373
- package/dist/layer/selection-layer.js.map +0 -1
- package/dist/layer/shift-layer.js +0 -83
- package/dist/layer/shift-layer.js.map +0 -1
- package/dist/layout/absolute.js +0 -30
- package/dist/layout/absolute.js.map +0 -1
- package/dist/layout/card.js +0 -52
- package/dist/layout/card.js.map +0 -1
- package/dist/layout/html-absolute.js +0 -32
- package/dist/layout/html-absolute.js.map +0 -1
- package/dist/layout/index.js +0 -56
- package/dist/layout/index.js.map +0 -1
- package/dist/layout/layout.js +0 -36
- package/dist/layout/layout.js.map +0 -1
- package/dist/layout/linear-horizontal.js +0 -56
- package/dist/layout/linear-horizontal.js.map +0 -1
- package/dist/layout/linear-vertical.js +0 -56
- package/dist/layout/linear-vertical.js.map +0 -1
- package/dist/layout/table.js +0 -106
- package/dist/layout/table.js.map +0 -1
- package/dist/license/license.js +0 -170
- package/dist/license/license.js.map +0 -1
- package/dist/model/compile.js +0 -40
- package/dist/model/compile.js.map +0 -1
- package/dist/model/duplicate.js +0 -19
- package/dist/model/duplicate.js.map +0 -1
- package/dist/model/index.js +0 -34
- package/dist/model/index.js.map +0 -1
- package/dist/model/selector.js +0 -104
- package/dist/model/selector.js.map +0 -1
- package/dist/style/compile.js +0 -14
- package/dist/style/compile.js.map +0 -1
- package/dist/style/index.js +0 -14
- package/dist/style/index.js.map +0 -1
- package/dist/things-scene/api/add-start.js +0 -18
- package/dist/things-scene/api/add-start.js.map +0 -1
- package/dist/things-scene/api/add.js +0 -71
- package/dist/things-scene/api/add.js.map +0 -1
- package/dist/things-scene/api/align.js +0 -116
- package/dist/things-scene/api/align.js.map +0 -1
- package/dist/things-scene/api/center-to.js +0 -50
- package/dist/things-scene/api/center-to.js.map +0 -1
- package/dist/things-scene/api/change.js +0 -27
- package/dist/things-scene/api/change.js.map +0 -1
- package/dist/things-scene/api/clipboard.js +0 -45
- package/dist/things-scene/api/clipboard.js.map +0 -1
- package/dist/things-scene/api/distribute.js +0 -57
- package/dist/things-scene/api/distribute.js.map +0 -1
- package/dist/things-scene/api/duplicate.js +0 -47
- package/dist/things-scene/api/duplicate.js.map +0 -1
- package/dist/things-scene/api/fullscreen.js +0 -26
- package/dist/things-scene/api/fullscreen.js.map +0 -1
- package/dist/things-scene/api/group.js +0 -91
- package/dist/things-scene/api/group.js.map +0 -1
- package/dist/things-scene/api/ids.js +0 -28
- package/dist/things-scene/api/ids.js.map +0 -1
- package/dist/things-scene/api/index.js +0 -192
- package/dist/things-scene/api/index.js.map +0 -1
- package/dist/things-scene/api/listener.js +0 -69
- package/dist/things-scene/api/listener.js.map +0 -1
- package/dist/things-scene/api/paste-start.js +0 -27
- package/dist/things-scene/api/paste-start.js.map +0 -1
- package/dist/things-scene/api/place.js +0 -98
- package/dist/things-scene/api/place.js.map +0 -1
- package/dist/things-scene/api/remove.js +0 -57
- package/dist/things-scene/api/remove.js.map +0 -1
- package/dist/things-scene/api/symmetry.js +0 -47
- package/dist/things-scene/api/symmetry.js.map +0 -1
- package/dist/things-scene/api/to-data-url.js +0 -76
- package/dist/things-scene/api/to-data-url.js.map +0 -1
- package/dist/things-scene/api/zorder.js +0 -68
- package/dist/things-scene/api/zorder.js.map +0 -1
- package/dist/things-scene/application-context.js +0 -168
- package/dist/things-scene/application-context.js.map +0 -1
- package/dist/things-scene/config.js +0 -18
- package/dist/things-scene/config.js.map +0 -1
- package/dist/things-scene/create.js +0 -67
- package/dist/things-scene/create.js.map +0 -1
- package/dist/things-scene/fps.js +0 -26
- package/dist/things-scene/fps.js.map +0 -1
- package/dist/things-scene/index.js +0 -152
- package/dist/things-scene/index.js.map +0 -1
- package/dist/things-scene/polyfill.js +0 -111
- package/dist/things-scene/polyfill.js.map +0 -1
- package/dist/things-scene/scene.js +0 -442
- package/dist/things-scene/scene.js.map +0 -1
- package/dist/things-scene/version.js +0 -12
- package/dist/things-scene/version.js.map +0 -1
- package/rollup.config.js +0 -67
- package/schema.graphql +0 -4606
- package/tsconfig.json +0 -31
|
@@ -1,176 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var _utils = require("../core/utils.js");
|
|
4
|
-
var Const = _interopRequireWildcard(require("../const.js"));
|
|
5
|
-
var _eventMap = _interopRequireDefault(require("./event-map.js"));
|
|
6
|
-
var _commandChange = _interopRequireDefault(require("../command/command-change.js"));
|
|
7
|
-
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
8
|
-
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
|
9
|
-
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
10
|
-
var styles = {};
|
|
11
|
-
var mappings = {};
|
|
12
|
-
function removeUndefinedProperties(obj) {
|
|
13
|
-
const result = {};
|
|
14
|
-
for (const key in obj) {
|
|
15
|
-
if (obj.hasOwnProperty(key) && obj[key] !== undefined) {
|
|
16
|
-
result[key] = obj[key];
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
return result;
|
|
20
|
-
}
|
|
21
|
-
function onclick(event, hint) {
|
|
22
|
-
const {
|
|
23
|
-
deliverer
|
|
24
|
-
} = hint; /* deliverer should be ModelLayer */
|
|
25
|
-
const app = deliverer.app;
|
|
26
|
-
if (app.mode != Const.MODE_PASTE_STYLE && app.mode != Const.MODE_PASTE_DATABIND) {
|
|
27
|
-
return;
|
|
28
|
-
}
|
|
29
|
-
const target = hint.origin;
|
|
30
|
-
if (app.mode == Const.MODE_PASTE_STYLE) {
|
|
31
|
-
if (target === deliverer) {
|
|
32
|
-
deliverer.root.trigger('stylepastestop');
|
|
33
|
-
} else {
|
|
34
|
-
target && _commandChange.default.around(app.commander, () => {
|
|
35
|
-
const model = removeUndefinedProperties({
|
|
36
|
-
...target.model,
|
|
37
|
-
...styles
|
|
38
|
-
});
|
|
39
|
-
target?.set(model);
|
|
40
|
-
});
|
|
41
|
-
}
|
|
42
|
-
} else {
|
|
43
|
-
if (target === deliverer) {
|
|
44
|
-
deliverer.root.trigger('databindpastestop');
|
|
45
|
-
} else {
|
|
46
|
-
target && _commandChange.default.around(app.commander, () => {
|
|
47
|
-
const model = removeUndefinedProperties({
|
|
48
|
-
...target.model,
|
|
49
|
-
...mappings
|
|
50
|
-
});
|
|
51
|
-
target?.set(model);
|
|
52
|
-
});
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
function onstylepastestart(hint) {
|
|
57
|
-
const {
|
|
58
|
-
deliverer
|
|
59
|
-
} = hint; /* deliverer should be RootContainer */
|
|
60
|
-
const app = deliverer.app;
|
|
61
|
-
var selected = deliverer.selected;
|
|
62
|
-
if (selected && selected[0] && selected !== deliverer.rootModel) {
|
|
63
|
-
const component = selected[0];
|
|
64
|
-
const {
|
|
65
|
-
fillStyle,
|
|
66
|
-
strokeStyle,
|
|
67
|
-
alpha,
|
|
68
|
-
lineWidth,
|
|
69
|
-
lineDash,
|
|
70
|
-
lineCap,
|
|
71
|
-
lineJoin,
|
|
72
|
-
fontColor,
|
|
73
|
-
fontSize,
|
|
74
|
-
fontFamily,
|
|
75
|
-
bold,
|
|
76
|
-
italic,
|
|
77
|
-
textAlign,
|
|
78
|
-
textBaseline,
|
|
79
|
-
textOverflow,
|
|
80
|
-
paddingTop,
|
|
81
|
-
paddingBottom,
|
|
82
|
-
paddingLeft,
|
|
83
|
-
paddingRight
|
|
84
|
-
} = component.state;
|
|
85
|
-
styles = (0, _utils.clone)({
|
|
86
|
-
fillStyle,
|
|
87
|
-
strokeStyle,
|
|
88
|
-
alpha,
|
|
89
|
-
lineWidth,
|
|
90
|
-
lineDash,
|
|
91
|
-
lineCap,
|
|
92
|
-
lineJoin,
|
|
93
|
-
fontColor,
|
|
94
|
-
fontSize,
|
|
95
|
-
fontFamily,
|
|
96
|
-
bold,
|
|
97
|
-
italic,
|
|
98
|
-
textAlign,
|
|
99
|
-
textBaseline,
|
|
100
|
-
textOverflow,
|
|
101
|
-
paddingTop,
|
|
102
|
-
paddingBottom,
|
|
103
|
-
paddingLeft,
|
|
104
|
-
paddingRight
|
|
105
|
-
});
|
|
106
|
-
app.mode = Const.MODE_PASTE_STYLE;
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
function onstylepastestop(hint) {
|
|
110
|
-
const {
|
|
111
|
-
deliverer
|
|
112
|
-
} = hint; /* deliverer should be RootContainer */
|
|
113
|
-
const app = deliverer.app;
|
|
114
|
-
styles = {};
|
|
115
|
-
if (app.mode == Const.MODE_PASTE_STYLE) {
|
|
116
|
-
app.mode = Const.MODE_EDIT;
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
function ondatabindpastestart(hint) {
|
|
120
|
-
const {
|
|
121
|
-
deliverer
|
|
122
|
-
} = hint; /* deliverer should be RootContainer */
|
|
123
|
-
const app = deliverer.app;
|
|
124
|
-
var selected = deliverer.selected;
|
|
125
|
-
if (selected && selected[0] && selected !== deliverer.rootModel) {
|
|
126
|
-
const component = selected[0];
|
|
127
|
-
const {
|
|
128
|
-
mappings: sourceMappings
|
|
129
|
-
} = component.state;
|
|
130
|
-
mappings = (0, _utils.clone)({
|
|
131
|
-
mappings: sourceMappings
|
|
132
|
-
});
|
|
133
|
-
app.mode = Const.MODE_PASTE_DATABIND;
|
|
134
|
-
}
|
|
135
|
-
}
|
|
136
|
-
function ondatabindpastestop(hint) {
|
|
137
|
-
const {
|
|
138
|
-
deliverer
|
|
139
|
-
} = hint; /* deliverer should be RootContainer */
|
|
140
|
-
const app = deliverer.app;
|
|
141
|
-
mappings = {};
|
|
142
|
-
if (app.mode == Const.MODE_PASTE_DATABIND) {
|
|
143
|
-
app.mode = Const.MODE_EDIT;
|
|
144
|
-
}
|
|
145
|
-
}
|
|
146
|
-
function onkeydown(e, hint) {
|
|
147
|
-
const {
|
|
148
|
-
deliverer
|
|
149
|
-
} = hint; /* deliverer should be RootContainer */
|
|
150
|
-
|
|
151
|
-
if (e.code != 'Esc' && e.code != 'Escape') {
|
|
152
|
-
return;
|
|
153
|
-
}
|
|
154
|
-
if (deliverer.app.mode == Const.MODE_PASTE_STYLE) {
|
|
155
|
-
deliverer.trigger('stylepastestop');
|
|
156
|
-
} else if (deliverer.app.mode == Const.MODE_PASTE_DATABIND) {
|
|
157
|
-
deliverer.trigger('databindpastestop');
|
|
158
|
-
}
|
|
159
|
-
}
|
|
160
|
-
_eventMap.default.register('paste-handler', {
|
|
161
|
-
'(root)': {
|
|
162
|
-
'(self)': {
|
|
163
|
-
stylepastestart: onstylepastestart,
|
|
164
|
-
stylepastestop: onstylepastestop,
|
|
165
|
-
databindpastestart: ondatabindpastestart,
|
|
166
|
-
databindpastestop: ondatabindpastestop,
|
|
167
|
-
keydown: onkeydown
|
|
168
|
-
}
|
|
169
|
-
},
|
|
170
|
-
'model-layer': {
|
|
171
|
-
'(all)': {
|
|
172
|
-
click: onclick
|
|
173
|
-
}
|
|
174
|
-
}
|
|
175
|
-
});
|
|
176
|
-
//# sourceMappingURL=paste-handler.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"paste-handler.js","names":["_utils","require","Const","_interopRequireWildcard","_eventMap","_interopRequireDefault","_commandChange","e","__esModule","default","_getRequireWildcardCache","WeakMap","r","t","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","styles","mappings","removeUndefinedProperties","obj","result","key","undefined","onclick","event","hint","deliverer","app","mode","MODE_PASTE_STYLE","MODE_PASTE_DATABIND","target","origin","root","trigger","CommandChange","around","commander","model","onstylepastestart","selected","rootModel","component","fillStyle","strokeStyle","alpha","lineWidth","lineDash","lineCap","lineJoin","fontColor","fontSize","fontFamily","bold","italic","textAlign","textBaseline","textOverflow","paddingTop","paddingBottom","paddingLeft","paddingRight","state","clone","onstylepastestop","MODE_EDIT","ondatabindpastestart","sourceMappings","ondatabindpastestop","onkeydown","code","EventMap","register","stylepastestart","stylepastestop","databindpastestart","databindpastestop","keydown","click"],"sources":["../../src/event-map/paste-handler.js"],"sourcesContent":["import { clone } from '../core/utils.js'\nimport * as Const from '../const.js'\nimport EventMap from './event-map.js'\nimport CommandChange from '../command/command-change.js'\n\nvar styles = {}\nvar mappings = {}\n\nfunction removeUndefinedProperties(obj) {\n const result = {}\n for (const key in obj) {\n if (obj.hasOwnProperty(key) && obj[key] !== undefined) {\n result[key] = obj[key]\n }\n }\n return result\n}\n\nfunction onclick(event, hint) {\n const { deliverer } = hint /* deliverer should be ModelLayer */\n const app = deliverer.app\n\n if (app.mode != Const.MODE_PASTE_STYLE && app.mode != Const.MODE_PASTE_DATABIND) {\n return\n }\n\n const target = hint.origin\n\n if (app.mode == Const.MODE_PASTE_STYLE) {\n if (target === deliverer) {\n deliverer.root.trigger('stylepastestop')\n } else {\n target &&\n CommandChange.around(app.commander, () => {\n const model = removeUndefinedProperties({\n ...target.model,\n ...styles\n })\n\n target?.set(model)\n })\n }\n } else {\n if (target === deliverer) {\n deliverer.root.trigger('databindpastestop')\n } else {\n target &&\n CommandChange.around(app.commander, () => {\n const model = removeUndefinedProperties({\n ...target.model,\n ...mappings\n })\n\n target?.set(model)\n })\n }\n }\n}\n\nfunction onstylepastestart(hint) {\n const { deliverer } = hint /* deliverer should be RootContainer */\n const app = deliverer.app\n\n var selected = deliverer.selected\n if (selected && selected[0] && selected !== deliverer.rootModel) {\n const component = selected[0]\n const {\n fillStyle,\n strokeStyle,\n alpha,\n lineWidth,\n lineDash,\n lineCap,\n lineJoin,\n fontColor,\n fontSize,\n fontFamily,\n bold,\n italic,\n textAlign,\n textBaseline,\n textOverflow,\n paddingTop,\n paddingBottom,\n paddingLeft,\n paddingRight\n } = component.state\n\n styles = clone({\n fillStyle,\n strokeStyle,\n alpha,\n lineWidth,\n lineDash,\n lineCap,\n lineJoin,\n fontColor,\n fontSize,\n fontFamily,\n bold,\n italic,\n textAlign,\n textBaseline,\n textOverflow,\n paddingTop,\n paddingBottom,\n paddingLeft,\n paddingRight\n })\n\n app.mode = Const.MODE_PASTE_STYLE\n }\n}\n\nfunction onstylepastestop(hint) {\n const { deliverer } = hint /* deliverer should be RootContainer */\n const app = deliverer.app\n\n styles = {}\n\n if (app.mode == Const.MODE_PASTE_STYLE) {\n app.mode = Const.MODE_EDIT\n }\n}\n\nfunction ondatabindpastestart(hint) {\n const { deliverer } = hint /* deliverer should be RootContainer */\n const app = deliverer.app\n\n var selected = deliverer.selected\n if (selected && selected[0] && selected !== deliverer.rootModel) {\n const component = selected[0]\n const { mappings: sourceMappings } = component.state\n\n mappings = clone({\n mappings: sourceMappings\n })\n\n app.mode = Const.MODE_PASTE_DATABIND\n }\n}\n\nfunction ondatabindpastestop(hint) {\n const { deliverer } = hint /* deliverer should be RootContainer */\n const app = deliverer.app\n\n mappings = {}\n\n if (app.mode == Const.MODE_PASTE_DATABIND) {\n app.mode = Const.MODE_EDIT\n }\n}\n\nfunction onkeydown(e, hint) {\n const { deliverer } = hint /* deliverer should be RootContainer */\n\n if (e.code != 'Esc' && e.code != 'Escape') {\n return\n }\n\n if (deliverer.app.mode == Const.MODE_PASTE_STYLE) {\n deliverer.trigger('stylepastestop')\n } else if (deliverer.app.mode == Const.MODE_PASTE_DATABIND) {\n deliverer.trigger('databindpastestop')\n }\n}\n\nEventMap.register('paste-handler', {\n '(root)': {\n '(self)': {\n stylepastestart: onstylepastestart,\n stylepastestop: onstylepastestop,\n databindpastestart: ondatabindpastestart,\n databindpastestop: ondatabindpastestop,\n keydown: onkeydown\n }\n },\n 'model-layer': {\n '(all)': {\n click: onclick\n }\n }\n})\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var _eventMap = _interopRequireDefault(require("./event-map.js"));
|
|
4
|
-
var _throttle = _interopRequireDefault(require("lodash-es/throttle.js"));
|
|
5
|
-
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
6
|
-
var last_position; // { x: number; y: number }
|
|
7
|
-
var weakref;
|
|
8
|
-
var position; // { x: number; y: number }
|
|
9
|
-
|
|
10
|
-
const throttledMove = (0, _throttle.default)(() => {
|
|
11
|
-
const {
|
|
12
|
-
x,
|
|
13
|
-
y
|
|
14
|
-
} = position;
|
|
15
|
-
const target = weakref.deref();
|
|
16
|
-
if (!target) {
|
|
17
|
-
return;
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
// 모델레이어의 원점을 움직인다.
|
|
21
|
-
target.rootModel.move({
|
|
22
|
-
x: x - last_position.x,
|
|
23
|
-
y: y - last_position.y
|
|
24
|
-
}, false);
|
|
25
|
-
last_position = {
|
|
26
|
-
x,
|
|
27
|
-
y
|
|
28
|
-
};
|
|
29
|
-
}, 60, {
|
|
30
|
-
leading: true,
|
|
31
|
-
trailing: true
|
|
32
|
-
});
|
|
33
|
-
function ondragstart(e, hint) {
|
|
34
|
-
last_position = {
|
|
35
|
-
x: e.offsetX,
|
|
36
|
-
y: e.offsetY
|
|
37
|
-
};
|
|
38
|
-
}
|
|
39
|
-
function ondragmove(e, hint) {
|
|
40
|
-
weakref = new WeakRef(hint.deliverer);
|
|
41
|
-
position = {
|
|
42
|
-
x: e.offsetX,
|
|
43
|
-
y: e.offsetY
|
|
44
|
-
};
|
|
45
|
-
throttledMove();
|
|
46
|
-
}
|
|
47
|
-
_eventMap.default.register('shift-handler', {
|
|
48
|
-
'model-layer': {
|
|
49
|
-
'(all)': {
|
|
50
|
-
dragstart: ondragstart,
|
|
51
|
-
dragmove: ondragmove
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
});
|
|
55
|
-
//# sourceMappingURL=shift-handler.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"shift-handler.js","names":["_eventMap","_interopRequireDefault","require","_throttle","e","__esModule","default","last_position","weakref","position","throttledMove","throttle","x","y","target","deref","rootModel","move","leading","trailing","ondragstart","hint","offsetX","offsetY","ondragmove","WeakRef","deliverer","EventMap","register","dragstart","dragmove"],"sources":["../../src/event-map/shift-handler.js"],"sourcesContent":["import EventMap from './event-map.js'\nimport throttle from 'lodash-es/throttle.js'\n\nvar last_position // { x: number; y: number }\nvar weakref\nvar position // { x: number; y: number }\n\nconst throttledMove = throttle(\n () => {\n const { x, y } = position\n const target = weakref.deref()\n\n if (!target) {\n return\n }\n\n // 모델레이어의 원점을 움직인다.\n target.rootModel.move(\n {\n x: x - last_position.x,\n y: y - last_position.y\n },\n false\n )\n\n last_position = { x, y }\n },\n 60,\n {\n leading: true,\n trailing: true\n }\n)\n\nfunction ondragstart(e, hint) {\n last_position = { x: e.offsetX, y: e.offsetY }\n}\n\nfunction ondragmove(e, hint) {\n weakref = new WeakRef(hint.deliverer)\n position = { x: e.offsetX, y: e.offsetY }\n\n throttledMove()\n}\n\nEventMap.register('shift-handler', {\n 'model-layer': {\n '(all)': {\n dragstart: ondragstart,\n dragmove: ondragmove\n }\n }\n})\n"],"mappings":";;AAAA,IAAAA,SAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,SAAA,GAAAF,sBAAA,CAAAC,OAAA;AAA4C,SAAAD,uBAAAG,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAE5C,IAAIG,aAAa,EAAC;AAClB,IAAIC,OAAO;AACX,IAAIC,QAAQ,EAAC;;AAEb,MAAMC,aAAa,GAAG,IAAAC,iBAAQ,EAC5B,MAAM;EACJ,MAAM;IAAEC,CAAC;IAAEC;EAAE,CAAC,GAAGJ,QAAQ;EACzB,MAAMK,MAAM,GAAGN,OAAO,CAACO,KAAK,CAAC,CAAC;EAE9B,IAAI,CAACD,MAAM,EAAE;IACX;EACF;;EAEA;EACAA,MAAM,CAACE,SAAS,CAACC,IAAI,CACnB;IACEL,CAAC,EAAEA,CAAC,GAAGL,aAAa,CAACK,CAAC;IACtBC,CAAC,EAAEA,CAAC,GAAGN,aAAa,CAACM;EACvB,CAAC,EACD,KACF,CAAC;EAEDN,aAAa,GAAG;IAAEK,CAAC;IAAEC;EAAE,CAAC;AAC1B,CAAC,EACD,EAAE,EACF;EACEK,OAAO,EAAE,IAAI;EACbC,QAAQ,EAAE;AACZ,CACF,CAAC;AAED,SAASC,WAAWA,CAAChB,CAAC,EAAEiB,IAAI,EAAE;EAC5Bd,aAAa,GAAG;IAAEK,CAAC,EAAER,CAAC,CAACkB,OAAO;IAAET,CAAC,EAAET,CAAC,CAACmB;EAAQ,CAAC;AAChD;AAEA,SAASC,UAAUA,CAACpB,CAAC,EAAEiB,IAAI,EAAE;EAC3Bb,OAAO,GAAG,IAAIiB,OAAO,CAACJ,IAAI,CAACK,SAAS,CAAC;EACrCjB,QAAQ,GAAG;IAAEG,CAAC,EAAER,CAAC,CAACkB,OAAO;IAAET,CAAC,EAAET,CAAC,CAACmB;EAAQ,CAAC;EAEzCb,aAAa,CAAC,CAAC;AACjB;AAEAiB,iBAAQ,CAACC,QAAQ,CAAC,eAAe,EAAE;EACjC,aAAa,EAAE;IACb,OAAO,EAAE;MACPC,SAAS,EAAET,WAAW;MACtBU,QAAQ,EAAEN;IACZ;EACF;AACF,CAAC,CAAC","ignoreList":[]}
|
|
@@ -1,276 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var _commandChange = _interopRequireDefault(require("../command/command-change.js"));
|
|
4
|
-
var _textWrapper = _interopRequireDefault(require("../components/drawer/text-wrapper.js"));
|
|
5
|
-
var _const = require("../const.js");
|
|
6
|
-
var _eventMap = _interopRequireDefault(require("./event-map.js"));
|
|
7
|
-
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
8
|
-
/*
|
|
9
|
-
* Copyright © HatioLab Inc. All rights reserved.
|
|
10
|
-
*/
|
|
11
|
-
|
|
12
|
-
function scaleAndRotationToTop(component) {
|
|
13
|
-
var rotation = 0,
|
|
14
|
-
scale = 1;
|
|
15
|
-
var parent = component;
|
|
16
|
-
while (parent) {
|
|
17
|
-
rotation += parent.get('rotation') || 0;
|
|
18
|
-
let {
|
|
19
|
-
x,
|
|
20
|
-
y
|
|
21
|
-
} = parent.get('scale') || {
|
|
22
|
-
x: 1,
|
|
23
|
-
y: 1
|
|
24
|
-
};
|
|
25
|
-
scale *= Math.max(x, y) || 1;
|
|
26
|
-
parent = parent.parent;
|
|
27
|
-
}
|
|
28
|
-
return {
|
|
29
|
-
rotation,
|
|
30
|
-
scale
|
|
31
|
-
};
|
|
32
|
-
}
|
|
33
|
-
function onkeydown(e, hint) {
|
|
34
|
-
var {
|
|
35
|
-
origin,
|
|
36
|
-
deliverer
|
|
37
|
-
} = hint; /* deliverer should be RootContainer */
|
|
38
|
-
|
|
39
|
-
var selected = deliverer.selected;
|
|
40
|
-
if (selected.length !== 1 || !selected[0].hasTextProperty) return false;
|
|
41
|
-
if (e.code == 'Enter' || e.code == 'NumpadEnter') {
|
|
42
|
-
startEdit(selected[0]);
|
|
43
|
-
e.preventDefault();
|
|
44
|
-
return true;
|
|
45
|
-
}
|
|
46
|
-
return false;
|
|
47
|
-
}
|
|
48
|
-
function ondblclick(e, hint) {
|
|
49
|
-
startEdit(hint.origin);
|
|
50
|
-
}
|
|
51
|
-
function startEdit(component) {
|
|
52
|
-
if (!component.hasTextProperty || component.textHidden) {
|
|
53
|
-
return;
|
|
54
|
-
}
|
|
55
|
-
var {
|
|
56
|
-
text = '',
|
|
57
|
-
bold = _const.DEFAULT.BOLD,
|
|
58
|
-
italic = _const.DEFAULT.ITALIC,
|
|
59
|
-
textWrap = _const.DEFAULT.TEXT_WRAP,
|
|
60
|
-
letterSpacing = 0,
|
|
61
|
-
fontFamily = _const.DEFAULT.FONT_FAMILY,
|
|
62
|
-
fontColor = _const.DEFAULT.FONT_COLOR,
|
|
63
|
-
textAlign = _const.DEFAULT.TEXT_ALIGN,
|
|
64
|
-
textBaseline = _const.DEFAULT.TEXT_BASELINE,
|
|
65
|
-
fontSize = _const.DEFAULT.FONT_SIZE,
|
|
66
|
-
lineHeight = fontSize * 1.2
|
|
67
|
-
} = component.model;
|
|
68
|
-
var {
|
|
69
|
-
left,
|
|
70
|
-
top,
|
|
71
|
-
width,
|
|
72
|
-
height
|
|
73
|
-
} = component.textBounds;
|
|
74
|
-
fontSize ||= _const.DEFAULT.FONT_SIZE;
|
|
75
|
-
lineHeight ||= fontSize * 1.2;
|
|
76
|
-
|
|
77
|
-
// -1. 컴포넌트의 text를 hide 시킨다.
|
|
78
|
-
component.textHidden = true;
|
|
79
|
-
|
|
80
|
-
// 0. textarea 엘리먼트를 생성한다.
|
|
81
|
-
var textarea = document.createElement('textarea');
|
|
82
|
-
_const.GESTURES.forEach(function (event) {
|
|
83
|
-
textarea.addEventListener(event, function (e) {
|
|
84
|
-
e.stopPropagation();
|
|
85
|
-
}, true);
|
|
86
|
-
});
|
|
87
|
-
|
|
88
|
-
// 1. 캔바스 위에서의 에디터 위치를 가져온다.
|
|
89
|
-
const point = component.transcoordS2C(left, top);
|
|
90
|
-
|
|
91
|
-
// 2. 캔바스 기준으로 컴포넌트의 스케일과 회전각을 구한다.
|
|
92
|
-
const {
|
|
93
|
-
rotation,
|
|
94
|
-
scale
|
|
95
|
-
} = scaleAndRotationToTop(component);
|
|
96
|
-
|
|
97
|
-
// 3. 컴포넌트의 위치와 패딩 정보를 textarea에 반영한다.
|
|
98
|
-
textarea.style.position = 'absolute';
|
|
99
|
-
textarea.style.width = width + 'px';
|
|
100
|
-
textarea.style.height = height + 'px';
|
|
101
|
-
textarea.style.padding = '0';
|
|
102
|
-
|
|
103
|
-
// 4. textarea의 기본 속성을 설정한다.
|
|
104
|
-
textarea.value = text;
|
|
105
|
-
textarea.style.fontFamily = fontFamily;
|
|
106
|
-
textarea.style.fontSize = fontSize + 'px';
|
|
107
|
-
textarea.style.lineHeight = lineHeight + 'px';
|
|
108
|
-
textarea.style.overflow = 'hidden';
|
|
109
|
-
textarea.style.resize = 'none';
|
|
110
|
-
textarea.style.outline = 'none';
|
|
111
|
-
textarea.style.border = 0;
|
|
112
|
-
textarea.style.backgroundColor = 'transparent';
|
|
113
|
-
textarea.style.display = 'inline-block';
|
|
114
|
-
textarea.style.color = fontColor;
|
|
115
|
-
if (bold) textarea.style.fontWeight = 'bold';
|
|
116
|
-
if (italic) textarea.style.fontStyle = 'italic';
|
|
117
|
-
switch (textAlign) {
|
|
118
|
-
case 'right':
|
|
119
|
-
case 'end':
|
|
120
|
-
textarea.style.textAlign = 'right';
|
|
121
|
-
break;
|
|
122
|
-
case 'justify':
|
|
123
|
-
textarea.style.textAlign = 'justify';
|
|
124
|
-
break;
|
|
125
|
-
case 'left':
|
|
126
|
-
case 'start':
|
|
127
|
-
textarea.style.textAlign = 'left';
|
|
128
|
-
break;
|
|
129
|
-
case 'center':
|
|
130
|
-
default:
|
|
131
|
-
textarea.style.textAlign = 'center';
|
|
132
|
-
break;
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
// 5. textarea의 속성의 가변속성을 설정한다.
|
|
136
|
-
var font = [bold, italic, fontSize + 'px', fontFamily].filter(Boolean).join(' ');
|
|
137
|
-
function reposition(text) {
|
|
138
|
-
var margin = {
|
|
139
|
-
left: 0,
|
|
140
|
-
top: 0
|
|
141
|
-
};
|
|
142
|
-
var textareaHeight = lineHeight * countLines(component, text, font, width, letterSpacing);
|
|
143
|
-
textarea.style.height = textareaHeight + 'px';
|
|
144
|
-
switch (textBaseline) {
|
|
145
|
-
case 'top':
|
|
146
|
-
case 'hanging':
|
|
147
|
-
break;
|
|
148
|
-
case 'bottom':
|
|
149
|
-
case 'alphabetic':
|
|
150
|
-
margin.top = height - textareaHeight;
|
|
151
|
-
break;
|
|
152
|
-
case 'middle':
|
|
153
|
-
default:
|
|
154
|
-
margin.top = height / 2 - textareaHeight / 2;
|
|
155
|
-
break;
|
|
156
|
-
}
|
|
157
|
-
if (!textWrap) {
|
|
158
|
-
// textWrap이 아니면, 최대 폭의 라인에 맞춰서 textarea의 폭을 맞춰주어야 한다.
|
|
159
|
-
var maxWidth = maxWidthLines(component, text, font, width);
|
|
160
|
-
textarea.style.width = maxWidth + 'px';
|
|
161
|
-
switch (textAlign) {
|
|
162
|
-
case 'right':
|
|
163
|
-
case 'end':
|
|
164
|
-
margin.left = width - maxWidth;
|
|
165
|
-
break;
|
|
166
|
-
case 'left':
|
|
167
|
-
case 'start':
|
|
168
|
-
break;
|
|
169
|
-
case 'center':
|
|
170
|
-
case 'justify':
|
|
171
|
-
default:
|
|
172
|
-
margin.left = (width - maxWidth) / 2;
|
|
173
|
-
break;
|
|
174
|
-
}
|
|
175
|
-
}
|
|
176
|
-
textarea.style.marginLeft = margin.left + 'px';
|
|
177
|
-
textarea.style.marginTop = margin.top + 'px';
|
|
178
|
-
|
|
179
|
-
/* CONFIRM-ME `transform: perspective(1px)` 스타일 설정은 scaling된 dom element를 좀 더 선명하게 보이도록 해준다. (Chrome 브라우저에서) */
|
|
180
|
-
textarea.style.transform = `translate(${point.x}px, ${point.y}px) scale(${scale}) rotate(${rotation}rad)`;
|
|
181
|
-
textarea.style.transformOrigin = `${-margin.left}px ${-margin.top}px`;
|
|
182
|
-
}
|
|
183
|
-
reposition(text);
|
|
184
|
-
var targetElement = component.root.target_element;
|
|
185
|
-
targetElement.appendChild(textarea);
|
|
186
|
-
|
|
187
|
-
// 7. textarea에 커서를 위치시킨다.
|
|
188
|
-
textarea.select();
|
|
189
|
-
var esc = false;
|
|
190
|
-
// 8. textarea의 값이 변경될 때마다, textarea의 position, dimension을 다시 설정한다.
|
|
191
|
-
textarea.addEventListener('keydown', function (e) {
|
|
192
|
-
e.stopPropagation();
|
|
193
|
-
if (e.code == 'Escape' || !e.shiftKey && (e.code == 'Enter' || e.code == 'NumpadEnter')) {
|
|
194
|
-
esc = event.skipUpdate = e.code == 'Escape';
|
|
195
|
-
if (document.createEvent) {
|
|
196
|
-
textarea.dispatchEvent(event);
|
|
197
|
-
} else {
|
|
198
|
-
textarea.fireEvent(event.eventType, event);
|
|
199
|
-
}
|
|
200
|
-
} else {
|
|
201
|
-
setTimeout(() => {
|
|
202
|
-
reposition(textarea.value);
|
|
203
|
-
});
|
|
204
|
-
}
|
|
205
|
-
});
|
|
206
|
-
|
|
207
|
-
// 9. ESC로 편집을 취소하기 위한 이벤트 핸들링을 설정한다.
|
|
208
|
-
var event;
|
|
209
|
-
if (document.createEvent) {
|
|
210
|
-
event = document.createEvent('HTMLEvents');
|
|
211
|
-
event.initEvent('blur', true, false);
|
|
212
|
-
} else {
|
|
213
|
-
event = document.createEventObject();
|
|
214
|
-
event.eventType = 'blur';
|
|
215
|
-
}
|
|
216
|
-
var selected = component.root.selected;
|
|
217
|
-
var blurListener = function (e) {
|
|
218
|
-
/* Blur가 되어도 컴포넌트는 선택된 상태를 유지하여야 한다. */
|
|
219
|
-
component.root.selected = selected;
|
|
220
|
-
/* 원래의 textHidden속성값을 재설정한다. */
|
|
221
|
-
component.textHidden = false;
|
|
222
|
-
textarea.removeEventListener('blur', blurListener, false);
|
|
223
|
-
textarea.parentElement && textarea.parentElement.removeChild(textarea);
|
|
224
|
-
targetElement.focus();
|
|
225
|
-
if (e.skipUpdate || esc) return;
|
|
226
|
-
component.app.commander.execute(new _commandChange.default({
|
|
227
|
-
changes: [{
|
|
228
|
-
component: component,
|
|
229
|
-
before: {
|
|
230
|
-
text
|
|
231
|
-
},
|
|
232
|
-
after: {
|
|
233
|
-
text: textarea.value
|
|
234
|
-
}
|
|
235
|
-
}]
|
|
236
|
-
}));
|
|
237
|
-
};
|
|
238
|
-
textarea.addEventListener('blur', blurListener, false);
|
|
239
|
-
}
|
|
240
|
-
function countLines(component, text, font, width, letterSpacing = 0) {
|
|
241
|
-
var context = component.getContext();
|
|
242
|
-
var count;
|
|
243
|
-
context.save();
|
|
244
|
-
context.font = font;
|
|
245
|
-
count = (0, _textWrapper.default)(context, text, width, component.get('textWrap'), letterSpacing).length;
|
|
246
|
-
context.restore();
|
|
247
|
-
return count;
|
|
248
|
-
}
|
|
249
|
-
|
|
250
|
-
/* textWrap되지 않는 경우에 모든 라인의 폭을 구하고, 최대 폭 값을 반환한다. */
|
|
251
|
-
function maxWidthLines(component, text, font, width) {
|
|
252
|
-
var lines = text.split('\n');
|
|
253
|
-
var maxWidth = width;
|
|
254
|
-
let context = component.getContext();
|
|
255
|
-
context.save();
|
|
256
|
-
context.font = font;
|
|
257
|
-
lines.forEach(line => {
|
|
258
|
-
let w = context.measureText(line).width;
|
|
259
|
-
if (w > maxWidth) maxWidth = w;
|
|
260
|
-
});
|
|
261
|
-
context.restore();
|
|
262
|
-
return maxWidth;
|
|
263
|
-
}
|
|
264
|
-
_eventMap.default.register('text-editor', {
|
|
265
|
-
'(root)': {
|
|
266
|
-
'(self)': {
|
|
267
|
-
keydown: onkeydown
|
|
268
|
-
}
|
|
269
|
-
},
|
|
270
|
-
'model-layer': {
|
|
271
|
-
'(descendant)': {
|
|
272
|
-
dblclick: ondblclick
|
|
273
|
-
}
|
|
274
|
-
}
|
|
275
|
-
});
|
|
276
|
-
//# sourceMappingURL=text-editor-lite.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"text-editor-lite.js","names":["_commandChange","_interopRequireDefault","require","_textWrapper","_const","_eventMap","e","__esModule","default","scaleAndRotationToTop","component","rotation","scale","parent","get","x","y","Math","max","onkeydown","hint","origin","deliverer","selected","length","hasTextProperty","code","startEdit","preventDefault","ondblclick","textHidden","text","bold","DEFAULT","BOLD","italic","ITALIC","textWrap","TEXT_WRAP","letterSpacing","fontFamily","FONT_FAMILY","fontColor","FONT_COLOR","textAlign","TEXT_ALIGN","textBaseline","TEXT_BASELINE","fontSize","FONT_SIZE","lineHeight","model","left","top","width","height","textBounds","textarea","document","createElement","GESTURES","forEach","event","addEventListener","stopPropagation","point","transcoordS2C","style","position","padding","value","overflow","resize","outline","border","backgroundColor","display","color","fontWeight","fontStyle","font","filter","Boolean","join","reposition","margin","textareaHeight","countLines","maxWidth","maxWidthLines","marginLeft","marginTop","transform","transformOrigin","targetElement","root","target_element","appendChild","select","esc","shiftKey","skipUpdate","createEvent","dispatchEvent","fireEvent","eventType","setTimeout","initEvent","createEventObject","blurListener","removeEventListener","parentElement","removeChild","focus","app","commander","execute","CommandChange","changes","before","after","context","getContext","count","save","splitTextToLines","restore","lines","split","line","w","measureText","EventMap","register","keydown","dblclick"],"sources":["../../src/event-map/text-editor-lite.js"],"sourcesContent":["/*\n * Copyright © HatioLab Inc. All rights reserved.\n */\n\nimport CommandChange from '../command/command-change.js'\nimport splitTextToLines from '../components/drawer/text-wrapper.js'\nimport { DEFAULT, GESTURES } from '../const.js'\nimport EventMap from './event-map.js'\n\nfunction scaleAndRotationToTop(component) {\n var rotation = 0,\n scale = 1\n var parent = component\n\n while (parent) {\n rotation += parent.get('rotation') || 0\n let { x, y } = parent.get('scale') || { x: 1, y: 1 }\n scale *= Math.max(x, y) || 1\n\n parent = parent.parent\n }\n\n return { rotation, scale }\n}\n\nfunction onkeydown(e, hint) {\n var { origin, deliverer } = hint /* deliverer should be RootContainer */\n\n var selected = deliverer.selected\n if (selected.length !== 1 || !selected[0].hasTextProperty) return false\n\n if (e.code == 'Enter' || e.code == 'NumpadEnter') {\n startEdit(selected[0])\n e.preventDefault()\n return true\n }\n\n return false\n}\n\nfunction ondblclick(e, hint) {\n startEdit(hint.origin)\n}\n\nfunction startEdit(component) {\n if (!component.hasTextProperty || component.textHidden) {\n return\n }\n\n var {\n text = '',\n bold = DEFAULT.BOLD,\n italic = DEFAULT.ITALIC,\n textWrap = DEFAULT.TEXT_WRAP,\n letterSpacing = 0,\n\n fontFamily = DEFAULT.FONT_FAMILY,\n fontColor = DEFAULT.FONT_COLOR,\n\n textAlign = DEFAULT.TEXT_ALIGN,\n textBaseline = DEFAULT.TEXT_BASELINE,\n\n fontSize = DEFAULT.FONT_SIZE,\n lineHeight = fontSize * 1.2\n } = component.model\n\n var { left, top, width, height } = component.textBounds\n\n fontSize ||= DEFAULT.FONT_SIZE\n lineHeight ||= fontSize * 1.2\n\n // -1. 컴포넌트의 text를 hide 시킨다.\n component.textHidden = true\n\n // 0. textarea 엘리먼트를 생성한다.\n var textarea = document.createElement('textarea')\n\n GESTURES.forEach(function (event) {\n textarea.addEventListener(\n event,\n function (e) {\n e.stopPropagation()\n },\n true\n )\n })\n\n // 1. 캔바스 위에서의 에디터 위치를 가져온다.\n const point = component.transcoordS2C(left, top)\n\n // 2. 캔바스 기준으로 컴포넌트의 스케일과 회전각을 구한다.\n const { rotation, scale } = scaleAndRotationToTop(component)\n\n // 3. 컴포넌트의 위치와 패딩 정보를 textarea에 반영한다.\n textarea.style.position = 'absolute'\n textarea.style.width = width + 'px'\n textarea.style.height = height + 'px'\n textarea.style.padding = '0'\n\n // 4. textarea의 기본 속성을 설정한다.\n textarea.value = text\n\n textarea.style.fontFamily = fontFamily\n textarea.style.fontSize = fontSize + 'px'\n textarea.style.lineHeight = lineHeight + 'px'\n textarea.style.overflow = 'hidden'\n textarea.style.resize = 'none'\n textarea.style.outline = 'none'\n textarea.style.border = 0\n textarea.style.backgroundColor = 'transparent'\n textarea.style.display = 'inline-block'\n\n textarea.style.color = fontColor\n\n if (bold) textarea.style.fontWeight = 'bold'\n if (italic) textarea.style.fontStyle = 'italic'\n\n switch (textAlign) {\n case 'right':\n case 'end':\n textarea.style.textAlign = 'right'\n break\n\n case 'justify':\n textarea.style.textAlign = 'justify'\n break\n case 'left':\n case 'start':\n textarea.style.textAlign = 'left'\n break\n\n case 'center':\n default:\n textarea.style.textAlign = 'center'\n break\n }\n\n // 5. textarea의 속성의 가변속성을 설정한다.\n var font = [bold, italic, fontSize + 'px', fontFamily].filter(Boolean).join(' ')\n\n function reposition(text) {\n var margin = { left: 0, top: 0 }\n\n var textareaHeight = lineHeight * countLines(component, text, font, width, letterSpacing)\n textarea.style.height = textareaHeight + 'px'\n\n switch (textBaseline) {\n case 'top':\n case 'hanging':\n break\n\n case 'bottom':\n case 'alphabetic':\n margin.top = height - textareaHeight\n break\n\n case 'middle':\n default:\n margin.top = height / 2 - textareaHeight / 2\n break\n }\n\n if (!textWrap) {\n // textWrap이 아니면, 최대 폭의 라인에 맞춰서 textarea의 폭을 맞춰주어야 한다.\n var maxWidth = maxWidthLines(component, text, font, width)\n textarea.style.width = maxWidth + 'px'\n\n switch (textAlign) {\n case 'right':\n case 'end':\n margin.left = width - maxWidth\n break\n\n case 'left':\n case 'start':\n break\n\n case 'center':\n case 'justify':\n default:\n margin.left = (width - maxWidth) / 2\n break\n }\n }\n\n textarea.style.marginLeft = margin.left + 'px'\n textarea.style.marginTop = margin.top + 'px'\n\n /* CONFIRM-ME `transform: perspective(1px)` 스타일 설정은 scaling된 dom element를 좀 더 선명하게 보이도록 해준다. (Chrome 브라우저에서) */\n textarea.style.transform = `translate(${point.x}px, ${point.y}px) scale(${scale}) rotate(${rotation}rad)`\n textarea.style.transformOrigin = `${-margin.left}px ${-margin.top}px`\n }\n\n reposition(text)\n\n var targetElement = component.root.target_element\n targetElement.appendChild(textarea)\n\n // 7. textarea에 커서를 위치시킨다.\n textarea.select()\n\n var esc = false\n // 8. textarea의 값이 변경될 때마다, textarea의 position, dimension을 다시 설정한다.\n textarea.addEventListener('keydown', function (e) {\n e.stopPropagation()\n\n if (e.code == 'Escape' || (!e.shiftKey && (e.code == 'Enter' || e.code == 'NumpadEnter'))) {\n esc = event.skipUpdate = e.code == 'Escape'\n\n if (document.createEvent) {\n textarea.dispatchEvent(event)\n } else {\n textarea.fireEvent(event.eventType, event)\n }\n } else {\n setTimeout(() => {\n reposition(textarea.value)\n })\n }\n })\n\n // 9. ESC로 편집을 취소하기 위한 이벤트 핸들링을 설정한다.\n var event\n if (document.createEvent) {\n event = document.createEvent('HTMLEvents')\n event.initEvent('blur', true, false)\n } else {\n event = document.createEventObject()\n event.eventType = 'blur'\n }\n\n var selected = component.root.selected\n\n var blurListener = function (e) {\n /* Blur가 되어도 컴포넌트는 선택된 상태를 유지하여야 한다. */\n component.root.selected = selected\n /* 원래의 textHidden속성값을 재설정한다. */\n component.textHidden = false\n\n textarea.removeEventListener('blur', blurListener, false)\n textarea.parentElement && textarea.parentElement.removeChild(textarea)\n\n targetElement.focus()\n\n if (e.skipUpdate || esc) return\n\n component.app.commander.execute(\n new CommandChange({\n changes: [\n {\n component: component,\n before: { text },\n after: { text: textarea.value }\n }\n ]\n })\n )\n }\n\n textarea.addEventListener('blur', blurListener, false)\n}\n\nfunction countLines(component, text, font, width, letterSpacing = 0) {\n var context = component.getContext()\n var count\n\n context.save()\n context.font = font\n\n count = splitTextToLines(context, text, width, component.get('textWrap'), letterSpacing).length\n\n context.restore()\n return count\n}\n\n/* textWrap되지 않는 경우에 모든 라인의 폭을 구하고, 최대 폭 값을 반환한다. */\nfunction maxWidthLines(component, text, font, width) {\n var lines = text.split('\\n')\n var maxWidth = width\n\n let context = component.getContext()\n\n context.save()\n context.font = font\n\n lines.forEach(line => {\n let w = context.measureText(line).width\n if (w > maxWidth) maxWidth = w\n })\n\n context.restore()\n return maxWidth\n}\n\nEventMap.register('text-editor', {\n '(root)': {\n '(self)': {\n keydown: onkeydown\n }\n },\n 'model-layer': {\n '(descendant)': {\n dblclick: ondblclick\n }\n }\n})\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var _eventMap = _interopRequireDefault(require("./event-map.js"));
|
|
4
|
-
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
5
|
-
function onwheelscale(e /* WheelEvent */, hint) {
|
|
6
|
-
/* shiftKey + wheel 은 deltaX 값을 변화시킨다. */
|
|
7
|
-
if (e.deltaY == 0 && e.deltaX == 0) return;
|
|
8
|
-
var model_layer = hint.deliverer;
|
|
9
|
-
var dir = e.deltaY < 0 ? 1 : -1;
|
|
10
|
-
let scale = model_layer.get('scale') || {
|
|
11
|
-
x: 1,
|
|
12
|
-
y: 1
|
|
13
|
-
};
|
|
14
|
-
let translate = model_layer.get('translate');
|
|
15
|
-
let x = e.offsetX;
|
|
16
|
-
let y = e.offsetY;
|
|
17
|
-
let p = model_layer.transcoordC2S(x, y);
|
|
18
|
-
let delta = dir * 0.1;
|
|
19
|
-
let newscale = {
|
|
20
|
-
x: scale.x + delta,
|
|
21
|
-
y: scale.y + delta
|
|
22
|
-
};
|
|
23
|
-
if (dir < 0 && scale.x < 0.2 || dir > 0 && scale.x > 10) return;
|
|
24
|
-
|
|
25
|
-
/* 휠을 밀면.. 확대 : zoom in */
|
|
26
|
-
/* 휠을 당기면.. 축소 : zoom out */
|
|
27
|
-
|
|
28
|
-
model_layer.set('scale', newscale);
|
|
29
|
-
let newp = model_layer.transcoordC2S(x, y);
|
|
30
|
-
model_layer.set('translate', {
|
|
31
|
-
x: translate.x + (newp.x - p.x) * newscale.x,
|
|
32
|
-
y: translate.y + (newp.y - p.y) * newscale.y
|
|
33
|
-
});
|
|
34
|
-
}
|
|
35
|
-
function ondblclick(event, hint) {
|
|
36
|
-
const target = hint.origin;
|
|
37
|
-
target?.root.fit();
|
|
38
|
-
}
|
|
39
|
-
_eventMap.default.register('zoom-handler', {
|
|
40
|
-
'model-layer': {
|
|
41
|
-
'(all)': {
|
|
42
|
-
wheel: onwheelscale
|
|
43
|
-
},
|
|
44
|
-
'(self)': {
|
|
45
|
-
dblclick: ondblclick
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
});
|
|
49
|
-
//# sourceMappingURL=zoom-handler.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"zoom-handler.js","names":["_eventMap","_interopRequireDefault","require","e","__esModule","default","onwheelscale","hint","deltaY","deltaX","model_layer","deliverer","dir","scale","get","x","y","translate","offsetX","offsetY","p","transcoordC2S","delta","newscale","set","newp","ondblclick","event","target","origin","root","fit","EventMap","register","wheel","dblclick"],"sources":["../../src/event-map/zoom-handler.js"],"sourcesContent":["import EventMap from './event-map.js'\n\nfunction onwheelscale(e /* WheelEvent */, hint) {\n /* shiftKey + wheel 은 deltaX 값을 변화시킨다. */\n if (e.deltaY == 0 && e.deltaX == 0) return\n\n var model_layer = hint.deliverer\n\n var dir = e.deltaY < 0 ? 1 : -1\n\n let scale = model_layer.get('scale') || { x: 1, y: 1 }\n let translate = model_layer.get('translate')\n let x = e.offsetX\n let y = e.offsetY\n\n let p = model_layer.transcoordC2S(x, y)\n let delta = dir * 0.1\n\n let newscale = {\n x: scale.x + delta,\n y: scale.y + delta\n }\n\n if ((dir < 0 && scale.x < 0.2) || (dir > 0 && scale.x > 10)) return\n\n /* 휠을 밀면.. 확대 : zoom in */\n /* 휠을 당기면.. 축소 : zoom out */\n\n model_layer.set('scale', newscale)\n\n let newp = model_layer.transcoordC2S(x, y)\n\n model_layer.set('translate', {\n x: translate.x + (newp.x - p.x) * newscale.x,\n y: translate.y + (newp.y - p.y) * newscale.y\n })\n}\n\nfunction ondblclick(event, hint) {\n const target = hint.origin\n\n target?.root.fit()\n}\n\nEventMap.register('zoom-handler', {\n 'model-layer': {\n '(all)': {\n wheel: onwheelscale\n },\n '(self)': {\n dblclick: ondblclick\n }\n }\n})\n"],"mappings":";;AAAA,IAAAA,SAAA,GAAAC,sBAAA,CAAAC,OAAA;AAAqC,SAAAD,uBAAAE,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAErC,SAASG,YAAYA,CAACH,CAAC,CAAC,kBAAkBI,IAAI,EAAE;EAC9C;EACA,IAAIJ,CAAC,CAACK,MAAM,IAAI,CAAC,IAAIL,CAAC,CAACM,MAAM,IAAI,CAAC,EAAE;EAEpC,IAAIC,WAAW,GAAGH,IAAI,CAACI,SAAS;EAEhC,IAAIC,GAAG,GAAGT,CAAC,CAACK,MAAM,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;EAE/B,IAAIK,KAAK,GAAGH,WAAW,CAACI,GAAG,CAAC,OAAO,CAAC,IAAI;IAAEC,CAAC,EAAE,CAAC;IAAEC,CAAC,EAAE;EAAE,CAAC;EACtD,IAAIC,SAAS,GAAGP,WAAW,CAACI,GAAG,CAAC,WAAW,CAAC;EAC5C,IAAIC,CAAC,GAAGZ,CAAC,CAACe,OAAO;EACjB,IAAIF,CAAC,GAAGb,CAAC,CAACgB,OAAO;EAEjB,IAAIC,CAAC,GAAGV,WAAW,CAACW,aAAa,CAACN,CAAC,EAAEC,CAAC,CAAC;EACvC,IAAIM,KAAK,GAAGV,GAAG,GAAG,GAAG;EAErB,IAAIW,QAAQ,GAAG;IACbR,CAAC,EAAEF,KAAK,CAACE,CAAC,GAAGO,KAAK;IAClBN,CAAC,EAAEH,KAAK,CAACG,CAAC,GAAGM;EACf,CAAC;EAED,IAAKV,GAAG,GAAG,CAAC,IAAIC,KAAK,CAACE,CAAC,GAAG,GAAG,IAAMH,GAAG,GAAG,CAAC,IAAIC,KAAK,CAACE,CAAC,GAAG,EAAG,EAAE;;EAE7D;EACA;;EAEAL,WAAW,CAACc,GAAG,CAAC,OAAO,EAAED,QAAQ,CAAC;EAElC,IAAIE,IAAI,GAAGf,WAAW,CAACW,aAAa,CAACN,CAAC,EAAEC,CAAC,CAAC;EAE1CN,WAAW,CAACc,GAAG,CAAC,WAAW,EAAE;IAC3BT,CAAC,EAAEE,SAAS,CAACF,CAAC,GAAG,CAACU,IAAI,CAACV,CAAC,GAAGK,CAAC,CAACL,CAAC,IAAIQ,QAAQ,CAACR,CAAC;IAC5CC,CAAC,EAAEC,SAAS,CAACD,CAAC,GAAG,CAACS,IAAI,CAACT,CAAC,GAAGI,CAAC,CAACJ,CAAC,IAAIO,QAAQ,CAACP;EAC7C,CAAC,CAAC;AACJ;AAEA,SAASU,UAAUA,CAACC,KAAK,EAAEpB,IAAI,EAAE;EAC/B,MAAMqB,MAAM,GAAGrB,IAAI,CAACsB,MAAM;EAE1BD,MAAM,EAAEE,IAAI,CAACC,GAAG,CAAC,CAAC;AACpB;AAEAC,iBAAQ,CAACC,QAAQ,CAAC,cAAc,EAAE;EAChC,aAAa,EAAE;IACb,OAAO,EAAE;MACPC,KAAK,EAAE5B;IACT,CAAC;IACD,QAAQ,EAAE;MACR6B,QAAQ,EAAET;IACZ;EACF;AACF,CAAC,CAAC","ignoreList":[]}
|
package/dist/index.js
DELETED
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
require("core-js/stable/index.js");
|
|
7
|
-
require("regenerator-runtime/runtime.js");
|
|
8
|
-
require("canvas-roundrect-polyfill");
|
|
9
|
-
var _index2 = require("./things-scene/index");
|
|
10
|
-
Object.keys(_index2).forEach(function (key) {
|
|
11
|
-
if (key === "default" || key === "__esModule") return;
|
|
12
|
-
if (key in exports && exports[key] === _index2[key]) return;
|
|
13
|
-
Object.defineProperty(exports, key, {
|
|
14
|
-
enumerable: true,
|
|
15
|
-
get: function () {
|
|
16
|
-
return _index2[key];
|
|
17
|
-
}
|
|
18
|
-
});
|
|
19
|
-
});
|
|
20
|
-
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["require","_index2","Object","keys","forEach","key","exports","defineProperty","enumerable","get"],"sources":["../src/index.ts"],"sourcesContent":["/**\n * Things-Scene 라이브러리 엔트리 포인트\n * @module things-scene\n */\n\n// 폴리필 및 호환성 라이브러리\nimport 'core-js/stable/index.js'\nimport 'regenerator-runtime/runtime.js'\nimport 'canvas-roundrect-polyfill'\n\n// 모든 컴포넌트 및 기능 재내보내기\nexport * from './things-scene/index'\n"],"mappings":";;;;;AAMAA,OAAA;AACAA,OAAA;AACAA,OAAA;AAGA,IAAAC,OAAA,GAAAD,OAAA;AAAAE,MAAA,CAAAC,IAAA,CAAAF,OAAA,EAAAG,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAJ,OAAA,CAAAI,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAR,OAAA,CAAAI,GAAA;IAAA;EAAA;AAAA","ignoreList":[]}
|