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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (385) hide show
  1. package/babel.config.js +4 -3
  2. package/db.sqlite +0 -0
  3. package/dist/animation/animate.js +63 -0
  4. package/dist/animation/animate.js.map +1 -0
  5. package/dist/animation/animations/animation.js +122 -0
  6. package/dist/animation/animations/animation.js.map +1 -0
  7. package/dist/animation/animations/fade.js +28 -0
  8. package/dist/animation/animations/fade.js.map +1 -0
  9. package/dist/animation/animations/heartbeat.js +28 -0
  10. package/dist/animation/animations/heartbeat.js.map +1 -0
  11. package/dist/animation/animations/moving.js +24 -0
  12. package/dist/animation/animations/moving.js.map +1 -0
  13. package/dist/animation/animations/outline.js +47 -0
  14. package/dist/animation/animations/outline.js.map +1 -0
  15. package/dist/animation/animations/rotation.js +22 -0
  16. package/dist/animation/animations/rotation.js.map +1 -0
  17. package/dist/animation/animations/vibration.js +31 -0
  18. package/dist/animation/animations/vibration.js.map +1 -0
  19. package/dist/animation/compile.js +31 -0
  20. package/dist/animation/compile.js.map +1 -0
  21. package/dist/animation/delta.js +51 -0
  22. package/dist/animation/delta.js.map +1 -0
  23. package/dist/animation/index.js +14 -0
  24. package/dist/animation/index.js.map +1 -0
  25. package/dist/command/command-change.js +33 -0
  26. package/dist/command/command-change.js.map +1 -0
  27. package/dist/command/command-migrate.js +103 -0
  28. package/dist/command/command-migrate.js.map +1 -0
  29. package/dist/command/command.js +18 -0
  30. package/dist/command/command.js.map +1 -0
  31. package/dist/command/snapshot-commander.js +84 -0
  32. package/dist/command/snapshot-commander.js.map +1 -0
  33. package/dist/components/anchor/anchor.js +105 -0
  34. package/dist/components/anchor/anchor.js.map +1 -0
  35. package/dist/components/anchor/ellipse-anchors.js +53 -0
  36. package/dist/components/anchor/ellipse-anchors.js.map +1 -0
  37. package/dist/components/anchor/rect-anchors.js +53 -0
  38. package/dist/components/anchor/rect-anchors.js.map +1 -0
  39. package/dist/components/audio.js +154 -0
  40. package/dist/components/audio.js.map +1 -0
  41. package/dist/components/cloud.js +44 -0
  42. package/dist/components/cloud.js.map +1 -0
  43. package/dist/components/component.js +1086 -0
  44. package/dist/components/component.js.map +1 -0
  45. package/dist/components/container-abstract.js +387 -0
  46. package/dist/components/container-abstract.js.map +1 -0
  47. package/dist/components/container.js +331 -0
  48. package/dist/components/container.js.map +1 -0
  49. package/dist/components/data/data-mapping.js +82 -0
  50. package/dist/components/data/data-mapping.js.map +1 -0
  51. package/dist/components/data/data.js +166 -0
  52. package/dist/components/data/data.js.map +1 -0
  53. package/dist/components/data/evaluator.js +103 -0
  54. package/dist/components/data/evaluator.js.map +1 -0
  55. package/dist/components/donut.js +104 -0
  56. package/dist/components/donut.js.map +1 -0
  57. package/dist/components/drawer/draw-image-pendable.js +20 -0
  58. package/dist/components/drawer/draw-image-pendable.js.map +1 -0
  59. package/dist/components/drawer/effect.js +19 -0
  60. package/dist/components/drawer/effect.js.map +1 -0
  61. package/dist/components/drawer/fill.js +228 -0
  62. package/dist/components/drawer/fill.js.map +1 -0
  63. package/dist/components/drawer/format.js +115 -0
  64. package/dist/components/drawer/format.js.map +1 -0
  65. package/dist/components/drawer/line.js +191 -0
  66. package/dist/components/drawer/line.js.map +1 -0
  67. package/dist/components/drawer/stroke.js +62 -0
  68. package/dist/components/drawer/stroke.js.map +1 -0
  69. package/dist/components/drawer/text-wrapper.js +51 -0
  70. package/dist/components/drawer/text-wrapper.js.map +1 -0
  71. package/dist/components/drawer/text.js +269 -0
  72. package/dist/components/drawer/text.js.map +1 -0
  73. package/dist/components/ellipse.js +110 -0
  74. package/dist/components/ellipse.js.map +1 -0
  75. package/dist/components/file/ondropfile.js +19 -0
  76. package/dist/components/file/ondropfile.js.map +1 -0
  77. package/dist/components/fit/fit.js +137 -0
  78. package/dist/components/fit/fit.js.map +1 -0
  79. package/dist/components/geometry/transcoord.js +339 -0
  80. package/dist/components/geometry/transcoord.js.map +1 -0
  81. package/dist/components/geometry/union.js +35 -0
  82. package/dist/components/geometry/union.js.map +1 -0
  83. package/dist/components/gif-view.js +128 -0
  84. package/dist/components/gif-view.js.map +1 -0
  85. package/dist/components/global-ref.js +154 -0
  86. package/dist/components/global-ref.js.map +1 -0
  87. package/dist/components/group.js +171 -0
  88. package/dist/components/group.js.map +1 -0
  89. package/dist/components/html/elements.js +24 -0
  90. package/dist/components/html/elements.js.map +1 -0
  91. package/dist/components/html/fill.js +126 -0
  92. package/dist/components/html/fill.js.map +1 -0
  93. package/dist/components/html/reposition.js +119 -0
  94. package/dist/components/html/reposition.js.map +1 -0
  95. package/dist/components/html/shadow.js +24 -0
  96. package/dist/components/html/shadow.js.map +1 -0
  97. package/dist/components/html-overlay-container.js +27 -0
  98. package/dist/components/html-overlay-container.js.map +1 -0
  99. package/dist/components/html-overlay-element.js +22 -0
  100. package/dist/components/html-overlay-element.js.map +1 -0
  101. package/dist/components/image-view.js +193 -0
  102. package/dist/components/image-view.js.map +1 -0
  103. package/dist/components/index.js +231 -0
  104. package/dist/components/index.js.map +1 -0
  105. package/dist/components/info-window.js +416 -0
  106. package/dist/components/info-window.js.map +1 -0
  107. package/dist/components/line.js +374 -0
  108. package/dist/components/line.js.map +1 -0
  109. package/dist/components/local-ref.js +114 -0
  110. package/dist/components/local-ref.js.map +1 -0
  111. package/dist/components/mixins/connectable.js +128 -0
  112. package/dist/components/mixins/connectable.js.map +1 -0
  113. package/dist/components/mixins/data-source.js +34 -0
  114. package/dist/components/mixins/data-source.js.map +1 -0
  115. package/dist/components/mixins/html-element.js +107 -0
  116. package/dist/components/mixins/html-element.js.map +1 -0
  117. package/dist/components/mixins/move-handle.js +73 -0
  118. package/dist/components/mixins/move-handle.js.map +1 -0
  119. package/dist/components/mixins/rect-path.js +113 -0
  120. package/dist/components/mixins/rect-path.js.map +1 -0
  121. package/dist/components/mixins/value-holder.js +81 -0
  122. package/dist/components/mixins/value-holder.js.map +1 -0
  123. package/dist/components/mutater/bounds.js +68 -0
  124. package/dist/components/mutater/bounds.js.map +1 -0
  125. package/dist/components/mutater/path.js +73 -0
  126. package/dist/components/mutater/path.js.map +1 -0
  127. package/dist/components/ortholine.js +763 -0
  128. package/dist/components/ortholine.js.map +1 -0
  129. package/dist/components/outline/ellipse-outline.js +23 -0
  130. package/dist/components/outline/ellipse-outline.js.map +1 -0
  131. package/dist/components/outline/path-outline.js +48 -0
  132. package/dist/components/outline/path-outline.js.map +1 -0
  133. package/dist/components/path.js +49 -0
  134. package/dist/components/path.js.map +1 -0
  135. package/dist/components/polygon.js +91 -0
  136. package/dist/components/polygon.js.map +1 -0
  137. package/dist/components/polyline.js +114 -0
  138. package/dist/components/polyline.js.map +1 -0
  139. package/dist/components/popup.js +160 -0
  140. package/dist/components/popup.js.map +1 -0
  141. package/dist/components/rect.js +72 -0
  142. package/dist/components/rect.js.map +1 -0
  143. package/dist/components/retention/retention-manager.js +81 -0
  144. package/dist/components/retention/retention-manager.js.map +1 -0
  145. package/dist/components/root-container.js +519 -0
  146. package/dist/components/root-container.js.map +1 -0
  147. package/dist/components/ruler.js +103 -0
  148. package/dist/components/ruler.js.map +1 -0
  149. package/dist/components/shape.js +97 -0
  150. package/dist/components/shape.js.map +1 -0
  151. package/dist/components/star.js +103 -0
  152. package/dist/components/star.js.map +1 -0
  153. package/dist/components/text/substitutor.js +92 -0
  154. package/dist/components/text/substitutor.js.map +1 -0
  155. package/dist/components/text.js +21 -0
  156. package/dist/components/text.js.map +1 -0
  157. package/dist/components/triangle.js +92 -0
  158. package/dist/components/triangle.js.map +1 -0
  159. package/dist/const.js +71 -0
  160. package/dist/const.js.map +1 -0
  161. package/dist/core/collection.js +28 -0
  162. package/dist/core/collection.js.map +1 -0
  163. package/dist/core/debug.js +12 -0
  164. package/dist/core/debug.js.map +1 -0
  165. package/dist/core/deep-equals.js +112 -0
  166. package/dist/core/deep-equals.js.map +1 -0
  167. package/dist/core/dom-to-image.js +617 -0
  168. package/dist/core/dom-to-image.js.map +1 -0
  169. package/dist/core/event.js +205 -0
  170. package/dist/core/event.js.map +1 -0
  171. package/dist/core/index.js +21 -0
  172. package/dist/core/index.js.map +1 -0
  173. package/dist/core/list.js +87 -0
  174. package/dist/core/list.js.map +1 -0
  175. package/dist/core/logger.js +29 -0
  176. package/dist/core/logger.js.map +1 -0
  177. package/dist/core/memoize.js +40 -0
  178. package/dist/core/memoize.js.map +1 -0
  179. package/dist/core/mixin.js +26 -0
  180. package/dist/core/mixin.js.map +1 -0
  181. package/dist/core/obj-accessor.js +26 -0
  182. package/dist/core/obj-accessor.js.map +1 -0
  183. package/dist/core/reference-map.js +147 -0
  184. package/dist/core/reference-map.js.map +1 -0
  185. package/dist/core/round-rect.js +62 -0
  186. package/dist/core/round-rect.js.map +1 -0
  187. package/dist/core/safe-round.js +10 -0
  188. package/dist/core/safe-round.js.map +1 -0
  189. package/dist/core/script-loader.js +148 -0
  190. package/dist/core/script-loader.js.map +1 -0
  191. package/dist/core/snapshot-taker.js +59 -0
  192. package/dist/core/snapshot-taker.js.map +1 -0
  193. package/dist/core/stack.js +18 -0
  194. package/dist/core/stack.js.map +1 -0
  195. package/dist/core/timecapsule.js +88 -0
  196. package/dist/core/timecapsule.js.map +1 -0
  197. package/dist/core/utils.js +309 -0
  198. package/dist/core/utils.js.map +1 -0
  199. package/dist/decorator/anchors-decorator.js +53 -0
  200. package/dist/decorator/anchors-decorator.js.map +1 -0
  201. package/dist/decorator/bouncing-arrow-decorator.js +52 -0
  202. package/dist/decorator/bouncing-arrow-decorator.js.map +1 -0
  203. package/dist/decorator/data-spread-decorator.js +69 -0
  204. package/dist/decorator/data-spread-decorator.js.map +1 -0
  205. package/dist/decorator/decotag-decorator.js +33 -0
  206. package/dist/decorator/decotag-decorator.js.map +1 -0
  207. package/dist/decorator/index.js +31 -0
  208. package/dist/decorator/index.js.map +1 -0
  209. package/dist/decorator/link-decorator.js +66 -0
  210. package/dist/decorator/link-decorator.js.map +1 -0
  211. package/dist/effect/gradation.js +37 -0
  212. package/dist/effect/gradation.js.map +1 -0
  213. package/dist/effect/index.js +23 -0
  214. package/dist/effect/index.js.map +1 -0
  215. package/dist/effect/shadow.js +33 -0
  216. package/dist/effect/shadow.js.map +1 -0
  217. package/dist/effect/turn.js +25 -0
  218. package/dist/effect/turn.js.map +1 -0
  219. package/dist/event/event-engine.js +76 -0
  220. package/dist/event/event-engine.js.map +1 -0
  221. package/dist/event/event-pump.js +92 -0
  222. package/dist/event/event-pump.js.map +1 -0
  223. package/dist/event/event-tracker.js +97 -0
  224. package/dist/event/event-tracker.js.map +1 -0
  225. package/dist/event/index.js +21 -0
  226. package/dist/event/index.js.map +1 -0
  227. package/dist/event/ua-event-handler.js +453 -0
  228. package/dist/event/ua-event-handler.js.map +1 -0
  229. package/dist/event-map/animator-handler.js +225 -0
  230. package/dist/event-map/animator-handler.js.map +1 -0
  231. package/dist/event-map/animators/animated-icon.js +265 -0
  232. package/dist/event-map/animators/animated-icon.js.map +1 -0
  233. package/dist/event-map/animators/border-highlighting.js +476 -0
  234. package/dist/event-map/animators/border-highlighting.js.map +1 -0
  235. package/dist/event-map/animators/bouncing-arrow.js +226 -0
  236. package/dist/event-map/animators/bouncing-arrow.js.map +1 -0
  237. package/dist/event-map/event-map.js +36 -0
  238. package/dist/event-map/event-map.js.map +1 -0
  239. package/dist/event-map/index.js +20 -0
  240. package/dist/event-map/index.js.map +1 -0
  241. package/dist/event-map/move-handler.js +233 -0
  242. package/dist/event-map/move-handler.js.map +1 -0
  243. package/dist/event-map/paste-handler.js +176 -0
  244. package/dist/event-map/paste-handler.js.map +1 -0
  245. package/dist/event-map/shift-handler.js +55 -0
  246. package/dist/event-map/shift-handler.js.map +1 -0
  247. package/dist/event-map/text-editor-lite.js +276 -0
  248. package/dist/event-map/text-editor-lite.js.map +1 -0
  249. package/dist/event-map/zoom-handler.js +49 -0
  250. package/dist/event-map/zoom-handler.js.map +1 -0
  251. package/dist/index.js +20 -0
  252. package/dist/index.js.map +1 -0
  253. package/dist/layer/action/emphasize.js +42 -0
  254. package/dist/layer/action/emphasize.js.map +1 -0
  255. package/dist/layer/action/popup.js +461 -0
  256. package/dist/layer/action/popup.js.map +1 -0
  257. package/dist/layer/action/pressed.js +31 -0
  258. package/dist/layer/action/pressed.js.map +1 -0
  259. package/dist/layer/add-layer.js +180 -0
  260. package/dist/layer/add-layer.js.map +1 -0
  261. package/dist/layer/decotag-layer.js +121 -0
  262. package/dist/layer/decotag-layer.js.map +1 -0
  263. package/dist/layer/guide-layer.js +292 -0
  264. package/dist/layer/guide-layer.js.map +1 -0
  265. package/dist/layer/index.js +70 -0
  266. package/dist/layer/index.js.map +1 -0
  267. package/dist/layer/layer.js +230 -0
  268. package/dist/layer/layer.js.map +1 -0
  269. package/dist/layer/minimap-layer.js +84 -0
  270. package/dist/layer/minimap-layer.js.map +1 -0
  271. package/dist/layer/model-layer.js +465 -0
  272. package/dist/layer/model-layer.js.map +1 -0
  273. package/dist/layer/modeler/anchor-handler.js +193 -0
  274. package/dist/layer/modeler/anchor-handler.js.map +1 -0
  275. package/dist/layer/modeler/control-handler.js +95 -0
  276. package/dist/layer/modeler/control-handler.js.map +1 -0
  277. package/dist/layer/modeler/focus-outline.js +41 -0
  278. package/dist/layer/modeler/focus-outline.js.map +1 -0
  279. package/dist/layer/modeler/group-outline.js +30 -0
  280. package/dist/layer/modeler/group-outline.js.map +1 -0
  281. package/dist/layer/modeler/index.js +56 -0
  282. package/dist/layer/modeler/index.js.map +1 -0
  283. package/dist/layer/modeler/path-handler.js +300 -0
  284. package/dist/layer/modeler/path-handler.js.map +1 -0
  285. package/dist/layer/modeler/resizer.js +333 -0
  286. package/dist/layer/modeler/resizer.js.map +1 -0
  287. package/dist/layer/modeler/rotator.js +134 -0
  288. package/dist/layer/modeler/rotator.js.map +1 -0
  289. package/dist/layer/modeling-layer.js +491 -0
  290. package/dist/layer/modeling-layer.js.map +1 -0
  291. package/dist/layer/reaction-layer.js +111 -0
  292. package/dist/layer/reaction-layer.js.map +1 -0
  293. package/dist/layer/scroll-layer.js +191 -0
  294. package/dist/layer/scroll-layer.js.map +1 -0
  295. package/dist/layer/selection/selected-finder.js +96 -0
  296. package/dist/layer/selection/selected-finder.js.map +1 -0
  297. package/dist/layer/selection-layer.js +373 -0
  298. package/dist/layer/selection-layer.js.map +1 -0
  299. package/dist/layer/shift-layer.js +83 -0
  300. package/dist/layer/shift-layer.js.map +1 -0
  301. package/dist/layout/absolute.js +30 -0
  302. package/dist/layout/absolute.js.map +1 -0
  303. package/dist/layout/card.js +52 -0
  304. package/dist/layout/card.js.map +1 -0
  305. package/dist/layout/html-absolute.js +32 -0
  306. package/dist/layout/html-absolute.js.map +1 -0
  307. package/dist/layout/index.js +56 -0
  308. package/dist/layout/index.js.map +1 -0
  309. package/dist/layout/layout.js +36 -0
  310. package/dist/layout/layout.js.map +1 -0
  311. package/dist/layout/linear-horizontal.js +56 -0
  312. package/dist/layout/linear-horizontal.js.map +1 -0
  313. package/dist/layout/linear-vertical.js +56 -0
  314. package/dist/layout/linear-vertical.js.map +1 -0
  315. package/dist/layout/table.js +106 -0
  316. package/dist/layout/table.js.map +1 -0
  317. package/dist/license/license.js +170 -0
  318. package/dist/license/license.js.map +1 -0
  319. package/dist/model/compile.js +40 -0
  320. package/dist/model/compile.js.map +1 -0
  321. package/dist/model/duplicate.js +19 -0
  322. package/dist/model/duplicate.js.map +1 -0
  323. package/dist/model/index.js +34 -0
  324. package/dist/model/index.js.map +1 -0
  325. package/dist/model/selector.js +104 -0
  326. package/dist/model/selector.js.map +1 -0
  327. package/dist/style/compile.js +14 -0
  328. package/dist/style/compile.js.map +1 -0
  329. package/dist/style/index.js +14 -0
  330. package/dist/style/index.js.map +1 -0
  331. package/dist/things-scene/api/add-start.js +18 -0
  332. package/dist/things-scene/api/add-start.js.map +1 -0
  333. package/dist/things-scene/api/add.js +71 -0
  334. package/dist/things-scene/api/add.js.map +1 -0
  335. package/dist/things-scene/api/align.js +116 -0
  336. package/dist/things-scene/api/align.js.map +1 -0
  337. package/dist/things-scene/api/center-to.js +50 -0
  338. package/dist/things-scene/api/center-to.js.map +1 -0
  339. package/dist/things-scene/api/change.js +27 -0
  340. package/dist/things-scene/api/change.js.map +1 -0
  341. package/dist/things-scene/api/clipboard.js +45 -0
  342. package/dist/things-scene/api/clipboard.js.map +1 -0
  343. package/dist/things-scene/api/distribute.js +57 -0
  344. package/dist/things-scene/api/distribute.js.map +1 -0
  345. package/dist/things-scene/api/duplicate.js +47 -0
  346. package/dist/things-scene/api/duplicate.js.map +1 -0
  347. package/dist/things-scene/api/fullscreen.js +26 -0
  348. package/dist/things-scene/api/fullscreen.js.map +1 -0
  349. package/dist/things-scene/api/group.js +91 -0
  350. package/dist/things-scene/api/group.js.map +1 -0
  351. package/dist/things-scene/api/ids.js +28 -0
  352. package/dist/things-scene/api/ids.js.map +1 -0
  353. package/dist/things-scene/api/index.js +192 -0
  354. package/dist/things-scene/api/index.js.map +1 -0
  355. package/dist/things-scene/api/listener.js +69 -0
  356. package/dist/things-scene/api/listener.js.map +1 -0
  357. package/dist/things-scene/api/paste-start.js +27 -0
  358. package/dist/things-scene/api/paste-start.js.map +1 -0
  359. package/dist/things-scene/api/place.js +98 -0
  360. package/dist/things-scene/api/place.js.map +1 -0
  361. package/dist/things-scene/api/remove.js +57 -0
  362. package/dist/things-scene/api/remove.js.map +1 -0
  363. package/dist/things-scene/api/symmetry.js +47 -0
  364. package/dist/things-scene/api/symmetry.js.map +1 -0
  365. package/dist/things-scene/api/to-data-url.js +76 -0
  366. package/dist/things-scene/api/to-data-url.js.map +1 -0
  367. package/dist/things-scene/api/zorder.js +68 -0
  368. package/dist/things-scene/api/zorder.js.map +1 -0
  369. package/dist/things-scene/application-context.js +168 -0
  370. package/dist/things-scene/application-context.js.map +1 -0
  371. package/dist/things-scene/config.js +18 -0
  372. package/dist/things-scene/config.js.map +1 -0
  373. package/dist/things-scene/create.js +67 -0
  374. package/dist/things-scene/create.js.map +1 -0
  375. package/dist/things-scene/fps.js +26 -0
  376. package/dist/things-scene/fps.js.map +1 -0
  377. package/dist/things-scene/index.js +152 -0
  378. package/dist/things-scene/index.js.map +1 -0
  379. package/dist/things-scene/polyfill.js +111 -0
  380. package/dist/things-scene/polyfill.js.map +1 -0
  381. package/dist/things-scene/scene.js +442 -0
  382. package/dist/things-scene/scene.js.map +1 -0
  383. package/dist/things-scene/version.js +12 -0
  384. package/dist/things-scene/version.js.map +1 -0
  385. package/package.json +8 -6
