abstract-image 3.1.0 → 3.2.0

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 (517) hide show
  1. package/CHANGELOG.md +27 -15
  2. package/LICENSE +21 -21
  3. package/README.md +71 -71
  4. package/lib/__stories__/react-svg-export/example-1.stories.d.ts +6 -0
  5. package/lib/__stories__/react-svg-export/example-1.stories.d.ts.map +1 -0
  6. package/lib/__stories__/react-svg-export/example-1.stories.js +43 -0
  7. package/lib/__stories__/react-svg-export/example-1.stories.js.map +1 -0
  8. package/lib/__stories__/svg-export/example-1.stories.d.ts +6 -0
  9. package/lib/__stories__/svg-export/example-1.stories.d.ts.map +1 -0
  10. package/lib/__stories__/svg-export/example-1.stories.js +44 -0
  11. package/lib/__stories__/svg-export/example-1.stories.js.map +1 -0
  12. package/lib/exporters/__tests__/dxf/export-test-def.d.ts +11 -0
  13. package/lib/exporters/__tests__/dxf/export-test-def.d.ts.map +1 -0
  14. package/lib/exporters/__tests__/dxf/export-test-def.js +6 -0
  15. package/lib/exporters/__tests__/dxf/export-test-def.js.map +1 -0
  16. package/lib/exporters/__tests__/dxf/export.test.d.ts +3 -0
  17. package/lib/exporters/__tests__/dxf/export.test.d.ts.map +1 -0
  18. package/lib/exporters/__tests__/dxf/export.test.js +17 -0
  19. package/lib/exporters/__tests__/dxf/export.test.js.map +1 -0
  20. package/lib/exporters/__tests__/dxf/test-defs/dxf2d-ellipse.d.ts +3 -0
  21. package/lib/exporters/__tests__/dxf/test-defs/dxf2d-ellipse.d.ts.map +1 -0
  22. package/lib/exporters/__tests__/dxf/test-defs/dxf2d-ellipse.js +413 -0
  23. package/lib/exporters/__tests__/dxf/test-defs/dxf2d-ellipse.js.map +1 -0
  24. package/lib/exporters/__tests__/dxf/test-defs/dxf2d-group.d.ts +3 -0
  25. package/lib/exporters/__tests__/dxf/test-defs/dxf2d-group.d.ts.map +1 -0
  26. package/lib/exporters/__tests__/dxf/test-defs/dxf2d-group.js +160 -0
  27. package/lib/exporters/__tests__/dxf/test-defs/dxf2d-group.js.map +1 -0
  28. package/lib/exporters/__tests__/dxf/test-defs/dxf2d-line.d.ts +3 -0
  29. package/lib/exporters/__tests__/dxf/test-defs/dxf2d-line.d.ts.map +1 -0
  30. package/lib/exporters/__tests__/dxf/test-defs/dxf2d-line.js +89 -0
  31. package/lib/exporters/__tests__/dxf/test-defs/dxf2d-line.js.map +1 -0
  32. package/lib/exporters/__tests__/dxf/test-defs/dxf2d-polygon.d.ts +3 -0
  33. package/lib/exporters/__tests__/dxf/test-defs/dxf2d-polygon.d.ts.map +1 -0
  34. package/lib/exporters/__tests__/dxf/test-defs/dxf2d-polygon.js +123 -0
  35. package/lib/exporters/__tests__/dxf/test-defs/dxf2d-polygon.js.map +1 -0
  36. package/lib/exporters/__tests__/dxf/test-defs/dxf2d-polyline.d.ts +3 -0
  37. package/lib/exporters/__tests__/dxf/test-defs/dxf2d-polyline.d.ts.map +1 -0
  38. package/lib/exporters/__tests__/dxf/test-defs/dxf2d-polyline.js +113 -0
  39. package/lib/exporters/__tests__/dxf/test-defs/dxf2d-polyline.js.map +1 -0
  40. package/lib/exporters/__tests__/dxf/test-defs/dxf2d-rectangle.d.ts +3 -0
  41. package/lib/exporters/__tests__/dxf/test-defs/dxf2d-rectangle.d.ts.map +1 -0
  42. package/lib/exporters/__tests__/dxf/test-defs/dxf2d-rectangle.js +133 -0
  43. package/lib/exporters/__tests__/dxf/test-defs/dxf2d-rectangle.js.map +1 -0
  44. package/lib/exporters/__tests__/dxf/test-defs/dxf2d-text-growth-directions.d.ts +3 -0
  45. package/lib/exporters/__tests__/dxf/test-defs/dxf2d-text-growth-directions.d.ts.map +1 -0
  46. package/lib/exporters/__tests__/dxf/test-defs/dxf2d-text-growth-directions.js +172 -0
  47. package/lib/exporters/__tests__/dxf/test-defs/dxf2d-text-growth-directions.js.map +1 -0
  48. package/lib/exporters/__tests__/dxf/test-defs/dxf2d-text.d.ts +3 -0
  49. package/lib/exporters/__tests__/dxf/test-defs/dxf2d-text.d.ts.map +1 -0
  50. package/lib/exporters/__tests__/dxf/test-defs/dxf2d-text.js +97 -0
  51. package/lib/exporters/__tests__/dxf/test-defs/dxf2d-text.js.map +1 -0
  52. package/lib/exporters/__tests__/dxf2d-export-image/export-test-def.d.ts +11 -0
  53. package/lib/exporters/__tests__/dxf2d-export-image/export-test-def.d.ts.map +1 -0
  54. package/lib/exporters/__tests__/dxf2d-export-image/export-test-def.js +6 -0
  55. package/lib/exporters/__tests__/dxf2d-export-image/export-test-def.js.map +1 -0
  56. package/lib/exporters/__tests__/dxf2d-export-image/export.test.d.ts +3 -0
  57. package/lib/exporters/__tests__/dxf2d-export-image/export.test.d.ts.map +1 -0
  58. package/lib/exporters/__tests__/dxf2d-export-image/export.test.js +17 -0
  59. package/lib/exporters/__tests__/dxf2d-export-image/export.test.js.map +1 -0
  60. package/lib/exporters/__tests__/dxf2d-export-image/test-defs/dxf2d-ellipse.d.ts +3 -0
  61. package/lib/exporters/__tests__/dxf2d-export-image/test-defs/dxf2d-ellipse.d.ts.map +1 -0
  62. package/lib/exporters/__tests__/dxf2d-export-image/test-defs/dxf2d-ellipse.js +413 -0
  63. package/lib/exporters/__tests__/dxf2d-export-image/test-defs/dxf2d-ellipse.js.map +1 -0
  64. package/lib/exporters/__tests__/dxf2d-export-image/test-defs/dxf2d-group.d.ts +3 -0
  65. package/lib/exporters/__tests__/dxf2d-export-image/test-defs/dxf2d-group.d.ts.map +1 -0
  66. package/lib/exporters/__tests__/dxf2d-export-image/test-defs/dxf2d-group.js +160 -0
  67. package/lib/exporters/__tests__/dxf2d-export-image/test-defs/dxf2d-group.js.map +1 -0
  68. package/lib/exporters/__tests__/dxf2d-export-image/test-defs/dxf2d-line.d.ts +3 -0
  69. package/lib/exporters/__tests__/dxf2d-export-image/test-defs/dxf2d-line.d.ts.map +1 -0
  70. package/lib/exporters/__tests__/dxf2d-export-image/test-defs/dxf2d-line.js +89 -0
  71. package/lib/exporters/__tests__/dxf2d-export-image/test-defs/dxf2d-line.js.map +1 -0
  72. package/lib/exporters/__tests__/dxf2d-export-image/test-defs/dxf2d-polygon.d.ts +3 -0
  73. package/lib/exporters/__tests__/dxf2d-export-image/test-defs/dxf2d-polygon.d.ts.map +1 -0
  74. package/lib/exporters/__tests__/dxf2d-export-image/test-defs/dxf2d-polygon.js +123 -0
  75. package/lib/exporters/__tests__/dxf2d-export-image/test-defs/dxf2d-polygon.js.map +1 -0
  76. package/lib/exporters/__tests__/dxf2d-export-image/test-defs/dxf2d-polyline.d.ts +3 -0
  77. package/lib/exporters/__tests__/dxf2d-export-image/test-defs/dxf2d-polyline.d.ts.map +1 -0
  78. package/lib/exporters/__tests__/dxf2d-export-image/test-defs/dxf2d-polyline.js +113 -0
  79. package/lib/exporters/__tests__/dxf2d-export-image/test-defs/dxf2d-polyline.js.map +1 -0
  80. package/lib/exporters/__tests__/dxf2d-export-image/test-defs/dxf2d-rectangle.d.ts +3 -0
  81. package/lib/exporters/__tests__/dxf2d-export-image/test-defs/dxf2d-rectangle.d.ts.map +1 -0
  82. package/lib/exporters/__tests__/dxf2d-export-image/test-defs/dxf2d-rectangle.js +133 -0
  83. package/lib/exporters/__tests__/dxf2d-export-image/test-defs/dxf2d-rectangle.js.map +1 -0
  84. package/lib/exporters/__tests__/dxf2d-export-image/test-defs/dxf2d-text-growth-directions.d.ts +3 -0
  85. package/lib/exporters/__tests__/dxf2d-export-image/test-defs/dxf2d-text-growth-directions.d.ts.map +1 -0
  86. package/lib/exporters/__tests__/dxf2d-export-image/test-defs/dxf2d-text-growth-directions.js +172 -0
  87. package/lib/exporters/__tests__/dxf2d-export-image/test-defs/dxf2d-text-growth-directions.js.map +1 -0
  88. package/lib/exporters/__tests__/dxf2d-export-image/test-defs/dxf2d-text.d.ts +3 -0
  89. package/lib/exporters/__tests__/dxf2d-export-image/test-defs/dxf2d-text.d.ts.map +1 -0
  90. package/lib/exporters/__tests__/dxf2d-export-image/test-defs/dxf2d-text.js +97 -0
  91. package/lib/exporters/__tests__/dxf2d-export-image/test-defs/dxf2d-text.js.map +1 -0
  92. package/lib/exporters/__tests__/eps-export-image/export-test-def.d.ts +11 -0
  93. package/lib/exporters/__tests__/eps-export-image/export-test-def.d.ts.map +1 -0
  94. package/lib/exporters/__tests__/eps-export-image/export-test-def.js +6 -0
  95. package/lib/exporters/__tests__/eps-export-image/export-test-def.js.map +1 -0
  96. package/lib/exporters/__tests__/eps-export-image/export.test.d.ts +3 -0
  97. package/lib/exporters/__tests__/eps-export-image/export.test.d.ts.map +1 -0
  98. package/lib/exporters/__tests__/eps-export-image/export.test.js +17 -0
  99. package/lib/exporters/__tests__/eps-export-image/export.test.js.map +1 -0
  100. package/lib/exporters/__tests__/eps-export-image/test-defs/eps-ellipse.d.ts +3 -0
  101. package/lib/exporters/__tests__/eps-export-image/test-defs/eps-ellipse.d.ts.map +1 -0
  102. package/lib/exporters/__tests__/eps-export-image/test-defs/eps-ellipse.js +58 -0
  103. package/lib/exporters/__tests__/eps-export-image/test-defs/eps-ellipse.js.map +1 -0
  104. package/lib/exporters/__tests__/eps-export-image/test-defs/eps-empty-text.d.ts +3 -0
  105. package/lib/exporters/__tests__/eps-export-image/test-defs/eps-empty-text.d.ts.map +1 -0
  106. package/lib/exporters/__tests__/eps-export-image/test-defs/eps-empty-text.js +60 -0
  107. package/lib/exporters/__tests__/eps-export-image/test-defs/eps-empty-text.js.map +1 -0
  108. package/lib/exporters/__tests__/eps-export-image/test-defs/eps-group.d.ts +3 -0
  109. package/lib/exporters/__tests__/eps-export-image/test-defs/eps-group.d.ts.map +1 -0
  110. package/lib/exporters/__tests__/eps-export-image/test-defs/eps-group.js +68 -0
  111. package/lib/exporters/__tests__/eps-export-image/test-defs/eps-group.js.map +1 -0
  112. package/lib/exporters/__tests__/eps-export-image/test-defs/eps-line.d.ts +3 -0
  113. package/lib/exporters/__tests__/eps-export-image/test-defs/eps-line.d.ts.map +1 -0
  114. package/lib/exporters/__tests__/eps-export-image/test-defs/eps-line.js +54 -0
  115. package/lib/exporters/__tests__/eps-export-image/test-defs/eps-line.js.map +1 -0
  116. package/lib/exporters/__tests__/eps-export-image/test-defs/eps-polygon.d.ts +3 -0
  117. package/lib/exporters/__tests__/eps-export-image/test-defs/eps-polygon.d.ts.map +1 -0
  118. package/lib/exporters/__tests__/eps-export-image/test-defs/eps-polygon.js +74 -0
  119. package/lib/exporters/__tests__/eps-export-image/test-defs/eps-polygon.js.map +1 -0
  120. package/lib/exporters/__tests__/eps-export-image/test-defs/eps-polyline.d.ts +3 -0
  121. package/lib/exporters/__tests__/eps-export-image/test-defs/eps-polyline.d.ts.map +1 -0
  122. package/lib/exporters/__tests__/eps-export-image/test-defs/eps-polyline.js +68 -0
  123. package/lib/exporters/__tests__/eps-export-image/test-defs/eps-polyline.js.map +1 -0
  124. package/lib/exporters/__tests__/eps-export-image/test-defs/eps-rectangle.d.ts +3 -0
  125. package/lib/exporters/__tests__/eps-export-image/test-defs/eps-rectangle.d.ts.map +1 -0
  126. package/lib/exporters/__tests__/eps-export-image/test-defs/eps-rectangle.js +54 -0
  127. package/lib/exporters/__tests__/eps-export-image/test-defs/eps-rectangle.js.map +1 -0
  128. package/lib/exporters/__tests__/eps-export-image/test-defs/eps-text-growth-directions.d.ts +3 -0
  129. package/lib/exporters/__tests__/eps-export-image/test-defs/eps-text-growth-directions.d.ts.map +1 -0
  130. package/lib/exporters/__tests__/eps-export-image/test-defs/eps-text-growth-directions.js +96 -0
  131. package/lib/exporters/__tests__/eps-export-image/test-defs/eps-text-growth-directions.js.map +1 -0
  132. package/lib/exporters/__tests__/eps-export-image/test-defs/eps-text.d.ts +3 -0
  133. package/lib/exporters/__tests__/eps-export-image/test-defs/eps-text.d.ts.map +1 -0
  134. package/lib/exporters/__tests__/eps-export-image/test-defs/eps-text.js +60 -0
  135. package/lib/exporters/__tests__/eps-export-image/test-defs/eps-text.js.map +1 -0
  136. package/lib/exporters/__tests__/exception/png-unsupported.test.d.ts +2 -0
  137. package/lib/exporters/__tests__/exception/png-unsupported.test.d.ts.map +1 -0
  138. package/lib/exporters/__tests__/exception/png-unsupported.test.js +33 -0
  139. package/lib/exporters/__tests__/exception/png-unsupported.test.js.map +1 -0
  140. package/lib/exporters/__tests__/exception/react-svg-direction-exception.test.d.ts +2 -0
  141. package/lib/exporters/__tests__/exception/react-svg-direction-exception.test.d.ts.map +1 -0
  142. package/lib/exporters/__tests__/exception/react-svg-direction-exception.test.js +45 -0
  143. package/lib/exporters/__tests__/exception/react-svg-direction-exception.test.js.map +1 -0
  144. package/lib/exporters/__tests__/exception/svg-direction-exception.test.d.ts +2 -0
  145. package/lib/exporters/__tests__/exception/svg-direction-exception.test.d.ts.map +1 -0
  146. package/lib/exporters/__tests__/exception/svg-direction-exception.test.js +45 -0
  147. package/lib/exporters/__tests__/exception/svg-direction-exception.test.js.map +1 -0
  148. package/lib/exporters/__tests__/export-test-def.d.ts +8 -0
  149. package/lib/exporters/__tests__/export-test-def.d.ts.map +1 -0
  150. package/lib/exporters/__tests__/export-test-def.js +3 -0
  151. package/lib/exporters/__tests__/export-test-def.js.map +1 -0
  152. package/lib/exporters/__tests__/export.test.d.ts +3 -0
  153. package/lib/exporters/__tests__/export.test.d.ts.map +1 -0
  154. package/lib/exporters/__tests__/export.test.js +18 -0
  155. package/lib/exporters/__tests__/export.test.js.map +1 -0
  156. package/lib/exporters/__tests__/png-export-image/export-test-def.d.ts +11 -0
  157. package/lib/exporters/__tests__/png-export-image/export-test-def.d.ts.map +1 -0
  158. package/lib/exporters/__tests__/png-export-image/export-test-def.js +6 -0
  159. package/lib/exporters/__tests__/png-export-image/export-test-def.js.map +1 -0
  160. package/lib/exporters/__tests__/png-export-image/export.test.d.ts +3 -0
  161. package/lib/exporters/__tests__/png-export-image/export.test.d.ts.map +1 -0
  162. package/lib/exporters/__tests__/png-export-image/export.test.js +17 -0
  163. package/lib/exporters/__tests__/png-export-image/export.test.js.map +1 -0
  164. package/lib/exporters/__tests__/png-export-image/test-defs/png-createPNG.d.ts +3 -0
  165. package/lib/exporters/__tests__/png-export-image/test-defs/png-createPNG.d.ts.map +1 -0
  166. package/lib/exporters/__tests__/png-export-image/test-defs/png-createPNG.js +33 -0
  167. package/lib/exporters/__tests__/png-export-image/test-defs/png-createPNG.js.map +1 -0
  168. package/lib/exporters/__tests__/react-svg/export-test-def.d.ts +12 -0
  169. package/lib/exporters/__tests__/react-svg/export-test-def.d.ts.map +1 -0
  170. package/lib/exporters/__tests__/react-svg/export-test-def.js +6 -0
  171. package/lib/exporters/__tests__/react-svg/export-test-def.js.map +1 -0
  172. package/lib/exporters/__tests__/react-svg/export.test.d.ts +3 -0
  173. package/lib/exporters/__tests__/react-svg/export.test.d.ts.map +1 -0
  174. package/lib/exporters/__tests__/react-svg/export.test.js +17 -0
  175. package/lib/exporters/__tests__/react-svg/export.test.js.map +1 -0
  176. package/lib/exporters/__tests__/react-svg/test-defs/react-svg-binary-png.d.ts +3 -0
  177. package/lib/exporters/__tests__/react-svg/test-defs/react-svg-binary-png.d.ts.map +1 -0
  178. package/lib/exporters/__tests__/react-svg/test-defs/react-svg-binary-png.js +33 -0
  179. package/lib/exporters/__tests__/react-svg/test-defs/react-svg-binary-png.js.map +1 -0
  180. package/lib/exporters/__tests__/react-svg/test-defs/react-svg-binary.d.ts +3 -0
  181. package/lib/exporters/__tests__/react-svg/test-defs/react-svg-binary.d.ts.map +1 -0
  182. package/lib/exporters/__tests__/react-svg/test-defs/react-svg-binary.js +33 -0
  183. package/lib/exporters/__tests__/react-svg/test-defs/react-svg-binary.js.map +1 -0
  184. package/lib/exporters/__tests__/react-svg/test-defs/react-svg-callback.d.ts +3 -0
  185. package/lib/exporters/__tests__/react-svg/test-defs/react-svg-callback.d.ts.map +1 -0
  186. package/lib/exporters/__tests__/react-svg/test-defs/react-svg-callback.js +38 -0
  187. package/lib/exporters/__tests__/react-svg/test-defs/react-svg-callback.js.map +1 -0
  188. package/lib/exporters/__tests__/react-svg/test-defs/react-svg-ellipse.d.ts +3 -0
  189. package/lib/exporters/__tests__/react-svg/test-defs/react-svg-ellipse.d.ts.map +1 -0
  190. package/lib/exporters/__tests__/react-svg/test-defs/react-svg-ellipse.js +34 -0
  191. package/lib/exporters/__tests__/react-svg/test-defs/react-svg-ellipse.js.map +1 -0
  192. package/lib/exporters/__tests__/react-svg/test-defs/react-svg-empty-text.d.ts +3 -0
  193. package/lib/exporters/__tests__/react-svg/test-defs/react-svg-empty-text.d.ts.map +1 -0
  194. package/lib/exporters/__tests__/react-svg/test-defs/react-svg-empty-text.js +34 -0
  195. package/lib/exporters/__tests__/react-svg/test-defs/react-svg-empty-text.js.map +1 -0
  196. package/lib/exporters/__tests__/react-svg/test-defs/react-svg-group.d.ts +3 -0
  197. package/lib/exporters/__tests__/react-svg/test-defs/react-svg-group.d.ts.map +1 -0
  198. package/lib/exporters/__tests__/react-svg/test-defs/react-svg-group.js +37 -0
  199. package/lib/exporters/__tests__/react-svg/test-defs/react-svg-group.js.map +1 -0
  200. package/lib/exporters/__tests__/react-svg/test-defs/react-svg-line.d.ts +3 -0
  201. package/lib/exporters/__tests__/react-svg/test-defs/react-svg-line.d.ts.map +1 -0
  202. package/lib/exporters/__tests__/react-svg/test-defs/react-svg-line.js +34 -0
  203. package/lib/exporters/__tests__/react-svg/test-defs/react-svg-line.js.map +1 -0
  204. package/lib/exporters/__tests__/react-svg/test-defs/react-svg-polygon.d.ts +3 -0
  205. package/lib/exporters/__tests__/react-svg/test-defs/react-svg-polygon.d.ts.map +1 -0
  206. package/lib/exporters/__tests__/react-svg/test-defs/react-svg-polygon.js +40 -0
  207. package/lib/exporters/__tests__/react-svg/test-defs/react-svg-polygon.js.map +1 -0
  208. package/lib/exporters/__tests__/react-svg/test-defs/react-svg-polyline.d.ts +3 -0
  209. package/lib/exporters/__tests__/react-svg/test-defs/react-svg-polyline.d.ts.map +1 -0
  210. package/lib/exporters/__tests__/react-svg/test-defs/react-svg-polyline.js +42 -0
  211. package/lib/exporters/__tests__/react-svg/test-defs/react-svg-polyline.js.map +1 -0
  212. package/lib/exporters/__tests__/react-svg/test-defs/react-svg-rectangle.d.ts +3 -0
  213. package/lib/exporters/__tests__/react-svg/test-defs/react-svg-rectangle.d.ts.map +1 -0
  214. package/lib/exporters/__tests__/react-svg/test-defs/react-svg-rectangle.js +34 -0
  215. package/lib/exporters/__tests__/react-svg/test-defs/react-svg-rectangle.js.map +1 -0
  216. package/lib/exporters/__tests__/react-svg/test-defs/react-svg-subimage.d.ts +3 -0
  217. package/lib/exporters/__tests__/react-svg/test-defs/react-svg-subimage.d.ts.map +1 -0
  218. package/lib/exporters/__tests__/react-svg/test-defs/react-svg-subimage.js +33 -0
  219. package/lib/exporters/__tests__/react-svg/test-defs/react-svg-subimage.js.map +1 -0
  220. package/lib/exporters/__tests__/react-svg/test-defs/react-svg-text-growth-directions.d.ts +3 -0
  221. package/lib/exporters/__tests__/react-svg/test-defs/react-svg-text-growth-directions.d.ts.map +1 -0
  222. package/lib/exporters/__tests__/react-svg/test-defs/react-svg-text-growth-directions.js +37 -0
  223. package/lib/exporters/__tests__/react-svg/test-defs/react-svg-text-growth-directions.js.map +1 -0
  224. package/lib/exporters/__tests__/react-svg/test-defs/react-svg-text-sub.d.ts +3 -0
  225. package/lib/exporters/__tests__/react-svg/test-defs/react-svg-text-sub.d.ts.map +1 -0
  226. package/lib/exporters/__tests__/react-svg/test-defs/react-svg-text-sub.js +34 -0
  227. package/lib/exporters/__tests__/react-svg/test-defs/react-svg-text-sub.js.map +1 -0
  228. package/lib/exporters/__tests__/react-svg/test-defs/react-svg-text.d.ts +3 -0
  229. package/lib/exporters/__tests__/react-svg/test-defs/react-svg-text.d.ts.map +1 -0
  230. package/lib/exporters/__tests__/react-svg/test-defs/react-svg-text.js +34 -0
  231. package/lib/exporters/__tests__/react-svg/test-defs/react-svg-text.js.map +1 -0
  232. package/lib/exporters/__tests__/react-svg-export-image/export-test-def.d.ts +12 -0
  233. package/lib/exporters/__tests__/react-svg-export-image/export-test-def.d.ts.map +1 -0
  234. package/lib/exporters/__tests__/react-svg-export-image/export-test-def.js +6 -0
  235. package/lib/exporters/__tests__/react-svg-export-image/export-test-def.js.map +1 -0
  236. package/lib/exporters/__tests__/react-svg-export-image/export.test.d.ts +3 -0
  237. package/lib/exporters/__tests__/react-svg-export-image/export.test.d.ts.map +1 -0
  238. package/lib/exporters/__tests__/react-svg-export-image/export.test.js +17 -0
  239. package/lib/exporters/__tests__/react-svg-export-image/export.test.js.map +1 -0
  240. package/lib/exporters/__tests__/react-svg-export-image/test-defs/react-svg-binary-png.d.ts +3 -0
  241. package/lib/exporters/__tests__/react-svg-export-image/test-defs/react-svg-binary-png.d.ts.map +1 -0
  242. package/lib/exporters/__tests__/react-svg-export-image/test-defs/react-svg-binary-png.js +33 -0
  243. package/lib/exporters/__tests__/react-svg-export-image/test-defs/react-svg-binary-png.js.map +1 -0
  244. package/lib/exporters/__tests__/react-svg-export-image/test-defs/react-svg-binary.d.ts +3 -0
  245. package/lib/exporters/__tests__/react-svg-export-image/test-defs/react-svg-binary.d.ts.map +1 -0
  246. package/lib/exporters/__tests__/react-svg-export-image/test-defs/react-svg-binary.js +33 -0
  247. package/lib/exporters/__tests__/react-svg-export-image/test-defs/react-svg-binary.js.map +1 -0
  248. package/lib/exporters/__tests__/react-svg-export-image/test-defs/react-svg-callback.d.ts +3 -0
  249. package/lib/exporters/__tests__/react-svg-export-image/test-defs/react-svg-callback.d.ts.map +1 -0
  250. package/lib/exporters/__tests__/react-svg-export-image/test-defs/react-svg-callback.js +59 -0
  251. package/lib/exporters/__tests__/react-svg-export-image/test-defs/react-svg-callback.js.map +1 -0
  252. package/lib/exporters/__tests__/react-svg-export-image/test-defs/react-svg-ellipse.d.ts +3 -0
  253. package/lib/exporters/__tests__/react-svg-export-image/test-defs/react-svg-ellipse.d.ts.map +1 -0
  254. package/lib/exporters/__tests__/react-svg-export-image/test-defs/react-svg-ellipse.js +34 -0
  255. package/lib/exporters/__tests__/react-svg-export-image/test-defs/react-svg-ellipse.js.map +1 -0
  256. package/lib/exporters/__tests__/react-svg-export-image/test-defs/react-svg-empty-text.d.ts +3 -0
  257. package/lib/exporters/__tests__/react-svg-export-image/test-defs/react-svg-empty-text.d.ts.map +1 -0
  258. package/lib/exporters/__tests__/react-svg-export-image/test-defs/react-svg-empty-text.js +34 -0
  259. package/lib/exporters/__tests__/react-svg-export-image/test-defs/react-svg-empty-text.js.map +1 -0
  260. package/lib/exporters/__tests__/react-svg-export-image/test-defs/react-svg-group.d.ts +3 -0
  261. package/lib/exporters/__tests__/react-svg-export-image/test-defs/react-svg-group.d.ts.map +1 -0
  262. package/lib/exporters/__tests__/react-svg-export-image/test-defs/react-svg-group.js +37 -0
  263. package/lib/exporters/__tests__/react-svg-export-image/test-defs/react-svg-group.js.map +1 -0
  264. package/lib/exporters/__tests__/react-svg-export-image/test-defs/react-svg-line.d.ts +3 -0
  265. package/lib/exporters/__tests__/react-svg-export-image/test-defs/react-svg-line.d.ts.map +1 -0
  266. package/lib/exporters/__tests__/react-svg-export-image/test-defs/react-svg-line.js +34 -0
  267. package/lib/exporters/__tests__/react-svg-export-image/test-defs/react-svg-line.js.map +1 -0
  268. package/lib/exporters/__tests__/react-svg-export-image/test-defs/react-svg-polygon.d.ts +3 -0
  269. package/lib/exporters/__tests__/react-svg-export-image/test-defs/react-svg-polygon.d.ts.map +1 -0
  270. package/lib/exporters/__tests__/react-svg-export-image/test-defs/react-svg-polygon.js +40 -0
  271. package/lib/exporters/__tests__/react-svg-export-image/test-defs/react-svg-polygon.js.map +1 -0
  272. package/lib/exporters/__tests__/react-svg-export-image/test-defs/react-svg-polyline.d.ts +3 -0
  273. package/lib/exporters/__tests__/react-svg-export-image/test-defs/react-svg-polyline.d.ts.map +1 -0
  274. package/lib/exporters/__tests__/react-svg-export-image/test-defs/react-svg-polyline.js +42 -0
  275. package/lib/exporters/__tests__/react-svg-export-image/test-defs/react-svg-polyline.js.map +1 -0
  276. package/lib/exporters/__tests__/react-svg-export-image/test-defs/react-svg-rectangle.d.ts +3 -0
  277. package/lib/exporters/__tests__/react-svg-export-image/test-defs/react-svg-rectangle.d.ts.map +1 -0
  278. package/lib/exporters/__tests__/react-svg-export-image/test-defs/react-svg-rectangle.js +34 -0
  279. package/lib/exporters/__tests__/react-svg-export-image/test-defs/react-svg-rectangle.js.map +1 -0
  280. package/lib/exporters/__tests__/react-svg-export-image/test-defs/react-svg-subimage.d.ts +3 -0
  281. package/lib/exporters/__tests__/react-svg-export-image/test-defs/react-svg-subimage.d.ts.map +1 -0
  282. package/lib/exporters/__tests__/react-svg-export-image/test-defs/react-svg-subimage.js +33 -0
  283. package/lib/exporters/__tests__/react-svg-export-image/test-defs/react-svg-subimage.js.map +1 -0
  284. package/lib/exporters/__tests__/react-svg-export-image/test-defs/react-svg-text-growth-directions.d.ts +3 -0
  285. package/lib/exporters/__tests__/react-svg-export-image/test-defs/react-svg-text-growth-directions.d.ts.map +1 -0
  286. package/lib/exporters/__tests__/react-svg-export-image/test-defs/react-svg-text-growth-directions.js +37 -0
  287. package/lib/exporters/__tests__/react-svg-export-image/test-defs/react-svg-text-growth-directions.js.map +1 -0
  288. package/lib/exporters/__tests__/react-svg-export-image/test-defs/react-svg-text-sub.d.ts +3 -0
  289. package/lib/exporters/__tests__/react-svg-export-image/test-defs/react-svg-text-sub.d.ts.map +1 -0
  290. package/lib/exporters/__tests__/react-svg-export-image/test-defs/react-svg-text-sub.js +34 -0
  291. package/lib/exporters/__tests__/react-svg-export-image/test-defs/react-svg-text-sub.js.map +1 -0
  292. package/lib/exporters/__tests__/react-svg-export-image/test-defs/react-svg-text.d.ts +3 -0
  293. package/lib/exporters/__tests__/react-svg-export-image/test-defs/react-svg-text.d.ts.map +1 -0
  294. package/lib/exporters/__tests__/react-svg-export-image/test-defs/react-svg-text.js +34 -0
  295. package/lib/exporters/__tests__/react-svg-export-image/test-defs/react-svg-text.js.map +1 -0
  296. package/lib/exporters/__tests__/svg/export-test-def.d.ts +11 -0
  297. package/lib/exporters/__tests__/svg/export-test-def.d.ts.map +1 -0
  298. package/lib/exporters/__tests__/svg/export-test-def.js +6 -0
  299. package/lib/exporters/__tests__/svg/export-test-def.js.map +1 -0
  300. package/lib/exporters/__tests__/svg/export.test.d.ts +3 -0
  301. package/lib/exporters/__tests__/svg/export.test.d.ts.map +1 -0
  302. package/lib/exporters/__tests__/svg/export.test.js +17 -0
  303. package/lib/exporters/__tests__/svg/export.test.js.map +1 -0
  304. package/lib/exporters/__tests__/svg/test-defs/svg-ellipse.d.ts +3 -0
  305. package/lib/exporters/__tests__/svg/test-defs/svg-ellipse.d.ts.map +1 -0
  306. package/lib/exporters/__tests__/svg/test-defs/svg-ellipse.js +34 -0
  307. package/lib/exporters/__tests__/svg/test-defs/svg-ellipse.js.map +1 -0
  308. package/lib/exporters/__tests__/svg/test-defs/svg-empty-text.d.ts +3 -0
  309. package/lib/exporters/__tests__/svg/test-defs/svg-empty-text.d.ts.map +1 -0
  310. package/lib/exporters/__tests__/svg/test-defs/svg-empty-text.js +34 -0
  311. package/lib/exporters/__tests__/svg/test-defs/svg-empty-text.js.map +1 -0
  312. package/lib/exporters/__tests__/svg/test-defs/svg-group.d.ts +3 -0
  313. package/lib/exporters/__tests__/svg/test-defs/svg-group.d.ts.map +1 -0
  314. package/lib/exporters/__tests__/svg/test-defs/svg-group.js +37 -0
  315. package/lib/exporters/__tests__/svg/test-defs/svg-group.js.map +1 -0
  316. package/lib/exporters/__tests__/svg/test-defs/svg-line.d.ts +3 -0
  317. package/lib/exporters/__tests__/svg/test-defs/svg-line.d.ts.map +1 -0
  318. package/lib/exporters/__tests__/svg/test-defs/svg-line.js +34 -0
  319. package/lib/exporters/__tests__/svg/test-defs/svg-line.js.map +1 -0
  320. package/lib/exporters/__tests__/svg/test-defs/svg-polygon.d.ts +3 -0
  321. package/lib/exporters/__tests__/svg/test-defs/svg-polygon.d.ts.map +1 -0
  322. package/lib/exporters/__tests__/svg/test-defs/svg-polygon.js +40 -0
  323. package/lib/exporters/__tests__/svg/test-defs/svg-polygon.js.map +1 -0
  324. package/lib/exporters/__tests__/svg/test-defs/svg-polyline.d.ts +3 -0
  325. package/lib/exporters/__tests__/svg/test-defs/svg-polyline.d.ts.map +1 -0
  326. package/lib/exporters/__tests__/svg/test-defs/svg-polyline.js +42 -0
  327. package/lib/exporters/__tests__/svg/test-defs/svg-polyline.js.map +1 -0
  328. package/lib/exporters/__tests__/svg/test-defs/svg-rectangle.d.ts +3 -0
  329. package/lib/exporters/__tests__/svg/test-defs/svg-rectangle.d.ts.map +1 -0
  330. package/lib/exporters/__tests__/svg/test-defs/svg-rectangle.js +34 -0
  331. package/lib/exporters/__tests__/svg/test-defs/svg-rectangle.js.map +1 -0
  332. package/lib/exporters/__tests__/svg/test-defs/svg-text-growth-directions.d.ts +3 -0
  333. package/lib/exporters/__tests__/svg/test-defs/svg-text-growth-directions.d.ts.map +1 -0
  334. package/lib/exporters/__tests__/svg/test-defs/svg-text-growth-directions.js +37 -0
  335. package/lib/exporters/__tests__/svg/test-defs/svg-text-growth-directions.js.map +1 -0
  336. package/lib/exporters/__tests__/svg/test-defs/svg-text-unknown-direction.d.ts +3 -0
  337. package/lib/exporters/__tests__/svg/test-defs/svg-text-unknown-direction.d.ts.map +1 -0
  338. package/lib/exporters/__tests__/svg/test-defs/svg-text-unknown-direction.js +34 -0
  339. package/lib/exporters/__tests__/svg/test-defs/svg-text-unknown-direction.js.map +1 -0
  340. package/lib/exporters/__tests__/svg/test-defs/svg-text.d.ts +3 -0
  341. package/lib/exporters/__tests__/svg/test-defs/svg-text.d.ts.map +1 -0
  342. package/lib/exporters/__tests__/svg/test-defs/svg-text.js +34 -0
  343. package/lib/exporters/__tests__/svg/test-defs/svg-text.js.map +1 -0
  344. package/lib/exporters/__tests__/svg-export-image/export-test-def.d.ts +11 -0
  345. package/lib/exporters/__tests__/svg-export-image/export-test-def.d.ts.map +1 -0
  346. package/lib/exporters/__tests__/svg-export-image/export-test-def.js +6 -0
  347. package/lib/exporters/__tests__/svg-export-image/export-test-def.js.map +1 -0
  348. package/lib/exporters/__tests__/svg-export-image/export.test.d.ts +3 -0
  349. package/lib/exporters/__tests__/svg-export-image/export.test.d.ts.map +1 -0
  350. package/lib/exporters/__tests__/svg-export-image/export.test.js +17 -0
  351. package/lib/exporters/__tests__/svg-export-image/export.test.js.map +1 -0
  352. package/lib/exporters/__tests__/svg-export-image/test-defs/svg-binary.d.ts +3 -0
  353. package/lib/exporters/__tests__/svg-export-image/test-defs/svg-binary.d.ts.map +1 -0
  354. package/lib/exporters/__tests__/svg-export-image/test-defs/svg-binary.js +33 -0
  355. package/lib/exporters/__tests__/svg-export-image/test-defs/svg-binary.js.map +1 -0
  356. package/lib/exporters/__tests__/svg-export-image/test-defs/svg-ellipse.d.ts +3 -0
  357. package/lib/exporters/__tests__/svg-export-image/test-defs/svg-ellipse.d.ts.map +1 -0
  358. package/lib/exporters/__tests__/svg-export-image/test-defs/svg-ellipse.js +34 -0
  359. package/lib/exporters/__tests__/svg-export-image/test-defs/svg-ellipse.js.map +1 -0
  360. package/lib/exporters/__tests__/svg-export-image/test-defs/svg-empty-text.d.ts +3 -0
  361. package/lib/exporters/__tests__/svg-export-image/test-defs/svg-empty-text.d.ts.map +1 -0
  362. package/lib/exporters/__tests__/svg-export-image/test-defs/svg-empty-text.js +34 -0
  363. package/lib/exporters/__tests__/svg-export-image/test-defs/svg-empty-text.js.map +1 -0
  364. package/lib/exporters/__tests__/svg-export-image/test-defs/svg-group.d.ts +3 -0
  365. package/lib/exporters/__tests__/svg-export-image/test-defs/svg-group.d.ts.map +1 -0
  366. package/lib/exporters/__tests__/svg-export-image/test-defs/svg-group.js +37 -0
  367. package/lib/exporters/__tests__/svg-export-image/test-defs/svg-group.js.map +1 -0
  368. package/lib/exporters/__tests__/svg-export-image/test-defs/svg-line.d.ts +3 -0
  369. package/lib/exporters/__tests__/svg-export-image/test-defs/svg-line.d.ts.map +1 -0
  370. package/lib/exporters/__tests__/svg-export-image/test-defs/svg-line.js +34 -0
  371. package/lib/exporters/__tests__/svg-export-image/test-defs/svg-line.js.map +1 -0
  372. package/lib/exporters/__tests__/svg-export-image/test-defs/svg-polygon.d.ts +3 -0
  373. package/lib/exporters/__tests__/svg-export-image/test-defs/svg-polygon.d.ts.map +1 -0
  374. package/lib/exporters/__tests__/svg-export-image/test-defs/svg-polygon.js +40 -0
  375. package/lib/exporters/__tests__/svg-export-image/test-defs/svg-polygon.js.map +1 -0
  376. package/lib/exporters/__tests__/svg-export-image/test-defs/svg-polyline.d.ts +3 -0
  377. package/lib/exporters/__tests__/svg-export-image/test-defs/svg-polyline.d.ts.map +1 -0
  378. package/lib/exporters/__tests__/svg-export-image/test-defs/svg-polyline.js +42 -0
  379. package/lib/exporters/__tests__/svg-export-image/test-defs/svg-polyline.js.map +1 -0
  380. package/lib/exporters/__tests__/svg-export-image/test-defs/svg-rectangle.d.ts +3 -0
  381. package/lib/exporters/__tests__/svg-export-image/test-defs/svg-rectangle.d.ts.map +1 -0
  382. package/lib/exporters/__tests__/svg-export-image/test-defs/svg-rectangle.js +34 -0
  383. package/lib/exporters/__tests__/svg-export-image/test-defs/svg-rectangle.js.map +1 -0
  384. package/lib/exporters/__tests__/svg-export-image/test-defs/svg-text-growth-directions.d.ts +3 -0
  385. package/lib/exporters/__tests__/svg-export-image/test-defs/svg-text-growth-directions.d.ts.map +1 -0
  386. package/lib/exporters/__tests__/svg-export-image/test-defs/svg-text-growth-directions.js +37 -0
  387. package/lib/exporters/__tests__/svg-export-image/test-defs/svg-text-growth-directions.js.map +1 -0
  388. package/lib/exporters/__tests__/svg-export-image/test-defs/svg-text.d.ts +3 -0
  389. package/lib/exporters/__tests__/svg-export-image/test-defs/svg-text.d.ts.map +1 -0
  390. package/lib/exporters/__tests__/svg-export-image/test-defs/svg-text.js +34 -0
  391. package/lib/exporters/__tests__/svg-export-image/test-defs/svg-text.js.map +1 -0
  392. package/lib/exporters/__tests__/svg-export-image.test.d.ts +2 -0
  393. package/lib/exporters/__tests__/svg-export-image.test.d.ts.map +1 -0
  394. package/lib/exporters/__tests__/svg-export-image.test.js +35 -0
  395. package/lib/exporters/__tests__/svg-export-image.test.js.map +1 -0
  396. package/lib/exporters/__tests__/test-defs/png-export-image.d.ts +3 -0
  397. package/lib/exporters/__tests__/test-defs/png-export-image.d.ts.map +1 -0
  398. package/lib/exporters/__tests__/test-defs/png-export-image.js +9 -0
  399. package/lib/exporters/__tests__/test-defs/png-export-image.js.map +1 -0
  400. package/lib/exporters/__tests__/test-defs/svg-export-image.d.ts +3 -0
  401. package/lib/exporters/__tests__/test-defs/svg-export-image.d.ts.map +1 -0
  402. package/lib/exporters/__tests__/test-defs/svg-export-image.js +54 -0
  403. package/lib/exporters/__tests__/test-defs/svg-export-image.js.map +1 -0
  404. package/lib/exporters/react-svg-export-image.d.ts.map +1 -1
  405. package/lib/exporters/react-svg-export-image.js +17 -27
  406. package/lib/exporters/react-svg-export-image.js.map +1 -1
  407. package/lib/model/__tests__/color/export-test-def.d.ts +12 -0
  408. package/lib/model/__tests__/color/export-test-def.d.ts.map +1 -0
  409. package/lib/model/__tests__/color/export-test-def.js +6 -0
  410. package/lib/model/__tests__/color/export-test-def.js.map +1 -0
  411. package/lib/model/__tests__/color/export.test.d.ts +3 -0
  412. package/lib/model/__tests__/color/export.test.d.ts.map +1 -0
  413. package/lib/model/__tests__/color/export.test.js +18 -0
  414. package/lib/model/__tests__/color/export.test.js.map +1 -0
  415. package/lib/model/__tests__/color/test-defs/color-from-string-6-digits.d.ts +3 -0
  416. package/lib/model/__tests__/color/test-defs/color-from-string-6-digits.d.ts.map +1 -0
  417. package/lib/model/__tests__/color/test-defs/color-from-string-6-digits.js +66 -0
  418. package/lib/model/__tests__/color/test-defs/color-from-string-6-digits.js.map +1 -0
  419. package/lib/model/__tests__/color/test-defs/color-from-string.d.ts +3 -0
  420. package/lib/model/__tests__/color/test-defs/color-from-string.d.ts.map +1 -0
  421. package/lib/model/__tests__/color/test-defs/color-from-string.js +65 -0
  422. package/lib/model/__tests__/color/test-defs/color-from-string.js.map +1 -0
  423. package/lib/model/__tests__/color/test-defs/color-to-string.d.ts +3 -0
  424. package/lib/model/__tests__/color/test-defs/color-to-string.d.ts.map +1 -0
  425. package/lib/model/__tests__/color/test-defs/color-to-string.js +54 -0
  426. package/lib/model/__tests__/color/test-defs/color-to-string.js.map +1 -0
  427. package/lib/model/__tests__/color/test-defs/color-undefined-2.d.ts +3 -0
  428. package/lib/model/__tests__/color/test-defs/color-undefined-2.d.ts.map +1 -0
  429. package/lib/model/__tests__/color/test-defs/color-undefined-2.js +29 -0
  430. package/lib/model/__tests__/color/test-defs/color-undefined-2.js.map +1 -0
  431. package/lib/model/__tests__/color/test-defs/color-undefined.d.ts +3 -0
  432. package/lib/model/__tests__/color/test-defs/color-undefined.d.ts.map +1 -0
  433. package/lib/model/__tests__/color/test-defs/color-undefined.js +29 -0
  434. package/lib/model/__tests__/color/test-defs/color-undefined.js.map +1 -0
  435. package/lib/model/component.d.ts +3 -2
  436. package/lib/model/component.d.ts.map +1 -1
  437. package/lib/model/component.js +12 -11
  438. package/lib/model/component.js.map +1 -1
  439. package/package.json +4 -4
  440. package/src/__stories__/react-svg-export/example-1.stories.tsx +54 -0
  441. package/src/__stories__/svg-export/example-1.stories.tsx +42 -0
  442. package/src/exporters/__tests__/dxf2d-export-image/export-test-def.ts +11 -0
  443. package/src/exporters/__tests__/dxf2d-export-image/export.test.tsx +13 -0
  444. package/src/exporters/__tests__/dxf2d-export-image/test-defs/dxf2d-ellipse.ts +405 -0
  445. package/src/exporters/__tests__/dxf2d-export-image/test-defs/dxf2d-group.ts +166 -0
  446. package/src/exporters/__tests__/dxf2d-export-image/test-defs/dxf2d-line.ts +80 -0
  447. package/src/exporters/__tests__/dxf2d-export-image/test-defs/dxf2d-polygon.ts +114 -0
  448. package/src/exporters/__tests__/dxf2d-export-image/test-defs/dxf2d-polyline.ts +103 -0
  449. package/src/exporters/__tests__/dxf2d-export-image/test-defs/dxf2d-rectangle.ts +125 -0
  450. package/src/exporters/__tests__/dxf2d-export-image/test-defs/dxf2d-text-growth-directions.ts +214 -0
  451. package/src/exporters/__tests__/dxf2d-export-image/test-defs/dxf2d-text.ts +97 -0
  452. package/src/exporters/__tests__/eps-export-image/export-test-def.ts +11 -0
  453. package/src/exporters/__tests__/eps-export-image/export.test.tsx +13 -0
  454. package/src/exporters/__tests__/eps-export-image/test-defs/eps-ellipse.ts +50 -0
  455. package/src/exporters/__tests__/eps-export-image/test-defs/eps-empty-text.ts +60 -0
  456. package/src/exporters/__tests__/eps-export-image/test-defs/eps-group.ts +74 -0
  457. package/src/exporters/__tests__/eps-export-image/test-defs/eps-line.ts +45 -0
  458. package/src/exporters/__tests__/eps-export-image/test-defs/eps-polygon.ts +65 -0
  459. package/src/exporters/__tests__/eps-export-image/test-defs/eps-polyline.ts +58 -0
  460. package/src/exporters/__tests__/eps-export-image/test-defs/eps-rectangle.ts +46 -0
  461. package/src/exporters/__tests__/eps-export-image/test-defs/eps-text-growth-directions.ts +138 -0
  462. package/src/exporters/__tests__/eps-export-image/test-defs/eps-text.ts +60 -0
  463. package/src/exporters/__tests__/exception/png-unsupported.test.tsx +25 -0
  464. package/src/exporters/__tests__/exception/react-svg-direction-exception.test.tsx +65 -0
  465. package/src/exporters/__tests__/exception/svg-direction-exception.test.tsx +65 -0
  466. package/src/{_tests_ → exporters/__tests__}/images/diffusers.png +0 -0
  467. package/src/exporters/__tests__/png-export-image/export-test-def.ts +11 -0
  468. package/src/exporters/__tests__/png-export-image/export.test.tsx +13 -0
  469. package/src/exporters/__tests__/png-export-image/test-defs/png-createPNG.tsx +26 -0
  470. package/src/exporters/__tests__/react-svg-export-image/export-test-def.tsx +13 -0
  471. package/src/exporters/__tests__/react-svg-export-image/export.test.tsx +13 -0
  472. package/src/exporters/__tests__/react-svg-export-image/test-defs/react-svg-binary-png.tsx +27 -0
  473. package/src/exporters/__tests__/react-svg-export-image/test-defs/react-svg-binary.tsx +26 -0
  474. package/src/exporters/__tests__/react-svg-export-image/test-defs/react-svg-callback.tsx +60 -0
  475. package/src/exporters/__tests__/react-svg-export-image/test-defs/react-svg-ellipse.tsx +28 -0
  476. package/src/exporters/__tests__/react-svg-export-image/test-defs/react-svg-empty-text.tsx +35 -0
  477. package/src/exporters/__tests__/react-svg-export-image/test-defs/react-svg-group.tsx +44 -0
  478. package/src/exporters/__tests__/react-svg-export-image/test-defs/react-svg-line.tsx +26 -0
  479. package/src/exporters/__tests__/react-svg-export-image/test-defs/react-svg-polygon.tsx +32 -0
  480. package/src/exporters/__tests__/react-svg-export-image/test-defs/react-svg-polyline.tsx +33 -0
  481. package/src/exporters/__tests__/react-svg-export-image/test-defs/react-svg-rectangle.tsx +27 -0
  482. package/src/exporters/__tests__/react-svg-export-image/test-defs/react-svg-subimage.tsx +36 -0
  483. package/src/exporters/__tests__/react-svg-export-image/test-defs/react-svg-text-growth-directions.tsx +80 -0
  484. package/src/exporters/__tests__/react-svg-export-image/test-defs/react-svg-text-sub.tsx +35 -0
  485. package/src/exporters/__tests__/react-svg-export-image/test-defs/react-svg-text.tsx +35 -0
  486. package/src/exporters/__tests__/svg-export-image/export-test-def.ts +11 -0
  487. package/src/exporters/__tests__/svg-export-image/export.test.tsx +13 -0
  488. package/src/exporters/__tests__/svg-export-image/test-defs/svg-binary.tsx +26 -0
  489. package/src/exporters/__tests__/svg-export-image/test-defs/svg-ellipse.ts +27 -0
  490. package/src/exporters/__tests__/svg-export-image/test-defs/svg-empty-text.ts +34 -0
  491. package/src/exporters/__tests__/svg-export-image/test-defs/svg-group.ts +44 -0
  492. package/src/exporters/__tests__/svg-export-image/test-defs/svg-line.ts +26 -0
  493. package/src/exporters/__tests__/svg-export-image/test-defs/svg-polygon.ts +32 -0
  494. package/src/exporters/__tests__/svg-export-image/test-defs/svg-polyline.ts +33 -0
  495. package/src/exporters/__tests__/svg-export-image/test-defs/svg-rectangle.ts +27 -0
  496. package/src/exporters/__tests__/svg-export-image/test-defs/svg-text-growth-directions.ts +80 -0
  497. package/src/exporters/__tests__/svg-export-image/test-defs/svg-text.ts +35 -0
  498. package/src/exporters/dxf2d-export-image.ts +218 -218
  499. package/src/exporters/eps-export-image.ts +154 -154
  500. package/src/exporters/index.ts +3 -3
  501. package/src/exporters/png-export-image.ts +12 -12
  502. package/src/exporters/react-svg-export-image.tsx +298 -338
  503. package/src/exporters/svg-export-image.ts +334 -334
  504. package/src/index.ts +11 -11
  505. package/src/model/__tests__/color/export-test-def.ts +13 -0
  506. package/src/model/__tests__/color/export.test.tsx +14 -0
  507. package/src/model/__tests__/color/test-defs/color-from-string.ts +46 -0
  508. package/src/model/__tests__/color/test-defs/color-to-string.ts +35 -0
  509. package/src/model/__tests__/color/test-defs/color-undefined-2.ts +8 -0
  510. package/src/model/__tests__/color/test-defs/color-undefined.ts +8 -0
  511. package/src/model/abstract-image.ts +25 -25
  512. package/src/model/color.ts +52 -52
  513. package/src/model/component.ts +266 -279
  514. package/src/model/index.ts +5 -5
  515. package/src/model/point.ts +11 -11
  516. package/src/model/size.ts +11 -11
  517. package/src/_tests_/exporters/svg-export-image.test.ts +0 -30
