@hatiolab/things-scene 3.4.39 → 3.4.41

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 (338) hide show
  1. package/db.sqlite +0 -0
  2. package/package.json +1 -1
  3. package/schema.graphql +3966 -0
  4. package/things-scene-ie.js +1 -1
  5. package/things-scene-min.js +1 -1
  6. package/things-scene.mjs +2 -2
  7. package/dist/animation/animate.d.ts +0 -4
  8. package/dist/animation/animations/animation.d.ts +0 -14
  9. package/dist/animation/animations/fade.d.ts +0 -4
  10. package/dist/animation/animations/heartbeat.d.ts +0 -4
  11. package/dist/animation/animations/moving.d.ts +0 -4
  12. package/dist/animation/animations/outline.d.ts +0 -10
  13. package/dist/animation/animations/rotation.d.ts +0 -4
  14. package/dist/animation/animations/vibration.d.ts +0 -4
  15. package/dist/animation/compile.d.ts +0 -1
  16. package/dist/animation/delta.d.ts +0 -19
  17. package/dist/animation/index.d.ts +0 -1
  18. package/dist/command/command-change.d.ts +0 -7
  19. package/dist/command/command-migrate.d.ts +0 -4
  20. package/dist/command/command-migrate.js +0 -85
  21. package/dist/command/command-migrate.js.map +0 -1
  22. package/dist/command/command.d.ts +0 -5
  23. package/dist/command/snapshot-commander.d.ts +0 -15
  24. package/dist/components/anchor/anchor.d.ts +0 -128
  25. package/dist/components/anchor/ellipse-anchors.d.ts +0 -2
  26. package/dist/components/anchor/ellipse-anchors.js +0 -38
  27. package/dist/components/anchor/ellipse-anchors.js.map +0 -1
  28. package/dist/components/anchor/rect-anchors.d.ts +0 -10
  29. package/dist/components/audio.d.ts +0 -25
  30. package/dist/components/audio.js +0 -141
  31. package/dist/components/audio.js.map +0 -1
  32. package/dist/components/cloud.d.ts +0 -13
  33. package/dist/components/cloud.js +0 -31
  34. package/dist/components/cloud.js.map +0 -1
  35. package/dist/components/component.d.ts +0 -227
  36. package/dist/components/component.js +0 -912
  37. package/dist/components/component.js.map +0 -1
  38. package/dist/components/container-abstract.d.ts +0 -51
  39. package/dist/components/container-abstract.js +0 -372
  40. package/dist/components/container-abstract.js.map +0 -1
  41. package/dist/components/container.d.ts +0 -38
  42. package/dist/components/container.js +0 -75
  43. package/dist/components/container.js.map +0 -1
  44. package/dist/components/data/data-mapping.d.ts +0 -16
  45. package/dist/components/data/data.d.ts +0 -8
  46. package/dist/components/data/evaluator.d.ts +0 -1
  47. package/dist/components/donut.d.ts +0 -15
  48. package/dist/components/donut.js +0 -74
  49. package/dist/components/donut.js.map +0 -1
  50. package/dist/components/drawer/draw-image-pendable.d.ts +0 -1
  51. package/dist/components/drawer/effect.d.ts +0 -1
  52. package/dist/components/drawer/fill.d.ts +0 -14
  53. package/dist/components/drawer/format.d.ts +0 -1
  54. package/dist/components/drawer/line.d.ts +0 -3
  55. package/dist/components/drawer/stroke.d.ts +0 -1
  56. package/dist/components/drawer/text-wrapper.d.ts +0 -10
  57. package/dist/components/drawer/text.d.ts +0 -3
  58. package/dist/components/ellipse.d.ts +0 -35
  59. package/dist/components/ellipse.js +0 -99
  60. package/dist/components/ellipse.js.map +0 -1
  61. package/dist/components/file/ondropfile.d.ts +0 -1
  62. package/dist/components/fit/fit.d.ts +0 -15
  63. package/dist/components/geometry/transcoord.d.ts +0 -41
  64. package/dist/components/geometry/union.d.ts +0 -6
  65. package/dist/components/gif-view.d.ts +0 -18
  66. package/dist/components/gif-view.js +0 -116
  67. package/dist/components/gif-view.js.map +0 -1
  68. package/dist/components/global-ref.d.ts +0 -36
  69. package/dist/components/global-ref.js +0 -128
  70. package/dist/components/global-ref.js.map +0 -1
  71. package/dist/components/group.d.ts +0 -15
  72. package/dist/components/group.js +0 -145
  73. package/dist/components/group.js.map +0 -1
  74. package/dist/components/html/elements.d.ts +0 -2
  75. package/dist/components/html/fill.d.ts +0 -1
  76. package/dist/components/html/reposition.d.ts +0 -1
  77. package/dist/components/html/shadow.d.ts +0 -1
  78. package/dist/components/html-overlay-container.d.ts +0 -27
  79. package/dist/components/html-overlay-container.js +0 -14
  80. package/dist/components/html-overlay-container.js.map +0 -1
  81. package/dist/components/html-overlay-element.d.ts +0 -25
  82. package/dist/components/html-overlay-element.js +0 -9
  83. package/dist/components/html-overlay-element.js.map +0 -1
  84. package/dist/components/image-view.d.ts +0 -19
  85. package/dist/components/image-view.js +0 -180
  86. package/dist/components/image-view.js.map +0 -1
  87. package/dist/components/index.d.ts +0 -32
  88. package/dist/components/index.js +0 -39
  89. package/dist/components/index.js.map +0 -1
  90. package/dist/components/info-window.d.ts +0 -41
  91. package/dist/components/info-window.js +0 -425
  92. package/dist/components/info-window.js.map +0 -1
  93. package/dist/components/line.d.ts +0 -91
  94. package/dist/components/line.js +0 -303
  95. package/dist/components/line.js.map +0 -1
  96. package/dist/components/local-ref.d.ts +0 -47
  97. package/dist/components/local-ref.js +0 -103
  98. package/dist/components/local-ref.js.map +0 -1
  99. package/dist/components/mixins/connectable.d.ts +0 -45
  100. package/dist/components/mixins/data-source.d.ts +0 -9
  101. package/dist/components/mixins/html-element.d.ts +0 -24
  102. package/dist/components/mixins/move-handle.d.ts +0 -11
  103. package/dist/components/mixins/rect-path.d.ts +0 -13
  104. package/dist/components/mixins/value-holder.d.ts +0 -18
  105. package/dist/components/mutater/bounds.d.ts +0 -10
  106. package/dist/components/mutater/path.d.ts +0 -5
  107. package/dist/components/ortholine.d.ts +0 -21
  108. package/dist/components/ortholine.js +0 -814
  109. package/dist/components/ortholine.js.map +0 -1
  110. package/dist/components/outline/ellipse-outline.d.ts +0 -4
  111. package/dist/components/outline/ellipse-outline.js +0 -11
  112. package/dist/components/outline/ellipse-outline.js.map +0 -1
  113. package/dist/components/outline/path-outline.d.ts +0 -1
  114. package/dist/components/path.d.ts +0 -5
  115. package/dist/components/path.js +0 -40
  116. package/dist/components/path.js.map +0 -1
  117. package/dist/components/polygon.d.ts +0 -40
  118. package/dist/components/polygon.js +0 -157
  119. package/dist/components/polygon.js.map +0 -1
  120. package/dist/components/polyline.d.ts +0 -18
  121. package/dist/components/polyline.js +0 -102
  122. package/dist/components/polyline.js.map +0 -1
  123. package/dist/components/popup.d.ts +0 -48
  124. package/dist/components/popup.js +0 -138
  125. package/dist/components/popup.js.map +0 -1
  126. package/dist/components/rect.d.ts +0 -26
  127. package/dist/components/rect.js +0 -91
  128. package/dist/components/rect.js.map +0 -1
  129. package/dist/components/retention/retention-manager.d.ts +0 -8
  130. package/dist/components/root-container.d.ts +0 -90
  131. package/dist/components/root-container.js +0 -478
  132. package/dist/components/root-container.js.map +0 -1
  133. package/dist/components/ruler.d.ts +0 -16
  134. package/dist/components/ruler.js +0 -77
  135. package/dist/components/ruler.js.map +0 -1
  136. package/dist/components/shape.d.ts +0 -25
  137. package/dist/components/shape.js +0 -80
  138. package/dist/components/shape.js.map +0 -1
  139. package/dist/components/star.d.ts +0 -13
  140. package/dist/components/star.js +0 -80
  141. package/dist/components/star.js.map +0 -1
  142. package/dist/components/text/substitutor.d.ts +0 -3
  143. package/dist/components/text.d.ts +0 -8
  144. package/dist/components/text.js +0 -15
  145. package/dist/components/text.js.map +0 -1
  146. package/dist/components/three-container.d.ts +0 -60
  147. package/dist/components/three-container.js +0 -515
  148. package/dist/components/three-container.js.map +0 -1
  149. package/dist/components/triangle.d.ts +0 -15
  150. package/dist/components/triangle.js +0 -76
  151. package/dist/components/triangle.js.map +0 -1
  152. package/dist/const.d.ts +0 -39
  153. package/dist/core/collection.d.ts +0 -8
  154. package/dist/core/debug.d.ts +0 -1
  155. package/dist/core/deep-equals.d.ts +0 -1
  156. package/dist/core/dom-to-image.d.ts +0 -127
  157. package/dist/core/event.d.ts +0 -92
  158. package/dist/core/index.d.ts +0 -2
  159. package/dist/core/list.d.ts +0 -32
  160. package/dist/core/logger.d.ts +0 -3
  161. package/dist/core/memoize.d.ts +0 -6
  162. package/dist/core/mixin.d.ts +0 -1
  163. package/dist/core/obj-accessor.d.ts +0 -1
  164. package/dist/core/reference-map.d.ts +0 -14
  165. package/dist/core/round-rect.d.ts +0 -19
  166. package/dist/core/script-loader.d.ts +0 -3
  167. package/dist/core/snapshot-taker.d.ts +0 -12
  168. package/dist/core/stack.d.ts +0 -2
  169. package/dist/core/timecapsule.d.ts +0 -18
  170. package/dist/core/utils.d.ts +0 -9
  171. package/dist/decorator/anchors-decorator.d.ts +0 -31
  172. package/dist/decorator/data-spread-decorator.d.ts +0 -1
  173. package/dist/decorator/decotag-decorator.d.ts +0 -1
  174. package/dist/decorator/index.d.ts +0 -2
  175. package/dist/decorator/link-decorator.d.ts +0 -1
  176. package/dist/effect/gradation.d.ts +0 -1
  177. package/dist/effect/index.d.ts +0 -1
  178. package/dist/effect/shadow.d.ts +0 -2
  179. package/dist/effect/turn.d.ts +0 -1
  180. package/dist/event/event-engine.d.ts +0 -12
  181. package/dist/event/event-pump.d.ts +0 -11
  182. package/dist/event/event-tracker.d.ts +0 -21
  183. package/dist/event/index.d.ts +0 -2
  184. package/dist/event/ua-event-handler.d.ts +0 -32
  185. package/dist/event-map/event-map.d.ts +0 -9
  186. package/dist/event-map/index.d.ts +0 -1
  187. package/dist/event-map/move-handler.d.ts +0 -1
  188. package/dist/event-map/text-editor-lite.d.ts +0 -1
  189. package/dist/index.d.ts +0 -1
  190. package/dist/index.js +0 -3
  191. package/dist/index.js.map +0 -1
  192. package/dist/layer/action/emphasize.d.ts +0 -2
  193. package/dist/layer/action/popup.d.ts +0 -5
  194. package/dist/layer/action/pressed.d.ts +0 -2
  195. package/dist/layer/add-layer.d.ts +0 -42
  196. package/dist/layer/add-layer.js +0 -142
  197. package/dist/layer/add-layer.js.map +0 -1
  198. package/dist/layer/decotag-layer.d.ts +0 -27
  199. package/dist/layer/decotag-layer.js +0 -105
  200. package/dist/layer/decotag-layer.js.map +0 -1
  201. package/dist/layer/guide-layer.d.ts +0 -44
  202. package/dist/layer/guide-layer.js +0 -261
  203. package/dist/layer/guide-layer.js.map +0 -1
  204. package/dist/layer/index.d.ts +0 -7
  205. package/dist/layer/index.js +0 -11
  206. package/dist/layer/index.js.map +0 -1
  207. package/dist/layer/layer.d.ts +0 -32
  208. package/dist/layer/layer.js +0 -155
  209. package/dist/layer/layer.js.map +0 -1
  210. package/dist/layer/model-layer.d.ts +0 -46
  211. package/dist/layer/model-layer.js +0 -402
  212. package/dist/layer/model-layer.js.map +0 -1
  213. package/dist/layer/modeler/anchor-handler.d.ts +0 -36
  214. package/dist/layer/modeler/control-handler.d.ts +0 -18
  215. package/dist/layer/modeler/focus-outline.d.ts +0 -5
  216. package/dist/layer/modeler/group-outline.d.ts +0 -5
  217. package/dist/layer/modeler/index.d.ts +0 -7
  218. package/dist/layer/modeler/path-handler.d.ts +0 -22
  219. package/dist/layer/modeler/resizer.d.ts +0 -13
  220. package/dist/layer/modeler/rotator.d.ts +0 -15
  221. package/dist/layer/modeler/rotator.js +0 -120
  222. package/dist/layer/modeler/rotator.js.map +0 -1
  223. package/dist/layer/modeling-layer.d.ts +0 -66
  224. package/dist/layer/modeling-layer.js +0 -451
  225. package/dist/layer/modeling-layer.js.map +0 -1
  226. package/dist/layer/selection/selected-finder.d.ts +0 -1
  227. package/dist/layer/selection-layer.d.ts +0 -42
  228. package/dist/layer/selection-layer.js +0 -307
  229. package/dist/layer/selection-layer.js.map +0 -1
  230. package/dist/layer/shift-layer.d.ts +0 -18
  231. package/dist/layer/shift-layer.js +0 -61
  232. package/dist/layer/shift-layer.js.map +0 -1
  233. package/dist/layout/absolute.d.ts +0 -8
  234. package/dist/layout/card.d.ts +0 -7
  235. package/dist/layout/html-absolute.d.ts +0 -8
  236. package/dist/layout/index.d.ts +0 -8
  237. package/dist/layout/index.js +0 -12
  238. package/dist/layout/index.js.map +0 -1
  239. package/dist/layout/layout.d.ts +0 -11
  240. package/dist/layout/linear-horizontal.d.ts +0 -7
  241. package/dist/layout/linear-vertical.d.ts +0 -7
  242. package/dist/layout/table.d.ts +0 -9
  243. package/dist/layout/three.d.ts +0 -8
  244. package/dist/layout/three.js +0 -20
  245. package/dist/layout/three.js.map +0 -1
  246. package/dist/license/license.d.ts +0 -18
  247. package/dist/model/compile.d.ts +0 -1
  248. package/dist/model/compile.js +0 -28
  249. package/dist/model/compile.js.map +0 -1
  250. package/dist/model/duplicate.d.ts +0 -1
  251. package/dist/model/index.d.ts +0 -3
  252. package/dist/model/selector.d.ts +0 -2
  253. package/dist/style/compile.d.ts +0 -1
  254. package/dist/style/index.d.ts +0 -1
  255. package/dist/things-scene/api/add-start.d.ts +0 -1
  256. package/dist/things-scene/api/add.d.ts +0 -5
  257. package/dist/things-scene/api/align.d.ts +0 -1
  258. package/dist/things-scene/api/change.d.ts +0 -2
  259. package/dist/things-scene/api/clipboard.d.ts +0 -3
  260. package/dist/things-scene/api/distribute.d.ts +0 -1
  261. package/dist/things-scene/api/duplicate.d.ts +0 -4
  262. package/dist/things-scene/api/fullscreen.d.ts +0 -1
  263. package/dist/things-scene/api/group.d.ts +0 -8
  264. package/dist/things-scene/api/group.js +0 -78
  265. package/dist/things-scene/api/group.js.map +0 -1
  266. package/dist/things-scene/api/ids.d.ts +0 -4
  267. package/dist/things-scene/api/index.d.ts +0 -15
  268. package/dist/things-scene/api/listener.d.ts +0 -3
  269. package/dist/things-scene/api/remove.d.ts +0 -4
  270. package/dist/things-scene/api/symmetry.d.ts +0 -2
  271. package/dist/things-scene/api/symmetry.js +0 -39
  272. package/dist/things-scene/api/symmetry.js.map +0 -1
  273. package/dist/things-scene/api/to-data-url.d.ts +0 -1
  274. package/dist/things-scene/api/to-data-url.js +0 -69
  275. package/dist/things-scene/api/to-data-url.js.map +0 -1
  276. package/dist/things-scene/api/zorder.d.ts +0 -2
  277. package/dist/things-scene/application-context.d.ts +0 -40
  278. package/dist/things-scene/config.d.ts +0 -4
  279. package/dist/things-scene/create.d.ts +0 -20
  280. package/dist/things-scene/fps.d.ts +0 -1
  281. package/dist/things-scene/index.d.ts +0 -17
  282. package/dist/things-scene/index.js +0 -23
  283. package/dist/things-scene/index.js.map +0 -1
  284. package/dist/things-scene/polyfill.d.ts +0 -2
  285. package/dist/things-scene/scene.d.ts +0 -155
  286. package/dist/things-scene/version.d.ts +0 -2
  287. package/dist/threed/common.d.ts +0 -22
  288. package/dist/threed/control/three-controls.d.ts +0 -11
  289. package/dist/threed/control/three-controls.js +0 -620
  290. package/dist/threed/control/three-controls.js.map +0 -1
  291. package/dist/threed/html/elements.d.ts +0 -2
  292. package/dist/threed/real-object-camera-meshed.d.ts +0 -12
  293. package/dist/threed/real-object-camera-meshed.js +0 -49
  294. package/dist/threed/real-object-camera-meshed.js.map +0 -1
  295. package/dist/threed/real-object-camera.d.ts +0 -9
  296. package/dist/threed/real-object-camera.js +0 -31
  297. package/dist/threed/real-object-camera.js.map +0 -1
  298. package/dist/threed/real-object-dom-element.d.ts +0 -20
  299. package/dist/threed/real-object-dom-element.js +0 -78
  300. package/dist/threed/real-object-dom-element.js.map +0 -1
  301. package/dist/threed/real-object-dummy.d.ts +0 -6
  302. package/dist/threed/real-object-dummy.js +0 -11
  303. package/dist/threed/real-object-dummy.js.map +0 -1
  304. package/dist/threed/real-object-extrude.d.ts +0 -19
  305. package/dist/threed/real-object-extrude.js +0 -171
  306. package/dist/threed/real-object-extrude.js.map +0 -1
  307. package/dist/threed/real-object-gltf.d.ts +0 -15
  308. package/dist/threed/real-object-gltf.js +0 -97
  309. package/dist/threed/real-object-gltf.js.map +0 -1
  310. package/dist/threed/real-object-group.d.ts +0 -5
  311. package/dist/threed/real-object-group.js +0 -11
  312. package/dist/threed/real-object-group.js.map +0 -1
  313. package/dist/threed/real-object-mesh.d.ts +0 -11
  314. package/dist/threed/real-object-mesh.js +0 -55
  315. package/dist/threed/real-object-mesh.js.map +0 -1
  316. package/dist/threed/real-object-plane.d.ts +0 -6
  317. package/dist/threed/real-object-plane.js +0 -23
  318. package/dist/threed/real-object-plane.js.map +0 -1
  319. package/dist/threed/real-object-scene.d.ts +0 -21
  320. package/dist/threed/real-object-scene.js +0 -89
  321. package/dist/threed/real-object-scene.js.map +0 -1
  322. package/dist/threed/real-object-sprite.d.ts +0 -12
  323. package/dist/threed/real-object-sprite.js +0 -35
  324. package/dist/threed/real-object-sprite.js.map +0 -1
  325. package/dist/threed/real-object-text.d.ts +0 -16
  326. package/dist/threed/real-object-text.js +0 -70
  327. package/dist/threed/real-object-text.js.map +0 -1
  328. package/dist/threed/real-object.d.ts +0 -48
  329. package/dist/threed/real-object.js +0 -199
  330. package/dist/threed/real-object.js.map +0 -1
  331. package/dist/threed/texture/text-texture.d.ts +0 -8
  332. package/dist/threed/three-dimensional-container.d.ts +0 -7
  333. package/dist/threed/three-dimensional-container.js +0 -2
  334. package/dist/threed/three-dimensional-container.js.map +0 -1
  335. package/dist/threed/utils/bound-uv-generator.d.ts +0 -16
  336. package/dist/types.d.ts +0 -53
  337. package/dist/types.js +0 -368
  338. package/dist/types.js.map +0 -1
