xmlui 0.4.1 → 0.4.2-beta.2

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 (333) hide show
  1. package/dist/{Pdf-49TqXRNN.mjs → Pdf-Cw4rsLlC.mjs} +1 -1
  2. package/dist/{Pdf-BH2vx5Qr.mjs → Pdf-DTxKB72g.mjs} +1 -1
  3. package/dist/{apiInterceptorWorker-BBlmEoWI.mjs → apiInterceptorWorker-Cwqldrsi.mjs} +1 -1
  4. package/dist/{apiInterceptorWorker-Bt5xchwi.mjs → apiInterceptorWorker-DXlNa2pZ.mjs} +1 -1
  5. package/dist/core-CiRlrzNN.mjs +5389 -0
  6. package/dist/core-TkN1rPOq.mjs +5390 -0
  7. package/dist/grammar.tmLanguage-BELR-62I.mjs +600 -0
  8. package/dist/{index-D4lrwrU-.mjs → index-DNI2rMij.mjs} +12626 -13066
  9. package/dist/{index-standalone-OPhLIAuf.mjs → index-standalone-CjgKrRur.mjs} +28694 -29136
  10. package/dist/index-standalone.css +1 -1
  11. package/dist/index.css +1 -1
  12. package/dist/{nivo-bar.es-DGyxXAiC.mjs → nivo-bar.es-ksaRLFWg.mjs} +2 -2
  13. package/dist/{nivo-geo.es-xKJj5CIr.mjs → nivo-geo.es-CKScMd6z.mjs} +2 -2
  14. package/dist/{nivo-legends.es-Dp7DGs5k.mjs → nivo-legends.es-COxD-HVb.mjs} +1 -1
  15. package/dist/{nivo-pie.es-BXZkJTQT.mjs → nivo-pie.es-O_e-F1XQ.mjs} +2 -2
  16. package/dist/{react-apexcharts.min-ZKwRrO8G.mjs → react-apexcharts.min-CUpL1QAf.mjs} +1 -1
  17. package/dist/scripts/docs/syntax/grammar.tmLanguage.json +348 -0
  18. package/dist/scripts/docs/syntax/textMate/xmlui.json +629 -0
  19. package/dist/scripts/{bin → xmlui/bin}/vite-ueml-plugin.js +11 -16
  20. package/dist/scripts/{src → xmlui/src}/components/App/App.js +26 -21
  21. package/dist/scripts/{src → xmlui/src}/components/AppHeader/AppHeader.js +2 -4
  22. package/dist/scripts/{src → xmlui/src}/components/Avatar/Avatar.js +3 -3
  23. package/dist/scripts/{src → xmlui/src}/components/Button/Button.js +4 -2
  24. package/dist/scripts/xmlui/src/components/Card/Card.js +76 -0
  25. package/dist/scripts/{src → xmlui/src}/components/Chart/Chart.js +7 -6
  26. package/dist/scripts/{src → xmlui/src}/components/Combobox/Combobox.js +60 -22
  27. package/dist/scripts/{src → xmlui/src}/components/ComponentProvider.js +28 -8
  28. package/dist/scripts/{src → xmlui/src}/components/DatePicker/DatePicker.js +1 -1
  29. package/dist/scripts/{src → xmlui/src}/components/DropdownMenu/DropdownMenu.js +21 -14
  30. package/dist/scripts/{src → xmlui/src}/components/FlowLayout/FlowLayout.js +10 -9
  31. package/dist/scripts/{src → xmlui/src}/components/Footer/Footer.js +2 -2
  32. package/dist/scripts/{src → xmlui/src}/components/FormItem/FormItem.js +1 -1
  33. package/dist/scripts/xmlui/src/components/FormSection/FormSection.js +47 -0
  34. package/dist/scripts/{src → xmlui/src}/components/Heading/Heading.js +1 -1
  35. package/dist/scripts/{src → xmlui/src}/components/Icon/Icon.js +4 -3
  36. package/dist/scripts/xmlui/src/components/Icon/TrendingDownIcon.js +10 -0
  37. package/dist/scripts/xmlui/src/components/Icon/TrendingUpIcon.js +10 -0
  38. package/dist/scripts/xmlui/src/components/IconInfoCard/IconInfoCard.js +52 -0
  39. package/dist/scripts/{src → xmlui/src}/components/IconProvider.js +4 -1
  40. package/dist/scripts/{src → xmlui/src}/components/Image/Image.js +4 -4
  41. package/dist/scripts/{src → xmlui/src}/components/Link/Link.js +4 -4
  42. package/dist/scripts/{src → xmlui/src}/components/Map/Map.js +7 -1
  43. package/dist/scripts/{src → xmlui/src}/components/ModalDialog/ModalDialog.js +12 -5
  44. package/dist/scripts/{src → xmlui/src}/components/MultiCombobox/MultiCombobox.js +1 -1
  45. package/dist/scripts/{src → xmlui/src}/components/MultiSelect/MultiSelect.js +3 -3
  46. package/dist/scripts/{src → xmlui/src}/components/NavLink/NavLink.js +4 -3
  47. package/dist/scripts/{src → xmlui/src}/components/NavPanel/NavPanel.js +10 -4
  48. package/dist/scripts/xmlui/src/components/PageHeader/PageHeader.js +48 -0
  49. package/dist/scripts/{src → xmlui/src}/components/ProgressBar/ProgressBar.js +5 -4
  50. package/dist/scripts/{src → xmlui/src}/components/RadioGroup/RadioGroup.js +2 -1
  51. package/dist/scripts/{src → xmlui/src}/components/Select/Select.js +6 -3
  52. package/dist/scripts/{src → xmlui/src}/components/StickyBox/StickyBox.js +1 -1
  53. package/dist/scripts/{src → xmlui/src}/components/Table/Table.js +65 -54
  54. package/dist/scripts/xmlui/src/components/TableHeader/TableHeader.js +31 -0
  55. package/dist/scripts/{src → xmlui/src}/components/Text/Text.js +34 -13
  56. package/dist/scripts/{src → xmlui/src}/components/ThemeChanger/ThemeChanger.js +3 -24
  57. package/dist/scripts/{src → xmlui/src}/components/Toggle/Toggle.js +9 -8
  58. package/dist/scripts/xmlui/src/components/Toolbar/Toolbar.js +26 -0
  59. package/dist/scripts/xmlui/src/components/ToolbarButton/ToolbarButton.js +33 -0
  60. package/dist/scripts/xmlui/src/components/TrendLabel/TrendLabel.js +79 -0
  61. package/dist/scripts/{src → xmlui/src}/components-core/Component.js +11 -8
  62. package/dist/scripts/{src → xmlui/src}/components-core/ComponentDecorator.js +17 -3
  63. package/dist/scripts/{src → xmlui/src}/components-core/CompoundComponent.js +7 -20
  64. package/dist/scripts/xmlui/src/components-core/InspectorContext.js +176 -0
  65. package/dist/scripts/{src → xmlui/src}/components-core/RootComponent.js +8 -6
  66. package/dist/scripts/{src/components-core/ChildrenSlot.js → xmlui/src/components-core/Slot.js} +3 -3
  67. package/dist/scripts/xmlui/src/components-core/XmluiCodeHighlighter.js +95 -0
  68. package/dist/scripts/{src → xmlui/src}/components-core/container/Container.js +2 -2
  69. package/dist/scripts/{src → xmlui/src}/components-core/loader/DataLoader.js +14 -6
  70. package/dist/scripts/{src → xmlui/src}/components-core/script-runner/eval-tree-common.js +2 -7
  71. package/dist/scripts/{src → xmlui/src}/components-core/script-runner/process-statement-async.js +0 -59
  72. package/dist/scripts/{src → xmlui/src}/components-core/script-runner/process-statement-common.js +2 -2
  73. package/dist/scripts/{src → xmlui/src}/components-core/theming/ThemeProvider.js +4 -0
  74. package/dist/scripts/{src → xmlui/src}/components-core/theming/themes/root.js +20 -15
  75. package/dist/scripts/xmlui/src/components-core/theming/themes/theme-colors.js +569 -0
  76. package/dist/scripts/xmlui/src/components-core/theming/themes/xmlui.js +66 -0
  77. package/dist/scripts/{src → xmlui/src}/components-core/utils/misc.js +7 -28
  78. package/dist/scripts/xmlui/src/components-core/xmlui-parser.js +51 -0
  79. package/dist/scripts/{src → xmlui/src}/parsers/scripting/Parser.js +1 -1
  80. package/dist/scripts/{src → xmlui/src}/parsers/scripting/code-behind-collect.js +8 -4
  81. package/dist/scripts/{src/components-core/script-runner → xmlui/src/parsers/scripting}/modules.js +74 -6
  82. package/dist/scripts/{src/parsers/ueml → xmlui/src/parsers/xmlui-parser}/ParserError.js +1 -1
  83. package/dist/scripts/{src → xmlui/src}/parsers/xmlui-parser/diagnostics.js +1 -1
  84. package/dist/scripts/{src → xmlui/src}/parsers/xmlui-parser/parser.js +31 -27
  85. package/dist/scripts/{src → xmlui/src}/parsers/xmlui-parser/transform.js +123 -56
  86. package/dist/wasm-SPaT1zC5.mjs +5 -0
  87. package/dist/xmlui-C8fXVsN3.mjs +636 -0
  88. package/dist/xmlui-standalone.es.js +1 -1
  89. package/dist/xmlui-standalone.umd.js +289 -282
  90. package/dist/xmlui.es.d.ts +46 -22
  91. package/dist/xmlui.es.js +1 -1
  92. package/dist/xmlui.umd.js +123 -116
  93. package/package.json +15 -3
  94. package/dist/scripts/src/abstractions/BlockScope.js +0 -4
  95. package/dist/scripts/src/components/Card/Card.js +0 -65
  96. package/dist/scripts/src/components/FormSection/FormSection.js +0 -45
  97. package/dist/scripts/src/components-core/theming/themes/theme-colors.js +0 -407
  98. package/dist/scripts/src/components-core/theming/themes/xmlui.js +0 -32
  99. package/dist/scripts/src/components-core/xmlui-parser.js +0 -52
  100. package/dist/scripts/src/parsers/ueml/UemlHelper.js +0 -579
  101. package/dist/scripts/src/parsers/ueml/UemlInputStream.js +0 -59
  102. package/dist/scripts/src/parsers/ueml/UemlLexer.js +0 -868
  103. package/dist/scripts/src/parsers/ueml/UemlParser.js +0 -1439
  104. package/dist/scripts/src/parsers/ueml/UemlToken.js +0 -24
  105. /package/dist/scripts/{bin → xmlui/bin}/bootstrap.js +0 -0
  106. /package/dist/scripts/{bin → xmlui/bin}/build.js +0 -0
  107. /package/dist/scripts/{bin → xmlui/bin}/index.js +0 -0
  108. /package/dist/scripts/{bin → xmlui/bin}/preview.js +0 -0
  109. /package/dist/scripts/{bin → xmlui/bin}/start.js +0 -0
  110. /package/dist/scripts/{bin → xmlui/bin}/viteConfig.js +0 -0
  111. /package/dist/scripts/{src → xmlui/src}/abstractions/ActionDefs.js +0 -0
  112. /package/dist/scripts/{src → xmlui/src}/abstractions/AppContextDefs.js +0 -0
  113. /package/dist/scripts/{src → xmlui/src}/abstractions/ComponentDefs.js +0 -0
  114. /package/dist/scripts/{src → xmlui/src}/abstractions/ComponentDescriptorDefs.js +0 -0
  115. /package/dist/scripts/{src → xmlui/src}/abstractions/ContainerDefs.js +0 -0
  116. /package/dist/scripts/{src → xmlui/src}/abstractions/FunctionDefs.js +0 -0
  117. /package/dist/scripts/{src → xmlui/src}/abstractions/RendererDefs.js +0 -0
  118. /package/dist/scripts/{src/abstractions/scripting/ScriptParserError.js → xmlui/src/abstractions/scripting/BlockScope.js} +0 -0
  119. /package/dist/scripts/{src/components-core/script-runner → xmlui/src/abstractions/scripting}/LogicalThread.js +0 -0
  120. /package/dist/scripts/{src/components-core/script-runner → xmlui/src/abstractions/scripting}/LoopScope.js +0 -0
  121. /package/dist/scripts/{src/abstractions/scripting/ScriptingSourceTree.js → xmlui/src/abstractions/scripting/ScriptParserError.js} +0 -0
  122. /package/dist/scripts/{src/components-core/abstractions/ComponentRenderer.js → xmlui/src/abstractions/scripting/ScriptingSourceTree.js} +0 -0
  123. /package/dist/scripts/{src → xmlui/src}/abstractions/scripting/Token.js +0 -0
  124. /package/dist/scripts/{src/components-core/script-runner → xmlui/src/abstractions/scripting}/TryScope.js +0 -0
  125. /package/dist/scripts/{src/components-core/abstractions/LoaderRenderer.js → xmlui/src/abstractions/scripting/modules.js} +0 -0
  126. /package/dist/scripts/{src → xmlui/src}/components/App/AppLayoutContext.js +0 -0
  127. /package/dist/scripts/{src → xmlui/src}/components/App/AppStateContext.js +0 -0
  128. /package/dist/scripts/{src → xmlui/src}/components/App/Sheet.js +0 -0
  129. /package/dist/scripts/{src → xmlui/src}/components/AppState/AppState.js +0 -0
  130. /package/dist/scripts/{src → xmlui/src}/components/Badge/Badge.js +0 -0
  131. /package/dist/scripts/{src → xmlui/src}/components/BarChart/BarChart.js +0 -0
  132. /package/dist/scripts/{src → xmlui/src}/components/Bookmark/Bookmark.js +0 -0
  133. /package/dist/scripts/{src → xmlui/src}/components/ChangeListener/ChangeListener.js +0 -0
  134. /package/dist/scripts/{src → xmlui/src}/components/Checkbox/Checkbox.js +0 -0
  135. /package/dist/scripts/{src → xmlui/src}/components/ContentSeparator/ContentSeparator.js +0 -0
  136. /package/dist/scripts/{src → xmlui/src}/components/EmojiSelector/EmojiSelector.js +0 -0
  137. /package/dist/scripts/{src → xmlui/src}/components/FileInput/FileInput.js +0 -0
  138. /package/dist/scripts/{src → xmlui/src}/components/FileUploadDropZone/FileUploadDropZone.js +0 -0
  139. /package/dist/scripts/{src → xmlui/src}/components/Form/Form.js +0 -0
  140. /package/dist/scripts/{src → xmlui/src}/components/Form/FormContext.js +0 -0
  141. /package/dist/scripts/{src → xmlui/src}/components/Form/formActions.js +0 -0
  142. /package/dist/scripts/{src → xmlui/src}/components/FormItem/HelperText.js +0 -0
  143. /package/dist/scripts/{src → xmlui/src}/components/FormItem/ItemWithLabel.js +0 -0
  144. /package/dist/scripts/{src → xmlui/src}/components/FormItem/Validations.js +0 -0
  145. /package/dist/scripts/{src → xmlui/src}/components/HoverCard/HoverCard.js +0 -0
  146. /package/dist/scripts/{src → xmlui/src}/components/Icon/ApiIcon.js +0 -0
  147. /package/dist/scripts/{src → xmlui/src}/components/Icon/Attach.js +0 -0
  148. /package/dist/scripts/{src → xmlui/src}/components/Icon/Binding.js +0 -0
  149. /package/dist/scripts/{src → xmlui/src}/components/Icon/BoardIcon.js +0 -0
  150. /package/dist/scripts/{src → xmlui/src}/components/Icon/BoxIcon.js +0 -0
  151. /package/dist/scripts/{src → xmlui/src}/components/Icon/CheckIcon.js +0 -0
  152. /package/dist/scripts/{src → xmlui/src}/components/Icon/ChevronDownIcon.js +0 -0
  153. /package/dist/scripts/{src → xmlui/src}/components/Icon/ChevronLeft.js +0 -0
  154. /package/dist/scripts/{src → xmlui/src}/components/Icon/ChevronRight.js +0 -0
  155. /package/dist/scripts/{src → xmlui/src}/components/Icon/ChevronUpIcon.js +0 -0
  156. /package/dist/scripts/{src → xmlui/src}/components/Icon/CodeFileIcon.js +0 -0
  157. /package/dist/scripts/{src → xmlui/src}/components/Icon/CodeSandbox.js +0 -0
  158. /package/dist/scripts/{src → xmlui/src}/components/Icon/CompactListIcon.js +0 -0
  159. /package/dist/scripts/{src → xmlui/src}/components/Icon/ContentCopyIcon.js +0 -0
  160. /package/dist/scripts/{src → xmlui/src}/components/Icon/DatabaseIcon.js +0 -0
  161. /package/dist/scripts/{src → xmlui/src}/components/Icon/DocFileIcon.js +0 -0
  162. /package/dist/scripts/{src → xmlui/src}/components/Icon/DocIcon.js +0 -0
  163. /package/dist/scripts/{src → xmlui/src}/components/Icon/DotMenuHorizontalIcon.js +0 -0
  164. /package/dist/scripts/{src → xmlui/src}/components/Icon/DotMenuIcon.js +0 -0
  165. /package/dist/scripts/{src → xmlui/src}/components/Icon/EmailIcon.js +0 -0
  166. /package/dist/scripts/{src → xmlui/src}/components/Icon/EmptyFolderIcon.js +0 -0
  167. /package/dist/scripts/{src → xmlui/src}/components/Icon/ErrorIcon.js +0 -0
  168. /package/dist/scripts/{src → xmlui/src}/components/Icon/ExpressionIcon.js +0 -0
  169. /package/dist/scripts/{src → xmlui/src}/components/Icon/FillPlusCricleIcon.js +0 -0
  170. /package/dist/scripts/{src → xmlui/src}/components/Icon/FilterIcon.js +0 -0
  171. /package/dist/scripts/{src → xmlui/src}/components/Icon/FolderIcon.js +0 -0
  172. /package/dist/scripts/{src → xmlui/src}/components/Icon/GlobeIcon.js +0 -0
  173. /package/dist/scripts/{src → xmlui/src}/components/Icon/HomeIcon.js +0 -0
  174. /package/dist/scripts/{src → xmlui/src}/components/Icon/HyperLinkIcon.js +0 -0
  175. /package/dist/scripts/{src → xmlui/src}/components/Icon/ImageFileIcon.js +0 -0
  176. /package/dist/scripts/{src → xmlui/src}/components/Icon/LinkIcon.js +0 -0
  177. /package/dist/scripts/{src → xmlui/src}/components/Icon/ListIcon.js +0 -0
  178. /package/dist/scripts/{src → xmlui/src}/components/Icon/LooseListIcon.js +0 -0
  179. /package/dist/scripts/{src → xmlui/src}/components/Icon/MoonIcon.js +0 -0
  180. /package/dist/scripts/{src → xmlui/src}/components/Icon/MoreOptionsIcon.js +0 -0
  181. /package/dist/scripts/{src → xmlui/src}/components/Icon/PDFIcon.js +0 -0
  182. /package/dist/scripts/{src → xmlui/src}/components/Icon/PenIcon.js +0 -0
  183. /package/dist/scripts/{src → xmlui/src}/components/Icon/PhoneIcon.js +0 -0
  184. /package/dist/scripts/{src → xmlui/src}/components/Icon/PhotoIcon.js +0 -0
  185. /package/dist/scripts/{src → xmlui/src}/components/Icon/PlusIcon.js +0 -0
  186. /package/dist/scripts/{src → xmlui/src}/components/Icon/SearchIcon.js +0 -0
  187. /package/dist/scripts/{src → xmlui/src}/components/Icon/ShareIcon.js +0 -0
  188. /package/dist/scripts/{src → xmlui/src}/components/Icon/SunIcon.js +0 -0
  189. /package/dist/scripts/{src → xmlui/src}/components/Icon/TrashIcon.js +0 -0
  190. /package/dist/scripts/{src → xmlui/src}/components/Icon/TxtIcon.js +0 -0
  191. /package/dist/scripts/{src → xmlui/src}/components/Icon/UnknownFileIcon.js +0 -0
  192. /package/dist/scripts/{src → xmlui/src}/components/Icon/UnlinkIcon.js +0 -0
  193. /package/dist/scripts/{src → xmlui/src}/components/Icon/UserIcon.js +0 -0
  194. /package/dist/scripts/{src → xmlui/src}/components/Icon/WarningIcon.js +0 -0
  195. /package/dist/scripts/{src → xmlui/src}/components/Icon/XlsIcon.js +0 -0
  196. /package/dist/scripts/{src → xmlui/src}/components/IconRegistryContext.js +0 -0
  197. /package/dist/scripts/{src → xmlui/src}/components/Input/InputAdornment.js +0 -0
  198. /package/dist/scripts/{src → xmlui/src}/components/Input/input-abstractions.js +0 -0
  199. /package/dist/scripts/{src → xmlui/src}/components/Items/Items.js +0 -0
  200. /package/dist/scripts/{src → xmlui/src}/components/List/List.js +0 -0
  201. /package/dist/scripts/{src → xmlui/src}/components/Logo/Logo.js +0 -0
  202. /package/dist/scripts/{src → xmlui/src}/components/Map/world_countries.json +0 -0
  203. /package/dist/scripts/{src → xmlui/src}/components/Markdown/Markdown.js +0 -0
  204. /package/dist/scripts/{src → xmlui/src}/components/ModalDialog/ConfirmationModalContextProvider.js +0 -0
  205. /package/dist/scripts/{src → xmlui/src}/components/ModalDialog/Dialog.js +0 -0
  206. /package/dist/scripts/{src → xmlui/src}/components/NavGroup/NavGroup.js +0 -0
  207. /package/dist/scripts/{src → xmlui/src}/components/NoResult/NoResult.js +0 -0
  208. /package/dist/scripts/{src → xmlui/src}/components/NumberBox/NumberBox.js +0 -0
  209. /package/dist/scripts/{src → xmlui/src}/components/Option/Option.js +0 -0
  210. /package/dist/scripts/{src → xmlui/src}/components/PageMetaTitle/PageMetaTitle.js +0 -0
  211. /package/dist/scripts/{src → xmlui/src}/components/Pages/Pages.js +0 -0
  212. /package/dist/scripts/{src → xmlui/src}/components/Pdf/LazyPdf.js +0 -0
  213. /package/dist/scripts/{src → xmlui/src}/components/Pdf/Pdf.js +0 -0
  214. /package/dist/scripts/{src → xmlui/src}/components/PieChart/PieChart.js +0 -0
  215. /package/dist/scripts/{src → xmlui/src}/components/PositionedContainer/PositionedContainer.js +0 -0
  216. /package/dist/scripts/{src → xmlui/src}/components/Queue/Queue.js +0 -0
  217. /package/dist/scripts/{src → xmlui/src}/components/Queue/queueActions.js +0 -0
  218. /package/dist/scripts/{src → xmlui/src}/components/RealTimeAdapter/RealTimeAdapter.js +0 -0
  219. /package/dist/scripts/{src → xmlui/src}/components/Redirect/Redirect.js +0 -0
  220. /package/dist/scripts/{src → xmlui/src}/components/Select/SelectContext.js +0 -0
  221. /package/dist/scripts/{src → xmlui/src}/components/SelectionStore/SelectionStore.js +0 -0
  222. /package/dist/scripts/{src → xmlui/src}/components/SpaceFiller/SpaceFiller.js +0 -0
  223. /package/dist/scripts/{src → xmlui/src}/components/Spinner/Spinner.js +0 -0
  224. /package/dist/scripts/{src → xmlui/src}/components/Splitter/Splitter.js +0 -0
  225. /package/dist/scripts/{src → xmlui/src}/components/Splitter/utils.js +0 -0
  226. /package/dist/scripts/{src → xmlui/src}/components/Stack/Stack.js +0 -0
  227. /package/dist/scripts/{src → xmlui/src}/components/Switch/Switch.js +0 -0
  228. /package/dist/scripts/{src → xmlui/src}/components/Table/useRowSelection.js +0 -0
  229. /package/dist/scripts/{src → xmlui/src}/components/TableColumnDef/TableColumnDef.js +0 -0
  230. /package/dist/scripts/{src → xmlui/src}/components/TableColumnDef/TableContext.js +0 -0
  231. /package/dist/scripts/{src → xmlui/src}/components/Tabs/Tabs.js +0 -0
  232. /package/dist/scripts/{src → xmlui/src}/components/TextArea/TextArea.js +0 -0
  233. /package/dist/scripts/{src → xmlui/src}/components/TextArea/TextAreaResizable.js +0 -0
  234. /package/dist/scripts/{src → xmlui/src}/components/TextArea/useComposedRef.js +0 -0
  235. /package/dist/scripts/{src → xmlui/src}/components/TextBox/TextBox.js +0 -0
  236. /package/dist/scripts/{src → xmlui/src}/components/Theme/NotificationToast.js +0 -0
  237. /package/dist/scripts/{src → xmlui/src}/components/Theme/Theme.js +0 -0
  238. /package/dist/scripts/{src → xmlui/src}/components/Tree/TreeComponent.js +0 -0
  239. /package/dist/scripts/{src → xmlui/src}/components/ValidationSummary/ValidationSummary.js +0 -0
  240. /package/dist/scripts/{src → xmlui/src}/components/ViewComponentRegistryContext.js +0 -0
  241. /package/dist/scripts/{src/parsers/ueml/source-tree.js → xmlui/src/components/abstractions.js} +0 -0
  242. /package/dist/scripts/{src → xmlui/src}/components/chart-color-schemes.js +0 -0
  243. /package/dist/scripts/{src → xmlui/src}/components/component-utils.js +0 -0
  244. /package/dist/scripts/{src → xmlui/src}/components/container-helpers.js +0 -0
  245. /package/dist/scripts/{src → xmlui/src}/components-core/ApiBoundComponent.js +0 -0
  246. /package/dist/scripts/{src → xmlui/src}/components-core/AppContext.js +0 -0
  247. /package/dist/scripts/{src → xmlui/src}/components-core/EngineError.js +0 -0
  248. /package/dist/scripts/{src → xmlui/src}/components-core/ErrorBoundary.js +0 -0
  249. /package/dist/scripts/{src → xmlui/src}/components-core/Fragment.js +0 -0
  250. /package/dist/scripts/{src → xmlui/src}/components-core/InvalidComponent.js +0 -0
  251. /package/dist/scripts/{src → xmlui/src}/components-core/LoaderComponent.js +0 -0
  252. /package/dist/scripts/{src → xmlui/src}/components-core/RestApiProxy.js +0 -0
  253. /package/dist/scripts/{src → xmlui/src}/components-core/RouteContext.js +0 -0
  254. /package/dist/scripts/{src → xmlui/src}/components-core/ScrollContext.js +0 -0
  255. /package/dist/scripts/{src → xmlui/src}/components-core/UnknownComponent.js +0 -0
  256. /package/dist/scripts/{src/components-core/abstractions/treeAbstractions.js → xmlui/src/components-core/abstractions/ComponentRenderer.js} +0 -0
  257. /package/dist/scripts/{src/components-core/interception/abstractions.js → xmlui/src/components-core/abstractions/LoaderRenderer.js} +0 -0
  258. /package/dist/scripts/{src → xmlui/src}/components-core/abstractions/containers.js +0 -0
  259. /package/dist/scripts/{src/components/abstractions.js → xmlui/src/components-core/abstractions/treeAbstractions.js} +0 -0
  260. /package/dist/scripts/{src → xmlui/src}/components-core/action/ApiAction.js +0 -0
  261. /package/dist/scripts/{src → xmlui/src}/components-core/action/DownloadFileAction.js +0 -0
  262. /package/dist/scripts/{src → xmlui/src}/components-core/action/NavigateAction.js +0 -0
  263. /package/dist/scripts/{src → xmlui/src}/components-core/action/TimedAction.js +0 -0
  264. /package/dist/scripts/{src → xmlui/src}/components-core/action/UploadAction.js +0 -0
  265. /package/dist/scripts/{src → xmlui/src}/components-core/action/actions.js +0 -0
  266. /package/dist/scripts/{src → xmlui/src}/components-core/appContext/date-functions.js +0 -0
  267. /package/dist/scripts/{src → xmlui/src}/components-core/appContext/misc-utils.js +0 -0
  268. /package/dist/scripts/{src → xmlui/src}/components-core/component-hooks.js +0 -0
  269. /package/dist/scripts/{src → xmlui/src}/components-core/constants.js +0 -0
  270. /package/dist/scripts/{src → xmlui/src}/components-core/container/ContainerComponentDef.js +0 -0
  271. /package/dist/scripts/{src → xmlui/src}/components-core/container/buildProxy.js +0 -0
  272. /package/dist/scripts/{src → xmlui/src}/components-core/container/collectFnVarDeps.js +0 -0
  273. /package/dist/scripts/{src → xmlui/src}/components-core/container/valueExtractor.js +0 -0
  274. /package/dist/scripts/{src → xmlui/src}/components-core/descriptorHelper.js +0 -0
  275. /package/dist/scripts/{src/parsers/style-parser/source-tree.js → xmlui/src/components-core/interception/abstractions.js} +0 -0
  276. /package/dist/scripts/{src → xmlui/src}/components-core/interception/useApiInterceptorContext.js +0 -0
  277. /package/dist/scripts/{src → xmlui/src}/components-core/loader/ApiLoader.js +0 -0
  278. /package/dist/scripts/{src → xmlui/src}/components-core/loader/ExternalDataLoader.js +0 -0
  279. /package/dist/scripts/{src → xmlui/src}/components-core/loader/Loader.js +0 -0
  280. /package/dist/scripts/{src → xmlui/src}/components-core/loader/MockLoaderRenderer.js +0 -0
  281. /package/dist/scripts/{src → xmlui/src}/components-core/loader/PageableLoader.js +0 -0
  282. /package/dist/scripts/{src → xmlui/src}/components-core/renderers.js +0 -0
  283. /package/dist/scripts/{src → xmlui/src}/components-core/reportEngineError.js +0 -0
  284. /package/dist/scripts/{src → xmlui/src}/components-core/script-runner/BindingTreeEvaluationContext.js +0 -0
  285. /package/dist/scripts/{src → xmlui/src}/components-core/script-runner/ICustomOperations.js +0 -0
  286. /package/dist/scripts/{src → xmlui/src}/components-core/script-runner/ParameterParser.js +0 -0
  287. /package/dist/scripts/{src → xmlui/src}/components-core/script-runner/asyncProxy.js +0 -0
  288. /package/dist/scripts/{src → xmlui/src}/components-core/script-runner/bannedFunctions.js +0 -0
  289. /package/dist/scripts/{src → xmlui/src}/components-core/script-runner/custom-operations-registry.js +0 -0
  290. /package/dist/scripts/{src → xmlui/src}/components-core/script-runner/custom-ui-data.js +0 -0
  291. /package/dist/scripts/{src → xmlui/src}/components-core/script-runner/eval-tree-async.js +0 -0
  292. /package/dist/scripts/{src → xmlui/src}/components-core/script-runner/eval-tree-sync.js +0 -0
  293. /package/dist/scripts/{src → xmlui/src}/components-core/script-runner/process-statement-sync.js +0 -0
  294. /package/dist/scripts/{src → xmlui/src}/components-core/script-runner/statement-queue.js +0 -0
  295. /package/dist/scripts/{src → xmlui/src}/components-core/script-runner/visitors.js +0 -0
  296. /package/dist/scripts/{src → xmlui/src}/components-core/theming/ThemeContext.js +0 -0
  297. /package/dist/scripts/{src → xmlui/src}/components-core/theming/abstractions.js +0 -0
  298. /package/dist/scripts/{src → xmlui/src}/components-core/theming/extendThemeUtils.js +0 -0
  299. /package/dist/scripts/{src → xmlui/src}/components-core/theming/hvar.js +0 -0
  300. /package/dist/scripts/{src → xmlui/src}/components-core/theming/themeVars.js +0 -0
  301. /package/dist/scripts/{src → xmlui/src}/components-core/theming/themes/base-utils.js +0 -0
  302. /package/dist/scripts/{src → xmlui/src}/components-core/theming/themes/palette.js +0 -0
  303. /package/dist/scripts/{src → xmlui/src}/components-core/theming/themes/solid.js +0 -0
  304. /package/dist/scripts/{src → xmlui/src}/components-core/theming/transformThemeVars.js +0 -0
  305. /package/dist/scripts/{src → xmlui/src}/components-core/utils/DataLoaderQueryKeyGenerator.js +0 -0
  306. /package/dist/scripts/{src → xmlui/src}/components-core/utils/LruCache.js +0 -0
  307. /package/dist/scripts/{src → xmlui/src}/components-core/utils/actionUtils.js +0 -0
  308. /package/dist/scripts/{src → xmlui/src}/components-core/utils/classnames.js +0 -0
  309. /package/dist/scripts/{src → xmlui/src}/components-core/utils/css-utils.js +0 -0
  310. /package/dist/scripts/{src → xmlui/src}/components-core/utils/date-utils.js +0 -0
  311. /package/dist/scripts/{src → xmlui/src}/components-core/utils/extractParam.js +0 -0
  312. /package/dist/scripts/{src → xmlui/src}/components-core/utils/hooks.js +0 -0
  313. /package/dist/scripts/{src → xmlui/src}/components-core/utils/mergeProps.js +0 -0
  314. /package/dist/scripts/{src → xmlui/src}/components-core/utils/statementUtils.js +0 -0
  315. /package/dist/scripts/{src → xmlui/src}/components-core/utils/treeUtils.js +0 -0
  316. /package/dist/scripts/{src/parsers/scripting → xmlui/src/parsers/common}/InputStream.js +0 -0
  317. /package/dist/scripts/{src → xmlui/src}/parsers/scripting/Lexer.js +0 -0
  318. /package/dist/scripts/{src → xmlui/src}/parsers/scripting/ParserError.js +0 -0
  319. /package/dist/scripts/{src → xmlui/src}/parsers/scripting/TokenTrait.js +0 -0
  320. /package/dist/scripts/{src → xmlui/src}/parsers/scripting/tree-visitor.js +0 -0
  321. /package/dist/scripts/{src → xmlui/src}/parsers/style-parser/StyleInputStream.js +0 -0
  322. /package/dist/scripts/{src → xmlui/src}/parsers/style-parser/StyleLexer.js +0 -0
  323. /package/dist/scripts/{src → xmlui/src}/parsers/style-parser/StyleParser.js +0 -0
  324. /package/dist/scripts/{src → xmlui/src}/parsers/style-parser/errors.js +0 -0
  325. /package/dist/scripts/{src/parsers/ueml/ueml-tree.js → xmlui/src/parsers/style-parser/source-tree.js} +0 -0
  326. /package/dist/scripts/{src → xmlui/src}/parsers/style-parser/style-compiler.js +0 -0
  327. /package/dist/scripts/{src → xmlui/src}/parsers/style-parser/tokens.js +0 -0
  328. /package/dist/scripts/{src → xmlui/src}/parsers/xmlui-parser/CharacterCodes.js +0 -0
  329. /package/dist/scripts/{src/parsers/ueml → xmlui/src/parsers/xmlui-parser}/fileExtensions.js +0 -0
  330. /package/dist/scripts/{src → xmlui/src}/parsers/xmlui-parser/scanner.js +0 -0
  331. /package/dist/scripts/{src → xmlui/src}/parsers/xmlui-parser/syntax-kind.js +0 -0
  332. /package/dist/scripts/{src → xmlui/src}/parsers/xmlui-parser/syntax-node.js +0 -0
  333. /package/dist/scripts/{src → xmlui/src}/parsers/xmlui-parser/utils.js +0 -0
