@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":"ortholine.js","sourceRoot":"","sources":["../../src/components/ortholine.js"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright © HatioLab Inc. All rights reserved.\n */\n\nimport Component from './component'\nimport Line, { SOUTH, NORTH, EAST, WEST } from './line'\n\nconst FROM = 0\nconst TO = 1\n\nconst NATURE = {\n mutable: false,\n resizable: false,\n rotatable: false,\n properties: [\n {\n type: 'number',\n label: 'round',\n name: 'round',\n property: {\n min: 0,\n max: 100,\n step: 1\n }\n }\n ],\n help: 'scene/component/ortholine'\n}\n\nexport default class OrthoLine extends Line {\n get pathExtendable() {\n return false\n }\n\n get drawPath() {\n const fromPosition = this.path[0]\n const toPosition = this.path[1]\n\n const {\n component: fromComponent,\n direction: fromDirection,\n boundaryPosition: fromBoundaryPosition = fromPosition\n } = this.fromEnd || {}\n const {\n component: toComponent,\n direction: toDirection,\n boundaryPosition: toBoundaryPosition = toPosition\n } = this.toEnd || {}\n\n var boundaryPositions = [fromBoundaryPosition, toBoundaryPosition]\n\n var path = []\n\n if (fromBoundaryPosition) {\n path.push(fromBoundaryPosition)\n }\n\n /* 두 컴포넌트의 확장된 바운드를 구한다. */\n var fromOriginBounds = fromComponent?.bounds\n if (fromOriginBounds) {\n var transcoorded = fromComponent.transcoordS2T(fromOriginBounds.left, fromOriginBounds.top)\n transcoorded = this.transcoordT2P(transcoorded.x, transcoorded.y)\n\n fromOriginBounds = {\n ...fromOriginBounds,\n left: transcoorded.x,\n top: transcoorded.y\n }\n }\n\n var fromBounds = fromOriginBounds\n ? {\n left: fromOriginBounds.left - 20,\n top: fromOriginBounds.top - 20,\n width: fromOriginBounds.width + 40,\n height: fromOriginBounds.height + 40\n }\n : {\n left: fromBoundaryPosition.x,\n top: fromBoundaryPosition.y,\n width: 0,\n height: 0\n }\n fromOriginBounds = fromOriginBounds || fromBounds\n\n var toOriginBounds = toComponent?.bounds\n if (toOriginBounds) {\n var transcoorded = toComponent.transcoordS2T(toOriginBounds.left, toOriginBounds.top)\n transcoorded = this.transcoordT2P(transcoorded.x, transcoorded.y)\n\n toOriginBounds = {\n ...toOriginBounds,\n left: transcoorded.x,\n top: transcoorded.y\n }\n }\n\n var toBounds = toOriginBounds\n ? {\n left: toOriginBounds.left - 20,\n top: toOriginBounds.top - 20,\n width: toOriginBounds.width + 40,\n height: toOriginBounds.height + 40\n }\n : {\n left: toBoundaryPosition.x,\n top: toBoundaryPosition.y,\n width: 0,\n height: 0\n }\n toOriginBounds = toOriginBounds || toBounds\n\n var fromToBounds = [fromBounds, toBounds]\n\n const leftMost = fromBounds.left > toBounds.left ? toBounds.left : fromBounds.left\n const topMost = fromBounds.top > toBounds.top ? toBounds.top : fromBounds.top\n\n var unionBounds = {\n left: leftMost,\n top: topMost,\n width:\n fromBounds.left + fromBounds.width > toBounds.left + toBounds.width\n ? fromBounds.left + fromBounds.width - leftMost\n : toBounds.left + toBounds.width - leftMost,\n height:\n fromBounds.top + fromBounds.height > toBounds.top + toBounds.height\n ? fromBounds.top + fromBounds.height - topMost\n : toBounds.top + toBounds.height - topMost\n }\n\n /* 두 컴포넌트 바운드의 센터를 찾는다. */\n var centerX,\n centerY,\n centerWidth = 0,\n centerHeight = 0\n var upperComponent, leftComponent, rightComponent, lowerComponent\n var upperComponentDirection, lowerComponentDirection\n var leftComponentDirection, rightComponentDirection\n\n if (fromOriginBounds.left + fromOriginBounds.width < toOriginBounds.left) {\n leftComponent = FROM\n rightComponent = TO\n leftComponentDirection = fromDirection\n rightComponentDirection = toDirection\n centerX = (fromOriginBounds.left + fromOriginBounds.width + toOriginBounds.left) / 2\n centerWidth = toOriginBounds.left - centerX\n } else if (toOriginBounds.left + toOriginBounds.width < fromOriginBounds.left) {\n leftComponent = TO\n rightComponent = FROM\n leftComponentDirection = toDirection\n rightComponentDirection = fromDirection\n centerX = (fromOriginBounds.left + toOriginBounds.width + toOriginBounds.left) / 2\n centerWidth = fromOriginBounds.left - centerX\n }\n\n if (fromOriginBounds.top + fromOriginBounds.height < toOriginBounds.top) {\n upperComponent = FROM\n lowerComponent = TO\n upperComponentDirection = fromDirection\n lowerComponentDirection = toDirection\n centerY = (fromOriginBounds.top + fromOriginBounds.height + toOriginBounds.top) / 2\n centerHeight = toOriginBounds.top - centerY\n } else if (toOriginBounds.top + toOriginBounds.height < fromOriginBounds.top) {\n upperComponent = TO\n lowerComponent = FROM\n upperComponentDirection = toDirection\n lowerComponentDirection = fromDirection\n centerY = (fromOriginBounds.top + toOriginBounds.height + toOriginBounds.top) / 2\n centerHeight = fromOriginBounds.top - centerY\n }\n\n /* 각 LinkEnd의 방향별 패스 구하기 */\n var lpath = []\n\n if (centerX && centerWidth > centerHeight) {\n switch (rightComponentDirection) {\n case WEST:\n switch (leftComponentDirection) {\n case EAST:\n lpath.push({\n x: centerX,\n y: boundaryPositions[leftComponent].y\n })\n\n lpath.push({\n x: centerX,\n y: boundaryPositions[rightComponent].y\n })\n break\n case WEST:\n var leftComponentCenterY = fromToBounds[leftComponent].top + fromToBounds[leftComponent].height / 2\n var leftY =\n leftComponentCenterY > boundaryPositions[rightComponent].y\n ? Math.min(fromToBounds[leftComponent].top, boundaryPositions[rightComponent].y)\n : Math.max(\n fromToBounds[leftComponent].top + fromToBounds[leftComponent].height,\n boundaryPositions[rightComponent].y\n )\n\n lpath.push({\n x: boundaryPositions[leftComponent].x,\n y: leftY\n })\n\n lpath.push({\n x: centerX,\n y: leftY\n })\n\n lpath.push({\n x: centerX,\n y: boundaryPositions[rightComponent].y\n })\n break\n case NORTH:\n case SOUTH:\n var leftY =\n leftComponentDirection === SOUTH\n ? Math.max(boundaryPositions[leftComponent].y, boundaryPositions[rightComponent].y)\n : Math.min(boundaryPositions[leftComponent].y, boundaryPositions[rightComponent].y)\n\n lpath.push({\n x: boundaryPositions[leftComponent].x,\n y: leftY\n })\n\n lpath.push({\n x: centerX,\n y: leftY\n })\n\n lpath.push({\n x: centerX,\n y: boundaryPositions[rightComponent].y\n })\n break\n default:\n return this.path\n }\n break\n case EAST:\n switch (leftComponentDirection) {\n case EAST:\n var leftY =\n boundaryPositions[leftComponent].y < boundaryPositions[rightComponent].y\n ? Math.min(fromToBounds[rightComponent].top, boundaryPositions[leftComponent].y)\n : Math.max(\n fromToBounds[rightComponent].top + fromToBounds[rightComponent].height,\n boundaryPositions[leftComponent].y\n )\n var rightY = leftY\n break\n\n case WEST:\n var leftY =\n centerY !== undefined\n ? centerY\n : boundaryPositions[leftComponent].y < boundaryPositions[rightComponent].y\n ? unionBounds.top - centerWidth * 0.5\n : unionBounds.top + unionBounds.height + centerWidth * 0.5\n\n var rightY = leftY\n\n break\n\n case SOUTH:\n var leftY =\n centerY !== undefined\n ? Math.max(centerY, boundaryPositions[leftComponent].y)\n : unionBounds.top + unionBounds.height\n var rightY = leftY\n\n break\n case NORTH:\n var leftY = centerY ? Math.min(centerY, fromToBounds[leftComponent].top) : unionBounds.top\n var rightY = leftY\n\n break\n default:\n return this.path\n }\n\n lpath.push({\n x: boundaryPositions[leftComponent].x,\n y: leftY\n })\n\n lpath.push({\n x: centerX,\n y: leftY\n })\n\n lpath.push({\n x: centerX,\n y: rightY\n })\n\n lpath.push({\n x: boundaryPositions[rightComponent].x,\n y: rightY\n })\n\n break\n case SOUTH:\n switch (leftComponentDirection) {\n case EAST:\n var leftY = boundaryPositions[leftComponent].y\n var rightY =\n boundaryPositions[leftComponent].y > boundaryPositions[rightComponent].y\n ? boundaryPositions[leftComponent].y\n : fromToBounds[rightComponent].top + fromToBounds[rightComponent].height\n break\n\n case WEST:\n var leftY = centerY\n ? Math.max(centerY, fromToBounds[rightComponent].top + fromToBounds[rightComponent].height)\n : unionBounds.top + unionBounds.height\n var rightY = leftY\n\n break\n\n case SOUTH:\n var leftY = unionBounds.top + unionBounds.height\n var rightY = leftY\n\n break\n case NORTH:\n var leftY = centerY ? Math.min(centerY, fromToBounds[leftComponent].top) : fromToBounds[leftComponent].top\n var rightY = centerY\n ? Math.max(centerY, fromToBounds[rightComponent].top + fromToBounds[rightComponent].height)\n : fromToBounds[rightComponent].top + fromToBounds[rightComponent].height\n\n break\n default:\n return this.path\n }\n\n lpath.push({\n x: boundaryPositions[leftComponent].x,\n y: leftY\n })\n\n lpath.push({\n x: centerX,\n y: leftY\n })\n\n lpath.push({\n x: centerX,\n y: rightY\n })\n\n lpath.push({\n x: boundaryPositions[rightComponent].x,\n y: rightY\n })\n break\n case NORTH:\n switch (leftComponentDirection) {\n case EAST:\n var leftY = boundaryPositions[leftComponent].y\n var rightY =\n boundaryPositions[leftComponent].y < boundaryPositions[rightComponent].y\n ? boundaryPositions[leftComponent].y\n : fromToBounds[rightComponent].top\n break\n\n case WEST:\n var leftY = centerY ? Math.min(centerY, fromToBounds[rightComponent].top) : unionBounds.top\n var rightY = leftY\n\n break\n\n case SOUTH:\n var leftY =\n centerY !== undefined\n ? Math.max(centerY, boundaryPositions[leftComponent].y)\n : boundaryPositions[leftComponent].y\n var rightY =\n centerY !== undefined\n ? Math.min(centerY, boundaryPositions[rightComponent].y)\n : boundaryPositions[rightComponent].y\n\n break\n case NORTH:\n var leftY = unionBounds.top\n var rightY = leftY\n\n break\n default:\n return this.path\n }\n\n lpath.push({\n x: boundaryPositions[leftComponent].x,\n y: leftY\n })\n\n lpath.push({\n x: centerX,\n y: leftY\n })\n\n lpath.push({\n x: centerX,\n y: rightY\n })\n\n lpath.push({\n x: boundaryPositions[rightComponent].x,\n y: rightY\n })\n break\n default:\n return this.path\n }\n\n path.push(...(leftComponent === FROM ? lpath : lpath.reverse()))\n } else if (centerY) {\n switch (lowerComponentDirection) {\n case NORTH:\n switch (upperComponentDirection) {\n case SOUTH:\n lpath.push({\n x: boundaryPositions[upperComponent].x,\n y: centerY\n })\n\n lpath.push({\n x: boundaryPositions[lowerComponent].x,\n y: centerY\n })\n break\n case NORTH:\n var upperComponentCenterX = fromToBounds[upperComponent].left + fromToBounds[upperComponent].width / 2\n var upperX =\n upperComponentCenterX > boundaryPositions[lowerComponent].x\n ? Math.min(fromToBounds[upperComponent].left, boundaryPositions[lowerComponent].x)\n : Math.max(\n fromToBounds[upperComponent].left + fromToBounds[upperComponent].width,\n boundaryPositions[lowerComponent].x\n )\n\n lpath.push({\n x: upperX,\n y: boundaryPositions[upperComponent].y\n })\n\n lpath.push({\n x: upperX,\n y: centerY\n })\n\n lpath.push({\n x: boundaryPositions[lowerComponent].x,\n y: centerY\n })\n break\n case WEST:\n var upperX = Math.min(boundaryPositions[upperComponent].x, boundaryPositions[lowerComponent].x)\n\n lpath.push({\n x: upperX,\n y: boundaryPositions[upperComponent].y\n })\n\n lpath.push({\n x: upperX,\n y: centerY\n })\n\n lpath.push({\n x: boundaryPositions[lowerComponent].x,\n y: centerY\n })\n break\n case EAST:\n var upperX = Math.max(boundaryPositions[upperComponent].x, boundaryPositions[lowerComponent].x)\n\n lpath.push({\n x: upperX,\n y: boundaryPositions[upperComponent].y\n })\n\n lpath.push({\n x: upperX,\n y: centerY\n })\n\n lpath.push({\n x: boundaryPositions[lowerComponent].x,\n y: centerY\n })\n break\n default:\n return this.path\n }\n break\n case SOUTH:\n switch (upperComponentDirection) {\n case WEST:\n var upperX = unionBounds.left\n var lowerX = upperX\n break\n case EAST:\n var upperX =\n centerX !== undefined\n ? Math.max(centerX, boundaryPositions[upperComponent].x)\n : unionBounds.left + unionBounds.width\n var lowerX = upperX\n break\n case NORTH:\n var upperX =\n centerX !== undefined\n ? centerX\n : boundaryPositions[upperComponent].x < boundaryPositions[lowerComponent].x\n ? unionBounds.left - centerHeight * 0.5\n : unionBounds.left + unionBounds.width + centerHeight * 0.5\n var lowerX = upperX\n break\n case SOUTH:\n var upperX = boundaryPositions[upperComponent].x\n var lowerX =\n boundaryPositions[upperComponent].x < boundaryPositions[lowerComponent].x\n ? Math.min(fromToBounds[lowerComponent].left, boundaryPositions[upperComponent].x)\n : Math.max(\n fromToBounds[lowerComponent].left + fromToBounds[lowerComponent].width,\n boundaryPositions[upperComponent].x\n )\n break\n default:\n return this.path\n }\n\n lpath.push({\n x: upperX,\n y: boundaryPositions[upperComponent].y\n })\n\n lpath.push({\n x: upperX,\n y: centerY\n })\n\n lpath.push({\n x: lowerX,\n y: centerY\n })\n\n lpath.push({\n x: lowerX,\n y: boundaryPositions[lowerComponent].y\n })\n break\n case EAST:\n switch (upperComponentDirection) {\n case WEST:\n var upperX =\n centerX !== undefined\n ? Math.min(centerX, boundaryPositions[upperComponent].x)\n : boundaryPositions[upperComponent].x\n var lowerX =\n centerX !== undefined\n ? Math.max(centerX, boundaryPositions[lowerComponent].x)\n : boundaryPositions[lowerComponent].x\n break\n case EAST:\n var upperX = unionBounds.left + unionBounds.width\n var lowerX = upperX\n break\n case NORTH:\n var upperX =\n centerX !== undefined\n ? Math.max(centerX, boundaryPositions[lowerComponent].x)\n : unionBounds.left + unionBounds.width\n var lowerX = upperX\n break\n case SOUTH:\n var upperX = boundaryPositions[upperComponent].x\n var lowerX = Math.max(\n fromToBounds[lowerComponent].left + fromToBounds[lowerComponent].width,\n boundaryPositions[upperComponent].x\n )\n break\n default:\n return this.path\n }\n\n lpath.push({\n x: upperX,\n y: boundaryPositions[upperComponent].y\n })\n\n lpath.push({\n x: upperX,\n y: centerY\n })\n\n lpath.push({\n x: lowerX,\n y: centerY\n })\n\n lpath.push({\n x: lowerX,\n y: boundaryPositions[lowerComponent].y\n })\n break\n case WEST:\n switch (upperComponentDirection) {\n case WEST:\n var upperX = unionBounds.left\n var lowerX = upperX\n\n break\n case EAST:\n var upperX =\n centerX !== undefined\n ? Math.max(centerX, boundaryPositions[upperComponent].x)\n : boundaryPositions[upperComponent].x\n var lowerX =\n centerX !== undefined\n ? Math.min(centerX, boundaryPositions[lowerComponent].x)\n : boundaryPositions[lowerComponent].x\n break\n\n case NORTH:\n var upperX = unionBounds.left\n var lowerX = upperX\n\n break\n case SOUTH:\n var upperX =\n boundaryPositions[upperComponent].x < boundaryPositions[lowerComponent].x\n ? Math.min(fromToBounds[lowerComponent].left, boundaryPositions[upperComponent].x)\n : boundaryPositions[upperComponent].x\n var lowerX = Math.min(upperX, boundaryPositions[lowerComponent].x)\n break\n default:\n return this.path\n }\n\n lpath.push({\n x: upperX,\n y: boundaryPositions[upperComponent].y\n })\n\n lpath.push({\n x: upperX,\n y: centerY\n })\n\n lpath.push({\n x: lowerX,\n y: centerY\n })\n\n lpath.push({\n x: lowerX,\n y: boundaryPositions[lowerComponent].y\n })\n break\n default:\n return this.path\n }\n\n path.push(...(upperComponent === FROM ? lpath : lpath.reverse()))\n } else {\n switch (fromDirection) {\n case NORTH:\n switch (toDirection) {\n case NORTH:\n var y = unionBounds.top\n path.push({\n x: boundaryPositions[FROM].x,\n y\n })\n path.push({\n x: boundaryPositions[TO].x,\n y\n })\n break\n case SOUTH:\n var x = unionBounds.left + unionBounds.width\n path.push({\n x,\n y: boundaryPositions[FROM].y\n })\n\n path.push({\n x,\n y: unionBounds.top + unionBounds.height\n })\n\n path.push({\n x: boundaryPositions[TO].x,\n y: unionBounds.top + unionBounds.height\n })\n break\n case EAST:\n var x =\n boundaryPositions[TO].y < boundaryPositions[FROM].y &&\n boundaryPositions[TO].x < boundaryPositions[FROM].x\n ? boundaryPositions[FROM].x\n : unionBounds.left + unionBounds.width\n\n path.push({\n x,\n y: boundaryPositions[FROM].y\n })\n path.push({\n x,\n y: boundaryPositions[TO].y\n })\n break\n case WEST:\n var x = unionBounds.left\n path.push({\n x,\n y: boundaryPositions[FROM].y\n })\n path.push({\n x,\n y: boundaryPositions[TO].y\n })\n\n break\n default:\n return this.path\n }\n break\n case SOUTH:\n switch (toDirection) {\n case NORTH:\n var x = unionBounds.left + unionBounds.width\n path.push({\n x,\n y: boundaryPositions[FROM].y\n })\n\n path.push({\n x,\n y: unionBounds.top\n })\n\n path.push({\n x: boundaryPositions[TO].x,\n y: unionBounds.top\n })\n break\n case SOUTH:\n var y = unionBounds.top + unionBounds.height\n path.push({\n x: boundaryPositions[FROM].x,\n y\n })\n path.push({\n x: boundaryPositions[TO].x,\n y\n })\n break\n case EAST:\n var y = unionBounds.top + unionBounds.height\n path.push({\n x: boundaryPositions[FROM].x,\n y\n })\n path.push({\n x: boundaryPositions[TO].x,\n y\n })\n break\n case WEST:\n var y = unionBounds.top + unionBounds.height\n path.push({\n x: boundaryPositions[FROM].x,\n y\n })\n path.push({\n x: boundaryPositions[TO].x,\n y\n })\n break\n default:\n return this.path\n }\n break\n case WEST:\n switch (toDirection) {\n case NORTH:\n var x =\n boundaryPositions[FROM].x > boundaryPositions[TO].x &&\n boundaryPositions[FROM].y < boundaryPositions[TO].y\n ? boundaryPositions[TO].x\n : unionBounds.left\n var y =\n boundaryPositions[FROM].x > boundaryPositions[TO].x &&\n boundaryPositions[FROM].y < boundaryPositions[TO].y\n ? boundaryPositions[TO].y\n : Math.min(unionBounds.top, boundaryPositions[FROM].y)\n\n path.push({\n x,\n y: boundaryPositions[FROM].y\n })\n path.push({\n x,\n y\n })\n path.push({\n x: boundaryPositions[TO].x,\n y\n })\n break\n case SOUTH:\n var x = unionBounds.left\n var y = Math.max(unionBounds.top + unionBounds.height, boundaryPositions[FROM].y)\n\n path.push({\n x,\n y: boundaryPositions[FROM].y\n })\n path.push({\n x,\n y\n })\n path.push({\n x: boundaryPositions[TO].x,\n y\n })\n break\n case EAST:\n var x = unionBounds.left + unionBounds.width\n path.push({\n x: boundaryPositions[FROM].x,\n y: unionBounds.top\n })\n path.push({\n x,\n y: unionBounds.top\n })\n path.push({\n x,\n y: boundaryPositions[TO].y\n })\n break\n case WEST:\n var x = unionBounds.left\n path.push({\n x,\n y: boundaryPositions[FROM].y\n })\n path.push({\n x,\n y: boundaryPositions[TO].y\n })\n break\n default:\n return this.path\n }\n break\n case EAST:\n switch (toDirection) {\n case NORTH:\n var y =\n boundaryPositions[FROM].y < boundaryPositions[TO].y &&\n boundaryPositions[FROM].x < boundaryPositions[TO].x\n ? boundaryPositions[FROM].y\n : unionBounds.top\n\n path.push({\n x: boundaryPositions[FROM].x,\n y\n })\n path.push({\n x: boundaryPositions[TO].x,\n y\n })\n break\n case SOUTH:\n var y =\n boundaryPositions[FROM].y > boundaryPositions[TO].y &&\n boundaryPositions[FROM].x < boundaryPositions[TO].x\n ? boundaryPositions[FROM].y\n : unionBounds.top + unionBounds.height\n\n path.push({\n x: boundaryPositions[FROM].x,\n y\n })\n path.push({\n x: boundaryPositions[TO].x,\n y\n })\n break\n case EAST:\n var y = unionBounds.top + unionBounds.height\n\n path.push({\n x: boundaryPositions[FROM].x,\n y\n })\n path.push({\n x: boundaryPositions[TO].x,\n y\n })\n break\n\n case WEST:\n var y = unionBounds.top + unionBounds.height\n\n path.push({\n x: boundaryPositions[FROM].x,\n y\n })\n\n path.push({\n x: boundaryPositions[TO].x,\n y\n })\n break\n default:\n return this.path\n }\n break\n default:\n return this.path\n }\n }\n\n if (toBoundaryPosition) {\n path.push(toBoundaryPosition)\n }\n\n /* following 2 filters not to be merged */\n return [fromPosition, ...path, toPosition]\n .filter((p, idx, path) => {\n if (idx === 0) {\n return true\n }\n\n const prev = path[idx - 1]\n if (p.x === prev.x && p.y === prev.y) {\n return false\n }\n\n return true\n })\n .filter((p, idx, path) => {\n if (idx === 0 || idx >= path.length - 1) {\n return true\n }\n\n const prev = path[idx - 1]\n const next = path[idx + 1]\n\n if ((p.x === prev.x && p.x === next.x) || (p.y === prev.y && p.y === next.y)) {\n return false\n }\n\n return true\n })\n }\n\n get nature() {\n return NATURE\n }\n}\n\nComponent.register('ortholine', OrthoLine)\n"]}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
/// <reference path="../../../things-scene.d.ts" />
|
|
2
|
+
/// <reference path="../../../src/component.d.ts" />
|
|
3
|
+
import { Component } from '@hatiolab/things-scene';
|
|
4
|
+
export default function ellipseOutline(component: Component, progress: number): import("@hatiolab/things-scene").DIMENSION;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright © HatioLab Inc. All rights reserved.
|
|
3
|
+
*/
|
|
4
|
+
export default function ellipseOutline(component, progress) {
|
|
5
|
+
var { cx, cy, rx, ry } = component.model;
|
|
6
|
+
var theta = Math.PI * 2 * progress;
|
|
7
|
+
var x = cx + rx * Math.cos(theta);
|
|
8
|
+
var y = cy + ry * Math.sin(theta);
|
|
9
|
+
return component.transcoordS2T(x, y);
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=ellipse-outline.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ellipse-outline.js","sourceRoot":"","sources":["../../../src/components/outline/ellipse-outline.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,MAAM,CAAC,OAAO,UAAU,cAAc,CAAC,SAAoB,EAAE,QAAgB;IAC3E,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,SAAS,CAAC,KAAK,CAAA;IACxC,IAAI,KAAK,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG,QAAQ,CAAA;IAElC,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;IACjC,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;IAEjC,OAAO,SAAS,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;AACtC,CAAC","sourcesContent":["/*\n * Copyright © HatioLab Inc. All rights reserved.\n */\n\nimport { Component } from '@hatiolab/things-scene'\n\nexport default function ellipseOutline(component: Component, progress: number) {\n var { cx, cy, rx, ry } = component.model\n var theta = Math.PI * 2 * progress\n\n var x = cx + rx * Math.cos(theta)\n var y = cy + ry * Math.sin(theta)\n\n return component.transcoordS2T(x, y)\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export default function pathOutline(component: any, progress: any): any;
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright © HatioLab Inc. All rights reserved.
|
|
3
|
+
*/
|
|
4
|
+
import Component from './component';
|
|
5
|
+
export default class Path extends Component {
|
|
6
|
+
render(ctx) {
|
|
7
|
+
var { path = [] } = this.state;
|
|
8
|
+
if (path.length <= 1)
|
|
9
|
+
return;
|
|
10
|
+
// Polyline을 그린다.
|
|
11
|
+
ctx.beginPath();
|
|
12
|
+
ctx.moveTo(path[0].x, path[0].y);
|
|
13
|
+
for (let i = 1; i < path.length; i++)
|
|
14
|
+
ctx.lineTo(path[i].x, path[i].y);
|
|
15
|
+
ctx.closePath();
|
|
16
|
+
this.drawStroke(ctx);
|
|
17
|
+
}
|
|
18
|
+
get path() {
|
|
19
|
+
return this.model.path;
|
|
20
|
+
}
|
|
21
|
+
set path(path) {
|
|
22
|
+
this.set('path', path);
|
|
23
|
+
}
|
|
24
|
+
contains(x, y) {
|
|
25
|
+
var path = this.state.path;
|
|
26
|
+
var result = false;
|
|
27
|
+
path.forEach((p, idx) => {
|
|
28
|
+
let j = (idx + path.length + 1) % path.length;
|
|
29
|
+
let x1 = p.x;
|
|
30
|
+
let y1 = p.y;
|
|
31
|
+
let x2 = path[j].x;
|
|
32
|
+
let y2 = path[j].y;
|
|
33
|
+
if (y1 > y != y2 > y && x < ((x2 - x1) * (y - y1)) / (y2 - y1) + x1)
|
|
34
|
+
result = !result;
|
|
35
|
+
});
|
|
36
|
+
return result;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
Component.register('path', Path);
|
|
40
|
+
//# sourceMappingURL=path.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"path.js","sourceRoot":"","sources":["../../src/components/path.js"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,SAAS,MAAM,aAAa,CAAA;AAEnC,MAAM,CAAC,OAAO,OAAO,IAAK,SAAQ,SAAS;IACzC,MAAM,CAAC,GAAG;QACR,IAAI,EAAE,IAAI,GAAG,EAAE,EAAE,GAAG,IAAI,CAAC,KAAK,CAAA;QAE9B,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC;YAAE,OAAM;QAE5B,iBAAiB;QACjB,GAAG,CAAC,SAAS,EAAE,CAAA;QAEf,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;QAEhC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE;YAAE,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;QAEtE,GAAG,CAAC,SAAS,EAAE,CAAA;QAEf,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAA;IACtB,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAA;IACxB,CAAC;IAED,IAAI,IAAI,CAAC,IAAI;QACX,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IACxB,CAAC;IAED,QAAQ,CAAC,CAAC,EAAE,CAAC;QACX,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAA;QAC1B,IAAI,MAAM,GAAG,KAAK,CAAA;QAElB,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE;YACtB,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAA;YAE7C,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAA;YACZ,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAA;YACZ,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;YAClB,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;YAElB,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE;gBAAE,MAAM,GAAG,CAAC,MAAM,CAAA;QACvF,CAAC,CAAC,CAAA;QAEF,OAAO,MAAM,CAAA;IACf,CAAC;CACF;AAED,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA","sourcesContent":["/*\n * Copyright © HatioLab Inc. All rights reserved.\n */\n\nimport Component from './component'\n\nexport default class Path extends Component {\n render(ctx) {\n var { path = [] } = this.state\n\n if (path.length <= 1) return\n\n // Polyline을 그린다.\n ctx.beginPath()\n\n ctx.moveTo(path[0].x, path[0].y)\n\n for (let i = 1; i < path.length; i++) ctx.lineTo(path[i].x, path[i].y)\n\n ctx.closePath()\n\n this.drawStroke(ctx)\n }\n\n get path() {\n return this.model.path\n }\n\n set path(path) {\n this.set('path', path)\n }\n\n contains(x, y) {\n var path = this.state.path\n var result = false\n\n path.forEach((p, idx) => {\n let j = (idx + path.length + 1) % path.length\n\n let x1 = p.x\n let y1 = p.y\n let x2 = path[j].x\n let y2 = path[j].y\n\n if (y1 > y != y2 > y && x < ((x2 - x1) * (y - y1)) / (y2 - y1) + x1) result = !result\n })\n\n return result\n }\n}\n\nComponent.register('path', Path)\n"]}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import * as THREE from 'three';
|
|
2
|
+
import { Component, ComponentNature, DIMENSION, Shape } from '@hatiolab/things-scene';
|
|
3
|
+
import RealObject from '../threed/real-object';
|
|
4
|
+
import RealObjectExtrude from '../threed/real-object-extrude';
|
|
5
|
+
export declare class PolygonExtrude extends RealObjectExtrude {
|
|
6
|
+
_minMax?: {
|
|
7
|
+
minX?: number;
|
|
8
|
+
minY?: number;
|
|
9
|
+
maxX?: number;
|
|
10
|
+
maxY?: number;
|
|
11
|
+
};
|
|
12
|
+
get shape(): THREE.Shape;
|
|
13
|
+
get minMax(): {
|
|
14
|
+
minX?: number | undefined;
|
|
15
|
+
minY?: number | undefined;
|
|
16
|
+
maxX?: number | undefined;
|
|
17
|
+
maxY?: number | undefined;
|
|
18
|
+
};
|
|
19
|
+
get cx(): number;
|
|
20
|
+
get cy(): number;
|
|
21
|
+
}
|
|
22
|
+
export default class Polygon extends Shape {
|
|
23
|
+
is3dish(): boolean;
|
|
24
|
+
get mutable(): boolean;
|
|
25
|
+
get pathExtendable(): boolean;
|
|
26
|
+
get path(): any;
|
|
27
|
+
set path(path: any);
|
|
28
|
+
contains(x: number, y: number): boolean;
|
|
29
|
+
get controls(): {
|
|
30
|
+
x: number;
|
|
31
|
+
y: number;
|
|
32
|
+
handler: {
|
|
33
|
+
ondragstart: (point: DIMENSION, index: number, component: Component) => void;
|
|
34
|
+
ondragmove: (point: DIMENSION, index: number, component: Component) => void;
|
|
35
|
+
ondragend: (point: DIMENSION, index: number, component: Component) => void;
|
|
36
|
+
};
|
|
37
|
+
}[];
|
|
38
|
+
buildRealObject(): RealObject | undefined;
|
|
39
|
+
get nature(): ComponentNature;
|
|
40
|
+
}
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright © HatioLab Inc. All rights reserved.
|
|
3
|
+
*/
|
|
4
|
+
import * as THREE from 'three';
|
|
5
|
+
import { Component, Shape } from '@hatiolab/things-scene';
|
|
6
|
+
import RealObjectExtrude from '../threed/real-object-extrude';
|
|
7
|
+
var controlHandler = {
|
|
8
|
+
ondragstart: function (point, index, component) {
|
|
9
|
+
component.mutatePath(null, function (path) {
|
|
10
|
+
path.splice(index + 1, 0, point);
|
|
11
|
+
});
|
|
12
|
+
},
|
|
13
|
+
ondragmove: function (point, index, component) {
|
|
14
|
+
component.mutatePath(null, function (path) {
|
|
15
|
+
path[index + 1] = point;
|
|
16
|
+
});
|
|
17
|
+
},
|
|
18
|
+
ondragend: function (point, index, component) { }
|
|
19
|
+
};
|
|
20
|
+
const NATURE = {
|
|
21
|
+
mutable: true,
|
|
22
|
+
resizable: false,
|
|
23
|
+
rotatable: true,
|
|
24
|
+
properties: [
|
|
25
|
+
{
|
|
26
|
+
type: 'number',
|
|
27
|
+
label: 'round',
|
|
28
|
+
name: 'round',
|
|
29
|
+
property: {
|
|
30
|
+
min: 0,
|
|
31
|
+
max: 100,
|
|
32
|
+
step: 1
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
],
|
|
36
|
+
help: 'scene/component/polygon'
|
|
37
|
+
};
|
|
38
|
+
export class PolygonExtrude extends RealObjectExtrude {
|
|
39
|
+
get shape() {
|
|
40
|
+
var { path = [], round = 0 } = this.component.state;
|
|
41
|
+
var shape = new THREE.Shape();
|
|
42
|
+
for (var i = 0; i < path.length; i++) {
|
|
43
|
+
const prev = path[(i - 1 + path.length) % path.length];
|
|
44
|
+
const cursor = path[(i + path.length) % path.length];
|
|
45
|
+
const next = path[(i + 1) % path.length];
|
|
46
|
+
if (prev.x === cursor.x && prev.y === cursor.y) {
|
|
47
|
+
continue;
|
|
48
|
+
}
|
|
49
|
+
var length = Math.sqrt((prev.x - cursor.x) * (prev.x - cursor.x) + (prev.y - cursor.y) * (prev.y - cursor.y));
|
|
50
|
+
var theta = length !== 0 ? Math.atan2(prev.x - cursor.x, prev.y - cursor.y) : 0;
|
|
51
|
+
var x = Math.sin(theta) * Math.min(round, length / 2) + cursor.x;
|
|
52
|
+
var y = Math.cos(theta) * Math.min(round, length / 2) + cursor.y;
|
|
53
|
+
const p1 = round > 0 || length !== 0 ? { x, y } : cursor;
|
|
54
|
+
var length = Math.sqrt((next.x - cursor.x) * (next.x - cursor.x) + (next.y - cursor.y) * (next.y - cursor.y));
|
|
55
|
+
theta = length !== 0 ? Math.atan2(next.x - cursor.x, next.y - cursor.y) : 0;
|
|
56
|
+
x = Math.sin(theta) * Math.min(round, length / 2) + cursor.x;
|
|
57
|
+
y = Math.cos(theta) * Math.min(round, length / 2) + cursor.y;
|
|
58
|
+
const p2 = round > 0 || length !== 0 ? { x, y } : cursor;
|
|
59
|
+
i == 0 ? shape.moveTo(p1.x, p1.y) : shape.lineTo(p1.x, p1.y);
|
|
60
|
+
round > 0 && shape.quadraticCurveTo(cursor.x, cursor.y, p2.x, p2.y);
|
|
61
|
+
}
|
|
62
|
+
return shape;
|
|
63
|
+
}
|
|
64
|
+
get minMax() {
|
|
65
|
+
if (!this._minMax) {
|
|
66
|
+
var { path } = this.component.state;
|
|
67
|
+
var minX;
|
|
68
|
+
var minY;
|
|
69
|
+
var maxX;
|
|
70
|
+
var maxY;
|
|
71
|
+
path.forEach((p, i) => {
|
|
72
|
+
if (i == 0) {
|
|
73
|
+
minX = maxX = p.x;
|
|
74
|
+
minY = maxY = p.y;
|
|
75
|
+
return;
|
|
76
|
+
}
|
|
77
|
+
minX = Math.min(minX, p.x);
|
|
78
|
+
maxX = Math.max(maxX, p.x);
|
|
79
|
+
minY = Math.min(minY, p.y);
|
|
80
|
+
maxY = Math.max(maxY, p.y);
|
|
81
|
+
});
|
|
82
|
+
this._minMax = {
|
|
83
|
+
minX,
|
|
84
|
+
minY,
|
|
85
|
+
maxX,
|
|
86
|
+
maxY
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
return this._minMax;
|
|
90
|
+
}
|
|
91
|
+
get cx() {
|
|
92
|
+
var { minX, maxX } = this.minMax;
|
|
93
|
+
var left = minX;
|
|
94
|
+
var width = maxX - minX;
|
|
95
|
+
var { width: parentWidth = 0 } = this.component.parent.bounds;
|
|
96
|
+
return left + width / 2 - parentWidth / 2;
|
|
97
|
+
}
|
|
98
|
+
get cy() {
|
|
99
|
+
var { minY, maxY } = this.minMax;
|
|
100
|
+
var top = minY;
|
|
101
|
+
var height = maxY - minY;
|
|
102
|
+
var { height: parentHeight = 0 } = this.component.parent.bounds;
|
|
103
|
+
return top + height / 2 - parentHeight / 2;
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
export default class Polygon extends Shape {
|
|
107
|
+
is3dish() {
|
|
108
|
+
return true;
|
|
109
|
+
}
|
|
110
|
+
get mutable() {
|
|
111
|
+
return true;
|
|
112
|
+
}
|
|
113
|
+
get pathExtendable() {
|
|
114
|
+
return true;
|
|
115
|
+
}
|
|
116
|
+
get path() {
|
|
117
|
+
return this.state.path;
|
|
118
|
+
}
|
|
119
|
+
set path(path) {
|
|
120
|
+
this.set('path', path);
|
|
121
|
+
}
|
|
122
|
+
contains(x, y) {
|
|
123
|
+
var path = this.state.path;
|
|
124
|
+
var result = false;
|
|
125
|
+
path.forEach((p, idx) => {
|
|
126
|
+
let j = (idx + path.length + 1) % path.length;
|
|
127
|
+
let x1 = p.x;
|
|
128
|
+
let y1 = p.y;
|
|
129
|
+
let x2 = path[j].x;
|
|
130
|
+
let y2 = path[j].y;
|
|
131
|
+
if (y1 > y != y2 > y && x < ((x2 - x1) * (y - y1)) / (y2 - y1) + x1)
|
|
132
|
+
result = !result;
|
|
133
|
+
});
|
|
134
|
+
return result;
|
|
135
|
+
}
|
|
136
|
+
get controls() {
|
|
137
|
+
// 폴리곤에서의 control은 새로운 path를 추가하는 포인트이다.
|
|
138
|
+
var path = this.path;
|
|
139
|
+
return path.map((p1, i) => {
|
|
140
|
+
let p2 = path[i + 1 >= path.length ? 0 : i + 1];
|
|
141
|
+
return {
|
|
142
|
+
x: (p1.x + p2.x) / 2,
|
|
143
|
+
y: (p1.y + p2.y) / 2,
|
|
144
|
+
handler: controlHandler
|
|
145
|
+
};
|
|
146
|
+
});
|
|
147
|
+
}
|
|
148
|
+
buildRealObject() {
|
|
149
|
+
return new PolygonExtrude(this);
|
|
150
|
+
}
|
|
151
|
+
get nature() {
|
|
152
|
+
return NATURE;
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
Component.memoize(Polygon.prototype, 'controls', false);
|
|
156
|
+
Component.register('polygon', Polygon);
|
|
157
|
+
//# sourceMappingURL=polygon.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"polygon.js","sourceRoot":"","sources":["../../src/components/polygon.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright © HatioLab Inc. All rights reserved.\n */\nimport * as THREE from 'three'\n\nimport {\n Component,\n ComponentNature,\n DIMENSION,\n POINT,\n POSITION,\n Properties,\n RectPath,\n Shape\n} from '@hatiolab/things-scene'\nimport RealObject from '../threed/real-object'\nimport RealObjectExtrude from '../threed/real-object-extrude'\n\nvar controlHandler = {\n ondragstart: function (point: POSITION, index: number, component: Component) {\n component.mutatePath(null, function (path: Array<DIMENSION>) {\n path.splice(index + 1, 0, point)\n })\n },\n\n ondragmove: function (point: POSITION, index: number, component: Component) {\n component.mutatePath(null, function (path: Array<DIMENSION>) {\n path[index + 1] = point\n })\n },\n\n ondragend: function (point: POSITION, index: number, component: Component) {}\n}\n\nconst NATURE: ComponentNature = {\n mutable: true,\n resizable: false,\n rotatable: true,\n properties: [\n {\n type: 'number',\n label: 'round',\n name: 'round',\n property: {\n min: 0,\n max: 100,\n step: 1\n }\n }\n ],\n help: 'scene/component/polygon'\n}\n\nexport class PolygonExtrude extends RealObjectExtrude {\n _minMax?: {\n minX?: number\n minY?: number\n maxX?: number\n maxY?: number\n }\n\n get shape() {\n var { path = [], round = 0 } = this.component.state\n\n var shape = new THREE.Shape()\n\n for (var i = 0; i < path.length; i++) {\n const prev = path[(i - 1 + path.length) % path.length]\n const cursor = path[(i + path.length) % path.length]\n const next = path[(i + 1) % path.length]\n\n if (prev.x === cursor.x && prev.y === cursor.y) {\n continue\n }\n\n var length = Math.sqrt((prev.x - cursor.x) * (prev.x - cursor.x) + (prev.y - cursor.y) * (prev.y - cursor.y))\n var theta = length !== 0 ? Math.atan2(prev.x - cursor.x, prev.y - cursor.y) : 0\n var x = Math.sin(theta) * Math.min(round, length / 2) + cursor.x\n var y = Math.cos(theta) * Math.min(round, length / 2) + cursor.y\n\n const p1 = round > 0 || length !== 0 ? { x, y } : cursor\n\n var length = Math.sqrt((next.x - cursor.x) * (next.x - cursor.x) + (next.y - cursor.y) * (next.y - cursor.y))\n theta = length !== 0 ? Math.atan2(next.x - cursor.x, next.y - cursor.y) : 0\n x = Math.sin(theta) * Math.min(round, length / 2) + cursor.x\n y = Math.cos(theta) * Math.min(round, length / 2) + cursor.y\n\n const p2 = round > 0 || length !== 0 ? { x, y } : cursor\n\n i == 0 ? shape.moveTo(p1.x, p1.y) : shape.lineTo(p1.x, p1.y)\n round > 0 && shape.quadraticCurveTo(cursor.x, cursor.y, p2.x, p2.y)\n }\n\n return shape\n }\n\n get minMax() {\n if (!this._minMax) {\n var { path } = this.component.state\n\n var minX: number | undefined\n var minY: number | undefined\n var maxX: number | undefined\n var maxY: number | undefined\n\n path.forEach((p: POINT, i: number) => {\n if (i == 0) {\n minX = maxX = p.x\n minY = maxY = p.y\n return\n }\n\n minX = Math.min(minX!, p.x)\n maxX = Math.max(maxX!, p.x)\n minY = Math.min(minY!, p.y)\n maxY = Math.max(maxY!, p.y)\n })\n\n this._minMax = {\n minX,\n minY,\n maxX,\n maxY\n }\n }\n\n return this._minMax\n }\n\n get cx() {\n var { minX, maxX } = this.minMax\n\n var left = minX\n var width = maxX! - minX!\n\n var { width: parentWidth = 0 } = this.component.parent.bounds\n\n return left! + width / 2 - parentWidth / 2\n }\n\n get cy() {\n var { minY, maxY } = this.minMax\n\n var top = minY\n var height = maxY! - minY!\n\n var { height: parentHeight = 0 } = this.component.parent.bounds\n\n return top! + height / 2 - parentHeight / 2\n }\n\n // raycast(raycaster, intersects) {}\n}\n\nexport default class Polygon extends Shape {\n is3dish() {\n return true\n }\n\n get mutable() {\n return true\n }\n\n get pathExtendable() {\n return true\n }\n\n get path() {\n return this.state.path\n }\n\n set path(path) {\n this.set('path', path)\n }\n\n contains(x: number, y: number) {\n var path = this.state.path as Array<DIMENSION>\n var result = false\n\n path.forEach((p, idx) => {\n let j = (idx + path.length + 1) % path.length\n\n let x1 = p.x\n let y1 = p.y\n let x2 = path[j].x\n let y2 = path[j].y\n\n if (y1 > y != y2 > y && x < ((x2 - x1) * (y - y1)) / (y2 - y1) + x1) result = !result\n })\n\n return result\n }\n\n get controls() {\n // 폴리곤에서의 control은 새로운 path를 추가하는 포인트이다.\n var path = this.path as Array<DIMENSION>\n\n return path.map((p1, i) => {\n let p2 = path[i + 1 >= path.length ? 0 : i + 1]\n\n return {\n x: (p1.x + p2.x) / 2,\n y: (p1.y + p2.y) / 2,\n handler: controlHandler\n }\n })\n }\n\n buildRealObject(): RealObject | undefined {\n return new PolygonExtrude(this)\n }\n\n get nature() {\n return NATURE\n }\n}\n\nComponent.memoize(Polygon.prototype, 'controls', false)\n\nComponent.register('polygon', Polygon)\n"]}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { Component, ComponentNature, Line } from '@hatiolab/things-scene';
|
|
2
|
+
export default class Polyline extends Line {
|
|
3
|
+
_fromEnd: any;
|
|
4
|
+
_toEnd: any;
|
|
5
|
+
get pathExtendable(): boolean;
|
|
6
|
+
get path(): any[];
|
|
7
|
+
set path(path: any[]);
|
|
8
|
+
get controls(): {
|
|
9
|
+
x: any;
|
|
10
|
+
y: any;
|
|
11
|
+
handler: {
|
|
12
|
+
ondragstart: (point: import("@hatiolab/things-scene").DIMENSION, index: number, component: Component) => void;
|
|
13
|
+
ondragmove: (point: import("@hatiolab/things-scene").DIMENSION, index: number, component: Component) => void;
|
|
14
|
+
ondragend: (point: import("@hatiolab/things-scene").DIMENSION, index: number, component: Component) => void;
|
|
15
|
+
};
|
|
16
|
+
}[];
|
|
17
|
+
get nature(): ComponentNature;
|
|
18
|
+
}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright © HatioLab Inc. All rights reserved.
|
|
3
|
+
*/
|
|
4
|
+
import { Component, Line } from '@hatiolab/things-scene';
|
|
5
|
+
var controlHandler = {
|
|
6
|
+
ondragstart: function (point, index, component) {
|
|
7
|
+
component.mutatePath(null, function (path) {
|
|
8
|
+
path.splice(index, 0, point); // array.insert(index, point) 의 의미임.
|
|
9
|
+
});
|
|
10
|
+
},
|
|
11
|
+
ondragmove: function (point, index, component) {
|
|
12
|
+
component.mutatePath(null, function (path) {
|
|
13
|
+
path[index] = point;
|
|
14
|
+
});
|
|
15
|
+
},
|
|
16
|
+
ondragend: function (point, index, component) { }
|
|
17
|
+
};
|
|
18
|
+
const NATURE = {
|
|
19
|
+
mutable: false,
|
|
20
|
+
resizable: false,
|
|
21
|
+
rotatable: false,
|
|
22
|
+
properties: [
|
|
23
|
+
{
|
|
24
|
+
type: 'number',
|
|
25
|
+
label: 'round',
|
|
26
|
+
name: 'round',
|
|
27
|
+
property: {
|
|
28
|
+
min: 0,
|
|
29
|
+
max: 100,
|
|
30
|
+
step: 1
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
],
|
|
34
|
+
help: 'scene/component/polyline'
|
|
35
|
+
};
|
|
36
|
+
export default class Polyline extends Line {
|
|
37
|
+
get pathExtendable() {
|
|
38
|
+
return true;
|
|
39
|
+
}
|
|
40
|
+
get path() {
|
|
41
|
+
var _a, _b;
|
|
42
|
+
const { from, to } = this.state;
|
|
43
|
+
const { path } = this.state;
|
|
44
|
+
return [
|
|
45
|
+
((_a = this.fromEnd) === null || _a === void 0 ? void 0 : _a.position) || (from === null || from === void 0 ? void 0 : from.position) || path[0],
|
|
46
|
+
...path.slice(1, -1),
|
|
47
|
+
((_b = this.toEnd) === null || _b === void 0 ? void 0 : _b.position) || (to === null || to === void 0 ? void 0 : to.position) || path[path.length - 1]
|
|
48
|
+
];
|
|
49
|
+
}
|
|
50
|
+
set path(path) {
|
|
51
|
+
const { from, to } = this.state;
|
|
52
|
+
delete this._fromEnd;
|
|
53
|
+
delete this._toEnd;
|
|
54
|
+
this.set({
|
|
55
|
+
from: {
|
|
56
|
+
...from,
|
|
57
|
+
position: path[0]
|
|
58
|
+
},
|
|
59
|
+
to: {
|
|
60
|
+
...to,
|
|
61
|
+
position: path[path.length - 1]
|
|
62
|
+
},
|
|
63
|
+
path
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
get controls() {
|
|
67
|
+
// 폴리라인에서의 control은 새로운 path를 추가하는 포인트이다.
|
|
68
|
+
var path = this.path;
|
|
69
|
+
var controls = [];
|
|
70
|
+
for (let i = 0; i < path.length - 1; i++) {
|
|
71
|
+
let p1 = path[i];
|
|
72
|
+
let p2 = path[i + 1];
|
|
73
|
+
if (i == 0) {
|
|
74
|
+
controls.push({
|
|
75
|
+
x: p1.x,
|
|
76
|
+
y: p1.y,
|
|
77
|
+
handler: controlHandler
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
controls.push({
|
|
81
|
+
x: (p1.x + p2.x) / 2,
|
|
82
|
+
y: (p1.y + p2.y) / 2,
|
|
83
|
+
handler: controlHandler
|
|
84
|
+
});
|
|
85
|
+
if (i == path.length - 2) {
|
|
86
|
+
controls.push({
|
|
87
|
+
x: p2.x,
|
|
88
|
+
y: p2.y,
|
|
89
|
+
handler: controlHandler
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
return controls;
|
|
94
|
+
}
|
|
95
|
+
get nature() {
|
|
96
|
+
return NATURE;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
/* target anchor의 움직임이 반영되지 못하므로, 일단 controls memoize를 제거함. */
|
|
100
|
+
// Component.memoize(Polyline.prototype, 'controls', false)
|
|
101
|
+
Component.register('polyline', Polyline);
|
|
102
|
+
//# sourceMappingURL=polyline.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"polyline.js","sourceRoot":"","sources":["../../src/components/polyline.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,SAAS,EAA+B,IAAI,EAAY,MAAM,wBAAwB,CAAA;AAE/F,IAAI,cAAc,GAAG;IACnB,WAAW,EAAE,UAAU,KAAe,EAAE,KAAa,EAAE,SAAoB;QACzE,SAAS,CAAC,UAAU,CAAC,IAAI,EAAE,UAAU,IAAI;YACvC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,CAAC,CAAA,CAAC,oCAAoC;QACnE,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,UAAU,EAAE,UAAU,KAAe,EAAE,KAAa,EAAE,SAAoB;QACxE,SAAS,CAAC,UAAU,CAAC,IAAI,EAAE,UAAU,IAAI;YACvC,IAAI,CAAC,KAAK,CAAC,GAAG,KAAK,CAAA;QACrB,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,SAAS,EAAE,UAAU,KAAe,EAAE,KAAa,EAAE,SAAoB,IAAG,CAAC;CAC9E,CAAA;AAED,MAAM,MAAM,GAAoB;IAC9B,OAAO,EAAE,KAAK;IACd,SAAS,EAAE,KAAK;IAChB,SAAS,EAAE,KAAK;IAChB,UAAU,EAAE;QACV;YACE,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,OAAO;YACd,IAAI,EAAE,OAAO;YACb,QAAQ,EAAE;gBACR,GAAG,EAAE,CAAC;gBACN,GAAG,EAAE,GAAG;gBACR,IAAI,EAAE,CAAC;aACR;SACF;KACF;IACD,IAAI,EAAE,0BAA0B;CACjC,CAAA;AAED,MAAM,CAAC,OAAO,OAAO,QAAS,SAAQ,IAAI;IAIxC,IAAI,cAAc;QAChB,OAAO,IAAI,CAAA;IACb,CAAC;IAED,IAAI,IAAI;;QACN,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC,KAAK,CAAA;QAC/B,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,CAAA;QAE3B,OAAO;YACL,CAAA,MAAA,IAAI,CAAC,OAAO,0CAAE,QAAQ,MAAI,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,QAAQ,CAAA,IAAI,IAAI,CAAC,CAAC,CAAC;YACnD,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACpB,CAAA,MAAA,IAAI,CAAC,KAAK,0CAAE,QAAQ,MAAI,EAAE,aAAF,EAAE,uBAAF,EAAE,CAAE,QAAQ,CAAA,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;SAC9D,CAAA;IACH,CAAC;IAED,IAAI,IAAI,CAAC,IAAI;QACX,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC,KAAK,CAAA;QAE/B,OAAO,IAAI,CAAC,QAAQ,CAAA;QACpB,OAAO,IAAI,CAAC,MAAM,CAAA;QAElB,IAAI,CAAC,GAAG,CAAC;YACP,IAAI,EAAE;gBACJ,GAAG,IAAI;gBACP,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC;aAClB;YACD,EAAE,EAAE;gBACF,GAAG,EAAE;gBACL,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;aAChC;YACD,IAAI;SACL,CAAC,CAAA;IACJ,CAAC;IAED,IAAI,QAAQ;QACV,yCAAyC;QACzC,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,CAAA;QACpB,IAAI,QAAQ,GAAG,EAAE,CAAA;QAEjB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;YACxC,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAA;YAChB,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;YAEpB,IAAI,CAAC,IAAI,CAAC,EAAE;gBACV,QAAQ,CAAC,IAAI,CAAC;oBACZ,CAAC,EAAE,EAAE,CAAC,CAAC;oBACP,CAAC,EAAE,EAAE,CAAC,CAAC;oBACP,OAAO,EAAE,cAAc;iBACxB,CAAC,CAAA;aACH;YAED,QAAQ,CAAC,IAAI,CAAC;gBACZ,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;gBACpB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;gBACpB,OAAO,EAAE,cAAc;aACxB,CAAC,CAAA;YAEF,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;gBACxB,QAAQ,CAAC,IAAI,CAAC;oBACZ,CAAC,EAAE,EAAE,CAAC,CAAC;oBACP,CAAC,EAAE,EAAE,CAAC,CAAC;oBACP,OAAO,EAAE,cAAc;iBACxB,CAAC,CAAA;aACH;SACF;QAED,OAAO,QAAQ,CAAA;IACjB,CAAC;IAED,IAAI,MAAM;QACR,OAAO,MAAM,CAAA;IACf,CAAC;CACF;AAED,8DAA8D;AAC9D,2DAA2D;AAE3D,SAAS,CAAC,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAA","sourcesContent":["/*\n * Copyright © HatioLab Inc. All rights reserved.\n */\nimport { Component, ComponentNature, Properties, Line, POSITION } from '@hatiolab/things-scene'\n\nvar controlHandler = {\n ondragstart: function (point: POSITION, index: number, component: Component) {\n component.mutatePath(null, function (path) {\n path.splice(index, 0, point) // array.insert(index, point) 의 의미임.\n })\n },\n\n ondragmove: function (point: POSITION, index: number, component: Component) {\n component.mutatePath(null, function (path) {\n path[index] = point\n })\n },\n\n ondragend: function (point: POSITION, index: number, component: Component) {}\n}\n\nconst NATURE: ComponentNature = {\n mutable: false,\n resizable: false,\n rotatable: false,\n properties: [\n {\n type: 'number',\n label: 'round',\n name: 'round',\n property: {\n min: 0,\n max: 100,\n step: 1\n }\n }\n ],\n help: 'scene/component/polyline'\n}\n\nexport default class Polyline extends Line {\n _fromEnd: any\n _toEnd: any\n\n get pathExtendable() {\n return true\n }\n\n get path() {\n const { from, to } = this.state\n const { path } = this.state\n\n return [\n this.fromEnd?.position || from?.position || path[0],\n ...path.slice(1, -1),\n this.toEnd?.position || to?.position || path[path.length - 1]\n ]\n }\n\n set path(path) {\n const { from, to } = this.state\n\n delete this._fromEnd\n delete this._toEnd\n\n this.set({\n from: {\n ...from,\n position: path[0]\n },\n to: {\n ...to,\n position: path[path.length - 1]\n },\n path\n })\n }\n\n get controls() {\n // 폴리라인에서의 control은 새로운 path를 추가하는 포인트이다.\n var path = this.path\n var controls = []\n\n for (let i = 0; i < path.length - 1; i++) {\n let p1 = path[i]\n let p2 = path[i + 1]\n\n if (i == 0) {\n controls.push({\n x: p1.x,\n y: p1.y,\n handler: controlHandler\n })\n }\n\n controls.push({\n x: (p1.x + p2.x) / 2,\n y: (p1.y + p2.y) / 2,\n handler: controlHandler\n })\n\n if (i == path.length - 2) {\n controls.push({\n x: p2.x,\n y: p2.y,\n handler: controlHandler\n })\n }\n }\n\n return controls\n }\n\n get nature() {\n return NATURE\n }\n}\n\n/* target anchor의 움직임이 반영되지 못하므로, 일단 controls memoize를 제거함. */\n// Component.memoize(Polyline.prototype, 'controls', false)\n\nComponent.register('polyline', Polyline)\n"]}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
declare const Popup_base: {
|
|
2
|
+
new (): {
|
|
3
|
+
[x: string]: any;
|
|
4
|
+
contains(x: any, y: any): boolean;
|
|
5
|
+
path: {
|
|
6
|
+
x: any;
|
|
7
|
+
y: any;
|
|
8
|
+
}[];
|
|
9
|
+
readonly anchors: import("./anchor/anchor").Anchor[];
|
|
10
|
+
};
|
|
11
|
+
[x: string]: any;
|
|
12
|
+
};
|
|
13
|
+
export default class Popup extends Popup_base {
|
|
14
|
+
static get image(): any;
|
|
15
|
+
ready(): void;
|
|
16
|
+
render(context: any): void;
|
|
17
|
+
onchange(after: any, before: any): void;
|
|
18
|
+
set show(arg: any);
|
|
19
|
+
get show(): any;
|
|
20
|
+
onchangeShow(value: any): void;
|
|
21
|
+
set board(arg: any);
|
|
22
|
+
get board(): any;
|
|
23
|
+
set started(arg: any);
|
|
24
|
+
get started(): any;
|
|
25
|
+
set value(arg: any);
|
|
26
|
+
get value(): any;
|
|
27
|
+
get hasTextProperty(): boolean;
|
|
28
|
+
get nature(): {
|
|
29
|
+
mutable: boolean;
|
|
30
|
+
resizable: boolean;
|
|
31
|
+
rotatable: boolean;
|
|
32
|
+
properties: ({
|
|
33
|
+
type: string;
|
|
34
|
+
label: string;
|
|
35
|
+
name: string;
|
|
36
|
+
property?: undefined;
|
|
37
|
+
} | {
|
|
38
|
+
type: string;
|
|
39
|
+
label: string;
|
|
40
|
+
name: string;
|
|
41
|
+
property: {
|
|
42
|
+
options: string[];
|
|
43
|
+
};
|
|
44
|
+
})[];
|
|
45
|
+
help: string;
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
export {};
|