ding-image-editor 3.15.3

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 (374) hide show
  1. package/README.md +193 -0
  2. package/dist/svg/icon-a.svg +376 -0
  3. package/dist/svg/icon-b.svg +369 -0
  4. package/dist/svg/icon-c.svg +369 -0
  5. package/dist/svg/icon-d.svg +369 -0
  6. package/dist/tui-image-editor.css +6 -0
  7. package/dist/tui-image-editor.js +62329 -0
  8. package/dist/tui-image-editor.min.css +5 -0
  9. package/dist/tui-image-editor.min.js +15 -0
  10. package/index.d.ts +334 -0
  11. package/package.json +52 -0
  12. package/src/css/buttons.styl +102 -0
  13. package/src/css/checkbox.styl +86 -0
  14. package/src/css/colorpicker.styl +98 -0
  15. package/src/css/gridtable.styl +45 -0
  16. package/src/css/icon.styl +44 -0
  17. package/src/css/index.styl +17 -0
  18. package/src/css/main.styl +163 -0
  19. package/src/css/position.styl +309 -0
  20. package/src/css/range.styl +91 -0
  21. package/src/css/submenu.styl +168 -0
  22. package/src/index.js +29 -0
  23. package/src/js/action.js +686 -0
  24. package/src/js/command/addIcon.js +42 -0
  25. package/src/js/command/addImageObject.js +34 -0
  26. package/src/js/command/addObject.js +43 -0
  27. package/src/js/command/addShape.js +51 -0
  28. package/src/js/command/addText.js +73 -0
  29. package/src/js/command/applyFilter.js +95 -0
  30. package/src/js/command/changeIconColor.js +48 -0
  31. package/src/js/command/changeSelection.js +31 -0
  32. package/src/js/command/changeShape.js +84 -0
  33. package/src/js/command/changeText.js +44 -0
  34. package/src/js/command/changeTextStyle.js +80 -0
  35. package/src/js/command/clearObjects.js +33 -0
  36. package/src/js/command/flip.js +36 -0
  37. package/src/js/command/loadImage.js +58 -0
  38. package/src/js/command/removeFilter.js +38 -0
  39. package/src/js/command/removeObject.js +37 -0
  40. package/src/js/command/resize.js +41 -0
  41. package/src/js/command/resizeCanvasDimension.js +40 -0
  42. package/src/js/command/rotate.js +64 -0
  43. package/src/js/command/setObjectPosition.js +50 -0
  44. package/src/js/command/setObjectProperties.js +55 -0
  45. package/src/js/component/cropper.js +407 -0
  46. package/src/js/component/filter.js +229 -0
  47. package/src/js/component/flip.js +146 -0
  48. package/src/js/component/freeDrawing.js +144 -0
  49. package/src/js/component/icon.js +246 -0
  50. package/src/js/component/imageLoader.js +84 -0
  51. package/src/js/component/line.js +205 -0
  52. package/src/js/component/resize.js +103 -0
  53. package/src/js/component/rotation.js +91 -0
  54. package/src/js/component/shape.js +601 -0
  55. package/src/js/component/text.js +572 -0
  56. package/src/js/component/zoom.js +708 -0
  57. package/src/js/consts.js +404 -0
  58. package/src/js/drawingMode/cropper.js +35 -0
  59. package/src/js/drawingMode/freeDrawing.js +36 -0
  60. package/src/js/drawingMode/icon.js +35 -0
  61. package/src/js/drawingMode/lineDrawing.js +36 -0
  62. package/src/js/drawingMode/resize.js +35 -0
  63. package/src/js/drawingMode/shape.js +35 -0
  64. package/src/js/drawingMode/text.js +35 -0
  65. package/src/js/drawingMode/zoom.js +37 -0
  66. package/src/js/extension/arrowLine.js +172 -0
  67. package/src/js/extension/blur.js +29 -0
  68. package/src/js/extension/colorFilter.js +104 -0
  69. package/src/js/extension/cropzone.js +568 -0
  70. package/src/js/extension/emboss.js +29 -0
  71. package/src/js/extension/mask.js +90 -0
  72. package/src/js/extension/sharpen.js +29 -0
  73. package/src/js/factory/command.js +36 -0
  74. package/src/js/factory/errorMessage.js +27 -0
  75. package/src/js/graphics.js +1539 -0
  76. package/src/js/helper/imagetracer.js +1396 -0
  77. package/src/js/helper/selectionModifyHelper.js +86 -0
  78. package/src/js/helper/shapeFilterFillHelper.js +564 -0
  79. package/src/js/helper/shapeResizeHelper.js +237 -0
  80. package/src/js/imageEditor.js +1795 -0
  81. package/src/js/interface/command.js +131 -0
  82. package/src/js/interface/component.js +127 -0
  83. package/src/js/interface/drawingMode.js +47 -0
  84. package/src/js/invoker.js +292 -0
  85. package/src/js/polyfill.js +498 -0
  86. package/src/js/ui/crop.js +139 -0
  87. package/src/js/ui/draw.js +187 -0
  88. package/src/js/ui/filter.js +510 -0
  89. package/src/js/ui/flip.js +87 -0
  90. package/src/js/ui/history.js +171 -0
  91. package/src/js/ui/icon.js +191 -0
  92. package/src/js/ui/locale/locale.js +19 -0
  93. package/src/js/ui/mask.js +96 -0
  94. package/src/js/ui/panelMenu.js +130 -0
  95. package/src/js/ui/resize.js +241 -0
  96. package/src/js/ui/rotate.js +123 -0
  97. package/src/js/ui/shape.js +265 -0
  98. package/src/js/ui/submenuBase.js +122 -0
  99. package/src/js/ui/template/controls.js +21 -0
  100. package/src/js/ui/template/mainContainer.js +38 -0
  101. package/src/js/ui/template/style.js +146 -0
  102. package/src/js/ui/template/submenu/crop.js +73 -0
  103. package/src/js/ui/template/submenu/draw.js +42 -0
  104. package/src/js/ui/template/submenu/filter.js +157 -0
  105. package/src/js/ui/template/submenu/flip.js +41 -0
  106. package/src/js/ui/template/submenu/history.js +22 -0
  107. package/src/js/ui/template/submenu/icon.js +108 -0
  108. package/src/js/ui/template/submenu/mask.js +30 -0
  109. package/src/js/ui/template/submenu/resize.js +54 -0
  110. package/src/js/ui/template/submenu/rotate.js +32 -0
  111. package/src/js/ui/template/submenu/shape.js +45 -0
  112. package/src/js/ui/template/submenu/text.js +67 -0
  113. package/src/js/ui/template/submenu/zoom.js +41 -0
  114. package/src/js/ui/text.js +279 -0
  115. package/src/js/ui/theme/standard.js +220 -0
  116. package/src/js/ui/theme/theme.js +249 -0
  117. package/src/js/ui/tools/colorpicker.js +250 -0
  118. package/src/js/ui/tools/range.js +390 -0
  119. package/src/js/ui.js +858 -0
  120. package/src/js/util.js +551 -0
  121. package/src/svg/default.svg +335 -0
  122. package/src/svg/icon-a/ic-apply.svg +6 -0
  123. package/src/svg/icon-a/ic-cancel.svg +6 -0
  124. package/src/svg/icon-a/ic-color-transparent-w.svg +12 -0
  125. package/src/svg/icon-a/ic-crop.svg +7 -0
  126. package/src/svg/icon-a/ic-delete-all.svg +6 -0
  127. package/src/svg/icon-a/ic-delete.svg +6 -0
  128. package/src/svg/icon-a/ic-draw-free.svg +5 -0
  129. package/src/svg/icon-a/ic-draw-line.svg +5 -0
  130. package/src/svg/icon-a/ic-draw.svg +6 -0
  131. package/src/svg/icon-a/ic-filter.svg +7 -0
  132. package/src/svg/icon-a/ic-flip-reset.svg +7 -0
  133. package/src/svg/icon-a/ic-flip-x.svg +6 -0
  134. package/src/svg/icon-a/ic-flip-y.svg +6 -0
  135. package/src/svg/icon-a/ic-flip.svg +6 -0
  136. package/src/svg/icon-a/ic-history-check.svg +5 -0
  137. package/src/svg/icon-a/ic-history-crop.svg +7 -0
  138. package/src/svg/icon-a/ic-history-delete.svg +9 -0
  139. package/src/svg/icon-a/ic-history-draw.svg +7 -0
  140. package/src/svg/icon-a/ic-history-filter.svg +8 -0
  141. package/src/svg/icon-a/ic-history-flip.svg +6 -0
  142. package/src/svg/icon-a/ic-history-group.svg +9 -0
  143. package/src/svg/icon-a/ic-history-icon.svg +6 -0
  144. package/src/svg/icon-a/ic-history-load.svg +7 -0
  145. package/src/svg/icon-a/ic-history-mask.svg +9 -0
  146. package/src/svg/icon-a/ic-history-resize.svg +12 -0
  147. package/src/svg/icon-a/ic-history-rotate.svg +16 -0
  148. package/src/svg/icon-a/ic-history-shape.svg +7 -0
  149. package/src/svg/icon-a/ic-history-text.svg +8 -0
  150. package/src/svg/icon-a/ic-history.svg +6 -0
  151. package/src/svg/icon-a/ic-icon-arrow-2.svg +5 -0
  152. package/src/svg/icon-a/ic-icon-arrow-3.svg +5 -0
  153. package/src/svg/icon-a/ic-icon-arrow.svg +5 -0
  154. package/src/svg/icon-a/ic-icon-bubble.svg +5 -0
  155. package/src/svg/icon-a/ic-icon-heart.svg +5 -0
  156. package/src/svg/icon-a/ic-icon-load.svg +8 -0
  157. package/src/svg/icon-a/ic-icon-location.svg +8 -0
  158. package/src/svg/icon-a/ic-icon-polygon.svg +5 -0
  159. package/src/svg/icon-a/ic-icon-star-2.svg +5 -0
  160. package/src/svg/icon-a/ic-icon-star.svg +5 -0
  161. package/src/svg/icon-a/ic-icon.svg +5 -0
  162. package/src/svg/icon-a/ic-mask-load.svg +8 -0
  163. package/src/svg/icon-a/ic-mask.svg +6 -0
  164. package/src/svg/icon-a/ic-redo.svg +7 -0
  165. package/src/svg/icon-a/ic-reset.svg +7 -0
  166. package/src/svg/icon-a/ic-resize.svg +13 -0
  167. package/src/svg/icon-a/ic-rotate-clockwise.svg +7 -0
  168. package/src/svg/icon-a/ic-rotate-counterclockwise.svg +7 -0
  169. package/src/svg/icon-a/ic-rotate.svg +7 -0
  170. package/src/svg/icon-a/ic-shape-circle.svg +5 -0
  171. package/src/svg/icon-a/ic-shape-rectangle.svg +5 -0
  172. package/src/svg/icon-a/ic-shape-triangle.svg +5 -0
  173. package/src/svg/icon-a/ic-shape.svg +6 -0
  174. package/src/svg/icon-a/ic-text-align-center.svg +6 -0
  175. package/src/svg/icon-a/ic-text-align-left.svg +6 -0
  176. package/src/svg/icon-a/ic-text-align-right.svg +6 -0
  177. package/src/svg/icon-a/ic-text-bold.svg +7 -0
  178. package/src/svg/icon-a/ic-text-italic.svg +6 -0
  179. package/src/svg/icon-a/ic-text-underline.svg +7 -0
  180. package/src/svg/icon-a/ic-text.svg +7 -0
  181. package/src/svg/icon-a/ic-undo.svg +7 -0
  182. package/src/svg/icon-a/ic-zoom-hand.svg +8 -0
  183. package/src/svg/icon-a/ic-zoom-zoom-in.svg +10 -0
  184. package/src/svg/icon-a/ic-zoom-zoom-out.svg +9 -0
  185. package/src/svg/icon-a/img-bi.svg +5 -0
  186. package/src/svg/icon-b/ic-apply.svg +6 -0
  187. package/src/svg/icon-b/ic-cancel.svg +6 -0
  188. package/src/svg/icon-b/ic-crop.svg +7 -0
  189. package/src/svg/icon-b/ic-delete-all.svg +6 -0
  190. package/src/svg/icon-b/ic-delete.svg +6 -0
  191. package/src/svg/icon-b/ic-draw-free.svg +5 -0
  192. package/src/svg/icon-b/ic-draw-line.svg +5 -0
  193. package/src/svg/icon-b/ic-draw.svg +6 -0
  194. package/src/svg/icon-b/ic-filter.svg +7 -0
  195. package/src/svg/icon-b/ic-flip-reset.svg +7 -0
  196. package/src/svg/icon-b/ic-flip-x.svg +6 -0
  197. package/src/svg/icon-b/ic-flip-y.svg +6 -0
  198. package/src/svg/icon-b/ic-flip.svg +6 -0
  199. package/src/svg/icon-b/ic-history-check.svg +5 -0
  200. package/src/svg/icon-b/ic-history-crop.svg +7 -0
  201. package/src/svg/icon-b/ic-history-delete.svg +9 -0
  202. package/src/svg/icon-b/ic-history-draw.svg +7 -0
  203. package/src/svg/icon-b/ic-history-filter.svg +8 -0
  204. package/src/svg/icon-b/ic-history-flip.svg +6 -0
  205. package/src/svg/icon-b/ic-history-group.svg +9 -0
  206. package/src/svg/icon-b/ic-history-icon.svg +6 -0
  207. package/src/svg/icon-b/ic-history-load.svg +7 -0
  208. package/src/svg/icon-b/ic-history-mask.svg +9 -0
  209. package/src/svg/icon-b/ic-history-resize.svg +12 -0
  210. package/src/svg/icon-b/ic-history-rotate.svg +16 -0
  211. package/src/svg/icon-b/ic-history-shape.svg +7 -0
  212. package/src/svg/icon-b/ic-history-text.svg +8 -0
  213. package/src/svg/icon-b/ic-history.svg +6 -0
  214. package/src/svg/icon-b/ic-icon-arrow-2.svg +5 -0
  215. package/src/svg/icon-b/ic-icon-arrow-3.svg +5 -0
  216. package/src/svg/icon-b/ic-icon-arrow.svg +5 -0
  217. package/src/svg/icon-b/ic-icon-bubble.svg +5 -0
  218. package/src/svg/icon-b/ic-icon-heart.svg +5 -0
  219. package/src/svg/icon-b/ic-icon-load.svg +8 -0
  220. package/src/svg/icon-b/ic-icon-location.svg +8 -0
  221. package/src/svg/icon-b/ic-icon-polygon.svg +5 -0
  222. package/src/svg/icon-b/ic-icon-star-2.svg +5 -0
  223. package/src/svg/icon-b/ic-icon-star.svg +5 -0
  224. package/src/svg/icon-b/ic-icon.svg +5 -0
  225. package/src/svg/icon-b/ic-mask-load.svg +8 -0
  226. package/src/svg/icon-b/ic-mask.svg +6 -0
  227. package/src/svg/icon-b/ic-redo.svg +7 -0
  228. package/src/svg/icon-b/ic-reset.svg +7 -0
  229. package/src/svg/icon-b/ic-resize.svg +13 -0
  230. package/src/svg/icon-b/ic-rotate-clockwise.svg +7 -0
  231. package/src/svg/icon-b/ic-rotate-counterclockwise.svg +7 -0
  232. package/src/svg/icon-b/ic-rotate.svg +7 -0
  233. package/src/svg/icon-b/ic-shape-circle.svg +5 -0
  234. package/src/svg/icon-b/ic-shape-rectangle.svg +5 -0
  235. package/src/svg/icon-b/ic-shape-triangle.svg +5 -0
  236. package/src/svg/icon-b/ic-shape.svg +6 -0
  237. package/src/svg/icon-b/ic-text-align-center.svg +6 -0
  238. package/src/svg/icon-b/ic-text-align-left.svg +6 -0
  239. package/src/svg/icon-b/ic-text-align-right.svg +6 -0
  240. package/src/svg/icon-b/ic-text-bold.svg +7 -0
  241. package/src/svg/icon-b/ic-text-italic.svg +6 -0
  242. package/src/svg/icon-b/ic-text-underline.svg +7 -0
  243. package/src/svg/icon-b/ic-text.svg +7 -0
  244. package/src/svg/icon-b/ic-undo.svg +7 -0
  245. package/src/svg/icon-b/ic-zoom-hand.svg +8 -0
  246. package/src/svg/icon-b/ic-zoom-zoom-in.svg +12 -0
  247. package/src/svg/icon-b/ic-zoom-zoom-out.svg +11 -0
  248. package/src/svg/icon-b/img-bi.svg +5 -0
  249. package/src/svg/icon-c/ic-apply.svg +6 -0
  250. package/src/svg/icon-c/ic-cancel.svg +6 -0
  251. package/src/svg/icon-c/ic-crop.svg +7 -0
  252. package/src/svg/icon-c/ic-delete-all.svg +6 -0
  253. package/src/svg/icon-c/ic-delete.svg +6 -0
  254. package/src/svg/icon-c/ic-draw-free.svg +5 -0
  255. package/src/svg/icon-c/ic-draw-line.svg +5 -0
  256. package/src/svg/icon-c/ic-draw.svg +6 -0
  257. package/src/svg/icon-c/ic-filter.svg +7 -0
  258. package/src/svg/icon-c/ic-flip-reset.svg +7 -0
  259. package/src/svg/icon-c/ic-flip-x.svg +6 -0
  260. package/src/svg/icon-c/ic-flip-y.svg +6 -0
  261. package/src/svg/icon-c/ic-flip.svg +6 -0
  262. package/src/svg/icon-c/ic-history-check.svg +5 -0
  263. package/src/svg/icon-c/ic-history-crop.svg +7 -0
  264. package/src/svg/icon-c/ic-history-delete.svg +9 -0
  265. package/src/svg/icon-c/ic-history-draw.svg +7 -0
  266. package/src/svg/icon-c/ic-history-filter.svg +8 -0
  267. package/src/svg/icon-c/ic-history-flip.svg +6 -0
  268. package/src/svg/icon-c/ic-history-group.svg +9 -0
  269. package/src/svg/icon-c/ic-history-icon.svg +6 -0
  270. package/src/svg/icon-c/ic-history-load.svg +7 -0
  271. package/src/svg/icon-c/ic-history-mask.svg +9 -0
  272. package/src/svg/icon-c/ic-history-resize.svg +12 -0
  273. package/src/svg/icon-c/ic-history-rotate.svg +16 -0
  274. package/src/svg/icon-c/ic-history-shape.svg +7 -0
  275. package/src/svg/icon-c/ic-history-text.svg +8 -0
  276. package/src/svg/icon-c/ic-history.svg +6 -0
  277. package/src/svg/icon-c/ic-icon-arrow-2.svg +5 -0
  278. package/src/svg/icon-c/ic-icon-arrow-3.svg +5 -0
  279. package/src/svg/icon-c/ic-icon-arrow.svg +5 -0
  280. package/src/svg/icon-c/ic-icon-bubble.svg +5 -0
  281. package/src/svg/icon-c/ic-icon-heart.svg +5 -0
  282. package/src/svg/icon-c/ic-icon-load.svg +8 -0
  283. package/src/svg/icon-c/ic-icon-location.svg +8 -0
  284. package/src/svg/icon-c/ic-icon-polygon.svg +5 -0
  285. package/src/svg/icon-c/ic-icon-star-2.svg +5 -0
  286. package/src/svg/icon-c/ic-icon-star.svg +5 -0
  287. package/src/svg/icon-c/ic-icon.svg +5 -0
  288. package/src/svg/icon-c/ic-mask-load.svg +8 -0
  289. package/src/svg/icon-c/ic-mask.svg +6 -0
  290. package/src/svg/icon-c/ic-redo.svg +7 -0
  291. package/src/svg/icon-c/ic-reset.svg +7 -0
  292. package/src/svg/icon-c/ic-resize.svg +13 -0
  293. package/src/svg/icon-c/ic-rotate-clockwise.svg +7 -0
  294. package/src/svg/icon-c/ic-rotate-counterclockwise.svg +7 -0
  295. package/src/svg/icon-c/ic-rotate.svg +7 -0
  296. package/src/svg/icon-c/ic-shape-circle.svg +5 -0
  297. package/src/svg/icon-c/ic-shape-rectangle.svg +5 -0
  298. package/src/svg/icon-c/ic-shape-triangle.svg +5 -0
  299. package/src/svg/icon-c/ic-shape.svg +6 -0
  300. package/src/svg/icon-c/ic-text-align-center.svg +6 -0
  301. package/src/svg/icon-c/ic-text-align-left.svg +6 -0
  302. package/src/svg/icon-c/ic-text-align-right.svg +6 -0
  303. package/src/svg/icon-c/ic-text-bold.svg +7 -0
  304. package/src/svg/icon-c/ic-text-italic.svg +6 -0
  305. package/src/svg/icon-c/ic-text-underline.svg +7 -0
  306. package/src/svg/icon-c/ic-text.svg +7 -0
  307. package/src/svg/icon-c/ic-undo.svg +7 -0
  308. package/src/svg/icon-c/ic-zoom-hand.svg +8 -0
  309. package/src/svg/icon-c/ic-zoom-zoom-in.svg +12 -0
  310. package/src/svg/icon-c/ic-zoom-zoom-out.svg +11 -0
  311. package/src/svg/icon-c/img-bi.svg +5 -0
  312. package/src/svg/icon-d/ic-apply.svg +6 -0
  313. package/src/svg/icon-d/ic-cancel.svg +6 -0
  314. package/src/svg/icon-d/ic-crop.svg +7 -0
  315. package/src/svg/icon-d/ic-delete-all.svg +6 -0
  316. package/src/svg/icon-d/ic-delete.svg +6 -0
  317. package/src/svg/icon-d/ic-draw-free.svg +5 -0
  318. package/src/svg/icon-d/ic-draw-line.svg +5 -0
  319. package/src/svg/icon-d/ic-draw.svg +6 -0
  320. package/src/svg/icon-d/ic-filter.svg +7 -0
  321. package/src/svg/icon-d/ic-flip-reset.svg +7 -0
  322. package/src/svg/icon-d/ic-flip-x.svg +6 -0
  323. package/src/svg/icon-d/ic-flip-y.svg +6 -0
  324. package/src/svg/icon-d/ic-flip.svg +6 -0
  325. package/src/svg/icon-d/ic-history-check.svg +5 -0
  326. package/src/svg/icon-d/ic-history-crop.svg +7 -0
  327. package/src/svg/icon-d/ic-history-delete.svg +9 -0
  328. package/src/svg/icon-d/ic-history-draw.svg +7 -0
  329. package/src/svg/icon-d/ic-history-filter.svg +8 -0
  330. package/src/svg/icon-d/ic-history-flip.svg +6 -0
  331. package/src/svg/icon-d/ic-history-group.svg +9 -0
  332. package/src/svg/icon-d/ic-history-icon.svg +6 -0
  333. package/src/svg/icon-d/ic-history-load.svg +7 -0
  334. package/src/svg/icon-d/ic-history-mask.svg +9 -0
  335. package/src/svg/icon-d/ic-history-resize.svg +12 -0
  336. package/src/svg/icon-d/ic-history-rotate.svg +16 -0
  337. package/src/svg/icon-d/ic-history-shape.svg +7 -0
  338. package/src/svg/icon-d/ic-history-text.svg +8 -0
  339. package/src/svg/icon-d/ic-history.svg +6 -0
  340. package/src/svg/icon-d/ic-icon-arrow-2.svg +5 -0
  341. package/src/svg/icon-d/ic-icon-arrow-3.svg +5 -0
  342. package/src/svg/icon-d/ic-icon-arrow.svg +5 -0
  343. package/src/svg/icon-d/ic-icon-bubble.svg +5 -0
  344. package/src/svg/icon-d/ic-icon-heart.svg +5 -0
  345. package/src/svg/icon-d/ic-icon-load.svg +8 -0
  346. package/src/svg/icon-d/ic-icon-location.svg +8 -0
  347. package/src/svg/icon-d/ic-icon-polygon.svg +5 -0
  348. package/src/svg/icon-d/ic-icon-star-2.svg +5 -0
  349. package/src/svg/icon-d/ic-icon-star.svg +5 -0
  350. package/src/svg/icon-d/ic-icon.svg +5 -0
  351. package/src/svg/icon-d/ic-mask-load.svg +8 -0
  352. package/src/svg/icon-d/ic-mask.svg +6 -0
  353. package/src/svg/icon-d/ic-redo.svg +7 -0
  354. package/src/svg/icon-d/ic-reset.svg +7 -0
  355. package/src/svg/icon-d/ic-resize.svg +13 -0
  356. package/src/svg/icon-d/ic-rotate-clockwise.svg +7 -0
  357. package/src/svg/icon-d/ic-rotate-counterclockwise.svg +7 -0
  358. package/src/svg/icon-d/ic-rotate.svg +7 -0
  359. package/src/svg/icon-d/ic-shape-circle.svg +5 -0
  360. package/src/svg/icon-d/ic-shape-rectangle.svg +5 -0
  361. package/src/svg/icon-d/ic-shape-triangle.svg +5 -0
  362. package/src/svg/icon-d/ic-shape.svg +6 -0
  363. package/src/svg/icon-d/ic-text-align-center.svg +6 -0
  364. package/src/svg/icon-d/ic-text-align-left.svg +6 -0
  365. package/src/svg/icon-d/ic-text-align-right.svg +6 -0
  366. package/src/svg/icon-d/ic-text-bold.svg +7 -0
  367. package/src/svg/icon-d/ic-text-italic.svg +6 -0
  368. package/src/svg/icon-d/ic-text-underline.svg +7 -0
  369. package/src/svg/icon-d/ic-text.svg +7 -0
  370. package/src/svg/icon-d/ic-undo.svg +7 -0
  371. package/src/svg/icon-d/ic-zoom-hand.svg +8 -0
  372. package/src/svg/icon-d/ic-zoom-zoom-in.svg +12 -0
  373. package/src/svg/icon-d/ic-zoom-zoom-out.svg +11 -0
  374. package/src/svg/icon-d/img-bi.svg +5 -0
