@hatiolab/things-scene 9.0.0-beta.2 → 9.0.0-beta.21

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 (341) hide show
  1. package/db.sqlite +0 -0
  2. package/dist/animation/animate.d.ts +4 -0
  3. package/dist/animation/animations/animation.d.ts +14 -0
  4. package/dist/animation/animations/fade.d.ts +4 -0
  5. package/dist/animation/animations/heartbeat.d.ts +4 -0
  6. package/dist/animation/animations/moving.d.ts +4 -0
  7. package/dist/animation/animations/outline.d.ts +10 -0
  8. package/dist/animation/animations/rotation.d.ts +4 -0
  9. package/dist/animation/animations/vibration.d.ts +4 -0
  10. package/dist/animation/compile.d.ts +1 -0
  11. package/dist/animation/delta.d.ts +19 -0
  12. package/dist/animation/index.d.ts +1 -0
  13. package/dist/command/command-change.d.ts +7 -0
  14. package/dist/command/command-migrate.d.ts +4 -0
  15. package/dist/command/command-migrate.js +85 -0
  16. package/dist/command/command-migrate.js.map +1 -0
  17. package/dist/command/command.d.ts +5 -0
  18. package/dist/command/snapshot-commander.d.ts +15 -0
  19. package/dist/components/anchor/anchor.d.ts +128 -0
  20. package/dist/components/anchor/ellipse-anchors.d.ts +2 -0
  21. package/dist/components/anchor/ellipse-anchors.js +38 -0
  22. package/dist/components/anchor/ellipse-anchors.js.map +1 -0
  23. package/dist/components/anchor/rect-anchors.d.ts +10 -0
  24. package/dist/components/audio.d.ts +25 -0
  25. package/dist/components/audio.js +141 -0
  26. package/dist/components/audio.js.map +1 -0
  27. package/dist/components/cloud.d.ts +13 -0
  28. package/dist/components/cloud.js +31 -0
  29. package/dist/components/cloud.js.map +1 -0
  30. package/dist/components/component.d.ts +227 -0
  31. package/dist/components/component.js +912 -0
  32. package/dist/components/component.js.map +1 -0
  33. package/dist/components/container-abstract.d.ts +51 -0
  34. package/dist/components/container-abstract.js +372 -0
  35. package/dist/components/container-abstract.js.map +1 -0
  36. package/dist/components/container.d.ts +38 -0
  37. package/dist/components/container.js +75 -0
  38. package/dist/components/container.js.map +1 -0
  39. package/dist/components/data/data-mapping.d.ts +16 -0
  40. package/dist/components/data/data.d.ts +8 -0
  41. package/dist/components/data/evaluator.d.ts +1 -0
  42. package/dist/components/donut.d.ts +15 -0
  43. package/dist/components/donut.js +74 -0
  44. package/dist/components/donut.js.map +1 -0
  45. package/dist/components/drawer/draw-image-pendable.d.ts +1 -0
  46. package/dist/components/drawer/effect.d.ts +1 -0
  47. package/dist/components/drawer/fill.d.ts +14 -0
  48. package/dist/components/drawer/format.d.ts +1 -0
  49. package/dist/components/drawer/line.d.ts +3 -0
  50. package/dist/components/drawer/stroke.d.ts +1 -0
  51. package/dist/components/drawer/text-wrapper.d.ts +10 -0
  52. package/dist/components/drawer/text.d.ts +3 -0
  53. package/dist/components/ellipse.d.ts +35 -0
  54. package/dist/components/ellipse.js +99 -0
  55. package/dist/components/ellipse.js.map +1 -0
  56. package/dist/components/file/ondropfile.d.ts +1 -0
  57. package/dist/components/fit/fit.d.ts +15 -0
  58. package/dist/components/geometry/transcoord.d.ts +41 -0
  59. package/dist/components/geometry/union.d.ts +6 -0
  60. package/dist/components/gif-view.d.ts +18 -0
  61. package/dist/components/gif-view.js +116 -0
  62. package/dist/components/gif-view.js.map +1 -0
  63. package/dist/components/global-ref.d.ts +36 -0
  64. package/dist/components/global-ref.js +128 -0
  65. package/dist/components/global-ref.js.map +1 -0
  66. package/dist/components/group.d.ts +15 -0
  67. package/dist/components/group.js +145 -0
  68. package/dist/components/group.js.map +1 -0
  69. package/dist/components/html/elements.d.ts +2 -0
  70. package/dist/components/html/fill.d.ts +1 -0
  71. package/dist/components/html/reposition.d.ts +1 -0
  72. package/dist/components/html/shadow.d.ts +1 -0
  73. package/dist/components/html-overlay-container.d.ts +27 -0
  74. package/dist/components/html-overlay-container.js +14 -0
  75. package/dist/components/html-overlay-container.js.map +1 -0
  76. package/dist/components/html-overlay-element.d.ts +25 -0
  77. package/dist/components/html-overlay-element.js +9 -0
  78. package/dist/components/html-overlay-element.js.map +1 -0
  79. package/dist/components/image-view.d.ts +19 -0
  80. package/dist/components/image-view.js +180 -0
  81. package/dist/components/image-view.js.map +1 -0
  82. package/dist/components/index.d.ts +32 -0
  83. package/dist/components/index.js +39 -0
  84. package/dist/components/index.js.map +1 -0
  85. package/dist/components/info-window.d.ts +41 -0
  86. package/dist/components/info-window.js +425 -0
  87. package/dist/components/info-window.js.map +1 -0
  88. package/dist/components/line.d.ts +91 -0
  89. package/dist/components/line.js +303 -0
  90. package/dist/components/line.js.map +1 -0
  91. package/dist/components/local-ref.d.ts +47 -0
  92. package/dist/components/local-ref.js +103 -0
  93. package/dist/components/local-ref.js.map +1 -0
  94. package/dist/components/mixins/connectable.d.ts +45 -0
  95. package/dist/components/mixins/data-source.d.ts +9 -0
  96. package/dist/components/mixins/html-element.d.ts +24 -0
  97. package/dist/components/mixins/move-handle.d.ts +11 -0
  98. package/dist/components/mixins/rect-path.d.ts +13 -0
  99. package/dist/components/mixins/value-holder.d.ts +18 -0
  100. package/dist/components/mutater/bounds.d.ts +10 -0
  101. package/dist/components/mutater/path.d.ts +5 -0
  102. package/dist/components/ortholine.d.ts +21 -0
  103. package/dist/components/ortholine.js +814 -0
  104. package/dist/components/ortholine.js.map +1 -0
  105. package/dist/components/outline/ellipse-outline.d.ts +4 -0
  106. package/dist/components/outline/ellipse-outline.js +11 -0
  107. package/dist/components/outline/ellipse-outline.js.map +1 -0
  108. package/dist/components/outline/path-outline.d.ts +1 -0
  109. package/dist/components/path.d.ts +5 -0
  110. package/dist/components/path.js +40 -0
  111. package/dist/components/path.js.map +1 -0
  112. package/dist/components/polygon.d.ts +40 -0
  113. package/dist/components/polygon.js +157 -0
  114. package/dist/components/polygon.js.map +1 -0
  115. package/dist/components/polyline.d.ts +18 -0
  116. package/dist/components/polyline.js +102 -0
  117. package/dist/components/polyline.js.map +1 -0
  118. package/dist/components/popup.d.ts +48 -0
  119. package/dist/components/popup.js +138 -0
  120. package/dist/components/popup.js.map +1 -0
  121. package/dist/components/rect.d.ts +26 -0
  122. package/dist/components/rect.js +91 -0
  123. package/dist/components/rect.js.map +1 -0
  124. package/dist/components/retention/retention-manager.d.ts +8 -0
  125. package/dist/components/root-container.d.ts +90 -0
  126. package/dist/components/root-container.js +478 -0
  127. package/dist/components/root-container.js.map +1 -0
  128. package/dist/components/ruler.d.ts +16 -0
  129. package/dist/components/ruler.js +77 -0
  130. package/dist/components/ruler.js.map +1 -0
  131. package/dist/components/shape.d.ts +25 -0
  132. package/dist/components/shape.js +80 -0
  133. package/dist/components/shape.js.map +1 -0
  134. package/dist/components/star.d.ts +13 -0
  135. package/dist/components/star.js +80 -0
  136. package/dist/components/star.js.map +1 -0
  137. package/dist/components/text/substitutor.d.ts +3 -0
  138. package/dist/components/text.d.ts +8 -0
  139. package/dist/components/text.js +15 -0
  140. package/dist/components/text.js.map +1 -0
  141. package/dist/components/three-container.d.ts +60 -0
  142. package/dist/components/three-container.js +515 -0
  143. package/dist/components/three-container.js.map +1 -0
  144. package/dist/components/triangle.d.ts +15 -0
  145. package/dist/components/triangle.js +76 -0
  146. package/dist/components/triangle.js.map +1 -0
  147. package/dist/const.d.ts +39 -0
  148. package/dist/core/collection.d.ts +8 -0
  149. package/dist/core/debug.d.ts +1 -0
  150. package/dist/core/deep-equals.d.ts +1 -0
  151. package/dist/core/dom-to-image.d.ts +127 -0
  152. package/dist/core/event.d.ts +92 -0
  153. package/dist/core/index.d.ts +2 -0
  154. package/dist/core/list.d.ts +32 -0
  155. package/dist/core/logger.d.ts +3 -0
  156. package/dist/core/memoize.d.ts +6 -0
  157. package/dist/core/mixin.d.ts +1 -0
  158. package/dist/core/obj-accessor.d.ts +1 -0
  159. package/dist/core/reference-map.d.ts +14 -0
  160. package/dist/core/round-rect.d.ts +19 -0
  161. package/dist/core/script-loader.d.ts +3 -0
  162. package/dist/core/snapshot-taker.d.ts +12 -0
  163. package/dist/core/stack.d.ts +2 -0
  164. package/dist/core/timecapsule.d.ts +18 -0
  165. package/dist/core/utils.d.ts +9 -0
  166. package/dist/decorator/anchors-decorator.d.ts +31 -0
  167. package/dist/decorator/data-spread-decorator.d.ts +1 -0
  168. package/dist/decorator/decotag-decorator.d.ts +1 -0
  169. package/dist/decorator/index.d.ts +2 -0
  170. package/dist/decorator/link-decorator.d.ts +1 -0
  171. package/dist/effect/gradation.d.ts +1 -0
  172. package/dist/effect/index.d.ts +1 -0
  173. package/dist/effect/shadow.d.ts +2 -0
  174. package/dist/effect/turn.d.ts +1 -0
  175. package/dist/event/event-engine.d.ts +12 -0
  176. package/dist/event/event-pump.d.ts +11 -0
  177. package/dist/event/event-tracker.d.ts +21 -0
  178. package/dist/event/index.d.ts +2 -0
  179. package/dist/event/ua-event-handler.d.ts +32 -0
  180. package/dist/event-map/event-map.d.ts +9 -0
  181. package/dist/event-map/index.d.ts +1 -0
  182. package/dist/event-map/move-handler.d.ts +1 -0
  183. package/dist/event-map/text-editor-lite.d.ts +1 -0
  184. package/dist/index.d.ts +1 -0
  185. package/dist/index.js +3 -0
  186. package/dist/index.js.map +1 -0
  187. package/dist/layer/action/emphasize.d.ts +2 -0
  188. package/dist/layer/action/popup.d.ts +5 -0
  189. package/dist/layer/action/pressed.d.ts +2 -0
  190. package/dist/layer/add-layer.d.ts +42 -0
  191. package/dist/layer/add-layer.js +142 -0
  192. package/dist/layer/add-layer.js.map +1 -0
  193. package/dist/layer/decotag-layer.d.ts +27 -0
  194. package/dist/layer/decotag-layer.js +105 -0
  195. package/dist/layer/decotag-layer.js.map +1 -0
  196. package/dist/layer/guide-layer.d.ts +44 -0
  197. package/dist/layer/guide-layer.js +261 -0
  198. package/dist/layer/guide-layer.js.map +1 -0
  199. package/dist/layer/index.d.ts +7 -0
  200. package/dist/layer/index.js +11 -0
  201. package/dist/layer/index.js.map +1 -0
  202. package/dist/layer/layer.d.ts +32 -0
  203. package/dist/layer/layer.js +155 -0
  204. package/dist/layer/layer.js.map +1 -0
  205. package/dist/layer/model-layer.d.ts +46 -0
  206. package/dist/layer/model-layer.js +402 -0
  207. package/dist/layer/model-layer.js.map +1 -0
  208. package/dist/layer/modeler/anchor-handler.d.ts +36 -0
  209. package/dist/layer/modeler/control-handler.d.ts +18 -0
  210. package/dist/layer/modeler/focus-outline.d.ts +5 -0
  211. package/dist/layer/modeler/group-outline.d.ts +5 -0
  212. package/dist/layer/modeler/index.d.ts +7 -0
  213. package/dist/layer/modeler/path-handler.d.ts +22 -0
  214. package/dist/layer/modeler/resizer.d.ts +13 -0
  215. package/dist/layer/modeler/rotator.d.ts +15 -0
  216. package/dist/layer/modeler/rotator.js +120 -0
  217. package/dist/layer/modeler/rotator.js.map +1 -0
  218. package/dist/layer/modeling-layer.d.ts +66 -0
  219. package/dist/layer/modeling-layer.js +451 -0
  220. package/dist/layer/modeling-layer.js.map +1 -0
  221. package/dist/layer/selection/selected-finder.d.ts +1 -0
  222. package/dist/layer/selection-layer.d.ts +42 -0
  223. package/dist/layer/selection-layer.js +307 -0
  224. package/dist/layer/selection-layer.js.map +1 -0
  225. package/dist/layer/shift-layer.d.ts +18 -0
  226. package/dist/layer/shift-layer.js +61 -0
  227. package/dist/layer/shift-layer.js.map +1 -0
  228. package/dist/layout/absolute.d.ts +8 -0
  229. package/dist/layout/card.d.ts +7 -0
  230. package/dist/layout/html-absolute.d.ts +8 -0
  231. package/dist/layout/index.d.ts +8 -0
  232. package/dist/layout/index.js +12 -0
  233. package/dist/layout/index.js.map +1 -0
  234. package/dist/layout/layout.d.ts +11 -0
  235. package/dist/layout/linear-horizontal.d.ts +7 -0
  236. package/dist/layout/linear-vertical.d.ts +7 -0
  237. package/dist/layout/table.d.ts +9 -0
  238. package/dist/layout/three.d.ts +8 -0
  239. package/dist/layout/three.js +20 -0
  240. package/dist/layout/three.js.map +1 -0
  241. package/dist/license/license.d.ts +18 -0
  242. package/dist/model/compile.d.ts +1 -0
  243. package/dist/model/compile.js +28 -0
  244. package/dist/model/compile.js.map +1 -0
  245. package/dist/model/duplicate.d.ts +1 -0
  246. package/dist/model/index.d.ts +3 -0
  247. package/dist/model/selector.d.ts +2 -0
  248. package/dist/style/compile.d.ts +1 -0
  249. package/dist/style/index.d.ts +1 -0
  250. package/dist/things-scene/api/add-start.d.ts +1 -0
  251. package/dist/things-scene/api/add.d.ts +5 -0
  252. package/dist/things-scene/api/align.d.ts +1 -0
  253. package/dist/things-scene/api/change.d.ts +2 -0
  254. package/dist/things-scene/api/clipboard.d.ts +3 -0
  255. package/dist/things-scene/api/distribute.d.ts +1 -0
  256. package/dist/things-scene/api/duplicate.d.ts +4 -0
  257. package/dist/things-scene/api/fullscreen.d.ts +1 -0
  258. package/dist/things-scene/api/group.d.ts +8 -0
  259. package/dist/things-scene/api/group.js +78 -0
  260. package/dist/things-scene/api/group.js.map +1 -0
  261. package/dist/things-scene/api/ids.d.ts +4 -0
  262. package/dist/things-scene/api/index.d.ts +15 -0
  263. package/dist/things-scene/api/listener.d.ts +3 -0
  264. package/dist/things-scene/api/remove.d.ts +4 -0
  265. package/dist/things-scene/api/symmetry.d.ts +2 -0
  266. package/dist/things-scene/api/symmetry.js +39 -0
  267. package/dist/things-scene/api/symmetry.js.map +1 -0
  268. package/dist/things-scene/api/to-data-url.d.ts +1 -0
  269. package/dist/things-scene/api/to-data-url.js +69 -0
  270. package/dist/things-scene/api/to-data-url.js.map +1 -0
  271. package/dist/things-scene/api/zorder.d.ts +2 -0
  272. package/dist/things-scene/application-context.d.ts +40 -0
  273. package/dist/things-scene/config.d.ts +4 -0
  274. package/dist/things-scene/create.d.ts +20 -0
  275. package/dist/things-scene/fps.d.ts +1 -0
  276. package/dist/things-scene/index.d.ts +17 -0
  277. package/dist/things-scene/index.js +23 -0
  278. package/dist/things-scene/index.js.map +1 -0
  279. package/dist/things-scene/polyfill.d.ts +2 -0
  280. package/dist/things-scene/scene.d.ts +155 -0
  281. package/dist/things-scene/version.d.ts +2 -0
  282. package/dist/threed/common.d.ts +22 -0
  283. package/dist/threed/control/three-controls.d.ts +11 -0
  284. package/dist/threed/control/three-controls.js +620 -0
  285. package/dist/threed/control/three-controls.js.map +1 -0
  286. package/dist/threed/html/elements.d.ts +2 -0
  287. package/dist/threed/real-object-camera-meshed.d.ts +12 -0
  288. package/dist/threed/real-object-camera-meshed.js +49 -0
  289. package/dist/threed/real-object-camera-meshed.js.map +1 -0
  290. package/dist/threed/real-object-camera.d.ts +9 -0
  291. package/dist/threed/real-object-camera.js +31 -0
  292. package/dist/threed/real-object-camera.js.map +1 -0
  293. package/dist/threed/real-object-dom-element.d.ts +20 -0
  294. package/dist/threed/real-object-dom-element.js +78 -0
  295. package/dist/threed/real-object-dom-element.js.map +1 -0
  296. package/dist/threed/real-object-dummy.d.ts +6 -0
  297. package/dist/threed/real-object-dummy.js +11 -0
  298. package/dist/threed/real-object-dummy.js.map +1 -0
  299. package/dist/threed/real-object-extrude.d.ts +19 -0
  300. package/dist/threed/real-object-extrude.js +171 -0
  301. package/dist/threed/real-object-extrude.js.map +1 -0
  302. package/dist/threed/real-object-gltf.d.ts +15 -0
  303. package/dist/threed/real-object-gltf.js +97 -0
  304. package/dist/threed/real-object-gltf.js.map +1 -0
  305. package/dist/threed/real-object-group.d.ts +5 -0
  306. package/dist/threed/real-object-group.js +11 -0
  307. package/dist/threed/real-object-group.js.map +1 -0
  308. package/dist/threed/real-object-mesh.d.ts +11 -0
  309. package/dist/threed/real-object-mesh.js +55 -0
  310. package/dist/threed/real-object-mesh.js.map +1 -0
  311. package/dist/threed/real-object-plane.d.ts +6 -0
  312. package/dist/threed/real-object-plane.js +23 -0
  313. package/dist/threed/real-object-plane.js.map +1 -0
  314. package/dist/threed/real-object-scene.d.ts +21 -0
  315. package/dist/threed/real-object-scene.js +89 -0
  316. package/dist/threed/real-object-scene.js.map +1 -0
  317. package/dist/threed/real-object-sprite.d.ts +12 -0
  318. package/dist/threed/real-object-sprite.js +35 -0
  319. package/dist/threed/real-object-sprite.js.map +1 -0
  320. package/dist/threed/real-object-text.d.ts +16 -0
  321. package/dist/threed/real-object-text.js +70 -0
  322. package/dist/threed/real-object-text.js.map +1 -0
  323. package/dist/threed/real-object.d.ts +48 -0
  324. package/dist/threed/real-object.js +199 -0
  325. package/dist/threed/real-object.js.map +1 -0
  326. package/dist/threed/texture/text-texture.d.ts +8 -0
  327. package/dist/threed/three-dimensional-container.d.ts +7 -0
  328. package/dist/threed/three-dimensional-container.js +2 -0
  329. package/dist/threed/three-dimensional-container.js.map +1 -0
  330. package/dist/threed/utils/bound-uv-generator.d.ts +16 -0
  331. package/dist/types.d.ts +53 -0
  332. package/dist/types.js +368 -0
  333. package/dist/types.js.map +1 -0
  334. package/package.json +5 -2
  335. package/schema.graphql +5 -0
  336. package/things-scene-ie.js +1 -1
  337. package/things-scene-ie.js.LICENSE.txt +22 -0
  338. package/things-scene-min.js +1 -1
  339. package/things-scene-min.js.LICENSE.txt +22 -0
  340. package/things-scene.d.ts +13 -1
  341. package/things-scene.mjs +34 -14