@@ -0,0 +1,154 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _component = _interopRequireDefault(require("./component.js"));
8
+ var _htmlOverlayContainer = _interopRequireDefault(require("./html-overlay-container.js"));
9
+ var _logger = require("../core/logger.js");
10
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
11
+ /*
12
+ * Copyright © HatioLab Inc. All rights reserved.
13
+ */
14
+
15
+ const NATURE = {
16
+ mutable: false,
17
+ resizable: true,
18
+ rotatable: true,
19
+ properties: [{
20
+ type: 'board-selector',
21
+ label: 'scene-number',
22
+ name: 'ref',
23
+ placeholder: 'SCENE-1'
24
+ }, {
25
+ type: 'number',
26
+ label: 'round',
27
+ name: 'round',
28
+ property: {
29
+ min: 0
30
+ }
31
+ }, {
32
+ type: 'select',
33
+ label: 'fit',
34
+ name: 'fit',
35
+ property: {
36
+ options: ['', 'both', 'ratio', 'width', 'height', 'none']
37
+ }
38
+ }, {
39
+ type: 'select',
40
+ label: 'mode',
41
+ name: 'mode',
42
+ property: {
43
+ options: ['view', 'interaction']
44
+ }
45
+ }],
46
+ 'value-property': 'ref',
47
+ help: 'scene/component/global-ref'
48
+ };
49
+ class GlobalRef extends _htmlOverlayContainer.default {
50
+ dispose() {
51
+ this._releaseRef();
52
+ super.dispose();
53
+ }
54
+ get nature() {
55
+ return NATURE;
56
+ }
57
+ get hasTextProperty() {
58
+ return false;
59
+ }
60
+ get tagName() {
61
+ return 'div';
62
+ }
63
+ setElementProperties(element) {
64
+ var {
65
+ mode = 'view',
66
+ round = 0
67
+ } = this.state;
68
+ if (mode == 'view') {
69
+ element.style.pointerEvents = 'none';
70
+ } else {
71
+ element.style.pointerEvents = 'inherit';
72
+ }
73
+ element.style.borderRadius = round + 'px';
74
+ }
75
+ ready() {
76
+ super.ready();
77
+ this.fetchRef();
78
+ }
79
+ reposition() {
80
+ if (!this.element) return;
81
+ super.reposition();
82
+
83
+ /* 컴포넌트 자신의 bound가 변화했다면, reference 를 다시 맞춘다. */
84
+ let oldBounds = this._element_bounds;
85
+ let {
86
+ offsetWidth,
87
+ offsetHeight
88
+ } = this.element;
89
+ this._element_bounds = {
90
+ offsetWidth,
91
+ offsetHeight
92
+ };
93
+ if (oldBounds && oldBounds.offsetWidth == offsetWidth && oldBounds.offsetHeight == offsetHeight) {
94
+ return;
95
+ }
96
+ if (this.ref && this.root.target_element) {
97
+ let {
98
+ fit = 'ratio'
99
+ } = this.state;
100
+ this.ref.fit(fit);
101
+ }
102
+ }
103
+ async fetchRef() {
104
+ this._releaseRef();
105
+ var {
106
+ ref,
107
+ fit = 'ratio'
108
+ } = this.state;
109
+ if (!ref) return;
110
+ var provider = this.app.refProvider;
111
+ if (provider && ref) {
112
+ try {
113
+ this.__ref = await provider.get(ref, true);
114
+ this.__ref.target = this.element;
115
+ this.__ref.fit(fit);
116
+ this.__ref.data = this.data;
117
+ } catch (e) {
118
+ (0, _logger.error)(e);
119
+ }
120
+ }
121
+ }
122
+ get ref() {
123
+ return this.__ref;
124
+ }
125
+ set ref(ref) {
126
+ this.setState('ref', ref);
127
+ }
128
+ _releaseRef() {
129
+ if (this.__ref && this.__ref.release) {
130
+ this.__ref.release();
131
+ }
132
+ delete this.__ref;
133
+ }
134
+ onchange(after, before, hint) {
135
+ super.onchange(after, before, hint);
136
+ 'ref' in after && this.fetchRef();
137
+ if ('fit' in after && this.ref) {
138
+ requestAnimationFrame(() => {
139
+ let {
140
+ fit
141
+ } = this.state;
142
+ this.ref.fit(fit);
143
+ });
144
+ }
145
+ if ('data' in after && this.ref) {
146
+ requestAnimationFrame(() => {
147
+ this.ref.data = after.data;
148
+ });
149
+ }
150
+ }
151
+ }
152
+ exports.default = GlobalRef;
153
+ _component.default.register('global-ref', GlobalRef);
154
+ //# sourceMappingURL=global-ref.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"global-ref.js","names":["_component","_interopRequireDefault","require","_htmlOverlayContainer","_logger","e","__esModule","default","NATURE","mutable","resizable","rotatable","properties","type","label","name","placeholder","property","min","options","help","GlobalRef","HTMLOverlayContainer","dispose","_releaseRef","nature","hasTextProperty","tagName","setElementProperties","element","mode","round","state","style","pointerEvents","borderRadius","ready","fetchRef","reposition","oldBounds","_element_bounds","offsetWidth","offsetHeight","ref","root","target_element","fit","provider","app","refProvider","__ref","get","target","data","error","setState","release","onchange","after","before","hint","requestAnimationFrame","exports","Component","register"],"sources":["../../src/components/global-ref.js"],"sourcesContent":["/*\n * Copyright © HatioLab Inc. All rights reserved.\n */\n\nimport Component from './component.js'\nimport HTMLOverlayContainer from './html-overlay-container.js'\nimport { error } from '../core/logger.js'\n\nconst NATURE = {\n mutable: false,\n resizable: true,\n rotatable: true,\n properties: [\n {\n type: 'board-selector',\n label: 'scene-number',\n name: 'ref',\n placeholder: 'SCENE-1'\n },\n {\n type: 'number',\n label: 'round',\n name: 'round',\n property: {\n min: 0\n }\n },\n {\n type: 'select',\n label: 'fit',\n name: 'fit',\n property: {\n options: ['', 'both', 'ratio', 'width', 'height', 'none']\n }\n },\n {\n type: 'select',\n label: 'mode',\n name: 'mode',\n property: {\n options: ['view', 'interaction']\n }\n }\n ],\n 'value-property': 'ref',\n help: 'scene/component/global-ref'\n}\n\nexport default class GlobalRef extends HTMLOverlayContainer {\n dispose() {\n this._releaseRef()\n super.dispose()\n }\n\n get nature() {\n return NATURE\n }\n\n get hasTextProperty() {\n return false\n }\n\n get tagName() {\n return 'div'\n }\n\n setElementProperties(element) {\n var { mode = 'view', round = 0 } = this.state\n\n if (mode == 'view') {\n element.style.pointerEvents = 'none'\n } else {\n element.style.pointerEvents = 'inherit'\n }\n\n element.style.borderRadius = round + 'px'\n }\n\n ready() {\n super.ready()\n this.fetchRef()\n }\n\n reposition() {\n if (!this.element) return\n\n super.reposition()\n\n /* 컴포넌트 자신의 bound가 변화했다면, reference 를 다시 맞춘다. */\n let oldBounds = this._element_bounds\n let { offsetWidth, offsetHeight } = this.element\n this._element_bounds = { offsetWidth, offsetHeight }\n\n if (oldBounds && oldBounds.offsetWidth == offsetWidth && oldBounds.offsetHeight == offsetHeight) {\n return\n }\n\n if (this.ref && this.root.target_element) {\n let { fit = 'ratio' } = this.state\n\n this.ref.fit(fit)\n }\n }\n\n async fetchRef() {\n this._releaseRef()\n\n var { ref, fit = 'ratio' } = this.state\n\n if (!ref) return\n\n var provider = this.app.refProvider\n\n if (provider && ref) {\n try {\n this.__ref = await provider.get(ref, true)\n this.__ref.target = this.element\n this.__ref.fit(fit)\n this.__ref.data = this.data\n } catch (e) {\n error(e)\n }\n }\n }\n\n get ref() {\n return this.__ref\n }\n\n set ref(ref) {\n this.setState('ref', ref)\n }\n\n _releaseRef() {\n if (this.__ref && this.__ref.release) {\n this.__ref.release()\n }\n delete this.__ref\n }\n\n onchange(after, before, hint) {\n super.onchange(after, before, hint)\n\n 'ref' in after && this.fetchRef()\n if ('fit' in after && this.ref) {\n requestAnimationFrame(() => {\n let { fit } = this.state\n this.ref.fit(fit)\n })\n }\n\n if ('data' in after && this.ref) {\n requestAnimationFrame(() => {\n this.ref.data = after.data\n })\n }\n }\n}\n\nComponent.register('global-ref', GlobalRef)\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,171 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _container = _interopRequireDefault(require("./container.js"));
8
+ var _component = _interopRequireDefault(require("./component.js"));
9
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
10
+ /*
11
+ * Copyright © HatioLab Inc. All rights reserved.
12
+ */
13
+
14
+ const GROUP_PROPS = ['refid', 'left', 'top', 'width', 'height', 'rotation', 'animation'];
15
+ class Group extends _container.default {
16
+ isGroup() {
17
+ return true;
18
+ }
19
+
20
+ /*
21
+ * 컴포넌트의 모델 속성값을 가져오는 메쏘드.
22
+ */
23
+ get(property) {
24
+ return this._model[property];
25
+ }
26
+
27
+ /*
28
+ * 컴포넌트의 모델 속성값을 바꾸는 메쏘드. 그룹은 5개의 속성만을 가진다.
29
+ *
30
+ * - 하나의 속성을 변경하는 경우.
31
+ * component.set('top', 10)
32
+ * - 여러개의 속성을 변경하는 경우.
33
+ * component.set({top:10, left:50})
34
+ */
35
+
36
+ set(props, propval) {
37
+ if (typeof props === 'string') return this.set({
38
+ [props]: propval
39
+ });
40
+ var filtered = GROUP_PROPS.reduce((filtered, prop) => {
41
+ if (props.hasOwnProperty(prop)) filtered[prop] = props[prop];
42
+ return filtered;
43
+ }, {});
44
+ return super.set(filtered);
45
+ }
46
+ capture(x, y, except) {
47
+ var captured = super.capture(x, y, except);
48
+
49
+ // 그룹 자신은 capture를 받을 수 없다.
50
+ if (captured === this) return;
51
+ return captured;
52
+ }
53
+ set bounds(bounds) {
54
+ if (this.__MUTATING__) {
55
+ super.bounds = bounds;
56
+ return;
57
+ }
58
+
59
+ // 1. left, top의 변화만큼 translate 한다.
60
+
61
+ var old_bounds = this.bounds;
62
+
63
+ // 2. width, height의 변화비율을 scale-x, scale-y 에 보관한다.
64
+
65
+ var scale = {
66
+ x: bounds.width / old_bounds.width,
67
+ y: bounds.height / old_bounds.height
68
+ };
69
+
70
+ // 3. 기존 포인트들을 기존 거리에 scale-x, scale-y 만큼 조정된 위치로 새로운 bounds의 left-top으로부터 설정한다.
71
+
72
+ this.path = this.path.map(point => {
73
+ return {
74
+ x: bounds.left + (point.x - old_bounds.left) * scale.x,
75
+ y: bounds.top + (point.y - old_bounds.top) * scale.y
76
+ };
77
+ });
78
+
79
+ // 4. PATH스타일(mutable)의 도형은 mutatePath를 사용하고,
80
+ // Bounds 스타일 도형은 기존 포인트들을 기존 거리에 scale-x, scale-y 만큼 조정된 center 위치로부터
81
+ // 새로운 bounds를 설정한다.
82
+
83
+ this.components && this.components.forEach(comp => {
84
+ if (comp.mutable) {
85
+ comp.mutatePath(null, function (path_in_parent) {
86
+ return path_in_parent.map(function (point) {
87
+ return {
88
+ x: point.x * scale.x,
89
+ y: point.y * scale.y
90
+ };
91
+ });
92
+ });
93
+ } else {
94
+ let bounds = comp.bounds;
95
+ let center = comp.center;
96
+ let delta_center = {
97
+ x: center.x * (1 - scale.x),
98
+ y: center.y * (1 - scale.y)
99
+ };
100
+ let delta_width = bounds.width * (1 - scale.x);
101
+ let delta_height = bounds.height * (1 - scale.y);
102
+ let delta_left = -(delta_center.x - delta_width / 2);
103
+ let delta_top = -(delta_center.y - delta_height / 2);
104
+ comp.bounds = {
105
+ left: bounds.left + delta_left,
106
+ top: bounds.top + delta_top,
107
+ width: bounds.width * scale.x,
108
+ height: bounds.height * scale.y
109
+ };
110
+ }
111
+ });
112
+ }
113
+ get focusible() {
114
+ return false;
115
+ }
116
+ get bounds() {
117
+ return super.bounds;
118
+ }
119
+ get hasTextProperty() {
120
+ return false;
121
+ }
122
+ isIdentifiable() {
123
+ return false;
124
+ }
125
+ calculateBounds() {
126
+ this.clearCache();
127
+ this.__MUTATING__ = true;
128
+ this.mutateBounds(function (bounds) {
129
+ var union = _component.default.union(this.components.map(component => {
130
+ return component.bounds;
131
+ }));
132
+ this.components.forEach(component => {
133
+ let cbounds = component.bounds;
134
+ component.bounds = {
135
+ left: cbounds.left - union.left,
136
+ top: cbounds.top - union.top,
137
+ width: cbounds.width,
138
+ height: cbounds.height
139
+ };
140
+ });
141
+ return {
142
+ left: bounds.left + union.left,
143
+ top: bounds.top + union.top,
144
+ width: union.width,
145
+ height: union.height
146
+ };
147
+ }, this);
148
+ this.__MUTATING__ = false;
149
+ if (this.parent.isGroup()) this.parent.calculateBounds();
150
+ }
151
+
152
+ /* 그룹은 자체적으로는 아무것도 그리지 않는다. */
153
+
154
+ render(context) {}
155
+ postrender(context) {
156
+ /* 자식 컴포넌트들 그리기 */
157
+ var {
158
+ top,
159
+ left,
160
+ scale
161
+ } = this.state;
162
+ context.translate(left, top);
163
+ this.layout.drawables(this).forEach(m => {
164
+ m.draw(context);
165
+ });
166
+ context.translate(-left, -top);
167
+ }
168
+ }
169
+ exports.default = Group;
170
+ _component.default.register('group', Group);
171
+ //# sourceMappingURL=group.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"group.js","names":["_container","_interopRequireDefault","require","_component","e","__esModule","default","GROUP_PROPS","Group","Container","isGroup","get","property","_model","set","props","propval","filtered","reduce","prop","hasOwnProperty","capture","x","y","except","captured","bounds","__MUTATING__","old_bounds","scale","width","height","path","map","point","left","top","components","forEach","comp","mutable","mutatePath","path_in_parent","center","delta_center","delta_width","delta_height","delta_left","delta_top","focusible","hasTextProperty","isIdentifiable","calculateBounds","clearCache","mutateBounds","union","Component","component","cbounds","parent","render","context","postrender","state","translate","layout","drawables","m","draw","exports","register"],"sources":["../../src/components/group.js"],"sourcesContent":["/*\n * Copyright © HatioLab Inc. All rights reserved.\n */\n\nimport Container from './container.js'\nimport Component from './component.js'\n\nconst GROUP_PROPS = ['refid', 'left', 'top', 'width', 'height', 'rotation', 'animation']\n\nexport default class Group extends Container {\n isGroup() {\n return true\n }\n\n /*\n * 컴포넌트의 모델 속성값을 가져오는 메쏘드.\n */\n get(property) {\n return this._model[property]\n }\n\n /*\n * 컴포넌트의 모델 속성값을 바꾸는 메쏘드. 그룹은 5개의 속성만을 가진다.\n *\n * - 하나의 속성을 변경하는 경우.\n * component.set('top', 10)\n * - 여러개의 속성을 변경하는 경우.\n * component.set({top:10, left:50})\n */\n\n set(props, propval) {\n if (typeof props === 'string') return this.set({ [props]: propval })\n\n var filtered = GROUP_PROPS.reduce((filtered, prop) => {\n if (props.hasOwnProperty(prop)) filtered[prop] = props[prop]\n return filtered\n }, {})\n\n return super.set(filtered)\n }\n\n capture(x, y, except) {\n var captured = super.capture(x, y, except)\n\n // 그룹 자신은 capture를 받을 수 없다.\n if (captured === this) return\n\n return captured\n }\n\n set bounds(bounds) {\n if (this.__MUTATING__) {\n super.bounds = bounds\n return\n }\n\n // 1. left, top의 변화만큼 translate 한다.\n\n var old_bounds = this.bounds\n\n // 2. width, height의 변화비율을 scale-x, scale-y 에 보관한다.\n\n var scale = {\n x: bounds.width / old_bounds.width,\n y: bounds.height / old_bounds.height\n }\n\n // 3. 기존 포인트들을 기존 거리에 scale-x, scale-y 만큼 조정된 위치로 새로운 bounds의 left-top으로부터 설정한다.\n\n this.path = this.path.map(point => {\n return {\n x: bounds.left + (point.x - old_bounds.left) * scale.x,\n y: bounds.top + (point.y - old_bounds.top) * scale.y\n }\n })\n\n // 4. PATH스타일(mutable)의 도형은 mutatePath를 사용하고,\n // Bounds 스타일 도형은 기존 포인트들을 기존 거리에 scale-x, scale-y 만큼 조정된 center 위치로부터\n // 새로운 bounds를 설정한다.\n\n this.components &&\n this.components.forEach(comp => {\n if (comp.mutable) {\n comp.mutatePath(null, function (path_in_parent) {\n return path_in_parent.map(function (point) {\n return {\n x: point.x * scale.x,\n y: point.y * scale.y\n }\n })\n })\n } else {\n let bounds = comp.bounds\n let center = comp.center\n\n let delta_center = {\n x: center.x * (1 - scale.x),\n y: center.y * (1 - scale.y)\n }\n\n let delta_width = bounds.width * (1 - scale.x)\n let delta_height = bounds.height * (1 - scale.y)\n\n let delta_left = -(delta_center.x - delta_width / 2)\n let delta_top = -(delta_center.y - delta_height / 2)\n\n comp.bounds = {\n left: bounds.left + delta_left,\n top: bounds.top + delta_top,\n width: bounds.width * scale.x,\n height: bounds.height * scale.y\n }\n }\n })\n }\n\n get focusible() {\n return false\n }\n\n get bounds() {\n return super.bounds\n }\n\n get hasTextProperty() {\n return false\n }\n\n isIdentifiable() {\n return false\n }\n\n calculateBounds() {\n this.clearCache()\n\n this.__MUTATING__ = true\n\n this.mutateBounds(function (bounds) {\n var union = Component.union(\n this.components.map(component => {\n return component.bounds\n })\n )\n\n this.components.forEach(component => {\n let cbounds = component.bounds\n\n component.bounds = {\n left: cbounds.left - union.left,\n top: cbounds.top - union.top,\n width: cbounds.width,\n height: cbounds.height\n }\n })\n\n return {\n left: bounds.left + union.left,\n top: bounds.top + union.top,\n width: union.width,\n height: union.height\n }\n }, this)\n\n this.__MUTATING__ = false\n\n if (this.parent.isGroup()) this.parent.calculateBounds()\n }\n\n /* 그룹은 자체적으로는 아무것도 그리지 않는다. */\n\n render(context) {}\n\n postrender(context) {\n /* 자식 컴포넌트들 그리기 */\n var { top, left, scale } = this.state\n context.translate(left, top)\n\n this.layout.drawables(this).forEach(m => {\n m.draw(context)\n })\n\n context.translate(-left, -top)\n }\n}\n\nComponent.register('group', Group)\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.createElement = exports.createCanvas = void 0;
7
+ /*
8
+ * Copyright © HatioLab Inc. All rights reserved.
9
+ */
10
+
11
+ var createCanvas, createElement;
12
+ if (typeof document === 'undefined') {
13
+ exports.createCanvas = createCanvas = function (width, height) {
14
+ return new Canvas(width, height);
15
+ };
16
+ } else {
17
+ exports.createCanvas = createCanvas = function (width, height) {
18
+ var canvas = document.createElement('canvas');
19
+ canvas.width = width;
20
+ canvas.height = height;
21
+ return canvas;
22
+ };
23
+ }
24
+ //# sourceMappingURL=elements.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"elements.js","names":["createCanvas","createElement","document","exports","width","height","Canvas","canvas"],"sources":["../../../src/components/html/elements.js"],"sourcesContent":["/*\n * Copyright © HatioLab Inc. All rights reserved.\n */\n\nexport var createCanvas, createElement\n\nif (typeof document === 'undefined') {\n createCanvas = function(width, height) {\n return new Canvas(width, height)\n }\n} else {\n createCanvas = function(width, height) {\n var canvas = document.createElement('canvas')\n canvas.width = width\n canvas.height = height\n return canvas\n }\n}\n"],"mappings":";;;;;;AAAA;AACA;AACA;;AAEO,IAAIA,YAAY,EAAEC,aAAa;AAEtC,IAAI,OAAOC,QAAQ,KAAK,WAAW,EAAE;EACnCC,OAAA,CAAAH,YAAA,GAAAA,YAAY,GAAG,SAAAA,CAASI,KAAK,EAAEC,MAAM,EAAE;IACrC,OAAO,IAAIC,MAAM,CAACF,KAAK,EAAEC,MAAM,CAAC;EAClC,CAAC;AACH,CAAC,MAAM;EACLF,OAAA,CAAAH,YAAA,GAAAA,YAAY,GAAG,SAAAA,CAASI,KAAK,EAAEC,MAAM,EAAE;IACrC,IAAIE,MAAM,GAAGL,QAAQ,CAACD,aAAa,CAAC,QAAQ,CAAC;IAC7CM,MAAM,CAACH,KAAK,GAAGA,KAAK;IACpBG,MAAM,CAACF,MAAM,GAAGA,MAAM;IACtB,OAAOE,MAAM;EACf,CAAC;AACH","ignoreList":[]}
@@ -0,0 +1,126 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = fill;
7
+ /*
8
+ * Copyright © HatioLab Inc. All rights reserved.
9
+ */
10
+
11
+ function fill(component) {
12
+ var element = component.element;
13
+ var fillStyle = component.fillStyle;
14
+ var style = element.style;
15
+ if (!fillStyle) {
16
+ style.background = 'transparent';
17
+ return;
18
+ }
19
+ if (typeof fillStyle == 'string') {
20
+ style.backgroundColor = fillStyle;
21
+ } else {
22
+ switch (fillStyle.type) {
23
+ case 'pattern':
24
+ style.backgroundImage = 'url(' + fillStyle.image + ')';
25
+ style.backgroundColor = 'transparent';
26
+ if (fillStyle.fitPattern) {
27
+ style.backgroundSize = '100% 100%';
28
+ } else if (!fillStyle.width && !fillStyle.height) {
29
+ style.backgroundSize = 'contain';
30
+ } else {
31
+ style.backgroundSize = `${fillStyle.width ? fillStyle.width + 'px' : 'auto'} ${fillStyle.height ? fillStyle.height + 'px' : 'auto'}`;
32
+ }
33
+ if (fillStyle.fitPattern) {
34
+ style.backgroundRepeat = 'no-repeat';
35
+ } else {
36
+ const {
37
+ offsetX,
38
+ offsetY,
39
+ noRepeat,
40
+ align,
41
+ color
42
+ } = fillStyle;
43
+ if (noRepeat) {
44
+ style.backgroundRepeat = 'no-repeat';
45
+ }
46
+ if (color) {
47
+ style.backgroundColor = color;
48
+ }
49
+ if (align) {
50
+ switch (align) {
51
+ case 'center':
52
+ style.backgroundPosition = 'center center';
53
+ break;
54
+ case 'left-top':
55
+ style.backgroundPosition = 'left top';
56
+ break;
57
+ case 'left-bottom':
58
+ style.backgroundPosition = 'left bottom';
59
+ break;
60
+ case 'right-top':
61
+ style.backgroundPosition = 'right top';
62
+ break;
63
+ case 'right-bottom':
64
+ style.backgroundPosition = 'right bottom';
65
+ break;
66
+ case 'left':
67
+ style.backgroundPosition = 'left center';
68
+ break;
69
+ case 'right':
70
+ style.backgroundPosition = 'right center';
71
+ break;
72
+ case 'top':
73
+ style.backgroundPosition = 'center top';
74
+ break;
75
+ case 'bottom':
76
+ style.backgroundPosition = 'center bottom';
77
+ break;
78
+ }
79
+ } else if (offsetX || offsetY) {
80
+ style.backgroundPosition = `${Number(offsetX) || 0}px ${Number(offsetY) || 0}px`;
81
+ } else {
82
+ delete style.backgroundPosition;
83
+ }
84
+ }
85
+ break;
86
+ case 'gradient':
87
+ style.background = gradation(component, fillStyle);
88
+ break;
89
+ default:
90
+ }
91
+ }
92
+ }
93
+ function gradation(component, fillStyle) {
94
+ var colorStops = fillStyle.colorStops;
95
+ var type = fillStyle.gradientType;
96
+ if (colorStops instanceof Array && colorStops.length > 0) {
97
+ switch (type) {
98
+ case 'radial':
99
+ let center = fillStyle.center || 'center';
100
+ return 'radial-gradient(farthest-corner at ' + position(component, center).map(p => p + 'px').join(' ') + ',' + colorStops.map(stop => `${stop.color} ${stop.position * 100}%`).join(',') + ')';
101
+ case 'linear':
102
+ let angle = (fillStyle.rotation || 0) * 180 / 3.141592653589793 + 90 + 'deg';
103
+ return 'linear-gradient(' + angle + ', ' + colorStops.map(stop => `${stop.color} ${stop.position * 100}%`).join(',') + ')';
104
+ }
105
+ }
106
+ return '';
107
+ }
108
+ function position(component, center) {
109
+ var {
110
+ width,
111
+ height
112
+ } = component.bounds;
113
+ switch (center) {
114
+ case 'center':
115
+ return [width / 2, height / 2];
116
+ case 'left-top':
117
+ return [0, 0];
118
+ case 'right-top':
119
+ return [width, 0];
120
+ case 'left-bottom':
121
+ return [0, height];
122
+ default:
123
+ return [width, height];
124
+ }
125
+ }
126
+ //# sourceMappingURL=fill.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fill.js","names":["fill","component","element","fillStyle","style","background","backgroundColor","type","backgroundImage","image","fitPattern","backgroundSize","width","height","backgroundRepeat","offsetX","offsetY","noRepeat","align","color","backgroundPosition","Number","gradation","colorStops","gradientType","Array","length","center","position","map","p","join","stop","angle","rotation","bounds"],"sources":["../../../src/components/html/fill.js"],"sourcesContent":["/*\n * Copyright © HatioLab Inc. All rights reserved.\n */\n\nexport default function fill(component) {\n var element = component.element\n var fillStyle = component.fillStyle\n var style = element.style\n\n if (!fillStyle) {\n style.background = 'transparent'\n return\n }\n\n if (typeof fillStyle == 'string') {\n style.backgroundColor = fillStyle\n } else {\n switch (fillStyle.type) {\n case 'pattern':\n style.backgroundImage = 'url(' + fillStyle.image + ')'\n style.backgroundColor = 'transparent'\n\n if (fillStyle.fitPattern) {\n style.backgroundSize = '100% 100%'\n } else if (!fillStyle.width && !fillStyle.height) {\n style.backgroundSize = 'contain'\n } else {\n style.backgroundSize = `${fillStyle.width ? fillStyle.width + 'px' : 'auto'} ${\n fillStyle.height ? fillStyle.height + 'px' : 'auto'\n }`\n }\n\n if (fillStyle.fitPattern) {\n style.backgroundRepeat = 'no-repeat'\n } else {\n const { offsetX, offsetY, noRepeat, align, color } = fillStyle\n if (noRepeat) {\n style.backgroundRepeat = 'no-repeat'\n }\n if (color) {\n style.backgroundColor = color\n }\n if (align) {\n switch (align) {\n case 'center':\n style.backgroundPosition = 'center center'\n break\n case 'left-top':\n style.backgroundPosition = 'left top'\n break\n case 'left-bottom':\n style.backgroundPosition = 'left bottom'\n break\n case 'right-top':\n style.backgroundPosition = 'right top'\n break\n case 'right-bottom':\n style.backgroundPosition = 'right bottom'\n break\n case 'left':\n style.backgroundPosition = 'left center'\n break\n case 'right':\n style.backgroundPosition = 'right center'\n break\n case 'top':\n style.backgroundPosition = 'center top'\n break\n case 'bottom':\n style.backgroundPosition = 'center bottom'\n break\n }\n } else if (offsetX || offsetY) {\n style.backgroundPosition = `${Number(offsetX) || 0}px ${Number(offsetY) || 0}px`\n } else {\n delete style.backgroundPosition\n }\n }\n break\n\n case 'gradient':\n style.background = gradation(component, fillStyle)\n break\n\n default:\n }\n }\n}\n\nfunction gradation(component, fillStyle) {\n var colorStops = fillStyle.colorStops\n var type = fillStyle.gradientType\n\n if (colorStops instanceof Array && colorStops.length > 0) {\n switch (type) {\n case 'radial':\n let center = fillStyle.center || 'center'\n return (\n 'radial-gradient(farthest-corner at ' +\n position(component, center)\n .map(p => p + 'px')\n .join(' ') +\n ',' +\n colorStops.map(stop => `${stop.color} ${stop.position * 100}%`).join(',') +\n ')'\n )\n\n case 'linear':\n let angle = ((fillStyle.rotation || 0) * 180) / 3.141592653589793 + 90 + 'deg'\n return (\n 'linear-gradient(' +\n angle +\n ', ' +\n colorStops.map(stop => `${stop.color} ${stop.position * 100}%`).join(',') +\n ')'\n )\n }\n }\n\n return ''\n}\n\nfunction position(component, center) {\n var { width, height } = component.bounds\n\n switch (center) {\n case 'center':\n return [width / 2, height / 2]\n case 'left-top':\n return [0, 0]\n case 'right-top':\n return [width, 0]\n case 'left-bottom':\n return [0, height]\n default:\n return [width, height]\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,119 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = reposition;
7
+ var _const = require("../../const.js");
8
+ var _fill = _interopRequireDefault(require("./fill.js"));
9
+ var _shadow = _interopRequireDefault(require("./shadow.js"));
10
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
11
+ /*
12
+ * Copyright © HatioLab Inc. All rights reserved.
13
+ */
14
+
15
+ const SCALE_DEFAULT = {
16
+ x: 1,
17
+ y: 1
18
+ };
19
+ const TRANSLATE_DEFAULT = {
20
+ x: 0,
21
+ y: 0
22
+ };
23
+ const DEFAULT_STYLE = {
24
+ boxSizing: 'border-box',
25
+ margin: '0px',
26
+ position: 'absolute',
27
+ outline: 'none'
28
+ };
29
+ function reposition(component) {
30
+ var {
31
+ id,
32
+ scale = SCALE_DEFAULT,
33
+ translate = TRANSLATE_DEFAULT,
34
+ bold,
35
+ italic,
36
+ fontFamily = '',
37
+ textAlign,
38
+ textBaseline,
39
+ textOverflow,
40
+ paddingTop,
41
+ paddingBottom,
42
+ paddingLeft,
43
+ paddingRight,
44
+ fontSize = _const.DEFAULT.FONT_SIZE,
45
+ lineWidth = 0,
46
+ lineHeight,
47
+ lineDash
48
+ } = component.state;
49
+ paddingBottom ||= 0;
50
+ paddingTop ||= 0;
51
+ paddingLeft ||= 0;
52
+ paddingRight ||= 0;
53
+ var className = component.state['class'];
54
+ var text = component.text;
55
+ var {
56
+ strokeStyle,
57
+ fillStyle,
58
+ rotation = 0,
59
+ fontColor,
60
+ hidden
61
+ } = component;
62
+ var {
63
+ left,
64
+ top,
65
+ width,
66
+ height
67
+ } = component.bounds;
68
+
69
+ // element의 기본 속성을 설정한다.
70
+ var element = component.element;
71
+ element.hidden = hidden;
72
+ if (id) element.id = id;
73
+ if (className) element.className = className;
74
+
75
+ // element의 기본 style을 설정한다.
76
+
77
+ Object.assign(element.style, DEFAULT_STYLE, {
78
+ fontFamily: fontFamily,
79
+ fontSize: fontSize + 'px',
80
+ width: width + 'px',
81
+ height: height + 'px',
82
+ paddingTop: paddingTop + 'px',
83
+ paddingRight: paddingRight + 'px',
84
+ paddingBottom: paddingBottom + 'px',
85
+ paddingLeft: paddingLeft + 'px',
86
+ border: lineWidth + 'px',
87
+ borderColor: strokeStyle,
88
+ borderStyle: lineWidth > 0 ? lineDash || _const.DEFAULT.LINE_DASH : '',
89
+ color: fontColor,
90
+ fontWeight: bold ? 'bold' : '',
91
+ fontStyle: italic ? 'italic' : '',
92
+ textAlign: textAlign == 'end' ? 'right' : textAlign == 'start' ? 'left' : textAlign,
93
+ verticalAlign: textBaseline,
94
+ lineHeight: lineHeight === undefined ? '' : lineHeight + 'px',
95
+ whiteSpace: textOverflow ? 'nowrap' : '',
96
+ overflow: textOverflow ? 'hidden' : '',
97
+ textOverflow: textOverflow || ''
98
+ }, /* 3D 공간에서는 자체적으로 위치를 조정하므로, left, top을 설정하지 않는다. */
99
+ !component.isIn3DSpace() ? {
100
+ left: left + 'px',
101
+ top: top + 'px'
102
+ } : {});
103
+ (0, _fill.default)(component);
104
+ (0, _shadow.default)(component);
105
+ if (component.isIn3DSpace()) {
106
+ /* 3D 공간에서는 자체적으로 transform을 사용하므로 종료한다. */
107
+ return;
108
+ }
109
+ var delta = component.delta();
110
+ var sx = (scale && scale.x || 1) * delta.sx;
111
+ var sy = (scale && scale.y || 1) * delta.sy;
112
+ var theta = (rotation || 0) + delta.theta;
113
+ var tx = delta.tx || 0;
114
+ var ty = delta.ty || 0;
115
+
116
+ /* CONFIRM-ME `transform: perspective(1px)` 스타일 설정은 scaling된 dom element를 좀 더 선명하게 보이도록 해준다. (Chrome 브라우저에서) */
117
+ element.style.transform = `rotate(${theta}rad) translate(${tx}px, ${ty}px) scale(${sx}, ${sy}) perspective(1px)`;
118
+ }
119
+ //# sourceMappingURL=reposition.js.map