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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (385) hide show
  1. package/babel.config.js +4 -3
  2. package/db.sqlite +0 -0
  3. package/dist/animation/animate.js +63 -0
  4. package/dist/animation/animate.js.map +1 -0
  5. package/dist/animation/animations/animation.js +122 -0
  6. package/dist/animation/animations/animation.js.map +1 -0
  7. package/dist/animation/animations/fade.js +28 -0
  8. package/dist/animation/animations/fade.js.map +1 -0
  9. package/dist/animation/animations/heartbeat.js +28 -0
  10. package/dist/animation/animations/heartbeat.js.map +1 -0
  11. package/dist/animation/animations/moving.js +24 -0
  12. package/dist/animation/animations/moving.js.map +1 -0
  13. package/dist/animation/animations/outline.js +47 -0
  14. package/dist/animation/animations/outline.js.map +1 -0
  15. package/dist/animation/animations/rotation.js +22 -0
  16. package/dist/animation/animations/rotation.js.map +1 -0
  17. package/dist/animation/animations/vibration.js +31 -0
  18. package/dist/animation/animations/vibration.js.map +1 -0
  19. package/dist/animation/compile.js +31 -0
  20. package/dist/animation/compile.js.map +1 -0
  21. package/dist/animation/delta.js +51 -0
  22. package/dist/animation/delta.js.map +1 -0
  23. package/dist/animation/index.js +14 -0
  24. package/dist/animation/index.js.map +1 -0
  25. package/dist/command/command-change.js +33 -0
  26. package/dist/command/command-change.js.map +1 -0
  27. package/dist/command/command-migrate.js +103 -0
  28. package/dist/command/command-migrate.js.map +1 -0
  29. package/dist/command/command.js +18 -0
  30. package/dist/command/command.js.map +1 -0
  31. package/dist/command/snapshot-commander.js +84 -0
  32. package/dist/command/snapshot-commander.js.map +1 -0
  33. package/dist/components/anchor/anchor.js +105 -0
  34. package/dist/components/anchor/anchor.js.map +1 -0
  35. package/dist/components/anchor/ellipse-anchors.js +53 -0
  36. package/dist/components/anchor/ellipse-anchors.js.map +1 -0
  37. package/dist/components/anchor/rect-anchors.js +53 -0
  38. package/dist/components/anchor/rect-anchors.js.map +1 -0
  39. package/dist/components/audio.js +154 -0
  40. package/dist/components/audio.js.map +1 -0
  41. package/dist/components/cloud.js +44 -0
  42. package/dist/components/cloud.js.map +1 -0
  43. package/dist/components/component.js +1086 -0
  44. package/dist/components/component.js.map +1 -0
  45. package/dist/components/container-abstract.js +387 -0
  46. package/dist/components/container-abstract.js.map +1 -0
  47. package/dist/components/container.js +331 -0
  48. package/dist/components/container.js.map +1 -0
  49. package/dist/components/data/data-mapping.js +82 -0
  50. package/dist/components/data/data-mapping.js.map +1 -0
  51. package/dist/components/data/data.js +166 -0
  52. package/dist/components/data/data.js.map +1 -0
  53. package/dist/components/data/evaluator.js +103 -0
  54. package/dist/components/data/evaluator.js.map +1 -0
  55. package/dist/components/donut.js +104 -0
  56. package/dist/components/donut.js.map +1 -0
  57. package/dist/components/drawer/draw-image-pendable.js +20 -0
  58. package/dist/components/drawer/draw-image-pendable.js.map +1 -0
  59. package/dist/components/drawer/effect.js +19 -0
  60. package/dist/components/drawer/effect.js.map +1 -0
  61. package/dist/components/drawer/fill.js +228 -0
  62. package/dist/components/drawer/fill.js.map +1 -0
  63. package/dist/components/drawer/format.js +115 -0
  64. package/dist/components/drawer/format.js.map +1 -0
  65. package/dist/components/drawer/line.js +191 -0
  66. package/dist/components/drawer/line.js.map +1 -0
  67. package/dist/components/drawer/stroke.js +62 -0
  68. package/dist/components/drawer/stroke.js.map +1 -0
  69. package/dist/components/drawer/text-wrapper.js +51 -0
  70. package/dist/components/drawer/text-wrapper.js.map +1 -0
  71. package/dist/components/drawer/text.js +269 -0
  72. package/dist/components/drawer/text.js.map +1 -0
  73. package/dist/components/ellipse.js +110 -0
  74. package/dist/components/ellipse.js.map +1 -0
  75. package/dist/components/file/ondropfile.js +19 -0
  76. package/dist/components/file/ondropfile.js.map +1 -0
  77. package/dist/components/fit/fit.js +137 -0
  78. package/dist/components/fit/fit.js.map +1 -0
  79. package/dist/components/geometry/transcoord.js +339 -0
  80. package/dist/components/geometry/transcoord.js.map +1 -0
  81. package/dist/components/geometry/union.js +35 -0
  82. package/dist/components/geometry/union.js.map +1 -0
  83. package/dist/components/gif-view.js +128 -0
  84. package/dist/components/gif-view.js.map +1 -0
  85. package/dist/components/global-ref.js +154 -0
  86. package/dist/components/global-ref.js.map +1 -0
  87. package/dist/components/group.js +171 -0
  88. package/dist/components/group.js.map +1 -0
  89. package/dist/components/html/elements.js +24 -0
  90. package/dist/components/html/elements.js.map +1 -0
  91. package/dist/components/html/fill.js +126 -0
  92. package/dist/components/html/fill.js.map +1 -0
  93. package/dist/components/html/reposition.js +119 -0
  94. package/dist/components/html/reposition.js.map +1 -0
  95. package/dist/components/html/shadow.js +24 -0
  96. package/dist/components/html/shadow.js.map +1 -0
  97. package/dist/components/html-overlay-container.js +27 -0
  98. package/dist/components/html-overlay-container.js.map +1 -0
  99. package/dist/components/html-overlay-element.js +22 -0
  100. package/dist/components/html-overlay-element.js.map +1 -0
  101. package/dist/components/image-view.js +193 -0
  102. package/dist/components/image-view.js.map +1 -0
  103. package/dist/components/index.js +231 -0
  104. package/dist/components/index.js.map +1 -0
  105. package/dist/components/info-window.js +416 -0
  106. package/dist/components/info-window.js.map +1 -0
  107. package/dist/components/line.js +374 -0
  108. package/dist/components/line.js.map +1 -0
  109. package/dist/components/local-ref.js +114 -0
  110. package/dist/components/local-ref.js.map +1 -0
  111. package/dist/components/mixins/connectable.js +128 -0
  112. package/dist/components/mixins/connectable.js.map +1 -0
  113. package/dist/components/mixins/data-source.js +34 -0
  114. package/dist/components/mixins/data-source.js.map +1 -0
  115. package/dist/components/mixins/html-element.js +107 -0
  116. package/dist/components/mixins/html-element.js.map +1 -0
  117. package/dist/components/mixins/move-handle.js +73 -0
  118. package/dist/components/mixins/move-handle.js.map +1 -0
  119. package/dist/components/mixins/rect-path.js +113 -0
  120. package/dist/components/mixins/rect-path.js.map +1 -0
  121. package/dist/components/mixins/value-holder.js +81 -0
  122. package/dist/components/mixins/value-holder.js.map +1 -0
  123. package/dist/components/mutater/bounds.js +68 -0
  124. package/dist/components/mutater/bounds.js.map +1 -0
  125. package/dist/components/mutater/path.js +73 -0
  126. package/dist/components/mutater/path.js.map +1 -0
  127. package/dist/components/ortholine.js +763 -0
  128. package/dist/components/ortholine.js.map +1 -0
  129. package/dist/components/outline/ellipse-outline.js +23 -0
  130. package/dist/components/outline/ellipse-outline.js.map +1 -0
  131. package/dist/components/outline/path-outline.js +48 -0
  132. package/dist/components/outline/path-outline.js.map +1 -0
  133. package/dist/components/path.js +49 -0
  134. package/dist/components/path.js.map +1 -0
  135. package/dist/components/polygon.js +91 -0
  136. package/dist/components/polygon.js.map +1 -0
  137. package/dist/components/polyline.js +114 -0
  138. package/dist/components/polyline.js.map +1 -0
  139. package/dist/components/popup.js +160 -0
  140. package/dist/components/popup.js.map +1 -0
  141. package/dist/components/rect.js +72 -0
  142. package/dist/components/rect.js.map +1 -0
  143. package/dist/components/retention/retention-manager.js +81 -0
  144. package/dist/components/retention/retention-manager.js.map +1 -0
  145. package/dist/components/root-container.js +519 -0
  146. package/dist/components/root-container.js.map +1 -0
  147. package/dist/components/ruler.js +103 -0
  148. package/dist/components/ruler.js.map +1 -0
  149. package/dist/components/shape.js +97 -0
  150. package/dist/components/shape.js.map +1 -0
  151. package/dist/components/star.js +103 -0
  152. package/dist/components/star.js.map +1 -0
  153. package/dist/components/text/substitutor.js +92 -0
  154. package/dist/components/text/substitutor.js.map +1 -0
  155. package/dist/components/text.js +21 -0
  156. package/dist/components/text.js.map +1 -0
  157. package/dist/components/triangle.js +92 -0
  158. package/dist/components/triangle.js.map +1 -0
  159. package/dist/const.js +71 -0
  160. package/dist/const.js.map +1 -0
  161. package/dist/core/collection.js +28 -0
  162. package/dist/core/collection.js.map +1 -0
  163. package/dist/core/debug.js +12 -0
  164. package/dist/core/debug.js.map +1 -0
  165. package/dist/core/deep-equals.js +112 -0
  166. package/dist/core/deep-equals.js.map +1 -0
  167. package/dist/core/dom-to-image.js +617 -0
  168. package/dist/core/dom-to-image.js.map +1 -0
  169. package/dist/core/event.js +205 -0
  170. package/dist/core/event.js.map +1 -0
  171. package/dist/core/index.js +21 -0
  172. package/dist/core/index.js.map +1 -0
  173. package/dist/core/list.js +87 -0
  174. package/dist/core/list.js.map +1 -0
  175. package/dist/core/logger.js +29 -0
  176. package/dist/core/logger.js.map +1 -0
  177. package/dist/core/memoize.js +40 -0
  178. package/dist/core/memoize.js.map +1 -0
  179. package/dist/core/mixin.js +26 -0
  180. package/dist/core/mixin.js.map +1 -0
  181. package/dist/core/obj-accessor.js +26 -0
  182. package/dist/core/obj-accessor.js.map +1 -0
  183. package/dist/core/reference-map.js +147 -0
  184. package/dist/core/reference-map.js.map +1 -0
  185. package/dist/core/round-rect.js +62 -0
  186. package/dist/core/round-rect.js.map +1 -0
  187. package/dist/core/safe-round.js +10 -0
  188. package/dist/core/safe-round.js.map +1 -0
  189. package/dist/core/script-loader.js +148 -0
  190. package/dist/core/script-loader.js.map +1 -0
  191. package/dist/core/snapshot-taker.js +59 -0
  192. package/dist/core/snapshot-taker.js.map +1 -0
  193. package/dist/core/stack.js +18 -0
  194. package/dist/core/stack.js.map +1 -0
  195. package/dist/core/timecapsule.js +88 -0
  196. package/dist/core/timecapsule.js.map +1 -0
  197. package/dist/core/utils.js +309 -0
  198. package/dist/core/utils.js.map +1 -0
  199. package/dist/decorator/anchors-decorator.js +53 -0
  200. package/dist/decorator/anchors-decorator.js.map +1 -0
  201. package/dist/decorator/bouncing-arrow-decorator.js +52 -0
  202. package/dist/decorator/bouncing-arrow-decorator.js.map +1 -0
  203. package/dist/decorator/data-spread-decorator.js +69 -0
  204. package/dist/decorator/data-spread-decorator.js.map +1 -0
  205. package/dist/decorator/decotag-decorator.js +33 -0
  206. package/dist/decorator/decotag-decorator.js.map +1 -0
  207. package/dist/decorator/index.js +31 -0
  208. package/dist/decorator/index.js.map +1 -0
  209. package/dist/decorator/link-decorator.js +66 -0
  210. package/dist/decorator/link-decorator.js.map +1 -0
  211. package/dist/effect/gradation.js +37 -0
  212. package/dist/effect/gradation.js.map +1 -0
  213. package/dist/effect/index.js +23 -0
  214. package/dist/effect/index.js.map +1 -0
  215. package/dist/effect/shadow.js +33 -0
  216. package/dist/effect/shadow.js.map +1 -0
  217. package/dist/effect/turn.js +25 -0
  218. package/dist/effect/turn.js.map +1 -0
  219. package/dist/event/event-engine.js +76 -0
  220. package/dist/event/event-engine.js.map +1 -0
  221. package/dist/event/event-pump.js +92 -0
  222. package/dist/event/event-pump.js.map +1 -0
  223. package/dist/event/event-tracker.js +97 -0
  224. package/dist/event/event-tracker.js.map +1 -0
  225. package/dist/event/index.js +21 -0
  226. package/dist/event/index.js.map +1 -0
  227. package/dist/event/ua-event-handler.js +453 -0
  228. package/dist/event/ua-event-handler.js.map +1 -0
  229. package/dist/event-map/animator-handler.js +225 -0
  230. package/dist/event-map/animator-handler.js.map +1 -0
  231. package/dist/event-map/animators/animated-icon.js +265 -0
  232. package/dist/event-map/animators/animated-icon.js.map +1 -0
  233. package/dist/event-map/animators/border-highlighting.js +476 -0
  234. package/dist/event-map/animators/border-highlighting.js.map +1 -0
  235. package/dist/event-map/animators/bouncing-arrow.js +226 -0
  236. package/dist/event-map/animators/bouncing-arrow.js.map +1 -0
  237. package/dist/event-map/event-map.js +36 -0
  238. package/dist/event-map/event-map.js.map +1 -0
  239. package/dist/event-map/index.js +20 -0
  240. package/dist/event-map/index.js.map +1 -0
  241. package/dist/event-map/move-handler.js +233 -0
  242. package/dist/event-map/move-handler.js.map +1 -0
  243. package/dist/event-map/paste-handler.js +176 -0
  244. package/dist/event-map/paste-handler.js.map +1 -0
  245. package/dist/event-map/shift-handler.js +55 -0
  246. package/dist/event-map/shift-handler.js.map +1 -0
  247. package/dist/event-map/text-editor-lite.js +276 -0
  248. package/dist/event-map/text-editor-lite.js.map +1 -0
  249. package/dist/event-map/zoom-handler.js +49 -0
  250. package/dist/event-map/zoom-handler.js.map +1 -0
  251. package/dist/index.js +20 -0
  252. package/dist/index.js.map +1 -0
  253. package/dist/layer/action/emphasize.js +42 -0
  254. package/dist/layer/action/emphasize.js.map +1 -0
  255. package/dist/layer/action/popup.js +461 -0
  256. package/dist/layer/action/popup.js.map +1 -0
  257. package/dist/layer/action/pressed.js +31 -0
  258. package/dist/layer/action/pressed.js.map +1 -0
  259. package/dist/layer/add-layer.js +180 -0
  260. package/dist/layer/add-layer.js.map +1 -0
  261. package/dist/layer/decotag-layer.js +121 -0
  262. package/dist/layer/decotag-layer.js.map +1 -0
  263. package/dist/layer/guide-layer.js +292 -0
  264. package/dist/layer/guide-layer.js.map +1 -0
  265. package/dist/layer/index.js +70 -0
  266. package/dist/layer/index.js.map +1 -0
  267. package/dist/layer/layer.js +230 -0
  268. package/dist/layer/layer.js.map +1 -0
  269. package/dist/layer/minimap-layer.js +84 -0
  270. package/dist/layer/minimap-layer.js.map +1 -0
  271. package/dist/layer/model-layer.js +465 -0
  272. package/dist/layer/model-layer.js.map +1 -0
  273. package/dist/layer/modeler/anchor-handler.js +193 -0
  274. package/dist/layer/modeler/anchor-handler.js.map +1 -0
  275. package/dist/layer/modeler/control-handler.js +95 -0
  276. package/dist/layer/modeler/control-handler.js.map +1 -0
  277. package/dist/layer/modeler/focus-outline.js +41 -0
  278. package/dist/layer/modeler/focus-outline.js.map +1 -0
  279. package/dist/layer/modeler/group-outline.js +30 -0
  280. package/dist/layer/modeler/group-outline.js.map +1 -0
  281. package/dist/layer/modeler/index.js +56 -0
  282. package/dist/layer/modeler/index.js.map +1 -0
  283. package/dist/layer/modeler/path-handler.js +300 -0
  284. package/dist/layer/modeler/path-handler.js.map +1 -0
  285. package/dist/layer/modeler/resizer.js +333 -0
  286. package/dist/layer/modeler/resizer.js.map +1 -0
  287. package/dist/layer/modeler/rotator.js +134 -0
  288. package/dist/layer/modeler/rotator.js.map +1 -0
  289. package/dist/layer/modeling-layer.js +491 -0
  290. package/dist/layer/modeling-layer.js.map +1 -0
  291. package/dist/layer/reaction-layer.js +111 -0
  292. package/dist/layer/reaction-layer.js.map +1 -0
  293. package/dist/layer/scroll-layer.js +191 -0
  294. package/dist/layer/scroll-layer.js.map +1 -0
  295. package/dist/layer/selection/selected-finder.js +96 -0
  296. package/dist/layer/selection/selected-finder.js.map +1 -0
  297. package/dist/layer/selection-layer.js +373 -0
  298. package/dist/layer/selection-layer.js.map +1 -0
  299. package/dist/layer/shift-layer.js +83 -0
  300. package/dist/layer/shift-layer.js.map +1 -0
  301. package/dist/layout/absolute.js +30 -0
  302. package/dist/layout/absolute.js.map +1 -0
  303. package/dist/layout/card.js +52 -0
  304. package/dist/layout/card.js.map +1 -0
  305. package/dist/layout/html-absolute.js +32 -0
  306. package/dist/layout/html-absolute.js.map +1 -0
  307. package/dist/layout/index.js +56 -0
  308. package/dist/layout/index.js.map +1 -0
  309. package/dist/layout/layout.js +36 -0
  310. package/dist/layout/layout.js.map +1 -0
  311. package/dist/layout/linear-horizontal.js +56 -0
  312. package/dist/layout/linear-horizontal.js.map +1 -0
  313. package/dist/layout/linear-vertical.js +56 -0
  314. package/dist/layout/linear-vertical.js.map +1 -0
  315. package/dist/layout/table.js +106 -0
  316. package/dist/layout/table.js.map +1 -0
  317. package/dist/license/license.js +170 -0
  318. package/dist/license/license.js.map +1 -0
  319. package/dist/model/compile.js +40 -0
  320. package/dist/model/compile.js.map +1 -0
  321. package/dist/model/duplicate.js +19 -0
  322. package/dist/model/duplicate.js.map +1 -0
  323. package/dist/model/index.js +34 -0
  324. package/dist/model/index.js.map +1 -0
  325. package/dist/model/selector.js +104 -0
  326. package/dist/model/selector.js.map +1 -0
  327. package/dist/style/compile.js +14 -0
  328. package/dist/style/compile.js.map +1 -0
  329. package/dist/style/index.js +14 -0
  330. package/dist/style/index.js.map +1 -0
  331. package/dist/things-scene/api/add-start.js +18 -0
  332. package/dist/things-scene/api/add-start.js.map +1 -0
  333. package/dist/things-scene/api/add.js +71 -0
  334. package/dist/things-scene/api/add.js.map +1 -0
  335. package/dist/things-scene/api/align.js +116 -0
  336. package/dist/things-scene/api/align.js.map +1 -0
  337. package/dist/things-scene/api/center-to.js +50 -0
  338. package/dist/things-scene/api/center-to.js.map +1 -0
  339. package/dist/things-scene/api/change.js +27 -0
  340. package/dist/things-scene/api/change.js.map +1 -0
  341. package/dist/things-scene/api/clipboard.js +45 -0
  342. package/dist/things-scene/api/clipboard.js.map +1 -0
  343. package/dist/things-scene/api/distribute.js +57 -0
  344. package/dist/things-scene/api/distribute.js.map +1 -0
  345. package/dist/things-scene/api/duplicate.js +47 -0
  346. package/dist/things-scene/api/duplicate.js.map +1 -0
  347. package/dist/things-scene/api/fullscreen.js +26 -0
  348. package/dist/things-scene/api/fullscreen.js.map +1 -0
  349. package/dist/things-scene/api/group.js +91 -0
  350. package/dist/things-scene/api/group.js.map +1 -0
  351. package/dist/things-scene/api/ids.js +28 -0
  352. package/dist/things-scene/api/ids.js.map +1 -0
  353. package/dist/things-scene/api/index.js +192 -0
  354. package/dist/things-scene/api/index.js.map +1 -0
  355. package/dist/things-scene/api/listener.js +69 -0
  356. package/dist/things-scene/api/listener.js.map +1 -0
  357. package/dist/things-scene/api/paste-start.js +27 -0
  358. package/dist/things-scene/api/paste-start.js.map +1 -0
  359. package/dist/things-scene/api/place.js +98 -0
  360. package/dist/things-scene/api/place.js.map +1 -0
  361. package/dist/things-scene/api/remove.js +57 -0
  362. package/dist/things-scene/api/remove.js.map +1 -0
  363. package/dist/things-scene/api/symmetry.js +47 -0
  364. package/dist/things-scene/api/symmetry.js.map +1 -0
  365. package/dist/things-scene/api/to-data-url.js +76 -0
  366. package/dist/things-scene/api/to-data-url.js.map +1 -0
  367. package/dist/things-scene/api/zorder.js +68 -0
  368. package/dist/things-scene/api/zorder.js.map +1 -0
  369. package/dist/things-scene/application-context.js +168 -0
  370. package/dist/things-scene/application-context.js.map +1 -0
  371. package/dist/things-scene/config.js +18 -0
  372. package/dist/things-scene/config.js.map +1 -0
  373. package/dist/things-scene/create.js +67 -0
  374. package/dist/things-scene/create.js.map +1 -0
  375. package/dist/things-scene/fps.js +26 -0
  376. package/dist/things-scene/fps.js.map +1 -0
  377. package/dist/things-scene/index.js +152 -0
  378. package/dist/things-scene/index.js.map +1 -0
  379. package/dist/things-scene/polyfill.js +111 -0
  380. package/dist/things-scene/polyfill.js.map +1 -0
  381. package/dist/things-scene/scene.js +442 -0
  382. package/dist/things-scene/scene.js.map +1 -0
  383. package/dist/things-scene/version.js +12 -0
  384. package/dist/things-scene/version.js.map +1 -0
  385. package/package.json +8 -6
