@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,465 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _component = _interopRequireDefault(require("../components/component.js"));
8
+ var _infoWindow = _interopRequireDefault(require("../components/info-window.js"));
9
+ var _htmlAbsolute = _interopRequireDefault(require("../layout/html-absolute.js"));
10
+ var Emphasize = _interopRequireWildcard(require("./action/emphasize.js"));
11
+ var _popup = _interopRequireDefault(require("./action/popup.js"));
12
+ var Pressed = _interopRequireWildcard(require("./action/pressed.js"));
13
+ var _layer = _interopRequireDefault(require("./layer.js"));
14
+ 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); }
15
+ 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; }
16
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
17
+ /*
18
+ * Copyright © HatioLab Inc. All rights reserved.
19
+ */
20
+
21
+ const SCALE_DEFAULT = {
22
+ x: 1,
23
+ y: 1
24
+ };
25
+ const TRANSLATE_DEFAULT = {
26
+ x: 0,
27
+ y: 0
28
+ };
29
+ class ModelLayer extends _layer.default {
30
+ dispose() {
31
+ super.dispose();
32
+ delete this._canvas;
33
+ delete this._overlay;
34
+ }
35
+ contains(x, y) {
36
+ return true;
37
+ }
38
+ isRootModel() {
39
+ return true;
40
+ }
41
+ get stuck() {
42
+ return true;
43
+ }
44
+ get layout() {
45
+ /* reflow 시 하위 html-component들의 reposition을 수행하도록 함. */
46
+ return _htmlAbsolute.default;
47
+ }
48
+ get overlay() {
49
+ if (!this._overlay) {
50
+ var overlay = document.createElement('div');
51
+ overlay.style.position = 'absolute';
52
+ overlay.style.width = 0;
53
+ overlay.style.height = 0;
54
+ overlay.style.overflow = 'initial';
55
+ overlay.style['user-select'] = 'none';
56
+ overlay.style['transform-origin'] = 'top left';
57
+ this.element && this.element.appendChild(overlay);
58
+ this._overlay = overlay;
59
+ this._repositionOverlay();
60
+ }
61
+ return this._overlay;
62
+ }
63
+ createElement() {
64
+ var anchor = document.createElement('div');
65
+ anchor.style.position = 'absolute';
66
+ anchor.setAttribute('scene', this.state.type);
67
+ anchor.style['user-select'] = 'none';
68
+ anchor.style.overflow = 'hidden';
69
+ this._canvas = _component.default.createCanvas(1, 1);
70
+ this._canvas.style.position = 'absolute';
71
+ anchor.appendChild(this._canvas);
72
+ if (this._overlay) anchor.appendChild(this._overlay);
73
+ return anchor;
74
+ }
75
+ resize() {
76
+ if (!this.target) {
77
+ return;
78
+ }
79
+ var {
80
+ width: modelWidth,
81
+ height: modelHeight,
82
+ fitMode
83
+ } = this.model;
84
+ if (this.root.fitMode) {
85
+ fitMode = this.root.fitMode;
86
+ } else if (!fitMode) {
87
+ fitMode = 'ratio';
88
+ }
89
+ try {
90
+ var style = getComputedStyle(this.target);
91
+ } catch (e) {
92
+ console.error(e, this.target);
93
+ return;
94
+ }
95
+ var width = style ? parseFloat(style.getPropertyValue('width')) : this.target.clientWidth;
96
+ var height = style ? parseFloat(style.getPropertyValue('height')) : this.target.clientHeight;
97
+ switch (fitMode) {
98
+ case 'both':
99
+ case 'ratio':
100
+ // width = style ? parseFloat(style.getPropertyValue('width')) : this.target.clientWidth
101
+ // height = style ? parseFloat(style.getPropertyValue('height')) : this.target.clientHeight
102
+ break;
103
+ case 'width':
104
+ // width = style ? parseFloat(style.getPropertyValue('width')) : this.target.clientWidth
105
+ height = modelHeight * width / modelWidth;
106
+ break;
107
+ case 'height':
108
+ // height = style ? parseFloat(style.getPropertyValue('height')) : this.target.clientHeight
109
+ width = modelWidth * height / modelHeight;
110
+ break;
111
+ case 'center':
112
+ case 'none':
113
+ default:
114
+ width = Math.max(modelWidth, width);
115
+ height = Math.max(modelHeight, height);
116
+ }
117
+ this.fitSize(this.canvas, true, width, height);
118
+ switch (fitMode) {
119
+ case 'ratio':
120
+ case 'both':
121
+ break;
122
+ case 'width':
123
+ this.element.style.overflowX = 'hidden';
124
+ this.element.style.overflowY = 'auto';
125
+ break;
126
+ case 'height':
127
+ this.element.style.overflowX = 'auto';
128
+ this.element.style.overflowY = 'hidden';
129
+ break;
130
+ case 'center':
131
+ case 'none':
132
+ default:
133
+ this.element.style.overflowX = width > modelWidth ? 'hidden' : 'auto';
134
+ this.element.style.overflowY = height > modelHeight ? 'hidden' : 'auto';
135
+ }
136
+
137
+ /* element는 항상 부모의 크기에 맞춘다. */
138
+ this.fitSize(this.element, true);
139
+ }
140
+ get canvas() {
141
+ return this._canvas;
142
+ }
143
+
144
+ /* Pixel하나가 차지하는 길이의 값 환산 */
145
+ get MPP() {
146
+ var {
147
+ scale = {
148
+ x: 1,
149
+ y: 1
150
+ },
151
+ unit
152
+ } = this.model;
153
+ switch (unit) {
154
+ case 'mm':
155
+ case 'cm':
156
+ return 1 / this.app.PPM / scale.x;
157
+ case 'in':
158
+ return 1 / this.app.PPI / scale.x;
159
+ case 'px':
160
+ default:
161
+ return 1 / scale.x;
162
+ }
163
+ }
164
+
165
+ /*
166
+ * capturePath(path) 파라미터로 주어진 path를 포함하는 컨테이너를 찾는다.
167
+ * @path
168
+ * @excepts 컨테이너를 찾을 때 제외되는 대상이다.
169
+ */
170
+
171
+ capturePath(path, excepts) {
172
+ var capturables = this.layout.capturables(this);
173
+ for (let i = capturables.length - 1; i >= 0; i--) {
174
+ let capturable = capturables[i];
175
+ if (!capturable.isContainer()) continue;
176
+ let found = capturable.capturePath(path, excepts);
177
+ if (found) return found;
178
+ }
179
+ return false;
180
+ }
181
+ get eventMap() {
182
+ return {
183
+ '(self)': {
184
+ '(all)': {
185
+ change: this._onchanged_all,
186
+ mouseenter: this._onmouseenter_all,
187
+ mouseleave: this._onmouseleave_all,
188
+ click: this._onclick,
189
+ mousedown: this._onmousedownup,
190
+ mouseup: this._onmousedownup,
191
+ touchstart: this._onmousedownup,
192
+ touchend: this._onmousedownup
193
+ }
194
+ }
195
+ };
196
+ }
197
+ closeScene(data) {
198
+ requestAnimationFrame(() => this.overlay.dispatchEvent(new CustomEvent('close-scene', {
199
+ bubbles: true,
200
+ composed: true,
201
+ detail: data
202
+ })));
203
+ }
204
+ _repositionOverlay() {
205
+ var overlay = this._overlay;
206
+ if (!overlay) return;
207
+ var {
208
+ translate = TRANSLATE_DEFAULT,
209
+ scale = SCALE_DEFAULT,
210
+ rotation = 0
211
+ } = this.model;
212
+ var {
213
+ left,
214
+ top,
215
+ width,
216
+ height
217
+ } = this.bounds;
218
+ overlay.style.left = left + 'px';
219
+ overlay.style.top = top + 'px';
220
+ /*
221
+ * overlay가 마우스 이벤트를 받게되면, scale이 반영되지 않은 좌표로 이벤트가 발생하므로,
222
+ * 마우스 이벤트를 직접 받지 못하도록 크기를 0로 유지한다.
223
+ */
224
+ // overlay.style['user-select'] = 'none';
225
+ // overlay.style.width = 0 + 'px';
226
+ // overlay.style.height = 0 + 'px';
227
+
228
+ /* CONFIRM-ME `transform: perspective(1px)` 스타일 설정은 scaling된 dom element를 좀 더 선명하게 보이도록 해준다. (Chrome 브라우저에서) */
229
+ overlay.style.transform = `rotate(${rotation}rad) scale(${scale.x}, ${scale.y}) perspective(1px)`;
230
+ overlay.style.marginLeft = `${translate.x}px`;
231
+ overlay.style.marginTop = `${translate.y}px`;
232
+ }
233
+ onchange(after) {
234
+ // Root Component는 id, class, text 속성을 가지지 않는다.
235
+ var model = this._model;
236
+ delete model.id;
237
+ delete model.text;
238
+ delete model.class;
239
+ this._repositionOverlay();
240
+ }
241
+ _onchanged_all(after, before, hint) {
242
+ this.invalidate();
243
+ }
244
+ _onmouseenter_all(event, hint) {
245
+ event.stopPropagation();
246
+ if (!this.app || this.app.isEditMode) return;
247
+ if (!hint) return;
248
+ var source = hint.origin;
249
+
250
+ // model-layer는 hover event를 처리하지 않는다.
251
+ if (source instanceof ModelLayer || !source.model.event || !source.model.event.hover) return;
252
+ if (source.hidden) return;
253
+ var hoverEvtModel = source.model.event.hover;
254
+ hoverEvtModel && this._doEventAction(hoverEvtModel, source, true, event);
255
+ }
256
+ _onmouseleave_all(event, hint) {
257
+ event.stopPropagation();
258
+ if (!hint) {
259
+ return;
260
+ }
261
+ var source = hint.origin;
262
+ if (!this.app || this.app.isEditMode) {
263
+ return;
264
+ }
265
+ var hoverEvtModel = source.model.event && source.model.event.hover;
266
+ hoverEvtModel && this._doEventAction(hoverEvtModel, source, false, event);
267
+ }
268
+ _onclick(event, hint) {
269
+ event.stopPropagation();
270
+ if (this.app.isEditMode) return;
271
+ if (!hint) return;
272
+ var source = hint.origin;
273
+ var tapEvtModel = source.model.event?.tap;
274
+ tapEvtModel && this._doEventAction(tapEvtModel, source, true, event);
275
+ }
276
+ _onmousedownup(event, hint) {
277
+ event.stopPropagation();
278
+ if (this.app.isEditMode) return;
279
+ if (!hint) return;
280
+ var source = hint.origin;
281
+ var tapEvtModel = source.model.event?.tap;
282
+ tapEvtModel && tapEvtModel.pressed && this._doMouseDownUpEventAction(tapEvtModel, source, event.type == 'mousedown' || event.type == 'touchstart', event);
283
+ }
284
+ _doMouseDownUpEventAction(event, component, enter, org_event) {
285
+ var {
286
+ pressed = false
287
+ } = event;
288
+ if (!pressed) {
289
+ return;
290
+ }
291
+ if (enter) {
292
+ Pressed.pressed(component);
293
+ } else {
294
+ Pressed.normalize(component);
295
+ }
296
+ }
297
+ _doEventAction(event, component, enter, org_event) {
298
+ var {
299
+ action,
300
+ target,
301
+ value,
302
+ emphasize = false,
303
+ restore = false,
304
+ pressed = false,
305
+ options
306
+ } = event;
307
+ if (target) {
308
+ target = component.access(target);
309
+ }
310
+ if (value) {
311
+ value = component.access(value);
312
+ }
313
+ if (emphasize) {
314
+ if (enter) {
315
+ Emphasize.emphasize(component);
316
+ } else if (restore) {
317
+ Emphasize.normalize(component);
318
+ }
319
+ }
320
+ if (!action) return;
321
+ switch (action) {
322
+ case 'data-toggle':
323
+ if (!target) return;
324
+ (enter || restore) && this.root.findAll(target, component).forEach(component => {
325
+ component.data = !component.data;
326
+ });
327
+ break;
328
+ case 'data-tristate':
329
+ if (!target) return;
330
+ (enter || restore) && this.root.findAll(target, component).forEach(component => {
331
+ let number = Math.round(Math.max(Number(component.data) || 0, 0));
332
+ component.data = (number + (enter ? 1 : 2)) % 3;
333
+ });
334
+ break;
335
+ case 'data-spreading':
336
+ if (!target) return;
337
+ if (enter) {
338
+ var data = component.access(value);
339
+ this.root.findAll(target, component).forEach(comp => {
340
+ comp.executeMappings(true);
341
+ });
342
+ }
343
+ break;
344
+ case 'data-set':
345
+ if (!target) return;
346
+ if (enter) {
347
+ var data = component.access(value);
348
+ this.root.findAll(target, component).forEach(comp => {
349
+ comp.data = data;
350
+ });
351
+ } else if (restore) {
352
+ // TODO restore 설정은 leave 시점에 enter 시점의 상태로 되돌린다는 뜻이다.
353
+ // data-set에서는 어떻게 할 것인가 ? 참고로 enter - leave 는 stack 처럼 중복될 수 있다.
354
+ }
355
+ break;
356
+ case 'partial-data-set':
357
+ if (!target) return;
358
+ if (enter) {
359
+ var data = component.access(value);
360
+ this.root.findAll(target, component).forEach(comp => {
361
+ comp.data = {
362
+ ...comp.data,
363
+ ...data
364
+ };
365
+ });
366
+ } else if (restore) {
367
+ // TODO restore 설정은 leave 시점에 enter 시점의 상태로 되돌린다는 뜻이다.
368
+ // data-set에서는 어떻게 할 것인가 ? 참고로 enter - leave 는 stack 처럼 중복될 수 있다.
369
+ }
370
+ break;
371
+ case 'value-set':
372
+ if (!target) return;
373
+ if (enter) {
374
+ var data = component.access(value);
375
+ this.root.findAll(target, component).forEach(comp => {
376
+ comp.value = data;
377
+ });
378
+ } else if (restore) {
379
+ // TODO restore 설정은 leave 시점에 enter 시점의 상태로 되돌린다는 뜻이다.
380
+ // value-set에서는 어떻게 할 것인가 ? 참고로 enter - leave 는 stack 처럼 중복될 수 있다.
381
+ }
382
+ break;
383
+ case 'partial-value-set':
384
+ if (!target) return;
385
+ if (enter) {
386
+ var data = component.access(value);
387
+ this.root.findAll(target, component).forEach(comp => {
388
+ comp.value = {
389
+ ...comp.value,
390
+ ...data
391
+ };
392
+ });
393
+ } else if (restore) {
394
+ // TODO restore 설정은 leave 시점에 enter 시점의 상태로 되돌린다는 뜻이다.
395
+ // value-set에서는 어떻게 할 것인가 ? 참고로 enter - leave 는 stack 처럼 중복될 수 있다.
396
+ }
397
+ break;
398
+ case 'infoWindow':
399
+ case 'info-window':
400
+ if (!target) return;
401
+ if (org_event.type == 'click') {
402
+ _infoWindow.default.show(component, target, restore /* close button */, {
403
+ x: org_event.offsetX,
404
+ y: org_event.offsetY
405
+ });
406
+ } else {
407
+ if (enter) {
408
+ _infoWindow.default.show(component, target, restore /* auto close - no close button */, {
409
+ x: org_event.offsetX,
410
+ y: org_event.offsetY
411
+ });
412
+ } else if (restore) {
413
+ _infoWindow.default.hide(component, target);
414
+ }
415
+ }
416
+ break;
417
+ case 'toggle-info-window':
418
+ if (!target) return;
419
+ _infoWindow.default.toggle(component, target, false, {
420
+ x: org_event.offsetX,
421
+ y: org_event.offsetY
422
+ });
423
+ break;
424
+ case 'popup':
425
+ case 'modal-popup':
426
+ if (!target) return;
427
+
428
+ /*
429
+ For backward compatibility,
430
+ if the option is not set, it is assumed that the component's own data is input and the result output is received.
431
+ */
432
+ let input = !options ? '(self)' : 'input' in options ? options.input : '(self)';
433
+ let output = !options ? true : 'output' in options ? options.output : true;
434
+
435
+ // for things-scene model version >= 1.1
436
+ _popup.default.show(component, target, {
437
+ data: input && this.root.findFirst(input, component)?.data,
438
+ output /* boolean - specifies whether to receive a return value from the popup or not. */,
439
+ modal: action === 'modal-popup'
440
+ });
441
+ break;
442
+ case 'close-scene':
443
+ this.closeScene(component.data);
444
+ break;
445
+ case 'goto':
446
+ case 'goto-playlist':
447
+ this.trigger(action, target, options, component);
448
+ break;
449
+ case 'mouse-cursor':
450
+ if (enter) {
451
+ this.target.style.cursor = target || 'auto';
452
+ } else if (restore) {
453
+ /* stack 기능은 지원되지 않는다. */
454
+ this.target.style.cursor = 'auto';
455
+ }
456
+ break;
457
+ default:
458
+ this.trigger(action, target, value, component);
459
+ }
460
+ }
461
+ }
462
+ exports.default = ModelLayer;
463
+ ModelLayer.Popup = _popup.default;
464
+ _component.default.register('model-layer', ModelLayer);
465
+ //# sourceMappingURL=model-layer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model-layer.js","names":["_component","_interopRequireDefault","require","_infoWindow","_htmlAbsolute","Emphasize","_interopRequireWildcard","_popup","Pressed","_layer","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","SCALE_DEFAULT","x","y","TRANSLATE_DEFAULT","ModelLayer","Layer","dispose","_canvas","_overlay","contains","isRootModel","stuck","layout","HTMLAbsoluteLayout","overlay","document","createElement","style","position","width","height","overflow","element","appendChild","_repositionOverlay","anchor","setAttribute","state","type","Component","createCanvas","resize","target","modelWidth","modelHeight","fitMode","model","root","getComputedStyle","console","error","parseFloat","getPropertyValue","clientWidth","clientHeight","Math","max","fitSize","canvas","overflowX","overflowY","MPP","scale","unit","app","PPM","PPI","capturePath","path","excepts","capturables","length","capturable","isContainer","found","eventMap","change","_onchanged_all","mouseenter","_onmouseenter_all","mouseleave","_onmouseleave_all","click","_onclick","mousedown","_onmousedownup","mouseup","touchstart","touchend","closeScene","data","requestAnimationFrame","dispatchEvent","CustomEvent","bubbles","composed","detail","translate","rotation","left","top","bounds","transform","marginLeft","marginTop","onchange","after","_model","id","text","class","before","hint","invalidate","event","stopPropagation","isEditMode","source","origin","hover","hidden","hoverEvtModel","_doEventAction","tapEvtModel","tap","pressed","_doMouseDownUpEventAction","component","enter","org_event","normalize","action","value","emphasize","restore","options","access","findAll","forEach","number","round","Number","comp","executeMappings","InfoWindow","show","offsetX","offsetY","hide","toggle","input","output","ScenePopup","findFirst","modal","trigger","cursor","exports","Popup","register"],"sources":["../../src/layer/model-layer.js"],"sourcesContent":["/*\n * Copyright © HatioLab Inc. All rights reserved.\n */\n\nimport Component from '../components/component.js'\nimport InfoWindow from '../components/info-window.js'\nimport HTMLAbsoluteLayout from '../layout/html-absolute.js'\nimport * as Emphasize from './action/emphasize.js'\nimport ScenePopup from './action/popup.js'\nimport * as Pressed from './action/pressed.js'\nimport Layer from './layer.js'\n\nconst SCALE_DEFAULT = { x: 1, y: 1 }\nconst TRANSLATE_DEFAULT = { x: 0, y: 0 }\n\nexport default class ModelLayer extends Layer {\n dispose() {\n super.dispose()\n\n delete this._canvas\n delete this._overlay\n }\n\n contains(x, y) {\n return true\n }\n\n isRootModel() {\n return true\n }\n\n get stuck() {\n return true\n }\n\n get layout() {\n /* reflow 시 하위 html-component들의 reposition을 수행하도록 함. */\n return HTMLAbsoluteLayout\n }\n\n get overlay() {\n if (!this._overlay) {\n var overlay = document.createElement('div')\n overlay.style.position = 'absolute'\n overlay.style.width = 0\n overlay.style.height = 0\n overlay.style.overflow = 'initial'\n\n overlay.style['user-select'] = 'none'\n overlay.style['transform-origin'] = 'top left'\n\n this.element && this.element.appendChild(overlay)\n this._overlay = overlay\n this._repositionOverlay()\n }\n\n return this._overlay\n }\n\n createElement() {\n var anchor = document.createElement('div')\n anchor.style.position = 'absolute'\n anchor.setAttribute('scene', this.state.type)\n\n anchor.style['user-select'] = 'none'\n anchor.style.overflow = 'hidden'\n\n this._canvas = Component.createCanvas(1, 1)\n\n this._canvas.style.position = 'absolute'\n anchor.appendChild(this._canvas)\n\n if (this._overlay) anchor.appendChild(this._overlay)\n\n return anchor\n }\n\n resize() {\n if (!this.target) {\n return\n }\n\n var { width: modelWidth, height: modelHeight, fitMode } = this.model\n\n if (this.root.fitMode) {\n fitMode = this.root.fitMode\n } else if (!fitMode) {\n fitMode = 'ratio'\n }\n\n try {\n var style = getComputedStyle(this.target)\n } catch (e) {\n console.error(e, this.target)\n return\n }\n var width = style ? parseFloat(style.getPropertyValue('width')) : this.target.clientWidth\n var height = style ? parseFloat(style.getPropertyValue('height')) : this.target.clientHeight\n\n switch (fitMode) {\n case 'both':\n case 'ratio':\n // width = style ? parseFloat(style.getPropertyValue('width')) : this.target.clientWidth\n // height = style ? parseFloat(style.getPropertyValue('height')) : this.target.clientHeight\n break\n case 'width':\n // width = style ? parseFloat(style.getPropertyValue('width')) : this.target.clientWidth\n height = (modelHeight * width) / modelWidth\n break\n case 'height':\n // height = style ? parseFloat(style.getPropertyValue('height')) : this.target.clientHeight\n width = (modelWidth * height) / modelHeight\n break\n case 'center':\n case 'none':\n default:\n width = Math.max(modelWidth, width)\n height = Math.max(modelHeight, height)\n }\n\n this.fitSize(this.canvas, true, width, height)\n\n switch (fitMode) {\n case 'ratio':\n case 'both':\n break\n case 'width':\n this.element.style.overflowX = 'hidden'\n this.element.style.overflowY = 'auto'\n break\n case 'height':\n this.element.style.overflowX = 'auto'\n this.element.style.overflowY = 'hidden'\n break\n case 'center':\n case 'none':\n default:\n this.element.style.overflowX = width > modelWidth ? 'hidden' : 'auto'\n this.element.style.overflowY = height > modelHeight ? 'hidden' : 'auto'\n }\n\n /* element는 항상 부모의 크기에 맞춘다. */\n this.fitSize(this.element, true)\n }\n\n get canvas() {\n return this._canvas\n }\n\n /* Pixel하나가 차지하는 길이의 값 환산 */\n get MPP() {\n var { scale = { x: 1, y: 1 }, unit } = this.model\n\n switch (unit) {\n case 'mm':\n case 'cm':\n return 1 / this.app.PPM / scale.x\n case 'in':\n return 1 / this.app.PPI / scale.x\n case 'px':\n default:\n return 1 / scale.x\n }\n }\n\n /*\n * capturePath(path) 파라미터로 주어진 path를 포함하는 컨테이너를 찾는다.\n * @path\n * @excepts 컨테이너를 찾을 때 제외되는 대상이다.\n */\n\n capturePath(path, excepts) {\n var capturables = this.layout.capturables(this)\n\n for (let i = capturables.length - 1; i >= 0; i--) {\n let capturable = capturables[i]\n if (!capturable.isContainer()) continue\n\n let found = capturable.capturePath(path, excepts)\n if (found) return found\n }\n\n return false\n }\n\n get eventMap() {\n return {\n '(self)': {\n '(all)': {\n change: this._onchanged_all,\n mouseenter: this._onmouseenter_all,\n mouseleave: this._onmouseleave_all,\n click: this._onclick,\n mousedown: this._onmousedownup,\n mouseup: this._onmousedownup,\n touchstart: this._onmousedownup,\n touchend: this._onmousedownup\n }\n }\n }\n }\n\n closeScene(data) {\n requestAnimationFrame(() =>\n this.overlay.dispatchEvent(\n new CustomEvent('close-scene', {\n bubbles: true,\n composed: true,\n detail: data\n })\n )\n )\n }\n\n _repositionOverlay() {\n var overlay = this._overlay\n\n if (!overlay) return\n\n var { translate = TRANSLATE_DEFAULT, scale = SCALE_DEFAULT, rotation = 0 } = this.model\n\n var { left, top, width, height } = this.bounds\n\n overlay.style.left = left + 'px'\n overlay.style.top = top + 'px'\n /*\n * overlay가 마우스 이벤트를 받게되면, scale이 반영되지 않은 좌표로 이벤트가 발생하므로,\n * 마우스 이벤트를 직접 받지 못하도록 크기를 0로 유지한다.\n */\n // overlay.style['user-select'] = 'none';\n // overlay.style.width = 0 + 'px';\n // overlay.style.height = 0 + 'px';\n\n /* CONFIRM-ME `transform: perspective(1px)` 스타일 설정은 scaling된 dom element를 좀 더 선명하게 보이도록 해준다. (Chrome 브라우저에서) */\n overlay.style.transform = `rotate(${rotation}rad) scale(${scale.x}, ${scale.y}) perspective(1px)`\n overlay.style.marginLeft = `${translate.x}px`\n overlay.style.marginTop = `${translate.y}px`\n }\n\n onchange(after) {\n // Root Component는 id, class, text 속성을 가지지 않는다.\n var model = this._model\n\n delete model.id\n delete model.text\n delete model.class\n\n this._repositionOverlay()\n }\n\n _onchanged_all(after, before, hint) {\n this.invalidate()\n }\n\n _onmouseenter_all(event, hint) {\n event.stopPropagation()\n\n if (!this.app || this.app.isEditMode) return\n\n if (!hint) return\n\n var source = hint.origin\n\n // model-layer는 hover event를 처리하지 않는다.\n if (source instanceof ModelLayer || !source.model.event || !source.model.event.hover) return\n\n if (source.hidden) return\n\n var hoverEvtModel = source.model.event.hover\n\n hoverEvtModel && this._doEventAction(hoverEvtModel, source, true, event)\n }\n\n _onmouseleave_all(event, hint) {\n event.stopPropagation()\n\n if (!hint) {\n return\n }\n\n var source = hint.origin\n\n if (!this.app || this.app.isEditMode) {\n return\n }\n\n var hoverEvtModel = source.model.event && source.model.event.hover\n\n hoverEvtModel && this._doEventAction(hoverEvtModel, source, false, event)\n }\n\n _onclick(event, hint) {\n event.stopPropagation()\n\n if (this.app.isEditMode) return\n\n if (!hint) return\n\n var source = hint.origin\n\n var tapEvtModel = source.model.event?.tap\n\n tapEvtModel && this._doEventAction(tapEvtModel, source, true, event)\n }\n\n _onmousedownup(event, hint) {\n event.stopPropagation()\n\n if (this.app.isEditMode) return\n\n if (!hint) return\n\n var source = hint.origin\n\n var tapEvtModel = source.model.event?.tap\n\n tapEvtModel &&\n tapEvtModel.pressed &&\n this._doMouseDownUpEventAction(\n tapEvtModel,\n source,\n event.type == 'mousedown' || event.type == 'touchstart',\n event\n )\n }\n\n _doMouseDownUpEventAction(event, component, enter, org_event) {\n var { pressed = false } = event\n if (!pressed) {\n return\n }\n\n if (enter) {\n Pressed.pressed(component)\n } else {\n Pressed.normalize(component)\n }\n }\n\n _doEventAction(event, component, enter, org_event) {\n var { action, target, value, emphasize = false, restore = false, pressed = false, options } = event\n\n if (target) {\n target = component.access(target)\n }\n if (value) {\n value = component.access(value)\n }\n\n if (emphasize) {\n if (enter) {\n Emphasize.emphasize(component)\n } else if (restore) {\n Emphasize.normalize(component)\n }\n }\n\n if (!action) return\n\n switch (action) {\n case 'data-toggle':\n if (!target) return\n ;(enter || restore) &&\n this.root.findAll(target, component).forEach(component => {\n component.data = !component.data\n })\n break\n\n case 'data-tristate':\n if (!target) return\n ;(enter || restore) &&\n this.root.findAll(target, component).forEach(component => {\n let number = Math.round(Math.max(Number(component.data) || 0, 0))\n component.data = (number + (enter ? 1 : 2)) % 3\n })\n break\n\n case 'data-spreading':\n if (!target) return\n\n if (enter) {\n var data = component.access(value)\n\n this.root.findAll(target, component).forEach(comp => {\n comp.executeMappings(true)\n })\n }\n break\n\n case 'data-set':\n if (!target) return\n\n if (enter) {\n var data = component.access(value)\n\n this.root.findAll(target, component).forEach(comp => {\n comp.data = data\n })\n } else if (restore) {\n // TODO restore 설정은 leave 시점에 enter 시점의 상태로 되돌린다는 뜻이다.\n // data-set에서는 어떻게 할 것인가 ? 참고로 enter - leave 는 stack 처럼 중복될 수 있다.\n }\n break\n\n case 'partial-data-set':\n if (!target) return\n\n if (enter) {\n var data = component.access(value)\n\n this.root.findAll(target, component).forEach(comp => {\n comp.data = { ...comp.data, ...data }\n })\n } else if (restore) {\n // TODO restore 설정은 leave 시점에 enter 시점의 상태로 되돌린다는 뜻이다.\n // data-set에서는 어떻게 할 것인가 ? 참고로 enter - leave 는 stack 처럼 중복될 수 있다.\n }\n break\n\n case 'value-set':\n if (!target) return\n\n if (enter) {\n var data = component.access(value)\n\n this.root.findAll(target, component).forEach(comp => {\n comp.value = data\n })\n } else if (restore) {\n // TODO restore 설정은 leave 시점에 enter 시점의 상태로 되돌린다는 뜻이다.\n // value-set에서는 어떻게 할 것인가 ? 참고로 enter - leave 는 stack 처럼 중복될 수 있다.\n }\n break\n\n case 'partial-value-set':\n if (!target) return\n\n if (enter) {\n var data = component.access(value)\n\n this.root.findAll(target, component).forEach(comp => {\n comp.value = { ...comp.value, ...data }\n })\n } else if (restore) {\n // TODO restore 설정은 leave 시점에 enter 시점의 상태로 되돌린다는 뜻이다.\n // value-set에서는 어떻게 할 것인가 ? 참고로 enter - leave 는 stack 처럼 중복될 수 있다.\n }\n break\n\n case 'infoWindow':\n case 'info-window':\n if (!target) return\n\n if (org_event.type == 'click') {\n InfoWindow.show(component, target, restore /* close button */, {\n x: org_event.offsetX,\n y: org_event.offsetY\n })\n } else {\n if (enter) {\n InfoWindow.show(component, target, restore /* auto close - no close button */, {\n x: org_event.offsetX,\n y: org_event.offsetY\n })\n } else if (restore) {\n InfoWindow.hide(component, target)\n }\n }\n break\n\n case 'toggle-info-window':\n if (!target) return\n\n InfoWindow.toggle(component, target, false, {\n x: org_event.offsetX,\n y: org_event.offsetY\n })\n break\n\n case 'popup':\n case 'modal-popup':\n if (!target) return\n\n /* \n For backward compatibility, \n if the option is not set, it is assumed that the component's own data is input and the result output is received. \n */\n let input = !options ? '(self)' : 'input' in options ? options.input : '(self)'\n let output = !options ? true : 'output' in options ? options.output : true\n\n // for things-scene model version >= 1.1\n ScenePopup.show(component, target, {\n data: input && this.root.findFirst(input, component)?.data,\n output /* boolean - specifies whether to receive a return value from the popup or not. */,\n modal: action === 'modal-popup'\n })\n break\n\n case 'close-scene':\n this.closeScene(component.data)\n break\n\n case 'goto':\n case 'goto-playlist':\n this.trigger(action, target, options, component)\n break\n\n case 'mouse-cursor':\n if (enter) {\n this.target.style.cursor = target || 'auto'\n } else if (restore) {\n /* stack 기능은 지원되지 않는다. */\n this.target.style.cursor = 'auto'\n }\n break\n\n default:\n this.trigger(action, target, value, component)\n }\n }\n}\n\nModelLayer.Popup = ScenePopup\n\nComponent.register('model-layer', ModelLayer)\n"],"mappings":"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","ignoreList":[]}