@hatiolab/things-scene 9.0.0-beta.36 → 9.0.0-beta.37

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (397) hide show
  1. package/package.json +1 -1
  2. package/things-scene-min.js +11 -11
  3. package/things-scene-min.js.map +1 -1
  4. package/things-scene.mjs +11 -11
  5. package/things-scene.mjs.map +1 -1
  6. package/.cursorignore +0 -62
  7. package/.prettierrc +0 -21
  8. package/assets/icon-audio.png +0 -0
  9. package/assets/icon-gif-viewer.png +0 -0
  10. package/assets/images/spinner.png +0 -0
  11. package/babel.config.js +0 -23
  12. package/db.sqlite +0 -0
  13. package/dist/animation/animate.js +0 -63
  14. package/dist/animation/animate.js.map +0 -1
  15. package/dist/animation/animations/animation.js +0 -122
  16. package/dist/animation/animations/animation.js.map +0 -1
  17. package/dist/animation/animations/fade.js +0 -28
  18. package/dist/animation/animations/fade.js.map +0 -1
  19. package/dist/animation/animations/heartbeat.js +0 -28
  20. package/dist/animation/animations/heartbeat.js.map +0 -1
  21. package/dist/animation/animations/moving.js +0 -24
  22. package/dist/animation/animations/moving.js.map +0 -1
  23. package/dist/animation/animations/outline.js +0 -47
  24. package/dist/animation/animations/outline.js.map +0 -1
  25. package/dist/animation/animations/rotation.js +0 -22
  26. package/dist/animation/animations/rotation.js.map +0 -1
  27. package/dist/animation/animations/vibration.js +0 -31
  28. package/dist/animation/animations/vibration.js.map +0 -1
  29. package/dist/animation/compile.js +0 -31
  30. package/dist/animation/compile.js.map +0 -1
  31. package/dist/animation/delta.js +0 -51
  32. package/dist/animation/delta.js.map +0 -1
  33. package/dist/animation/index.js +0 -14
  34. package/dist/animation/index.js.map +0 -1
  35. package/dist/command/command-change.js +0 -33
  36. package/dist/command/command-change.js.map +0 -1
  37. package/dist/command/command-migrate.js +0 -103
  38. package/dist/command/command-migrate.js.map +0 -1
  39. package/dist/command/command.js +0 -18
  40. package/dist/command/command.js.map +0 -1
  41. package/dist/command/snapshot-commander.js +0 -84
  42. package/dist/command/snapshot-commander.js.map +0 -1
  43. package/dist/components/anchor/anchor.js +0 -105
  44. package/dist/components/anchor/anchor.js.map +0 -1
  45. package/dist/components/anchor/ellipse-anchors.js +0 -53
  46. package/dist/components/anchor/ellipse-anchors.js.map +0 -1
  47. package/dist/components/anchor/rect-anchors.js +0 -53
  48. package/dist/components/anchor/rect-anchors.js.map +0 -1
  49. package/dist/components/audio.js +0 -154
  50. package/dist/components/audio.js.map +0 -1
  51. package/dist/components/cloud.js +0 -44
  52. package/dist/components/cloud.js.map +0 -1
  53. package/dist/components/component.js +0 -1086
  54. package/dist/components/component.js.map +0 -1
  55. package/dist/components/container-abstract.js +0 -387
  56. package/dist/components/container-abstract.js.map +0 -1
  57. package/dist/components/container.js +0 -331
  58. package/dist/components/container.js.map +0 -1
  59. package/dist/components/data/data-mapping.js +0 -82
  60. package/dist/components/data/data-mapping.js.map +0 -1
  61. package/dist/components/data/data.js +0 -166
  62. package/dist/components/data/data.js.map +0 -1
  63. package/dist/components/data/evaluator.js +0 -103
  64. package/dist/components/data/evaluator.js.map +0 -1
  65. package/dist/components/donut.js +0 -104
  66. package/dist/components/donut.js.map +0 -1
  67. package/dist/components/drawer/draw-image-pendable.js +0 -20
  68. package/dist/components/drawer/draw-image-pendable.js.map +0 -1
  69. package/dist/components/drawer/effect.js +0 -19
  70. package/dist/components/drawer/effect.js.map +0 -1
  71. package/dist/components/drawer/fill.js +0 -228
  72. package/dist/components/drawer/fill.js.map +0 -1
  73. package/dist/components/drawer/format.js +0 -115
  74. package/dist/components/drawer/format.js.map +0 -1
  75. package/dist/components/drawer/line.js +0 -191
  76. package/dist/components/drawer/line.js.map +0 -1
  77. package/dist/components/drawer/stroke.js +0 -62
  78. package/dist/components/drawer/stroke.js.map +0 -1
  79. package/dist/components/drawer/text-wrapper.js +0 -51
  80. package/dist/components/drawer/text-wrapper.js.map +0 -1
  81. package/dist/components/drawer/text.js +0 -269
  82. package/dist/components/drawer/text.js.map +0 -1
  83. package/dist/components/ellipse.js +0 -110
  84. package/dist/components/ellipse.js.map +0 -1
  85. package/dist/components/file/ondropfile.js +0 -19
  86. package/dist/components/file/ondropfile.js.map +0 -1
  87. package/dist/components/fit/fit.js +0 -137
  88. package/dist/components/fit/fit.js.map +0 -1
  89. package/dist/components/geometry/transcoord.js +0 -339
  90. package/dist/components/geometry/transcoord.js.map +0 -1
  91. package/dist/components/geometry/union.js +0 -35
  92. package/dist/components/geometry/union.js.map +0 -1
  93. package/dist/components/gif-view.js +0 -128
  94. package/dist/components/gif-view.js.map +0 -1
  95. package/dist/components/global-ref.js +0 -154
  96. package/dist/components/global-ref.js.map +0 -1
  97. package/dist/components/group.js +0 -171
  98. package/dist/components/group.js.map +0 -1
  99. package/dist/components/html/elements.js +0 -24
  100. package/dist/components/html/elements.js.map +0 -1
  101. package/dist/components/html/fill.js +0 -126
  102. package/dist/components/html/fill.js.map +0 -1
  103. package/dist/components/html/reposition.js +0 -119
  104. package/dist/components/html/reposition.js.map +0 -1
  105. package/dist/components/html/shadow.js +0 -24
  106. package/dist/components/html/shadow.js.map +0 -1
  107. package/dist/components/html-overlay-container.js +0 -27
  108. package/dist/components/html-overlay-container.js.map +0 -1
  109. package/dist/components/html-overlay-element.js +0 -22
  110. package/dist/components/html-overlay-element.js.map +0 -1
  111. package/dist/components/image-view.js +0 -193
  112. package/dist/components/image-view.js.map +0 -1
  113. package/dist/components/index.js +0 -231
  114. package/dist/components/index.js.map +0 -1
  115. package/dist/components/info-window.js +0 -416
  116. package/dist/components/info-window.js.map +0 -1
  117. package/dist/components/line.js +0 -374
  118. package/dist/components/line.js.map +0 -1
  119. package/dist/components/local-ref.js +0 -114
  120. package/dist/components/local-ref.js.map +0 -1
  121. package/dist/components/mixins/connectable.js +0 -128
  122. package/dist/components/mixins/connectable.js.map +0 -1
  123. package/dist/components/mixins/data-source.js +0 -34
  124. package/dist/components/mixins/data-source.js.map +0 -1
  125. package/dist/components/mixins/html-element.js +0 -107
  126. package/dist/components/mixins/html-element.js.map +0 -1
  127. package/dist/components/mixins/move-handle.js +0 -73
  128. package/dist/components/mixins/move-handle.js.map +0 -1
  129. package/dist/components/mixins/rect-path.js +0 -113
  130. package/dist/components/mixins/rect-path.js.map +0 -1
  131. package/dist/components/mixins/value-holder.js +0 -81
  132. package/dist/components/mixins/value-holder.js.map +0 -1
  133. package/dist/components/mutater/bounds.js +0 -68
  134. package/dist/components/mutater/bounds.js.map +0 -1
  135. package/dist/components/mutater/path.js +0 -73
  136. package/dist/components/mutater/path.js.map +0 -1
  137. package/dist/components/ortholine.js +0 -763
  138. package/dist/components/ortholine.js.map +0 -1
  139. package/dist/components/outline/ellipse-outline.js +0 -23
  140. package/dist/components/outline/ellipse-outline.js.map +0 -1
  141. package/dist/components/outline/path-outline.js +0 -48
  142. package/dist/components/outline/path-outline.js.map +0 -1
  143. package/dist/components/path.js +0 -49
  144. package/dist/components/path.js.map +0 -1
  145. package/dist/components/polygon.js +0 -91
  146. package/dist/components/polygon.js.map +0 -1
  147. package/dist/components/polyline.js +0 -114
  148. package/dist/components/polyline.js.map +0 -1
  149. package/dist/components/popup.js +0 -160
  150. package/dist/components/popup.js.map +0 -1
  151. package/dist/components/rect.js +0 -72
  152. package/dist/components/rect.js.map +0 -1
  153. package/dist/components/retention/retention-manager.js +0 -81
  154. package/dist/components/retention/retention-manager.js.map +0 -1
  155. package/dist/components/root-container.js +0 -519
  156. package/dist/components/root-container.js.map +0 -1
  157. package/dist/components/ruler.js +0 -103
  158. package/dist/components/ruler.js.map +0 -1
  159. package/dist/components/shape.js +0 -97
  160. package/dist/components/shape.js.map +0 -1
  161. package/dist/components/star.js +0 -103
  162. package/dist/components/star.js.map +0 -1
  163. package/dist/components/text/substitutor.js +0 -92
  164. package/dist/components/text/substitutor.js.map +0 -1
  165. package/dist/components/text.js +0 -21
  166. package/dist/components/text.js.map +0 -1
  167. package/dist/components/triangle.js +0 -92
  168. package/dist/components/triangle.js.map +0 -1
  169. package/dist/const.js +0 -71
  170. package/dist/const.js.map +0 -1
  171. package/dist/core/collection.js +0 -28
  172. package/dist/core/collection.js.map +0 -1
  173. package/dist/core/debug.js +0 -12
  174. package/dist/core/debug.js.map +0 -1
  175. package/dist/core/deep-equals.js +0 -112
  176. package/dist/core/deep-equals.js.map +0 -1
  177. package/dist/core/dom-to-image.js +0 -617
  178. package/dist/core/dom-to-image.js.map +0 -1
  179. package/dist/core/event.js +0 -205
  180. package/dist/core/event.js.map +0 -1
  181. package/dist/core/index.js +0 -21
  182. package/dist/core/index.js.map +0 -1
  183. package/dist/core/list.js +0 -87
  184. package/dist/core/list.js.map +0 -1
  185. package/dist/core/logger.js +0 -29
  186. package/dist/core/logger.js.map +0 -1
  187. package/dist/core/memoize.js +0 -40
  188. package/dist/core/memoize.js.map +0 -1
  189. package/dist/core/mixin.js +0 -26
  190. package/dist/core/mixin.js.map +0 -1
  191. package/dist/core/obj-accessor.js +0 -26
  192. package/dist/core/obj-accessor.js.map +0 -1
  193. package/dist/core/reference-map.js +0 -147
  194. package/dist/core/reference-map.js.map +0 -1
  195. package/dist/core/round-rect.js +0 -62
  196. package/dist/core/round-rect.js.map +0 -1
  197. package/dist/core/safe-round.js +0 -10
  198. package/dist/core/safe-round.js.map +0 -1
  199. package/dist/core/script-loader.js +0 -148
  200. package/dist/core/script-loader.js.map +0 -1
  201. package/dist/core/snapshot-taker.js +0 -59
  202. package/dist/core/snapshot-taker.js.map +0 -1
  203. package/dist/core/stack.js +0 -18
  204. package/dist/core/stack.js.map +0 -1
  205. package/dist/core/timecapsule.js +0 -88
  206. package/dist/core/timecapsule.js.map +0 -1
  207. package/dist/core/utils.js +0 -309
  208. package/dist/core/utils.js.map +0 -1
  209. package/dist/decorator/anchors-decorator.js +0 -53
  210. package/dist/decorator/anchors-decorator.js.map +0 -1
  211. package/dist/decorator/bouncing-arrow-decorator.js +0 -52
  212. package/dist/decorator/bouncing-arrow-decorator.js.map +0 -1
  213. package/dist/decorator/data-spread-decorator.js +0 -69
  214. package/dist/decorator/data-spread-decorator.js.map +0 -1
  215. package/dist/decorator/decotag-decorator.js +0 -33
  216. package/dist/decorator/decotag-decorator.js.map +0 -1
  217. package/dist/decorator/index.js +0 -31
  218. package/dist/decorator/index.js.map +0 -1
  219. package/dist/decorator/link-decorator.js +0 -66
  220. package/dist/decorator/link-decorator.js.map +0 -1
  221. package/dist/effect/gradation.js +0 -37
  222. package/dist/effect/gradation.js.map +0 -1
  223. package/dist/effect/index.js +0 -23
  224. package/dist/effect/index.js.map +0 -1
  225. package/dist/effect/shadow.js +0 -33
  226. package/dist/effect/shadow.js.map +0 -1
  227. package/dist/effect/turn.js +0 -25
  228. package/dist/effect/turn.js.map +0 -1
  229. package/dist/event/event-engine.js +0 -76
  230. package/dist/event/event-engine.js.map +0 -1
  231. package/dist/event/event-pump.js +0 -92
  232. package/dist/event/event-pump.js.map +0 -1
  233. package/dist/event/event-tracker.js +0 -97
  234. package/dist/event/event-tracker.js.map +0 -1
  235. package/dist/event/index.js +0 -21
  236. package/dist/event/index.js.map +0 -1
  237. package/dist/event/ua-event-handler.js +0 -453
  238. package/dist/event/ua-event-handler.js.map +0 -1
  239. package/dist/event-map/animator-handler.js +0 -225
  240. package/dist/event-map/animator-handler.js.map +0 -1
  241. package/dist/event-map/animators/animated-icon.js +0 -265
  242. package/dist/event-map/animators/animated-icon.js.map +0 -1
  243. package/dist/event-map/animators/border-highlighting.js +0 -476
  244. package/dist/event-map/animators/border-highlighting.js.map +0 -1
  245. package/dist/event-map/animators/bouncing-arrow.js +0 -226
  246. package/dist/event-map/animators/bouncing-arrow.js.map +0 -1
  247. package/dist/event-map/event-map.js +0 -36
  248. package/dist/event-map/event-map.js.map +0 -1
  249. package/dist/event-map/index.js +0 -20
  250. package/dist/event-map/index.js.map +0 -1
  251. package/dist/event-map/move-handler.js +0 -233
  252. package/dist/event-map/move-handler.js.map +0 -1
  253. package/dist/event-map/paste-handler.js +0 -176
  254. package/dist/event-map/paste-handler.js.map +0 -1
  255. package/dist/event-map/shift-handler.js +0 -55
  256. package/dist/event-map/shift-handler.js.map +0 -1
  257. package/dist/event-map/text-editor-lite.js +0 -276
  258. package/dist/event-map/text-editor-lite.js.map +0 -1
  259. package/dist/event-map/zoom-handler.js +0 -49
  260. package/dist/event-map/zoom-handler.js.map +0 -1
  261. package/dist/index.js +0 -20
  262. package/dist/index.js.map +0 -1
  263. package/dist/layer/action/emphasize.js +0 -42
  264. package/dist/layer/action/emphasize.js.map +0 -1
  265. package/dist/layer/action/popup.js +0 -461
  266. package/dist/layer/action/popup.js.map +0 -1
  267. package/dist/layer/action/pressed.js +0 -31
  268. package/dist/layer/action/pressed.js.map +0 -1
  269. package/dist/layer/add-layer.js +0 -180
  270. package/dist/layer/add-layer.js.map +0 -1
  271. package/dist/layer/decotag-layer.js +0 -121
  272. package/dist/layer/decotag-layer.js.map +0 -1
  273. package/dist/layer/guide-layer.js +0 -292
  274. package/dist/layer/guide-layer.js.map +0 -1
  275. package/dist/layer/index.js +0 -70
  276. package/dist/layer/index.js.map +0 -1
  277. package/dist/layer/layer.js +0 -230
  278. package/dist/layer/layer.js.map +0 -1
  279. package/dist/layer/minimap-layer.js +0 -84
  280. package/dist/layer/minimap-layer.js.map +0 -1
  281. package/dist/layer/model-layer.js +0 -465
  282. package/dist/layer/model-layer.js.map +0 -1
  283. package/dist/layer/modeler/anchor-handler.js +0 -193
  284. package/dist/layer/modeler/anchor-handler.js.map +0 -1
  285. package/dist/layer/modeler/control-handler.js +0 -95
  286. package/dist/layer/modeler/control-handler.js.map +0 -1
  287. package/dist/layer/modeler/focus-outline.js +0 -41
  288. package/dist/layer/modeler/focus-outline.js.map +0 -1
  289. package/dist/layer/modeler/group-outline.js +0 -30
  290. package/dist/layer/modeler/group-outline.js.map +0 -1
  291. package/dist/layer/modeler/index.js +0 -56
  292. package/dist/layer/modeler/index.js.map +0 -1
  293. package/dist/layer/modeler/path-handler.js +0 -300
  294. package/dist/layer/modeler/path-handler.js.map +0 -1
  295. package/dist/layer/modeler/resizer.js +0 -333
  296. package/dist/layer/modeler/resizer.js.map +0 -1
  297. package/dist/layer/modeler/rotator.js +0 -134
  298. package/dist/layer/modeler/rotator.js.map +0 -1
  299. package/dist/layer/modeling-layer.js +0 -491
  300. package/dist/layer/modeling-layer.js.map +0 -1
  301. package/dist/layer/reaction-layer.js +0 -111
  302. package/dist/layer/reaction-layer.js.map +0 -1
  303. package/dist/layer/scroll-layer.js +0 -191
  304. package/dist/layer/scroll-layer.js.map +0 -1
  305. package/dist/layer/selection/selected-finder.js +0 -96
  306. package/dist/layer/selection/selected-finder.js.map +0 -1
  307. package/dist/layer/selection-layer.js +0 -373
  308. package/dist/layer/selection-layer.js.map +0 -1
  309. package/dist/layer/shift-layer.js +0 -83
  310. package/dist/layer/shift-layer.js.map +0 -1
  311. package/dist/layout/absolute.js +0 -30
  312. package/dist/layout/absolute.js.map +0 -1
  313. package/dist/layout/card.js +0 -52
  314. package/dist/layout/card.js.map +0 -1
  315. package/dist/layout/html-absolute.js +0 -32
  316. package/dist/layout/html-absolute.js.map +0 -1
  317. package/dist/layout/index.js +0 -56
  318. package/dist/layout/index.js.map +0 -1
  319. package/dist/layout/layout.js +0 -36
  320. package/dist/layout/layout.js.map +0 -1
  321. package/dist/layout/linear-horizontal.js +0 -56
  322. package/dist/layout/linear-horizontal.js.map +0 -1
  323. package/dist/layout/linear-vertical.js +0 -56
  324. package/dist/layout/linear-vertical.js.map +0 -1
  325. package/dist/layout/table.js +0 -106
  326. package/dist/layout/table.js.map +0 -1
  327. package/dist/license/license.js +0 -170
  328. package/dist/license/license.js.map +0 -1
  329. package/dist/model/compile.js +0 -40
  330. package/dist/model/compile.js.map +0 -1
  331. package/dist/model/duplicate.js +0 -19
  332. package/dist/model/duplicate.js.map +0 -1
  333. package/dist/model/index.js +0 -34
  334. package/dist/model/index.js.map +0 -1
  335. package/dist/model/selector.js +0 -104
  336. package/dist/model/selector.js.map +0 -1
  337. package/dist/style/compile.js +0 -14
  338. package/dist/style/compile.js.map +0 -1
  339. package/dist/style/index.js +0 -14
  340. package/dist/style/index.js.map +0 -1
  341. package/dist/things-scene/api/add-start.js +0 -18
  342. package/dist/things-scene/api/add-start.js.map +0 -1
  343. package/dist/things-scene/api/add.js +0 -71
  344. package/dist/things-scene/api/add.js.map +0 -1
  345. package/dist/things-scene/api/align.js +0 -116
  346. package/dist/things-scene/api/align.js.map +0 -1
  347. package/dist/things-scene/api/center-to.js +0 -50
  348. package/dist/things-scene/api/center-to.js.map +0 -1
  349. package/dist/things-scene/api/change.js +0 -27
  350. package/dist/things-scene/api/change.js.map +0 -1
  351. package/dist/things-scene/api/clipboard.js +0 -45
  352. package/dist/things-scene/api/clipboard.js.map +0 -1
  353. package/dist/things-scene/api/distribute.js +0 -57
  354. package/dist/things-scene/api/distribute.js.map +0 -1
  355. package/dist/things-scene/api/duplicate.js +0 -47
  356. package/dist/things-scene/api/duplicate.js.map +0 -1
  357. package/dist/things-scene/api/fullscreen.js +0 -26
  358. package/dist/things-scene/api/fullscreen.js.map +0 -1
  359. package/dist/things-scene/api/group.js +0 -91
  360. package/dist/things-scene/api/group.js.map +0 -1
  361. package/dist/things-scene/api/ids.js +0 -28
  362. package/dist/things-scene/api/ids.js.map +0 -1
  363. package/dist/things-scene/api/index.js +0 -192
  364. package/dist/things-scene/api/index.js.map +0 -1
  365. package/dist/things-scene/api/listener.js +0 -69
  366. package/dist/things-scene/api/listener.js.map +0 -1
  367. package/dist/things-scene/api/paste-start.js +0 -27
  368. package/dist/things-scene/api/paste-start.js.map +0 -1
  369. package/dist/things-scene/api/place.js +0 -98
  370. package/dist/things-scene/api/place.js.map +0 -1
  371. package/dist/things-scene/api/remove.js +0 -57
  372. package/dist/things-scene/api/remove.js.map +0 -1
  373. package/dist/things-scene/api/symmetry.js +0 -47
  374. package/dist/things-scene/api/symmetry.js.map +0 -1
  375. package/dist/things-scene/api/to-data-url.js +0 -76
  376. package/dist/things-scene/api/to-data-url.js.map +0 -1
  377. package/dist/things-scene/api/zorder.js +0 -68
  378. package/dist/things-scene/api/zorder.js.map +0 -1
  379. package/dist/things-scene/application-context.js +0 -168
  380. package/dist/things-scene/application-context.js.map +0 -1
  381. package/dist/things-scene/config.js +0 -18
  382. package/dist/things-scene/config.js.map +0 -1
  383. package/dist/things-scene/create.js +0 -67
  384. package/dist/things-scene/create.js.map +0 -1
  385. package/dist/things-scene/fps.js +0 -26
  386. package/dist/things-scene/fps.js.map +0 -1
  387. package/dist/things-scene/index.js +0 -152
  388. package/dist/things-scene/index.js.map +0 -1
  389. package/dist/things-scene/polyfill.js +0 -111
  390. package/dist/things-scene/polyfill.js.map +0 -1
  391. package/dist/things-scene/scene.js +0 -442
  392. package/dist/things-scene/scene.js.map +0 -1
  393. package/dist/things-scene/version.js +0 -12
  394. package/dist/things-scene/version.js.map +0 -1
  395. package/rollup.config.js +0 -67
  396. package/schema.graphql +0 -4606
  397. package/tsconfig.json +0 -31