@@ -0,0 +1,42 @@
1
+ export default class AddLayer extends Layer {
2
+ ready(): void;
3
+ get eventMap(): {
4
+ '(root)': {
5
+ '(self)': {
6
+ addstart: (models: any, hint: any) => void;
7
+ addstop: () => void;
8
+ keydown: (e: any) => void;
9
+ dragstart: (e: any) => void;
10
+ dragmove: (e: any) => void;
11
+ dragend: (e: any, hint: any) => void;
12
+ mousedown: (e: any, hint: any) => void;
13
+ mouseup: (e: any, hint: any) => void;
14
+ };
15
+ };
16
+ 'model-layer': {
17
+ '(self)': {
18
+ change: (after: any, before: any, hint: any) => void;
19
+ };
20
+ };
21
+ };
22
+ onchange_root_model(after: any, before: any, hint: any): void;
23
+ onaddstart(models: any, hint: any): void;
24
+ before_mode: any;
25
+ models: any;
26
+ onaddstop(): void;
27
+ onkeydown(e: any): void;
28
+ ondragstart(e: any): void;
29
+ addbox: {
30
+ sx: any;
31
+ sy: any;
32
+ } | undefined;
33
+ ondragmove(e: any): void;
34
+ ondragend(e: any, hint: any): void;
35
+ onmousedown(e: any, hint: any): void;
36
+ downpoint: {
37
+ x: any;
38
+ y: any;
39
+ } | undefined;
40
+ onmouseup(e: any, hint: any): void;
41
+ }
42
+ import Layer from "./layer";
@@ -0,0 +1,142 @@
1
+ /*
2
+ * Copyright © HatioLab Inc. All rights reserved.
3
+ */
4
+ import Component from '../components/component';
5
+ import * as Const from '../const';
6
+ import { add } from '../things-scene/api';
7
+ import Layer from './layer';
8
+ export default class AddLayer extends Layer {
9
+ // Lifecycle
10
+ ready() {
11
+ super.ready();
12
+ var rootModel = this.rootModel;
13
+ var translate = rootModel.get('translate');
14
+ var scale = rootModel.get('scale');
15
+ this.set('translate', translate);
16
+ this.set('scale', scale);
17
+ }
18
+ render(ctx) {
19
+ var addbox = this.addbox;
20
+ if (addbox) {
21
+ let { sx, sy, ex, ey } = addbox;
22
+ let scale = this.get('scale') || { x: 1, y: 1 };
23
+ ctx.beginPath();
24
+ ctx.rect(sx, sy, ex - sx, ey - sy);
25
+ ctx.setLineDash([2 / scale.x, 4 / scale.y]);
26
+ ctx.lineWidth = 1 / scale.x;
27
+ ctx.strokeStyle = 'black';
28
+ ctx.stroke();
29
+ }
30
+ }
31
+ contains(x, y) {
32
+ return !!(this.app.mode == Const.MODE_ADD);
33
+ }
34
+ get eventMap() {
35
+ return {
36
+ '(root)': {
37
+ '(self)': {
38
+ addstart: this.onaddstart,
39
+ addstop: this.onaddstop,
40
+ keydown: this.onkeydown,
41
+ dragstart: this.ondragstart,
42
+ dragmove: this.ondragmove,
43
+ dragend: this.ondragend,
44
+ mousedown: this.onmousedown,
45
+ mouseup: this.onmouseup
46
+ }
47
+ },
48
+ 'model-layer': {
49
+ '(self)': {
50
+ change: this.onchange_root_model
51
+ }
52
+ }
53
+ };
54
+ }
55
+ onchange_root_model(after, before, hint) {
56
+ if (after.translate) {
57
+ // Model Base 레이어와 동일한 translate를 유지하도록 한다.
58
+ this.set('translate', after.translate);
59
+ }
60
+ if (after.scale) {
61
+ // Model Base 레이어와 동일한 scale 유지하도록 한다.
62
+ this.set('scale', after.scale);
63
+ }
64
+ }
65
+ onaddstart(models, hint) {
66
+ if (this.before_mode === undefined) {
67
+ this.before_mode = this.app.mode;
68
+ this.models = models;
69
+ this.app.mode = Const.MODE_ADD;
70
+ }
71
+ }
72
+ onaddstop() {
73
+ if (this.before_mode !== undefined) {
74
+ this.app.mode = this.before_mode;
75
+ }
76
+ delete this.before_mode;
77
+ delete this.addbox;
78
+ this.invalidate();
79
+ }
80
+ onkeydown(e) {
81
+ if (this.app.mode === Const.MODE_ADD && e.code === 'Esc') {
82
+ this.root.trigger('addstop');
83
+ }
84
+ }
85
+ /* default UI Event Handlers. */
86
+ ondragstart(e) {
87
+ var { x, y } = this.transcoordC2S(e.offsetX, e.offsetY);
88
+ this.addbox = {
89
+ sx: x,
90
+ sy: y
91
+ };
92
+ }
93
+ ondragmove(e) {
94
+ if (this.app.mode !== Const.MODE_ADD) {
95
+ return;
96
+ }
97
+ var { x, y } = this.transcoordC2S(e.offsetX, e.offsetY);
98
+ if (this.addbox) {
99
+ this.addbox.ex = x;
100
+ this.addbox.ey = y;
101
+ this.invalidate();
102
+ }
103
+ }
104
+ ondragend(e, hint) {
105
+ if (this.app.mode !== Const.MODE_ADD) {
106
+ return;
107
+ }
108
+ const { sx, sy, ex, ey } = this.addbox;
109
+ add.call(this.root, this.models, {
110
+ left: Math.min(sx, ex),
111
+ top: Math.min(sy, ey),
112
+ width: Math.abs(ex - sx),
113
+ height: Math.abs(ey - sy)
114
+ });
115
+ this.root.trigger('addstop');
116
+ }
117
+ onmousedown(e, hint) {
118
+ if (this.app.mode !== Const.MODE_ADD) {
119
+ return;
120
+ }
121
+ this.downpoint = {
122
+ x: e.offsetX,
123
+ y: e.offsetY
124
+ };
125
+ }
126
+ onmouseup(e, hint) {
127
+ /*
128
+ * 마우스가 눌린 위치와 동일한 위치에서 버튼릴리즈 된 경우만 처리한다.
129
+ */
130
+ if (this.downpoint.x !== e.offsetX || this.downpoint.y !== e.offsetY) {
131
+ return;
132
+ }
133
+ var { x, y } = this.transcoordC2S(e.offsetX, e.offsetY);
134
+ add.call(this.root, this.models, {
135
+ cx: x,
136
+ cy: y
137
+ });
138
+ this.root.trigger('addstop');
139
+ }
140
+ }
141
+ Component.register('add-layer', AddLayer);
142
+ //# sourceMappingURL=add-layer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"add-layer.js","sourceRoot":"","sources":["../../src/layer/add-layer.js"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright © HatioLab Inc. All rights reserved.\n */\n\nimport Component from '../components/component'\nimport * as Const from '../const'\nimport { add } from '../things-scene/api'\nimport Layer from './layer'\n\nexport default class AddLayer 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 render(ctx) {\n var addbox = this.addbox\n\n if (addbox) {\n let { sx, sy, ex, ey } = addbox\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 contains(x, y) {\n return !!(this.app.mode == Const.MODE_ADD)\n }\n\n get eventMap() {\n return {\n '(root)': {\n '(self)': {\n addstart: this.onaddstart,\n addstop: this.onaddstop,\n keydown: this.onkeydown,\n dragstart: this.ondragstart,\n dragmove: this.ondragmove,\n dragend: this.ondragend,\n mousedown: this.onmousedown,\n mouseup: this.onmouseup\n }\n },\n 'model-layer': {\n '(self)': {\n change: this.onchange_root_model\n }\n }\n }\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 onaddstart(models, hint) {\n if (this.before_mode === undefined) {\n this.before_mode = this.app.mode\n this.models = models\n this.app.mode = Const.MODE_ADD\n }\n }\n\n onaddstop() {\n if (this.before_mode !== undefined) {\n this.app.mode = this.before_mode\n }\n delete this.before_mode\n delete this.addbox\n\n this.invalidate()\n }\n\n onkeydown(e) {\n if (this.app.mode === Const.MODE_ADD && e.code === 'Esc') {\n this.root.trigger('addstop')\n }\n }\n\n /* default UI Event Handlers. */\n\n ondragstart(e) {\n var { x, y } = this.transcoordC2S(e.offsetX, e.offsetY)\n\n this.addbox = {\n sx: x,\n sy: y\n }\n }\n\n ondragmove(e) {\n if (this.app.mode !== Const.MODE_ADD) {\n return\n }\n\n var { x, y } = this.transcoordC2S(e.offsetX, e.offsetY)\n\n if (this.addbox) {\n this.addbox.ex = x\n this.addbox.ey = y\n\n this.invalidate()\n }\n }\n\n ondragend(e, hint) {\n if (this.app.mode !== Const.MODE_ADD) {\n return\n }\n\n const { sx, sy, ex, ey } = this.addbox\n\n add.call(this.root, this.models, {\n left: Math.min(sx, ex),\n top: Math.min(sy, ey),\n width: Math.abs(ex - sx),\n height: Math.abs(ey - sy)\n })\n\n this.root.trigger('addstop')\n }\n\n onmousedown(e, hint) {\n if (this.app.mode !== Const.MODE_ADD) {\n return\n }\n\n this.downpoint = {\n x: e.offsetX,\n y: e.offsetY\n }\n }\n\n onmouseup(e, hint) {\n /*\n * 마우스가 눌린 위치와 동일한 위치에서 버튼릴리즈 된 경우만 처리한다.\n */\n if (this.downpoint.x !== e.offsetX || this.downpoint.y !== e.offsetY) {\n return\n }\n\n var { x, y } = this.transcoordC2S(e.offsetX, e.offsetY)\n\n add.call(this.root, this.models, {\n cx: x,\n cy: y\n })\n\n this.root.trigger('addstop')\n }\n}\n\nComponent.register('add-layer', AddLayer)\n"]}
@@ -0,0 +1,27 @@
1
+ export default class DecoTagLayer extends Layer {
2
+ _anim_alpha: number;
3
+ animOnTargetChange(targets: any): void;
4
+ _lastTargets: any;
5
+ set targets(arg: any);
6
+ get targets(): any;
7
+ _targets: any;
8
+ onmouseenter(e: any, hint: any): void;
9
+ onmouseleave(e: any, hint: any): void;
10
+ get eventMap(): {
11
+ 'model-layer': {
12
+ '(descendant)': {
13
+ tag: (hint: any) => void;
14
+ tagreset: (hint: any) => void;
15
+ mouseenter: (e: any, hint: any) => void;
16
+ mouseleave: (e: any, hint: any) => void;
17
+ };
18
+ };
19
+ };
20
+ ondecotagreset(hint: any): void;
21
+ ondecotag(hint: any): void;
22
+ offdecotag(e: any, hint: any): void;
23
+ _ondecotag(target: any): void;
24
+ _offdecotag(target: any): void;
25
+ _decotagreset(): void;
26
+ }
27
+ import Layer from "./layer";
@@ -0,0 +1,105 @@
1
+ /*
2
+ * Copyright © HatioLab Inc. All rights reserved.
3
+ */
4
+ import Component from '../components/component';
5
+ import Layer from './layer';
6
+ import { decorate } from '../decorator/index';
7
+ /*
8
+ * DecoTagLayer 선택된 컴포넌트에 대한 정보를 보여준다.
9
+ *
10
+ * Tooltip 을 통해서 id, class 설정 정보를 보여준다.
11
+ * 변수에 의한 데이타 흐름은 선을 통해서 보여준다.
12
+ */
13
+ export default class DecoTagLayer extends Layer {
14
+ constructor(model, context) {
15
+ super(model, context);
16
+ this._anim_alpha = 1;
17
+ }
18
+ animOnTargetChange(targets) {
19
+ if (targets === this._lastTargets)
20
+ return;
21
+ this._lastTargets = targets;
22
+ this._anim_alpha = 1;
23
+ this.animate({
24
+ step: delta => {
25
+ this._anim_alpha = 1 - delta * delta;
26
+ this.invalidate();
27
+ },
28
+ duration: 5000,
29
+ delta: 'linear',
30
+ options: {
31
+ x: 1
32
+ },
33
+ ease: 'out'
34
+ }).start();
35
+ }
36
+ render(context) {
37
+ var targets = this.targets && this.targets.filter(target => target.rootModel);
38
+ if (!targets || targets.length == 0) {
39
+ this._animate && this._animate.stop();
40
+ delete this._animate;
41
+ return;
42
+ }
43
+ context.globalAlpha *= this._anim_alpha;
44
+ var needAnimation = false;
45
+ targets.forEach(target => {
46
+ if (decorate(target, context)) {
47
+ needAnimation = true;
48
+ }
49
+ });
50
+ needAnimation && this.animOnTargetChange(this.targets);
51
+ }
52
+ get targets() {
53
+ return this._targets;
54
+ }
55
+ set targets(targets) {
56
+ this._targets = targets && targets.filter(target => !target.isLayer());
57
+ this.invalidate();
58
+ }
59
+ onmouseenter(e, hint) {
60
+ this._decotagreset();
61
+ this._ondecotag(hint.origin);
62
+ }
63
+ onmouseleave(e, hint) {
64
+ this._decotagreset();
65
+ }
66
+ get eventMap() {
67
+ return {
68
+ 'model-layer': {
69
+ '(descendant)': {
70
+ tag: this.ondecotag,
71
+ tagreset: this.ondecotagreset,
72
+ mouseenter: this.onmouseenter,
73
+ mouseleave: this.onmouseleave
74
+ }
75
+ }
76
+ };
77
+ }
78
+ ondecotagreset(hint) {
79
+ this._decotagreset();
80
+ }
81
+ ondecotag(hint) {
82
+ this._ondecotag(hint.origin);
83
+ }
84
+ offdecotag(e, hint) {
85
+ this._offdecotag(hint.origin);
86
+ }
87
+ _ondecotag(target) {
88
+ if (this.targets && this.targets.lastIndexOf(target) !== -1)
89
+ return;
90
+ this.targets = (this.targets || []).concat(target);
91
+ }
92
+ _offdecotag(target) {
93
+ if (!this.targets)
94
+ return;
95
+ var copied = this.targets.slice();
96
+ copied.splice(this.targets.lastIndexOf(target), 1);
97
+ this.targets = copied;
98
+ }
99
+ _decotagreset() {
100
+ this.targets = [];
101
+ }
102
+ }
103
+ Component.register('decotag-layer', DecoTagLayer);
104
+ Component.register('tag-layer', DecoTagLayer); // TOBE deprecated
105
+ //# sourceMappingURL=decotag-layer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decotag-layer.js","sourceRoot":"","sources":["../../src/layer/decotag-layer.js"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright © HatioLab Inc. All rights reserved.\n */\n\nimport Component from '../components/component'\nimport Layer from './layer'\nimport { decorate } from '../decorator/index'\n\n/*\n * DecoTagLayer 선택된 컴포넌트에 대한 정보를 보여준다.\n *\n * Tooltip 을 통해서 id, class 설정 정보를 보여준다.\n * 변수에 의한 데이타 흐름은 선을 통해서 보여준다.\n */\n\nexport default class DecoTagLayer extends Layer {\n constructor(model, context) {\n super(model, context)\n this._anim_alpha = 1\n }\n\n animOnTargetChange(targets) {\n if (targets === this._lastTargets) return\n\n this._lastTargets = targets\n\n this._anim_alpha = 1\n\n this.animate({\n step: delta => {\n this._anim_alpha = 1 - delta * delta\n this.invalidate()\n },\n duration: 5000,\n delta: 'linear',\n options: {\n x: 1\n },\n ease: 'out'\n }).start()\n }\n\n render(context) {\n var targets = this.targets && this.targets.filter(target => target.rootModel)\n if (!targets || targets.length == 0) {\n this._animate && this._animate.stop()\n delete this._animate\n return\n }\n\n context.globalAlpha *= this._anim_alpha\n\n var needAnimation = false\n\n targets.forEach(target => {\n if (decorate(target, context)) {\n needAnimation = true\n }\n })\n\n needAnimation && this.animOnTargetChange(this.targets)\n }\n\n get targets() {\n return this._targets\n }\n\n set targets(targets) {\n this._targets = targets && targets.filter(target => !target.isLayer())\n this.invalidate()\n }\n\n onmouseenter(e, hint) {\n this._decotagreset()\n this._ondecotag(hint.origin)\n }\n\n onmouseleave(e, hint) {\n this._decotagreset()\n }\n\n get eventMap() {\n return {\n 'model-layer': {\n '(descendant)': {\n tag: this.ondecotag,\n tagreset: this.ondecotagreset,\n mouseenter: this.onmouseenter,\n mouseleave: this.onmouseleave\n }\n }\n }\n }\n\n ondecotagreset(hint) {\n this._decotagreset()\n }\n\n ondecotag(hint) {\n this._ondecotag(hint.origin)\n }\n\n offdecotag(e, hint) {\n this._offdecotag(hint.origin)\n }\n\n _ondecotag(target) {\n if (this.targets && this.targets.lastIndexOf(target) !== -1) return\n\n this.targets = (this.targets || []).concat(target)\n }\n\n _offdecotag(target) {\n if (!this.targets) return\n\n var copied = this.targets.slice()\n copied.splice(this.targets.lastIndexOf(target), 1)\n this.targets = copied\n }\n\n _decotagreset() {\n this.targets = []\n }\n}\n\nComponent.register('decotag-layer', DecoTagLayer)\nComponent.register('tag-layer', DecoTagLayer) // TOBE deprecated\n"]}
@@ -0,0 +1,44 @@
1
+ export default class GuideLayer extends Layer {
2
+ appScale: {
3
+ x: number;
4
+ y: number;
5
+ };
6
+ hruler: Ruler | undefined;
7
+ vruler: Ruler | undefined;
8
+ origin_rect: Rect | undefined;
9
+ get capturable(): boolean;
10
+ ready(): void;
11
+ screen_coord: {
12
+ left: number;
13
+ top: number;
14
+ width: number;
15
+ height: number;
16
+ } | undefined;
17
+ set guide(arg: any);
18
+ get guide(): any;
19
+ _guide: any;
20
+ get eventMap(): {
21
+ '(root)': {
22
+ '(descendant)': {
23
+ mousemove: (e: any, hint: any) => void;
24
+ mouseout: (e: any) => void;
25
+ dragmove: (e: any, hint: any) => void;
26
+ };
27
+ 'model-layer': {
28
+ change: (after: any, before: any, desc: any) => void;
29
+ };
30
+ };
31
+ '(self)': {
32
+ '(descendant)': {
33
+ mousedown: (e: any, hint: any) => void;
34
+ };
35
+ };
36
+ };
37
+ onmousedown_origin(e: any, hint: any): void;
38
+ onchange_root_model(after: any, before: any, desc: any): void;
39
+ onmouseout_child(e: any): void;
40
+ onmousemove_child(e: any, hint: any): void;
41
+ }
42
+ import Layer from "./layer";
43
+ import Ruler from "../components/ruler";
44
+ import Rect from "../components/rect";
@@ -0,0 +1,261 @@
1
+ /*
2
+ * Copyright © HatioLab Inc. All rights reserved.
3
+ */
4
+ import Component from '../components/component';
5
+ import Rect from '../components/rect';
6
+ import Ruler from '../components/ruler';
7
+ import * as Const from '../const';
8
+ import Layer from './layer';
9
+ const HRULER_LEFT = 20;
10
+ const HRULER_TOP = 0;
11
+ const HRULER_ORIGIN = 20;
12
+ const VRULER_LEFT = 0; /* 회전된 상태에서의 LEFT */
13
+ const VRULER_TOP = 20; /* 회전된 상태에서의 TOP */
14
+ const VRULER_ORIGIN = 20;
15
+ const VRULER_ROTATE = (90 * Math.PI) / 180;
16
+ const RULER_UNIT = 'm';
17
+ const RULER_MARGIN = 0;
18
+ const RULER_FONT = '9px Verdana';
19
+ const RULER_HEIGHT = 20;
20
+ const RULER_COLOR = '#f4f4f4';
21
+ const RULER_STROKE = '#999';
22
+ function calcOriginRectCoord(translate, width, height) {
23
+ return {
24
+ left: -translate.x,
25
+ top: -translate.y,
26
+ width: HRULER_LEFT,
27
+ height: RULER_HEIGHT
28
+ };
29
+ }
30
+ function calcHRulerCoord(translate, width, height, ruler) {
31
+ return {
32
+ left: HRULER_LEFT - translate.x,
33
+ top: HRULER_TOP - translate.y,
34
+ origin: HRULER_ORIGIN - translate.x,
35
+ width: width - HRULER_LEFT,
36
+ height: RULER_HEIGHT
37
+ };
38
+ }
39
+ function calcVRulerCoord(translate, width, height, ruler) {
40
+ // 1. 레이어 관점의 좌표계에서 Ruler의 센터를 잡는다
41
+ var center = {
42
+ x: -translate.x + VRULER_LEFT + RULER_HEIGHT / 2,
43
+ y: -translate.y + VRULER_TOP + (height - VRULER_TOP) / 2
44
+ };
45
+ // 2. 계산된 센터값을 이용해서 Ruler의 LEFT TOP에 해당하는 지점의 Ruler 관점의 좌표값을 계산한다.
46
+ var right_top = Component.transcoordRR(-translate.x + VRULER_LEFT, -translate.y + VRULER_TOP, center, VRULER_ROTATE);
47
+ // 3. 변경된 속성값을 리턴한다.
48
+ return {
49
+ left: right_top.x - (height - VRULER_TOP),
50
+ top: right_top.y,
51
+ origin: VRULER_ORIGIN - translate.y,
52
+ width: height - VRULER_TOP,
53
+ height: RULER_HEIGHT
54
+ };
55
+ }
56
+ function calcBounds(layout) {
57
+ var translate = layout.get('translate');
58
+ return {
59
+ left: -translate.x,
60
+ top: -translate.y,
61
+ width: layout.canvas.width / Const.DPPX,
62
+ height: layout.canvas.height / Const.DPPX
63
+ };
64
+ }
65
+ export default class GuideLayer extends Layer {
66
+ constructor(model, context) {
67
+ super(model, context);
68
+ this.appScale = {
69
+ x: 1,
70
+ y: 1
71
+ };
72
+ if (model.ruler !== 'disabled') {
73
+ this.hruler = new Ruler({
74
+ left: HRULER_LEFT,
75
+ top: HRULER_TOP,
76
+ origin: HRULER_ORIGIN,
77
+ margin: RULER_MARGIN,
78
+ height: RULER_HEIGHT,
79
+ unit: RULER_UNIT,
80
+ rotation: 0,
81
+ font: RULER_FONT,
82
+ fillStyle: RULER_COLOR,
83
+ strokeStyle: RULER_STROKE,
84
+ capturable: false
85
+ });
86
+ this.vruler = new Ruler({
87
+ left: 0,
88
+ top: 0,
89
+ origin: VRULER_ORIGIN,
90
+ margin: RULER_MARGIN,
91
+ height: RULER_HEIGHT,
92
+ unit: RULER_UNIT,
93
+ rotation: VRULER_ROTATE,
94
+ font: RULER_FONT,
95
+ side: 'top',
96
+ fillStyle: RULER_COLOR,
97
+ strokeStyle: RULER_STROKE,
98
+ capturable: false
99
+ });
100
+ this.origin_rect = new Rect({
101
+ left: -HRULER_ORIGIN,
102
+ top: -VRULER_ORIGIN,
103
+ width: HRULER_ORIGIN,
104
+ height: VRULER_ORIGIN,
105
+ fillStyle: RULER_COLOR,
106
+ strokeStyle: RULER_STROKE,
107
+ lineWidth: 1
108
+ });
109
+ this.addComponent(this.hruler);
110
+ this.addComponent(this.vruler);
111
+ this.addComponent(this.origin_rect);
112
+ }
113
+ this.invalidate();
114
+ }
115
+ get capturable() {
116
+ return false;
117
+ }
118
+ ready() {
119
+ super.ready();
120
+ if (!this.hruler) {
121
+ this.screen_coord = calcBounds(this);
122
+ return;
123
+ }
124
+ var rootModel = this.rootModel;
125
+ var translate = Object.assign({}, rootModel.get('translate'));
126
+ if (translate.x < HRULER_LEFT)
127
+ translate.x += HRULER_LEFT;
128
+ if (translate.y < VRULER_TOP)
129
+ translate.y += VRULER_TOP;
130
+ /* set scale */
131
+ var scale = rootModel.get('scale') || { x: 1, y: 1 };
132
+ this.appScale = scale;
133
+ this.hruler.set('scale', scale.x);
134
+ this.vruler.set('scale', scale.y);
135
+ /* set translate */
136
+ rootModel.set('translate', translate);
137
+ this.set('translate', translate);
138
+ this.screen_coord = calcBounds(this);
139
+ var { width, height } = this.screen_coord;
140
+ this.hruler.set(calcHRulerCoord(translate, width, height, this.hruler));
141
+ this.vruler.set(calcVRulerCoord(translate, width, height, this.vruler));
142
+ this.origin_rect.set(calcOriginRectCoord(translate, width, height));
143
+ }
144
+ resize() {
145
+ super.resize();
146
+ this.screen_coord = calcBounds(this);
147
+ var { width, height } = this.screen_coord;
148
+ if (this.hruler) {
149
+ /* 레이어의 디멘션이 변경될 때, Ruler의 초기 width 값을 설정한다. */
150
+ this.hruler.set(calcHRulerCoord(this.model.translate, width, height, this.hruler));
151
+ this.vruler.set(calcVRulerCoord(this.model.translate, width, height, this.vruler));
152
+ this.origin_rect.set(calcOriginRectCoord(this.model.translate, width, height));
153
+ }
154
+ }
155
+ render(ctx) {
156
+ // 선 그리기.
157
+ if (!this.guide)
158
+ return;
159
+ ctx.save();
160
+ var { x, y } = this.guide;
161
+ var { top, left, width, height } = this.screen_coord;
162
+ ctx.beginPath();
163
+ ctx.moveTo(x, top);
164
+ ctx.lineTo(x, top + height);
165
+ ctx.moveTo(left, y);
166
+ ctx.lineTo(left + width, y);
167
+ ctx.lineWidth = 1;
168
+ ctx.strokeStyle = 'tomato';
169
+ ctx.setLineDash([2, 3]);
170
+ ctx.font = '10px tahoma';
171
+ ctx.fillStyle = '#333';
172
+ var screen_coord = this.transcoordS2C(x, y, this.rootModel);
173
+ ctx.textBaseline = screen_coord.y > 200 ? 'bottom' : 'top';
174
+ ctx.textAlign = screen_coord.x > 200 ? 'right' : 'left';
175
+ var yMargin = screen_coord.y > 200 ? -5 : 5;
176
+ var xMargin = screen_coord.x > 200 ? -5 : 5;
177
+ var scaled_x = Math.round(x / this.appScale.x);
178
+ var scaled_y = Math.round(y / this.appScale.y);
179
+ ctx.fillText(` ${scaled_x}, ${scaled_y} `, x + xMargin, y + yMargin);
180
+ ctx.stroke();
181
+ ctx.restore();
182
+ }
183
+ get guide() {
184
+ return this._guide;
185
+ }
186
+ set guide(guide) {
187
+ this._guide = guide;
188
+ this.invalidate();
189
+ }
190
+ contains(x, y) {
191
+ return true;
192
+ }
193
+ get eventMap() {
194
+ return {
195
+ '(root)': {
196
+ '(descendant)': {
197
+ mousemove: this.onmousemove_child,
198
+ mouseout: this.onmouseout_child,
199
+ /* CONFIRMME DragMove 이벤트 중에는 MouseMove 이벤트가 발생하지 않으므로 (현재까지는..), 아래 이벤트 핸들러를 추가해준다. */
200
+ dragmove: this.onmousemove_child
201
+ },
202
+ 'model-layer': {
203
+ change: this.onchange_root_model
204
+ }
205
+ },
206
+ '(self)': {
207
+ '(descendant)': {
208
+ mousedown: this.onmousedown_origin
209
+ }
210
+ }
211
+ };
212
+ }
213
+ onmousedown_origin(e, hint) {
214
+ // 모델레이어의 원점을 움직인다.
215
+ this.rootModel.set('translate', {
216
+ x: HRULER_ORIGIN,
217
+ y: VRULER_ORIGIN
218
+ });
219
+ }
220
+ onchange_root_model(after, before, desc) {
221
+ if (after.scale) {
222
+ this.appScale = after.scale;
223
+ if (this.hruler) {
224
+ this.hruler.set('scale', after.scale.x);
225
+ this.vruler.set('scale', after.scale.y);
226
+ }
227
+ }
228
+ if (after.translate) {
229
+ this.set({
230
+ translate: {
231
+ x: after.translate.x,
232
+ y: after.translate.y
233
+ }
234
+ });
235
+ }
236
+ if (after.scale || after.translate) {
237
+ this.screen_coord = calcBounds(this);
238
+ if (this.hruler) {
239
+ var { translate } = this.model;
240
+ var { width, height } = this.screen_coord;
241
+ this.hruler.set(calcHRulerCoord(translate, width, height, this.hruler));
242
+ this.vruler.set(calcVRulerCoord(translate, width, height, this.vruler));
243
+ this.origin_rect.set(calcOriginRectCoord(translate, width, height));
244
+ }
245
+ this._guide = null;
246
+ }
247
+ this.invalidate();
248
+ }
249
+ onmouseout_child(e) {
250
+ this._guide = null;
251
+ this.invalidate();
252
+ }
253
+ onmousemove_child(e, hint) {
254
+ if (e.target && e.target.tagName !== 'CANVAS')
255
+ this.guide = null;
256
+ else
257
+ this.guide = this.transcoordC2S(e.offsetX, e.offsetY);
258
+ }
259
+ }
260
+ Component.register('guide-layer', GuideLayer);
261
+ //# sourceMappingURL=guide-layer.js.map