@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,373 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _component = _interopRequireDefault(require("../components/component.js"));
8
+ var _logger = require("../core/logger.js");
9
+ var _layer = _interopRequireDefault(require("./layer.js"));
10
+ var _selectedFinder = require("./selection/selected-finder.js");
11
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
12
+ /*
13
+ * Copyright © HatioLab Inc. All rights reserved.
14
+ */
15
+
16
+ function unselectAllAncester(component, selected) {
17
+ var ancester = component.parent;
18
+ while (ancester) {
19
+ let idx = selected.indexOf(ancester);
20
+ if (idx != -1) {
21
+ selected.splice(idx, 1);
22
+ }
23
+ ancester = ancester.parent;
24
+ }
25
+ }
26
+ function unselectAllDecendant(component, selected) {
27
+ var children = component.components || [];
28
+ for (let child of children) {
29
+ unselectAllDecendant(child, selected);
30
+ let idx = selected.indexOf(child);
31
+ if (idx != -1) {
32
+ selected.splice(idx, 1);
33
+ }
34
+ }
35
+ }
36
+ class SelectionLayer extends _layer.default {
37
+ // Lifecycle
38
+ ready() {
39
+ super.ready();
40
+ var rootModel = this.rootModel;
41
+ var translate = rootModel.get('translate');
42
+ var scale = rootModel.get('scale');
43
+ this.set('translate', translate);
44
+ this.set('scale', scale);
45
+ }
46
+ contains(x, y) {
47
+ return false;
48
+ }
49
+ render(ctx) {
50
+ var selbox = this.selbox;
51
+ if (selbox) {
52
+ let {
53
+ sx,
54
+ sy,
55
+ ex,
56
+ ey
57
+ } = selbox;
58
+ let scale = this.get('scale') || {
59
+ x: 1,
60
+ y: 1
61
+ };
62
+ ctx.beginPath();
63
+ ctx.rect(sx, sy, ex - sx, ey - sy);
64
+ ctx.setLineDash([2 / scale.x, 4 / scale.y]);
65
+ ctx.lineWidth = 1 / scale.x;
66
+ ctx.strokeStyle = 'black';
67
+ ctx.stroke();
68
+ }
69
+ }
70
+ get eventMap() {
71
+ return {
72
+ '(root)': {
73
+ '(self)': {
74
+ keydown: this.onkeydown
75
+ }
76
+ },
77
+ 'model-layer': {
78
+ '(self)': {
79
+ change: this.onchange_root_model
80
+ },
81
+ '(all)': {
82
+ dragstart: this.ondragstart_selbox,
83
+ dragmove: this.ondragmove_selbox,
84
+ dragend: this.ondragend_selbox,
85
+ mousedown: this.onmousedown_comp,
86
+ mouseup: this.onmouseup_comp
87
+ }
88
+ }
89
+ };
90
+ }
91
+ onkeydown(e, hint) {
92
+ var {
93
+ origin,
94
+ deliverer
95
+ } = hint; /* deliverer should be RootContainer */
96
+
97
+ var selected = deliverer.selected;
98
+ if (selected.length !== 1) {
99
+ return false;
100
+ }
101
+ var component = selected[0];
102
+ var container = component.parent;
103
+ if (!container || container === deliverer) {
104
+ return false;
105
+ }
106
+ if (e.code === 'Tab') {
107
+ var capturables = container.layout.capturables(container);
108
+ var idx = capturables.indexOf(component);
109
+ if (idx == -1) {
110
+ if (container.indexOf(component)) {
111
+ idx = 0;
112
+ } else {
113
+ (0, _logger.warn)('Container not contains [', component, '] as a component');
114
+ return false;
115
+ }
116
+ }
117
+ var length = capturables.length;
118
+ if (e.shiftKey) idx--;else idx++;
119
+ component = capturables[(idx + length) % length];
120
+ } else if (container.layout.keyNavigate) {
121
+ component = container.layout.keyNavigate(container, component, e) || component;
122
+ } else {
123
+ return false;
124
+ }
125
+ deliverer.selected = [component];
126
+ e.preventDefault();
127
+ }
128
+ onchange_root_model(after, before, hint) {
129
+ if (after.translate) {
130
+ // Model Base 레이어와 동일한 translate를 유지하도록 한다.
131
+ this.set('translate', after.translate);
132
+ }
133
+ if (after.scale) {
134
+ // Model Base 레이어와 동일한 scale 유지하도록 한다.
135
+ this.set('scale', after.scale);
136
+ }
137
+ }
138
+ _pendingDecision(e) {
139
+ /* MouseUP에서 결정하도록 마우스가 눌린 위치를 기억한다. */
140
+ this.downpoint = {
141
+ x: e.offsetX,
142
+ y: e.offsetY
143
+ };
144
+ }
145
+ _selectGroupItem(origin, e) {
146
+ var idx = this.selected.indexOf(origin);
147
+
148
+ /*
149
+ * 기존에 선택된 아이템 중에서 그룹내에 있는 아이템이 있다면, 바로 선택되도록 한다.
150
+ * 그렇지 않으면, MouseUP에서 결정하도록 한다.
151
+ */
152
+ let parentOfOrigin = origin.parent;
153
+
154
+ // 최상위 그룹을 찾는다.
155
+ while (parentOfOrigin.parent.isGroup()) {
156
+ parentOfOrigin = parentOfOrigin.parent;
157
+ }
158
+ let selectedSiblings = [];
159
+ let foundSibling = false;
160
+ let foundGroup = false;
161
+ this.selected.forEach(item => {
162
+ let parent = item.parent;
163
+ if (item === parentOfOrigin) {
164
+ foundGroup = true;
165
+ return;
166
+ }
167
+ while (parent.parent && parent.parent.isGroup()) {
168
+ parent = parent.parent;
169
+ }
170
+ if (parent === parentOfOrigin) {
171
+ /* 최상위 그룹이 동일한 경우 sibling으로 판단한다. */
172
+
173
+ selectedSiblings.push(item);
174
+ foundSibling = true;
175
+ }
176
+ });
177
+ if (foundSibling) {
178
+ if (e.shiftKey) {
179
+ if (idx == -1) {
180
+ selectedSiblings.push(origin);
181
+ } else {
182
+ this._pendingDecision(e);
183
+ return;
184
+ }
185
+ } else {
186
+ if (idx == -1) {
187
+ selectedSiblings = [origin];
188
+ } else {
189
+ this._pendingDecision(e);
190
+ return;
191
+ }
192
+ }
193
+ } /* no siblinig */else {
194
+ if (!foundGroup) {
195
+ /* 기존에 선택된 컴포넌트의 부모 그룹을 찾지 못했다면, 공통부모 여부를 판단해서, 최상위 그룹이 선택된다. */
196
+ if (e.shiftKey) {
197
+ /* (sibling이 없고) 이미 선택된 컴포넌트들이 있다면, ... */
198
+ if (this.selected.length > 0) {
199
+ if (this.selected.indexOf(parentOfOrigin) == -1) {
200
+ /* 멀티 선택 리스트에 최상위 그룹을 추가한다. */
201
+ selectedSiblings = [...this.selected, parentOfOrigin];
202
+ } else {
203
+ /* 멀티 선택 조건에 맞지 않아서, 아무 동작도 하지 않는다 */
204
+ return;
205
+ }
206
+ } else {
207
+ /* (sibling이 없고) 이미 선택된 컴포넌트들이 없다면, 최상위 부모 그룹이 선택된다. */
208
+ selectedSiblings = [parentOfOrigin];
209
+ }
210
+ } else {
211
+ selectedSiblings = [parentOfOrigin];
212
+ }
213
+ } else {
214
+ /* 기존에 선택된 컴포넌트의 부모 그룹을 찾았다면, 드래깅일 수도 있으므로, 결정을 지연시킨다. */
215
+ this._pendingDecision(e);
216
+ return;
217
+ }
218
+ }
219
+ this.selected = selectedSiblings;
220
+ }
221
+ onmousedown_comp(e, hint) {
222
+ var {
223
+ origin
224
+ } = hint;
225
+ this.downpoint = null;
226
+ if (e.shiftKey) {
227
+ // shiftKey 상태에서는 선택은 mousedown에서 처리하고, 선택의 해제는 mouseup 이벤트에서 처리한다.
228
+
229
+ // 선택된 대상의 부모가 group인 경우
230
+ if (origin.parent.isGroup()) {
231
+ this._selectGroupItem(origin, e);
232
+ return;
233
+ }
234
+ if (this.selected.indexOf(origin) == -1) {
235
+ // 선택된 컴포넌트와 같은 부모를 가진 컴포넌트들로 선택리스트를 재구성한다.
236
+ // 모델 노드에서 제외된 컴포넌트와 Root Model은 제외한다.
237
+ let selected = this.selected.filter(c => !c.isRootModel() && !!c.parent);
238
+ let parent = selected.length > 0 && selected[0].parent;
239
+ if (parent && parent !== origin.parent) {
240
+ // origin의 부모가 그룹이라면, 그 그룹은 분명히 선택된 상태이다.
241
+ // if (origin.parent.isGroup()) {
242
+ // this._pendingDecision(e)
243
+
244
+ // return
245
+ // }
246
+
247
+ // 편집의 편의상, shift + mouseclick 하는 경우에만, 조상이 다르더라도 선택될 수 있도록 한다.
248
+ // 새로선택된 컴포넌트의 조상과 자손들은 모두 선택취소한다.
249
+ unselectAllAncester(origin, selected);
250
+ unselectAllDecendant(origin, selected);
251
+ }
252
+ selected.push(origin);
253
+ this.selected = selected;
254
+ } else {
255
+ this._pendingDecision(e);
256
+ return;
257
+ }
258
+ } else {
259
+ /* no shift-key */
260
+
261
+ // 선택된 대상의 부모가 group인 경우
262
+ if (origin.parent.isGroup()) {
263
+ this._selectGroupItem(origin, e);
264
+ return;
265
+ }
266
+ if (this.selected.indexOf(origin) == -1) {
267
+ this.selected = [origin];
268
+ this.sameParent = true;
269
+ } else {
270
+ return; // 변화된 것이 없다.
271
+ }
272
+ }
273
+ }
274
+ onmouseup_comp(e, hint) {
275
+ /*
276
+ * mouse-down 이벤트에서 결정이 pending된 경우 (this.downpoint에 값이 설정된 경우임)
277
+ * 선택은 mousedown에서 처리하고, 선택의 해제는 mouseup 이벤트에서 처리한다.
278
+ * 만약에, 부모가 그룹이라면, mouseup이벤트에서 선택이 처리된다.
279
+ */
280
+
281
+ if (!this.downpoint) {
282
+ return;
283
+ }
284
+
285
+ /*
286
+ * 마우스가 눌린 위치와 동일한 위치에서 버튼릴리즈 된 경우만 처리한다.
287
+ * 선택해제 또는 그룹내 컴포넌트 선택을 위한 행동으로 간주한다.
288
+ */
289
+ if (this.downpoint.x !== e.offsetX || this.downpoint.y !== e.offsetY) return;
290
+ var {
291
+ origin
292
+ } = hint;
293
+ let idx = this.selected.indexOf(origin);
294
+ if (idx == -1 && origin.parent.isGroup()) {
295
+ idx = this.selected.indexOf(origin.parent);
296
+ }
297
+
298
+ /* 이미 선택되어 있는 컴포넌트를 선택리스트에서 제거 */
299
+ if (idx !== -1 && e.shiftKey) {
300
+ let selected = this.selected.slice();
301
+ if (idx > -1) {
302
+ selected.splice(idx, 1); // remove
303
+ }
304
+ this.selected = selected;
305
+ return;
306
+ }
307
+
308
+ // 선택된 대상의 부모가 group인 경우
309
+ if (origin.parent.isGroup()) {
310
+ this.selected = [origin];
311
+ return;
312
+ }
313
+ }
314
+
315
+ /* 영역을 그려서 다중 선택을 하는 기능을 위한 이벤트 핸들러들임 */
316
+
317
+ ondragstart_selbox(e, hint) {
318
+ var {
319
+ origin
320
+ } = hint;
321
+ if (!origin.stuck) return;
322
+ var {
323
+ x,
324
+ y
325
+ } = this.transcoordC2S(e.offsetX, e.offsetY);
326
+
327
+ // Model Base 레이어에서 드래깅이 시작되면, 멀티선택 영역을 시작한다.
328
+ // 만일, origin이 stuck된 컴포넌트이면, 선택리스트에서 제외한다.
329
+
330
+ this.selbox = {
331
+ sx: x,
332
+ sy: y,
333
+ selected: []
334
+ };
335
+ }
336
+ ondragmove_selbox(e, hint) {
337
+ var {
338
+ origin
339
+ } = hint;
340
+ if (!origin.stuck) return;
341
+ var {
342
+ x,
343
+ y
344
+ } = this.transcoordC2S(e.offsetX, e.offsetY);
345
+ var {
346
+ deliverer
347
+ } = hint; /* should be rootModel */
348
+
349
+ // 드래그 해제 이전에 컨트롤 키를 릴리즈 하는 경우, selbox가 없을 수 있으므로 확인한다.
350
+ // selbox는 여러 컴포넌트를 선택하기 위해서 마우스로 드래깅해서 만들어내는 영역임.
351
+ // 드래그로는 stuck 되어있는 컨테이너의 1차 자식 컴포넌트들만 선택할 수 있다.
352
+ if (this.selbox) {
353
+ this.selbox.ex = x;
354
+ this.selbox.ey = y;
355
+ let container = origin;
356
+ (0, _selectedFinder.selectedFinder)(this, origin, this.selbox, e.shiftKey);
357
+ this.invalidate();
358
+ }
359
+ }
360
+ ondragend_selbox(e, hint) {
361
+ var {
362
+ origin
363
+ } = hint;
364
+ if (!origin.stuck) return;
365
+ this.last_pos = null;
366
+ this.selbox = null;
367
+ (0, _selectedFinder.selectedFinder)(this, null, null, false, true);
368
+ this.invalidate();
369
+ }
370
+ }
371
+ exports.default = SelectionLayer;
372
+ _component.default.register('selection-layer', SelectionLayer);
373
+ //# sourceMappingURL=selection-layer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"selection-layer.js","names":["_component","_interopRequireDefault","require","_logger","_layer","_selectedFinder","e","__esModule","default","unselectAllAncester","component","selected","ancester","parent","idx","indexOf","splice","unselectAllDecendant","children","components","child","SelectionLayer","Layer","ready","rootModel","translate","get","scale","set","contains","x","y","render","ctx","selbox","sx","sy","ex","ey","beginPath","rect","setLineDash","lineWidth","strokeStyle","stroke","eventMap","keydown","onkeydown","change","onchange_root_model","dragstart","ondragstart_selbox","dragmove","ondragmove_selbox","dragend","ondragend_selbox","mousedown","onmousedown_comp","mouseup","onmouseup_comp","hint","origin","deliverer","length","container","code","capturables","layout","warn","shiftKey","keyNavigate","preventDefault","after","before","_pendingDecision","downpoint","offsetX","offsetY","_selectGroupItem","parentOfOrigin","isGroup","selectedSiblings","foundSibling","foundGroup","forEach","item","push","filter","c","isRootModel","sameParent","slice","stuck","transcoordC2S","selectedFinder","invalidate","last_pos","exports","Component","register"],"sources":["../../src/layer/selection-layer.js"],"sourcesContent":["/*\n * Copyright © HatioLab Inc. All rights reserved.\n */\n\nimport Component from '../components/component.js'\nimport { warn } from '../core/logger.js'\nimport Layer from './layer.js'\nimport { selectedFinder } from './selection/selected-finder.js'\n\nfunction unselectAllAncester(component, selected) {\n var ancester = component.parent\n while (ancester) {\n let idx = selected.indexOf(ancester)\n if (idx != -1) {\n selected.splice(idx, 1)\n }\n ancester = ancester.parent\n }\n}\n\nfunction unselectAllDecendant(component, selected) {\n var children = component.components || []\n for (let child of children) {\n unselectAllDecendant(child, selected)\n\n let idx = selected.indexOf(child)\n if (idx != -1) {\n selected.splice(idx, 1)\n }\n }\n}\n\nexport default class SelectionLayer extends Layer {\n // Lifecycle\n ready() {\n super.ready()\n var rootModel = this.rootModel\n\n var translate = rootModel.get('translate')\n var scale = rootModel.get('scale')\n\n this.set('translate', translate)\n this.set('scale', scale)\n }\n\n contains(x, y) {\n return false\n }\n\n render(ctx) {\n var selbox = this.selbox\n\n if (selbox) {\n let { sx, sy, ex, ey } = selbox\n let scale = this.get('scale') || { x: 1, y: 1 }\n\n ctx.beginPath()\n\n ctx.rect(sx, sy, ex - sx, ey - sy)\n\n ctx.setLineDash([2 / scale.x, 4 / scale.y])\n ctx.lineWidth = 1 / scale.x\n ctx.strokeStyle = 'black'\n\n ctx.stroke()\n }\n }\n\n get eventMap() {\n return {\n '(root)': {\n '(self)': {\n keydown: this.onkeydown\n }\n },\n 'model-layer': {\n '(self)': {\n change: this.onchange_root_model\n },\n '(all)': {\n dragstart: this.ondragstart_selbox,\n dragmove: this.ondragmove_selbox,\n dragend: this.ondragend_selbox,\n\n mousedown: this.onmousedown_comp,\n mouseup: this.onmouseup_comp\n }\n }\n }\n }\n\n onkeydown(e, hint) {\n var { origin, deliverer } = hint /* deliverer should be RootContainer */\n\n var selected = deliverer.selected\n\n if (selected.length !== 1) {\n return false\n }\n\n var component = selected[0]\n var container = component.parent\n\n if (!container || container === deliverer) {\n return false\n }\n\n if (e.code === 'Tab') {\n var capturables = container.layout.capturables(container)\n\n var idx = capturables.indexOf(component)\n\n if (idx == -1) {\n if (container.indexOf(component)) {\n idx = 0\n } else {\n warn('Container not contains [', component, '] as a component')\n return false\n }\n }\n\n var length = capturables.length\n\n if (e.shiftKey) idx--\n else idx++\n\n component = capturables[(idx + length) % length]\n } else if (container.layout.keyNavigate) {\n component = container.layout.keyNavigate(container, component, e) || component\n } else {\n return false\n }\n\n deliverer.selected = [component]\n e.preventDefault()\n }\n\n onchange_root_model(after, before, hint) {\n if (after.translate) {\n // Model Base 레이어와 동일한 translate를 유지하도록 한다.\n this.set('translate', after.translate)\n }\n\n if (after.scale) {\n // Model Base 레이어와 동일한 scale 유지하도록 한다.\n this.set('scale', after.scale)\n }\n }\n\n _pendingDecision(e) {\n /* MouseUP에서 결정하도록 마우스가 눌린 위치를 기억한다. */\n this.downpoint = {\n x: e.offsetX,\n y: e.offsetY\n }\n }\n\n _selectGroupItem(origin, e) {\n var idx = this.selected.indexOf(origin)\n\n /*\n * 기존에 선택된 아이템 중에서 그룹내에 있는 아이템이 있다면, 바로 선택되도록 한다.\n * 그렇지 않으면, MouseUP에서 결정하도록 한다.\n */\n let parentOfOrigin = origin.parent\n\n // 최상위 그룹을 찾는다.\n while (parentOfOrigin.parent.isGroup()) {\n parentOfOrigin = parentOfOrigin.parent\n }\n\n let selectedSiblings = []\n let foundSibling = false\n let foundGroup = false\n\n this.selected.forEach(item => {\n let parent = item.parent\n\n if (item === parentOfOrigin) {\n foundGroup = true\n return\n }\n\n while (parent.parent && parent.parent.isGroup()) {\n parent = parent.parent\n }\n\n if (parent === parentOfOrigin) {\n /* 최상위 그룹이 동일한 경우 sibling으로 판단한다. */\n\n selectedSiblings.push(item)\n foundSibling = true\n }\n })\n\n if (foundSibling) {\n if (e.shiftKey) {\n if (idx == -1) {\n selectedSiblings.push(origin)\n } else {\n this._pendingDecision(e)\n return\n }\n } else {\n if (idx == -1) {\n selectedSiblings = [origin]\n } else {\n this._pendingDecision(e)\n return\n }\n }\n } /* no siblinig */ else {\n if (!foundGroup) {\n /* 기존에 선택된 컴포넌트의 부모 그룹을 찾지 못했다면, 공통부모 여부를 판단해서, 최상위 그룹이 선택된다. */\n if (e.shiftKey) {\n /* (sibling이 없고) 이미 선택된 컴포넌트들이 있다면, ... */\n if (this.selected.length > 0) {\n if (this.selected.indexOf(parentOfOrigin) == -1) {\n /* 멀티 선택 리스트에 최상위 그룹을 추가한다. */\n selectedSiblings = [...this.selected, parentOfOrigin]\n } else {\n /* 멀티 선택 조건에 맞지 않아서, 아무 동작도 하지 않는다 */\n return\n }\n } else {\n /* (sibling이 없고) 이미 선택된 컴포넌트들이 없다면, 최상위 부모 그룹이 선택된다. */\n selectedSiblings = [parentOfOrigin]\n }\n } else {\n selectedSiblings = [parentOfOrigin]\n }\n } else {\n /* 기존에 선택된 컴포넌트의 부모 그룹을 찾았다면, 드래깅일 수도 있으므로, 결정을 지연시킨다. */\n this._pendingDecision(e)\n return\n }\n }\n\n this.selected = selectedSiblings\n }\n\n onmousedown_comp(e, hint) {\n var { origin } = hint\n this.downpoint = null\n\n if (e.shiftKey) {\n // shiftKey 상태에서는 선택은 mousedown에서 처리하고, 선택의 해제는 mouseup 이벤트에서 처리한다.\n\n // 선택된 대상의 부모가 group인 경우\n if (origin.parent.isGroup()) {\n this._selectGroupItem(origin, e)\n return\n }\n\n if (this.selected.indexOf(origin) == -1) {\n // 선택된 컴포넌트와 같은 부모를 가진 컴포넌트들로 선택리스트를 재구성한다.\n // 모델 노드에서 제외된 컴포넌트와 Root Model은 제외한다.\n let selected = this.selected.filter(c => !c.isRootModel() && !!c.parent)\n\n let parent = selected.length > 0 && selected[0].parent\n if (parent && parent !== origin.parent) {\n // origin의 부모가 그룹이라면, 그 그룹은 분명히 선택된 상태이다.\n // if (origin.parent.isGroup()) {\n // this._pendingDecision(e)\n\n // return\n // }\n\n // 편집의 편의상, shift + mouseclick 하는 경우에만, 조상이 다르더라도 선택될 수 있도록 한다.\n // 새로선택된 컴포넌트의 조상과 자손들은 모두 선택취소한다.\n unselectAllAncester(origin, selected)\n unselectAllDecendant(origin, selected)\n }\n\n selected.push(origin)\n\n this.selected = selected\n } else {\n this._pendingDecision(e)\n return\n }\n } else {\n /* no shift-key */\n\n // 선택된 대상의 부모가 group인 경우\n if (origin.parent.isGroup()) {\n this._selectGroupItem(origin, e)\n return\n }\n\n if (this.selected.indexOf(origin) == -1) {\n this.selected = [origin]\n this.sameParent = true\n } else {\n return // 변화된 것이 없다.\n }\n }\n }\n\n onmouseup_comp(e, hint) {\n /*\n * mouse-down 이벤트에서 결정이 pending된 경우 (this.downpoint에 값이 설정된 경우임)\n * 선택은 mousedown에서 처리하고, 선택의 해제는 mouseup 이벤트에서 처리한다.\n * 만약에, 부모가 그룹이라면, mouseup이벤트에서 선택이 처리된다.\n */\n\n if (!this.downpoint) {\n return\n }\n\n /*\n * 마우스가 눌린 위치와 동일한 위치에서 버튼릴리즈 된 경우만 처리한다.\n * 선택해제 또는 그룹내 컴포넌트 선택을 위한 행동으로 간주한다.\n */\n if (this.downpoint.x !== e.offsetX || this.downpoint.y !== e.offsetY) return\n\n var { origin } = hint\n let idx = this.selected.indexOf(origin)\n if (idx == -1 && origin.parent.isGroup()) {\n idx = this.selected.indexOf(origin.parent)\n }\n\n /* 이미 선택되어 있는 컴포넌트를 선택리스트에서 제거 */\n if (idx !== -1 && e.shiftKey) {\n let selected = this.selected.slice()\n\n if (idx > -1) {\n selected.splice(idx, 1) // remove\n }\n\n this.selected = selected\n\n return\n }\n\n // 선택된 대상의 부모가 group인 경우\n if (origin.parent.isGroup()) {\n this.selected = [origin]\n return\n }\n }\n\n /* 영역을 그려서 다중 선택을 하는 기능을 위한 이벤트 핸들러들임 */\n\n ondragstart_selbox(e, hint) {\n var { origin } = hint\n\n if (!origin.stuck) return\n\n var { x, y } = this.transcoordC2S(e.offsetX, e.offsetY)\n\n // Model Base 레이어에서 드래깅이 시작되면, 멀티선택 영역을 시작한다.\n // 만일, origin이 stuck된 컴포넌트이면, 선택리스트에서 제외한다.\n\n this.selbox = {\n sx: x,\n sy: y,\n selected: []\n }\n }\n\n ondragmove_selbox(e, hint) {\n var { origin } = hint\n\n if (!origin.stuck) return\n\n var { x, y } = this.transcoordC2S(e.offsetX, e.offsetY)\n var { deliverer } = hint /* should be rootModel */\n\n // 드래그 해제 이전에 컨트롤 키를 릴리즈 하는 경우, selbox가 없을 수 있으므로 확인한다.\n // selbox는 여러 컴포넌트를 선택하기 위해서 마우스로 드래깅해서 만들어내는 영역임.\n // 드래그로는 stuck 되어있는 컨테이너의 1차 자식 컴포넌트들만 선택할 수 있다.\n if (this.selbox) {\n this.selbox.ex = x\n this.selbox.ey = y\n\n let container = origin\n\n selectedFinder(this, origin, this.selbox, e.shiftKey)\n\n this.invalidate()\n }\n }\n\n ondragend_selbox(e, hint) {\n var { origin } = hint\n\n if (!origin.stuck) return\n\n this.last_pos = null\n this.selbox = null\n\n selectedFinder(this, null, null, false, true)\n\n this.invalidate()\n }\n}\n\nComponent.register('selection-layer', SelectionLayer)\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,83 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _component = _interopRequireDefault(require("../components/component.js"));
8
+ var Const = _interopRequireWildcard(require("../const.js"));
9
+ var _layer = _interopRequireDefault(require("./layer.js"));
10
+ 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); }
11
+ 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; }
12
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
13
+ /*
14
+ * Copyright © HatioLab Inc. All rights reserved.
15
+ */
16
+
17
+ class ShiftLayer extends _layer.default {
18
+ // Lifecycle
19
+ ready() {
20
+ super.ready();
21
+ var translate = this.rootModel.get('translate');
22
+ this.set('translate', translate);
23
+ }
24
+ render(ctx) {
25
+ /* render nothing */
26
+ }
27
+ get pointerEvents() {
28
+ return 'none';
29
+ }
30
+ contains(x, y) {
31
+ return !!(this.app.mode == Const.MODE_SHIFT);
32
+ }
33
+ get eventMap() {
34
+ return {
35
+ '(root)': {
36
+ '(self)': {
37
+ keydown: this.onkeydown,
38
+ keyup: this.onkeyup
39
+ }
40
+ }
41
+ };
42
+ }
43
+ onkeydown(e) {
44
+ if (e.code === 'Space' && this.before_mode === undefined) {
45
+ this.before_mode = this.app.mode;
46
+ this.app.mode = Const.MODE_SHIFT;
47
+ }
48
+ }
49
+ onkeyup(e) {
50
+ if (e.code === 'Space') {
51
+ if (this.before_mode !== undefined) {
52
+ this.app.mode = this.before_mode;
53
+ }
54
+ delete this.before_mode;
55
+ }
56
+ }
57
+
58
+ /* default UI Event Handlers. */
59
+
60
+ ondragstart(e) {
61
+ this.last_position = this.transcoordC2S(e.offsetX, e.offsetY);
62
+ }
63
+ ondragmove(e) {
64
+ var {
65
+ x,
66
+ y
67
+ } = this.transcoordC2S(e.offsetX, e.offsetY);
68
+
69
+ // 모델레이어의 원점을 움직인다.
70
+ this.rootModel.move({
71
+ x: x - this.last_position.x,
72
+ y: y - this.last_position.y
73
+ }, false);
74
+
75
+ // 모델레이어의 translate 값이 바뀌었으므로, 이 레이어의 translate도 변경되었을 것이다.
76
+ // 따라서, transcoord을 다시 해주어야 한다.
77
+
78
+ this.last_position = this.transcoordC2S(e.offsetX, e.offsetY);
79
+ }
80
+ }
81
+ exports.default = ShiftLayer;
82
+ _component.default.register('shift-layer', ShiftLayer);
83
+ //# sourceMappingURL=shift-layer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shift-layer.js","names":["_component","_interopRequireDefault","require","Const","_interopRequireWildcard","_layer","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","ShiftLayer","Layer","ready","translate","rootModel","render","ctx","pointerEvents","contains","x","y","app","mode","MODE_SHIFT","eventMap","keydown","onkeydown","keyup","onkeyup","code","before_mode","undefined","ondragstart","last_position","transcoordC2S","offsetX","offsetY","ondragmove","move","exports","Component","register"],"sources":["../../src/layer/shift-layer.js"],"sourcesContent":["/*\n * Copyright © HatioLab Inc. All rights reserved.\n */\n\nimport Component from '../components/component.js'\nimport * as Const from '../const.js'\nimport Layer from './layer.js'\n\nexport default class ShiftLayer extends Layer {\n // Lifecycle\n ready() {\n super.ready()\n var translate = this.rootModel.get('translate')\n this.set('translate', translate)\n }\n\n render(ctx) {\n /* render nothing */\n }\n\n get pointerEvents() {\n return 'none'\n }\n\n contains(x, y) {\n return !!(this.app.mode == Const.MODE_SHIFT)\n }\n\n get eventMap() {\n return {\n '(root)': {\n '(self)': {\n keydown: this.onkeydown,\n keyup: this.onkeyup\n }\n }\n }\n }\n\n onkeydown(e) {\n if (e.code === 'Space' && this.before_mode === undefined) {\n this.before_mode = this.app.mode\n this.app.mode = Const.MODE_SHIFT\n }\n }\n\n onkeyup(e) {\n if (e.code === 'Space') {\n if (this.before_mode !== undefined) {\n this.app.mode = this.before_mode\n }\n delete this.before_mode\n }\n }\n\n /* default UI Event Handlers. */\n\n ondragstart(e) {\n this.last_position = this.transcoordC2S(e.offsetX, e.offsetY)\n }\n\n ondragmove(e) {\n var { x, y } = this.transcoordC2S(e.offsetX, e.offsetY)\n\n // 모델레이어의 원점을 움직인다.\n this.rootModel.move(\n {\n x: x - this.last_position.x,\n y: y - this.last_position.y\n },\n false\n )\n\n // 모델레이어의 translate 값이 바뀌었으므로, 이 레이어의 translate도 변경되었을 것이다.\n // 따라서, transcoord을 다시 해주어야 한다.\n\n this.last_position = this.transcoordC2S(e.offsetX, e.offsetY)\n }\n}\n\nComponent.register('shift-layer', ShiftLayer)\n"],"mappings":";;;;;;AAIA,IAAAA,UAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,KAAA,GAAAC,uBAAA,CAAAF,OAAA;AACA,IAAAG,MAAA,GAAAJ,sBAAA,CAAAC,OAAA;AAA8B,SAAAI,yBAAAC,CAAA,6BAAAC,OAAA,mBAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAF,wBAAA,YAAAA,CAAAC,CAAA,WAAAA,CAAA,GAAAG,CAAA,GAAAD,CAAA,KAAAF,CAAA;AAAA,SAAAH,wBAAAG,CAAA,EAAAE,CAAA,SAAAA,CAAA,IAAAF,CAAA,IAAAA,CAAA,CAAAI,UAAA,SAAAJ,CAAA,eAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,WAAAK,OAAA,EAAAL,CAAA,QAAAG,CAAA,GAAAJ,wBAAA,CAAAG,CAAA,OAAAC,CAAA,IAAAA,CAAA,CAAAG,GAAA,CAAAN,CAAA,UAAAG,CAAA,CAAAI,GAAA,CAAAP,CAAA,OAAAQ,CAAA,KAAAC,SAAA,UAAAC,CAAA,GAAAC,MAAA,CAAAC,cAAA,IAAAD,MAAA,CAAAE,wBAAA,WAAAC,CAAA,IAAAd,CAAA,oBAAAc,CAAA,OAAAC,cAAA,CAAAC,IAAA,CAAAhB,CAAA,EAAAc,CAAA,SAAAG,CAAA,GAAAP,CAAA,GAAAC,MAAA,CAAAE,wBAAA,CAAAb,CAAA,EAAAc,CAAA,UAAAG,CAAA,KAAAA,CAAA,CAAAV,GAAA,IAAAU,CAAA,CAAAC,GAAA,IAAAP,MAAA,CAAAC,cAAA,CAAAJ,CAAA,EAAAM,CAAA,EAAAG,CAAA,IAAAT,CAAA,CAAAM,CAAA,IAAAd,CAAA,CAAAc,CAAA,YAAAN,CAAA,CAAAH,OAAA,GAAAL,CAAA,EAAAG,CAAA,IAAAA,CAAA,CAAAe,GAAA,CAAAlB,CAAA,EAAAQ,CAAA,GAAAA,CAAA;AAAA,SAAAd,uBAAAM,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAI,UAAA,GAAAJ,CAAA,KAAAK,OAAA,EAAAL,CAAA;AAN9B;AACA;AACA;;AAMe,MAAMmB,UAAU,SAASC,cAAK,CAAC;EAC5C;EACAC,KAAKA,CAAA,EAAG;IACN,KAAK,CAACA,KAAK,CAAC,CAAC;IACb,IAAIC,SAAS,GAAG,IAAI,CAACC,SAAS,CAAChB,GAAG,CAAC,WAAW,CAAC;IAC/C,IAAI,CAACW,GAAG,CAAC,WAAW,EAAEI,SAAS,CAAC;EAClC;EAEAE,MAAMA,CAACC,GAAG,EAAE;IACV;EAAA;EAGF,IAAIC,aAAaA,CAAA,EAAG;IAClB,OAAO,MAAM;EACf;EAEAC,QAAQA,CAACC,CAAC,EAAEC,CAAC,EAAE;IACb,OAAO,CAAC,EAAE,IAAI,CAACC,GAAG,CAACC,IAAI,IAAInC,KAAK,CAACoC,UAAU,CAAC;EAC9C;EAEA,IAAIC,QAAQA,CAAA,EAAG;IACb,OAAO;MACL,QAAQ,EAAE;QACR,QAAQ,EAAE;UACRC,OAAO,EAAE,IAAI,CAACC,SAAS;UACvBC,KAAK,EAAE,IAAI,CAACC;QACd;MACF;IACF,CAAC;EACH;EAEAF,SAASA,CAACnC,CAAC,EAAE;IACX,IAAIA,CAAC,CAACsC,IAAI,KAAK,OAAO,IAAI,IAAI,CAACC,WAAW,KAAKC,SAAS,EAAE;MACxD,IAAI,CAACD,WAAW,GAAG,IAAI,CAACT,GAAG,CAACC,IAAI;MAChC,IAAI,CAACD,GAAG,CAACC,IAAI,GAAGnC,KAAK,CAACoC,UAAU;IAClC;EACF;EAEAK,OAAOA,CAACrC,CAAC,EAAE;IACT,IAAIA,CAAC,CAACsC,IAAI,KAAK,OAAO,EAAE;MACtB,IAAI,IAAI,CAACC,WAAW,KAAKC,SAAS,EAAE;QAClC,IAAI,CAACV,GAAG,CAACC,IAAI,GAAG,IAAI,CAACQ,WAAW;MAClC;MACA,OAAO,IAAI,CAACA,WAAW;IACzB;EACF;;EAEA;;EAEAE,WAAWA,CAACzC,CAAC,EAAE;IACb,IAAI,CAAC0C,aAAa,GAAG,IAAI,CAACC,aAAa,CAAC3C,CAAC,CAAC4C,OAAO,EAAE5C,CAAC,CAAC6C,OAAO,CAAC;EAC/D;EAEAC,UAAUA,CAAC9C,CAAC,EAAE;IACZ,IAAI;MAAE4B,CAAC;MAAEC;IAAE,CAAC,GAAG,IAAI,CAACc,aAAa,CAAC3C,CAAC,CAAC4C,OAAO,EAAE5C,CAAC,CAAC6C,OAAO,CAAC;;IAEvD;IACA,IAAI,CAACtB,SAAS,CAACwB,IAAI,CACjB;MACEnB,CAAC,EAAEA,CAAC,GAAG,IAAI,CAACc,aAAa,CAACd,CAAC;MAC3BC,CAAC,EAAEA,CAAC,GAAG,IAAI,CAACa,aAAa,CAACb;IAC5B,CAAC,EACD,KACF,CAAC;;IAED;IACA;;IAEA,IAAI,CAACa,aAAa,GAAG,IAAI,CAACC,aAAa,CAAC3C,CAAC,CAAC4C,OAAO,EAAE5C,CAAC,CAAC6C,OAAO,CAAC;EAC/D;AACF;AAACG,OAAA,CAAA3C,OAAA,GAAAc,UAAA;AAED8B,kBAAS,CAACC,QAAQ,CAAC,aAAa,EAAE/B,UAAU,CAAC","ignoreList":[]}
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _layout = _interopRequireDefault(require("./layout.js"));
8
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
9
+ /*
10
+ * Copyright © HatioLab Inc. All rights reserved.
11
+ */
12
+
13
+ /* 대상 컴포넌트의 bounds를 계산한다. */
14
+ var AbsoluteLayout = {
15
+ reflow: function (container, component) {},
16
+ capturables: function (container) {
17
+ return container.components;
18
+ },
19
+ drawables: function (container) {
20
+ if (!container.app.isViewMode) return container.components;
21
+ return container.components.filter(c => !c.hidden);
22
+ },
23
+ isStuck: function (component) {
24
+ return false;
25
+ },
26
+ ABSOLUTE: true
27
+ };
28
+ _layout.default.register('absolute', AbsoluteLayout);
29
+ var _default = exports.default = AbsoluteLayout;
30
+ //# sourceMappingURL=absolute.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"absolute.js","names":["_layout","_interopRequireDefault","require","e","__esModule","default","AbsoluteLayout","reflow","container","component","capturables","components","drawables","app","isViewMode","filter","c","hidden","isStuck","ABSOLUTE","Layout","register","_default","exports"],"sources":["../../src/layout/absolute.js"],"sourcesContent":["/*\n * Copyright © HatioLab Inc. All rights reserved.\n */\n\nimport Layout from './layout.js'\n\n/* 대상 컴포넌트의 bounds를 계산한다. */\nvar AbsoluteLayout = {\n reflow: function (container, component) {},\n\n capturables: function (container) {\n return container.components\n },\n\n drawables: function (container) {\n if (!container.app.isViewMode) return container.components\n return container.components.filter(c => !c.hidden)\n },\n\n isStuck: function (component) {\n return false\n },\n\n ABSOLUTE: true\n}\n\nLayout.register('absolute', AbsoluteLayout)\n\nexport default AbsoluteLayout\n"],"mappings":";;;;;;AAIA,IAAAA,OAAA,GAAAC,sBAAA,CAAAC,OAAA;AAAgC,SAAAD,uBAAAE,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAJhC;AACA;AACA;;AAIA;AACA,IAAIG,cAAc,GAAG;EACnBC,MAAM,EAAE,SAAAA,CAAUC,SAAS,EAAEC,SAAS,EAAE,CAAC,CAAC;EAE1CC,WAAW,EAAE,SAAAA,CAAUF,SAAS,EAAE;IAChC,OAAOA,SAAS,CAACG,UAAU;EAC7B,CAAC;EAEDC,SAAS,EAAE,SAAAA,CAAUJ,SAAS,EAAE;IAC9B,IAAI,CAACA,SAAS,CAACK,GAAG,CAACC,UAAU,EAAE,OAAON,SAAS,CAACG,UAAU;IAC1D,OAAOH,SAAS,CAACG,UAAU,CAACI,MAAM,CAACC,CAAC,IAAI,CAACA,CAAC,CAACC,MAAM,CAAC;EACpD,CAAC;EAEDC,OAAO,EAAE,SAAAA,CAAUT,SAAS,EAAE;IAC5B,OAAO,KAAK;EACd,CAAC;EAEDU,QAAQ,EAAE;AACZ,CAAC;AAEDC,eAAM,CAACC,QAAQ,CAAC,UAAU,EAAEf,cAAc,CAAC;AAAA,IAAAgB,QAAA,GAAAC,OAAA,CAAAlB,OAAA,GAE5BC,cAAc","ignoreList":[]}
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _layout = _interopRequireDefault(require("./layout.js"));
8
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
9
+ /*
10
+ * Copyright © HatioLab Inc. All rights reserved.
11
+ */
12
+
13
+ function getActiveArrayFromContainer(container) {
14
+ var components = container.components.filter(c => !c.hidden);
15
+ var config = container.getState('layoutConfig') || {};
16
+ var active = components[config && config.activeIndex || 0];
17
+ return active && [active] || [];
18
+ }
19
+
20
+ /* 대상 컴포넌트의 bounds를 계산한다. */
21
+ var CardLayout = {
22
+ reflow: function (container) {
23
+ var container_bounds = container.bounds;
24
+ var config = container.getState('layoutConfig') || {};
25
+ var bounds = {
26
+ left: 0,
27
+ top: 0,
28
+ width: container_bounds.width,
29
+ height: container_bounds.height
30
+ };
31
+ container.forEach((component, i) => {
32
+ let hidden = i != (config.activeIndex || 0);
33
+ component.bounds = bounds;
34
+ component.setState('rotation', 0);
35
+ if (component.element) {
36
+ component.element.style.visibility = hidden ? 'hidden' : 'visible';
37
+ }
38
+ });
39
+ },
40
+ capturables: function (container) {
41
+ return getActiveArrayFromContainer(container);
42
+ },
43
+ drawables: function (container) {
44
+ return getActiveArrayFromContainer(container);
45
+ },
46
+ isStuck: function (component) {
47
+ return true;
48
+ }
49
+ };
50
+ _layout.default.register('card', CardLayout);
51
+ var _default = exports.default = CardLayout;
52
+ //# sourceMappingURL=card.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"card.js","names":["_layout","_interopRequireDefault","require","e","__esModule","default","getActiveArrayFromContainer","container","components","filter","c","hidden","config","getState","active","activeIndex","CardLayout","reflow","container_bounds","bounds","left","top","width","height","forEach","component","i","setState","element","style","visibility","capturables","drawables","isStuck","Layout","register","_default","exports"],"sources":["../../src/layout/card.js"],"sourcesContent":["/*\n * Copyright © HatioLab Inc. All rights reserved.\n */\n\nimport Layout from './layout.js'\n\nfunction getActiveArrayFromContainer(container) {\n var components = container.components.filter(c => !c.hidden)\n var config = container.getState('layoutConfig') || {}\n\n var active = components[(config && config.activeIndex) || 0]\n\n return (active && [active]) || []\n}\n\n/* 대상 컴포넌트의 bounds를 계산한다. */\nvar CardLayout = {\n reflow: function (container) {\n var container_bounds = container.bounds\n var config = container.getState('layoutConfig') || {}\n\n var bounds = {\n left: 0,\n top: 0,\n width: container_bounds.width,\n height: container_bounds.height\n }\n\n container.forEach((component, i) => {\n let hidden = i != (config.activeIndex || 0)\n component.bounds = bounds\n component.setState('rotation', 0)\n if (component.element) {\n component.element.style.visibility = hidden ? 'hidden' : 'visible'\n }\n })\n },\n\n capturables: function (container) {\n return getActiveArrayFromContainer(container)\n },\n\n drawables: function (container) {\n return getActiveArrayFromContainer(container)\n },\n\n isStuck: function (component) {\n return true\n }\n}\n\nLayout.register('card', CardLayout)\n\nexport default CardLayout\n"],"mappings":";;;;;;AAIA,IAAAA,OAAA,GAAAC,sBAAA,CAAAC,OAAA;AAAgC,SAAAD,uBAAAE,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAJhC;AACA;AACA;;AAIA,SAASG,2BAA2BA,CAACC,SAAS,EAAE;EAC9C,IAAIC,UAAU,GAAGD,SAAS,CAACC,UAAU,CAACC,MAAM,CAACC,CAAC,IAAI,CAACA,CAAC,CAACC,MAAM,CAAC;EAC5D,IAAIC,MAAM,GAAGL,SAAS,CAACM,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;EAErD,IAAIC,MAAM,GAAGN,UAAU,CAAEI,MAAM,IAAIA,MAAM,CAACG,WAAW,IAAK,CAAC,CAAC;EAE5D,OAAQD,MAAM,IAAI,CAACA,MAAM,CAAC,IAAK,EAAE;AACnC;;AAEA;AACA,IAAIE,UAAU,GAAG;EACfC,MAAM,EAAE,SAAAA,CAAUV,SAAS,EAAE;IAC3B,IAAIW,gBAAgB,GAAGX,SAAS,CAACY,MAAM;IACvC,IAAIP,MAAM,GAAGL,SAAS,CAACM,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;IAErD,IAAIM,MAAM,GAAG;MACXC,IAAI,EAAE,CAAC;MACPC,GAAG,EAAE,CAAC;MACNC,KAAK,EAAEJ,gBAAgB,CAACI,KAAK;MAC7BC,MAAM,EAAEL,gBAAgB,CAACK;IAC3B,CAAC;IAEDhB,SAAS,CAACiB,OAAO,CAAC,CAACC,SAAS,EAAEC,CAAC,KAAK;MAClC,IAAIf,MAAM,GAAGe,CAAC,KAAKd,MAAM,CAACG,WAAW,IAAI,CAAC,CAAC;MAC3CU,SAAS,CAACN,MAAM,GAAGA,MAAM;MACzBM,SAAS,CAACE,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;MACjC,IAAIF,SAAS,CAACG,OAAO,EAAE;QACrBH,SAAS,CAACG,OAAO,CAACC,KAAK,CAACC,UAAU,GAAGnB,MAAM,GAAG,QAAQ,GAAG,SAAS;MACpE;IACF,CAAC,CAAC;EACJ,CAAC;EAEDoB,WAAW,EAAE,SAAAA,CAAUxB,SAAS,EAAE;IAChC,OAAOD,2BAA2B,CAACC,SAAS,CAAC;EAC/C,CAAC;EAEDyB,SAAS,EAAE,SAAAA,CAAUzB,SAAS,EAAE;IAC9B,OAAOD,2BAA2B,CAACC,SAAS,CAAC;EAC/C,CAAC;EAED0B,OAAO,EAAE,SAAAA,CAAUR,SAAS,EAAE;IAC5B,OAAO,IAAI;EACb;AACF,CAAC;AAEDS,eAAM,CAACC,QAAQ,CAAC,MAAM,EAAEnB,UAAU,CAAC;AAAA,IAAAoB,QAAA,GAAAC,OAAA,CAAAhC,OAAA,GAEpBW,UAAU","ignoreList":[]}
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _layout = _interopRequireDefault(require("./layout.js"));
8
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
9
+ /*
10
+ * Copyright © HatioLab Inc. All rights reserved.
11
+ */
12
+
13
+ /* 대상 컴포넌트의 bounds를 계산한다. */
14
+ var HTMLAbsoluteLayout = {
15
+ reflow: function (container, component) {
16
+ var components = this.drawables(container);
17
+ components.filter(component => component.isHTMLElement()).forEach(component => component.reposition());
18
+ },
19
+ capturables: function (container) {
20
+ return container.components;
21
+ },
22
+ drawables: function (container) {
23
+ return container.app && !container.app.isViewMode ? container.components : container.components.filter(c => !c.hidden);
24
+ },
25
+ isStuck: function (component) {
26
+ return false;
27
+ },
28
+ ABSOLUTE: true
29
+ };
30
+ _layout.default.register('html-absolute', HTMLAbsoluteLayout);
31
+ var _default = exports.default = HTMLAbsoluteLayout;
32
+ //# sourceMappingURL=html-absolute.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"html-absolute.js","names":["_layout","_interopRequireDefault","require","e","__esModule","default","HTMLAbsoluteLayout","reflow","container","component","components","drawables","filter","isHTMLElement","forEach","reposition","capturables","app","isViewMode","c","hidden","isStuck","ABSOLUTE","Layout","register","_default","exports"],"sources":["../../src/layout/html-absolute.js"],"sourcesContent":["/*\n * Copyright © HatioLab Inc. All rights reserved.\n */\n\nimport Layout from './layout.js'\n\n/* 대상 컴포넌트의 bounds를 계산한다. */\nvar HTMLAbsoluteLayout = {\n reflow: function (container, component) {\n var components = this.drawables(container)\n\n components.filter(component => component.isHTMLElement()).forEach(component => component.reposition())\n },\n\n capturables: function (container) {\n return container.components\n },\n\n drawables: function (container) {\n return container.app && !container.app.isViewMode\n ? container.components\n : container.components.filter(c => !c.hidden)\n },\n\n isStuck: function (component) {\n return false\n },\n\n ABSOLUTE: true\n}\n\nLayout.register('html-absolute', HTMLAbsoluteLayout)\n\nexport default HTMLAbsoluteLayout\n"],"mappings":";;;;;;AAIA,IAAAA,OAAA,GAAAC,sBAAA,CAAAC,OAAA;AAAgC,SAAAD,uBAAAE,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAJhC;AACA;AACA;;AAIA;AACA,IAAIG,kBAAkB,GAAG;EACvBC,MAAM,EAAE,SAAAA,CAAUC,SAAS,EAAEC,SAAS,EAAE;IACtC,IAAIC,UAAU,GAAG,IAAI,CAACC,SAAS,CAACH,SAAS,CAAC;IAE1CE,UAAU,CAACE,MAAM,CAACH,SAAS,IAAIA,SAAS,CAACI,aAAa,CAAC,CAAC,CAAC,CAACC,OAAO,CAACL,SAAS,IAAIA,SAAS,CAACM,UAAU,CAAC,CAAC,CAAC;EACxG,CAAC;EAEDC,WAAW,EAAE,SAAAA,CAAUR,SAAS,EAAE;IAChC,OAAOA,SAAS,CAACE,UAAU;EAC7B,CAAC;EAEDC,SAAS,EAAE,SAAAA,CAAUH,SAAS,EAAE;IAC9B,OAAOA,SAAS,CAACS,GAAG,IAAI,CAACT,SAAS,CAACS,GAAG,CAACC,UAAU,GAC7CV,SAAS,CAACE,UAAU,GACpBF,SAAS,CAACE,UAAU,CAACE,MAAM,CAACO,CAAC,IAAI,CAACA,CAAC,CAACC,MAAM,CAAC;EACjD,CAAC;EAEDC,OAAO,EAAE,SAAAA,CAAUZ,SAAS,EAAE;IAC5B,OAAO,KAAK;EACd,CAAC;EAEDa,QAAQ,EAAE;AACZ,CAAC;AAEDC,eAAM,CAACC,QAAQ,CAAC,eAAe,EAAElB,kBAAkB,CAAC;AAAA,IAAAmB,QAAA,GAAAC,OAAA,CAAArB,OAAA,GAErCC,kBAAkB","ignoreList":[]}