@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 @@
1
+ {"version":3,"file":"obj-accessor.js","names":["_jsonataEs","_interopRequireDefault","require","e","__esModule","default","SELF","o","buildAccessor","accessor","expression","jsonata","evaluate","err","console","error"],"sources":["../../src/core/obj-accessor.js"],"sourcesContent":["import jsonata from 'jsonata/jsonata-es5.js'\n\nconst SELF = function (o) {\n return o\n}\n\nexport default function buildAccessor(accessor) {\n if (!accessor) {\n return SELF\n }\n\n try {\n var expression = jsonata(accessor)\n\n return function (o) {\n return expression.evaluate(o)\n }\n } catch (err) {\n console.error(err)\n return SELF\n }\n}\n"],"mappings":";;;;;;AAAA,IAAAA,UAAA,GAAAC,sBAAA,CAAAC,OAAA;AAA4C,SAAAD,uBAAAE,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAE5C,MAAMG,IAAI,GAAG,SAAAA,CAAUC,CAAC,EAAE;EACxB,OAAOA,CAAC;AACV,CAAC;AAEc,SAASC,aAAaA,CAACC,QAAQ,EAAE;EAC9C,IAAI,CAACA,QAAQ,EAAE;IACb,OAAOH,IAAI;EACb;EAEA,IAAI;IACF,IAAII,UAAU,GAAG,IAAAC,kBAAO,EAACF,QAAQ,CAAC;IAElC,OAAO,UAAUF,CAAC,EAAE;MAClB,OAAOG,UAAU,CAACE,QAAQ,CAACL,CAAC,CAAC;IAC/B,CAAC;EACH,CAAC,CAAC,OAAOM,GAAG,EAAE;IACZC,OAAO,CAACC,KAAK,CAACF,GAAG,CAAC;IAClB,OAAOP,IAAI;EACb;AACF","ignoreList":[]}
@@ -0,0 +1,147 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _logger = require("./logger.js");
8
+ /*
9
+ * Copyright © HatioLab Inc. All rights reserved.
10
+ */
11
+
12
+ var reference_count = 0;
13
+ const finalizationRegistry = new FinalizationRegistry(() => {
14
+ reference_count--;
15
+ });
16
+ class ReferenceMap {
17
+ static get residents() {
18
+ return reference_count;
19
+ }
20
+ static get residentsCount() {
21
+ return reference_count;
22
+ }
23
+ constructor(creator, disposer) {
24
+ this.counters = {};
25
+ this.references = {};
26
+ this.creator = creator;
27
+ this.disposer = disposer;
28
+ reference_count++;
29
+ finalizationRegistry.register(this, reference_count);
30
+ }
31
+ dispose() {
32
+ if (this.disposer) {
33
+ for (let id in this.references) this.disposer.call(null, id, this.references[id]);
34
+ }
35
+ delete this.references;
36
+ delete this.counters;
37
+ }
38
+ get ids() {
39
+ return Object.keys(this.references);
40
+ }
41
+
42
+ /* 제공된 생성자를 이용해서 Scene 생성하기만 한다. */
43
+ create(id) {
44
+ var self = this;
45
+ return new Promise(function (resolve, reject) {
46
+ function _resolve(target) {
47
+ target.release = function () {
48
+ this.disposer && this.disposer.call(null, id, target);
49
+ delete target.release;
50
+ (0, _logger.debug)('RELEASED', id);
51
+ };
52
+ resolve(target);
53
+ }
54
+ if (!self.creator) {
55
+ reject(Error('Reference id(' + id + ') could not be created. Reference creator should be defined.'));
56
+ return;
57
+ }
58
+ self.creator.call(null, id, function (target) {
59
+ _resolve(target);
60
+ }, function (error) {
61
+ reject(error);
62
+ });
63
+ });
64
+ }
65
+ add(id, target) {
66
+ var self = this;
67
+ var promise = new Promise(function (resolve, reject) {
68
+ var ref = self.references[id];
69
+ if (ref) {
70
+ if (ref === target) reject(Error('Reference ID and target duplicate'));else if (target) reject(Error('Reference ID duplicate'));else resolve(ref);
71
+ } else {
72
+ function _resolve(target) {
73
+ target.release = function () {
74
+ self.release(this);
75
+ };
76
+ self.references[id] = target;
77
+ self.counters[id] = 1;
78
+ resolve(target);
79
+ }
80
+ if (target) {
81
+ _resolve(target);
82
+ } else {
83
+ if (!self.creator) {
84
+ reject(Error('Reference id(' + id + ') is not allowed. Reference creator should be defined.'));
85
+ return;
86
+ }
87
+ self.creator.call(null, id, function (target) {
88
+ _resolve(target);
89
+ }, function (error) {
90
+ reject(error);
91
+ });
92
+ }
93
+ }
94
+ });
95
+ if (!this.references[id]) {
96
+ this.references[id] = promise;
97
+ }
98
+ return promise;
99
+ }
100
+ async get(id, createIf) {
101
+ var ref = this.references[id];
102
+ if (ref) {
103
+ if (!(ref instanceof Promise)) {
104
+ if (!(id in this.counters)) {
105
+ throw new Error('No Reference Count');
106
+ }
107
+ this.counters[id]++;
108
+ return ref;
109
+ }
110
+ if (createIf) {
111
+ /* createIf 인 경우에만, ref가 아직 Promise이면, 기다린다. */
112
+ ref = await ref;
113
+ this.counters[id]++;
114
+ return ref;
115
+ }
116
+ }
117
+ if (createIf) {
118
+ return await this.add(id);
119
+ }
120
+ throw new Error('No References for ' + id);
121
+ }
122
+ _id(target) {
123
+ for (let id in this.references) {
124
+ let ref = this.references[id];
125
+ if (ref === target) return id;
126
+ }
127
+ return -1;
128
+ }
129
+ release(target) {
130
+ var id = this._id(target);
131
+ var ref = this.references[id];
132
+ if (!ref) {
133
+ (0, _logger.error)('No Referenced ID');
134
+ return;
135
+ }
136
+ this.counters[id]--;
137
+ if (this.counters[id] == 0) {
138
+ this.disposer && this.disposer.call(null, id, ref);
139
+ delete this.references[id];
140
+ delete this.counters[id];
141
+ delete target.release;
142
+ (0, _logger.debug)('RELEASED', id);
143
+ }
144
+ }
145
+ }
146
+ exports.default = ReferenceMap;
147
+ //# sourceMappingURL=reference-map.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reference-map.js","names":["_logger","require","reference_count","finalizationRegistry","FinalizationRegistry","ReferenceMap","residents","residentsCount","constructor","creator","disposer","counters","references","register","dispose","id","call","ids","Object","keys","create","self","Promise","resolve","reject","_resolve","target","release","debug","Error","error","add","promise","ref","get","createIf","_id","exports","default"],"sources":["../../src/core/reference-map.js"],"sourcesContent":["/*\n * Copyright © HatioLab Inc. All rights reserved.\n */\n\nimport { debug, error } from './logger.js'\n\nvar reference_count = 0\nconst finalizationRegistry = new FinalizationRegistry(() => {\n reference_count--\n})\n\nexport default class ReferenceMap {\n static get residents() {\n return reference_count\n }\n\n static get residentsCount() {\n return reference_count\n }\n\n constructor(creator, disposer) {\n this.counters = {}\n this.references = {}\n this.creator = creator\n this.disposer = disposer\n\n reference_count++\n finalizationRegistry.register(this, reference_count)\n }\n\n dispose() {\n if (this.disposer) {\n for (let id in this.references) this.disposer.call(null, id, this.references[id])\n }\n\n delete this.references\n delete this.counters\n }\n\n get ids() {\n return Object.keys(this.references)\n }\n\n /* 제공된 생성자를 이용해서 Scene 생성하기만 한다. */\n create(id) {\n var self = this\n\n return new Promise(function (resolve, reject) {\n function _resolve(target) {\n target.release = function () {\n this.disposer && this.disposer.call(null, id, target)\n delete target.release\n debug('RELEASED', id)\n }\n\n resolve(target)\n }\n\n if (!self.creator) {\n reject(Error('Reference id(' + id + ') could not be created. Reference creator should be defined.'))\n return\n }\n\n self.creator.call(\n null,\n id,\n function (target) {\n _resolve(target)\n },\n function (error) {\n reject(error)\n }\n )\n })\n }\n\n add(id, target) {\n var self = this\n\n var promise = new Promise(function (resolve, reject) {\n var ref = self.references[id]\n\n if (ref) {\n if (ref === target) reject(Error('Reference ID and target duplicate'))\n else if (target) reject(Error('Reference ID duplicate'))\n else resolve(ref)\n } else {\n function _resolve(target) {\n target.release = function () {\n self.release(this)\n }\n\n self.references[id] = target\n self.counters[id] = 1\n\n resolve(target)\n }\n\n if (target) {\n _resolve(target)\n } else {\n if (!self.creator) {\n reject(Error('Reference id(' + id + ') is not allowed. Reference creator should be defined.'))\n return\n }\n\n self.creator.call(\n null,\n id,\n function (target) {\n _resolve(target)\n },\n function (error) {\n reject(error)\n }\n )\n }\n }\n })\n\n if (!this.references[id]) {\n this.references[id] = promise\n }\n\n return promise\n }\n\n async get(id, createIf) {\n var ref = this.references[id]\n\n if (ref) {\n if (!(ref instanceof Promise)) {\n if (!(id in this.counters)) {\n throw new Error('No Reference Count')\n }\n\n this.counters[id]++\n return ref\n }\n\n if (createIf) {\n /* createIf 인 경우에만, ref가 아직 Promise이면, 기다린다. */\n ref = await ref\n this.counters[id]++\n return ref\n }\n }\n\n if (createIf) {\n return await this.add(id)\n }\n\n throw new Error('No References for ' + id)\n }\n\n _id(target) {\n for (let id in this.references) {\n let ref = this.references[id]\n if (ref === target) return id\n }\n\n return -1\n }\n\n release(target) {\n var id = this._id(target)\n var ref = this.references[id]\n\n if (!ref) {\n error('No Referenced ID')\n return\n }\n\n this.counters[id]--\n\n if (this.counters[id] == 0) {\n this.disposer && this.disposer.call(null, id, ref)\n delete this.references[id]\n delete this.counters[id]\n delete target.release\n debug('RELEASED', id)\n }\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,62 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.roundRect = roundRect;
7
+ /**
8
+ * Draws a rounded rectangle using the current state of the canvas.
9
+ * If you omit the last three params, it will draw a rectangle
10
+ * outline with a 5 pixel border radius
11
+ * @param {CanvasRenderingContext2D} context
12
+ * @param {Number} x The top left x coordinate
13
+ * @param {Number} y The top left y coordinate
14
+ * @param {Number} width The width of the rectangle
15
+ * @param {Number} height The height of the rectangle
16
+ * @param {Number|Array<Number>} [radius = 0] The corner radius; It can also be an object
17
+ * to specify different radii for corners
18
+ * @param {Number} [radius.tl = 0] Top left
19
+ * @param {Number} [radius.tr = 0] Top right
20
+ * @param {Number} [radius.br = 0] Bottom right
21
+ * @param {Number} [radius.bl = 0] Bottom left
22
+ * @param {Boolean} [fill = false] Whether to fill the rectangle.
23
+ * @param {Boolean} [stroke = true] Whether to stroke the rectangle.
24
+ */
25
+ function roundRect(context, x, y, width, height, radius = 0, fill = false, stroke = true) {
26
+ if (typeof radius === 'number') {
27
+ radius = {
28
+ tl: radius,
29
+ tr: radius,
30
+ br: radius,
31
+ bl: radius
32
+ };
33
+ } else {
34
+ radius = {
35
+ ...{
36
+ tl: 0,
37
+ tr: 0,
38
+ br: 0,
39
+ bl: 0
40
+ },
41
+ ...radius
42
+ };
43
+ }
44
+ context.beginPath();
45
+ context.moveTo(x + radius.tl, y);
46
+ context.lineTo(x + width - radius.tr, y);
47
+ context.quadraticCurveTo(x + width, y, x + width, y + radius.tr);
48
+ context.lineTo(x + width, y + height - radius.br);
49
+ context.quadraticCurveTo(x + width, y + height, x + width - radius.br, y + height);
50
+ context.lineTo(x + radius.bl, y + height);
51
+ context.quadraticCurveTo(x, y + height, x, y + height - radius.bl);
52
+ context.lineTo(x, y + radius.tl);
53
+ context.quadraticCurveTo(x, y, x + radius.tl, y);
54
+ context.closePath();
55
+ if (fill) {
56
+ context.fill();
57
+ }
58
+ if (stroke) {
59
+ context.stroke();
60
+ }
61
+ }
62
+ //# sourceMappingURL=round-rect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"round-rect.js","names":["roundRect","context","x","y","width","height","radius","fill","stroke","tl","tr","br","bl","beginPath","moveTo","lineTo","quadraticCurveTo","closePath"],"sources":["../../src/core/round-rect.js"],"sourcesContent":["/**\n * Draws a rounded rectangle using the current state of the canvas.\n * If you omit the last three params, it will draw a rectangle\n * outline with a 5 pixel border radius\n * @param {CanvasRenderingContext2D} context\n * @param {Number} x The top left x coordinate\n * @param {Number} y The top left y coordinate\n * @param {Number} width The width of the rectangle\n * @param {Number} height The height of the rectangle\n * @param {Number|Array<Number>} [radius = 0] The corner radius; It can also be an object\n * to specify different radii for corners\n * @param {Number} [radius.tl = 0] Top left\n * @param {Number} [radius.tr = 0] Top right\n * @param {Number} [radius.br = 0] Bottom right\n * @param {Number} [radius.bl = 0] Bottom left\n * @param {Boolean} [fill = false] Whether to fill the rectangle.\n * @param {Boolean} [stroke = true] Whether to stroke the rectangle.\n */\nexport function roundRect(context, x, y, width, height, radius = 0, fill = false, stroke = true) {\n if (typeof radius === 'number') {\n radius = { tl: radius, tr: radius, br: radius, bl: radius }\n } else {\n radius = { ...{ tl: 0, tr: 0, br: 0, bl: 0 }, ...radius }\n }\n\n context.beginPath()\n context.moveTo(x + radius.tl, y)\n context.lineTo(x + width - radius.tr, y)\n context.quadraticCurveTo(x + width, y, x + width, y + radius.tr)\n context.lineTo(x + width, y + height - radius.br)\n context.quadraticCurveTo(x + width, y + height, x + width - radius.br, y + height)\n context.lineTo(x + radius.bl, y + height)\n context.quadraticCurveTo(x, y + height, x, y + height - radius.bl)\n context.lineTo(x, y + radius.tl)\n context.quadraticCurveTo(x, y, x + radius.tl, y)\n context.closePath()\n\n if (fill) {\n context.fill()\n }\n\n if (stroke) {\n context.stroke()\n }\n}\n"],"mappings":";;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASA,SAASA,CAACC,OAAO,EAAEC,CAAC,EAAEC,CAAC,EAAEC,KAAK,EAAEC,MAAM,EAAEC,MAAM,GAAG,CAAC,EAAEC,IAAI,GAAG,KAAK,EAAEC,MAAM,GAAG,IAAI,EAAE;EAC/F,IAAI,OAAOF,MAAM,KAAK,QAAQ,EAAE;IAC9BA,MAAM,GAAG;MAAEG,EAAE,EAAEH,MAAM;MAAEI,EAAE,EAAEJ,MAAM;MAAEK,EAAE,EAAEL,MAAM;MAAEM,EAAE,EAAEN;IAAO,CAAC;EAC7D,CAAC,MAAM;IACLA,MAAM,GAAG;MAAE,GAAG;QAAEG,EAAE,EAAE,CAAC;QAAEC,EAAE,EAAE,CAAC;QAAEC,EAAE,EAAE,CAAC;QAAEC,EAAE,EAAE;MAAE,CAAC;MAAE,GAAGN;IAAO,CAAC;EAC3D;EAEAL,OAAO,CAACY,SAAS,CAAC,CAAC;EACnBZ,OAAO,CAACa,MAAM,CAACZ,CAAC,GAAGI,MAAM,CAACG,EAAE,EAAEN,CAAC,CAAC;EAChCF,OAAO,CAACc,MAAM,CAACb,CAAC,GAAGE,KAAK,GAAGE,MAAM,CAACI,EAAE,EAAEP,CAAC,CAAC;EACxCF,OAAO,CAACe,gBAAgB,CAACd,CAAC,GAAGE,KAAK,EAAED,CAAC,EAAED,CAAC,GAAGE,KAAK,EAAED,CAAC,GAAGG,MAAM,CAACI,EAAE,CAAC;EAChET,OAAO,CAACc,MAAM,CAACb,CAAC,GAAGE,KAAK,EAAED,CAAC,GAAGE,MAAM,GAAGC,MAAM,CAACK,EAAE,CAAC;EACjDV,OAAO,CAACe,gBAAgB,CAACd,CAAC,GAAGE,KAAK,EAAED,CAAC,GAAGE,MAAM,EAAEH,CAAC,GAAGE,KAAK,GAAGE,MAAM,CAACK,EAAE,EAAER,CAAC,GAAGE,MAAM,CAAC;EAClFJ,OAAO,CAACc,MAAM,CAACb,CAAC,GAAGI,MAAM,CAACM,EAAE,EAAET,CAAC,GAAGE,MAAM,CAAC;EACzCJ,OAAO,CAACe,gBAAgB,CAACd,CAAC,EAAEC,CAAC,GAAGE,MAAM,EAAEH,CAAC,EAAEC,CAAC,GAAGE,MAAM,GAAGC,MAAM,CAACM,EAAE,CAAC;EAClEX,OAAO,CAACc,MAAM,CAACb,CAAC,EAAEC,CAAC,GAAGG,MAAM,CAACG,EAAE,CAAC;EAChCR,OAAO,CAACe,gBAAgB,CAACd,CAAC,EAAEC,CAAC,EAAED,CAAC,GAAGI,MAAM,CAACG,EAAE,EAAEN,CAAC,CAAC;EAChDF,OAAO,CAACgB,SAAS,CAAC,CAAC;EAEnB,IAAIV,IAAI,EAAE;IACRN,OAAO,CAACM,IAAI,CAAC,CAAC;EAChB;EAEA,IAAIC,MAAM,EAAE;IACVP,OAAO,CAACO,MAAM,CAAC,CAAC;EAClB;AACF","ignoreList":[]}
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.safeRound = safeRound;
7
+ function safeRound(round, width, height) {
8
+ return Math.max(0, Math.min(round, Math.min(height, width) / 2));
9
+ }
10
+ //# sourceMappingURL=safe-round.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"safe-round.js","names":["safeRound","round","width","height","Math","max","min"],"sources":["../../src/core/safe-round.js"],"sourcesContent":["export function safeRound(round, width, height) {\n return Math.max(0, Math.min(round, Math.min(height, width) / 2))\n}\n"],"mappings":";;;;;;AAAO,SAASA,SAASA,CAACC,KAAK,EAAEC,KAAK,EAAEC,MAAM,EAAE;EAC9C,OAAOC,IAAI,CAACC,GAAG,CAAC,CAAC,EAAED,IAAI,CAACE,GAAG,CAACL,KAAK,EAAEG,IAAI,CAACE,GAAG,CAACH,MAAM,EAAED,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;AAClE","ignoreList":[]}
@@ -0,0 +1,148 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ /*
8
+ * 1. SCRIPTS, STYLES 에는 각 소스별 상태를 관리한다.
9
+ * SCRIPTS, STYLES : {
10
+ * 'http://echarts.baidu.com/dist/echarts.min.js': true | false (true means loaded, false means not loaded yet)
11
+ * }
12
+ *
13
+ * 2. PROMISES : 각 소스군별 pending resolver, reject 을 관리한다.
14
+ * PROMISES: [{
15
+ * resolve,
16
+ * reject,
17
+ * srcs: ['src1', 'src2']
18
+ * }]
19
+ *
20
+ * [특징]
21
+ * 1. CORS 제약에서 자유롭다.
22
+ * 2. 같은 스크립트를 반복해서 로드하지 않는다.
23
+ * 3. 로드에 실패한 스크립트도 다시 반복해서 로드를 시도할 수 있다.
24
+ */
25
+
26
+ // SystemJS를 활용하는 경우에는 다음과 같이 import 할 수 있다.
27
+ //
28
+ // import System from 'systemjs/dist/system-production'
29
+
30
+ var SCRIPTS = {};
31
+ var STYLES = {};
32
+ var PROMISES = [];
33
+ function onload(e) {
34
+ var types = e.target.tagName == 'SCRIPT' ? SCRIPTS : STYLES;
35
+ var src = e.target.src || e.target.href;
36
+ types[src] = true;
37
+ PROMISES.forEach((ready, index) => {
38
+ let {
39
+ resolve,
40
+ scripts,
41
+ styles
42
+ } = ready;
43
+ if (types == SCRIPTS) {
44
+ let idx = scripts.indexOf(src);
45
+ if (idx > -1 && idx < scripts.length - 1) request_script(scripts[idx + 1]);
46
+ }
47
+ for (let i = 0; i < scripts.length; i++) if (!SCRIPTS[scripts[i]]) return;
48
+ if (styles) {
49
+ for (let i = 0; i < styles.length; i++) if (!STYLES[styles[i]]) return;
50
+ }
51
+ resolve();
52
+ PROMISES[index] = null;
53
+ });
54
+ PROMISES = PROMISES.filter(Boolean);
55
+ }
56
+ function onerror(e) {
57
+ var src = e.target.src;
58
+ var types = e.target.tagName == 'SCRIPT' ? SCRIPTS : STYLES;
59
+ PROMISES.forEach((ready, index) => {
60
+ let {
61
+ reject,
62
+ scripts,
63
+ styles
64
+ } = ready;
65
+ let done = false;
66
+ if (types === SCRIPTS) {
67
+ for (let i = 0; i < scripts.length; i++) {
68
+ if (scripts[i] == src) {
69
+ done = true;
70
+ break;
71
+ }
72
+ }
73
+ } else if (styles) {
74
+ for (let i = 0; i < styles.length; i++) {
75
+ if (styles[i] == src) {
76
+ done = true;
77
+ break;
78
+ }
79
+ }
80
+ }
81
+ if (done) {
82
+ reject(e);
83
+ PROMISES[index] = null;
84
+ }
85
+ });
86
+ PROMISES = PROMISES.filter(Boolean);
87
+ delete types[src];
88
+ document.head.removeChild(e.target);
89
+ }
90
+ function request_script(src) {
91
+ SCRIPTS[src] = false;
92
+ var script = document.createElement('script');
93
+ script.onload = onload;
94
+ script.onerror = onerror;
95
+ script.type = 'text/javascript';
96
+ script.src = src;
97
+ document.head.appendChild(script);
98
+ }
99
+ function request_style(src) {
100
+ STYLES[src] = false;
101
+ var link = document.createElement('link');
102
+ link.onload = onload;
103
+ link.onerror = onerror;
104
+ link.type = 'text/css';
105
+ link.rel = 'stylesheet';
106
+ link.media = 'screen,print';
107
+ link.href = src;
108
+ document.head.appendChild(link);
109
+ }
110
+ class ScriptLoader {
111
+ static load(scripts, styles) {
112
+ if (typeof scripts == 'string') scripts = [scripts];
113
+ if (typeof styles == 'string') styles = [styles];
114
+ return new Promise(function (resolve, reject) {
115
+ if (scripts && !(scripts instanceof Array) || styles && !(styles instanceof Array)) {
116
+ reject('invalid sources for load');
117
+ return;
118
+ }
119
+
120
+ /* check state of each src */
121
+ var done = true;
122
+
123
+ // style first
124
+ styles && styles.forEach(src => {
125
+ if (!STYLES.hasOwnProperty(src)) request_style(src);
126
+ if (!STYLES[src]) done = false;
127
+ });
128
+ var first;
129
+ if (scripts && scripts.length > 0) {
130
+ scripts.forEach(src => {
131
+ if (!SCRIPTS.hasOwnProperty(src)) first = first || src;else if (!SCRIPTS[src]) done = false;
132
+ });
133
+ }
134
+ if (first) request_script(first);else if (done) {
135
+ resolve();
136
+ return;
137
+ }
138
+ PROMISES.push({
139
+ resolve,
140
+ reject,
141
+ scripts,
142
+ styles
143
+ });
144
+ });
145
+ }
146
+ }
147
+ exports.default = ScriptLoader;
148
+ //# sourceMappingURL=script-loader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"script-loader.js","names":["SCRIPTS","STYLES","PROMISES","onload","e","types","target","tagName","src","href","forEach","ready","index","resolve","scripts","styles","idx","indexOf","length","request_script","i","filter","Boolean","onerror","reject","done","document","head","removeChild","script","createElement","type","appendChild","request_style","link","rel","media","ScriptLoader","load","Promise","Array","hasOwnProperty","first","push","exports","default"],"sources":["../../src/core/script-loader.js"],"sourcesContent":["/*\n * 1. SCRIPTS, STYLES 에는 각 소스별 상태를 관리한다.\n * SCRIPTS, STYLES : {\n * 'http://echarts.baidu.com/dist/echarts.min.js': true | false (true means loaded, false means not loaded yet)\n * }\n *\n * 2. PROMISES : 각 소스군별 pending resolver, reject 을 관리한다.\n * PROMISES: [{\n * resolve,\n * reject,\n * srcs: ['src1', 'src2']\n * }]\n *\n * [특징]\n * 1. CORS 제약에서 자유롭다.\n * 2. 같은 스크립트를 반복해서 로드하지 않는다.\n * 3. 로드에 실패한 스크립트도 다시 반복해서 로드를 시도할 수 있다.\n */\n\n// SystemJS를 활용하는 경우에는 다음과 같이 import 할 수 있다.\n//\n// import System from 'systemjs/dist/system-production'\n\nvar SCRIPTS = {}\nvar STYLES = {}\n\nvar PROMISES = []\n\nfunction onload(e) {\n var types = e.target.tagName == 'SCRIPT' ? SCRIPTS : STYLES\n var src = e.target.src || e.target.href\n\n types[src] = true\n\n PROMISES.forEach((ready, index) => {\n let { resolve, scripts, styles } = ready\n\n if (types == SCRIPTS) {\n let idx = scripts.indexOf(src)\n if (idx > -1 && idx < scripts.length - 1) request_script(scripts[idx + 1])\n }\n\n for (let i = 0; i < scripts.length; i++) if (!SCRIPTS[scripts[i]]) return\n\n if (styles) {\n for (let i = 0; i < styles.length; i++) if (!STYLES[styles[i]]) return\n }\n\n resolve()\n\n PROMISES[index] = null\n })\n\n PROMISES = PROMISES.filter(Boolean)\n}\n\nfunction onerror(e) {\n var src = e.target.src\n var types = e.target.tagName == 'SCRIPT' ? SCRIPTS : STYLES\n\n PROMISES.forEach((ready, index) => {\n let { reject, scripts, styles } = ready\n\n let done = false\n\n if (types === SCRIPTS) {\n for (let i = 0; i < scripts.length; i++) {\n if (scripts[i] == src) {\n done = true\n break\n }\n }\n } else if (styles) {\n for (let i = 0; i < styles.length; i++) {\n if (styles[i] == src) {\n done = true\n break\n }\n }\n }\n\n if (done) {\n reject(e)\n\n PROMISES[index] = null\n }\n })\n\n PROMISES = PROMISES.filter(Boolean)\n\n delete types[src]\n document.head.removeChild(e.target)\n}\n\nfunction request_script(src) {\n SCRIPTS[src] = false\n\n var script = document.createElement('script')\n script.onload = onload\n script.onerror = onerror\n\n script.type = 'text/javascript'\n script.src = src\n document.head.appendChild(script)\n}\n\nfunction request_style(src) {\n STYLES[src] = false\n\n var link = document.createElement('link')\n link.onload = onload\n link.onerror = onerror\n\n link.type = 'text/css'\n link.rel = 'stylesheet'\n link.media = 'screen,print'\n link.href = src\n\n document.head.appendChild(link)\n}\n\nexport default class ScriptLoader {\n static load(scripts, styles) {\n if (typeof scripts == 'string') scripts = [scripts]\n if (typeof styles == 'string') styles = [styles]\n\n return new Promise(function (resolve, reject) {\n if ((scripts && !(scripts instanceof Array)) || (styles && !(styles instanceof Array))) {\n reject('invalid sources for load')\n return\n }\n\n /* check state of each src */\n var done = true\n\n // style first\n styles &&\n styles.forEach(src => {\n if (!STYLES.hasOwnProperty(src)) request_style(src)\n\n if (!STYLES[src]) done = false\n })\n\n var first\n if (scripts && scripts.length > 0) {\n scripts.forEach(src => {\n if (!SCRIPTS.hasOwnProperty(src)) first = first || src\n else if (!SCRIPTS[src]) done = false\n })\n }\n\n if (first) request_script(first)\n else if (done) {\n resolve()\n return\n }\n\n PROMISES.push({ resolve, reject, scripts, styles })\n })\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,59 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _utils = require("./utils.js");
8
+ /*
9
+ * Copyright © HatioLab Inc. All rights reserved.
10
+ */
11
+
12
+ var debouncer = (0, _utils.debounce)(taker => {
13
+ if (!taker.brake) {
14
+ taker.take();
15
+ }
16
+ }, 1000, {
17
+ leading: true,
18
+ trailing: false
19
+ });
20
+ function take_snapshot(taker) {
21
+ if (taker.brake || !taker.dirty) return;
22
+ debouncer(taker);
23
+ }
24
+ class SnapshotTaker {
25
+ constructor(state_holder, timecapsule) {
26
+ this.brake = false;
27
+ this.dirty = false;
28
+ this.state_holder = state_holder;
29
+ this.timecapsule = timecapsule;
30
+ this.timecapsule.snapshot_taker = this;
31
+ }
32
+ dispose() {
33
+ delete this.state_holder;
34
+ delete this.timecapsule;
35
+ }
36
+ touch() {
37
+ this.dirty = true;
38
+ take_snapshot(this);
39
+ }
40
+
41
+ /* 모든 조건에 관계없이 현재 상태를 snapshot으로 취한다. */
42
+ take(force) {
43
+ if (this.dirty || force) {
44
+ this.timecapsule.snapshot(this.state_holder.state);
45
+ this.dirty = false;
46
+ }
47
+ }
48
+ get brake() {
49
+ return this._brake;
50
+ }
51
+
52
+ /* 마우스를 드래깅하는 동안, 보통 brake 를 ON 시킨다. */
53
+ set brake(brake) {
54
+ this._brake = !!brake;
55
+ take_snapshot(this);
56
+ }
57
+ }
58
+ exports.default = SnapshotTaker;
59
+ //# sourceMappingURL=snapshot-taker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"snapshot-taker.js","names":["_utils","require","debouncer","debounce","taker","brake","take","leading","trailing","take_snapshot","dirty","SnapshotTaker","constructor","state_holder","timecapsule","snapshot_taker","dispose","touch","force","snapshot","state","_brake","exports","default"],"sources":["../../src/core/snapshot-taker.js"],"sourcesContent":["/*\n * Copyright © HatioLab Inc. All rights reserved.\n */\n\nimport { debounce } from './utils.js'\n\nvar debouncer = debounce(\n taker => {\n if (!taker.brake) {\n taker.take()\n }\n },\n 1000,\n { leading: true, trailing: false }\n)\n\nfunction take_snapshot(taker) {\n if (taker.brake || !taker.dirty) return\n debouncer(taker)\n}\n\nexport default class SnapshotTaker {\n constructor(state_holder, timecapsule) {\n this.brake = false\n this.dirty = false\n this.state_holder = state_holder\n this.timecapsule = timecapsule\n this.timecapsule.snapshot_taker = this\n }\n\n dispose() {\n delete this.state_holder\n delete this.timecapsule\n }\n\n touch() {\n this.dirty = true\n take_snapshot(this)\n }\n\n /* 모든 조건에 관계없이 현재 상태를 snapshot으로 취한다. */\n take(force) {\n if (this.dirty || force) {\n this.timecapsule.snapshot(this.state_holder.state)\n this.dirty = false\n }\n }\n\n get brake() {\n return this._brake\n }\n\n /* 마우스를 드래깅하는 동안, 보통 brake 를 ON 시킨다. */\n set brake(brake) {\n this._brake = !!brake\n take_snapshot(this)\n }\n}\n"],"mappings":";;;;;;AAIA,IAAAA,MAAA,GAAAC,OAAA;AAJA;AACA;AACA;;AAIA,IAAIC,SAAS,GAAG,IAAAC,eAAQ,EACtBC,KAAK,IAAI;EACP,IAAI,CAACA,KAAK,CAACC,KAAK,EAAE;IAChBD,KAAK,CAACE,IAAI,CAAC,CAAC;EACd;AACF,CAAC,EACD,IAAI,EACJ;EAAEC,OAAO,EAAE,IAAI;EAAEC,QAAQ,EAAE;AAAM,CACnC,CAAC;AAED,SAASC,aAAaA,CAACL,KAAK,EAAE;EAC5B,IAAIA,KAAK,CAACC,KAAK,IAAI,CAACD,KAAK,CAACM,KAAK,EAAE;EACjCR,SAAS,CAACE,KAAK,CAAC;AAClB;AAEe,MAAMO,aAAa,CAAC;EACjCC,WAAWA,CAACC,YAAY,EAAEC,WAAW,EAAE;IACrC,IAAI,CAACT,KAAK,GAAG,KAAK;IAClB,IAAI,CAACK,KAAK,GAAG,KAAK;IAClB,IAAI,CAACG,YAAY,GAAGA,YAAY;IAChC,IAAI,CAACC,WAAW,GAAGA,WAAW;IAC9B,IAAI,CAACA,WAAW,CAACC,cAAc,GAAG,IAAI;EACxC;EAEAC,OAAOA,CAAA,EAAG;IACR,OAAO,IAAI,CAACH,YAAY;IACxB,OAAO,IAAI,CAACC,WAAW;EACzB;EAEAG,KAAKA,CAAA,EAAG;IACN,IAAI,CAACP,KAAK,GAAG,IAAI;IACjBD,aAAa,CAAC,IAAI,CAAC;EACrB;;EAEA;EACAH,IAAIA,CAACY,KAAK,EAAE;IACV,IAAI,IAAI,CAACR,KAAK,IAAIQ,KAAK,EAAE;MACvB,IAAI,CAACJ,WAAW,CAACK,QAAQ,CAAC,IAAI,CAACN,YAAY,CAACO,KAAK,CAAC;MAClD,IAAI,CAACV,KAAK,GAAG,KAAK;IACpB;EACF;EAEA,IAAIL,KAAKA,CAAA,EAAG;IACV,OAAO,IAAI,CAACgB,MAAM;EACpB;;EAEA;EACA,IAAIhB,KAAKA,CAACA,KAAK,EAAE;IACf,IAAI,CAACgB,MAAM,GAAG,CAAC,CAAChB,KAAK;IACrBI,aAAa,CAAC,IAAI,CAAC;EACrB;AACF;AAACa,OAAA,CAAAC,OAAA,GAAAZ,aAAA","ignoreList":[]}
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.pop = pop;
7
+ exports.push = push;
8
+ /*
9
+ * Copyright © HatioLab Inc. All rights reserved.
10
+ */
11
+
12
+ function push(item) {
13
+ throw new Error('Not Implemented Yet');
14
+ }
15
+ function pop(item) {
16
+ throw new Error('Not Implemented Yet');
17
+ }
18
+ //# sourceMappingURL=stack.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stack.js","names":["push","item","Error","pop"],"sources":["../../src/core/stack.js"],"sourcesContent":["/*\n * Copyright © HatioLab Inc. All rights reserved.\n */\n\nexport function push(item) {\n throw new Error('Not Implemented Yet')\n}\n\nexport function pop(item) {\n throw new Error('Not Implemented Yet')\n}\n"],"mappings":";;;;;;;AAAA;AACA;AACA;;AAEO,SAASA,IAAIA,CAACC,IAAI,EAAE;EACzB,MAAM,IAAIC,KAAK,CAAC,qBAAqB,CAAC;AACxC;AAEO,SAASC,GAAGA,CAACF,IAAI,EAAE;EACxB,MAAM,IAAIC,KAAK,CAAC,qBAAqB,CAAC;AACxC","ignoreList":[]}
@@ -0,0 +1,88 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _logger = require("./logger.js");
8
+ /*
9
+ * Copyright © HatioLab Inc. All rights reserved.
10
+ */
11
+
12
+ class TimeCapsule {
13
+ constructor(maxsize, start_state) {
14
+ maxsize = Number(maxsize);
15
+ if (!maxsize || maxsize <= 0) {
16
+ (0, _logger.error)('TimeCapsule maxsize should be greater than 0.', maxsize);
17
+ this.maxsize = 10;
18
+ } else {
19
+ this.maxsize = maxsize;
20
+ }
21
+ this.reset();
22
+ if (start_state) {
23
+ this.snapshot(start_state);
24
+ this.preserve();
25
+ }
26
+ }
27
+
28
+ /**
29
+ * 타임캡슐의 변경 상태를 저장하였음을 알린다.
30
+ */
31
+ preserve() {
32
+ this.checkPoint = this.pos;
33
+ }
34
+
35
+ /**
36
+ * 타임캡슐이 마지막 저장된 상태와 현재 상태가 같은 지 여부를 얻는다.
37
+ */
38
+ hasUnpreservedChanges() {
39
+ return this.checkPoint != this.pos;
40
+ }
41
+ dispose() {
42
+ this.reset();
43
+ }
44
+ snapshot(state) {
45
+ this.q.splice(this.pos + 1, this.q.length - (this.pos + 1), state);
46
+ if (this.q.length > this.maxsize) {
47
+ const cutout = this.q.splice(0, this.q.length - this.maxsize);
48
+ this.checkPoint = Math.max(-1, this.checkPoint - cutout.length);
49
+ }
50
+ this.pos = this.q.length - 1;
51
+ }
52
+ forward() {
53
+ if (this.snapshot_taker) this.snapshot_taker.take();
54
+ if (this.forwardable) return this.q[++this.pos];
55
+ (0, _logger.warn)('Not forwardable.');
56
+ }
57
+ backward() {
58
+ if (this.snapshot_taker) this.snapshot_taker.take();
59
+ if (this.backwardable) return this.q[--this.pos];
60
+ (0, _logger.warn)('Not backwardable.');
61
+ }
62
+ get current() {
63
+ if (this.pos !== -1) return this.q[this.pos];
64
+ (0, _logger.warn)('Non state has been recorded.');
65
+ }
66
+ get length() {
67
+ return this.q.length;
68
+ }
69
+ get forwardable() {
70
+ return this.pos < this.q.length - 1;
71
+ }
72
+ get backwardable() {
73
+ return this.pos > 0;
74
+ }
75
+ get snapshot_taker() {
76
+ return this._snapshot_taker;
77
+ }
78
+ set snapshot_taker(snapshot_taker) {
79
+ this._snapshot_taker = snapshot_taker;
80
+ }
81
+ reset() {
82
+ this.q = [];
83
+ this.pos = -1;
84
+ this.checkPoint = -1;
85
+ }
86
+ }
87
+ exports.default = TimeCapsule;
88
+ //# sourceMappingURL=timecapsule.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"timecapsule.js","names":["_logger","require","TimeCapsule","constructor","maxsize","start_state","Number","error","reset","snapshot","preserve","checkPoint","pos","hasUnpreservedChanges","dispose","state","q","splice","length","cutout","Math","max","forward","snapshot_taker","take","forwardable","warn","backward","backwardable","current","_snapshot_taker","exports","default"],"sources":["../../src/core/timecapsule.js"],"sourcesContent":["/*\n * Copyright © HatioLab Inc. All rights reserved.\n */\n\nimport { error, warn } from './logger.js'\n\nexport default class TimeCapsule {\n constructor(maxsize, start_state) {\n maxsize = Number(maxsize)\n\n if (!maxsize || maxsize <= 0) {\n error('TimeCapsule maxsize should be greater than 0.', maxsize)\n this.maxsize = 10\n } else {\n this.maxsize = maxsize\n }\n\n this.reset()\n\n if (start_state) {\n this.snapshot(start_state)\n this.preserve()\n }\n }\n\n /**\n * 타임캡슐의 변경 상태를 저장하였음을 알린다.\n */\n preserve() {\n this.checkPoint = this.pos\n }\n\n /**\n * 타임캡슐이 마지막 저장된 상태와 현재 상태가 같은 지 여부를 얻는다.\n */\n hasUnpreservedChanges() {\n return this.checkPoint != this.pos\n }\n\n dispose() {\n this.reset()\n }\n\n snapshot(state) {\n this.q.splice(this.pos + 1, this.q.length - (this.pos + 1), state)\n\n if (this.q.length > this.maxsize) {\n const cutout = this.q.splice(0, this.q.length - this.maxsize)\n this.checkPoint = Math.max(-1, this.checkPoint - cutout.length)\n }\n\n this.pos = this.q.length - 1\n }\n\n forward() {\n if (this.snapshot_taker) this.snapshot_taker.take()\n\n if (this.forwardable) return this.q[++this.pos]\n warn('Not forwardable.')\n }\n\n backward() {\n if (this.snapshot_taker) this.snapshot_taker.take()\n\n if (this.backwardable) return this.q[--this.pos]\n warn('Not backwardable.')\n }\n\n get current() {\n if (this.pos !== -1) return this.q[this.pos]\n\n warn('Non state has been recorded.')\n }\n\n get length() {\n return this.q.length\n }\n\n get forwardable() {\n return this.pos < this.q.length - 1\n }\n\n get backwardable() {\n return this.pos > 0\n }\n\n get snapshot_taker() {\n return this._snapshot_taker\n }\n\n set snapshot_taker(snapshot_taker) {\n this._snapshot_taker = snapshot_taker\n }\n\n reset() {\n this.q = []\n this.pos = -1\n this.checkPoint = -1\n }\n}\n"],"mappings":"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","ignoreList":[]}