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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (385) hide show
  1. package/babel.config.js +4 -3
  2. package/db.sqlite +0 -0
  3. package/dist/animation/animate.js +63 -0
  4. package/dist/animation/animate.js.map +1 -0
  5. package/dist/animation/animations/animation.js +122 -0
  6. package/dist/animation/animations/animation.js.map +1 -0
  7. package/dist/animation/animations/fade.js +28 -0
  8. package/dist/animation/animations/fade.js.map +1 -0
  9. package/dist/animation/animations/heartbeat.js +28 -0
  10. package/dist/animation/animations/heartbeat.js.map +1 -0
  11. package/dist/animation/animations/moving.js +24 -0
  12. package/dist/animation/animations/moving.js.map +1 -0
  13. package/dist/animation/animations/outline.js +47 -0
  14. package/dist/animation/animations/outline.js.map +1 -0
  15. package/dist/animation/animations/rotation.js +22 -0
  16. package/dist/animation/animations/rotation.js.map +1 -0
  17. package/dist/animation/animations/vibration.js +31 -0
  18. package/dist/animation/animations/vibration.js.map +1 -0
  19. package/dist/animation/compile.js +31 -0
  20. package/dist/animation/compile.js.map +1 -0
  21. package/dist/animation/delta.js +51 -0
  22. package/dist/animation/delta.js.map +1 -0
  23. package/dist/animation/index.js +14 -0
  24. package/dist/animation/index.js.map +1 -0
  25. package/dist/command/command-change.js +33 -0
  26. package/dist/command/command-change.js.map +1 -0
  27. package/dist/command/command-migrate.js +103 -0
  28. package/dist/command/command-migrate.js.map +1 -0
  29. package/dist/command/command.js +18 -0
  30. package/dist/command/command.js.map +1 -0
  31. package/dist/command/snapshot-commander.js +84 -0
  32. package/dist/command/snapshot-commander.js.map +1 -0
  33. package/dist/components/anchor/anchor.js +105 -0
  34. package/dist/components/anchor/anchor.js.map +1 -0
  35. package/dist/components/anchor/ellipse-anchors.js +53 -0
  36. package/dist/components/anchor/ellipse-anchors.js.map +1 -0
  37. package/dist/components/anchor/rect-anchors.js +53 -0
  38. package/dist/components/anchor/rect-anchors.js.map +1 -0
  39. package/dist/components/audio.js +154 -0
  40. package/dist/components/audio.js.map +1 -0
  41. package/dist/components/cloud.js +44 -0
  42. package/dist/components/cloud.js.map +1 -0
  43. package/dist/components/component.js +1086 -0
  44. package/dist/components/component.js.map +1 -0
  45. package/dist/components/container-abstract.js +387 -0
  46. package/dist/components/container-abstract.js.map +1 -0
  47. package/dist/components/container.js +331 -0
  48. package/dist/components/container.js.map +1 -0
  49. package/dist/components/data/data-mapping.js +82 -0
  50. package/dist/components/data/data-mapping.js.map +1 -0
  51. package/dist/components/data/data.js +166 -0
  52. package/dist/components/data/data.js.map +1 -0
  53. package/dist/components/data/evaluator.js +103 -0
  54. package/dist/components/data/evaluator.js.map +1 -0
  55. package/dist/components/donut.js +104 -0
  56. package/dist/components/donut.js.map +1 -0
  57. package/dist/components/drawer/draw-image-pendable.js +20 -0
  58. package/dist/components/drawer/draw-image-pendable.js.map +1 -0
  59. package/dist/components/drawer/effect.js +19 -0
  60. package/dist/components/drawer/effect.js.map +1 -0
  61. package/dist/components/drawer/fill.js +228 -0
  62. package/dist/components/drawer/fill.js.map +1 -0
  63. package/dist/components/drawer/format.js +115 -0
  64. package/dist/components/drawer/format.js.map +1 -0
  65. package/dist/components/drawer/line.js +191 -0
  66. package/dist/components/drawer/line.js.map +1 -0
  67. package/dist/components/drawer/stroke.js +62 -0
  68. package/dist/components/drawer/stroke.js.map +1 -0
  69. package/dist/components/drawer/text-wrapper.js +51 -0
  70. package/dist/components/drawer/text-wrapper.js.map +1 -0
  71. package/dist/components/drawer/text.js +269 -0
  72. package/dist/components/drawer/text.js.map +1 -0
  73. package/dist/components/ellipse.js +110 -0
  74. package/dist/components/ellipse.js.map +1 -0
  75. package/dist/components/file/ondropfile.js +19 -0
  76. package/dist/components/file/ondropfile.js.map +1 -0
  77. package/dist/components/fit/fit.js +137 -0
  78. package/dist/components/fit/fit.js.map +1 -0
  79. package/dist/components/geometry/transcoord.js +339 -0
  80. package/dist/components/geometry/transcoord.js.map +1 -0
  81. package/dist/components/geometry/union.js +35 -0
  82. package/dist/components/geometry/union.js.map +1 -0
  83. package/dist/components/gif-view.js +128 -0
  84. package/dist/components/gif-view.js.map +1 -0
  85. package/dist/components/global-ref.js +154 -0
  86. package/dist/components/global-ref.js.map +1 -0
  87. package/dist/components/group.js +171 -0
  88. package/dist/components/group.js.map +1 -0
  89. package/dist/components/html/elements.js +24 -0
  90. package/dist/components/html/elements.js.map +1 -0
  91. package/dist/components/html/fill.js +126 -0
  92. package/dist/components/html/fill.js.map +1 -0
  93. package/dist/components/html/reposition.js +119 -0
  94. package/dist/components/html/reposition.js.map +1 -0
  95. package/dist/components/html/shadow.js +24 -0
  96. package/dist/components/html/shadow.js.map +1 -0
  97. package/dist/components/html-overlay-container.js +27 -0
  98. package/dist/components/html-overlay-container.js.map +1 -0
  99. package/dist/components/html-overlay-element.js +22 -0
  100. package/dist/components/html-overlay-element.js.map +1 -0
  101. package/dist/components/image-view.js +193 -0
  102. package/dist/components/image-view.js.map +1 -0
  103. package/dist/components/index.js +231 -0
  104. package/dist/components/index.js.map +1 -0
  105. package/dist/components/info-window.js +416 -0
  106. package/dist/components/info-window.js.map +1 -0
  107. package/dist/components/line.js +374 -0
  108. package/dist/components/line.js.map +1 -0
  109. package/dist/components/local-ref.js +114 -0
  110. package/dist/components/local-ref.js.map +1 -0
  111. package/dist/components/mixins/connectable.js +128 -0
  112. package/dist/components/mixins/connectable.js.map +1 -0
  113. package/dist/components/mixins/data-source.js +34 -0
  114. package/dist/components/mixins/data-source.js.map +1 -0
  115. package/dist/components/mixins/html-element.js +107 -0
  116. package/dist/components/mixins/html-element.js.map +1 -0
  117. package/dist/components/mixins/move-handle.js +73 -0
  118. package/dist/components/mixins/move-handle.js.map +1 -0
  119. package/dist/components/mixins/rect-path.js +113 -0
  120. package/dist/components/mixins/rect-path.js.map +1 -0
  121. package/dist/components/mixins/value-holder.js +81 -0
  122. package/dist/components/mixins/value-holder.js.map +1 -0
  123. package/dist/components/mutater/bounds.js +68 -0
  124. package/dist/components/mutater/bounds.js.map +1 -0
  125. package/dist/components/mutater/path.js +73 -0
  126. package/dist/components/mutater/path.js.map +1 -0
  127. package/dist/components/ortholine.js +763 -0
  128. package/dist/components/ortholine.js.map +1 -0
  129. package/dist/components/outline/ellipse-outline.js +23 -0
  130. package/dist/components/outline/ellipse-outline.js.map +1 -0
  131. package/dist/components/outline/path-outline.js +48 -0
  132. package/dist/components/outline/path-outline.js.map +1 -0
  133. package/dist/components/path.js +49 -0
  134. package/dist/components/path.js.map +1 -0
  135. package/dist/components/polygon.js +91 -0
  136. package/dist/components/polygon.js.map +1 -0
  137. package/dist/components/polyline.js +114 -0
  138. package/dist/components/polyline.js.map +1 -0
  139. package/dist/components/popup.js +160 -0
  140. package/dist/components/popup.js.map +1 -0
  141. package/dist/components/rect.js +72 -0
  142. package/dist/components/rect.js.map +1 -0
  143. package/dist/components/retention/retention-manager.js +81 -0
  144. package/dist/components/retention/retention-manager.js.map +1 -0
  145. package/dist/components/root-container.js +519 -0
  146. package/dist/components/root-container.js.map +1 -0
  147. package/dist/components/ruler.js +103 -0
  148. package/dist/components/ruler.js.map +1 -0
  149. package/dist/components/shape.js +97 -0
  150. package/dist/components/shape.js.map +1 -0
  151. package/dist/components/star.js +103 -0
  152. package/dist/components/star.js.map +1 -0
  153. package/dist/components/text/substitutor.js +92 -0
  154. package/dist/components/text/substitutor.js.map +1 -0
  155. package/dist/components/text.js +21 -0
  156. package/dist/components/text.js.map +1 -0
  157. package/dist/components/triangle.js +92 -0
  158. package/dist/components/triangle.js.map +1 -0
  159. package/dist/const.js +71 -0
  160. package/dist/const.js.map +1 -0
  161. package/dist/core/collection.js +28 -0
  162. package/dist/core/collection.js.map +1 -0
  163. package/dist/core/debug.js +12 -0
  164. package/dist/core/debug.js.map +1 -0
  165. package/dist/core/deep-equals.js +112 -0
  166. package/dist/core/deep-equals.js.map +1 -0
  167. package/dist/core/dom-to-image.js +617 -0
  168. package/dist/core/dom-to-image.js.map +1 -0
  169. package/dist/core/event.js +205 -0
  170. package/dist/core/event.js.map +1 -0
  171. package/dist/core/index.js +21 -0
  172. package/dist/core/index.js.map +1 -0
  173. package/dist/core/list.js +87 -0
  174. package/dist/core/list.js.map +1 -0
  175. package/dist/core/logger.js +29 -0
  176. package/dist/core/logger.js.map +1 -0
  177. package/dist/core/memoize.js +40 -0
  178. package/dist/core/memoize.js.map +1 -0
  179. package/dist/core/mixin.js +26 -0
  180. package/dist/core/mixin.js.map +1 -0
  181. package/dist/core/obj-accessor.js +26 -0
  182. package/dist/core/obj-accessor.js.map +1 -0
  183. package/dist/core/reference-map.js +147 -0
  184. package/dist/core/reference-map.js.map +1 -0
  185. package/dist/core/round-rect.js +62 -0
  186. package/dist/core/round-rect.js.map +1 -0
  187. package/dist/core/safe-round.js +10 -0
  188. package/dist/core/safe-round.js.map +1 -0
  189. package/dist/core/script-loader.js +148 -0
  190. package/dist/core/script-loader.js.map +1 -0
  191. package/dist/core/snapshot-taker.js +59 -0
  192. package/dist/core/snapshot-taker.js.map +1 -0
  193. package/dist/core/stack.js +18 -0
  194. package/dist/core/stack.js.map +1 -0
  195. package/dist/core/timecapsule.js +88 -0
  196. package/dist/core/timecapsule.js.map +1 -0
  197. package/dist/core/utils.js +309 -0
  198. package/dist/core/utils.js.map +1 -0
  199. package/dist/decorator/anchors-decorator.js +53 -0
  200. package/dist/decorator/anchors-decorator.js.map +1 -0
  201. package/dist/decorator/bouncing-arrow-decorator.js +52 -0
  202. package/dist/decorator/bouncing-arrow-decorator.js.map +1 -0
  203. package/dist/decorator/data-spread-decorator.js +69 -0
  204. package/dist/decorator/data-spread-decorator.js.map +1 -0
  205. package/dist/decorator/decotag-decorator.js +33 -0
  206. package/dist/decorator/decotag-decorator.js.map +1 -0
  207. package/dist/decorator/index.js +31 -0
  208. package/dist/decorator/index.js.map +1 -0
  209. package/dist/decorator/link-decorator.js +66 -0
  210. package/dist/decorator/link-decorator.js.map +1 -0
  211. package/dist/effect/gradation.js +37 -0
  212. package/dist/effect/gradation.js.map +1 -0
  213. package/dist/effect/index.js +23 -0
  214. package/dist/effect/index.js.map +1 -0
  215. package/dist/effect/shadow.js +33 -0
  216. package/dist/effect/shadow.js.map +1 -0
  217. package/dist/effect/turn.js +25 -0
  218. package/dist/effect/turn.js.map +1 -0
  219. package/dist/event/event-engine.js +76 -0
  220. package/dist/event/event-engine.js.map +1 -0
  221. package/dist/event/event-pump.js +92 -0
  222. package/dist/event/event-pump.js.map +1 -0
  223. package/dist/event/event-tracker.js +97 -0
  224. package/dist/event/event-tracker.js.map +1 -0
  225. package/dist/event/index.js +21 -0
  226. package/dist/event/index.js.map +1 -0
  227. package/dist/event/ua-event-handler.js +453 -0
  228. package/dist/event/ua-event-handler.js.map +1 -0
  229. package/dist/event-map/animator-handler.js +225 -0
  230. package/dist/event-map/animator-handler.js.map +1 -0
  231. package/dist/event-map/animators/animated-icon.js +265 -0
  232. package/dist/event-map/animators/animated-icon.js.map +1 -0
  233. package/dist/event-map/animators/border-highlighting.js +476 -0
  234. package/dist/event-map/animators/border-highlighting.js.map +1 -0
  235. package/dist/event-map/animators/bouncing-arrow.js +226 -0
  236. package/dist/event-map/animators/bouncing-arrow.js.map +1 -0
  237. package/dist/event-map/event-map.js +36 -0
  238. package/dist/event-map/event-map.js.map +1 -0
  239. package/dist/event-map/index.js +20 -0
  240. package/dist/event-map/index.js.map +1 -0
  241. package/dist/event-map/move-handler.js +233 -0
  242. package/dist/event-map/move-handler.js.map +1 -0
  243. package/dist/event-map/paste-handler.js +176 -0
  244. package/dist/event-map/paste-handler.js.map +1 -0
  245. package/dist/event-map/shift-handler.js +55 -0
  246. package/dist/event-map/shift-handler.js.map +1 -0
  247. package/dist/event-map/text-editor-lite.js +276 -0
  248. package/dist/event-map/text-editor-lite.js.map +1 -0
  249. package/dist/event-map/zoom-handler.js +49 -0
  250. package/dist/event-map/zoom-handler.js.map +1 -0
  251. package/dist/index.js +20 -0
  252. package/dist/index.js.map +1 -0
  253. package/dist/layer/action/emphasize.js +42 -0
  254. package/dist/layer/action/emphasize.js.map +1 -0
  255. package/dist/layer/action/popup.js +461 -0
  256. package/dist/layer/action/popup.js.map +1 -0
  257. package/dist/layer/action/pressed.js +31 -0
  258. package/dist/layer/action/pressed.js.map +1 -0
  259. package/dist/layer/add-layer.js +180 -0
  260. package/dist/layer/add-layer.js.map +1 -0
  261. package/dist/layer/decotag-layer.js +121 -0
  262. package/dist/layer/decotag-layer.js.map +1 -0
  263. package/dist/layer/guide-layer.js +292 -0
  264. package/dist/layer/guide-layer.js.map +1 -0
  265. package/dist/layer/index.js +70 -0
  266. package/dist/layer/index.js.map +1 -0
  267. package/dist/layer/layer.js +230 -0
  268. package/dist/layer/layer.js.map +1 -0
  269. package/dist/layer/minimap-layer.js +84 -0
  270. package/dist/layer/minimap-layer.js.map +1 -0
  271. package/dist/layer/model-layer.js +465 -0
  272. package/dist/layer/model-layer.js.map +1 -0
  273. package/dist/layer/modeler/anchor-handler.js +193 -0
  274. package/dist/layer/modeler/anchor-handler.js.map +1 -0
  275. package/dist/layer/modeler/control-handler.js +95 -0
  276. package/dist/layer/modeler/control-handler.js.map +1 -0
  277. package/dist/layer/modeler/focus-outline.js +41 -0
  278. package/dist/layer/modeler/focus-outline.js.map +1 -0
  279. package/dist/layer/modeler/group-outline.js +30 -0
  280. package/dist/layer/modeler/group-outline.js.map +1 -0
  281. package/dist/layer/modeler/index.js +56 -0
  282. package/dist/layer/modeler/index.js.map +1 -0
  283. package/dist/layer/modeler/path-handler.js +300 -0
  284. package/dist/layer/modeler/path-handler.js.map +1 -0
  285. package/dist/layer/modeler/resizer.js +333 -0
  286. package/dist/layer/modeler/resizer.js.map +1 -0
  287. package/dist/layer/modeler/rotator.js +134 -0
  288. package/dist/layer/modeler/rotator.js.map +1 -0
  289. package/dist/layer/modeling-layer.js +491 -0
  290. package/dist/layer/modeling-layer.js.map +1 -0
  291. package/dist/layer/reaction-layer.js +111 -0
  292. package/dist/layer/reaction-layer.js.map +1 -0
  293. package/dist/layer/scroll-layer.js +191 -0
  294. package/dist/layer/scroll-layer.js.map +1 -0
  295. package/dist/layer/selection/selected-finder.js +96 -0
  296. package/dist/layer/selection/selected-finder.js.map +1 -0
  297. package/dist/layer/selection-layer.js +373 -0
  298. package/dist/layer/selection-layer.js.map +1 -0
  299. package/dist/layer/shift-layer.js +83 -0
  300. package/dist/layer/shift-layer.js.map +1 -0
  301. package/dist/layout/absolute.js +30 -0
  302. package/dist/layout/absolute.js.map +1 -0
  303. package/dist/layout/card.js +52 -0
  304. package/dist/layout/card.js.map +1 -0
  305. package/dist/layout/html-absolute.js +32 -0
  306. package/dist/layout/html-absolute.js.map +1 -0
  307. package/dist/layout/index.js +56 -0
  308. package/dist/layout/index.js.map +1 -0
  309. package/dist/layout/layout.js +36 -0
  310. package/dist/layout/layout.js.map +1 -0
  311. package/dist/layout/linear-horizontal.js +56 -0
  312. package/dist/layout/linear-horizontal.js.map +1 -0
  313. package/dist/layout/linear-vertical.js +56 -0
  314. package/dist/layout/linear-vertical.js.map +1 -0
  315. package/dist/layout/table.js +106 -0
  316. package/dist/layout/table.js.map +1 -0
  317. package/dist/license/license.js +170 -0
  318. package/dist/license/license.js.map +1 -0
  319. package/dist/model/compile.js +40 -0
  320. package/dist/model/compile.js.map +1 -0
  321. package/dist/model/duplicate.js +19 -0
  322. package/dist/model/duplicate.js.map +1 -0
  323. package/dist/model/index.js +34 -0
  324. package/dist/model/index.js.map +1 -0
  325. package/dist/model/selector.js +104 -0
  326. package/dist/model/selector.js.map +1 -0
  327. package/dist/style/compile.js +14 -0
  328. package/dist/style/compile.js.map +1 -0
  329. package/dist/style/index.js +14 -0
  330. package/dist/style/index.js.map +1 -0
  331. package/dist/things-scene/api/add-start.js +18 -0
  332. package/dist/things-scene/api/add-start.js.map +1 -0
  333. package/dist/things-scene/api/add.js +71 -0
  334. package/dist/things-scene/api/add.js.map +1 -0
  335. package/dist/things-scene/api/align.js +116 -0
  336. package/dist/things-scene/api/align.js.map +1 -0
  337. package/dist/things-scene/api/center-to.js +50 -0
  338. package/dist/things-scene/api/center-to.js.map +1 -0
  339. package/dist/things-scene/api/change.js +27 -0
  340. package/dist/things-scene/api/change.js.map +1 -0
  341. package/dist/things-scene/api/clipboard.js +45 -0
  342. package/dist/things-scene/api/clipboard.js.map +1 -0
  343. package/dist/things-scene/api/distribute.js +57 -0
  344. package/dist/things-scene/api/distribute.js.map +1 -0
  345. package/dist/things-scene/api/duplicate.js +47 -0
  346. package/dist/things-scene/api/duplicate.js.map +1 -0
  347. package/dist/things-scene/api/fullscreen.js +26 -0
  348. package/dist/things-scene/api/fullscreen.js.map +1 -0
  349. package/dist/things-scene/api/group.js +91 -0
  350. package/dist/things-scene/api/group.js.map +1 -0
  351. package/dist/things-scene/api/ids.js +28 -0
  352. package/dist/things-scene/api/ids.js.map +1 -0
  353. package/dist/things-scene/api/index.js +192 -0
  354. package/dist/things-scene/api/index.js.map +1 -0
  355. package/dist/things-scene/api/listener.js +69 -0
  356. package/dist/things-scene/api/listener.js.map +1 -0
  357. package/dist/things-scene/api/paste-start.js +27 -0
  358. package/dist/things-scene/api/paste-start.js.map +1 -0
  359. package/dist/things-scene/api/place.js +98 -0
  360. package/dist/things-scene/api/place.js.map +1 -0
  361. package/dist/things-scene/api/remove.js +57 -0
  362. package/dist/things-scene/api/remove.js.map +1 -0
  363. package/dist/things-scene/api/symmetry.js +47 -0
  364. package/dist/things-scene/api/symmetry.js.map +1 -0
  365. package/dist/things-scene/api/to-data-url.js +76 -0
  366. package/dist/things-scene/api/to-data-url.js.map +1 -0
  367. package/dist/things-scene/api/zorder.js +68 -0
  368. package/dist/things-scene/api/zorder.js.map +1 -0
  369. package/dist/things-scene/application-context.js +168 -0
  370. package/dist/things-scene/application-context.js.map +1 -0
  371. package/dist/things-scene/config.js +18 -0
  372. package/dist/things-scene/config.js.map +1 -0
  373. package/dist/things-scene/create.js +67 -0
  374. package/dist/things-scene/create.js.map +1 -0
  375. package/dist/things-scene/fps.js +26 -0
  376. package/dist/things-scene/fps.js.map +1 -0
  377. package/dist/things-scene/index.js +152 -0
  378. package/dist/things-scene/index.js.map +1 -0
  379. package/dist/things-scene/polyfill.js +111 -0
  380. package/dist/things-scene/polyfill.js.map +1 -0
  381. package/dist/things-scene/scene.js +442 -0
  382. package/dist/things-scene/scene.js.map +1 -0
  383. package/dist/things-scene/version.js +12 -0
  384. package/dist/things-scene/version.js.map +1 -0
  385. package/package.json +8 -6
