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

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 (397) hide show
  1. package/package.json +1 -1
  2. package/things-scene-min.js +11 -11
  3. package/things-scene-min.js.map +1 -1
  4. package/things-scene.mjs +11 -11
  5. package/things-scene.mjs.map +1 -1
  6. package/.cursorignore +0 -62
  7. package/.prettierrc +0 -21
  8. package/assets/icon-audio.png +0 -0
  9. package/assets/icon-gif-viewer.png +0 -0
  10. package/assets/images/spinner.png +0 -0
  11. package/babel.config.js +0 -23
  12. package/db.sqlite +0 -0
  13. package/dist/animation/animate.js +0 -63
  14. package/dist/animation/animate.js.map +0 -1
  15. package/dist/animation/animations/animation.js +0 -122
  16. package/dist/animation/animations/animation.js.map +0 -1
  17. package/dist/animation/animations/fade.js +0 -28
  18. package/dist/animation/animations/fade.js.map +0 -1
  19. package/dist/animation/animations/heartbeat.js +0 -28
  20. package/dist/animation/animations/heartbeat.js.map +0 -1
  21. package/dist/animation/animations/moving.js +0 -24
  22. package/dist/animation/animations/moving.js.map +0 -1
  23. package/dist/animation/animations/outline.js +0 -47
  24. package/dist/animation/animations/outline.js.map +0 -1
  25. package/dist/animation/animations/rotation.js +0 -22
  26. package/dist/animation/animations/rotation.js.map +0 -1
  27. package/dist/animation/animations/vibration.js +0 -31
  28. package/dist/animation/animations/vibration.js.map +0 -1
  29. package/dist/animation/compile.js +0 -31
  30. package/dist/animation/compile.js.map +0 -1
  31. package/dist/animation/delta.js +0 -51
  32. package/dist/animation/delta.js.map +0 -1
  33. package/dist/animation/index.js +0 -14
  34. package/dist/animation/index.js.map +0 -1
  35. package/dist/command/command-change.js +0 -33
  36. package/dist/command/command-change.js.map +0 -1
  37. package/dist/command/command-migrate.js +0 -103
  38. package/dist/command/command-migrate.js.map +0 -1
  39. package/dist/command/command.js +0 -18
  40. package/dist/command/command.js.map +0 -1
  41. package/dist/command/snapshot-commander.js +0 -84
  42. package/dist/command/snapshot-commander.js.map +0 -1
  43. package/dist/components/anchor/anchor.js +0 -105
  44. package/dist/components/anchor/anchor.js.map +0 -1
  45. package/dist/components/anchor/ellipse-anchors.js +0 -53
  46. package/dist/components/anchor/ellipse-anchors.js.map +0 -1
  47. package/dist/components/anchor/rect-anchors.js +0 -53
  48. package/dist/components/anchor/rect-anchors.js.map +0 -1
  49. package/dist/components/audio.js +0 -154
  50. package/dist/components/audio.js.map +0 -1
  51. package/dist/components/cloud.js +0 -44
  52. package/dist/components/cloud.js.map +0 -1
  53. package/dist/components/component.js +0 -1086
  54. package/dist/components/component.js.map +0 -1
  55. package/dist/components/container-abstract.js +0 -387
  56. package/dist/components/container-abstract.js.map +0 -1
  57. package/dist/components/container.js +0 -331
  58. package/dist/components/container.js.map +0 -1
  59. package/dist/components/data/data-mapping.js +0 -82
  60. package/dist/components/data/data-mapping.js.map +0 -1
  61. package/dist/components/data/data.js +0 -166
  62. package/dist/components/data/data.js.map +0 -1
  63. package/dist/components/data/evaluator.js +0 -103
  64. package/dist/components/data/evaluator.js.map +0 -1
  65. package/dist/components/donut.js +0 -104
  66. package/dist/components/donut.js.map +0 -1
  67. package/dist/components/drawer/draw-image-pendable.js +0 -20
  68. package/dist/components/drawer/draw-image-pendable.js.map +0 -1
  69. package/dist/components/drawer/effect.js +0 -19
  70. package/dist/components/drawer/effect.js.map +0 -1
  71. package/dist/components/drawer/fill.js +0 -228
  72. package/dist/components/drawer/fill.js.map +0 -1
  73. package/dist/components/drawer/format.js +0 -115
  74. package/dist/components/drawer/format.js.map +0 -1
  75. package/dist/components/drawer/line.js +0 -191
  76. package/dist/components/drawer/line.js.map +0 -1
  77. package/dist/components/drawer/stroke.js +0 -62
  78. package/dist/components/drawer/stroke.js.map +0 -1
  79. package/dist/components/drawer/text-wrapper.js +0 -51
  80. package/dist/components/drawer/text-wrapper.js.map +0 -1
  81. package/dist/components/drawer/text.js +0 -269
  82. package/dist/components/drawer/text.js.map +0 -1
  83. package/dist/components/ellipse.js +0 -110
  84. package/dist/components/ellipse.js.map +0 -1
  85. package/dist/components/file/ondropfile.js +0 -19
  86. package/dist/components/file/ondropfile.js.map +0 -1
  87. package/dist/components/fit/fit.js +0 -137
  88. package/dist/components/fit/fit.js.map +0 -1
  89. package/dist/components/geometry/transcoord.js +0 -339
  90. package/dist/components/geometry/transcoord.js.map +0 -1
  91. package/dist/components/geometry/union.js +0 -35
  92. package/dist/components/geometry/union.js.map +0 -1
  93. package/dist/components/gif-view.js +0 -128
  94. package/dist/components/gif-view.js.map +0 -1
  95. package/dist/components/global-ref.js +0 -154
  96. package/dist/components/global-ref.js.map +0 -1
  97. package/dist/components/group.js +0 -171
  98. package/dist/components/group.js.map +0 -1
  99. package/dist/components/html/elements.js +0 -24
  100. package/dist/components/html/elements.js.map +0 -1
  101. package/dist/components/html/fill.js +0 -126
  102. package/dist/components/html/fill.js.map +0 -1
  103. package/dist/components/html/reposition.js +0 -119
  104. package/dist/components/html/reposition.js.map +0 -1
  105. package/dist/components/html/shadow.js +0 -24
  106. package/dist/components/html/shadow.js.map +0 -1
  107. package/dist/components/html-overlay-container.js +0 -27
  108. package/dist/components/html-overlay-container.js.map +0 -1
  109. package/dist/components/html-overlay-element.js +0 -22
  110. package/dist/components/html-overlay-element.js.map +0 -1
  111. package/dist/components/image-view.js +0 -193
  112. package/dist/components/image-view.js.map +0 -1
  113. package/dist/components/index.js +0 -231
  114. package/dist/components/index.js.map +0 -1
  115. package/dist/components/info-window.js +0 -416
  116. package/dist/components/info-window.js.map +0 -1
  117. package/dist/components/line.js +0 -374
  118. package/dist/components/line.js.map +0 -1
  119. package/dist/components/local-ref.js +0 -114
  120. package/dist/components/local-ref.js.map +0 -1
  121. package/dist/components/mixins/connectable.js +0 -128
  122. package/dist/components/mixins/connectable.js.map +0 -1
  123. package/dist/components/mixins/data-source.js +0 -34
  124. package/dist/components/mixins/data-source.js.map +0 -1
  125. package/dist/components/mixins/html-element.js +0 -107
  126. package/dist/components/mixins/html-element.js.map +0 -1
  127. package/dist/components/mixins/move-handle.js +0 -73
  128. package/dist/components/mixins/move-handle.js.map +0 -1
  129. package/dist/components/mixins/rect-path.js +0 -113
  130. package/dist/components/mixins/rect-path.js.map +0 -1
  131. package/dist/components/mixins/value-holder.js +0 -81
  132. package/dist/components/mixins/value-holder.js.map +0 -1
  133. package/dist/components/mutater/bounds.js +0 -68
  134. package/dist/components/mutater/bounds.js.map +0 -1
  135. package/dist/components/mutater/path.js +0 -73
  136. package/dist/components/mutater/path.js.map +0 -1
  137. package/dist/components/ortholine.js +0 -763
  138. package/dist/components/ortholine.js.map +0 -1
  139. package/dist/components/outline/ellipse-outline.js +0 -23
  140. package/dist/components/outline/ellipse-outline.js.map +0 -1
  141. package/dist/components/outline/path-outline.js +0 -48
  142. package/dist/components/outline/path-outline.js.map +0 -1
  143. package/dist/components/path.js +0 -49
  144. package/dist/components/path.js.map +0 -1
  145. package/dist/components/polygon.js +0 -91
  146. package/dist/components/polygon.js.map +0 -1
  147. package/dist/components/polyline.js +0 -114
  148. package/dist/components/polyline.js.map +0 -1
  149. package/dist/components/popup.js +0 -160
  150. package/dist/components/popup.js.map +0 -1
  151. package/dist/components/rect.js +0 -72
  152. package/dist/components/rect.js.map +0 -1
  153. package/dist/components/retention/retention-manager.js +0 -81
  154. package/dist/components/retention/retention-manager.js.map +0 -1
  155. package/dist/components/root-container.js +0 -519
  156. package/dist/components/root-container.js.map +0 -1
  157. package/dist/components/ruler.js +0 -103
  158. package/dist/components/ruler.js.map +0 -1
  159. package/dist/components/shape.js +0 -97
  160. package/dist/components/shape.js.map +0 -1
  161. package/dist/components/star.js +0 -103
  162. package/dist/components/star.js.map +0 -1
  163. package/dist/components/text/substitutor.js +0 -92
  164. package/dist/components/text/substitutor.js.map +0 -1
  165. package/dist/components/text.js +0 -21
  166. package/dist/components/text.js.map +0 -1
  167. package/dist/components/triangle.js +0 -92
  168. package/dist/components/triangle.js.map +0 -1
  169. package/dist/const.js +0 -71
  170. package/dist/const.js.map +0 -1
  171. package/dist/core/collection.js +0 -28
  172. package/dist/core/collection.js.map +0 -1
  173. package/dist/core/debug.js +0 -12
  174. package/dist/core/debug.js.map +0 -1
  175. package/dist/core/deep-equals.js +0 -112
  176. package/dist/core/deep-equals.js.map +0 -1
  177. package/dist/core/dom-to-image.js +0 -617
  178. package/dist/core/dom-to-image.js.map +0 -1
  179. package/dist/core/event.js +0 -205
  180. package/dist/core/event.js.map +0 -1
  181. package/dist/core/index.js +0 -21
  182. package/dist/core/index.js.map +0 -1
  183. package/dist/core/list.js +0 -87
  184. package/dist/core/list.js.map +0 -1
  185. package/dist/core/logger.js +0 -29
  186. package/dist/core/logger.js.map +0 -1
  187. package/dist/core/memoize.js +0 -40
  188. package/dist/core/memoize.js.map +0 -1
  189. package/dist/core/mixin.js +0 -26
  190. package/dist/core/mixin.js.map +0 -1
  191. package/dist/core/obj-accessor.js +0 -26
  192. package/dist/core/obj-accessor.js.map +0 -1
  193. package/dist/core/reference-map.js +0 -147
  194. package/dist/core/reference-map.js.map +0 -1
  195. package/dist/core/round-rect.js +0 -62
  196. package/dist/core/round-rect.js.map +0 -1
  197. package/dist/core/safe-round.js +0 -10
  198. package/dist/core/safe-round.js.map +0 -1
  199. package/dist/core/script-loader.js +0 -148
  200. package/dist/core/script-loader.js.map +0 -1
  201. package/dist/core/snapshot-taker.js +0 -59
  202. package/dist/core/snapshot-taker.js.map +0 -1
  203. package/dist/core/stack.js +0 -18
  204. package/dist/core/stack.js.map +0 -1
  205. package/dist/core/timecapsule.js +0 -88
  206. package/dist/core/timecapsule.js.map +0 -1
  207. package/dist/core/utils.js +0 -309
  208. package/dist/core/utils.js.map +0 -1
  209. package/dist/decorator/anchors-decorator.js +0 -53
  210. package/dist/decorator/anchors-decorator.js.map +0 -1
  211. package/dist/decorator/bouncing-arrow-decorator.js +0 -52
  212. package/dist/decorator/bouncing-arrow-decorator.js.map +0 -1
  213. package/dist/decorator/data-spread-decorator.js +0 -69
  214. package/dist/decorator/data-spread-decorator.js.map +0 -1
  215. package/dist/decorator/decotag-decorator.js +0 -33
  216. package/dist/decorator/decotag-decorator.js.map +0 -1
  217. package/dist/decorator/index.js +0 -31
  218. package/dist/decorator/index.js.map +0 -1
  219. package/dist/decorator/link-decorator.js +0 -66
  220. package/dist/decorator/link-decorator.js.map +0 -1
  221. package/dist/effect/gradation.js +0 -37
  222. package/dist/effect/gradation.js.map +0 -1
  223. package/dist/effect/index.js +0 -23
  224. package/dist/effect/index.js.map +0 -1
  225. package/dist/effect/shadow.js +0 -33
  226. package/dist/effect/shadow.js.map +0 -1
  227. package/dist/effect/turn.js +0 -25
  228. package/dist/effect/turn.js.map +0 -1
  229. package/dist/event/event-engine.js +0 -76
  230. package/dist/event/event-engine.js.map +0 -1
  231. package/dist/event/event-pump.js +0 -92
  232. package/dist/event/event-pump.js.map +0 -1
  233. package/dist/event/event-tracker.js +0 -97
  234. package/dist/event/event-tracker.js.map +0 -1
  235. package/dist/event/index.js +0 -21
  236. package/dist/event/index.js.map +0 -1
  237. package/dist/event/ua-event-handler.js +0 -453
  238. package/dist/event/ua-event-handler.js.map +0 -1
  239. package/dist/event-map/animator-handler.js +0 -225
  240. package/dist/event-map/animator-handler.js.map +0 -1
  241. package/dist/event-map/animators/animated-icon.js +0 -265
  242. package/dist/event-map/animators/animated-icon.js.map +0 -1
  243. package/dist/event-map/animators/border-highlighting.js +0 -476
  244. package/dist/event-map/animators/border-highlighting.js.map +0 -1
  245. package/dist/event-map/animators/bouncing-arrow.js +0 -226
  246. package/dist/event-map/animators/bouncing-arrow.js.map +0 -1
  247. package/dist/event-map/event-map.js +0 -36
  248. package/dist/event-map/event-map.js.map +0 -1
  249. package/dist/event-map/index.js +0 -20
  250. package/dist/event-map/index.js.map +0 -1
  251. package/dist/event-map/move-handler.js +0 -233
  252. package/dist/event-map/move-handler.js.map +0 -1
  253. package/dist/event-map/paste-handler.js +0 -176
  254. package/dist/event-map/paste-handler.js.map +0 -1
  255. package/dist/event-map/shift-handler.js +0 -55
  256. package/dist/event-map/shift-handler.js.map +0 -1
  257. package/dist/event-map/text-editor-lite.js +0 -276
  258. package/dist/event-map/text-editor-lite.js.map +0 -1
  259. package/dist/event-map/zoom-handler.js +0 -49
  260. package/dist/event-map/zoom-handler.js.map +0 -1
  261. package/dist/index.js +0 -20
  262. package/dist/index.js.map +0 -1
  263. package/dist/layer/action/emphasize.js +0 -42
  264. package/dist/layer/action/emphasize.js.map +0 -1
  265. package/dist/layer/action/popup.js +0 -461
  266. package/dist/layer/action/popup.js.map +0 -1
  267. package/dist/layer/action/pressed.js +0 -31
  268. package/dist/layer/action/pressed.js.map +0 -1
  269. package/dist/layer/add-layer.js +0 -180
  270. package/dist/layer/add-layer.js.map +0 -1
  271. package/dist/layer/decotag-layer.js +0 -121
  272. package/dist/layer/decotag-layer.js.map +0 -1
  273. package/dist/layer/guide-layer.js +0 -292
  274. package/dist/layer/guide-layer.js.map +0 -1
  275. package/dist/layer/index.js +0 -70
  276. package/dist/layer/index.js.map +0 -1
  277. package/dist/layer/layer.js +0 -230
  278. package/dist/layer/layer.js.map +0 -1
  279. package/dist/layer/minimap-layer.js +0 -84
  280. package/dist/layer/minimap-layer.js.map +0 -1
  281. package/dist/layer/model-layer.js +0 -465
  282. package/dist/layer/model-layer.js.map +0 -1
  283. package/dist/layer/modeler/anchor-handler.js +0 -193
  284. package/dist/layer/modeler/anchor-handler.js.map +0 -1
  285. package/dist/layer/modeler/control-handler.js +0 -95
  286. package/dist/layer/modeler/control-handler.js.map +0 -1
  287. package/dist/layer/modeler/focus-outline.js +0 -41
  288. package/dist/layer/modeler/focus-outline.js.map +0 -1
  289. package/dist/layer/modeler/group-outline.js +0 -30
  290. package/dist/layer/modeler/group-outline.js.map +0 -1
  291. package/dist/layer/modeler/index.js +0 -56
  292. package/dist/layer/modeler/index.js.map +0 -1
  293. package/dist/layer/modeler/path-handler.js +0 -300
  294. package/dist/layer/modeler/path-handler.js.map +0 -1
  295. package/dist/layer/modeler/resizer.js +0 -333
  296. package/dist/layer/modeler/resizer.js.map +0 -1
  297. package/dist/layer/modeler/rotator.js +0 -134
  298. package/dist/layer/modeler/rotator.js.map +0 -1
  299. package/dist/layer/modeling-layer.js +0 -491
  300. package/dist/layer/modeling-layer.js.map +0 -1
  301. package/dist/layer/reaction-layer.js +0 -111
  302. package/dist/layer/reaction-layer.js.map +0 -1
  303. package/dist/layer/scroll-layer.js +0 -191
  304. package/dist/layer/scroll-layer.js.map +0 -1
  305. package/dist/layer/selection/selected-finder.js +0 -96
  306. package/dist/layer/selection/selected-finder.js.map +0 -1
  307. package/dist/layer/selection-layer.js +0 -373
  308. package/dist/layer/selection-layer.js.map +0 -1
  309. package/dist/layer/shift-layer.js +0 -83
  310. package/dist/layer/shift-layer.js.map +0 -1
  311. package/dist/layout/absolute.js +0 -30
  312. package/dist/layout/absolute.js.map +0 -1
  313. package/dist/layout/card.js +0 -52
  314. package/dist/layout/card.js.map +0 -1
  315. package/dist/layout/html-absolute.js +0 -32
  316. package/dist/layout/html-absolute.js.map +0 -1
  317. package/dist/layout/index.js +0 -56
  318. package/dist/layout/index.js.map +0 -1
  319. package/dist/layout/layout.js +0 -36
  320. package/dist/layout/layout.js.map +0 -1
  321. package/dist/layout/linear-horizontal.js +0 -56
  322. package/dist/layout/linear-horizontal.js.map +0 -1
  323. package/dist/layout/linear-vertical.js +0 -56
  324. package/dist/layout/linear-vertical.js.map +0 -1
  325. package/dist/layout/table.js +0 -106
  326. package/dist/layout/table.js.map +0 -1
  327. package/dist/license/license.js +0 -170
  328. package/dist/license/license.js.map +0 -1
  329. package/dist/model/compile.js +0 -40
  330. package/dist/model/compile.js.map +0 -1
  331. package/dist/model/duplicate.js +0 -19
  332. package/dist/model/duplicate.js.map +0 -1
  333. package/dist/model/index.js +0 -34
  334. package/dist/model/index.js.map +0 -1
  335. package/dist/model/selector.js +0 -104
  336. package/dist/model/selector.js.map +0 -1
  337. package/dist/style/compile.js +0 -14
  338. package/dist/style/compile.js.map +0 -1
  339. package/dist/style/index.js +0 -14
  340. package/dist/style/index.js.map +0 -1
  341. package/dist/things-scene/api/add-start.js +0 -18
  342. package/dist/things-scene/api/add-start.js.map +0 -1
  343. package/dist/things-scene/api/add.js +0 -71
  344. package/dist/things-scene/api/add.js.map +0 -1
  345. package/dist/things-scene/api/align.js +0 -116
  346. package/dist/things-scene/api/align.js.map +0 -1
  347. package/dist/things-scene/api/center-to.js +0 -50
  348. package/dist/things-scene/api/center-to.js.map +0 -1
  349. package/dist/things-scene/api/change.js +0 -27
  350. package/dist/things-scene/api/change.js.map +0 -1
  351. package/dist/things-scene/api/clipboard.js +0 -45
  352. package/dist/things-scene/api/clipboard.js.map +0 -1
  353. package/dist/things-scene/api/distribute.js +0 -57
  354. package/dist/things-scene/api/distribute.js.map +0 -1
  355. package/dist/things-scene/api/duplicate.js +0 -47
  356. package/dist/things-scene/api/duplicate.js.map +0 -1
  357. package/dist/things-scene/api/fullscreen.js +0 -26
  358. package/dist/things-scene/api/fullscreen.js.map +0 -1
  359. package/dist/things-scene/api/group.js +0 -91
  360. package/dist/things-scene/api/group.js.map +0 -1
  361. package/dist/things-scene/api/ids.js +0 -28
  362. package/dist/things-scene/api/ids.js.map +0 -1
  363. package/dist/things-scene/api/index.js +0 -192
  364. package/dist/things-scene/api/index.js.map +0 -1
  365. package/dist/things-scene/api/listener.js +0 -69
  366. package/dist/things-scene/api/listener.js.map +0 -1
  367. package/dist/things-scene/api/paste-start.js +0 -27
  368. package/dist/things-scene/api/paste-start.js.map +0 -1
  369. package/dist/things-scene/api/place.js +0 -98
  370. package/dist/things-scene/api/place.js.map +0 -1
  371. package/dist/things-scene/api/remove.js +0 -57
  372. package/dist/things-scene/api/remove.js.map +0 -1
  373. package/dist/things-scene/api/symmetry.js +0 -47
  374. package/dist/things-scene/api/symmetry.js.map +0 -1
  375. package/dist/things-scene/api/to-data-url.js +0 -76
  376. package/dist/things-scene/api/to-data-url.js.map +0 -1
  377. package/dist/things-scene/api/zorder.js +0 -68
  378. package/dist/things-scene/api/zorder.js.map +0 -1
  379. package/dist/things-scene/application-context.js +0 -168
  380. package/dist/things-scene/application-context.js.map +0 -1
  381. package/dist/things-scene/config.js +0 -18
  382. package/dist/things-scene/config.js.map +0 -1
  383. package/dist/things-scene/create.js +0 -67
  384. package/dist/things-scene/create.js.map +0 -1
  385. package/dist/things-scene/fps.js +0 -26
  386. package/dist/things-scene/fps.js.map +0 -1
  387. package/dist/things-scene/index.js +0 -152
  388. package/dist/things-scene/index.js.map +0 -1
  389. package/dist/things-scene/polyfill.js +0 -111
  390. package/dist/things-scene/polyfill.js.map +0 -1
  391. package/dist/things-scene/scene.js +0 -442
  392. package/dist/things-scene/scene.js.map +0 -1
  393. package/dist/things-scene/version.js +0 -12
  394. package/dist/things-scene/version.js.map +0 -1
  395. package/rollup.config.js +0 -67
  396. package/schema.graphql +0 -4606
  397. package/tsconfig.json +0 -31
