@node-projects/web-component-designer 0.0.216 → 0.0.217

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 (633) hide show
  1. package/dist/Constants.d.ts +3 -3
  2. package/dist/Constants.js +5 -5
  3. package/dist/commandHandling/CommandType.d.ts +32 -32
  4. package/dist/commandHandling/CommandType.js +33 -33
  5. package/dist/commandHandling/IUiCommand.d.ts +10 -10
  6. package/dist/commandHandling/IUiCommand.js +1 -1
  7. package/dist/commandHandling/IUiCommandHandler.d.ts +5 -5
  8. package/dist/commandHandling/IUiCommandHandler.js +1 -1
  9. package/dist/elements/controls/DesignerTabControl.d.ts +24 -24
  10. package/dist/elements/controls/DesignerTabControl.js +152 -151
  11. package/dist/elements/controls/ImageButtonListSelector.d.ts +17 -17
  12. package/dist/elements/controls/ImageButtonListSelector.js +51 -50
  13. package/dist/elements/controls/MetricsEditor.d.ts +14 -14
  14. package/dist/elements/controls/MetricsEditor.js +37 -36
  15. package/dist/elements/controls/NumericPopup.d.ts +6 -6
  16. package/dist/elements/controls/NumericPopup.js +9 -8
  17. package/dist/elements/controls/NumericStyleInput.d.ts +16 -16
  18. package/dist/elements/controls/NumericStyleInput.js +43 -42
  19. package/dist/elements/controls/PlainScrollbar.d.ts +15 -15
  20. package/dist/elements/controls/PlainScrollbar.js +374 -374
  21. package/dist/elements/controls/SimpleSplitView.d.ts +11 -11
  22. package/dist/elements/controls/SimpleSplitView.js +40 -39
  23. package/dist/elements/controls/ThicknessEditor.d.ts +33 -33
  24. package/dist/elements/controls/ThicknessEditor.js +91 -90
  25. package/dist/elements/documentContainer.d.ts +54 -54
  26. package/dist/elements/documentContainer.js +227 -227
  27. package/dist/elements/helper/ArrangeHelper.d.ts +8 -8
  28. package/dist/elements/helper/ArrangeHelper.js +105 -105
  29. package/dist/elements/helper/ClipboardHelper.d.ts +4 -4
  30. package/dist/elements/helper/ClipboardHelper.js +90 -90
  31. package/dist/elements/helper/CssAttributeParser.d.ts +9 -9
  32. package/dist/elements/helper/CssAttributeParser.js +67 -67
  33. package/dist/elements/helper/CssCombiner.d.ts +11 -11
  34. package/dist/elements/helper/CssCombiner.js +298 -297
  35. package/dist/elements/helper/CssUnitConverter.d.ts +3 -3
  36. package/dist/elements/helper/CssUnitConverter.js +101 -101
  37. package/dist/elements/helper/ElementHelper.d.ts +19 -18
  38. package/dist/elements/helper/ElementHelper.js +107 -101
  39. package/dist/elements/helper/GridHelper.d.ts +19 -19
  40. package/dist/elements/helper/GridHelper.js +112 -112
  41. package/dist/elements/helper/Helper.d.ts +8 -8
  42. package/dist/elements/helper/Helper.js +36 -36
  43. package/dist/elements/helper/ITextWriter.d.ts +11 -11
  44. package/dist/elements/helper/ITextWriter.js +1 -1
  45. package/dist/elements/helper/IndentedTextWriter.d.ts +15 -15
  46. package/dist/elements/helper/IndentedTextWriter.js +34 -34
  47. package/dist/elements/helper/LayoutHelper.d.ts +4 -4
  48. package/dist/elements/helper/LayoutHelper.js +73 -73
  49. package/dist/elements/helper/NpmPackageLoader.d.ts +17 -17
  50. package/dist/elements/helper/NpmPackageLoader.js +207 -207
  51. package/dist/elements/helper/PathDataPolyfill.d.ts +101 -101
  52. package/dist/elements/helper/PathDataPolyfill.js +955 -955
  53. package/dist/elements/helper/Screenshot.d.ts +11 -11
  54. package/dist/elements/helper/Screenshot.js +60 -60
  55. package/dist/elements/helper/SimpleTextWriter.d.ts +13 -13
  56. package/dist/elements/helper/SimpleTextWriter.js +26 -26
  57. package/dist/elements/helper/SvgHelper.d.ts +1 -1
  58. package/dist/elements/helper/SvgHelper.js +13 -13
  59. package/dist/elements/helper/SwitchContainerHelper.d.ts +2 -2
  60. package/dist/elements/helper/SwitchContainerHelper.js +45 -45
  61. package/dist/elements/helper/TextHelper.d.ts +10 -10
  62. package/dist/elements/helper/TextHelper.js +23 -23
  63. package/dist/elements/helper/TransformHelper.d.ts +23 -23
  64. package/dist/elements/helper/TransformHelper.js +224 -224
  65. package/dist/elements/helper/XmlHelper.d.ts +2 -2
  66. package/dist/elements/helper/XmlHelper.js +16 -16
  67. package/dist/elements/helper/contextMenu/ContextMenu.d.ts +25 -25
  68. package/dist/elements/helper/contextMenu/ContextMenu.js +232 -231
  69. package/dist/elements/helper/contextMenu/IContextMenuItem.d.ts +9 -9
  70. package/dist/elements/helper/contextMenu/IContextMenuItem.js +2 -2
  71. package/dist/elements/helper/w3color.d.ts +120 -120
  72. package/dist/elements/helper/w3color.js +801 -801
  73. package/dist/elements/item/BindingMode.d.ts +4 -4
  74. package/dist/elements/item/BindingMode.js +5 -5
  75. package/dist/elements/item/BindingTarget.d.ts +8 -8
  76. package/dist/elements/item/BindingTarget.js +9 -9
  77. package/dist/elements/item/DesignItem.d.ts +88 -88
  78. package/dist/elements/item/DesignItem.js +465 -464
  79. package/dist/elements/item/IBinding.d.ts +15 -15
  80. package/dist/elements/item/IBinding.js +1 -1
  81. package/dist/elements/item/IDesignItem.d.ts +70 -70
  82. package/dist/elements/item/IDesignItem.js +1 -1
  83. package/dist/elements/item/NodeType.d.ts +8 -8
  84. package/dist/elements/item/NodeType.js +9 -9
  85. package/dist/elements/loader/IOldCustomElementsManifest.d.ts +24 -24
  86. package/dist/elements/loader/IOldCustomElementsManifest.js +1 -1
  87. package/dist/elements/loader/OldCustomElementsManifestLoader.d.ts +8 -8
  88. package/dist/elements/loader/OldCustomElementsManifestLoader.js +45 -45
  89. package/dist/elements/services/BaseServiceContainer.d.ts +14 -14
  90. package/dist/elements/services/BaseServiceContainer.js +54 -54
  91. package/dist/elements/services/DefaultServiceBootstrap.d.ts +3 -3
  92. package/dist/elements/services/DefaultServiceBootstrap.js +193 -193
  93. package/dist/elements/services/GlobalContext.d.ts +27 -27
  94. package/dist/elements/services/GlobalContext.js +68 -68
  95. package/dist/elements/services/IService.d.ts +2 -2
  96. package/dist/elements/services/IService.js +1 -1
  97. package/dist/elements/services/IServiceContainer.d.ts +5 -5
  98. package/dist/elements/services/IServiceContainer.js +1 -1
  99. package/dist/elements/services/InstanceServiceContainer.d.ts +27 -27
  100. package/dist/elements/services/InstanceServiceContainer.js +26 -26
  101. package/dist/elements/services/ServiceContainer.d.ts +105 -105
  102. package/dist/elements/services/ServiceContainer.js +85 -85
  103. package/dist/elements/services/bindableObjectsService/BindableObjectType.d.ts +9 -9
  104. package/dist/elements/services/bindableObjectsService/BindableObjectType.js +10 -10
  105. package/dist/elements/services/bindableObjectsService/IBindableObject.d.ts +8 -8
  106. package/dist/elements/services/bindableObjectsService/IBindableObject.js +1 -1
  107. package/dist/elements/services/bindableObjectsService/IBindableObjectDragDropService.d.ts +8 -8
  108. package/dist/elements/services/bindableObjectsService/IBindableObjectDragDropService.js +1 -1
  109. package/dist/elements/services/bindableObjectsService/IBindableObjectsService.d.ts +6 -6
  110. package/dist/elements/services/bindableObjectsService/IBindableObjectsService.js +1 -1
  111. package/dist/elements/services/bindingsService/BaseCustomWebcomponentBindingsService.d.ts +10 -10
  112. package/dist/elements/services/bindingsService/BaseCustomWebcomponentBindingsService.js +74 -73
  113. package/dist/elements/services/bindingsService/IBindingService.d.ts +13 -13
  114. package/dist/elements/services/bindingsService/IBindingService.js +1 -1
  115. package/dist/elements/services/bindingsService/SpecialTagsBindingService.d.ts +16 -16
  116. package/dist/elements/services/bindingsService/SpecialTagsBindingService.js +45 -44
  117. package/dist/elements/services/bindingsService/VueBindingsService.js +7 -7
  118. package/dist/elements/services/contentService/ContentService.d.ts +9 -9
  119. package/dist/elements/services/contentService/ContentService.js +8 -8
  120. package/dist/elements/services/contentService/IContentChanged.d.ts +10 -10
  121. package/dist/elements/services/contentService/IContentChanged.js +1 -1
  122. package/dist/elements/services/contentService/IContentService.d.ts +7 -7
  123. package/dist/elements/services/contentService/IContentService.js +1 -1
  124. package/dist/elements/services/copyPasteService/CopyPasteService.d.ts +10 -10
  125. package/dist/elements/services/copyPasteService/CopyPasteService.js +33 -33
  126. package/dist/elements/services/copyPasteService/ICopyPasteService.d.ts +8 -8
  127. package/dist/elements/services/copyPasteService/ICopyPasteService.js +1 -1
  128. package/dist/elements/services/demoProviderService/DemoProviderService.d.ts +6 -6
  129. package/dist/elements/services/demoProviderService/DemoProviderService.js +29 -29
  130. package/dist/elements/services/demoProviderService/IDemoProviderService.d.ts +5 -5
  131. package/dist/elements/services/demoProviderService/IDemoProviderService.js +1 -1
  132. package/dist/elements/services/designItemDocumentPositionService/DesignItemDocumentPositionService.d.ts +10 -11
  133. package/dist/elements/services/designItemDocumentPositionService/DesignItemDocumentPositionService.js +10 -13
  134. package/dist/elements/services/designItemDocumentPositionService/IDesignItemDocumentPositionService.d.ts +6 -7
  135. package/dist/elements/services/designItemDocumentPositionService/IDesignItemDocumentPositionService.js +1 -1
  136. package/dist/elements/services/designerAddons/IDesignerAddonJson.d.ts +6 -6
  137. package/dist/elements/services/designerAddons/IDesignerAddonJson.js +1 -1
  138. package/dist/elements/services/dragDropService/DragDropService.d.ts +6 -6
  139. package/dist/elements/services/dragDropService/DragDropService.js +28 -28
  140. package/dist/elements/services/dragDropService/IDragDropService.d.ts +5 -5
  141. package/dist/elements/services/dragDropService/IDragDropService.js +1 -1
  142. package/dist/elements/services/elementAtPointService/ElementAtPointService.d.ts +6 -6
  143. package/dist/elements/services/elementAtPointService/ElementAtPointService.js +5 -5
  144. package/dist/elements/services/elementAtPointService/IElementAtPointService.d.ts +6 -6
  145. package/dist/elements/services/elementAtPointService/IElementAtPointService.js +1 -1
  146. package/dist/elements/services/elementInteractionService/IElementInteractionService.d.ts +5 -5
  147. package/dist/elements/services/elementInteractionService/IElementInteractionService.js +1 -1
  148. package/dist/elements/services/elementsService/IElementDefinition.d.ts +31 -31
  149. package/dist/elements/services/elementsService/IElementDefinition.js +1 -1
  150. package/dist/elements/services/elementsService/IElementsJson.d.ts +5 -5
  151. package/dist/elements/services/elementsService/IElementsJson.js +1 -1
  152. package/dist/elements/services/elementsService/IElementsService.d.ts +6 -6
  153. package/dist/elements/services/elementsService/IElementsService.js +1 -1
  154. package/dist/elements/services/elementsService/JsonFileElementsService.d.ts +12 -12
  155. package/dist/elements/services/elementsService/JsonFileElementsService.js +45 -45
  156. package/dist/elements/services/elementsService/PreDefinedElementsService.d.ts +11 -11
  157. package/dist/elements/services/elementsService/PreDefinedElementsService.js +21 -21
  158. package/dist/elements/services/elementsService/WebcomponentManifestElementsService.d.ts +13 -13
  159. package/dist/elements/services/elementsService/WebcomponentManifestElementsService.js +39 -39
  160. package/dist/elements/services/htmlParserService/AbstractClassElementParserService.d.ts +12 -12
  161. package/dist/elements/services/htmlParserService/AbstractClassElementParserService.js +106 -106
  162. package/dist/elements/services/htmlParserService/DefaultHtmlParserService.d.ts +9 -9
  163. package/dist/elements/services/htmlParserService/DefaultHtmlParserService.js +18 -18
  164. package/dist/elements/services/htmlParserService/IHtmlParserService.d.ts +7 -7
  165. package/dist/elements/services/htmlParserService/IHtmlParserService.js +1 -1
  166. package/dist/elements/services/htmlParserService/LitElementParserService.d.ts +12 -12
  167. package/dist/elements/services/htmlParserService/LitElementParserService.js +91 -91
  168. package/dist/elements/services/htmlParserService/NodeHtmlParserService.d.ts +11 -11
  169. package/dist/elements/services/htmlParserService/NodeHtmlParserService.js +87 -87
  170. package/dist/elements/services/htmlWriterService/AbstractHtmlWriterService.d.ts +9 -10
  171. package/dist/elements/services/htmlWriterService/AbstractHtmlWriterService.js +62 -62
  172. package/dist/elements/services/htmlWriterService/FormatingHtmlWriterService.d.ts +21 -22
  173. package/dist/elements/services/htmlWriterService/FormatingHtmlWriterService.js +133 -133
  174. package/dist/elements/services/htmlWriterService/HtmlWriterService.d.ts +12 -12
  175. package/dist/elements/services/htmlWriterService/HtmlWriterService.js +109 -109
  176. package/dist/elements/services/htmlWriterService/IHtmlWriterOptions.d.ts +7 -7
  177. package/dist/elements/services/htmlWriterService/IHtmlWriterOptions.js +7 -7
  178. package/dist/elements/services/htmlWriterService/IHtmlWriterService.d.ts +6 -6
  179. package/dist/elements/services/htmlWriterService/IHtmlWriterService.js +1 -1
  180. package/dist/elements/services/htmlWriterService/IStringPosition.d.ts +4 -4
  181. package/dist/elements/services/htmlWriterService/IStringPosition.js +1 -1
  182. package/dist/elements/services/htmlWriterService/LitTsElementWriterService.d.ts +8 -9
  183. package/dist/elements/services/htmlWriterService/LitTsElementWriterService.js +8 -7
  184. package/dist/elements/services/htmlWriterService/SimpleHtmlWriterService.d.ts +25 -27
  185. package/dist/elements/services/htmlWriterService/SimpleHtmlWriterService.js +89 -93
  186. package/dist/elements/services/initializationService/IIntializationService.d.ts +4 -4
  187. package/dist/elements/services/initializationService/IIntializationService.js +1 -1
  188. package/dist/elements/services/instanceService/DefaultInstanceService.d.ts +8 -8
  189. package/dist/elements/services/instanceService/DefaultInstanceService.js +71 -71
  190. package/dist/elements/services/instanceService/IDesignerInstance.d.ts +3 -3
  191. package/dist/elements/services/instanceService/IDesignerInstance.js +1 -1
  192. package/dist/elements/services/instanceService/IInstanceService.d.ts +8 -8
  193. package/dist/elements/services/instanceService/IInstanceService.js +1 -1
  194. package/dist/elements/services/manifestParsers/WebcomponentManifestParserService.d.ts +26 -26
  195. package/dist/elements/services/manifestParsers/WebcomponentManifestParserService.js +114 -114
  196. package/dist/elements/services/modelCommandService/DefaultModelCommandService.d.ts +7 -7
  197. package/dist/elements/services/modelCommandService/DefaultModelCommandService.js +128 -128
  198. package/dist/elements/services/modelCommandService/IModelCommandService.d.ts +7 -7
  199. package/dist/elements/services/modelCommandService/IModelCommandService.js +1 -1
  200. package/dist/elements/services/placementService/DefaultPlacementService.d.ts +18 -18
  201. package/dist/elements/services/placementService/DefaultPlacementService.js +134 -134
  202. package/dist/elements/services/placementService/FlexBoxPlacementService.d.ts +17 -17
  203. package/dist/elements/services/placementService/FlexBoxPlacementService.js +113 -113
  204. package/dist/elements/services/placementService/GridPlacementService.d.ts +17 -17
  205. package/dist/elements/services/placementService/GridPlacementService.js +108 -108
  206. package/dist/elements/services/placementService/IPlacementService.d.ts +17 -17
  207. package/dist/elements/services/placementService/IPlacementService.js +1 -1
  208. package/dist/elements/services/placementService/ISnaplinesProviderService.d.ts +12 -12
  209. package/dist/elements/services/placementService/ISnaplinesProviderService.js +1 -1
  210. package/dist/elements/services/placementService/SnaplinesProviderService.d.ts +14 -14
  211. package/dist/elements/services/placementService/SnaplinesProviderService.js +48 -48
  212. package/dist/elements/services/popupService/IPopupService.d.ts +16 -16
  213. package/dist/elements/services/popupService/IPopupService.js +1 -1
  214. package/dist/elements/services/popupService/PopupService.d.ts +9 -9
  215. package/dist/elements/services/popupService/PopupService.js +20 -20
  216. package/dist/elements/services/propertiesService/DefaultEditorTypesService.d.ts +6 -6
  217. package/dist/elements/services/propertiesService/DefaultEditorTypesService.js +64 -64
  218. package/dist/elements/services/propertiesService/IEditorTypesService.d.ts +5 -5
  219. package/dist/elements/services/propertiesService/IEditorTypesService.js +1 -1
  220. package/dist/elements/services/propertiesService/IPropertiesService.d.ts +25 -25
  221. package/dist/elements/services/propertiesService/IPropertiesService.js +6 -6
  222. package/dist/elements/services/propertiesService/IProperty.d.ts +22 -22
  223. package/dist/elements/services/propertiesService/IProperty.js +1 -1
  224. package/dist/elements/services/propertiesService/IPropertyEditor.d.ts +19 -19
  225. package/dist/elements/services/propertiesService/IPropertyEditor.js +1 -1
  226. package/dist/elements/services/propertiesService/IPropertyGroup.d.ts +6 -6
  227. package/dist/elements/services/propertiesService/IPropertyGroup.js +1 -1
  228. package/dist/elements/services/propertiesService/IPropertyTabsService.d.ts +8 -8
  229. package/dist/elements/services/propertiesService/IPropertyTabsService.js +1 -1
  230. package/dist/elements/services/propertiesService/PropertyTabsService.d.ts +17 -17
  231. package/dist/elements/services/propertiesService/PropertyTabsService.js +30 -30
  232. package/dist/elements/services/propertiesService/PropertyType.d.ts +8 -8
  233. package/dist/elements/services/propertiesService/PropertyType.js +9 -9
  234. package/dist/elements/services/propertiesService/ValueType.d.ts +6 -6
  235. package/dist/elements/services/propertiesService/ValueType.js +7 -7
  236. package/dist/elements/services/propertiesService/app.d.ts +2 -2
  237. package/dist/elements/services/propertiesService/app.js +71 -71
  238. package/dist/elements/services/propertiesService/propertyEditors/BasePropertyEditor.d.ts +15 -15
  239. package/dist/elements/services/propertiesService/propertyEditors/BasePropertyEditor.js +41 -41
  240. package/dist/elements/services/propertiesService/propertyEditors/BooleanPropertyEditor.d.ts +7 -7
  241. package/dist/elements/services/propertiesService/propertyEditors/BooleanPropertyEditor.js +13 -13
  242. package/dist/elements/services/propertiesService/propertyEditors/ColorPropertyEditor.d.ts +7 -7
  243. package/dist/elements/services/propertiesService/propertyEditors/ColorPropertyEditor.js +22 -22
  244. package/dist/elements/services/propertiesService/propertyEditors/DatePropertyEditor.d.ts +7 -7
  245. package/dist/elements/services/propertiesService/propertyEditors/DatePropertyEditor.js +16 -16
  246. package/dist/elements/services/propertiesService/propertyEditors/ImageButtonListPropertyEditor.d.ts +8 -8
  247. package/dist/elements/services/propertiesService/propertyEditors/ImageButtonListPropertyEditor.js +40 -40
  248. package/dist/elements/services/propertiesService/propertyEditors/JsonPropertyEditor.d.ts +9 -9
  249. package/dist/elements/services/propertiesService/propertyEditors/JsonPropertyEditor.js +17 -16
  250. package/dist/elements/services/propertiesService/propertyEditors/JsonPropertyPopupEditor.d.ts +5 -5
  251. package/dist/elements/services/propertiesService/propertyEditors/JsonPropertyPopupEditor.js +9 -8
  252. package/dist/elements/services/propertiesService/propertyEditors/MetricsPropertyEditor.d.ts +8 -8
  253. package/dist/elements/services/propertiesService/propertyEditors/MetricsPropertyEditor.js +14 -14
  254. package/dist/elements/services/propertiesService/propertyEditors/NumberPropertyEditor.d.ts +7 -7
  255. package/dist/elements/services/propertiesService/propertyEditors/NumberPropertyEditor.js +16 -16
  256. package/dist/elements/services/propertiesService/propertyEditors/SelectPropertyEditor.d.ts +7 -7
  257. package/dist/elements/services/propertiesService/propertyEditors/SelectPropertyEditor.js +28 -28
  258. package/dist/elements/services/propertiesService/propertyEditors/TextPropertyEditor.d.ts +7 -7
  259. package/dist/elements/services/propertiesService/propertyEditors/TextPropertyEditor.js +20 -20
  260. package/dist/elements/services/propertiesService/propertyEditors/ThicknessPropertyEditor.d.ts +8 -8
  261. package/dist/elements/services/propertiesService/propertyEditors/ThicknessPropertyEditor.js +14 -14
  262. package/dist/elements/services/propertiesService/services/AbstractPolymerLikePropertiesService.d.ts +9 -9
  263. package/dist/elements/services/propertiesService/services/AbstractPolymerLikePropertiesService.js +48 -48
  264. package/dist/elements/services/propertiesService/services/AbstractPropertiesService.d.ts +21 -21
  265. package/dist/elements/services/propertiesService/services/AbstractPropertiesService.js +175 -175
  266. package/dist/elements/services/propertiesService/services/AttributesPropertiesService.d.ts +20 -20
  267. package/dist/elements/services/propertiesService/services/AttributesPropertiesService.js +91 -91
  268. package/dist/elements/services/propertiesService/services/BaseCustomWebComponentPropertiesService.d.ts +8 -8
  269. package/dist/elements/services/propertiesService/services/BaseCustomWebComponentPropertiesService.js +14 -14
  270. package/dist/elements/services/propertiesService/services/CommonPropertiesService.d.ts +13 -13
  271. package/dist/elements/services/propertiesService/services/CommonPropertiesService.js +44 -44
  272. package/dist/elements/services/propertiesService/services/CssCurrentPropertiesService.d.ts +34 -34
  273. package/dist/elements/services/propertiesService/services/CssCurrentPropertiesService.js +103 -103
  274. package/dist/elements/services/propertiesService/services/CssProperties.json +541 -541
  275. package/dist/elements/services/propertiesService/services/CssPropertiesService.d.ts +17 -17
  276. package/dist/elements/services/propertiesService/services/CssPropertiesService.js +86 -86
  277. package/dist/elements/services/propertiesService/services/IJsonPropertyDefinition.d.ts +17 -17
  278. package/dist/elements/services/propertiesService/services/IJsonPropertyDefinition.js +1 -1
  279. package/dist/elements/services/propertiesService/services/IJsonPropertyDefinitions.d.ts +4 -4
  280. package/dist/elements/services/propertiesService/services/IJsonPropertyDefinitions.js +1 -1
  281. package/dist/elements/services/propertiesService/services/ListPropertiesService.d.ts +14 -14
  282. package/dist/elements/services/propertiesService/services/ListPropertiesService.js +45 -45
  283. package/dist/elements/services/propertiesService/services/Lit2PropertiesService.d.ts +9 -9
  284. package/dist/elements/services/propertiesService/services/Lit2PropertiesService.js +51 -51
  285. package/dist/elements/services/propertiesService/services/LitElementPropertiesService.d.ts +8 -8
  286. package/dist/elements/services/propertiesService/services/LitElementPropertiesService.js +17 -17
  287. package/dist/elements/services/propertiesService/services/NativeElementsPropertiesService.d.ts +20 -20
  288. package/dist/elements/services/propertiesService/services/NativeElementsPropertiesService.js +211 -211
  289. package/dist/elements/services/propertiesService/services/PolymerPropertiesService.d.ts +8 -8
  290. package/dist/elements/services/propertiesService/services/PolymerPropertiesService.js +10 -10
  291. package/dist/elements/services/propertiesService/services/PropertiesHelper.d.ts +6 -6
  292. package/dist/elements/services/propertiesService/services/PropertiesHelper.js +27 -27
  293. package/dist/elements/services/propertiesService/services/SVGElementsPropertiesService.d.ts +15 -15
  294. package/dist/elements/services/propertiesService/services/SVGElementsPropertiesService.js +259 -259
  295. package/dist/elements/services/propertiesService/services/WebcomponentManifestPropertiesService.d.ts +18 -18
  296. package/dist/elements/services/propertiesService/services/WebcomponentManifestPropertiesService.js +77 -77
  297. package/dist/elements/services/selectionService/ISelectionChangedEvent.d.ts +5 -5
  298. package/dist/elements/services/selectionService/ISelectionChangedEvent.js +1 -1
  299. package/dist/elements/services/selectionService/ISelectionService.d.ts +11 -11
  300. package/dist/elements/services/selectionService/ISelectionService.js +1 -1
  301. package/dist/elements/services/selectionService/SelectionService.d.ts +17 -17
  302. package/dist/elements/services/selectionService/SelectionService.js +50 -50
  303. package/dist/elements/services/stylesheetService/AbstractStylesheetService.d.ts +46 -46
  304. package/dist/elements/services/stylesheetService/AbstractStylesheetService.js +136 -136
  305. package/dist/elements/services/stylesheetService/CssToolsStylesheetService.d.ts +40 -40
  306. package/dist/elements/services/stylesheetService/CssToolsStylesheetService.js +99 -99
  307. package/dist/elements/services/stylesheetService/CssTreeStylesheetService.d.ts +56 -56
  308. package/dist/elements/services/stylesheetService/CssTreeStylesheetService.js +198 -198
  309. package/dist/elements/services/stylesheetService/IStylesheetService.d.ts +41 -41
  310. package/dist/elements/services/stylesheetService/IStylesheetService.js +1 -1
  311. package/dist/elements/services/stylesheetService/SpecificityCalculator.d.ts +7 -7
  312. package/dist/elements/services/stylesheetService/SpecificityCalculator.js +178 -178
  313. package/dist/elements/services/treeStructureService/ITreeStructureChangedEvent.d.ts +8 -8
  314. package/dist/elements/services/treeStructureService/ITreeStructureChangedEvent.js +1 -1
  315. package/dist/elements/services/treeStructureService/ITreeStructureService.d.ts +2 -2
  316. package/dist/elements/services/treeStructureService/ITreeStructureService.js +2 -2
  317. package/dist/elements/services/undoService/ChangeGroup.d.ts +18 -18
  318. package/dist/elements/services/undoService/ChangeGroup.js +67 -67
  319. package/dist/elements/services/undoService/ITransactionItem.d.ts +8 -8
  320. package/dist/elements/services/undoService/ITransactionItem.js +2 -2
  321. package/dist/elements/services/undoService/IUndoService.d.ts +14 -14
  322. package/dist/elements/services/undoService/IUndoService.js +1 -1
  323. package/dist/elements/services/undoService/UndoService.d.ts +22 -22
  324. package/dist/elements/services/undoService/UndoService.js +113 -107
  325. package/dist/elements/services/undoService/transactionItems/AttributeChangeAction.d.ts +15 -15
  326. package/dist/elements/services/undoService/transactionItems/AttributeChangeAction.js +70 -70
  327. package/dist/elements/services/undoService/transactionItems/CssStyleChangeAction.d.ts +14 -14
  328. package/dist/elements/services/undoService/transactionItems/CssStyleChangeAction.js +40 -40
  329. package/dist/elements/services/undoService/transactionItems/DeleteAction.d.ts +13 -13
  330. package/dist/elements/services/undoService/transactionItems/DeleteAction.js +35 -35
  331. package/dist/elements/services/undoService/transactionItems/InsertAction.d.ts +13 -13
  332. package/dist/elements/services/undoService/transactionItems/InsertAction.js +26 -26
  333. package/dist/elements/services/undoService/transactionItems/InsertChildAction.d.ts +16 -16
  334. package/dist/elements/services/undoService/transactionItems/InsertChildAction.js +40 -40
  335. package/dist/elements/services/undoService/transactionItems/SelectionChangedAction.d.ts +14 -14
  336. package/dist/elements/services/undoService/transactionItems/SelectionChangedAction.js +28 -28
  337. package/dist/elements/services/undoService/transactionItems/SetDesignItemsAction.d.ts +12 -12
  338. package/dist/elements/services/undoService/transactionItems/SetDesignItemsAction.js +22 -22
  339. package/dist/elements/services/undoService/transactionItems/StylesheetChangedAction.d.ts +14 -14
  340. package/dist/elements/services/undoService/transactionItems/StylesheetChangedAction.js +24 -24
  341. package/dist/elements/services/undoService/transactionItems/StylesheetStyleChangeAction.d.ts +17 -17
  342. package/dist/elements/services/undoService/transactionItems/StylesheetStyleChangeAction.js +28 -28
  343. package/dist/elements/widgets/bindableObjectsBrowser/IBindableObjectsBrowser.d.ts +3 -3
  344. package/dist/elements/widgets/bindableObjectsBrowser/IBindableObjectsBrowser.js +1 -1
  345. package/dist/elements/widgets/bindableObjectsBrowser/bindable-objects-browser.d.ts +10 -10
  346. package/dist/elements/widgets/bindableObjectsBrowser/bindable-objects-browser.js +85 -84
  347. package/dist/elements/widgets/bindings/BindingsEditor.d.ts +17 -17
  348. package/dist/elements/widgets/bindings/BindingsEditor.js +23 -22
  349. package/dist/elements/widgets/codeView/ICodeView.d.ts +11 -11
  350. package/dist/elements/widgets/codeView/ICodeView.js +1 -1
  351. package/dist/elements/widgets/codeView/code-view-ace.d.ts +24 -24
  352. package/dist/elements/widgets/codeView/code-view-ace.js +128 -127
  353. package/dist/elements/widgets/codeView/code-view-code-mirror.d.ts +24 -24
  354. package/dist/elements/widgets/codeView/code-view-code-mirror.js +97 -96
  355. package/dist/elements/widgets/codeView/code-view-monaco.d.ts +27 -27
  356. package/dist/elements/widgets/codeView/code-view-monaco.js +162 -160
  357. package/dist/elements/widgets/codeView/code-view-simple.d.ts +23 -23
  358. package/dist/elements/widgets/codeView/code-view-simple.js +38 -37
  359. package/dist/elements/widgets/demoView/IDemoView.d.ts +7 -7
  360. package/dist/elements/widgets/demoView/IDemoView.js +1 -1
  361. package/dist/elements/widgets/demoView/demoView.d.ts +17 -17
  362. package/dist/elements/widgets/demoView/demoView.js +27 -26
  363. package/dist/elements/widgets/designerView/DesignContext.d.ts +7 -7
  364. package/dist/elements/widgets/designerView/DesignContext.js +4 -4
  365. package/dist/elements/widgets/designerView/DomConverter.d.ts +7 -7
  366. package/dist/elements/widgets/designerView/DomConverter.js +42 -42
  367. package/dist/elements/widgets/designerView/IDesignContext.d.ts +6 -6
  368. package/dist/elements/widgets/designerView/IDesignContext.js +1 -1
  369. package/dist/elements/widgets/designerView/IDesignerCanvas.d.ts +59 -59
  370. package/dist/elements/widgets/designerView/IDesignerCanvas.js +1 -1
  371. package/dist/elements/widgets/designerView/IPlacementView.d.ts +13 -13
  372. package/dist/elements/widgets/designerView/IPlacementView.js +1 -1
  373. package/dist/elements/widgets/designerView/Snaplines.d.ts +21 -21
  374. package/dist/elements/widgets/designerView/Snaplines.js +220 -220
  375. package/dist/elements/widgets/designerView/defaultConfiguredDesignerView.d.ts +5 -5
  376. package/dist/elements/widgets/designerView/defaultConfiguredDesignerView.js +11 -11
  377. package/dist/elements/widgets/designerView/designerCanvas.d.ts +132 -132
  378. package/dist/elements/widgets/designerView/designerCanvas.js +967 -966
  379. package/dist/elements/widgets/designerView/designerView.d.ts +39 -39
  380. package/dist/elements/widgets/designerView/designerView.js +218 -216
  381. package/dist/elements/widgets/designerView/extensions/AbstractExtension.d.ts +12 -12
  382. package/dist/elements/widgets/designerView/extensions/AbstractExtension.js +8 -8
  383. package/dist/elements/widgets/designerView/extensions/AbstractExtensionBase.d.ts +19 -19
  384. package/dist/elements/widgets/designerView/extensions/AbstractExtensionBase.js +65 -65
  385. package/dist/elements/widgets/designerView/extensions/AltToEnterContainerExtension.d.ts +11 -11
  386. package/dist/elements/widgets/designerView/extensions/AltToEnterContainerExtension.js +21 -21
  387. package/dist/elements/widgets/designerView/extensions/AltToEnterContainerExtensionProvider.d.ts +10 -10
  388. package/dist/elements/widgets/designerView/extensions/AltToEnterContainerExtensionProvider.js +11 -11
  389. package/dist/elements/widgets/designerView/extensions/CanvasExtension.d.ts +10 -10
  390. package/dist/elements/widgets/designerView/extensions/CanvasExtension.js +27 -27
  391. package/dist/elements/widgets/designerView/extensions/CanvasExtensionProvider.d.ts +10 -10
  392. package/dist/elements/widgets/designerView/extensions/CanvasExtensionProvider.js +13 -13
  393. package/dist/elements/widgets/designerView/extensions/EditText/EditTextExtension.d.ts +24 -24
  394. package/dist/elements/widgets/designerView/extensions/EditText/EditTextExtension.js +90 -89
  395. package/dist/elements/widgets/designerView/extensions/EditText/EditTextExtensionProvider.d.ts +9 -9
  396. package/dist/elements/widgets/designerView/extensions/EditText/EditTextExtensionProvider.js +11 -11
  397. package/dist/elements/widgets/designerView/extensions/EditText/EditTextWithStyloExtension.d.ts +23 -23
  398. package/dist/elements/widgets/designerView/extensions/EditText/EditTextWithStyloExtension.js +87 -86
  399. package/dist/elements/widgets/designerView/extensions/EditText/EditTextWithStyloExtensionProvider.d.ts +10 -10
  400. package/dist/elements/widgets/designerView/extensions/EditText/EditTextWithStyloExtensionProvider.js +13 -13
  401. package/dist/elements/widgets/designerView/extensions/ElementDragTitleExtension.d.ts +15 -15
  402. package/dist/elements/widgets/designerView/extensions/ElementDragTitleExtension.js +60 -60
  403. package/dist/elements/widgets/designerView/extensions/ElementDragTitleExtensionProvider.d.ts +10 -10
  404. package/dist/elements/widgets/designerView/extensions/ElementDragTitleExtensionProvider.js +11 -11
  405. package/dist/elements/widgets/designerView/extensions/ExtensionManager.d.ts +22 -22
  406. package/dist/elements/widgets/designerView/extensions/ExtensionManager.js +305 -305
  407. package/dist/elements/widgets/designerView/extensions/ExtensionType.d.ts +23 -23
  408. package/dist/elements/widgets/designerView/extensions/ExtensionType.js +24 -24
  409. package/dist/elements/widgets/designerView/extensions/FlexboxExtension.d.ts +11 -11
  410. package/dist/elements/widgets/designerView/extensions/FlexboxExtension.js +20 -20
  411. package/dist/elements/widgets/designerView/extensions/FlexboxExtensionProvider.d.ts +11 -11
  412. package/dist/elements/widgets/designerView/extensions/FlexboxExtensionProvider.js +15 -15
  413. package/dist/elements/widgets/designerView/extensions/GrayOutDragOverContainerExtension.d.ts +11 -11
  414. package/dist/elements/widgets/designerView/extensions/GrayOutDragOverContainerExtension.js +19 -19
  415. package/dist/elements/widgets/designerView/extensions/GrayOutDragOverContainerExtensionProvider.d.ts +10 -10
  416. package/dist/elements/widgets/designerView/extensions/GrayOutDragOverContainerExtensionProvider.js +11 -11
  417. package/dist/elements/widgets/designerView/extensions/GrayOutExtension.d.ts +13 -13
  418. package/dist/elements/widgets/designerView/extensions/GrayOutExtension.js +33 -33
  419. package/dist/elements/widgets/designerView/extensions/GrayOutExtensionProvider.d.ts +10 -10
  420. package/dist/elements/widgets/designerView/extensions/GrayOutExtensionProvider.js +11 -11
  421. package/dist/elements/widgets/designerView/extensions/HighlightElementExtension.d.ts +11 -11
  422. package/dist/elements/widgets/designerView/extensions/HighlightElementExtension.js +20 -20
  423. package/dist/elements/widgets/designerView/extensions/HighlightElementExtensionProvider.d.ts +10 -10
  424. package/dist/elements/widgets/designerView/extensions/HighlightElementExtensionProvider.js +11 -11
  425. package/dist/elements/widgets/designerView/extensions/IDesignerExtension.d.ts +5 -5
  426. package/dist/elements/widgets/designerView/extensions/IDesignerExtension.js +1 -1
  427. package/dist/elements/widgets/designerView/extensions/IDesignerExtensionProvider.d.ts +9 -9
  428. package/dist/elements/widgets/designerView/extensions/IDesignerExtensionProvider.js +1 -1
  429. package/dist/elements/widgets/designerView/extensions/IExtensionManger.d.ts +14 -14
  430. package/dist/elements/widgets/designerView/extensions/IExtensionManger.js +1 -1
  431. package/dist/elements/widgets/designerView/extensions/InvisibleElementExtension.d.ts +11 -11
  432. package/dist/elements/widgets/designerView/extensions/InvisibleElementExtension.js +19 -19
  433. package/dist/elements/widgets/designerView/extensions/InvisibleElementExtensionProvider.d.ts +13 -13
  434. package/dist/elements/widgets/designerView/extensions/InvisibleElementExtensionProvider.js +22 -22
  435. package/dist/elements/widgets/designerView/extensions/OverlayLayer.d.ts +5 -5
  436. package/dist/elements/widgets/designerView/extensions/OverlayLayer.js +6 -6
  437. package/dist/elements/widgets/designerView/extensions/PlacementExtension.d.ts +11 -11
  438. package/dist/elements/widgets/designerView/extensions/PlacementExtension.js +22 -22
  439. package/dist/elements/widgets/designerView/extensions/PlacementExtensionProvider.d.ts +10 -10
  440. package/dist/elements/widgets/designerView/extensions/PlacementExtensionProvider.js +11 -11
  441. package/dist/elements/widgets/designerView/extensions/PositionExtension.d.ts +16 -16
  442. package/dist/elements/widgets/designerView/extensions/PositionExtension.js +42 -42
  443. package/dist/elements/widgets/designerView/extensions/PositionExtensionProvider.d.ts +10 -10
  444. package/dist/elements/widgets/designerView/extensions/PositionExtensionProvider.js +14 -14
  445. package/dist/elements/widgets/designerView/extensions/ResizeExtension.d.ts +27 -27
  446. package/dist/elements/widgets/designerView/extensions/ResizeExtension.js +335 -335
  447. package/dist/elements/widgets/designerView/extensions/ResizeExtensionProvider.d.ts +12 -12
  448. package/dist/elements/widgets/designerView/extensions/ResizeExtensionProvider.js +18 -18
  449. package/dist/elements/widgets/designerView/extensions/RotateExtension.d.ts +18 -18
  450. package/dist/elements/widgets/designerView/extensions/RotateExtension.js +108 -108
  451. package/dist/elements/widgets/designerView/extensions/RotateExtensionProvider.d.ts +10 -10
  452. package/dist/elements/widgets/designerView/extensions/RotateExtensionProvider.js +14 -14
  453. package/dist/elements/widgets/designerView/extensions/SelectionDefaultExtension.d.ts +14 -14
  454. package/dist/elements/widgets/designerView/extensions/SelectionDefaultExtension.js +35 -35
  455. package/dist/elements/widgets/designerView/extensions/SelectionDefaultExtensionProvider.d.ts +10 -10
  456. package/dist/elements/widgets/designerView/extensions/SelectionDefaultExtensionProvider.js +11 -11
  457. package/dist/elements/widgets/designerView/extensions/TransformOriginExtension.d.ts +15 -15
  458. package/dist/elements/widgets/designerView/extensions/TransformOriginExtension.js +94 -94
  459. package/dist/elements/widgets/designerView/extensions/TransformOriginExtensionProvider.d.ts +12 -12
  460. package/dist/elements/widgets/designerView/extensions/TransformOriginExtensionProvider.js +26 -26
  461. package/dist/elements/widgets/designerView/extensions/buttons/AbstractDesignViewConfigButton.d.ts +12 -12
  462. package/dist/elements/widgets/designerView/extensions/buttons/AbstractDesignViewConfigButton.js +40 -40
  463. package/dist/elements/widgets/designerView/extensions/buttons/ButtonSeperatorProvider.d.ts +8 -8
  464. package/dist/elements/widgets/designerView/extensions/buttons/ButtonSeperatorProvider.js +12 -12
  465. package/dist/elements/widgets/designerView/extensions/buttons/FlexboxExtensionDesignViewConfigButtons.d.ts +4 -4
  466. package/dist/elements/widgets/designerView/extensions/buttons/FlexboxExtensionDesignViewConfigButtons.js +7 -7
  467. package/dist/elements/widgets/designerView/extensions/buttons/GridExtensionDesignViewConfigButtons.d.ts +4 -4
  468. package/dist/elements/widgets/designerView/extensions/buttons/GridExtensionDesignViewConfigButtons.js +7 -7
  469. package/dist/elements/widgets/designerView/extensions/buttons/IDesignViewConfigButtonsProvider.d.ts +5 -5
  470. package/dist/elements/widgets/designerView/extensions/buttons/IDesignViewConfigButtonsProvider.js +1 -1
  471. package/dist/elements/widgets/designerView/extensions/buttons/InvisibleElementExtensionDesignViewConfigButtons.d.ts +4 -4
  472. package/dist/elements/widgets/designerView/extensions/buttons/InvisibleElementExtensionDesignViewConfigButtons.js +7 -7
  473. package/dist/elements/widgets/designerView/extensions/buttons/StylesheetServiceDesignViewConfigButtons.d.ts +5 -5
  474. package/dist/elements/widgets/designerView/extensions/buttons/StylesheetServiceDesignViewConfigButtons.js +7 -7
  475. package/dist/elements/widgets/designerView/extensions/contextMenu/CopyPasteContextMenu.d.ts +8 -8
  476. package/dist/elements/widgets/designerView/extensions/contextMenu/CopyPasteContextMenu.js +14 -14
  477. package/dist/elements/widgets/designerView/extensions/contextMenu/IContextMenuExtension.d.ts +8 -8
  478. package/dist/elements/widgets/designerView/extensions/contextMenu/IContextMenuExtension.js +1 -1
  479. package/dist/elements/widgets/designerView/extensions/contextMenu/ItemsBelowContextMenu.d.ts +9 -9
  480. package/dist/elements/widgets/designerView/extensions/contextMenu/ItemsBelowContextMenu.js +17 -17
  481. package/dist/elements/widgets/designerView/extensions/contextMenu/JumpToElementContextMenu.d.ts +8 -8
  482. package/dist/elements/widgets/designerView/extensions/contextMenu/JumpToElementContextMenu.js +15 -15
  483. package/dist/elements/widgets/designerView/extensions/contextMenu/MultipleItemsSelectedContextMenu.d.ts +9 -9
  484. package/dist/elements/widgets/designerView/extensions/contextMenu/MultipleItemsSelectedContextMenu.js +33 -33
  485. package/dist/elements/widgets/designerView/extensions/contextMenu/PathContextMenu.d.ts +8 -8
  486. package/dist/elements/widgets/designerView/extensions/contextMenu/PathContextMenu.js +31 -31
  487. package/dist/elements/widgets/designerView/extensions/contextMenu/RectContextMenu.d.ts +8 -8
  488. package/dist/elements/widgets/designerView/extensions/contextMenu/RectContextMenu.js +33 -33
  489. package/dist/elements/widgets/designerView/extensions/contextMenu/RotateLeftAndRightContextMenu.d.ts +8 -8
  490. package/dist/elements/widgets/designerView/extensions/contextMenu/RotateLeftAndRightContextMenu.js +13 -13
  491. package/dist/elements/widgets/designerView/extensions/contextMenu/SelectAllChildrenContextMenu.d.ts +8 -8
  492. package/dist/elements/widgets/designerView/extensions/contextMenu/SelectAllChildrenContextMenu.js +13 -13
  493. package/dist/elements/widgets/designerView/extensions/contextMenu/SeperatorContextMenu.d.ts +8 -8
  494. package/dist/elements/widgets/designerView/extensions/contextMenu/SeperatorContextMenu.js +10 -10
  495. package/dist/elements/widgets/designerView/extensions/contextMenu/ZMoveContextMenu.d.ts +8 -8
  496. package/dist/elements/widgets/designerView/extensions/contextMenu/ZMoveContextMenu.js +15 -15
  497. package/dist/elements/widgets/designerView/extensions/contextMenu/ZoomToElementContextMenu.d.ts +8 -8
  498. package/dist/elements/widgets/designerView/extensions/contextMenu/ZoomToElementContextMenu.js +27 -27
  499. package/dist/elements/widgets/designerView/extensions/grid/DisplayGridExtension.d.ts +15 -15
  500. package/dist/elements/widgets/designerView/extensions/grid/DisplayGridExtension.js +56 -56
  501. package/dist/elements/widgets/designerView/extensions/grid/DisplayGridExtensionProvider.d.ts +11 -11
  502. package/dist/elements/widgets/designerView/extensions/grid/DisplayGridExtensionProvider.js +15 -15
  503. package/dist/elements/widgets/designerView/extensions/grid/EditGridColumnRowSizesExtension.d.ts +17 -17
  504. package/dist/elements/widgets/designerView/extensions/grid/EditGridColumnRowSizesExtension.js +111 -111
  505. package/dist/elements/widgets/designerView/extensions/grid/EditGridColumnRowSizesExtensionProvider.d.ts +10 -10
  506. package/dist/elements/widgets/designerView/extensions/grid/EditGridColumnRowSizesExtensionProvider.js +15 -15
  507. package/dist/elements/widgets/designerView/extensions/logic/ApplyFirstMachingExtensionProvider.d.ts +13 -13
  508. package/dist/elements/widgets/designerView/extensions/logic/ApplyFirstMachingExtensionProvider.js +28 -28
  509. package/dist/elements/widgets/designerView/extensions/pointerExtensions/AbstractDesignerPointerExtension.d.ts +11 -11
  510. package/dist/elements/widgets/designerView/extensions/pointerExtensions/AbstractDesignerPointerExtension.js +11 -11
  511. package/dist/elements/widgets/designerView/extensions/pointerExtensions/CursorLinePointerExtension.d.ts +13 -13
  512. package/dist/elements/widgets/designerView/extensions/pointerExtensions/CursorLinePointerExtension.js +24 -24
  513. package/dist/elements/widgets/designerView/extensions/pointerExtensions/CursorLinePointerExtensionProvider.d.ts +7 -7
  514. package/dist/elements/widgets/designerView/extensions/pointerExtensions/CursorLinePointerExtensionProvider.js +8 -8
  515. package/dist/elements/widgets/designerView/extensions/pointerExtensions/IDesignerPointerExtension.d.ts +5 -5
  516. package/dist/elements/widgets/designerView/extensions/pointerExtensions/IDesignerPointerExtension.js +1 -1
  517. package/dist/elements/widgets/designerView/extensions/pointerExtensions/IDesignerPointerExtensionProvider.d.ts +6 -6
  518. package/dist/elements/widgets/designerView/extensions/pointerExtensions/IDesignerPointerExtensionProvider.js +1 -1
  519. package/dist/elements/widgets/designerView/extensions/svg/EllipsisExtension.d.ts +41 -41
  520. package/dist/elements/widgets/designerView/extensions/svg/EllipsisExtension.js +174 -174
  521. package/dist/elements/widgets/designerView/extensions/svg/EllipsisExtensionProvider.d.ts +9 -9
  522. package/dist/elements/widgets/designerView/extensions/svg/EllipsisExtensionProvider.js +13 -13
  523. package/dist/elements/widgets/designerView/extensions/svg/LineExtension.d.ts +32 -32
  524. package/dist/elements/widgets/designerView/extensions/svg/LineExtension.js +147 -147
  525. package/dist/elements/widgets/designerView/extensions/svg/LineExtensionProvider.d.ts +9 -9
  526. package/dist/elements/widgets/designerView/extensions/svg/LineExtensionProvider.js +14 -14
  527. package/dist/elements/widgets/designerView/extensions/svg/PathExtension.d.ts +29 -29
  528. package/dist/elements/widgets/designerView/extensions/svg/PathExtension.js +320 -320
  529. package/dist/elements/widgets/designerView/extensions/svg/PathExtensionProvider.d.ts +9 -9
  530. package/dist/elements/widgets/designerView/extensions/svg/PathExtensionProvider.js +14 -14
  531. package/dist/elements/widgets/designerView/extensions/svg/RectExtension.d.ts +46 -46
  532. package/dist/elements/widgets/designerView/extensions/svg/RectExtension.js +199 -199
  533. package/dist/elements/widgets/designerView/extensions/svg/RectExtensionProvider.d.ts +9 -9
  534. package/dist/elements/widgets/designerView/extensions/svg/RectExtensionProvider.js +14 -14
  535. package/dist/elements/widgets/designerView/overlay/EditTextOverlay.d.ts +5 -5
  536. package/dist/elements/widgets/designerView/overlay/EditTextOverlay.js +6 -5
  537. package/dist/elements/widgets/designerView/overlayLayerView.d.ts +29 -29
  538. package/dist/elements/widgets/designerView/overlayLayerView.js +181 -180
  539. package/dist/elements/widgets/designerView/tools/DrawElementTool.d.ts +19 -19
  540. package/dist/elements/widgets/designerView/tools/DrawElementTool.js +79 -79
  541. package/dist/elements/widgets/designerView/tools/DrawEllipsisTool.d.ts +16 -16
  542. package/dist/elements/widgets/designerView/tools/DrawEllipsisTool.js +94 -94
  543. package/dist/elements/widgets/designerView/tools/DrawLineTool.d.ts +14 -14
  544. package/dist/elements/widgets/designerView/tools/DrawLineTool.js +79 -79
  545. package/dist/elements/widgets/designerView/tools/DrawPathTool.d.ts +20 -20
  546. package/dist/elements/widgets/designerView/tools/DrawPathTool.js +128 -128
  547. package/dist/elements/widgets/designerView/tools/DrawRectTool.d.ts +19 -19
  548. package/dist/elements/widgets/designerView/tools/DrawRectTool.js +109 -109
  549. package/dist/elements/widgets/designerView/tools/ITool.d.ts +9 -9
  550. package/dist/elements/widgets/designerView/tools/ITool.js +1 -1
  551. package/dist/elements/widgets/designerView/tools/MagicWandSelectorTool.d.ts +12 -12
  552. package/dist/elements/widgets/designerView/tools/MagicWandSelectorTool.js +66 -66
  553. package/dist/elements/widgets/designerView/tools/NamedTools.d.ts +15 -15
  554. package/dist/elements/widgets/designerView/tools/NamedTools.js +16 -16
  555. package/dist/elements/widgets/designerView/tools/PanTool.d.ts +10 -10
  556. package/dist/elements/widgets/designerView/tools/PanTool.js +26 -26
  557. package/dist/elements/widgets/designerView/tools/PickColorTool.d.ts +10 -10
  558. package/dist/elements/widgets/designerView/tools/PickColorTool.js +20 -20
  559. package/dist/elements/widgets/designerView/tools/PointerTool.d.ts +36 -36
  560. package/dist/elements/widgets/designerView/tools/PointerTool.js +397 -397
  561. package/dist/elements/widgets/designerView/tools/RectangleSelectorTool.d.ts +12 -12
  562. package/dist/elements/widgets/designerView/tools/RectangleSelectorTool.js +86 -86
  563. package/dist/elements/widgets/designerView/tools/TextTool.d.ts +14 -14
  564. package/dist/elements/widgets/designerView/tools/TextTool.js +51 -51
  565. package/dist/elements/widgets/designerView/tools/ZoomTool.d.ts +17 -17
  566. package/dist/elements/widgets/designerView/tools/ZoomTool.js +82 -82
  567. package/dist/elements/widgets/designerView/tools/toolBar/DesignerToolbar.d.ts +19 -19
  568. package/dist/elements/widgets/designerView/tools/toolBar/DesignerToolbar.js +74 -73
  569. package/dist/elements/widgets/designerView/tools/toolBar/DesignerToolbarButton.d.ts +19 -19
  570. package/dist/elements/widgets/designerView/tools/toolBar/DesignerToolbarButton.js +45 -44
  571. package/dist/elements/widgets/designerView/tools/toolBar/IDesignViewToolbarButtonProvider.d.ts +4 -4
  572. package/dist/elements/widgets/designerView/tools/toolBar/IDesignViewToolbarButtonProvider.js +1 -1
  573. package/dist/elements/widgets/designerView/tools/toolBar/buttons/DrawToolButtonProvider.d.ts +5 -5
  574. package/dist/elements/widgets/designerView/tools/toolBar/buttons/DrawToolButtonProvider.js +16 -16
  575. package/dist/elements/widgets/designerView/tools/toolBar/buttons/PointerToolButtonProvider.d.ts +5 -5
  576. package/dist/elements/widgets/designerView/tools/toolBar/buttons/PointerToolButtonProvider.js +7 -7
  577. package/dist/elements/widgets/designerView/tools/toolBar/buttons/SelectorToolButtonProvider.d.ts +5 -5
  578. package/dist/elements/widgets/designerView/tools/toolBar/buttons/SelectorToolButtonProvider.js +10 -10
  579. package/dist/elements/widgets/designerView/tools/toolBar/buttons/SeperatorToolProvider.d.ts +7 -7
  580. package/dist/elements/widgets/designerView/tools/toolBar/buttons/SeperatorToolProvider.js +11 -11
  581. package/dist/elements/widgets/designerView/tools/toolBar/buttons/TextToolButtonProvider.d.ts +5 -5
  582. package/dist/elements/widgets/designerView/tools/toolBar/buttons/TextToolButtonProvider.js +7 -7
  583. package/dist/elements/widgets/designerView/tools/toolBar/buttons/ZoomToolButtonProvider.d.ts +5 -5
  584. package/dist/elements/widgets/designerView/tools/toolBar/buttons/ZoomToolButtonProvider.js +7 -7
  585. package/dist/elements/widgets/designerView/tools/toolBar/popups/DrawToolPopup.d.ts +6 -6
  586. package/dist/elements/widgets/designerView/tools/toolBar/popups/DrawToolPopup.js +27 -26
  587. package/dist/elements/widgets/miniatureView/IMiniatureView.d.ts +2 -2
  588. package/dist/elements/widgets/miniatureView/IMiniatureView.js +1 -1
  589. package/dist/elements/widgets/miniatureView/html-2-canvas-miniature-view.d.ts +10 -10
  590. package/dist/elements/widgets/miniatureView/html-2-canvas-miniature-view.js +20 -19
  591. package/dist/elements/widgets/paletteView/paletteElements.d.ts +10 -10
  592. package/dist/elements/widgets/paletteView/paletteElements.js +73 -72
  593. package/dist/elements/widgets/paletteView/paletteTreeView.d.ts +12 -12
  594. package/dist/elements/widgets/paletteView/paletteTreeView.js +91 -90
  595. package/dist/elements/widgets/paletteView/paletteView.d.ts +11 -11
  596. package/dist/elements/widgets/paletteView/paletteView.js +33 -32
  597. package/dist/elements/widgets/propertyGrid/PropertyGrid.d.ts +22 -22
  598. package/dist/elements/widgets/propertyGrid/PropertyGrid.js +100 -99
  599. package/dist/elements/widgets/propertyGrid/PropertyGridPropertyList.d.ts +22 -22
  600. package/dist/elements/widgets/propertyGrid/PropertyGridPropertyList.js +181 -181
  601. package/dist/elements/widgets/propertyGrid/PropertyGridWithHeader.d.ts +16 -16
  602. package/dist/elements/widgets/propertyGrid/PropertyGridWithHeader.js +74 -73
  603. package/dist/elements/widgets/treeView/ITreeView.d.ts +6 -6
  604. package/dist/elements/widgets/treeView/ITreeView.js +1 -1
  605. package/dist/elements/widgets/treeView/treeView.d.ts +28 -28
  606. package/dist/elements/widgets/treeView/treeView.js +149 -148
  607. package/dist/elements/widgets/treeView/treeViewExtended.d.ts +32 -32
  608. package/dist/elements/widgets/treeView/treeViewExtended.js +286 -285
  609. package/dist/enums/EventNames.d.ts +16 -16
  610. package/dist/enums/EventNames.js +17 -17
  611. package/dist/enums/Orientation.d.ts +8 -8
  612. package/dist/enums/Orientation.js +9 -9
  613. package/dist/enums/PointerActionType.d.ts +8 -8
  614. package/dist/enums/PointerActionType.js +9 -9
  615. package/dist/index.d.ts +254 -254
  616. package/dist/index.js +195 -195
  617. package/dist/interfaces/IActivateable.d.ts +3 -3
  618. package/dist/interfaces/IActivateable.js +1 -1
  619. package/dist/interfaces/ICommandHandler.d.ts +5 -5
  620. package/dist/interfaces/ICommandHandler.js +1 -1
  621. package/dist/interfaces/IDisposable.d.ts +3 -3
  622. package/dist/interfaces/IDisposable.js +1 -1
  623. package/dist/interfaces/IPoint.d.ts +4 -4
  624. package/dist/interfaces/IPoint.js +1 -1
  625. package/dist/interfaces/IPoint3D.d.ts +5 -5
  626. package/dist/interfaces/IPoint3D.js +1 -1
  627. package/dist/interfaces/IRect.d.ts +6 -6
  628. package/dist/interfaces/IRect.js +1 -1
  629. package/dist/interfaces/ISize.d.ts +4 -4
  630. package/dist/interfaces/ISize.js +1 -1
  631. package/dist/polyfill/globals.d.ts +11 -11
  632. package/dist/polyfill/globals.js +1 -1
  633. package/package.json +5 -5