@@ -1,1439 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.UemlParser = void 0;
4
- const UemlInputStream_1 = require("./UemlInputStream");
5
- const UemlLexer_1 = require("./UemlLexer");
6
- const UemlToken_1 = require("./UemlToken");
7
- const ParserError_1 = require("./ParserError");
8
- const UemlHelper_1 = require("./UemlHelper");
9
- const Parser_1 = require("../scripting/Parser");
10
- const code_behind_collect_1 = require("../scripting/code-behind-collect");
11
- const BindingTreeEvaluationContext_1 = require("../../components-core/script-runner/BindingTreeEvaluationContext");
12
- /**
13
- * This class parses a binding expression and transforms it into an evaluable expression tree
14
- */
15
- class UemlParser {
16
- /**
17
- * Initializes the parser with the specified source code
18
- * @param source Source code to parse
19
- * @param moduleResolver
20
- */
21
- constructor(source, moduleResolver = () => "") {
22
- this.source = source;
23
- this.moduleResolver = moduleResolver;
24
- // --- Keep track of error messages
25
- this._parseErrors = [];
26
- this._lexer = new UemlLexer_1.UemlLexer(new UemlInputStream_1.UemlInputStream(source));
27
- }
28
- /**
29
- * The errors raised during the parse phase
30
- */
31
- get errors() {
32
- return this._parseErrors;
33
- }
34
- /**
35
- * Gets the current token
36
- */
37
- get current() {
38
- return this._lexer.peek();
39
- }
40
- /**
41
- * Checks if we're at the end of the expression
42
- */
43
- get isEof() {
44
- return this._lexer.peek().type === UemlToken_1.UemlTokenType.Eof;
45
- }
46
- /**
47
- * Parses a component element
48
- *
49
- * umlNode
50
- * : umlComment* umlElement umlComment*
51
- * ;
52
- *
53
- * umlComment:
54
- * : "<!-- {any chars} -->"
55
- * ;
56
- */
57
- parseComponentElement() {
58
- const nodes = [];
59
- let hasUmlElement = false;
60
- let startToken = this._lexer.peek();
61
- while (!this.isEof) {
62
- switch (startToken.type) {
63
- case UemlToken_1.UemlTokenType.Comment:
64
- const commentToken = this._lexer.get();
65
- nodes.push(this.createNode("Comment", {
66
- text: commentToken.text,
67
- }, startToken));
68
- break;
69
- case UemlToken_1.UemlTokenType.OpenNodeStart:
70
- if (hasUmlElement) {
71
- this.reportError("U002", startToken);
72
- return null;
73
- }
74
- const element = this.parseElement();
75
- if (!element) {
76
- return null;
77
- }
78
- nodes.push(element);
79
- hasUmlElement = true;
80
- break;
81
- default:
82
- this.reportError("U001", startToken, startToken.text);
83
- return null;
84
- }
85
- // --- Move to the next token
86
- startToken = this._lexer.peek();
87
- }
88
- if (!hasUmlElement) {
89
- this.reportError("U002", startToken);
90
- return null;
91
- }
92
- return nodes;
93
- }
94
- parseFragment() {
95
- const nodes = [];
96
- let startToken = this._lexer.peek();
97
- while (!this.isEof) {
98
- switch (startToken.type) {
99
- case UemlToken_1.UemlTokenType.Comment:
100
- const commentToken = this._lexer.get();
101
- nodes.push(this.createNode("Comment", {
102
- text: commentToken.text,
103
- }, startToken));
104
- break;
105
- case UemlToken_1.UemlTokenType.OpenNodeStart:
106
- const element = this.parseElement();
107
- if (!element) {
108
- return null;
109
- }
110
- nodes.push(element);
111
- break;
112
- default:
113
- this.reportError("U001", startToken, startToken.text);
114
- return null;
115
- }
116
- // --- Move to the next token
117
- startToken = this._lexer.peek();
118
- }
119
- return nodes;
120
- }
121
- /**
122
- * Transforms the provided nodes to their component definition
123
- * @param nodes Nodes to transform
124
- */
125
- transformToComponentDef(nodes) {
126
- if (!nodes) {
127
- const parsedNodes = this.parseComponentElement();
128
- if (!parsedNodes)
129
- return null;
130
- nodes = parsedNodes;
131
- }
132
- // --- Check that the nodes contains exactly only a single component root element
133
- const rootElements = nodes.filter((e) => e.type === "Element");
134
- if (rootElements.length !== 1) {
135
- this.reportError("T001");
136
- return null;
137
- }
138
- // --- Search for the element, take a note of the preceding comment
139
- const index = nodes.findIndex((n) => n.type === "Element");
140
- const element = nodes[index];
141
- const comment = index > 0 ? nodes[index - 1] : undefined;
142
- if (!UemlHelper_1.UCRegex.test(element.id)) {
143
- this.reportError("T002");
144
- return null;
145
- }
146
- // --- Done
147
- const usesStack = [];
148
- return this.transformSingleElement(usesStack, element);
149
- }
150
- /**
151
- * Transforms the provided nodes to their component definition
152
- * @param usesStack "Uses" stack
153
- * @param nodes Nodes to transform
154
- */
155
- transformToObject(nodes, usesStack = []) {
156
- var _a;
157
- if (!nodes) {
158
- const parsedNodes = this.parseFragment();
159
- if (!parsedNodes)
160
- return null;
161
- nodes = parsedNodes;
162
- }
163
- const root = {
164
- type: "Element",
165
- id: "root",
166
- attributes: [
167
- {
168
- type: "Attribute",
169
- name: "name",
170
- value: "object",
171
- },
172
- ],
173
- childNodes: nodes,
174
- };
175
- // --- Done
176
- return (_a = this.collectValue(usesStack, root)) === null || _a === void 0 ? void 0 : _a.value;
177
- }
178
- // ==================================================================================================================
179
- // Transform methods
180
- transformSingleElement(usesStack, node) {
181
- var _a, _b, _c, _d, _e, _f, _g;
182
- let component;
183
- if (node.id === UemlHelper_1.COMPOUND_COMP_ID) {
184
- // --- Validate component name
185
- const compoundName = ((_a = node.attributes) !== null && _a !== void 0 ? _a : []).find((attr) => attr.name === "name");
186
- if (!compoundName) {
187
- this.reportError("T003");
188
- return null;
189
- }
190
- if (!UemlHelper_1.UCRegex.test(compoundName.value)) {
191
- this.reportError("T004");
192
- return null;
193
- }
194
- // --- Get "api" attributes
195
- let api;
196
- const apiAttrs = ((_b = node.attributes) !== null && _b !== void 0 ? _b : []).filter((attr) => attr.startSegment === "api");
197
- if (apiAttrs.length > 0) {
198
- api = {};
199
- apiAttrs.forEach((attr) => {
200
- api[attr.name] = attr.value;
201
- });
202
- }
203
- // --- Get "var" attributes
204
- let vars;
205
- const varsAttrs = ((_c = node.attributes) !== null && _c !== void 0 ? _c : []).filter((attr) => attr.startSegment === "var");
206
- if (varsAttrs.length > 0) {
207
- vars = {};
208
- varsAttrs.forEach((attr) => {
209
- vars[attr.name] = attr.value;
210
- });
211
- }
212
- // --- Check for nested component
213
- const nestedCompound = ((_d = node.childNodes) !== null && _d !== void 0 ? _d : []).find((child) => child.type === "Element" && child.id === UemlHelper_1.COMPOUND_COMP_ID);
214
- if (nestedCompound) {
215
- this.reportError("T006");
216
- return null;
217
- }
218
- // --- Get the single component definition
219
- const nestedComponents = ((_e = node.childNodes) !== null && _e !== void 0 ? _e : []).filter((child) => child.type === "Element" && UemlHelper_1.UCRegex.test(child.id));
220
- if (nestedComponents.length === 0) {
221
- nestedComponents.push({
222
- type: "Element",
223
- id: "TextNode",
224
- attributes: [
225
- {
226
- type: "Attribute",
227
- name: "value",
228
- value: "",
229
- },
230
- ],
231
- });
232
- }
233
- const nestedVars = ((_f = node.childNodes) !== null && _f !== void 0 ? _f : []).filter((child) => child.type === "Element" && child.id === "var");
234
- const childrenToCollect = ((_g = node.childNodes) !== null && _g !== void 0 ? _g : []).filter((child) => child.type === "Element" && !UemlHelper_1.UCRegex.test(child.id) && child.id !== "var");
235
- // --- Should we use a Fragment?
236
- if (nestedComponents.length > 1 || nestedVars.length > 0) {
237
- // --- Wrap the children in a Fragment
238
- const fragmentElement = {
239
- type: "Element",
240
- id: "Fragment",
241
- childNodes: [...nestedVars, ...nestedComponents],
242
- };
243
- const nestedFragment = this.transformSingleElement(usesStack, fragmentElement);
244
- component = {
245
- name: compoundName.value,
246
- component: nestedFragment,
247
- };
248
- if (api) {
249
- component.api = api;
250
- }
251
- if (vars) {
252
- nestedFragment.vars = Object.assign(Object.assign({}, nestedFragment.vars), vars);
253
- }
254
- }
255
- else {
256
- // --- Search for the element, take a note of the preceding comment
257
- const element = nestedComponents[0];
258
- const nestedComponent = this.transformSingleElement(usesStack, element);
259
- // --- Create the component
260
- component = {
261
- name: compoundName.value,
262
- component: nestedComponent,
263
- };
264
- if (api) {
265
- component.api = api;
266
- }
267
- if (vars) {
268
- nestedComponent.vars = Object.assign(Object.assign({}, nestedComponent.vars), vars);
269
- }
270
- }
271
- const nodeClone = Object.assign({}, node);
272
- nodeClone.childNodes = childrenToCollect;
273
- this.collectTraits(usesStack, component, nodeClone);
274
- return component;
275
- }
276
- // --- Not a reusable component
277
- if (!UemlHelper_1.UCRegex.test(node.id)) {
278
- this.reportError("T002");
279
- return null;
280
- }
281
- component = {
282
- type: node.id,
283
- };
284
- // --- Done
285
- this.collectTraits(usesStack, component, node);
286
- return component;
287
- }
288
- /**
289
- * Collects component traits from attributes and child elements
290
- * @param usesStack "Uses" stack
291
- * @param comp Component definition
292
- * @param element Component element
293
- */
294
- collectTraits(usesStack, comp, element) {
295
- var _a, _b, _c, _d;
296
- const isCompound = !isComponent(comp);
297
- // --- Process attributes
298
- ((_a = element.attributes) !== null && _a !== void 0 ? _a : []).forEach((attr) => {
299
- // --- Process the attribute
300
- if (attr.namespace) {
301
- this.reportError("T021");
302
- return;
303
- }
304
- this.collectAttribute(comp, attr.startSegment, attr.name, attr.value);
305
- });
306
- let lastComment = null;
307
- // --- Process child nodes
308
- ((_b = element.childNodes) !== null && _b !== void 0 ? _b : []).forEach((child) => {
309
- var _a;
310
- if (child.type === "Comment") {
311
- lastComment = child;
312
- }
313
- if (isCompound && child.type === "Element" && UemlHelper_1.UCRegex.test(child.id)) {
314
- // --- This is the single nested component definition of a compound component,
315
- // --- it is already processed
316
- return;
317
- }
318
- // --- Single text element, consider it a child name
319
- if (child.type === "Text" && !isCompound) {
320
- comp.children = this.mergeValue(comp.children, child.text);
321
- }
322
- // --- It should not happen, but just for being safe...
323
- if (child.type !== "Element")
324
- return;
325
- // --- Element name starts with an uppercase letter
326
- if (UemlHelper_1.UCRegex.test(child.id) && !isCompound) {
327
- // --- This must be a child component
328
- const childComponent = this.transformSingleElement(usesStack, child);
329
- if (childComponent) {
330
- if (!comp.children) {
331
- comp.children = [childComponent];
332
- }
333
- else {
334
- if (typeof comp.children === "string") {
335
- comp.children = [comp.children, childComponent];
336
- }
337
- else if (Array.isArray(comp.children)) {
338
- comp.children.push(childComponent);
339
- }
340
- }
341
- }
342
- return;
343
- }
344
- // --- Element with a lowercase start letter, it must be some traits of the host component
345
- switch (child.id) {
346
- case "prop":
347
- this.collectElementHelper(usesStack, comp, child, (name) => { var _a; return (isComponent(comp) ? (_a = comp.props) === null || _a === void 0 ? void 0 : _a[name] : undefined); }, (name, value) => {
348
- var _a;
349
- if (!isComponent(comp))
350
- return;
351
- (_a = comp.props) !== null && _a !== void 0 ? _a : (comp.props = {});
352
- comp.props[name] = value;
353
- });
354
- return;
355
- case "event":
356
- this.collectElementHelper(usesStack, comp, child, (name) => { var _a; return (isComponent(comp) ? (_a = comp.events) === null || _a === void 0 ? void 0 : _a[name] : undefined); }, (name, value) => {
357
- var _a;
358
- if (!isComponent(comp))
359
- return;
360
- (_a = comp.events) !== null && _a !== void 0 ? _a : (comp.events = {});
361
- comp.events[name] = value;
362
- }, (name) => {
363
- if (UemlHelper_1.onPrefixRegex.test(name)) {
364
- this.reportError("T008", undefined, name);
365
- }
366
- });
367
- return;
368
- case "var":
369
- this.collectElementHelper(usesStack, comp, child, (name) => { var _a; return (isComponent(comp) ? (_a = comp.vars) === null || _a === void 0 ? void 0 : _a[name] : undefined); }, (name, value) => {
370
- var _a;
371
- if (!isComponent(comp))
372
- return;
373
- (_a = comp.vars) !== null && _a !== void 0 ? _a : (comp.vars = {});
374
- comp.vars[name] = value;
375
- });
376
- return;
377
- case "loaders":
378
- this.collectLoadersElements(usesStack, comp, child);
379
- return;
380
- case "uses":
381
- this.collectUsesElements(comp, child);
382
- return;
383
- case "api":
384
- this.collectElementHelper(usesStack, comp, child, (name) => { var _a; return (isComponent(comp) ? (_a = comp.api) === null || _a === void 0 ? void 0 : _a[name] : undefined); }, (name, value) => {
385
- var _a;
386
- (_a = comp.api) !== null && _a !== void 0 ? _a : (comp.api = {});
387
- comp.api[name] = value;
388
- });
389
- return;
390
- case "script":
391
- if (child.attributes && child.attributes.length > 0) {
392
- this.reportError("T022");
393
- return;
394
- }
395
- if (!child.childNodes || !child.childNodes.length) {
396
- // --- No children, no script
397
- return;
398
- }
399
- if (child.childNodes.length === 1 && child.childNodes[0].type === "Text") {
400
- // --- We have a single text child
401
- (_a = comp.script) !== null && _a !== void 0 ? _a : (comp.script = "");
402
- if (comp.script.length > 0) {
403
- comp.script += "\n";
404
- }
405
- comp.script += child.childNodes[0].text;
406
- }
407
- else {
408
- this.reportError("T023");
409
- }
410
- return;
411
- case "metadata":
412
- this.collectMetadataElements(comp);
413
- return;
414
- default:
415
- this.reportError("T009", undefined, child.id);
416
- return;
417
- }
418
- });
419
- if (!comp.script || comp.script.trim().length === 0) {
420
- // --- No (or whitespace only) script
421
- return;
422
- }
423
- // --- Run the parse and collect on scripts
424
- const parser = new Parser_1.Parser(comp.script);
425
- try {
426
- // --- We parse the module file to catch parsing errors
427
- parser.parseStatements();
428
- const evalContext = (0, BindingTreeEvaluationContext_1.createEvalContext)({});
429
- comp.scriptCollected = (0, code_behind_collect_1.collectCodeBehindFromSource)("Main", comp.script, this.moduleResolver, evalContext);
430
- }
431
- catch (err) {
432
- if (parser.errors && parser.errors.length > 0) {
433
- comp.scriptError = parser.errors;
434
- }
435
- else {
436
- comp.scriptError = err;
437
- }
438
- }
439
- // --- We may have module parsing/execution errors
440
- const moduleErrors = (_d = (_c = comp.scriptCollected) === null || _c === void 0 ? void 0 : _c.moduleErrors) !== null && _d !== void 0 ? _d : {};
441
- if (Object.keys(moduleErrors).length > 0) {
442
- comp.scriptError = moduleErrors;
443
- }
444
- }
445
- /**
446
- * Process a single component attribute
447
- * @param comp Component definition to merge the attribute into
448
- * @param startSegment Starts segment name
449
- * @param name Attribute name
450
- * @param value Attribute value
451
- */
452
- collectAttribute(comp, startSegment, name, value) {
453
- var _a, _b, _c, _d, _e;
454
- const isCompound = !isComponent(comp);
455
- // --- Handle single-word attributes
456
- if (isCompound) {
457
- if (startSegment && startSegment !== "api" && startSegment !== "var") {
458
- this.reportError("T021");
459
- return;
460
- }
461
- if (name === "name" && !startSegment) {
462
- // --- We already processed name
463
- return;
464
- }
465
- // --- Compound components do not have any other attributable props
466
- if (!startSegment && !startSegment) {
467
- this.reportError("T021", undefined, name);
468
- }
469
- return;
470
- }
471
- // --- Do not allow segmented attribute names
472
- if (name.indexOf(".") >= 0) {
473
- this.reportError("T007", undefined, name);
474
- return;
475
- }
476
- // --- Recognize special attributes by component definition type
477
- switch (name) {
478
- case "id":
479
- comp.uid = value;
480
- return;
481
- case "testId":
482
- comp.testId = value;
483
- return;
484
- case "when":
485
- comp.when = value;
486
- return;
487
- default:
488
- if (startSegment === "var") {
489
- (_a = comp.vars) !== null && _a !== void 0 ? _a : (comp.vars = {});
490
- comp.vars[name] = value;
491
- }
492
- else if (startSegment === "api") {
493
- (_b = comp.api) !== null && _b !== void 0 ? _b : (comp.api = {});
494
- comp.api[name] = value;
495
- }
496
- else if (startSegment === "event") {
497
- (_c = comp.events) !== null && _c !== void 0 ? _c : (comp.events = {});
498
- comp.events[name] = value;
499
- }
500
- else if (UemlHelper_1.onPrefixRegex.test(name)) {
501
- (_d = comp.events) !== null && _d !== void 0 ? _d : (comp.events = {});
502
- const eventName = name[2].toLowerCase() + name.substring(3);
503
- comp.events[eventName] = value;
504
- }
505
- else {
506
- (_e = comp.props) !== null && _e !== void 0 ? _e : (comp.props = {});
507
- comp.props[name] = value;
508
- }
509
- return;
510
- }
511
- }
512
- collectElementHelper(usesStack, comp, child, getter, setter, nameValidator) {
513
- // --- Compound component do not have a uses
514
- var _a;
515
- // --- Get the value
516
- const valueInfo = this.collectValue(usesStack, child);
517
- if (!valueInfo) {
518
- return;
519
- }
520
- // --- Extra name validation, if required so
521
- nameValidator === null || nameValidator === void 0 ? void 0 : nameValidator((_a = valueInfo === null || valueInfo === void 0 ? void 0 : valueInfo.name) !== null && _a !== void 0 ? _a : "");
522
- const name = valueInfo.name;
523
- const value = valueInfo.value;
524
- if ((valueInfo === null || valueInfo === void 0 ? void 0 : valueInfo.value) !== undefined) {
525
- setter(name, this.mergeValue(getter(name), value));
526
- }
527
- else {
528
- // --- Consider the value to be null; check optional child items
529
- const itemValue = this.collectObjectOrArray(usesStack, child.childNodes);
530
- let updatedValue = getter(name);
531
- updatedValue = this.mergeValue(updatedValue, itemValue);
532
- setter(name, updatedValue);
533
- }
534
- }
535
- collectValue(usesStack, element, allowName = true) {
536
- var _a, _b, _c, _d;
537
- // --- Accept only "name", "value"
538
- const nestedComponents = ((_a = element.childNodes) !== null && _a !== void 0 ? _a : []).filter((c) => c.type === "Element" && UemlHelper_1.UCRegex.test(c.id));
539
- const nestedElements = ((_b = element.childNodes) !== null && _b !== void 0 ? _b : []).filter((c) => c.type === "Element" && !UemlHelper_1.UCRegex.test(c.id));
540
- const attrProps = ((_c = element.attributes) !== null && _c !== void 0 ? _c : []).filter((attr) => propAttrs.indexOf(attr.name) >= 0);
541
- if (((_d = element.attributes) !== null && _d !== void 0 ? _d : []).length > attrProps.length) {
542
- this.reportError("T011", undefined, element.id);
543
- return null;
544
- }
545
- // --- Validate the "name" usage
546
- const nameAttr = attrProps.find((attr) => attr.name === "name");
547
- if (allowName) {
548
- if (!(nameAttr === null || nameAttr === void 0 ? void 0 : nameAttr.value)) {
549
- this.reportError("T012", undefined, element.id);
550
- return null;
551
- }
552
- }
553
- else {
554
- if (nameAttr) {
555
- this.reportError("T018", undefined, element.id);
556
- return null;
557
- }
558
- }
559
- const name = nameAttr === null || nameAttr === void 0 ? void 0 : nameAttr.value;
560
- // --- Get the value attribute
561
- const valueAttr = attrProps.find((attr) => attr.name === "value");
562
- if (valueAttr && valueAttr.value === undefined) {
563
- this.reportError("T019", undefined, element.id);
564
- return null;
565
- }
566
- // --- Let's handle a special case, when the value is a component definition
567
- if (name && nestedComponents.length >= 1) {
568
- if (nestedElements.length > 0) {
569
- this.reportError("T020");
570
- return null;
571
- }
572
- // --- We expect a component definition here!
573
- const nestedComps = nestedComponents.map((nc) => this.transformSingleElement(usesStack, nc));
574
- return { name, value: nestedComps.length === 1 ? nestedComps[0] : nestedComps };
575
- }
576
- // --- At this point, all attributes are ok, let's get the value.
577
- let value = valueAttr === null || valueAttr === void 0 ? void 0 : valueAttr.value;
578
- if (value === null) {
579
- return null;
580
- }
581
- if (typeof value === "string") {
582
- return { name, value };
583
- }
584
- return { name, value: this.collectObjectOrArray(usesStack, element.childNodes) };
585
- }
586
- collectLoadersElements(usesStack, comp, loaders) {
587
- var _a, _b, _c, _d, _e;
588
- if (!isComponent(comp)) {
589
- this.reportError("T009", undefined, "loaders");
590
- return;
591
- }
592
- if (isComponent(comp) && ((_b = (_a = loaders === null || loaders === void 0 ? void 0 : loaders.childNodes) === null || _a === void 0 ? void 0 : _a.length) !== null && _b !== void 0 ? _b : 0) === 0) {
593
- (_c = comp.loaders) !== null && _c !== void 0 ? _c : (comp.loaders = []);
594
- }
595
- // --- Loaders element must not have attributes
596
- if (((_d = loaders.attributes) !== null && _d !== void 0 ? _d : []).length > 0) {
597
- this.reportError("T012", undefined, "loaders");
598
- return;
599
- }
600
- // --- Iterate through child elements
601
- let lastComment = null;
602
- ((_e = loaders.childNodes) !== null && _e !== void 0 ? _e : []).forEach((loader) => {
603
- var _a;
604
- // --- Take a note of the last comment
605
- if (loader.type === "Comment") {
606
- lastComment = loader;
607
- return;
608
- }
609
- // --- Test is not supported
610
- if (loader.type === "Text") {
611
- this.reportError("T010", undefined, "loader");
612
- return;
613
- }
614
- // --- Just for the sake of being sure...
615
- if (loader.type !== "Element")
616
- return;
617
- const loaderDef = this.transformSingleElement(usesStack, loader);
618
- // --- Get the uid value
619
- if (!loaderDef.uid) {
620
- this.reportError("T013");
621
- return;
622
- }
623
- // --- Check props that a loader must not have
624
- if (loaderDef.vars) {
625
- this.reportError("T014", undefined, "vars");
626
- return;
627
- }
628
- if (loaderDef.loaders) {
629
- this.reportError("T014", undefined, "loaders");
630
- return;
631
- }
632
- if (loaderDef.uses) {
633
- this.reportError("T014", undefined, "uses");
634
- return;
635
- }
636
- // --- Store this loader
637
- (_a = comp.loaders) !== null && _a !== void 0 ? _a : (comp.loaders = []);
638
- comp.loaders.push(loaderDef);
639
- });
640
- }
641
- collectUsesElements(comp, uses) {
642
- var _a, _b, _c, _d;
643
- // --- Compound component do not have a uses
644
- if (!isComponent(comp)) {
645
- this.reportError("T009", undefined, "uses");
646
- return;
647
- }
648
- const valueAttr = ((_a = uses.attributes) !== null && _a !== void 0 ? _a : []).find((attr) => attr.name === "value");
649
- if (!(valueAttr === null || valueAttr === void 0 ? void 0 : valueAttr.value) || ((_c = (_b = uses.attributes) === null || _b === void 0 ? void 0 : _b.length) !== null && _c !== void 0 ? _c : 0) !== 1) {
650
- this.reportError("T015", undefined, "uses");
651
- return;
652
- }
653
- // --- Extract the value
654
- (_d = comp.uses) !== null && _d !== void 0 ? _d : (comp.uses = valueAttr.value.split(",").map((v) => v.trim()));
655
- }
656
- collectMetadataElements(comp) {
657
- if (isComponent(comp)) {
658
- this.reportError("T009", undefined, "meadata");
659
- return;
660
- }
661
- }
662
- collectObjectOrArray(usesStack, children) {
663
- let result = null;
664
- // --- No children, it's a null object
665
- if (!children)
666
- return result;
667
- let nestedElementType = null;
668
- children.forEach((child) => {
669
- if (child.type === "Text") {
670
- result = this.mergeValue(result, child.text);
671
- return;
672
- }
673
- if (child.type !== "Element")
674
- return;
675
- // --- The only element names we accept are "field" or "item"
676
- if (child.id !== "field" && child.id !== "item") {
677
- this.reportError("T016");
678
- return;
679
- }
680
- if (child.id === "field") {
681
- if (!nestedElementType) {
682
- // --- First nested element is "field", so we have an object
683
- nestedElementType = child.id;
684
- result = {};
685
- }
686
- else if (nestedElementType !== child.id) {
687
- this.reportError("T017");
688
- return;
689
- }
690
- }
691
- else if (child.id === "item") {
692
- if (!nestedElementType) {
693
- // --- First nested element is "item", so we have an array
694
- nestedElementType = child.id;
695
- result = [];
696
- }
697
- else if (nestedElementType !== child.id) {
698
- this.reportError("T017");
699
- return;
700
- }
701
- }
702
- // --- Get the field value
703
- let valueInfo = this.collectValue(usesStack, child, child.id === "field");
704
- if (!valueInfo) {
705
- return null;
706
- }
707
- // --- Does the field have a value?
708
- if (nestedElementType === "field") {
709
- result[valueInfo.name] = valueInfo.value;
710
- }
711
- else {
712
- result.push(valueInfo.value);
713
- }
714
- });
715
- return result;
716
- }
717
- mergeValue(oldValue, itemValue) {
718
- if (oldValue) {
719
- if (Array.isArray(oldValue)) {
720
- if (typeof oldValue === "string") {
721
- return [oldValue, itemValue];
722
- }
723
- else {
724
- oldValue.push(itemValue);
725
- return oldValue;
726
- }
727
- }
728
- else {
729
- return [oldValue, itemValue];
730
- }
731
- }
732
- else {
733
- return itemValue;
734
- }
735
- }
736
- // ==================================================================================================================
737
- // Parsing methods
738
- /**
739
- * Parses an UEML elements
740
- *
741
- * uemlElement
742
- * : "<" id uemlAttribute* ">" (uemlLiteral? | uemlElement*) "</" id ">"
743
- * | "<" id uemlAttribute* "/>"
744
- * ;
745
- *
746
- */
747
- parseElement() {
748
- let startToken = this._lexer.peek();
749
- let attributes = [];
750
- // --- Test the open node start token
751
- if (startToken.type !== UemlToken_1.UemlTokenType.OpenNodeStart) {
752
- this.reportError("U003", startToken);
753
- return null;
754
- }
755
- // --- Get the node id
756
- this._lexer.get();
757
- let namespace = "";
758
- let idToken = this._lexer.peek();
759
- if (idToken.type !== UemlToken_1.UemlTokenType.Identifier) {
760
- this.reportError("U004", idToken);
761
- return null;
762
- }
763
- // --- Check for namespace
764
- this._lexer.get();
765
- if (this._lexer.peek().type === UemlToken_1.UemlTokenType.Colon) {
766
- this._lexer.get();
767
- namespace = idToken.text;
768
- idToken = this._lexer.peek();
769
- if (idToken.type !== UemlToken_1.UemlTokenType.Identifier) {
770
- this.reportError("U004", idToken);
771
- return null;
772
- }
773
- this._lexer.get();
774
- }
775
- // --- Parse attributes
776
- let nextToken = this._lexer.peek();
777
- // --- Skip comment
778
- while (nextToken.type === UemlToken_1.UemlTokenType.Comment) {
779
- this._lexer.get();
780
- nextToken = this._lexer.peek();
781
- }
782
- // --- Get the next attribute
783
- while (nextToken.type === UemlToken_1.UemlTokenType.Identifier) {
784
- // --- Seems to be an attribute value
785
- const attribute = this.parseAttribute();
786
- if (attribute) {
787
- if (attributes.find((attr) => attr.name === attribute.name)) {
788
- this.reportError("U012", nextToken, attribute.name);
789
- return null;
790
- }
791
- if (UemlHelper_1.UCRegex.test(attribute.name)) {
792
- this.reportError("U013");
793
- return null;
794
- }
795
- attributes.push(attribute);
796
- }
797
- nextToken = this._lexer.peek();
798
- // --- Skip comment
799
- while (nextToken.type === UemlToken_1.UemlTokenType.Comment) {
800
- this._lexer.get();
801
- nextToken = this._lexer.peek();
802
- }
803
- }
804
- // --- Test the closing of the node
805
- if (nextToken.type === UemlToken_1.UemlTokenType.NodeClose) {
806
- // --- This node is closed, return it
807
- this._lexer.get();
808
- return this.createNode("Element", {
809
- id: idToken.text,
810
- namespace,
811
- attributes,
812
- }, nextToken);
813
- }
814
- // --- Check the closing token of the node
815
- if (nextToken.type !== UemlToken_1.UemlTokenType.NodeEnd) {
816
- this.reportError("U006", nextToken);
817
- return null;
818
- }
819
- this._lexer.get();
820
- // --- Get the nested children or text
821
- const isComponentElement = UemlHelper_1.UCRegex.test(idToken.text);
822
- const shouldUseTextNode = isComponentElement || idToken.text === "prop";
823
- const shouldPreserveWhitespace = idToken.text === "event" || idToken.text === "api" || idToken.text === "script";
824
- let childNodes = this.parseElementChildren(shouldPreserveWhitespace, shouldUseTextNode);
825
- if (!childNodes) {
826
- return null;
827
- }
828
- // --- Separate helper nodes from <script> and component children
829
- const helperNodes = childNodes.filter((n) => n.type === "Element" && !UemlHelper_1.UCRegex.test(n.id) && n.id !== "script");
830
- const otherNodes = childNodes.filter((n) => helperNodes.indexOf(n) < 0);
831
- const hasScript = otherNodes.some((n) => n.type === "Element" && n.id === "script");
832
- const hasComponent = otherNodes.some((n) => n.type === "Element" && UemlHelper_1.UCRegex.test(n.id));
833
- // --- Wrap with fragment if needed
834
- if (hasComponent && hasScript) {
835
- const fragmentElement = {
836
- type: "Element",
837
- id: "Fragment",
838
- childNodes: otherNodes,
839
- };
840
- childNodes = [...helperNodes, fragmentElement];
841
- }
842
- // --- Get the start token of the closing tag
843
- const closeToken = this._lexer.peek();
844
- if (closeToken.type !== UemlToken_1.UemlTokenType.CloseNodeStart) {
845
- this.reportError("U005", closeToken);
846
- return null;
847
- }
848
- // --- Test closing node identifier
849
- this._lexer.get();
850
- let closeNamespace = "";
851
- let closeIdToken = this._lexer.peek();
852
- if (closeIdToken.type !== UemlToken_1.UemlTokenType.Identifier) {
853
- this.reportError("U004", closeIdToken);
854
- return null;
855
- }
856
- // --- Check for closing namespace
857
- this._lexer.get();
858
- if (this._lexer.peek().type === UemlToken_1.UemlTokenType.Colon) {
859
- this._lexer.get();
860
- closeNamespace = closeIdToken.text;
861
- closeIdToken = this._lexer.peek();
862
- if (closeIdToken.type !== UemlToken_1.UemlTokenType.Identifier) {
863
- this.reportError("U004", closeIdToken);
864
- return null;
865
- }
866
- this._lexer.get();
867
- }
868
- // --- The start end closing namespace must match
869
- if (namespace !== closeNamespace) {
870
- this.reportError("U014", closeIdToken, namespace, closeNamespace);
871
- return null;
872
- }
873
- // --- The start end closing ID must match
874
- if (idToken.text !== closeIdToken.text) {
875
- this.reportError("U007", closeIdToken, idToken.text, closeIdToken.text);
876
- return null;
877
- }
878
- // --- Check the element's final token
879
- const finalToken = this._lexer.peek();
880
- if (finalToken.type !== UemlToken_1.UemlTokenType.NodeEnd) {
881
- this.reportError("U008", finalToken);
882
- return null;
883
- }
884
- // --- Done.
885
- this._lexer.get();
886
- return this.createNode("Element", {
887
- id: idToken.text,
888
- namespace,
889
- attributes,
890
- childNodes,
891
- }, startToken);
892
- }
893
- /**
894
- * Parses an UEML attribute
895
- *
896
- * uemlAttribute
897
- * : id "=" (singleWord | stringLiteral)
898
- * ;
899
- */
900
- parseAttribute() {
901
- let namespace;
902
- let name;
903
- const startToken = this._lexer.peek();
904
- if (startToken.type !== UemlToken_1.UemlTokenType.Identifier) {
905
- this.reportError("U009", startToken);
906
- return null;
907
- }
908
- name = startToken.text;
909
- // --- Check for type spec
910
- this._lexer.get();
911
- let nextToken = this._lexer.peek();
912
- if (nextToken.type === UemlToken_1.UemlTokenType.Colon) {
913
- this._lexer.get();
914
- namespace = name;
915
- const nameToken = this._lexer.peek();
916
- if (nameToken.type !== UemlToken_1.UemlTokenType.Identifier) {
917
- this.reportError("U009", nameToken);
918
- return null;
919
- }
920
- name = nameToken.text;
921
- this._lexer.get();
922
- nextToken = this._lexer.peek();
923
- }
924
- // --- Check segments
925
- const segments = name.split(".");
926
- if (segments.length > 2) {
927
- this.reportError("T007", startToken, name);
928
- return null;
929
- }
930
- let startSegment;
931
- if (segments.length === 2) {
932
- startSegment = segments[0];
933
- name = segments[1];
934
- if (name.trim() === "") {
935
- this.reportError("T007", startToken, name);
936
- return null;
937
- }
938
- }
939
- // --- ID ok, check for "="
940
- let value;
941
- if (nextToken.type === UemlToken_1.UemlTokenType.Equal) {
942
- // --- Get the value
943
- this._lexer.get();
944
- const valueToken = this._lexer.peek();
945
- if (valueToken.type === UemlToken_1.UemlTokenType.StringLiteral) {
946
- value = this.parseStringLiteral(valueToken.text);
947
- }
948
- else {
949
- this.reportError("U011", valueToken);
950
- return null;
951
- }
952
- this._lexer.get();
953
- }
954
- else {
955
- this.reportError("U010", nextToken);
956
- return null;
957
- }
958
- // --- Done
959
- return this.createNode("Attribute", {
960
- namespace,
961
- startSegment,
962
- name,
963
- value,
964
- }, startToken);
965
- }
966
- // --- Parses the nested children of an element
967
- parseElementChildren(preserveWhitespace, useTextNode) {
968
- var _a, _b, _c;
969
- const childNodes = [];
970
- let found = false;
971
- let disallowTextLike = false;
972
- while (true) {
973
- let nextToken = this._lexer.peekNested();
974
- if (nextToken.type === UemlToken_1.UemlTokenType.Eof) {
975
- return childNodes;
976
- }
977
- let textAsHardLiteral = false;
978
- switch (nextToken.type) {
979
- case UemlToken_1.UemlTokenType.CloseNodeStart:
980
- // --- No more nested child to parse
981
- found = true;
982
- break;
983
- case UemlToken_1.UemlTokenType.Comment:
984
- childNodes.push(this.createNode("Comment", { text: nextToken.text.trim() }, nextToken));
985
- this._lexer.get();
986
- disallowTextLike = false;
987
- break;
988
- case UemlToken_1.UemlTokenType.OpenNodeStart:
989
- const childNode = this.parseElement();
990
- if (childNode) {
991
- childNodes.push(childNode);
992
- }
993
- disallowTextLike = false;
994
- break;
995
- case UemlToken_1.UemlTokenType.ScriptLiteral: {
996
- this._lexer.get();
997
- let text = nextToken.text.trim();
998
- text = text.substring(UemlLexer_1.SCRIPT_LITERAL_START.length, text.length - UemlLexer_1.SCRIPT_LITERAL_END.length);
999
- childNodes.push(this.createNode("Element", {
1000
- id: "script",
1001
- attributes: [],
1002
- childNodes: [
1003
- this.createNode("Text", {
1004
- text,
1005
- }, nextToken, nextToken),
1006
- ],
1007
- }, nextToken));
1008
- break;
1009
- }
1010
- case UemlToken_1.UemlTokenType.HardLiteral:
1011
- case UemlToken_1.UemlTokenType.NestedText:
1012
- case UemlToken_1.UemlTokenType.StringLiteral:
1013
- case UemlToken_1.UemlTokenType.Identifier:
1014
- if (disallowTextLike && nextToken.type !== UemlToken_1.UemlTokenType.HardLiteral) {
1015
- this.reportError("U015", nextToken, (_c = (_b = (_a = nextToken.text) === null || _a === void 0 ? void 0 : _a.trim()) === null || _b === void 0 ? void 0 : _b.substring(1, 100)) !== null && _c !== void 0 ? _c : "");
1016
- return null;
1017
- }
1018
- disallowTextLike =
1019
- nextToken.type === UemlToken_1.UemlTokenType.StringLiteral || nextToken.type === UemlToken_1.UemlTokenType.NestedText;
1020
- let text = nextToken.text;
1021
- if (nextToken.type === UemlToken_1.UemlTokenType.StringLiteral) {
1022
- let literalText = nextToken.text;
1023
- if (!preserveWhitespace) {
1024
- literalText = literalText.trim();
1025
- literalText = literalText.substring(1, literalText.length - 1).replace(/\s+/g, " ");
1026
- }
1027
- const wrapper = nextToken.text.trim()[0];
1028
- text = this.parseStringLiteral(`${wrapper}${literalText}${wrapper}`);
1029
- }
1030
- else if (nextToken.type === UemlToken_1.UemlTokenType.HardLiteral) {
1031
- if (!preserveWhitespace) {
1032
- text = nextToken.text.trim();
1033
- text = text.substring(UemlLexer_1.HARD_LITERAL_START.length, text.length - UemlLexer_1.HARD_LITERAL_END.length);
1034
- }
1035
- textAsHardLiteral = true;
1036
- }
1037
- else {
1038
- if (!preserveWhitespace) {
1039
- text = text.replace(/\s+/g, " ");
1040
- }
1041
- }
1042
- childNodes.push(useTextNode
1043
- ? this.createNode("Element", {
1044
- id: textAsHardLiteral ? "TextNodeCData" : "TextNode",
1045
- attributes: [
1046
- {
1047
- type: "Attribute",
1048
- name: "value",
1049
- value: text,
1050
- },
1051
- ],
1052
- }, nextToken)
1053
- : this.createNode("Text", {
1054
- text,
1055
- }, nextToken));
1056
- this._lexer.get();
1057
- break;
1058
- default:
1059
- found = true;
1060
- break;
1061
- }
1062
- if (found) {
1063
- // --- No more nested element to parse
1064
- break;
1065
- }
1066
- }
1067
- // --- Preprocess text-like children
1068
- const processedChildNodes = [];
1069
- let text = "";
1070
- let useCData = false;
1071
- for (const childNode of childNodes) {
1072
- if (childNode.type === "Element" && (childNode.id === "TextNode" || childNode.id === "TextNodeCData")) {
1073
- // --- This is a TextNode, it behaves just like text
1074
- text += childNode.attributes[0].value;
1075
- useCData = childNode.id === "TextNodeCData";
1076
- }
1077
- else if (childNode.type === "Element" || childNode.type === "Comment") {
1078
- // --- This is a component/helper node or a comment, so store the previously collected text
1079
- storeText(false);
1080
- // --- Store the node
1081
- processedChildNodes.push(childNode);
1082
- }
1083
- else if (childNode.type === "Text") {
1084
- // --- Append the text
1085
- text += childNode.text;
1086
- }
1087
- }
1088
- // --- We may have a pending (not stored text node)
1089
- storeText(useCData);
1090
- // --- Done.
1091
- return processedChildNodes;
1092
- // --- Store the processed text
1093
- function storeText(useCData) {
1094
- if (text) {
1095
- processedChildNodes.push(useTextNode
1096
- ? {
1097
- type: "Element",
1098
- id: useCData ? "TextNodeCData" : "TextNode",
1099
- attributes: [
1100
- {
1101
- type: "Attribute",
1102
- name: "value",
1103
- value: text,
1104
- },
1105
- ],
1106
- }
1107
- : {
1108
- type: "Text",
1109
- text: text,
1110
- });
1111
- text = "";
1112
- }
1113
- }
1114
- }
1115
- // ==========================================================================
1116
- // Helpers
1117
- /**
1118
- * Reports the specified error
1119
- * @param errorCode Error code
1120
- * @param token Token that represents the error's position
1121
- * @param options Error message options
1122
- */
1123
- reportError(errorCode, token, ...options) {
1124
- var _a;
1125
- let errorText = (_a = ParserError_1.errorMessages[errorCode]) !== null && _a !== void 0 ? _a : "Unknown error";
1126
- if (options) {
1127
- options.forEach((o, idx) => (errorText = replace(errorText, `{${idx}}`, o.toString())));
1128
- }
1129
- if (!token) {
1130
- token = this._lexer.peek();
1131
- }
1132
- this._parseErrors.push({
1133
- code: errorCode,
1134
- text: errorText,
1135
- line: token.location.startLine,
1136
- column: token.location.startColumn,
1137
- position: token.location.startPosition,
1138
- });
1139
- throw new ParserError_1.ParserError(errorText, errorCode);
1140
- function replace(input, placeholder, replacement) {
1141
- do {
1142
- input = input.replace(placeholder, replacement);
1143
- } while (input.includes(placeholder));
1144
- return input;
1145
- }
1146
- }
1147
- /**
1148
- * Creates an expression node
1149
- * @param type Expression type
1150
- * @param stump Stump properties
1151
- * @param startToken The token that starts the expression
1152
- * @param endToken The token that ends the expression
1153
- * @param source Expression source code to store to the node
1154
- */
1155
- createNode(type, stump, startToken, endToken, source) {
1156
- // if (!endToken) {
1157
- // endToken = this._lexer.peek();
1158
- // }
1159
- const startPosition = startToken.location.startPosition;
1160
- const endPosition = endToken ? endToken.location.startPosition : this._lexer.input.position;
1161
- return Object.assign({}, stump, {
1162
- type,
1163
- startPosition,
1164
- endPosition,
1165
- startLine: startToken.location.startLine,
1166
- startColumn: startToken.location.startColumn,
1167
- endLine: endToken ? endToken.location.endLine : this._lexer.input.line,
1168
- endColumn: endToken ? endToken.location.endColumn : this._lexer.input.column,
1169
- source: source !== null && source !== void 0 ? source : this.getSource(startToken, endToken),
1170
- });
1171
- }
1172
- /**
1173
- * Gets the source code for the specified token range
1174
- * @param start Start token
1175
- * @param end Optional end token
1176
- * @returns The source code for the token range
1177
- */
1178
- getSource(start, end) {
1179
- return this.source.substring(start.location.startPosition, end ? end.location.startPosition : this._lexer.input.position);
1180
- }
1181
- /**
1182
- * Converts a string token to intrinsic string
1183
- * @param text Literal text to parse
1184
- */
1185
- parseStringLiteral(text) {
1186
- const input = text.length < 2 ? "" : text.substring(1, text.length - 1);
1187
- let result = "";
1188
- let state = StrParseState.Normal;
1189
- let collect = 0;
1190
- for (const ch of input) {
1191
- switch (state) {
1192
- case StrParseState.Normal:
1193
- if (ch === "\\") {
1194
- state = StrParseState.Backslash;
1195
- }
1196
- else {
1197
- result += ch;
1198
- }
1199
- break;
1200
- case StrParseState.Backslash:
1201
- state = StrParseState.Normal;
1202
- switch (ch) {
1203
- case "b":
1204
- result += "\b";
1205
- break;
1206
- case "f":
1207
- result += "\f";
1208
- break;
1209
- case "n":
1210
- result += "\n";
1211
- break;
1212
- case "r":
1213
- result += "\r";
1214
- break;
1215
- case "t":
1216
- result += "\t";
1217
- break;
1218
- case "v":
1219
- result += "\v";
1220
- break;
1221
- case "S":
1222
- result += "\xa0";
1223
- break;
1224
- case "0":
1225
- result += String.fromCharCode(0x00);
1226
- break;
1227
- case "'":
1228
- result += "'";
1229
- break;
1230
- case '"':
1231
- result += '"';
1232
- break;
1233
- case "\\":
1234
- result += "\\";
1235
- break;
1236
- case "x":
1237
- state = StrParseState.X;
1238
- break;
1239
- case "u":
1240
- state = StrParseState.UX1;
1241
- break;
1242
- default:
1243
- result += "\\" + ch;
1244
- break;
1245
- }
1246
- break;
1247
- case StrParseState.X:
1248
- if (isHexadecimal(ch)) {
1249
- collect = parseInt(ch, 16);
1250
- state = StrParseState.Xh;
1251
- }
1252
- else {
1253
- result += "x";
1254
- state = StrParseState.Normal;
1255
- }
1256
- break;
1257
- case StrParseState.Xh:
1258
- if (isHexadecimal(ch)) {
1259
- collect = collect * 0x10 + parseInt(ch, 16);
1260
- result += String.fromCharCode(collect);
1261
- state = StrParseState.Normal;
1262
- }
1263
- else {
1264
- result += String.fromCharCode(collect);
1265
- result += ch;
1266
- state = StrParseState.Normal;
1267
- }
1268
- break;
1269
- case StrParseState.UX1:
1270
- if (ch === "{") {
1271
- state = StrParseState.Ucp1;
1272
- break;
1273
- }
1274
- if (isHexadecimal(ch)) {
1275
- collect = parseInt(ch, 16);
1276
- state = StrParseState.UX2;
1277
- }
1278
- else {
1279
- result += "x";
1280
- state = StrParseState.Normal;
1281
- }
1282
- break;
1283
- case StrParseState.UX2:
1284
- if (isHexadecimal(ch)) {
1285
- collect = collect * 0x10 + parseInt(ch, 16);
1286
- state = StrParseState.UX3;
1287
- }
1288
- else {
1289
- result += String.fromCharCode(collect);
1290
- result += ch;
1291
- state = StrParseState.Normal;
1292
- }
1293
- break;
1294
- case StrParseState.UX3:
1295
- if (isHexadecimal(ch)) {
1296
- collect = collect * 0x10 + parseInt(ch, 16);
1297
- state = StrParseState.UX4;
1298
- }
1299
- else {
1300
- result += String.fromCharCode(collect);
1301
- result += ch;
1302
- state = StrParseState.Normal;
1303
- }
1304
- break;
1305
- case StrParseState.UX4:
1306
- if (isHexadecimal(ch)) {
1307
- collect = collect * 0x10 + parseInt(ch, 16);
1308
- result += String.fromCharCode(collect);
1309
- state = StrParseState.Normal;
1310
- }
1311
- else {
1312
- result += String.fromCharCode(collect);
1313
- result += ch;
1314
- state = StrParseState.Normal;
1315
- }
1316
- break;
1317
- case StrParseState.Ucp1:
1318
- if (isHexadecimal(ch)) {
1319
- collect = parseInt(ch, 16);
1320
- state = StrParseState.Ucp2;
1321
- }
1322
- else {
1323
- result += "x";
1324
- state = StrParseState.Normal;
1325
- }
1326
- break;
1327
- case StrParseState.Ucp2:
1328
- if (isHexadecimal(ch)) {
1329
- collect = collect * 0x10 + parseInt(ch, 16);
1330
- state = StrParseState.Ucp3;
1331
- }
1332
- else {
1333
- result += String.fromCharCode(collect);
1334
- result += ch;
1335
- state = StrParseState.Normal;
1336
- }
1337
- break;
1338
- case StrParseState.Ucp3:
1339
- if (isHexadecimal(ch)) {
1340
- collect = collect * 0x10 + parseInt(ch, 16);
1341
- state = StrParseState.Ucp4;
1342
- }
1343
- else {
1344
- result += String.fromCharCode(collect);
1345
- result += ch;
1346
- state = StrParseState.Normal;
1347
- }
1348
- break;
1349
- case StrParseState.Ucp4:
1350
- if (isHexadecimal(ch)) {
1351
- collect = collect * 0x10 + parseInt(ch, 16);
1352
- state = StrParseState.Ucp5;
1353
- }
1354
- else {
1355
- result += String.fromCharCode(collect);
1356
- result += ch;
1357
- state = StrParseState.Normal;
1358
- }
1359
- break;
1360
- case StrParseState.Ucp5:
1361
- if (isHexadecimal(ch)) {
1362
- collect = collect * 0x10 + parseInt(ch, 16);
1363
- state = StrParseState.Ucp6;
1364
- }
1365
- else {
1366
- result += String.fromCharCode(collect);
1367
- result += ch;
1368
- state = StrParseState.Normal;
1369
- }
1370
- break;
1371
- case StrParseState.Ucp6:
1372
- if (isHexadecimal(ch)) {
1373
- collect = collect * 0x10 + parseInt(ch, 16);
1374
- state = StrParseState.UcpTail;
1375
- }
1376
- else {
1377
- result += String.fromCharCode(collect);
1378
- result += ch;
1379
- state = StrParseState.Normal;
1380
- }
1381
- break;
1382
- case StrParseState.UcpTail:
1383
- result += String.fromCharCode(collect);
1384
- if (ch !== "}") {
1385
- result += ch;
1386
- }
1387
- state = StrParseState.Normal;
1388
- break;
1389
- }
1390
- }
1391
- // --- Handle the final machine state
1392
- switch (state) {
1393
- case StrParseState.Backslash:
1394
- result += "\\";
1395
- break;
1396
- case StrParseState.X:
1397
- result += "x";
1398
- break;
1399
- case StrParseState.Xh:
1400
- result += String.fromCharCode(collect);
1401
- break;
1402
- }
1403
- // --- Done
1404
- return result;
1405
- function isHexadecimal(ch) {
1406
- return (ch >= "0" && ch <= "9") || (ch >= "a" && ch <= "f") || (ch >= "A" && ch <= "F");
1407
- }
1408
- }
1409
- }
1410
- exports.UemlParser = UemlParser;
1411
- /**
1412
- * States of the string parsing
1413
- */
1414
- var StrParseState;
1415
- (function (StrParseState) {
1416
- StrParseState[StrParseState["Normal"] = 0] = "Normal";
1417
- StrParseState[StrParseState["Backslash"] = 1] = "Backslash";
1418
- StrParseState[StrParseState["X"] = 2] = "X";
1419
- StrParseState[StrParseState["Xh"] = 3] = "Xh";
1420
- StrParseState[StrParseState["UX1"] = 4] = "UX1";
1421
- StrParseState[StrParseState["UX2"] = 5] = "UX2";
1422
- StrParseState[StrParseState["UX3"] = 6] = "UX3";
1423
- StrParseState[StrParseState["UX4"] = 7] = "UX4";
1424
- StrParseState[StrParseState["Ucp1"] = 8] = "Ucp1";
1425
- StrParseState[StrParseState["Ucp2"] = 9] = "Ucp2";
1426
- StrParseState[StrParseState["Ucp3"] = 10] = "Ucp3";
1427
- StrParseState[StrParseState["Ucp4"] = 11] = "Ucp4";
1428
- StrParseState[StrParseState["Ucp5"] = 12] = "Ucp5";
1429
- StrParseState[StrParseState["Ucp6"] = 13] = "Ucp6";
1430
- StrParseState[StrParseState["UcpTail"] = 14] = "UcpTail";
1431
- })(StrParseState || (StrParseState = {}));
1432
- const propAttrs = ["name", "value"];
1433
- // --- Gets the content text of a comment element
1434
- function getCommentText(comment) {
1435
- return comment.text.substring("<!--".length, comment.text.length - "-->".length);
1436
- }
1437
- function isComponent(obj) {
1438
- return obj.type;
1439
- }