@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,34 @@
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
+ * DataSource 컴포넌트를 위한 Mixin임
12
+ */
13
+ var _default = superclass => {
14
+ var A = class extends superclass {
15
+ _convertDataFormat(data, format) {
16
+ var formattedData;
17
+ switch (format) {
18
+ case 'json':
19
+ formattedData = JSON.parse(data);
20
+ break;
21
+ default:
22
+ formattedData = data;
23
+ break;
24
+ }
25
+ return formattedData;
26
+ }
27
+ isDataSource() {
28
+ return true;
29
+ }
30
+ };
31
+ return A;
32
+ };
33
+ exports.default = _default;
34
+ //# sourceMappingURL=data-source.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data-source.js","names":["_default","superclass","A","_convertDataFormat","data","format","formattedData","JSON","parse","isDataSource","exports","default"],"sources":["../../../src/components/mixins/data-source.js"],"sourcesContent":["/*\n * Copyright © HatioLab Inc. All rights reserved.\n */\n\n/*\n * DataSource 컴포넌트를 위한 Mixin임\n */\n\nexport default superclass => {\n var A = class extends superclass {\n _convertDataFormat(data, format) {\n var formattedData\n switch (format) {\n case 'json':\n formattedData = JSON.parse(data)\n break\n default:\n formattedData = data\n break\n }\n\n return formattedData\n }\n\n isDataSource() {\n return true\n }\n }\n\n return A\n}\n"],"mappings":";;;;;;AAAA;AACA;AACA;AAEA;AACA;AACA;AAFA,IAAAA,QAAA,GAIeC,UAAU,IAAI;EAC3B,IAAIC,CAAC,GAAG,cAAcD,UAAU,CAAC;IAC/BE,kBAAkBA,CAACC,IAAI,EAAEC,MAAM,EAAE;MAC/B,IAAIC,aAAa;MACjB,QAAQD,MAAM;QACZ,KAAK,MAAM;UACTC,aAAa,GAAGC,IAAI,CAACC,KAAK,CAACJ,IAAI,CAAC;UAChC;QACF;UACEE,aAAa,GAAGF,IAAI;UACpB;MACJ;MAEA,OAAOE,aAAa;IACtB;IAEAG,YAAYA,CAAA,EAAG;MACb,OAAO,IAAI;IACb;EACF,CAAC;EAED,OAAOP,CAAC;AACV,CAAC;AAAAQ,OAAA,CAAAC,OAAA,GAAAX,QAAA","ignoreList":[]}
@@ -0,0 +1,107 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = exports.GESTURES = void 0;
7
+ var _const = require("../../const.js");
8
+ var _uaEventHandler = require("../../event/ua-event-handler.js");
9
+ var _reposition = _interopRequireDefault(require("../html/reposition.js"));
10
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
11
+ /*
12
+ * Copyright © HatioLab Inc. All rights reserved.
13
+ */
14
+
15
+ const GESTURES = exports.GESTURES = ['mousemove', 'mouseup', 'mousedown', 'mouseout', 'wheel', 'tap', 'click', 'touchstart', 'touchmove', 'touchend', 'mouseenter', 'mouseleave', 'dragstart', 'dragmove', 'dragend', 'dblclick'];
16
+
17
+ /**
18
+ * Mixin HTMLElement
19
+ */
20
+ var _default = superclass => {
21
+ var A = class extends superclass {
22
+ isHTMLElement() {
23
+ return true;
24
+ }
25
+ isShadowable() {
26
+ return true;
27
+ }
28
+ get element() {
29
+ return this._element;
30
+ }
31
+ set element(element) {
32
+ this._element = element;
33
+ }
34
+
35
+ // Overidable
36
+ get tagName() {
37
+ return this.get('type');
38
+ }
39
+
40
+ // Overidable
41
+ setElementProperties(element) {
42
+ throw new Error('Not Implemented Yet');
43
+ }
44
+
45
+ // Overidable
46
+ createElement() {
47
+ this.element = document.createElement(this.tagName);
48
+ if (!this.element) return;
49
+ if (this.parent.isHTMLElement()) this.parent.element.appendChild(this.element);else this.root.model_layer.overlay.appendChild(this.element);
50
+ GESTURES.forEach(event => {
51
+ this.element.addEventListener(event, this.userInputEventHandler.bind(this));
52
+ });
53
+ _const.KEYEVENTS.forEach(event => {
54
+ this.element.addEventListener(event, this.userInputEventHandler.bind(this));
55
+ });
56
+ this.oncreate_element && this.oncreate_element(this.element);
57
+ }
58
+ userInputEventHandler(e) {
59
+ (0, _uaEventHandler.trigger)(this, e.type, e);
60
+ e.stopPropagation();
61
+ }
62
+ reposition() {
63
+ this.element && (0, _reposition.default)(this);
64
+ }
65
+
66
+ // Overidable
67
+ disposeElement() {
68
+ var element = this.element;
69
+ element && element.parentElement && element.parentElement.removeChild(element);
70
+ delete this.element;
71
+ }
72
+ ready() {
73
+ super.ready();
74
+ !this.element && this.createElement();
75
+ if (this.parent.isHTMLElement()) this.parent.element.appendChild(this.element);else this.root.model_layer.overlay.appendChild(this.element);
76
+ this.setElementProperties(this.element);
77
+ this.reposition();
78
+ }
79
+ dispose() {
80
+ this.disposeElement(this);
81
+ super.dispose();
82
+ }
83
+ get hasTextProperty() {
84
+ return true;
85
+ }
86
+ get textHidden() {
87
+ return true;
88
+ }
89
+ get hidden() {
90
+ return super.hidden;
91
+ }
92
+ set hidden(hidden) {
93
+ super.hidden = hidden;
94
+ this.element.style.display = hidden ? 'none' : 'block';
95
+ }
96
+ onchange(after, before) {
97
+ this.element && this.setElementProperties(this.element);
98
+ this.reposition();
99
+ }
100
+ isDescendible(container) {
101
+ return container.isHTMLElement();
102
+ }
103
+ };
104
+ return A;
105
+ };
106
+ exports.default = _default;
107
+ //# sourceMappingURL=html-element.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"html-element.js","names":["_const","require","_uaEventHandler","_reposition","_interopRequireDefault","e","__esModule","default","GESTURES","exports","_default","superclass","A","isHTMLElement","isShadowable","element","_element","tagName","get","setElementProperties","Error","createElement","document","parent","appendChild","root","model_layer","overlay","forEach","event","addEventListener","userInputEventHandler","bind","KEYEVENTS","oncreate_element","trigger","type","stopPropagation","reposition","disposeElement","parentElement","removeChild","ready","dispose","hasTextProperty","textHidden","hidden","style","display","onchange","after","before","isDescendible","container"],"sources":["../../../src/components/mixins/html-element.js"],"sourcesContent":["/*\n * Copyright © HatioLab Inc. All rights reserved.\n */\n\nimport { KEYEVENTS } from '../../const.js'\nimport { trigger } from '../../event/ua-event-handler.js'\nimport reposition from '../html/reposition.js'\n\nexport const GESTURES = [\n 'mousemove',\n 'mouseup',\n 'mousedown',\n 'mouseout',\n 'wheel',\n 'tap',\n 'click',\n 'touchstart',\n 'touchmove',\n 'touchend',\n 'mouseenter',\n 'mouseleave',\n 'dragstart',\n 'dragmove',\n 'dragend',\n 'dblclick'\n]\n\n/**\n * Mixin HTMLElement\n */\nexport default superclass => {\n var A = class extends superclass {\n isHTMLElement() {\n return true\n }\n\n isShadowable() {\n return true\n }\n\n get element() {\n return this._element\n }\n\n set element(element) {\n this._element = element\n }\n\n // Overidable\n get tagName() {\n return this.get('type')\n }\n\n // Overidable\n setElementProperties(element) {\n throw new Error('Not Implemented Yet')\n }\n\n // Overidable\n createElement() {\n this.element = document.createElement(this.tagName)\n if (!this.element) return\n\n if (this.parent.isHTMLElement()) this.parent.element.appendChild(this.element)\n else this.root.model_layer.overlay.appendChild(this.element)\n\n GESTURES.forEach(event => {\n this.element.addEventListener(event, this.userInputEventHandler.bind(this))\n })\n\n KEYEVENTS.forEach(event => {\n this.element.addEventListener(event, this.userInputEventHandler.bind(this))\n })\n\n this.oncreate_element && this.oncreate_element(this.element)\n }\n\n userInputEventHandler(e) {\n trigger(this, e.type, e)\n e.stopPropagation()\n }\n\n reposition() {\n this.element && reposition(this)\n }\n\n // Overidable\n disposeElement() {\n var element = this.element\n element && element.parentElement && element.parentElement.removeChild(element)\n delete this.element\n }\n\n ready() {\n super.ready()\n !this.element && this.createElement()\n\n if (this.parent.isHTMLElement()) this.parent.element.appendChild(this.element)\n else this.root.model_layer.overlay.appendChild(this.element)\n\n this.setElementProperties(this.element)\n\n this.reposition()\n }\n\n dispose() {\n this.disposeElement(this)\n super.dispose()\n }\n\n get hasTextProperty() {\n return true\n }\n\n get textHidden() {\n return true\n }\n\n get hidden() {\n return super.hidden\n }\n\n set hidden(hidden) {\n super.hidden = hidden\n this.element.style.display = hidden ? 'none' : 'block'\n }\n\n onchange(after, before) {\n this.element && this.setElementProperties(this.element)\n\n this.reposition()\n }\n\n isDescendible(container) {\n return container.isHTMLElement()\n }\n }\n\n return A\n}\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,73 @@
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
+ const LABEL_WIDTH = 25;
12
+ const LABEL_HEIGHT = 25;
13
+ const MOVE_HANDLE_IMAGE = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAAclBMVEVHcEwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC0BbqFAAAAJXRSTlMAgAP3VSI6/g9fBk5FavJsMrariSjzPnO1enRRL5SMhmOOWB9keFTE0wAAANxJREFUOMutk9kWgyAMRLFuiLjUtdp9yf//YglVsQXz1HniMPcEMgHGvpX2O0Ypi+EgCL+IAShC+wB7QfubRDT7AFcnUPoLMLiP4PyJbsb55i05AgnR5iaQDsICgtH0cotBWoAP1c7kC6kFxEseCfZfB6gEgbNeBrira2QmH1uVYCXlA3is8UmgUCPIyQJKEmu8QtQJN0e9DPXVpzG2G216c1CqRmcBOdxXk07sWUSPv07zo0amCNQycv+NzmR6cRcwmfbuI7p2nZ/z4be0P83Foz6vIkhfZXr82XgDlZsspIq4peUAAAAASUVORK5CYII=';
14
+ const IMAGE = new Image();
15
+ IMAGE.src = MOVE_HANDLE_IMAGE;
16
+ var _default = superclass => {
17
+ var A = class extends superclass {
18
+ postrender(context) {
19
+ super.postrender(context);
20
+ if (!this.app.isEditMode) return;
21
+ if (!this._focused) return;
22
+ if (!this.showMoveHandle) return;
23
+ this._draw_move_handle(context);
24
+ }
25
+ _draw_move_handle(context) {
26
+ var {
27
+ left,
28
+ top,
29
+ width
30
+ } = this.bounds;
31
+ context.save();
32
+ // 이동 핸들 그리기
33
+ context.beginPath();
34
+ context.globalAlpha = 1;
35
+ context.rect(left + width, top, LABEL_WIDTH, LABEL_HEIGHT);
36
+ let color = 255 - 20 % 255;
37
+ context.fillStyle = `rgba(${color}, ${color}, ${color}, 1)`;
38
+ context.fill();
39
+
40
+ // 아이콘 그리기
41
+ context.drawImage(IMAGE, left + width + LABEL_WIDTH * 0.15, top + LABEL_HEIGHT * 0.15, LABEL_WIDTH * 0.7, LABEL_HEIGHT * 0.7);
42
+ context.closePath();
43
+ context.restore();
44
+ }
45
+ contains(x, y) {
46
+ var contains = super.contains(x, y);
47
+ if (this.app.isViewMode) {
48
+ return contains;
49
+ }
50
+ if (!contains) {
51
+ var {
52
+ left,
53
+ top,
54
+ width,
55
+ height
56
+ } = this.bounds;
57
+ var right = left + width;
58
+ var h = LABEL_HEIGHT;
59
+ if (this.showMoveHandle)
60
+ // 이동 핸들러 영역에 포함되는지
61
+ contains = x < Math.max(right + LABEL_WIDTH, right) && x > Math.min(right + LABEL_WIDTH, right) && y < Math.max(top + h, top) && y > Math.min(top + h, top);
62
+ }
63
+ if (this._focustd !== contains) {
64
+ this._focused = contains;
65
+ this.invalidate();
66
+ }
67
+ return contains;
68
+ }
69
+ };
70
+ return A;
71
+ };
72
+ exports.default = _default;
73
+ //# sourceMappingURL=move-handle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"move-handle.js","names":["LABEL_WIDTH","LABEL_HEIGHT","MOVE_HANDLE_IMAGE","IMAGE","Image","src","_default","superclass","A","postrender","context","app","isEditMode","_focused","showMoveHandle","_draw_move_handle","left","top","width","bounds","save","beginPath","globalAlpha","rect","color","fillStyle","fill","drawImage","closePath","restore","contains","x","y","isViewMode","height","right","h","Math","max","min","_focustd","invalidate","exports","default"],"sources":["../../../src/components/mixins/move-handle.js"],"sourcesContent":["/*\n * Copyright © HatioLab Inc. All rights reserved.\n */\n\nconst LABEL_WIDTH = 25\nconst LABEL_HEIGHT = 25\nconst MOVE_HANDLE_IMAGE =\n 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAAclBMVEVHcEwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC0BbqFAAAAJXRSTlMAgAP3VSI6/g9fBk5FavJsMrariSjzPnO1enRRL5SMhmOOWB9keFTE0wAAANxJREFUOMutk9kWgyAMRLFuiLjUtdp9yf//YglVsQXz1HniMPcEMgHGvpX2O0Ypi+EgCL+IAShC+wB7QfubRDT7AFcnUPoLMLiP4PyJbsb55i05AgnR5iaQDsICgtH0cotBWoAP1c7kC6kFxEseCfZfB6gEgbNeBrira2QmH1uVYCXlA3is8UmgUCPIyQJKEmu8QtQJN0e9DPXVpzG2G216c1CqRmcBOdxXk07sWUSPv07zo0amCNQycv+NzmR6cRcwmfbuI7p2nZ/z4be0P83Foz6vIkhfZXr82XgDlZsspIq4peUAAAAASUVORK5CYII='\nconst IMAGE = new Image()\nIMAGE.src = MOVE_HANDLE_IMAGE\n\nexport default superclass => {\n var A = class extends superclass {\n postrender(context) {\n super.postrender(context)\n\n if (!this.app.isEditMode) return\n\n if (!this._focused) return\n\n if (!this.showMoveHandle) return\n\n this._draw_move_handle(context)\n }\n\n _draw_move_handle(context) {\n var { left, top, width } = this.bounds\n\n context.save()\n // 이동 핸들 그리기\n context.beginPath()\n\n context.globalAlpha = 1\n context.rect(left + width, top, LABEL_WIDTH, LABEL_HEIGHT)\n\n let color = 255 - (20 % 255)\n context.fillStyle = `rgba(${color}, ${color}, ${color}, 1)`\n context.fill()\n\n // 아이콘 그리기\n context.drawImage(\n IMAGE,\n left + width + LABEL_WIDTH * 0.15,\n top + LABEL_HEIGHT * 0.15,\n LABEL_WIDTH * 0.7,\n LABEL_HEIGHT * 0.7\n )\n context.closePath()\n\n context.restore()\n }\n\n contains(x, y) {\n var contains = super.contains(x, y)\n\n if (this.app.isViewMode) {\n return contains\n }\n\n if (!contains) {\n var { left, top, width, height } = this.bounds\n var right = left + width\n var h = LABEL_HEIGHT\n\n if (this.showMoveHandle)\n // 이동 핸들러 영역에 포함되는지\n contains =\n x < Math.max(right + LABEL_WIDTH, right) &&\n x > Math.min(right + LABEL_WIDTH, right) &&\n y < Math.max(top + h, top) &&\n y > Math.min(top + h, top)\n }\n\n if (this._focustd !== contains) {\n this._focused = contains\n this.invalidate()\n }\n\n return contains\n }\n }\n\n return A\n}\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,113 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var memoize = _interopRequireWildcard(require("../../core/memoize.js"));
8
+ var _safeRound = require("../../core/safe-round.js");
9
+ var _rectAnchors = _interopRequireDefault(require("../anchor/rect-anchors.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
+ * 주의 : RectPath를 mixin한 컴포넌트는 'path'를 memoize해서는 안된다.
15
+ */
16
+ var _default = superclass => {
17
+ var A = class extends superclass {
18
+ contains(x, y) {
19
+ var {
20
+ left,
21
+ top,
22
+ width,
23
+ height,
24
+ lineWidth = 0
25
+ } = this.state;
26
+ var extend = lineWidth / 2;
27
+ return x < Math.max(left + width, left) + extend && x > Math.min(left + width, left) - extend && y < Math.max(top + height, top) + extend && y > Math.min(top + height, top) - extend;
28
+ }
29
+ set path(path) {
30
+ var left_top = path[0];
31
+ var right_bottom = path[2];
32
+ this.set({
33
+ left: left_top.x,
34
+ top: left_top.y,
35
+ width: right_bottom.x - left_top.x,
36
+ height: right_bottom.y - left_top.y
37
+ });
38
+ }
39
+ get path() {
40
+ var {
41
+ left = 0,
42
+ top = 0,
43
+ width = 0,
44
+ height = 0
45
+ } = this.state;
46
+ return [{
47
+ x: left,
48
+ y: top
49
+ }, {
50
+ x: left + width,
51
+ y: top
52
+ }, {
53
+ x: left + width,
54
+ y: top + height
55
+ }, {
56
+ x: left,
57
+ y: top + height
58
+ }];
59
+ }
60
+ get anchors() {
61
+ return (0, _rectAnchors.default)(this);
62
+ }
63
+ get bounds() {
64
+ const {
65
+ left = 0,
66
+ top = 0,
67
+ width = 0,
68
+ height = 0
69
+ } = this.state;
70
+ return {
71
+ left,
72
+ top,
73
+ width,
74
+ height
75
+ };
76
+ }
77
+ set bounds(bounds) {
78
+ this.set({
79
+ left: 0,
80
+ top: 0,
81
+ width: 0,
82
+ height: 0,
83
+ ...bounds
84
+ });
85
+ }
86
+ render(ctx) {
87
+ /* Due to performance issues, instead of using the renderer of the shape,
88
+ the render method of the rect-path itself is defined. */
89
+ var {
90
+ round = 0
91
+ } = this.model;
92
+ var {
93
+ left,
94
+ top,
95
+ width,
96
+ height
97
+ } = this.bounds;
98
+ ctx.translate(left, top);
99
+ ctx.beginPath();
100
+ round = (0, _safeRound.safeRound)(round, width, height);
101
+ if (round > 0) {
102
+ ctx.roundRect(0, 0, width, height, round);
103
+ } else {
104
+ ctx.rect(0, 0, width, height);
105
+ }
106
+ ctx.translate(-left, -top);
107
+ }
108
+ };
109
+ memoize.intercept(A.prototype, 'path', false);
110
+ return A;
111
+ };
112
+ exports.default = _default;
113
+ //# sourceMappingURL=rect-path.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rect-path.js","names":["memoize","_interopRequireWildcard","require","_safeRound","_rectAnchors","_interopRequireDefault","e","__esModule","default","_getRequireWildcardCache","WeakMap","r","t","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","_default","superclass","A","contains","x","y","left","top","width","height","lineWidth","state","extend","Math","max","min","path","left_top","right_bottom","anchors","rectAnchors","bounds","render","ctx","round","model","translate","beginPath","safeRound","roundRect","rect","intercept","prototype","exports"],"sources":["../../../src/components/mixins/rect-path.js"],"sourcesContent":["import * as memoize from '../../core/memoize.js'\nimport { safeRound } from '../../core/safe-round.js'\nimport rectAnchors from '../anchor/rect-anchors.js'\n\n/**\n * 주의 : RectPath를 mixin한 컴포넌트는 'path'를 memoize해서는 안된다.\n */\nexport default superclass => {\n var A = class extends superclass {\n contains(x, y) {\n var { left, top, width, height, lineWidth = 0 } = this.state\n var extend = lineWidth / 2\n\n return (\n x < Math.max(left + width, left) + extend &&\n x > Math.min(left + width, left) - extend &&\n y < Math.max(top + height, top) + extend &&\n y > Math.min(top + height, top) - extend\n )\n }\n\n set path(path) {\n var left_top = path[0]\n var right_bottom = path[2]\n\n this.set({\n left: left_top.x,\n top: left_top.y,\n width: right_bottom.x - left_top.x,\n height: right_bottom.y - left_top.y\n })\n }\n\n get path() {\n var { left = 0, top = 0, width = 0, height = 0 } = this.state\n\n return [\n {\n x: left,\n y: top\n },\n {\n x: left + width,\n y: top\n },\n {\n x: left + width,\n y: top + height\n },\n {\n x: left,\n y: top + height\n }\n ]\n }\n\n get anchors() {\n return rectAnchors(this)\n }\n\n get bounds() {\n const { left = 0, top = 0, width = 0, height = 0 } = this.state\n\n return {\n left,\n top,\n width,\n height\n }\n }\n\n set bounds(bounds) {\n this.set({\n left: 0,\n top: 0,\n width: 0,\n height: 0,\n ...bounds\n })\n }\n\n render(ctx) {\n /* Due to performance issues, instead of using the renderer of the shape, \n the render method of the rect-path itself is defined. */\n var { round = 0 } = this.model\n\n var { left, top, width, height } = this.bounds\n\n ctx.translate(left, top)\n ctx.beginPath()\n\n round = safeRound(round, width, height)\n\n if (round > 0) {\n ctx.roundRect(0, 0, width, height, round)\n } else {\n ctx.rect(0, 0, width, height)\n }\n\n ctx.translate(-left, -top)\n }\n }\n\n memoize.intercept(A.prototype, 'path', false)\n\n return A\n}\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,81 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _utils = require("../../core/utils.js");
8
+ var _substitutor = require("../text/substitutor.js");
9
+ /*
10
+ * Copyright © HatioLab Inc. All rights reserved.
11
+ */
12
+ /*
13
+ * ValueHolder 단일 숫자값을 value라는 속성으로 가지는 컴포넌트를 위한 Mixin임
14
+ * value 속성을 가지는 컴포넌트는 다음의 특징을 갖는 것을 암묵적으로 동의한다.
15
+ *
16
+ * 1. value 속성은 Number 타입니다.
17
+ * 1. value 속성은 expression을 통해서 컴포넌트 자신의 속성을 접근할 수 있고, 다른 컴포넌트의 data 속성을 접근할 수 있다.
18
+ * 1. value 속성을 가지는 컴포넌트는 값 변화에 대해서 animation을 사용할 수 있다.
19
+ *
20
+ * TODO. min, max 값을 가지도록 한다.
21
+ * TODO. animation 설정을 오버라이드 할 수 있도록 한다.
22
+ */
23
+ var _default = superclass => {
24
+ var A = class extends superclass {
25
+ animOnValueChange(value, animFromBase = false, base) {
26
+ if (value == this._lastValue) {
27
+ return;
28
+ }
29
+ if (animFromBase) {
30
+ var diff = value - (Number(base) || 0);
31
+ } else {
32
+ var diff = value - (this._lastValue || 0);
33
+ }
34
+ this._lastValue = value;
35
+ this._anim_alpha = -diff;
36
+ this.animate({
37
+ step: delta => {
38
+ this._anim_alpha = diff * (delta - 1);
39
+ this.invalidate();
40
+ },
41
+ duration: 1000,
42
+ delta: 'circ',
43
+ options: {
44
+ x: 1
45
+ },
46
+ ease: 'out'
47
+ }).start();
48
+ }
49
+ dispose() {
50
+ super.dispose();
51
+ delete this._value_substitutor;
52
+ }
53
+ onchange(after, before) {
54
+ if (after.hasOwnProperty('value')) delete this._value_substitutor;
55
+ }
56
+ get animAlpha() {
57
+ return this._anim_alpha || 0;
58
+ }
59
+ get animValue() {
60
+ /* this.value 를 사용해서는 안된다. (성능 효율을 위해서.)*/
61
+ return (this._lastValue || 0) + (this._anim_alpha || 0);
62
+ }
63
+ defaultValueSubstitutor() {
64
+ return this.getState('value');
65
+ }
66
+ get valueSubstitutor() {
67
+ if (!this._value_substitutor) this._value_substitutor = (0, _substitutor.buildSubstitutor)(this.getState('value'), this) || this.defaultValueSubstitutor;
68
+ return this._value_substitutor;
69
+ }
70
+ get value() {
71
+ return Number(this.valueSubstitutor()) || 0;
72
+ }
73
+ set value(value) {
74
+ delete this._value_substitutor;
75
+ this.setState('value', Number((0, _utils.objToVal)(value)));
76
+ }
77
+ };
78
+ return A;
79
+ };
80
+ exports.default = _default;
81
+ //# sourceMappingURL=value-holder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"value-holder.js","names":["_utils","require","_substitutor","_default","superclass","A","animOnValueChange","value","animFromBase","base","_lastValue","diff","Number","_anim_alpha","animate","step","delta","invalidate","duration","options","x","ease","start","dispose","_value_substitutor","onchange","after","before","hasOwnProperty","animAlpha","animValue","defaultValueSubstitutor","getState","valueSubstitutor","buildSubstitutor","setState","objToVal","exports","default"],"sources":["../../../src/components/mixins/value-holder.js"],"sourcesContent":["/*\n * Copyright © HatioLab Inc. All rights reserved.\n */\n\n/*\n * ValueHolder 단일 숫자값을 value라는 속성으로 가지는 컴포넌트를 위한 Mixin임\n * value 속성을 가지는 컴포넌트는 다음의 특징을 갖는 것을 암묵적으로 동의한다.\n *\n * 1. value 속성은 Number 타입니다.\n * 1. value 속성은 expression을 통해서 컴포넌트 자신의 속성을 접근할 수 있고, 다른 컴포넌트의 data 속성을 접근할 수 있다.\n * 1. value 속성을 가지는 컴포넌트는 값 변화에 대해서 animation을 사용할 수 있다.\n *\n * TODO. min, max 값을 가지도록 한다.\n * TODO. animation 설정을 오버라이드 할 수 있도록 한다.\n */\n\nimport { objToVal } from '../../core/utils.js'\nimport { buildSubstitutor } from '../text/substitutor.js'\n\nexport default superclass => {\n var A = class extends superclass {\n animOnValueChange(value, animFromBase = false, base) {\n if (value == this._lastValue) {\n return\n }\n\n if (animFromBase) {\n var diff = value - (Number(base) || 0)\n } else {\n var diff = value - (this._lastValue || 0)\n }\n\n this._lastValue = value\n this._anim_alpha = -diff\n\n this.animate({\n step: delta => {\n this._anim_alpha = diff * (delta - 1)\n this.invalidate()\n },\n duration: 1000,\n delta: 'circ',\n options: {\n x: 1\n },\n ease: 'out'\n }).start()\n }\n\n dispose() {\n super.dispose()\n\n delete this._value_substitutor\n }\n\n onchange(after, before) {\n if (after.hasOwnProperty('value')) delete this._value_substitutor\n }\n\n get animAlpha() {\n return this._anim_alpha || 0\n }\n\n get animValue() {\n /* this.value 를 사용해서는 안된다. (성능 효율을 위해서.)*/\n return (this._lastValue || 0) + (this._anim_alpha || 0)\n }\n\n defaultValueSubstitutor() {\n return this.getState('value')\n }\n\n get valueSubstitutor() {\n if (!this._value_substitutor)\n this._value_substitutor = buildSubstitutor(this.getState('value'), this) || this.defaultValueSubstitutor\n\n return this._value_substitutor\n }\n\n get value() {\n return Number(this.valueSubstitutor()) || 0\n }\n\n set value(value) {\n delete this._value_substitutor\n this.setState('value', Number(objToVal(value)))\n }\n }\n\n return A\n}\n"],"mappings":";;;;;;AAgBA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AAjBA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAVA,IAAAE,QAAA,GAeeC,UAAU,IAAI;EAC3B,IAAIC,CAAC,GAAG,cAAcD,UAAU,CAAC;IAC/BE,iBAAiBA,CAACC,KAAK,EAAEC,YAAY,GAAG,KAAK,EAAEC,IAAI,EAAE;MACnD,IAAIF,KAAK,IAAI,IAAI,CAACG,UAAU,EAAE;QAC5B;MACF;MAEA,IAAIF,YAAY,EAAE;QAChB,IAAIG,IAAI,GAAGJ,KAAK,IAAIK,MAAM,CAACH,IAAI,CAAC,IAAI,CAAC,CAAC;MACxC,CAAC,MAAM;QACL,IAAIE,IAAI,GAAGJ,KAAK,IAAI,IAAI,CAACG,UAAU,IAAI,CAAC,CAAC;MAC3C;MAEA,IAAI,CAACA,UAAU,GAAGH,KAAK;MACvB,IAAI,CAACM,WAAW,GAAG,CAACF,IAAI;MAExB,IAAI,CAACG,OAAO,CAAC;QACXC,IAAI,EAAEC,KAAK,IAAI;UACb,IAAI,CAACH,WAAW,GAAGF,IAAI,IAAIK,KAAK,GAAG,CAAC,CAAC;UACrC,IAAI,CAACC,UAAU,CAAC,CAAC;QACnB,CAAC;QACDC,QAAQ,EAAE,IAAI;QACdF,KAAK,EAAE,MAAM;QACbG,OAAO,EAAE;UACPC,CAAC,EAAE;QACL,CAAC;QACDC,IAAI,EAAE;MACR,CAAC,CAAC,CAACC,KAAK,CAAC,CAAC;IACZ;IAEAC,OAAOA,CAAA,EAAG;MACR,KAAK,CAACA,OAAO,CAAC,CAAC;MAEf,OAAO,IAAI,CAACC,kBAAkB;IAChC;IAEAC,QAAQA,CAACC,KAAK,EAAEC,MAAM,EAAE;MACtB,IAAID,KAAK,CAACE,cAAc,CAAC,OAAO,CAAC,EAAE,OAAO,IAAI,CAACJ,kBAAkB;IACnE;IAEA,IAAIK,SAASA,CAAA,EAAG;MACd,OAAO,IAAI,CAAChB,WAAW,IAAI,CAAC;IAC9B;IAEA,IAAIiB,SAASA,CAAA,EAAG;MACd;MACA,OAAO,CAAC,IAAI,CAACpB,UAAU,IAAI,CAAC,KAAK,IAAI,CAACG,WAAW,IAAI,CAAC,CAAC;IACzD;IAEAkB,uBAAuBA,CAAA,EAAG;MACxB,OAAO,IAAI,CAACC,QAAQ,CAAC,OAAO,CAAC;IAC/B;IAEA,IAAIC,gBAAgBA,CAAA,EAAG;MACrB,IAAI,CAAC,IAAI,CAACT,kBAAkB,EAC1B,IAAI,CAACA,kBAAkB,GAAG,IAAAU,6BAAgB,EAAC,IAAI,CAACF,QAAQ,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,IAAI,IAAI,CAACD,uBAAuB;MAE1G,OAAO,IAAI,CAACP,kBAAkB;IAChC;IAEA,IAAIjB,KAAKA,CAAA,EAAG;MACV,OAAOK,MAAM,CAAC,IAAI,CAACqB,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC;IAC7C;IAEA,IAAI1B,KAAKA,CAACA,KAAK,EAAE;MACf,OAAO,IAAI,CAACiB,kBAAkB;MAC9B,IAAI,CAACW,QAAQ,CAAC,OAAO,EAAEvB,MAAM,CAAC,IAAAwB,eAAQ,EAAC7B,KAAK,CAAC,CAAC,CAAC;IACjD;EACF,CAAC;EAED,OAAOF,CAAC;AACV,CAAC;AAAAgC,OAAA,CAAAC,OAAA,GAAAnC,QAAA","ignoreList":[]}
@@ -0,0 +1,68 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = mutateBounds;
7
+ var _transcoord = require("../geometry/transcoord.js");
8
+ /*
9
+ * Copyright © HatioLab Inc. All rights reserved.
10
+ */
11
+
12
+ /*
13
+ * 바운드의 변경이, 컴포넌트의 현재 컴포넌트 rotation의 영향을 받아서 변형되어 보이지 않도록 하기위한 함수이다.
14
+ * 마치 현재 각도 상태에서 바운드변경을 일으키는 것처럼 보이게된다.
15
+ *
16
+ * logic에서는 컴포넌트 좌표 상태에서 바운드 변화를 제공한다.
17
+ * context 만약, 그리기 상태에서 mutateBounds를 사용하고, logic에서 사용해야 한다면, 제공한다.
18
+ *
19
+ * 일반적으로, 컴포넌트내 부분적인 바운드의 변화도 현재 컴포넌트의 rotation에 따라서,
20
+ * 전체적인 변화를 보이는 경우가 많다. 가시적으로 보이는 전체적인 모양을 고정하고 부분적인 바운드의 변경만이 화면에 적용되도록 하기 위해서 사용한다.
21
+ * 그렇게 하기 위해서, mutateBounds 내부적으로, bounds 전체에 대해서 변화가 발생하게 된다.
22
+ */
23
+
24
+ function mutateBounds(logic, context) {
25
+ var bounds = this.bounds;
26
+ var rotatePoint = this.rotatePoint;
27
+ var rotation = this.get('rotation');
28
+ var scale = this.get('scale');
29
+ if (logic) {
30
+ var new_bounds = logic.call(context, bounds);
31
+ if (new_bounds) bounds = new_bounds;
32
+ }
33
+ var {
34
+ left,
35
+ top,
36
+ width,
37
+ height
38
+ } = bounds;
39
+ var coords = [{
40
+ x: left,
41
+ y: top
42
+ }, {
43
+ x: left + width,
44
+ y: top + height
45
+ }];
46
+ coords = coords.map(point => {
47
+ return (0, _transcoord.transcoordRR)(point.x, point.y, rotatePoint, rotation, scale);
48
+ });
49
+ var left_top = coords[0];
50
+ var right_bottom = coords[1];
51
+ rotatePoint = {
52
+ x: (left_top.x + right_bottom.x) / 2,
53
+ y: (left_top.y + right_bottom.y) / 2
54
+ };
55
+ coords = coords.map(point => {
56
+ // 변경된 rotatePoint에 대해서 다시 transcoord함.
57
+ return (0, _transcoord.transcoordR)(point.x, point.y, rotatePoint, rotation, scale);
58
+ });
59
+ left_top = coords[0];
60
+ right_bottom = coords[1];
61
+ this.bounds = {
62
+ left: left_top.x,
63
+ top: left_top.y,
64
+ width: right_bottom.x - left_top.x,
65
+ height: right_bottom.y - left_top.y
66
+ };
67
+ }
68
+ //# sourceMappingURL=bounds.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bounds.js","names":["_transcoord","require","mutateBounds","logic","context","bounds","rotatePoint","rotation","get","scale","new_bounds","call","left","top","width","height","coords","x","y","map","point","transcoordRR","left_top","right_bottom","transcoordR"],"sources":["../../../src/components/mutater/bounds.js"],"sourcesContent":["/*\n * Copyright © HatioLab Inc. All rights reserved.\n */\n\n/*\n * 바운드의 변경이, 컴포넌트의 현재 컴포넌트 rotation의 영향을 받아서 변형되어 보이지 않도록 하기위한 함수이다.\n * 마치 현재 각도 상태에서 바운드변경을 일으키는 것처럼 보이게된다.\n *\n * logic에서는 컴포넌트 좌표 상태에서 바운드 변화를 제공한다.\n * context 만약, 그리기 상태에서 mutateBounds를 사용하고, logic에서 사용해야 한다면, 제공한다.\n *\n * 일반적으로, 컴포넌트내 부분적인 바운드의 변화도 현재 컴포넌트의 rotation에 따라서,\n * 전체적인 변화를 보이는 경우가 많다. 가시적으로 보이는 전체적인 모양을 고정하고 부분적인 바운드의 변경만이 화면에 적용되도록 하기 위해서 사용한다.\n * 그렇게 하기 위해서, mutateBounds 내부적으로, bounds 전체에 대해서 변화가 발생하게 된다.\n */\n\nimport { transcoordR, transcoordRR } from '../geometry/transcoord.js'\n\nexport default function mutateBounds(logic, context) {\n var bounds = this.bounds\n var rotatePoint = this.rotatePoint\n var rotation = this.get('rotation')\n var scale = this.get('scale')\n\n if (logic) {\n var new_bounds = logic.call(context, bounds)\n if (new_bounds) bounds = new_bounds\n }\n\n var { left, top, width, height } = bounds\n\n var coords = [\n {\n x: left,\n y: top\n },\n {\n x: left + width,\n y: top + height\n }\n ]\n\n coords = coords.map(point => {\n return transcoordRR(point.x, point.y, rotatePoint, rotation, scale)\n })\n\n var left_top = coords[0]\n var right_bottom = coords[1]\n\n rotatePoint = {\n x: (left_top.x + right_bottom.x) / 2,\n y: (left_top.y + right_bottom.y) / 2\n }\n\n coords = coords.map(point => {\n // 변경된 rotatePoint에 대해서 다시 transcoord함.\n return transcoordR(point.x, point.y, rotatePoint, rotation, scale)\n })\n\n left_top = coords[0]\n right_bottom = coords[1]\n\n this.bounds = {\n left: left_top.x,\n top: left_top.y,\n width: right_bottom.x - left_top.x,\n height: right_bottom.y - left_top.y\n }\n}\n"],"mappings":";;;;;;AAgBA,IAAAA,WAAA,GAAAC,OAAA;AAhBA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAIe,SAASC,YAAYA,CAACC,KAAK,EAAEC,OAAO,EAAE;EACnD,IAAIC,MAAM,GAAG,IAAI,CAACA,MAAM;EACxB,IAAIC,WAAW,GAAG,IAAI,CAACA,WAAW;EAClC,IAAIC,QAAQ,GAAG,IAAI,CAACC,GAAG,CAAC,UAAU,CAAC;EACnC,IAAIC,KAAK,GAAG,IAAI,CAACD,GAAG,CAAC,OAAO,CAAC;EAE7B,IAAIL,KAAK,EAAE;IACT,IAAIO,UAAU,GAAGP,KAAK,CAACQ,IAAI,CAACP,OAAO,EAAEC,MAAM,CAAC;IAC5C,IAAIK,UAAU,EAAEL,MAAM,GAAGK,UAAU;EACrC;EAEA,IAAI;IAAEE,IAAI;IAAEC,GAAG;IAAEC,KAAK;IAAEC;EAAO,CAAC,GAAGV,MAAM;EAEzC,IAAIW,MAAM,GAAG,CACX;IACEC,CAAC,EAAEL,IAAI;IACPM,CAAC,EAAEL;EACL,CAAC,EACD;IACEI,CAAC,EAAEL,IAAI,GAAGE,KAAK;IACfI,CAAC,EAAEL,GAAG,GAAGE;EACX,CAAC,CACF;EAEDC,MAAM,GAAGA,MAAM,CAACG,GAAG,CAACC,KAAK,IAAI;IAC3B,OAAO,IAAAC,wBAAY,EAACD,KAAK,CAACH,CAAC,EAAEG,KAAK,CAACF,CAAC,EAAEZ,WAAW,EAAEC,QAAQ,EAAEE,KAAK,CAAC;EACrE,CAAC,CAAC;EAEF,IAAIa,QAAQ,GAAGN,MAAM,CAAC,CAAC,CAAC;EACxB,IAAIO,YAAY,GAAGP,MAAM,CAAC,CAAC,CAAC;EAE5BV,WAAW,GAAG;IACZW,CAAC,EAAE,CAACK,QAAQ,CAACL,CAAC,GAAGM,YAAY,CAACN,CAAC,IAAI,CAAC;IACpCC,CAAC,EAAE,CAACI,QAAQ,CAACJ,CAAC,GAAGK,YAAY,CAACL,CAAC,IAAI;EACrC,CAAC;EAEDF,MAAM,GAAGA,MAAM,CAACG,GAAG,CAACC,KAAK,IAAI;IAC3B;IACA,OAAO,IAAAI,uBAAW,EAACJ,KAAK,CAACH,CAAC,EAAEG,KAAK,CAACF,CAAC,EAAEZ,WAAW,EAAEC,QAAQ,EAAEE,KAAK,CAAC;EACpE,CAAC,CAAC;EAEFa,QAAQ,GAAGN,MAAM,CAAC,CAAC,CAAC;EACpBO,YAAY,GAAGP,MAAM,CAAC,CAAC,CAAC;EAExB,IAAI,CAACX,MAAM,GAAG;IACZO,IAAI,EAAEU,QAAQ,CAACL,CAAC;IAChBJ,GAAG,EAAES,QAAQ,CAACJ,CAAC;IACfJ,KAAK,EAAES,YAAY,CAACN,CAAC,GAAGK,QAAQ,CAACL,CAAC;IAClCF,MAAM,EAAEQ,YAAY,CAACL,CAAC,GAAGI,QAAQ,CAACJ;EACpC,CAAC;AACH","ignoreList":[]}
@@ -0,0 +1,73 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = mutatePath;
7
+ /*
8
+ * Copyright © HatioLab Inc. All rights reserved.
9
+ */
10
+
11
+ /*
12
+ * 특정 패스의 변경이, 컴포넌트의 현재 컴포넌트 rotation의 영향을 받아서 변형되어 보이지 않도록 하기위한 함수이다.
13
+ * 마치 현재 각도 상태에서 PATH의 변경을 일으키는 것처럼 보이게된다.
14
+ * beforLogic에서는 컴포넌트 좌표 상태에서 패스 변화가 필요한 경우에 제공한다.
15
+ * afterLogic에서는 컨테이너 좌표 상태에서 패스 변화가 필요한 경우에 제공한다.
16
+ * context 만약, 그리기 상태에서 mutatePath를 사용하고, beforeLogic이나 afterLogic에서 사용해야 한다면, 제공한다.
17
+ *
18
+ * 일반적으로, 컴포넌트내 부분적인 path의 변화도 현재 컴포넌트의 rotation에 따라서,
19
+ * 전체적인 변화를 보이는 경우가 많다. 가시적으로 보이는 전체적인 모양을 고정하고 부분적인 패스의 변경만이 화면에 적용되도록 하기 위해서 사용한다.
20
+ * 그렇게 하기 위해서, mutatePath 내부적으로, path 전체에 대해서 변화가 발생하게 된다.
21
+ */
22
+
23
+ function mutatePath(beforeLogic, afterLogic, context) {
24
+ // 1. 컴포넌트의 path 정보를 가져온다.
25
+ var path = this.path;
26
+ var rotatePoint = this.rotatePoint;
27
+ var rotation = this.get('rotation');
28
+ var scale = this.get('scale');
29
+ if (beforeLogic) path = beforeLogic.call(context, path);
30
+ var path_in_parent = path.map(point => {
31
+ return this.transcoordS2P(point.x, point.y);
32
+ });
33
+
34
+ // 3. 이동한 핸들의 위치로 패스 정보를 수정한다. (핸들 위치는 transcoord하지 않은 화면위치값으로 한다.)
35
+ if (afterLogic) {
36
+ var path = afterLogic.call(context, path_in_parent);
37
+ if (path) path_in_parent = path;
38
+ }
39
+
40
+ // 4. 첫번째 패스 포인트를 임의의 센터로 정하고, 모든 패스정보를 transcoord시킨다.
41
+ var vcenter = {
42
+ x: 0,
43
+ y: 0
44
+ };
45
+ var path = path_in_parent.map(point => {
46
+ return this.transcoordP2S(point.x, point.y, vcenter);
47
+ });
48
+
49
+ // 5. 회전한 패스의 바운드를 구한다.
50
+ var left, right, top, bottom;
51
+ left = right = path[0].x;
52
+ top = bottom = path[0].y;
53
+ for (let i = 1; i < path.length; i++) {
54
+ let point = path[i];
55
+ if (point.x < left) left = point.x;else if (point.x > right) right = point.x;
56
+ if (point.y < top) top = point.y;else if (point.y > bottom) bottom = point.y;
57
+ }
58
+
59
+ // 6. 바운드에 기준해서 rotatePoint 값을 구한다.
60
+ rotatePoint = {
61
+ x: (left + right) / 2,
62
+ y: (top + bottom) / 2
63
+ };
64
+
65
+ // 7. 구한 center값을 다시 가상의 중심으로 reverTranscoord해서 정확한 중심값을 구한다.
66
+ rotatePoint = this.transcoordS2P(rotatePoint.x, rotatePoint.y, vcenter);
67
+
68
+ // 8. Keep한 패스의 모든 포지션에 center를 적용한 transcoord를 적용하여, 새로운 패스를 구한다.
69
+ this.path = path_in_parent.map(point => {
70
+ return this.transcoordP2S(point.x, point.y, rotatePoint);
71
+ });
72
+ }
73
+ //# sourceMappingURL=path.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"path.js","names":["mutatePath","beforeLogic","afterLogic","context","path","rotatePoint","rotation","get","scale","call","path_in_parent","map","point","transcoordS2P","x","y","vcenter","transcoordP2S","left","right","top","bottom","i","length"],"sources":["../../../src/components/mutater/path.js"],"sourcesContent":["/*\n * Copyright © HatioLab Inc. All rights reserved.\n */\n\n/*\n * 특정 패스의 변경이, 컴포넌트의 현재 컴포넌트 rotation의 영향을 받아서 변형되어 보이지 않도록 하기위한 함수이다.\n * 마치 현재 각도 상태에서 PATH의 변경을 일으키는 것처럼 보이게된다.\n * beforLogic에서는 컴포넌트 좌표 상태에서 패스 변화가 필요한 경우에 제공한다.\n * afterLogic에서는 컨테이너 좌표 상태에서 패스 변화가 필요한 경우에 제공한다.\n * context 만약, 그리기 상태에서 mutatePath를 사용하고, beforeLogic이나 afterLogic에서 사용해야 한다면, 제공한다.\n *\n * 일반적으로, 컴포넌트내 부분적인 path의 변화도 현재 컴포넌트의 rotation에 따라서,\n * 전체적인 변화를 보이는 경우가 많다. 가시적으로 보이는 전체적인 모양을 고정하고 부분적인 패스의 변경만이 화면에 적용되도록 하기 위해서 사용한다.\n * 그렇게 하기 위해서, mutatePath 내부적으로, path 전체에 대해서 변화가 발생하게 된다.\n */\n\nexport default function mutatePath(beforeLogic, afterLogic, context) {\n // 1. 컴포넌트의 path 정보를 가져온다.\n var path = this.path\n var rotatePoint = this.rotatePoint\n var rotation = this.get('rotation')\n var scale = this.get('scale')\n\n if (beforeLogic) path = beforeLogic.call(context, path)\n\n var path_in_parent = path.map(point => {\n return this.transcoordS2P(point.x, point.y)\n })\n\n // 3. 이동한 핸들의 위치로 패스 정보를 수정한다. (핸들 위치는 transcoord하지 않은 화면위치값으로 한다.)\n if (afterLogic) {\n var path = afterLogic.call(context, path_in_parent)\n if (path) path_in_parent = path\n }\n\n // 4. 첫번째 패스 포인트를 임의의 센터로 정하고, 모든 패스정보를 transcoord시킨다.\n var vcenter = { x: 0, y: 0 }\n var path = path_in_parent.map(point => {\n return this.transcoordP2S(point.x, point.y, vcenter)\n })\n\n // 5. 회전한 패스의 바운드를 구한다.\n var left, right, top, bottom\n\n left = right = path[0].x\n top = bottom = path[0].y\n\n for (let i = 1; i < path.length; i++) {\n let point = path[i]\n\n if (point.x < left) left = point.x\n else if (point.x > right) right = point.x\n\n if (point.y < top) top = point.y\n else if (point.y > bottom) bottom = point.y\n }\n\n // 6. 바운드에 기준해서 rotatePoint 값을 구한다.\n rotatePoint = {\n x: (left + right) / 2,\n y: (top + bottom) / 2\n }\n\n // 7. 구한 center값을 다시 가상의 중심으로 reverTranscoord해서 정확한 중심값을 구한다.\n rotatePoint = this.transcoordS2P(rotatePoint.x, rotatePoint.y, vcenter)\n\n // 8. Keep한 패스의 모든 포지션에 center를 적용한 transcoord를 적용하여, 새로운 패스를 구한다.\n this.path = path_in_parent.map(point => {\n return this.transcoordP2S(point.x, point.y, rotatePoint)\n })\n}\n"],"mappings":";;;;;;AAAA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEe,SAASA,UAAUA,CAACC,WAAW,EAAEC,UAAU,EAAEC,OAAO,EAAE;EACnE;EACA,IAAIC,IAAI,GAAG,IAAI,CAACA,IAAI;EACpB,IAAIC,WAAW,GAAG,IAAI,CAACA,WAAW;EAClC,IAAIC,QAAQ,GAAG,IAAI,CAACC,GAAG,CAAC,UAAU,CAAC;EACnC,IAAIC,KAAK,GAAG,IAAI,CAACD,GAAG,CAAC,OAAO,CAAC;EAE7B,IAAIN,WAAW,EAAEG,IAAI,GAAGH,WAAW,CAACQ,IAAI,CAACN,OAAO,EAAEC,IAAI,CAAC;EAEvD,IAAIM,cAAc,GAAGN,IAAI,CAACO,GAAG,CAACC,KAAK,IAAI;IACrC,OAAO,IAAI,CAACC,aAAa,CAACD,KAAK,CAACE,CAAC,EAAEF,KAAK,CAACG,CAAC,CAAC;EAC7C,CAAC,CAAC;;EAEF;EACA,IAAIb,UAAU,EAAE;IACd,IAAIE,IAAI,GAAGF,UAAU,CAACO,IAAI,CAACN,OAAO,EAAEO,cAAc,CAAC;IACnD,IAAIN,IAAI,EAAEM,cAAc,GAAGN,IAAI;EACjC;;EAEA;EACA,IAAIY,OAAO,GAAG;IAAEF,CAAC,EAAE,CAAC;IAAEC,CAAC,EAAE;EAAE,CAAC;EAC5B,IAAIX,IAAI,GAAGM,cAAc,CAACC,GAAG,CAACC,KAAK,IAAI;IACrC,OAAO,IAAI,CAACK,aAAa,CAACL,KAAK,CAACE,CAAC,EAAEF,KAAK,CAACG,CAAC,EAAEC,OAAO,CAAC;EACtD,CAAC,CAAC;;EAEF;EACA,IAAIE,IAAI,EAAEC,KAAK,EAAEC,GAAG,EAAEC,MAAM;EAE5BH,IAAI,GAAGC,KAAK,GAAGf,IAAI,CAAC,CAAC,CAAC,CAACU,CAAC;EACxBM,GAAG,GAAGC,MAAM,GAAGjB,IAAI,CAAC,CAAC,CAAC,CAACW,CAAC;EAExB,KAAK,IAAIO,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGlB,IAAI,CAACmB,MAAM,EAAED,CAAC,EAAE,EAAE;IACpC,IAAIV,KAAK,GAAGR,IAAI,CAACkB,CAAC,CAAC;IAEnB,IAAIV,KAAK,CAACE,CAAC,GAAGI,IAAI,EAAEA,IAAI,GAAGN,KAAK,CAACE,CAAC,MAC7B,IAAIF,KAAK,CAACE,CAAC,GAAGK,KAAK,EAAEA,KAAK,GAAGP,KAAK,CAACE,CAAC;IAEzC,IAAIF,KAAK,CAACG,CAAC,GAAGK,GAAG,EAAEA,GAAG,GAAGR,KAAK,CAACG,CAAC,MAC3B,IAAIH,KAAK,CAACG,CAAC,GAAGM,MAAM,EAAEA,MAAM,GAAGT,KAAK,CAACG,CAAC;EAC7C;;EAEA;EACAV,WAAW,GAAG;IACZS,CAAC,EAAE,CAACI,IAAI,GAAGC,KAAK,IAAI,CAAC;IACrBJ,CAAC,EAAE,CAACK,GAAG,GAAGC,MAAM,IAAI;EACtB,CAAC;;EAED;EACAhB,WAAW,GAAG,IAAI,CAACQ,aAAa,CAACR,WAAW,CAACS,CAAC,EAAET,WAAW,CAACU,CAAC,EAAEC,OAAO,CAAC;;EAEvE;EACA,IAAI,CAACZ,IAAI,GAAGM,cAAc,CAACC,GAAG,CAACC,KAAK,IAAI;IACtC,OAAO,IAAI,CAACK,aAAa,CAACL,KAAK,CAACE,CAAC,EAAEF,KAAK,CAACG,CAAC,EAAEV,WAAW,CAAC;EAC1D,CAAC,CAAC;AACJ","ignoreList":[]}