@@ -1,955 +1,955 @@
1
- // https://github.com/jarek-foksa/path-data-polyfill
2
- // @info
3
- // Polyfill for SVG getPathData() and setPathData() methods. Based on:
4
- // - SVGPathSeg polyfill by Philip Rogers (MIT License)
5
- // https://github.com/progers/pathseg
6
- // - SVGPathNormalizer by Tadahisa Motooka (MIT License)
7
- // https://github.com/motooka/SVGPathNormalizer/tree/master/src
8
- // - arcToCubicCurves() by Dmitry Baranovskiy (MIT License)
9
- // https://github.com/DmitryBaranovskiy/raphael/blob/v2.1.1/raphael.core.js#L1837
10
- // @author
11
- // Jarosław Foksa
12
- // @license
13
- // MIT License
14
- if (!SVGPathElement.prototype.getPathData || !SVGPathElement.prototype.setPathData) {
15
- (function () {
16
- var commandsMap = {
17
- "Z": "Z", "M": "M", "L": "L", "C": "C", "Q": "Q", "A": "A", "H": "H", "V": "V", "S": "S", "T": "T",
18
- "z": "Z", "m": "m", "l": "l", "c": "c", "q": "q", "a": "a", "h": "h", "v": "v", "s": "s", "t": "t"
19
- };
20
- var Source = function (string) {
21
- //@ts-ignore
22
- this._string = string;
23
- //@ts-ignore
24
- this._currentIndex = 0;
25
- //@ts-ignore
26
- this._endIndex = this._string.length;
27
- //@ts-ignore
28
- this._prevCommand = null;
29
- //@ts-ignore
30
- this._skipOptionalSpaces();
31
- };
32
- Source.prototype = {
33
- parseSegment: function () {
34
- var char = this._string[this._currentIndex];
35
- var command = commandsMap[char] ? commandsMap[char] : null;
36
- if (command === null) {
37
- // Possibly an implicit command. Not allowed if this is the first command.
38
- if (this._prevCommand === null) {
39
- return null;
40
- }
41
- // Check for remaining coordinates in the current command.
42
- if ((char === "+" || char === "-" || char === "." || (char >= "0" && char <= "9")) && this._prevCommand !== "Z") {
43
- if (this._prevCommand === "M") {
44
- command = "L";
45
- }
46
- else if (this._prevCommand === "m") {
47
- command = "l";
48
- }
49
- else {
50
- command = this._prevCommand;
51
- }
52
- }
53
- else {
54
- command = null;
55
- }
56
- if (command === null) {
57
- return null;
58
- }
59
- }
60
- else {
61
- this._currentIndex += 1;
62
- }
63
- this._prevCommand = command;
64
- var values = null;
65
- var cmd = command.toUpperCase();
66
- if (cmd === "H" || cmd === "V") {
67
- values = [this._parseNumber()];
68
- }
69
- else if (cmd === "M" || cmd === "L" || cmd === "T") {
70
- values = [this._parseNumber(), this._parseNumber()];
71
- }
72
- else if (cmd === "S" || cmd === "Q") {
73
- values = [this._parseNumber(), this._parseNumber(), this._parseNumber(), this._parseNumber()];
74
- }
75
- else if (cmd === "C") {
76
- values = [
77
- this._parseNumber(),
78
- this._parseNumber(),
79
- this._parseNumber(),
80
- this._parseNumber(),
81
- this._parseNumber(),
82
- this._parseNumber()
83
- ];
84
- }
85
- else if (cmd === "A") {
86
- values = [
87
- this._parseNumber(),
88
- this._parseNumber(),
89
- this._parseNumber(),
90
- this._parseArcFlag(),
91
- this._parseArcFlag(),
92
- this._parseNumber(),
93
- this._parseNumber()
94
- ];
95
- }
96
- else if (cmd === "Z") {
97
- this._skipOptionalSpaces();
98
- values = [];
99
- }
100
- if (values === null || values.indexOf(null) >= 0) {
101
- // Unknown command or known command with invalid values
102
- return null;
103
- }
104
- else {
105
- return { type: command, values: values };
106
- }
107
- },
108
- hasMoreData: function () {
109
- return this._currentIndex < this._endIndex;
110
- },
111
- peekSegmentType: function () {
112
- var char = this._string[this._currentIndex];
113
- return commandsMap[char] ? commandsMap[char] : null;
114
- },
115
- initialCommandIsMoveTo: function () {
116
- // If the path is empty it is still valid, so return true.
117
- if (!this.hasMoreData()) {
118
- return true;
119
- }
120
- var command = this.peekSegmentType();
121
- // Path must start with moveTo.
122
- return command === "M" || command === "m";
123
- },
124
- _isCurrentSpace: function () {
125
- var char = this._string[this._currentIndex];
126
- return char <= " " && (char === " " || char === "\n" || char === "\t" || char === "\r" || char === "\f");
127
- },
128
- _skipOptionalSpaces: function () {
129
- while (this._currentIndex < this._endIndex && this._isCurrentSpace()) {
130
- this._currentIndex += 1;
131
- }
132
- return this._currentIndex < this._endIndex;
133
- },
134
- _skipOptionalSpacesOrDelimiter: function () {
135
- if (this._currentIndex < this._endIndex &&
136
- !this._isCurrentSpace() &&
137
- this._string[this._currentIndex] !== ",") {
138
- return false;
139
- }
140
- if (this._skipOptionalSpaces()) {
141
- if (this._currentIndex < this._endIndex && this._string[this._currentIndex] === ",") {
142
- this._currentIndex += 1;
143
- this._skipOptionalSpaces();
144
- }
145
- }
146
- return this._currentIndex < this._endIndex;
147
- },
148
- // Parse a number from an SVG path. This very closely follows genericParseNumber(...) from
149
- // Source/core/svg/SVGParserUtilities.cpp.
150
- // Spec: http://www.w3.org/TR/SVG11/single-page.html#paths-PathDataBNF
151
- _parseNumber: function () {
152
- var exponent = 0;
153
- var integer = 0;
154
- var frac = 1;
155
- var decimal = 0;
156
- var sign = 1;
157
- var expsign = 1;
158
- var startIndex = this._currentIndex;
159
- this._skipOptionalSpaces();
160
- // Read the sign.
161
- if (this._currentIndex < this._endIndex && this._string[this._currentIndex] === "+") {
162
- this._currentIndex += 1;
163
- }
164
- else if (this._currentIndex < this._endIndex && this._string[this._currentIndex] === "-") {
165
- this._currentIndex += 1;
166
- sign = -1;
167
- }
168
- if (this._currentIndex === this._endIndex ||
169
- ((this._string[this._currentIndex] < "0" || this._string[this._currentIndex] > "9") &&
170
- this._string[this._currentIndex] !== ".")) {
171
- // The first character of a number must be one of [0-9+-.].
172
- return null;
173
- }
174
- // Read the integer part, build right-to-left.
175
- var startIntPartIndex = this._currentIndex;
176
- while (this._currentIndex < this._endIndex &&
177
- this._string[this._currentIndex] >= "0" &&
178
- this._string[this._currentIndex] <= "9") {
179
- this._currentIndex += 1; // Advance to first non-digit.
180
- }
181
- if (this._currentIndex !== startIntPartIndex) {
182
- var scanIntPartIndex = this._currentIndex - 1;
183
- var multiplier = 1;
184
- while (scanIntPartIndex >= startIntPartIndex) {
185
- integer += multiplier * (this._string[scanIntPartIndex] - "0");
186
- scanIntPartIndex -= 1;
187
- multiplier *= 10;
188
- }
189
- }
190
- // Read the decimals.
191
- if (this._currentIndex < this._endIndex && this._string[this._currentIndex] === ".") {
192
- this._currentIndex += 1;
193
- // There must be a least one digit following the .
194
- if (this._currentIndex >= this._endIndex ||
195
- this._string[this._currentIndex] < "0" ||
196
- this._string[this._currentIndex] > "9") {
197
- return null;
198
- }
199
- while (this._currentIndex < this._endIndex &&
200
- this._string[this._currentIndex] >= "0" &&
201
- this._string[this._currentIndex] <= "9") {
202
- frac *= 10;
203
- decimal += (this._string.charAt(this._currentIndex) - "0") / frac;
204
- this._currentIndex += 1;
205
- }
206
- }
207
- // Read the exponent part.
208
- if (this._currentIndex !== startIndex &&
209
- this._currentIndex + 1 < this._endIndex &&
210
- (this._string[this._currentIndex] === "e" || this._string[this._currentIndex] === "E") &&
211
- (this._string[this._currentIndex + 1] !== "x" && this._string[this._currentIndex + 1] !== "m")) {
212
- this._currentIndex += 1;
213
- // Read the sign of the exponent.
214
- if (this._string[this._currentIndex] === "+") {
215
- this._currentIndex += 1;
216
- }
217
- else if (this._string[this._currentIndex] === "-") {
218
- this._currentIndex += 1;
219
- expsign = -1;
220
- }
221
- // There must be an exponent.
222
- if (this._currentIndex >= this._endIndex ||
223
- this._string[this._currentIndex] < "0" ||
224
- this._string[this._currentIndex] > "9") {
225
- return null;
226
- }
227
- while (this._currentIndex < this._endIndex &&
228
- this._string[this._currentIndex] >= "0" &&
229
- this._string[this._currentIndex] <= "9") {
230
- exponent *= 10;
231
- exponent += (this._string[this._currentIndex] - "0");
232
- this._currentIndex += 1;
233
- }
234
- }
235
- var number = integer + decimal;
236
- number *= sign;
237
- if (exponent) {
238
- number *= Math.pow(10, expsign * exponent);
239
- }
240
- if (startIndex === this._currentIndex) {
241
- return null;
242
- }
243
- this._skipOptionalSpacesOrDelimiter();
244
- return number;
245
- },
246
- _parseArcFlag: function () {
247
- if (this._currentIndex >= this._endIndex) {
248
- return null;
249
- }
250
- var flag = null;
251
- var flagChar = this._string[this._currentIndex];
252
- this._currentIndex += 1;
253
- if (flagChar === "0") {
254
- flag = 0;
255
- }
256
- else if (flagChar === "1") {
257
- flag = 1;
258
- }
259
- else {
260
- return null;
261
- }
262
- this._skipOptionalSpacesOrDelimiter();
263
- return flag;
264
- }
265
- };
266
- var parsePathDataString = function (string) {
267
- if (!string || string.length === 0)
268
- return [];
269
- var source = new Source(string);
270
- var pathData = [];
271
- if (source.initialCommandIsMoveTo()) {
272
- while (source.hasMoreData()) {
273
- var pathSeg = source.parseSegment();
274
- if (pathSeg === null) {
275
- break;
276
- }
277
- else {
278
- pathData.push(pathSeg);
279
- }
280
- }
281
- }
282
- return pathData;
283
- };
284
- // @info
285
- // Get an array of corresponding cubic bezier curve parameters for given arc curve paramters.
286
- var arcToCubicCurves = function (x1, y1, x2, y2, r1, r2, angle, largeArcFlag, sweepFlag, _recursive) {
287
- var degToRad = function (degrees) {
288
- return (Math.PI * degrees) / 180;
289
- };
290
- var rotate = function (x, y, angleRad) {
291
- var X = x * Math.cos(angleRad) - y * Math.sin(angleRad);
292
- var Y = x * Math.sin(angleRad) + y * Math.cos(angleRad);
293
- return { x: X, y: Y };
294
- };
295
- var angleRad = degToRad(angle);
296
- var params = [];
297
- var f1, f2, cx, cy;
298
- if (_recursive) {
299
- f1 = _recursive[0];
300
- f2 = _recursive[1];
301
- cx = _recursive[2];
302
- cy = _recursive[3];
303
- }
304
- else {
305
- var p1 = rotate(x1, y1, -angleRad);
306
- x1 = p1.x;
307
- y1 = p1.y;
308
- var p2 = rotate(x2, y2, -angleRad);
309
- x2 = p2.x;
310
- y2 = p2.y;
311
- var x = (x1 - x2) / 2;
312
- var y = (y1 - y2) / 2;
313
- var h = (x * x) / (r1 * r1) + (y * y) / (r2 * r2);
314
- if (h > 1) {
315
- h = Math.sqrt(h);
316
- r1 = h * r1;
317
- r2 = h * r2;
318
- }
319
- var sign;
320
- if (largeArcFlag === sweepFlag) {
321
- sign = -1;
322
- }
323
- else {
324
- sign = 1;
325
- }
326
- var r1Pow = r1 * r1;
327
- var r2Pow = r2 * r2;
328
- var left = r1Pow * r2Pow - r1Pow * y * y - r2Pow * x * x;
329
- var right = r1Pow * y * y + r2Pow * x * x;
330
- var k = sign * Math.sqrt(Math.abs(left / right));
331
- cx = k * r1 * y / r2 + (x1 + x2) / 2;
332
- cy = k * -r2 * x / r1 + (y1 + y2) / 2;
333
- f1 = Math.asin(parseFloat(((y1 - cy) / r2).toFixed(9)));
334
- f2 = Math.asin(parseFloat(((y2 - cy) / r2).toFixed(9)));
335
- if (x1 < cx) {
336
- f1 = Math.PI - f1;
337
- }
338
- if (x2 < cx) {
339
- f2 = Math.PI - f2;
340
- }
341
- if (f1 < 0) {
342
- f1 = Math.PI * 2 + f1;
343
- }
344
- if (f2 < 0) {
345
- f2 = Math.PI * 2 + f2;
346
- }
347
- if (sweepFlag && f1 > f2) {
348
- f1 = f1 - Math.PI * 2;
349
- }
350
- if (!sweepFlag && f2 > f1) {
351
- f2 = f2 - Math.PI * 2;
352
- }
353
- }
354
- var df = f2 - f1;
355
- if (Math.abs(df) > (Math.PI * 120 / 180)) {
356
- var f2old = f2;
357
- var x2old = x2;
358
- var y2old = y2;
359
- if (sweepFlag && f2 > f1) {
360
- f2 = f1 + (Math.PI * 120 / 180) * (1);
361
- }
362
- else {
363
- f2 = f1 + (Math.PI * 120 / 180) * (-1);
364
- }
365
- x2 = cx + r1 * Math.cos(f2);
366
- y2 = cy + r2 * Math.sin(f2);
367
- params = arcToCubicCurves(x2, y2, x2old, y2old, r1, r2, angle, 0, sweepFlag, [f2, f2old, cx, cy]);
368
- }
369
- df = f2 - f1;
370
- var c1 = Math.cos(f1);
371
- var s1 = Math.sin(f1);
372
- var c2 = Math.cos(f2);
373
- var s2 = Math.sin(f2);
374
- var t = Math.tan(df / 4);
375
- var hx = 4 / 3 * r1 * t;
376
- var hy = 4 / 3 * r2 * t;
377
- var m1 = [x1, y1];
378
- var m2 = [x1 + hx * s1, y1 - hy * c1];
379
- var m3 = [x2 + hx * s2, y2 - hy * c2];
380
- var m4 = [x2, y2];
381
- m2[0] = 2 * m1[0] - m2[0];
382
- m2[1] = 2 * m1[1] - m2[1];
383
- if (_recursive) {
384
- return [m2, m3, m4].concat(params);
385
- }
386
- else {
387
- params = [m2, m3, m4].concat(params);
388
- var curves = [];
389
- for (var i = 0; i < params.length; i += 3) {
390
- let r1 = rotate(params[i][0], params[i][1], angleRad);
391
- let r2 = rotate(params[i + 1][0], params[i + 1][1], angleRad);
392
- let r3 = rotate(params[i + 2][0], params[i + 2][1], angleRad);
393
- curves.push([r1.x, r1.y, r2.x, r2.y, r3.x, r3.y]);
394
- }
395
- return curves;
396
- }
397
- };
398
- /*var clonePathData = function (pathData) {
399
- return pathData.map(function (seg) {
400
- return { type: seg.type, values: Array.prototype.slice.call(seg.values) }
401
- });
402
- };*/
403
- // @info
404
- // Takes any path data, returns path data that consists only from absolute commands.
405
- var absolutizePathData = function (pathData) {
406
- var absolutizedPathData = [];
407
- var currentX = null;
408
- var currentY = null;
409
- var subpathX = null;
410
- var subpathY = null;
411
- pathData.forEach(function (seg) {
412
- var type = seg.type;
413
- if (type === "M") {
414
- var x = seg.values[0];
415
- var y = seg.values[1];
416
- absolutizedPathData.push({ type: "M", values: [x, y] });
417
- subpathX = x;
418
- subpathY = y;
419
- currentX = x;
420
- currentY = y;
421
- }
422
- else if (type === "m") {
423
- var x = currentX + seg.values[0];
424
- var y = currentY + seg.values[1];
425
- absolutizedPathData.push({ type: "M", values: [x, y] });
426
- subpathX = x;
427
- subpathY = y;
428
- currentX = x;
429
- currentY = y;
430
- }
431
- else if (type === "L") {
432
- var x = seg.values[0];
433
- var y = seg.values[1];
434
- absolutizedPathData.push({ type: "L", values: [x, y] });
435
- currentX = x;
436
- currentY = y;
437
- }
438
- else if (type === "l") {
439
- var x = currentX + seg.values[0];
440
- var y = currentY + seg.values[1];
441
- absolutizedPathData.push({ type: "L", values: [x, y] });
442
- currentX = x;
443
- currentY = y;
444
- }
445
- else if (type === "C") {
446
- var x1 = seg.values[0];
447
- var y1 = seg.values[1];
448
- var x2 = seg.values[2];
449
- var y2 = seg.values[3];
450
- var x = seg.values[4];
451
- var y = seg.values[5];
452
- absolutizedPathData.push({ type: "C", values: [x1, y1, x2, y2, x, y] });
453
- currentX = x;
454
- currentY = y;
455
- }
456
- else if (type === "c") {
457
- var x1 = currentX + seg.values[0];
458
- var y1 = currentY + seg.values[1];
459
- var x2 = currentX + seg.values[2];
460
- var y2 = currentY + seg.values[3];
461
- var x = currentX + seg.values[4];
462
- var y = currentY + seg.values[5];
463
- absolutizedPathData.push({ type: "C", values: [x1, y1, x2, y2, x, y] });
464
- currentX = x;
465
- currentY = y;
466
- }
467
- else if (type === "Q") {
468
- var x1 = seg.values[0];
469
- var y1 = seg.values[1];
470
- var x = seg.values[2];
471
- var y = seg.values[3];
472
- absolutizedPathData.push({ type: "Q", values: [x1, y1, x, y] });
473
- currentX = x;
474
- currentY = y;
475
- }
476
- else if (type === "q") {
477
- var x1 = currentX + seg.values[0];
478
- var y1 = currentY + seg.values[1];
479
- var x = currentX + seg.values[2];
480
- var y = currentY + seg.values[3];
481
- absolutizedPathData.push({ type: "Q", values: [x1, y1, x, y] });
482
- currentX = x;
483
- currentY = y;
484
- }
485
- else if (type === "A") {
486
- var x = seg.values[5];
487
- var y = seg.values[6];
488
- absolutizedPathData.push({
489
- type: "A",
490
- values: [seg.values[0], seg.values[1], seg.values[2], seg.values[3], seg.values[4], x, y]
491
- });
492
- currentX = x;
493
- currentY = y;
494
- }
495
- else if (type === "a") {
496
- var x = currentX + seg.values[5];
497
- var y = currentY + seg.values[6];
498
- absolutizedPathData.push({
499
- type: "A",
500
- values: [seg.values[0], seg.values[1], seg.values[2], seg.values[3], seg.values[4], x, y]
501
- });
502
- currentX = x;
503
- currentY = y;
504
- }
505
- else if (type === "H") {
506
- var x = seg.values[0];
507
- absolutizedPathData.push({ type: "H", values: [x] });
508
- currentX = x;
509
- }
510
- else if (type === "h") {
511
- var x = currentX + seg.values[0];
512
- absolutizedPathData.push({ type: "H", values: [x] });
513
- currentX = x;
514
- }
515
- else if (type === "V") {
516
- var y = seg.values[0];
517
- absolutizedPathData.push({ type: "V", values: [y] });
518
- currentY = y;
519
- }
520
- else if (type === "v") {
521
- var y = currentY + seg.values[0];
522
- absolutizedPathData.push({ type: "V", values: [y] });
523
- currentY = y;
524
- }
525
- else if (type === "S") {
526
- var x2 = seg.values[0];
527
- var y2 = seg.values[1];
528
- var x = seg.values[2];
529
- var y = seg.values[3];
530
- absolutizedPathData.push({ type: "S", values: [x2, y2, x, y] });
531
- currentX = x;
532
- currentY = y;
533
- }
534
- else if (type === "s") {
535
- var x2 = currentX + seg.values[0];
536
- var y2 = currentY + seg.values[1];
537
- var x = currentX + seg.values[2];
538
- var y = currentY + seg.values[3];
539
- absolutizedPathData.push({ type: "S", values: [x2, y2, x, y] });
540
- currentX = x;
541
- currentY = y;
542
- }
543
- else if (type === "T") {
544
- var x = seg.values[0];
545
- var y = seg.values[1];
546
- absolutizedPathData.push({ type: "T", values: [x, y] });
547
- currentX = x;
548
- currentY = y;
549
- }
550
- else if (type === "t") {
551
- var x = currentX + seg.values[0];
552
- var y = currentY + seg.values[1];
553
- absolutizedPathData.push({ type: "T", values: [x, y] });
554
- currentX = x;
555
- currentY = y;
556
- }
557
- else if (type === "Z" || type === "z") {
558
- absolutizedPathData.push({ type: "Z", values: [] });
559
- currentX = subpathX;
560
- currentY = subpathY;
561
- }
562
- });
563
- return absolutizedPathData;
564
- };
565
- // @info
566
- // Takes path data that consists only from absolute commands, returns path data that consists only from
567
- // "M", "L", "C" and "Z" commands.
568
- var reducePathData = function (pathData) {
569
- var reducedPathData = [];
570
- var lastType = null;
571
- var lastControlX = null;
572
- var lastControlY = null;
573
- var currentX = null;
574
- var currentY = null;
575
- var subpathX = null;
576
- var subpathY = null;
577
- pathData.forEach(function (seg) {
578
- if (seg.type === "M") {
579
- var x = seg.values[0];
580
- var y = seg.values[1];
581
- reducedPathData.push({ type: "M", values: [x, y] });
582
- subpathX = x;
583
- subpathY = y;
584
- currentX = x;
585
- currentY = y;
586
- }
587
- else if (seg.type === "C") {
588
- var x1 = seg.values[0];
589
- var y1 = seg.values[1];
590
- var x2 = seg.values[2];
591
- var y2 = seg.values[3];
592
- var x = seg.values[4];
593
- var y = seg.values[5];
594
- reducedPathData.push({ type: "C", values: [x1, y1, x2, y2, x, y] });
595
- lastControlX = x2;
596
- lastControlY = y2;
597
- currentX = x;
598
- currentY = y;
599
- }
600
- else if (seg.type === "L") {
601
- var x = seg.values[0];
602
- var y = seg.values[1];
603
- reducedPathData.push({ type: "L", values: [x, y] });
604
- currentX = x;
605
- currentY = y;
606
- }
607
- else if (seg.type === "H") {
608
- var x = seg.values[0];
609
- reducedPathData.push({ type: "L", values: [x, currentY] });
610
- currentX = x;
611
- }
612
- else if (seg.type === "V") {
613
- var y = seg.values[0];
614
- reducedPathData.push({ type: "L", values: [currentX, y] });
615
- currentY = y;
616
- }
617
- else if (seg.type === "S") {
618
- var x2 = seg.values[0];
619
- var y2 = seg.values[1];
620
- var x = seg.values[2];
621
- var y = seg.values[3];
622
- var cx1, cy1;
623
- if (lastType === "C" || lastType === "S") {
624
- cx1 = currentX + (currentX - lastControlX);
625
- cy1 = currentY + (currentY - lastControlY);
626
- }
627
- else {
628
- cx1 = currentX;
629
- cy1 = currentY;
630
- }
631
- reducedPathData.push({ type: "C", values: [cx1, cy1, x2, y2, x, y] });
632
- lastControlX = x2;
633
- lastControlY = y2;
634
- currentX = x;
635
- currentY = y;
636
- }
637
- else if (seg.type === "T") {
638
- var x = seg.values[0];
639
- var y = seg.values[1];
640
- var x1, y1;
641
- if (lastType === "Q" || lastType === "T") {
642
- x1 = currentX + (currentX - lastControlX);
643
- y1 = currentY + (currentY - lastControlY);
644
- }
645
- else {
646
- x1 = currentX;
647
- y1 = currentY;
648
- }
649
- var cx1 = currentX + 2 * (x1 - currentX) / 3;
650
- var cy1 = currentY + 2 * (y1 - currentY) / 3;
651
- var cx2 = x + 2 * (x1 - x) / 3;
652
- var cy2 = y + 2 * (y1 - y) / 3;
653
- reducedPathData.push({ type: "C", values: [cx1, cy1, cx2, cy2, x, y] });
654
- lastControlX = x1;
655
- lastControlY = y1;
656
- currentX = x;
657
- currentY = y;
658
- }
659
- else if (seg.type === "Q") {
660
- var x1 = seg.values[0];
661
- var y1 = seg.values[1];
662
- var x = seg.values[2];
663
- var y = seg.values[3];
664
- var cx1 = currentX + 2 * (x1 - currentX) / 3;
665
- var cy1 = currentY + 2 * (y1 - currentY) / 3;
666
- var cx2 = x + 2 * (x1 - x) / 3;
667
- var cy2 = y + 2 * (y1 - y) / 3;
668
- reducedPathData.push({ type: "C", values: [cx1, cy1, cx2, cy2, x, y] });
669
- lastControlX = x1;
670
- lastControlY = y1;
671
- currentX = x;
672
- currentY = y;
673
- }
674
- else if (seg.type === "A") {
675
- let r1 = Math.abs(seg.values[0]);
676
- let r2 = Math.abs(seg.values[1]);
677
- var angle = seg.values[2];
678
- var largeArcFlag = seg.values[3];
679
- var sweepFlag = seg.values[4];
680
- var x = seg.values[5];
681
- var y = seg.values[6];
682
- if (r1 === 0 || r2 === 0) {
683
- reducedPathData.push({ type: "C", values: [currentX, currentY, x, y, x, y] });
684
- currentX = x;
685
- currentY = y;
686
- }
687
- else {
688
- if (currentX !== x || currentY !== y) {
689
- var curves = arcToCubicCurves(currentX, currentY, x, y, r1, r2, angle, largeArcFlag, sweepFlag);
690
- curves.forEach(function (curve) {
691
- reducedPathData.push({ type: "C", values: curve });
692
- });
693
- currentX = x;
694
- currentY = y;
695
- }
696
- }
697
- }
698
- else if (seg.type === "Z") {
699
- reducedPathData.push(seg);
700
- currentX = subpathX;
701
- currentY = subpathY;
702
- }
703
- lastType = seg.type;
704
- });
705
- return reducedPathData;
706
- };
707
- SVGPathElement.prototype.getPathData = function (options) {
708
- if (options && options.normalize) {
709
- /*if (this[$cachedNormalizedPathData]) {
710
- return clonePathData(this[$cachedNormalizedPathData]);
711
- }
712
- else */ {
713
- let pathData;
714
- /*if (this[$cachedPathData]) {
715
- pathData = clonePathData(this[$cachedPathData]);
716
- }
717
- else */ {
718
- pathData = parsePathDataString(this.getAttribute("d") || "");
719
- //this[$cachedPathData] = clonePathData(pathData);
720
- }
721
- let normalizedPathData = reducePathData(absolutizePathData(pathData));
722
- //this[$cachedNormalizedPathData] = clonePathData(normalizedPathData);
723
- return normalizedPathData;
724
- }
725
- }
726
- else {
727
- /*if (this[$cachedPathData]) {
728
- return clonePathData(this[$cachedPathData]);
729
- }
730
- else*/ {
731
- let pathData = parsePathDataString(this.getAttribute("d") || "");
732
- //this[$cachedPathData] = clonePathData(pathData);
733
- return pathData;
734
- }
735
- }
736
- };
737
- SVGPathElement.prototype.setPathData = function (pathData) {
738
- if (pathData.length === 0) {
739
- this.removeAttribute("d");
740
- }
741
- else {
742
- let d = "";
743
- for (let i = 0, l = pathData.length; i < l; i += 1) {
744
- let seg = pathData[i];
745
- if (i > 0) {
746
- d += " ";
747
- }
748
- d += seg.type;
749
- if (seg.values && seg.values.length > 0) {
750
- d += " " + seg.values.join(" ");
751
- }
752
- }
753
- this.setAttribute("d", d);
754
- }
755
- };
756
- SVGRectElement.prototype.getPathData = function (options) {
757
- var x = this.x.baseVal.value;
758
- var y = this.y.baseVal.value;
759
- var width = this.width.baseVal.value;
760
- var height = this.height.baseVal.value;
761
- var rx = this.hasAttribute("rx") ? this.rx.baseVal.value : this.ry.baseVal.value;
762
- var ry = this.hasAttribute("ry") ? this.ry.baseVal.value : this.rx.baseVal.value;
763
- if (rx > width / 2) {
764
- rx = width / 2;
765
- }
766
- if (ry > height / 2) {
767
- ry = height / 2;
768
- }
769
- var pathData = [
770
- { type: "M", values: [x + rx, y] },
771
- { type: "H", values: [x + width - rx] },
772
- { type: "A", values: [rx, ry, 0, 0, 1, x + width, y + ry] },
773
- { type: "V", values: [y + height - ry] },
774
- { type: "A", values: [rx, ry, 0, 0, 1, x + width - rx, y + height] },
775
- { type: "H", values: [x + rx] },
776
- { type: "A", values: [rx, ry, 0, 0, 1, x, y + height - ry] },
777
- { type: "V", values: [y + ry] },
778
- { type: "A", values: [rx, ry, 0, 0, 1, x + rx, y] },
779
- { type: "Z", values: [] }
780
- ];
781
- // Get rid of redundant "A" segs when either rx or ry is 0
782
- pathData = pathData.filter(function (s) {
783
- return s.type === "A" && (s.values[0] === 0 || s.values[1] === 0) ? false : true;
784
- });
785
- if (options && options.normalize === true) {
786
- pathData = reducePathData(pathData);
787
- }
788
- return pathData;
789
- };
790
- SVGCircleElement.prototype.getPathData = function (options) {
791
- var cx = this.cx.baseVal.value;
792
- var cy = this.cy.baseVal.value;
793
- var r = this.r.baseVal.value;
794
- var pathData = [
795
- { type: "M", values: [cx + r, cy] },
796
- { type: "A", values: [r, r, 0, 0, 1, cx, cy + r] },
797
- { type: "A", values: [r, r, 0, 0, 1, cx - r, cy] },
798
- { type: "A", values: [r, r, 0, 0, 1, cx, cy - r] },
799
- { type: "A", values: [r, r, 0, 0, 1, cx + r, cy] },
800
- { type: "Z", values: [] }
801
- ];
802
- if (options && options.normalize === true) {
803
- pathData = reducePathData(pathData);
804
- }
805
- return pathData;
806
- };
807
- SVGEllipseElement.prototype.getPathData = function (options) {
808
- var cx = this.cx.baseVal.value;
809
- var cy = this.cy.baseVal.value;
810
- var rx = this.rx.baseVal.value;
811
- var ry = this.ry.baseVal.value;
812
- var pathData = [
813
- { type: "M", values: [cx + rx, cy] },
814
- { type: "A", values: [rx, ry, 0, 0, 1, cx, cy + ry] },
815
- { type: "A", values: [rx, ry, 0, 0, 1, cx - rx, cy] },
816
- { type: "A", values: [rx, ry, 0, 0, 1, cx, cy - ry] },
817
- { type: "A", values: [rx, ry, 0, 0, 1, cx + rx, cy] },
818
- { type: "Z", values: [] }
819
- ];
820
- if (options && options.normalize === true) {
821
- pathData = reducePathData(pathData);
822
- }
823
- return pathData;
824
- };
825
- SVGLineElement.prototype.getPathData = function () {
826
- return [
827
- { type: "M", values: [this.x1.baseVal.value, this.y1.baseVal.value] },
828
- { type: "L", values: [this.x2.baseVal.value, this.y2.baseVal.value] }
829
- ];
830
- };
831
- SVGPolylineElement.prototype.getPathData = function () {
832
- var pathData = [];
833
- for (var i = 0; i < this.points.numberOfItems; i += 1) {
834
- var point = this.points.getItem(i);
835
- pathData.push({
836
- type: (i === 0 ? "M" : "L"),
837
- values: [point.x, point.y]
838
- });
839
- }
840
- return pathData;
841
- };
842
- SVGPolygonElement.prototype.getPathData = function () {
843
- var pathData = [];
844
- for (var i = 0; i < this.points.numberOfItems; i += 1) {
845
- var point = this.points.getItem(i);
846
- pathData.push({
847
- type: (i === 0 ? "M" : "L"),
848
- values: [point.x, point.y]
849
- });
850
- }
851
- pathData.push({
852
- type: "Z",
853
- values: []
854
- });
855
- return pathData;
856
- };
857
- })();
858
- }
859
- export function straightenLine(p1, p2) {
860
- let newP;
861
- let alpha = calculateAlpha(p1, p2);
862
- let normLength;
863
- if ((alpha >= 337.5 && alpha < 360 || alpha >= 0 && alpha < 22.5)) { // 0
864
- newP = { x: p2.x, y: p1.y };
865
- }
866
- else if ((alpha >= 22.5 && alpha < 67.5)) { // 45
867
- normLength = calculateNormLegth(p1, p2);
868
- newP = { x: p1.x + normLength, y: p1.y - normLength };
869
- }
870
- else if ((alpha >= 67.5 && alpha < 112.5)) { // 90
871
- newP = { x: p1.x, y: p2.y };
872
- }
873
- else if ((alpha >= 112.5 && alpha < 157.5)) { // 135
874
- normLength = calculateNormLegth(p1, p2);
875
- newP = { x: p1.x - normLength, y: p1.y - normLength };
876
- }
877
- else if ((alpha >= 157.5 && alpha < 202.5)) { // 180
878
- newP = { x: p2.x, y: p1.y };
879
- }
880
- else if ((alpha >= 202.5 && alpha < 247.5)) { // 225
881
- normLength = calculateNormLegth(p1, p2);
882
- newP = { x: p1.x - normLength, y: p1.y + normLength };
883
- }
884
- else if ((alpha >= 247.5 && alpha < 292.5)) { // 270
885
- newP = { x: p1.x, y: p2.y };
886
- }
887
- else if ((alpha >= 292.5 && alpha < 337.5)) { // 315
888
- normLength = calculateNormLegth(p1, p2);
889
- newP = { x: p1.x + normLength, y: p1.y + normLength };
890
- }
891
- return newP;
892
- }
893
- export function calculateNormLegth(p1, p2) {
894
- let normLenght;
895
- let currentLength = Math.sqrt(Math.pow(p2.x - p1.x, 2) + Math.pow(p2.y - p1.y, 2));
896
- let alpha = calculateAlpha(p1, p2);
897
- let beta = alpha - ((Math.floor(alpha / 90) * 90) + 45);
898
- normLenght = currentLength * Math.cos(beta * (Math.PI / 180)) / Math.sqrt(2);
899
- return normLenght;
900
- }
901
- export function calculateAlpha(p1, p2) {
902
- let alpha = -1 * Math.atan2(p2.y - p1.y, p2.x - p1.x) * 180 / Math.PI;
903
- if (alpha < 0)
904
- alpha += 360;
905
- return alpha;
906
- }
907
- export function moveSVGPath(path, xFactor, yFactor) {
908
- let newPathData = "";
909
- let pd = path.getPathData({ normalize: true });
910
- {
911
- for (let p of pd) {
912
- switch (p.type) {
913
- case ('M'):
914
- case ('m'):
915
- case ('L'):
916
- case ('l'):
917
- case ('T'):
918
- case ('t'):
919
- newPathData += p.type + " " + (p.values[0] - xFactor) + " " + (p.values[1] - yFactor) + " ";
920
- break;
921
- case ('Z'):
922
- case ('z'):
923
- newPathData += p.type + " ";
924
- break;
925
- case ('C'):
926
- case ('c'):
927
- newPathData += p.type + " " + (p.values[0] - xFactor) + " " + (p.values[1] - yFactor) + " " + (p.values[2] - xFactor) + " " + (p.values[3] - yFactor) + " " + (p.values[4] - xFactor) + " " + (p.values[5] - yFactor) + " ";
928
- break;
929
- case ('S'):
930
- case ('s'):
931
- case ('Q'):
932
- case ('q'):
933
- newPathData += p.type + " " + (p.values[0] - xFactor) + " " + (p.values[1] - yFactor) + " " + (p.values[2] - xFactor) + " " + (p.values[3] - yFactor) + " ";
934
- break;
935
- case ('A'):
936
- case ('a'):
937
- newPathData += p.type + " " + (p.values[0] - xFactor) + " " + (p.values[1] - yFactor) + " " + p.values[2] + " " + p.values[3] + " " + p.values[4] + " " + (p.values[5] - xFactor) + " " + (p.values[6] - yFactor) + " ";
938
- break;
939
- }
940
- }
941
- }
942
- return newPathData;
943
- }
944
- export function createPathD(path) {
945
- let pathD = "";
946
- for (let p of path) {
947
- pathD += p.type + " ";
948
- for (var i = 0; i < p.values.length; i++) {
949
- if (p.values[i] != null && !isNaN(p.values[i])) {
950
- pathD += p.values[i] + " ";
951
- }
952
- }
953
- }
954
- return pathD;
955
- }
1
+ // https://github.com/jarek-foksa/path-data-polyfill
2
+ // @info
3
+ // Polyfill for SVG getPathData() and setPathData() methods. Based on:
4
+ // - SVGPathSeg polyfill by Philip Rogers (MIT License)
5
+ // https://github.com/progers/pathseg
6
+ // - SVGPathNormalizer by Tadahisa Motooka (MIT License)
7
+ // https://github.com/motooka/SVGPathNormalizer/tree/master/src
8
+ // - arcToCubicCurves() by Dmitry Baranovskiy (MIT License)
9
+ // https://github.com/DmitryBaranovskiy/raphael/blob/v2.1.1/raphael.core.js#L1837
10
+ // @author
11
+ // Jarosław Foksa
12
+ // @license
13
+ // MIT License
14
+ if (!SVGPathElement.prototype.getPathData || !SVGPathElement.prototype.setPathData) {
15
+ (function () {
16
+ var commandsMap = {
17
+ "Z": "Z", "M": "M", "L": "L", "C": "C", "Q": "Q", "A": "A", "H": "H", "V": "V", "S": "S", "T": "T",
18
+ "z": "Z", "m": "m", "l": "l", "c": "c", "q": "q", "a": "a", "h": "h", "v": "v", "s": "s", "t": "t"
19
+ };
20
+ var Source = function (string) {
21
+ //@ts-ignore
22
+ this._string = string;
23
+ //@ts-ignore
24
+ this._currentIndex = 0;
25
+ //@ts-ignore
26
+ this._endIndex = this._string.length;
27
+ //@ts-ignore
28
+ this._prevCommand = null;
29
+ //@ts-ignore
30
+ this._skipOptionalSpaces();
31
+ };
32
+ Source.prototype = {
33
+ parseSegment: function () {
34
+ var char = this._string[this._currentIndex];
35
+ var command = commandsMap[char] ? commandsMap[char] : null;
36
+ if (command === null) {
37
+ // Possibly an implicit command. Not allowed if this is the first command.
38
+ if (this._prevCommand === null) {
39
+ return null;
40
+ }
41
+ // Check for remaining coordinates in the current command.
42
+ if ((char === "+" || char === "-" || char === "." || (char >= "0" && char <= "9")) && this._prevCommand !== "Z") {
43
+ if (this._prevCommand === "M") {
44
+ command = "L";
45
+ }
46
+ else if (this._prevCommand === "m") {
47
+ command = "l";
48
+ }
49
+ else {
50
+ command = this._prevCommand;
51
+ }
52
+ }
53
+ else {
54
+ command = null;
55
+ }
56
+ if (command === null) {
57
+ return null;
58
+ }
59
+ }
60
+ else {
61
+ this._currentIndex += 1;
62
+ }
63
+ this._prevCommand = command;
64
+ var values = null;
65
+ var cmd = command.toUpperCase();
66
+ if (cmd === "H" || cmd === "V") {
67
+ values = [this._parseNumber()];
68
+ }
69
+ else if (cmd === "M" || cmd === "L" || cmd === "T") {
70
+ values = [this._parseNumber(), this._parseNumber()];
71
+ }
72
+ else if (cmd === "S" || cmd === "Q") {
73
+ values = [this._parseNumber(), this._parseNumber(), this._parseNumber(), this._parseNumber()];
74
+ }
75
+ else if (cmd === "C") {
76
+ values = [
77
+ this._parseNumber(),
78
+ this._parseNumber(),
79
+ this._parseNumber(),
80
+ this._parseNumber(),
81
+ this._parseNumber(),
82
+ this._parseNumber()
83
+ ];
84
+ }
85
+ else if (cmd === "A") {
86
+ values = [
87
+ this._parseNumber(),
88
+ this._parseNumber(),
89
+ this._parseNumber(),
90
+ this._parseArcFlag(),
91
+ this._parseArcFlag(),
92
+ this._parseNumber(),
93
+ this._parseNumber()
94
+ ];
95
+ }
96
+ else if (cmd === "Z") {
97
+ this._skipOptionalSpaces();
98
+ values = [];
99
+ }
100
+ if (values === null || values.indexOf(null) >= 0) {
101
+ // Unknown command or known command with invalid values
102
+ return null;
103
+ }
104
+ else {
105
+ return { type: command, values: values };
106
+ }
107
+ },
108
+ hasMoreData: function () {
109
+ return this._currentIndex < this._endIndex;
110
+ },
111
+ peekSegmentType: function () {
112
+ var char = this._string[this._currentIndex];
113
+ return commandsMap[char] ? commandsMap[char] : null;
114
+ },
115
+ initialCommandIsMoveTo: function () {
116
+ // If the path is empty it is still valid, so return true.
117
+ if (!this.hasMoreData()) {
118
+ return true;
119
+ }
120
+ var command = this.peekSegmentType();
121
+ // Path must start with moveTo.
122
+ return command === "M" || command === "m";
123
+ },
124
+ _isCurrentSpace: function () {
125
+ var char = this._string[this._currentIndex];
126
+ return char <= " " && (char === " " || char === "\n" || char === "\t" || char === "\r" || char === "\f");
127
+ },
128
+ _skipOptionalSpaces: function () {
129
+ while (this._currentIndex < this._endIndex && this._isCurrentSpace()) {
130
+ this._currentIndex += 1;
131
+ }
132
+ return this._currentIndex < this._endIndex;
133
+ },
134
+ _skipOptionalSpacesOrDelimiter: function () {
135
+ if (this._currentIndex < this._endIndex &&
136
+ !this._isCurrentSpace() &&
137
+ this._string[this._currentIndex] !== ",") {
138
+ return false;
139
+ }
140
+ if (this._skipOptionalSpaces()) {
141
+ if (this._currentIndex < this._endIndex && this._string[this._currentIndex] === ",") {
142
+ this._currentIndex += 1;
143
+ this._skipOptionalSpaces();
144
+ }
145
+ }
146
+ return this._currentIndex < this._endIndex;
147
+ },
148
+ // Parse a number from an SVG path. This very closely follows genericParseNumber(...) from
149
+ // Source/core/svg/SVGParserUtilities.cpp.
150
+ // Spec: http://www.w3.org/TR/SVG11/single-page.html#paths-PathDataBNF
151
+ _parseNumber: function () {
152
+ var exponent = 0;
153
+ var integer = 0;
154
+ var frac = 1;
155
+ var decimal = 0;
156
+ var sign = 1;
157
+ var expsign = 1;
158
+ var startIndex = this._currentIndex;
159
+ this._skipOptionalSpaces();
160
+ // Read the sign.
161
+ if (this._currentIndex < this._endIndex && this._string[this._currentIndex] === "+") {
162
+ this._currentIndex += 1;
163
+ }
164
+ else if (this._currentIndex < this._endIndex && this._string[this._currentIndex] === "-") {
165
+ this._currentIndex += 1;
166
+ sign = -1;
167
+ }
168
+ if (this._currentIndex === this._endIndex ||
169
+ ((this._string[this._currentIndex] < "0" || this._string[this._currentIndex] > "9") &&
170
+ this._string[this._currentIndex] !== ".")) {
171
+ // The first character of a number must be one of [0-9+-.].
172
+ return null;
173
+ }
174
+ // Read the integer part, build right-to-left.
175
+ var startIntPartIndex = this._currentIndex;
176
+ while (this._currentIndex < this._endIndex &&
177
+ this._string[this._currentIndex] >= "0" &&
178
+ this._string[this._currentIndex] <= "9") {
179
+ this._currentIndex += 1; // Advance to first non-digit.
180
+ }
181
+ if (this._currentIndex !== startIntPartIndex) {
182
+ var scanIntPartIndex = this._currentIndex - 1;
183
+ var multiplier = 1;
184
+ while (scanIntPartIndex >= startIntPartIndex) {
185
+ integer += multiplier * (this._string[scanIntPartIndex] - "0");
186
+ scanIntPartIndex -= 1;
187
+ multiplier *= 10;
188
+ }
189
+ }
190
+ // Read the decimals.
191
+ if (this._currentIndex < this._endIndex && this._string[this._currentIndex] === ".") {
192
+ this._currentIndex += 1;
193
+ // There must be a least one digit following the .
194
+ if (this._currentIndex >= this._endIndex ||
195
+ this._string[this._currentIndex] < "0" ||
196
+ this._string[this._currentIndex] > "9") {
197
+ return null;
198
+ }
199
+ while (this._currentIndex < this._endIndex &&
200
+ this._string[this._currentIndex] >= "0" &&
201
+ this._string[this._currentIndex] <= "9") {
202
+ frac *= 10;
203
+ decimal += (this._string.charAt(this._currentIndex) - "0") / frac;
204
+ this._currentIndex += 1;
205
+ }
206
+ }
207
+ // Read the exponent part.
208
+ if (this._currentIndex !== startIndex &&
209
+ this._currentIndex + 1 < this._endIndex &&
210
+ (this._string[this._currentIndex] === "e" || this._string[this._currentIndex] === "E") &&
211
+ (this._string[this._currentIndex + 1] !== "x" && this._string[this._currentIndex + 1] !== "m")) {
212
+ this._currentIndex += 1;
213
+ // Read the sign of the exponent.
214
+ if (this._string[this._currentIndex] === "+") {
215
+ this._currentIndex += 1;
216
+ }
217
+ else if (this._string[this._currentIndex] === "-") {
218
+ this._currentIndex += 1;
219
+ expsign = -1;
220
+ }
221
+ // There must be an exponent.
222
+ if (this._currentIndex >= this._endIndex ||
223
+ this._string[this._currentIndex] < "0" ||
224
+ this._string[this._currentIndex] > "9") {
225
+ return null;
226
+ }
227
+ while (this._currentIndex < this._endIndex &&
228
+ this._string[this._currentIndex] >= "0" &&
229
+ this._string[this._currentIndex] <= "9") {
230
+ exponent *= 10;
231
+ exponent += (this._string[this._currentIndex] - "0");
232
+ this._currentIndex += 1;
233
+ }
234
+ }
235
+ var number = integer + decimal;
236
+ number *= sign;
237
+ if (exponent) {
238
+ number *= Math.pow(10, expsign * exponent);
239
+ }
240
+ if (startIndex === this._currentIndex) {
241
+ return null;
242
+ }
243
+ this._skipOptionalSpacesOrDelimiter();
244
+ return number;
245
+ },
246
+ _parseArcFlag: function () {
247
+ if (this._currentIndex >= this._endIndex) {
248
+ return null;
249
+ }
250
+ var flag = null;
251
+ var flagChar = this._string[this._currentIndex];
252
+ this._currentIndex += 1;
253
+ if (flagChar === "0") {
254
+ flag = 0;
255
+ }
256
+ else if (flagChar === "1") {
257
+ flag = 1;
258
+ }
259
+ else {
260
+ return null;
261
+ }
262
+ this._skipOptionalSpacesOrDelimiter();
263
+ return flag;
264
+ }
265
+ };
266
+ var parsePathDataString = function (string) {
267
+ if (!string || string.length === 0)
268
+ return [];
269
+ var source = new Source(string);
270
+ var pathData = [];
271
+ if (source.initialCommandIsMoveTo()) {
272
+ while (source.hasMoreData()) {
273
+ var pathSeg = source.parseSegment();
274
+ if (pathSeg === null) {
275
+ break;
276
+ }
277
+ else {
278
+ pathData.push(pathSeg);
279
+ }
280
+ }
281
+ }
282
+ return pathData;
283
+ };
284
+ // @info
285
+ // Get an array of corresponding cubic bezier curve parameters for given arc curve paramters.
286
+ var arcToCubicCurves = function (x1, y1, x2, y2, r1, r2, angle, largeArcFlag, sweepFlag, _recursive) {
287
+ var degToRad = function (degrees) {
288
+ return (Math.PI * degrees) / 180;
289
+ };
290
+ var rotate = function (x, y, angleRad) {
291
+ var X = x * Math.cos(angleRad) - y * Math.sin(angleRad);
292
+ var Y = x * Math.sin(angleRad) + y * Math.cos(angleRad);
293
+ return { x: X, y: Y };
294
+ };
295
+ var angleRad = degToRad(angle);
296
+ var params = [];
297
+ var f1, f2, cx, cy;
298
+ if (_recursive) {
299
+ f1 = _recursive[0];
300
+ f2 = _recursive[1];
301
+ cx = _recursive[2];
302
+ cy = _recursive[3];
303
+ }
304
+ else {
305
+ var p1 = rotate(x1, y1, -angleRad);
306
+ x1 = p1.x;
307
+ y1 = p1.y;
308
+ var p2 = rotate(x2, y2, -angleRad);
309
+ x2 = p2.x;
310
+ y2 = p2.y;
311
+ var x = (x1 - x2) / 2;
312
+ var y = (y1 - y2) / 2;
313
+ var h = (x * x) / (r1 * r1) + (y * y) / (r2 * r2);
314
+ if (h > 1) {
315
+ h = Math.sqrt(h);
316
+ r1 = h * r1;
317
+ r2 = h * r2;
318
+ }
319
+ var sign;
320
+ if (largeArcFlag === sweepFlag) {
321
+ sign = -1;
322
+ }
323
+ else {
324
+ sign = 1;
325
+ }
326
+ var r1Pow = r1 * r1;
327
+ var r2Pow = r2 * r2;
328
+ var left = r1Pow * r2Pow - r1Pow * y * y - r2Pow * x * x;
329
+ var right = r1Pow * y * y + r2Pow * x * x;
330
+ var k = sign * Math.sqrt(Math.abs(left / right));
331
+ cx = k * r1 * y / r2 + (x1 + x2) / 2;
332
+ cy = k * -r2 * x / r1 + (y1 + y2) / 2;
333
+ f1 = Math.asin(parseFloat(((y1 - cy) / r2).toFixed(9)));
334
+ f2 = Math.asin(parseFloat(((y2 - cy) / r2).toFixed(9)));
335
+ if (x1 < cx) {
336
+ f1 = Math.PI - f1;
337
+ }
338
+ if (x2 < cx) {
339
+ f2 = Math.PI - f2;
340
+ }
341
+ if (f1 < 0) {
342
+ f1 = Math.PI * 2 + f1;
343
+ }
344
+ if (f2 < 0) {
345
+ f2 = Math.PI * 2 + f2;
346
+ }
347
+ if (sweepFlag && f1 > f2) {
348
+ f1 = f1 - Math.PI * 2;
349
+ }
350
+ if (!sweepFlag && f2 > f1) {
351
+ f2 = f2 - Math.PI * 2;
352
+ }
353
+ }
354
+ var df = f2 - f1;
355
+ if (Math.abs(df) > (Math.PI * 120 / 180)) {
356
+ var f2old = f2;
357
+ var x2old = x2;
358
+ var y2old = y2;
359
+ if (sweepFlag && f2 > f1) {
360
+ f2 = f1 + (Math.PI * 120 / 180) * (1);
361
+ }
362
+ else {
363
+ f2 = f1 + (Math.PI * 120 / 180) * (-1);
364
+ }
365
+ x2 = cx + r1 * Math.cos(f2);
366
+ y2 = cy + r2 * Math.sin(f2);
367
+ params = arcToCubicCurves(x2, y2, x2old, y2old, r1, r2, angle, 0, sweepFlag, [f2, f2old, cx, cy]);
368
+ }
369
+ df = f2 - f1;
370
+ var c1 = Math.cos(f1);
371
+ var s1 = Math.sin(f1);
372
+ var c2 = Math.cos(f2);
373
+ var s2 = Math.sin(f2);
374
+ var t = Math.tan(df / 4);
375
+ var hx = 4 / 3 * r1 * t;
376
+ var hy = 4 / 3 * r2 * t;
377
+ var m1 = [x1, y1];
378
+ var m2 = [x1 + hx * s1, y1 - hy * c1];
379
+ var m3 = [x2 + hx * s2, y2 - hy * c2];
380
+ var m4 = [x2, y2];
381
+ m2[0] = 2 * m1[0] - m2[0];
382
+ m2[1] = 2 * m1[1] - m2[1];
383
+ if (_recursive) {
384
+ return [m2, m3, m4].concat(params);
385
+ }
386
+ else {
387
+ params = [m2, m3, m4].concat(params);
388
+ var curves = [];
389
+ for (var i = 0; i < params.length; i += 3) {
390
+ let r1 = rotate(params[i][0], params[i][1], angleRad);
391
+ let r2 = rotate(params[i + 1][0], params[i + 1][1], angleRad);
392
+ let r3 = rotate(params[i + 2][0], params[i + 2][1], angleRad);
393
+ curves.push([r1.x, r1.y, r2.x, r2.y, r3.x, r3.y]);
394
+ }
395
+ return curves;
396
+ }
397
+ };
398
+ /*var clonePathData = function (pathData) {
399
+ return pathData.map(function (seg) {
400
+ return { type: seg.type, values: Array.prototype.slice.call(seg.values) }
401
+ });
402
+ };*/
403
+ // @info
404
+ // Takes any path data, returns path data that consists only from absolute commands.
405
+ var absolutizePathData = function (pathData) {
406
+ var absolutizedPathData = [];
407
+ var currentX = null;
408
+ var currentY = null;
409
+ var subpathX = null;
410
+ var subpathY = null;
411
+ pathData.forEach(function (seg) {
412
+ var type = seg.type;
413
+ if (type === "M") {
414
+ var x = seg.values[0];
415
+ var y = seg.values[1];
416
+ absolutizedPathData.push({ type: "M", values: [x, y] });
417
+ subpathX = x;
418
+ subpathY = y;
419
+ currentX = x;
420
+ currentY = y;
421
+ }
422
+ else if (type === "m") {
423
+ var x = currentX + seg.values[0];
424
+ var y = currentY + seg.values[1];
425
+ absolutizedPathData.push({ type: "M", values: [x, y] });
426
+ subpathX = x;
427
+ subpathY = y;
428
+ currentX = x;
429
+ currentY = y;
430
+ }
431
+ else if (type === "L") {
432
+ var x = seg.values[0];
433
+ var y = seg.values[1];
434
+ absolutizedPathData.push({ type: "L", values: [x, y] });
435
+ currentX = x;
436
+ currentY = y;
437
+ }
438
+ else if (type === "l") {
439
+ var x = currentX + seg.values[0];
440
+ var y = currentY + seg.values[1];
441
+ absolutizedPathData.push({ type: "L", values: [x, y] });
442
+ currentX = x;
443
+ currentY = y;
444
+ }
445
+ else if (type === "C") {
446
+ var x1 = seg.values[0];
447
+ var y1 = seg.values[1];
448
+ var x2 = seg.values[2];
449
+ var y2 = seg.values[3];
450
+ var x = seg.values[4];
451
+ var y = seg.values[5];
452
+ absolutizedPathData.push({ type: "C", values: [x1, y1, x2, y2, x, y] });
453
+ currentX = x;
454
+ currentY = y;
455
+ }
456
+ else if (type === "c") {
457
+ var x1 = currentX + seg.values[0];
458
+ var y1 = currentY + seg.values[1];
459
+ var x2 = currentX + seg.values[2];
460
+ var y2 = currentY + seg.values[3];
461
+ var x = currentX + seg.values[4];
462
+ var y = currentY + seg.values[5];
463
+ absolutizedPathData.push({ type: "C", values: [x1, y1, x2, y2, x, y] });
464
+ currentX = x;
465
+ currentY = y;
466
+ }
467
+ else if (type === "Q") {
468
+ var x1 = seg.values[0];
469
+ var y1 = seg.values[1];
470
+ var x = seg.values[2];
471
+ var y = seg.values[3];
472
+ absolutizedPathData.push({ type: "Q", values: [x1, y1, x, y] });
473
+ currentX = x;
474
+ currentY = y;
475
+ }
476
+ else if (type === "q") {
477
+ var x1 = currentX + seg.values[0];
478
+ var y1 = currentY + seg.values[1];
479
+ var x = currentX + seg.values[2];
480
+ var y = currentY + seg.values[3];
481
+ absolutizedPathData.push({ type: "Q", values: [x1, y1, x, y] });
482
+ currentX = x;
483
+ currentY = y;
484
+ }
485
+ else if (type === "A") {
486
+ var x = seg.values[5];
487
+ var y = seg.values[6];
488
+ absolutizedPathData.push({
489
+ type: "A",
490
+ values: [seg.values[0], seg.values[1], seg.values[2], seg.values[3], seg.values[4], x, y]
491
+ });
492
+ currentX = x;
493
+ currentY = y;
494
+ }
495
+ else if (type === "a") {
496
+ var x = currentX + seg.values[5];
497
+ var y = currentY + seg.values[6];
498
+ absolutizedPathData.push({
499
+ type: "A",
500
+ values: [seg.values[0], seg.values[1], seg.values[2], seg.values[3], seg.values[4], x, y]
501
+ });
502
+ currentX = x;
503
+ currentY = y;
504
+ }
505
+ else if (type === "H") {
506
+ var x = seg.values[0];
507
+ absolutizedPathData.push({ type: "H", values: [x] });
508
+ currentX = x;
509
+ }
510
+ else if (type === "h") {
511
+ var x = currentX + seg.values[0];
512
+ absolutizedPathData.push({ type: "H", values: [x] });
513
+ currentX = x;
514
+ }
515
+ else if (type === "V") {
516
+ var y = seg.values[0];
517
+ absolutizedPathData.push({ type: "V", values: [y] });
518
+ currentY = y;
519
+ }
520
+ else if (type === "v") {
521
+ var y = currentY + seg.values[0];
522
+ absolutizedPathData.push({ type: "V", values: [y] });
523
+ currentY = y;
524
+ }
525
+ else if (type === "S") {
526
+ var x2 = seg.values[0];
527
+ var y2 = seg.values[1];
528
+ var x = seg.values[2];
529
+ var y = seg.values[3];
530
+ absolutizedPathData.push({ type: "S", values: [x2, y2, x, y] });
531
+ currentX = x;
532
+ currentY = y;
533
+ }
534
+ else if (type === "s") {
535
+ var x2 = currentX + seg.values[0];
536
+ var y2 = currentY + seg.values[1];
537
+ var x = currentX + seg.values[2];
538
+ var y = currentY + seg.values[3];
539
+ absolutizedPathData.push({ type: "S", values: [x2, y2, x, y] });
540
+ currentX = x;
541
+ currentY = y;
542
+ }
543
+ else if (type === "T") {
544
+ var x = seg.values[0];
545
+ var y = seg.values[1];
546
+ absolutizedPathData.push({ type: "T", values: [x, y] });
547
+ currentX = x;
548
+ currentY = y;
549
+ }
550
+ else if (type === "t") {
551
+ var x = currentX + seg.values[0];
552
+ var y = currentY + seg.values[1];
553
+ absolutizedPathData.push({ type: "T", values: [x, y] });
554
+ currentX = x;
555
+ currentY = y;
556
+ }
557
+ else if (type === "Z" || type === "z") {
558
+ absolutizedPathData.push({ type: "Z", values: [] });
559
+ currentX = subpathX;
560
+ currentY = subpathY;
561
+ }
562
+ });
563
+ return absolutizedPathData;
564
+ };
565
+ // @info
566
+ // Takes path data that consists only from absolute commands, returns path data that consists only from
567
+ // "M", "L", "C" and "Z" commands.
568
+ var reducePathData = function (pathData) {
569
+ var reducedPathData = [];
570
+ var lastType = null;
571
+ var lastControlX = null;
572
+ var lastControlY = null;
573
+ var currentX = null;
574
+ var currentY = null;
575
+ var subpathX = null;
576
+ var subpathY = null;
577
+ pathData.forEach(function (seg) {
578
+ if (seg.type === "M") {
579
+ var x = seg.values[0];
580
+ var y = seg.values[1];
581
+ reducedPathData.push({ type: "M", values: [x, y] });
582
+ subpathX = x;
583
+ subpathY = y;
584
+ currentX = x;
585
+ currentY = y;
586
+ }
587
+ else if (seg.type === "C") {
588
+ var x1 = seg.values[0];
589
+ var y1 = seg.values[1];
590
+ var x2 = seg.values[2];
591
+ var y2 = seg.values[3];
592
+ var x = seg.values[4];
593
+ var y = seg.values[5];
594
+ reducedPathData.push({ type: "C", values: [x1, y1, x2, y2, x, y] });
595
+ lastControlX = x2;
596
+ lastControlY = y2;
597
+ currentX = x;
598
+ currentY = y;
599
+ }
600
+ else if (seg.type === "L") {
601
+ var x = seg.values[0];
602
+ var y = seg.values[1];
603
+ reducedPathData.push({ type: "L", values: [x, y] });
604
+ currentX = x;
605
+ currentY = y;
606
+ }
607
+ else if (seg.type === "H") {
608
+ var x = seg.values[0];
609
+ reducedPathData.push({ type: "L", values: [x, currentY] });
610
+ currentX = x;
611
+ }
612
+ else if (seg.type === "V") {
613
+ var y = seg.values[0];
614
+ reducedPathData.push({ type: "L", values: [currentX, y] });
615
+ currentY = y;
616
+ }
617
+ else if (seg.type === "S") {
618
+ var x2 = seg.values[0];
619
+ var y2 = seg.values[1];
620
+ var x = seg.values[2];
621
+ var y = seg.values[3];
622
+ var cx1, cy1;
623
+ if (lastType === "C" || lastType === "S") {
624
+ cx1 = currentX + (currentX - lastControlX);
625
+ cy1 = currentY + (currentY - lastControlY);
626
+ }
627
+ else {
628
+ cx1 = currentX;
629
+ cy1 = currentY;
630
+ }
631
+ reducedPathData.push({ type: "C", values: [cx1, cy1, x2, y2, x, y] });
632
+ lastControlX = x2;
633
+ lastControlY = y2;
634
+ currentX = x;
635
+ currentY = y;
636
+ }
637
+ else if (seg.type === "T") {
638
+ var x = seg.values[0];
639
+ var y = seg.values[1];
640
+ var x1, y1;
641
+ if (lastType === "Q" || lastType === "T") {
642
+ x1 = currentX + (currentX - lastControlX);
643
+ y1 = currentY + (currentY - lastControlY);
644
+ }
645
+ else {
646
+ x1 = currentX;
647
+ y1 = currentY;
648
+ }
649
+ var cx1 = currentX + 2 * (x1 - currentX) / 3;
650
+ var cy1 = currentY + 2 * (y1 - currentY) / 3;
651
+ var cx2 = x + 2 * (x1 - x) / 3;
652
+ var cy2 = y + 2 * (y1 - y) / 3;
653
+ reducedPathData.push({ type: "C", values: [cx1, cy1, cx2, cy2, x, y] });
654
+ lastControlX = x1;
655
+ lastControlY = y1;
656
+ currentX = x;
657
+ currentY = y;
658
+ }
659
+ else if (seg.type === "Q") {
660
+ var x1 = seg.values[0];
661
+ var y1 = seg.values[1];
662
+ var x = seg.values[2];
663
+ var y = seg.values[3];
664
+ var cx1 = currentX + 2 * (x1 - currentX) / 3;
665
+ var cy1 = currentY + 2 * (y1 - currentY) / 3;
666
+ var cx2 = x + 2 * (x1 - x) / 3;
667
+ var cy2 = y + 2 * (y1 - y) / 3;
668
+ reducedPathData.push({ type: "C", values: [cx1, cy1, cx2, cy2, x, y] });
669
+ lastControlX = x1;
670
+ lastControlY = y1;
671
+ currentX = x;
672
+ currentY = y;
673
+ }
674
+ else if (seg.type === "A") {
675
+ let r1 = Math.abs(seg.values[0]);
676
+ let r2 = Math.abs(seg.values[1]);
677
+ var angle = seg.values[2];
678
+ var largeArcFlag = seg.values[3];
679
+ var sweepFlag = seg.values[4];
680
+ var x = seg.values[5];
681
+ var y = seg.values[6];
682
+ if (r1 === 0 || r2 === 0) {
683
+ reducedPathData.push({ type: "C", values: [currentX, currentY, x, y, x, y] });
684
+ currentX = x;
685
+ currentY = y;
686
+ }
687
+ else {
688
+ if (currentX !== x || currentY !== y) {
689
+ var curves = arcToCubicCurves(currentX, currentY, x, y, r1, r2, angle, largeArcFlag, sweepFlag);
690
+ curves.forEach(function (curve) {
691
+ reducedPathData.push({ type: "C", values: curve });
692
+ });
693
+ currentX = x;
694
+ currentY = y;
695
+ }
696
+ }
697
+ }
698
+ else if (seg.type === "Z") {
699
+ reducedPathData.push(seg);
700
+ currentX = subpathX;
701
+ currentY = subpathY;
702
+ }
703
+ lastType = seg.type;
704
+ });
705
+ return reducedPathData;
706
+ };
707
+ SVGPathElement.prototype.getPathData = function (options) {
708
+ if (options && options.normalize) {
709
+ /*if (this[$cachedNormalizedPathData]) {
710
+ return clonePathData(this[$cachedNormalizedPathData]);
711
+ }
712
+ else */ {
713
+ let pathData;
714
+ /*if (this[$cachedPathData]) {
715
+ pathData = clonePathData(this[$cachedPathData]);
716
+ }
717
+ else */ {
718
+ pathData = parsePathDataString(this.getAttribute("d") || "");
719
+ //this[$cachedPathData] = clonePathData(pathData);
720
+ }
721
+ let normalizedPathData = reducePathData(absolutizePathData(pathData));
722
+ //this[$cachedNormalizedPathData] = clonePathData(normalizedPathData);
723
+ return normalizedPathData;
724
+ }
725
+ }
726
+ else {
727
+ /*if (this[$cachedPathData]) {
728
+ return clonePathData(this[$cachedPathData]);
729
+ }
730
+ else*/ {
731
+ let pathData = parsePathDataString(this.getAttribute("d") || "");
732
+ //this[$cachedPathData] = clonePathData(pathData);
733
+ return pathData;
734
+ }
735
+ }
736
+ };
737
+ SVGPathElement.prototype.setPathData = function (pathData) {
738
+ if (pathData.length === 0) {
739
+ this.removeAttribute("d");
740
+ }
741
+ else {
742
+ let d = "";
743
+ for (let i = 0, l = pathData.length; i < l; i += 1) {
744
+ let seg = pathData[i];
745
+ if (i > 0) {
746
+ d += " ";
747
+ }
748
+ d += seg.type;
749
+ if (seg.values && seg.values.length > 0) {
750
+ d += " " + seg.values.join(" ");
751
+ }
752
+ }
753
+ this.setAttribute("d", d);
754
+ }
755
+ };
756
+ SVGRectElement.prototype.getPathData = function (options) {
757
+ var x = this.x.baseVal.value;
758
+ var y = this.y.baseVal.value;
759
+ var width = this.width.baseVal.value;
760
+ var height = this.height.baseVal.value;
761
+ var rx = this.hasAttribute("rx") ? this.rx.baseVal.value : this.ry.baseVal.value;
762
+ var ry = this.hasAttribute("ry") ? this.ry.baseVal.value : this.rx.baseVal.value;
763
+ if (rx > width / 2) {
764
+ rx = width / 2;
765
+ }
766
+ if (ry > height / 2) {
767
+ ry = height / 2;
768
+ }
769
+ var pathData = [
770
+ { type: "M", values: [x + rx, y] },
771
+ { type: "H", values: [x + width - rx] },
772
+ { type: "A", values: [rx, ry, 0, 0, 1, x + width, y + ry] },
773
+ { type: "V", values: [y + height - ry] },
774
+ { type: "A", values: [rx, ry, 0, 0, 1, x + width - rx, y + height] },
775
+ { type: "H", values: [x + rx] },
776
+ { type: "A", values: [rx, ry, 0, 0, 1, x, y + height - ry] },
777
+ { type: "V", values: [y + ry] },
778
+ { type: "A", values: [rx, ry, 0, 0, 1, x + rx, y] },
779
+ { type: "Z", values: [] }
780
+ ];
781
+ // Get rid of redundant "A" segs when either rx or ry is 0
782
+ pathData = pathData.filter(function (s) {
783
+ return s.type === "A" && (s.values[0] === 0 || s.values[1] === 0) ? false : true;
784
+ });
785
+ if (options && options.normalize === true) {
786
+ pathData = reducePathData(pathData);
787
+ }
788
+ return pathData;
789
+ };
790
+ SVGCircleElement.prototype.getPathData = function (options) {
791
+ var cx = this.cx.baseVal.value;
792
+ var cy = this.cy.baseVal.value;
793
+ var r = this.r.baseVal.value;
794
+ var pathData = [
795
+ { type: "M", values: [cx + r, cy] },
796
+ { type: "A", values: [r, r, 0, 0, 1, cx, cy + r] },
797
+ { type: "A", values: [r, r, 0, 0, 1, cx - r, cy] },
798
+ { type: "A", values: [r, r, 0, 0, 1, cx, cy - r] },
799
+ { type: "A", values: [r, r, 0, 0, 1, cx + r, cy] },
800
+ { type: "Z", values: [] }
801
+ ];
802
+ if (options && options.normalize === true) {
803
+ pathData = reducePathData(pathData);
804
+ }
805
+ return pathData;
806
+ };
807
+ SVGEllipseElement.prototype.getPathData = function (options) {
808
+ var cx = this.cx.baseVal.value;
809
+ var cy = this.cy.baseVal.value;
810
+ var rx = this.rx.baseVal.value;
811
+ var ry = this.ry.baseVal.value;
812
+ var pathData = [
813
+ { type: "M", values: [cx + rx, cy] },
814
+ { type: "A", values: [rx, ry, 0, 0, 1, cx, cy + ry] },
815
+ { type: "A", values: [rx, ry, 0, 0, 1, cx - rx, cy] },
816
+ { type: "A", values: [rx, ry, 0, 0, 1, cx, cy - ry] },
817
+ { type: "A", values: [rx, ry, 0, 0, 1, cx + rx, cy] },
818
+ { type: "Z", values: [] }
819
+ ];
820
+ if (options && options.normalize === true) {
821
+ pathData = reducePathData(pathData);
822
+ }
823
+ return pathData;
824
+ };
825
+ SVGLineElement.prototype.getPathData = function () {
826
+ return [
827
+ { type: "M", values: [this.x1.baseVal.value, this.y1.baseVal.value] },
828
+ { type: "L", values: [this.x2.baseVal.value, this.y2.baseVal.value] }
829
+ ];
830
+ };
831
+ SVGPolylineElement.prototype.getPathData = function () {
832
+ var pathData = [];
833
+ for (var i = 0; i < this.points.numberOfItems; i += 1) {
834
+ var point = this.points.getItem(i);
835
+ pathData.push({
836
+ type: (i === 0 ? "M" : "L"),
837
+ values: [point.x, point.y]
838
+ });
839
+ }
840
+ return pathData;
841
+ };
842
+ SVGPolygonElement.prototype.getPathData = function () {
843
+ var pathData = [];
844
+ for (var i = 0; i < this.points.numberOfItems; i += 1) {
845
+ var point = this.points.getItem(i);
846
+ pathData.push({
847
+ type: (i === 0 ? "M" : "L"),
848
+ values: [point.x, point.y]
849
+ });
850
+ }
851
+ pathData.push({
852
+ type: "Z",
853
+ values: []
854
+ });
855
+ return pathData;
856
+ };
857
+ })();
858
+ }
859
+ export function straightenLine(p1, p2) {
860
+ let newP;
861
+ let alpha = calculateAlpha(p1, p2);
862
+ let normLength;
863
+ if ((alpha >= 337.5 && alpha < 360 || alpha >= 0 && alpha < 22.5)) { // 0
864
+ newP = { x: p2.x, y: p1.y };
865
+ }
866
+ else if ((alpha >= 22.5 && alpha < 67.5)) { // 45
867
+ normLength = calculateNormLegth(p1, p2);
868
+ newP = { x: p1.x + normLength, y: p1.y - normLength };
869
+ }
870
+ else if ((alpha >= 67.5 && alpha < 112.5)) { // 90
871
+ newP = { x: p1.x, y: p2.y };
872
+ }
873
+ else if ((alpha >= 112.5 && alpha < 157.5)) { // 135
874
+ normLength = calculateNormLegth(p1, p2);
875
+ newP = { x: p1.x - normLength, y: p1.y - normLength };
876
+ }
877
+ else if ((alpha >= 157.5 && alpha < 202.5)) { // 180
878
+ newP = { x: p2.x, y: p1.y };
879
+ }
880
+ else if ((alpha >= 202.5 && alpha < 247.5)) { // 225
881
+ normLength = calculateNormLegth(p1, p2);
882
+ newP = { x: p1.x - normLength, y: p1.y + normLength };
883
+ }
884
+ else if ((alpha >= 247.5 && alpha < 292.5)) { // 270
885
+ newP = { x: p1.x, y: p2.y };
886
+ }
887
+ else if ((alpha >= 292.5 && alpha < 337.5)) { // 315
888
+ normLength = calculateNormLegth(p1, p2);
889
+ newP = { x: p1.x + normLength, y: p1.y + normLength };
890
+ }
891
+ return newP;
892
+ }
893
+ export function calculateNormLegth(p1, p2) {
894
+ let normLenght;
895
+ let currentLength = Math.sqrt(Math.pow(p2.x - p1.x, 2) + Math.pow(p2.y - p1.y, 2));
896
+ let alpha = calculateAlpha(p1, p2);
897
+ let beta = alpha - ((Math.floor(alpha / 90) * 90) + 45);
898
+ normLenght = currentLength * Math.cos(beta * (Math.PI / 180)) / Math.sqrt(2);
899
+ return normLenght;
900
+ }
901
+ export function calculateAlpha(p1, p2) {
902
+ let alpha = -1 * Math.atan2(p2.y - p1.y, p2.x - p1.x) * 180 / Math.PI;
903
+ if (alpha < 0)
904
+ alpha += 360;
905
+ return alpha;
906
+ }
907
+ export function moveSVGPath(path, xFactor, yFactor) {
908
+ let newPathData = "";
909
+ let pd = path.getPathData({ normalize: true });
910
+ {
911
+ for (let p of pd) {
912
+ switch (p.type) {
913
+ case ('M'):
914
+ case ('m'):
915
+ case ('L'):
916
+ case ('l'):
917
+ case ('T'):
918
+ case ('t'):
919
+ newPathData += p.type + " " + (p.values[0] - xFactor) + " " + (p.values[1] - yFactor) + " ";
920
+ break;
921
+ case ('Z'):
922
+ case ('z'):
923
+ newPathData += p.type + " ";
924
+ break;
925
+ case ('C'):
926
+ case ('c'):
927
+ newPathData += p.type + " " + (p.values[0] - xFactor) + " " + (p.values[1] - yFactor) + " " + (p.values[2] - xFactor) + " " + (p.values[3] - yFactor) + " " + (p.values[4] - xFactor) + " " + (p.values[5] - yFactor) + " ";
928
+ break;
929
+ case ('S'):
930
+ case ('s'):
931
+ case ('Q'):
932
+ case ('q'):
933
+ newPathData += p.type + " " + (p.values[0] - xFactor) + " " + (p.values[1] - yFactor) + " " + (p.values[2] - xFactor) + " " + (p.values[3] - yFactor) + " ";
934
+ break;
935
+ case ('A'):
936
+ case ('a'):
937
+ newPathData += p.type + " " + (p.values[0] - xFactor) + " " + (p.values[1] - yFactor) + " " + p.values[2] + " " + p.values[3] + " " + p.values[4] + " " + (p.values[5] - xFactor) + " " + (p.values[6] - yFactor) + " ";
938
+ break;
939
+ }
940
+ }
941
+ }
942
+ return newPathData;
943
+ }
944
+ export function createPathD(path) {
945
+ let pathD = "";
946
+ for (let p of path) {
947
+ pathD += p.type + " ";
948
+ for (var i = 0; i < p.values.length; i++) {
949
+ if (p.values[i] != null && !isNaN(p.values[i])) {
950
+ pathD += p.values[i] + " ";
951
+ }
952
+ }
953
+ }
954
+ return pathD;
955
+ }