@@ -1,453 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = void 0;
7
- exports.trigger = trigger;
8
- var Const = _interopRequireWildcard(require("../const.js"));
9
- 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); }
10
- 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; }
11
- /*
12
- * Copyright © HatioLab Inc. All rights reserved.
13
- */
14
-
15
- /* 여기서는 사용자 이벤트 관련한 처리를 담당한다.
16
- - 사용자 이벤트를 브라우저에서 서브스크라이브한다.
17
- - 드래그 관련된 이벤트를 생성한다.
18
- */
19
-
20
- const STATUS = {
21
- NORMAL: 0,
22
- DRAGGABLE: 1,
23
- DRAGGING: 2
24
- };
25
- const TOUCH_STATUS = {
26
- NORMAL: 0,
27
- TOUCH_START: 1,
28
- TOUCH_MOVE: 2,
29
- TOUCH_END: 3,
30
- TOUCH_CANCEL: 4
31
- };
32
- const DRAG_THRESHOLD = 16;
33
- const DOUBLE_TAP_INTERVAL = 500;
34
- const TAP_HOLD_INTERVAL = 500;
35
- var LAST_OFFSET = {};
36
- var LAST_TOUCHES_DISTANCE = 0;
37
- function getOffset(e) {
38
- if (e.touches) {
39
- let touch = e.touches[0];
40
- if (!touch) return LAST_OFFSET;
41
- let targetBound = touch.target.getBoundingClientRect();
42
- LAST_OFFSET = {
43
- x: e.offsetX || touch.clientX - (targetBound.x || targetBound.left),
44
- y: e.offsetY || touch.clientY - (targetBound.y || targetBound.top)
45
- };
46
- return LAST_OFFSET;
47
- }
48
- return {
49
- x: e.offsetX,
50
- y: e.offsetY
51
- };
52
- }
53
- function getTouchPointDistance(e) {
54
- var minX,
55
- maxX = 0,
56
- minY,
57
- maxY = 0;
58
- var touchPointDistance = 0;
59
- if (e.touches.length === 1) return touchPointDistance;
60
- Array.from(e.touches).forEach(touch => {
61
- minX = minX != undefined ? Math.min(touch.screenX, minX) : touch.screenX;
62
- maxX = Math.max(touch.screenX, maxX);
63
- minY = minY != undefined ? Math.min(touch.screenY, minY) : touch.screenY;
64
- maxY = Math.max(touch.screenY, maxY);
65
- });
66
- var distanceX = maxX - minX || 0;
67
- var distanceY = maxY - minY || 0;
68
- touchPointDistance = Math.sqrt(Math.pow(distanceX, 2) + Math.pow(distanceY, 2)) || 0;
69
- return touchPointDistance;
70
- }
71
- class _Event {
72
- constructor(e, type) {
73
- // this.originalEvent = e
74
-
75
- this._type = type || e.type;
76
- this._ctrlKey = e.ctrlKey;
77
- this._altKey = e.altKey;
78
- this._shiftKey = e.shiftKey;
79
- this._metaKey = e.metaKey;
80
- var offset = getOffset(e);
81
- this._offsetX = offset.x;
82
- this._offsetY = offset.y;
83
- if (e.type == 'wheel') {
84
- this.deltaX = e.deltaX;
85
- this.deltaY = e.deltaY;
86
- this.deltaZ = e.deltaZ;
87
- } else if (e.type == 'drop') {
88
- this.dataTransfer = e.dataTransfer;
89
- } else if (e.type.match(/^touch/)) {
90
- this._scale = e.scale;
91
- this._touches = e.touches;
92
- this._changedTouches = e.changedTouches;
93
- if (this._scale == undefined) {
94
- var touchPointDistance = getTouchPointDistance(e);
95
- if (LAST_TOUCHES_DISTANCE > 0) this._scale = touchPointDistance / LAST_TOUCHES_DISTANCE;
96
- LAST_TOUCHES_DISTANCE = touchPointDistance;
97
- }
98
- }
99
- }
100
- get type() {
101
- return this._type;
102
- }
103
- set type(type) {
104
- this._type = type;
105
- }
106
- get offsetX() {
107
- return this._offsetX;
108
- }
109
- get offsetY() {
110
- return this._offsetY;
111
- }
112
- get altKey() {
113
- return this._altKey;
114
- }
115
- get ctrlKey() {
116
- return this._ctrlKey;
117
- }
118
- get shiftKey() {
119
- return this._shiftKey;
120
- }
121
- get metaKey() {
122
- return this._metaKey;
123
- }
124
- get touches() {
125
- return this._touches;
126
- }
127
- get changedTouches() {
128
- return this._changedTouches;
129
- }
130
- get scale() {
131
- return this._scale;
132
- }
133
- stopPropagation() {
134
- this._stop_ = true;
135
- if (this.originalEvent && typeof this.originalEvent.stopPropagation === 'function') {
136
- this.originalEvent.stopPropagation();
137
- }
138
- }
139
- isPropagationStopped() {
140
- return this._stop_;
141
- }
142
- preventDefault() {
143
- this._prevented = true; // 사용자 정의 상태 플래그 설정
144
- }
145
- isDefaultPrevented() {
146
- return this._prevented; // 기본 동작이 방지되었는지 확인
147
- }
148
- }
149
- function find_target(container, e) {
150
- /* UA 이벤트의 타겟(즉, 이벤트 캡쳐된 컴포넌트)를 찾는다 */
151
- return container.capture(e.offsetX, e.offsetY);
152
- }
153
- function trigger(target, type, e) {
154
- if (!target || !target.app) {
155
- return;
156
- }
157
- if (target.app.isViewMode && target.hidden) {
158
- return;
159
- }
160
- if (!(e instanceof _Event) || type !== e.type) {
161
- e = new _Event(e, type);
162
- }
163
- var handler = 'on' + type;
164
- target[handler] && target[handler](e);
165
- if (!e.isPropagationStopped()) {
166
- target.trigger(type, e);
167
- }
168
- }
169
- class UAEventHandler {
170
- /*
171
- * container : things-scene의 최상위 컨테이너임
172
- * html_element : things-scene이 그려질 상위 HTML 엘리먼트임.
173
- */
174
- constructor(container, html_element) {
175
- this.container = container;
176
- this.html_element = html_element;
177
- this.status = STATUS.NORMAL;
178
- this.last_target = null;
179
- this.gesture_handlers = Const.GESTURES.map(type => this.gestureHandlerBuilder(type));
180
- this.keyevent_handlers = Const.KEYEVENTS.map(type => this.keyeventHandlerBuilder(type));
181
- Const.GESTURES.forEach((type, idx) => html_element.addEventListener(type, this.gesture_handlers[idx]), {
182
- passive: false
183
- });
184
- Const.KEYEVENTS.forEach((type, idx) => html_element.addEventListener(type, this.keyevent_handlers[idx]));
185
-
186
- /* File Drag & Drop Handler */
187
- html_element.ondragover = this.gestureHandlerBuilder('dragover');
188
- html_element.ondrop = this.gestureHandlerBuilder('drop');
189
-
190
- // DIV에서 keydown 이벤트를 받을 수 있도록 하는 두가지 방법임.
191
- // 방법 1. tabIndex 속성을 준다.
192
- html_element.tabIndex = 1;
193
- // 방법 2. contenteditable 속성을 부여한다.
194
- // -- 두가지 방법 모두 safari, chrome에서 동작한다.
195
- // -- 두가지 방법 모두 firefox에서 동작하지 않는다.
196
- // -- 이 방법은 Edge브라우저에서 DIV에 키보드캐럿을 보인다.
197
- // html_element.setAttribute('contenteditable', "true");
198
- }
199
- dispose() {
200
- if (this.last_enter_target) {
201
- trigger(this.last_enter_target, 'mouseleave', new CustomEvent('mouseleave'));
202
- }
203
- Const.GESTURES.forEach((type, idx) => this.html_element.removeEventListener(type, this.gesture_handlers[idx]));
204
- Const.KEYEVENTS.forEach((type, idx) => this.html_element.removeEventListener(type, this.keyevent_handlers[idx]));
205
- delete this.gesture_handlers;
206
- delete this.keyevent_handlers;
207
- delete this.last_target;
208
- }
209
- gestureHandlerBuilder(type) {
210
- var handler = this[`on${type}`].bind(this);
211
- return e => {
212
- const _e = new _Event(e);
213
- handler(_e);
214
- _e.isDefaultPrevented() && e.preventDefault();
215
- return false;
216
- };
217
- }
218
- keyeventHandlerBuilder(type) {
219
- return this[`on${type}`].bind(this);
220
- }
221
- ondragover(e) {
222
- var target = find_target(this.container, e);
223
- trigger(target, e.type, e);
224
- return false;
225
- }
226
- ondrop(e) {
227
- var target = find_target(this.container, e);
228
- trigger(target, e.type, e);
229
- return false;
230
- }
231
- ondblclick(e) {
232
- var target = find_target(this.container, e);
233
- trigger(target, e.type, e);
234
- this.last_target = null;
235
- return false;
236
- }
237
- onkeydown(e) {
238
- // keydown 이벤트를 각 컴포넌트에서 받을 필요가 있을 때 아래 코멘트 부분을 제거할 것.
239
- // var prevent, selected = this.container.selected;
240
- //
241
- // if(selected.length === 1)
242
- // prevent = selected[0].onkeydown && selected[0].onkeydown(new _Event(e));
243
- //
244
- // if(prevent) {
245
- // e.preventDefault();
246
- // return true
247
- // }
248
-
249
- /* 키보드 이벤트는 최상위 컨테이너에서만 발생하도록 한다. */
250
- this.container.trigger(e.type, e);
251
- return false;
252
- }
253
- onkeyup(e) {
254
- /* 키보드 이벤트는 최상위 컨테이너에서만 발생하도록 한다. */
255
- this.container.trigger(e.type, e);
256
- return false;
257
- }
258
- onmousemove(e) {
259
- /* pre-state */
260
- switch (this.status) {
261
- case STATUS.DRAGGABLE:
262
- let diffX = e.offsetX - this.__dragstart_e.offsetX;
263
- let diffY = e.offsetY - this.__dragstart_e.offsetY;
264
- if (diffX * diffX + diffY * diffY < DRAG_THRESHOLD) break;
265
- this.status = STATUS.DRAGGING;
266
-
267
- /* TODO dragstart의 포인트 포지션을 원래의 포지션으로 보내주어야 한다. */
268
- trigger(this.last_target, 'dragstart', this.__dragstart_e);
269
- this.__dragmove_e = e;
270
- trigger(this.last_target, 'dragmove', e);
271
- break;
272
- case STATUS.DRAGGING:
273
- this.__dragmove_e = e;
274
- trigger(this.last_target, 'dragmove', e);
275
- break;
276
- default:
277
- var target = find_target(this.container, e);
278
- if (this.last_enter_target !== target) {
279
- if (this.last_enter_target) trigger(this.last_enter_target, 'mouseleave', e);
280
- if (target) trigger(target, 'mouseenter', e);
281
- this.last_enter_target = target;
282
- }
283
- trigger(target, e.type, e);
284
- this.last_target = target;
285
- }
286
- return false;
287
- }
288
- onmousedown(e) {
289
- /* pre-state */
290
- switch (this.status) {
291
- case STATUS.DRAGGING:
292
- trigger(this.last_target, 'dragend', e);
293
- this.last_target = null;
294
- this.status = STATUS.NORMAL;
295
- break;
296
- default:
297
- var target = find_target(this.container, e);
298
- this.last_target = target;
299
- this.status = STATUS.DRAGGABLE;
300
- this.__dragstart_e = e;
301
- trigger(target, e.type, e);
302
- }
303
- return false;
304
- }
305
- onmouseup(e) {
306
- /* pre-state */
307
- switch (this.status) {
308
- case STATUS.DRAGGING:
309
- trigger(this.last_target, 'dragend', e);
310
- break;
311
- default:
312
- var target = find_target(this.container, e);
313
- trigger(target, e.type, e);
314
- if (this.last_target === target) {
315
- /**
316
- * [ 주의 ] window의 click 이벤트를 사용하지 않는다. mouseup 이벤트에서 판단하여 click 이벤트를 발생시켜야 한다.
317
- * 원인. 모바일 환경에서 Popup 된 보드에서는 (알 수 없는 이유로) 약 2.5초동안 click 이벤트가 발생하지 않기 때문에, 사용성에 불편을 겪을 수 있기 때문이다.
318
- *
319
- * [ caution ] Do not use the click event of the window. The click event should be triggered by judging from the mouseup event.
320
- * cause. This is because in the mobile environment, the click event does not occur for about 2.5 seconds on the popup board (for unknown reasons), which may cause usability problems.
321
- */
322
-
323
- trigger(target, 'click', e);
324
- }
325
- }
326
- this.last_target = null;
327
- this.status = STATUS.NORMAL;
328
- return false;
329
- }
330
- onmouseout(e) {
331
- var target = find_target(this.container, e);
332
-
333
- /* pre-state */
334
- switch (this.status) {
335
- case STATUS.DRAGGING:
336
- trigger(this.last_target, 'dragend', e);
337
- break;
338
- default:
339
- if (this.last_target && this.last_target === target) return;
340
- if (this.last_enter_target) {
341
- trigger(this.last_enter_target, 'mouseleave', e);
342
- delete this.last_enter_target;
343
- }
344
- }
345
- this.last_target = null;
346
- this.status = STATUS.NORMAL;
347
- return false;
348
- }
349
- ontouchstart(e) {
350
- var target = find_target(this.container, e);
351
- this.last_target = target;
352
- this.status = TOUCH_STATUS.TOUCH_START;
353
- if (!this.touchPoints) this.touchPoints = [];
354
- this.touchPoints.push(e.changedTouches[0]);
355
- this.holdTimer = setTimeout(() => {
356
- this.status = TOUCH_STATUS.NORMAL;
357
- trigger(this.last_target, 'hold', e);
358
- delete this.holdTimer;
359
- }, TAP_HOLD_INTERVAL);
360
- trigger(target, e.type, e);
361
- return false;
362
- }
363
- ontouchmove(e) {
364
- if (!(e.touches && e.changedTouches)) {
365
- /* TODO dragstart의 포인트 포지션을 원래의 포지션으로 보내주어야 한다. */
366
- trigger(this.last_target, 'dragstart', e);
367
- trigger(this.last_target, 'dragmove', e);
368
- return false;
369
- }
370
- var target = find_target(this.container, e);
371
- /* pre-state */
372
- switch (this.status) {
373
- case TOUCH_STATUS.TOUCH_START:
374
- Array.from(e.changedTouches).forEach(tp => {
375
- var touchPoint = this.touchPoints.find(p => {
376
- return p.identifier === tp.identifier;
377
- });
378
- if (!touchPoint) return;
379
- var diffX = touchPoint.clientX - tp.clientX;
380
- var diffY = touchPoint.clientY - tp.clientY;
381
- if (Math.sqrt(Math.pow(diffX, 2) + Math.pow(diffY, 2)) >= DRAG_THRESHOLD) {
382
- this.status = TOUCH_STATUS.TOUCH_MOVE;
383
- if (this.holdTimer) {
384
- clearTimeout(this.holdTimer);
385
- delete this.holdTimer;
386
- }
387
- return;
388
- }
389
- });
390
- break;
391
- case TOUCH_STATUS.TOUCH_MOVE:
392
- if (this.holdTimer) {
393
- clearTimeout(this.holdTimer);
394
- delete this.holdTimer;
395
- }
396
- if (e.changedTouches.length === 2) {
397
- if (e.scale != undefined && e.scale !== 1 && (e.scale < 0.9 || e.scale > 1.1)) {
398
- trigger(this.last_target, 'pinch', e);
399
- return false;
400
- }
401
- }
402
- trigger(this.last_target, 'pan', e);
403
- target = this.last_target;
404
- break;
405
- default:
406
- if (this.last_enter_target !== target) {
407
- if (this.last_enter_target) trigger(this.last_enter_target, 'mouseleave', e);
408
- if (target) trigger(target, 'mouseenter', e);
409
- this.last_enter_target = target;
410
- }
411
- this.last_target = target;
412
- break;
413
- }
414
- trigger(target, 'touchmove', e);
415
- return false;
416
- }
417
- ontouchend(e) {
418
- var target = find_target(this.container, e);
419
- /* pre-state */
420
- switch (this.status) {
421
- case TOUCH_STATUS.TOUCH_MOVE:
422
- target = this.last_target;
423
- break;
424
- case TOUCH_STATUS.TOUCH_START:
425
- var now = performance.now();
426
- var touchInterval = now - this.touchedAt;
427
- if (this.holdTimer) {
428
- clearTimeout(this.holdTimer);
429
- delete this.holdTimer;
430
- if (touchInterval < DOUBLE_TAP_INTERVAL) trigger(target, 'doubletap', e);else trigger(target, 'tap', e);
431
- this.touchedAt = now;
432
- }
433
- break;
434
- default:
435
- break;
436
- }
437
- trigger(target, 'touchend', e);
438
- var touchPointIndex = this.touchPoints.findIndex(tp => {
439
- return tp.identifier === e.changedTouches[0].identifier;
440
- });
441
- this.touchPoints.splice(touchPointIndex, 1);
442
- this.last_target = null;
443
- this.status = TOUCH_STATUS.NORMAL;
444
- return false;
445
- }
446
- onwheel(e) {
447
- var target = find_target(this.container, e);
448
- trigger(target, e.type, e);
449
- return false;
450
- }
451
- }
452
- exports.default = UAEventHandler;
453
- //# sourceMappingURL=ua-event-handler.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ua-event-handler.js","names":["Const","_interopRequireWildcard","require","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","STATUS","NORMAL","DRAGGABLE","DRAGGING","TOUCH_STATUS","TOUCH_START","TOUCH_MOVE","TOUCH_END","TOUCH_CANCEL","DRAG_THRESHOLD","DOUBLE_TAP_INTERVAL","TAP_HOLD_INTERVAL","LAST_OFFSET","LAST_TOUCHES_DISTANCE","getOffset","touches","touch","targetBound","target","getBoundingClientRect","x","offsetX","clientX","left","y","offsetY","clientY","top","getTouchPointDistance","minX","maxX","minY","maxY","touchPointDistance","length","Array","from","forEach","undefined","Math","min","screenX","max","screenY","distanceX","distanceY","sqrt","pow","_Event","constructor","type","_type","_ctrlKey","ctrlKey","_altKey","altKey","_shiftKey","shiftKey","_metaKey","metaKey","offset","_offsetX","_offsetY","deltaX","deltaY","deltaZ","dataTransfer","match","_scale","scale","_touches","_changedTouches","changedTouches","stopPropagation","_stop_","originalEvent","isPropagationStopped","preventDefault","_prevented","isDefaultPrevented","find_target","container","capture","trigger","app","isViewMode","hidden","handler","UAEventHandler","html_element","status","last_target","gesture_handlers","GESTURES","map","gestureHandlerBuilder","keyevent_handlers","KEYEVENTS","keyeventHandlerBuilder","idx","addEventListener","passive","ondragover","ondrop","tabIndex","dispose","last_enter_target","CustomEvent","removeEventListener","bind","_e","ondblclick","onkeydown","onkeyup","onmousemove","diffX","__dragstart_e","diffY","__dragmove_e","onmousedown","onmouseup","onmouseout","ontouchstart","touchPoints","push","holdTimer","setTimeout","ontouchmove","tp","touchPoint","find","p","identifier","clearTimeout","ontouchend","now","performance","touchInterval","touchedAt","touchPointIndex","findIndex","splice","onwheel","exports"],"sources":["../../src/event/ua-event-handler.js"],"sourcesContent":["/*\n * Copyright © HatioLab Inc. All rights reserved.\n */\n\nimport * as Const from '../const.js'\n\n/* 여기서는 사용자 이벤트 관련한 처리를 담당한다.\n - 사용자 이벤트를 브라우저에서 서브스크라이브한다.\n - 드래그 관련된 이벤트를 생성한다.\n*/\n\nconst STATUS = {\n NORMAL: 0,\n DRAGGABLE: 1,\n DRAGGING: 2\n}\n\nconst TOUCH_STATUS = {\n NORMAL: 0,\n TOUCH_START: 1,\n TOUCH_MOVE: 2,\n TOUCH_END: 3,\n TOUCH_CANCEL: 4\n}\n\nconst DRAG_THRESHOLD = 16\n\nconst DOUBLE_TAP_INTERVAL = 500\nconst TAP_HOLD_INTERVAL = 500\n\nvar LAST_OFFSET = {}\nvar LAST_TOUCHES_DISTANCE = 0\n\nfunction getOffset(e) {\n if (e.touches) {\n let touch = e.touches[0]\n if (!touch) return LAST_OFFSET\n\n let targetBound = touch.target.getBoundingClientRect()\n\n LAST_OFFSET = {\n x: e.offsetX || touch.clientX - (targetBound.x || targetBound.left),\n y: e.offsetY || touch.clientY - (targetBound.y || targetBound.top)\n }\n return LAST_OFFSET\n }\n\n return {\n x: e.offsetX,\n y: e.offsetY\n }\n}\n\nfunction getTouchPointDistance(e) {\n var minX,\n maxX = 0,\n minY,\n maxY = 0\n var touchPointDistance = 0\n\n if (e.touches.length === 1) return touchPointDistance\n\n Array.from(e.touches).forEach(touch => {\n minX = minX != undefined ? Math.min(touch.screenX, minX) : touch.screenX\n maxX = Math.max(touch.screenX, maxX)\n minY = minY != undefined ? Math.min(touch.screenY, minY) : touch.screenY\n maxY = Math.max(touch.screenY, maxY)\n })\n\n var distanceX = maxX - minX || 0\n var distanceY = maxY - minY || 0\n\n touchPointDistance = Math.sqrt(Math.pow(distanceX, 2) + Math.pow(distanceY, 2)) || 0\n\n return touchPointDistance\n}\n\nclass _Event {\n constructor(e, type) {\n // this.originalEvent = e\n\n this._type = type || e.type\n this._ctrlKey = e.ctrlKey\n this._altKey = e.altKey\n this._shiftKey = e.shiftKey\n this._metaKey = e.metaKey\n\n var offset = getOffset(e)\n\n this._offsetX = offset.x\n this._offsetY = offset.y\n\n if (e.type == 'wheel') {\n this.deltaX = e.deltaX\n this.deltaY = e.deltaY\n this.deltaZ = e.deltaZ\n } else if (e.type == 'drop') {\n this.dataTransfer = e.dataTransfer\n } else if (e.type.match(/^touch/)) {\n this._scale = e.scale\n this._touches = e.touches\n this._changedTouches = e.changedTouches\n\n if (this._scale == undefined) {\n var touchPointDistance = getTouchPointDistance(e)\n\n if (LAST_TOUCHES_DISTANCE > 0) this._scale = touchPointDistance / LAST_TOUCHES_DISTANCE\n\n LAST_TOUCHES_DISTANCE = touchPointDistance\n }\n }\n }\n\n get type() {\n return this._type\n }\n\n set type(type) {\n this._type = type\n }\n\n get offsetX() {\n return this._offsetX\n }\n\n get offsetY() {\n return this._offsetY\n }\n\n get altKey() {\n return this._altKey\n }\n\n get ctrlKey() {\n return this._ctrlKey\n }\n\n get shiftKey() {\n return this._shiftKey\n }\n\n get metaKey() {\n return this._metaKey\n }\n\n get touches() {\n return this._touches\n }\n get changedTouches() {\n return this._changedTouches\n }\n\n get scale() {\n return this._scale\n }\n\n stopPropagation() {\n this._stop_ = true\n if (this.originalEvent && typeof this.originalEvent.stopPropagation === 'function') {\n this.originalEvent.stopPropagation()\n }\n }\n\n isPropagationStopped() {\n return this._stop_\n }\n\n preventDefault() {\n this._prevented = true // 사용자 정의 상태 플래그 설정\n }\n\n isDefaultPrevented() {\n return this._prevented // 기본 동작이 방지되었는지 확인\n }\n}\n\nfunction find_target(container, e) {\n /* UA 이벤트의 타겟(즉, 이벤트 캡쳐된 컴포넌트)를 찾는다 */\n return container.capture(e.offsetX, e.offsetY)\n}\n\nexport function trigger(target, type, e) {\n if (!target || !target.app) {\n return\n }\n\n if (target.app.isViewMode && target.hidden) {\n return\n }\n\n if (!(e instanceof _Event) || type !== e.type) {\n e = new _Event(e, type)\n }\n\n var handler = 'on' + type\n target[handler] && target[handler](e)\n\n if (!e.isPropagationStopped()) {\n target.trigger(type, e)\n }\n}\n\nexport default class UAEventHandler {\n /*\n * container : things-scene의 최상위 컨테이너임\n * html_element : things-scene이 그려질 상위 HTML 엘리먼트임.\n */\n constructor(container, html_element) {\n this.container = container\n this.html_element = html_element\n\n this.status = STATUS.NORMAL\n this.last_target = null\n\n this.gesture_handlers = Const.GESTURES.map(type => this.gestureHandlerBuilder(type))\n this.keyevent_handlers = Const.KEYEVENTS.map(type => this.keyeventHandlerBuilder(type))\n\n Const.GESTURES.forEach((type, idx) => html_element.addEventListener(type, this.gesture_handlers[idx]), {\n passive: false\n })\n Const.KEYEVENTS.forEach((type, idx) => html_element.addEventListener(type, this.keyevent_handlers[idx]))\n\n /* File Drag & Drop Handler */\n html_element.ondragover = this.gestureHandlerBuilder('dragover')\n html_element.ondrop = this.gestureHandlerBuilder('drop')\n\n // DIV에서 keydown 이벤트를 받을 수 있도록 하는 두가지 방법임.\n // 방법 1. tabIndex 속성을 준다.\n html_element.tabIndex = 1\n // 방법 2. contenteditable 속성을 부여한다.\n // -- 두가지 방법 모두 safari, chrome에서 동작한다.\n // -- 두가지 방법 모두 firefox에서 동작하지 않는다.\n // -- 이 방법은 Edge브라우저에서 DIV에 키보드캐럿을 보인다.\n // html_element.setAttribute('contenteditable', \"true\");\n }\n\n dispose() {\n if (this.last_enter_target) {\n trigger(this.last_enter_target, 'mouseleave', new CustomEvent('mouseleave'))\n }\n\n Const.GESTURES.forEach((type, idx) => this.html_element.removeEventListener(type, this.gesture_handlers[idx]))\n Const.KEYEVENTS.forEach((type, idx) => this.html_element.removeEventListener(type, this.keyevent_handlers[idx]))\n\n delete this.gesture_handlers\n delete this.keyevent_handlers\n delete this.last_target\n }\n\n gestureHandlerBuilder(type) {\n var handler = this[`on${type}`].bind(this)\n\n return e => {\n const _e = new _Event(e)\n handler(_e)\n\n _e.isDefaultPrevented() && e.preventDefault()\n\n return false\n }\n }\n\n keyeventHandlerBuilder(type) {\n return this[`on${type}`].bind(this)\n }\n\n ondragover(e) {\n var target = find_target(this.container, e)\n\n trigger(target, e.type, e)\n return false\n }\n\n ondrop(e) {\n var target = find_target(this.container, e)\n\n trigger(target, e.type, e)\n\n return false\n }\n\n ondblclick(e) {\n var target = find_target(this.container, e)\n\n trigger(target, e.type, e)\n\n this.last_target = null\n\n return false\n }\n\n onkeydown(e) {\n // keydown 이벤트를 각 컴포넌트에서 받을 필요가 있을 때 아래 코멘트 부분을 제거할 것.\n // var prevent, selected = this.container.selected;\n //\n // if(selected.length === 1)\n // prevent = selected[0].onkeydown && selected[0].onkeydown(new _Event(e));\n //\n // if(prevent) {\n // e.preventDefault();\n // return true\n // }\n\n /* 키보드 이벤트는 최상위 컨테이너에서만 발생하도록 한다. */\n this.container.trigger(e.type, e)\n\n return false\n }\n\n onkeyup(e) {\n /* 키보드 이벤트는 최상위 컨테이너에서만 발생하도록 한다. */\n this.container.trigger(e.type, e)\n\n return false\n }\n\n onmousemove(e) {\n /* pre-state */\n switch (this.status) {\n case STATUS.DRAGGABLE:\n let diffX = e.offsetX - this.__dragstart_e.offsetX\n let diffY = e.offsetY - this.__dragstart_e.offsetY\n\n if (diffX * diffX + diffY * diffY < DRAG_THRESHOLD) break\n\n this.status = STATUS.DRAGGING\n\n /* TODO dragstart의 포인트 포지션을 원래의 포지션으로 보내주어야 한다. */\n trigger(this.last_target, 'dragstart', this.__dragstart_e)\n\n this.__dragmove_e = e\n trigger(this.last_target, 'dragmove', e)\n\n break\n\n case STATUS.DRAGGING:\n this.__dragmove_e = e\n trigger(this.last_target, 'dragmove', e)\n\n break\n\n default:\n var target = find_target(this.container, e)\n\n if (this.last_enter_target !== target) {\n if (this.last_enter_target) trigger(this.last_enter_target, 'mouseleave', e)\n if (target) trigger(target, 'mouseenter', e)\n this.last_enter_target = target\n }\n\n trigger(target, e.type, e)\n this.last_target = target\n }\n\n return false\n }\n\n onmousedown(e) {\n /* pre-state */\n switch (this.status) {\n case STATUS.DRAGGING:\n trigger(this.last_target, 'dragend', e)\n\n this.last_target = null\n this.status = STATUS.NORMAL\n break\n\n default:\n var target = find_target(this.container, e)\n\n this.last_target = target\n this.status = STATUS.DRAGGABLE\n this.__dragstart_e = e\n\n trigger(target, e.type, e)\n }\n\n return false\n }\n\n onmouseup(e) {\n /* pre-state */\n switch (this.status) {\n case STATUS.DRAGGING:\n trigger(this.last_target, 'dragend', e)\n\n break\n\n default:\n var target = find_target(this.container, e)\n trigger(target, e.type, e)\n\n if (this.last_target === target) {\n /**\n * [ 주의 ] window의 click 이벤트를 사용하지 않는다. mouseup 이벤트에서 판단하여 click 이벤트를 발생시켜야 한다.\n * 원인. 모바일 환경에서 Popup 된 보드에서는 (알 수 없는 이유로) 약 2.5초동안 click 이벤트가 발생하지 않기 때문에, 사용성에 불편을 겪을 수 있기 때문이다.\n *\n * [ caution ] Do not use the click event of the window. The click event should be triggered by judging from the mouseup event.\n * cause. This is because in the mobile environment, the click event does not occur for about 2.5 seconds on the popup board (for unknown reasons), which may cause usability problems.\n */\n\n trigger(target, 'click', e)\n }\n }\n\n this.last_target = null\n\n this.status = STATUS.NORMAL\n\n return false\n }\n\n onmouseout(e) {\n var target = find_target(this.container, e)\n\n /* pre-state */\n switch (this.status) {\n case STATUS.DRAGGING:\n trigger(this.last_target, 'dragend', e)\n break\n\n default:\n if (this.last_target && this.last_target === target) return\n\n if (this.last_enter_target) {\n trigger(this.last_enter_target, 'mouseleave', e)\n delete this.last_enter_target\n }\n }\n\n this.last_target = null\n\n this.status = STATUS.NORMAL\n\n return false\n }\n\n ontouchstart(e) {\n var target = find_target(this.container, e)\n\n this.last_target = target\n this.status = TOUCH_STATUS.TOUCH_START\n\n if (!this.touchPoints) this.touchPoints = []\n\n this.touchPoints.push(e.changedTouches[0])\n\n this.holdTimer = setTimeout(() => {\n this.status = TOUCH_STATUS.NORMAL\n trigger(this.last_target, 'hold', e)\n delete this.holdTimer\n }, TAP_HOLD_INTERVAL)\n\n trigger(target, e.type, e)\n\n return false\n }\n\n ontouchmove(e) {\n if (!(e.touches && e.changedTouches)) {\n /* TODO dragstart의 포인트 포지션을 원래의 포지션으로 보내주어야 한다. */\n trigger(this.last_target, 'dragstart', e)\n trigger(this.last_target, 'dragmove', e)\n return false\n }\n\n var target = find_target(this.container, e)\n /* pre-state */\n switch (this.status) {\n case TOUCH_STATUS.TOUCH_START:\n Array.from(e.changedTouches).forEach(tp => {\n var touchPoint = this.touchPoints.find(p => {\n return p.identifier === tp.identifier\n })\n\n if (!touchPoint) return\n\n var diffX = touchPoint.clientX - tp.clientX\n var diffY = touchPoint.clientY - tp.clientY\n\n if (Math.sqrt(Math.pow(diffX, 2) + Math.pow(diffY, 2)) >= DRAG_THRESHOLD) {\n this.status = TOUCH_STATUS.TOUCH_MOVE\n\n if (this.holdTimer) {\n clearTimeout(this.holdTimer)\n delete this.holdTimer\n }\n return\n }\n })\n break\n case TOUCH_STATUS.TOUCH_MOVE:\n if (this.holdTimer) {\n clearTimeout(this.holdTimer)\n delete this.holdTimer\n }\n\n if (e.changedTouches.length === 2) {\n if (e.scale != undefined && e.scale !== 1 && (e.scale < 0.9 || e.scale > 1.1)) {\n trigger(this.last_target, 'pinch', e)\n return false\n }\n }\n\n trigger(this.last_target, 'pan', e)\n target = this.last_target\n\n break\n\n default:\n if (this.last_enter_target !== target) {\n if (this.last_enter_target) trigger(this.last_enter_target, 'mouseleave', e)\n if (target) trigger(target, 'mouseenter', e)\n this.last_enter_target = target\n }\n\n this.last_target = target\n break\n }\n\n trigger(target, 'touchmove', e)\n\n return false\n }\n\n ontouchend(e) {\n var target = find_target(this.container, e)\n /* pre-state */\n switch (this.status) {\n case TOUCH_STATUS.TOUCH_MOVE:\n target = this.last_target\n break\n\n case TOUCH_STATUS.TOUCH_START:\n var now = performance.now()\n var touchInterval = now - this.touchedAt\n\n if (this.holdTimer) {\n clearTimeout(this.holdTimer)\n delete this.holdTimer\n\n if (touchInterval < DOUBLE_TAP_INTERVAL) trigger(target, 'doubletap', e)\n else trigger(target, 'tap', e)\n\n this.touchedAt = now\n }\n break\n\n default:\n break\n }\n\n trigger(target, 'touchend', e)\n\n var touchPointIndex = this.touchPoints.findIndex(tp => {\n return tp.identifier === e.changedTouches[0].identifier\n })\n\n this.touchPoints.splice(touchPointIndex, 1)\n\n this.last_target = null\n\n this.status = TOUCH_STATUS.NORMAL\n\n return false\n }\n\n onwheel(e) {\n var target = find_target(this.container, e)\n\n trigger(target, e.type, e)\n\n return false\n }\n}\n"],"mappings":"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","ignoreList":[]}