@@ -1,339 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.transcoordC2S = transcoordC2S;
7
- exports.transcoordP2S = transcoordP2S;
8
- exports.transcoordR = transcoordR;
9
- exports.transcoordRR = transcoordRR;
10
- exports.transcoordS2C = transcoordS2C;
11
- exports.transcoordS2O = transcoordS2O;
12
- exports.transcoordS2P = transcoordS2P;
13
- exports.transcoordS2T = transcoordS2T;
14
- exports.transcoordS2TR = transcoordS2TR;
15
- exports.transcoordT2P = transcoordT2P;
16
- exports.transcoordT2S = transcoordT2S;
17
- /*
18
- * Copyright © HatioLab Inc. All rights reserved.
19
- */
20
-
21
- /*
22
- * 좌표 변환 API.
23
- */
24
-
25
- /*
26
- * transcoordR은 부모 기준의 좌표를, 자신의 회전각을 감안하여 부모의 원점을 이동시킨 후의 좌표값으로 변환하는 기능.
27
- * (기존의 transcoord와 동일함 - R은 Rotation을 의미함.)
28
- */
29
- function transcoordR(x, y, rotatePoint = {
30
- x: 0,
31
- y: 0
32
- }, rotation = 0, scale = {
33
- x: 1,
34
- y: 1
35
- }) {
36
- const cos = Math.cos(-rotation);
37
- const sin = Math.sin(-rotation);
38
- x -= rotatePoint.x;
39
- y -= rotatePoint.y;
40
- return {
41
- x: (x * cos - y * sin + rotatePoint.x) / scale.x,
42
- y: (x * sin + y * cos + rotatePoint.y) / scale.y
43
- };
44
- }
45
-
46
- /*
47
- * transcoordRR은 자신의 회전각을 감안하여 부모의 원점을 이동시킨 상태의 좌표값을 (반대로 회전시켜서)
48
- * 부모 원점 기준의 좌표로 변환하는 기능.
49
- * (기존의 reverseTranscoord와 동일함 - RR은 Reverse Rotation을 의미함.)
50
- */
51
- function transcoordRR(x, y, rotatePoint = {
52
- x: 0,
53
- y: 0
54
- }, rotation = 0, scale = {
55
- x: 1,
56
- y: 1
57
- }) {
58
- const cos = Math.cos(rotation);
59
- const sin = Math.sin(rotation);
60
- x -= rotatePoint.x;
61
- y -= rotatePoint.y;
62
- return {
63
- x: (x * cos - y * sin + rotatePoint.x) * scale.x,
64
- y: (x * sin + y * cos + rotatePoint.y) * scale.y
65
- };
66
- }
67
-
68
- /*
69
- * transcoordP2S는 부모(Parent) 컨테이너 기준의 논리좌표를 현재 컴포넌트(Self) 기준의 논리좌표로 변환한다.
70
- */
71
- function transcoordP2S(x, y, rotatePoint) {
72
- // 1. 최상위 루트 컴포넌트이면, 변환하지 않는다.
73
- if (!this.parent) return {
74
- x,
75
- y
76
- };
77
- const {
78
- rotation = 0,
79
- scale = {
80
- x: 1,
81
- y: 1
82
- }
83
- } = this.state;
84
-
85
- // 2. Canvas를 가진 레이어 모델이면
86
- if (this.isLayer()) {
87
- const translate = this.state.translate;
88
- let point = transcoordR(x, y, translate, rotation, scale);
89
- if (translate) {
90
- point.x -= translate.x / scale.x;
91
- point.y -= translate.y / scale.y;
92
- }
93
- return point;
94
- }
95
-
96
- // 3. 그 외..
97
- rotatePoint = rotatePoint || this.rotatePoint;
98
- const point = transcoordR(x, y, rotatePoint, rotation, scale);
99
-
100
- // 4. 컴포넌트별 스케일에 대한 처리
101
- // TODO 컴포넌트별 스케이 처리가 미진함. 정리할 것.(또는, 지원하지 말것.)
102
- return {
103
- x: point.x + (rotatePoint.x - rotatePoint.x / scale.x),
104
- y: point.y + (rotatePoint.y - rotatePoint.y / scale.y)
105
- };
106
- }
107
-
108
- /*
109
- * transcoordS2P는 현재 컴포넌트(Self) 기준의 논리좌표를 부모(Parent) 컨테이너 기준의 논리좌표로 변환한다.
110
- */
111
- function transcoordS2P(x, y, rotatePoint) {
112
- // 1. 최상위 루트 컴포넌트이면, 변환하지 않는다.
113
- if (!this.parent) return {
114
- x,
115
- y
116
- };
117
- let {
118
- rotation = 0,
119
- scale = {
120
- x: 1,
121
- y: 1
122
- }
123
- } = this.state;
124
-
125
- // 2. Canvas를 가진 레이어 모델이면
126
- if (this.isLayer()) {
127
- const translate = this.state.translate;
128
- let point = transcoordRR(x, y, undefined, rotation + this._delta.theta, scale);
129
- if (translate) {
130
- point.x += translate.x;
131
- point.y += translate.y;
132
- }
133
- return point;
134
- }
135
-
136
- // 3. 그 외..
137
- rotatePoint = rotatePoint || this.rotatePoint;
138
- const {
139
- theta = 0,
140
- tx = 0,
141
- ty = 0,
142
- sx = 1,
143
- sy = 1
144
- } = this._delta || {};
145
- rotatePoint = {
146
- x: rotatePoint.x + tx,
147
- y: rotatePoint.y + ty
148
- };
149
- scale = {
150
- x: scale.x * sx,
151
- y: scale.y * sy
152
- };
153
- const point = transcoordRR(x + tx, y + ty, rotatePoint, rotation + theta, scale);
154
-
155
- // 4. 컴포넌트별 스케일에 대한 처리
156
- // TODO 컴포넌트별 스케일 처리가 미진함. 정리할 것.(또는, 지원하지 말것.)
157
- return {
158
- x: point.x - (rotatePoint.x * scale.x - rotatePoint.x),
159
- y: point.y - (rotatePoint.y * scale.y - rotatePoint.y)
160
- };
161
- }
162
-
163
- /*
164
- * transcoordS2TR는 현재 컴포넌트(Self) 기준의 논리좌표를 TOP 모델 컨테이너 기준의 논리좌표로 변환한 후에,
165
- * 루트의 회전까지만 감안한다.
166
- * 현재 컴포넌트 기준의 논리좌표에 해당하는 포인트가 화면상의 특정 영역에 포함되는지 비교할 때 사용할 수 있다.
167
- */
168
- function transcoordS2TR(x, y, top) {
169
- top = top || this.rootModel;
170
- const point = this.transcoordS2T(x, y, top);
171
- return transcoordRR(point.x, point.y, undefined, (top.get('rotation') || 0) + top._delta.theta);
172
- }
173
-
174
- /*
175
- * transcoordS2T는 현재 컴포넌트(Self) 기준의 논리좌표를 TOP 모델 컨테이너 기준의 논리좌표로 변환한다.
176
- */
177
- function transcoordS2T(x, y, top) {
178
- // 1. 자신으로부터 TOP 모델 컨테이너까지의 조상 계보를 구한다.
179
- // 2. 주어진 좌표에 대해서 자신 컴포넌트의 회전과 스케일을 감안한 리버스를 수행하여 부모 컨테이너의 TOP-LEFT를 원점으로 하는 좌표로 변환한다.
180
- // 3. 부모 컨테이너 기준의 좌표로 변환하기 위해서 부모의 바운드의 TOP-LEFT만큼의 시프트를 해준다.
181
- // 4. 시프트된 포인트에 대해서 부모 컨테이너의 리버스를 수행한 결과를 TOP 바로 하위까지 반복한다.
182
-
183
- top = top || this.rootModel;
184
- const ancestors = [];
185
- for (let parent = this.parent; parent && parent !== top; parent = parent.parent) ancestors.push(parent);
186
- let point = this.transcoordS2P(x, y);
187
- ancestors.forEach(parent => {
188
- const {
189
- scale
190
- } = parent.model;
191
- const bounds = parent.bounds;
192
- if (scale) {
193
- /* TODO 스케일이 있는 경우에 대해서 구현하시오. 아래 로직은 맞지 않음 */
194
- const rotatePoint = parent.rotatePoint;
195
- point.x += (rotatePoint.x - bounds.left) * scale.x;
196
- point.y += (rotatePoint.y - bounds.top) * scale.y;
197
- } else {
198
- point.x += bounds.left;
199
- point.y += bounds.top;
200
- }
201
- point = parent.transcoordS2P(point.x, point.y);
202
- });
203
- return point;
204
- }
205
-
206
- /*
207
- * transcoordT2P는 TOP 모델 컨테이너 기준의 논리좌표를 부모 컴포넌트(Parent) 기준의 논리좌표로 변환한다.
208
- */
209
- function transcoordT2P(x, y, top) {
210
- // 1. 자신으로부터 TOP 모델 컨테이너까지의 조상 계보를 구한다.
211
- // 2. TOP 모델 컨테이너의 차상위 조상에 대한 트랜스코드를 수행한다.
212
- // 3. 변환된 좌표에 차상위 조상의 TOP-LEFT 좌표 시프트를 수행한다.
213
- top = top || this.rootModel;
214
- const ancestors = [];
215
- for (let parent = this.parent; parent && parent !== top; parent = parent.parent) ancestors.splice(0, 0, parent);
216
- let point = {
217
- x,
218
- y
219
- };
220
- ancestors.forEach(parent => {
221
- const {
222
- scale
223
- } = parent.model;
224
- point = parent.transcoordP2S(point.x, point.y);
225
- const bounds = parent.bounds;
226
- if (scale) {
227
- /* TODO 스케일이 있는 경우에 대해서 구현하시오. 아래 로직은 맞지 않음 */
228
- const rotatePoint = parent.rotatePoint;
229
- point.x -= (rotatePoint.x - bounds.left) / scale.x;
230
- point.y -= (rotatePoint.y - bounds.top) / scale.y;
231
- } else {
232
- point.x -= bounds.left;
233
- point.y -= bounds.top;
234
- }
235
- });
236
- return point;
237
- }
238
-
239
- /*
240
- * transcoordT2S는 TOP 모델 컨테이너 기준의 논리좌표를 현재 컴포넌트(Self) 기준의 논리좌표로 변환한다.
241
- */
242
- function transcoordT2S(x, y, top) {
243
- // 1. 자신으로부터 TOP 모델 컨테이너까지의 조상 계보를 구한다.
244
- // 2. TOP 모델 컨테이너의 차상위 조상에 대한 트랜스코드를 수행한다.
245
- // 3. 변환된 좌표에 차상위 조상의 TOP-LEFT 좌표 시프트를 수행한다.
246
- // 4. 이 과정을 컴포넌트 자신까지 트랜스코드를 반복한다.
247
- const point = this.transcoordT2P(x, y, top);
248
- return this.transcoordP2S(point.x, point.y);
249
- }
250
-
251
- /*
252
- * transcoordL2L은 현재 컴포넌트(Self) 기준의 논리좌표를 대상 컴포넌트(Other)의 논리좌표로 변환한다.
253
- */
254
- function transcoordS2O(x, y, to) {
255
- // 1. 현재컴포넌트의 좌표를 탑모델의 좌표로 변환한다.
256
- // 2. 변환된 좌표를 to 컴포넌트의 논리좌표로 변환한다.
257
- // TODO 만일 두 컴포넌트가 직계 관계인 경우에는 좀 더 빠른 변환 로직을 찾을 수 있을 것 같다.
258
- const top = this.rootModel;
259
- const point = this.transcoordS2T(x, y, top);
260
- return to.transcoordT2S(point.x, point.y, top);
261
- }
262
-
263
- /*
264
- * transcoordC2S은 캔바스의 좌표를 컴포넌트(Self)의 논리좌표로 변환한다.
265
- */
266
- function transcoordC2S(x, y, top) {
267
- // 1. 컴포넌트로부터 ROOT 컨테이너까지의 조상 계보를 구한다. (ROOT 컨테이너까지 구하면, TOP 모델(캔바스를 가진)까지 포함된다.)
268
- // 2. 루트 컨테이너의 차상위 조상(캔바스를 포함한 TOP 모델)에 대한 트랜스코드를 수행한다.
269
- // 3. 변환된 좌표에 transcoordT2S을 수행한다.
270
-
271
- if (!top) {
272
- top = this;
273
- while (top && !top.isLayer()) top = top.parent;
274
- }
275
-
276
- /* 캔바스와 디스플레이의 물리적인 상태를 고려한다. */
277
-
278
- const {
279
- translate = {
280
- x: 0,
281
- y: 0
282
- },
283
- scale = {
284
- x: 1,
285
- y: 1
286
- },
287
- rotation = 0
288
- } = top.model;
289
- let point = transcoordR(x, y, translate, rotation, scale);
290
- if (translate) {
291
- point.x -= translate.x / scale.x;
292
- point.y -= translate.y / scale.y;
293
- }
294
-
295
- /* 논리적인 좌표 변환을 진행한다. */
296
-
297
- if (top === this) return point;
298
- return this.transcoordT2S(point.x, point.y, top);
299
- }
300
-
301
- /*
302
- * transcoordS2C는 컴포넌트(Self)의 논리좌표를 캔바스의 좌표로 변환한다.
303
- */
304
- function transcoordS2C(x, y, top) {
305
- // 1. 자신으로부터 TOP 모델 컨테이너까지의 조상 계보를 구한다.
306
- // 2. 변환된 좌표에 transcoordS2T를 수행한다.
307
- // 3. 결과 좌표에 대해서 TOP 모델의 transcoordRR 수행한다.
308
-
309
- if (!top) {
310
- top = this;
311
- while (top && !top.isLayer()) top = top.parent;
312
- }
313
- let point;
314
- if (top !== this) point = this.transcoordS2T(x, y, top);else point = {
315
- x,
316
- y
317
- };
318
-
319
- /* 캔바스와 디스플레이의 물리적인 상태를 고려한다. */
320
-
321
- const {
322
- translate = {
323
- x: 0,
324
- y: 0
325
- },
326
- rotation = 0,
327
- scale = {
328
- x: 1,
329
- y: 1
330
- }
331
- } = top.model;
332
- point = transcoordRR(point.x, point.y, undefined, rotation + top._delta.theta, scale);
333
- if (translate) {
334
- point.x += translate.x;
335
- point.y += translate.y;
336
- }
337
- return point;
338
- }
339
- //# sourceMappingURL=transcoord.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"transcoord.js","names":["transcoordR","x","y","rotatePoint","rotation","scale","cos","Math","sin","transcoordRR","transcoordP2S","parent","state","isLayer","translate","point","transcoordS2P","undefined","_delta","theta","tx","ty","sx","sy","transcoordS2TR","top","rootModel","transcoordS2T","get","ancestors","push","forEach","model","bounds","left","transcoordT2P","splice","transcoordT2S","transcoordS2O","to","transcoordC2S","transcoordS2C"],"sources":["../../../src/components/geometry/transcoord.js"],"sourcesContent":["/*\n * Copyright © HatioLab Inc. All rights reserved.\n */\n\n/*\n * 좌표 변환 API.\n */\n\n/*\n * transcoordR은 부모 기준의 좌표를, 자신의 회전각을 감안하여 부모의 원점을 이동시킨 후의 좌표값으로 변환하는 기능.\n * (기존의 transcoord와 동일함 - R은 Rotation을 의미함.)\n */\nexport function transcoordR(x, y, rotatePoint = { x: 0, y: 0 }, rotation = 0, scale = { x: 1, y: 1 }) {\n const cos = Math.cos(-rotation)\n const sin = Math.sin(-rotation)\n x -= rotatePoint.x\n y -= rotatePoint.y\n\n return {\n x: (x * cos - y * sin + rotatePoint.x) / scale.x,\n y: (x * sin + y * cos + rotatePoint.y) / scale.y\n }\n}\n\n/*\n * transcoordRR은 자신의 회전각을 감안하여 부모의 원점을 이동시킨 상태의 좌표값을 (반대로 회전시켜서)\n * 부모 원점 기준의 좌표로 변환하는 기능.\n * (기존의 reverseTranscoord와 동일함 - RR은 Reverse Rotation을 의미함.)\n */\nexport function transcoordRR(x, y, rotatePoint = { x: 0, y: 0 }, rotation = 0, scale = { x: 1, y: 1 }) {\n const cos = Math.cos(rotation)\n const sin = Math.sin(rotation)\n x -= rotatePoint.x\n y -= rotatePoint.y\n\n return {\n x: (x * cos - y * sin + rotatePoint.x) * scale.x,\n y: (x * sin + y * cos + rotatePoint.y) * scale.y\n }\n}\n\n/*\n * transcoordP2S는 부모(Parent) 컨테이너 기준의 논리좌표를 현재 컴포넌트(Self) 기준의 논리좌표로 변환한다.\n */\nexport function transcoordP2S(x, y, rotatePoint) {\n // 1. 최상위 루트 컴포넌트이면, 변환하지 않는다.\n if (!this.parent) return { x, y }\n\n const { rotation = 0, scale = { x: 1, y: 1 } } = this.state\n\n // 2. Canvas를 가진 레이어 모델이면\n if (this.isLayer()) {\n const translate = this.state.translate\n\n let point = transcoordR(x, y, translate, rotation, scale)\n\n if (translate) {\n point.x -= translate.x / scale.x\n point.y -= translate.y / scale.y\n }\n\n return point\n }\n\n // 3. 그 외..\n rotatePoint = rotatePoint || this.rotatePoint\n\n const point = transcoordR(x, y, rotatePoint, rotation, scale)\n\n // 4. 컴포넌트별 스케일에 대한 처리\n // TODO 컴포넌트별 스케이 처리가 미진함. 정리할 것.(또는, 지원하지 말것.)\n return {\n x: point.x + (rotatePoint.x - rotatePoint.x / scale.x),\n y: point.y + (rotatePoint.y - rotatePoint.y / scale.y)\n }\n}\n\n/*\n * transcoordS2P는 현재 컴포넌트(Self) 기준의 논리좌표를 부모(Parent) 컨테이너 기준의 논리좌표로 변환한다.\n */\nexport function transcoordS2P(x, y, rotatePoint) {\n // 1. 최상위 루트 컴포넌트이면, 변환하지 않는다.\n if (!this.parent) return { x, y }\n\n let { rotation = 0, scale = { x: 1, y: 1 } } = this.state\n\n // 2. Canvas를 가진 레이어 모델이면\n if (this.isLayer()) {\n const translate = this.state.translate\n\n let point = transcoordRR(x, y, undefined, rotation + this._delta.theta, scale)\n\n if (translate) {\n point.x += translate.x\n point.y += translate.y\n }\n\n return point\n }\n\n // 3. 그 외..\n rotatePoint = rotatePoint || this.rotatePoint\n\n const { theta = 0, tx = 0, ty = 0, sx = 1, sy = 1 } = this._delta || {}\n\n rotatePoint = {\n x: rotatePoint.x + tx,\n y: rotatePoint.y + ty\n }\n\n scale = {\n x: scale.x * sx,\n y: scale.y * sy\n }\n\n const point = transcoordRR(x + tx, y + ty, rotatePoint, rotation + theta, scale)\n\n // 4. 컴포넌트별 스케일에 대한 처리\n // TODO 컴포넌트별 스케일 처리가 미진함. 정리할 것.(또는, 지원하지 말것.)\n return {\n x: point.x - (rotatePoint.x * scale.x - rotatePoint.x),\n y: point.y - (rotatePoint.y * scale.y - rotatePoint.y)\n }\n}\n\n/*\n * transcoordS2TR는 현재 컴포넌트(Self) 기준의 논리좌표를 TOP 모델 컨테이너 기준의 논리좌표로 변환한 후에,\n * 루트의 회전까지만 감안한다.\n * 현재 컴포넌트 기준의 논리좌표에 해당하는 포인트가 화면상의 특정 영역에 포함되는지 비교할 때 사용할 수 있다.\n */\nexport function transcoordS2TR(x, y, top) {\n top = top || this.rootModel\n const point = this.transcoordS2T(x, y, top)\n return transcoordRR(point.x, point.y, undefined, (top.get('rotation') || 0) + top._delta.theta)\n}\n\n/*\n * transcoordS2T는 현재 컴포넌트(Self) 기준의 논리좌표를 TOP 모델 컨테이너 기준의 논리좌표로 변환한다.\n */\nexport function transcoordS2T(x, y, top) {\n // 1. 자신으로부터 TOP 모델 컨테이너까지의 조상 계보를 구한다.\n // 2. 주어진 좌표에 대해서 자신 컴포넌트의 회전과 스케일을 감안한 리버스를 수행하여 부모 컨테이너의 TOP-LEFT를 원점으로 하는 좌표로 변환한다.\n // 3. 부모 컨테이너 기준의 좌표로 변환하기 위해서 부모의 바운드의 TOP-LEFT만큼의 시프트를 해준다.\n // 4. 시프트된 포인트에 대해서 부모 컨테이너의 리버스를 수행한 결과를 TOP 바로 하위까지 반복한다.\n\n top = top || this.rootModel\n\n const ancestors = []\n\n for (let parent = this.parent; parent && parent !== top; parent = parent.parent) ancestors.push(parent)\n\n let point = this.transcoordS2P(x, y)\n\n ancestors.forEach(parent => {\n const { scale } = parent.model\n\n const bounds = parent.bounds\n\n if (scale) {\n /* TODO 스케일이 있는 경우에 대해서 구현하시오. 아래 로직은 맞지 않음 */\n const rotatePoint = parent.rotatePoint\n\n point.x += (rotatePoint.x - bounds.left) * scale.x\n point.y += (rotatePoint.y - bounds.top) * scale.y\n } else {\n point.x += bounds.left\n point.y += bounds.top\n }\n\n point = parent.transcoordS2P(point.x, point.y)\n })\n\n return point\n}\n\n/*\n * transcoordT2P는 TOP 모델 컨테이너 기준의 논리좌표를 부모 컴포넌트(Parent) 기준의 논리좌표로 변환한다.\n */\nexport function transcoordT2P(x, y, top) {\n // 1. 자신으로부터 TOP 모델 컨테이너까지의 조상 계보를 구한다.\n // 2. TOP 모델 컨테이너의 차상위 조상에 대한 트랜스코드를 수행한다.\n // 3. 변환된 좌표에 차상위 조상의 TOP-LEFT 좌표 시프트를 수행한다.\n top = top || this.rootModel\n\n const ancestors = []\n\n for (let parent = this.parent; parent && parent !== top; parent = parent.parent) ancestors.splice(0, 0, parent)\n\n let point = { x, y }\n\n ancestors.forEach(parent => {\n const { scale } = parent.model\n\n point = parent.transcoordP2S(point.x, point.y)\n\n const bounds = parent.bounds\n\n if (scale) {\n /* TODO 스케일이 있는 경우에 대해서 구현하시오. 아래 로직은 맞지 않음 */\n const rotatePoint = parent.rotatePoint\n\n point.x -= (rotatePoint.x - bounds.left) / scale.x\n point.y -= (rotatePoint.y - bounds.top) / scale.y\n } else {\n point.x -= bounds.left\n point.y -= bounds.top\n }\n })\n\n return point\n}\n\n/*\n * transcoordT2S는 TOP 모델 컨테이너 기준의 논리좌표를 현재 컴포넌트(Self) 기준의 논리좌표로 변환한다.\n */\nexport function transcoordT2S(x, y, top) {\n // 1. 자신으로부터 TOP 모델 컨테이너까지의 조상 계보를 구한다.\n // 2. TOP 모델 컨테이너의 차상위 조상에 대한 트랜스코드를 수행한다.\n // 3. 변환된 좌표에 차상위 조상의 TOP-LEFT 좌표 시프트를 수행한다.\n // 4. 이 과정을 컴포넌트 자신까지 트랜스코드를 반복한다.\n const point = this.transcoordT2P(x, y, top)\n\n return this.transcoordP2S(point.x, point.y)\n}\n\n/*\n * transcoordL2L은 현재 컴포넌트(Self) 기준의 논리좌표를 대상 컴포넌트(Other)의 논리좌표로 변환한다.\n */\nexport function transcoordS2O(x, y, to) {\n // 1. 현재컴포넌트의 좌표를 탑모델의 좌표로 변환한다.\n // 2. 변환된 좌표를 to 컴포넌트의 논리좌표로 변환한다.\n // TODO 만일 두 컴포넌트가 직계 관계인 경우에는 좀 더 빠른 변환 로직을 찾을 수 있을 것 같다.\n const top = this.rootModel\n\n const point = this.transcoordS2T(x, y, top)\n return to.transcoordT2S(point.x, point.y, top)\n}\n\n/*\n * transcoordC2S은 캔바스의 좌표를 컴포넌트(Self)의 논리좌표로 변환한다.\n */\nexport function transcoordC2S(x, y, top) {\n // 1. 컴포넌트로부터 ROOT 컨테이너까지의 조상 계보를 구한다. (ROOT 컨테이너까지 구하면, TOP 모델(캔바스를 가진)까지 포함된다.)\n // 2. 루트 컨테이너의 차상위 조상(캔바스를 포함한 TOP 모델)에 대한 트랜스코드를 수행한다.\n // 3. 변환된 좌표에 transcoordT2S을 수행한다.\n\n if (!top) {\n top = this\n while (top && !top.isLayer()) top = top.parent\n }\n\n /* 캔바스와 디스플레이의 물리적인 상태를 고려한다. */\n\n const { translate = { x: 0, y: 0 }, scale = { x: 1, y: 1 }, rotation = 0 } = top.model\n\n let point = transcoordR(x, y, translate, rotation, scale)\n\n if (translate) {\n point.x -= translate.x / scale.x\n point.y -= translate.y / scale.y\n }\n\n /* 논리적인 좌표 변환을 진행한다. */\n\n if (top === this) return point\n\n return this.transcoordT2S(point.x, point.y, top)\n}\n\n/*\n * transcoordS2C는 컴포넌트(Self)의 논리좌표를 캔바스의 좌표로 변환한다.\n */\nexport function transcoordS2C(x, y, top) {\n // 1. 자신으로부터 TOP 모델 컨테이너까지의 조상 계보를 구한다.\n // 2. 변환된 좌표에 transcoordS2T를 수행한다.\n // 3. 결과 좌표에 대해서 TOP 모델의 transcoordRR 수행한다.\n\n if (!top) {\n top = this\n while (top && !top.isLayer()) top = top.parent\n }\n\n let point\n if (top !== this) point = this.transcoordS2T(x, y, top)\n else point = { x, y }\n\n /* 캔바스와 디스플레이의 물리적인 상태를 고려한다. */\n\n const { translate = { x: 0, y: 0 }, rotation = 0, scale = { x: 1, y: 1 } } = top.model\n\n point = transcoordRR(point.x, point.y, undefined, rotation + top._delta.theta, scale)\n\n if (translate) {\n point.x += translate.x\n point.y += translate.y\n }\n\n return point\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,35 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = union;
7
- /*
8
- * Copyright © HatioLab Inc. All rights reserved.
9
- */
10
-
11
- /* bounds 들의 총 합을 구하는 함수 */
12
-
13
- function union(boundsList) {
14
- var left, top, right, bottom;
15
- boundsList.forEach(bounds => {
16
- if (left === undefined) {
17
- left = bounds.left;
18
- top = bounds.top;
19
- right = bounds.left + bounds.width;
20
- bottom = bounds.top + bounds.height;
21
- } else {
22
- left = Math.min(bounds.left, left);
23
- top = Math.min(bounds.top, top);
24
- right = Math.max(bounds.left + bounds.width, right);
25
- bottom = Math.max(bounds.top + bounds.height, bottom);
26
- }
27
- });
28
- return {
29
- left,
30
- top,
31
- width: right - left,
32
- height: bottom - top
33
- };
34
- }
35
- //# sourceMappingURL=union.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"union.js","names":["union","boundsList","left","top","right","bottom","forEach","bounds","undefined","width","height","Math","min","max"],"sources":["../../../src/components/geometry/union.js"],"sourcesContent":["/*\n * Copyright © HatioLab Inc. All rights reserved.\n */\n\n/* bounds 들의 총 합을 구하는 함수 */\n\nexport default function union(boundsList) {\n var left, top, right, bottom\n\n boundsList.forEach(bounds => {\n if (left === undefined) {\n left = bounds.left\n top = bounds.top\n right = bounds.left + bounds.width\n bottom = bounds.top + bounds.height\n } else {\n left = Math.min(bounds.left, left)\n top = Math.min(bounds.top, top)\n right = Math.max(bounds.left + bounds.width, right)\n bottom = Math.max(bounds.top + bounds.height, bottom)\n }\n })\n\n return {\n left,\n top,\n width: right - left,\n height: bottom - top\n }\n}\n"],"mappings":";;;;;;AAAA;AACA;AACA;;AAEA;;AAEe,SAASA,KAAKA,CAACC,UAAU,EAAE;EACxC,IAAIC,IAAI,EAAEC,GAAG,EAAEC,KAAK,EAAEC,MAAM;EAE5BJ,UAAU,CAACK,OAAO,CAACC,MAAM,IAAI;IAC3B,IAAIL,IAAI,KAAKM,SAAS,EAAE;MACtBN,IAAI,GAAGK,MAAM,CAACL,IAAI;MAClBC,GAAG,GAAGI,MAAM,CAACJ,GAAG;MAChBC,KAAK,GAAGG,MAAM,CAACL,IAAI,GAAGK,MAAM,CAACE,KAAK;MAClCJ,MAAM,GAAGE,MAAM,CAACJ,GAAG,GAAGI,MAAM,CAACG,MAAM;IACrC,CAAC,MAAM;MACLR,IAAI,GAAGS,IAAI,CAACC,GAAG,CAACL,MAAM,CAACL,IAAI,EAAEA,IAAI,CAAC;MAClCC,GAAG,GAAGQ,IAAI,CAACC,GAAG,CAACL,MAAM,CAACJ,GAAG,EAAEA,GAAG,CAAC;MAC/BC,KAAK,GAAGO,IAAI,CAACE,GAAG,CAACN,MAAM,CAACL,IAAI,GAAGK,MAAM,CAACE,KAAK,EAAEL,KAAK,CAAC;MACnDC,MAAM,GAAGM,IAAI,CAACE,GAAG,CAACN,MAAM,CAACJ,GAAG,GAAGI,MAAM,CAACG,MAAM,EAAEL,MAAM,CAAC;IACvD;EACF,CAAC,CAAC;EAEF,OAAO;IACLH,IAAI;IACJC,GAAG;IACHM,KAAK,EAAEL,KAAK,GAAGF,IAAI;IACnBQ,MAAM,EAAEL,MAAM,GAAGF;EACnB,CAAC;AACH","ignoreList":[]}
@@ -1,128 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = void 0;
7
- var _component = _interopRequireDefault(require("./component.js"));
8
- var _htmlOverlayElement = _interopRequireDefault(require("./html-overlay-element.js"));
9
- var _superGif = require("@wizpanda/super-gif");
10
- function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
11
- /*
12
- * Copyright © HatioLab Inc. All rights reserved.
13
- */
14
-
15
- const NATURE = {
16
- mutable: false,
17
- resizable: true,
18
- rotatable: true,
19
- properties: [{
20
- type: 'image-selector',
21
- label: 'src',
22
- name: 'src'
23
- }, {
24
- type: 'checkbox',
25
- label: 'play',
26
- name: 'play'
27
- }],
28
- 'value-property': 'src',
29
- help: 'scene/component/gif-view'
30
- };
31
- const NOIMAGE_DATA_URI = 'data:image/gif;base64,R0lGODlhYABIAPcAAAAAAAEBAQICAgMDAwQEBAUFBQYGBgcHBwgICAkJCQoKCgsLCwwMDA0NDQ4ODg8PDxAQEBERERISEhMTExQUFBUVFRYWFhcXFxgYGBkZGRoaGhsbGxwcHB0dHR4eHh8fHyAgICEhISIiIiMjIyQkJCUlJSYmJicnJygoKCkpKSoqKisrKywsLC0tLS4uLi8vLzAwMDExMTIyMjMzMzQ0NDU1NTY2Njc3Nzg4ODk5OTo6Ojs7Ozw8PD09PT4+Pj8/P0BAQEFBQUJCQkNDQ0REREVFRUZGRkdHR0hISElJSUpKSktLS0xMTE1NTU5OTk9PT1BQUFFRUVJSUlNTU1RUVFVVVVZWVldXV1hYWFlZWVpaWltbW1xcXF1dXV5eXl9fX2BgYGFhYWJiYmNjY2RkZGVlZWZmZmdnZ2hoaGlpaWpqamtra2xsbG1tbW5ubm9vb3BwcHFxcXJycnNzc3R0dHV1dXZ2dnd3d3h4eHl5eXp6ent7e3x8fH19fX5+fn9/f4CAgIGBgYKCgoODg4SEhIWFhYaGhoeHh4iIiImJiYqKio+Pj5iYmKCgoKampqurq66urrCwsLGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrOzs7S0tLa2tre3t7m5ubu7u7+/v8DAwMHBwcPDw8XFxcfHx8vLy8/Pz9LS0tXV1dfX193d3eTk5Onp6fj4+Pz8/P7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v///////////////////////////////////////////////////////////////////////////////yH5BAkAAPUAIf47R2VuZXJhdGVkIGJ5IGpzZ2lmIChodHRwczovL2dpdGh1Yi5jb20vYW50aW1hdHRlcjE1L2pzZ2lmLykALAAAAABgAEgAAAj+AGcJHEiwoMGDCBMqXMiwocOHECNKnEixosWLGDNq3Mixo8ePIEOKHEmypMmR9VKqXMmypcuXMGPKnJkSIs2bOHPqZGlzp8+fQOv1DEq0KMyhRpMmRaq0KVCmTqPmhCq1qkyqLrFRSyYwGTVsVo1iZXmNa8Fk18ISHasSm1mDycCq/ck2JTWF1ObSfTjz7cFken3WFbow8M7BDA3rHOwXruKpfGXeTZg3qDVrUge7RRg3KLZjx+Q2HVyvLNy0QaMJjBaVdD2tZr2K/mmNIObRkR+n9AsYt0Pddg1WXppb8bWDx1CLLW74GcJnSl3TtDY8Zu2Et4tKl7n52eyWnxXvhl7+26jqrspbnlfIWjtz2gWPZV95neH8veU9NxZYfbfD3kFt99J6Bnmn0mQO9XfYezrVxxlmx0GUXIAM4hSeffsxBN1TFd5E4Ef3QZbfTg6CNJ5gHXJ3TEntLThiTh+KFCJNAqZU4kgAitjQTheepOBMNcZI0oQ6JpbTjSZtiNN2PZ400IxHpdiSc07G911M0iFZZYtAStnWilUeBGVLrlEZpmM0elmPlmfO8iOZXl4DZpsGEYmll2bSWWCXLwJXVY1+urhjoGEBSuiSah6K36CKtpZoo4s9CimielZq6aWYZqrpppx26umnoIZ6UkAAOw==';
32
- class GifView extends _htmlOverlayElement.default {
33
- async oncreate_element(div) {
34
- var {
35
- src,
36
- play
37
- } = this.state;
38
- this.onchangesrc(src);
39
- this.onchangeplay(play);
40
- }
41
- buildImg() {
42
- /* clear first */
43
- var div = this.element;
44
- div.innerHTML = '';
45
- var gif = document.createElement('img');
46
- gif.style.width = '100%';
47
- gif.style.height = '100%';
48
- div.appendChild(gif);
49
- return gif;
50
- }
51
- onchange(after, before) {
52
- super.onchange(after, before);
53
- 'src' in after && this.onchangesrc(after.src);
54
- 'play' in after && this.onchangeplay(after.play);
55
- }
56
- setElementProperties(div) {}
57
- onchangeplay(play) {
58
- var superGif = this._superGif;
59
- if (!superGif || !superGif.isReady()) {
60
- return;
61
- }
62
- if (play) {
63
- superGif.play();
64
- } else {
65
- superGif.pause();
66
- }
67
- }
68
- onchangesrc(src) {
69
- var gif = this.buildImg();
70
- if (!src) {
71
- src = NOIMAGE_DATA_URI;
72
- }
73
- gif.src = src;
74
- gif.setAttribute('rel:animated_src', src);
75
- gif.setAttribute('rel:auto_play', 0);
76
- this._superGif = new _superGif.SuperGif(gif, {
77
- autoPlay: false /* Without this setting, the first play's framerate is too fast. */
78
- });
79
- this._superGif.init();
80
- for (const child of this.element.children) {
81
- child.style.width = '100%';
82
- child.style.height = '100%';
83
- }
84
- var canvas = this._superGif.getCanvas();
85
- canvas.style.width = '100%';
86
- canvas.style.height = '100%';
87
- this._superGif.load(() => {
88
- setTimeout(() => {
89
- this._superGif.moveTo(0);
90
-
91
- /*
92
- * FIXME. this.play 는 컴포넌트의 getState()를 통해서 가져오게 되는데, 체크박스의 경우 문제가 있는 것 같다.
93
- * 문제 해결 후 this.get("play") => this.play로 수정할 것.
94
- */
95
- this.play && this._superGif.play();
96
- }, 100);
97
- });
98
- }
99
- ondropfile(transfered, files) {
100
- for (let i = 0; i < transfered.length; i++) {
101
- if (/\.gif$/.test(transfered[i].name)) {
102
- this.src = files[i];
103
- return;
104
- }
105
- }
106
- }
107
- get src() {
108
- return this.getState('src');
109
- }
110
- set src(src) {
111
- this.set('src', src);
112
- }
113
- get play() {
114
- return this.getState('play');
115
- }
116
- set play(play) {
117
- this.setState('play', play);
118
- }
119
- get nature() {
120
- return NATURE;
121
- }
122
- get tagName() {
123
- return 'div';
124
- }
125
- }
126
- exports.default = GifView;
127
- _component.default.register('gif-view', GifView);
128
- //# sourceMappingURL=gif-view.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"gif-view.js","names":["_component","_interopRequireDefault","require","_htmlOverlayElement","_superGif","e","__esModule","default","NATURE","mutable","resizable","rotatable","properties","type","label","name","help","NOIMAGE_DATA_URI","GifView","HTMLOverlayElement","oncreate_element","div","src","play","state","onchangesrc","onchangeplay","buildImg","element","innerHTML","gif","document","createElement","style","width","height","appendChild","onchange","after","before","setElementProperties","superGif","isReady","pause","setAttribute","SuperGif","autoPlay","init","child","children","canvas","getCanvas","load","setTimeout","moveTo","ondropfile","transfered","files","i","length","test","getState","set","setState","nature","tagName","exports","Component","register"],"sources":["../../src/components/gif-view.js"],"sourcesContent":["/*\n * Copyright © HatioLab Inc. All rights reserved.\n */\n\nconst NATURE = {\n mutable: false,\n resizable: true,\n rotatable: true,\n properties: [\n {\n type: 'image-selector',\n label: 'src',\n name: 'src'\n },\n {\n type: 'checkbox',\n label: 'play',\n name: 'play'\n }\n ],\n 'value-property': 'src',\n help: 'scene/component/gif-view'\n}\n\nconst NOIMAGE_DATA_URI =\n 'data:image/gif;base64,R0lGODlhYABIAPcAAAAAAAEBAQICAgMDAwQEBAUFBQYGBgcHBwgICAkJCQoKCgsLCwwMDA0NDQ4ODg8PDxAQEBERERISEhMTExQUFBUVFRYWFhcXFxgYGBkZGRoaGhsbGxwcHB0dHR4eHh8fHyAgICEhISIiIiMjIyQkJCUlJSYmJicnJygoKCkpKSoqKisrKywsLC0tLS4uLi8vLzAwMDExMTIyMjMzMzQ0NDU1NTY2Njc3Nzg4ODk5OTo6Ojs7Ozw8PD09PT4+Pj8/P0BAQEFBQUJCQkNDQ0REREVFRUZGRkdHR0hISElJSUpKSktLS0xMTE1NTU5OTk9PT1BQUFFRUVJSUlNTU1RUVFVVVVZWVldXV1hYWFlZWVpaWltbW1xcXF1dXV5eXl9fX2BgYGFhYWJiYmNjY2RkZGVlZWZmZmdnZ2hoaGlpaWpqamtra2xsbG1tbW5ubm9vb3BwcHFxcXJycnNzc3R0dHV1dXZ2dnd3d3h4eHl5eXp6ent7e3x8fH19fX5+fn9/f4CAgIGBgYKCgoODg4SEhIWFhYaGhoeHh4iIiImJiYqKio+Pj5iYmKCgoKampqurq66urrCwsLGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrOzs7S0tLa2tre3t7m5ubu7u7+/v8DAwMHBwcPDw8XFxcfHx8vLy8/Pz9LS0tXV1dfX193d3eTk5Onp6fj4+Pz8/P7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v///////////////////////////////////////////////////////////////////////////////yH5BAkAAPUAIf47R2VuZXJhdGVkIGJ5IGpzZ2lmIChodHRwczovL2dpdGh1Yi5jb20vYW50aW1hdHRlcjE1L2pzZ2lmLykALAAAAABgAEgAAAj+AGcJHEiwoMGDCBMqXMiwocOHECNKnEixosWLGDNq3Mixo8ePIEOKHEmypMmR9VKqXMmypcuXMGPKnJkSIs2bOHPqZGlzp8+fQOv1DEq0KMyhRpMmRaq0KVCmTqPmhCq1qkyqLrFRSyYwGTVsVo1iZXmNa8Fk18ISHasSm1mDycCq/ck2JTWF1ObSfTjz7cFken3WFbow8M7BDA3rHOwXruKpfGXeTZg3qDVrUge7RRg3KLZjx+Q2HVyvLNy0QaMJjBaVdD2tZr2K/mmNIObRkR+n9AsYt0Pddg1WXppb8bWDx1CLLW74GcJnSl3TtDY8Zu2Et4tKl7n52eyWnxXvhl7+26jqrspbnlfIWjtz2gWPZV95neH8veU9NxZYfbfD3kFt99J6Bnmn0mQO9XfYezrVxxlmx0GUXIAM4hSeffsxBN1TFd5E4Ef3QZbfTg6CNJ5gHXJ3TEntLThiTh+KFCJNAqZU4kgAitjQTheepOBMNcZI0oQ6JpbTjSZtiNN2PZ400IxHpdiSc07G911M0iFZZYtAStnWilUeBGVLrlEZpmM0elmPlmfO8iOZXl4DZpsGEYmll2bSWWCXLwJXVY1+urhjoGEBSuiSah6K36CKtpZoo4s9CimielZq6aWYZqrpppx26umnoIZ6UkAAOw=='\n\nimport Component from './component.js'\nimport HTMLOverlayElement from './html-overlay-element.js'\n\nimport { SuperGif } from '@wizpanda/super-gif'\n\nexport default class GifView extends HTMLOverlayElement {\n async oncreate_element(div) {\n var { src, play } = this.state\n\n this.onchangesrc(src)\n this.onchangeplay(play)\n }\n\n buildImg() {\n /* clear first */\n var div = this.element\n div.innerHTML = ''\n\n var gif = document.createElement('img')\n gif.style.width = '100%'\n gif.style.height = '100%'\n\n div.appendChild(gif)\n\n return gif\n }\n\n onchange(after, before) {\n super.onchange(after, before)\n\n 'src' in after && this.onchangesrc(after.src)\n 'play' in after && this.onchangeplay(after.play)\n }\n\n setElementProperties(div) {}\n\n onchangeplay(play) {\n var superGif = this._superGif\n\n if (!superGif || !superGif.isReady()) {\n return\n }\n\n if (play) {\n superGif.play()\n } else {\n superGif.pause()\n }\n }\n\n onchangesrc(src) {\n var gif = this.buildImg()\n\n if (!src) {\n src = NOIMAGE_DATA_URI\n }\n\n gif.src = src\n gif.setAttribute('rel:animated_src', src)\n gif.setAttribute('rel:auto_play', 0)\n\n this._superGif = new SuperGif(gif, {\n autoPlay: false /* Without this setting, the first play's framerate is too fast. */\n })\n\n this._superGif.init()\n\n for (const child of this.element.children) {\n child.style.width = '100%'\n child.style.height = '100%'\n }\n\n var canvas = this._superGif.getCanvas()\n canvas.style.width = '100%'\n canvas.style.height = '100%'\n\n this._superGif.load(() => {\n setTimeout(() => {\n this._superGif.moveTo(0)\n\n /*\n * FIXME. this.play 는 컴포넌트의 getState()를 통해서 가져오게 되는데, 체크박스의 경우 문제가 있는 것 같다.\n * 문제 해결 후 this.get(\"play\") => this.play로 수정할 것.\n */\n this.play && this._superGif.play()\n }, 100)\n })\n }\n\n ondropfile(transfered, files) {\n for (let i = 0; i < transfered.length; i++) {\n if (/\\.gif$/.test(transfered[i].name)) {\n this.src = files[i]\n return\n }\n }\n }\n\n get src() {\n return this.getState('src')\n }\n\n set src(src) {\n this.set('src', src)\n }\n\n get play() {\n return this.getState('play')\n }\n\n set play(play) {\n this.setState('play', play)\n }\n\n get nature() {\n return NATURE\n }\n\n get tagName() {\n return 'div'\n }\n}\n\nComponent.register('gif-view', GifView)\n"],"mappings":"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","ignoreList":[]}