@@ -1,338 +1,298 @@
1
- import * as R from "ramda";
2
- import * as React from "react";
3
- import * as AbstractImage from "../model/index";
4
-
5
- export interface ReactSvgCallbacks {
6
- readonly onClick?: MouseCallback;
7
- readonly onDoubleClick?: MouseCallback;
8
- readonly onMouseMove?: MouseCallback;
9
- readonly onContextMenu?: MouseCallback;
10
- }
11
-
12
- export type MouseCallback = (
13
- id: string | undefined,
14
- point: AbstractImage.Point
15
- ) => void;
16
-
17
- export function createReactSvg(
18
- image: AbstractImage.AbstractImage,
19
- callbacks?: ReactSvgCallbacks
20
- ): React.ReactElement<{}> {
21
- const cb = callbacks || {};
22
- const id = "ai_root";
23
- return (
24
- <svg
25
- id={id}
26
- width={`${image.size.width}px`}
27
- height={`${image.size.height}px`}
28
- viewBox={[0, 0, image.size.width, image.size.height].join(" ")}
29
- onClick={_callback(cb.onClick, id)}
30
- onDoubleClick={_callback(cb.onDoubleClick, id)}
31
- onMouseMove={_callback(cb.onMouseMove, id)}
32
- onContextMenu={_callback(cb.onContextMenu, id)}
33
- >
34
- {R.unnest(
35
- R.addIndex(R.map)(
36
- // tslint:disable-next-line:no-any
37
- (c, i) => _visit(i.toString(), c as any),
38
- image.components
39
- )
40
- )}
41
- </svg>
42
- );
43
- }
44
-
45
- function _callback(
46
- callback: MouseCallback | undefined,
47
- rootId: string
48
- ): React.MouseEventHandler<Element> | undefined {
49
- if (!callback) {
50
- return undefined;
51
- }
52
- return (e: React.MouseEvent<Element>) => {
53
- const rect = e.currentTarget.getBoundingClientRect();
54
- const offsetX = e.clientX - rect.left;
55
- const offsetY = e.clientY - rect.top;
56
- const mousePoint = AbstractImage.createPoint(offsetX, offsetY);
57
- const id = getIdAttr(e.target as Element, rootId);
58
- callback(id && id !== "" ? id : undefined, mousePoint);
59
- };
60
- }
61
-
62
- function makeIdAttr(id: string | undefined): string | undefined {
63
- if (!id) {
64
- return undefined;
65
- }
66
- return `ai%${id}`;
67
- }
68
-
69
- function getIdAttr(
70
- target: Element | undefined,
71
- rootId: string
72
- ): string | undefined {
73
- if (!target || target.id === rootId) {
74
- return undefined;
75
- }
76
- const id = target.id;
77
- const parts = id.split("%");
78
- if (parts.length !== 2 || parts[0] !== "ai") {
79
- return getIdAttr((target.parentNode as Element) || undefined, rootId);
80
- }
81
- return parts[1];
82
- }
83
-
84
- function _visit(
85
- key: string,
86
- component: AbstractImage.Component
87
- ): Array<React.ReactElement<{}>> {
88
- switch (component.type) {
89
- case "group":
90
- return [
91
- <g key={key} name={component.name}>
92
- {R.unnest(
93
- R.addIndex(R.map)(
94
- // tslint:disable-next-line:no-any
95
- (c, i) => _visit(i.toString(), c as any),
96
- component.children
97
- )
98
- )}
99
- </g>
100
- ];
101
- case "binaryimage":
102
- switch (component.format) {
103
- case "svg":
104
- return [
105
- <g
106
- key={key}
107
- id={makeIdAttr(component.id)}
108
- dangerouslySetInnerHTML={{
109
- __html: component.data.reduce(
110
- (a, b) => a + String.fromCharCode(b),
111
- ""
112
- )
113
- }}
114
- />
115
- ];
116
- default:
117
- return [];
118
- }
119
- case "line":
120
- return [
121
- <line
122
- id={makeIdAttr(component.id)}
123
- key={key}
124
- x1={component.start.x}
125
- y1={component.start.y}
126
- x2={component.end.x}
127
- y2={component.end.y}
128
- stroke={colorToRgb(component.strokeColor)}
129
- strokeWidth={component.strokeThickness}
130
- strokeOpacity={colorToOpacity(component.strokeColor)}
131
- />
132
- ];
133
- case "text":
134
- if (!component.text) {
135
- return [];
136
- }
137
- const lineHeight = component.fontSize;
138
-
139
- const shadowStyle = {
140
- textAnchor: getTextAnchor(component.horizontalGrowthDirection),
141
- fontSize: component.fontSize.toString() + "px",
142
- fontWeight: component.fontWeight,
143
- fontFamily: component.fontFamily,
144
- stroke: colorToRgb(component.strokeColor),
145
- strokeWidth: component.strokeThickness
146
- };
147
- const style = {
148
- textAnchor: getTextAnchor(component.horizontalGrowthDirection),
149
- fontSize: component.fontSize.toString() + "px",
150
- fontWeight: component.fontWeight,
151
- fontFamily: component.fontFamily,
152
- fill: colorToRgb(component.textColor)
153
- };
154
- const dy = getBaselineAdjustment(component.verticalGrowthDirection);
155
-
156
- const transform =
157
- "rotate(" +
158
- component.clockwiseRotationDegrees.toString() +
159
- " " +
160
- component.position.x.toString() +
161
- " " +
162
- component.position.y.toString() +
163
- ")";
164
-
165
- const lines: Array<string> =
166
- component.text !== null ? component.text.split("\n") : [];
167
- const tSpans = lines.map(t =>
168
- renderLine(
169
- t,
170
- component.position.x,
171
- component.position.y + (lines.indexOf(t) + dy) * lineHeight,
172
- component.fontSize,
173
- lineHeight
174
- )
175
- );
176
- let cs: Array<React.ReactElement<{}>> = [];
177
- if (component.strokeThickness > 0 && component.strokeColor) {
178
- cs.push(
179
- <text key={key + "shadow"} style={shadowStyle} transform={transform}>
180
- {tSpans}
181
- </text>
182
- );
183
- }
184
- cs.push(
185
- <text key={key} style={style} transform={transform}>
186
- {tSpans}
187
- </text>
188
- );
189
- return cs;
190
- case "ellipse":
191
- const rx = Math.abs(component.bottomRight.x - component.topLeft.x) * 0.5;
192
- const ry = Math.abs(component.bottomRight.y - component.topLeft.y) * 0.5;
193
- const cx = (component.bottomRight.x + component.topLeft.x) * 0.5;
194
- const cy = (component.bottomRight.y + component.topLeft.y) * 0.5;
195
- return [
196
- <ellipse
197
- id={makeIdAttr(component.id)}
198
- key={key}
199
- cx={cx}
200
- cy={cy}
201
- rx={rx}
202
- ry={ry}
203
- stroke={colorToRgb(component.strokeColor)}
204
- strokeWidth={component.strokeThickness}
205
- strokeOpacity={colorToOpacity(component.strokeColor)}
206
- fillOpacity={colorToOpacity(component.fillColor)}
207
- fill={colorToRgb(component.fillColor)}
208
- />
209
- ];
210
- case "polyline":
211
- let linePoints = component.points
212
- .map(p => p.x.toString() + "," + p.y.toString())
213
- .join(" ");
214
- return [
215
- <polyline
216
- id={makeIdAttr(component.id)}
217
- key={key}
218
- points={linePoints}
219
- stroke={colorToRgb(component.strokeColor)}
220
- strokeWidth={component.strokeThickness}
221
- strokeOpacity={colorToOpacity(component.strokeColor)}
222
- fill="none"
223
- />
224
- ];
225
- case "polygon":
226
- let points = component.points
227
- .map(p => p.x.toString() + "," + p.y.toString())
228
- .join(" ");
229
- return [
230
- <polygon
231
- id={makeIdAttr(component.id)}
232
- key={key}
233
- points={points}
234
- stroke={colorToRgb(component.strokeColor)}
235
- strokeWidth={component.strokeThickness}
236
- strokeOpacity={colorToOpacity(component.strokeColor)}
237
- fillOpacity={colorToOpacity(component.fillColor)}
238
- fill={colorToRgb(component.fillColor)}
239
- />
240
- ];
241
- case "rectangle":
242
- return [
243
- <rect
244
- id={makeIdAttr(component.id)}
245
- key={key}
246
- x={component.topLeft.x}
247
- y={component.topLeft.y}
248
- width={Math.abs(component.bottomRight.x - component.topLeft.x)}
249
- height={Math.abs(component.bottomRight.y - component.topLeft.y)}
250
- stroke={colorToRgb(component.strokeColor)}
251
- strokeWidth={component.strokeThickness}
252
- strokeOpacity={colorToOpacity(component.strokeColor)}
253
- fillOpacity={colorToOpacity(component.fillColor)}
254
- fill={colorToRgb(component.fillColor)}
255
- />
256
- ];
257
- default:
258
- return [];
259
- }
260
- }
261
-
262
- function renderLine(
263
- text: string,
264
- x: number,
265
- y: number,
266
- fontSize: number,
267
- lineHeight: number
268
- ): JSX.Element {
269
- const split = R.unnest<string>(
270
- text.split("<sub>").map(t => t.split("</sub>"))
271
- );
272
- let inside = false;
273
- const tags: Array<JSX.Element> = [];
274
- for (let i = 0; i < split.length; ++i) {
275
- const splitText = split[i];
276
- if (inside) {
277
- tags.push(
278
- <tspan
279
- key={i}
280
- baselineShift="sub"
281
- style={{ fontSize: (fontSize * 0.8).toString() + "px" }}
282
- >
283
- {splitText}
284
- </tspan>
285
- );
286
- } else {
287
- tags.push(<tspan key={i}>{splitText}</tspan>);
288
- }
289
- inside = !inside;
290
- }
291
- return (
292
- <tspan key={text} x={x} y={y} height={lineHeight.toString() + "px"}>
293
- {tags}
294
- </tspan>
295
- );
296
- }
297
-
298
- function getBaselineAdjustment(d: AbstractImage.GrowthDirection): number {
299
- if (d === "up") {
300
- return 0.0;
301
- }
302
- if (d === "uniform") {
303
- return 0.5;
304
- }
305
- if (d === "down") {
306
- return 1.0;
307
- }
308
- throw "Unknown text alignment " + d;
309
- }
310
-
311
- function getTextAnchor(d: AbstractImage.GrowthDirection): string {
312
- if (d === "left") {
313
- return "end";
314
- }
315
- if (d === "uniform") {
316
- return "middle";
317
- }
318
- if (d === "right") {
319
- return "start";
320
- }
321
- throw "Unknown text alignment " + d;
322
- }
323
-
324
- function colorToRgb(color: AbstractImage.Color): string {
325
- return (
326
- "rgb(" +
327
- color.r.toString() +
328
- "," +
329
- color.g.toString() +
330
- "," +
331
- color.b.toString() +
332
- ")"
333
- );
334
- }
335
-
336
- function colorToOpacity(color: AbstractImage.Color): string {
337
- return (color.a / 255).toString();
338
- }
1
+ import * as R from "ramda";
2
+ import * as React from "react";
3
+ import * as AbstractImage from "../model/index";
4
+
5
+ export interface ReactSvgCallbacks {
6
+ readonly onClick?: MouseCallback;
7
+ readonly onDoubleClick?: MouseCallback;
8
+ readonly onMouseMove?: MouseCallback;
9
+ readonly onContextMenu?: MouseCallback;
10
+ }
11
+
12
+ export type MouseCallback = (id: string | undefined, point: AbstractImage.Point) => void;
13
+
14
+ export function createReactSvg(
15
+ image: AbstractImage.AbstractImage,
16
+ callbacks?: ReactSvgCallbacks
17
+ ): React.ReactElement<{}> {
18
+ const cb = callbacks || {};
19
+ const id = "ai_root";
20
+ return (
21
+ <svg
22
+ id={id}
23
+ width={`${image.size.width}px`}
24
+ height={`${image.size.height}px`}
25
+ viewBox={[0, 0, image.size.width, image.size.height].join(" ")}
26
+ onClick={_callback(cb.onClick, id)}
27
+ onDoubleClick={_callback(cb.onDoubleClick, id)}
28
+ onMouseMove={_callback(cb.onMouseMove, id)}
29
+ onContextMenu={_callback(cb.onContextMenu, id)}
30
+ >
31
+ {R.unnest(
32
+ R.addIndex(R.map)(
33
+ // tslint:disable-next-line:no-any
34
+ (c, i) => _visit(i.toString(), c as any),
35
+ image.components
36
+ )
37
+ )}
38
+ </svg>
39
+ );
40
+ }
41
+
42
+ function _callback(callback: MouseCallback | undefined, rootId: string): React.MouseEventHandler<Element> | undefined {
43
+ if (!callback) {
44
+ return undefined;
45
+ }
46
+ return (e: React.MouseEvent<Element>) => {
47
+ const rect = e.currentTarget.getBoundingClientRect();
48
+ const offsetX = e.clientX - rect.left;
49
+ const offsetY = e.clientY - rect.top;
50
+ const mousePoint = AbstractImage.createPoint(offsetX, offsetY);
51
+ const id = getIdAttr(e.target as Element, rootId);
52
+ callback(id && id !== "" ? id : undefined, mousePoint);
53
+ };
54
+ }
55
+
56
+ function makeIdAttr(id: string | undefined): string | undefined {
57
+ if (!id) {
58
+ return undefined;
59
+ }
60
+ return `ai%${id}`;
61
+ }
62
+
63
+ function getIdAttr(target: Element | undefined, rootId: string): string | undefined {
64
+ if (!target || target.id === rootId) {
65
+ return undefined;
66
+ }
67
+ const id = target.id;
68
+ const parts = id.split("%");
69
+ if (parts.length !== 2 || parts[0] !== "ai") {
70
+ return getIdAttr((target.parentNode as Element) || undefined, rootId);
71
+ }
72
+ return parts[1];
73
+ }
74
+
75
+ function _visit(key: string, component: AbstractImage.Component): Array<React.ReactElement<{}>> {
76
+ switch (component.type) {
77
+ case "group":
78
+ return [
79
+ <g key={key} name={component.name}>
80
+ {R.unnest(
81
+ R.addIndex(R.map)(
82
+ // tslint:disable-next-line:no-any
83
+ (c, i) => _visit(i.toString(), c as any),
84
+ component.children
85
+ )
86
+ )}
87
+ </g>,
88
+ ];
89
+ case "binaryimage":
90
+ switch (component.format) {
91
+ case "svg":
92
+ return [
93
+ <g
94
+ key={key}
95
+ id={makeIdAttr(component.id)}
96
+ dangerouslySetInnerHTML={{
97
+ __html: component.data.reduce((a, b) => a + String.fromCharCode(b), ""),
98
+ }}
99
+ />,
100
+ ];
101
+ default:
102
+ return [];
103
+ }
104
+ case "line":
105
+ return [
106
+ <line
107
+ id={makeIdAttr(component.id)}
108
+ key={key}
109
+ x1={component.start.x}
110
+ y1={component.start.y}
111
+ x2={component.end.x}
112
+ y2={component.end.y}
113
+ stroke={colorToRgb(component.strokeColor)}
114
+ strokeWidth={component.strokeThickness}
115
+ strokeOpacity={colorToOpacity(component.strokeColor)}
116
+ />,
117
+ ];
118
+ case "text":
119
+ if (!component.text) {
120
+ return [];
121
+ }
122
+ const lineHeight = component.fontSize;
123
+
124
+ const shadowStyle = {
125
+ textAnchor: getTextAnchor(component.horizontalGrowthDirection),
126
+ fontSize: component.fontSize.toString() + "px",
127
+ fontWeight: component.fontWeight === "mediumBold" ? "bold" : component.fontWeight,
128
+ fontFamily: component.fontFamily,
129
+ stroke: colorToRgb(component.strokeColor),
130
+ strokeWidth: component.strokeThickness,
131
+ };
132
+ const style = {
133
+ textAnchor: getTextAnchor(component.horizontalGrowthDirection),
134
+ fontSize: component.fontSize.toString() + "px",
135
+ fontWeight: component.fontWeight === "mediumBold" ? "bold" : component.fontWeight,
136
+ fontFamily: component.fontFamily,
137
+ fill: colorToRgb(component.textColor),
138
+ };
139
+ const dy = getBaselineAdjustment(component.verticalGrowthDirection);
140
+
141
+ const transform =
142
+ "rotate(" +
143
+ component.clockwiseRotationDegrees.toString() +
144
+ " " +
145
+ component.position.x.toString() +
146
+ " " +
147
+ component.position.y.toString() +
148
+ ")";
149
+
150
+ const lines: Array<string> = component.text !== null ? component.text.split("\n") : [];
151
+ const tSpans = lines.map((t) =>
152
+ renderLine(
153
+ t,
154
+ component.position.x,
155
+ component.position.y + (lines.indexOf(t) + dy) * lineHeight,
156
+ component.fontSize,
157
+ lineHeight
158
+ )
159
+ );
160
+ let cs: Array<React.ReactElement<{}>> = [];
161
+ if (component.strokeThickness > 0 && component.strokeColor) {
162
+ cs.push(
163
+ <text key={key + "shadow"} style={shadowStyle} transform={transform}>
164
+ {tSpans}
165
+ </text>
166
+ );
167
+ }
168
+ cs.push(
169
+ <text key={key} style={style} transform={transform}>
170
+ {tSpans}
171
+ </text>
172
+ );
173
+ return cs;
174
+ case "ellipse":
175
+ const rx = Math.abs(component.bottomRight.x - component.topLeft.x) * 0.5;
176
+ const ry = Math.abs(component.bottomRight.y - component.topLeft.y) * 0.5;
177
+ const cx = (component.bottomRight.x + component.topLeft.x) * 0.5;
178
+ const cy = (component.bottomRight.y + component.topLeft.y) * 0.5;
179
+ return [
180
+ <ellipse
181
+ id={makeIdAttr(component.id)}
182
+ key={key}
183
+ cx={cx}
184
+ cy={cy}
185
+ rx={rx}
186
+ ry={ry}
187
+ stroke={colorToRgb(component.strokeColor)}
188
+ strokeWidth={component.strokeThickness}
189
+ strokeOpacity={colorToOpacity(component.strokeColor)}
190
+ fillOpacity={colorToOpacity(component.fillColor)}
191
+ fill={colorToRgb(component.fillColor)}
192
+ />,
193
+ ];
194
+ case "polyline":
195
+ let linePoints = component.points.map((p) => p.x.toString() + "," + p.y.toString()).join(" ");
196
+ return [
197
+ <polyline
198
+ id={makeIdAttr(component.id)}
199
+ key={key}
200
+ points={linePoints}
201
+ stroke={colorToRgb(component.strokeColor)}
202
+ strokeWidth={component.strokeThickness}
203
+ strokeOpacity={colorToOpacity(component.strokeColor)}
204
+ fill="none"
205
+ />,
206
+ ];
207
+ case "polygon":
208
+ let points = component.points.map((p) => p.x.toString() + "," + p.y.toString()).join(" ");
209
+ return [
210
+ <polygon
211
+ id={makeIdAttr(component.id)}
212
+ key={key}
213
+ points={points}
214
+ stroke={colorToRgb(component.strokeColor)}
215
+ strokeWidth={component.strokeThickness}
216
+ strokeOpacity={colorToOpacity(component.strokeColor)}
217
+ fillOpacity={colorToOpacity(component.fillColor)}
218
+ fill={colorToRgb(component.fillColor)}
219
+ />,
220
+ ];
221
+ case "rectangle":
222
+ return [
223
+ <rect
224
+ id={makeIdAttr(component.id)}
225
+ key={key}
226
+ x={component.topLeft.x}
227
+ y={component.topLeft.y}
228
+ width={Math.abs(component.bottomRight.x - component.topLeft.x)}
229
+ height={Math.abs(component.bottomRight.y - component.topLeft.y)}
230
+ stroke={colorToRgb(component.strokeColor)}
231
+ strokeWidth={component.strokeThickness}
232
+ strokeOpacity={colorToOpacity(component.strokeColor)}
233
+ fillOpacity={colorToOpacity(component.fillColor)}
234
+ fill={colorToRgb(component.fillColor)}
235
+ />,
236
+ ];
237
+ default:
238
+ return [];
239
+ }
240
+ }
241
+
242
+ function renderLine(text: string, x: number, y: number, fontSize: number, lineHeight: number): JSX.Element {
243
+ const split = R.unnest<string>(text.split("<sub>").map((t) => t.split("</sub>")));
244
+ let inside = false;
245
+ const tags: Array<JSX.Element> = [];
246
+ for (let i = 0; i < split.length; ++i) {
247
+ const splitText = split[i];
248
+ if (inside) {
249
+ tags.push(
250
+ <tspan key={i} baselineShift="sub" style={{ fontSize: (fontSize * 0.8).toString() + "px" }}>
251
+ {splitText}
252
+ </tspan>
253
+ );
254
+ } else {
255
+ tags.push(<tspan key={i}>{splitText}</tspan>);
256
+ }
257
+ inside = !inside;
258
+ }
259
+ return (
260
+ <tspan key={text} x={x} y={y} height={lineHeight.toString() + "px"}>
261
+ {tags}
262
+ </tspan>
263
+ );
264
+ }
265
+
266
+ function getBaselineAdjustment(d: AbstractImage.GrowthDirection): number {
267
+ if (d === "up") {
268
+ return 0.0;
269
+ }
270
+ if (d === "uniform") {
271
+ return 0.5;
272
+ }
273
+ if (d === "down") {
274
+ return 1.0;
275
+ }
276
+ throw "Unknown text alignment " + d;
277
+ }
278
+
279
+ function getTextAnchor(d: AbstractImage.GrowthDirection): "end" | "middle" | "start" {
280
+ if (d === "left") {
281
+ return "end";
282
+ }
283
+ if (d === "uniform") {
284
+ return "middle";
285
+ }
286
+ if (d === "right") {
287
+ return "start";
288
+ }
289
+ throw "Unknown text alignment " + d;
290
+ }
291
+
292
+ function colorToRgb(color: AbstractImage.Color): string {
293
+ return "rgb(" + color.r.toString() + "," + color.g.toString() + "," + color.b.toString() + ")";
294
+ }
295
+
296
+ function colorToOpacity(color: AbstractImage.Color): string {
297
+ return (color.a / 255).toString();
298
+ }