@wavemaker-ai/react-runtime 1.0.0-rc.647499 → 1.0.0-rc.647565
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/.npmignore +4 -0
- package/actions/base-action.js +12 -29
- package/actions/login-action.js +35 -52
- package/actions/logout-action.js +21 -38
- package/actions/navigation-action.js +251 -346
- package/actions/notification-action.js +121 -149
- package/actions/timer-action.js +95 -151
- package/actions/toast-provider.js +62 -76
- package/actions/toast.js +95 -91
- package/actions/toast.service.js +59 -79
- package/actions/types/index.js +6 -9
- package/components/advanced/carousel/index.js +358 -366
- package/components/advanced/carousel/props.js +0 -5
- package/components/advanced/carousel/template.js +102 -80
- package/components/advanced/login/index.js +227 -285
- package/components/advanced/login/props.js +0 -5
- package/components/advanced/marquee/index.js +169 -163
- package/components/advanced/marquee/props.js +0 -5
- package/components/basic/anchor/index.js +207 -187
- package/components/basic/anchor/props.js +0 -5
- package/components/basic/audio/index.js +110 -72
- package/components/basic/audio/props.js +0 -5
- package/components/basic/html/index.js +163 -203
- package/components/basic/html/props.js +0 -5
- package/components/basic/html/utils.js +30 -28
- package/components/basic/icon/index.js +98 -84
- package/components/basic/icon/props.js +0 -5
- package/components/basic/iframe/iframe.utils.js +7 -16
- package/components/basic/iframe/index.js +97 -103
- package/components/basic/iframe/props.js +0 -5
- package/components/basic/label/index.js +156 -134
- package/components/basic/label/props.js +0 -5
- package/components/basic/message/index.js +129 -113
- package/components/basic/message/props.js +0 -5
- package/components/basic/picture/index.js +156 -127
- package/components/basic/picture/props.js +0 -5
- package/components/basic/progress-bar/index.js +240 -176
- package/components/basic/progress-bar/props.js +5 -31
- package/components/basic/progress-circle/index.js +166 -183
- package/components/basic/progress-circle/props.js +14 -34
- package/components/basic/richtexteditor/index.js +430 -396
- package/components/basic/richtexteditor/props.js +0 -5
- package/components/basic/search/index.js +812 -931
- package/components/basic/search/props.js +0 -5
- package/components/basic/search/providers.js +233 -380
- package/components/basic/spinner/index.js +210 -200
- package/components/basic/spinner/props.js +4 -22
- package/components/basic/tile/index.js +73 -81
- package/components/basic/tile/props.js +0 -5
- package/components/basic/tree/Components/TreeNodeComponent.js +238 -170
- package/components/basic/tree/hooks/useTreePartialNodeApi.js +143 -135
- package/components/basic/tree/index.js +378 -454
- package/components/basic/tree/props.js +0 -5
- package/components/basic/tree/utils.js +129 -185
- package/components/basic/video/index.js +161 -107
- package/components/basic/video/props.js +0 -5
- package/components/chart/index.js +42 -50
- package/components/chart/props.js +31 -37
- package/components/chart/src/ChartRenderer.js +172 -154
- package/components/chart/src/chart.js +391 -213
- package/components/chart/src/chartStyles.generated.js +6 -14
- package/components/chart/src/chartUtils.js +228 -272
- package/components/chart/src/constants.d.ts +13 -0
- package/components/chart/src/constants.js +316 -90
- package/components/chart/src/d3Setup.js +11 -30
- package/components/chart/src/dataUtils.js +362 -446
- package/components/chart/src/formatUtils.js +47 -38
- package/components/chart/src/index.js +11 -19
- package/components/chart/src/nvd3Source.generated.js +5 -13
- package/components/chart/src/pieDonutResponsiveLayout.d.ts +5 -0
- package/components/chart/src/pieDonutResponsiveLayout.js +76 -96
- package/components/chart/src/types.js +0 -5
- package/components/common/AppSpinner.js +17 -33
- package/components/common/app-spinner.js +11 -22
- package/components/common/customTemplate/index.d.ts +3 -0
- package/components/common/customTemplate/index.js +6 -0
- package/components/common/customTemplate/props.d.ts +20 -0
- package/components/common/customTemplate/props.js +0 -0
- package/components/common/customTemplate/template.d.ts +3 -0
- package/components/common/customTemplate/template.js +27 -0
- package/components/common/customTemplate/useCustomTemplate.d.ts +8 -0
- package/components/common/customTemplate/useCustomTemplate.js +17 -0
- package/components/common/customTemplate/utils.d.ts +6 -0
- package/components/common/customTemplate/utils.js +12 -0
- package/components/common/index.js +4 -12
- package/components/constants.js +81 -77
- package/components/container/accordion/accordion-pane/index.js +105 -118
- package/components/container/accordion/accordion-pane/props.js +5 -21
- package/components/container/accordion/index.js +225 -243
- package/components/container/accordion/props.js +5 -16
- package/components/container/index.js +214 -150
- package/components/container/layout-grid/grid-column/index.js +68 -43
- package/components/container/layout-grid/grid-column/props.js +0 -5
- package/components/container/layout-grid/grid-row/index.js +12 -29
- package/components/container/layout-grid/grid-row/props.js +0 -5
- package/components/container/layout-grid/index.js +53 -38
- package/components/container/layout-grid/props.js +0 -5
- package/components/container/linear-layout/index.js +56 -60
- package/components/container/linear-layout/linear-layout-item/index.js +43 -47
- package/components/container/linear-layout/linear-layout-item/props.js +0 -5
- package/components/container/linear-layout/props.js +0 -5
- package/components/container/panel/components/panel-content/index.js +7 -16
- package/components/container/panel/components/panel-header/index.js +166 -146
- package/components/container/panel/components/panel-header/props.js +0 -5
- package/components/container/panel/hooks.js +76 -102
- package/components/container/panel/index.js +289 -252
- package/components/container/panel/props.js +0 -5
- package/components/container/props.js +0 -5
- package/components/container/repeat-template/index.js +65 -44
- package/components/container/repeat-template/props.js +0 -5
- package/components/container/tabs/index.js +517 -526
- package/components/container/tabs/props.js +5 -28
- package/components/container/tabs/tab-pane/index.js +105 -100
- package/components/container/tabs/tab-pane/props.js +0 -5
- package/components/container/tabs/utils.js +30 -35
- package/components/container/wizard/WizardContext.js +9 -11
- package/components/container/wizard/components/StepComponents.js +76 -99
- package/components/container/wizard/components/WizardStep.js +107 -85
- package/components/container/wizard/index.js +791 -921
- package/components/container/wizard/props.js +0 -5
- package/components/container/wizard/utils.js +97 -131
- package/components/container/wizard/wizard-action/index.js +41 -81
- package/components/container/wizard/wizard-step/index.js +140 -120
- package/components/data/card/card-actions/index.js +13 -31
- package/components/data/card/card-content/index.js +27 -36
- package/components/data/card/card-footer/index.js +13 -31
- package/components/data/card/index.js +192 -199
- package/components/data/card/props.js +0 -5
- package/components/data/form/base-form/constant.js +5 -8
- package/components/data/form/base-form/hooks/index.js +26 -77
- package/components/data/form/base-form/hooks/useFormDataSync.js +106 -212
- package/components/data/form/base-form/hooks/useFormOperations.js +109 -161
- package/components/data/form/base-form/hooks/useFormSubmission.js +220 -280
- package/components/data/form/base-form/hooks/useFormValidation.js +119 -168
- package/components/data/form/base-form/hooks/useParentFormRelationship.js +67 -103
- package/components/data/form/base-form/index.js +531 -646
- package/components/data/form/base-form/props.js +74 -151
- package/components/data/form/base-form/utils.js +210 -323
- package/components/data/form/dynamic-fields/constant.js +43 -53
- package/components/data/form/dynamic-fields/index.js +135 -144
- package/components/data/form/dynamic-fields/props.js +0 -5
- package/components/data/form/dynamic-fields/utils.js +99 -158
- package/components/data/form/form-action/index.js +107 -85
- package/components/data/form/form-body/index.js +52 -26
- package/components/data/form/form-context.js +43 -59
- package/components/data/form/form-controller/hooks/index.js +43 -57
- package/components/data/form/form-controller/props.js +5 -8
- package/components/data/form/form-controller/utils.js +54 -49
- package/components/data/form/form-controller/validation-contrustor.js +203 -426
- package/components/data/form/form-controller/withFormController.js +319 -269
- package/components/data/form/form-dynamic-section/index.js +47 -41
- package/components/data/form/form-dynamic-section/props.js +0 -5
- package/components/data/form/form-field/base-field.js +97 -109
- package/components/data/form/form-field/index.js +91 -82
- package/components/data/form/form-field/props.js +0 -5
- package/components/data/form/form-footer/index.js +52 -25
- package/components/data/form/form-header/index.js +61 -58
- package/components/data/form/index.js +95 -74
- package/components/data/form/props.js +0 -5
- package/components/data/list/components/GroupHeader.js +34 -33
- package/components/data/list/components/GroupedListItems.js +108 -104
- package/components/data/list/components/ListContainer.js +22 -27
- package/components/data/list/components/ListDND.js +193 -185
- package/components/data/list/components/ListHeader.js +32 -49
- package/components/data/list/components/ListItem.js +153 -146
- package/components/data/list/components/ListItemWithTemplate.js +87 -105
- package/components/data/list/components/ListItems.js +180 -194
- package/components/data/list/components/ListPagination.js +127 -153
- package/components/data/list/components/LoadMoreButton.js +25 -33
- package/components/data/list/components/NoDataMessage.js +9 -22
- package/components/data/list/components/StandardListItems.js +79 -85
- package/components/data/list/components/index.js +31 -119
- package/components/data/list/components/props.js +0 -5
- package/components/data/list/hooks/index.js +22 -75
- package/components/data/list/hooks/props.js +0 -5
- package/components/data/list/hooks/useCurrentPageItems.js +20 -38
- package/components/data/list/hooks/useGroupedData.js +19 -33
- package/components/data/list/hooks/useListData.js +17 -47
- package/components/data/list/hooks/useListEffects.js +168 -237
- package/components/data/list/hooks/useListEventHandlers.js +301 -285
- package/components/data/list/hooks/useListPagination.js +90 -136
- package/components/data/list/hooks/useListState.js +49 -91
- package/components/data/list/hooks/useListStateManager.js +104 -159
- package/components/data/list/hooks/usePaginatedGroupedData.js +74 -110
- package/components/data/list/index.d.ts +1 -0
- package/components/data/list/index.js +579 -621
- package/components/data/list/props.d.ts +4 -0
- package/components/data/list/props.js +0 -5
- package/components/data/list/templates/media-template.js +29 -50
- package/components/data/list/utils/constants.js +20 -32
- package/components/data/list/utils/list-helpers.d.ts +2 -1
- package/components/data/list/utils/list-helpers.js +71 -115
- package/components/data/list/utils/list-widget-methods.js +56 -76
- package/components/data/list/utils/widget-instance-utils.js +20 -57
- package/components/data/live-filter/index.js +219 -271
- package/components/data/live-filter/props.js +5 -12
- package/components/data/live-form/index.js +68 -91
- package/components/data/live-form/props.js +5 -12
- package/components/data/pagination/components/BasicPagination.js +124 -104
- package/components/data/pagination/components/ClassicPagination.js +167 -190
- package/components/data/pagination/components/InlinePagination.js +97 -98
- package/components/data/pagination/components/LoadingComponent.js +17 -30
- package/components/data/pagination/components/PageSizeSelector.js +176 -169
- package/components/data/pagination/components/PagerNavigation.js +84 -105
- package/components/data/pagination/components/TotalRecords.js +48 -47
- package/components/data/pagination/components/index.js +14 -47
- package/components/data/pagination/components/props.js +0 -5
- package/components/data/pagination/hooks/index.js +6 -19
- package/components/data/pagination/hooks/props.js +0 -5
- package/components/data/pagination/hooks/useNavigationSize.js +12 -21
- package/components/data/pagination/hooks/usePagination.js +702 -905
- package/components/data/pagination/index.js +336 -389
- package/components/data/table/components/AddNewRow.js +122 -154
- package/components/data/table/components/EditableCell.js +68 -75
- package/components/data/table/components/FieldValidationError.js +19 -20
- package/components/data/table/components/RowCells.js +97 -80
- package/components/data/table/components/RowExpansionButton.js +43 -39
- package/components/data/table/components/SummaryCell.js +54 -88
- package/components/data/table/components/SummaryRow.js +45 -52
- package/components/data/table/components/SummaryRowFooter.js +35 -42
- package/components/data/table/components/TableBody.js +222 -218
- package/components/data/table/components/TableDataRow.js +113 -106
- package/components/data/table/components/TableFilters.js +391 -390
- package/components/data/table/components/TableFooterActions.js +25 -32
- package/components/data/table/components/TableHeader.js +460 -435
- package/components/data/table/components/TablePanelHeading.js +157 -181
- package/components/data/table/components/index.js +27 -95
- package/components/data/table/hooks/index.js +21 -230
- package/components/data/table/hooks/use-edited-rows.js +59 -94
- package/components/data/table/hooks/useCellState.js +58 -83
- package/components/data/table/hooks/useCustomExpressionColumns.js +65 -86
- package/components/data/table/hooks/useDynamicColumns.js +59 -92
- package/components/data/table/hooks/useEditingState.js +30 -41
- package/components/data/table/hooks/useFormWidget.js +163 -172
- package/components/data/table/hooks/usePaginationState.js +67 -77
- package/components/data/table/hooks/usePanelStructure.js +47 -41
- package/components/data/table/hooks/useResponsiveColumns.js +14 -20
- package/components/data/table/hooks/useRowExpansion.js +131 -127
- package/components/data/table/hooks/useRowHandlers.js +56 -69
- package/components/data/table/hooks/useRowSelection.js +249 -329
- package/components/data/table/hooks/useServerSideSorting.js +109 -175
- package/components/data/table/hooks/useTableColumns.js +322 -331
- package/components/data/table/hooks/useTableData.js +111 -166
- package/components/data/table/hooks/useTableEdit.js +526 -564
- package/components/data/table/hooks/useTableEffects.js +60 -107
- package/components/data/table/hooks/useTableFilter.js +244 -237
- package/components/data/table/hooks/useTableInitialization.js +44 -76
- package/components/data/table/hooks/useTableState.js +39 -61
- package/components/data/table/hooks/useTableStateManager.js +295 -468
- package/components/data/table/index.js +1553 -1713
- package/components/data/table/live-table/index.js +157 -219
- package/components/data/table/props.js +0 -5
- package/components/data/table/table-action/index.js +97 -75
- package/components/data/table/table-column/index.js +48 -42
- package/components/data/table/table-group/index.js +7 -25
- package/components/data/table/table-row/index.js +63 -55
- package/components/data/table/table-row-action/index.js +102 -77
- package/components/data/table/utils/buildSelectionColumns.js +86 -137
- package/components/data/table/utils/columnBuilder.js +116 -158
- package/components/data/table/utils/columnProxy.js +48 -66
- package/components/data/table/utils/columnWidthDistribution.js +40 -64
- package/components/data/table/utils/constants.js +92 -40
- package/components/data/table/utils/crud-handlers.js +292 -473
- package/components/data/table/utils/dynamic-columns.js +99 -144
- package/components/data/table/utils/groupHeaderUtils.js +36 -61
- package/components/data/table/utils/index.d.ts +8 -5
- package/components/data/table/utils/index.js +419 -639
- package/components/data/table/utils/renderDisplayCell.js +127 -169
- package/components/data/table/utils/script-page-size-broadcast.js +17 -29
- package/components/data/table/utils/selectionUtils.js +59 -113
- package/components/data/table/utils/table-helpers.js +38 -74
- package/components/data/table/utils/validation.js +35 -78
- package/components/data/table/utils/widgetMapping.d.ts +5 -0
- package/components/data/table/utils/widgetMapping.js +41 -0
- package/components/data/types.js +112 -112
- package/components/data/utils/field-data-utils.js +38 -42
- package/components/data/utils/filter-field-util.js +42 -44
- package/components/data/utils/index.js +112 -111
- package/components/dialogs/alert-dialog/index.js +83 -78
- package/components/dialogs/alert-dialog/props.js +0 -5
- package/components/dialogs/confirm-dialog/index.js +102 -92
- package/components/dialogs/confirm-dialog/props.js +0 -5
- package/components/dialogs/dialog/index.js +93 -69
- package/components/dialogs/dialog/props.js +0 -5
- package/components/dialogs/dialog-actions/index.js +12 -26
- package/components/dialogs/dialog-actions/props.js +0 -5
- package/components/dialogs/dialog-body/index.js +13 -30
- package/components/dialogs/dialog-body/props.js +0 -5
- package/components/dialogs/dialog-content/index.js +48 -41
- package/components/dialogs/dialog-content/props.js +0 -5
- package/components/dialogs/dialog-header/index.js +88 -101
- package/components/dialogs/dialog-header/props.js +0 -5
- package/components/dialogs/iframe-dialog/index.js +136 -128
- package/components/dialogs/iframe-dialog/props.js +0 -5
- package/components/dialogs/index.js +104 -101
- package/components/dialogs/login-dialog/index.js +285 -347
- package/components/dialogs/login-dialog/props.js +0 -5
- package/components/dialogs/page-dialog/index.js +95 -86
- package/components/dialogs/page-dialog/props.js +0 -5
- package/components/dialogs/props.js +0 -5
- package/components/dialogs/withDialogWrapper.js +110 -83
- package/components/form/button/index.js +296 -245
- package/components/form/button/props.js +0 -5
- package/components/form/button-group/index.js +80 -69
- package/components/form/button-group/props.js +0 -5
- package/components/input/calendar/index.js +409 -362
- package/components/input/calendar/props.js +0 -5
- package/components/input/calendar/utils.js +164 -172
- package/components/input/chips/SortableChip/index.js +109 -100
- package/components/input/chips/SortableChip/props.js +0 -5
- package/components/input/chips/index.js +663 -570
- package/components/input/chips/props.js +0 -5
- package/components/input/chips/utils.js +131 -122
- package/components/input/color-picker/index.js +536 -594
- package/components/input/color-picker/props.js +0 -5
- package/components/input/composite/index.js +71 -110
- package/components/input/composite/props.js +0 -5
- package/components/input/currency/index.js +277 -224
- package/components/input/currency/props.js +0 -5
- package/components/input/default/checkbox/index.js +329 -250
- package/components/input/default/checkbox/props.js +0 -5
- package/components/input/default/checkboxset/index.d.ts +2 -0
- package/components/input/default/checkboxset/index.js +529 -446
- package/components/input/default/checkboxset/props.d.ts +4 -0
- package/components/input/default/checkboxset/props.js +0 -5
- package/components/input/default/checkboxset/utils.js +15 -25
- package/components/input/default/radioset/index.d.ts +2 -0
- package/components/input/default/radioset/index.js +409 -350
- package/components/input/default/radioset/props.d.ts +6 -0
- package/components/input/default/radioset/props.js +0 -5
- package/components/input/default/switch/index.js +494 -458
- package/components/input/default/switch/prop.js +0 -5
- package/components/input/epoch/date/components/DatePickerPopover.js +242 -193
- package/components/input/epoch/date/index.js +638 -518
- package/components/input/epoch/date/props.js +0 -5
- package/components/input/epoch/date/styled.js +61 -70
- package/components/input/epoch/date/utils.js +67 -115
- package/components/input/epoch/datetime/index.js +758 -695
- package/components/input/epoch/datetime/props.js +0 -5
- package/components/input/epoch/datetime/utils.js +121 -186
- package/components/input/epoch/time/index.js +441 -415
- package/components/input/epoch/time/props.js +0 -5
- package/components/input/epoch/time/utils.js +101 -112
- package/components/input/fileupload/Utils.js +70 -97
- package/components/input/fileupload/components/ListItems.js +132 -130
- package/components/input/fileupload/components/MultiUpload.js +80 -77
- package/components/input/fileupload/components/SingleUpload.js +57 -57
- package/components/input/fileupload/index.js +253 -178
- package/components/input/fileupload/props.js +0 -5
- package/components/input/fileupload/useFileUpload.js +209 -258
- package/components/input/number/index.js +434 -393
- package/components/input/number/props.js +0 -5
- package/components/input/rating/index.js +401 -394
- package/components/input/rating/props.js +0 -5
- package/components/input/select/index.js +408 -463
- package/components/input/select/props.js +0 -5
- package/components/input/slider/index.js +339 -332
- package/components/input/slider/props.js +0 -5
- package/components/input/text/index.d.ts +3 -3
- package/components/input/text/index.js +438 -475
- package/components/input/text/props.d.ts +1 -1
- package/components/input/text/props.js +0 -5
- package/components/input/text/util.js +82 -222
- package/components/input/textarea/index.js +322 -358
- package/components/input/textarea/props.js +0 -5
- package/components/input/upload/index.js +135 -131
- package/components/input/upload/props.js +0 -5
- package/components/input/util/index.js +9 -11
- package/components/layout/footer/index.js +12 -35
- package/components/layout/footer/props.js +0 -5
- package/components/layout/header/index.js +12 -38
- package/components/layout/header/props.js +0 -5
- package/components/layout/leftnav/index.js +38 -44
- package/components/layout/leftnav/props.js +0 -5
- package/components/layout/rightnav/index.js +12 -36
- package/components/layout/rightnav/props.js +0 -5
- package/components/layout/topnav/index.js +24 -38
- package/components/layout/topnav/props.js +0 -5
- package/components/navbar/index.js +119 -98
- package/components/navbar/nav/index.js +236 -232
- package/components/navbar/nav/props.js +0 -5
- package/components/navbar/nav-item/index.js +74 -65
- package/components/navbar/nav-item/props.js +0 -5
- package/components/navigation/breadcrumb/index.js +38 -61
- package/components/navigation/breadcrumb/props.js +0 -5
- package/components/navigation/menu/components/ListItems.js +76 -67
- package/components/navigation/menu/constants.js +27 -42
- package/components/navigation/menu/hooks/useHoverState.hook.js +20 -47
- package/components/navigation/menu/hooks/useKeyboardMovements.hook.js +34 -28
- package/components/navigation/menu/hooks/useTransformedDataset.hook.js +21 -14
- package/components/navigation/menu/index.js +911 -846
- package/components/navigation/menu/props.js +0 -5
- package/components/navigation/menu/utils/action-task.js +6 -9
- package/components/navigation/menu/utils/role-filter.js +41 -56
- package/components/navigation/popover/index.js +191 -205
- package/components/navigation/popover/props.js +5 -8
- package/components/page/content/index.js +9 -31
- package/components/page/content/props.js +0 -5
- package/components/page/error-boundary/index.js +115 -105
- package/components/page/error-boundary/props.js +0 -5
- package/components/page/index.js +84 -102
- package/components/page/page-content/index.js +21 -30
- package/components/page/page-content/props.js +0 -5
- package/components/page/partial/index.js +50 -45
- package/components/page/partial/props.js +0 -5
- package/components/page/partial-container/index.js +81 -107
- package/components/page/partial-container/props.d.ts +1 -1
- package/components/page/partial-container/props.js +0 -5
- package/components/page/props.js +0 -5
- package/components/page/toast-container/index.js +20 -41
- package/components/page/toast-container/props.js +0 -5
- package/components/prefab/container/index.js +60 -53
- package/components/prefab/container/props.js +0 -5
- package/components/prefab/index.js +76 -61
- package/components/prefab/props.js +0 -5
- package/context/AppContext.d.ts +1 -1
- package/context/AppContext.js +17 -18
- package/context/AppSpinnerProvider.js +19 -34
- package/context/LayoutProvider.js +54 -57
- package/context/LocalizationProvider.js +34 -49
- package/context/PrefabContext.js +68 -119
- package/context/WidgetProvider.js +160 -166
- package/core/app-config.js +0 -1
- package/core/app.service.js +200 -327
- package/core/appVariablesStore.js +10 -15
- package/core/appstore.js +37 -53
- package/core/constants/currency-constant.js +81 -83
- package/core/constants/events.js +34 -44
- package/core/constants/index.js +21 -31
- package/core/dialog.service.js +52 -72
- package/core/event-notifier.js +94 -131
- package/core/formatter/array-formatters.js +18 -32
- package/core/formatter/date-formatters.js +140 -204
- package/core/formatter/index.js +64 -117
- package/core/formatter/number-formatters.js +115 -159
- package/core/formatter/security-formatters.js +233 -283
- package/core/formatter/string-formatters.js +23 -45
- package/core/formatter/types.js +12 -18
- package/core/formatters.js +6 -24
- package/core/proxy-service.js +242 -306
- package/core/script-registry.js +87 -134
- package/core/security.service.js +8 -11
- package/core/util/compare.js +13 -25
- package/core/util/dom.js +32 -63
- package/core/util/index.d.ts +5 -0
- package/core/util/index.js +95 -95
- package/core/util/safe-is-equal.js +42 -94
- package/core/util/security.js +114 -153
- package/core/util/utils.d.ts +8 -1
- package/core/util/utils.js +124 -132
- package/core/widget-observer.js +34 -61
- package/higherOrder/BaseApp.js +327 -500
- package/higherOrder/BaseAppProps.js +0 -5
- package/higherOrder/BaseDateTime.js +277 -231
- package/higherOrder/BasePage.js +479 -735
- package/higherOrder/BasePartial.js +87 -114
- package/higherOrder/BasePrefab.js +190 -206
- package/higherOrder/DataNav.js +287 -302
- package/higherOrder/helper.js +62 -48
- package/higherOrder/props.js +0 -5
- package/higherOrder/withBaseWrapper.js +123 -168
- package/higherOrder/withStandalone.js +28 -26
- package/hooks/useAccess.js +113 -289
- package/hooks/useAppConfig.js +15 -40
- package/hooks/useAuth.js +256 -495
- package/hooks/useDataSourceSubscription.d.ts +3 -3
- package/hooks/useDataSourceSubscription.js +99 -109
- package/hooks/useDebounce.js +28 -56
- package/hooks/useDeviceVisibility.js +14 -23
- package/hooks/useHttp.d.ts +1 -0
- package/hooks/useHttp.js +318 -493
- package/libs/index.js +4 -13
- package/libs/prefab/index.js +6 -20
- package/mui-config/theme-provider.js +9 -17
- package/mui-config/theme.js +6 -9
- package/package-lock.json +808 -3177
- package/package.json +3 -19
- package/providers/AppProviders.js +21 -24
- package/runtime-dynamic/App.js +65 -93
- package/runtime-dynamic/app-initializer.js +207 -400
- package/runtime-dynamic/components/ErrorBoundary.js +59 -76
- package/runtime-dynamic/components/PageWrapper.js +23 -35
- package/runtime-dynamic/components/PrefabPreview.js +40 -69
- package/runtime-dynamic/components/partial-content.d.ts +2 -3
- package/runtime-dynamic/components/partial-content.js +66 -48
- package/runtime-dynamic/components/prefab-content.js +37 -30
- package/runtime-dynamic/components/use-dynamic-component.js +62 -150
- package/runtime-dynamic/factories/build-base-page-like-component.js +44 -58
- package/runtime-dynamic/factories/dynamic-component.d.ts +9 -0
- package/runtime-dynamic/factories/dynamic-component.js +83 -0
- package/runtime-dynamic/factories/prefab-factory.js +60 -81
- package/runtime-dynamic/factories/startup-info.js +12 -25
- package/runtime-dynamic/factories/utils.d.ts +1 -9
- package/runtime-dynamic/factories/utils.js +47 -130
- package/runtime-dynamic/index.js +56 -191
- package/runtime-dynamic/main.js +42 -70
- package/runtime-dynamic/preview-mode.js +14 -29
- package/runtime-dynamic/preview-navigation.js +21 -30
- package/runtime-dynamic/preview-path.d.ts +5 -0
- package/runtime-dynamic/preview-path.js +13 -0
- package/runtime-dynamic/preview-resource-base.js +15 -31
- package/runtime-dynamic/registry/component-registry.js +269 -334
- package/runtime-dynamic/registry/custom-widget-registry.js +11 -15
- package/runtime-dynamic/registry/index.js +24 -63
- package/runtime-dynamic/registry/store.d.ts +1 -0
- package/runtime-dynamic/registry/store.js +18 -23
- package/runtime-dynamic/routes.js +53 -81
- package/runtime-dynamic/services/app-extension-provider.js +17 -44
- package/runtime-dynamic/services/autolayout-inject.d.ts +4 -0
- package/runtime-dynamic/services/autolayout-inject.js +27 -0
- package/runtime-dynamic/services/cache.js +27 -33
- package/runtime-dynamic/services/compile-render.d.ts +9 -0
- package/runtime-dynamic/services/compile-render.js +142 -0
- package/runtime-dynamic/services/component-ref-provider.js +70 -124
- package/runtime-dynamic/services/css-scoping.js +27 -28
- package/runtime-dynamic/services/fragment-url.js +37 -50
- package/runtime-dynamic/services/index.js +48 -152
- package/runtime-dynamic/services/markup-transpiler.d.ts +2 -2
- package/runtime-dynamic/services/markup-transpiler.js +39 -231
- package/runtime-dynamic/services/prefab-resources.js +42 -130
- package/runtime-dynamic/services/resource-manager.d.ts +2 -1
- package/runtime-dynamic/services/resource-manager.js +32 -63
- package/runtime-dynamic/services/script-executor.js +50 -61
- package/runtime-dynamic/services/variable-factory.js +141 -184
- package/runtime-dynamic/services/variable-registry.js +69 -115
- package/runtime-dynamic/services/variable-transpiler.js +73 -103
- package/runtime-dynamic/shims/next-image.js +79 -50
- package/runtime-dynamic/shims/next-link.js +58 -32
- package/runtime-dynamic/shims/next-navigation.js +17 -34
- package/runtime-dynamic/utils/index.d.ts +2 -0
- package/runtime-dynamic/utils/index.js +22 -24
- package/store/bindActions/i18nActions.js +16 -18
- package/store/index.js +29 -35
- package/store/middleware/navigationMiddleware.js +25 -45
- package/store/middleware/pendingTabNavigationIntentMiddleware.js +20 -25
- package/store/slices/appConfigSlice.js +65 -94
- package/store/slices/authSlice.js +317 -471
- package/store/slices/i18nSlice.js +169 -168
- package/store/slices/navigationSlice.js +22 -20
- package/store/util/resolve-path.d.ts +1 -0
- package/store/util/resolve-path.js +7 -0
- package/store/viewport.service.js +150 -194
- package/types/index.js +10 -15
- package/utils/attr.js +198 -41
- package/utils/custom-expression/index.js +55 -151
- package/utils/custom-expression/parser.js +106 -182
- package/utils/dataset-util.js +113 -154
- package/utils/eval-expression.js +10 -19
- package/utils/form-state.util.js +60 -118
- package/utils/form-utils.js +49 -190
- package/utils/format-util.js +113 -184
- package/utils/layoutsize-util.js +11 -17
- package/utils/lib-error-skipper.js +54 -52
- package/utils/page-params-util.js +50 -40
- package/utils/pending-tab-navigation-intent.js +7 -17
- package/utils/resource-url.js +8 -19
- package/utils/state-persistance.js +136 -253
- package/utils/style-utils.d.ts +2 -0
- package/utils/style-utils.js +25 -74
- package/utils/transformedDataset-utils.js +353 -381
- package/utils/widget-cleanup-util.js +42 -74
- package/utils/widgets.js +19 -31
- package/variables/base-variable.js +117 -166
- package/variables/constants.js +5 -8
- package/variables/crud-variable.js +150 -181
- package/variables/live-variable.d.ts +1 -1
- package/variables/live-variable.js +140 -174
- package/variables/metadata.service.js +74 -116
- package/variables/model-variable.js +68 -78
- package/variables/service-variable.js +171 -285
- package/wm-namespace.js +11 -14
- package/components/chart/src/css.d.js +0 -1
- package/tsconfig.declaration.tsbuildinfo +0 -1
- package/types/global.d.js +0 -3
package/core/util/security.js
CHANGED
|
@@ -1,183 +1,144 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
var
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
SecurityContext["STYLE"] = "STYLE";
|
|
21
|
-
SecurityContext["SCRIPT"] = "SCRIPT";
|
|
22
|
-
SecurityContext["URL"] = "URL";
|
|
23
|
-
SecurityContext["RESOURCE_URL"] = "RESOURCE_URL";
|
|
24
|
-
return SecurityContext;
|
|
25
|
-
}({});
|
|
26
|
-
/**
|
|
27
|
-
* Security service for sanitizing and trusting content
|
|
28
|
-
*/
|
|
29
|
-
var SecurityService = exports.SecurityService = /*#__PURE__*/function () {
|
|
30
|
-
function SecurityService() {
|
|
31
|
-
(0, _classCallCheck2["default"])(this, SecurityService);
|
|
32
|
-
} // Private constructor to enforce singleton
|
|
33
|
-
return (0, _createClass2["default"])(SecurityService, [{
|
|
34
|
-
key: "sanitizeHtml",
|
|
35
|
-
value:
|
|
36
|
-
/**
|
|
37
|
-
* Sanitize HTML content
|
|
38
|
-
*/
|
|
39
|
-
function sanitizeHtml(content) {
|
|
40
|
-
if (!content) return "";
|
|
41
|
-
return _dompurify["default"].sanitize(content, {
|
|
42
|
-
USE_PROFILES: {
|
|
43
|
-
html: true
|
|
44
|
-
}
|
|
45
|
-
});
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
/**
|
|
49
|
-
* Sanitize style content
|
|
50
|
-
*/
|
|
51
|
-
}, {
|
|
52
|
-
key: "sanitizeStyle",
|
|
53
|
-
value: function sanitizeStyle(content) {
|
|
54
|
-
if (!content) return "";
|
|
55
|
-
return _dompurify["default"].sanitize(content, {
|
|
56
|
-
USE_PROFILES: {
|
|
57
|
-
html: true
|
|
58
|
-
},
|
|
59
|
-
ALLOWED_TAGS: ["style"],
|
|
60
|
-
ALLOWED_ATTR: ["type"]
|
|
61
|
-
});
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
3
|
+
var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
4
|
+
import DOMPurify from "dompurify";
|
|
5
|
+
import startsWith from "lodash-es/startsWith";
|
|
6
|
+
var SecurityContext = /* @__PURE__ */ ((SecurityContext2) => {
|
|
7
|
+
SecurityContext2["HTML"] = "HTML";
|
|
8
|
+
SecurityContext2["STYLE"] = "STYLE";
|
|
9
|
+
SecurityContext2["SCRIPT"] = "SCRIPT";
|
|
10
|
+
SecurityContext2["URL"] = "URL";
|
|
11
|
+
SecurityContext2["RESOURCE_URL"] = "RESOURCE_URL";
|
|
12
|
+
return SecurityContext2;
|
|
13
|
+
})(SecurityContext || {});
|
|
14
|
+
const _SecurityService = class _SecurityService {
|
|
15
|
+
constructor() {
|
|
16
|
+
}
|
|
17
|
+
static getInstance() {
|
|
18
|
+
if (!_SecurityService.instance) {
|
|
19
|
+
_SecurityService.instance = new _SecurityService();
|
|
62
20
|
}
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
21
|
+
return _SecurityService.instance;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Sanitize HTML content
|
|
25
|
+
*/
|
|
26
|
+
sanitizeHtml(content) {
|
|
27
|
+
if (!content) return "";
|
|
28
|
+
return DOMPurify.sanitize(content, {
|
|
29
|
+
USE_PROFILES: { html: true }
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Sanitize style content
|
|
34
|
+
*/
|
|
35
|
+
sanitizeStyle(content) {
|
|
36
|
+
if (!content) return "";
|
|
37
|
+
return DOMPurify.sanitize(content, {
|
|
38
|
+
USE_PROFILES: { html: true },
|
|
39
|
+
ALLOWED_TAGS: ["style"],
|
|
40
|
+
ALLOWED_ATTR: ["type"]
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Sanitize script content
|
|
45
|
+
*/
|
|
46
|
+
sanitizeScript(content) {
|
|
47
|
+
if (!content) return "";
|
|
48
|
+
return content;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Sanitize URL
|
|
52
|
+
*/
|
|
53
|
+
sanitizeUrl(content) {
|
|
54
|
+
if (!content) return "";
|
|
55
|
+
const url = content.trim().toLowerCase();
|
|
56
|
+
if (url.startsWith("javascript:") || url.startsWith("data:") || url.startsWith("vbscript:")) {
|
|
57
|
+
return "";
|
|
74
58
|
}
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
59
|
+
return content;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Sanitize Resource URL
|
|
63
|
+
*/
|
|
64
|
+
sanitizeResourceUrl(content) {
|
|
65
|
+
if (!content) return "";
|
|
66
|
+
const sanitizedUrl = this.sanitizeUrl(content);
|
|
67
|
+
return sanitizedUrl ? String(sanitizedUrl) : "";
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Trust content based on security context
|
|
71
|
+
*/
|
|
72
|
+
trustAs(content, context) {
|
|
73
|
+
if (!content) return "";
|
|
74
|
+
switch (context) {
|
|
75
|
+
case "HTML" /* HTML */:
|
|
76
|
+
return this.sanitizeHtml(content);
|
|
77
|
+
case "STYLE" /* STYLE */:
|
|
78
|
+
return this.sanitizeStyle(content);
|
|
79
|
+
case "SCRIPT" /* SCRIPT */:
|
|
80
|
+
return this.sanitizeScript(content);
|
|
81
|
+
case "URL" /* URL */:
|
|
82
|
+
return this.sanitizeUrl(content);
|
|
83
|
+
case "RESOURCE_URL" /* RESOURCE_URL */:
|
|
84
|
+
return this.sanitizeResourceUrl(content);
|
|
85
|
+
default:
|
|
86
86
|
return "";
|
|
87
|
-
}
|
|
88
|
-
return content;
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
/**
|
|
92
|
-
* Sanitize Resource URL
|
|
93
|
-
*/
|
|
94
|
-
}, {
|
|
95
|
-
key: "sanitizeResourceUrl",
|
|
96
|
-
value: function sanitizeResourceUrl(content) {
|
|
97
|
-
if (!content) return "";
|
|
98
|
-
// First sanitize as a regular URL, then cast to resource URL
|
|
99
|
-
var sanitizedUrl = this.sanitizeUrl(content);
|
|
100
|
-
return sanitizedUrl ? String(sanitizedUrl) : "";
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
/**
|
|
104
|
-
* Trust content based on security context
|
|
105
|
-
*/
|
|
106
|
-
}, {
|
|
107
|
-
key: "trustAs",
|
|
108
|
-
value: function trustAs(content, context) {
|
|
109
|
-
if (!content) return "";
|
|
110
|
-
switch (context) {
|
|
111
|
-
case SecurityContext.HTML:
|
|
112
|
-
return this.sanitizeHtml(content);
|
|
113
|
-
case SecurityContext.STYLE:
|
|
114
|
-
return this.sanitizeStyle(content);
|
|
115
|
-
case SecurityContext.SCRIPT:
|
|
116
|
-
return this.sanitizeScript(content);
|
|
117
|
-
case SecurityContext.URL:
|
|
118
|
-
return this.sanitizeUrl(content);
|
|
119
|
-
case SecurityContext.RESOURCE_URL:
|
|
120
|
-
return this.sanitizeResourceUrl(content);
|
|
121
|
-
default:
|
|
122
|
-
return "";
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
}], [{
|
|
126
|
-
key: "getInstance",
|
|
127
|
-
value: function getInstance() {
|
|
128
|
-
if (!SecurityService.instance) {
|
|
129
|
-
SecurityService.instance = new SecurityService();
|
|
130
|
-
}
|
|
131
|
-
return SecurityService.instance;
|
|
132
87
|
}
|
|
133
|
-
}
|
|
134
|
-
}
|
|
135
|
-
_SecurityService
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
88
|
+
}
|
|
89
|
+
};
|
|
90
|
+
__publicField(_SecurityService, "instance");
|
|
91
|
+
let SecurityService = _SecurityService;
|
|
92
|
+
import { useMemo } from "react";
|
|
93
|
+
const useTrustAs = (content, context) => {
|
|
94
|
+
return useMemo(() => {
|
|
139
95
|
return SecurityService.getInstance().trustAs(content, context);
|
|
140
96
|
}, [content, context]);
|
|
141
97
|
};
|
|
142
|
-
|
|
143
|
-
return
|
|
98
|
+
const useSafeHtml = (content) => {
|
|
99
|
+
return useMemo(() => {
|
|
144
100
|
return SecurityService.getInstance().sanitizeHtml(content);
|
|
145
101
|
}, [content]);
|
|
146
102
|
};
|
|
147
|
-
|
|
148
|
-
return
|
|
103
|
+
const useSafeStyle = (content) => {
|
|
104
|
+
return useMemo(() => {
|
|
149
105
|
return SecurityService.getInstance().sanitizeStyle(content);
|
|
150
106
|
}, [content]);
|
|
151
107
|
};
|
|
152
|
-
|
|
153
|
-
return
|
|
108
|
+
const useSafeUrl = (content) => {
|
|
109
|
+
return useMemo(() => {
|
|
154
110
|
return SecurityService.getInstance().sanitizeUrl(content);
|
|
155
111
|
}, [content]);
|
|
156
112
|
};
|
|
157
|
-
|
|
158
|
-
return
|
|
113
|
+
const useSafeResourceUrl = (content) => {
|
|
114
|
+
return useMemo(() => {
|
|
159
115
|
return SecurityService.getInstance().sanitizeResourceUrl(content);
|
|
160
116
|
}, [content]);
|
|
161
117
|
};
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
118
|
+
const isInsecureContentRequest = (url) => {
|
|
119
|
+
const REGEX_DATA_URL = /^\s*data:([a-z]+\/[a-z0-9-+.]+(;[a-z-]+=[a-z0-9-]+)?)?(;base64)?,([a-z0-9!$&',()*+;=\-._~:@\/?%\s]*)\s*$/i;
|
|
120
|
+
const parser = document.createElement("a");
|
|
165
121
|
parser.href = url;
|
|
166
|
-
|
|
167
|
-
// for relative urls IE returns the protocol as empty string
|
|
168
122
|
if (parser.protocol === "") {
|
|
169
123
|
return false;
|
|
170
124
|
}
|
|
171
|
-
|
|
172
|
-
// If the inputted source is a base64 url, do not throw insecure content error
|
|
173
125
|
if (REGEX_DATA_URL.test(url)) {
|
|
174
126
|
return false;
|
|
175
127
|
}
|
|
176
|
-
if ((
|
|
128
|
+
if (startsWith(location.href, "https://")) {
|
|
177
129
|
return parser.protocol !== "https:" && parser.protocol !== "wss:";
|
|
178
130
|
}
|
|
179
131
|
return false;
|
|
180
132
|
};
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
133
|
+
const securityService = SecurityService.getInstance();
|
|
134
|
+
export {
|
|
135
|
+
SecurityContext,
|
|
136
|
+
SecurityService,
|
|
137
|
+
isInsecureContentRequest,
|
|
138
|
+
securityService,
|
|
139
|
+
useSafeHtml,
|
|
140
|
+
useSafeResourceUrl,
|
|
141
|
+
useSafeStyle,
|
|
142
|
+
useSafeUrl,
|
|
143
|
+
useTrustAs
|
|
144
|
+
};
|
package/core/util/utils.d.ts
CHANGED
|
@@ -15,6 +15,10 @@ export declare const getUrlParams: (link: string) => Record<string, string>;
|
|
|
15
15
|
* @returns Route name (e.g., "/page")
|
|
16
16
|
*/
|
|
17
17
|
export declare const getRouteNameFromLink: (link: string) => string;
|
|
18
|
+
/**
|
|
19
|
+
* Target page from a WaveMaker goToPage_* onClick handler (source or preview _optionalChain bundle).
|
|
20
|
+
*/
|
|
21
|
+
export declare function getGoToPageNameFromClickHandler(onClick: unknown): string | null;
|
|
18
22
|
/**
|
|
19
23
|
* Opens a link in browser window
|
|
20
24
|
* @param link - URL to open
|
|
@@ -31,4 +35,7 @@ export declare const triggerItemAction: (item: any) => void;
|
|
|
31
35
|
export declare const getCurrentPath: () => string;
|
|
32
36
|
export declare const getItemLink: (item: any, props: any) => string | undefined;
|
|
33
37
|
export declare function hasOwnObjectProperty(obj: any, prop: string): any;
|
|
34
|
-
export declare const
|
|
38
|
+
export declare const getModesFromLocalStorage: () => Record<string, string>;
|
|
39
|
+
export declare function setMode(modes: Record<string, string>, shouldPersist?: boolean): void;
|
|
40
|
+
export declare function initAppModes(): void;
|
|
41
|
+
export declare function teardownAppModes(): void;
|
package/core/util/utils.js
CHANGED
|
@@ -1,20 +1,9 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
exports.getUrlParams = exports.getRouteNameFromLink = exports.getItemLink = exports.getCurrentPath = exports.Utils = void 0;
|
|
8
|
-
exports.hasOwnObjectProperty = hasOwnObjectProperty;
|
|
9
|
-
exports.triggerItemAction = exports.openLink = exports.mergeProxies = exports.isJQueryError = exports.isInsecureContentRequest = void 0;
|
|
10
|
-
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
11
|
-
var _navigationMiddleware = require("@wavemaker-ai/react-runtime/store/middleware/navigationMiddleware");
|
|
12
|
-
var _constants = require("../constants");
|
|
13
|
-
var _navigation = require("next/navigation");
|
|
14
|
-
function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
|
|
15
|
-
function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
|
|
16
|
-
function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
|
|
17
|
-
var REGEX = {
|
|
1
|
+
import { getRouterInstance } from "../../store/middleware/navigationMiddleware";
|
|
2
|
+
import { hyperLinkMofify } from "../constants";
|
|
3
|
+
import { usePathname } from "next/navigation";
|
|
4
|
+
import isObject from "lodash-es/isObject";
|
|
5
|
+
import { MODE_CONSTANTS } from "./index";
|
|
6
|
+
const REGEX = {
|
|
18
7
|
SNAKE_CASE: /[A-Z]/g,
|
|
19
8
|
ANDROID: /Android/i,
|
|
20
9
|
IPHONE: /iPhone/i,
|
|
@@ -47,27 +36,19 @@ var REGEX = {
|
|
|
47
36
|
DATA_URL: /^\s*data:([a-z]+\/[a-z0-9-+.]+(;[a-z-]+=[a-z0-9-]+)?)?(;base64)?,([a-z0-9!$&',()*+;=\-._~:@\/?%\s]*)\s*$/i,
|
|
48
37
|
ISO_DATE_FORMAT: /(\d{4}-\d{2}-\d{2})T(\d{2}:\d{2}:\d{2})(\.\d+)?([+-]\d{2}:?\d{2}|Z)$/
|
|
49
38
|
};
|
|
50
|
-
|
|
51
|
-
/**
|
|
52
|
-
* this method checks if a given string starts with the given string
|
|
53
|
-
*/
|
|
54
|
-
var stringStartsWith = function stringStartsWith(str, startsWith, ignoreCase) {
|
|
39
|
+
const stringStartsWith = (str, startsWith, ignoreCase) => {
|
|
55
40
|
if (!str) {
|
|
56
41
|
return false;
|
|
57
42
|
}
|
|
58
|
-
|
|
43
|
+
const regEx = new RegExp("^" + startsWith, ignoreCase ? "i" : "");
|
|
59
44
|
return regEx.test(str);
|
|
60
45
|
};
|
|
61
|
-
|
|
62
|
-
|
|
46
|
+
const isInsecureContentRequest = (url) => {
|
|
47
|
+
const parser = document.createElement("a");
|
|
63
48
|
parser.href = url;
|
|
64
|
-
|
|
65
|
-
// for relative urls IE returns the protocol as empty string
|
|
66
49
|
if (parser.protocol === "") {
|
|
67
50
|
return false;
|
|
68
51
|
}
|
|
69
|
-
|
|
70
|
-
// If the inputted source is a base64 url, do not throw insecure content error
|
|
71
52
|
if (REGEX.DATA_URL.test(url)) {
|
|
72
53
|
return false;
|
|
73
54
|
}
|
|
@@ -76,136 +57,91 @@ var isInsecureContentRequest = exports.isInsecureContentRequest = function isIns
|
|
|
76
57
|
}
|
|
77
58
|
return false;
|
|
78
59
|
};
|
|
79
|
-
|
|
80
|
-
isInsecureContentRequest
|
|
60
|
+
const Utils = {
|
|
61
|
+
isInsecureContentRequest
|
|
81
62
|
};
|
|
82
|
-
|
|
63
|
+
const isJQueryError = (error) => {
|
|
83
64
|
if (!error.stack) return false;
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
// Get the first line of stack that points to your code
|
|
87
|
-
if (error.message && UnSupportedFunctionality.some(function (func) {
|
|
88
|
-
return error.message.includes(func);
|
|
89
|
-
})) {
|
|
65
|
+
const UnSupportedFunctionality = ["jQuery", "$"];
|
|
66
|
+
if (error.message && UnSupportedFunctionality.some((func) => error.message.includes(func))) {
|
|
90
67
|
return true;
|
|
91
68
|
}
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
var line = _step.value;
|
|
98
|
-
// Skip internal/node_modules lines, look for your code
|
|
99
|
-
if (!line.includes("node_modules") && !line.includes("internal")) {
|
|
100
|
-
// Check if this line contains jQuery access
|
|
101
|
-
if (line.toLowerCase().includes("jquery") || line.toLowerCase().includes("$")) {
|
|
102
|
-
return true;
|
|
103
|
-
}
|
|
69
|
+
const stackLines = error.stack.split("\n");
|
|
70
|
+
for (let line of stackLines) {
|
|
71
|
+
if (!line.includes("node_modules") && !line.includes("internal")) {
|
|
72
|
+
if (line.toLowerCase().includes("jquery") || line.toLowerCase().includes("$")) {
|
|
73
|
+
return true;
|
|
104
74
|
}
|
|
105
75
|
}
|
|
106
|
-
} catch (err) {
|
|
107
|
-
_iterator.e(err);
|
|
108
|
-
} finally {
|
|
109
|
-
_iterator.f();
|
|
110
76
|
}
|
|
111
77
|
return false;
|
|
112
78
|
};
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
* @param link - URL string (e.g., "#/page?param1=value1¶m2=value2")
|
|
117
|
-
* @returns Object with query parameters (automatically URL-decoded)
|
|
118
|
-
*/
|
|
119
|
-
var getUrlParams = exports.getUrlParams = function getUrlParams(link) {
|
|
120
|
-
var params = {};
|
|
121
|
-
var index = link.indexOf("?");
|
|
79
|
+
const getUrlParams = (link) => {
|
|
80
|
+
const params = {};
|
|
81
|
+
const index = link.indexOf("?");
|
|
122
82
|
if (index !== -1) {
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
searchParams.forEach(
|
|
83
|
+
const queryString = link.substring(index + 1);
|
|
84
|
+
const searchParams = new URLSearchParams(queryString);
|
|
85
|
+
searchParams.forEach((value, key) => {
|
|
126
86
|
params[key] = value;
|
|
127
87
|
});
|
|
128
88
|
}
|
|
129
89
|
return params;
|
|
130
90
|
};
|
|
131
|
-
|
|
132
|
-
/**
|
|
133
|
-
* Extracts route name from a link
|
|
134
|
-
* @param link - URL string (e.g., "#/page?param=value")
|
|
135
|
-
* @returns Route name (e.g., "/page")
|
|
136
|
-
*/
|
|
137
|
-
var getRouteNameFromLink = exports.getRouteNameFromLink = function getRouteNameFromLink(link) {
|
|
91
|
+
const getRouteNameFromLink = (link) => {
|
|
138
92
|
link = link.replace("#/", "/");
|
|
139
|
-
|
|
93
|
+
const index = link.indexOf("?");
|
|
140
94
|
if (index !== -1) {
|
|
141
95
|
link = link.substring(0, index);
|
|
142
96
|
}
|
|
143
97
|
return link;
|
|
144
98
|
};
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
99
|
+
function getGoToPageNameFromClickHandler(onClick) {
|
|
100
|
+
var _a;
|
|
101
|
+
if (typeof onClick !== "function") {
|
|
102
|
+
return null;
|
|
103
|
+
}
|
|
104
|
+
const fnStr = onClick.toString();
|
|
105
|
+
if (!/invoke/.test(fnStr)) {
|
|
106
|
+
return null;
|
|
107
|
+
}
|
|
108
|
+
const match = /goToPage_([A-Za-z0-9_]+)/.exec(fnStr);
|
|
109
|
+
return (_a = match == null ? void 0 : match[1]) != null ? _a : null;
|
|
110
|
+
}
|
|
111
|
+
const openLink = (link, target = "_self") => {
|
|
153
112
|
window.open(link, target);
|
|
154
113
|
};
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
* 1. Executes item.action if present
|
|
160
|
-
* 2. Then navigates to item.link if present
|
|
161
|
-
*/
|
|
162
|
-
var triggerItemAction = exports.triggerItemAction = function triggerItemAction(item) {
|
|
163
|
-
var router = (0, _navigationMiddleware.getRouterInstance)();
|
|
164
|
-
var originalLink = item === null || item === void 0 ? void 0 : item.link;
|
|
165
|
-
var linkTarget = item === null || item === void 0 ? void 0 : item.target;
|
|
114
|
+
const triggerItemAction = (item) => {
|
|
115
|
+
const router = getRouterInstance();
|
|
116
|
+
let originalLink = item == null ? void 0 : item.link;
|
|
117
|
+
const linkTarget = item == null ? void 0 : item.target;
|
|
166
118
|
if (typeof originalLink === "function" || !originalLink || originalLink === "#" || originalLink === "javascript:void(0)") {
|
|
167
|
-
return;
|
|
168
|
-
}
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
var queryParams = getUrlParams(originalLink);
|
|
174
|
-
var routeName = getRouteNameFromLink(originalLink);
|
|
175
|
-
routeName = (0, _constants.hyperLinkMofify)(routeName);
|
|
119
|
+
return;
|
|
120
|
+
}
|
|
121
|
+
if ((originalLink == null ? void 0 : originalLink.startsWith("#")) && (!linkTarget || linkTarget === "_self")) {
|
|
122
|
+
const queryParams = getUrlParams(originalLink);
|
|
123
|
+
let routeName = getRouteNameFromLink(originalLink);
|
|
124
|
+
routeName = hyperLinkMofify(routeName);
|
|
176
125
|
if (Object.keys(queryParams).length > 0) {
|
|
177
|
-
|
|
178
|
-
var queryString = Object.entries(queryParams).filter(function (_ref) {
|
|
179
|
-
var _ref2 = (0, _slicedToArray2["default"])(_ref, 2),
|
|
180
|
-
_ = _ref2[0],
|
|
181
|
-
value = _ref2[1];
|
|
182
|
-
return value !== undefined && value !== null && value !== "";
|
|
183
|
-
}).map(function (_ref3) {
|
|
184
|
-
var _ref4 = (0, _slicedToArray2["default"])(_ref3, 2),
|
|
185
|
-
key = _ref4[0],
|
|
186
|
-
value = _ref4[1];
|
|
187
|
-
return "".concat(key, "=").concat(encodeURIComponent(value));
|
|
188
|
-
}).join("&");
|
|
126
|
+
const queryString = Object.entries(queryParams).filter(([_, value]) => value !== void 0 && value !== null && value !== "").map(([key, value]) => `${key}=${encodeURIComponent(value)}`).join("&");
|
|
189
127
|
if (queryString) {
|
|
190
|
-
router
|
|
128
|
+
router == null ? void 0 : router.push(`${routeName}?${queryString}`);
|
|
191
129
|
} else {
|
|
192
|
-
router
|
|
130
|
+
router == null ? void 0 : router.push(routeName);
|
|
193
131
|
}
|
|
194
132
|
} else {
|
|
195
|
-
router
|
|
133
|
+
router == null ? void 0 : router.push(routeName);
|
|
196
134
|
}
|
|
197
135
|
} else if (linkTarget || originalLink) {
|
|
198
|
-
// External link or link with different target
|
|
199
|
-
// For external links, use as-is (don't apply hyperLinkMofify)
|
|
200
136
|
openLink(originalLink, linkTarget || "");
|
|
201
137
|
}
|
|
202
138
|
};
|
|
203
|
-
|
|
204
|
-
|
|
139
|
+
const getCurrentPath = () => {
|
|
140
|
+
const path = usePathname();
|
|
205
141
|
return path;
|
|
206
142
|
};
|
|
207
|
-
|
|
208
|
-
|
|
143
|
+
const getItemLink = (item, props) => {
|
|
144
|
+
const linkProperty = props.itemlink || "link";
|
|
209
145
|
if (typeof item[linkProperty] === "function") {
|
|
210
146
|
return item[linkProperty]();
|
|
211
147
|
} else {
|
|
@@ -215,14 +151,70 @@ var getItemLink = exports.getItemLink = function getItemLink(item, props) {
|
|
|
215
151
|
function hasOwnObjectProperty(obj, prop) {
|
|
216
152
|
return Object.prototype.hasOwnProperty.call(obj, prop);
|
|
217
153
|
}
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
154
|
+
const getModesFromLocalStorage = () => {
|
|
155
|
+
let storedValue = localStorage.getItem("wm-app-modes") || "{}";
|
|
156
|
+
try {
|
|
157
|
+
storedValue = JSON.parse(storedValue);
|
|
158
|
+
} catch (error) {
|
|
159
|
+
console.error("Error parsing modes", error == null ? void 0 : error.message);
|
|
160
|
+
storedValue = {};
|
|
161
|
+
}
|
|
162
|
+
return isObject(storedValue) ? storedValue : {};
|
|
163
|
+
};
|
|
164
|
+
function setMode(modes, shouldPersist = false) {
|
|
165
|
+
const htmlEl = document.getElementsByTagName("html")[0];
|
|
166
|
+
if (!htmlEl) return;
|
|
167
|
+
if (!isObject(modes)) {
|
|
168
|
+
modes = {};
|
|
169
|
+
}
|
|
170
|
+
const modesArr = Object.entries(modes);
|
|
171
|
+
if (!modesArr.length) return;
|
|
172
|
+
modesArr.forEach(([modeKey, modeValue]) => {
|
|
173
|
+
const isDefault = modeValue === MODE_CONSTANTS.LIGHT || modeValue === MODE_CONSTANTS.DEFAULT;
|
|
174
|
+
if (isDefault) {
|
|
175
|
+
htmlEl.removeAttribute(modeKey);
|
|
176
|
+
} else {
|
|
177
|
+
htmlEl.setAttribute(modeKey, modeValue);
|
|
226
178
|
}
|
|
227
179
|
});
|
|
228
|
-
|
|
180
|
+
if (shouldPersist) {
|
|
181
|
+
localStorage.setItem("wm-app-modes", JSON.stringify(modes));
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
let windowMessageListener = null;
|
|
185
|
+
function initAppModes() {
|
|
186
|
+
setMode(getModesFromLocalStorage());
|
|
187
|
+
if (windowMessageListener) {
|
|
188
|
+
window.removeEventListener("message", windowMessageListener);
|
|
189
|
+
}
|
|
190
|
+
windowMessageListener = (event) => {
|
|
191
|
+
const { key, modes, shouldPersist } = event.data || {};
|
|
192
|
+
if (key === "switch-mode" && modes) {
|
|
193
|
+
setMode(modes, !shouldPersist);
|
|
194
|
+
}
|
|
195
|
+
};
|
|
196
|
+
window.addEventListener("message", windowMessageListener);
|
|
197
|
+
}
|
|
198
|
+
function teardownAppModes() {
|
|
199
|
+
if (windowMessageListener) {
|
|
200
|
+
window.removeEventListener("message", windowMessageListener);
|
|
201
|
+
windowMessageListener = null;
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
export {
|
|
205
|
+
Utils,
|
|
206
|
+
getCurrentPath,
|
|
207
|
+
getGoToPageNameFromClickHandler,
|
|
208
|
+
getItemLink,
|
|
209
|
+
getModesFromLocalStorage,
|
|
210
|
+
getRouteNameFromLink,
|
|
211
|
+
getUrlParams,
|
|
212
|
+
hasOwnObjectProperty,
|
|
213
|
+
initAppModes,
|
|
214
|
+
isInsecureContentRequest,
|
|
215
|
+
isJQueryError,
|
|
216
|
+
openLink,
|
|
217
|
+
setMode,
|
|
218
|
+
teardownAppModes,
|
|
219
|
+
triggerItemAction
|
|
220
|
+
};
|