@@ -0,0 +1,103 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _command = _interopRequireDefault(require("./command.js"));
8
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
9
+ /*
10
+ * Copyright © HatioLab Inc. All rights reserved.
11
+ */
12
+
13
+ function calculate_bounds_on_root(component) {
14
+ if (component.isRootModel()) return component.bounds;
15
+ var {
16
+ bounds,
17
+ rotatePoint
18
+ } = component;
19
+ var pointOnTop = rotatePoint;
20
+ // if(component.parent && !component.parent.isRootModel())
21
+ // pointOnTop = recursive_transcoordS2P(pointOnTop, component.parent)
22
+ // TODO 목적상 아래 로직으로 대체 가능할 것이다. 검토하라. (스케일된 컴포넌트에 대해서 이상작동한다.)
23
+ pointOnTop = component.transcoordS2T(pointOnTop.x, pointOnTop.y);
24
+ return {
25
+ left: pointOnTop.x - (rotatePoint.x - bounds.left),
26
+ top: pointOnTop.y - (rotatePoint.y - bounds.top),
27
+ width: bounds.width,
28
+ height: bounds.height
29
+ };
30
+ }
31
+ function calculate_bounds_on_container(component, container) {
32
+ if (container.isRootModel()) return component.bounds;
33
+ var {
34
+ bounds,
35
+ rotatePoint
36
+ } = component;
37
+ var pointOnContainer = container.transcoordT2S(rotatePoint.x, rotatePoint.y);
38
+ var container_bounds = container.bounds;
39
+ return {
40
+ left: pointOnContainer.x - (rotatePoint.x - bounds.left) - container_bounds.left,
41
+ top: pointOnContainer.y - (rotatePoint.y - bounds.top) - container_bounds.top,
42
+ width: bounds.width,
43
+ height: bounds.height
44
+ };
45
+ }
46
+ function calculate_rotation_on_root(component) {
47
+ var rotation = 0;
48
+ while (component && !component.isRootModel()) {
49
+ rotation += component.get('rotation') || 0;
50
+ component = component.parent;
51
+ }
52
+ return rotation % (Math.PI * 2);
53
+ }
54
+ function calculate_rotation_on_container(component, container) {
55
+ var rotation = component.get('rotation') || 0;
56
+ var container_rotation = calculate_rotation_on_root(container);
57
+ return (rotation - container_rotation) % (Math.PI * 2);
58
+ }
59
+
60
+ /*
61
+ * 컴포넌트가 추가, 삭제되거나 부모컨테이너를 바꿔서 이동하는 경우.
62
+ * 새로운 그룹을 만들거나, 그룹해제 되는 경우도 포함됨.
63
+ *
64
+ * to_container, component, to_index
65
+ *
66
+ */
67
+ class CommandMigrate extends _command.default {
68
+ execute() {
69
+ var changes = this.params.changes;
70
+ changes.forEach(change => {
71
+ let {
72
+ component,
73
+ to_container,
74
+ to_index,
75
+ to_left,
76
+ to_top,
77
+ hint
78
+ } = change;
79
+ let bounds = calculate_bounds_on_root(component);
80
+ let rotation = calculate_rotation_on_root(component);
81
+
82
+ /* to_container가 없으면, 완전히 제거함 */
83
+ component.removeSelf(!to_container);
84
+ component.bounds = bounds;
85
+ component.set('rotation', rotation);
86
+ if (to_container) {
87
+ component.set('rotation', calculate_rotation_on_container(component, to_container));
88
+ let bounds = calculate_bounds_on_container(component, to_container);
89
+ change.to_left = to_left !== undefined ? to_left : bounds.left;
90
+ change.to_top = to_top !== undefined ? to_top : bounds.top;
91
+ component.bounds = {
92
+ left: change.to_left,
93
+ top: change.to_top,
94
+ width: bounds.width,
95
+ height: bounds.height
96
+ };
97
+ if (typeof to_index === 'undefined') to_container.addComponent(component);else to_container.insertComponentAt(component, to_index);
98
+ }
99
+ });
100
+ }
101
+ }
102
+ exports.default = CommandMigrate;
103
+ //# sourceMappingURL=command-migrate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command-migrate.js","names":["_command","_interopRequireDefault","require","e","__esModule","default","calculate_bounds_on_root","component","isRootModel","bounds","rotatePoint","pointOnTop","transcoordS2T","x","y","left","top","width","height","calculate_bounds_on_container","container","pointOnContainer","transcoordT2S","container_bounds","calculate_rotation_on_root","rotation","get","parent","Math","PI","calculate_rotation_on_container","container_rotation","CommandMigrate","Command","execute","changes","params","forEach","change","to_container","to_index","to_left","to_top","hint","removeSelf","set","undefined","addComponent","insertComponentAt","exports"],"sources":["../../src/command/command-migrate.js"],"sourcesContent":["/*\n * Copyright © HatioLab Inc. All rights reserved.\n */\n\nimport Command from './command.js'\n\nfunction calculate_bounds_on_root(component) {\n if (component.isRootModel()) return component.bounds\n\n var { bounds, rotatePoint } = component\n\n var pointOnTop = rotatePoint\n // if(component.parent && !component.parent.isRootModel())\n // pointOnTop = recursive_transcoordS2P(pointOnTop, component.parent)\n // TODO 목적상 아래 로직으로 대체 가능할 것이다. 검토하라. (스케일된 컴포넌트에 대해서 이상작동한다.)\n pointOnTop = component.transcoordS2T(pointOnTop.x, pointOnTop.y)\n\n return {\n left: pointOnTop.x - (rotatePoint.x - bounds.left),\n top: pointOnTop.y - (rotatePoint.y - bounds.top),\n width: bounds.width,\n height: bounds.height\n }\n}\n\nfunction calculate_bounds_on_container(component, container) {\n if (container.isRootModel()) return component.bounds\n\n var { bounds, rotatePoint } = component\n\n var pointOnContainer = container.transcoordT2S(rotatePoint.x, rotatePoint.y)\n\n var container_bounds = container.bounds\n\n return {\n left: pointOnContainer.x - (rotatePoint.x - bounds.left) - container_bounds.left,\n top: pointOnContainer.y - (rotatePoint.y - bounds.top) - container_bounds.top,\n width: bounds.width,\n height: bounds.height\n }\n}\n\nfunction calculate_rotation_on_root(component) {\n var rotation = 0\n\n while (component && !component.isRootModel()) {\n rotation += component.get('rotation') || 0\n\n component = component.parent\n }\n\n return rotation % (Math.PI * 2)\n}\n\nfunction calculate_rotation_on_container(component, container) {\n var rotation = component.get('rotation') || 0\n var container_rotation = calculate_rotation_on_root(container)\n\n return (rotation - container_rotation) % (Math.PI * 2)\n}\n\n/*\n * 컴포넌트가 추가, 삭제되거나 부모컨테이너를 바꿔서 이동하는 경우.\n * 새로운 그룹을 만들거나, 그룹해제 되는 경우도 포함됨.\n *\n * to_container, component, to_index\n *\n */\nexport default class CommandMigrate extends Command {\n execute() {\n var changes = this.params.changes\n\n changes.forEach(change => {\n let { component, to_container, to_index, to_left, to_top, hint } = change\n\n let bounds = calculate_bounds_on_root(component)\n let rotation = calculate_rotation_on_root(component)\n\n /* to_container가 없으면, 완전히 제거함 */\n component.removeSelf(!to_container)\n\n component.bounds = bounds\n component.set('rotation', rotation)\n\n if (to_container) {\n component.set('rotation', calculate_rotation_on_container(component, to_container))\n let bounds = calculate_bounds_on_container(component, to_container)\n\n change.to_left = to_left !== undefined ? to_left : bounds.left\n change.to_top = to_top !== undefined ? to_top : bounds.top\n\n component.bounds = {\n left: change.to_left,\n top: change.to_top,\n width: bounds.width,\n height: bounds.height\n }\n\n if (typeof to_index === 'undefined') to_container.addComponent(component)\n else to_container.insertComponentAt(component, to_index)\n }\n })\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ /*
8
+ * Copyright © HatioLab Inc. All rights reserved.
9
+ */
10
+
11
+ class Command {
12
+ constructor(params) {
13
+ this.params = Object.assign({}, params);
14
+ }
15
+ excute() {}
16
+ }
17
+ exports.default = Command;
18
+ //# sourceMappingURL=command.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command.js","names":["Command","constructor","params","Object","assign","excute","exports","default"],"sources":["../../src/command/command.js"],"sourcesContent":["/*\n * Copyright © HatioLab Inc. All rights reserved.\n */\n\nexport default class Command {\n constructor(params) {\n this.params = Object.assign({}, params)\n }\n\n excute() {}\n}\n"],"mappings":";;;;;;AAAA;AACA;AACA;;AAEe,MAAMA,OAAO,CAAC;EAC3BC,WAAWA,CAACC,MAAM,EAAE;IAClB,IAAI,CAACA,MAAM,GAAGC,MAAM,CAACC,MAAM,CAAC,CAAC,CAAC,EAAEF,MAAM,CAAC;EACzC;EAEAG,MAAMA,CAAA,EAAG,CAAC;AACZ;AAACC,OAAA,CAAAC,OAAA,GAAAP,OAAA","ignoreList":[]}
@@ -0,0 +1,84 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var core = _interopRequireWildcard(require("../core/index.js"));
8
+ var _timecapsule = _interopRequireDefault(require("../core/timecapsule.js"));
9
+ var _snapshotTaker = _interopRequireDefault(require("../core/snapshot-taker.js"));
10
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
11
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
12
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
13
+ /*
14
+ * Copyright © HatioLab Inc. All rights reserved.
15
+ */
16
+
17
+ function recovery(state, container) {
18
+ var scale = container.model_layer.get('scale');
19
+ var translate = container.model_layer.get('translate');
20
+ if (state) {
21
+ let parsed = JSON.parse(state);
22
+ parsed.scale = scale;
23
+ parsed.translate = translate;
24
+ container.rebuildContentModel(parsed);
25
+ }
26
+ }
27
+ class SnapshotCommander {
28
+ constructor(container) {
29
+ this.container = container;
30
+ this.timecapsule = new _timecapsule.default(20);
31
+ var self = this;
32
+ this.snapshot_taker = new _snapshotTaker.default({
33
+ get state() {
34
+ let model = self.container.model_layer.hierarchy;
35
+ return JSON.stringify(model);
36
+ }
37
+ }, this.timecapsule);
38
+ this.snapshot_taker.take(true);
39
+ this.timecapsule.preserve();
40
+ }
41
+ dispose() {
42
+ this.reset();
43
+ this.timecapsule && this.timecapsule.dispose();
44
+ this.snapshot_taker && this.snapshot_taker.dispose();
45
+ delete this.container;
46
+ delete this.timecapsule;
47
+ delete this.snapshot_taker;
48
+ }
49
+ preserve() {
50
+ this.timecapsule.preserve();
51
+ }
52
+ hasUnpreservedChanges() {
53
+ return this.timecapsule.hasUnpreservedChanges();
54
+ }
55
+ execute(command, doit) {
56
+ /* doit 파라미터가 명시적으로 false가 아니면, 실행한다. */
57
+ if (doit !== false && command) command.execute();
58
+ this.snapshot_taker.touch();
59
+ this.trigger('execute', command, /* undoable */true, /* redoable */false);
60
+ }
61
+ undo() {
62
+ if (!this.timecapsule.backwardable) return;
63
+ recovery(this.timecapsule.backward(), this.container);
64
+ this.trigger('undo', this.undoable(), this.redoable());
65
+ }
66
+ redo() {
67
+ if (!this.timecapsule.forwardable) return;
68
+ recovery(this.timecapsule.forward(), this.container);
69
+ this.trigger('redo', this.undoable(), this.redoable());
70
+ }
71
+ undoable() {
72
+ return this.timecapsule.backwardable;
73
+ }
74
+ redoable() {
75
+ return this.timecapsule.forwardable;
76
+ }
77
+ reset() {
78
+ this.timecapsule && this.timecapsule.reset();
79
+ this.trigger('command-reset');
80
+ }
81
+ }
82
+ exports.default = SnapshotCommander;
83
+ core.mixin(SnapshotCommander.prototype, core.event.withEvent);
84
+ //# sourceMappingURL=snapshot-commander.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"snapshot-commander.js","names":["core","_interopRequireWildcard","require","_timecapsule","_interopRequireDefault","_snapshotTaker","e","__esModule","default","_getRequireWildcardCache","WeakMap","r","t","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","recovery","state","container","scale","model_layer","translate","parsed","JSON","parse","rebuildContentModel","SnapshotCommander","constructor","timecapsule","TimeCapsule","self","snapshot_taker","SnapshotTaker","model","hierarchy","stringify","take","preserve","dispose","reset","hasUnpreservedChanges","execute","command","doit","touch","trigger","undo","backwardable","backward","undoable","redoable","redo","forwardable","forward","exports","mixin","prototype","event","withEvent"],"sources":["../../src/command/snapshot-commander.js"],"sourcesContent":["/*\n * Copyright © HatioLab Inc. All rights reserved.\n */\n\nimport * as core from '../core/index.js'\nimport TimeCapsule from '../core/timecapsule.js'\nimport SnapshotTaker from '../core/snapshot-taker.js'\n\nfunction recovery(state, container) {\n var scale = container.model_layer.get('scale')\n var translate = container.model_layer.get('translate')\n\n if (state) {\n let parsed = JSON.parse(state)\n parsed.scale = scale\n parsed.translate = translate\n container.rebuildContentModel(parsed)\n }\n}\n\nexport default class SnapshotCommander {\n constructor(container) {\n this.container = container\n this.timecapsule = new TimeCapsule(20)\n var self = this\n this.snapshot_taker = new SnapshotTaker(\n {\n get state() {\n let model = self.container.model_layer.hierarchy\n return JSON.stringify(model)\n }\n },\n this.timecapsule\n )\n\n this.snapshot_taker.take(true)\n this.timecapsule.preserve()\n }\n\n dispose() {\n this.reset()\n this.timecapsule && this.timecapsule.dispose()\n this.snapshot_taker && this.snapshot_taker.dispose()\n\n delete this.container\n delete this.timecapsule\n delete this.snapshot_taker\n }\n\n preserve() {\n this.timecapsule.preserve()\n }\n\n hasUnpreservedChanges() {\n return this.timecapsule.hasUnpreservedChanges()\n }\n\n execute(command, doit) {\n /* doit 파라미터가 명시적으로 false가 아니면, 실행한다. */\n if (doit !== false && command) command.execute()\n\n this.snapshot_taker.touch()\n\n this.trigger('execute', command, /* undoable */ true, /* redoable */ false)\n }\n\n undo() {\n if (!this.timecapsule.backwardable) return\n\n recovery(this.timecapsule.backward(), this.container)\n\n this.trigger('undo', this.undoable(), this.redoable())\n }\n\n redo() {\n if (!this.timecapsule.forwardable) return\n\n recovery(this.timecapsule.forward(), this.container)\n\n this.trigger('redo', this.undoable(), this.redoable())\n }\n\n undoable() {\n return this.timecapsule.backwardable\n }\n\n redoable() {\n return this.timecapsule.forwardable\n }\n\n reset() {\n this.timecapsule && this.timecapsule.reset()\n this.trigger('command-reset')\n }\n}\n\ncore.mixin(SnapshotCommander.prototype, core.event.withEvent)\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,105 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.findInOutLines = findInOutLines;
7
+ exports.findInletEnds = findInletEnds;
8
+ exports.findInletLines = findInletLines;
9
+ exports.findOutletEnds = findOutletEnds;
10
+ exports.findOutletLines = findOutletLines;
11
+ /**
12
+ * Position definition
13
+ * @typedef {Object} Position
14
+ * @property {number} x - x position
15
+ * @property {number} y - y position
16
+ */
17
+
18
+ /**
19
+ * Bounds definition
20
+ * @typedef {Object} Bounds
21
+ * @property {number} left - left position
22
+ * @property {number} top - top position
23
+ * @property {number} width - width
24
+ * @property {number} height - height
25
+ */
26
+
27
+ /**
28
+ * anchorDrawFunction
29
+ * @param {CanvasRenderingContext2D} context
30
+ * @param {Component} component
31
+ */
32
+
33
+ /**
34
+ * Anchor definition
35
+ * @typedef {Object} Anchor
36
+ * @property {string} name - name of the anchor
37
+ * @property {string} type - type of the anchor
38
+ * @property {string} inout - inout direction of the anchor 'in', 'out', 'inout'
39
+ * @property {Position} position - position of the anchor
40
+ * @property {Bounds} bounds - bounds of the anchor
41
+ * @property {boolean} multiplicity - multiplicity
42
+ * @property {anchorDrawFunction} draw
43
+ */
44
+
45
+ /**
46
+ * @function findInOutLines
47
+ * @param {Component} component
48
+ * @param {string} anchorName
49
+ * @return {Line[]}
50
+ */
51
+ function findInOutLines(component, anchorName) {
52
+ const refid = component.state.refid;
53
+ return component.root.findAll(target => {
54
+ if (!target.isLine()) {
55
+ return false;
56
+ }
57
+ return target.from.component === refid && (!anchorName || target.from.anchor === anchorName) || target.to.component === refid && (!anchorName || target.to.anchor === anchorName);
58
+ });
59
+ }
60
+
61
+ /**
62
+ * @function findOutletLines
63
+ * @param {Component} component
64
+ * @param {string} anchorName
65
+ * @return {Line[]}
66
+ */
67
+ function findOutletLines(component, anchorName) {
68
+ const refid = component.state.refid;
69
+ return component.root.findAll(target => {
70
+ return target.isLine() && target.from.component === refid && (anchorName ? target.from.anchor === anchorName : true);
71
+ });
72
+ }
73
+
74
+ /**
75
+ * @function findOutletEnds
76
+ * @param {Component} component
77
+ * @param {string} anchorName
78
+ * @return {Component[]}
79
+ */
80
+ function findOutletEnds(component, anchorName) {
81
+ return findOutletLines(component, anchorName).map(line => line.toEnd?.component).filter(Boolean);
82
+ }
83
+
84
+ /**
85
+ * @function findInletLines
86
+ * @param {Component} component
87
+ * @return {Line[]}
88
+ */
89
+ function findInletLines(component, anchorName) {
90
+ const refid = component.state.refid;
91
+ return component.root.findAll(target => {
92
+ return target.isLine() && target.to.component === refid && (anchorName ? target.to.anchor === anchorName : true);
93
+ });
94
+ }
95
+
96
+ /**
97
+ * @function findInletEnds
98
+ * @param {Component} component
99
+ * @param {string} anchorName
100
+ * @return {Component[]}
101
+ */
102
+ function findInletEnds(component, anchorName) {
103
+ return findInletLines(component, anchorName).map(line => line.fromEnd?.component).filter(Boolean);
104
+ }
105
+ //# sourceMappingURL=anchor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"anchor.js","names":["findInOutLines","component","anchorName","refid","state","root","findAll","target","isLine","from","anchor","to","findOutletLines","findOutletEnds","map","line","toEnd","filter","Boolean","findInletLines","findInletEnds","fromEnd"],"sources":["../../../src/components/anchor/anchor.js"],"sourcesContent":["/**\n * Position definition\n * @typedef {Object} Position\n * @property {number} x - x position\n * @property {number} y - y position\n */\n\n/**\n * Bounds definition\n * @typedef {Object} Bounds\n * @property {number} left - left position\n * @property {number} top - top position\n * @property {number} width - width\n * @property {number} height - height\n */\n\n/**\n * anchorDrawFunction\n * @param {CanvasRenderingContext2D} context\n * @param {Component} component\n */\n\n/**\n * Anchor definition\n * @typedef {Object} Anchor\n * @property {string} name - name of the anchor\n * @property {string} type - type of the anchor\n * @property {string} inout - inout direction of the anchor 'in', 'out', 'inout'\n * @property {Position} position - position of the anchor\n * @property {Bounds} bounds - bounds of the anchor\n * @property {boolean} multiplicity - multiplicity\n * @property {anchorDrawFunction} draw\n */\n\n/**\n * @function findInOutLines\n * @param {Component} component\n * @param {string} anchorName\n * @return {Line[]}\n */\nexport function findInOutLines(component, anchorName) {\n const refid = component.state.refid\n\n return component.root.findAll(target => {\n if (!target.isLine()) {\n return false\n }\n\n return (\n (target.from.component === refid && (!anchorName || target.from.anchor === anchorName)) ||\n (target.to.component === refid && (!anchorName || target.to.anchor === anchorName))\n )\n })\n}\n\n/**\n * @function findOutletLines\n * @param {Component} component\n * @param {string} anchorName\n * @return {Line[]}\n */\nexport function findOutletLines(component, anchorName) {\n const refid = component.state.refid\n\n return component.root.findAll(target => {\n return target.isLine() && target.from.component === refid && (anchorName ? target.from.anchor === anchorName : true)\n })\n}\n\n/**\n * @function findOutletEnds\n * @param {Component} component\n * @param {string} anchorName\n * @return {Component[]}\n */\nexport function findOutletEnds(component, anchorName) {\n return findOutletLines(component, anchorName)\n .map(line => line.toEnd?.component)\n .filter(Boolean)\n}\n\n/**\n * @function findInletLines\n * @param {Component} component\n * @return {Line[]}\n */\nexport function findInletLines(component, anchorName) {\n const refid = component.state.refid\n\n return component.root.findAll(target => {\n return target.isLine() && target.to.component === refid && (anchorName ? target.to.anchor === anchorName : true)\n })\n}\n\n/**\n * @function findInletEnds\n * @param {Component} component\n * @param {string} anchorName\n * @return {Component[]}\n */\nexport function findInletEnds(component, anchorName) {\n return findInletLines(component, anchorName)\n .map(line => line.fromEnd?.component)\n .filter(Boolean)\n}\n"],"mappings":";;;;;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACO,SAASA,cAAcA,CAACC,SAAS,EAAEC,UAAU,EAAE;EACpD,MAAMC,KAAK,GAAGF,SAAS,CAACG,KAAK,CAACD,KAAK;EAEnC,OAAOF,SAAS,CAACI,IAAI,CAACC,OAAO,CAACC,MAAM,IAAI;IACtC,IAAI,CAACA,MAAM,CAACC,MAAM,CAAC,CAAC,EAAE;MACpB,OAAO,KAAK;IACd;IAEA,OACGD,MAAM,CAACE,IAAI,CAACR,SAAS,KAAKE,KAAK,KAAK,CAACD,UAAU,IAAIK,MAAM,CAACE,IAAI,CAACC,MAAM,KAAKR,UAAU,CAAC,IACrFK,MAAM,CAACI,EAAE,CAACV,SAAS,KAAKE,KAAK,KAAK,CAACD,UAAU,IAAIK,MAAM,CAACI,EAAE,CAACD,MAAM,KAAKR,UAAU,CAAE;EAEvF,CAAC,CAAC;AACJ;;AAEA;AACA;AACA;AACA;AACA;AACA;AACO,SAASU,eAAeA,CAACX,SAAS,EAAEC,UAAU,EAAE;EACrD,MAAMC,KAAK,GAAGF,SAAS,CAACG,KAAK,CAACD,KAAK;EAEnC,OAAOF,SAAS,CAACI,IAAI,CAACC,OAAO,CAACC,MAAM,IAAI;IACtC,OAAOA,MAAM,CAACC,MAAM,CAAC,CAAC,IAAID,MAAM,CAACE,IAAI,CAACR,SAAS,KAAKE,KAAK,KAAKD,UAAU,GAAGK,MAAM,CAACE,IAAI,CAACC,MAAM,KAAKR,UAAU,GAAG,IAAI,CAAC;EACtH,CAAC,CAAC;AACJ;;AAEA;AACA;AACA;AACA;AACA;AACA;AACO,SAASW,cAAcA,CAACZ,SAAS,EAAEC,UAAU,EAAE;EACpD,OAAOU,eAAe,CAACX,SAAS,EAAEC,UAAU,CAAC,CAC1CY,GAAG,CAACC,IAAI,IAAIA,IAAI,CAACC,KAAK,EAAEf,SAAS,CAAC,CAClCgB,MAAM,CAACC,OAAO,CAAC;AACpB;;AAEA;AACA;AACA;AACA;AACA;AACO,SAASC,cAAcA,CAAClB,SAAS,EAAEC,UAAU,EAAE;EACpD,MAAMC,KAAK,GAAGF,SAAS,CAACG,KAAK,CAACD,KAAK;EAEnC,OAAOF,SAAS,CAACI,IAAI,CAACC,OAAO,CAACC,MAAM,IAAI;IACtC,OAAOA,MAAM,CAACC,MAAM,CAAC,CAAC,IAAID,MAAM,CAACI,EAAE,CAACV,SAAS,KAAKE,KAAK,KAAKD,UAAU,GAAGK,MAAM,CAACI,EAAE,CAACD,MAAM,KAAKR,UAAU,GAAG,IAAI,CAAC;EAClH,CAAC,CAAC;AACJ;;AAEA;AACA;AACA;AACA;AACA;AACA;AACO,SAASkB,aAAaA,CAACnB,SAAS,EAAEC,UAAU,EAAE;EACnD,OAAOiB,cAAc,CAAClB,SAAS,EAAEC,UAAU,CAAC,CACzCY,GAAG,CAACC,IAAI,IAAIA,IAAI,CAACM,OAAO,EAAEpB,SAAS,CAAC,CACpCgB,MAAM,CAACC,OAAO,CAAC;AACpB","ignoreList":[]}
@@ -0,0 +1,53 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = ellipseAnchors;
7
+ /**
8
+ * @typedef {import('./anchor.js').Anchor} Anchor
9
+ */
10
+
11
+ /**
12
+ * @function ellipseAnchors
13
+ * @param {import('../../../things-scene').Component} component
14
+ * @return {import('./anchor.js').Anchor[]}
15
+ */
16
+ function ellipseAnchors(component) {
17
+ var {
18
+ left,
19
+ top,
20
+ width,
21
+ height
22
+ } = component.bounds;
23
+ var centerx = left + width / 2;
24
+ var centery = top + height / 2;
25
+ var right = left + width;
26
+ var bottom = top + height;
27
+ return [{
28
+ name: 'TOP',
29
+ position: {
30
+ x: centerx,
31
+ y: top
32
+ }
33
+ }, {
34
+ name: 'RIGHT',
35
+ position: {
36
+ x: right,
37
+ y: centery
38
+ }
39
+ }, {
40
+ name: 'BOTTOM',
41
+ position: {
42
+ x: centerx,
43
+ y: bottom
44
+ }
45
+ }, {
46
+ name: 'LEFT',
47
+ position: {
48
+ x: left,
49
+ y: centery
50
+ }
51
+ }];
52
+ }
53
+ //# sourceMappingURL=ellipse-anchors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ellipse-anchors.js","names":["ellipseAnchors","component","left","top","width","height","bounds","centerx","centery","right","bottom","name","position","x","y"],"sources":["../../../src/components/anchor/ellipse-anchors.js"],"sourcesContent":["/**\n * @typedef {import('./anchor.js').Anchor} Anchor\n */\n\n/**\n * @function ellipseAnchors\n * @param {import('../../../things-scene').Component} component\n * @return {import('./anchor.js').Anchor[]}\n */\nexport default function ellipseAnchors(component) {\n var { left, top, width, height } = component.bounds\n\n var centerx = left + width / 2\n var centery = top + height / 2\n var right = left + width\n var bottom = top + height\n\n return [\n {\n name: 'TOP',\n position: {\n x: centerx,\n y: top\n }\n },\n {\n name: 'RIGHT',\n position: {\n x: right,\n y: centery\n }\n },\n {\n name: 'BOTTOM',\n position: {\n x: centerx,\n y: bottom\n }\n },\n {\n name: 'LEFT',\n position: {\n x: left,\n y: centery\n }\n }\n ]\n}\n"],"mappings":";;;;;;AAAA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACe,SAASA,cAAcA,CAACC,SAAS,EAAE;EAChD,IAAI;IAAEC,IAAI;IAAEC,GAAG;IAAEC,KAAK;IAAEC;EAAO,CAAC,GAAGJ,SAAS,CAACK,MAAM;EAEnD,IAAIC,OAAO,GAAGL,IAAI,GAAGE,KAAK,GAAG,CAAC;EAC9B,IAAII,OAAO,GAAGL,GAAG,GAAGE,MAAM,GAAG,CAAC;EAC9B,IAAII,KAAK,GAAGP,IAAI,GAAGE,KAAK;EACxB,IAAIM,MAAM,GAAGP,GAAG,GAAGE,MAAM;EAEzB,OAAO,CACL;IACEM,IAAI,EAAE,KAAK;IACXC,QAAQ,EAAE;MACRC,CAAC,EAAEN,OAAO;MACVO,CAAC,EAAEX;IACL;EACF,CAAC,EACD;IACEQ,IAAI,EAAE,OAAO;IACbC,QAAQ,EAAE;MACRC,CAAC,EAAEJ,KAAK;MACRK,CAAC,EAAEN;IACL;EACF,CAAC,EACD;IACEG,IAAI,EAAE,QAAQ;IACdC,QAAQ,EAAE;MACRC,CAAC,EAAEN,OAAO;MACVO,CAAC,EAAEJ;IACL;EACF,CAAC,EACD;IACEC,IAAI,EAAE,MAAM;IACZC,QAAQ,EAAE;MACRC,CAAC,EAAEX,IAAI;MACPY,CAAC,EAAEN;IACL;EACF,CAAC,CACF;AACH","ignoreList":[]}
@@ -0,0 +1,53 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = rectAnchors;
7
+ /**
8
+ * @typedef {import('./anchor.js').Anchor} Anchor
9
+ */
10
+
11
+ /**
12
+ * @function rectAnchors
13
+ * @param {Component} component
14
+ * @return {Anchor[]}
15
+ */
16
+ function rectAnchors(component) {
17
+ var {
18
+ left,
19
+ top,
20
+ width,
21
+ height
22
+ } = component.bounds;
23
+ var centerx = left + width / 2;
24
+ var centery = top + height / 2;
25
+ var right = left + width;
26
+ var bottom = top + height;
27
+ return [{
28
+ name: 'TOP',
29
+ position: {
30
+ x: centerx,
31
+ y: top
32
+ }
33
+ }, {
34
+ name: 'RIGHT',
35
+ position: {
36
+ x: right,
37
+ y: centery
38
+ }
39
+ }, {
40
+ name: 'BOTTOM',
41
+ position: {
42
+ x: centerx,
43
+ y: bottom
44
+ }
45
+ }, {
46
+ name: 'LEFT',
47
+ position: {
48
+ x: left,
49
+ y: centery
50
+ }
51
+ }];
52
+ }
53
+ //# sourceMappingURL=rect-anchors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rect-anchors.js","names":["rectAnchors","component","left","top","width","height","bounds","centerx","centery","right","bottom","name","position","x","y"],"sources":["../../../src/components/anchor/rect-anchors.js"],"sourcesContent":["/**\n * @typedef {import('./anchor.js').Anchor} Anchor\n */\n\n/**\n * @function rectAnchors\n * @param {Component} component\n * @return {Anchor[]}\n */\nexport default function rectAnchors(component) {\n var { left, top, width, height } = component.bounds\n\n var centerx = left + width / 2\n var centery = top + height / 2\n var right = left + width\n var bottom = top + height\n\n return [\n {\n name: 'TOP',\n position: {\n x: centerx,\n y: top\n }\n },\n {\n name: 'RIGHT',\n position: {\n x: right,\n y: centery\n }\n },\n {\n name: 'BOTTOM',\n position: {\n x: centerx,\n y: bottom\n }\n },\n {\n name: 'LEFT',\n position: {\n x: left,\n y: centery\n }\n }\n ]\n}\n"],"mappings":";;;;;;AAAA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACe,SAASA,WAAWA,CAACC,SAAS,EAAE;EAC7C,IAAI;IAAEC,IAAI;IAAEC,GAAG;IAAEC,KAAK;IAAEC;EAAO,CAAC,GAAGJ,SAAS,CAACK,MAAM;EAEnD,IAAIC,OAAO,GAAGL,IAAI,GAAGE,KAAK,GAAG,CAAC;EAC9B,IAAII,OAAO,GAAGL,GAAG,GAAGE,MAAM,GAAG,CAAC;EAC9B,IAAII,KAAK,GAAGP,IAAI,GAAGE,KAAK;EACxB,IAAIM,MAAM,GAAGP,GAAG,GAAGE,MAAM;EAEzB,OAAO,CACL;IACEM,IAAI,EAAE,KAAK;IACXC,QAAQ,EAAE;MACRC,CAAC,EAAEN,OAAO;MACVO,CAAC,EAAEX;IACL;EACF,CAAC,EACD;IACEQ,IAAI,EAAE,OAAO;IACbC,QAAQ,EAAE;MACRC,CAAC,EAAEJ,KAAK;MACRK,CAAC,EAAEN;IACL;EACF,CAAC,EACD;IACEG,IAAI,EAAE,QAAQ;IACdC,QAAQ,EAAE;MACRC,CAAC,EAAEN,OAAO;MACVO,CAAC,EAAEJ;IACL;EACF,CAAC,EACD;IACEC,IAAI,EAAE,MAAM;IACZC,QAAQ,EAAE;MACRC,CAAC,EAAEX,IAAI;MACPY,CAAC,EAAEN;IACL;EACF,CAAC,CACF;AACH","ignoreList":[]}
@@ -0,0 +1,154 @@
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 _shape = _interopRequireDefault(require("./shape.js"));
9
+ var _rectPath = _interopRequireDefault(require("./mixins/rect-path.js"));
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: 'attachment-selector',
21
+ label: 'src',
22
+ name: 'src',
23
+ property: {
24
+ category: 'audio'
25
+ }
26
+ }, {
27
+ type: 'checkbox',
28
+ label: 'started',
29
+ name: 'started'
30
+ }, {
31
+ type: 'checkbox',
32
+ label: 'loop',
33
+ name: 'loop'
34
+ }],
35
+ 'value-property': 'src',
36
+ help: 'scene/component/audio'
37
+ };
38
+ const AUDIO_IMAGE = 'data:image/png;base64,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';
39
+ class AudioPlayer extends (0, _rectPath.default)(_shape.default) {
40
+ static get image() {
41
+ if (!AudioPlayer.IMAGE) {
42
+ AudioPlayer.IMAGE = new Image();
43
+ AudioPlayer.IMAGE.src = AUDIO_IMAGE;
44
+ }
45
+ return AudioPlayer.IMAGE;
46
+ }
47
+ dispose() {
48
+ super.dispose();
49
+ this.started = false;
50
+ delete this._audio;
51
+ }
52
+ ready() {
53
+ super.ready();
54
+ this._audio = new Audio();
55
+ this._audio.addEventListener('canplay', () => {
56
+ this.started && this._audio.play();
57
+ });
58
+ var {
59
+ src = '',
60
+ loop = false,
61
+ started = false
62
+ } = this.state;
63
+ this.onchangeSrc(src);
64
+ this.onchangeLoop(loop);
65
+ this.onchangeStarted(started);
66
+ }
67
+ render(ctx) {
68
+ var {
69
+ left,
70
+ top,
71
+ width,
72
+ height,
73
+ src
74
+ } = this.state;
75
+ ctx.beginPath();
76
+ this.drawImage(ctx, AudioPlayer.image, left, top, width, height);
77
+ }
78
+ get nature() {
79
+ return NATURE;
80
+ }
81
+ get hasTextProperty() {
82
+ return false;
83
+ }
84
+ get src() {
85
+ return this.get('src');
86
+ }
87
+ set src(src) {
88
+ this.set('src', src);
89
+ }
90
+ get started() {
91
+ return !!this.get('started');
92
+ }
93
+ set started(started) {
94
+ this.set('started', started);
95
+ }
96
+ start() {
97
+ if (!this._audio) return;
98
+ this._audio.classList.add('active');
99
+ this._audio.play();
100
+ }
101
+ pause() {
102
+ if (!this._audio) return;
103
+ this._audio.classList.remove('active');
104
+ this._audio.pause();
105
+ }
106
+ onchangeSrc(src) {
107
+ try {
108
+ // this._audio.crossOrigin = "anonymous";
109
+ if (String(src).substring(0, 4) !== 'data') this._audio.crossOrigin = 'use-credentials';else this._audio.crossOrigin = null;
110
+ this._audio.src = typeof src === 'string' ? this.app.url(src) : src;
111
+ } catch (e) {
112
+ console.error(e);
113
+ return;
114
+ }
115
+ }
116
+ onchangeStarted(started) {
117
+ const audio = this._audio;
118
+ if (started) {
119
+ /*
120
+ [ audio/video.readyState ]
121
+ 0 = HAVE_NOTHING - no information whether or not the audio/video is ready
122
+ 1 = HAVE_METADATA - metadata for the audio/video is ready
123
+ 2 = HAVE_CURRENT_DATA - data for the current playback position is available, but not enough data to play next frame/millisecond
124
+ 3 = HAVE_FUTURE_DATA - data for the current and at least the next frame is available
125
+ 4 = HAVE_ENOUGH_DATA - enough data available to start playing
126
+ */
127
+ audio.readyState == 4 && audio.play();
128
+ } else {
129
+ audio.pause();
130
+ }
131
+ }
132
+ onchangeLoop(loop) {
133
+ this._audio.loop = loop;
134
+ }
135
+ onchange(after, before) {
136
+ 'src' in after && this.onchangeSrc(after.src);
137
+ 'started' in after && this.onchangeStarted(after.started);
138
+ 'loop' in after && this.onchangeLoop(after.loop);
139
+ }
140
+ ondblclick(e) {
141
+ this.started = !this.started;
142
+ }
143
+ ondropfile(transfered, files) {
144
+ for (let i = 0; i < transfered.length; i++) {
145
+ if (transfered[i].type.startsWith('audio/')) {
146
+ this.src = files[i];
147
+ return;
148
+ }
149
+ }
150
+ }
151
+ }
152
+ exports.default = AudioPlayer;
153
+ _component.default.register('audio', AudioPlayer);
154
+ //# sourceMappingURL=audio.js.map