@hatiolab/things-scene 9.0.0-beta.2 → 9.0.0-beta.21
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/db.sqlite +0 -0
- package/dist/animation/animate.d.ts +4 -0
- package/dist/animation/animations/animation.d.ts +14 -0
- package/dist/animation/animations/fade.d.ts +4 -0
- package/dist/animation/animations/heartbeat.d.ts +4 -0
- package/dist/animation/animations/moving.d.ts +4 -0
- package/dist/animation/animations/outline.d.ts +10 -0
- package/dist/animation/animations/rotation.d.ts +4 -0
- package/dist/animation/animations/vibration.d.ts +4 -0
- package/dist/animation/compile.d.ts +1 -0
- package/dist/animation/delta.d.ts +19 -0
- package/dist/animation/index.d.ts +1 -0
- package/dist/command/command-change.d.ts +7 -0
- package/dist/command/command-migrate.d.ts +4 -0
- package/dist/command/command-migrate.js +85 -0
- package/dist/command/command-migrate.js.map +1 -0
- package/dist/command/command.d.ts +5 -0
- package/dist/command/snapshot-commander.d.ts +15 -0
- package/dist/components/anchor/anchor.d.ts +128 -0
- package/dist/components/anchor/ellipse-anchors.d.ts +2 -0
- package/dist/components/anchor/ellipse-anchors.js +38 -0
- package/dist/components/anchor/ellipse-anchors.js.map +1 -0
- package/dist/components/anchor/rect-anchors.d.ts +10 -0
- package/dist/components/audio.d.ts +25 -0
- package/dist/components/audio.js +141 -0
- package/dist/components/audio.js.map +1 -0
- package/dist/components/cloud.d.ts +13 -0
- package/dist/components/cloud.js +31 -0
- package/dist/components/cloud.js.map +1 -0
- package/dist/components/component.d.ts +227 -0
- package/dist/components/component.js +912 -0
- package/dist/components/component.js.map +1 -0
- package/dist/components/container-abstract.d.ts +51 -0
- package/dist/components/container-abstract.js +372 -0
- package/dist/components/container-abstract.js.map +1 -0
- package/dist/components/container.d.ts +38 -0
- package/dist/components/container.js +75 -0
- package/dist/components/container.js.map +1 -0
- package/dist/components/data/data-mapping.d.ts +16 -0
- package/dist/components/data/data.d.ts +8 -0
- package/dist/components/data/evaluator.d.ts +1 -0
- package/dist/components/donut.d.ts +15 -0
- package/dist/components/donut.js +74 -0
- package/dist/components/donut.js.map +1 -0
- package/dist/components/drawer/draw-image-pendable.d.ts +1 -0
- package/dist/components/drawer/effect.d.ts +1 -0
- package/dist/components/drawer/fill.d.ts +14 -0
- package/dist/components/drawer/format.d.ts +1 -0
- package/dist/components/drawer/line.d.ts +3 -0
- package/dist/components/drawer/stroke.d.ts +1 -0
- package/dist/components/drawer/text-wrapper.d.ts +10 -0
- package/dist/components/drawer/text.d.ts +3 -0
- package/dist/components/ellipse.d.ts +35 -0
- package/dist/components/ellipse.js +99 -0
- package/dist/components/ellipse.js.map +1 -0
- package/dist/components/file/ondropfile.d.ts +1 -0
- package/dist/components/fit/fit.d.ts +15 -0
- package/dist/components/geometry/transcoord.d.ts +41 -0
- package/dist/components/geometry/union.d.ts +6 -0
- package/dist/components/gif-view.d.ts +18 -0
- package/dist/components/gif-view.js +116 -0
- package/dist/components/gif-view.js.map +1 -0
- package/dist/components/global-ref.d.ts +36 -0
- package/dist/components/global-ref.js +128 -0
- package/dist/components/global-ref.js.map +1 -0
- package/dist/components/group.d.ts +15 -0
- package/dist/components/group.js +145 -0
- package/dist/components/group.js.map +1 -0
- package/dist/components/html/elements.d.ts +2 -0
- package/dist/components/html/fill.d.ts +1 -0
- package/dist/components/html/reposition.d.ts +1 -0
- package/dist/components/html/shadow.d.ts +1 -0
- package/dist/components/html-overlay-container.d.ts +27 -0
- package/dist/components/html-overlay-container.js +14 -0
- package/dist/components/html-overlay-container.js.map +1 -0
- package/dist/components/html-overlay-element.d.ts +25 -0
- package/dist/components/html-overlay-element.js +9 -0
- package/dist/components/html-overlay-element.js.map +1 -0
- package/dist/components/image-view.d.ts +19 -0
- package/dist/components/image-view.js +180 -0
- package/dist/components/image-view.js.map +1 -0
- package/dist/components/index.d.ts +32 -0
- package/dist/components/index.js +39 -0
- package/dist/components/index.js.map +1 -0
- package/dist/components/info-window.d.ts +41 -0
- package/dist/components/info-window.js +425 -0
- package/dist/components/info-window.js.map +1 -0
- package/dist/components/line.d.ts +91 -0
- package/dist/components/line.js +303 -0
- package/dist/components/line.js.map +1 -0
- package/dist/components/local-ref.d.ts +47 -0
- package/dist/components/local-ref.js +103 -0
- package/dist/components/local-ref.js.map +1 -0
- package/dist/components/mixins/connectable.d.ts +45 -0
- package/dist/components/mixins/data-source.d.ts +9 -0
- package/dist/components/mixins/html-element.d.ts +24 -0
- package/dist/components/mixins/move-handle.d.ts +11 -0
- package/dist/components/mixins/rect-path.d.ts +13 -0
- package/dist/components/mixins/value-holder.d.ts +18 -0
- package/dist/components/mutater/bounds.d.ts +10 -0
- package/dist/components/mutater/path.d.ts +5 -0
- package/dist/components/ortholine.d.ts +21 -0
- package/dist/components/ortholine.js +814 -0
- package/dist/components/ortholine.js.map +1 -0
- package/dist/components/outline/ellipse-outline.d.ts +4 -0
- package/dist/components/outline/ellipse-outline.js +11 -0
- package/dist/components/outline/ellipse-outline.js.map +1 -0
- package/dist/components/outline/path-outline.d.ts +1 -0
- package/dist/components/path.d.ts +5 -0
- package/dist/components/path.js +40 -0
- package/dist/components/path.js.map +1 -0
- package/dist/components/polygon.d.ts +40 -0
- package/dist/components/polygon.js +157 -0
- package/dist/components/polygon.js.map +1 -0
- package/dist/components/polyline.d.ts +18 -0
- package/dist/components/polyline.js +102 -0
- package/dist/components/polyline.js.map +1 -0
- package/dist/components/popup.d.ts +48 -0
- package/dist/components/popup.js +138 -0
- package/dist/components/popup.js.map +1 -0
- package/dist/components/rect.d.ts +26 -0
- package/dist/components/rect.js +91 -0
- package/dist/components/rect.js.map +1 -0
- package/dist/components/retention/retention-manager.d.ts +8 -0
- package/dist/components/root-container.d.ts +90 -0
- package/dist/components/root-container.js +478 -0
- package/dist/components/root-container.js.map +1 -0
- package/dist/components/ruler.d.ts +16 -0
- package/dist/components/ruler.js +77 -0
- package/dist/components/ruler.js.map +1 -0
- package/dist/components/shape.d.ts +25 -0
- package/dist/components/shape.js +80 -0
- package/dist/components/shape.js.map +1 -0
- package/dist/components/star.d.ts +13 -0
- package/dist/components/star.js +80 -0
- package/dist/components/star.js.map +1 -0
- package/dist/components/text/substitutor.d.ts +3 -0
- package/dist/components/text.d.ts +8 -0
- package/dist/components/text.js +15 -0
- package/dist/components/text.js.map +1 -0
- package/dist/components/three-container.d.ts +60 -0
- package/dist/components/three-container.js +515 -0
- package/dist/components/three-container.js.map +1 -0
- package/dist/components/triangle.d.ts +15 -0
- package/dist/components/triangle.js +76 -0
- package/dist/components/triangle.js.map +1 -0
- package/dist/const.d.ts +39 -0
- package/dist/core/collection.d.ts +8 -0
- package/dist/core/debug.d.ts +1 -0
- package/dist/core/deep-equals.d.ts +1 -0
- package/dist/core/dom-to-image.d.ts +127 -0
- package/dist/core/event.d.ts +92 -0
- package/dist/core/index.d.ts +2 -0
- package/dist/core/list.d.ts +32 -0
- package/dist/core/logger.d.ts +3 -0
- package/dist/core/memoize.d.ts +6 -0
- package/dist/core/mixin.d.ts +1 -0
- package/dist/core/obj-accessor.d.ts +1 -0
- package/dist/core/reference-map.d.ts +14 -0
- package/dist/core/round-rect.d.ts +19 -0
- package/dist/core/script-loader.d.ts +3 -0
- package/dist/core/snapshot-taker.d.ts +12 -0
- package/dist/core/stack.d.ts +2 -0
- package/dist/core/timecapsule.d.ts +18 -0
- package/dist/core/utils.d.ts +9 -0
- package/dist/decorator/anchors-decorator.d.ts +31 -0
- package/dist/decorator/data-spread-decorator.d.ts +1 -0
- package/dist/decorator/decotag-decorator.d.ts +1 -0
- package/dist/decorator/index.d.ts +2 -0
- package/dist/decorator/link-decorator.d.ts +1 -0
- package/dist/effect/gradation.d.ts +1 -0
- package/dist/effect/index.d.ts +1 -0
- package/dist/effect/shadow.d.ts +2 -0
- package/dist/effect/turn.d.ts +1 -0
- package/dist/event/event-engine.d.ts +12 -0
- package/dist/event/event-pump.d.ts +11 -0
- package/dist/event/event-tracker.d.ts +21 -0
- package/dist/event/index.d.ts +2 -0
- package/dist/event/ua-event-handler.d.ts +32 -0
- package/dist/event-map/event-map.d.ts +9 -0
- package/dist/event-map/index.d.ts +1 -0
- package/dist/event-map/move-handler.d.ts +1 -0
- package/dist/event-map/text-editor-lite.d.ts +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -0
- package/dist/layer/action/emphasize.d.ts +2 -0
- package/dist/layer/action/popup.d.ts +5 -0
- package/dist/layer/action/pressed.d.ts +2 -0
- package/dist/layer/add-layer.d.ts +42 -0
- package/dist/layer/add-layer.js +142 -0
- package/dist/layer/add-layer.js.map +1 -0
- package/dist/layer/decotag-layer.d.ts +27 -0
- package/dist/layer/decotag-layer.js +105 -0
- package/dist/layer/decotag-layer.js.map +1 -0
- package/dist/layer/guide-layer.d.ts +44 -0
- package/dist/layer/guide-layer.js +261 -0
- package/dist/layer/guide-layer.js.map +1 -0
- package/dist/layer/index.d.ts +7 -0
- package/dist/layer/index.js +11 -0
- package/dist/layer/index.js.map +1 -0
- package/dist/layer/layer.d.ts +32 -0
- package/dist/layer/layer.js +155 -0
- package/dist/layer/layer.js.map +1 -0
- package/dist/layer/model-layer.d.ts +46 -0
- package/dist/layer/model-layer.js +402 -0
- package/dist/layer/model-layer.js.map +1 -0
- package/dist/layer/modeler/anchor-handler.d.ts +36 -0
- package/dist/layer/modeler/control-handler.d.ts +18 -0
- package/dist/layer/modeler/focus-outline.d.ts +5 -0
- package/dist/layer/modeler/group-outline.d.ts +5 -0
- package/dist/layer/modeler/index.d.ts +7 -0
- package/dist/layer/modeler/path-handler.d.ts +22 -0
- package/dist/layer/modeler/resizer.d.ts +13 -0
- package/dist/layer/modeler/rotator.d.ts +15 -0
- package/dist/layer/modeler/rotator.js +120 -0
- package/dist/layer/modeler/rotator.js.map +1 -0
- package/dist/layer/modeling-layer.d.ts +66 -0
- package/dist/layer/modeling-layer.js +451 -0
- package/dist/layer/modeling-layer.js.map +1 -0
- package/dist/layer/selection/selected-finder.d.ts +1 -0
- package/dist/layer/selection-layer.d.ts +42 -0
- package/dist/layer/selection-layer.js +307 -0
- package/dist/layer/selection-layer.js.map +1 -0
- package/dist/layer/shift-layer.d.ts +18 -0
- package/dist/layer/shift-layer.js +61 -0
- package/dist/layer/shift-layer.js.map +1 -0
- package/dist/layout/absolute.d.ts +8 -0
- package/dist/layout/card.d.ts +7 -0
- package/dist/layout/html-absolute.d.ts +8 -0
- package/dist/layout/index.d.ts +8 -0
- package/dist/layout/index.js +12 -0
- package/dist/layout/index.js.map +1 -0
- package/dist/layout/layout.d.ts +11 -0
- package/dist/layout/linear-horizontal.d.ts +7 -0
- package/dist/layout/linear-vertical.d.ts +7 -0
- package/dist/layout/table.d.ts +9 -0
- package/dist/layout/three.d.ts +8 -0
- package/dist/layout/three.js +20 -0
- package/dist/layout/three.js.map +1 -0
- package/dist/license/license.d.ts +18 -0
- package/dist/model/compile.d.ts +1 -0
- package/dist/model/compile.js +28 -0
- package/dist/model/compile.js.map +1 -0
- package/dist/model/duplicate.d.ts +1 -0
- package/dist/model/index.d.ts +3 -0
- package/dist/model/selector.d.ts +2 -0
- package/dist/style/compile.d.ts +1 -0
- package/dist/style/index.d.ts +1 -0
- package/dist/things-scene/api/add-start.d.ts +1 -0
- package/dist/things-scene/api/add.d.ts +5 -0
- package/dist/things-scene/api/align.d.ts +1 -0
- package/dist/things-scene/api/change.d.ts +2 -0
- package/dist/things-scene/api/clipboard.d.ts +3 -0
- package/dist/things-scene/api/distribute.d.ts +1 -0
- package/dist/things-scene/api/duplicate.d.ts +4 -0
- package/dist/things-scene/api/fullscreen.d.ts +1 -0
- package/dist/things-scene/api/group.d.ts +8 -0
- package/dist/things-scene/api/group.js +78 -0
- package/dist/things-scene/api/group.js.map +1 -0
- package/dist/things-scene/api/ids.d.ts +4 -0
- package/dist/things-scene/api/index.d.ts +15 -0
- package/dist/things-scene/api/listener.d.ts +3 -0
- package/dist/things-scene/api/remove.d.ts +4 -0
- package/dist/things-scene/api/symmetry.d.ts +2 -0
- package/dist/things-scene/api/symmetry.js +39 -0
- package/dist/things-scene/api/symmetry.js.map +1 -0
- package/dist/things-scene/api/to-data-url.d.ts +1 -0
- package/dist/things-scene/api/to-data-url.js +69 -0
- package/dist/things-scene/api/to-data-url.js.map +1 -0
- package/dist/things-scene/api/zorder.d.ts +2 -0
- package/dist/things-scene/application-context.d.ts +40 -0
- package/dist/things-scene/config.d.ts +4 -0
- package/dist/things-scene/create.d.ts +20 -0
- package/dist/things-scene/fps.d.ts +1 -0
- package/dist/things-scene/index.d.ts +17 -0
- package/dist/things-scene/index.js +23 -0
- package/dist/things-scene/index.js.map +1 -0
- package/dist/things-scene/polyfill.d.ts +2 -0
- package/dist/things-scene/scene.d.ts +155 -0
- package/dist/things-scene/version.d.ts +2 -0
- package/dist/threed/common.d.ts +22 -0
- package/dist/threed/control/three-controls.d.ts +11 -0
- package/dist/threed/control/three-controls.js +620 -0
- package/dist/threed/control/three-controls.js.map +1 -0
- package/dist/threed/html/elements.d.ts +2 -0
- package/dist/threed/real-object-camera-meshed.d.ts +12 -0
- package/dist/threed/real-object-camera-meshed.js +49 -0
- package/dist/threed/real-object-camera-meshed.js.map +1 -0
- package/dist/threed/real-object-camera.d.ts +9 -0
- package/dist/threed/real-object-camera.js +31 -0
- package/dist/threed/real-object-camera.js.map +1 -0
- package/dist/threed/real-object-dom-element.d.ts +20 -0
- package/dist/threed/real-object-dom-element.js +78 -0
- package/dist/threed/real-object-dom-element.js.map +1 -0
- package/dist/threed/real-object-dummy.d.ts +6 -0
- package/dist/threed/real-object-dummy.js +11 -0
- package/dist/threed/real-object-dummy.js.map +1 -0
- package/dist/threed/real-object-extrude.d.ts +19 -0
- package/dist/threed/real-object-extrude.js +171 -0
- package/dist/threed/real-object-extrude.js.map +1 -0
- package/dist/threed/real-object-gltf.d.ts +15 -0
- package/dist/threed/real-object-gltf.js +97 -0
- package/dist/threed/real-object-gltf.js.map +1 -0
- package/dist/threed/real-object-group.d.ts +5 -0
- package/dist/threed/real-object-group.js +11 -0
- package/dist/threed/real-object-group.js.map +1 -0
- package/dist/threed/real-object-mesh.d.ts +11 -0
- package/dist/threed/real-object-mesh.js +55 -0
- package/dist/threed/real-object-mesh.js.map +1 -0
- package/dist/threed/real-object-plane.d.ts +6 -0
- package/dist/threed/real-object-plane.js +23 -0
- package/dist/threed/real-object-plane.js.map +1 -0
- package/dist/threed/real-object-scene.d.ts +21 -0
- package/dist/threed/real-object-scene.js +89 -0
- package/dist/threed/real-object-scene.js.map +1 -0
- package/dist/threed/real-object-sprite.d.ts +12 -0
- package/dist/threed/real-object-sprite.js +35 -0
- package/dist/threed/real-object-sprite.js.map +1 -0
- package/dist/threed/real-object-text.d.ts +16 -0
- package/dist/threed/real-object-text.js +70 -0
- package/dist/threed/real-object-text.js.map +1 -0
- package/dist/threed/real-object.d.ts +48 -0
- package/dist/threed/real-object.js +199 -0
- package/dist/threed/real-object.js.map +1 -0
- package/dist/threed/texture/text-texture.d.ts +8 -0
- package/dist/threed/three-dimensional-container.d.ts +7 -0
- package/dist/threed/three-dimensional-container.js +2 -0
- package/dist/threed/three-dimensional-container.js.map +1 -0
- package/dist/threed/utils/bound-uv-generator.d.ts +16 -0
- package/dist/types.d.ts +53 -0
- package/dist/types.js +368 -0
- package/dist/types.js.map +1 -0
- package/package.json +5 -2
- package/schema.graphql +5 -0
- package/things-scene-ie.js +1 -1
- package/things-scene-ie.js.LICENSE.txt +22 -0
- package/things-scene-min.js +1 -1
- package/things-scene-min.js.LICENSE.txt +22 -0
- package/things-scene.d.ts +13 -1
- package/things-scene.mjs +34 -14
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"component.js","sourceRoot":"","sources":["../../src/components/component.js"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright © HatioLab Inc. All rights reserved.\n */\n\nimport isEqual from 'lodash/isEqual'\nimport template from 'lodash/template'\n\nimport * as animation from '../animation'\nimport animate from '../animation/animate'\nimport * as core from '../core'\nimport { error } from '../core/logger'\nimport * as memoize from '../core/memoize'\nimport * as utils from '../core/utils'\nimport effect from '../effect'\nimport { resetShadow, setShadow } from '../effect/shadow'\nimport * as selector from '../model/selector'\nimport { buildMappings, disposeMappings, executeMappings, onchangeData, onchangeMappings } from './data/data'\nimport drawImage from './drawer/draw-image-pendable'\nimport drawEffect from './drawer/effect'\nimport { drawFill, onchangeFill, prepareFill, prepareFillIf } from './drawer/fill'\nimport format from './drawer/format'\nimport drawStroke from './drawer/stroke'\nimport { drawText, font, textLines } from './drawer/text'\nimport { ondropfile } from './file/ondropfile'\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'\nimport union from './geometry/union'\nimport { createCanvas } from './html/elements'\nimport reposition from './html/reposition'\nimport mutateBounds from './mutater/bounds'\nimport mutatePath from './mutater/path'\nimport pathOutline from './outline/path-outline'\nimport RetentionManager from './retention/retention-manager'\nimport { access, buildSubstitutor, substitute } from './text/substitutor'\nimport { registerDecorator } from '../decorator'\n\nvar registry = {}\n\nconst NATURE = {\n mutable: false,\n resizable: true,\n rotatable: true,\n properties: [],\n 'value-property': 'text'\n}\n\nconst DEFALUT_DELTA = {\n theta: 0,\n tx: 0,\n ty: 0,\n sx: 1,\n sy: 1,\n fade: 0\n}\n\nconst __components = new WeakMap()\nvar __component_count = 0\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 __components\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 */\n if (app && this.animation) {\n this.animation.started = true\n }\n\n this.clearCache()\n\n RetentionManager.add(this)\n\n __components.set(this, __component_count++)\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 dispose() {\n if (this._animation) {\n this._animation.dispose()\n delete this._animation\n }\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._realObject && this._realObject.dispose()\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 isTemplate() {\n return !!this.get('templatePrefix')\n }\n\n isHTMLElement() {\n return false\n }\n\n isConnectable() {\n return false\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 return clone\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 return this.center\n }\n\n set location(location) {\n this.center = location\n }\n\n get dimension() {\n return this.get('dimension')\n }\n\n set dimension(dimension) {\n this.set('dimension', dimension)\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 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.__proto__.hasOwnProperty('_pre_draw') ? this._pre_draw(context) : this.prerender(context)\n this.__proto__.hasOwnProperty('_draw') ? this._draw(context) : this.render(context)\n this.__proto__.hasOwnProperty('_post_draw') ? this._post_draw(context) : 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']) this._animation = animation.compile(this, config['oncreate'])\n }\n return this._animation\n }\n\n effect(context, model) {\n return effect(this, context, model)\n }\n\n set started(started) {\n if (this.animation) this.animation.started = started\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 return textLines(context || this.getContext(), this.textBounds.width, this.font, this.text, this.get('textWrap'))\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 get mappings() {\n /* 제거된 상태가 아니면(this.parent), 매핑을 다시 빌드한다. */\n if (!this._mappings && this.parent) this.buildMappings()\n\n return this._mappings\n }\n\n /* 3D related */\n get RealObject() {\n if (!this.disposed && !this._realObject) {\n this._realObject = this.buildRealObject()\n\n if (!this._realObject) {\n return\n }\n\n this._realObject.update()\n this._realObject.updateTransform()\n }\n\n return this._realObject\n }\n\n buildRealObject() {}\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 /* TODO delete below */\n _pre_draw: Component.prototype.prerender,\n _draw: Component.prototype.render,\n _post_draw: Component.prototype.postrender\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"]}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
declare const ContainerAbstract_base: {
|
|
2
|
+
new (): {
|
|
3
|
+
[x: string]: any;
|
|
4
|
+
postrender(context: any): void;
|
|
5
|
+
_draw_move_handle(context: any): void;
|
|
6
|
+
contains(x: any, y: any): any;
|
|
7
|
+
_focused: any;
|
|
8
|
+
};
|
|
9
|
+
[x: string]: any;
|
|
10
|
+
};
|
|
11
|
+
export default class ContainerAbstract extends ContainerAbstract_base {
|
|
12
|
+
constructor(model: any, context: any);
|
|
13
|
+
_components: any[];
|
|
14
|
+
replaceRefids(replaceMap: any): void;
|
|
15
|
+
get showMoveHandle(): boolean;
|
|
16
|
+
get showOverflow(): boolean;
|
|
17
|
+
dispose(): void;
|
|
18
|
+
isContainer(): boolean;
|
|
19
|
+
containable(component: any): any;
|
|
20
|
+
get hasTextProperty(): boolean;
|
|
21
|
+
get components(): any[];
|
|
22
|
+
get focusible(): boolean;
|
|
23
|
+
get layout(): any;
|
|
24
|
+
reflow(): void;
|
|
25
|
+
get hierarchy(): any;
|
|
26
|
+
addComponent(component: any, ghost?: boolean): void;
|
|
27
|
+
removeComponent(component: any, ghost?: boolean): void;
|
|
28
|
+
insertComponentAt(component: any, index: any, ghost?: boolean): void;
|
|
29
|
+
add(comp: any, ghost?: boolean): any;
|
|
30
|
+
remove(comp: any, ghost?: boolean): any;
|
|
31
|
+
getAt(index: any): any;
|
|
32
|
+
forEach(fn: any, context: any): void;
|
|
33
|
+
traverse(fn: any, context: any): void;
|
|
34
|
+
indexOf(item: any): number;
|
|
35
|
+
size(): number;
|
|
36
|
+
moveChildAt(index: any, child: any): void;
|
|
37
|
+
moveChildForward(child: any): void;
|
|
38
|
+
moveChildBackward(child: any): void;
|
|
39
|
+
moveChildToFront(child: any): void;
|
|
40
|
+
moveChildToBack(child: any): void;
|
|
41
|
+
symmetryX(x: any): void;
|
|
42
|
+
findAll(s: any, ...others: any[]): any;
|
|
43
|
+
findFirst(s: any, ...others: any[]): any;
|
|
44
|
+
findById(id: any): any;
|
|
45
|
+
findByRefid(ref: any): any;
|
|
46
|
+
capture(x: any, y: any, except: any): any;
|
|
47
|
+
capturePath(path: any, excepts: any): any;
|
|
48
|
+
render(context: any): void;
|
|
49
|
+
trim(): void;
|
|
50
|
+
}
|
|
51
|
+
export {};
|
|
@@ -0,0 +1,372 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright © HatioLab Inc. All rights reserved.
|
|
3
|
+
*/
|
|
4
|
+
import { AbsoluteLayout, Layout } from '../layout';
|
|
5
|
+
import * as selector from '../model/selector';
|
|
6
|
+
import Component from './component';
|
|
7
|
+
import MoveHandle from './mixins/move-handle';
|
|
8
|
+
import RectPath from './mixins/rect-path';
|
|
9
|
+
const EMPTY = [];
|
|
10
|
+
export default class ContainerAbstract extends MoveHandle(RectPath(Component)) {
|
|
11
|
+
constructor(model, context) {
|
|
12
|
+
super(model, context);
|
|
13
|
+
this._components = [];
|
|
14
|
+
}
|
|
15
|
+
replaceRefids(replaceMap) {
|
|
16
|
+
this.components.forEach(m => m.replaceRefids(replaceMap));
|
|
17
|
+
}
|
|
18
|
+
get showMoveHandle() {
|
|
19
|
+
return true;
|
|
20
|
+
}
|
|
21
|
+
get showOverflow() {
|
|
22
|
+
return false;
|
|
23
|
+
}
|
|
24
|
+
dispose() {
|
|
25
|
+
this.components.slice().forEach(m => m.dispose());
|
|
26
|
+
super.dispose();
|
|
27
|
+
}
|
|
28
|
+
isContainer() {
|
|
29
|
+
return true;
|
|
30
|
+
}
|
|
31
|
+
containable(component) {
|
|
32
|
+
return component.isDescendible(this);
|
|
33
|
+
}
|
|
34
|
+
get hasTextProperty() {
|
|
35
|
+
return false;
|
|
36
|
+
}
|
|
37
|
+
get components() {
|
|
38
|
+
return this._components;
|
|
39
|
+
}
|
|
40
|
+
// 컴포넌트를 임의로 추가 및 삭제할 수 있는 지를 지정하는 속성임.
|
|
41
|
+
// 예를 들면, 임의의 컴포넌트를 드래깅해서 컨테이너에 추가하거나, delete key로 삭제할 때 적용됨.
|
|
42
|
+
get focusible() {
|
|
43
|
+
return true;
|
|
44
|
+
}
|
|
45
|
+
get layout() {
|
|
46
|
+
return Layout.get(this.get('layout')) || AbsoluteLayout;
|
|
47
|
+
}
|
|
48
|
+
reflow() {
|
|
49
|
+
this.layout.reflow(this);
|
|
50
|
+
this.components &&
|
|
51
|
+
this.components.forEach(component => {
|
|
52
|
+
if (component.isContainer())
|
|
53
|
+
component.reflow();
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
get hierarchy() {
|
|
57
|
+
var model = super.hierarchy;
|
|
58
|
+
if (this.components)
|
|
59
|
+
model.components = this.components.map(c => {
|
|
60
|
+
return c.hierarchy;
|
|
61
|
+
});
|
|
62
|
+
return model;
|
|
63
|
+
}
|
|
64
|
+
addComponent(component, ghost = false) {
|
|
65
|
+
var oldContainer = component.parent;
|
|
66
|
+
if (oldContainer) {
|
|
67
|
+
if (this === oldContainer)
|
|
68
|
+
return;
|
|
69
|
+
oldContainer.removeComponent(component, ghost);
|
|
70
|
+
}
|
|
71
|
+
var index = this._components.push(component) - 1;
|
|
72
|
+
component.parent = this;
|
|
73
|
+
component.added(this); /* callback */
|
|
74
|
+
if (!ghost) {
|
|
75
|
+
this.trigger('add', this, component, index);
|
|
76
|
+
}
|
|
77
|
+
component.delegate_on(this);
|
|
78
|
+
if (!ghost) {
|
|
79
|
+
/*
|
|
80
|
+
ghost child component란 scene 차원에서 관리하지 않는 임시 자식 컴포넌트를 의미한다.
|
|
81
|
+
따라서, id, refid도 관리하지 않으며, 생성시에 refreshMapping 도 수행하지 않는다.
|
|
82
|
+
이벤트 핸들링에서도 제외된다.
|
|
83
|
+
예시. data-list 컴포넌트의 차일드 셀.
|
|
84
|
+
*/
|
|
85
|
+
component.trigger('added', this, component, index);
|
|
86
|
+
}
|
|
87
|
+
this.root && this.root.isReady && component.ready();
|
|
88
|
+
}
|
|
89
|
+
removeComponent(component, ghost = false) {
|
|
90
|
+
var idx = this._components.indexOf(component);
|
|
91
|
+
if (idx == -1)
|
|
92
|
+
return;
|
|
93
|
+
this._components.splice(idx, 1);
|
|
94
|
+
component.parent = null;
|
|
95
|
+
component.removed(this); /* callback */
|
|
96
|
+
if (!ghost) {
|
|
97
|
+
this.trigger('remove', this, component);
|
|
98
|
+
/*
|
|
99
|
+
ghost child component란 scene 차원에서 관리하지 않는 임시 자식 컴포넌트를 의미한다.
|
|
100
|
+
따라서, id, refid도 관리하지 않으며, 생성시에 refreshMapping 도 수행하지 않는다.
|
|
101
|
+
이벤트 핸들링에서도 제외된다.
|
|
102
|
+
예시. data-list 컴포넌트의 차일드 셀.
|
|
103
|
+
*/
|
|
104
|
+
component.trigger('removed', this, component);
|
|
105
|
+
}
|
|
106
|
+
component.delegate_off(this);
|
|
107
|
+
}
|
|
108
|
+
insertComponentAt(component, index, ghost = false) {
|
|
109
|
+
var oldContainer = component.parent;
|
|
110
|
+
if (oldContainer) {
|
|
111
|
+
oldContainer.removeComponent(component, ghost);
|
|
112
|
+
}
|
|
113
|
+
// TODO index가 유효하지 않은 경우(예를 들면, index가 전체 컴포넌트 개수보다 큰 경우)에 대한 검증
|
|
114
|
+
var head = this._components.splice(0, index);
|
|
115
|
+
this._components = head.concat(component, this._components);
|
|
116
|
+
// 실제 적용된 인덱스를 다시 구한다.
|
|
117
|
+
index = this._components.indexOf(component);
|
|
118
|
+
component.parent = this;
|
|
119
|
+
component.added(this); /* callback */
|
|
120
|
+
if (!ghost) {
|
|
121
|
+
this.trigger('add', this, component, index);
|
|
122
|
+
}
|
|
123
|
+
component.delegate_on(this);
|
|
124
|
+
if (!ghost) {
|
|
125
|
+
component.trigger('added', this, component, index);
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
add(comp, ghost = false) {
|
|
129
|
+
if (!(comp instanceof Array)) {
|
|
130
|
+
return this.add.call(this, [comp], ghost);
|
|
131
|
+
}
|
|
132
|
+
comp.forEach(c => {
|
|
133
|
+
if (this._components.indexOf(c) == -1)
|
|
134
|
+
this.addComponent(c, ghost);
|
|
135
|
+
});
|
|
136
|
+
return this;
|
|
137
|
+
}
|
|
138
|
+
remove(comp, ghost = false) {
|
|
139
|
+
if (!(comp instanceof Array)) {
|
|
140
|
+
return this.remove.call(this, [comp], ghost);
|
|
141
|
+
}
|
|
142
|
+
if (!this._components)
|
|
143
|
+
return this;
|
|
144
|
+
comp.forEach(c => {
|
|
145
|
+
this.removeComponent(c, ghost);
|
|
146
|
+
});
|
|
147
|
+
return this;
|
|
148
|
+
}
|
|
149
|
+
getAt(index) {
|
|
150
|
+
if (this._components)
|
|
151
|
+
return this._components[index];
|
|
152
|
+
}
|
|
153
|
+
forEach(fn, context) {
|
|
154
|
+
if (!this._components)
|
|
155
|
+
return;
|
|
156
|
+
this._components.forEach(fn, context);
|
|
157
|
+
}
|
|
158
|
+
traverse(fn, context) {
|
|
159
|
+
fn.call(context, this);
|
|
160
|
+
if (!this._components)
|
|
161
|
+
return;
|
|
162
|
+
this._components.forEach(component => {
|
|
163
|
+
if (component.isContainer())
|
|
164
|
+
component.traverse(fn, context);
|
|
165
|
+
else
|
|
166
|
+
fn.call(context, component);
|
|
167
|
+
});
|
|
168
|
+
}
|
|
169
|
+
indexOf(item) {
|
|
170
|
+
return (this._components || EMPTY).indexOf(item);
|
|
171
|
+
}
|
|
172
|
+
size() {
|
|
173
|
+
return (this._components || EMPTY).length;
|
|
174
|
+
}
|
|
175
|
+
moveChildAt(index, child) {
|
|
176
|
+
var oldIndex = this.indexOf(child);
|
|
177
|
+
if (oldIndex == -1)
|
|
178
|
+
return;
|
|
179
|
+
var head = this._components.splice(0, oldIndex);
|
|
180
|
+
var tail = this._components.splice(1);
|
|
181
|
+
this._components = head.concat(tail);
|
|
182
|
+
index = Math.max(0, index);
|
|
183
|
+
index = Math.min(index, this._components.length);
|
|
184
|
+
head = this._components.splice(0, index);
|
|
185
|
+
this._components = head.concat(child, this._components);
|
|
186
|
+
}
|
|
187
|
+
moveChildForward(child) {
|
|
188
|
+
var index = this.indexOf(child);
|
|
189
|
+
if (index == -1 || index == this.size() - 1)
|
|
190
|
+
return;
|
|
191
|
+
this._components[index] = this._components[index + 1];
|
|
192
|
+
this._components[index + 1] = child;
|
|
193
|
+
}
|
|
194
|
+
moveChildBackward(child) {
|
|
195
|
+
var index = this.indexOf(child);
|
|
196
|
+
if (index == -1 || index == 0)
|
|
197
|
+
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)
|
|
204
|
+
return;
|
|
205
|
+
var head = this._components.splice(0, index);
|
|
206
|
+
var tail = this._components.splice(1);
|
|
207
|
+
this._components = head.concat(tail, this._components);
|
|
208
|
+
}
|
|
209
|
+
moveChildToBack(child) {
|
|
210
|
+
var index = this.indexOf(child);
|
|
211
|
+
if (index == -1 || index == 0)
|
|
212
|
+
return;
|
|
213
|
+
var head = this._components.splice(0, index);
|
|
214
|
+
var tail = this._components.splice(0);
|
|
215
|
+
this._components = this._components.concat(head, tail);
|
|
216
|
+
}
|
|
217
|
+
symmetryX(x) {
|
|
218
|
+
super.symmetryX(x);
|
|
219
|
+
this.components.map(component => {
|
|
220
|
+
component.symmetryX(0);
|
|
221
|
+
});
|
|
222
|
+
}
|
|
223
|
+
/*
|
|
224
|
+
* 조건에 맞는 컴포넌트를 찾기 위한 기능들
|
|
225
|
+
*
|
|
226
|
+
* findAll(s, ...others) 조건에 맞는 모든 컴포넌트를 찾아낸다.
|
|
227
|
+
* findFirst(finder, ...others) finder 함수에서 조건에 맞는 첫번째 컴포넌트를 리턴한다. (To Be Defined)
|
|
228
|
+
* capture(x, y) 파라미터로 주어진 좌표값을 포함하는 컴포넌트를 찾는다. (Event Capturing)
|
|
229
|
+
* findById(id) 파라미터 id와 같은 id를 가진 컴포넌트를 찾는다.
|
|
230
|
+
*/
|
|
231
|
+
findAll(s, ...others) {
|
|
232
|
+
if (typeof s === 'string')
|
|
233
|
+
return selector.select(s, this, others[0] || this); // others[0] means (self)
|
|
234
|
+
if (typeof s !== 'function')
|
|
235
|
+
return;
|
|
236
|
+
var found = [];
|
|
237
|
+
for (let i = this.components.length - 1; i >= 0; i--) {
|
|
238
|
+
let components = this.components[i].findAll(s, ...others);
|
|
239
|
+
if (components)
|
|
240
|
+
found = found.concat(components);
|
|
241
|
+
}
|
|
242
|
+
if (s(this, ...others))
|
|
243
|
+
found.push(this);
|
|
244
|
+
return found;
|
|
245
|
+
}
|
|
246
|
+
findFirst(s, ...others) {
|
|
247
|
+
if (typeof s === 'string')
|
|
248
|
+
return selector.select(s, this, others[0])[0];
|
|
249
|
+
if (typeof s !== 'function')
|
|
250
|
+
return;
|
|
251
|
+
for (let i = this.components.length - 1; i >= 0; i--) {
|
|
252
|
+
var found = this.components[i].findFirst(s, ...others);
|
|
253
|
+
if (found != null)
|
|
254
|
+
return found;
|
|
255
|
+
}
|
|
256
|
+
if (s(this, ...others))
|
|
257
|
+
return this;
|
|
258
|
+
return null;
|
|
259
|
+
}
|
|
260
|
+
findById(id) {
|
|
261
|
+
return this.root.findById(id);
|
|
262
|
+
}
|
|
263
|
+
findByRefid(ref) {
|
|
264
|
+
return this.root.findByRefid(ref);
|
|
265
|
+
}
|
|
266
|
+
contains(x, y) {
|
|
267
|
+
// 효율을 위해서, contains를 호출하기 전에 x, y좌표값은 이 컴포넌트에 대해서 이미 transcoord 된 상태이다.
|
|
268
|
+
// 참조 : capture(x, y)
|
|
269
|
+
// 컨테이너의 경우, 외부 바운드의 영역을 10 포인트씩 확장시켜서 contains 여부를 결정한다.
|
|
270
|
+
var contains = super.contains(x, y);
|
|
271
|
+
if (!contains) {
|
|
272
|
+
var { left, top, width, height, lineWidth = 0 } = this.state;
|
|
273
|
+
var extend = this.stuck ? 0 : 10 + lineWidth / 2;
|
|
274
|
+
contains =
|
|
275
|
+
x < Math.max(left + width, left) + extend &&
|
|
276
|
+
x > Math.min(left + width, left) - extend &&
|
|
277
|
+
y < Math.max(top + height, top) + extend &&
|
|
278
|
+
y > Math.min(top + height, top) - extend;
|
|
279
|
+
}
|
|
280
|
+
return contains;
|
|
281
|
+
}
|
|
282
|
+
capture(x, y, except) {
|
|
283
|
+
var point = this.transcoordP2S(x, y);
|
|
284
|
+
if (!this.contains(point.x, point.y)) {
|
|
285
|
+
return false;
|
|
286
|
+
}
|
|
287
|
+
// 나의 좌표로 시프트
|
|
288
|
+
var bounds = this.bounds;
|
|
289
|
+
point.x -= bounds.left;
|
|
290
|
+
point.y -= bounds.top;
|
|
291
|
+
var capturables = this.layout.capturables(this);
|
|
292
|
+
for (let i = capturables.length - 1; i >= 0; i--) {
|
|
293
|
+
var found = capturables[i].capture(point.x, point.y, except);
|
|
294
|
+
if (found)
|
|
295
|
+
return found;
|
|
296
|
+
}
|
|
297
|
+
return this.capturable && !(except === null || except === void 0 ? void 0 : except(this)) && this;
|
|
298
|
+
}
|
|
299
|
+
/*
|
|
300
|
+
* capturePath(path) 파라미터로 주어진 path를 포함하는 컨테이너를 찾는다.
|
|
301
|
+
* @path
|
|
302
|
+
* @excepts 컨테이너를 찾을 때 제외되는 대상이다.
|
|
303
|
+
*/
|
|
304
|
+
capturePath(path, excepts) {
|
|
305
|
+
if (excepts) {
|
|
306
|
+
if (excepts.indexOf(this) > -1)
|
|
307
|
+
return false;
|
|
308
|
+
for (let i = 0; i < excepts.length; i++)
|
|
309
|
+
if (!this.containable(excepts[i]))
|
|
310
|
+
return false;
|
|
311
|
+
}
|
|
312
|
+
// path의 각 좌표는 부모 기준의 좌표로 변환된 것이므로, 나의 각도를 적용해서 변환한다.
|
|
313
|
+
var cpath = [];
|
|
314
|
+
var { left, top, width, height } = this.bounds;
|
|
315
|
+
for (let i = 0; i < path.length; i++) {
|
|
316
|
+
let point = this.transcoordP2S(path[i].x, path[i].y);
|
|
317
|
+
if (point.x < left || point.x > left + width || point.y < top || point.y > top + height)
|
|
318
|
+
return false;
|
|
319
|
+
point.x -= left;
|
|
320
|
+
point.y -= top;
|
|
321
|
+
cpath.push(point);
|
|
322
|
+
}
|
|
323
|
+
let capturables = this.layout.capturables(this);
|
|
324
|
+
for (let i = capturables.length - 1; i >= 0; i--) {
|
|
325
|
+
let capturable = capturables[i];
|
|
326
|
+
if (!capturable.isContainer())
|
|
327
|
+
continue;
|
|
328
|
+
let found = capturable.capturePath(cpath, excepts);
|
|
329
|
+
if (found)
|
|
330
|
+
return found;
|
|
331
|
+
}
|
|
332
|
+
return this.focusible && this;
|
|
333
|
+
}
|
|
334
|
+
/* render .. */
|
|
335
|
+
render(context) {
|
|
336
|
+
var { left = 0, top = 0, width, height } = this.bounds;
|
|
337
|
+
// 컨테이너의 바운드를 표현한다.(컨테이너의 기본 그리기 기능)
|
|
338
|
+
context.beginPath();
|
|
339
|
+
context.rect(left, top, width, height);
|
|
340
|
+
context.closePath();
|
|
341
|
+
this.drawFill(context);
|
|
342
|
+
this.drawStroke(context);
|
|
343
|
+
}
|
|
344
|
+
postrender(context) {
|
|
345
|
+
super.postrender(context);
|
|
346
|
+
/* 자식 컴포넌트들 그리기 */
|
|
347
|
+
var { left = 0, top = 0, width, height } = this.bounds;
|
|
348
|
+
if (!this.showOverflow) {
|
|
349
|
+
context.beginPath();
|
|
350
|
+
context.rect(left, top, width, height);
|
|
351
|
+
context.clip();
|
|
352
|
+
context.closePath();
|
|
353
|
+
}
|
|
354
|
+
var { top, left, scale } = this.state;
|
|
355
|
+
context.translate(left, top);
|
|
356
|
+
this.layout.drawables(this).forEach(m => {
|
|
357
|
+
m.draw(context);
|
|
358
|
+
});
|
|
359
|
+
context.translate(-left, -top);
|
|
360
|
+
this.drawText(context);
|
|
361
|
+
}
|
|
362
|
+
trim() {
|
|
363
|
+
this.components.forEach(component => {
|
|
364
|
+
component.trim();
|
|
365
|
+
});
|
|
366
|
+
super.trim();
|
|
367
|
+
}
|
|
368
|
+
}
|
|
369
|
+
/* clone 하지 않아도 되는 경우의 memoized getter */
|
|
370
|
+
;
|
|
371
|
+
['layout'].forEach(getter => Component.memoize(ContainerAbstract.prototype, getter, false));
|
|
372
|
+
//# sourceMappingURL=container-abstract.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"container-abstract.js","sourceRoot":"","sources":["../../src/components/container-abstract.js"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright © HatioLab Inc. All rights reserved.\n */\n\nimport { AbsoluteLayout, Layout } from '../layout'\nimport * as selector from '../model/selector'\nimport Component from './component'\nimport MoveHandle from './mixins/move-handle'\nimport RectPath from './mixins/rect-path'\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 // 컨테이너의 경우, 외부 바운드의 영역을 10 포인트씩 확장시켜서 contains 여부를 결정한다.\n\n var contains = super.contains(x, y)\n\n if (!contains) {\n var { left, top, width, height, lineWidth = 0 } = this.state\n var extend = this.stuck ? 0 : 10 + lineWidth / 2\n\n contains =\n x < Math.max(left + width, left) + extend &&\n x > Math.min(left + width, left) - extend &&\n y < Math.max(top + height, top) + extend &&\n y > Math.min(top + height, top) - extend\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 // 컨테이너의 바운드를 표현한다.(컨테이너의 기본 그리기 기능)\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 super.postrender(context)\n\n /* 자식 컴포넌트들 그리기 */\n var { left = 0, top = 0, width, height } = this.bounds\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, scale } = this.state\n context.translate(left, top)\n\n this.layout.drawables(this).forEach(m => {\n m.draw(context)\n })\n\n context.translate(-left, -top)\n\n this.drawText(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"]}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
declare const Container_base: {
|
|
2
|
+
new (): {
|
|
3
|
+
[x: string]: any;
|
|
4
|
+
isHTMLElement(): boolean;
|
|
5
|
+
isShadowable(): boolean;
|
|
6
|
+
element: any;
|
|
7
|
+
_element: any;
|
|
8
|
+
readonly tagName: any;
|
|
9
|
+
setElementProperties(element: any): void;
|
|
10
|
+
createElement(): void;
|
|
11
|
+
userInputEventHandler(e: any): void;
|
|
12
|
+
reposition(): void;
|
|
13
|
+
disposeElement(): void;
|
|
14
|
+
ready(): void;
|
|
15
|
+
dispose(): void;
|
|
16
|
+
readonly hasTextProperty: boolean;
|
|
17
|
+
readonly textHidden: boolean;
|
|
18
|
+
onchange(after: any, before: any): void;
|
|
19
|
+
isDescendible(container: any): any;
|
|
20
|
+
};
|
|
21
|
+
[x: string]: any;
|
|
22
|
+
};
|
|
23
|
+
export default class Container extends Container_base {
|
|
24
|
+
get tagName(): string;
|
|
25
|
+
get nature(): {
|
|
26
|
+
mutable: boolean;
|
|
27
|
+
resizable: boolean;
|
|
28
|
+
rotatable: boolean;
|
|
29
|
+
properties: {
|
|
30
|
+
type: string;
|
|
31
|
+
label: string;
|
|
32
|
+
name: string;
|
|
33
|
+
}[];
|
|
34
|
+
help: string;
|
|
35
|
+
};
|
|
36
|
+
get layout(): any;
|
|
37
|
+
}
|
|
38
|
+
export {};
|