@@ -0,0 +1,220 @@
1
+ /**
2
+ * Full configuration for theme.<br>
3
+ * @typedef {object} themeConfig
4
+ * @property {string} common.bi.image - Brand icon image
5
+ * @property {string} common.bisize.width - Icon image width
6
+ * @property {string} common.bisize.height - Icon Image Height
7
+ * @property {string} common.backgroundImage - Background image
8
+ * @property {string} common.backgroundColor - Background color
9
+ * @property {string} common.border - Full area border style
10
+ * @property {string} header.backgroundImage - header area background
11
+ * @property {string} header.backgroundColor - header area background color
12
+ * @property {string} header.border - header area border style
13
+ * @property {string} loadButton.backgroundColor - load button background color
14
+ * @property {string} loadButton.border - load button border style
15
+ * @property {string} loadButton.color - load button foreground color
16
+ * @property {string} loadButton.fontFamily - load button font type
17
+ * @property {string} loadButton.fontSize - load button font size
18
+ * @property {string} downloadButton.backgroundColor - download button background color
19
+ * @property {string} downloadButton.border - download button border style
20
+ * @property {string} downloadButton.color - download button foreground color
21
+ * @property {string} downloadButton.fontFamily - download button font type
22
+ * @property {string} downloadButton.fontSize - download button font size
23
+ * @property {string} menu.normalIcon.color - Menu normal color for default icon
24
+ * @property {string} menu.normalIcon.path - Menu normal icon svg bundle file path
25
+ * @property {string} menu.normalIcon.name - Menu normal icon svg bundle name
26
+ * @property {string} menu.activeIcon.color - Menu active color for default icon
27
+ * @property {string} menu.activeIcon.path - Menu active icon svg bundle file path
28
+ * @property {string} menu.activeIcon.name - Menu active icon svg bundle name
29
+ * @property {string} menu.disabled.color - Menu disabled color for default icon
30
+ * @property {string} menu.disabled.path - Menu disabled icon svg bundle file path
31
+ * @property {string} menu.disabled.name - Menu disabled icon svg bundle name
32
+ * @property {string} menu.hover.color - Menu default icon hover color
33
+ * @property {string} menu.hover.path - Menu hover icon svg bundle file path
34
+ * @property {string} menu.hover.name - Menu hover icon svg bundle name
35
+ * @property {string} menu.iconSize.width - Menu icon Size Width
36
+ * @property {string} menu.iconSize.height - Menu Icon Size Height
37
+ * @property {string} submenu.backgroundColor - Sub-menu area background color
38
+ * @property {string} submenu.partition.color - Submenu partition line color
39
+ * @property {string} submenu.normalIcon.color - Submenu normal color for default icon
40
+ * @property {string} submenu.normalIcon.path - Submenu default icon svg bundle file path
41
+ * @property {string} submenu.normalIcon.name - Submenu default icon svg bundle name
42
+ * @property {string} submenu.activeIcon.color - Submenu active color for default icon
43
+ * @property {string} submenu.activeIcon.path - Submenu active icon svg bundle file path
44
+ * @property {string} submenu.activeIcon.name - Submenu active icon svg bundle name
45
+ * @property {string} submenu.iconSize.width - Submenu icon Size Width
46
+ * @property {string} submenu.iconSize.height - Submenu Icon Size Height
47
+ * @property {string} submenu.normalLabel.color - Submenu default label color
48
+ * @property {string} submenu.normalLabel.fontWeight - Sub Menu Default Label Font Thickness
49
+ * @property {string} submenu.activeLabel.color - Submenu active label color
50
+ * @property {string} submenu.activeLabel.fontWeight - Submenu active label Font thickness
51
+ * @property {string} checkbox.border - Checkbox border style
52
+ * @property {string} checkbox.backgroundColor - Checkbox background color
53
+ * @property {string} range.pointer.color - range control pointer color
54
+ * @property {string} range.bar.color - range control bar color
55
+ * @property {string} range.subbar.color - range control subbar color
56
+ * @property {string} range.value.color - range number box font color
57
+ * @property {string} range.value.fontWeight - range number box font thickness
58
+ * @property {string} range.value.fontSize - range number box font size
59
+ * @property {string} range.value.border - range number box border style
60
+ * @property {string} range.value.backgroundColor - range number box background color
61
+ * @property {string} range.title.color - range title font color
62
+ * @property {string} range.title.fontWeight - range title font weight
63
+ * @property {string} colorpicker.button.border - colorpicker button border style
64
+ * @property {string} colorpicker.title.color - colorpicker button title font color
65
+ * @example
66
+ // default keys and styles
67
+ var customTheme = {
68
+ 'common.bi.image': 'https://uicdn.toast.com/toastui/img/tui-image-editor-bi.png',
69
+ 'common.bisize.width': '251px',
70
+ 'common.bisize.height': '21px',
71
+ 'common.backgroundImage': 'none',
72
+ 'common.backgroundColor': '#1e1e1e',
73
+ 'common.border': '0px',
74
+
75
+ // header
76
+ 'header.backgroundImage': 'none',
77
+ 'header.backgroundColor': 'transparent',
78
+ 'header.border': '0px',
79
+
80
+ // load button
81
+ 'loadButton.backgroundColor': '#fff',
82
+ 'loadButton.border': '1px solid #ddd',
83
+ 'loadButton.color': '#222',
84
+ 'loadButton.fontFamily': 'NotoSans, sans-serif',
85
+ 'loadButton.fontSize': '12px',
86
+
87
+ // download button
88
+ 'downloadButton.backgroundColor': '#fdba3b',
89
+ 'downloadButton.border': '1px solid #fdba3b',
90
+ 'downloadButton.color': '#fff',
91
+ 'downloadButton.fontFamily': 'NotoSans, sans-serif',
92
+ 'downloadButton.fontSize': '12px',
93
+
94
+ // icons default
95
+ 'menu.normalIcon.color': '#8a8a8a',
96
+ 'menu.activeIcon.color': '#555555',
97
+ 'menu.disabledIcon.color': '#434343',
98
+ 'menu.hoverIcon.color': '#e9e9e9',
99
+ 'submenu.normalIcon.color': '#8a8a8a',
100
+ 'submenu.activeIcon.color': '#e9e9e9',
101
+
102
+ 'menu.iconSize.width': '24px',
103
+ 'menu.iconSize.height': '24px',
104
+ 'submenu.iconSize.width': '32px',
105
+ 'submenu.iconSize.height': '32px',
106
+
107
+ // submenu primary color
108
+ 'submenu.backgroundColor': '#1e1e1e',
109
+ 'submenu.partition.color': '#858585',
110
+
111
+ // submenu labels
112
+ 'submenu.normalLabel.color': '#858585',
113
+ 'submenu.normalLabel.fontWeight': 'lighter',
114
+ 'submenu.activeLabel.color': '#fff',
115
+ 'submenu.activeLabel.fontWeight': 'lighter',
116
+
117
+ // checkbox style
118
+ 'checkbox.border': '1px solid #ccc',
119
+ 'checkbox.backgroundColor': '#fff',
120
+
121
+ // rango style
122
+ 'range.pointer.color': '#fff',
123
+ 'range.bar.color': '#666',
124
+ 'range.subbar.color': '#d1d1d1',
125
+
126
+ 'range.disabledPointer.color': '#414141',
127
+ 'range.disabledBar.color': '#282828',
128
+ 'range.disabledSubbar.color': '#414141',
129
+
130
+ 'range.value.color': '#fff',
131
+ 'range.value.fontWeight': 'lighter',
132
+ 'range.value.fontSize': '11px',
133
+ 'range.value.border': '1px solid #353535',
134
+ 'range.value.backgroundColor': '#151515',
135
+ 'range.title.color': '#fff',
136
+ 'range.title.fontWeight': 'lighter',
137
+
138
+ // colorpicker style
139
+ 'colorpicker.button.border': '1px solid #1e1e1e',
140
+ 'colorpicker.title.color': '#fff'
141
+ };
142
+ */
143
+ export default {
144
+ 'common.bi.image': 'https://uicdn.toast.com/toastui/img/tui-image-editor-bi.png',
145
+ 'common.bisize.width': '251px',
146
+ 'common.bisize.height': '21px',
147
+ 'common.backgroundImage': 'none',
148
+ 'common.backgroundColor': '#1e1e1e',
149
+ 'common.border': '0px',
150
+
151
+ // header
152
+ 'header.backgroundImage': 'none',
153
+ 'header.backgroundColor': 'transparent',
154
+ 'header.border': '0px',
155
+
156
+ // load button
157
+ 'loadButton.backgroundColor': '#fff',
158
+ 'loadButton.border': '1px solid #ddd',
159
+ 'loadButton.color': '#222',
160
+ 'loadButton.fontFamily': "'Noto Sans', sans-serif",
161
+ 'loadButton.fontSize': '12px',
162
+
163
+ // download button
164
+ 'downloadButton.backgroundColor': '#fdba3b',
165
+ 'downloadButton.border': '1px solid #fdba3b',
166
+ 'downloadButton.color': '#fff',
167
+ 'downloadButton.fontFamily': "'Noto Sans', sans-serif",
168
+ 'downloadButton.fontSize': '12px',
169
+
170
+ // main icons
171
+ 'menu.normalIcon.color': '#8a8a8a',
172
+ 'menu.activeIcon.color': '#555555',
173
+ 'menu.disabledIcon.color': '#434343',
174
+ 'menu.hoverIcon.color': '#e9e9e9',
175
+
176
+ // submenu icons
177
+ 'submenu.normalIcon.color': '#8a8a8a',
178
+ 'submenu.activeIcon.color': '#e9e9e9',
179
+
180
+ 'menu.iconSize.width': '24px',
181
+ 'menu.iconSize.height': '24px',
182
+
183
+ 'submenu.iconSize.width': '32px',
184
+ 'submenu.iconSize.height': '32px',
185
+
186
+ // submenu primary color
187
+ 'submenu.backgroundColor': '#1e1e1e',
188
+ 'submenu.partition.color': '#3c3c3c',
189
+
190
+ // submenu labels
191
+ 'submenu.normalLabel.color': '#8a8a8a',
192
+ 'submenu.normalLabel.fontWeight': 'lighter',
193
+ 'submenu.activeLabel.color': '#fff',
194
+ 'submenu.activeLabel.fontWeight': 'lighter',
195
+
196
+ // checkbox style
197
+ 'checkbox.border': '0px',
198
+ 'checkbox.backgroundColor': '#fff',
199
+
200
+ // range style
201
+ 'range.pointer.color': '#fff',
202
+ 'range.bar.color': '#666',
203
+ 'range.subbar.color': '#d1d1d1',
204
+
205
+ 'range.disabledPointer.color': '#414141',
206
+ 'range.disabledBar.color': '#282828',
207
+ 'range.disabledSubbar.color': '#414141',
208
+
209
+ 'range.value.color': '#fff',
210
+ 'range.value.fontWeight': 'lighter',
211
+ 'range.value.fontSize': '11px',
212
+ 'range.value.border': '1px solid #353535',
213
+ 'range.value.backgroundColor': '#151515',
214
+ 'range.title.color': '#fff',
215
+ 'range.title.fontWeight': 'lighter',
216
+
217
+ // colorpicker style
218
+ 'colorpicker.button.border': '1px solid #1e1e1e',
219
+ 'colorpicker.title.color': '#fff',
220
+ };
@@ -0,0 +1,249 @@
1
+ import extend from 'tui-code-snippet/object/extend';
2
+ import forEach from 'tui-code-snippet/collection/forEach';
3
+ import style from '@/ui/template/style';
4
+ import standardTheme from '@/ui/theme/standard';
5
+ import { styleLoad } from '@/util';
6
+
7
+ import icon from '@svg/default.svg';
8
+
9
+ /**
10
+ * Theme manager
11
+ * @class
12
+ * @param {Object} customTheme - custom theme
13
+ * @ignore
14
+ */
15
+ class Theme {
16
+ constructor(customTheme) {
17
+ this.styles = this._changeToObject(extend({}, standardTheme, customTheme));
18
+ styleLoad(this._styleMaker());
19
+
20
+ this._loadDefaultSvgIcon();
21
+ }
22
+
23
+ /**
24
+ * Get a Style cssText or StyleObject
25
+ * @param {string} type - style type
26
+ * @returns {string|object} - cssText or StyleObject
27
+ */
28
+ // eslint-disable-next-line complexity
29
+ getStyle(type) {
30
+ let result = null;
31
+ const firstProperty = type.replace(/\..+$/, '');
32
+ const option = this.styles[type];
33
+ switch (type) {
34
+ case 'common.bi':
35
+ result = this.styles[type].image;
36
+ break;
37
+ case 'menu.icon':
38
+ result = {
39
+ active: this.styles[`${firstProperty}.activeIcon`],
40
+ normal: this.styles[`${firstProperty}.normalIcon`],
41
+ hover: this.styles[`${firstProperty}.hoverIcon`],
42
+ disabled: this.styles[`${firstProperty}.disabledIcon`],
43
+ };
44
+ break;
45
+ case 'submenu.icon':
46
+ result = {
47
+ active: this.styles[`${firstProperty}.activeIcon`],
48
+ normal: this.styles[`${firstProperty}.normalIcon`],
49
+ };
50
+ break;
51
+ case 'submenu.label':
52
+ result = {
53
+ active: this._makeCssText(this.styles[`${firstProperty}.activeLabel`]),
54
+ normal: this._makeCssText(this.styles[`${firstProperty}.normalLabel`]),
55
+ };
56
+ break;
57
+ case 'submenu.partition':
58
+ result = {
59
+ vertical: this._makeCssText(
60
+ extend({}, option, { borderLeft: `1px solid ${option.color}` })
61
+ ),
62
+ horizontal: this._makeCssText(
63
+ extend({}, option, { borderBottom: `1px solid ${option.color}` })
64
+ ),
65
+ };
66
+ break;
67
+
68
+ case 'range.disabledPointer':
69
+ case 'range.disabledBar':
70
+ case 'range.disabledSubbar':
71
+ case 'range.pointer':
72
+ case 'range.bar':
73
+ case 'range.subbar':
74
+ option.backgroundColor = option.color;
75
+ result = this._makeCssText(option);
76
+ break;
77
+ default:
78
+ result = this._makeCssText(option);
79
+ break;
80
+ }
81
+
82
+ return result;
83
+ }
84
+
85
+ /**
86
+ * Make css resource
87
+ * @returns {string} - serialized css text
88
+ * @private
89
+ */
90
+ _styleMaker() {
91
+ const submenuLabelStyle = this.getStyle('submenu.label');
92
+ const submenuPartitionStyle = this.getStyle('submenu.partition');
93
+
94
+ return style({
95
+ subMenuLabelActive: submenuLabelStyle.active,
96
+ subMenuLabelNormal: submenuLabelStyle.normal,
97
+ submenuPartitionVertical: submenuPartitionStyle.vertical,
98
+ submenuPartitionHorizontal: submenuPartitionStyle.horizontal,
99
+ biSize: this.getStyle('common.bisize'),
100
+ subMenuRangeTitle: this.getStyle('range.title'),
101
+ submenuRangePointer: this.getStyle('range.pointer'),
102
+ submenuRangeBar: this.getStyle('range.bar'),
103
+ submenuRangeSubbar: this.getStyle('range.subbar'),
104
+
105
+ submenuDisabledRangePointer: this.getStyle('range.disabledPointer'),
106
+ submenuDisabledRangeBar: this.getStyle('range.disabledBar'),
107
+ submenuDisabledRangeSubbar: this.getStyle('range.disabledSubbar'),
108
+
109
+ submenuRangeValue: this.getStyle('range.value'),
110
+ submenuColorpickerTitle: this.getStyle('colorpicker.title'),
111
+ submenuColorpickerButton: this.getStyle('colorpicker.button'),
112
+ submenuCheckbox: this.getStyle('checkbox'),
113
+ menuIconSize: this.getStyle('menu.iconSize'),
114
+ submenuIconSize: this.getStyle('submenu.iconSize'),
115
+ menuIconStyle: this.getStyle('menu.icon'),
116
+ submenuIconStyle: this.getStyle('submenu.icon'),
117
+ });
118
+ }
119
+
120
+ /**
121
+ * Change to low dimensional object.
122
+ * @param {object} styleOptions - style object of user interface
123
+ * @returns {object} low level object for style apply
124
+ * @private
125
+ */
126
+ _changeToObject(styleOptions) {
127
+ const styleObject = {};
128
+ forEach(styleOptions, (value, key) => {
129
+ const keyExplode = key.match(/^(.+)\.([a-z]+)$/i);
130
+ const [, property, subProperty] = keyExplode;
131
+
132
+ if (!styleObject[property]) {
133
+ styleObject[property] = {};
134
+ }
135
+ styleObject[property][subProperty] = value;
136
+ });
137
+
138
+ return styleObject;
139
+ }
140
+
141
+ /**
142
+ * Style object to Csstext serialize
143
+ * @param {object} styleObject - style object
144
+ * @returns {string} - css text string
145
+ * @private
146
+ */
147
+ _makeCssText(styleObject) {
148
+ const converterStack = [];
149
+
150
+ forEach(styleObject, (value, key) => {
151
+ if (['backgroundImage'].indexOf(key) > -1 && value !== 'none') {
152
+ value = `url(${value})`;
153
+ }
154
+
155
+ converterStack.push(`${this._toUnderScore(key)}: ${value}`);
156
+ });
157
+
158
+ return converterStack.join(';');
159
+ }
160
+
161
+ /**
162
+ * Camel key string to Underscore string
163
+ * @param {string} targetString - change target
164
+ * @returns {string}
165
+ * @private
166
+ */
167
+ _toUnderScore(targetString) {
168
+ return targetString.replace(/([A-Z])/g, ($0, $1) => `-${$1.toLowerCase()}`);
169
+ }
170
+
171
+ /**
172
+ * Load default svg icon
173
+ * @private
174
+ */
175
+ _loadDefaultSvgIcon() {
176
+ if (!document.getElementById('tui-image-editor-svg-default-icons')) {
177
+ const parser = new DOMParser();
178
+ const encodedURI = icon.replace(/data:image\/svg\+xml;base64,/, '');
179
+ const dom = parser.parseFromString(atob(encodedURI), 'text/xml');
180
+
181
+ document.body.appendChild(dom.documentElement);
182
+ }
183
+ }
184
+
185
+ /**
186
+ * Make className for svg icon
187
+ * @param {string} iconType - normal' or 'active' or 'hover' or 'disabled
188
+ * @param {boolean} isSubmenu - submenu icon or not.
189
+ * @returns {string}
190
+ * @private
191
+ */
192
+ _makeIconClassName(iconType, isSubmenu) {
193
+ const iconStyleInfo = isSubmenu ? this.getStyle('submenu.icon') : this.getStyle('menu.icon');
194
+ const { path, name } = iconStyleInfo[iconType];
195
+
196
+ return path && name ? iconType : `${iconType} use-default`;
197
+ }
198
+
199
+ /**
200
+ * Make svg use link path name
201
+ * @param {string} iconType - normal' or 'active' or 'hover' or 'disabled
202
+ * @param {boolean} isSubmenu - submenu icon or not.
203
+ * @returns {string}
204
+ * @private
205
+ */
206
+ _makeSvgIconPrefix(iconType, isSubmenu) {
207
+ const iconStyleInfo = isSubmenu ? this.getStyle('submenu.icon') : this.getStyle('menu.icon');
208
+ const { path, name } = iconStyleInfo[iconType];
209
+
210
+ return path && name ? `${path}#${name}-` : '#';
211
+ }
212
+
213
+ /**
214
+ * Make svg use link path name
215
+ * @param {Array.<string>} useIconTypes - normal' or 'active' or 'hover' or 'disabled
216
+ * @param {string} menuName - menu name
217
+ * @param {boolean} isSubmenu - submenu icon or not.
218
+ * @returns {string}
219
+ * @private
220
+ */
221
+ _makeSvgItem(useIconTypes, menuName, isSubmenu) {
222
+ return useIconTypes
223
+ .map((iconType) => {
224
+ const svgIconPrefix = this._makeSvgIconPrefix(iconType, isSubmenu);
225
+ const iconName = this._toUnderScore(menuName);
226
+ const svgIconClassName = this._makeIconClassName(iconType, isSubmenu);
227
+
228
+ return `<use xlink:href="${svgIconPrefix}ic-${iconName}" class="${svgIconClassName}"/>`;
229
+ })
230
+ .join('');
231
+ }
232
+
233
+ /**
234
+ * Make svg icon set
235
+ * @param {Array.<string>} useIconTypes - normal' or 'active' or 'hover' or 'disabled
236
+ * @param {string} menuName - menu name
237
+ * @param {boolean} isSubmenu - submenu icon or not.
238
+ * @returns {string}
239
+ */
240
+ makeMenSvgIconSet(useIconTypes, menuName, isSubmenu = false) {
241
+ return `<svg class="svg_ic-${isSubmenu ? 'submenu' : 'menu'}">${this._makeSvgItem(
242
+ useIconTypes,
243
+ menuName,
244
+ isSubmenu
245
+ )}</svg>`;
246
+ }
247
+ }
248
+
249
+ export default Theme;