@hatiolab/things-scene 9.0.0-beta.34 → 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
- package/things-scene.d.ts +1 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"component.js","names":["_isEqual","_interopRequireDefault","require","_template","animation","_interopRequireWildcard","_animate","core","_logger","memoize","utils","_index3","_shadow","selector","_data","_drawImagePendable","_effect","_fill","_format","_stroke","_text","_ondropfile","_transcoord","_union","_elements","_reposition","_bounds","_path","_pathOutline","_retentionManager","_substitutor","_index4","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","registry","NATURE","mutable","resizable","rotatable","properties","VOLATILE_PROPS","DEFALUT_DELTA","theta","tx","ty","sx","sy","fade","__component_count","__component_resident","incrementComponentCount","type","info","up","down","decrementComponentCount","finalizationRegistry","FinalizationRegistry","Component","nature","register","clazz","residents","residentsCount","registerDecorator","name","decorator","constructor","model","app","_app","_model","_state","_delta","clone","config","autoplay","started","clearCache","RetentionManager","add","created","added","parent","removed","ready","state","persistent","isViewMode","dataStorage","data","load","touch","updatedAt","performance","now","attrs","clear","removeSelf","completely","dispose","removeComponent","resetAnimation","_animation","disposeMappings","_text_substitutor","_value_substitutor","_disposed","retention","disposed","isLayer","isGroup","isContainer","isLine","isRoot","isRootModel","is3dish","isIn3DSpace","isTemplate","isHTMLElement","isConnectable","isIdentifiable","replaceRefids","replaceMap","Number","hasTextProperty","assign","hierarchy","volatile","forEach","prop","textHidden","_textHidden","hidden","invalidate","property","props","propval","after","before","changed","self","getOwnPropertyNames","key","before_val","after_val","isEqual","onchangeFill","onchangeMappings","onchangeData","onchange","trigger","getState","setState","sensitive","root","rootModel","_parent","anchors","findAnchor","find","anchor","isDescendible","container","getContext","center","bounds","x","left","width","y","top","height","point","isNaN","old_center","Math","round","shift_x","shift_y","path","map","p","location","z","zPos","rotate","rotationX","rotationY","rotation","dimension","depth","right","bottom","length","old_bounds","scale","error","drawPath","outline","progress","pathOutline","strokeStyle","fillStyle","fontColor","String","objToVal","contains","stuck","adjustResize","origin_bounds","diagonal","old","ratio","dw","dh","dl","dt","adjustRotation","step","rotateStepForced","rotateStep","floor","capturable","isEditMode","layout","isStuck","findFirst","finder","others","findAll","s","select","capture","except","transcoordP2S","prepare","resolve","reject","prepareIf","condition","decotag","id","tag","decorators","reactionDecorators","draw","context","save","prerender","render","postrender","restore","delta","attr","value","undefined","rotatePoint","shadow","alpha","translate","globalAlpha","setShadow","drawText","text","textBounds","textLines","drawStroke","override","drawFill","resetShadow","animate","opts","stop","move","oldpath","towardx","towardy","symmetryX","PI","gradientType","newStyle","parseFloat","symmetryY","compile","effect","font","lineHeight","fontSize","defaultTextSubstitutor","textSubstitutor","buildSubstitutor","textFormat","format","textWrap","supportMarkdown","paddingTop","paddingLeft","paddingRight","paddingBottom","max","textRotation","trim","chart","valueprop","tap","tapEvtModel","event","cx","cy","_doEventAction","CustomEvent","offsetX","offsetY","mappings","_mappings","buildMappings","serialize","JSON","stringify","controls","closeScene","exports","union","transcoordR","transcoordRR","createCanvas","intercept","mixin","reposition","template","prototype","drawEffect","prepareFill","prepareFillIf","drawImage","mutateBounds","mutatePath","access","substitute","executeMappings","ondropfile","transcoordS2P","transcoordS2T","transcoordT2P","transcoordT2S","transcoordS2TR","transcoordS2O","transcoordC2S","transcoordS2C","getter","withEvent"],"sources":["../../src/components/component.js"],"sourcesContent":["/*\n * Copyright © HatioLab Inc. All rights reserved.\n */\n\nimport isEqual from 'lodash-es/isEqual.js'\nimport template from 'lodash-es/template.js'\n\nimport * as animation from '../animation/index.js'\nimport animate from '../animation/animate.js'\nimport * as core from '../core/index.js'\nimport { error } from '../core/logger.js'\nimport * as memoize from '../core/memoize.js'\nimport * as utils from '../core/utils.js'\nimport effect from '../effect/index.js'\nimport { resetShadow, setShadow } from '../effect/shadow.js'\nimport * as selector from '../model/selector.js'\nimport { buildMappings, disposeMappings, executeMappings, onchangeData, onchangeMappings } from './data/data.js'\nimport drawImage from './drawer/draw-image-pendable.js'\nimport drawEffect from './drawer/effect.js'\nimport { drawFill, onchangeFill, prepareFill, prepareFillIf } from './drawer/fill.js'\nimport format from './drawer/format.js'\nimport drawStroke from './drawer/stroke.js'\nimport { drawText, font, textLines } from './drawer/text.js'\nimport { ondropfile } from './file/ondropfile.js'\nimport {\n transcoordC2S,\n transcoordP2S,\n transcoordR,\n transcoordRR,\n transcoordS2C,\n transcoordS2O,\n transcoordS2P,\n transcoordS2T,\n transcoordS2TR,\n transcoordT2P,\n transcoordT2S\n} from './geometry/transcoord.js'\nimport union from './geometry/union.js'\nimport { createCanvas } from './html/elements.js'\nimport reposition from './html/reposition.js'\nimport mutateBounds from './mutater/bounds.js'\nimport mutatePath from './mutater/path.js'\nimport pathOutline from './outline/path-outline.js'\nimport RetentionManager from './retention/retention-manager.js'\nimport { access, buildSubstitutor, substitute } from './text/substitutor.js'\nimport { registerDecorator } from '../decorator/index.js'\n\nvar registry = {}\n\nconst NATURE = {\n mutable: false,\n resizable: true,\n rotatable: true,\n properties: [],\n 'value-property': 'text'\n}\n\nconst VOLATILE_PROPS = []\n\nconst DEFALUT_DELTA = {\n theta: 0,\n tx: 0,\n ty: 0,\n sx: 1,\n sy: 1,\n fade: 0\n}\n\nvar __component_count = 0\nvar __component_resident = {}\n\nfunction incrementComponentCount(type) {\n __component_count++\n\n var info = __component_resident[type]\n if (!info) {\n info = __component_resident[type] = { up: 0, down: 0 }\n }\n\n info.up++\n}\n\nfunction decrementComponentCount(type) {\n __component_count--\n\n var info = __component_resident[type]\n if (!info) {\n info = __component_resident[type] = { up: 0, down: 0 }\n }\n\n info.down++\n}\n\nconst finalizationRegistry = new FinalizationRegistry(type => {\n decrementComponentCount(type)\n})\n\nexport default class Component {\n static get nature() {\n return NATURE\n }\n\n static register(type, clazz) {\n if (!clazz) return registry[type]\n registry[type] = clazz\n }\n\n static get residents() {\n return __component_resident\n }\n\n static get residentsCount() {\n return __component_count\n }\n\n static registerDecorator(name, decorator) {\n registerDecorator(name, decorator)\n }\n\n /* Life Cycle */\n\n constructor(model, app) {\n this._app = app\n this._model = model || {}\n this._state = {}\n this._delta = utils.clone(DEFALUT_DELTA)\n\n /*\n * 만약 VIEW 모드에서, oncreate에 걸린 애니메이션이 있으면, 시작한다.\n * 하위 호환성을 위해서 autoplay가 undefined인 경우에도 autoplay라고 판단한다.\n */\n if (\n app &&\n this.animation?.config &&\n (this.animation.config.autoplay == true || (this.animation.config.autoplay ?? true))\n ) {\n this.animation.started = true\n }\n\n this.clearCache()\n\n RetentionManager.add(this)\n\n incrementComponentCount(model.type)\n finalizationRegistry.register(this, model.type)\n }\n\n // created : 하위 자식 컴포넌트까지 다 생성한 후에 호출된다.\n created() {}\n // added : 부모 컨테이너에 추가된 후에 호출된다.\n added(parent) {}\n // added : 부모 컨테이너에서 제거된 후에 호출된다.\n removed(parent) {}\n // ready : 전체 모델이 만들어지고, 동작준비가 완료된 상태에서 호출됨. 단 한번만 호출됨.\n async ready() {\n if (this.state.persistent) {\n const { isViewMode, dataStorage } = this.app\n if (isViewMode) {\n this.data = await dataStorage.load(this)\n }\n }\n }\n\n touch() {\n this.updatedAt = performance.now()\n }\n\n clearCache(...attrs) {\n memoize.clear(this, ...attrs)\n }\n\n removeSelf(completely) {\n // completely && this.dispose()\n completely ? this.dispose() : this.parent && this.parent.removeComponent(this)\n }\n\n resetAnimation() {\n if (this._animation) {\n this._animation.dispose()\n this._animation = null\n this._delta = utils.clone(DEFALUT_DELTA)\n }\n }\n\n dispose() {\n this.resetAnimation()\n\n this.disposeMappings()\n\n this.parent && this.parent.removeComponent(this)\n\n delete this._text_substitutor\n delete this._value_substitutor\n\n this._disposed = true\n\n if (this.retention) {\n RetentionManager.touch()\n }\n\n this.clearCache()\n delete this._app\n }\n\n /* Natures */\n\n get nature() {\n return this.constructor.nature\n }\n\n get disposed() {\n return !!this._disposed\n }\n\n isLayer() {\n return false\n }\n\n isGroup() {\n return false\n }\n\n isContainer() {\n return false\n }\n\n isLine() {\n return false\n }\n\n isRoot() {\n return false\n }\n\n isRootModel() {\n return false\n }\n\n is3dish() {\n return false\n }\n\n isIn3DSpace() {\n return false\n }\n\n isTemplate() {\n return !!this.get('templatePrefix')\n }\n\n isHTMLElement() {\n return false\n }\n\n isConnectable() {\n return false\n }\n\n isIdentifiable() {\n return true\n }\n\n replaceRefids(replaceMap) {}\n\n get retention() {\n return Number(this.get('retention')) || 0\n }\n\n get hasTextProperty() {\n return true\n }\n\n /* Application Context */\n get app() {\n if (!this._app && this.parent) this._app = this.parent.app\n\n return this._app\n }\n\n /** Properties Getter/Setter */\n\n get model() {\n return this._model\n }\n\n get state() {\n return Object.assign({}, this._model, this._state)\n }\n\n get hierarchy() {\n var clone = utils.clone(this._model)\n this.volatile.forEach(prop => {\n delete clone[prop]\n })\n return clone\n }\n\n get volatile() {\n return VOLATILE_PROPS\n }\n\n /* text를 표현할지를 결정하는 속성 */\n get textHidden() {\n return !!this._textHidden\n }\n\n set textHidden(hidden) {\n this._textHidden = !!hidden\n this.invalidate()\n }\n\n /*\n * 컴포넌트의 모델 속성값을 가져오는 메쏘드.\n */\n get(property) {\n return this._model[property]\n }\n\n /**\n * 컴포넌트의 모델 속성값을 바꾸는 메쏘드.\n *\n * - 하나의 속성을 변경하는 경우.\n * component.set('top', 10)\n * - 여러개의 속성을 변경하는 경우.\n * component.set({top:10, left:50})\n */\n set(props, propval) {\n if (typeof props === 'string') return this.set({ [props]: propval })\n\n var after = {}\n var before = {}\n var changed = false\n\n var props = utils.clone(props)\n\n // Object.keys() 또는 for..in 으로는 undefined value 를 읽어오지 못함.\n // Object.getOwnPropertyNames() 를 사용해야 함.\n var self = this\n\n Object.getOwnPropertyNames(props).forEach(function (key) {\n let before_val = self._model[key]\n let after_val = props[key]\n\n if (!isEqual(before_val, after_val)) {\n before[key] = before_val\n after[key] = after_val\n self._model[key] = after_val\n delete self._state[key]\n\n changed = true\n }\n })\n\n // TODO 아래 로직은 setState 부분과 공유할 수 있을 것이다.\n if (changed) {\n this.clearCache()\n\n if (after.hasOwnProperty('text')) delete this._text_substitutor\n\n if (after.hasOwnProperty('retention')) RetentionManager.add(this)\n\n after.hasOwnProperty('fillStyle') && this.onchangeFill(after, before)\n after.hasOwnProperty('mappings') && this.onchangeMappings(after, before)\n after.hasOwnProperty('data') && this.onchangeData(after, before)\n\n if (this.onchange) this.onchange(after, before)\n\n this.trigger('change', after, before)\n }\n\n return this\n }\n\n getState(property) {\n if (this._state.hasOwnProperty(property)) return this._state[property]\n return this.get(property)\n }\n\n setState(props, propval) {\n if (typeof props === 'string') return this.setState({ [props]: propval })\n\n var after = {}\n var before = {}\n var changed = false\n\n var props = utils.clone(props)\n\n // Object.keys() 또는 for..in 으로는 undefined value 를 읽어오지 못함.\n // Object.getOwnPropertyNames() 를 사용해야 함.\n var self = this\n var sensitive = this.getState('sensitive')\n\n Object.getOwnPropertyNames(props).forEach(function (key) {\n let before_val = self.getState(key)\n let after_val = props[key]\n\n if (sensitive || !isEqual(before_val, after_val)) {\n before[key] = before_val\n after[key] = after_val\n self._state[key] = after_val\n\n changed = true\n }\n })\n\n if (changed) {\n this.clearCache()\n\n if (after.hasOwnProperty('text')) delete this._text_substitutor\n\n after.hasOwnProperty('fillStyle') && this.onchangeFill(after, before)\n after.hasOwnProperty('data') && this.onchangeData(after, before)\n\n if (this.onchange) this.onchange(after, before)\n\n this.trigger('change', after, before)\n }\n\n return this\n }\n\n /* Component-Container 계층 구조 */\n\n get root() {\n if (this.isRoot()) return this\n return this.parent && this.parent.root\n }\n\n get rootModel() {\n if (this.isRootModel()) return this\n return this.parent && this.parent.rootModel\n }\n\n get parent() {\n return this._parent\n }\n\n set parent(parent) {\n this._parent = parent\n }\n\n get anchors() {\n return this.nature.anchors || []\n }\n\n findAnchor(name) {\n return this.anchors.find(anchor => anchor.name === name)\n }\n\n // container에 포함될 수 있는가를 테스트한다.\n isDescendible(container) {\n return true\n }\n\n /* 드로잉을 위한 정보들 */\n\n getContext() {\n return this._parent.getContext()\n }\n\n get center() {\n var bounds = this.bounds\n\n return {\n x: bounds.left + bounds.width / 2,\n y: bounds.top + bounds.height / 2\n }\n }\n\n set center(point) {\n if (!point || isNaN(point.x) || isNaN(point.y)) return\n\n var old_center = this.center\n\n if (\n Math.round(point.x * 100) / 100 == Math.round(old_center.x * 100) / 100 &&\n Math.round(point.y * 100) / 100 == Math.round(old_center.y * 100) / 100\n )\n return\n\n var shift_x = point.x - old_center.x\n var shift_y = point.y - old_center.y\n\n this.path = this.path.map(p => {\n return { x: p.x + shift_x, y: p.y + shift_y }\n })\n }\n\n get location() {\n const { x, y } = this.center\n const z = this.state.zPos\n\n return { x, y, z }\n }\n\n set location(location) {\n const { x, y, z } = location || {}\n\n this.center = { x, y }\n if (!isNaN(z)) {\n this.setState('zPos', Number(z))\n }\n }\n\n get rotate() {\n const { rotationX, rotationY, rotation } = this.state\n\n return { x: rotationX, y: rotationY, z: -rotation }\n }\n\n set rotate(rotate) {\n const { x, y, z } = rotate\n this.setState({\n rotationX: x,\n rotationY: y,\n rotation: -z\n })\n }\n\n get dimension() {\n const { width, height } = this.bounds\n const { depth } = this.state\n\n return { width, height, depth }\n }\n\n set dimension(dimension) {\n const { width, height, depth } = dimension\n const { top, left } = this.bounds\n this.bounds = { top, left, width, height }\n this.setState('depth', depth)\n }\n\n get bounds() {\n var path = this.path\n\n var left, right, top, bottom\n\n left = right = path[0].x\n top = bottom = path[0].y\n\n for (let i = 1; i < path.length; i++) {\n let point = path[i]\n\n if (point.x < left) left = point.x\n else if (point.x > right) right = point.x\n\n if (point.y < top) top = point.y\n else if (point.y > bottom) bottom = point.y\n }\n\n return {\n left: left,\n top: top,\n width: right - left,\n height: bottom - top\n }\n }\n\n set bounds(bounds) {\n // 1. left, top의 변화만큼 translate 한다.\n\n var old_bounds = this.bounds\n\n if (\n Math.round(bounds.width * 100) / 100 == Math.round(old_bounds.width * 100) / 100 &&\n Math.round(bounds.height * 100) / 100 == Math.round(old_bounds.height * 100) / 100 &&\n Math.round(bounds.left * 100) / 100 == Math.round(old_bounds.left * 100) / 100 &&\n Math.round(bounds.top * 100) / 100 == Math.round(old_bounds.top * 100) / 100\n )\n return\n\n // 2. width, height의 변화비율을 scale-x, scale-y 에 보관한다.\n\n var scale = {\n x: old_bounds.width == 0 ? 1 : bounds.width / old_bounds.width,\n y: old_bounds.height == 0 ? 1 : 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\n /*\n * PATH란 컴포넌트의 형상을 만드는 포인트의 배열이다\n *\n * PATH는 컴포넌트의 바운드를 형성한다. (즉 바운드는 컴포넌트의 모든 패스를 포함하는 사각형 영역이다.)\n */\n get path() {\n // 각 컴포넌트에서 필수적으로 구현해야 함.\n error('이 컴포넌트에 get path 가 구현되어있지 않음.', this)\n return []\n }\n\n set path(path) {\n // 각 컴포넌트에서 필수적으로 구현해야 함.\n error('이 컴포넌트에 get path 가 구현되어있지 않음.', this)\n }\n\n get drawPath() {\n return this.path\n }\n\n outline(progress) {\n return pathOutline(this, progress || 0)\n }\n\n get strokeStyle() {\n // return this.getState('strokeStyle')\n return this.get('strokeStyle')\n }\n\n set strokeStyle(strokeStyle) {\n // this.setState('strokeStyle', strokeStyle)\n this.set('strokeStyle', strokeStyle)\n }\n\n get fillStyle() {\n return this.getState('fillStyle')\n }\n\n set fillStyle(fillStyle) {\n this.setState('fillStyle', fillStyle)\n }\n\n /*\n * TODO. fontColor에 state를 적용.\n * fontColor 속성을 font() 함수에서 다른 속성들과 같이 일괄적으로 사용하기때문에, 현재는 적용하지 못함\n * 전반적인 state 관리 방법 개선시 조치 필요함.\n */\n\n get fontColor() {\n return this.get('fontColor')\n }\n\n set fontColor(fontColor) {\n this.set('fontColor', String(utils.objToVal(fontColor)))\n }\n\n get rotation() {\n return this.getState('rotation')\n }\n\n set rotation(rotation) {\n this.setState('rotation', Number(utils.objToVal(rotation)))\n }\n\n contains(x, y) {\n // 효율을 위해서, contains를 호출하기 전에 x, y좌표값은 이 컴포넌트에 대해서 이미 transcoord 된 상태이다.\n // 참조 : capture(x, y)\n return false\n }\n\n /*\n * PATH 리스트를 직접 수정할 수 있는 지를 결정한다.\n *\n * 일반적으로 PATH는 바운드 생성을 위해서 논리적으로 생성되므로, 직접 수정하지 않는다.(return false)\n * 그러나, 각 꼭지점들이 개별로 움직이는 다각형류는 path 라는 모델데이타를 가지므로, 직접수정이 가능할 수 있다.(return true)\n *\n * Immutable 컴포넌트의 형상을 바꾸는 방법은 바운드를 이용한 리사이즈나, 특별한 컨트롤을 통해서 가능하다.\n */\n get mutable() {\n return this.nature.mutable\n }\n\n /*\n * BOUND를 통해서 리사이즈를 할 수 있는 지를 결정한다.\n *\n * 일반적으로 면적을 갖는 컴포넌트는 대체로 가능하다.(return true)\n * 그러나, LINE 등 면적을 가지지않는 컴포넌트는 가능하지 않도록 정의한다.(return false)\n */\n get resizable() {\n return this.nature.resizable && !this.stuck\n }\n\n /*\n * 컴포넌트의 사이즈를 외부(모델러 등)에서 조정하는 경우, set bounds 전에 조정하는 기회를 갖는다.\n * 예를 들면, 비례적인 크기 조정이 필요한 경우 등.\n */\n adjustResize(bounds, origin_bounds, diagonal) {\n if (diagonal) {\n let old = this.bounds\n let ratio = old.height / old.width\n\n let dw = bounds.width - old.width\n let dh = bounds.height - old.height\n\n if (dw * ratio > dh) dh = dw * ratio\n else dw = dh / ratio\n\n let dl = bounds.left - old.left\n let dt = bounds.top - old.top\n\n /* TOP-LEFT를 모두 변경시키는 경우가 아니면, TOP과 LEFT를 보호한다. */\n if (dl != 0 && dt != 0) {\n dt = -dh\n dl = -dw\n } else if (dl != 0) {\n dl = -dw\n } else if (dt != 0) {\n dt = -dh\n }\n\n return {\n left: old.left + dl,\n top: old.top + dt,\n width: old.width + dw,\n height: old.height + dh\n }\n }\n\n return bounds\n }\n\n /*\n * 회전을 할 수 있는 지를 결정한다.\n *\n * 일반적으로 모든 컴포넌트는 가능하다.(return true)\n */\n get rotatable() {\n return this.nature.rotatable && !this.stuck\n }\n\n /*\n * 컴포넌트의 회전각을 외부(모델러 등)에서 조정하는 경우, rotation이 set되기 전에 조정하는 기회를 갖는다.\n * 예를 들면, 스텝 회전이 진행되는 경우 등.\n */\n adjustRotation(rotation, step) {\n if (step || this.app.rotateStepForced) {\n let step = this.app.rotateStep\n return Math.floor((rotation + step / 2) / step) * step\n }\n\n return rotation\n }\n\n /*\n * 이벤트 캡쳐가 가능한 지를 결정한다.\n */\n\n get capturable() {\n return this.get('capturable') !== false && (this.app.isEditMode || !this.hidden)\n }\n\n /*\n * 어떤 이유로 움직일 수 없는 상태가 되었는지를 알려준다.\n */\n get stuck() {\n return !!((this.parent && this.parent.layout.isStuck(this)) || this.get('locked'))\n }\n\n /*\n * 조건에 맞는 컴포넌트를 찾기 위한 기능들\n *\n * findAll(s, ...others) 조건에 맞는 모든 컴포넌트를 찾아낸다.\n * findFirst(finder, ...others) finder 함수에서 조건에 맞는 첫번째 컴포넌트를 리턴한다.\n * capture(x, y) 파라미터로 주어진 좌표값을 포함하는 컨테이너를 찾는다. (Event Capturing)\n * findById(id) 파라미터 id와 같은 id를 가진 컴포넌트를 찾는다.\n */\n\n findFirst(finder, ...others) {\n if (finder(this, ...others)) return this\n }\n\n findAll(s, ...others) {\n if (typeof s === 'string') return selector.select(s, this, others[0] || this) // others[0] means (self)\n\n if (typeof s === 'function' && s(this, ...others)) return [this]\n }\n\n capture(x, y, except) {\n if (!this.capturable || except?.(this)) return false\n\n var point = this.transcoordP2S(x, y)\n\n if (this.contains(point.x, point.y)) return this\n }\n\n /* Drawing 관련 기능들 */\n\n prepare(resolve, reject) {\n // 1. 먼저 만족하지 않는 조건인 경우에, 바로 리턴한다.\n\n // 2. 재진입되지 않는 조건을 먼저 설정한다. (주로 핵심적인 멤버변수를 생성한다.)\n // prepareIf(cond) 의 조건으로 핵심 멤버변수가 설정되지 않은 경우로 로직을 만들 수 있도록 한다.\n\n // 3. 비동기 콜백에 대한 핸들링\n\n // 4. 비동기 상황을 트리거링\n resolve(this)\n }\n\n prepareIf(condition) {\n if (!condition) return\n\n this.prepare &&\n this.prepare(\n resolve => {\n this.invalidate()\n },\n reject => {\n error(reject)\n }\n )\n }\n\n get decotag() {\n const { id, tag } = this.state\n\n return (id ? `#${id}` : '') + (tag ? `@${tag}` : '')\n }\n\n get decorators() {\n return ['decotag', 'data-spread']\n }\n\n get reactionDecorators() {\n return ['bouncing-arrow']\n }\n\n get hidden() {\n return (\n this.getState('hidden') ||\n (!this.data && this.data !== 0 && this.getState('ndns')) /* ndns - falsy and not zero */ ||\n this.isTemplate()\n )\n }\n\n set hidden(hidden) {\n this.setState('hidden', hidden)\n }\n\n draw(context) {\n context.save()\n\n this.prerender(context)\n this.render(context)\n this.postrender(context)\n\n context.restore()\n }\n\n delta(attr, value) {\n if (value !== undefined) this._delta[attr] = value\n else {\n if (attr) return this._delta[attr]\n else return this._delta\n }\n }\n\n prerender(context) {\n /*\n * 컴포넌트의 그리기 전 모든 준비작업을 담당한다.\n */\n\n var rotatePoint = this.rotatePoint\n var { scale, rotation, shadow, alpha } = this.state\n\n var sx = ((scale && scale.x) || 1) * this._delta.sx\n var sy = ((scale && scale.y) || 1) * this._delta.sy\n var theta = (rotation || 0) + this._delta.theta\n var { tx = 0, ty = 0 } = this._delta\n var fade = (alpha || 1) - this._delta.fade\n\n if (tx || ty) context.translate(tx, ty)\n\n // 원점으로 이동하여 회전한 후 다시 되돌아온다.\n if (sx != 1 || sy != 1 || theta) {\n context.translate(rotatePoint.x, rotatePoint.y)\n if (sx != 1 || sy != 1) context.scale(sx, sy)\n if (theta) context.rotate(theta)\n\n context.translate(-rotatePoint.x, -rotatePoint.y)\n }\n\n if (fade) context.globalAlpha = fade\n\n if (shadow) setShadow(context, shadow, this)\n\n if (this.app.isEditMode && this.hidden) context.globalAlpha *= 0.5\n }\n\n render(context) {\n /*\n * 상속받아서 구현하는 draw() 함수는 컴포넌트 자신의 표현에만 집중한다.\n * 컨텍스트의 변형이 다른 컴포넌트에 어떤 영향을 줄 지 고려할 필요가 없다.\n * 텍스트, 효과, 애니메이션 등 컴포넌트 공통 기능에 대한 표현은 처리하지 않는다.(postrender 공통 처리)\n */\n }\n\n postrender(context) {\n /* postrender() 함수는 거의 상속하지 않는다.\n * 텍스트, 효과, 애니메이션 등 컴포넌트 공통 기능에 대한 표현을 담당한다.\n */\n\n this.drawText(context)\n }\n\n drawText(context) {\n if (!this.textHidden && this.text && this.hasTextProperty)\n drawText(context, this.textBounds, this.textLines(context), this.state)\n }\n\n drawStroke(context, override) {\n drawStroke(\n context,\n override\n ? {\n ...this.state,\n ...override\n }\n : this.state,\n this\n )\n }\n\n drawFill(context, override) {\n if (this.fillStyle && this.fillStyle != 'transparent') {\n drawFill(\n context,\n this.bounds,\n this.center,\n override\n ? {\n ...this.state,\n ...override\n }\n : this.state,\n this\n )\n // 만약 fill이 된다면, fill에 의해서 그림자가 표현되므로, 이후 stroke등에 의한 그림자는 생기지 않도록 한다.\n resetShadow(context)\n }\n }\n\n /*\n * 드로잉 툴을 위한 동작 기능들\n *\n * move({x, y}) 컴포넌트를 x, y 만큼 이동한다.\n * animate : 애니메이션 동작을 정의한다.\n * effect : To Be Defined\n */\n\n animate(opts) {\n if (this._animate) this._animate.stop()\n\n this._animate = animate(opts)\n return this._animate\n }\n\n move({ x, y }) {\n var oldpath = this.path\n\n var towardx = x\n var towardy = y\n\n this.path = oldpath.map(point => {\n return {\n x: point.x + towardx,\n y: point.y + towardy\n }\n })\n }\n\n symmetryX(x) {\n if (typeof x !== 'number') x = this.center.x\n\n var { rotation } = this.state\n var fillStyle = this.fillStyle\n\n this.set('rotation', 2 * Math.PI - rotation)\n\n if (fillStyle && fillStyle.type === 'gradient' && fillStyle.gradientType === 'linear') {\n var newStyle = utils.clone(fillStyle)\n\n newStyle.rotation = (Math.PI - parseFloat(fillStyle.rotation || 0)) % (Math.PI * 2)\n this.set('fillStyle', newStyle)\n }\n\n this.path = this.path.map(point => {\n return {\n x: 2 * x - point.x,\n y: point.y\n }\n })\n }\n\n symmetryY(y) {\n this.symmetryX()\n this.set('rotation', (Math.PI + this.model.rotation) % (Math.PI * 2))\n\n if (y) {\n this.move(\n {\n x: 0,\n y: (y - this.center.y) * 2\n },\n false\n )\n }\n }\n\n get animation() {\n if (!this.app.isViewMode || this.isTemplate()) return\n\n if (!this._animation) {\n var config = this.state.animation\n if (config && config['oncreate']) {\n this._animation = animation.compile(this, config['oncreate'])\n }\n }\n return this._animation\n }\n\n effect(context, model) {\n return effect(this, context, model)\n }\n\n get started() {\n return !!this.animation?.started\n }\n\n set started(started) {\n if (this.animation) {\n this.animation.started = started\n }\n }\n\n /* 강제로 컴포넌트를 다시 그리게 하는 함수 */\n\n invalidate() {\n this.parent && this.parent.invalidate()\n }\n\n /*\n * 텍스팅에서 font의 크기와 관련해서는, 일반적으로 통용되는 크기값이 있으므로,\n * 모델링 단위의 내부 스케일링(예를 들면, unitScale)에 의한 값을 보정하기위해서,\n * font, lineHeight, fontSize 속성을 별도로 정의한다.\n * unitScale 등에 의해서 굳이 단위를 스케일링 하는 이유는, 브라우저에서 일반적으로\n * 너무 적은 크기의 폰트(예를 들면 7이하)를 그리지 못하도록 되어있기 때문에 도입한 것이다.\n * 이를 해결하기 위해서 실제로는 훨씬 크게 스케일링된 값을 쓰면서(예를 들면 10배)\n * 실제 보여줄때는 1/10로 축소시켜서 보여주는 방법을 사용했다.(고육책)\n */\n\n get font() {\n return font(this.model)\n }\n\n get lineHeight() {\n var lineHeight = this.get('lineHeight')\n\n if (!lineHeight) return this.fontSize * 1.2\n\n return lineHeight\n }\n\n defaultTextSubstitutor() {\n var t = this.getState('text')\n return t == undefined ? '' : String(t)\n }\n\n get textSubstitutor() {\n if (!this._text_substitutor)\n this._text_substitutor = buildSubstitutor(this.getState('text'), this) || this.defaultTextSubstitutor\n\n return this._text_substitutor\n }\n\n get text() {\n var textFormat = this.get('textFormat')\n\n return textFormat ? format(textFormat, this.textSubstitutor()) : this.textSubstitutor()\n }\n\n set text(text) {\n delete this._text_substitutor\n var t = utils.objToVal(text)\n this.setState('text', t == undefined ? '' : String(t))\n }\n\n textLines(context) {\n const { textWrap, supportMarkdown } = this.state\n\n return textLines(\n context || this.getContext(),\n this.textBounds.width,\n this.font,\n this.text,\n textWrap,\n supportMarkdown\n )\n }\n\n get textBounds() {\n var { paddingTop, paddingLeft, paddingRight, paddingBottom } = this.state\n\n paddingBottom ||= 0\n paddingTop ||= 0\n paddingLeft ||= 0\n paddingRight ||= 0\n\n var { left, top, width, height } = this.bounds\n\n return {\n left: left + paddingLeft,\n top: top + paddingTop,\n width: Math.max(width - paddingLeft - paddingRight, 0),\n height: Math.max(height - paddingTop - paddingBottom, 0)\n }\n }\n\n get textRotation() {\n return 0\n }\n\n get rotatePoint() {\n return this.center\n }\n\n trim() {\n /* TODO 일단 무거운 \"\" 속성과 chart 속성을 삭제한다. 향후 각 컴포넌트의 지정 속성 만 남기고, 모두 제거한다. */\n delete this._model['']\n if (this._model.type !== 'chartjs') delete this._model.chart\n }\n\n /* data handling */\n\n get value() {\n var valueprop = this.nature['value-property'] || 'text'\n return valueprop == 'value' ? this.getState('value') : this[valueprop]\n }\n\n set value(value) {\n var valueprop = this.nature['value-property'] || 'text'\n valueprop == 'value' ? this.setState('value', value) : (this[valueprop] = value)\n }\n\n get data() {\n return this.getState('data')\n }\n\n set data(data) {\n this.setState('data', data)\n this.touch()\n }\n\n /* 가상의 속성 tap - 이 속성이 set되면 tap 이벤트를 발생시킨다. */\n set tap(data) {\n var tapEvtModel = this.model.event?.tap\n if (tapEvtModel) {\n const { cx, cy } = this.center\n this.rootModel?._doEventAction(\n tapEvtModel,\n this,\n true,\n new CustomEvent('click', {\n offsetX: cx,\n offsetY: cy\n })\n )\n }\n }\n\n get mappings() {\n /* 제거된 상태가 아니면(this.parent), 매핑을 다시 빌드한다. */\n if (!this._mappings && this.parent) this.buildMappings()\n\n return this._mappings\n }\n\n /* Serialization */\n serialize(...others) {\n return JSON.stringify(this.hierarchy, ...others)\n }\n\n get controls() {}\n\n /* etc */\n\n closeScene(data) {\n this.rootModel.closeScene(data)\n }\n}\n\nComponent.union = union\nComponent.transcoordR = transcoordR\nComponent.transcoordRR = transcoordRR\nComponent.createCanvas = createCanvas\nComponent.memoize = memoize.intercept\nComponent.mixin = core.mixin\n\nComponent.drawText = drawText\nComponent.font = font\nComponent.textLines = textLines\nComponent.drawStroke = drawStroke\nComponent.drawFill = drawFill\nComponent.reposition = reposition\nComponent.RetentionManager = RetentionManager\nComponent.template = template\nComponent.buildSubstitutor = buildSubstitutor\n\nObject.assign(Component.prototype, {\n /* Drawers */\n drawEffect,\n prepareFill,\n prepareFillIf,\n onchangeFill,\n drawImage,\n /* Mutators */\n mutateBounds,\n mutatePath,\n /* substitute */\n access,\n substitute,\n /* data */\n onchangeMappings,\n onchangeData,\n buildMappings,\n executeMappings,\n disposeMappings,\n /* file drop */\n ondropfile,\n /* Transcoorders */\n transcoordS2P,\n transcoordP2S,\n transcoordS2T,\n transcoordT2P,\n transcoordT2S,\n transcoordS2TR,\n transcoordS2O,\n transcoordC2S,\n transcoordS2C\n})\n\n/* clone 하지 않아도 되는 경우의 memoized getter */\n;['rotatePoint', 'font', 'lineHeight', 'retention'].forEach(getter =>\n Component.memoize(Component.prototype, getter, false)\n)\n/* clone 해야하는 경우의 memoized getter */\n;['bounds', 'center', 'textBounds'].forEach(getter => Component.memoize(Component.prototype, getter, true))\n\n/* event 기능을 mixin */\nComponent.mixin(Component.prototype, core.event.withEvent)\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,387 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _index = require("../layout/index.js");
|
|
8
|
+
var selector = _interopRequireWildcard(require("../model/selector.js"));
|
|
9
|
+
var _component = _interopRequireDefault(require("./component.js"));
|
|
10
|
+
var _moveHandle = _interopRequireDefault(require("./mixins/move-handle.js"));
|
|
11
|
+
var _rectPath = _interopRequireDefault(require("./mixins/rect-path.js"));
|
|
12
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
13
|
+
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); }
|
|
14
|
+
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; }
|
|
15
|
+
/*
|
|
16
|
+
* Copyright © HatioLab Inc. All rights reserved.
|
|
17
|
+
*/
|
|
18
|
+
|
|
19
|
+
const EMPTY = [];
|
|
20
|
+
class ContainerAbstract extends (0, _moveHandle.default)((0, _rectPath.default)(_component.default)) {
|
|
21
|
+
constructor(model, context) {
|
|
22
|
+
super(model, context);
|
|
23
|
+
this._components = [];
|
|
24
|
+
}
|
|
25
|
+
replaceRefids(replaceMap) {
|
|
26
|
+
this.components.forEach(m => m.replaceRefids(replaceMap));
|
|
27
|
+
}
|
|
28
|
+
get showMoveHandle() {
|
|
29
|
+
return true;
|
|
30
|
+
}
|
|
31
|
+
get showOverflow() {
|
|
32
|
+
return false;
|
|
33
|
+
}
|
|
34
|
+
dispose() {
|
|
35
|
+
this.components.slice().forEach(m => m.dispose());
|
|
36
|
+
super.dispose();
|
|
37
|
+
}
|
|
38
|
+
isContainer() {
|
|
39
|
+
return true;
|
|
40
|
+
}
|
|
41
|
+
containable(component) {
|
|
42
|
+
return component.isDescendible(this);
|
|
43
|
+
}
|
|
44
|
+
get hasTextProperty() {
|
|
45
|
+
return false;
|
|
46
|
+
}
|
|
47
|
+
get components() {
|
|
48
|
+
return this._components;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
// 컴포넌트를 임의로 추가 및 삭제할 수 있는 지를 지정하는 속성임.
|
|
52
|
+
// 예를 들면, 임의의 컴포넌트를 드래깅해서 컨테이너에 추가하거나, delete key로 삭제할 때 적용됨.
|
|
53
|
+
get focusible() {
|
|
54
|
+
return true;
|
|
55
|
+
}
|
|
56
|
+
get layout() {
|
|
57
|
+
return _index.Layout.get(this.get('layout')) || _index.AbsoluteLayout;
|
|
58
|
+
}
|
|
59
|
+
reflow() {
|
|
60
|
+
this.layout.reflow(this);
|
|
61
|
+
this.components && this.components.forEach(component => {
|
|
62
|
+
if (component.isContainer()) component.reflow();
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
get hierarchy() {
|
|
66
|
+
var model = super.hierarchy;
|
|
67
|
+
if (this.components) model.components = this.components.map(c => {
|
|
68
|
+
return c.hierarchy;
|
|
69
|
+
});
|
|
70
|
+
return model;
|
|
71
|
+
}
|
|
72
|
+
addComponent(component, ghost = false) {
|
|
73
|
+
var oldContainer = component.parent;
|
|
74
|
+
if (oldContainer) {
|
|
75
|
+
if (this === oldContainer) return;
|
|
76
|
+
oldContainer.removeComponent(component, ghost);
|
|
77
|
+
}
|
|
78
|
+
var index = this._components.push(component) - 1;
|
|
79
|
+
component.parent = this;
|
|
80
|
+
component.added(this); /* callback */
|
|
81
|
+
|
|
82
|
+
if (!ghost) {
|
|
83
|
+
this.trigger('add', this, component, index);
|
|
84
|
+
}
|
|
85
|
+
component.delegate_on(this);
|
|
86
|
+
if (!ghost) {
|
|
87
|
+
/*
|
|
88
|
+
ghost child component란 scene 차원에서 관리하지 않는 임시 자식 컴포넌트를 의미한다.
|
|
89
|
+
따라서, id, refid도 관리하지 않으며, 생성시에 refreshMapping 도 수행하지 않는다.
|
|
90
|
+
이벤트 핸들링에서도 제외된다.
|
|
91
|
+
예시. data-list 컴포넌트의 차일드 셀.
|
|
92
|
+
*/
|
|
93
|
+
component.trigger('added', this, component, index);
|
|
94
|
+
}
|
|
95
|
+
this.root && this.root.isReady && component.ready();
|
|
96
|
+
}
|
|
97
|
+
removeComponent(component, ghost = false) {
|
|
98
|
+
var idx = this._components.indexOf(component);
|
|
99
|
+
if (idx == -1) return;
|
|
100
|
+
this._components.splice(idx, 1);
|
|
101
|
+
component.parent = null;
|
|
102
|
+
component.removed(this); /* callback */
|
|
103
|
+
|
|
104
|
+
if (!ghost) {
|
|
105
|
+
this.trigger('remove', this, component);
|
|
106
|
+
/*
|
|
107
|
+
ghost child component란 scene 차원에서 관리하지 않는 임시 자식 컴포넌트를 의미한다.
|
|
108
|
+
따라서, id, refid도 관리하지 않으며, 생성시에 refreshMapping 도 수행하지 않는다.
|
|
109
|
+
이벤트 핸들링에서도 제외된다.
|
|
110
|
+
예시. data-list 컴포넌트의 차일드 셀.
|
|
111
|
+
*/
|
|
112
|
+
component.trigger('removed', this, component);
|
|
113
|
+
}
|
|
114
|
+
component.delegate_off(this);
|
|
115
|
+
}
|
|
116
|
+
insertComponentAt(component, index, ghost = false) {
|
|
117
|
+
var oldContainer = component.parent;
|
|
118
|
+
if (oldContainer) {
|
|
119
|
+
oldContainer.removeComponent(component, ghost);
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
// TODO index가 유효하지 않은 경우(예를 들면, index가 전체 컴포넌트 개수보다 큰 경우)에 대한 검증
|
|
123
|
+
var head = this._components.splice(0, index);
|
|
124
|
+
this._components = head.concat(component, this._components);
|
|
125
|
+
|
|
126
|
+
// 실제 적용된 인덱스를 다시 구한다.
|
|
127
|
+
index = this._components.indexOf(component);
|
|
128
|
+
component.parent = this;
|
|
129
|
+
component.added(this); /* callback */
|
|
130
|
+
|
|
131
|
+
if (!ghost) {
|
|
132
|
+
this.trigger('add', this, component, index);
|
|
133
|
+
}
|
|
134
|
+
component.delegate_on(this);
|
|
135
|
+
if (!ghost) {
|
|
136
|
+
component.trigger('added', this, component, index);
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
add(comp, ghost = false) {
|
|
140
|
+
if (!(comp instanceof Array)) {
|
|
141
|
+
return this.add.call(this, [comp], ghost);
|
|
142
|
+
}
|
|
143
|
+
comp.forEach(c => {
|
|
144
|
+
if (this._components.indexOf(c) == -1) this.addComponent(c, ghost);
|
|
145
|
+
});
|
|
146
|
+
return this;
|
|
147
|
+
}
|
|
148
|
+
remove(comp, ghost = false) {
|
|
149
|
+
if (!(comp instanceof Array)) {
|
|
150
|
+
return this.remove.call(this, [comp], ghost);
|
|
151
|
+
}
|
|
152
|
+
if (!this._components) return this;
|
|
153
|
+
comp.forEach(c => {
|
|
154
|
+
this.removeComponent(c, ghost);
|
|
155
|
+
});
|
|
156
|
+
return this;
|
|
157
|
+
}
|
|
158
|
+
getAt(index) {
|
|
159
|
+
if (this._components) return this._components[index];
|
|
160
|
+
}
|
|
161
|
+
forEach(fn, context) {
|
|
162
|
+
if (!this._components) return;
|
|
163
|
+
this._components.forEach(fn, context);
|
|
164
|
+
}
|
|
165
|
+
traverse(fn, context) {
|
|
166
|
+
fn.call(context, this);
|
|
167
|
+
if (!this._components) return;
|
|
168
|
+
this._components.forEach(component => {
|
|
169
|
+
if (component.isContainer()) component.traverse(fn, context);else fn.call(context, component);
|
|
170
|
+
});
|
|
171
|
+
}
|
|
172
|
+
indexOf(item) {
|
|
173
|
+
return (this._components || EMPTY).indexOf(item);
|
|
174
|
+
}
|
|
175
|
+
size() {
|
|
176
|
+
return (this._components || EMPTY).length;
|
|
177
|
+
}
|
|
178
|
+
moveChildAt(index, child) {
|
|
179
|
+
var oldIndex = this.indexOf(child);
|
|
180
|
+
if (oldIndex == -1) return;
|
|
181
|
+
var head = this._components.splice(0, oldIndex);
|
|
182
|
+
var tail = this._components.splice(1);
|
|
183
|
+
this._components = head.concat(tail);
|
|
184
|
+
index = Math.max(0, index);
|
|
185
|
+
index = Math.min(index, this._components.length);
|
|
186
|
+
head = this._components.splice(0, index);
|
|
187
|
+
this._components = head.concat(child, this._components);
|
|
188
|
+
}
|
|
189
|
+
moveChildForward(child) {
|
|
190
|
+
var index = this.indexOf(child);
|
|
191
|
+
if (index == -1 || index == this.size() - 1) return;
|
|
192
|
+
this._components[index] = this._components[index + 1];
|
|
193
|
+
this._components[index + 1] = child;
|
|
194
|
+
}
|
|
195
|
+
moveChildBackward(child) {
|
|
196
|
+
var index = this.indexOf(child);
|
|
197
|
+
if (index == -1 || index == 0) return;
|
|
198
|
+
this._components[index] = this._components[index - 1];
|
|
199
|
+
this._components[index - 1] = child;
|
|
200
|
+
}
|
|
201
|
+
moveChildToFront(child) {
|
|
202
|
+
var index = this.indexOf(child);
|
|
203
|
+
if (index == -1 || index == this.size() - 1) return;
|
|
204
|
+
var head = this._components.splice(0, index);
|
|
205
|
+
var tail = this._components.splice(1);
|
|
206
|
+
this._components = head.concat(tail, this._components);
|
|
207
|
+
}
|
|
208
|
+
moveChildToBack(child) {
|
|
209
|
+
var index = this.indexOf(child);
|
|
210
|
+
if (index == -1 || index == 0) return;
|
|
211
|
+
var head = this._components.splice(0, index);
|
|
212
|
+
var tail = this._components.splice(0);
|
|
213
|
+
this._components = this._components.concat(head, tail);
|
|
214
|
+
}
|
|
215
|
+
symmetryX(x) {
|
|
216
|
+
super.symmetryX(x);
|
|
217
|
+
this.components.map(component => {
|
|
218
|
+
component.symmetryX(0);
|
|
219
|
+
});
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
/*
|
|
223
|
+
* 조건에 맞는 컴포넌트를 찾기 위한 기능들
|
|
224
|
+
*
|
|
225
|
+
* findAll(s, ...others) 조건에 맞는 모든 컴포넌트를 찾아낸다.
|
|
226
|
+
* findFirst(finder, ...others) finder 함수에서 조건에 맞는 첫번째 컴포넌트를 리턴한다. (To Be Defined)
|
|
227
|
+
* capture(x, y) 파라미터로 주어진 좌표값을 포함하는 컴포넌트를 찾는다. (Event Capturing)
|
|
228
|
+
* findById(id) 파라미터 id와 같은 id를 가진 컴포넌트를 찾는다.
|
|
229
|
+
*/
|
|
230
|
+
|
|
231
|
+
findAll(s, ...others) {
|
|
232
|
+
if (typeof s === 'string') return selector.select(s, this, others[0] || this); // others[0] means (self)
|
|
233
|
+
|
|
234
|
+
if (typeof s !== 'function') return;
|
|
235
|
+
var found = [];
|
|
236
|
+
for (let i = this.components.length - 1; i >= 0; i--) {
|
|
237
|
+
let components = this.components[i].findAll(s, ...others);
|
|
238
|
+
if (components) found = found.concat(components);
|
|
239
|
+
}
|
|
240
|
+
if (s(this, ...others)) found.push(this);
|
|
241
|
+
return found;
|
|
242
|
+
}
|
|
243
|
+
findFirst(s, ...others) {
|
|
244
|
+
if (typeof s === 'string') return selector.select(s, this, others[0])[0];
|
|
245
|
+
if (typeof s !== 'function') return;
|
|
246
|
+
for (let i = this.components.length - 1; i >= 0; i--) {
|
|
247
|
+
var found = this.components[i].findFirst(s, ...others);
|
|
248
|
+
if (found != null) return found;
|
|
249
|
+
}
|
|
250
|
+
if (s(this, ...others)) return this;
|
|
251
|
+
return null;
|
|
252
|
+
}
|
|
253
|
+
findById(id) {
|
|
254
|
+
return this.root.findById(id);
|
|
255
|
+
}
|
|
256
|
+
findByRefid(ref) {
|
|
257
|
+
return this.root.findByRefid(ref);
|
|
258
|
+
}
|
|
259
|
+
contains(x, y) {
|
|
260
|
+
// 효율을 위해서, contains를 호출하기 전에 x, y좌표값은 이 컴포넌트에 대해서 이미 transcoord 된 상태이다.
|
|
261
|
+
// 참조 : capture(x, y)
|
|
262
|
+
|
|
263
|
+
var contains = super.contains(x, y);
|
|
264
|
+
if (!contains) {
|
|
265
|
+
var {
|
|
266
|
+
left,
|
|
267
|
+
top,
|
|
268
|
+
width,
|
|
269
|
+
height
|
|
270
|
+
} = this.state;
|
|
271
|
+
contains = x < Math.max(left + width, left) && x > Math.min(left + width, left) && y < Math.max(top + height, top) && y > Math.min(top + height, top);
|
|
272
|
+
}
|
|
273
|
+
return contains;
|
|
274
|
+
}
|
|
275
|
+
capture(x, y, except) {
|
|
276
|
+
var point = this.transcoordP2S(x, y);
|
|
277
|
+
if (!this.contains(point.x, point.y)) {
|
|
278
|
+
return false;
|
|
279
|
+
}
|
|
280
|
+
|
|
281
|
+
// 나의 좌표로 시프트
|
|
282
|
+
var bounds = this.bounds;
|
|
283
|
+
point.x -= bounds.left;
|
|
284
|
+
point.y -= bounds.top;
|
|
285
|
+
var capturables = this.layout.capturables(this);
|
|
286
|
+
for (let i = capturables.length - 1; i >= 0; i--) {
|
|
287
|
+
var found = capturables[i].capture(point.x, point.y, except);
|
|
288
|
+
if (found) return found;
|
|
289
|
+
}
|
|
290
|
+
return this.capturable && !except?.(this) && this;
|
|
291
|
+
}
|
|
292
|
+
|
|
293
|
+
/*
|
|
294
|
+
* capturePath(path) 파라미터로 주어진 path를 포함하는 컨테이너를 찾는다.
|
|
295
|
+
* @path
|
|
296
|
+
* @excepts 컨테이너를 찾을 때 제외되는 대상이다.
|
|
297
|
+
*/
|
|
298
|
+
|
|
299
|
+
capturePath(path, excepts) {
|
|
300
|
+
if (excepts) {
|
|
301
|
+
if (excepts.indexOf(this) > -1) return false;
|
|
302
|
+
for (let i = 0; i < excepts.length; i++) if (!this.containable(excepts[i])) return false;
|
|
303
|
+
}
|
|
304
|
+
|
|
305
|
+
// path의 각 좌표는 부모 기준의 좌표로 변환된 것이므로, 나의 각도를 적용해서 변환한다.
|
|
306
|
+
var cpath = [];
|
|
307
|
+
var {
|
|
308
|
+
left,
|
|
309
|
+
top,
|
|
310
|
+
width,
|
|
311
|
+
height
|
|
312
|
+
} = this.bounds;
|
|
313
|
+
for (let i = 0; i < path.length; i++) {
|
|
314
|
+
let point = this.transcoordP2S(path[i].x, path[i].y);
|
|
315
|
+
if (point.x < left || point.x > left + width || point.y < top || point.y > top + height) return false;
|
|
316
|
+
point.x -= left;
|
|
317
|
+
point.y -= top;
|
|
318
|
+
cpath.push(point);
|
|
319
|
+
}
|
|
320
|
+
let capturables = this.layout.capturables(this);
|
|
321
|
+
for (let i = capturables.length - 1; i >= 0; i--) {
|
|
322
|
+
let capturable = capturables[i];
|
|
323
|
+
if (!capturable.isContainer()) continue;
|
|
324
|
+
let found = capturable.capturePath(cpath, excepts);
|
|
325
|
+
if (found) return found;
|
|
326
|
+
}
|
|
327
|
+
return this.focusible && this;
|
|
328
|
+
}
|
|
329
|
+
|
|
330
|
+
/* render .. */
|
|
331
|
+
|
|
332
|
+
render(context) {
|
|
333
|
+
var {
|
|
334
|
+
left = 0,
|
|
335
|
+
top = 0,
|
|
336
|
+
width,
|
|
337
|
+
height
|
|
338
|
+
} = this.bounds;
|
|
339
|
+
context.beginPath();
|
|
340
|
+
context.rect(left, top, width, height);
|
|
341
|
+
context.closePath();
|
|
342
|
+
this.drawFill(context);
|
|
343
|
+
this.drawStroke(context);
|
|
344
|
+
}
|
|
345
|
+
postrender(context) {
|
|
346
|
+
const drawables = this.layout.drawables(this);
|
|
347
|
+
if (drawables.length > 0) {
|
|
348
|
+
/* 자식 컴포넌트들 그리기 */
|
|
349
|
+
var {
|
|
350
|
+
left = 0,
|
|
351
|
+
top = 0,
|
|
352
|
+
width,
|
|
353
|
+
height
|
|
354
|
+
} = this.bounds;
|
|
355
|
+
context.save();
|
|
356
|
+
if (!this.showOverflow) {
|
|
357
|
+
context.beginPath();
|
|
358
|
+
context.rect(left, top, width, height);
|
|
359
|
+
context.clip();
|
|
360
|
+
context.closePath();
|
|
361
|
+
}
|
|
362
|
+
var {
|
|
363
|
+
top,
|
|
364
|
+
left
|
|
365
|
+
} = this.state;
|
|
366
|
+
context.translate(left, top);
|
|
367
|
+
drawables.forEach(m => {
|
|
368
|
+
m.draw(context);
|
|
369
|
+
});
|
|
370
|
+
context.translate(-left, -top);
|
|
371
|
+
context.restore();
|
|
372
|
+
}
|
|
373
|
+
super.postrender(context);
|
|
374
|
+
}
|
|
375
|
+
trim() {
|
|
376
|
+
this.components.forEach(component => {
|
|
377
|
+
component.trim();
|
|
378
|
+
});
|
|
379
|
+
super.trim();
|
|
380
|
+
}
|
|
381
|
+
}
|
|
382
|
+
|
|
383
|
+
/* clone 하지 않아도 되는 경우의 memoized getter */
|
|
384
|
+
exports.default = ContainerAbstract;
|
|
385
|
+
;
|
|
386
|
+
['layout'].forEach(getter => _component.default.memoize(ContainerAbstract.prototype, getter, false));
|
|
387
|
+
//# sourceMappingURL=container-abstract.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"container-abstract.js","names":["_index","require","selector","_interopRequireWildcard","_component","_interopRequireDefault","_moveHandle","_rectPath","e","__esModule","default","_getRequireWildcardCache","WeakMap","r","t","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","EMPTY","ContainerAbstract","MoveHandle","RectPath","Component","constructor","model","context","_components","replaceRefids","replaceMap","components","forEach","m","showMoveHandle","showOverflow","dispose","slice","isContainer","containable","component","isDescendible","hasTextProperty","focusible","layout","Layout","AbsoluteLayout","reflow","hierarchy","map","c","addComponent","ghost","oldContainer","parent","removeComponent","index","push","added","trigger","delegate_on","root","isReady","ready","idx","indexOf","splice","removed","delegate_off","insertComponentAt","head","concat","add","comp","Array","remove","getAt","fn","traverse","item","size","length","moveChildAt","child","oldIndex","tail","Math","max","min","moveChildForward","moveChildBackward","moveChildToFront","moveChildToBack","symmetryX","x","findAll","s","others","select","found","findFirst","findById","id","findByRefid","ref","contains","y","left","top","width","height","state","capture","except","point","transcoordP2S","bounds","capturables","capturable","capturePath","path","excepts","cpath","render","beginPath","rect","closePath","drawFill","drawStroke","postrender","drawables","save","clip","translate","draw","restore","trim","exports","getter","memoize","prototype"],"sources":["../../src/components/container-abstract.js"],"sourcesContent":["/*\n * Copyright © HatioLab Inc. All rights reserved.\n */\n\nimport { AbsoluteLayout, Layout } from '../layout/index.js'\nimport * as selector from '../model/selector.js'\nimport Component from './component.js'\nimport MoveHandle from './mixins/move-handle.js'\nimport RectPath from './mixins/rect-path.js'\n\nconst EMPTY = []\n\nexport default class ContainerAbstract extends MoveHandle(RectPath(Component)) {\n constructor(model, context) {\n super(model, context)\n\n this._components = []\n }\n\n replaceRefids(replaceMap) {\n this.components.forEach(m => m.replaceRefids(replaceMap))\n }\n\n get showMoveHandle() {\n return true\n }\n\n get showOverflow() {\n return false\n }\n\n dispose() {\n this.components.slice().forEach(m => m.dispose())\n\n super.dispose()\n }\n\n isContainer() {\n return true\n }\n\n containable(component) {\n return component.isDescendible(this)\n }\n\n get hasTextProperty() {\n return false\n }\n\n get components() {\n return this._components\n }\n\n // 컴포넌트를 임의로 추가 및 삭제할 수 있는 지를 지정하는 속성임.\n // 예를 들면, 임의의 컴포넌트를 드래깅해서 컨테이너에 추가하거나, delete key로 삭제할 때 적용됨.\n get focusible() {\n return true\n }\n\n get layout() {\n return Layout.get(this.get('layout')) || AbsoluteLayout\n }\n\n reflow() {\n this.layout.reflow(this)\n\n this.components &&\n this.components.forEach(component => {\n if (component.isContainer()) component.reflow()\n })\n }\n\n get hierarchy() {\n var model = super.hierarchy\n\n if (this.components)\n model.components = this.components.map(c => {\n return c.hierarchy\n })\n\n return model\n }\n\n addComponent(component, ghost = false) {\n var oldContainer = component.parent\n\n if (oldContainer) {\n if (this === oldContainer) return\n\n oldContainer.removeComponent(component, ghost)\n }\n\n var index = this._components.push(component) - 1\n\n component.parent = this\n component.added(this) /* callback */\n\n if (!ghost) {\n this.trigger('add', this, component, index)\n }\n\n component.delegate_on(this)\n\n if (!ghost) {\n /* \n ghost child component란 scene 차원에서 관리하지 않는 임시 자식 컴포넌트를 의미한다. \n 따라서, id, refid도 관리하지 않으며, 생성시에 refreshMapping 도 수행하지 않는다.\n 이벤트 핸들링에서도 제외된다.\n 예시. data-list 컴포넌트의 차일드 셀.\n */\n component.trigger('added', this, component, index)\n }\n\n this.root && this.root.isReady && component.ready()\n }\n\n removeComponent(component, ghost = false) {\n var idx = this._components.indexOf(component)\n\n if (idx == -1) return\n\n this._components.splice(idx, 1)\n\n component.parent = null\n component.removed(this) /* callback */\n\n if (!ghost) {\n this.trigger('remove', this, component)\n /* \n ghost child component란 scene 차원에서 관리하지 않는 임시 자식 컴포넌트를 의미한다. \n 따라서, id, refid도 관리하지 않으며, 생성시에 refreshMapping 도 수행하지 않는다.\n 이벤트 핸들링에서도 제외된다.\n 예시. data-list 컴포넌트의 차일드 셀.\n */\n component.trigger('removed', this, component)\n }\n\n component.delegate_off(this)\n }\n\n insertComponentAt(component, index, ghost = false) {\n var oldContainer = component.parent\n\n if (oldContainer) {\n oldContainer.removeComponent(component, ghost)\n }\n\n // TODO index가 유효하지 않은 경우(예를 들면, index가 전체 컴포넌트 개수보다 큰 경우)에 대한 검증\n var head = this._components.splice(0, index)\n this._components = head.concat(component, this._components)\n\n // 실제 적용된 인덱스를 다시 구한다.\n index = this._components.indexOf(component)\n\n component.parent = this\n component.added(this) /* callback */\n\n if (!ghost) {\n this.trigger('add', this, component, index)\n }\n\n component.delegate_on(this)\n if (!ghost) {\n component.trigger('added', this, component, index)\n }\n }\n\n add(comp, ghost = false) {\n if (!(comp instanceof Array)) {\n return this.add.call(this, [comp], ghost)\n }\n\n comp.forEach(c => {\n if (this._components.indexOf(c) == -1) this.addComponent(c, ghost)\n })\n\n return this\n }\n\n remove(comp, ghost = false) {\n if (!(comp instanceof Array)) {\n return this.remove.call(this, [comp], ghost)\n }\n\n if (!this._components) return this\n\n comp.forEach(c => {\n this.removeComponent(c, ghost)\n })\n\n return this\n }\n\n getAt(index) {\n if (this._components) return this._components[index]\n }\n\n forEach(fn, context) {\n if (!this._components) return\n\n this._components.forEach(fn, context)\n }\n\n traverse(fn, context) {\n fn.call(context, this)\n\n if (!this._components) return\n\n this._components.forEach(component => {\n if (component.isContainer()) component.traverse(fn, context)\n else fn.call(context, component)\n })\n }\n\n indexOf(item) {\n return (this._components || EMPTY).indexOf(item)\n }\n\n size() {\n return (this._components || EMPTY).length\n }\n\n moveChildAt(index, child) {\n var oldIndex = this.indexOf(child)\n if (oldIndex == -1) return\n\n var head = this._components.splice(0, oldIndex)\n var tail = this._components.splice(1)\n\n this._components = head.concat(tail)\n\n index = Math.max(0, index)\n index = Math.min(index, this._components.length)\n\n head = this._components.splice(0, index)\n this._components = head.concat(child, this._components)\n }\n\n moveChildForward(child) {\n var index = this.indexOf(child)\n if (index == -1 || index == this.size() - 1) return\n\n this._components[index] = this._components[index + 1]\n this._components[index + 1] = child\n }\n\n moveChildBackward(child) {\n var index = this.indexOf(child)\n if (index == -1 || index == 0) return\n\n this._components[index] = this._components[index - 1]\n this._components[index - 1] = child\n }\n\n moveChildToFront(child) {\n var index = this.indexOf(child)\n if (index == -1 || index == this.size() - 1) return\n\n var head = this._components.splice(0, index)\n var tail = this._components.splice(1)\n\n this._components = head.concat(tail, this._components)\n }\n\n moveChildToBack(child) {\n var index = this.indexOf(child)\n if (index == -1 || index == 0) return\n\n var head = this._components.splice(0, index)\n var tail = this._components.splice(0)\n\n this._components = this._components.concat(head, tail)\n }\n\n symmetryX(x) {\n super.symmetryX(x)\n\n this.components.map(component => {\n component.symmetryX(0)\n })\n }\n\n /*\n * 조건에 맞는 컴포넌트를 찾기 위한 기능들\n *\n * findAll(s, ...others) 조건에 맞는 모든 컴포넌트를 찾아낸다.\n * findFirst(finder, ...others) finder 함수에서 조건에 맞는 첫번째 컴포넌트를 리턴한다. (To Be Defined)\n * capture(x, y) 파라미터로 주어진 좌표값을 포함하는 컴포넌트를 찾는다. (Event Capturing)\n * findById(id) 파라미터 id와 같은 id를 가진 컴포넌트를 찾는다.\n */\n\n findAll(s, ...others) {\n if (typeof s === 'string') return selector.select(s, this, others[0] || this) // others[0] means (self)\n\n if (typeof s !== 'function') return\n\n var found = []\n\n for (let i = this.components.length - 1; i >= 0; i--) {\n let components = this.components[i].findAll(s, ...others)\n if (components) found = found.concat(components)\n }\n\n if (s(this, ...others)) found.push(this)\n\n return found\n }\n\n findFirst(s, ...others) {\n if (typeof s === 'string') return selector.select(s, this, others[0])[0]\n\n if (typeof s !== 'function') return\n\n for (let i = this.components.length - 1; i >= 0; i--) {\n var found = this.components[i].findFirst(s, ...others)\n if (found != null) return found\n }\n\n if (s(this, ...others)) return this\n\n return null\n }\n\n findById(id) {\n return this.root.findById(id)\n }\n\n findByRefid(ref) {\n return this.root.findByRefid(ref)\n }\n\n contains(x, y) {\n // 효율을 위해서, contains를 호출하기 전에 x, y좌표값은 이 컴포넌트에 대해서 이미 transcoord 된 상태이다.\n // 참조 : capture(x, y)\n\n var contains = super.contains(x, y)\n\n if (!contains) {\n var { left, top, width, height } = this.state\n\n contains =\n x < Math.max(left + width, left) &&\n x > Math.min(left + width, left) &&\n y < Math.max(top + height, top) &&\n y > Math.min(top + height, top)\n }\n\n return contains\n }\n\n capture(x, y, except) {\n var point = this.transcoordP2S(x, y)\n\n if (!this.contains(point.x, point.y)) {\n return false\n }\n\n // 나의 좌표로 시프트\n var bounds = this.bounds\n\n point.x -= bounds.left\n point.y -= bounds.top\n\n var capturables = this.layout.capturables(this)\n\n for (let i = capturables.length - 1; i >= 0; i--) {\n var found = capturables[i].capture(point.x, point.y, except)\n if (found) return found\n }\n\n return this.capturable && !except?.(this) && this\n }\n\n /*\n * capturePath(path) 파라미터로 주어진 path를 포함하는 컨테이너를 찾는다.\n * @path\n * @excepts 컨테이너를 찾을 때 제외되는 대상이다.\n */\n\n capturePath(path, excepts) {\n if (excepts) {\n if (excepts.indexOf(this) > -1) return false\n\n for (let i = 0; i < excepts.length; i++) if (!this.containable(excepts[i])) return false\n }\n\n // path의 각 좌표는 부모 기준의 좌표로 변환된 것이므로, 나의 각도를 적용해서 변환한다.\n var cpath = []\n var { left, top, width, height } = this.bounds\n\n for (let i = 0; i < path.length; i++) {\n let point = this.transcoordP2S(path[i].x, path[i].y)\n\n if (point.x < left || point.x > left + width || point.y < top || point.y > top + height) return false\n\n point.x -= left\n point.y -= top\n\n cpath.push(point)\n }\n\n let capturables = this.layout.capturables(this)\n\n for (let i = capturables.length - 1; i >= 0; i--) {\n let capturable = capturables[i]\n if (!capturable.isContainer()) continue\n\n let found = capturable.capturePath(cpath, excepts)\n if (found) return found\n }\n\n return this.focusible && this\n }\n\n /* render .. */\n\n render(context) {\n var { left = 0, top = 0, width, height } = this.bounds\n\n context.beginPath()\n\n context.rect(left, top, width, height)\n\n context.closePath()\n\n this.drawFill(context)\n this.drawStroke(context)\n }\n\n postrender(context) {\n const drawables = this.layout.drawables(this)\n\n if (drawables.length > 0) {\n /* 자식 컴포넌트들 그리기 */\n var { left = 0, top = 0, width, height } = this.bounds\n\n context.save()\n\n if (!this.showOverflow) {\n context.beginPath()\n\n context.rect(left, top, width, height)\n context.clip()\n\n context.closePath()\n }\n\n var { top, left } = this.state\n context.translate(left, top)\n\n drawables.forEach(m => {\n m.draw(context)\n })\n\n context.translate(-left, -top)\n\n context.restore()\n }\n\n super.postrender(context)\n }\n\n trim() {\n this.components.forEach(component => {\n component.trim()\n })\n\n super.trim()\n }\n}\n\n/* clone 하지 않아도 되는 경우의 memoized getter */\n;['layout'].forEach(getter => Component.memoize(ContainerAbstract.prototype, getter, false))\n"],"mappings":"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","ignoreList":[]}
|