@hatiolab/things-scene 3.4.38 → 3.4.41

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.
Files changed (339) hide show
  1. package/db.sqlite +0 -0
  2. package/package.json +1 -1
  3. package/schema.graphql +146 -53
  4. package/things-scene-ie.js +1 -1
  5. package/things-scene-min.js +1 -1
  6. package/things-scene.mjs +2 -2
  7. package/dist/animation/animate.d.ts +0 -4
  8. package/dist/animation/animations/animation.d.ts +0 -14
  9. package/dist/animation/animations/fade.d.ts +0 -4
  10. package/dist/animation/animations/heartbeat.d.ts +0 -4
  11. package/dist/animation/animations/moving.d.ts +0 -4
  12. package/dist/animation/animations/outline.d.ts +0 -10
  13. package/dist/animation/animations/rotation.d.ts +0 -4
  14. package/dist/animation/animations/vibration.d.ts +0 -4
  15. package/dist/animation/compile.d.ts +0 -1
  16. package/dist/animation/delta.d.ts +0 -19
  17. package/dist/animation/index.d.ts +0 -1
  18. package/dist/command/command-change.d.ts +0 -7
  19. package/dist/command/command-migrate.d.ts +0 -4
  20. package/dist/command/command-migrate.js +0 -85
  21. package/dist/command/command-migrate.js.map +0 -1
  22. package/dist/command/command.d.ts +0 -5
  23. package/dist/command/snapshot-commander.d.ts +0 -15
  24. package/dist/components/anchor/anchor.d.ts +0 -128
  25. package/dist/components/anchor/ellipse-anchors.d.ts +0 -2
  26. package/dist/components/anchor/ellipse-anchors.js +0 -38
  27. package/dist/components/anchor/ellipse-anchors.js.map +0 -1
  28. package/dist/components/anchor/rect-anchors.d.ts +0 -10
  29. package/dist/components/audio.d.ts +0 -25
  30. package/dist/components/audio.js +0 -141
  31. package/dist/components/audio.js.map +0 -1
  32. package/dist/components/cloud.d.ts +0 -13
  33. package/dist/components/cloud.js +0 -31
  34. package/dist/components/cloud.js.map +0 -1
  35. package/dist/components/component.d.ts +0 -227
  36. package/dist/components/component.js +0 -912
  37. package/dist/components/component.js.map +0 -1
  38. package/dist/components/container-abstract.d.ts +0 -51
  39. package/dist/components/container-abstract.js +0 -372
  40. package/dist/components/container-abstract.js.map +0 -1
  41. package/dist/components/container.d.ts +0 -38
  42. package/dist/components/container.js +0 -75
  43. package/dist/components/container.js.map +0 -1
  44. package/dist/components/data/data-mapping.d.ts +0 -16
  45. package/dist/components/data/data.d.ts +0 -8
  46. package/dist/components/data/evaluator.d.ts +0 -1
  47. package/dist/components/donut.d.ts +0 -15
  48. package/dist/components/donut.js +0 -74
  49. package/dist/components/donut.js.map +0 -1
  50. package/dist/components/drawer/draw-image-pendable.d.ts +0 -1
  51. package/dist/components/drawer/effect.d.ts +0 -1
  52. package/dist/components/drawer/fill.d.ts +0 -14
  53. package/dist/components/drawer/format.d.ts +0 -1
  54. package/dist/components/drawer/line.d.ts +0 -3
  55. package/dist/components/drawer/stroke.d.ts +0 -1
  56. package/dist/components/drawer/text-wrapper.d.ts +0 -10
  57. package/dist/components/drawer/text.d.ts +0 -3
  58. package/dist/components/ellipse.d.ts +0 -35
  59. package/dist/components/ellipse.js +0 -99
  60. package/dist/components/ellipse.js.map +0 -1
  61. package/dist/components/file/ondropfile.d.ts +0 -1
  62. package/dist/components/fit/fit.d.ts +0 -15
  63. package/dist/components/geometry/transcoord.d.ts +0 -41
  64. package/dist/components/geometry/union.d.ts +0 -6
  65. package/dist/components/gif-view.d.ts +0 -18
  66. package/dist/components/gif-view.js +0 -116
  67. package/dist/components/gif-view.js.map +0 -1
  68. package/dist/components/global-ref.d.ts +0 -36
  69. package/dist/components/global-ref.js +0 -128
  70. package/dist/components/global-ref.js.map +0 -1
  71. package/dist/components/group.d.ts +0 -15
  72. package/dist/components/group.js +0 -145
  73. package/dist/components/group.js.map +0 -1
  74. package/dist/components/html/elements.d.ts +0 -2
  75. package/dist/components/html/fill.d.ts +0 -1
  76. package/dist/components/html/reposition.d.ts +0 -1
  77. package/dist/components/html/shadow.d.ts +0 -1
  78. package/dist/components/html-overlay-container.d.ts +0 -27
  79. package/dist/components/html-overlay-container.js +0 -14
  80. package/dist/components/html-overlay-container.js.map +0 -1
  81. package/dist/components/html-overlay-element.d.ts +0 -25
  82. package/dist/components/html-overlay-element.js +0 -9
  83. package/dist/components/html-overlay-element.js.map +0 -1
  84. package/dist/components/image-view.d.ts +0 -19
  85. package/dist/components/image-view.js +0 -180
  86. package/dist/components/image-view.js.map +0 -1
  87. package/dist/components/index.d.ts +0 -32
  88. package/dist/components/index.js +0 -39
  89. package/dist/components/index.js.map +0 -1
  90. package/dist/components/info-window.d.ts +0 -41
  91. package/dist/components/info-window.js +0 -425
  92. package/dist/components/info-window.js.map +0 -1
  93. package/dist/components/line.d.ts +0 -91
  94. package/dist/components/line.js +0 -303
  95. package/dist/components/line.js.map +0 -1
  96. package/dist/components/local-ref.d.ts +0 -47
  97. package/dist/components/local-ref.js +0 -103
  98. package/dist/components/local-ref.js.map +0 -1
  99. package/dist/components/mixins/connectable.d.ts +0 -45
  100. package/dist/components/mixins/data-source.d.ts +0 -9
  101. package/dist/components/mixins/html-element.d.ts +0 -24
  102. package/dist/components/mixins/move-handle.d.ts +0 -11
  103. package/dist/components/mixins/rect-path.d.ts +0 -13
  104. package/dist/components/mixins/value-holder.d.ts +0 -18
  105. package/dist/components/mutater/bounds.d.ts +0 -10
  106. package/dist/components/mutater/path.d.ts +0 -5
  107. package/dist/components/ortholine.d.ts +0 -21
  108. package/dist/components/ortholine.js +0 -814
  109. package/dist/components/ortholine.js.map +0 -1
  110. package/dist/components/outline/ellipse-outline.d.ts +0 -4
  111. package/dist/components/outline/ellipse-outline.js +0 -11
  112. package/dist/components/outline/ellipse-outline.js.map +0 -1
  113. package/dist/components/outline/path-outline.d.ts +0 -1
  114. package/dist/components/path.d.ts +0 -5
  115. package/dist/components/path.js +0 -40
  116. package/dist/components/path.js.map +0 -1
  117. package/dist/components/polygon.d.ts +0 -40
  118. package/dist/components/polygon.js +0 -157
  119. package/dist/components/polygon.js.map +0 -1
  120. package/dist/components/polyline.d.ts +0 -18
  121. package/dist/components/polyline.js +0 -102
  122. package/dist/components/polyline.js.map +0 -1
  123. package/dist/components/popup.d.ts +0 -48
  124. package/dist/components/popup.js +0 -138
  125. package/dist/components/popup.js.map +0 -1
  126. package/dist/components/rect.d.ts +0 -26
  127. package/dist/components/rect.js +0 -91
  128. package/dist/components/rect.js.map +0 -1
  129. package/dist/components/retention/retention-manager.d.ts +0 -8
  130. package/dist/components/root-container.d.ts +0 -90
  131. package/dist/components/root-container.js +0 -478
  132. package/dist/components/root-container.js.map +0 -1
  133. package/dist/components/ruler.d.ts +0 -16
  134. package/dist/components/ruler.js +0 -77
  135. package/dist/components/ruler.js.map +0 -1
  136. package/dist/components/shape.d.ts +0 -25
  137. package/dist/components/shape.js +0 -80
  138. package/dist/components/shape.js.map +0 -1
  139. package/dist/components/star.d.ts +0 -13
  140. package/dist/components/star.js +0 -80
  141. package/dist/components/star.js.map +0 -1
  142. package/dist/components/text/substitutor.d.ts +0 -3
  143. package/dist/components/text.d.ts +0 -8
  144. package/dist/components/text.js +0 -15
  145. package/dist/components/text.js.map +0 -1
  146. package/dist/components/three-container.d.ts +0 -60
  147. package/dist/components/three-container.js +0 -515
  148. package/dist/components/three-container.js.map +0 -1
  149. package/dist/components/triangle.d.ts +0 -15
  150. package/dist/components/triangle.js +0 -76
  151. package/dist/components/triangle.js.map +0 -1
  152. package/dist/const.d.ts +0 -39
  153. package/dist/core/collection.d.ts +0 -8
  154. package/dist/core/debug.d.ts +0 -1
  155. package/dist/core/deep-equals.d.ts +0 -1
  156. package/dist/core/dom-to-image.d.ts +0 -127
  157. package/dist/core/event.d.ts +0 -92
  158. package/dist/core/index.d.ts +0 -2
  159. package/dist/core/list.d.ts +0 -32
  160. package/dist/core/logger.d.ts +0 -3
  161. package/dist/core/memoize.d.ts +0 -6
  162. package/dist/core/mixin.d.ts +0 -1
  163. package/dist/core/obj-accessor.d.ts +0 -1
  164. package/dist/core/reference-map.d.ts +0 -14
  165. package/dist/core/round-rect.d.ts +0 -19
  166. package/dist/core/script-loader.d.ts +0 -3
  167. package/dist/core/snapshot-taker.d.ts +0 -12
  168. package/dist/core/stack.d.ts +0 -2
  169. package/dist/core/timecapsule.d.ts +0 -18
  170. package/dist/core/utils.d.ts +0 -9
  171. package/dist/decorator/anchors-decorator.d.ts +0 -31
  172. package/dist/decorator/data-spread-decorator.d.ts +0 -1
  173. package/dist/decorator/decotag-decorator.d.ts +0 -1
  174. package/dist/decorator/index.d.ts +0 -2
  175. package/dist/decorator/link-decorator.d.ts +0 -1
  176. package/dist/effect/gradation.d.ts +0 -1
  177. package/dist/effect/index.d.ts +0 -1
  178. package/dist/effect/shadow.d.ts +0 -2
  179. package/dist/effect/turn.d.ts +0 -1
  180. package/dist/event/event-engine.d.ts +0 -12
  181. package/dist/event/event-pump.d.ts +0 -11
  182. package/dist/event/event-tracker.d.ts +0 -21
  183. package/dist/event/index.d.ts +0 -2
  184. package/dist/event/ua-event-handler.d.ts +0 -32
  185. package/dist/event-map/event-map.d.ts +0 -9
  186. package/dist/event-map/index.d.ts +0 -1
  187. package/dist/event-map/move-handler.d.ts +0 -1
  188. package/dist/event-map/text-editor-lite.d.ts +0 -1
  189. package/dist/index.d.ts +0 -1
  190. package/dist/index.js +0 -3
  191. package/dist/index.js.map +0 -1
  192. package/dist/layer/action/emphasize.d.ts +0 -2
  193. package/dist/layer/action/popup.d.ts +0 -5
  194. package/dist/layer/action/pressed.d.ts +0 -2
  195. package/dist/layer/add-layer.d.ts +0 -42
  196. package/dist/layer/add-layer.js +0 -142
  197. package/dist/layer/add-layer.js.map +0 -1
  198. package/dist/layer/decotag-layer.d.ts +0 -27
  199. package/dist/layer/decotag-layer.js +0 -105
  200. package/dist/layer/decotag-layer.js.map +0 -1
  201. package/dist/layer/guide-layer.d.ts +0 -44
  202. package/dist/layer/guide-layer.js +0 -261
  203. package/dist/layer/guide-layer.js.map +0 -1
  204. package/dist/layer/index.d.ts +0 -7
  205. package/dist/layer/index.js +0 -11
  206. package/dist/layer/index.js.map +0 -1
  207. package/dist/layer/layer.d.ts +0 -32
  208. package/dist/layer/layer.js +0 -155
  209. package/dist/layer/layer.js.map +0 -1
  210. package/dist/layer/model-layer.d.ts +0 -46
  211. package/dist/layer/model-layer.js +0 -402
  212. package/dist/layer/model-layer.js.map +0 -1
  213. package/dist/layer/modeler/anchor-handler.d.ts +0 -36
  214. package/dist/layer/modeler/control-handler.d.ts +0 -18
  215. package/dist/layer/modeler/focus-outline.d.ts +0 -5
  216. package/dist/layer/modeler/group-outline.d.ts +0 -5
  217. package/dist/layer/modeler/index.d.ts +0 -7
  218. package/dist/layer/modeler/path-handler.d.ts +0 -22
  219. package/dist/layer/modeler/resizer.d.ts +0 -13
  220. package/dist/layer/modeler/rotator.d.ts +0 -15
  221. package/dist/layer/modeler/rotator.js +0 -120
  222. package/dist/layer/modeler/rotator.js.map +0 -1
  223. package/dist/layer/modeling-layer.d.ts +0 -66
  224. package/dist/layer/modeling-layer.js +0 -451
  225. package/dist/layer/modeling-layer.js.map +0 -1
  226. package/dist/layer/selection/selected-finder.d.ts +0 -1
  227. package/dist/layer/selection-layer.d.ts +0 -42
  228. package/dist/layer/selection-layer.js +0 -307
  229. package/dist/layer/selection-layer.js.map +0 -1
  230. package/dist/layer/shift-layer.d.ts +0 -18
  231. package/dist/layer/shift-layer.js +0 -61
  232. package/dist/layer/shift-layer.js.map +0 -1
  233. package/dist/layout/absolute.d.ts +0 -8
  234. package/dist/layout/card.d.ts +0 -7
  235. package/dist/layout/html-absolute.d.ts +0 -8
  236. package/dist/layout/index.d.ts +0 -8
  237. package/dist/layout/index.js +0 -12
  238. package/dist/layout/index.js.map +0 -1
  239. package/dist/layout/layout.d.ts +0 -11
  240. package/dist/layout/linear-horizontal.d.ts +0 -7
  241. package/dist/layout/linear-vertical.d.ts +0 -7
  242. package/dist/layout/table.d.ts +0 -9
  243. package/dist/layout/three.d.ts +0 -8
  244. package/dist/layout/three.js +0 -20
  245. package/dist/layout/three.js.map +0 -1
  246. package/dist/license/license.d.ts +0 -18
  247. package/dist/model/compile.d.ts +0 -1
  248. package/dist/model/compile.js +0 -28
  249. package/dist/model/compile.js.map +0 -1
  250. package/dist/model/duplicate.d.ts +0 -1
  251. package/dist/model/index.d.ts +0 -3
  252. package/dist/model/selector.d.ts +0 -2
  253. package/dist/style/compile.d.ts +0 -1
  254. package/dist/style/index.d.ts +0 -1
  255. package/dist/things-scene/api/add-start.d.ts +0 -1
  256. package/dist/things-scene/api/add.d.ts +0 -5
  257. package/dist/things-scene/api/align.d.ts +0 -1
  258. package/dist/things-scene/api/change.d.ts +0 -2
  259. package/dist/things-scene/api/clipboard.d.ts +0 -3
  260. package/dist/things-scene/api/distribute.d.ts +0 -1
  261. package/dist/things-scene/api/duplicate.d.ts +0 -4
  262. package/dist/things-scene/api/fullscreen.d.ts +0 -1
  263. package/dist/things-scene/api/group.d.ts +0 -8
  264. package/dist/things-scene/api/group.js +0 -78
  265. package/dist/things-scene/api/group.js.map +0 -1
  266. package/dist/things-scene/api/ids.d.ts +0 -4
  267. package/dist/things-scene/api/index.d.ts +0 -15
  268. package/dist/things-scene/api/listener.d.ts +0 -3
  269. package/dist/things-scene/api/remove.d.ts +0 -4
  270. package/dist/things-scene/api/symmetry.d.ts +0 -2
  271. package/dist/things-scene/api/symmetry.js +0 -39
  272. package/dist/things-scene/api/symmetry.js.map +0 -1
  273. package/dist/things-scene/api/to-data-url.d.ts +0 -1
  274. package/dist/things-scene/api/to-data-url.js +0 -69
  275. package/dist/things-scene/api/to-data-url.js.map +0 -1
  276. package/dist/things-scene/api/zorder.d.ts +0 -2
  277. package/dist/things-scene/application-context.d.ts +0 -40
  278. package/dist/things-scene/config.d.ts +0 -4
  279. package/dist/things-scene/create.d.ts +0 -20
  280. package/dist/things-scene/fps.d.ts +0 -1
  281. package/dist/things-scene/index.d.ts +0 -17
  282. package/dist/things-scene/index.js +0 -23
  283. package/dist/things-scene/index.js.map +0 -1
  284. package/dist/things-scene/polyfill.d.ts +0 -2
  285. package/dist/things-scene/scene.d.ts +0 -155
  286. package/dist/things-scene/version.d.ts +0 -2
  287. package/dist/threed/common.d.ts +0 -22
  288. package/dist/threed/control/three-controls.d.ts +0 -11
  289. package/dist/threed/control/three-controls.js +0 -620
  290. package/dist/threed/control/three-controls.js.map +0 -1
  291. package/dist/threed/html/elements.d.ts +0 -2
  292. package/dist/threed/real-object-camera-meshed.d.ts +0 -12
  293. package/dist/threed/real-object-camera-meshed.js +0 -49
  294. package/dist/threed/real-object-camera-meshed.js.map +0 -1
  295. package/dist/threed/real-object-camera.d.ts +0 -9
  296. package/dist/threed/real-object-camera.js +0 -31
  297. package/dist/threed/real-object-camera.js.map +0 -1
  298. package/dist/threed/real-object-dom-element.d.ts +0 -20
  299. package/dist/threed/real-object-dom-element.js +0 -78
  300. package/dist/threed/real-object-dom-element.js.map +0 -1
  301. package/dist/threed/real-object-dummy.d.ts +0 -6
  302. package/dist/threed/real-object-dummy.js +0 -11
  303. package/dist/threed/real-object-dummy.js.map +0 -1
  304. package/dist/threed/real-object-extrude.d.ts +0 -19
  305. package/dist/threed/real-object-extrude.js +0 -171
  306. package/dist/threed/real-object-extrude.js.map +0 -1
  307. package/dist/threed/real-object-gltf.d.ts +0 -15
  308. package/dist/threed/real-object-gltf.js +0 -97
  309. package/dist/threed/real-object-gltf.js.map +0 -1
  310. package/dist/threed/real-object-group.d.ts +0 -5
  311. package/dist/threed/real-object-group.js +0 -11
  312. package/dist/threed/real-object-group.js.map +0 -1
  313. package/dist/threed/real-object-mesh.d.ts +0 -11
  314. package/dist/threed/real-object-mesh.js +0 -55
  315. package/dist/threed/real-object-mesh.js.map +0 -1
  316. package/dist/threed/real-object-plane.d.ts +0 -6
  317. package/dist/threed/real-object-plane.js +0 -23
  318. package/dist/threed/real-object-plane.js.map +0 -1
  319. package/dist/threed/real-object-scene.d.ts +0 -21
  320. package/dist/threed/real-object-scene.js +0 -89
  321. package/dist/threed/real-object-scene.js.map +0 -1
  322. package/dist/threed/real-object-sprite.d.ts +0 -12
  323. package/dist/threed/real-object-sprite.js +0 -35
  324. package/dist/threed/real-object-sprite.js.map +0 -1
  325. package/dist/threed/real-object-text.d.ts +0 -16
  326. package/dist/threed/real-object-text.js +0 -70
  327. package/dist/threed/real-object-text.js.map +0 -1
  328. package/dist/threed/real-object.d.ts +0 -48
  329. package/dist/threed/real-object.js +0 -199
  330. package/dist/threed/real-object.js.map +0 -1
  331. package/dist/threed/texture/text-texture.d.ts +0 -8
  332. package/dist/threed/three-dimensional-container.d.ts +0 -7
  333. package/dist/threed/three-dimensional-container.js +0 -2
  334. package/dist/threed/three-dimensional-container.js.map +0 -1
  335. package/dist/threed/utils/bound-uv-generator.d.ts +0 -16
  336. package/dist/types.d.ts +0 -53
  337. package/dist/types.js +0 -368
  338. package/dist/types.js.map +0 -1
  339. package/schema.gql +0 -3753
@@ -1 +0,0 @@
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"]}
@@ -1,4 +0,0 @@
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;
@@ -1,11 +0,0 @@
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
@@ -1 +0,0 @@
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"]}
@@ -1 +0,0 @@
1
- export default function pathOutline(component: any, progress: any): any;
@@ -1,5 +0,0 @@
1
- export default class Path extends Component {
2
- set path(arg: any);
3
- get path(): any;
4
- }
5
- import Component from "./component";
@@ -1,40 +0,0 @@
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
@@ -1 +0,0 @@
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"]}
@@ -1,40 +0,0 @@
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
- }
@@ -1,157 +0,0 @@
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
@@ -1 +0,0 @@
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"]}
@@ -1,18 +0,0 @@
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
- }
@@ -1,102 +0,0 @@
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
@@ -1 +0,0 @@
1
- {"version":3,"file":"polyline.js","sourceRoot":"","sources":["../../src/components/polyline.ts"],"names":[],"mappings":"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","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"]}
@@ -1,48 +0,0 @@
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 {};