@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,103 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = buildEvaluator;
7
+ var _logger = require("../../core/logger.js");
8
+ var _utils = require("../../core/utils.js");
9
+ /*
10
+ * Copyright © HatioLab Inc. All rights reserved.
11
+ */
12
+
13
+ function tostring(value) {
14
+ var v = (0, _utils.objToVal)(value);
15
+ return v == undefined ? '' : String(v);
16
+ }
17
+ function tonumber(value) {
18
+ return Number((0, _utils.objToVal)(value));
19
+ }
20
+
21
+ /* 값을 그대로 반환하는 evaluator */
22
+ function value(value) {
23
+ return value;
24
+ }
25
+ function valueString(value) {
26
+ return tostring(value);
27
+ }
28
+ function valueNumber(value) {
29
+ return tonumber(value);
30
+ }
31
+
32
+ /* map에 매핑된 값을 반환하는 evaluator */
33
+ function map(value) {
34
+ if (!this.param) return;
35
+ value = tostring(value);
36
+ if (this.param.hasOwnProperty(value)) return this.param[value];
37
+ return this.param['default'];
38
+ }
39
+
40
+ /* 범위에 매핑된 값을 반환하는 evaluator */
41
+ function range(value) {
42
+ var {
43
+ param
44
+ } = this;
45
+ if (!param) return;
46
+ for (let range in param) {
47
+ let [from, to] = range.split('~');
48
+ let from_defined = !!from;
49
+ let to_defined = !!to;
50
+
51
+ // if(type === 'number') {
52
+ from = parseFloat(from);
53
+ to = parseFloat(to);
54
+ value = tonumber(value);
55
+ // } else {
56
+ // from = String(from)
57
+ // to = String(to)
58
+ // value = tostring(value)
59
+ // }
60
+
61
+ // from이나 to 둘 중 하나만 있는 경우 먼저 계산
62
+ if (from_defined && !to_defined && value >= from) return param[range];else if (!from_defined && to_defined && value < from) return param[range];
63
+
64
+ // 소수점이 있으므로 from <= value < to 가 되야함
65
+ if (value >= from && value < to) return param[range];
66
+ }
67
+ return param['default'];
68
+ }
69
+
70
+ /* degree 값을 radian으로 변환하는 evaluator */
71
+ function radian(value) {
72
+ return tonumber(value) * Math.PI / 180;
73
+ }
74
+ function noop() {}
75
+
76
+ /* 자바스크립트 로직으로 문자열을 evaluator로 변환 */
77
+ function build(script) {
78
+ try {
79
+ return new Function('value', 'targets', script);
80
+ } catch (e) {
81
+ (0, _logger.error)(e);
82
+ return noop;
83
+ }
84
+ }
85
+ function buildEvaluator(mapping, owner, rule, param, type) {
86
+ switch (rule) {
87
+ case 'value':
88
+ if (type === 'text' || type === 'string') return valueString.bind(mapping);
89
+ if (type === 'number') return valueNumber.bind(mapping);
90
+ return value.bind(owner);
91
+ case 'map':
92
+ return map.bind(mapping);
93
+ case 'range':
94
+ return range.bind(mapping);
95
+ case 'radian':
96
+ return radian.bind(mapping);
97
+ case 'eval':
98
+ return build(param).bind(owner);
99
+ default:
100
+ return value.bind(owner);
101
+ }
102
+ }
103
+ //# sourceMappingURL=evaluator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"evaluator.js","names":["_logger","require","_utils","tostring","value","v","objToVal","undefined","String","tonumber","Number","valueString","valueNumber","map","param","hasOwnProperty","range","from","to","split","from_defined","to_defined","parseFloat","radian","Math","PI","noop","build","script","Function","e","error","buildEvaluator","mapping","owner","rule","type","bind"],"sources":["../../../src/components/data/evaluator.js"],"sourcesContent":["/*\n * Copyright © HatioLab Inc. All rights reserved.\n */\n\nimport { error } from '../../core/logger.js'\nimport { objToVal } from '../../core/utils.js'\n\nfunction tostring(value) {\n var v = objToVal(value)\n return v == undefined ? '' : String(v)\n}\n\nfunction tonumber(value) {\n return Number(objToVal(value))\n}\n\n/* 값을 그대로 반환하는 evaluator */\nfunction value(value) {\n return value\n}\n\nfunction valueString(value) {\n return tostring(value)\n}\n\nfunction valueNumber(value) {\n return tonumber(value)\n}\n\n/* map에 매핑된 값을 반환하는 evaluator */\nfunction map(value) {\n if (!this.param) return\n\n value = tostring(value)\n\n if (this.param.hasOwnProperty(value)) return this.param[value]\n\n return this.param['default']\n}\n\n/* 범위에 매핑된 값을 반환하는 evaluator */\nfunction range(value) {\n var { param } = this\n\n if (!param) return\n\n for (let range in param) {\n let [from, to] = range.split('~')\n let from_defined = !!from\n let to_defined = !!to\n\n // if(type === 'number') {\n from = parseFloat(from)\n to = parseFloat(to)\n value = tonumber(value)\n // } else {\n // from = String(from)\n // to = String(to)\n // value = tostring(value)\n // }\n\n // from이나 to 둘 중 하나만 있는 경우 먼저 계산\n if (from_defined && !to_defined && value >= from) return param[range]\n else if (!from_defined && to_defined && value < from) return param[range]\n\n // 소수점이 있으므로 from <= value < to 가 되야함\n if (value >= from && value < to) return param[range]\n }\n\n return param['default']\n}\n\n/* degree 값을 radian으로 변환하는 evaluator */\nfunction radian(value) {\n return (tonumber(value) * Math.PI) / 180\n}\n\nfunction noop() {}\n\n/* 자바스크립트 로직으로 문자열을 evaluator로 변환 */\nfunction build(script) {\n try {\n return new Function('value', 'targets', script)\n } catch (e) {\n error(e)\n return noop\n }\n}\n\nexport default function buildEvaluator(mapping, owner, rule, param, type) {\n switch (rule) {\n case 'value':\n if (type === 'text' || type === 'string') return valueString.bind(mapping)\n if (type === 'number') return valueNumber.bind(mapping)\n return value.bind(owner)\n case 'map':\n return map.bind(mapping)\n case 'range':\n return range.bind(mapping)\n case 'radian':\n return radian.bind(mapping)\n case 'eval':\n return build(param).bind(owner)\n default:\n return value.bind(owner)\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,104 @@
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 _ellipse = _interopRequireDefault(require("./ellipse.js"));
9
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
10
+ /*
11
+ * Copyright © HatioLab Inc. All rights reserved.
12
+ */
13
+
14
+ const NATURE = {
15
+ mutable: false,
16
+ resizable: true,
17
+ rotatable: true,
18
+ properties: [{
19
+ type: 'number',
20
+ label: 'ratio',
21
+ name: 'ratio',
22
+ property: 'ratio'
23
+ }],
24
+ help: 'scene/component/donut'
25
+ };
26
+ var controlHandler = {
27
+ ondragmove: function (point, index, component) {
28
+ var controls = component.controls;
29
+ var {
30
+ cx,
31
+ rx
32
+ } = component.model;
33
+ rx = Math.abs(rx);
34
+ var transcoorded = component.transcoordP2S(point.x, point.y);
35
+ var ratio = (transcoorded.x - cx) / rx * 100;
36
+ ratio = ratio >= 100 || ratio <= -100 ? 100 : Math.abs(ratio);
37
+ component.set({
38
+ ratio
39
+ });
40
+ }
41
+ };
42
+ class Donut extends _ellipse.default {
43
+ is3dish() {
44
+ return false;
45
+ }
46
+ render(ctx) {
47
+ var {
48
+ ratio = 50,
49
+ cx,
50
+ cy,
51
+ rx,
52
+ ry,
53
+ startAngle,
54
+ endAngle,
55
+ anticlockwise
56
+ } = this.state;
57
+ rx = Math.abs(rx);
58
+ ry = Math.abs(ry);
59
+ ctx.beginPath();
60
+ ctx.ellipse(cx, cy, rx, ry, 0, startAngle || 0, endAngle || 2 * Math.PI, anticlockwise);
61
+ ctx.moveTo(cx + rx / 100 * ratio, cy);
62
+ // 맨 마지막 속성이 true면 원의 범위만큼 공백이 됨
63
+ ctx.ellipse(cx, cy, rx / 100 * ratio, ry / 100 * ratio, 0, startAngle || 0, endAngle || 2 * Math.PI, true);
64
+ }
65
+ contains(x, y) {
66
+ var {
67
+ cx,
68
+ cy,
69
+ rx,
70
+ ry,
71
+ ratio
72
+ } = this.state;
73
+ rx = Math.abs(rx);
74
+ ry = Math.abs(ry);
75
+ var normx = (x - cx) / (rx * 2 - 0.5);
76
+ var normy = (y - cy) / (ry * 2 - 0.5);
77
+ var ratiox = (x - cx) / (rx / 100 * ratio * 2 - 0.5);
78
+ var ratioy = (y - cy) / (ry / 100 * ratio * 2 - 0.5);
79
+ var result = false;
80
+ if (normx * normx + normy * normy < 0.25 && ratiox * ratiox + ratioy * ratioy > 0.25) result = !result;
81
+ return result;
82
+ }
83
+ get controls() {
84
+ var {
85
+ cx,
86
+ cy,
87
+ rx,
88
+ ratio
89
+ } = this.state;
90
+ rx = Math.abs(rx);
91
+ return [{
92
+ x: cx + rx / 100 * ratio,
93
+ y: cy,
94
+ handler: controlHandler
95
+ }];
96
+ }
97
+ get nature() {
98
+ return NATURE;
99
+ }
100
+ }
101
+ exports.default = Donut;
102
+ _component.default.memoize(Donut.prototype, 'controls', false);
103
+ _component.default.register('donut', Donut);
104
+ //# sourceMappingURL=donut.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"donut.js","names":["_component","_interopRequireDefault","require","_ellipse","e","__esModule","default","NATURE","mutable","resizable","rotatable","properties","type","label","name","property","help","controlHandler","ondragmove","point","index","component","controls","cx","rx","model","Math","abs","transcoorded","transcoordP2S","x","y","ratio","set","Donut","Ellipse","is3dish","render","ctx","cy","ry","startAngle","endAngle","anticlockwise","state","beginPath","ellipse","PI","moveTo","contains","normx","normy","ratiox","ratioy","result","handler","nature","exports","Component","memoize","prototype","register"],"sources":["../../src/components/donut.js"],"sourcesContent":["/*\n * Copyright © HatioLab Inc. All rights reserved.\n */\n\nimport Component from './component.js'\nimport Ellipse from './ellipse.js'\n\nconst NATURE = {\n mutable: false,\n resizable: true,\n rotatable: true,\n properties: [\n {\n type: 'number',\n label: 'ratio',\n name: 'ratio',\n property: 'ratio'\n }\n ],\n help: 'scene/component/donut'\n}\n\nvar controlHandler = {\n ondragmove: function (point, index, component) {\n var controls = component.controls\n var { cx, rx } = component.model\n rx = Math.abs(rx)\n\n var transcoorded = component.transcoordP2S(point.x, point.y)\n\n var ratio = ((transcoorded.x - cx) / rx) * 100\n\n ratio = ratio >= 100 || ratio <= -100 ? 100 : Math.abs(ratio)\n\n component.set({ ratio })\n }\n}\n\nexport default class Donut extends Ellipse {\n is3dish() {\n return false\n }\n\n render(ctx) {\n var { ratio = 50, cx, cy, rx, ry, startAngle, endAngle, anticlockwise } = this.state\n rx = Math.abs(rx)\n ry = Math.abs(ry)\n\n ctx.beginPath()\n ctx.ellipse(cx, cy, rx, ry, 0, startAngle || 0, endAngle || 2 * Math.PI, anticlockwise)\n\n ctx.moveTo(cx + (rx / 100) * ratio, cy)\n // 맨 마지막 속성이 true면 원의 범위만큼 공백이 됨\n ctx.ellipse(cx, cy, (rx / 100) * ratio, (ry / 100) * ratio, 0, startAngle || 0, endAngle || 2 * Math.PI, true)\n }\n\n contains(x, y) {\n var { cx, cy, rx, ry, ratio } = this.state\n rx = Math.abs(rx)\n ry = Math.abs(ry)\n\n var normx = (x - cx) / (rx * 2 - 0.5)\n var normy = (y - cy) / (ry * 2 - 0.5)\n var ratiox = (x - cx) / ((rx / 100) * ratio * 2 - 0.5)\n var ratioy = (y - cy) / ((ry / 100) * ratio * 2 - 0.5)\n var result = false\n\n if (normx * normx + normy * normy < 0.25 && ratiox * ratiox + ratioy * ratioy > 0.25) result = !result\n\n return result\n }\n\n get controls() {\n var { cx, cy, rx, ratio } = this.state\n rx = Math.abs(rx)\n\n return [\n {\n x: cx + (rx / 100) * ratio,\n y: cy,\n handler: controlHandler\n }\n ]\n }\n\n get nature() {\n return NATURE\n }\n}\n\nComponent.memoize(Donut.prototype, 'controls', false)\n\nComponent.register('donut', Donut)\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = drawImage;
7
+ /*
8
+ * Copyright © HatioLab Inc. All rights reserved.
9
+ */
10
+
11
+ function drawImage(context, image, left, top, width, height) {
12
+ if (image.complete) {
13
+ context.drawImage(image, left, top, width, height);
14
+ } else {
15
+ image.addEventListener('load', () => {
16
+ this.invalidate();
17
+ });
18
+ }
19
+ }
20
+ //# sourceMappingURL=draw-image-pendable.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"draw-image-pendable.js","names":["drawImage","context","image","left","top","width","height","complete","addEventListener","invalidate"],"sources":["../../../src/components/drawer/draw-image-pendable.js"],"sourcesContent":["/*\n * Copyright © HatioLab Inc. All rights reserved.\n */\n\nexport default function drawImage(context, image, left, top, width, height) {\n if (image.complete) {\n context.drawImage(image, left, top, width, height)\n } else {\n image.addEventListener('load', () => {\n this.invalidate()\n })\n }\n}\n"],"mappings":";;;;;;AAAA;AACA;AACA;;AAEe,SAASA,SAASA,CAACC,OAAO,EAAEC,KAAK,EAAEC,IAAI,EAAEC,GAAG,EAAEC,KAAK,EAAEC,MAAM,EAAE;EAC1E,IAAIJ,KAAK,CAACK,QAAQ,EAAE;IAClBN,OAAO,CAACD,SAAS,CAACE,KAAK,EAAEC,IAAI,EAAEC,GAAG,EAAEC,KAAK,EAAEC,MAAM,CAAC;EACpD,CAAC,MAAM;IACLJ,KAAK,CAACM,gBAAgB,CAAC,MAAM,EAAE,MAAM;MACnC,IAAI,CAACC,UAAU,CAAC,CAAC;IACnB,CAAC,CAAC;EACJ;AACF","ignoreList":[]}
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = effect;
7
+ /*
8
+ * Copyright © HatioLab Inc. All rights reserved.
9
+ */
10
+
11
+ function effect(context) {
12
+ const {
13
+ effects
14
+ } = this.state;
15
+ (effects || []).forEach(effect => {
16
+ this.effect(context, effect);
17
+ });
18
+ }
19
+ //# sourceMappingURL=effect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"effect.js","names":["effect","context","effects","state","forEach"],"sources":["../../../src/components/drawer/effect.js"],"sourcesContent":["/*\n * Copyright © HatioLab Inc. All rights reserved.\n */\n\nexport default function effect(context) {\n const { effects } = this.state\n\n ;(effects || []).forEach(effect => {\n this.effect(context, effect)\n })\n}\n"],"mappings":";;;;;;AAAA;AACA;AACA;;AAEe,SAASA,MAAMA,CAACC,OAAO,EAAE;EACtC,MAAM;IAAEC;EAAQ,CAAC,GAAG,IAAI,CAACC,KAAK;EAE7B,CAACD,OAAO,IAAI,EAAE,EAAEE,OAAO,CAACJ,MAAM,IAAI;IACjC,IAAI,CAACA,MAAM,CAACC,OAAO,EAAED,MAAM,CAAC;EAC9B,CAAC,CAAC;AACJ","ignoreList":[]}
@@ -0,0 +1,228 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.drawFill = drawFill;
7
+ exports.onchangeFill = onchangeFill;
8
+ exports.prepareFill = prepareFill;
9
+ exports.prepareFillIf = prepareFillIf;
10
+ var _const = require("../../const.js");
11
+ var _logger = require("../../core/logger.js");
12
+ var _elements = require("../html/elements.js");
13
+ /*
14
+ * Copyright © HatioLab Inc. All rights reserved.
15
+ */
16
+
17
+ function drawFill(context, bounds, center, style, host_component) {
18
+ var {
19
+ alpha = 1
20
+ } = style;
21
+ var fillStyle = host_component.fillStyle;
22
+ context.globalAlpha *= alpha;
23
+ if (!fillStyle) {
24
+ return;
25
+ } else if (typeof fillStyle == 'string') {
26
+ context.fillStyle = fillStyle;
27
+ context.fill();
28
+ } else if (typeof fillStyle == 'object') {
29
+ if (fillStyle.type == 'gradient') {
30
+ context.translate(center.x, center.y); // 센터로 이동
31
+
32
+ let grd,
33
+ {
34
+ width,
35
+ height
36
+ } = bounds;
37
+ if (fillStyle.gradientType == 'linear') {
38
+ let degree180 = 3.141592653589793; // 라디안으로 180도 회전
39
+ let fRotation = fillStyle.rotation;
40
+ if (fRotation >= 0.436332 && fRotation <= 1.13446 || fRotation >= 2.00713 && fRotation <= 2.70526 || fRotation >= 3.57792 && fRotation <= 4.27606 || fRotation >= 5.14872 && fRotation <= 5.84685) {
41
+ let diagonal = Math.sqrt(Math.pow((width - 4) / 2, 2) + Math.pow((height - 4) / 2, 2));
42
+ diagonal = diagonal - (diagonal - (width + height) / 3);
43
+ grd = context.createLinearGradient(diagonal * Math.cos(fRotation + degree180), diagonal * Math.sin(fRotation + degree180), diagonal * Math.cos(fRotation), diagonal * Math.sin(fRotation));
44
+ } else {
45
+ grd = context.createLinearGradient((width - 4) / 2 * Math.cos(fRotation + degree180), (height - 4) / 2 * Math.sin(fRotation + degree180), (width - 4) / 2 * Math.cos(fRotation), (height - 4) / 2 * Math.sin(fRotation));
46
+ }
47
+ } else if (fillStyle.gradientType == 'radial') {
48
+ let length = Math.sqrt(Math.pow((width - 4) / 2, 2) + Math.pow((height - 4) / 2, 2)) * 0.95;
49
+ switch (fillStyle.center) {
50
+ case 'center':
51
+ grd = context.createRadialGradient(0, 0, 0, 0, 0, length);
52
+ break;
53
+ case 'left-top':
54
+ grd = context.createRadialGradient(-width / 2, -height / 2, 0, -width / 2, -height / 2, length * 2);
55
+ break;
56
+ case 'right-top':
57
+ grd = context.createRadialGradient(width / 2, -height / 2, 0, width / 2, -height / 2, length * 2);
58
+ break;
59
+ case 'left-bottom':
60
+ grd = context.createRadialGradient(-width / 2, height / 2, 0, -width / 2, height / 2, length * 2);
61
+ break;
62
+ case 'right-bottom':
63
+ grd = context.createRadialGradient(width / 2, height / 2, 0, width / 2, height / 2, length * 2);
64
+ break;
65
+ default:
66
+ grd = context.createRadialGradient(0, 0, 0, 0, 0, length);
67
+ }
68
+ }
69
+ fillStyle.colorStops.forEach(v => {
70
+ // 값이 0~1 가 아니면 애러가 발생하므로 0과 1 사이가 아니면 무시한다.
71
+ if (v.position >= 0 && v.position <= 1) {
72
+ try {
73
+ grd.addColorStop(v.position, v.color);
74
+ } catch (e) {
75
+ (0, _logger.warn)('Invalid Color for colorstop : ', v.color);
76
+ grd.addColorStop(v.position, '#fff');
77
+ }
78
+ }
79
+ });
80
+ context.fillStyle = grd;
81
+ context.fill();
82
+ context.translate(-center.x, -center.y);
83
+ } else if (fillStyle.type == 'pattern' && fillStyle.image) {
84
+ if (!fillStyle.guideOnly || host_component.app.mode == _const.MODE_EDIT) {
85
+ host_component.prepareFillIf(!host_component._pattern_image_origin);
86
+ var pattern_image = host_component._pattern_image;
87
+ if (!pattern_image) return;
88
+ let offsetX = 0,
89
+ offsetY = 0,
90
+ alignX = 0,
91
+ alignY = 0;
92
+ let translateX = bounds.left,
93
+ translateY = bounds.top;
94
+ if (!fillStyle.fitPattern) {
95
+ offsetX = fillStyle.offsetX;
96
+ offsetY = fillStyle.offsetY;
97
+ const patternWidth = fillStyle.width ? fillStyle.width : pattern_image.width;
98
+ const patternHeight = fillStyle.height ? fillStyle.height : pattern_image.height;
99
+ switch (fillStyle.align) {
100
+ case 'center':
101
+ alignX = bounds.width / 2 - patternWidth / 2;
102
+ alignY = bounds.height / 2 - patternHeight / 2;
103
+ break;
104
+ case 'left-top':
105
+ alignX = 0;
106
+ alignY = 0;
107
+ break;
108
+ case 'left-bottom':
109
+ alignX = 0;
110
+ alignY = bounds.height - patternHeight;
111
+ break;
112
+ case 'right-top':
113
+ alignX = bounds.width - patternWidth;
114
+ alignY = 0;
115
+ break;
116
+ case 'right-bottom':
117
+ alignX = bounds.width - patternWidth;
118
+ alignY = bounds.height - patternHeight;
119
+ break;
120
+ case 'left':
121
+ alignX = 0;
122
+ alignY = bounds.height / 2 - patternHeight / 2;
123
+ break;
124
+ case 'right':
125
+ alignX = bounds.width - patternWidth;
126
+ alignY = bounds.height / 2 - patternHeight / 2;
127
+ break;
128
+ case 'top':
129
+ alignX = bounds.width / 2 - patternWidth / 2;
130
+ alignY = 0;
131
+ break;
132
+ case 'bottom':
133
+ alignX = bounds.width / 2 - patternWidth / 2;
134
+ alignY = bounds.height - patternHeight;
135
+ break;
136
+ }
137
+ translateX += offsetX + alignX;
138
+ translateY += offsetY + alignY;
139
+ }
140
+ context.translate(translateX, translateY);
141
+ if (fillStyle.color) {
142
+ context.fillStyle = fillStyle.color;
143
+ context.fill();
144
+ }
145
+ if (fillStyle.fitPattern) {
146
+ if (Math.abs((pattern_image.width - bounds.width) * (pattern_image.height - bounds.height)) > 1) {
147
+ delete host_component._pattern_image;
148
+ delete host_component._pattern_image_origin;
149
+ } else {
150
+ context.fillStyle = context.createPattern(pattern_image, 'no-repeat');
151
+ }
152
+ } else {
153
+ context.fillStyle = context.createPattern(pattern_image, fillStyle.noRepeat ? 'no-repeat' : 'repeat');
154
+ }
155
+ context.fill();
156
+ context.translate(-translateX, -translateY);
157
+ } else {
158
+ if (fillStyle.color) {
159
+ context.fillStyle = fillStyle.color;
160
+ context.fill();
161
+ }
162
+ }
163
+ }
164
+ }
165
+ }
166
+ function prepareFill(resolve, reject) {
167
+ var fillStyle = this.fillStyle;
168
+ if (!fillStyle || fillStyle.type != 'pattern' || !fillStyle.image) {
169
+ resolve(this);
170
+ return;
171
+ }
172
+ if (typeof fillStyle.image !== 'string') {
173
+ this._pattern_image_origin = this._pattern_image = fillStyle.image;
174
+ resolve(this);
175
+ return;
176
+ }
177
+ this._pattern_image = null;
178
+ this._pattern_image_origin = new Image();
179
+ var self = this;
180
+ this._pattern_image_origin.onload = function () {
181
+ if (!fillStyle.fitPattern && !fillStyle.width && !fillStyle.height) {
182
+ self._pattern_image = self._pattern_image_origin;
183
+ resolve(this);
184
+ return;
185
+ }
186
+ let width = fillStyle.width || this.width;
187
+ let height = fillStyle.height || this.height;
188
+ if (fillStyle.fitPattern) {
189
+ width = self.bounds.width;
190
+ height = self.bounds.height;
191
+ }
192
+ let offscreen_canvas = (0, _elements.createCanvas)(width, height);
193
+ let temp_context = offscreen_canvas.getContext('2d');
194
+ temp_context.drawImage(this, 0, 0, this.width, this.height, 0, 0, width, height);
195
+ self._pattern_image = offscreen_canvas;
196
+ resolve(this);
197
+ };
198
+ this._pattern_image_origin.onerror = function (e) {
199
+ reject(e);
200
+ };
201
+ try {
202
+ // this._pattern_image_origin.crossOrigin = 'use-credentials';
203
+ if (String(fillStyle.image).substring(0, 4) !== 'data') this._pattern_image_origin.crossOrigin = 'use-credentials';else this._pattern_image_origin.crossOrigin = null;
204
+ this._pattern_image_origin.src = this.app.url(fillStyle.image);
205
+ } catch (e) {
206
+ reject(e);
207
+ }
208
+ }
209
+ function prepareFillIf(condition) {
210
+ if (!condition) return;
211
+ this.prepareFill(resolve => {
212
+ this.invalidate();
213
+ }, reject => {
214
+ (0, _logger.error)(reject);
215
+ });
216
+ }
217
+ function onchangeFill(after, before) {
218
+ var fillStyle = this.fillStyle;
219
+ if (fillStyle && fillStyle.type !== 'pattern') {
220
+ if (this._pattern_image) {
221
+ this._pattern_image = null;
222
+ this._pattern_image_origin = null;
223
+ }
224
+ return;
225
+ }
226
+ fillStyle?.image && this.prepareFillIf(fillStyle.image);
227
+ }
228
+ //# sourceMappingURL=fill.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fill.js","names":["_const","require","_logger","_elements","drawFill","context","bounds","center","style","host_component","alpha","fillStyle","globalAlpha","fill","type","translate","x","y","grd","width","height","gradientType","degree180","fRotation","rotation","diagonal","Math","sqrt","pow","createLinearGradient","cos","sin","length","createRadialGradient","colorStops","forEach","v","position","addColorStop","color","e","warn","image","guideOnly","app","mode","MODE_EDIT","prepareFillIf","_pattern_image_origin","pattern_image","_pattern_image","offsetX","offsetY","alignX","alignY","translateX","left","translateY","top","fitPattern","patternWidth","patternHeight","align","abs","createPattern","noRepeat","prepareFill","resolve","reject","Image","self","onload","offscreen_canvas","createCanvas","temp_context","getContext","drawImage","onerror","String","substring","crossOrigin","src","url","condition","invalidate","error","onchangeFill","after","before"],"sources":["../../../src/components/drawer/fill.js"],"sourcesContent":["/*\n * Copyright © HatioLab Inc. All rights reserved.\n */\n\nimport { MODE_EDIT } from '../../const.js'\nimport { error, warn } from '../../core/logger.js'\nimport { createCanvas } from '../html/elements.js'\n\nexport function drawFill(context, bounds, center, style, host_component) {\n var { alpha = 1 } = style\n var fillStyle = host_component.fillStyle\n\n context.globalAlpha *= alpha\n\n if (!fillStyle) {\n return\n } else if (typeof fillStyle == 'string') {\n context.fillStyle = fillStyle\n\n context.fill()\n } else if (typeof fillStyle == 'object') {\n if (fillStyle.type == 'gradient') {\n context.translate(center.x, center.y) // 센터로 이동\n\n let grd,\n { width, height } = bounds\n\n if (fillStyle.gradientType == 'linear') {\n let degree180 = 3.141592653589793 // 라디안으로 180도 회전\n let fRotation = fillStyle.rotation\n\n if (\n (fRotation >= 0.436332 && fRotation <= 1.13446) ||\n (fRotation >= 2.00713 && fRotation <= 2.70526) ||\n (fRotation >= 3.57792 && fRotation <= 4.27606) ||\n (fRotation >= 5.14872 && fRotation <= 5.84685)\n ) {\n let diagonal = Math.sqrt(Math.pow((width - 4) / 2, 2) + Math.pow((height - 4) / 2, 2))\n diagonal = diagonal - (diagonal - (width + height) / 3)\n\n grd = context.createLinearGradient(\n diagonal * Math.cos(fRotation + degree180),\n diagonal * Math.sin(fRotation + degree180),\n diagonal * Math.cos(fRotation),\n diagonal * Math.sin(fRotation)\n )\n } else {\n grd = context.createLinearGradient(\n ((width - 4) / 2) * Math.cos(fRotation + degree180),\n ((height - 4) / 2) * Math.sin(fRotation + degree180),\n ((width - 4) / 2) * Math.cos(fRotation),\n ((height - 4) / 2) * Math.sin(fRotation)\n )\n }\n } else if (fillStyle.gradientType == 'radial') {\n let length = Math.sqrt(Math.pow((width - 4) / 2, 2) + Math.pow((height - 4) / 2, 2)) * 0.95\n\n switch (fillStyle.center) {\n case 'center':\n grd = context.createRadialGradient(0, 0, 0, 0, 0, length)\n break\n case 'left-top':\n grd = context.createRadialGradient(-width / 2, -height / 2, 0, -width / 2, -height / 2, length * 2)\n break\n case 'right-top':\n grd = context.createRadialGradient(width / 2, -height / 2, 0, width / 2, -height / 2, length * 2)\n break\n case 'left-bottom':\n grd = context.createRadialGradient(-width / 2, height / 2, 0, -width / 2, height / 2, length * 2)\n break\n case 'right-bottom':\n grd = context.createRadialGradient(width / 2, height / 2, 0, width / 2, height / 2, length * 2)\n break\n default:\n grd = context.createRadialGradient(0, 0, 0, 0, 0, length)\n }\n }\n\n fillStyle.colorStops.forEach(v => {\n // 값이 0~1 가 아니면 애러가 발생하므로 0과 1 사이가 아니면 무시한다.\n if (v.position >= 0 && v.position <= 1) {\n try {\n grd.addColorStop(v.position, v.color)\n } catch (e) {\n warn('Invalid Color for colorstop : ', v.color)\n grd.addColorStop(v.position, '#fff')\n }\n }\n })\n\n context.fillStyle = grd\n context.fill()\n\n context.translate(-center.x, -center.y)\n } else if (fillStyle.type == 'pattern' && fillStyle.image) {\n if (!fillStyle.guideOnly || host_component.app.mode == MODE_EDIT) {\n host_component.prepareFillIf(!host_component._pattern_image_origin)\n\n var pattern_image = host_component._pattern_image\n if (!pattern_image) return\n\n let offsetX = 0,\n offsetY = 0,\n alignX = 0,\n alignY = 0\n\n let translateX = bounds.left,\n translateY = bounds.top\n\n if (!fillStyle.fitPattern) {\n offsetX = fillStyle.offsetX\n offsetY = fillStyle.offsetY\n const patternWidth = fillStyle.width ? fillStyle.width : pattern_image.width\n const patternHeight = fillStyle.height ? fillStyle.height : pattern_image.height\n\n switch (fillStyle.align) {\n case 'center':\n alignX = bounds.width / 2 - patternWidth / 2\n alignY = bounds.height / 2 - patternHeight / 2\n break\n case 'left-top':\n alignX = 0\n alignY = 0\n break\n case 'left-bottom':\n alignX = 0\n alignY = bounds.height - patternHeight\n break\n case 'right-top':\n alignX = bounds.width - patternWidth\n alignY = 0\n break\n case 'right-bottom':\n alignX = bounds.width - patternWidth\n alignY = bounds.height - patternHeight\n break\n case 'left':\n alignX = 0\n alignY = bounds.height / 2 - patternHeight / 2\n break\n case 'right':\n alignX = bounds.width - patternWidth\n alignY = bounds.height / 2 - patternHeight / 2\n break\n case 'top':\n alignX = bounds.width / 2 - patternWidth / 2\n alignY = 0\n break\n case 'bottom':\n alignX = bounds.width / 2 - patternWidth / 2\n alignY = bounds.height - patternHeight\n break\n }\n\n translateX += offsetX + alignX\n translateY += offsetY + alignY\n }\n\n context.translate(translateX, translateY)\n\n if (fillStyle.color) {\n context.fillStyle = fillStyle.color\n context.fill()\n }\n\n if (fillStyle.fitPattern) {\n if (Math.abs((pattern_image.width - bounds.width) * (pattern_image.height - bounds.height)) > 1) {\n delete host_component._pattern_image\n delete host_component._pattern_image_origin\n } else {\n context.fillStyle = context.createPattern(pattern_image, 'no-repeat')\n }\n } else {\n context.fillStyle = context.createPattern(pattern_image, fillStyle.noRepeat ? 'no-repeat' : 'repeat')\n }\n\n context.fill()\n\n context.translate(-translateX, -translateY)\n } else {\n if (fillStyle.color) {\n context.fillStyle = fillStyle.color\n context.fill()\n }\n }\n }\n }\n}\n\nexport function prepareFill(resolve, reject) {\n var fillStyle = this.fillStyle\n\n if (!fillStyle || fillStyle.type != 'pattern' || !fillStyle.image) {\n resolve(this)\n return\n }\n\n if (typeof fillStyle.image !== 'string') {\n this._pattern_image_origin = this._pattern_image = fillStyle.image\n resolve(this)\n return\n }\n\n this._pattern_image = null\n\n this._pattern_image_origin = new Image()\n\n var self = this\n\n this._pattern_image_origin.onload = function () {\n if (!fillStyle.fitPattern && !fillStyle.width && !fillStyle.height) {\n self._pattern_image = self._pattern_image_origin\n\n resolve(this)\n return\n }\n\n let width = fillStyle.width || this.width\n let height = fillStyle.height || this.height\n\n if (fillStyle.fitPattern) {\n width = self.bounds.width\n height = self.bounds.height\n }\n\n let offscreen_canvas = createCanvas(width, height)\n let temp_context = offscreen_canvas.getContext('2d')\n\n temp_context.drawImage(this, 0, 0, this.width, this.height, 0, 0, width, height)\n self._pattern_image = offscreen_canvas\n\n resolve(this)\n }\n\n this._pattern_image_origin.onerror = function (e) {\n reject(e)\n }\n\n try {\n // this._pattern_image_origin.crossOrigin = 'use-credentials';\n if (String(fillStyle.image).substring(0, 4) !== 'data') this._pattern_image_origin.crossOrigin = 'use-credentials'\n else this._pattern_image_origin.crossOrigin = null\n\n this._pattern_image_origin.src = this.app.url(fillStyle.image)\n } catch (e) {\n reject(e)\n }\n}\n\nexport function prepareFillIf(condition) {\n if (!condition) return\n\n this.prepareFill(\n resolve => {\n this.invalidate()\n },\n reject => {\n error(reject)\n }\n )\n}\n\nexport function onchangeFill(after, before) {\n var fillStyle = this.fillStyle\n\n if (fillStyle && fillStyle.type !== 'pattern') {\n if (this._pattern_image) {\n this._pattern_image = null\n this._pattern_image_origin = null\n }\n\n return\n }\n\n fillStyle?.image && this.prepareFillIf(fillStyle.image)\n}\n"],"mappings":"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","ignoreList":[]}