@@ -1,478 +0,0 @@
1
- /*
2
- * Copyright © HatioLab Inc. All rights reserved.
3
- */
4
- import { error, warn } from '../core/logger';
5
- import * as Utils from '../core/utils';
6
- import * as Event from '../event';
7
- import * as EventMap from '../event-map';
8
- import ScenePopup from '../layer/action/popup';
9
- import compile from '../model/compile';
10
- import * as Style from '../style';
11
- import Component from './component';
12
- import ContainerAbstract from './container-abstract';
13
- import fit from './fit/fit';
14
- var roots = [];
15
- if (typeof window !== 'undefined') {
16
- window.addEventListener('resize', () => {
17
- roots.forEach(p => {
18
- p.resize();
19
- });
20
- });
21
- }
22
- /*
23
- * RootContainer
24
- *
25
- * 모든 컴포넌트의 최상위 컨테이너임
26
- *
27
- * - 루트 정보를 제공함. (get root, )
28
- * - 하위 레이어들을 관리함.
29
- * - 전체적인 이벤트 리스너를 관리함.
30
- * - 전체적인 스타일 정보를 관리함.
31
- */
32
- export default class RootContainer extends ContainerAbstract {
33
- constructor(model, context) {
34
- super(Object.assign({
35
- type: 'root',
36
- scale: {
37
- x: 1,
38
- y: 1
39
- }
40
- }, model || {}), context);
41
- this._maxRefid = 0;
42
- model = model || {};
43
- this.fitMode = model.model && model.model.fitMode;
44
- this._app = context;
45
- /* keep container element */
46
- this.target_element = model.target_element;
47
- /* content model을 만든다. */
48
- this.rebuildContentModel(this.model.model);
49
- /* 프로세스내의 전체 루트 컨테이너 리스트에 자신을 추가한다. */
50
- roots.push(this);
51
- }
52
- dispose() {
53
- ScenePopup.hideAll(this);
54
- this._app && this._app.dispose();
55
- super.dispose();
56
- this._disposeAllResources();
57
- this.target_element = null;
58
- delete this._refresh_mapping_debouncer;
59
- var index = roots.indexOf(this);
60
- if (index >= 0)
61
- roots.splice(index, 1);
62
- this.refidIndexMap.clear();
63
- this._maxRefid = 0;
64
- }
65
- isRoot() {
66
- return true;
67
- }
68
- /* Application Context */
69
- get app() {
70
- return this._app;
71
- }
72
- get target_element() {
73
- return this._target_element;
74
- }
75
- set target_element(target) {
76
- if (this._ua_event_handler) {
77
- this._ua_event_handler.dispose();
78
- delete this._ua_event_handler;
79
- }
80
- if (target) {
81
- target.style.position = 'absolute';
82
- target.style.cursor = 'default';
83
- target.style.overflow = 'hidden';
84
- this._ua_event_handler = new Event.UAEventHandler(this, target);
85
- }
86
- this.forEach(layer => (layer.target = target));
87
- this._target_element = target;
88
- }
89
- /**
90
- * Scene 모델의 단위(unit)을 감안한 기본 Scale 값을 제공한다.
91
- * 통산 'mm', 'cm' 단위의 Scene은 각 값에 10배를 곱한 수치로 모델링된다.(값을 10으로 나눈값이 실제 단위와 일치한다.)
92
- * unitScale의 의미는 scene에 unitScale값으로 scale하면, 각 단위값이 화면과 일치한다는 의미이다.
93
- *
94
- * 모델링의 수치단위가 픽셀이 아니고, mm, cm, inch 등의 단위인 경우에,
95
- * 화면에서의 크기가 실물과 유사하게 보이는 수준의 기본 스케일을 제공하는 기능이다.
96
- * 이 값은 내부적으로는, Ruler에서 눈금을 실제 자의 눈금과 일치시키기 위해서 사용한다.
97
- */
98
- get unitScale() {
99
- switch (this.model_layer && this.model_layer.get('unit')) {
100
- case 'mm':
101
- case 'cm':
102
- case 'in':
103
- return this.app.PPM / 10;
104
- case 'px':
105
- default:
106
- return 1;
107
- }
108
- }
109
- addTemplate(prefix, component) {
110
- var old = this.templateMap[prefix];
111
- if (old)
112
- error('Template replaced (duplicated)', prefix, component, old);
113
- this.templateMap[prefix] = component;
114
- delete this.templatePrefixes;
115
- }
116
- removeTemplate(prefix, component) {
117
- var old = this.templateMap[prefix];
118
- if (old !== component)
119
- warn('Removing template failed (different)', prefix, component, old);
120
- else
121
- delete this.templateMap[prefix];
122
- delete this.templatePrefixes;
123
- }
124
- findTemplateFor(id) {
125
- if (!this.templatePrefixes)
126
- this.templatePrefixes = Object.keys(this.templateMap).sort().reverse();
127
- var prefix = this.templatePrefixes.find(prefix => {
128
- return id.startsWith(prefix);
129
- });
130
- if (prefix)
131
- return this.templateMap[prefix];
132
- }
133
- addIndex(id, component) {
134
- var old = this.indexMap[id];
135
- if (old)
136
- error('Index replaced (duplicated)', id, component, old);
137
- this.indexMap[id] = component;
138
- }
139
- removeIndex(id, component) {
140
- var old = this.indexMap[id];
141
- if (old !== component)
142
- warn('Removing index failed (different)', id, component, old);
143
- else
144
- delete this.indexMap[id];
145
- }
146
- addRefidIndex(refid, component) {
147
- if (refid === undefined) {
148
- refid = this.getNewRefid();
149
- component.set('refid', refid);
150
- }
151
- this._maxRefid = Math.max(refid, this._maxRefid);
152
- var old = this.refidIndexMap.get(refid);
153
- if (old) {
154
- error('Refid Index replaced (has not to be)', refid, component, old);
155
- }
156
- this.refidIndexMap.set(refid, component);
157
- }
158
- removeRefidIndex(refid, component) {
159
- if (refid == null) {
160
- return;
161
- }
162
- var old = this.refidIndexMap.get(refid);
163
- if (old !== component) {
164
- error('Refid Removing index failed (has not to be)', refid, component, old);
165
- }
166
- else {
167
- this.refidIndexMap.delete(refid);
168
- }
169
- }
170
- getNewRefid() {
171
- this._maxRefid = (this._maxRefid || 0) + 1;
172
- return this._maxRefid;
173
- }
174
- async subscribe(tag, component) {
175
- if (this._app.isViewMode && tag && this._app) {
176
- component._subscription = await this._app.subscribe(tag, component);
177
- }
178
- }
179
- async unsubscribe(tag, component) {
180
- if (component._subscription) {
181
- await component._subscription.unsubscribe();
182
- delete component._subscription;
183
- }
184
- }
185
- findById(id) {
186
- return this.indexMap[id.replace(/^#/, '')];
187
- }
188
- findByRefid(refid) {
189
- return this.refidIndexMap.get(refid);
190
- }
191
- findOrCreate(id) {
192
- var component = this.indexMap[id];
193
- if (!component) {
194
- let template = this.findTemplateFor(id);
195
- if (template) {
196
- let clone = Object.assign(Utils.clone(template.hierarchy), {
197
- id: id,
198
- templatePrefix: ''
199
- });
200
- component = compile(clone, this.app);
201
- this.model_layer.addComponent(component);
202
- }
203
- }
204
- return component;
205
- }
206
- resize() {
207
- this.components.forEach(c => {
208
- if (c.resize)
209
- c.resize();
210
- });
211
- this.invalidate();
212
- }
213
- _disposeAllResources() {
214
- this.selected = [];
215
- this._focused = null;
216
- this._ready = false;
217
- /*
218
- * 리빌드를 위해서 초기화한다.
219
- */
220
- if (this.eventEngine) {
221
- this.assist_handlers &&
222
- this.assist_handlers.forEach(listener => {
223
- this.eventEngine.remove(listener);
224
- });
225
- this.eventEngine.dispose();
226
- delete this.eventEngine;
227
- }
228
- /* layer 정보에 맞춰서 layer 객체들을 소멸시킨다. */
229
- this.assist_layers &&
230
- this.assist_layers.forEach(layer => {
231
- layer.dispose();
232
- this.removeComponent(layer);
233
- });
234
- delete this.assist_layers;
235
- /*
236
- * 컨텐츠 모델 레이어를 새로 구축한다
237
- */
238
- this.model_layer && this.model_layer.dispose();
239
- this.model_layer && this.removeComponent(this.model_layer);
240
- delete this.model_layer;
241
- // indexMap을 초기화한다.
242
- this.indexMap = {};
243
- this.refidIndexMap = new Map();
244
- this.templateMap = {};
245
- }
246
- rebuildContentModel(contentModel) {
247
- this._disposeAllResources();
248
- this.eventEngine = new Event.Engine(this);
249
- /*
250
- * 컨텐츠 모델 레이어를 새로 구축한다
251
- */
252
- contentModel = contentModel || {};
253
- contentModel.type = 'model-layer';
254
- this.model_layer = compile(contentModel, this.app);
255
- this.addComponent(this.model_layer);
256
- // target Element 아래에 기본 레이어를 만든다.
257
- // 기본 레이어는 모델을 표현할 바탕 canvas 로 만들어진다.
258
- this.model_layer.target = this.target_element;
259
- /* layer 정보에 맞춰서 assist layer 객체들을 생성한다. */
260
- this.assist_layers = (this.model.layers || []).map(layer => {
261
- var compiled = compile(layer, this.app);
262
- this.addComponent(compiled);
263
- compiled.target = this.target_element;
264
- return compiled;
265
- });
266
- /* Event Handler Map을 추가한다. */
267
- this.assist_handlers = (this.model.handlers || []).map(eventMapName => {
268
- /* Listener로 임의의 오브젝트를 만들어서 제공한다. */
269
- var handler = {};
270
- this.eventEngine.add(handler, EventMap.EventMap.get(eventMapName));
271
- return handler;
272
- });
273
- this._ready = true;
274
- this.traverse(component => component.ready());
275
- }
276
- get root() {
277
- return this;
278
- }
279
- get anchors() {
280
- return;
281
- }
282
- /**
283
- * 모델들이 다 생성되고 준비되었는지를 알려준다.
284
- */
285
- get isReady() {
286
- return this._ready;
287
- }
288
- get rootModel() {
289
- return this.model_layer;
290
- }
291
- get stuck() {
292
- return true;
293
- }
294
- get data() {
295
- return Object.values(this.indexMap).reduce((result, component) => {
296
- let model = component.model;
297
- result[model.id] = component.data;
298
- return result;
299
- }, {});
300
- }
301
- set data(data) {
302
- for (var key in data) {
303
- var component = this.findOrCreate(key);
304
- if (!component)
305
- continue;
306
- component.data = data[key];
307
- }
308
- }
309
- get dataByRefid() {
310
- var data = {};
311
- for (let [refid, component] of this.refidIndexMap.entries()) {
312
- data[refid] = component.data;
313
- }
314
- return data;
315
- }
316
- set dataByRefid(data) {
317
- for (var ref in data) {
318
- var component = this.findByRefid(Number(ref));
319
- if (!component)
320
- continue;
321
- component.data = data[ref];
322
- }
323
- }
324
- get values() {
325
- return Object.values(this.indexMap).reduce((result, component) => {
326
- let model = component.model;
327
- result[model.id] = component.value;
328
- return result;
329
- }, {});
330
- }
331
- set values(value) {
332
- for (var key in value) {
333
- var component = this.findOrCreate(key);
334
- if (!component)
335
- continue;
336
- component.value = value[key];
337
- }
338
- }
339
- get valuesByRefid() {
340
- var value = {};
341
- for (let [refid, component] of this.refidIndexMap.entries()) {
342
- value[refid] = component.value;
343
- }
344
- return value;
345
- }
346
- set valuesByRefid(value) {
347
- for (var ref in value) {
348
- var component = this.findByRefid(Number(ref));
349
- if (!component)
350
- continue;
351
- component.value = value[ref];
352
- }
353
- }
354
- get selected() {
355
- return (this._selected || []).filter(component => component.parent);
356
- }
357
- set selected(after) {
358
- var before = this._selected;
359
- this._selected = after;
360
- this.trigger('selected', after, before);
361
- }
362
- get focused() {
363
- return this._focused;
364
- }
365
- set focused(container) {
366
- if (this._focused === container)
367
- return;
368
- this._focused = container;
369
- this.invalidate();
370
- }
371
- get style() {
372
- return this._style;
373
- }
374
- set style(style) {
375
- this._style = style;
376
- this._compiled_style = Style.compile(style);
377
- }
378
- get hasTextProperty() {
379
- return false;
380
- }
381
- render() {
382
- this.components.forEach(m => m.draw());
383
- }
384
- /* 최상위 객체는 항상 true를 리턴해야 한다. */
385
- contains(x, y) {
386
- return true;
387
- }
388
- /*
389
- * capturePath(path) 파라미터로 주어진 path를 포함하는 컨테이너를 찾는다.
390
- * @path
391
- * @excepts 컨테이너를 찾을 때 제외되는 대상이다.
392
- */
393
- capturePath(path, excepts) {
394
- return this.model_layer.capturePath(path, excepts);
395
- }
396
- invalidate() {
397
- this.components.forEach(m => m.invalidate());
398
- }
399
- get eventMap() {
400
- return {
401
- '(root)': {
402
- '(descendant)': {
403
- added: this.onadded,
404
- removed: this.onremoved,
405
- change: this.onchanged
406
- }
407
- }
408
- };
409
- }
410
- refreshMappings() {
411
- if (!this._refresh_mapping_debouncer) {
412
- if (this.disposed)
413
- return;
414
- this._refresh_mapping_debouncer = Utils.debounce(function mapper(comp) {
415
- comp.executeMappings();
416
- comp.components && comp.components.forEach(child => mapper(child));
417
- }, 1000);
418
- }
419
- this._refresh_mapping_debouncer(this.model_layer);
420
- }
421
- _addTraverse(component) {
422
- if (component.components)
423
- component.components.forEach(child => this._addTraverse(child));
424
- var { id, refid, tag, templatePrefix } = component.model;
425
- this.addRefidIndex(refid, component);
426
- if (id)
427
- this.addIndex(id, component);
428
- if (tag)
429
- this.subscribe(tag, component);
430
- if (templatePrefix)
431
- this.addTemplate(templatePrefix, component);
432
- var eventMap = Utils.merge({}, component.eventMap, component.model.eventMap);
433
- this.eventEngine.add(component, eventMap);
434
- }
435
- _removeTraverse(component) {
436
- if (component.components)
437
- component.components.forEach(child => this._removeTraverse(child));
438
- var { id, refid, tag, templatePrefix } = component.model;
439
- this.removeRefidIndex(refid, component);
440
- if (id)
441
- this.removeIndex(id, component);
442
- if (tag)
443
- this.unsubscribe(tag, component);
444
- if (templatePrefix)
445
- this.removeTemplate(templatePrefix, component);
446
- this.eventEngine.remove(component);
447
- }
448
- onadded(container, component) {
449
- this._addTraverse(component);
450
- this.refreshMappings();
451
- this.invalidate();
452
- }
453
- onremoved(container, component) {
454
- this._removeTraverse(component);
455
- this.invalidate();
456
- }
457
- onchanged(after, before, hint) {
458
- if (before.templatePrefix)
459
- this.removeTemplate(before.templatePrefix, hint.origin);
460
- if (after.templatePrefix)
461
- this.addTemplate(after.templatePrefix, hint.origin);
462
- if (before.id)
463
- this.removeIndex(before.id, hint.origin);
464
- if (after.id)
465
- this.addIndex(after.id, hint.origin);
466
- if (before.tag)
467
- this.unsubscribe(before.tag, hint.origin);
468
- if (after.tag)
469
- this.subscribe(after.tag, hint.origin);
470
- if (before.id != after.id || before.class != after.class)
471
- this.refreshMappings();
472
- }
473
- }
474
- Object.assign(RootContainer.prototype, {
475
- fit
476
- });
477
- Component.memoize(RootContainer.prototype, 'unitScale', false);
478
- //# sourceMappingURL=root-container.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"root-container.js","sourceRoot":"","sources":["../../src/components/root-container.js"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAA;AAC5C,OAAO,KAAK,KAAK,MAAM,eAAe,CAAA;AACtC,OAAO,KAAK,KAAK,MAAM,UAAU,CAAA;AACjC,OAAO,KAAK,QAAQ,MAAM,cAAc,CAAA;AACxC,OAAO,UAAU,MAAM,uBAAuB,CAAA;AAC9C,OAAO,OAAO,MAAM,kBAAkB,CAAA;AACtC,OAAO,KAAK,KAAK,MAAM,UAAU,CAAA;AACjC,OAAO,SAAS,MAAM,aAAa,CAAA;AACnC,OAAO,iBAAiB,MAAM,sBAAsB,CAAA;AACpD,OAAO,GAAG,MAAM,WAAW,CAAA;AAE3B,IAAI,KAAK,GAAG,EAAE,CAAA;AAEd,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;IACjC,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,GAAG,EAAE;QACrC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;YAChB,CAAC,CAAC,MAAM,EAAE,CAAA;QACZ,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;CACH;AAED;;;;;;;;;GASG;AACH,MAAM,CAAC,OAAO,OAAO,aAAc,SAAQ,iBAAiB;IAC1D,YAAY,KAAK,EAAE,OAAO;QACxB,KAAK,CACH,MAAM,CAAC,MAAM,CACX;YACE,IAAI,EAAE,MAAM;YACZ,KAAK,EAAE;gBACL,CAAC,EAAE,CAAC;gBACJ,CAAC,EAAE,CAAC;aACL;SACF,EACD,KAAK,IAAI,EAAE,CACZ,EACD,OAAO,CACR,CAAA;QAED,IAAI,CAAC,SAAS,GAAG,CAAC,CAAA;QAElB,KAAK,GAAG,KAAK,IAAI,EAAE,CAAA;QAEnB,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,CAAA;QAEjD,IAAI,CAAC,IAAI,GAAG,OAAO,CAAA;QAEnB,4BAA4B;QAC5B,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC,cAAc,CAAA;QAE1C,yBAAyB;QACzB,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;QAE1C,sCAAsC;QACtC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAClB,CAAC;IAED,OAAO;QACL,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;QAExB,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAA;QAEhC,KAAK,CAAC,OAAO,EAAE,CAAA;QAEf,IAAI,CAAC,oBAAoB,EAAE,CAAA;QAE3B,IAAI,CAAC,cAAc,GAAG,IAAI,CAAA;QAE1B,OAAO,IAAI,CAAC,0BAA0B,CAAA;QAEtC,IAAI,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;QAC/B,IAAI,KAAK,IAAI,CAAC;YAAE,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAA;QAEtC,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAA;QAC1B,IAAI,CAAC,SAAS,GAAG,CAAC,CAAA;IACpB,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,CAAA;IACb,CAAC;IAED,yBAAyB;IACzB,IAAI,GAAG;QACL,OAAO,IAAI,CAAC,IAAI,CAAA;IAClB,CAAC;IAED,IAAI,cAAc;QAChB,OAAO,IAAI,CAAC,eAAe,CAAA;IAC7B,CAAC;IAED,IAAI,cAAc,CAAC,MAAM;QACvB,IAAI,IAAI,CAAC,iBAAiB,EAAE;YAC1B,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,CAAA;YAChC,OAAO,IAAI,CAAC,iBAAiB,CAAA;SAC9B;QAED,IAAI,MAAM,EAAE;YACV,MAAM,CAAC,KAAK,CAAC,QAAQ,GAAG,UAAU,CAAA;YAClC,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,SAAS,CAAA;YAC/B,MAAM,CAAC,KAAK,CAAC,QAAQ,GAAG,QAAQ,CAAA;YAEhC,IAAI,CAAC,iBAAiB,GAAG,IAAI,KAAK,CAAC,cAAc,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;SAChE;QAED,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC,CAAA;QAE9C,IAAI,CAAC,eAAe,GAAG,MAAM,CAAA;IAC/B,CAAC;IAED;;;;;;;;OAQG;IACH,IAAI,SAAS;QACX,QAAQ,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;YACxD,KAAK,IAAI,CAAC;YACV,KAAK,IAAI,CAAC;YACV,KAAK,IAAI;gBACP,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,EAAE,CAAA;YAE1B,KAAK,IAAI,CAAC;YACV;gBACE,OAAO,CAAC,CAAA;SACX;IACH,CAAC;IAED,WAAW,CAAC,MAAM,EAAE,SAAS;QAC3B,IAAI,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAA;QAClC,IAAI,GAAG;YAAE,KAAK,CAAC,gCAAgC,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,CAAC,CAAA;QAExE,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,SAAS,CAAA;QACpC,OAAO,IAAI,CAAC,gBAAgB,CAAA;IAC9B,CAAC;IAED,cAAc,CAAC,MAAM,EAAE,SAAS;QAC9B,IAAI,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAA;QAElC,IAAI,GAAG,KAAK,SAAS;YAAE,IAAI,CAAC,sCAAsC,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,CAAC,CAAA;;YACtF,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAA;QAEpC,OAAO,IAAI,CAAC,gBAAgB,CAAA;IAC9B,CAAC;IAED,eAAe,CAAC,EAAE;QAChB,IAAI,CAAC,IAAI,CAAC,gBAAgB;YAAE,IAAI,CAAC,gBAAgB,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI,EAAE,CAAC,OAAO,EAAE,CAAA;QAElG,IAAI,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;YAC/C,OAAO,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAA;QAC9B,CAAC,CAAC,CAAA;QACF,IAAI,MAAM;YAAE,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAA;IAC7C,CAAC;IAED,QAAQ,CAAC,EAAE,EAAE,SAAS;QACpB,IAAI,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAA;QAC3B,IAAI,GAAG;YAAE,KAAK,CAAC,6BAA6B,EAAE,EAAE,EAAE,SAAS,EAAE,GAAG,CAAC,CAAA;QAEjE,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,SAAS,CAAA;IAC/B,CAAC;IAED,WAAW,CAAC,EAAE,EAAE,SAAS;QACvB,IAAI,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAA;QAE3B,IAAI,GAAG,KAAK,SAAS;YAAE,IAAI,CAAC,mCAAmC,EAAE,EAAE,EAAE,SAAS,EAAE,GAAG,CAAC,CAAA;;YAC/E,OAAO,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAA;IAC/B,CAAC;IAED,aAAa,CAAC,KAAK,EAAE,SAAS;QAC5B,IAAI,KAAK,KAAK,SAAS,EAAE;YACvB,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAA;YAC1B,SAAS,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;SAC9B;QAED,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,CAAA;QAEhD,IAAI,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;QACvC,IAAI,GAAG,EAAE;YACP,KAAK,CAAC,sCAAsC,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,CAAC,CAAA;SACrE;QAED,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,EAAE,SAAS,CAAC,CAAA;IAC1C,CAAC;IAED,gBAAgB,CAAC,KAAK,EAAE,SAAS;QAC/B,IAAI,KAAK,IAAI,IAAI,EAAE;YACjB,OAAM;SACP;QAED,IAAI,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;QAEvC,IAAI,GAAG,KAAK,SAAS,EAAE;YACrB,KAAK,CAAC,6CAA6C,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,CAAC,CAAA;SAC5E;aAAM;YACL,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;SACjC;IACH,CAAC;IAED,WAAW;QACT,IAAI,CAAC,SAAS,GAAG,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,CAAC,GAAG,CAAC,CAAA;QAC1C,OAAO,IAAI,CAAC,SAAS,CAAA;IACvB,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE,SAAS;QAC5B,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE;YAC5C,SAAS,CAAC,aAAa,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,SAAS,CAAC,CAAA;SACpE;IACH,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE,SAAS;QAC9B,IAAI,SAAS,CAAC,aAAa,EAAE;YAC3B,MAAM,SAAS,CAAC,aAAa,CAAC,WAAW,EAAE,CAAA;YAC3C,OAAO,SAAS,CAAC,aAAa,CAAA;SAC/B;IACH,CAAC;IAED,QAAQ,CAAC,EAAE;QACT,OAAO,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAA;IAC5C,CAAC;IAED,WAAW,CAAC,KAAK;QACf,OAAO,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;IACtC,CAAC;IAED,YAAY,CAAC,EAAE;QACb,IAAI,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAA;QAEjC,IAAI,CAAC,SAAS,EAAE;YACd,IAAI,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,CAAA;YACvC,IAAI,QAAQ,EAAE;gBACZ,IAAI,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE;oBACzD,EAAE,EAAE,EAAE;oBACN,cAAc,EAAE,EAAE;iBACnB,CAAC,CAAA;gBACF,SAAS,GAAG,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAA;gBACpC,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,SAAS,CAAC,CAAA;aACzC;SACF;QAED,OAAO,SAAS,CAAA;IAClB,CAAC;IAED,MAAM;QACJ,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;YAC1B,IAAI,CAAC,CAAC,MAAM;gBAAE,CAAC,CAAC,MAAM,EAAE,CAAA;QAC1B,CAAC,CAAC,CAAA;QACF,IAAI,CAAC,UAAU,EAAE,CAAA;IACnB,CAAC;IAED,oBAAoB;QAClB,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAA;QAClB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAA;QAEpB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAA;QAEnB;;WAEG;QAEH,IAAI,IAAI,CAAC,WAAW,EAAE;YACpB,IAAI,CAAC,eAAe;gBAClB,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;oBACtC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;gBACnC,CAAC,CAAC,CAAA;YACJ,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAA;YAC1B,OAAO,IAAI,CAAC,WAAW,CAAA;SACxB;QAED,qCAAqC;QACrC,IAAI,CAAC,aAAa;YAChB,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;gBACjC,KAAK,CAAC,OAAO,EAAE,CAAA;gBACf,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAA;YAC7B,CAAC,CAAC,CAAA;QACJ,OAAO,IAAI,CAAC,aAAa,CAAA;QAEzB;;WAEG;QACH,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAA;QAC9C,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;QAC1D,OAAO,IAAI,CAAC,WAAW,CAAA;QAEvB,mBAAmB;QACnB,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAA;QAClB,IAAI,CAAC,aAAa,GAAG,IAAI,GAAG,EAAE,CAAA;QAC9B,IAAI,CAAC,WAAW,GAAG,EAAE,CAAA;IACvB,CAAC;IAED,mBAAmB,CAAC,YAAY;QAC9B,IAAI,CAAC,oBAAoB,EAAE,CAAA;QAE3B,IAAI,CAAC,WAAW,GAAG,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;QAEzC;;WAEG;QACH,YAAY,GAAG,YAAY,IAAI,EAAE,CAAA;QACjC,YAAY,CAAC,IAAI,GAAG,aAAa,CAAA;QAEjC,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,YAAY,EAAE,IAAI,CAAC,GAAG,CAAC,CAAA;QAElD,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;QACnC,kCAAkC;QAClC,qCAAqC;QACrC,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,IAAI,CAAC,cAAc,CAAA;QAE7C,2CAA2C;QAC3C,IAAI,CAAC,aAAa,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;YACzD,IAAI,QAAQ,GAAG,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAA;YAEvC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAA;YAC3B,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC,cAAc,CAAA;YAErC,OAAO,QAAQ,CAAA;QACjB,CAAC,CAAC,CAAA;QAEF,8BAA8B;QAC9B,IAAI,CAAC,eAAe,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE;YACpE,oCAAoC;YACpC,IAAI,OAAO,GAAG,EAAE,CAAA;YAChB,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAA;YAClE,OAAO,OAAO,CAAA;QAChB,CAAC,CAAC,CAAA;QAEF,IAAI,CAAC,MAAM,GAAG,IAAI,CAAA;QAClB,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,CAAA;IAC/C,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAA;IACb,CAAC;IAED,IAAI,OAAO;QACT,OAAM;IACR,CAAC;IAED;;OAEG;IACH,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,MAAM,CAAA;IACpB,CAAC;IAED,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,WAAW,CAAA;IACzB,CAAC;IAED,IAAI,KAAK;QACP,OAAO,IAAI,CAAA;IACb,CAAC;IAED,IAAI,IAAI;QACN,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE;YAC/D,IAAI,KAAK,GAAG,SAAS,CAAC,KAAK,CAAA;YAE3B,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,IAAI,CAAA;YAEjC,OAAO,MAAM,CAAA;QACf,CAAC,EAAE,EAAE,CAAC,CAAA;IACR,CAAC;IAED,IAAI,IAAI,CAAC,IAAI;QACX,KAAK,IAAI,GAAG,IAAI,IAAI,EAAE;YACpB,IAAI,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAA;YAEtC,IAAI,CAAC,SAAS;gBAAE,SAAQ;YAExB,SAAS,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAA;SAC3B;IACH,CAAC;IAED,IAAI,WAAW;QACb,IAAI,IAAI,GAAG,EAAE,CAAA;QAEb,KAAK,IAAI,CAAC,KAAK,EAAE,SAAS,CAAC,IAAI,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,EAAE;YAC3D,IAAI,CAAC,KAAK,CAAC,GAAG,SAAS,CAAC,IAAI,CAAA;SAC7B;QAED,OAAO,IAAI,CAAA;IACb,CAAC;IAED,IAAI,WAAW,CAAC,IAAI;QAClB,KAAK,IAAI,GAAG,IAAI,IAAI,EAAE;YACpB,IAAI,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAA;YAC7C,IAAI,CAAC,SAAS;gBAAE,SAAQ;YACxB,SAAS,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAA;SAC3B;IACH,CAAC;IAED,IAAI,MAAM;QACR,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE;YAC/D,IAAI,KAAK,GAAG,SAAS,CAAC,KAAK,CAAA;YAE3B,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,KAAK,CAAA;YAElC,OAAO,MAAM,CAAA;QACf,CAAC,EAAE,EAAE,CAAC,CAAA;IACR,CAAC;IAED,IAAI,MAAM,CAAC,KAAK;QACd,KAAK,IAAI,GAAG,IAAI,KAAK,EAAE;YACrB,IAAI,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAA;YAEtC,IAAI,CAAC,SAAS;gBAAE,SAAQ;YAExB,SAAS,CAAC,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAA;SAC7B;IACH,CAAC;IAED,IAAI,aAAa;QACf,IAAI,KAAK,GAAG,EAAE,CAAA;QAEd,KAAK,IAAI,CAAC,KAAK,EAAE,SAAS,CAAC,IAAI,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,EAAE;YAC3D,KAAK,CAAC,KAAK,CAAC,GAAG,SAAS,CAAC,KAAK,CAAA;SAC/B;QAED,OAAO,KAAK,CAAA;IACd,CAAC;IAED,IAAI,aAAa,CAAC,KAAK;QACrB,KAAK,IAAI,GAAG,IAAI,KAAK,EAAE;YACrB,IAAI,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAA;YAC7C,IAAI,CAAC,SAAS;gBAAE,SAAQ;YACxB,SAAS,CAAC,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAA;SAC7B;IACH,CAAC;IAED,IAAI,QAAQ;QACV,OAAO,CAAC,IAAI,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,CAAA;IACrE,CAAC;IAED,IAAI,QAAQ,CAAC,KAAK;QAChB,IAAI,MAAM,GAAG,IAAI,CAAC,SAAS,CAAA;QAC3B,IAAI,CAAC,SAAS,GAAG,KAAK,CAAA;QAEtB,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,KAAK,EAAE,MAAM,CAAC,CAAA;IACzC,CAAC;IAED,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,QAAQ,CAAA;IACtB,CAAC;IAED,IAAI,OAAO,CAAC,SAAS;QACnB,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS;YAAE,OAAM;QAEvC,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAA;QACzB,IAAI,CAAC,UAAU,EAAE,CAAA;IACnB,CAAC;IAED,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,MAAM,CAAA;IACpB,CAAC;IAED,IAAI,KAAK,CAAC,KAAK;QACb,IAAI,CAAC,MAAM,GAAG,KAAK,CAAA;QACnB,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;IAC7C,CAAC;IAED,IAAI,eAAe;QACjB,OAAO,KAAK,CAAA;IACd,CAAC;IAED,MAAM;QACJ,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAA;IACxC,CAAC;IAED,+BAA+B;IAC/B,QAAQ,CAAC,CAAC,EAAE,CAAC;QACX,OAAO,IAAI,CAAA;IACb,CAAC;IAED;;;;OAIG;IAEH,WAAW,CAAC,IAAI,EAAE,OAAO;QACvB,OAAO,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;IACpD,CAAC;IAED,UAAU;QACR,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAA;IAC9C,CAAC;IAED,IAAI,QAAQ;QACV,OAAO;YACL,QAAQ,EAAE;gBACR,cAAc,EAAE;oBACd,KAAK,EAAE,IAAI,CAAC,OAAO;oBACnB,OAAO,EAAE,IAAI,CAAC,SAAS;oBACvB,MAAM,EAAE,IAAI,CAAC,SAAS;iBACvB;aACF;SACF,CAAA;IACH,CAAC;IAED,eAAe;QACb,IAAI,CAAC,IAAI,CAAC,0BAA0B,EAAE;YACpC,IAAI,IAAI,CAAC,QAAQ;gBAAE,OAAM;YAEzB,IAAI,CAAC,0BAA0B,GAAG,KAAK,CAAC,QAAQ,CAAC,SAAS,MAAM,CAAC,IAAI;gBACnE,IAAI,CAAC,eAAe,EAAE,CAAA;gBACtB,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAA;YACpE,CAAC,EAAE,IAAI,CAAC,CAAA;SACT;QAED,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;IACnD,CAAC;IAED,YAAY,CAAC,SAAS;QACpB,IAAI,SAAS,CAAC,UAAU;YAAE,SAAS,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAA;QAEzF,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,cAAc,EAAE,GAAG,SAAS,CAAC,KAAK,CAAA;QAExD,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,SAAS,CAAC,CAAA;QAEpC,IAAI,EAAE;YAAE,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,CAAC,CAAA;QACpC,IAAI,GAAG;YAAE,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,SAAS,CAAC,CAAA;QAEvC,IAAI,cAAc;YAAE,IAAI,CAAC,WAAW,CAAC,cAAc,EAAE,SAAS,CAAC,CAAA;QAE/D,IAAI,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,SAAS,CAAC,QAAQ,EAAE,SAAS,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;QAC5E,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAA;IAC3C,CAAC;IAED,eAAe,CAAC,SAAS;QACvB,IAAI,SAAS,CAAC,UAAU;YAAE,SAAS,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAA;QAE5F,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,cAAc,EAAE,GAAG,SAAS,CAAC,KAAK,CAAA;QAExD,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,SAAS,CAAC,CAAA;QAEvC,IAAI,EAAE;YAAE,IAAI,CAAC,WAAW,CAAC,EAAE,EAAE,SAAS,CAAC,CAAA;QACvC,IAAI,GAAG;YAAE,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,SAAS,CAAC,CAAA;QAEzC,IAAI,cAAc;YAAE,IAAI,CAAC,cAAc,CAAC,cAAc,EAAE,SAAS,CAAC,CAAA;QAElE,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;IACpC,CAAC;IAED,OAAO,CAAC,SAAS,EAAE,SAAS;QAC1B,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAA;QAC5B,IAAI,CAAC,eAAe,EAAE,CAAA;QAEtB,IAAI,CAAC,UAAU,EAAE,CAAA;IACnB,CAAC;IAED,SAAS,CAAC,SAAS,EAAE,SAAS;QAC5B,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,CAAA;QAE/B,IAAI,CAAC,UAAU,EAAE,CAAA;IACnB,CAAC;IAED,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI;QAC3B,IAAI,MAAM,CAAC,cAAc;YAAE,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,cAAc,EAAE,IAAI,CAAC,MAAM,CAAC,CAAA;QAElF,IAAI,KAAK,CAAC,cAAc;YAAE,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,cAAc,EAAE,IAAI,CAAC,MAAM,CAAC,CAAA;QAE7E,IAAI,MAAM,CAAC,EAAE;YAAE,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,CAAA;QAEvD,IAAI,KAAK,CAAC,EAAE;YAAE,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,CAAA;QAElD,IAAI,MAAM,CAAC,GAAG;YAAE,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,CAAA;QAEzD,IAAI,KAAK,CAAC,GAAG;YAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,CAAA;QAErD,IAAI,MAAM,CAAC,EAAE,IAAI,KAAK,CAAC,EAAE,IAAI,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK;YAAE,IAAI,CAAC,eAAe,EAAE,CAAA;IAClF,CAAC;CACF;AAED,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,SAAS,EAAE;IACrC,GAAG;CACJ,CAAC,CAAA;AAEF,SAAS,CAAC,OAAO,CAAC,aAAa,CAAC,SAAS,EAAE,WAAW,EAAE,KAAK,CAAC,CAAA","sourcesContent":["/*\n * Copyright © HatioLab Inc. All rights reserved.\n */\n\nimport { error, warn } from '../core/logger'\nimport * as Utils from '../core/utils'\nimport * as Event from '../event'\nimport * as EventMap from '../event-map'\nimport ScenePopup from '../layer/action/popup'\nimport compile from '../model/compile'\nimport * as Style from '../style'\nimport Component from './component'\nimport ContainerAbstract from './container-abstract'\nimport fit from './fit/fit'\n\nvar roots = []\n\nif (typeof window !== 'undefined') {\n window.addEventListener('resize', () => {\n roots.forEach(p => {\n p.resize()\n })\n })\n}\n\n/*\n * RootContainer\n *\n * 모든 컴포넌트의 최상위 컨테이너임\n *\n * - 루트 정보를 제공함. (get root, )\n * - 하위 레이어들을 관리함.\n * - 전체적인 이벤트 리스너를 관리함.\n * - 전체적인 스타일 정보를 관리함.\n */\nexport default class RootContainer extends ContainerAbstract {\n constructor(model, context) {\n super(\n Object.assign(\n {\n type: 'root',\n scale: {\n x: 1,\n y: 1\n }\n },\n model || {}\n ),\n context\n )\n\n this._maxRefid = 0\n\n model = model || {}\n\n this.fitMode = model.model && model.model.fitMode\n\n this._app = context\n\n /* keep container element */\n this.target_element = model.target_element\n\n /* content model을 만든다. */\n this.rebuildContentModel(this.model.model)\n\n /* 프로세스내의 전체 루트 컨테이너 리스트에 자신을 추가한다. */\n roots.push(this)\n }\n\n dispose() {\n ScenePopup.hideAll(this)\n\n this._app && this._app.dispose()\n\n super.dispose()\n\n this._disposeAllResources()\n\n this.target_element = null\n\n delete this._refresh_mapping_debouncer\n\n var index = roots.indexOf(this)\n if (index >= 0) roots.splice(index, 1)\n\n this.refidIndexMap.clear()\n this._maxRefid = 0\n }\n\n isRoot() {\n return true\n }\n\n /* Application Context */\n get app() {\n return this._app\n }\n\n get target_element() {\n return this._target_element\n }\n\n set target_element(target) {\n if (this._ua_event_handler) {\n this._ua_event_handler.dispose()\n delete this._ua_event_handler\n }\n\n if (target) {\n target.style.position = 'absolute'\n target.style.cursor = 'default'\n target.style.overflow = 'hidden'\n\n this._ua_event_handler = new Event.UAEventHandler(this, target)\n }\n\n this.forEach(layer => (layer.target = target))\n\n this._target_element = target\n }\n\n /**\n * Scene 모델의 단위(unit)을 감안한 기본 Scale 값을 제공한다.\n * 통산 'mm', 'cm' 단위의 Scene은 각 값에 10배를 곱한 수치로 모델링된다.(값을 10으로 나눈값이 실제 단위와 일치한다.)\n * unitScale의 의미는 scene에 unitScale값으로 scale하면, 각 단위값이 화면과 일치한다는 의미이다.\n *\n * 모델링의 수치단위가 픽셀이 아니고, mm, cm, inch 등의 단위인 경우에,\n * 화면에서의 크기가 실물과 유사하게 보이는 수준의 기본 스케일을 제공하는 기능이다.\n * 이 값은 내부적으로는, Ruler에서 눈금을 실제 자의 눈금과 일치시키기 위해서 사용한다.\n */\n get unitScale() {\n switch (this.model_layer && this.model_layer.get('unit')) {\n case 'mm':\n case 'cm':\n case 'in':\n return this.app.PPM / 10\n\n case 'px':\n default:\n return 1\n }\n }\n\n addTemplate(prefix, component) {\n var old = this.templateMap[prefix]\n if (old) error('Template replaced (duplicated)', prefix, component, old)\n\n this.templateMap[prefix] = component\n delete this.templatePrefixes\n }\n\n removeTemplate(prefix, component) {\n var old = this.templateMap[prefix]\n\n if (old !== component) warn('Removing template failed (different)', prefix, component, old)\n else delete this.templateMap[prefix]\n\n delete this.templatePrefixes\n }\n\n findTemplateFor(id) {\n if (!this.templatePrefixes) this.templatePrefixes = Object.keys(this.templateMap).sort().reverse()\n\n var prefix = this.templatePrefixes.find(prefix => {\n return id.startsWith(prefix)\n })\n if (prefix) return this.templateMap[prefix]\n }\n\n addIndex(id, component) {\n var old = this.indexMap[id]\n if (old) error('Index replaced (duplicated)', id, component, old)\n\n this.indexMap[id] = component\n }\n\n removeIndex(id, component) {\n var old = this.indexMap[id]\n\n if (old !== component) warn('Removing index failed (different)', id, component, old)\n else delete this.indexMap[id]\n }\n\n addRefidIndex(refid, component) {\n if (refid === undefined) {\n refid = this.getNewRefid()\n component.set('refid', refid)\n }\n\n this._maxRefid = Math.max(refid, this._maxRefid)\n\n var old = this.refidIndexMap.get(refid)\n if (old) {\n error('Refid Index replaced (has not to be)', refid, component, old)\n }\n\n this.refidIndexMap.set(refid, component)\n }\n\n removeRefidIndex(refid, component) {\n if (refid == null) {\n return\n }\n\n var old = this.refidIndexMap.get(refid)\n\n if (old !== component) {\n error('Refid Removing index failed (has not to be)', refid, component, old)\n } else {\n this.refidIndexMap.delete(refid)\n }\n }\n\n getNewRefid() {\n this._maxRefid = (this._maxRefid || 0) + 1\n return this._maxRefid\n }\n\n async subscribe(tag, component) {\n if (this._app.isViewMode && tag && this._app) {\n component._subscription = await this._app.subscribe(tag, component)\n }\n }\n\n async unsubscribe(tag, component) {\n if (component._subscription) {\n await component._subscription.unsubscribe()\n delete component._subscription\n }\n }\n\n findById(id) {\n return this.indexMap[id.replace(/^#/, '')]\n }\n\n findByRefid(refid) {\n return this.refidIndexMap.get(refid)\n }\n\n findOrCreate(id) {\n var component = this.indexMap[id]\n\n if (!component) {\n let template = this.findTemplateFor(id)\n if (template) {\n let clone = Object.assign(Utils.clone(template.hierarchy), {\n id: id,\n templatePrefix: ''\n })\n component = compile(clone, this.app)\n this.model_layer.addComponent(component)\n }\n }\n\n return component\n }\n\n resize() {\n this.components.forEach(c => {\n if (c.resize) c.resize()\n })\n this.invalidate()\n }\n\n _disposeAllResources() {\n this.selected = []\n this._focused = null\n\n this._ready = false\n\n /*\n * 리빌드를 위해서 초기화한다.\n */\n\n if (this.eventEngine) {\n this.assist_handlers &&\n this.assist_handlers.forEach(listener => {\n this.eventEngine.remove(listener)\n })\n this.eventEngine.dispose()\n delete this.eventEngine\n }\n\n /* layer 정보에 맞춰서 layer 객체들을 소멸시킨다. */\n this.assist_layers &&\n this.assist_layers.forEach(layer => {\n layer.dispose()\n this.removeComponent(layer)\n })\n delete this.assist_layers\n\n /*\n * 컨텐츠 모델 레이어를 새로 구축한다\n */\n this.model_layer && this.model_layer.dispose()\n this.model_layer && this.removeComponent(this.model_layer)\n delete this.model_layer\n\n // indexMap을 초기화한다.\n this.indexMap = {}\n this.refidIndexMap = new Map()\n this.templateMap = {}\n }\n\n rebuildContentModel(contentModel) {\n this._disposeAllResources()\n\n this.eventEngine = new Event.Engine(this)\n\n /*\n * 컨텐츠 모델 레이어를 새로 구축한다\n */\n contentModel = contentModel || {}\n contentModel.type = 'model-layer'\n\n this.model_layer = compile(contentModel, this.app)\n\n this.addComponent(this.model_layer)\n // target Element 아래에 기본 레이어를 만든다.\n // 기본 레이어는 모델을 표현할 바탕 canvas 로 만들어진다.\n this.model_layer.target = this.target_element\n\n /* layer 정보에 맞춰서 assist layer 객체들을 생성한다. */\n this.assist_layers = (this.model.layers || []).map(layer => {\n var compiled = compile(layer, this.app)\n\n this.addComponent(compiled)\n compiled.target = this.target_element\n\n return compiled\n })\n\n /* Event Handler Map을 추가한다. */\n this.assist_handlers = (this.model.handlers || []).map(eventMapName => {\n /* Listener로 임의의 오브젝트를 만들어서 제공한다. */\n var handler = {}\n this.eventEngine.add(handler, EventMap.EventMap.get(eventMapName))\n return handler\n })\n\n this._ready = true\n this.traverse(component => component.ready())\n }\n\n get root() {\n return this\n }\n\n get anchors() {\n return\n }\n\n /**\n * 모델들이 다 생성되고 준비되었는지를 알려준다.\n */\n get isReady() {\n return this._ready\n }\n\n get rootModel() {\n return this.model_layer\n }\n\n get stuck() {\n return true\n }\n\n get data() {\n return Object.values(this.indexMap).reduce((result, component) => {\n let model = component.model\n\n result[model.id] = component.data\n\n return result\n }, {})\n }\n\n set data(data) {\n for (var key in data) {\n var component = this.findOrCreate(key)\n\n if (!component) continue\n\n component.data = data[key]\n }\n }\n\n get dataByRefid() {\n var data = {}\n\n for (let [refid, component] of this.refidIndexMap.entries()) {\n data[refid] = component.data\n }\n\n return data\n }\n\n set dataByRefid(data) {\n for (var ref in data) {\n var component = this.findByRefid(Number(ref))\n if (!component) continue\n component.data = data[ref]\n }\n }\n\n get values() {\n return Object.values(this.indexMap).reduce((result, component) => {\n let model = component.model\n\n result[model.id] = component.value\n\n return result\n }, {})\n }\n\n set values(value) {\n for (var key in value) {\n var component = this.findOrCreate(key)\n\n if (!component) continue\n\n component.value = value[key]\n }\n }\n\n get valuesByRefid() {\n var value = {}\n\n for (let [refid, component] of this.refidIndexMap.entries()) {\n value[refid] = component.value\n }\n\n return value\n }\n\n set valuesByRefid(value) {\n for (var ref in value) {\n var component = this.findByRefid(Number(ref))\n if (!component) continue\n component.value = value[ref]\n }\n }\n\n get selected() {\n return (this._selected || []).filter(component => component.parent)\n }\n\n set selected(after) {\n var before = this._selected\n this._selected = after\n\n this.trigger('selected', after, before)\n }\n\n get focused() {\n return this._focused\n }\n\n set focused(container) {\n if (this._focused === container) return\n\n this._focused = container\n this.invalidate()\n }\n\n get style() {\n return this._style\n }\n\n set style(style) {\n this._style = style\n this._compiled_style = Style.compile(style)\n }\n\n get hasTextProperty() {\n return false\n }\n\n render() {\n this.components.forEach(m => m.draw())\n }\n\n /* 최상위 객체는 항상 true를 리턴해야 한다. */\n contains(x, y) {\n return true\n }\n\n /*\n * capturePath(path) 파라미터로 주어진 path를 포함하는 컨테이너를 찾는다.\n * @path\n * @excepts 컨테이너를 찾을 때 제외되는 대상이다.\n */\n\n capturePath(path, excepts) {\n return this.model_layer.capturePath(path, excepts)\n }\n\n invalidate() {\n this.components.forEach(m => m.invalidate())\n }\n\n get eventMap() {\n return {\n '(root)': {\n '(descendant)': {\n added: this.onadded,\n removed: this.onremoved,\n change: this.onchanged\n }\n }\n }\n }\n\n refreshMappings() {\n if (!this._refresh_mapping_debouncer) {\n if (this.disposed) return\n\n this._refresh_mapping_debouncer = Utils.debounce(function mapper(comp) {\n comp.executeMappings()\n comp.components && comp.components.forEach(child => mapper(child))\n }, 1000)\n }\n\n this._refresh_mapping_debouncer(this.model_layer)\n }\n\n _addTraverse(component) {\n if (component.components) component.components.forEach(child => this._addTraverse(child))\n\n var { id, refid, tag, templatePrefix } = component.model\n\n this.addRefidIndex(refid, component)\n\n if (id) this.addIndex(id, component)\n if (tag) this.subscribe(tag, component)\n\n if (templatePrefix) this.addTemplate(templatePrefix, component)\n\n var eventMap = Utils.merge({}, component.eventMap, component.model.eventMap)\n this.eventEngine.add(component, eventMap)\n }\n\n _removeTraverse(component) {\n if (component.components) component.components.forEach(child => this._removeTraverse(child))\n\n var { id, refid, tag, templatePrefix } = component.model\n\n this.removeRefidIndex(refid, component)\n\n if (id) this.removeIndex(id, component)\n if (tag) this.unsubscribe(tag, component)\n\n if (templatePrefix) this.removeTemplate(templatePrefix, component)\n\n this.eventEngine.remove(component)\n }\n\n onadded(container, component) {\n this._addTraverse(component)\n this.refreshMappings()\n\n this.invalidate()\n }\n\n onremoved(container, component) {\n this._removeTraverse(component)\n\n this.invalidate()\n }\n\n onchanged(after, before, hint) {\n if (before.templatePrefix) this.removeTemplate(before.templatePrefix, hint.origin)\n\n if (after.templatePrefix) this.addTemplate(after.templatePrefix, hint.origin)\n\n if (before.id) this.removeIndex(before.id, hint.origin)\n\n if (after.id) this.addIndex(after.id, hint.origin)\n\n if (before.tag) this.unsubscribe(before.tag, hint.origin)\n\n if (after.tag) this.subscribe(after.tag, hint.origin)\n\n if (before.id != after.id || before.class != after.class) this.refreshMappings()\n }\n}\n\nObject.assign(RootContainer.prototype, {\n fit\n})\n\nComponent.memoize(RootContainer.prototype, 'unitScale', false)\n"]}
@@ -1,16 +0,0 @@
1
- declare const Ruler_base: {
2
- new (): {
3
- [x: string]: any;
4
- contains(x: any, y: any): boolean;
5
- path: {
6
- x: any;
7
- y: any;
8
- }[];
9
- readonly anchors: import("./anchor/anchor").Anchor[];
10
- };
11
- [x: string]: any;
12
- };
13
- export default class Ruler extends Ruler_base {
14
- render(ctx: any): void;
15
- }
16
- export {};
@@ -1,77 +0,0 @@
1
- /*
2
- * Copyright © HatioLab Inc. All rights reserved.
3
- */
4
- import Component from './component';
5
- import Shape from './shape';
6
- import RectPath from './mixins/rect-path';
7
- import * as Const from '../const';
8
- const STEPS = [1, 2, 10, 20, 50, 50, 50, 50, 50, 50];
9
- export default class Ruler extends RectPath(Shape) {
10
- render(ctx) {
11
- const { lineWidth = 1, fillStyle = 'lightgray', font = '15px Arial', left, top, rotation, origin, margin, width, height, side = 'bottom', strokeStyle = '#000000', scale = 1 } = this.state;
12
- /* 좌표 기준을 0, 0로 하기위해서 이동 */
13
- ctx.translate(left, top);
14
- // Clipping (여유있게 박스를 잡아주지 않으면.. 회전시 edge가 지저분해보인다.)
15
- ctx.beginPath();
16
- const clip_bound = Math.round(lineWidth / 2);
17
- ctx.rect(-clip_bound, -clip_bound, width + clip_bound * 2, height + clip_bound * 2);
18
- ctx.clip();
19
- // Boxing
20
- ctx.beginPath();
21
- ctx.rect(0, 0, width, height);
22
- if (fillStyle) {
23
- ctx.fillStyle = fillStyle;
24
- ctx.fill();
25
- }
26
- ctx.lineWidth = lineWidth;
27
- ctx.strokeStyle = strokeStyle;
28
- ctx.stroke();
29
- // Draw Scales & Text
30
- ctx.beginPath();
31
- ctx.font = font;
32
- // 자의 눈금을 위쪽에 그리는 경우에는 top_side가 true이다.
33
- var top_side = side !== 'bottom';
34
- var end_pos = top_side ? 0 : height;
35
- var ypos_mm = (height * 4) / 5;
36
- var ypos_5m = (height * 2) / 3;
37
- var ypos_cm = (height * 1) / 2;
38
- var ypos_txt = (height * 3) / 5;
39
- if (top_side) {
40
- ypos_mm = height - ypos_mm;
41
- ypos_5m = height - ypos_5m;
42
- ypos_cm = height - ypos_cm;
43
- ypos_txt = height - (height * 1.5) / 5;
44
- }
45
- var ppm = (scale * this.app.PPM) / this.root.unitScale;
46
- var idx = Math.ceil(origin / ppm); // First Index
47
- var ratio = this.app.PPM / ppm;
48
- var step = ratio <= 1.1 ? 1 : STEPS[Math.round(ratio)] || 100;
49
- if (step != 1)
50
- idx += (step - (idx % step)) % step;
51
- var pos = Math.ceil(idx * ppm);
52
- var end = origin + width;
53
- ctx.fillStyle = strokeStyle;
54
- while (pos < end) {
55
- if (idx % 10 == 0) {
56
- ctx.moveTo(pos - origin, ypos_cm);
57
- ctx.lineTo(pos - origin, end_pos);
58
- // 센티미터 눈금 글자를 쓴다.
59
- let text = (idx / 10).toString();
60
- let metrics = ctx.measureText(text);
61
- ctx.fillText(text, pos - origin - metrics.width - 6, ypos_txt);
62
- }
63
- else if (idx % 5 == 0) {
64
- ctx.moveTo(pos - origin, ypos_5m);
65
- ctx.lineTo(pos - origin, end_pos);
66
- }
67
- else {
68
- ctx.moveTo(pos - origin, ypos_mm);
69
- ctx.lineTo(pos - origin, end_pos);
70
- }
71
- idx += step;
72
- pos = Math.ceil(idx * ppm);
73
- }
74
- }
75
- }
76
- Component.register('ruler', Ruler);
77
- //# sourceMappingURL=ruler.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ruler.js","sourceRoot":"","sources":["../../src/components/ruler.js"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright © HatioLab Inc. All rights reserved.\n */\n\nimport Component from './component'\nimport Shape from './shape'\nimport RectPath from './mixins/rect-path'\n\nimport * as Const from '../const'\n\nconst STEPS = [1, 2, 10, 20, 50, 50, 50, 50, 50, 50]\n\nexport default class Ruler extends RectPath(Shape) {\n render(ctx) {\n const {\n lineWidth = 1,\n fillStyle = 'lightgray',\n font = '15px Arial',\n left,\n top,\n rotation,\n origin,\n margin,\n width,\n height,\n side = 'bottom',\n strokeStyle = '#000000',\n scale = 1\n } = this.state\n\n /* 좌표 기준을 0, 0로 하기위해서 이동 */\n ctx.translate(left, top)\n\n // Clipping (여유있게 박스를 잡아주지 않으면.. 회전시 edge가 지저분해보인다.)\n ctx.beginPath()\n\n const clip_bound = Math.round(lineWidth / 2)\n ctx.rect(-clip_bound, -clip_bound, width + clip_bound * 2, height + clip_bound * 2)\n ctx.clip()\n\n // Boxing\n ctx.beginPath()\n\n ctx.rect(0, 0, width, height)\n\n if (fillStyle) {\n ctx.fillStyle = fillStyle\n ctx.fill()\n }\n ctx.lineWidth = lineWidth\n ctx.strokeStyle = strokeStyle\n\n ctx.stroke()\n\n // Draw Scales & Text\n ctx.beginPath()\n\n ctx.font = font\n\n // 자의 눈금을 위쪽에 그리는 경우에는 top_side가 true이다.\n var top_side = side !== 'bottom'\n\n var end_pos = top_side ? 0 : height\n\n var ypos_mm = (height * 4) / 5\n var ypos_5m = (height * 2) / 3\n var ypos_cm = (height * 1) / 2\n var ypos_txt = (height * 3) / 5\n\n if (top_side) {\n ypos_mm = height - ypos_mm\n ypos_5m = height - ypos_5m\n ypos_cm = height - ypos_cm\n ypos_txt = height - (height * 1.5) / 5\n }\n\n var ppm = (scale * this.app.PPM) / this.root.unitScale\n\n var idx = Math.ceil(origin / ppm) // First Index\n\n var ratio = this.app.PPM / ppm\n var step = ratio <= 1.1 ? 1 : STEPS[Math.round(ratio)] || 100\n\n if (step != 1) idx += (step - (idx % step)) % step\n\n var pos = Math.ceil(idx * ppm)\n var end = origin + width\n\n ctx.fillStyle = strokeStyle\n\n while (pos < end) {\n if (idx % 10 == 0) {\n ctx.moveTo(pos - origin, ypos_cm)\n ctx.lineTo(pos - origin, end_pos)\n\n // 센티미터 눈금 글자를 쓴다.\n let text = (idx / 10).toString()\n let metrics = ctx.measureText(text)\n\n ctx.fillText(text, pos - origin - metrics.width - 6, ypos_txt)\n } else if (idx % 5 == 0) {\n ctx.moveTo(pos - origin, ypos_5m)\n ctx.lineTo(pos - origin, end_pos)\n } else {\n ctx.moveTo(pos - origin, ypos_mm)\n ctx.lineTo(pos - origin, end_pos)\n }\n\n idx += step\n pos = Math.ceil(idx * ppm)\n }\n }\n}\n\nComponent.register('ruler', Ruler)\n"]}
@@ -1,25 +0,0 @@
1
- /// <reference path="../../things-scene.d.ts" />
2
- /**
3
- * Shape 컴포넌트는 단순한 형태의 컴포넌트의 공통 기능을 정의한 추상클래스이다.
4
- * 단순한 형태의 컴포넌트란
5
- * - 컴포넌트 전체에서 라인 스타일이 하나만 사용된다.
6
- * - 컴포넌트 전체에서 FILL 스타일이 하나만 사용된다.
7
- *
8
- * 이런 단순한 컴포넌트는 render 메쏘드에서 모든 패스를 lineTo로 그리기만 하고
9
- * postrender에서 Fill, Stroke을 일괄적으로 한다.
10
- */
11
- export default class Shape extends Component {
12
- set rotationX(arg: any);
13
- get rotationX(): any;
14
- set rotationY(arg: any);
15
- get rotationY(): any;
16
- set rotationZ(arg: any);
17
- get rotationZ(): any;
18
- set zPos(arg: any);
19
- get zPos(): any;
20
- set depth(arg: any);
21
- get depth(): any;
22
- postrender(context: any): void;
23
- render(ctx: any): void;
24
- }
25
- import { Component } from "@hatiolab/things-scene";