@hatiolab/things-scene 9.0.0-beta.34 → 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 (386) 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
  386. package/things-scene.d.ts +1 -0
@@ -0,0 +1,331 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _lit = require("lit");
8
+ var _index = require("../layout/index.js");
9
+ var _component = _interopRequireDefault(require("./component.js"));
10
+ var _containerAbstract = _interopRequireDefault(require("./container-abstract.js"));
11
+ var _htmlElement = _interopRequireDefault(require("./mixins/html-element.js"));
12
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
13
+ function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
14
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
15
+ function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } /*
16
+ * Copyright © HatioLab Inc. All rights reserved.
17
+ */
18
+ const SCALE_DEFAULT = {
19
+ x: 1,
20
+ y: 1
21
+ };
22
+ const DEFAULT_STYLE = {
23
+ boxSizing: 'border-box',
24
+ margin: '0px',
25
+ position: 'absolute',
26
+ outline: 'none'
27
+ };
28
+ const NATURE = {
29
+ mutable: false,
30
+ resizable: true,
31
+ rotatable: true,
32
+ properties: [{
33
+ type: 'layout',
34
+ label: 'layout',
35
+ name: 'layoutOption'
36
+ }, {
37
+ type: 'checkbox',
38
+ label: 'closable',
39
+ name: 'closable'
40
+ }, {
41
+ type: 'checkbox',
42
+ label: 'draggable',
43
+ name: 'draggable'
44
+ }, {
45
+ type: 'checkbox',
46
+ label: 'minimizable',
47
+ name: 'minimizable'
48
+ }, {
49
+ type: 'checkbox',
50
+ label: 'minimized',
51
+ name: 'minimized'
52
+ }],
53
+ help: 'scene/component/container'
54
+ };
55
+ class Container extends (0, _htmlElement.default)(_containerAbstract.default) {
56
+ constructor(...args) {
57
+ super(...args);
58
+ _defineProperty(this, "startDragging", e => {
59
+ if (!this.state.draggable) {
60
+ return;
61
+ }
62
+ e.preventDefault();
63
+ e.stopPropagation();
64
+ let startX = e.clientX;
65
+ let startY = e.clientY;
66
+ const {
67
+ left,
68
+ top
69
+ } = this.bounds;
70
+ const transform = this.rootModel.overlay.style.transform;
71
+ const scaleMatch = transform.match(/scale\(([^,]+),\s*([^)]+)\)/);
72
+ const sx = scaleMatch ? parseFloat(scaleMatch[1]) : 1;
73
+ const sy = scaleMatch ? parseFloat(scaleMatch[2]) : sx;
74
+ const onMouseMove = e => {
75
+ e.preventDefault();
76
+ e.stopPropagation();
77
+ const dx = (e.clientX - startX) / sx;
78
+ const dy = (e.clientY - startY) / sy;
79
+ this.setState({
80
+ left: left + dx,
81
+ top: top + dy
82
+ });
83
+ };
84
+ const onMouseUp = e => {
85
+ e.preventDefault();
86
+ e.stopPropagation();
87
+ document.removeEventListener('mousemove', onMouseMove, true);
88
+ document.removeEventListener('mouseup', onMouseUp, true);
89
+ };
90
+ document.addEventListener('mousemove', onMouseMove, true);
91
+ document.addEventListener('mouseup', onMouseUp, true);
92
+ });
93
+ _defineProperty(this, "toggleMinimizable", () => {
94
+ const {
95
+ minimized
96
+ } = this.state;
97
+ this.setState('minimized', !minimized);
98
+ });
99
+ _defineProperty(this, "closeContainer", () => {
100
+ this.setState('hidden', true);
101
+ });
102
+ }
103
+ get tagName() {
104
+ return 'div';
105
+ }
106
+ get nature() {
107
+ return NATURE;
108
+ }
109
+ setElementProperties(element) {}
110
+ get layout() {
111
+ return _index.Layout.get(this.get('layout')) || _index.HTMLAbsoluteLayout;
112
+ }
113
+ reposition() {
114
+ if (!this.element) return;
115
+ var component = this;
116
+ var {
117
+ id,
118
+ class: className,
119
+ scale = SCALE_DEFAULT
120
+ } = component.state;
121
+ var {
122
+ rotation = 0,
123
+ hidden
124
+ } = component;
125
+ var {
126
+ left,
127
+ top,
128
+ width,
129
+ height
130
+ } = component.bounds;
131
+ var cx = width / 2;
132
+ var cy = height / 2;
133
+
134
+ // element의 기본 속성을 설정한다.
135
+ var element = component.element;
136
+ element.hidden = hidden;
137
+ if (id) element.id = id;
138
+ if (className) element.className = className;
139
+
140
+ // element의 기본 style을 설정한다.
141
+ Object.assign(element.style, DEFAULT_STYLE, {
142
+ left: left + 'px',
143
+ top: top + 'px',
144
+ width: '0px',
145
+ height: '0px',
146
+ backgroundColor: 'transparent'
147
+ });
148
+ var delta = component.delta();
149
+ var sx = (scale && scale.x || 1) * delta.sx;
150
+ var sy = (scale && scale.y || 1) * delta.sy;
151
+ var theta = (rotation || 0) + delta.theta;
152
+ var tx = delta.tx || 0;
153
+ var ty = delta.ty || 0;
154
+
155
+ /* CONFIRM-ME `transform: perspective(1px)` 스타일 설정은 scaling된 dom element를 좀 더 선명하게 보이도록 해준다. (Chrome 브라우저에서) */
156
+ element.style.transform = `translate(${tx + cx}px, ${ty + cy}px) rotate(${theta}rad) translate(${-cx}px, ${-cy}px) scale(${sx}, ${sy}) perspective(1px)`;
157
+ }
158
+ set path(path) {
159
+ const {
160
+ minimized
161
+ } = this.state;
162
+ var left_top = path[0];
163
+ var right_bottom = path[2];
164
+ if (minimized) {
165
+ this.set({
166
+ left: left_top.x,
167
+ top: left_top.y,
168
+ width: right_bottom.x - left_top.x
169
+ });
170
+ } else {
171
+ this.set({
172
+ left: left_top.x,
173
+ top: left_top.y,
174
+ width: right_bottom.x - left_top.x,
175
+ height: right_bottom.y - left_top.y
176
+ });
177
+ }
178
+ }
179
+ get path() {
180
+ var {
181
+ left = 0,
182
+ top = 0,
183
+ width = 0,
184
+ height = 0
185
+ } = this.state;
186
+ return [{
187
+ x: left,
188
+ y: top
189
+ }, {
190
+ x: left + width,
191
+ y: top
192
+ }, {
193
+ x: left + width,
194
+ y: top + height
195
+ }, {
196
+ x: left,
197
+ y: top + height
198
+ }];
199
+ }
200
+ get bounds() {
201
+ const {
202
+ left = 0,
203
+ top = 0,
204
+ width = 0,
205
+ height = 0
206
+ } = this.state;
207
+ return {
208
+ left,
209
+ top,
210
+ width,
211
+ height
212
+ };
213
+ }
214
+ set bounds(bounds) {
215
+ const {
216
+ minimized
217
+ } = this.state;
218
+ const {
219
+ left = 0,
220
+ top = 0,
221
+ width = 0,
222
+ height = 0
223
+ } = bounds;
224
+ if (minimized) {
225
+ this.set({
226
+ left,
227
+ top,
228
+ width
229
+ });
230
+ } else {
231
+ this.set({
232
+ left,
233
+ top,
234
+ width,
235
+ height
236
+ });
237
+ }
238
+ }
239
+ onchange(after, before) {
240
+ super.onchange(after, before);
241
+ if ('draggable' in after || 'minimizable' in after || 'closable' in after || 'minimized' in after || 'width' in after || 'height' in after) {
242
+ this.onchangeButtons();
243
+ }
244
+ if ('minimized' in after) {
245
+ this.onchangeMinimized();
246
+ }
247
+ }
248
+ createElement() {
249
+ super.createElement();
250
+ this.onchangeButtons();
251
+ this.onchangeMinimized();
252
+ }
253
+ onchangeButtons() {
254
+ if (!this.element) {
255
+ return;
256
+ }
257
+ console.log('element', this.getState('id'));
258
+ const {
259
+ draggable,
260
+ minimizable,
261
+ closable,
262
+ minimized
263
+ } = this.state;
264
+ const {
265
+ width
266
+ } = this.bounds;
267
+ this.element.style.setProperty('--container-width', `${width}px`);
268
+ (0, _lit.render)((0, _lit.html)`
269
+ <style>
270
+ .buttons {
271
+ position: absolute;
272
+ display: flex;
273
+ flex-direction: row;
274
+ top: 0;
275
+ left: 0;
276
+ width: var(--container-width);
277
+ padding: 2px;
278
+ margin: 0;
279
+ gap: 2px;
280
+ box-sizing: border-box;
281
+ background-color: transparent;
282
+ }
283
+
284
+ span {
285
+ flex: 1;
286
+ }
287
+
288
+ .buttons button {
289
+ background: transparent;
290
+ border: none;
291
+ cursor: pointer;
292
+ font-family: Material Symbols Outlined;
293
+ font-size: 16px;
294
+ border-radius: 4px;
295
+ color: white;
296
+ background-color: black;
297
+ opacity: 0.3;
298
+ width: 20px;
299
+ height: 20px;
300
+ z-index: 1;
301
+ padding: 0;
302
+ margin: 0;
303
+ border: 0px;
304
+ text-align: center;
305
+ }
306
+ </style>
307
+
308
+ <div class="buttons" @mousedown=${this.startDragging}>
309
+ <span></span>
310
+ ${draggable ? (0, _lit.html)`<button class="draggable">drag_pan</button>` : _lit.nothing}
311
+ ${minimizable ? (0, _lit.html)`<button class="minimizable" @click=${this.toggleMinimizable}>
312
+ ${minimized ? 'crop_square' : 'minimize'}
313
+ </button>` : _lit.nothing}
314
+ ${closable ? (0, _lit.html)`<button class="closable" @click=${this.closeContainer}>close</button>` : _lit.nothing}
315
+ </div>
316
+ `, this.element);
317
+ }
318
+ onchangeMinimized() {
319
+ const {
320
+ minimized
321
+ } = this.state;
322
+ if (minimized) {
323
+ this.setState('height', 24);
324
+ } else {
325
+ this.setState('height', this.get('height'));
326
+ }
327
+ }
328
+ }
329
+ exports.default = Container;
330
+ _component.default.register('container', Container);
331
+ //# sourceMappingURL=container.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"container.js","names":["_lit","require","_index","_component","_interopRequireDefault","_containerAbstract","_htmlElement","e","__esModule","default","_defineProperty","r","t","_toPropertyKey","Object","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","SCALE_DEFAULT","x","y","DEFAULT_STYLE","boxSizing","margin","position","outline","NATURE","mutable","resizable","rotatable","properties","type","label","name","help","Container","MixinHTMLElement","ContainerAbstract","constructor","args","state","draggable","preventDefault","stopPropagation","startX","clientX","startY","clientY","left","top","bounds","transform","rootModel","overlay","style","scaleMatch","match","sx","parseFloat","sy","onMouseMove","dx","dy","setState","onMouseUp","document","removeEventListener","addEventListener","minimized","tagName","nature","setElementProperties","element","layout","Layout","get","HTMLAbsoluteLayout","reposition","component","id","class","className","scale","rotation","hidden","width","height","cx","cy","assign","backgroundColor","delta","theta","tx","ty","path","left_top","right_bottom","set","onchange","after","before","onchangeButtons","onchangeMinimized","createElement","console","log","getState","minimizable","closable","setProperty","render","html","startDragging","nothing","toggleMinimizable","closeContainer","exports","Component","register"],"sources":["../../src/components/container.js"],"sourcesContent":["/*\n * Copyright © HatioLab Inc. All rights reserved.\n */\nimport { html, nothing, render } from 'lit'\n\nimport { HTMLAbsoluteLayout, Layout } from '../layout/index.js'\n\nimport Component from './component.js'\nimport ContainerAbstract from './container-abstract.js'\nimport MixinHTMLElement from './mixins/html-element.js'\n\nconst SCALE_DEFAULT = { x: 1, y: 1 }\nconst DEFAULT_STYLE = {\n boxSizing: 'border-box',\n margin: '0px',\n position: 'absolute',\n outline: 'none'\n}\n\nconst NATURE = {\n mutable: false,\n resizable: true,\n rotatable: true,\n properties: [\n {\n type: 'layout',\n label: 'layout',\n name: 'layoutOption'\n },\n {\n type: 'checkbox',\n label: 'closable',\n name: 'closable'\n },\n {\n type: 'checkbox',\n label: 'draggable',\n name: 'draggable'\n },\n {\n type: 'checkbox',\n label: 'minimizable',\n name: 'minimizable'\n },\n {\n type: 'checkbox',\n label: 'minimized',\n name: 'minimized'\n }\n ],\n help: 'scene/component/container'\n}\n\nexport default class Container extends MixinHTMLElement(ContainerAbstract) {\n get tagName() {\n return 'div'\n }\n\n get nature() {\n return NATURE\n }\n\n setElementProperties(element) {}\n\n get layout() {\n return Layout.get(this.get('layout')) || HTMLAbsoluteLayout\n }\n\n reposition() {\n if (!this.element) return\n\n var component = this\n\n var { id, class: className, scale = SCALE_DEFAULT } = component.state\n\n var { rotation = 0, hidden } = component\n\n var { left, top, width, height } = component.bounds\n var cx = width / 2\n var cy = height / 2\n\n // element의 기본 속성을 설정한다.\n var element = component.element\n\n element.hidden = hidden\n if (id) element.id = id\n if (className) element.className = className\n\n // element의 기본 style을 설정한다.\n Object.assign(element.style, DEFAULT_STYLE, {\n left: left + 'px',\n top: top + 'px',\n width: '0px',\n height: '0px',\n backgroundColor: 'transparent'\n })\n\n var delta = component.delta()\n var sx = ((scale && scale.x) || 1) * delta.sx\n var sy = ((scale && scale.y) || 1) * delta.sy\n var theta = (rotation || 0) + delta.theta\n var tx = delta.tx || 0\n var ty = delta.ty || 0\n\n /* CONFIRM-ME `transform: perspective(1px)` 스타일 설정은 scaling된 dom element를 좀 더 선명하게 보이도록 해준다. (Chrome 브라우저에서) */\n element.style.transform = `translate(${tx + cx}px, ${\n ty + cy\n }px) rotate(${theta}rad) translate(${-cx}px, ${-cy}px) scale(${sx}, ${sy}) perspective(1px)`\n }\n\n set path(path) {\n const { minimized } = this.state\n\n var left_top = path[0]\n var right_bottom = path[2]\n\n if (minimized) {\n this.set({\n left: left_top.x,\n top: left_top.y,\n width: right_bottom.x - left_top.x\n })\n } else {\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\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 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 const { minimized } = this.state\n const { left = 0, top = 0, width = 0, height = 0 } = bounds\n\n if (minimized) {\n this.set({\n left,\n top,\n width\n })\n } else {\n this.set({\n left,\n top,\n width,\n height\n })\n }\n }\n\n onchange(after, before) {\n super.onchange(after, before)\n\n if (\n 'draggable' in after ||\n 'minimizable' in after ||\n 'closable' in after ||\n 'minimized' in after ||\n 'width' in after ||\n 'height' in after\n ) {\n this.onchangeButtons()\n }\n\n if ('minimized' in after) {\n this.onchangeMinimized()\n }\n }\n\n createElement() {\n super.createElement()\n\n this.onchangeButtons()\n this.onchangeMinimized()\n }\n\n onchangeButtons() {\n if (!this.element) {\n return\n }\n\n console.log('element', this.getState('id'))\n\n const { draggable, minimizable, closable, minimized } = this.state\n const { width } = this.bounds\n\n this.element.style.setProperty('--container-width', `${width}px`)\n\n render(\n html`\n <style>\n .buttons {\n position: absolute;\n display: flex;\n flex-direction: row;\n top: 0;\n left: 0;\n width: var(--container-width);\n padding: 2px;\n margin: 0;\n gap: 2px;\n box-sizing: border-box;\n background-color: transparent;\n }\n\n span {\n flex: 1;\n }\n\n .buttons button {\n background: transparent;\n border: none;\n cursor: pointer;\n font-family: Material Symbols Outlined;\n font-size: 16px;\n border-radius: 4px;\n color: white;\n background-color: black;\n opacity: 0.3;\n width: 20px;\n height: 20px;\n z-index: 1;\n padding: 0;\n margin: 0;\n border: 0px;\n text-align: center;\n }\n </style>\n\n <div class=\"buttons\" @mousedown=${this.startDragging}>\n <span></span>\n ${draggable ? html`<button class=\"draggable\">drag_pan</button>` : nothing}\n ${minimizable\n ? html`<button class=\"minimizable\" @click=${this.toggleMinimizable}>\n ${minimized ? 'crop_square' : 'minimize'}\n </button>`\n : nothing}\n ${closable ? html`<button class=\"closable\" @click=${this.closeContainer}>close</button>` : nothing}\n </div>\n `,\n this.element\n )\n }\n\n startDragging = e => {\n if (!this.state.draggable) {\n return\n }\n\n e.preventDefault()\n e.stopPropagation()\n\n let startX = e.clientX\n let startY = e.clientY\n\n const { left, top } = this.bounds\n\n const transform = this.rootModel.overlay.style.transform\n const scaleMatch = transform.match(/scale\\(([^,]+),\\s*([^)]+)\\)/)\n\n const sx = scaleMatch ? parseFloat(scaleMatch[1]) : 1\n const sy = scaleMatch ? parseFloat(scaleMatch[2]) : sx\n\n const onMouseMove = e => {\n e.preventDefault()\n e.stopPropagation()\n\n const dx = (e.clientX - startX) / sx\n const dy = (e.clientY - startY) / sy\n\n this.setState({\n left: left + dx,\n top: top + dy\n })\n }\n\n const onMouseUp = e => {\n e.preventDefault()\n e.stopPropagation()\n\n document.removeEventListener('mousemove', onMouseMove, true)\n document.removeEventListener('mouseup', onMouseUp, true)\n }\n\n document.addEventListener('mousemove', onMouseMove, true)\n document.addEventListener('mouseup', onMouseUp, true)\n }\n\n toggleMinimizable = () => {\n const { minimized } = this.state\n this.setState('minimized', !minimized)\n }\n\n onchangeMinimized() {\n const { minimized } = this.state\n\n if (minimized) {\n this.setState('height', 24)\n } else {\n this.setState('height', this.get('height'))\n }\n }\n\n closeContainer = () => {\n this.setState('hidden', true)\n }\n}\n\nComponent.register('container', Container)\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,82 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _objAccessor = _interopRequireDefault(require("../../core/obj-accessor.js"));
8
+ var _evaluator = _interopRequireDefault(require("./evaluator.js"));
9
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
10
+ /*
11
+ * Copyright © HatioLab Inc. All rights reserved.
12
+ */
13
+
14
+ function propType(property) {
15
+ switch (property) {
16
+ // case 'text':
17
+ // case 'fontColor':
18
+ case 'ref':
19
+ case 'fillStyle':
20
+ case 'strokeStyle':
21
+ return 'string';
22
+ // case 'value':
23
+ // case 'rotation':
24
+ // return 'number';
25
+ default:
26
+ return;
27
+ }
28
+ }
29
+ class DataMapping {
30
+ constructor(model, owner) {
31
+ this.owner = owner;
32
+ this.model = model;
33
+ }
34
+ dispose() {
35
+ delete this._model;
36
+ delete this.owner;
37
+ delete this.evaluator;
38
+ delete this.accessor;
39
+ delete this.source;
40
+ }
41
+ get model() {
42
+ return this._model;
43
+ }
44
+ set model(model) {
45
+ var {
46
+ target,
47
+ property,
48
+ rule,
49
+ param,
50
+ accessor
51
+ } = model;
52
+ this._model = model;
53
+ this.evaluator = (0, _evaluator.default)(this, this.owner, rule, param, propType(property));
54
+ this.accessor = (0, _objAccessor.default)(accessor);
55
+ const matches = target.match(/\[(.*?)\]/);
56
+ if (matches) {
57
+ var [propAccessor, partAccessor] = matches[1].split(':');
58
+ this.propAccessor = (0, _objAccessor.default)(propAccessor);
59
+ this.partAccessor = (0, _objAccessor.default)(partAccessor);
60
+ }
61
+ }
62
+ get target() {
63
+ return this.model.target;
64
+ }
65
+ get property() {
66
+ return this.model.property;
67
+ }
68
+ get source() {
69
+ return this.model.source;
70
+ }
71
+ get param() {
72
+ return this.model.param;
73
+ }
74
+ get ndnsp() {
75
+ return !!this.model.ndnsp; /* no data no spreading */
76
+ }
77
+ get partial() {
78
+ return !!this.model.partial; /* partial spreading */
79
+ }
80
+ }
81
+ exports.default = DataMapping;
82
+ //# sourceMappingURL=data-mapping.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data-mapping.js","names":["_objAccessor","_interopRequireDefault","require","_evaluator","e","__esModule","default","propType","property","DataMapping","constructor","model","owner","dispose","_model","evaluator","accessor","source","target","rule","param","buildEvaluator","buildAccessor","matches","match","propAccessor","partAccessor","split","ndnsp","partial","exports"],"sources":["../../../src/components/data/data-mapping.js"],"sourcesContent":["/*\n * Copyright © HatioLab Inc. All rights reserved.\n */\n\nimport buildAccessor from '../../core/obj-accessor.js'\nimport buildEvaluator from './evaluator.js'\n\nfunction propType(property) {\n switch (property) {\n // case 'text':\n // case 'fontColor':\n case 'ref':\n case 'fillStyle':\n case 'strokeStyle':\n return 'string'\n // case 'value':\n // case 'rotation':\n // return 'number';\n default:\n return\n }\n}\n\nexport default class DataMapping {\n constructor(model, owner) {\n this.owner = owner\n this.model = model\n }\n\n dispose() {\n delete this._model\n delete this.owner\n delete this.evaluator\n delete this.accessor\n delete this.source\n }\n\n get model() {\n return this._model\n }\n\n set model(model) {\n var { target, property, rule, param, accessor } = model\n\n this._model = model\n\n this.evaluator = buildEvaluator(this, this.owner, rule, param, propType(property))\n this.accessor = buildAccessor(accessor)\n\n const matches = target.match(/\\[(.*?)\\]/)\n if (matches) {\n var [propAccessor, partAccessor] = matches[1].split(':')\n\n this.propAccessor = buildAccessor(propAccessor)\n this.partAccessor = buildAccessor(partAccessor)\n }\n }\n\n get target() {\n return this.model.target\n }\n\n get property() {\n return this.model.property\n }\n\n get source() {\n return this.model.source\n }\n\n get param() {\n return this.model.param\n }\n\n get ndnsp() {\n return !!this.model.ndnsp /* no data no spreading */\n }\n\n get partial() {\n return !!this.model.partial /* partial spreading */\n }\n}\n"],"mappings":";;;;;;AAIA,IAAAA,YAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,UAAA,GAAAF,sBAAA,CAAAC,OAAA;AAA2C,SAAAD,uBAAAG,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAL3C;AACA;AACA;;AAKA,SAASG,QAAQA,CAACC,QAAQ,EAAE;EAC1B,QAAQA,QAAQ;IACd;IACA;IACA,KAAK,KAAK;IACV,KAAK,WAAW;IAChB,KAAK,aAAa;MAChB,OAAO,QAAQ;IACjB;IACA;IACA;IACA;MACE;EACJ;AACF;AAEe,MAAMC,WAAW,CAAC;EAC/BC,WAAWA,CAACC,KAAK,EAAEC,KAAK,EAAE;IACxB,IAAI,CAACA,KAAK,GAAGA,KAAK;IAClB,IAAI,CAACD,KAAK,GAAGA,KAAK;EACpB;EAEAE,OAAOA,CAAA,EAAG;IACR,OAAO,IAAI,CAACC,MAAM;IAClB,OAAO,IAAI,CAACF,KAAK;IACjB,OAAO,IAAI,CAACG,SAAS;IACrB,OAAO,IAAI,CAACC,QAAQ;IACpB,OAAO,IAAI,CAACC,MAAM;EACpB;EAEA,IAAIN,KAAKA,CAAA,EAAG;IACV,OAAO,IAAI,CAACG,MAAM;EACpB;EAEA,IAAIH,KAAKA,CAACA,KAAK,EAAE;IACf,IAAI;MAAEO,MAAM;MAAEV,QAAQ;MAAEW,IAAI;MAAEC,KAAK;MAAEJ;IAAS,CAAC,GAAGL,KAAK;IAEvD,IAAI,CAACG,MAAM,GAAGH,KAAK;IAEnB,IAAI,CAACI,SAAS,GAAG,IAAAM,kBAAc,EAAC,IAAI,EAAE,IAAI,CAACT,KAAK,EAAEO,IAAI,EAAEC,KAAK,EAAEb,QAAQ,CAACC,QAAQ,CAAC,CAAC;IAClF,IAAI,CAACQ,QAAQ,GAAG,IAAAM,oBAAa,EAACN,QAAQ,CAAC;IAEvC,MAAMO,OAAO,GAAGL,MAAM,CAACM,KAAK,CAAC,WAAW,CAAC;IACzC,IAAID,OAAO,EAAE;MACX,IAAI,CAACE,YAAY,EAAEC,YAAY,CAAC,GAAGH,OAAO,CAAC,CAAC,CAAC,CAACI,KAAK,CAAC,GAAG,CAAC;MAExD,IAAI,CAACF,YAAY,GAAG,IAAAH,oBAAa,EAACG,YAAY,CAAC;MAC/C,IAAI,CAACC,YAAY,GAAG,IAAAJ,oBAAa,EAACI,YAAY,CAAC;IACjD;EACF;EAEA,IAAIR,MAAMA,CAAA,EAAG;IACX,OAAO,IAAI,CAACP,KAAK,CAACO,MAAM;EAC1B;EAEA,IAAIV,QAAQA,CAAA,EAAG;IACb,OAAO,IAAI,CAACG,KAAK,CAACH,QAAQ;EAC5B;EAEA,IAAIS,MAAMA,CAAA,EAAG;IACX,OAAO,IAAI,CAACN,KAAK,CAACM,MAAM;EAC1B;EAEA,IAAIG,KAAKA,CAAA,EAAG;IACV,OAAO,IAAI,CAACT,KAAK,CAACS,KAAK;EACzB;EAEA,IAAIQ,KAAKA,CAAA,EAAG;IACV,OAAO,CAAC,CAAC,IAAI,CAACjB,KAAK,CAACiB,KAAK,EAAC;EAC5B;EAEA,IAAIC,OAAOA,CAAA,EAAG;IACZ,OAAO,CAAC,CAAC,IAAI,CAAClB,KAAK,CAACkB,OAAO,EAAC;EAC9B;AACF;AAACC,OAAA,CAAAxB,OAAA,GAAAG,WAAA","ignoreList":[]}
@@ -0,0 +1,166 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.buildMappings = buildMappings;
7
+ exports.disposeMappings = disposeMappings;
8
+ exports.executeMappings = executeMappings;
9
+ exports.onchangeData = onchangeData;
10
+ exports.onchangeMappings = onchangeMappings;
11
+ var _logger = require("../../core/logger.js");
12
+ var _dataMapping = _interopRequireDefault(require("./data-mapping.js"));
13
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
14
+ /*
15
+ * Copyright © HatioLab Inc. All rights reserved.
16
+ */
17
+
18
+ function setTargetsProperty(targets, property, value, partial) {
19
+ if (partial) {
20
+ targets.forEach(component => component[property] = {
21
+ ...component[property],
22
+ ...value
23
+ });
24
+ } else {
25
+ targets.forEach(component => component[property] = value);
26
+ }
27
+ }
28
+ function executeMappings(force = false) {
29
+ if (!force && this.data === undefined) {
30
+ return;
31
+ }
32
+ this.mappings && this.mappings.forEach(mapping => {
33
+ try {
34
+ var {
35
+ source,
36
+ target,
37
+ property,
38
+ accessor,
39
+ propAccessor,
40
+ partAccessor,
41
+ ndnsp = false,
42
+ partial = false
43
+ } = mapping;
44
+ var data;
45
+ if (source && source != '(self)') {
46
+ if (source.startsWith('#')) {
47
+ source = source.substring(1);
48
+ }
49
+ data = this.root.findById(source)?.data || {};
50
+ } else {
51
+ data = this.data;
52
+ }
53
+ var accessive = accessor(data);
54
+ /*
55
+ accessive : accessor에 의해서 한정된 대상 데이터
56
+ accessive가 undefined 라면,
57
+ target 설정이 '()', '(key)', '[prop]' 형태인 경우에는 데이타 전달 타겟을 설정할 수 없으므로 더 이상 진행할 필요가 없다.
58
+ target 설정이 '#id', '.class' 인 경우에는 undefined 값도 스프레드(전파) 되어야 한다.
59
+ */
60
+
61
+ target = target.trim();
62
+ if (target == '(root)' || target == '(key)') {
63
+ if (accessive == undefined) {
64
+ return;
65
+ }
66
+ // TODO (root) 제거.
67
+ let targets = Object.keys(accessive || {}).map(key => this.root.findOrCreate(key)).filter(Boolean).flat();
68
+ if (targets.length > 0) {
69
+ targets.forEach(component => {
70
+ let value = mapping.evaluator(accessive[component.get('id')], [component]);
71
+ if (property && property !== '(action)' && (!ndnsp || value || value === 0 || value === false)) {
72
+ if (partial) {
73
+ component[property] = {
74
+ ...component[property],
75
+ ...value
76
+ };
77
+ } else {
78
+ component[property] = value;
79
+ }
80
+ }
81
+ });
82
+ }
83
+ } else if (target.startsWith('[')) {
84
+ if (accessive == undefined) {
85
+ return;
86
+ }
87
+ // const matches = target.match(/\[(.*?)\]/)
88
+
89
+ // if (!matches) {
90
+ // throw String("mapping target should end with ']' to designate property-id.(" + target + ')')
91
+ // }
92
+
93
+ // var id_prop = matches[1].split(':')[0]
94
+
95
+ if (accessive instanceof Array) {
96
+ accessive.forEach(data => {
97
+ let id = propAccessor(data);
98
+ if (id) {
99
+ let components = this.root.findOrCreate(id);
100
+ if (components) {
101
+ let value = mapping.evaluator(partAccessor(data), components);
102
+ if (property && property !== '(action)' && (!ndnsp || value || value === 0 || value === false)) {
103
+ setTargetsProperty(components, property, value, partial);
104
+ }
105
+ }
106
+ }
107
+ });
108
+ } else if (accessive instanceof Object) {
109
+ let id = propAccessor(accessive);
110
+ if (id) {
111
+ let components = this.root.findOrCreate(id);
112
+ if (components) {
113
+ let value = mapping.evaluator(partAccessor(accessive), components);
114
+ if (property && property !== '(action)' && (!ndnsp || value || value === 0 || value === false)) {
115
+ setTargetsProperty(components, property, value, partial);
116
+ }
117
+ }
118
+ }
119
+ } else {
120
+ throw String('mapping data should be an object to target property-id.(' + accessive + ')');
121
+ }
122
+ } else {
123
+ let targets = this.root.findAll(target, this);
124
+ if (targets.length > 0) {
125
+ let value = mapping.evaluator(accessive, targets);
126
+ if (property && property !== '(action)' && (!ndnsp || value || value === 0 || value === false)) {
127
+ setTargetsProperty(targets, property, value, partial);
128
+ }
129
+ }
130
+ }
131
+ } catch (e) {
132
+ (0, _logger.error)(e, this, mapping);
133
+ }
134
+ });
135
+ }
136
+ function onchangeData(after, before) {
137
+ if (this.state.persistent) {
138
+ this.app?.isViewMode && this.app?.dataStorage.save(this, after.data);
139
+ }
140
+
141
+ /* excuteMappings forcely */
142
+ executeMappings.call(this, [true]);
143
+ }
144
+ function buildMappings() {
145
+ if (!this._model.mappings) {
146
+ this._mappings = [];
147
+ return;
148
+ }
149
+ if (!this._model.mappings instanceof Array) {
150
+ (0, _logger.error)('Mappings model is invalid (should be a Array) ..', this._model.mappings);
151
+ this._mappings = [];
152
+ return;
153
+ }
154
+ this._mappings = (this._model.mappings || []).filter(mapping => mapping.rule && mapping.target).map(mapping => {
155
+ return new _dataMapping.default(mapping, this);
156
+ });
157
+ }
158
+ function disposeMappings() {
159
+ this._mappings && this._mappings.forEach(mapping => mapping.dispose());
160
+ delete this._mappings;
161
+ }
162
+ function onchangeMappings(after, before) {
163
+ this.disposeMappings();
164
+ executeMappings.call(this);
165
+ }
166
+ //# sourceMappingURL=data.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data.js","names":["_logger","require","_dataMapping","_interopRequireDefault","e","__esModule","default","setTargetsProperty","targets","property","value","partial","forEach","component","executeMappings","force","data","undefined","mappings","mapping","source","target","accessor","propAccessor","partAccessor","ndnsp","startsWith","substring","root","findById","accessive","trim","Object","keys","map","key","findOrCreate","filter","Boolean","flat","length","evaluator","get","Array","id","components","String","findAll","error","onchangeData","after","before","state","persistent","app","isViewMode","dataStorage","save","call","buildMappings","_model","_mappings","rule","DataMapping","disposeMappings","dispose","onchangeMappings"],"sources":["../../../src/components/data/data.js"],"sourcesContent":["/*\n * Copyright © HatioLab Inc. All rights reserved.\n */\n\nimport { error } from '../../core/logger.js'\nimport DataMapping from './data-mapping.js'\n\nfunction setTargetsProperty(targets, property, value, partial) {\n if (partial) {\n targets.forEach(component => (component[property] = { ...component[property], ...value }))\n } else {\n targets.forEach(component => (component[property] = value))\n }\n}\n\nexport function executeMappings(force = false) {\n if (!force && this.data === undefined) {\n return\n }\n\n this.mappings &&\n this.mappings.forEach(mapping => {\n try {\n var { source, target, property, accessor, propAccessor, partAccessor, ndnsp = false, partial = false } = mapping\n\n var data\n\n if (source && source != '(self)') {\n if (source.startsWith('#')) {\n source = source.substring(1)\n }\n data = this.root.findById(source)?.data || {}\n } else {\n data = this.data\n }\n\n var accessive = accessor(data)\n /*\n accessive : accessor에 의해서 한정된 대상 데이터\n accessive가 undefined 라면,\n target 설정이 '()', '(key)', '[prop]' 형태인 경우에는 데이타 전달 타겟을 설정할 수 없으므로 더 이상 진행할 필요가 없다.\n target 설정이 '#id', '.class' 인 경우에는 undefined 값도 스프레드(전파) 되어야 한다.\n */\n\n target = target.trim()\n\n if (target == '(root)' || target == '(key)') {\n if (accessive == undefined) {\n return\n }\n // TODO (root) 제거.\n let targets = Object.keys(accessive || {})\n .map(key => this.root.findOrCreate(key))\n .filter(Boolean)\n .flat()\n\n if (targets.length > 0) {\n targets.forEach(component => {\n let value = mapping.evaluator(accessive[component.get('id')], [component])\n if (property && property !== '(action)' && (!ndnsp || value || value === 0 || value === false)) {\n if (partial) {\n component[property] = { ...component[property], ...value }\n } else {\n component[property] = value\n }\n }\n })\n }\n } else if (target.startsWith('[')) {\n if (accessive == undefined) {\n return\n }\n // const matches = target.match(/\\[(.*?)\\]/)\n\n // if (!matches) {\n // throw String(\"mapping target should end with ']' to designate property-id.(\" + target + ')')\n // }\n\n // var id_prop = matches[1].split(':')[0]\n\n if (accessive instanceof Array) {\n accessive.forEach(data => {\n let id = propAccessor(data)\n if (id) {\n let components = this.root.findOrCreate(id)\n\n if (components) {\n let value = mapping.evaluator(partAccessor(data), components)\n if (property && property !== '(action)' && (!ndnsp || value || value === 0 || value === false)) {\n setTargetsProperty(components, property, value, partial)\n }\n }\n }\n })\n } else if (accessive instanceof Object) {\n let id = propAccessor(accessive)\n if (id) {\n let components = this.root.findOrCreate(id)\n\n if (components) {\n let value = mapping.evaluator(partAccessor(accessive), components)\n if (property && property !== '(action)' && (!ndnsp || value || value === 0 || value === false)) {\n setTargetsProperty(components, property, value, partial)\n }\n }\n }\n } else {\n throw String('mapping data should be an object to target property-id.(' + accessive + ')')\n }\n } else {\n let targets = this.root.findAll(target, this)\n\n if (targets.length > 0) {\n let value = mapping.evaluator(accessive, targets)\n if (property && property !== '(action)' && (!ndnsp || value || value === 0 || value === false)) {\n setTargetsProperty(targets, property, value, partial)\n }\n }\n }\n } catch (e) {\n error(e, this, mapping)\n }\n })\n}\n\nexport function onchangeData(after, before) {\n if (this.state.persistent) {\n this.app?.isViewMode && this.app?.dataStorage.save(this, after.data)\n }\n\n /* excuteMappings forcely */\n executeMappings.call(this, [true])\n}\n\nexport function buildMappings() {\n if (!this._model.mappings) {\n this._mappings = []\n return\n }\n\n if (!this._model.mappings instanceof Array) {\n error('Mappings model is invalid (should be a Array) ..', this._model.mappings)\n this._mappings = []\n return\n }\n\n this._mappings = (this._model.mappings || [])\n .filter(mapping => mapping.rule && mapping.target)\n .map(mapping => {\n return new DataMapping(mapping, this)\n })\n}\n\nexport function disposeMappings() {\n this._mappings && this._mappings.forEach(mapping => mapping.dispose())\n delete this._mappings\n}\n\nexport function onchangeMappings(after, before) {\n this.disposeMappings()\n\n executeMappings.call(this)\n}\n"],"mappings":"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","ignoreList":[]}