xmlui 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/Pdf-DeGhSMXe.mjs +19537 -0
- package/dist/Pdf.css +1 -0
- package/dist/apiInterceptorWorker-CwuUhYyc.mjs +9229 -0
- package/dist/array-USo-Szhp.mjs +12 -0
- package/dist/index-C24dkfpd.mjs +1434 -0
- package/dist/index-ao27SnVp.mjs +145185 -0
- package/dist/index.css +1 -0
- package/dist/nivo-bar.es-CWh0ZlxB.mjs +1666 -0
- package/dist/nivo-geo.es-BTqNt5Db.mjs +1579 -0
- package/dist/nivo-legends.es-BuIxHGSU.mjs +6916 -0
- package/dist/nivo-pie.es-BvCBFA0L.mjs +700 -0
- package/dist/react-apexcharts.min-DqWuDOyO.mjs +8881 -0
- package/dist/scripts/bin/bootstrap.js +11 -0
- package/dist/scripts/bin/build.js +256 -0
- package/dist/scripts/bin/index.js +88 -0
- package/dist/scripts/bin/preview.js +27 -0
- package/dist/scripts/bin/start.js +41 -0
- package/dist/scripts/bin/vite-ueml-plugin.js +113 -0
- package/dist/scripts/bin/viteConfig.js +112 -0
- package/dist/scripts/src/abstractions/ActionDefs.js +2 -0
- package/dist/scripts/src/abstractions/AppContextDefs.js +2 -0
- package/dist/scripts/src/abstractions/BlockScope.js +4 -0
- package/dist/scripts/src/abstractions/ComponentDefs.js +2 -0
- package/dist/scripts/src/abstractions/ComponentDescriptorDefs.js +2 -0
- package/dist/scripts/src/abstractions/ContainerDefs.js +2 -0
- package/dist/scripts/src/abstractions/FunctionDefs.js +2 -0
- package/dist/scripts/src/abstractions/RendererDefs.js +2 -0
- package/dist/scripts/src/abstractions/scripting/ScriptParserError.js +2 -0
- package/dist/scripts/src/abstractions/scripting/ScriptingSourceTree.js +2 -0
- package/dist/scripts/src/abstractions/scripting/Token.js +110 -0
- package/dist/scripts/src/components/App/App.js +253 -0
- package/dist/scripts/src/components/App/AppLayoutContext.js +9 -0
- package/dist/scripts/src/components/App/AppStateContext.js +9 -0
- package/dist/scripts/src/components/App/Sheet.js +89 -0
- package/dist/scripts/src/components/AppHeader/AppHeader.js +121 -0
- package/dist/scripts/src/components/AppState/AppState.js +29 -0
- package/dist/scripts/src/components/Avatar/Avatar.js +81 -0
- package/dist/scripts/src/components/Badge/Badge.js +56 -0
- package/dist/scripts/src/components/BarChart/BarChart.js +199 -0
- package/dist/scripts/src/components/Bookmark/Bookmark.js +11 -0
- package/dist/scripts/src/components/Button/Button.js +196 -0
- package/dist/scripts/src/components/Card/Card.js +65 -0
- package/dist/scripts/src/components/ChangeListener/ChangeListener.js +43 -0
- package/dist/scripts/src/components/Chart/Chart.js +158 -0
- package/dist/scripts/src/components/Checkbox/Checkbox.js +43 -0
- package/dist/scripts/src/components/Combobox/Combobox.js +145 -0
- package/dist/scripts/src/components/ComponentProvider.js +357 -0
- package/dist/scripts/src/components/ContentSeparator/ContentSeparator.js +40 -0
- package/dist/scripts/src/components/DatePicker/DatePicker.js +196 -0
- package/dist/scripts/src/components/DropdownMenu/DropdownMenu.js +175 -0
- package/dist/scripts/src/components/EmojiSelector/EmojiSelector.js +56 -0
- package/dist/scripts/src/components/FileInput/FileInput.js +127 -0
- package/dist/scripts/src/components/FileUploadDropZone/FileUploadDropZone.js +106 -0
- package/dist/scripts/src/components/FlowLayout/FlowLayout.js +139 -0
- package/dist/scripts/src/components/Footer/Footer.js +42 -0
- package/dist/scripts/src/components/Form/Form.js +320 -0
- package/dist/scripts/src/components/Form/FormContext.js +9 -0
- package/dist/scripts/src/components/Form/formActions.js +86 -0
- package/dist/scripts/src/components/FormItem/FormItem.js +204 -0
- package/dist/scripts/src/components/FormItem/HelperText.js +27 -0
- package/dist/scripts/src/components/FormItem/ItemWithLabel.js +39 -0
- package/dist/scripts/src/components/FormItem/Validations.js +346 -0
- package/dist/scripts/src/components/FormSection/FormSection.js +45 -0
- package/dist/scripts/src/components/Heading/Heading.js +206 -0
- package/dist/scripts/src/components/HoverCard/HoverCard.js +45 -0
- package/dist/scripts/src/components/Icon/ApiIcon.js +10 -0
- package/dist/scripts/src/components/Icon/Attach.js +10 -0
- package/dist/scripts/src/components/Icon/Binding.js +11 -0
- package/dist/scripts/src/components/Icon/BoardIcon.js +7 -0
- package/dist/scripts/src/components/Icon/BoxIcon.js +10 -0
- package/dist/scripts/src/components/Icon/CheckIcon.js +7 -0
- package/dist/scripts/src/components/Icon/ChevronDownIcon.js +7 -0
- package/dist/scripts/src/components/Icon/ChevronLeft.js +7 -0
- package/dist/scripts/src/components/Icon/ChevronRight.js +7 -0
- package/dist/scripts/src/components/Icon/ChevronUpIcon.js +7 -0
- package/dist/scripts/src/components/Icon/CodeFileIcon.js +10 -0
- package/dist/scripts/src/components/Icon/CodeSandbox.js +10 -0
- package/dist/scripts/src/components/Icon/CompactListIcon.js +7 -0
- package/dist/scripts/src/components/Icon/ContentCopyIcon.js +7 -0
- package/dist/scripts/src/components/Icon/DatabaseIcon.js +11 -0
- package/dist/scripts/src/components/Icon/DocFileIcon.js +10 -0
- package/dist/scripts/src/components/Icon/DocIcon.js +10 -0
- package/dist/scripts/src/components/Icon/DotMenuHorizontalIcon.js +7 -0
- package/dist/scripts/src/components/Icon/DotMenuIcon.js +7 -0
- package/dist/scripts/src/components/Icon/EmailIcon.js +7 -0
- package/dist/scripts/src/components/Icon/EmptyFolderIcon.js +10 -0
- package/dist/scripts/src/components/Icon/ErrorIcon.js +7 -0
- package/dist/scripts/src/components/Icon/ExpressionIcon.js +10 -0
- package/dist/scripts/src/components/Icon/FillPlusCricleIcon.js +7 -0
- package/dist/scripts/src/components/Icon/FilterIcon.js +10 -0
- package/dist/scripts/src/components/Icon/FolderIcon.js +10 -0
- package/dist/scripts/src/components/Icon/GlobeIcon.js +7 -0
- package/dist/scripts/src/components/Icon/HomeIcon.js +7 -0
- package/dist/scripts/src/components/Icon/HyperLinkIcon.js +7 -0
- package/dist/scripts/src/components/Icon/Icon.js +101 -0
- package/dist/scripts/src/components/Icon/ImageFileIcon.js +10 -0
- package/dist/scripts/src/components/Icon/LinkIcon.js +7 -0
- package/dist/scripts/src/components/Icon/ListIcon.js +7 -0
- package/dist/scripts/src/components/Icon/LooseListIcon.js +7 -0
- package/dist/scripts/src/components/Icon/MoonIcon.js +10 -0
- package/dist/scripts/src/components/Icon/MoreOptionsIcon.js +7 -0
- package/dist/scripts/src/components/Icon/PDFIcon.js +10 -0
- package/dist/scripts/src/components/Icon/PenIcon.js +7 -0
- package/dist/scripts/src/components/Icon/PhoneIcon.js +7 -0
- package/dist/scripts/src/components/Icon/PhotoIcon.js +10 -0
- package/dist/scripts/src/components/Icon/PlusIcon.js +7 -0
- package/dist/scripts/src/components/Icon/SearchIcon.js +7 -0
- package/dist/scripts/src/components/Icon/ShareIcon.js +10 -0
- package/dist/scripts/src/components/Icon/SunIcon.js +10 -0
- package/dist/scripts/src/components/Icon/TrashIcon.js +7 -0
- package/dist/scripts/src/components/Icon/TxtIcon.js +10 -0
- package/dist/scripts/src/components/Icon/UnknownFileIcon.js +10 -0
- package/dist/scripts/src/components/Icon/UnlinkIcon.js +10 -0
- package/dist/scripts/src/components/Icon/UserIcon.js +7 -0
- package/dist/scripts/src/components/Icon/WarningIcon.js +7 -0
- package/dist/scripts/src/components/Icon/XlsIcon.js +10 -0
- package/dist/scripts/src/components/IconProvider.js +249 -0
- package/dist/scripts/src/components/IconRegistryContext.js +307 -0
- package/dist/scripts/src/components/Image/Image.js +34 -0
- package/dist/scripts/src/components/Input/InputAdornment.js +14 -0
- package/dist/scripts/src/components/Input/input-abstractions.js +44 -0
- package/dist/scripts/src/components/Items/Items.js +48 -0
- package/dist/scripts/src/components/Link/Link.js +72 -0
- package/dist/scripts/src/components/List/List.js +442 -0
- package/dist/scripts/src/components/Logo/Logo.js +25 -0
- package/dist/scripts/src/components/Map/Map.js +60 -0
- package/dist/scripts/src/components/Map/world_countries.json +45307 -0
- package/dist/scripts/src/components/Markdown/Markdown.js +120 -0
- package/dist/scripts/src/components/ModalDialog/ConfirmationModalContextProvider.js +106 -0
- package/dist/scripts/src/components/ModalDialog/Dialog.js +20 -0
- package/dist/scripts/src/components/ModalDialog/ModalDialog.js +145 -0
- package/dist/scripts/src/components/MultiCombobox/MultiCombobox.js +249 -0
- package/dist/scripts/src/components/MultiSelect/MultiSelect.js +192 -0
- package/dist/scripts/src/components/NavGroup/NavGroup.js +113 -0
- package/dist/scripts/src/components/NavLink/NavLink.js +115 -0
- package/dist/scripts/src/components/NavPanel/NavPanel.js +101 -0
- package/dist/scripts/src/components/NoResult/NoResult.js +39 -0
- package/dist/scripts/src/components/NumberBox/NumberBox.js +373 -0
- package/dist/scripts/src/components/Option/Option.js +41 -0
- package/dist/scripts/src/components/PageMetaTitle/PageMetaTitle.js +22 -0
- package/dist/scripts/src/components/Pages/Pages.js +74 -0
- package/dist/scripts/src/components/Pdf/LazyPdf.js +44 -0
- package/dist/scripts/src/components/Pdf/Pdf.js +19 -0
- package/dist/scripts/src/components/PieChart/PieChart.js +184 -0
- package/dist/scripts/src/components/PositionedContainer/PositionedContainer.js +29 -0
- package/dist/scripts/src/components/ProgressBar/ProgressBar.js +38 -0
- package/dist/scripts/src/components/Queue/Queue.js +286 -0
- package/dist/scripts/src/components/Queue/queueActions.js +87 -0
- package/dist/scripts/src/components/RadioGroup/RadioGroup.js +144 -0
- package/dist/scripts/src/components/RealTimeAdapter/RealTimeAdapter.js +147 -0
- package/dist/scripts/src/components/Redirect/Redirect.js +10 -0
- package/dist/scripts/src/components/Select/Select.js +139 -0
- package/dist/scripts/src/components/Select/SelectContext.js +45 -0
- package/dist/scripts/src/components/SelectionStore/SelectionStore.js +88 -0
- package/dist/scripts/src/components/SpaceFiller/SpaceFiller.js +22 -0
- package/dist/scripts/src/components/Spinner/Spinner.js +59 -0
- package/dist/scripts/src/components/Splitter/Splitter.js +205 -0
- package/dist/scripts/src/components/Splitter/utils.js +17 -0
- package/dist/scripts/src/components/Stack/Stack.js +117 -0
- package/dist/scripts/src/components/StickyBox/StickyBox.js +33 -0
- package/dist/scripts/src/components/Switch/Switch.js +50 -0
- package/dist/scripts/src/components/Table/Table.js +499 -0
- package/dist/scripts/src/components/Table/useRowSelection.js +169 -0
- package/dist/scripts/src/components/TableColumnDef/TableColumnDef.js +44 -0
- package/dist/scripts/src/components/TableColumnDef/TableContext.js +12 -0
- package/dist/scripts/src/components/Tabs/Tabs.js +85 -0
- package/dist/scripts/src/components/Text/Text.js +175 -0
- package/dist/scripts/src/components/TextArea/TextArea.js +194 -0
- package/dist/scripts/src/components/TextArea/TextAreaResizable.js +63 -0
- package/dist/scripts/src/components/TextArea/useComposedRef.js +50 -0
- package/dist/scripts/src/components/TextBox/TextBox.js +145 -0
- package/dist/scripts/src/components/Theme/NotificationToast.js +39 -0
- package/dist/scripts/src/components/Theme/Theme.js +153 -0
- package/dist/scripts/src/components/ThemeChanger/ThemeChanger.js +125 -0
- package/dist/scripts/src/components/Toggle/Toggle.js +88 -0
- package/dist/scripts/src/components/Tree/TreeComponent.js +79 -0
- package/dist/scripts/src/components/ValidationSummary/ValidationSummary.js +59 -0
- package/dist/scripts/src/components/ViewComponentRegistryContext.js +34 -0
- package/dist/scripts/src/components/abstractions.js +2 -0
- package/dist/scripts/src/components/chart-color-schemes.js +43 -0
- package/dist/scripts/src/components/component-utils.js +32 -0
- package/dist/scripts/src/components/container-helpers.js +18 -0
- package/dist/scripts/src/components-core/ApiBoundComponent.js +189 -0
- package/dist/scripts/src/components-core/AppContext.js +17 -0
- package/dist/scripts/src/components-core/ChildrenSlot.js +10 -0
- package/dist/scripts/src/components-core/Component.js +280 -0
- package/dist/scripts/src/components-core/ComponentDecorator.js +63 -0
- package/dist/scripts/src/components-core/CompoundComponent.js +132 -0
- package/dist/scripts/src/components-core/EngineError.js +91 -0
- package/dist/scripts/src/components-core/ErrorBoundary.js +58 -0
- package/dist/scripts/src/components-core/Fragment.js +14 -0
- package/dist/scripts/src/components-core/InvalidComponent.js +15 -0
- package/dist/scripts/src/components-core/LoaderComponent.js +78 -0
- package/dist/scripts/src/components-core/RestApiProxy.js +341 -0
- package/dist/scripts/src/components-core/RootComponent.js +272 -0
- package/dist/scripts/src/components-core/RouteContext.js +45 -0
- package/dist/scripts/src/components-core/ScrollContext.js +9 -0
- package/dist/scripts/src/components-core/UnknownComponent.js +15 -0
- package/dist/scripts/src/components-core/abstractions/ComponentRenderer.js +2 -0
- package/dist/scripts/src/components-core/abstractions/LoaderRenderer.js +2 -0
- package/dist/scripts/src/components-core/abstractions/containers.js +18 -0
- package/dist/scripts/src/components-core/abstractions/treeAbstractions.js +2 -0
- package/dist/scripts/src/components-core/action/ApiAction.js +276 -0
- package/dist/scripts/src/components-core/action/DownloadFileAction.js +80 -0
- package/dist/scripts/src/components-core/action/NavigateAction.js +20 -0
- package/dist/scripts/src/components-core/action/TimedAction.js +21 -0
- package/dist/scripts/src/components-core/action/UploadAction.js +88 -0
- package/dist/scripts/src/components-core/action/actions.js +15 -0
- package/dist/scripts/src/components-core/appContext/date-functions.js +19 -0
- package/dist/scripts/src/components-core/appContext/misc-utils.js +12 -0
- package/dist/scripts/src/components-core/component-hooks.js +25 -0
- package/dist/scripts/src/components-core/constants.js +18 -0
- package/dist/scripts/src/components-core/container/Container.js +1110 -0
- package/dist/scripts/src/components-core/container/ContainerComponentDef.js +16 -0
- package/dist/scripts/src/components-core/container/buildProxy.js +54 -0
- package/dist/scripts/src/components-core/container/collectFnVarDeps.js +26 -0
- package/dist/scripts/src/components-core/container/valueExtractor.js +195 -0
- package/dist/scripts/src/components-core/descriptorHelper.js +75 -0
- package/dist/scripts/src/components-core/interception/abstractions.js +2 -0
- package/dist/scripts/src/components-core/interception/useApiInterceptorContext.js +9 -0
- package/dist/scripts/src/components-core/loader/ApiLoader.js +46 -0
- package/dist/scripts/src/components-core/loader/DataLoader.js +160 -0
- package/dist/scripts/src/components-core/loader/ExternalDataLoader.js +52 -0
- package/dist/scripts/src/components-core/loader/Loader.js +115 -0
- package/dist/scripts/src/components-core/loader/MockLoaderRenderer.js +32 -0
- package/dist/scripts/src/components-core/loader/PageableLoader.js +240 -0
- package/dist/scripts/src/components-core/renderers.js +45 -0
- package/dist/scripts/src/components-core/reportEngineError.js +59 -0
- package/dist/scripts/src/components-core/script-runner/BindingTreeEvaluationContext.js +35 -0
- package/dist/scripts/src/components-core/script-runner/ICustomOperations.js +34 -0
- package/dist/scripts/src/components-core/script-runner/LogicalThread.js +2 -0
- package/dist/scripts/src/components-core/script-runner/LoopScope.js +2 -0
- package/dist/scripts/src/components-core/script-runner/ParameterParser.js +117 -0
- package/dist/scripts/src/components-core/script-runner/TryScope.js +2 -0
- package/dist/scripts/src/components-core/script-runner/asyncProxy.js +96 -0
- package/dist/scripts/src/components-core/script-runner/bannedFunctions.js +34 -0
- package/dist/scripts/src/components-core/script-runner/custom-operations-registry.js +40 -0
- package/dist/scripts/src/components-core/script-runner/custom-ui-data.js +40 -0
- package/dist/scripts/src/components-core/script-runner/eval-tree-async.js +551 -0
- package/dist/scripts/src/components-core/script-runner/eval-tree-common.js +498 -0
- package/dist/scripts/src/components-core/script-runner/eval-tree-sync.js +434 -0
- package/dist/scripts/src/components-core/script-runner/modules.js +250 -0
- package/dist/scripts/src/components-core/script-runner/process-statement-async.js +818 -0
- package/dist/scripts/src/components-core/script-runner/process-statement-common.js +193 -0
- package/dist/scripts/src/components-core/script-runner/process-statement-sync.js +740 -0
- package/dist/scripts/src/components-core/script-runner/statement-queue.js +62 -0
- package/dist/scripts/src/components-core/script-runner/visitors.js +352 -0
- package/dist/scripts/src/components-core/theming/ThemeContext.js +43 -0
- package/dist/scripts/src/components-core/theming/ThemeProvider.js +334 -0
- package/dist/scripts/src/components-core/theming/abstractions.js +11 -0
- package/dist/scripts/src/components-core/theming/extendThemeUtils.js +114 -0
- package/dist/scripts/src/components-core/theming/hvar.js +105 -0
- package/dist/scripts/src/components-core/theming/themeVars.js +62 -0
- package/dist/scripts/src/components-core/theming/themes/base-utils.js +31 -0
- package/dist/scripts/src/components-core/theming/themes/palette.js +53 -0
- package/dist/scripts/src/components-core/theming/themes/root.js +257 -0
- package/dist/scripts/src/components-core/theming/themes/solid.js +16 -0
- package/dist/scripts/src/components-core/theming/themes/theme-colors.js +407 -0
- package/dist/scripts/src/components-core/theming/themes/xmlui.js +32 -0
- package/dist/scripts/src/components-core/theming/transformThemeVars.js +286 -0
- package/dist/scripts/src/components-core/utils/DataLoaderQueryKeyGenerator.js +34 -0
- package/dist/scripts/src/components-core/utils/LruCache.js +184 -0
- package/dist/scripts/src/components-core/utils/actionUtils.js +32 -0
- package/dist/scripts/src/components-core/utils/classnames.js +58 -0
- package/dist/scripts/src/components-core/utils/css-utils.js +127 -0
- package/dist/scripts/src/components-core/utils/date-utils.js +78 -0
- package/dist/scripts/src/components-core/utils/extractParam.js +148 -0
- package/dist/scripts/src/components-core/utils/hooks.js +221 -0
- package/dist/scripts/src/components-core/utils/mergeProps.js +45 -0
- package/dist/scripts/src/components-core/utils/misc.js +460 -0
- package/dist/scripts/src/components-core/utils/statementUtils.js +205 -0
- package/dist/scripts/src/components-core/utils/treeUtils.js +48 -0
- package/dist/scripts/src/components-core/xmlui-parser.js +52 -0
- package/dist/scripts/src/parsers/scripting/InputStream.js +59 -0
- package/dist/scripts/src/parsers/scripting/Lexer.js +1028 -0
- package/dist/scripts/src/parsers/scripting/Parser.js +2647 -0
- package/dist/scripts/src/parsers/scripting/ParserError.js +46 -0
- package/dist/scripts/src/parsers/scripting/TokenTrait.js +109 -0
- package/dist/scripts/src/parsers/scripting/code-behind-collect.js +118 -0
- package/dist/scripts/src/parsers/scripting/tree-visitor.js +602 -0
- package/dist/scripts/src/parsers/style-parser/StyleInputStream.js +39 -0
- package/dist/scripts/src/parsers/style-parser/StyleLexer.js +621 -0
- package/dist/scripts/src/parsers/style-parser/StyleParser.js +1000 -0
- package/dist/scripts/src/parsers/style-parser/errors.js +37 -0
- package/dist/scripts/src/parsers/style-parser/source-tree.js +2 -0
- package/dist/scripts/src/parsers/style-parser/style-compiler.js +513 -0
- package/dist/scripts/src/parsers/style-parser/tokens.js +42 -0
- package/dist/scripts/src/parsers/ueml/ParserError.js +54 -0
- package/dist/scripts/src/parsers/ueml/UemlHelper.js +579 -0
- package/dist/scripts/src/parsers/ueml/UemlInputStream.js +59 -0
- package/dist/scripts/src/parsers/ueml/UemlLexer.js +868 -0
- package/dist/scripts/src/parsers/ueml/UemlParser.js +1439 -0
- package/dist/scripts/src/parsers/ueml/UemlToken.js +24 -0
- package/dist/scripts/src/parsers/ueml/fileExtensions.js +6 -0
- package/dist/scripts/src/parsers/ueml/source-tree.js +2 -0
- package/dist/scripts/src/parsers/ueml/ueml-tree.js +2 -0
- package/dist/scripts/src/parsers/xmlui-parser/CharacterCodes.js +136 -0
- package/dist/scripts/src/parsers/xmlui-parser/diagnostics.js +100 -0
- package/dist/scripts/src/parsers/xmlui-parser/parser.js +476 -0
- package/dist/scripts/src/parsers/xmlui-parser/scanner.js +415 -0
- package/dist/scripts/src/parsers/xmlui-parser/syntax-kind.js +106 -0
- package/dist/scripts/src/parsers/xmlui-parser/syntax-node.js +2 -0
- package/dist/scripts/src/parsers/xmlui-parser/transform.js +922 -0
- package/dist/scripts/src/parsers/xmlui-parser/utils.js +83 -0
- package/dist/xmlui.es.d.ts +1667 -0
- package/dist/xmlui.es.js +17 -0
- package/dist/xmlui.umd.js +1589 -0
- package/package.json +175 -0
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.isContainerLike = isContainerLike;
|
|
4
|
+
// Tests if the particular component definition needs to be wrapped with an inline container
|
|
5
|
+
function isContainerLike(node) {
|
|
6
|
+
if (node.type === "Container") {
|
|
7
|
+
return true;
|
|
8
|
+
}
|
|
9
|
+
return !!(node.loaders ||
|
|
10
|
+
node.vars ||
|
|
11
|
+
node.uses ||
|
|
12
|
+
// TODO: Check if this is needed
|
|
13
|
+
// node.props?.uses !== undefined ||
|
|
14
|
+
node.functions ||
|
|
15
|
+
node.scriptCollected);
|
|
16
|
+
}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
/**
|
|
4
|
+
* Use this function to build a JavaScript proxy for localContext objects. The responsibility of the proxy is to
|
|
5
|
+
* collect the changes within the localContext so that we can refresh the UI according to them.
|
|
6
|
+
*/
|
|
7
|
+
function buildProxy(proxyTarget, callback, tree = []) {
|
|
8
|
+
// --- We identify a particular (deep) localContext property by its full path; this function create the path
|
|
9
|
+
const getPath = (prop) => tree.concat(prop).join(".");
|
|
10
|
+
const proxiedValues = new WeakMap();
|
|
11
|
+
// --- Create the proxy object for `proxyTarget`
|
|
12
|
+
return new Proxy(proxyTarget, {
|
|
13
|
+
get: function (target, prop, receiver) {
|
|
14
|
+
const value = Reflect.get(target, prop, receiver);
|
|
15
|
+
// --- Create proxies only for writable objects and arrays, except arrow function expressions.
|
|
16
|
+
if (value &&
|
|
17
|
+
!value._ARROW_EXPR_ &&
|
|
18
|
+
!Object.isFrozen(value) &&
|
|
19
|
+
typeof value === "object" &&
|
|
20
|
+
["Array", "Object"].includes(value.constructor.name)) {
|
|
21
|
+
//just to make sure that accessing the proxied objects' field gets the same reference every time
|
|
22
|
+
// e.g. this wouldn't be true otherwise: proxiedObject['field'] === proxiedObject['field']
|
|
23
|
+
if (!proxiedValues.has(value)) {
|
|
24
|
+
proxiedValues.set(value, buildProxy(value, callback, tree.concat(prop)));
|
|
25
|
+
}
|
|
26
|
+
return proxiedValues.get(value);
|
|
27
|
+
}
|
|
28
|
+
// --- Do not create a proxy for other objects
|
|
29
|
+
return value;
|
|
30
|
+
},
|
|
31
|
+
set: function (target, prop, value, receiver) {
|
|
32
|
+
// --- Invoke the callback function to sign any change in the proxied object
|
|
33
|
+
callback({
|
|
34
|
+
action: "set",
|
|
35
|
+
path: getPath(prop),
|
|
36
|
+
pathArray: tree.concat(prop),
|
|
37
|
+
target,
|
|
38
|
+
newValue: value,
|
|
39
|
+
previousValue: Reflect.get(target, prop, receiver),
|
|
40
|
+
});
|
|
41
|
+
// --- Execute the change.
|
|
42
|
+
// --- Note, any error raised in the callback will prevent from changing the property value
|
|
43
|
+
return Reflect.set(target, prop, value, receiver);
|
|
44
|
+
},
|
|
45
|
+
deleteProperty: function (target, prop) {
|
|
46
|
+
// --- Invoke the callback function to delete a property
|
|
47
|
+
callback({ action: "unset", path: getPath(prop), pathArray: tree.concat(prop), target });
|
|
48
|
+
// --- Execute the change
|
|
49
|
+
// --- Note, any error raised in the callback will prevent from deleting the property value
|
|
50
|
+
return Reflect.deleteProperty(target, prop);
|
|
51
|
+
},
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
exports.default = buildProxy;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.collectFnVarDeps = collectFnVarDeps;
|
|
4
|
+
function collectFnVarDeps(fnDeps = {}) {
|
|
5
|
+
const fnKeys = Object.keys(fnDeps);
|
|
6
|
+
function collectFnDeps(depKey, visitedPath = new Set()) {
|
|
7
|
+
if (!fnKeys.includes(depKey)) {
|
|
8
|
+
return [depKey];
|
|
9
|
+
}
|
|
10
|
+
visitedPath.add(depKey);
|
|
11
|
+
const ret = [];
|
|
12
|
+
fnDeps[depKey].forEach((key) => {
|
|
13
|
+
if (visitedPath.has(key)) { //we already walked here, skip this one (avoid infinite loops for circular deps)
|
|
14
|
+
return;
|
|
15
|
+
}
|
|
16
|
+
visitedPath.add(key);
|
|
17
|
+
ret.push(...collectFnDeps(key, visitedPath));
|
|
18
|
+
});
|
|
19
|
+
return ret;
|
|
20
|
+
}
|
|
21
|
+
const flatFnDeps = {};
|
|
22
|
+
fnKeys.forEach((key) => {
|
|
23
|
+
flatFnDeps[key] = [...new Set(collectFnDeps(key))];
|
|
24
|
+
});
|
|
25
|
+
return flatFnDeps;
|
|
26
|
+
}
|
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.asOptionalBoolean = asOptionalBoolean;
|
|
7
|
+
exports.createValueExtractor = createValueExtractor;
|
|
8
|
+
const memoize_one_1 = __importDefault(require("memoize-one"));
|
|
9
|
+
const lodash_es_1 = require("lodash-es");
|
|
10
|
+
const ParameterParser_1 = require("@components-core/script-runner/ParameterParser");
|
|
11
|
+
const misc_1 = require("@components-core/utils/misc");
|
|
12
|
+
const visitors_1 = require("@components-core/script-runner/visitors");
|
|
13
|
+
const extractParam_1 = require("@components-core/utils/extractParam");
|
|
14
|
+
const StyleParser_1 = require("../../parsers/style-parser/StyleParser");
|
|
15
|
+
function parseStringArray(input) {
|
|
16
|
+
const trimmedInput = input.trim();
|
|
17
|
+
if (trimmedInput.startsWith("[") && trimmedInput.endsWith("]")) {
|
|
18
|
+
const content = trimmedInput.slice(1, -1);
|
|
19
|
+
const items = content.split(",").map((item) => item.trim());
|
|
20
|
+
return items.map((item) => item.replace(/^['"]|['"]$/g, ""));
|
|
21
|
+
}
|
|
22
|
+
else {
|
|
23
|
+
throw new Error("Invalid array format");
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
function collectParams(expression) {
|
|
27
|
+
const params = [];
|
|
28
|
+
if (typeof expression === "string") {
|
|
29
|
+
params.push(...(0, ParameterParser_1.parseParameterString)(expression));
|
|
30
|
+
}
|
|
31
|
+
else if (Array.isArray(expression)) {
|
|
32
|
+
expression.forEach((exp) => {
|
|
33
|
+
params.push(...collectParams(exp));
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
else if ((0, lodash_es_1.isPlainObject)(expression)) {
|
|
37
|
+
Object.entries(expression).forEach(([key, value]) => {
|
|
38
|
+
params.push(...collectParams(value));
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
return params;
|
|
42
|
+
}
|
|
43
|
+
function asOptionalBoolean(value, defValue) {
|
|
44
|
+
if (value === undefined || value === null)
|
|
45
|
+
return defValue;
|
|
46
|
+
if (typeof value === "string") {
|
|
47
|
+
if (value.trim().toLowerCase() === "true") {
|
|
48
|
+
return true;
|
|
49
|
+
}
|
|
50
|
+
if (value.trim().toLowerCase() === "false") {
|
|
51
|
+
return false;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
if (typeof value === "boolean") {
|
|
55
|
+
return value;
|
|
56
|
+
}
|
|
57
|
+
throw new Error(`A boolean value expected but ${typeof value} received.`);
|
|
58
|
+
}
|
|
59
|
+
// This function represents the extractor function we pass to extractValue
|
|
60
|
+
function createValueExtractor(state, appContext, referenceTrackedApi, memoedVarsRef) {
|
|
61
|
+
// --- Extract the parameter and retrieve as is is
|
|
62
|
+
const extractor = (expression, strict) => {
|
|
63
|
+
if (!expression) {
|
|
64
|
+
return expression;
|
|
65
|
+
}
|
|
66
|
+
if ((0, misc_1.isPrimitive)(expression) && !(0, lodash_es_1.isString)(expression)) {
|
|
67
|
+
return expression;
|
|
68
|
+
}
|
|
69
|
+
let expressionString = expression;
|
|
70
|
+
if (typeof expression !== "string") {
|
|
71
|
+
if (strict) {
|
|
72
|
+
return expression;
|
|
73
|
+
}
|
|
74
|
+
expressionString = JSON.stringify(expression);
|
|
75
|
+
}
|
|
76
|
+
if (!memoedVarsRef.current.has(expressionString)) {
|
|
77
|
+
const params = collectParams(expression);
|
|
78
|
+
memoedVarsRef.current.set(expressionString, {
|
|
79
|
+
getDependencies: (0, memoize_one_1.default)((_expressionString, referenceTrackedApi) => {
|
|
80
|
+
let ret = new Set();
|
|
81
|
+
params.forEach((param) => {
|
|
82
|
+
if (param.type === "expression") {
|
|
83
|
+
ret = new Set([...ret, ...(0, visitors_1.collectVariableDependencies)(param.value, referenceTrackedApi)]);
|
|
84
|
+
}
|
|
85
|
+
});
|
|
86
|
+
return Array.from(ret);
|
|
87
|
+
}),
|
|
88
|
+
obtainValue: (0, memoize_one_1.default)((expression, state, appContext, strict, deps, appContextDeps) => {
|
|
89
|
+
// console.log("COMP, BUST, obtain value called with", expression, state, appContext, deps, appContextDeps);
|
|
90
|
+
return (0, extractParam_1.extractParam)(state, expression, appContext, strict);
|
|
91
|
+
}, ([_newExpression, _newState, _newAppContext, _newStrict, newDeps, newAppContextDeps], [_lastExpression, _lastState, _lastAppContext, _lastStrict, lastDeps, lastAppContextDeps]) => {
|
|
92
|
+
return (0, misc_1.shallowCompare)(newDeps, lastDeps) && (0, misc_1.shallowCompare)(newAppContextDeps, lastAppContextDeps);
|
|
93
|
+
}),
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
const expressionDependencies = memoedVarsRef.current
|
|
97
|
+
.get(expressionString)
|
|
98
|
+
.getDependencies(expressionString, referenceTrackedApi);
|
|
99
|
+
const depValues = (0, misc_1.pickFromObject)(state, expressionDependencies);
|
|
100
|
+
const appContextDepValues = (0, misc_1.pickFromObject)(appContext, expressionDependencies);
|
|
101
|
+
// console.log("COMP, obtain value called with", depValues, appContextDepValues, expressionDependencies);
|
|
102
|
+
return memoedVarsRef.current.get(expressionString).obtainValue(expression, state, appContext, strict, depValues, appContextDepValues);
|
|
103
|
+
};
|
|
104
|
+
// --- Extract a string value
|
|
105
|
+
extractor.asString = (expression) => {
|
|
106
|
+
var _a, _b;
|
|
107
|
+
return (_b = (_a = extractor(expression)) === null || _a === void 0 ? void 0 : _a.toString()) !== null && _b !== void 0 ? _b : "";
|
|
108
|
+
};
|
|
109
|
+
// --- Extract an optional string value
|
|
110
|
+
extractor.asOptionalString = (expression) => {
|
|
111
|
+
var _a;
|
|
112
|
+
return (_a = extractor(expression)) === null || _a === void 0 ? void 0 : _a.toString();
|
|
113
|
+
};
|
|
114
|
+
extractor.asDisplayText = (expression) => {
|
|
115
|
+
var _a;
|
|
116
|
+
let text = (_a = extractor(expression)) === null || _a === void 0 ? void 0 : _a.toString();
|
|
117
|
+
if (text) {
|
|
118
|
+
let replaced = "";
|
|
119
|
+
let spaceFound = false;
|
|
120
|
+
for (const char of text) {
|
|
121
|
+
if (char === " " || char === "\t") {
|
|
122
|
+
replaced += spaceFound ? "\xa0" : " ";
|
|
123
|
+
spaceFound = true;
|
|
124
|
+
}
|
|
125
|
+
else {
|
|
126
|
+
replaced += char;
|
|
127
|
+
spaceFound = char === "\xa0";
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
text = replaced;
|
|
131
|
+
}
|
|
132
|
+
return text;
|
|
133
|
+
};
|
|
134
|
+
// ---Extract an array of strings
|
|
135
|
+
extractor.asOptionalStringArray = (expression) => {
|
|
136
|
+
const value = extractor(expression);
|
|
137
|
+
if (value === undefined || value === null)
|
|
138
|
+
return [];
|
|
139
|
+
if (typeof value === "string" && value.trim() !== "") {
|
|
140
|
+
//console.log(parseStringArray(value));
|
|
141
|
+
return parseStringArray(value);
|
|
142
|
+
}
|
|
143
|
+
if (Array.isArray(value)) {
|
|
144
|
+
return value.map((item) => item.toString());
|
|
145
|
+
}
|
|
146
|
+
throw new Error(`An array of strings expected but ${typeof value} received.`);
|
|
147
|
+
};
|
|
148
|
+
// --- Extract a numeric value
|
|
149
|
+
extractor.asNumber = (expression) => {
|
|
150
|
+
const value = extractor(expression);
|
|
151
|
+
if (typeof value === "number")
|
|
152
|
+
return value;
|
|
153
|
+
throw new Error(`A numeric value expected but ${typeof value} received.`);
|
|
154
|
+
};
|
|
155
|
+
// --- Extract an optional numeric value
|
|
156
|
+
extractor.asOptionalNumber = (expression, defValue) => {
|
|
157
|
+
const value = extractor(expression);
|
|
158
|
+
if (value === undefined || value === null)
|
|
159
|
+
return defValue;
|
|
160
|
+
if (typeof value === "string" && !isNaN(parseFloat(value))) {
|
|
161
|
+
return Number(value);
|
|
162
|
+
}
|
|
163
|
+
if (typeof value === "number")
|
|
164
|
+
return value;
|
|
165
|
+
throw new Error(`A numeric value expected but ${typeof value} received.`);
|
|
166
|
+
};
|
|
167
|
+
// --- Extract a Boolean value
|
|
168
|
+
extractor.asBoolean = (expression) => {
|
|
169
|
+
return !!extractor(expression);
|
|
170
|
+
};
|
|
171
|
+
// --- Extract an optional Boolean value
|
|
172
|
+
extractor.asOptionalBoolean = (expression, defValue) => {
|
|
173
|
+
return asOptionalBoolean(extractor(expression), defValue);
|
|
174
|
+
};
|
|
175
|
+
// --- Extract an optional size value
|
|
176
|
+
extractor.asSize = (expression) => {
|
|
177
|
+
var _a;
|
|
178
|
+
const value = extractor(expression);
|
|
179
|
+
if (value === undefined || value === null)
|
|
180
|
+
return undefined;
|
|
181
|
+
try {
|
|
182
|
+
const parser = new StyleParser_1.StyleParser(value);
|
|
183
|
+
const size = parser.parseSize();
|
|
184
|
+
if (size === null || size === void 0 ? void 0 : size.themeId) {
|
|
185
|
+
return (0, StyleParser_1.toCssVar)(size.themeId);
|
|
186
|
+
}
|
|
187
|
+
return size ? `${size.value}${(_a = size.unit) !== null && _a !== void 0 ? _a : "px"}` : undefined;
|
|
188
|
+
}
|
|
189
|
+
catch (_b) {
|
|
190
|
+
return undefined;
|
|
191
|
+
}
|
|
192
|
+
};
|
|
193
|
+
// --- Done.
|
|
194
|
+
return extractor;
|
|
195
|
+
}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.layoutOptionKeys = void 0;
|
|
4
|
+
exports.desc = desc;
|
|
5
|
+
// Creates a simple property descriptor
|
|
6
|
+
function desc(description) {
|
|
7
|
+
return {
|
|
8
|
+
description,
|
|
9
|
+
};
|
|
10
|
+
}
|
|
11
|
+
// We need these keys for extracting layout parameters
|
|
12
|
+
exports.layoutOptionKeys = [
|
|
13
|
+
"horizontalAlignment",
|
|
14
|
+
"verticalAlignment",
|
|
15
|
+
"orientation",
|
|
16
|
+
"width",
|
|
17
|
+
"minWidth",
|
|
18
|
+
"maxWidth",
|
|
19
|
+
"height",
|
|
20
|
+
"minHeight",
|
|
21
|
+
"maxHeight",
|
|
22
|
+
"gap",
|
|
23
|
+
"border",
|
|
24
|
+
"borderTop",
|
|
25
|
+
"borderRight",
|
|
26
|
+
"borderBottom",
|
|
27
|
+
"borderLeft",
|
|
28
|
+
"radius",
|
|
29
|
+
"radiusTopLeft",
|
|
30
|
+
"radiusTopRight",
|
|
31
|
+
"radiusBottomLeft",
|
|
32
|
+
"radiusBottomRight",
|
|
33
|
+
"padding",
|
|
34
|
+
"horizontalPadding",
|
|
35
|
+
"verticalPadding",
|
|
36
|
+
"paddingTop",
|
|
37
|
+
"paddingRight",
|
|
38
|
+
"paddingBottom",
|
|
39
|
+
"paddingLeft",
|
|
40
|
+
"backgroundColor",
|
|
41
|
+
"background",
|
|
42
|
+
"shadow",
|
|
43
|
+
"direction",
|
|
44
|
+
"horizontalOverflow",
|
|
45
|
+
"verticalOverflow",
|
|
46
|
+
"zIndex",
|
|
47
|
+
"color",
|
|
48
|
+
"fontFamily",
|
|
49
|
+
"fontSize",
|
|
50
|
+
"fontWeight",
|
|
51
|
+
"italic",
|
|
52
|
+
"textDecoration",
|
|
53
|
+
"wrapContent",
|
|
54
|
+
"canShrink",
|
|
55
|
+
"margin",
|
|
56
|
+
"horizontalMargin",
|
|
57
|
+
"verticalMargin",
|
|
58
|
+
"marginTop",
|
|
59
|
+
"marginRight",
|
|
60
|
+
"marginBottom",
|
|
61
|
+
"marginLeft",
|
|
62
|
+
"userSelect",
|
|
63
|
+
"letterSpacing",
|
|
64
|
+
"textTransform",
|
|
65
|
+
"lineHeight",
|
|
66
|
+
"opacity",
|
|
67
|
+
"cursor",
|
|
68
|
+
"textWrap",
|
|
69
|
+
"textAlign",
|
|
70
|
+
"textAlignLast",
|
|
71
|
+
"top",
|
|
72
|
+
"right",
|
|
73
|
+
"bottom",
|
|
74
|
+
"left",
|
|
75
|
+
];
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ApiInterceptorContext = void 0;
|
|
4
|
+
exports.useApiInterceptorContext = useApiInterceptorContext;
|
|
5
|
+
const react_1 = require("react");
|
|
6
|
+
exports.ApiInterceptorContext = (0, react_1.createContext)(null);
|
|
7
|
+
function useApiInterceptorContext() {
|
|
8
|
+
return (0, react_1.useContext)(exports.ApiInterceptorContext);
|
|
9
|
+
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.apiLoaderRenderer = void 0;
|
|
13
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
14
|
+
const react_1 = require("react");
|
|
15
|
+
const Loader_1 = require("./Loader");
|
|
16
|
+
const misc_1 = require("@components-core/utils/misc");
|
|
17
|
+
const extractParam_1 = require("@components-core/utils/extractParam");
|
|
18
|
+
const renderers_1 = require("@components-core/renderers");
|
|
19
|
+
const AppContext_1 = require("@components-core/AppContext");
|
|
20
|
+
/**
|
|
21
|
+
* Represents a non-displayed React component, which handles the specified API loader
|
|
22
|
+
*/
|
|
23
|
+
function ApiLoader({ loader, loaderInProgressChanged, loaderLoaded, loaderError, state, doNotRemoveNulls, }) {
|
|
24
|
+
const appContext = (0, AppContext_1.useAppContext)();
|
|
25
|
+
const url = (0, extractParam_1.extractParam)(state, loader.props.url, appContext);
|
|
26
|
+
const loadable = !!url;
|
|
27
|
+
const doLoad = (0, react_1.useCallback)(() => __awaiter(this, void 0, void 0, function* () {
|
|
28
|
+
if (!loadable) {
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
console.log("doLoad ", url);
|
|
32
|
+
const response = yield fetch(url);
|
|
33
|
+
if (loader.props.raw) {
|
|
34
|
+
return yield response.text();
|
|
35
|
+
}
|
|
36
|
+
const responseObj = yield response.json();
|
|
37
|
+
if (!doNotRemoveNulls) {
|
|
38
|
+
(0, misc_1.removeNullProperties)(responseObj);
|
|
39
|
+
}
|
|
40
|
+
return responseObj;
|
|
41
|
+
}), [doNotRemoveNulls, loadable, loader.props.raw, url]);
|
|
42
|
+
return ((0, jsx_runtime_1.jsx)(Loader_1.Loader, { state: state, loader: loader, loaderInProgressChanged: loaderInProgressChanged, loaderLoaded: loaderLoaded, loaderError: loaderError, loaderFn: doLoad }));
|
|
43
|
+
}
|
|
44
|
+
exports.apiLoaderRenderer = (0, renderers_1.createLoaderRenderer)("ApiLoader", ({ loader, state, dispatch, loaderInProgressChanged, loaderLoaded, loaderError }) => {
|
|
45
|
+
return ((0, jsx_runtime_1.jsx)(ApiLoader, { loader: loader, state: state, loaderInProgressChanged: loaderInProgressChanged, loaderLoaded: loaderLoaded, loaderError: loaderError }));
|
|
46
|
+
});
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.dataLoaderRenderer = void 0;
|
|
16
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
17
|
+
const react_1 = require("react");
|
|
18
|
+
const react_hot_toast_1 = __importDefault(require("react-hot-toast"));
|
|
19
|
+
const renderers_1 = require("@components-core/renderers");
|
|
20
|
+
const RestApiProxy_1 = __importDefault(require("@components-core/RestApiProxy"));
|
|
21
|
+
const extractParam_1 = require("@components-core/utils/extractParam");
|
|
22
|
+
const DataLoaderQueryKeyGenerator_1 = require("@components-core/utils/DataLoaderQueryKeyGenerator");
|
|
23
|
+
const PageableLoader_1 = require("@components-core/loader/PageableLoader");
|
|
24
|
+
const Loader_1 = require("@components-core/loader/Loader");
|
|
25
|
+
const AppContext_1 = require("@components-core/AppContext");
|
|
26
|
+
const descriptorHelper_1 = require("@components-core/descriptorHelper");
|
|
27
|
+
const hooks_1 = require("@components-core/utils/hooks");
|
|
28
|
+
function DataLoader({ loader, state, registerComponentApi, onLoaded, loaderInProgressChanged, loaderLoaded, loaderError, }) {
|
|
29
|
+
const appContext = (0, AppContext_1.useAppContext)();
|
|
30
|
+
const url = (0, extractParam_1.extractParam)(state, loader.props.url, appContext);
|
|
31
|
+
const debounceTimeInMs = (0, extractParam_1.extractParam)(state, loader.props.debounceTimeInMs, appContext);
|
|
32
|
+
const queryParamsInner = (0, react_1.useMemo)(() => {
|
|
33
|
+
return (0, extractParam_1.extractParam)(state, loader.props.queryParams, appContext);
|
|
34
|
+
}, [appContext, loader.props.queryParams, state]);
|
|
35
|
+
const queryParams = (0, hooks_1.useShallowCompareMemoize)(queryParamsInner);
|
|
36
|
+
const pagingDirection = (0, react_1.useMemo)(() => {
|
|
37
|
+
if (loader.props.prevPageParamSelector && loader.props.nextPageParamSelector) {
|
|
38
|
+
return "BIDIRECTIONAL";
|
|
39
|
+
}
|
|
40
|
+
if (loader.props.prevPageParamSelector) {
|
|
41
|
+
return "BACKWARD";
|
|
42
|
+
}
|
|
43
|
+
if (loader.props.nextPageParamSelector) {
|
|
44
|
+
return "FORWARD";
|
|
45
|
+
}
|
|
46
|
+
return null;
|
|
47
|
+
}, [loader.props.nextPageParamSelector, loader.props.prevPageParamSelector]);
|
|
48
|
+
const hasPaging = pagingDirection !== null;
|
|
49
|
+
const api = (0, react_1.useMemo)(() => {
|
|
50
|
+
return new RestApiProxy_1.default(appContext);
|
|
51
|
+
}, [appContext]);
|
|
52
|
+
const doLoad = (abortSignal, pageParams) => __awaiter(this, void 0, void 0, function* () {
|
|
53
|
+
const response = yield api.execute({
|
|
54
|
+
abortSignal,
|
|
55
|
+
operation: loader.props,
|
|
56
|
+
params: Object.assign(Object.assign({}, state), { $pageParams: pageParams }),
|
|
57
|
+
resolveBindingExpressions: true,
|
|
58
|
+
});
|
|
59
|
+
let result = response;
|
|
60
|
+
const resultSelector = loader.props.resultSelector;
|
|
61
|
+
if (resultSelector) {
|
|
62
|
+
result = (0, extractParam_1.extractParam)({ $response: response }, resultSelector.startsWith("{") ? resultSelector : `{$response.${resultSelector}}`);
|
|
63
|
+
}
|
|
64
|
+
let prevPageParam = undefined;
|
|
65
|
+
const prevPageParamSelector = loader.props.prevPageParamSelector;
|
|
66
|
+
if (prevPageParamSelector) {
|
|
67
|
+
prevPageParam = (0, extractParam_1.extractParam)({ $response: response }, prevPageParamSelector.startsWith("{") ? prevPageParamSelector : `{$response.${prevPageParamSelector}}`);
|
|
68
|
+
}
|
|
69
|
+
let nextPageParam = undefined;
|
|
70
|
+
const nextPageParamSelector = loader.props.nextPageParamSelector;
|
|
71
|
+
if (nextPageParamSelector) {
|
|
72
|
+
nextPageParam = (0, extractParam_1.extractParam)({ $response: response }, nextPageParamSelector.startsWith("{") ? nextPageParamSelector : `{$response.${nextPageParamSelector}}`);
|
|
73
|
+
}
|
|
74
|
+
if (hasPaging) {
|
|
75
|
+
return {
|
|
76
|
+
result,
|
|
77
|
+
prevPageParam,
|
|
78
|
+
nextPageParam,
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
return result;
|
|
82
|
+
});
|
|
83
|
+
const queryId = (0, react_1.useMemo)(() => {
|
|
84
|
+
return new DataLoaderQueryKeyGenerator_1.DataLoaderQueryKeyGenerator(url, queryParams).asKey();
|
|
85
|
+
}, [queryParams, url]);
|
|
86
|
+
const stateRef = (0, react_1.useRef)({ state, appContext });
|
|
87
|
+
stateRef.current = { state, appContext };
|
|
88
|
+
const loadingToastIdRef = (0, react_1.useRef)(undefined);
|
|
89
|
+
const inProgress = (0, react_1.useCallback)((isInProgress) => {
|
|
90
|
+
loaderInProgressChanged(isInProgress);
|
|
91
|
+
const inProgressMessage = (0, extractParam_1.extractParam)(stateRef.current.state, loader.props.inProgressNotificationMessage, stateRef.current.appContext);
|
|
92
|
+
if (isInProgress && inProgressMessage) {
|
|
93
|
+
if (loadingToastIdRef.current) {
|
|
94
|
+
react_hot_toast_1.default.dismiss(loadingToastIdRef.current);
|
|
95
|
+
}
|
|
96
|
+
loadingToastIdRef.current = react_hot_toast_1.default.loading(inProgressMessage);
|
|
97
|
+
}
|
|
98
|
+
else {
|
|
99
|
+
if (loadingToastIdRef.current) {
|
|
100
|
+
react_hot_toast_1.default.dismiss(loadingToastIdRef.current);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
}, [loader.props.inProgressNotificationMessage, loaderInProgressChanged]);
|
|
104
|
+
const loaded = (0, react_1.useCallback)((data, pageInfo) => {
|
|
105
|
+
loaderLoaded(data, pageInfo);
|
|
106
|
+
const completedMessage = (0, extractParam_1.extractParam)(Object.assign(Object.assign({}, stateRef.current.state), { $result: data }), loader.props.completedNotificationMessage, stateRef.current.appContext);
|
|
107
|
+
if (completedMessage) {
|
|
108
|
+
react_hot_toast_1.default.success(completedMessage, {
|
|
109
|
+
id: loadingToastIdRef.current,
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
else {
|
|
113
|
+
if (loadingToastIdRef.current) {
|
|
114
|
+
react_hot_toast_1.default.dismiss(loadingToastIdRef.current);
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
}, [loader.props.completedNotificationMessage, loaderLoaded]);
|
|
118
|
+
const error = (0, react_1.useCallback)((error) => {
|
|
119
|
+
loaderError(error);
|
|
120
|
+
const errorMessage = (0, extractParam_1.extractParam)(Object.assign(Object.assign({}, stateRef.current.state), { $error: error }), loader.props.errorNotificationMessage, stateRef.current.appContext);
|
|
121
|
+
if (errorMessage) {
|
|
122
|
+
react_hot_toast_1.default.error(errorMessage, {
|
|
123
|
+
id: loadingToastIdRef.current,
|
|
124
|
+
});
|
|
125
|
+
}
|
|
126
|
+
else {
|
|
127
|
+
if (loadingToastIdRef.current) {
|
|
128
|
+
react_hot_toast_1.default.dismiss(loadingToastIdRef.current);
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
if (errorMessage === undefined) {
|
|
132
|
+
appContext.signError(error);
|
|
133
|
+
}
|
|
134
|
+
}, [appContext, loader.props.errorNotificationMessage, loaderError]);
|
|
135
|
+
const pollIntervalInSeconds = (0, extractParam_1.extractParam)(state, loader.props.pollIntervalInSeconds, appContext);
|
|
136
|
+
return hasPaging ? ((0, jsx_runtime_1.jsx)(PageableLoader_1.PageableLoader, { queryId: queryId, state: state, loader: loader, loaderInProgressChanged: inProgress, loaderLoaded: loaded, loaderError: error, loaderFn: doLoad, registerComponentApi: registerComponentApi, pollIntervalInSeconds: pollIntervalInSeconds, onLoaded: onLoaded, direction: pagingDirection }, queryId === null || queryId === void 0 ? void 0 : queryId.join(""))) : ((0, jsx_runtime_1.jsx)(Loader_1.Loader, { queryId: queryId, state: state, loader: loader, loaderInProgressChanged: inProgress, loaderLoaded: loaded, loaderError: error, loaderFn: doLoad, pollIntervalInSeconds: pollIntervalInSeconds, registerComponentApi: registerComponentApi, onLoaded: onLoaded }, queryId === null || queryId === void 0 ? void 0 : queryId.join("")));
|
|
137
|
+
}
|
|
138
|
+
const metadata = {
|
|
139
|
+
displayName: "DataLoader",
|
|
140
|
+
description: "This component manages data fetching from a web API",
|
|
141
|
+
props: {
|
|
142
|
+
method: (0, descriptorHelper_1.desc)("The HTTP method to use"),
|
|
143
|
+
url: (0, descriptorHelper_1.desc)("The URL to fetch data from"),
|
|
144
|
+
rawBody: (0, descriptorHelper_1.desc)("The raw body of the request"),
|
|
145
|
+
body: (0, descriptorHelper_1.desc)("The body of the request to be sent as JSON"),
|
|
146
|
+
queryParams: (0, descriptorHelper_1.desc)("Query parameters to send with the request"),
|
|
147
|
+
headers: (0, descriptorHelper_1.desc)("Headers to send with the request"),
|
|
148
|
+
pollIntervalInSeconds: (0, descriptorHelper_1.desc)("The interval in seconds to poll the API for refreshing data"),
|
|
149
|
+
resultSelector: (0, descriptorHelper_1.desc)("An expression to extract the result from the response"),
|
|
150
|
+
prevPageParamSelector: (0, descriptorHelper_1.desc)("An expression to extract the previous page parameter from the response"),
|
|
151
|
+
nextPageParamSelector: (0, descriptorHelper_1.desc)("An expression to extract the next page parameter from the response"),
|
|
152
|
+
},
|
|
153
|
+
events: {
|
|
154
|
+
loaded: (0, descriptorHelper_1.desc)("Event to trigger when the data is loaded"),
|
|
155
|
+
},
|
|
156
|
+
};
|
|
157
|
+
exports.dataLoaderRenderer = (0, renderers_1.createLoaderRenderer)("DataLoader", ({ loader, state, loaderLoaded, loaderInProgressChanged, loaderError, registerComponentApi, lookupAction }) => {
|
|
158
|
+
var _a;
|
|
159
|
+
return ((0, jsx_runtime_1.jsx)(DataLoader, { loader: loader, state: state, loaderInProgressChanged: loaderInProgressChanged, loaderLoaded: loaderLoaded, loaderError: loaderError, registerComponentApi: registerComponentApi, onLoaded: lookupAction((_a = loader.events) === null || _a === void 0 ? void 0 : _a.loaded, { eventName: "loaded" }) }));
|
|
160
|
+
}, metadata);
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.externalDataLoaderRenderer = void 0;
|
|
13
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
14
|
+
const react_1 = require("react");
|
|
15
|
+
const Loader_1 = require("./Loader");
|
|
16
|
+
const misc_1 = require("@components-core/utils/misc");
|
|
17
|
+
const extractParam_1 = require("@components-core/utils/extractParam");
|
|
18
|
+
const renderers_1 = require("@components-core/renderers");
|
|
19
|
+
const AppContext_1 = require("@components-core/AppContext");
|
|
20
|
+
/**
|
|
21
|
+
* Represents a non-displayed React component, which handles the specified API loader
|
|
22
|
+
*/
|
|
23
|
+
function ExternalDataLoader({ loader, loaderInProgressChanged, loaderError, loaderLoaded, state, doNotRemoveNulls, }) {
|
|
24
|
+
const appContext = (0, AppContext_1.useAppContext)();
|
|
25
|
+
const method = (0, extractParam_1.extractParam)(state, loader.props.method, appContext);
|
|
26
|
+
const headers = (0, extractParam_1.extractParam)(state, loader.props.headers, appContext);
|
|
27
|
+
const data = (0, extractParam_1.extractParam)(state, loader.props.data, appContext);
|
|
28
|
+
console.log("resolve");
|
|
29
|
+
const url = (0, extractParam_1.extractParam)(state, loader.props.url, appContext);
|
|
30
|
+
const urlLoadable = !!url;
|
|
31
|
+
const doLoad = (0, react_1.useCallback)(() => __awaiter(this, void 0, void 0, function* () {
|
|
32
|
+
if (!urlLoadable) {
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
console.log("doLoad ", url, data);
|
|
36
|
+
const response = yield fetch(url, {
|
|
37
|
+
method: method || "POST",
|
|
38
|
+
headers: Object.assign({ "Content-Type": "application/json" }, headers),
|
|
39
|
+
body: JSON.stringify(data),
|
|
40
|
+
});
|
|
41
|
+
const responseObj = yield response.json();
|
|
42
|
+
if (!doNotRemoveNulls) {
|
|
43
|
+
(0, misc_1.removeNullProperties)(responseObj);
|
|
44
|
+
}
|
|
45
|
+
console.log("result", responseObj);
|
|
46
|
+
return responseObj;
|
|
47
|
+
}), [urlLoadable, headers, data, url, method, doNotRemoveNulls]);
|
|
48
|
+
return ((0, jsx_runtime_1.jsx)(Loader_1.Loader, { state: state, loader: loader, loaderInProgressChanged: loaderInProgressChanged, loaderLoaded: loaderLoaded, loaderError: loaderError, loaderFn: doLoad }));
|
|
49
|
+
}
|
|
50
|
+
exports.externalDataLoaderRenderer = (0, renderers_1.createLoaderRenderer)("ExternalDataLoader", ({ loader, state, loaderInProgressChanged, loaderError, loaderLoaded }) => {
|
|
51
|
+
return ((0, jsx_runtime_1.jsx)(ExternalDataLoader, { loader: loader, state: state, loaderInProgressChanged: loaderInProgressChanged, loaderLoaded: loaderLoaded, loaderError: loaderError }));
|
|
52
|
+
});
|