@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,269 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.drawText = drawText;
7
+ exports.font = font;
8
+ exports.textLines = textLines;
9
+ var _const = require("../../const.js");
10
+ var _roundRect = require("../../core/round-rect.js");
11
+ function parseMarkdown(text) {
12
+ const regex = /(\*\*|__)(.*?)\1|(\*|_)(.*?)\3|([^\*_]+)/g;
13
+ let result = [];
14
+ let match;
15
+ while ((match = regex.exec(text)) !== null) {
16
+ if (match[1]) {
17
+ result.push({
18
+ text: match[2],
19
+ bold: true,
20
+ italic: false
21
+ });
22
+ } else if (match[3]) {
23
+ result.push({
24
+ text: match[4],
25
+ bold: false,
26
+ italic: true
27
+ });
28
+ } else if (match[5]) {
29
+ result.push({
30
+ text: match[5],
31
+ bold: false,
32
+ italic: false
33
+ });
34
+ }
35
+ }
36
+ return result;
37
+ }
38
+ function wrapWord(context, word, width, letterSpacing = 0) {
39
+ if (word.text.length < 2) return word;
40
+ let index = 2;
41
+ for (; index < word.text.length; index++) {
42
+ const substring = word.text.substring(0, index);
43
+ const textWidth = context.measureText(substring).width + (index - 1) * letterSpacing;
44
+ if (textWidth < width) continue;
45
+ break;
46
+ }
47
+ return {
48
+ ...word,
49
+ text: word.text.substring(0, index - 1)
50
+ };
51
+ }
52
+ function wrapLine(context, lineParts, width, letterSpacing = 0) {
53
+ const lines = [];
54
+ let currentLine = [];
55
+ let currentWidth = 0;
56
+ lineParts.forEach(part => {
57
+ let partText = part.text;
58
+ while (partText.length > 0) {
59
+ const remainingWidth = width - currentWidth;
60
+ const partWidth = context.measureText(partText).width + (partText.length - 1) * letterSpacing;
61
+ if (partWidth <= remainingWidth) {
62
+ currentLine.push({
63
+ ...part,
64
+ text: partText
65
+ });
66
+ currentWidth += partWidth;
67
+ partText = '';
68
+ } else {
69
+ const wrappedPart = wrapWord(context, {
70
+ ...part,
71
+ text: partText
72
+ }, remainingWidth, letterSpacing);
73
+ currentLine.push(wrappedPart);
74
+ lines.push(currentLine);
75
+ currentLine = [];
76
+ currentWidth = 0;
77
+ partText = partText.substring(wrappedPart.text.length);
78
+ }
79
+ }
80
+ });
81
+ if (currentLine.length > 0) {
82
+ lines.push(currentLine);
83
+ }
84
+ return lines;
85
+ }
86
+ function splitTextToLines(context, text, width, wrap, supportMarkdown, letterSpacing = 0) {
87
+ const lines = String(text).split('\n');
88
+ if (wrap) {
89
+ return [].concat.apply([], lines.map(line => wrapLine(context, supportMarkdown ? parseMarkdown(line) : [{
90
+ text: line,
91
+ bold: false,
92
+ italic: false
93
+ }], width, letterSpacing)));
94
+ } else {
95
+ return lines.map(line => supportMarkdown ? parseMarkdown(line) : [{
96
+ text: line,
97
+ bold: false,
98
+ italic: false
99
+ }]);
100
+ }
101
+ }
102
+ function textLines(context, width, font, text, wrap, supportMarkdown, letterSpacing = 0) {
103
+ if (!text) return [];
104
+ context.save();
105
+ context.font = font;
106
+ var lines = splitTextToLines(context, text, width, !!wrap, supportMarkdown, letterSpacing);
107
+ context.restore();
108
+ return lines;
109
+ }
110
+ function font(style) {
111
+ var {
112
+ fontFamily = _const.DEFAULT.FONT_FAMILY,
113
+ bold = _const.DEFAULT.BOLD,
114
+ italic = _const.DEFAULT.ITALIC,
115
+ fontSize = _const.DEFAULT.FONT_SIZE
116
+ } = style;
117
+ var fonts = [];
118
+ bold && fonts.push('bold');
119
+ italic && fonts.push('italic');
120
+ fonts.push(fontSize + 'px');
121
+ fonts.push(fontFamily);
122
+ return fonts.join(' ');
123
+ }
124
+ function getLineWidth(context, line, baseStyle, letterSpacing = 0) {
125
+ return line.reduce((width, part) => {
126
+ context.font = getStyleFont(baseStyle, part);
127
+ return width + context.measureText(part.text).width + letterSpacing * (part.text.length - 1);
128
+ }, 0);
129
+ }
130
+ function getStyleFont(baseStyle, part) {
131
+ let boldStyle = baseStyle.bold || part.bold;
132
+ let italicStyle = baseStyle.italic || part.italic;
133
+ let fonts = [];
134
+ boldStyle && fonts.push('bold');
135
+ italicStyle && fonts.push('italic');
136
+ fonts.push(baseStyle.fontSize + 'px');
137
+ fonts.push(baseStyle.fontFamily);
138
+ return fonts.join(' ');
139
+ }
140
+ function drawText(context, bounds, lines, style) {
141
+ var {
142
+ alpha,
143
+ fontColor = _const.DEFAULT.FONT_COLOR,
144
+ textAlign = _const.DEFAULT.TEXT_ALIGN,
145
+ textBaseline = _const.DEFAULT.TEXT_BASELINE,
146
+ textBackgroundStyle,
147
+ fontSize,
148
+ lineHeight,
149
+ textWrap,
150
+ textOverflow,
151
+ letterSpacing = 0
152
+ } = style;
153
+ alpha = alpha !== undefined ? alpha : 1;
154
+ fontSize ||= _const.DEFAULT.FONT_SIZE;
155
+ lineHeight ||= fontSize * 1.2;
156
+ context.save();
157
+ context.beginPath();
158
+ var {
159
+ left,
160
+ top,
161
+ width,
162
+ height
163
+ } = bounds;
164
+ context.font = font(style);
165
+ if (!textWrap && textOverflow) {
166
+ const clippedLines = fittingText(textOverflow, context, lines, width);
167
+ lines = clippedLines;
168
+ }
169
+ var textsHeight = lines.length * lineHeight;
170
+ var baseY;
171
+ switch (textBaseline) {
172
+ case 'top':
173
+ baseY = top;
174
+ context.textBaseline = 'top';
175
+ break;
176
+ case 'bottom':
177
+ baseY = top + height - textsHeight + lineHeight;
178
+ context.textBaseline = 'bottom';
179
+ break;
180
+ case 'middle':
181
+ default:
182
+ baseY = top + height / 2 - textsHeight / 2 + lineHeight / 2;
183
+ context.textBaseline = 'middle';
184
+ }
185
+ context.globalAlpha *= alpha;
186
+ context.fillStyle = fontColor;
187
+ lines.forEach((line, i) => {
188
+ let y = baseY + i * lineHeight;
189
+ let lineWidth = getLineWidth(context, line, style, letterSpacing);
190
+ let x = left;
191
+ switch (textAlign) {
192
+ case 'left':
193
+ x = left;
194
+ break;
195
+ case 'right':
196
+ x = left + width - lineWidth;
197
+ break;
198
+ case 'center':
199
+ x = left + (width - lineWidth) / 2;
200
+ break;
201
+ case 'justify':
202
+ x = left;
203
+ break;
204
+ }
205
+ if (textBackgroundStyle) {
206
+ context.fillStyle = textBackgroundStyle;
207
+ (0, _roundRect.roundRect)(context, x - 4, y - fontSize / 2 - 4, lineWidth + 8, fontSize + 8, 4, true, false);
208
+ context.fillStyle = fontColor;
209
+ }
210
+ if (textAlign === 'justify' && i < lines.length - 1 && line.length > 1) {
211
+ let totalSpacing = width - lineWidth;
212
+ let spaceCount = line.length - 1;
213
+ let wordSpacing = totalSpacing / spaceCount;
214
+ line.forEach((part, index) => {
215
+ context.font = getStyleFont(style, part);
216
+ context.fillText(part.text, x, y);
217
+ x += context.measureText(part.text).width + (index < spaceCount ? wordSpacing : 0);
218
+ });
219
+ } else {
220
+ line.forEach(part => {
221
+ context.font = getStyleFont(style, part);
222
+ [...part.text].forEach(char => {
223
+ context.fillText(char, x, y);
224
+ x += context.measureText(char).width + letterSpacing;
225
+ });
226
+ });
227
+ }
228
+ });
229
+ context.restore();
230
+ }
231
+ function fittingText(textOverflow, context, lines, maxWidth) {
232
+ const ellipsis = textOverflow === 'ellipsis' ? '…' : '';
233
+ const ellipsisWidth = context.measureText(ellipsis).width;
234
+ let newLines = [];
235
+ let currentWidth = 0;
236
+ for (let line of lines) {
237
+ let newLine = [];
238
+ for (let part of line) {
239
+ let partWidth = context.measureText(part.text).width;
240
+ if (currentWidth + partWidth <= maxWidth - (textOverflow === 'ellipsis' ? ellipsisWidth : 0)) {
241
+ newLine.push(part);
242
+ currentWidth += partWidth;
243
+ } else {
244
+ let clippedPart = clipPart(context, part, maxWidth - currentWidth - (textOverflow === 'ellipsis' ? ellipsisWidth : 0), textOverflow);
245
+ newLine.push(clippedPart);
246
+ newLines.push(newLine);
247
+ return newLines;
248
+ }
249
+ }
250
+ newLines.push(newLine);
251
+ currentWidth = 0;
252
+ }
253
+ return newLines;
254
+ }
255
+ function clipPart(context, part, maxWidth, textOverflow) {
256
+ let clippedText = '';
257
+ for (let i = 0; i < part.text.length; i++) {
258
+ let testText = clippedText + part.text[i];
259
+ if (context.measureText(testText).width > maxWidth) {
260
+ break;
261
+ }
262
+ clippedText = testText;
263
+ }
264
+ return {
265
+ ...part,
266
+ text: clippedText + (textOverflow === 'ellipsis' ? '…' : '')
267
+ };
268
+ }
269
+ //# sourceMappingURL=text.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"text.js","names":["_const","require","_roundRect","parseMarkdown","text","regex","result","match","exec","push","bold","italic","wrapWord","context","word","width","letterSpacing","length","index","substring","textWidth","measureText","wrapLine","lineParts","lines","currentLine","currentWidth","forEach","part","partText","remainingWidth","partWidth","wrappedPart","splitTextToLines","wrap","supportMarkdown","String","split","concat","apply","map","line","textLines","font","save","restore","style","fontFamily","DEFAULT","FONT_FAMILY","BOLD","ITALIC","fontSize","FONT_SIZE","fonts","join","getLineWidth","baseStyle","reduce","getStyleFont","boldStyle","italicStyle","drawText","bounds","alpha","fontColor","FONT_COLOR","textAlign","TEXT_ALIGN","textBaseline","TEXT_BASELINE","textBackgroundStyle","lineHeight","textWrap","textOverflow","undefined","beginPath","left","top","height","clippedLines","fittingText","textsHeight","baseY","globalAlpha","fillStyle","i","y","lineWidth","x","roundRect","totalSpacing","spaceCount","wordSpacing","fillText","char","maxWidth","ellipsis","ellipsisWidth","newLines","newLine","clippedPart","clipPart","clippedText","testText"],"sources":["../../../src/components/drawer/text.js"],"sourcesContent":["import { DEFAULT } from '../../const.js'\nimport { roundRect } from '../../core/round-rect.js'\n\nfunction parseMarkdown(text) {\n const regex = /(\\*\\*|__)(.*?)\\1|(\\*|_)(.*?)\\3|([^\\*_]+)/g\n let result = []\n let match\n while ((match = regex.exec(text)) !== null) {\n if (match[1]) {\n result.push({ text: match[2], bold: true, italic: false })\n } else if (match[3]) {\n result.push({ text: match[4], bold: false, italic: true })\n } else if (match[5]) {\n result.push({ text: match[5], bold: false, italic: false })\n }\n }\n return result\n}\n\nfunction wrapWord(context, word, width, letterSpacing = 0) {\n if (word.text.length < 2) return word\n\n let index = 2\n for (; index < word.text.length; index++) {\n const substring = word.text.substring(0, index)\n const textWidth = context.measureText(substring).width + (index - 1) * letterSpacing\n if (textWidth < width) continue\n\n break\n }\n\n return { ...word, text: word.text.substring(0, index - 1) }\n}\n\nfunction wrapLine(context, lineParts, width, letterSpacing = 0) {\n const lines = []\n let currentLine = []\n let currentWidth = 0\n\n lineParts.forEach(part => {\n let partText = part.text\n while (partText.length > 0) {\n const remainingWidth = width - currentWidth\n const partWidth = context.measureText(partText).width + (partText.length - 1) * letterSpacing\n\n if (partWidth <= remainingWidth) {\n currentLine.push({ ...part, text: partText })\n currentWidth += partWidth\n partText = ''\n } else {\n const wrappedPart = wrapWord(context, { ...part, text: partText }, remainingWidth, letterSpacing)\n currentLine.push(wrappedPart)\n lines.push(currentLine)\n currentLine = []\n currentWidth = 0\n partText = partText.substring(wrappedPart.text.length)\n }\n }\n })\n\n if (currentLine.length > 0) {\n lines.push(currentLine)\n }\n\n return lines\n}\n\nfunction splitTextToLines(context, text, width, wrap, supportMarkdown, letterSpacing = 0) {\n const lines = String(text).split('\\n')\n if (wrap) {\n return [].concat.apply(\n [],\n lines.map(line =>\n wrapLine(\n context,\n supportMarkdown ? parseMarkdown(line) : [{ text: line, bold: false, italic: false }],\n width,\n letterSpacing\n )\n )\n )\n } else {\n return lines.map(line => (supportMarkdown ? parseMarkdown(line) : [{ text: line, bold: false, italic: false }]))\n }\n}\n\nexport function textLines(context, width, font, text, wrap, supportMarkdown, letterSpacing = 0) {\n if (!text) return []\n\n context.save()\n context.font = font\n var lines = splitTextToLines(context, text, width, !!wrap, supportMarkdown, letterSpacing)\n context.restore()\n\n return lines\n}\n\nexport function font(style) {\n var {\n fontFamily = DEFAULT.FONT_FAMILY,\n bold = DEFAULT.BOLD,\n italic = DEFAULT.ITALIC,\n fontSize = DEFAULT.FONT_SIZE\n } = style\n\n var fonts = []\n\n bold && fonts.push('bold')\n italic && fonts.push('italic')\n fonts.push(fontSize + 'px')\n fonts.push(fontFamily)\n\n return fonts.join(' ')\n}\n\nfunction getLineWidth(context, line, baseStyle, letterSpacing = 0) {\n return line.reduce((width, part) => {\n context.font = getStyleFont(baseStyle, part)\n return width + context.measureText(part.text).width + letterSpacing * (part.text.length - 1)\n }, 0)\n}\n\nfunction getStyleFont(baseStyle, part) {\n let boldStyle = baseStyle.bold || part.bold\n let italicStyle = baseStyle.italic || part.italic\n let fonts = []\n\n boldStyle && fonts.push('bold')\n italicStyle && fonts.push('italic')\n fonts.push(baseStyle.fontSize + 'px')\n fonts.push(baseStyle.fontFamily)\n\n return fonts.join(' ')\n}\n\nexport function drawText(context, bounds, lines, style) {\n var {\n alpha,\n fontColor = DEFAULT.FONT_COLOR,\n textAlign = DEFAULT.TEXT_ALIGN,\n textBaseline = DEFAULT.TEXT_BASELINE,\n textBackgroundStyle,\n fontSize,\n lineHeight,\n textWrap,\n textOverflow,\n letterSpacing = 0\n } = style\n\n alpha = alpha !== undefined ? alpha : 1\n fontSize ||= DEFAULT.FONT_SIZE\n lineHeight ||= fontSize * 1.2\n\n context.save()\n context.beginPath()\n\n var { left, top, width, height } = bounds\n context.font = font(style)\n\n if (!textWrap && textOverflow) {\n const clippedLines = fittingText(textOverflow, context, lines, width)\n lines = clippedLines\n }\n\n var textsHeight = lines.length * lineHeight\n var baseY\n\n switch (textBaseline) {\n case 'top':\n baseY = top\n context.textBaseline = 'top'\n break\n case 'bottom':\n baseY = top + height - textsHeight + lineHeight\n context.textBaseline = 'bottom'\n break\n case 'middle':\n default:\n baseY = top + height / 2 - textsHeight / 2 + lineHeight / 2\n context.textBaseline = 'middle'\n }\n\n context.globalAlpha *= alpha\n context.fillStyle = fontColor\n\n lines.forEach((line, i) => {\n let y = baseY + i * lineHeight\n let lineWidth = getLineWidth(context, line, style, letterSpacing)\n let x = left\n\n switch (textAlign) {\n case 'left':\n x = left\n break\n case 'right':\n x = left + width - lineWidth\n break\n case 'center':\n x = left + (width - lineWidth) / 2\n break\n case 'justify':\n x = left\n break\n }\n\n if (textBackgroundStyle) {\n context.fillStyle = textBackgroundStyle\n roundRect(context, x - 4, y - fontSize / 2 - 4, lineWidth + 8, fontSize + 8, 4, true, false)\n context.fillStyle = fontColor\n }\n\n if (textAlign === 'justify' && i < lines.length - 1 && line.length > 1) {\n let totalSpacing = width - lineWidth\n let spaceCount = line.length - 1\n let wordSpacing = totalSpacing / spaceCount\n\n line.forEach((part, index) => {\n context.font = getStyleFont(style, part)\n context.fillText(part.text, x, y)\n x += context.measureText(part.text).width + (index < spaceCount ? wordSpacing : 0)\n })\n } else {\n line.forEach(part => {\n context.font = getStyleFont(style, part)\n ;[...part.text].forEach(char => {\n context.fillText(char, x, y)\n x += context.measureText(char).width + letterSpacing\n })\n })\n }\n })\n\n context.restore()\n}\n\nfunction fittingText(textOverflow, context, lines, maxWidth) {\n const ellipsis = textOverflow === 'ellipsis' ? '…' : ''\n const ellipsisWidth = context.measureText(ellipsis).width\n\n let newLines = []\n let currentWidth = 0\n\n for (let line of lines) {\n let newLine = []\n for (let part of line) {\n let partWidth = context.measureText(part.text).width\n if (currentWidth + partWidth <= maxWidth - (textOverflow === 'ellipsis' ? ellipsisWidth : 0)) {\n newLine.push(part)\n currentWidth += partWidth\n } else {\n let clippedPart = clipPart(\n context,\n part,\n maxWidth - currentWidth - (textOverflow === 'ellipsis' ? ellipsisWidth : 0),\n textOverflow\n )\n newLine.push(clippedPart)\n newLines.push(newLine)\n return newLines\n }\n }\n newLines.push(newLine)\n currentWidth = 0\n }\n return newLines\n}\n\nfunction clipPart(context, part, maxWidth, textOverflow) {\n let clippedText = ''\n for (let i = 0; i < part.text.length; i++) {\n let testText = clippedText + part.text[i]\n if (context.measureText(testText).width > maxWidth) {\n break\n }\n clippedText = testText\n }\n return { ...part, text: clippedText + (textOverflow === 'ellipsis' ? '…' : '') }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,110 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _ellipseAnchors = _interopRequireDefault(require("./anchor/ellipse-anchors.js"));
8
+ var _component = _interopRequireDefault(require("./component.js"));
9
+ var _connectable = _interopRequireDefault(require("./mixins/connectable.js"));
10
+ var _ellipseOutline = _interopRequireDefault(require("./outline/ellipse-outline.js"));
11
+ var _shape = _interopRequireDefault(require("./shape.js"));
12
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
13
+ /*
14
+ * Copyright © HatioLab Inc. All rights reserved.
15
+ */
16
+
17
+ const NATURE = {
18
+ mutable: false,
19
+ resizable: true,
20
+ rotatable: true,
21
+ properties: [{
22
+ type: 'angle',
23
+ label: 'start-angle',
24
+ name: 'startAngle',
25
+ property: 'startAngle'
26
+ }, {
27
+ type: 'angle',
28
+ label: 'end-angle',
29
+ name: 'endAngle',
30
+ property: 'endAngle'
31
+ }],
32
+ 'value-property': 'text'
33
+ };
34
+ class Ellipse extends (0, _connectable.default)(_shape.default) {
35
+ is3dish() {
36
+ return true;
37
+ }
38
+ render(context) {
39
+ var {
40
+ cx,
41
+ cy,
42
+ rx,
43
+ ry,
44
+ startAngle,
45
+ endAngle,
46
+ anticlockwise
47
+ } = this.state;
48
+ context.beginPath();
49
+ context.ellipse(cx, cy, Math.abs(rx), Math.abs(ry), 0, startAngle || 0, endAngle || 2 * Math.PI, anticlockwise);
50
+ if (startAngle !== undefined && endAngle !== undefined) {
51
+ context.lineTo(cx, cy);
52
+ context.closePath();
53
+ }
54
+ }
55
+ get path() {
56
+ var {
57
+ cx,
58
+ cy,
59
+ rx,
60
+ ry
61
+ } = this.state;
62
+ return [{
63
+ x: cx - rx,
64
+ y: cy - ry
65
+ }, {
66
+ x: cx + rx,
67
+ y: cy - ry
68
+ }, {
69
+ x: cx + rx,
70
+ y: cy + ry
71
+ }, {
72
+ x: cx - rx,
73
+ y: cy + ry
74
+ }];
75
+ }
76
+ set path(path) {
77
+ var left_top = path[0];
78
+ var right_bottom = path[2];
79
+ this.set({
80
+ cx: left_top.x + (right_bottom.x - left_top.x) / 2,
81
+ cy: left_top.y + (right_bottom.y - left_top.y) / 2,
82
+ rx: (right_bottom.x - left_top.x) / 2,
83
+ ry: (right_bottom.y - left_top.y) / 2
84
+ });
85
+ }
86
+ contains(x, y) {
87
+ var {
88
+ cx,
89
+ cy,
90
+ rx,
91
+ ry
92
+ } = this.state;
93
+ var normx = (x - cx) / (rx * 2 - 0.5);
94
+ var normy = (y - cy) / (ry * 2 - 0.5);
95
+ return normx * normx + normy * normy < 0.25;
96
+ }
97
+ outline(progress) {
98
+ return (0, _ellipseOutline.default)(this, progress);
99
+ }
100
+ get anchors() {
101
+ return (0, _ellipseAnchors.default)(this);
102
+ }
103
+ get nature() {
104
+ return NATURE;
105
+ }
106
+ }
107
+ exports.default = Ellipse;
108
+ _component.default.memoize(Ellipse.prototype, 'path', false);
109
+ _component.default.register('ellipse', Ellipse);
110
+ //# sourceMappingURL=ellipse.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ellipse.js","names":["_ellipseAnchors","_interopRequireDefault","require","_component","_connectable","_ellipseOutline","_shape","e","__esModule","default","NATURE","mutable","resizable","rotatable","properties","type","label","name","property","Ellipse","Connectable","Shape","is3dish","render","context","cx","cy","rx","ry","startAngle","endAngle","anticlockwise","state","beginPath","ellipse","Math","abs","PI","undefined","lineTo","closePath","path","x","y","left_top","right_bottom","set","contains","normx","normy","outline","progress","ellipseOutline","anchors","ellipseAnchors","nature","exports","Component","memoize","prototype","register"],"sources":["../../src/components/ellipse.js"],"sourcesContent":["/*\n * Copyright © HatioLab Inc. All rights reserved.\n */\n\nimport ellipseAnchors from './anchor/ellipse-anchors.js'\nimport Component from './component.js'\nimport Connectable from './mixins/connectable.js'\nimport ellipseOutline from './outline/ellipse-outline.js'\nimport Shape from './shape.js'\n\nconst NATURE = {\n mutable: false,\n resizable: true,\n rotatable: true,\n properties: [\n {\n type: 'angle',\n label: 'start-angle',\n name: 'startAngle',\n property: 'startAngle'\n },\n {\n type: 'angle',\n label: 'end-angle',\n name: 'endAngle',\n property: 'endAngle'\n }\n ],\n 'value-property': 'text'\n}\n\nexport default class Ellipse extends Connectable(Shape) {\n is3dish() {\n return true\n }\n\n render(context) {\n var { cx, cy, rx, ry, startAngle, endAngle, anticlockwise } = this.state\n\n context.beginPath()\n\n context.ellipse(cx, cy, Math.abs(rx), Math.abs(ry), 0, startAngle || 0, endAngle || 2 * Math.PI, anticlockwise)\n\n if (startAngle !== undefined && endAngle !== undefined) {\n context.lineTo(cx, cy)\n context.closePath()\n }\n }\n\n get path() {\n var { cx, cy, rx, ry } = this.state\n\n return [\n {\n x: cx - rx,\n y: cy - ry\n },\n {\n x: cx + rx,\n y: cy - ry\n },\n {\n x: cx + rx,\n y: cy + ry\n },\n {\n x: cx - rx,\n y: cy + ry\n }\n ]\n }\n\n set path(path) {\n var left_top = path[0]\n var right_bottom = path[2]\n\n this.set({\n cx: left_top.x + (right_bottom.x - left_top.x) / 2,\n cy: left_top.y + (right_bottom.y - left_top.y) / 2,\n rx: (right_bottom.x - left_top.x) / 2,\n ry: (right_bottom.y - left_top.y) / 2\n })\n }\n\n contains(x, y) {\n var { cx, cy, rx, ry } = this.state\n\n var normx = (x - cx) / (rx * 2 - 0.5)\n var normy = (y - cy) / (ry * 2 - 0.5)\n\n return normx * normx + normy * normy < 0.25\n }\n\n outline(progress) {\n return ellipseOutline(this, progress)\n }\n\n get anchors() {\n return ellipseAnchors(this)\n }\n\n get nature() {\n return NATURE\n }\n}\n\nComponent.memoize(Ellipse.prototype, 'path', false)\n\nComponent.register('ellipse', Ellipse)\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.ondropfile = ondropfile;
7
+ function ondropfile(transfered, files) {
8
+ for (let i = 0; i < transfered.length; i++) {
9
+ if (transfered[i].type.startsWith('image/')) {
10
+ this.set('fillStyle', {
11
+ type: 'pattern',
12
+ image: files[i],
13
+ fitPattern: true
14
+ });
15
+ return;
16
+ }
17
+ }
18
+ }
19
+ //# sourceMappingURL=ondropfile.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ondropfile.js","names":["ondropfile","transfered","files","i","length","type","startsWith","set","image","fitPattern"],"sources":["../../../src/components/file/ondropfile.js"],"sourcesContent":["export function ondropfile(transfered, files) {\n for (let i = 0; i < transfered.length; i++) {\n if (transfered[i].type.startsWith('image/')) {\n this.set('fillStyle', {\n type: 'pattern',\n image: files[i],\n fitPattern: true\n })\n\n return\n }\n }\n}\n"],"mappings":";;;;;;AAAO,SAASA,UAAUA,CAACC,UAAU,EAAEC,KAAK,EAAE;EAC5C,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGF,UAAU,CAACG,MAAM,EAAED,CAAC,EAAE,EAAE;IAC1C,IAAIF,UAAU,CAACE,CAAC,CAAC,CAACE,IAAI,CAACC,UAAU,CAAC,QAAQ,CAAC,EAAE;MAC3C,IAAI,CAACC,GAAG,CAAC,WAAW,EAAE;QACpBF,IAAI,EAAE,SAAS;QACfG,KAAK,EAAEN,KAAK,CAACC,CAAC,CAAC;QACfM,UAAU,EAAE;MACd,CAAC,CAAC;MAEF;IACF;EACF;AACF","ignoreList":[]}
@@ -0,0 +1,137 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = fit;
7
+ /*
8
+ * Copyright © HatioLab Inc. All rights reserved.
9
+ */
10
+
11
+ function _fitNone(container, model_layer, target_element) {
12
+ /* 설정된 단위에 맞춰서, 최초의 scene scale을 설정한다. */
13
+ var scale = container.unitScale;
14
+ model_layer.set('scale', {
15
+ x: scale,
16
+ y: scale
17
+ });
18
+ model_layer.set('translate', {
19
+ x: 0,
20
+ y: 0
21
+ });
22
+ }
23
+ function _fitBoth(container, model_layer, target_element) {
24
+ var {
25
+ width,
26
+ height
27
+ } = model_layer.model;
28
+ var vw = target_element.clientWidth,
29
+ vh = target_element.clientHeight;
30
+ model_layer.set('scale', {
31
+ x: vw / width,
32
+ y: vh / height
33
+ });
34
+ model_layer.set('translate', {
35
+ x: 0,
36
+ y: 0
37
+ });
38
+ }
39
+ function _fitCenter(container, model_layer, target_element) {
40
+ /* 설정된 단위에 맞춰서, 최초의 scene scale을 설정한다. */
41
+ var scale = container.unitScale;
42
+ var {
43
+ width,
44
+ height
45
+ } = model_layer.model;
46
+ model_layer.set('scale', {
47
+ x: scale,
48
+ y: scale
49
+ });
50
+ model_layer.set('translate', {
51
+ x: Math.max((target_element.clientWidth - width * scale) / 2, 0),
52
+ y: Math.max((target_element.clientHeight - height * scale) / 2, 0)
53
+ });
54
+ }
55
+ function _fitWidth(container, model_layer, target_element) {
56
+ var scale = target_element.clientWidth / model_layer.get('width');
57
+ model_layer.set('scale', {
58
+ x: scale,
59
+ y: scale
60
+ });
61
+ model_layer.set('translate', {
62
+ x: 0,
63
+ y: 0
64
+ });
65
+ }
66
+ function _fitHeight(container, model_layer, target_element) {
67
+ var scale = target_element.clientHeight / model_layer.get('height');
68
+ model_layer.set('scale', {
69
+ x: scale,
70
+ y: scale
71
+ });
72
+ model_layer.set('translate', {
73
+ x: 0,
74
+ y: 0
75
+ });
76
+ }
77
+ function _fitRatio(container, model_layer, target_element) {
78
+ var {
79
+ width,
80
+ height
81
+ } = model_layer.model;
82
+ var vw = target_element.clientWidth,
83
+ vh = target_element.clientHeight;
84
+ var scaleX = vw / width;
85
+ var scaleY = vh / height;
86
+ var scale = Math.min(scaleX, scaleY);
87
+ model_layer.set('scale', {
88
+ x: scale,
89
+ y: scale
90
+ });
91
+ model_layer.set('translate', {
92
+ x: (vw - width * scale) / 2,
93
+ y: (vh - height * scale) / 2
94
+ });
95
+ }
96
+
97
+ /**
98
+ * !this should be root-container
99
+ *
100
+ * @param {String} type assigns fitMode property of root container before fitting
101
+ */
102
+ function fit(type) {
103
+ var {
104
+ width,
105
+ height,
106
+ fitMode
107
+ } = this.model_layer.model;
108
+ var target_element = this.target_element; // Scene을 둘러싸고 있는 DIV element
109
+ var model_layer = this.model_layer;
110
+ this.fitMode = type || this.fitMode || fitMode || 'ratio';
111
+ if (!width || !height || !target_element || !target_element.clientWidth || !target_element.clientHeight) {
112
+ return;
113
+ }
114
+ switch (this.fitMode) {
115
+ case 'center':
116
+ _fitCenter(this, model_layer, target_element);
117
+ break;
118
+ case 'both':
119
+ _fitBoth(this, model_layer, target_element);
120
+ break;
121
+ case 'width':
122
+ _fitWidth(this, model_layer, target_element);
123
+ break;
124
+ case 'height':
125
+ _fitHeight(this, model_layer, target_element);
126
+ break;
127
+ case 'ratio':
128
+ _fitRatio(this, model_layer, target_element);
129
+ break;
130
+ case 'none':
131
+ default:
132
+ _fitNone(this, model_layer, target_element);
133
+ break;
134
+ }
135
+ this.resize();
136
+ }
137
+ //# sourceMappingURL=fit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fit.js","names":["_fitNone","container","model_layer","target_element","scale","unitScale","set","x","y","_fitBoth","width","height","model","vw","clientWidth","vh","clientHeight","_fitCenter","Math","max","_fitWidth","get","_fitHeight","_fitRatio","scaleX","scaleY","min","fit","type","fitMode","resize"],"sources":["../../../src/components/fit/fit.js"],"sourcesContent":["/*\n * Copyright © HatioLab Inc. All rights reserved.\n */\n\nfunction _fitNone(container, model_layer, target_element) {\n /* 설정된 단위에 맞춰서, 최초의 scene scale을 설정한다. */\n var scale = container.unitScale\n\n model_layer.set('scale', {\n x: scale,\n y: scale\n })\n\n model_layer.set('translate', {\n x: 0,\n y: 0\n })\n}\n\nfunction _fitBoth(container, model_layer, target_element) {\n var { width, height } = model_layer.model\n var vw = target_element.clientWidth,\n vh = target_element.clientHeight\n\n model_layer.set('scale', {\n x: vw / width,\n y: vh / height\n })\n\n model_layer.set('translate', {\n x: 0,\n y: 0\n })\n}\n\nfunction _fitCenter(container, model_layer, target_element) {\n /* 설정된 단위에 맞춰서, 최초의 scene scale을 설정한다. */\n var scale = container.unitScale\n var { width, height } = model_layer.model\n\n model_layer.set('scale', {\n x: scale,\n y: scale\n })\n\n model_layer.set('translate', {\n x: Math.max((target_element.clientWidth - width * scale) / 2, 0),\n y: Math.max((target_element.clientHeight - height * scale) / 2, 0)\n })\n}\n\nfunction _fitWidth(container, model_layer, target_element) {\n var scale = target_element.clientWidth / model_layer.get('width')\n\n model_layer.set('scale', {\n x: scale,\n y: scale\n })\n\n model_layer.set('translate', {\n x: 0,\n y: 0\n })\n}\n\nfunction _fitHeight(container, model_layer, target_element) {\n var scale = target_element.clientHeight / model_layer.get('height')\n\n model_layer.set('scale', {\n x: scale,\n y: scale\n })\n\n model_layer.set('translate', {\n x: 0,\n y: 0\n })\n}\n\nfunction _fitRatio(container, model_layer, target_element) {\n var { width, height } = model_layer.model\n var vw = target_element.clientWidth,\n vh = target_element.clientHeight\n\n var scaleX = vw / width\n var scaleY = vh / height\n var scale = Math.min(scaleX, scaleY)\n\n model_layer.set('scale', {\n x: scale,\n y: scale\n })\n\n model_layer.set('translate', {\n x: (vw - width * scale) / 2,\n y: (vh - height * scale) / 2\n })\n}\n\n/**\n * !this should be root-container\n *\n * @param {String} type assigns fitMode property of root container before fitting\n */\nexport default function fit(type) {\n var { width, height, fitMode } = this.model_layer.model\n\n var target_element = this.target_element // Scene을 둘러싸고 있는 DIV element\n var model_layer = this.model_layer\n\n this.fitMode = type || this.fitMode || fitMode || 'ratio'\n\n if (!width || !height || !target_element || !target_element.clientWidth || !target_element.clientHeight) {\n return\n }\n\n switch (this.fitMode) {\n case 'center':\n _fitCenter(this, model_layer, target_element)\n break\n case 'both':\n _fitBoth(this, model_layer, target_element)\n break\n case 'width':\n _fitWidth(this, model_layer, target_element)\n break\n case 'height':\n _fitHeight(this, model_layer, target_element)\n break\n case 'ratio':\n _fitRatio(this, model_layer, target_element)\n break\n case 'none':\n default:\n _fitNone(this, model_layer, target_element)\n break\n }\n\n this.resize()\n}\n"],"mappings":"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","ignoreList":[]}