@@ -0,0 +1,225 @@
1
+ "use strict";
2
+
3
+ var _eventMap = _interopRequireDefault(require("./event-map.js"));
4
+ var _animatedIcon = _interopRequireDefault(require("./animators/animated-icon.js"));
5
+ var _borderHighlighting = _interopRequireDefault(require("./animators/border-highlighting.js"));
6
+ var _bouncingArrow = _interopRequireDefault(require("./animators/bouncing-arrow.js"));
7
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
8
+ /*
9
+ * Copyright © HatioLab Inc. All rights reserved.
10
+ */
11
+
12
+ /**
13
+ * AnimatorHandler is a layer that shows material icons with animation effects at the relative position of the target component.
14
+ *
15
+ * @class
16
+ * @extends EventMapHandler
17
+ */
18
+ class AnimatorHandler {
19
+ /**
20
+ * Adds the target to the targets array.
21
+ *
22
+ * @param {Object} target - The target object.
23
+ */
24
+ icon(target, config) {
25
+ if (this.targets && this.targets.lastIndexOf(target) !== -1) {
26
+ return;
27
+ }
28
+ const animatedIcon = new _animatedIcon.default(target.root.model_layer.overlay, target, config);
29
+ this.targets = (this.targets || []).concat(target);
30
+ this.animators = (this.animators || []).concat(animatedIcon);
31
+ animatedIcon.start();
32
+ }
33
+
34
+ /**
35
+ * Adds the target to the targets array and starts the border highlighting animation.
36
+ *
37
+ * @param {Object} target - The target object.
38
+ * @param {Object} decorator - The decorator object.
39
+ */
40
+ border(target, decorator) {
41
+ if (this.targets && this.targets.lastIndexOf(target) !== -1) {
42
+ return;
43
+ }
44
+ const borderHighlighting = new _borderHighlighting.default(target.root.model_layer.overlay, target, decorator);
45
+ this.targets = (this.targets || []).concat(target);
46
+ this.animators = (this.animators || []).concat(borderHighlighting);
47
+ borderHighlighting.start();
48
+ }
49
+
50
+ /**
51
+ * Adds the target to the targets array and starts the bouncing arrow animation.
52
+ *
53
+ * @param {Object} target - The target object.
54
+ * @param {Object} decorator - The decorator object.
55
+ */
56
+ bouncing(target, decorator) {
57
+ if (this.targets && this.targets.lastIndexOf(target) !== -1) {
58
+ return;
59
+ }
60
+ const bouncingArrow = new _bouncingArrow.default(target.root.model_layer.overlay, target, decorator);
61
+ this.targets = (this.targets || []).concat(target);
62
+ this.animators = (this.animators || []).concat(bouncingArrow);
63
+ bouncingArrow.start();
64
+ }
65
+
66
+ /**
67
+ * Removes the target from the targets array.
68
+ *
69
+ * @param {Object} target - The target object.
70
+ */
71
+ off(target) {
72
+ if (!this.targets) {
73
+ return;
74
+ }
75
+ let copiedTarget = this.targets.slice();
76
+ let copiedAnimations = this.animators.slice();
77
+ let index = this.targets.lastIndexOf(target);
78
+ if (index == -1) {
79
+ return;
80
+ }
81
+ copiedTarget.splice(index, 1);
82
+ const removedAnimatedIcons = copiedAnimations.splice(index, 1);
83
+ removedAnimatedIcons[0]?.stop();
84
+ this.targets = copiedTarget;
85
+ this.animators = copiedAnimations;
86
+ }
87
+
88
+ /**
89
+ * Handles the animator reset event.
90
+ *
91
+ * @param {Object} hint - The hint object.
92
+ */
93
+ reset(hint) {
94
+ this.animators?.forEach(animator => animator.stop());
95
+ this.targets = [];
96
+ this.animators = [];
97
+ }
98
+ }
99
+
100
+ /**
101
+ * Handles the decoration animation event.
102
+ *
103
+ * @param {Object} config - The config object.
104
+ * @param {'top' | 'bottom' | 'left' | 'right' | 'on'} config.location - The location of the icon.
105
+ * @param {string} config.icon - The name of the icon from material icons.
106
+ * @param {string} config.color - The color of the icon. ie. 'red', '#123456', ...
107
+ * @param {string} config.size - The size of the icon. ie. 14px, 1.5em, ..
108
+ * @param {Object} config.animations - The animation options of the icon.
109
+ * @param {Object} hint - The hint object.
110
+ * @param {Object} hint.origin - The origin of the hint.
111
+ */
112
+ function icon(config, hint) {
113
+ const {
114
+ origin
115
+ } = hint;
116
+ const root = origin.root;
117
+ let {
118
+ animatorHandler
119
+ } = root;
120
+ if (!animatorHandler) {
121
+ animatorHandler = new AnimatorHandler();
122
+ root.animatorHandler = animatorHandler;
123
+ }
124
+ animatorHandler.icon(origin, config);
125
+ }
126
+
127
+ /**
128
+ * Handles the border highlighting event.
129
+ *
130
+ * @param {Object} decorator - The decorator object.
131
+ * @param {Object} hint - The hint object.
132
+ */
133
+ function border(decorator, hint) {
134
+ const {
135
+ origin
136
+ } = hint;
137
+ const root = origin.root;
138
+ let {
139
+ animatorHandler
140
+ } = root;
141
+ if (!animatorHandler) {
142
+ animatorHandler = new AnimatorHandler();
143
+ root.animatorHandler = animatorHandler;
144
+ }
145
+ animatorHandler.border(origin, decorator);
146
+ }
147
+
148
+ /**
149
+ * Handles the bouncing arrow event.
150
+ *
151
+ * @param {Object} decorator - The decorator object.
152
+ * @param {Object} hint - The hint object.
153
+ */
154
+ function bouncing(decorator, hint) {
155
+ const {
156
+ origin
157
+ } = hint;
158
+ const root = origin.root;
159
+ let {
160
+ animatorHandler
161
+ } = root;
162
+ if (!animatorHandler) {
163
+ animatorHandler = new AnimatorHandler();
164
+ root.animatorHandler = animatorHandler;
165
+ }
166
+ animatorHandler.bouncing(origin, decorator);
167
+ }
168
+
169
+ /**
170
+ * Handles the animator off event.
171
+ *
172
+ * @param {Object} hint - The hint object.
173
+ */
174
+ function animatoroff(hint) {
175
+ const {
176
+ origin
177
+ } = hint;
178
+ const root = origin.root;
179
+ const {
180
+ animatorHandler
181
+ } = root;
182
+ if (animatorHandler) {
183
+ animatorHandler.off(origin);
184
+ } else {
185
+ console.warn('animator-handler not found');
186
+ }
187
+ }
188
+
189
+ /**
190
+ * Resets the animator.
191
+ *
192
+ * @param {Object} hint - The hint object.
193
+ */
194
+ function animatorreset(hint) {
195
+ const {
196
+ origin
197
+ } = hint;
198
+ const root = origin.root;
199
+ const {
200
+ animatorHandler
201
+ } = root;
202
+ animatorHandler?.reset();
203
+ }
204
+ function disposer(root) {
205
+ const {
206
+ animatorHandler
207
+ } = root;
208
+ animatorHandler?.reset();
209
+ delete root.animatorHandler;
210
+ }
211
+ _eventMap.default.register('animator-handler', {
212
+ 'model-layer': {
213
+ '(descendant)': {
214
+ icon,
215
+ border,
216
+ bouncing,
217
+ animatoroff,
218
+ animatorreset
219
+ },
220
+ '(self)': {
221
+ animatorreset
222
+ }
223
+ }
224
+ }, disposer);
225
+ //# sourceMappingURL=animator-handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"animator-handler.js","names":["_eventMap","_interopRequireDefault","require","_animatedIcon","_borderHighlighting","_bouncingArrow","e","__esModule","default","AnimatorHandler","icon","target","config","targets","lastIndexOf","animatedIcon","AnimatedIcon","root","model_layer","overlay","concat","animators","start","border","decorator","borderHighlighting","BorderHighlighting","bouncing","bouncingArrow","BouncingArrow","off","copiedTarget","slice","copiedAnimations","index","splice","removedAnimatedIcons","stop","reset","hint","forEach","animator","origin","animatorHandler","animatoroff","console","warn","animatorreset","disposer","EventMap","register"],"sources":["../../src/event-map/animator-handler.js"],"sourcesContent":["/*\n * Copyright © HatioLab Inc. All rights reserved.\n */\n\nimport EventMap from './event-map.js'\nimport AnimatedIcon from './animators/animated-icon.js'\nimport BorderHighlighting from './animators/border-highlighting.js'\nimport BouncingArrow from './animators/bouncing-arrow.js'\n\n/**\n * AnimatorHandler is a layer that shows material icons with animation effects at the relative position of the target component.\n *\n * @class\n * @extends EventMapHandler\n */\nclass AnimatorHandler {\n /**\n * Adds the target to the targets array.\n *\n * @param {Object} target - The target object.\n */\n icon(target, config) {\n if (this.targets && this.targets.lastIndexOf(target) !== -1) {\n return\n }\n\n const animatedIcon = new AnimatedIcon(target.root.model_layer.overlay, target, config)\n\n this.targets = (this.targets || []).concat(target)\n this.animators = (this.animators || []).concat(animatedIcon)\n\n animatedIcon.start()\n }\n\n /**\n * Adds the target to the targets array and starts the border highlighting animation.\n *\n * @param {Object} target - The target object.\n * @param {Object} decorator - The decorator object.\n */\n border(target, decorator) {\n if (this.targets && this.targets.lastIndexOf(target) !== -1) {\n return\n }\n\n const borderHighlighting = new BorderHighlighting(target.root.model_layer.overlay, target, decorator)\n\n this.targets = (this.targets || []).concat(target)\n this.animators = (this.animators || []).concat(borderHighlighting)\n\n borderHighlighting.start()\n }\n\n /**\n * Adds the target to the targets array and starts the bouncing arrow animation.\n *\n * @param {Object} target - The target object.\n * @param {Object} decorator - The decorator object.\n */\n bouncing(target, decorator) {\n if (this.targets && this.targets.lastIndexOf(target) !== -1) {\n return\n }\n\n const bouncingArrow = new BouncingArrow(target.root.model_layer.overlay, target, decorator)\n\n this.targets = (this.targets || []).concat(target)\n this.animators = (this.animators || []).concat(bouncingArrow)\n\n bouncingArrow.start()\n }\n\n /**\n * Removes the target from the targets array.\n *\n * @param {Object} target - The target object.\n */\n off(target) {\n if (!this.targets) {\n return\n }\n\n let copiedTarget = this.targets.slice()\n let copiedAnimations = this.animators.slice()\n let index = this.targets.lastIndexOf(target)\n\n if (index == -1) {\n return\n }\n\n copiedTarget.splice(index, 1)\n const removedAnimatedIcons = copiedAnimations.splice(index, 1)\n removedAnimatedIcons[0]?.stop()\n\n this.targets = copiedTarget\n this.animators = copiedAnimations\n }\n\n /**\n * Handles the animator reset event.\n *\n * @param {Object} hint - The hint object.\n */\n reset(hint) {\n this.animators?.forEach(animator => animator.stop())\n\n this.targets = []\n this.animators = []\n }\n}\n\n/**\n * Handles the decoration animation event.\n *\n * @param {Object} config - The config object.\n * @param {'top' | 'bottom' | 'left' | 'right' | 'on'} config.location - The location of the icon.\n * @param {string} config.icon - The name of the icon from material icons.\n * @param {string} config.color - The color of the icon. ie. 'red', '#123456', ...\n * @param {string} config.size - The size of the icon. ie. 14px, 1.5em, ..\n * @param {Object} config.animations - The animation options of the icon.\n * @param {Object} hint - The hint object.\n * @param {Object} hint.origin - The origin of the hint.\n */\nfunction icon(config, hint) {\n const { origin } = hint\n const root = origin.root\n let { animatorHandler } = root\n\n if (!animatorHandler) {\n animatorHandler = new AnimatorHandler()\n root.animatorHandler = animatorHandler\n }\n\n animatorHandler.icon(origin, config)\n}\n\n/**\n * Handles the border highlighting event.\n *\n * @param {Object} decorator - The decorator object.\n * @param {Object} hint - The hint object.\n */\nfunction border(decorator, hint) {\n const { origin } = hint\n const root = origin.root\n let { animatorHandler } = root\n\n if (!animatorHandler) {\n animatorHandler = new AnimatorHandler()\n root.animatorHandler = animatorHandler\n }\n\n animatorHandler.border(origin, decorator)\n}\n\n/**\n * Handles the bouncing arrow event.\n *\n * @param {Object} decorator - The decorator object.\n * @param {Object} hint - The hint object.\n */\nfunction bouncing(decorator, hint) {\n const { origin } = hint\n const root = origin.root\n let { animatorHandler } = root\n\n if (!animatorHandler) {\n animatorHandler = new AnimatorHandler()\n root.animatorHandler = animatorHandler\n }\n\n animatorHandler.bouncing(origin, decorator)\n}\n\n/**\n * Handles the animator off event.\n *\n * @param {Object} hint - The hint object.\n */\nfunction animatoroff(hint) {\n const { origin } = hint\n const root = origin.root\n const { animatorHandler } = root\n\n if (animatorHandler) {\n animatorHandler.off(origin)\n } else {\n console.warn('animator-handler not found')\n }\n}\n\n/**\n * Resets the animator.\n *\n * @param {Object} hint - The hint object.\n */\nfunction animatorreset(hint) {\n const { origin } = hint\n const root = origin.root\n const { animatorHandler } = root\n\n animatorHandler?.reset()\n}\n\nfunction disposer(root) {\n const { animatorHandler } = root\n\n animatorHandler?.reset()\n\n delete root.animatorHandler\n}\n\nEventMap.register(\n 'animator-handler',\n {\n 'model-layer': {\n '(descendant)': {\n icon,\n border,\n bouncing,\n animatoroff,\n animatorreset\n },\n '(self)': {\n animatorreset\n }\n }\n },\n disposer\n)\n"],"mappings":";;AAIA,IAAAA,SAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,aAAA,GAAAF,sBAAA,CAAAC,OAAA;AACA,IAAAE,mBAAA,GAAAH,sBAAA,CAAAC,OAAA;AACA,IAAAG,cAAA,GAAAJ,sBAAA,CAAAC,OAAA;AAAyD,SAAAD,uBAAAK,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAPzD;AACA;AACA;;AAOA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMG,eAAe,CAAC;EACpB;AACF;AACA;AACA;AACA;EACEC,IAAIA,CAACC,MAAM,EAAEC,MAAM,EAAE;IACnB,IAAI,IAAI,CAACC,OAAO,IAAI,IAAI,CAACA,OAAO,CAACC,WAAW,CAACH,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE;MAC3D;IACF;IAEA,MAAMI,YAAY,GAAG,IAAIC,qBAAY,CAACL,MAAM,CAACM,IAAI,CAACC,WAAW,CAACC,OAAO,EAAER,MAAM,EAAEC,MAAM,CAAC;IAEtF,IAAI,CAACC,OAAO,GAAG,CAAC,IAAI,CAACA,OAAO,IAAI,EAAE,EAAEO,MAAM,CAACT,MAAM,CAAC;IAClD,IAAI,CAACU,SAAS,GAAG,CAAC,IAAI,CAACA,SAAS,IAAI,EAAE,EAAED,MAAM,CAACL,YAAY,CAAC;IAE5DA,YAAY,CAACO,KAAK,CAAC,CAAC;EACtB;;EAEA;AACF;AACA;AACA;AACA;AACA;EACEC,MAAMA,CAACZ,MAAM,EAAEa,SAAS,EAAE;IACxB,IAAI,IAAI,CAACX,OAAO,IAAI,IAAI,CAACA,OAAO,CAACC,WAAW,CAACH,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE;MAC3D;IACF;IAEA,MAAMc,kBAAkB,GAAG,IAAIC,2BAAkB,CAACf,MAAM,CAACM,IAAI,CAACC,WAAW,CAACC,OAAO,EAAER,MAAM,EAAEa,SAAS,CAAC;IAErG,IAAI,CAACX,OAAO,GAAG,CAAC,IAAI,CAACA,OAAO,IAAI,EAAE,EAAEO,MAAM,CAACT,MAAM,CAAC;IAClD,IAAI,CAACU,SAAS,GAAG,CAAC,IAAI,CAACA,SAAS,IAAI,EAAE,EAAED,MAAM,CAACK,kBAAkB,CAAC;IAElEA,kBAAkB,CAACH,KAAK,CAAC,CAAC;EAC5B;;EAEA;AACF;AACA;AACA;AACA;AACA;EACEK,QAAQA,CAAChB,MAAM,EAAEa,SAAS,EAAE;IAC1B,IAAI,IAAI,CAACX,OAAO,IAAI,IAAI,CAACA,OAAO,CAACC,WAAW,CAACH,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE;MAC3D;IACF;IAEA,MAAMiB,aAAa,GAAG,IAAIC,sBAAa,CAAClB,MAAM,CAACM,IAAI,CAACC,WAAW,CAACC,OAAO,EAAER,MAAM,EAAEa,SAAS,CAAC;IAE3F,IAAI,CAACX,OAAO,GAAG,CAAC,IAAI,CAACA,OAAO,IAAI,EAAE,EAAEO,MAAM,CAACT,MAAM,CAAC;IAClD,IAAI,CAACU,SAAS,GAAG,CAAC,IAAI,CAACA,SAAS,IAAI,EAAE,EAAED,MAAM,CAACQ,aAAa,CAAC;IAE7DA,aAAa,CAACN,KAAK,CAAC,CAAC;EACvB;;EAEA;AACF;AACA;AACA;AACA;EACEQ,GAAGA,CAACnB,MAAM,EAAE;IACV,IAAI,CAAC,IAAI,CAACE,OAAO,EAAE;MACjB;IACF;IAEA,IAAIkB,YAAY,GAAG,IAAI,CAAClB,OAAO,CAACmB,KAAK,CAAC,CAAC;IACvC,IAAIC,gBAAgB,GAAG,IAAI,CAACZ,SAAS,CAACW,KAAK,CAAC,CAAC;IAC7C,IAAIE,KAAK,GAAG,IAAI,CAACrB,OAAO,CAACC,WAAW,CAACH,MAAM,CAAC;IAE5C,IAAIuB,KAAK,IAAI,CAAC,CAAC,EAAE;MACf;IACF;IAEAH,YAAY,CAACI,MAAM,CAACD,KAAK,EAAE,CAAC,CAAC;IAC7B,MAAME,oBAAoB,GAAGH,gBAAgB,CAACE,MAAM,CAACD,KAAK,EAAE,CAAC,CAAC;IAC9DE,oBAAoB,CAAC,CAAC,CAAC,EAAEC,IAAI,CAAC,CAAC;IAE/B,IAAI,CAACxB,OAAO,GAAGkB,YAAY;IAC3B,IAAI,CAACV,SAAS,GAAGY,gBAAgB;EACnC;;EAEA;AACF;AACA;AACA;AACA;EACEK,KAAKA,CAACC,IAAI,EAAE;IACV,IAAI,CAAClB,SAAS,EAAEmB,OAAO,CAACC,QAAQ,IAAIA,QAAQ,CAACJ,IAAI,CAAC,CAAC,CAAC;IAEpD,IAAI,CAACxB,OAAO,GAAG,EAAE;IACjB,IAAI,CAACQ,SAAS,GAAG,EAAE;EACrB;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASX,IAAIA,CAACE,MAAM,EAAE2B,IAAI,EAAE;EAC1B,MAAM;IAAEG;EAAO,CAAC,GAAGH,IAAI;EACvB,MAAMtB,IAAI,GAAGyB,MAAM,CAACzB,IAAI;EACxB,IAAI;IAAE0B;EAAgB,CAAC,GAAG1B,IAAI;EAE9B,IAAI,CAAC0B,eAAe,EAAE;IACpBA,eAAe,GAAG,IAAIlC,eAAe,CAAC,CAAC;IACvCQ,IAAI,CAAC0B,eAAe,GAAGA,eAAe;EACxC;EAEAA,eAAe,CAACjC,IAAI,CAACgC,MAAM,EAAE9B,MAAM,CAAC;AACtC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAASW,MAAMA,CAACC,SAAS,EAAEe,IAAI,EAAE;EAC/B,MAAM;IAAEG;EAAO,CAAC,GAAGH,IAAI;EACvB,MAAMtB,IAAI,GAAGyB,MAAM,CAACzB,IAAI;EACxB,IAAI;IAAE0B;EAAgB,CAAC,GAAG1B,IAAI;EAE9B,IAAI,CAAC0B,eAAe,EAAE;IACpBA,eAAe,GAAG,IAAIlC,eAAe,CAAC,CAAC;IACvCQ,IAAI,CAAC0B,eAAe,GAAGA,eAAe;EACxC;EAEAA,eAAe,CAACpB,MAAM,CAACmB,MAAM,EAAElB,SAAS,CAAC;AAC3C;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAASG,QAAQA,CAACH,SAAS,EAAEe,IAAI,EAAE;EACjC,MAAM;IAAEG;EAAO,CAAC,GAAGH,IAAI;EACvB,MAAMtB,IAAI,GAAGyB,MAAM,CAACzB,IAAI;EACxB,IAAI;IAAE0B;EAAgB,CAAC,GAAG1B,IAAI;EAE9B,IAAI,CAAC0B,eAAe,EAAE;IACpBA,eAAe,GAAG,IAAIlC,eAAe,CAAC,CAAC;IACvCQ,IAAI,CAAC0B,eAAe,GAAGA,eAAe;EACxC;EAEAA,eAAe,CAAChB,QAAQ,CAACe,MAAM,EAAElB,SAAS,CAAC;AAC7C;;AAEA;AACA;AACA;AACA;AACA;AACA,SAASoB,WAAWA,CAACL,IAAI,EAAE;EACzB,MAAM;IAAEG;EAAO,CAAC,GAAGH,IAAI;EACvB,MAAMtB,IAAI,GAAGyB,MAAM,CAACzB,IAAI;EACxB,MAAM;IAAE0B;EAAgB,CAAC,GAAG1B,IAAI;EAEhC,IAAI0B,eAAe,EAAE;IACnBA,eAAe,CAACb,GAAG,CAACY,MAAM,CAAC;EAC7B,CAAC,MAAM;IACLG,OAAO,CAACC,IAAI,CAAC,4BAA4B,CAAC;EAC5C;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA,SAASC,aAAaA,CAACR,IAAI,EAAE;EAC3B,MAAM;IAAEG;EAAO,CAAC,GAAGH,IAAI;EACvB,MAAMtB,IAAI,GAAGyB,MAAM,CAACzB,IAAI;EACxB,MAAM;IAAE0B;EAAgB,CAAC,GAAG1B,IAAI;EAEhC0B,eAAe,EAAEL,KAAK,CAAC,CAAC;AAC1B;AAEA,SAASU,QAAQA,CAAC/B,IAAI,EAAE;EACtB,MAAM;IAAE0B;EAAgB,CAAC,GAAG1B,IAAI;EAEhC0B,eAAe,EAAEL,KAAK,CAAC,CAAC;EAExB,OAAOrB,IAAI,CAAC0B,eAAe;AAC7B;AAEAM,iBAAQ,CAACC,QAAQ,CACf,kBAAkB,EAClB;EACE,aAAa,EAAE;IACb,cAAc,EAAE;MACdxC,IAAI;MACJa,MAAM;MACNI,QAAQ;MACRiB,WAAW;MACXG;IACF,CAAC;IACD,QAAQ,EAAE;MACRA;IACF;EACF;AACF,CAAC,EACDC,QACF,CAAC","ignoreList":[]}
@@ -0,0 +1,265 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var Animation = _interopRequireWildcard(require("../../animation/index.js"));
8
+ 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); }
9
+ 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; }
10
+ 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; }
11
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
12
+ 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); } /*
13
+ * Copyright © HatioLab Inc. All rights reserved.
14
+ */
15
+ class AnimatedIcon {
16
+ constructor(overlay, target, config) {
17
+ _defineProperty(this, "_delta", {
18
+ theta: 0,
19
+ tx: 0,
20
+ ty: 0,
21
+ sx: 1,
22
+ sy: 1,
23
+ fade: 0
24
+ });
25
+ _defineProperty(this, "_location", null);
26
+ const {
27
+ animations,
28
+ ...decorator
29
+ } = config;
30
+ this.overlay = overlay;
31
+ this.target = target;
32
+ this.decorator = decorator || {};
33
+ this.animations = [];
34
+ if (Array.isArray(animations)) {
35
+ this.animations = animations.map(animation => {
36
+ if ('theta' in animation) {
37
+ animation = {
38
+ ...animation,
39
+ theta: animation.theta * (Math.PI / 180)
40
+ };
41
+ }
42
+ return Animation.compile(this, animation);
43
+ });
44
+ } else if (animations) {
45
+ if ('theta' in animations) {
46
+ animations = {
47
+ ...animations,
48
+ theta: animations.theta * (Math.PI / 180)
49
+ };
50
+ }
51
+ this.animations = [Animation.compile(this, animations)];
52
+ }
53
+ }
54
+ delta(attr, value) {
55
+ if (value === undefined) {
56
+ return attr ? this._delta[attr] : this._delta;
57
+ }
58
+ this._delta[attr] = value;
59
+ const {
60
+ tx,
61
+ ty,
62
+ sx,
63
+ sy,
64
+ theta,
65
+ fade
66
+ } = this._delta;
67
+ Object.assign(this.element.style, {
68
+ opacity: 1 - fade,
69
+ transform: `rotate(${theta}rad) translate(${tx}px, ${ty}px) scale(${sx}, ${sy}) perspective(1px)`
70
+ });
71
+ }
72
+ get location() {
73
+ if (this._location) return this._location;
74
+ const {
75
+ location,
76
+ size
77
+ } = this.decorator;
78
+ const {
79
+ left,
80
+ top,
81
+ width,
82
+ height
83
+ } = this.target.bounds;
84
+ let leftTop;
85
+ switch (location) {
86
+ case 'top-left':
87
+ leftTop = {
88
+ x: left,
89
+ y: top - size
90
+ };
91
+ break;
92
+ case 'top':
93
+ leftTop = {
94
+ x: left + (width - size) / 2,
95
+ y: top - size
96
+ };
97
+ break;
98
+ case 'top-right':
99
+ leftTop = {
100
+ x: left + width - size,
101
+ y: top - size
102
+ };
103
+ break;
104
+ case 'bottom-left':
105
+ leftTop = {
106
+ x: left,
107
+ y: top + height
108
+ };
109
+ break;
110
+ case 'bottom':
111
+ leftTop = {
112
+ x: left + (width - size) / 2,
113
+ y: top + height
114
+ };
115
+ break;
116
+ case 'bottom-right':
117
+ leftTop = {
118
+ x: left + width - size,
119
+ y: top + height
120
+ };
121
+ break;
122
+ case 'left-top':
123
+ leftTop = {
124
+ x: left - size,
125
+ y: top
126
+ };
127
+ break;
128
+ case 'left':
129
+ leftTop = {
130
+ x: left - size,
131
+ y: top + (height - size) / 2
132
+ };
133
+ break;
134
+ case 'left-bottom':
135
+ leftTop = {
136
+ x: left - size,
137
+ y: top + (height - size)
138
+ };
139
+ break;
140
+ case 'right-top':
141
+ leftTop = {
142
+ x: left + width,
143
+ y: top
144
+ };
145
+ break;
146
+ case 'right':
147
+ leftTop = {
148
+ x: left + width,
149
+ y: top + (height - size) / 2
150
+ };
151
+ break;
152
+ case 'right-bottom':
153
+ leftTop = {
154
+ x: left + width,
155
+ y: top + (height - size)
156
+ };
157
+ break;
158
+ case 'top-left-corner':
159
+ leftTop = {
160
+ x: left - size / 2,
161
+ y: top - size / 2
162
+ };
163
+ break;
164
+ case 'top-right-corner':
165
+ leftTop = {
166
+ x: left + width - size / 2,
167
+ y: top - size / 2
168
+ };
169
+ break;
170
+ case 'bottom-left-corner':
171
+ leftTop = {
172
+ x: left - size / 2,
173
+ y: top + height - size / 2
174
+ };
175
+ break;
176
+ case 'bottom-right-corner':
177
+ leftTop = {
178
+ x: left + width - size / 2,
179
+ y: top + height - size / 2
180
+ };
181
+ break;
182
+ default:
183
+ leftTop = {
184
+ x: left + width / 2 - size / 2,
185
+ y: top + height / 2 - size / 2
186
+ };
187
+ }
188
+ this._location = this.target.transcoordS2T(leftTop.x, leftTop.y);
189
+ return this._location;
190
+ }
191
+ get element() {
192
+ if (!this._element) {
193
+ const {
194
+ icon,
195
+ size,
196
+ color
197
+ } = this.decorator;
198
+ const {
199
+ x: left,
200
+ y: top
201
+ } = this.location;
202
+ const element = document.createElement('div');
203
+ element.setAttribute('scene', 'animated-icon');
204
+ Object.assign(element.style, {
205
+ position: 'absolute',
206
+ fontVariationSettings: `'FILL' 1`,
207
+ fontFamily: 'Material Symbols Outlined',
208
+ fontSize: size + 'px',
209
+ width: size + 'px',
210
+ height: size + 'px',
211
+ lineHeight: size + 'px',
212
+ padding: 0,
213
+ margin: 0,
214
+ color: color,
215
+ textAlign: 'center',
216
+ verticalAlign: 'middle',
217
+ left: left + 'px',
218
+ top: top + 'px',
219
+ pointerEvents: 'none'
220
+ });
221
+ element.textContent = icon;
222
+ this._element = element;
223
+ }
224
+ return this._element;
225
+ }
226
+ touch() {}
227
+ invalidate() {}
228
+ start() {
229
+ this.overlay.appendChild(this.element);
230
+ this.animations.forEach(animation => animation.start());
231
+ }
232
+ stop() {
233
+ this.overlay.removeChild(this.element);
234
+ this.animations.forEach(animation => animation.stop());
235
+ this._location = null;
236
+ }
237
+ get root() {
238
+ return this.target.root;
239
+ }
240
+ get center() {
241
+ const {
242
+ size
243
+ } = this.decorator;
244
+ const {
245
+ x,
246
+ y
247
+ } = this.location;
248
+ return {
249
+ x: x + size / 2,
250
+ y: y + size / 2
251
+ };
252
+ }
253
+ transcoordS2T(x, y) {
254
+ const {
255
+ tx,
256
+ ty
257
+ } = this._delta;
258
+ return {
259
+ x: x + tx,
260
+ y: y + ty
261
+ };
262
+ }
263
+ }
264
+ exports.default = AnimatedIcon;
265
+ //# sourceMappingURL=animated-icon.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"animated-icon.js","names":["Animation","_interopRequireWildcard","require","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","_defineProperty","_toPropertyKey","value","enumerable","configurable","writable","_toPrimitive","Symbol","toPrimitive","TypeError","String","Number","AnimatedIcon","constructor","overlay","target","config","theta","tx","ty","sx","sy","fade","animations","decorator","Array","isArray","map","animation","Math","PI","compile","delta","attr","undefined","_delta","assign","element","style","opacity","transform","location","_location","size","left","top","width","height","bounds","leftTop","x","y","transcoordS2T","_element","icon","color","document","createElement","setAttribute","position","fontVariationSettings","fontFamily","fontSize","lineHeight","padding","margin","textAlign","verticalAlign","pointerEvents","textContent","touch","invalidate","start","appendChild","forEach","stop","removeChild","root","center","exports"],"sources":["../../../src/event-map/animators/animated-icon.js"],"sourcesContent":["/*\n * Copyright © HatioLab Inc. All rights reserved.\n */\n\nimport * as Animation from '../../animation/index.js'\n\nexport default class AnimatedIcon {\n constructor(overlay, target, config) {\n const { animations, ...decorator } = config\n\n this.overlay = overlay\n this.target = target\n this.decorator = decorator || {}\n\n this.animations = []\n\n if (Array.isArray(animations)) {\n this.animations = animations.map(animation => {\n if ('theta' in animation) {\n animation = { ...animation, theta: animation.theta * (Math.PI / 180) }\n }\n return Animation.compile(this, animation)\n })\n } else if (animations) {\n if ('theta' in animations) {\n animations = { ...animations, theta: animations.theta * (Math.PI / 180) }\n }\n this.animations = [Animation.compile(this, animations)]\n }\n }\n\n _delta = {\n theta: 0,\n tx: 0,\n ty: 0,\n sx: 1,\n sy: 1,\n fade: 0\n }\n\n _location = null\n\n delta(attr, value) {\n if (value === undefined) {\n return attr ? this._delta[attr] : this._delta\n }\n\n this._delta[attr] = value\n\n const { tx, ty, sx, sy, theta, fade } = this._delta\n\n Object.assign(this.element.style, {\n opacity: 1 - fade,\n transform: `rotate(${theta}rad) translate(${tx}px, ${ty}px) scale(${sx}, ${sy}) perspective(1px)`\n })\n }\n\n get location() {\n if (this._location) return this._location\n\n const { location, size } = this.decorator\n const { left, top, width, height } = this.target.bounds\n\n let leftTop\n\n switch (location) {\n case 'top-left':\n leftTop = { x: left, y: top - size }\n break\n case 'top':\n leftTop = { x: left + (width - size) / 2, y: top - size }\n break\n case 'top-right':\n leftTop = { x: left + width - size, y: top - size }\n break\n\n case 'bottom-left':\n leftTop = { x: left, y: top + height }\n break\n case 'bottom':\n leftTop = { x: left + (width - size) / 2, y: top + height }\n break\n case 'bottom-right':\n leftTop = { x: left + width - size, y: top + height }\n break\n\n case 'left-top':\n leftTop = { x: left - size, y: top }\n break\n case 'left':\n leftTop = { x: left - size, y: top + (height - size) / 2 }\n break\n case 'left-bottom':\n leftTop = { x: left - size, y: top + (height - size) }\n break\n\n case 'right-top':\n leftTop = { x: left + width, y: top }\n break\n case 'right':\n leftTop = { x: left + width, y: top + (height - size) / 2 }\n break\n case 'right-bottom':\n leftTop = { x: left + width, y: top + (height - size) }\n break\n\n case 'top-left-corner':\n leftTop = { x: left - size / 2, y: top - size / 2 }\n break\n case 'top-right-corner':\n leftTop = { x: left + width - size / 2, y: top - size / 2 }\n break\n case 'bottom-left-corner':\n leftTop = { x: left - size / 2, y: top + height - size / 2 }\n break\n case 'bottom-right-corner':\n leftTop = { x: left + width - size / 2, y: top + height - size / 2 }\n break\n\n default:\n leftTop = { x: left + width / 2 - size / 2, y: top + height / 2 - size / 2 }\n }\n\n this._location = this.target.transcoordS2T(leftTop.x, leftTop.y)\n return this._location\n }\n\n get element() {\n if (!this._element) {\n const { icon, size, color } = this.decorator\n const { x: left, y: top } = this.location\n\n const element = document.createElement('div')\n element.setAttribute('scene', 'animated-icon')\n\n Object.assign(element.style, {\n position: 'absolute',\n fontVariationSettings: `'FILL' 1`,\n fontFamily: 'Material Symbols Outlined',\n fontSize: size + 'px',\n width: size + 'px',\n height: size + 'px',\n lineHeight: size + 'px',\n padding: 0,\n margin: 0,\n color: color,\n textAlign: 'center',\n verticalAlign: 'middle',\n left: left + 'px',\n top: top + 'px',\n pointerEvents: 'none'\n })\n\n element.textContent = icon\n this._element = element\n }\n\n return this._element\n }\n\n touch() {}\n invalidate() {}\n\n start() {\n this.overlay.appendChild(this.element)\n this.animations.forEach(animation => animation.start())\n }\n\n stop() {\n this.overlay.removeChild(this.element)\n this.animations.forEach(animation => animation.stop())\n this._location = null\n }\n\n get root() {\n return this.target.root\n }\n\n get center() {\n const { size } = this.decorator\n const { x, y } = this.location\n return { x: x + size / 2, y: y + size / 2 }\n }\n\n transcoordS2T(x, y) {\n const { tx, ty } = this._delta\n return { x: x + tx, y: y + ty }\n }\n}\n"],"mappings":"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","ignoreList":[]}