@wavemaker/app-ng-runtime 11.13.0-rc.222 → 11.14.0-rc.226
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/build-task/bundles/index.umd.js +34 -5
- package/build-task/esm2022/basic/anchor/anchor.build.mjs +15 -0
- package/build-task/esm2022/basic/audio/audio.build.mjs +10 -0
- package/build-task/esm2022/basic/html/html.build.mjs +15 -0
- package/build-task/esm2022/basic/icon/icon.build.mjs +10 -0
- package/build-task/esm2022/basic/iframe/iframe.build.mjs +10 -0
- package/build-task/esm2022/basic/label/label.build.mjs +25 -0
- package/build-task/esm2022/basic/picture/picture.build.mjs +14 -0
- package/build-task/esm2022/basic/spinner/spinner.build.mjs +15 -0
- package/build-task/esm2022/basic/video/video.build.mjs +10 -0
- package/build-task/esm2022/data/form/form-field/form-field.build.mjs +8 -3
- package/build-task/esm2022/data/form/form.build.mjs +8 -1
- package/build-task/esm2022/data/table/table-column/table-column.build.mjs +14 -3
- package/build-task/esm2022/input/default/checkbox/checkbox.build.mjs +2 -2
- package/build-task/esm2022/page/page-content/page-content.build.mjs +8 -2
- package/build-task/esm2022/public_api.mjs +10 -10
- package/build-task/fesm2022/index.mjs +36 -7
- package/build-task/fesm2022/index.mjs.map +1 -1
- package/build-task/package.json +3 -6
- package/build-task/public_api.d.ts +9 -9
- package/components/advanced/carousel/bundles/index.umd.js +33 -38
- package/components/advanced/carousel/esm2022/carousel-template/carousel-template.directive.mjs +16 -16
- package/components/advanced/carousel/esm2022/carousel.directive.mjs +19 -24
- package/components/advanced/carousel/fesm2022/index.mjs +34 -39
- package/components/advanced/carousel/fesm2022/index.mjs.map +1 -1
- package/components/advanced/carousel/package.json +0 -3
- package/components/advanced/custom/bundles/index.umd.js +48 -48
- package/components/advanced/custom/custom-widget-container/custom-widget-container.directive.d.ts +1 -1
- package/components/advanced/custom/esm2022/custom-widget-container/custom-widget-container.directive.mjs +31 -31
- package/components/advanced/custom/esm2022/custom-widget.directive.mjs +15 -15
- package/components/advanced/custom/fesm2022/index.mjs +45 -45
- package/components/advanced/custom/fesm2022/index.mjs.map +1 -1
- package/components/advanced/custom/package.json +0 -3
- package/components/advanced/login/bundles/index.umd.js +33 -53
- package/components/advanced/login/esm2022/login.component.mjs +26 -47
- package/components/advanced/login/fesm2022/index.mjs +27 -47
- package/components/advanced/login/fesm2022/index.mjs.map +1 -1
- package/components/advanced/login/login.component.d.ts +1 -1
- package/components/advanced/login/package.json +0 -3
- package/components/advanced/marquee/bundles/index.umd.js +19 -19
- package/components/advanced/marquee/esm2022/marquee.directive.mjs +20 -20
- package/components/advanced/marquee/fesm2022/index.mjs +20 -20
- package/components/advanced/marquee/fesm2022/index.mjs.map +1 -1
- package/components/advanced/marquee/package.json +0 -3
- package/components/base/bundles/index.umd.js +4272 -4243
- package/components/base/esm2022/pipes/custom-pipes.mjs +14 -12
- package/components/base/esm2022/pipes/wm-pipe.mjs +3 -3
- package/components/base/esm2022/public_api.mjs +1 -2
- package/components/base/esm2022/widgets/common/container/container.directive.mjs +154 -1
- package/components/base/esm2022/widgets/common/container/container.props.mjs +7 -2
- package/components/base/esm2022/widgets/common/redraw/redrawable.directive.mjs +1 -1
- package/components/base/fesm2022/index.mjs +4280 -4251
- package/components/base/fesm2022/index.mjs.map +1 -1
- package/components/base/package.json +2 -2
- package/components/base/pipes/custom-pipes.d.ts +4 -2
- package/components/base/pipes/wm-pipe.d.ts +1 -1
- package/components/base/public_api.d.ts +0 -1
- package/components/base/widgets/common/container/container.directive.d.ts +9 -0
- package/components/base/widgets/common/pull-to-refresh/pull-to-refresh.d.ts +0 -2
- package/components/basic/anchor/bundles/index.umd.js +192 -0
- package/components/basic/anchor/esm2022/anchor.component.mjs +143 -0
- package/components/basic/anchor/esm2022/anchor.props.mjs +27 -0
- package/components/basic/anchor/esm2022/index.mjs +5 -0
- package/components/basic/anchor/esm2022/public_api.mjs +2 -0
- package/components/basic/anchor/fesm2022/index.mjs +175 -0
- package/components/basic/anchor/fesm2022/index.mjs.map +1 -0
- package/components/basic/{progress → anchor}/index.d.ts +1 -1
- package/components/basic/{default → anchor}/package.json +1 -4
- package/components/basic/anchor/public_api.d.ts +1 -0
- package/components/basic/audio/bundles/index.umd.js +83 -0
- package/components/basic/audio/esm2022/audio.component.mjs +41 -0
- package/components/basic/audio/esm2022/audio.props.mjs +19 -0
- package/components/{input/epoch → basic/audio}/esm2022/index.mjs +1 -1
- package/components/basic/audio/esm2022/public_api.mjs +2 -0
- package/components/basic/audio/fesm2022/index.mjs +65 -0
- package/components/basic/audio/fesm2022/index.mjs.map +1 -0
- package/components/{input/epoch → basic/audio}/index.d.ts +1 -1
- package/components/{input/default → basic/audio}/package.json +2 -5
- package/components/basic/audio/public_api.d.ts +1 -0
- package/components/basic/html/bundles/index.umd.js +110 -0
- package/components/basic/html/esm2022/html.directive.mjs +76 -0
- package/components/basic/html/esm2022/html.props.mjs +12 -0
- package/components/basic/html/esm2022/index.mjs +5 -0
- package/components/basic/html/esm2022/public_api.mjs +2 -0
- package/components/basic/html/fesm2022/index.mjs +93 -0
- package/components/basic/html/fesm2022/index.mjs.map +1 -0
- package/components/basic/{default → html}/index.d.ts +1 -1
- package/components/{input/epoch → basic/html}/package.json +1 -4
- package/components/basic/html/public_api.d.ts +1 -0
- package/components/basic/icon/bundles/index.umd.js +80 -0
- package/components/basic/icon/esm2022/icon.component.mjs +38 -0
- package/components/basic/icon/esm2022/icon.props.mjs +19 -0
- package/components/basic/icon/esm2022/index.mjs +5 -0
- package/components/basic/icon/esm2022/public_api.mjs +2 -0
- package/components/basic/icon/fesm2022/index.mjs +62 -0
- package/components/basic/icon/fesm2022/index.mjs.map +1 -0
- package/components/{input/default → basic/icon}/index.d.ts +1 -1
- package/components/basic/{progress → icon}/package.json +1 -4
- package/components/basic/icon/public_api.d.ts +1 -0
- package/components/basic/iframe/.npmignore +2 -0
- package/components/basic/iframe/bundles/index.umd.js +101 -0
- package/components/basic/iframe/esm2022/iframe.component.mjs +65 -0
- package/components/basic/iframe/esm2022/iframe.props.mjs +15 -0
- package/components/basic/iframe/esm2022/index.mjs +5 -0
- package/components/basic/iframe/esm2022/public_api.mjs +2 -0
- package/components/basic/iframe/fesm2022/index.mjs +84 -0
- package/components/basic/iframe/fesm2022/index.mjs.map +1 -0
- package/components/basic/iframe/index.d.ts +5 -0
- package/components/basic/iframe/package.json +20 -0
- package/components/basic/iframe/public_api.d.ts +1 -0
- package/components/basic/label/.npmignore +2 -0
- package/components/basic/label/bundles/index.umd.js +109 -0
- package/components/basic/label/esm2022/index.mjs +5 -0
- package/components/basic/label/esm2022/label.directive.mjs +71 -0
- package/components/basic/label/esm2022/label.props.mjs +17 -0
- package/components/basic/label/esm2022/public_api.mjs +2 -0
- package/components/basic/label/fesm2022/index.mjs +93 -0
- package/components/basic/label/fesm2022/index.mjs.map +1 -0
- package/components/basic/label/index.d.ts +5 -0
- package/components/basic/{default/label → label}/label.directive.d.ts +1 -1
- package/components/basic/label/package.json +20 -0
- package/components/basic/label/public_api.d.ts +1 -0
- package/components/basic/picture/.npmignore +2 -0
- package/components/basic/picture/bundles/index.umd.js +138 -0
- package/components/basic/{default → picture}/esm2022/index.mjs +1 -1
- package/components/basic/picture/esm2022/picture.directive.mjs +93 -0
- package/components/basic/picture/esm2022/picture.props.mjs +23 -0
- package/components/basic/picture/esm2022/public_api.mjs +2 -0
- package/components/basic/picture/fesm2022/index.mjs +121 -0
- package/components/basic/picture/fesm2022/index.mjs.map +1 -0
- package/components/basic/picture/index.d.ts +5 -0
- package/components/basic/picture/package.json +20 -0
- package/components/basic/picture/public_api.d.ts +1 -0
- package/components/basic/progress/progress-bar/.npmignore +2 -0
- package/components/basic/progress/progress-bar/bundles/index.umd.js +170 -0
- package/components/basic/progress/progress-bar/esm2022/index.mjs +5 -0
- package/components/basic/progress/progress-bar/esm2022/progress-bar.component.mjs +130 -0
- package/components/basic/progress/{esm2022/progress-bar → progress-bar/esm2022}/progress-bar.props.mjs +1 -1
- package/components/basic/progress/progress-bar/esm2022/public_api.mjs +2 -0
- package/components/basic/progress/progress-bar/fesm2022/index.mjs +154 -0
- package/components/basic/progress/progress-bar/fesm2022/index.mjs.map +1 -0
- package/components/basic/progress/progress-bar/index.d.ts +5 -0
- package/components/basic/progress/progress-bar/package.json +20 -0
- package/components/basic/progress/progress-bar/public_api.d.ts +1 -0
- package/components/basic/progress/progress-circle/.npmignore +2 -0
- package/components/basic/progress/progress-circle/bundles/index.umd.js +161 -0
- package/components/basic/progress/progress-circle/esm2022/index.mjs +5 -0
- package/components/basic/progress/progress-circle/esm2022/progress-circle.component.mjs +120 -0
- package/components/basic/progress/{esm2022/progress-circle → progress-circle/esm2022}/progress-circle.props.mjs +1 -1
- package/components/basic/progress/progress-circle/esm2022/public_api.mjs +2 -0
- package/components/basic/progress/progress-circle/fesm2022/index.mjs +145 -0
- package/components/basic/progress/progress-circle/fesm2022/index.mjs.map +1 -0
- package/components/basic/progress/progress-circle/index.d.ts +5 -0
- package/components/basic/progress/progress-circle/package.json +20 -0
- package/components/basic/progress/progress-circle/public_api.d.ts +1 -0
- package/components/basic/progress/progress-utils/.npmignore +2 -0
- package/components/basic/progress/progress-utils/bundles/index.umd.js +35 -0
- package/components/basic/progress/progress-utils/esm2022/index.mjs +5 -0
- package/components/basic/progress/progress-utils/esm2022/progress-utils.mjs +25 -0
- package/components/basic/progress/progress-utils/esm2022/public_api.mjs +2 -0
- package/components/basic/progress/progress-utils/fesm2022/index.mjs +32 -0
- package/components/basic/progress/progress-utils/fesm2022/index.mjs.map +1 -0
- package/components/basic/progress/progress-utils/index.d.ts +5 -0
- package/components/basic/progress/progress-utils/package.json +20 -0
- package/components/basic/progress/progress-utils/public_api.d.ts +1 -0
- package/components/basic/rich-text-editor/bundles/index.umd.js +23 -40
- package/components/basic/rich-text-editor/esm2022/rich-text-editor.component.mjs +19 -38
- package/components/basic/rich-text-editor/fesm2022/index.mjs +21 -39
- package/components/basic/rich-text-editor/fesm2022/index.mjs.map +1 -1
- package/components/basic/rich-text-editor/package.json +0 -3
- package/components/basic/rich-text-editor/rich-text-editor.component.d.ts +1 -1
- package/components/basic/search/bundles/index.umd.js +109 -313
- package/components/basic/search/esm2022/scrollable.directive.mjs +13 -14
- package/components/basic/search/esm2022/search.component.mjs +40 -246
- package/components/basic/search/fesm2022/index.mjs +52 -256
- package/components/basic/search/fesm2022/index.mjs.map +1 -1
- package/components/basic/search/package.json +0 -3
- package/components/basic/search/scrollable.directive.d.ts +2 -3
- package/components/basic/search/search.component.d.ts +1 -1
- package/components/basic/spinner/.npmignore +2 -0
- package/components/basic/spinner/bundles/index.umd.js +118 -0
- package/components/{input/default → basic/spinner}/esm2022/index.mjs +1 -1
- package/components/basic/spinner/esm2022/public_api.mjs +2 -0
- package/components/basic/spinner/esm2022/spinner.component.mjs +79 -0
- package/components/basic/spinner/esm2022/spinner.props.mjs +20 -0
- package/components/basic/spinner/fesm2022/index.mjs +103 -0
- package/components/basic/spinner/fesm2022/index.mjs.map +1 -0
- package/components/basic/spinner/index.d.ts +5 -0
- package/components/basic/spinner/package.json +20 -0
- package/components/basic/spinner/public_api.d.ts +1 -0
- package/components/basic/tree/bundles/index.umd.js +34 -38
- package/components/basic/tree/esm2022/tree.component.mjs +31 -36
- package/components/basic/tree/fesm2022/index.mjs +32 -36
- package/components/basic/tree/fesm2022/index.mjs.map +1 -1
- package/components/basic/tree/package.json +0 -3
- package/components/basic/video/.npmignore +2 -0
- package/components/basic/video/bundles/index.umd.js +116 -0
- package/components/basic/video/esm2022/index.mjs +5 -0
- package/components/basic/video/esm2022/public_api.mjs +2 -0
- package/components/basic/video/esm2022/video.component.mjs +70 -0
- package/components/basic/video/esm2022/video.props.mjs +24 -0
- package/components/basic/video/fesm2022/index.mjs +99 -0
- package/components/basic/video/fesm2022/index.mjs.map +1 -0
- package/components/basic/video/index.d.ts +5 -0
- package/components/basic/video/package.json +20 -0
- package/components/basic/video/public_api.d.ts +1 -0
- package/components/chart/bundles/index.umd.js +22 -75
- package/components/chart/esm2022/chart.component.mjs +20 -74
- package/components/chart/fesm2022/index.mjs +21 -74
- package/components/chart/fesm2022/index.mjs.map +1 -1
- package/components/chart/package.json +0 -3
- package/components/containers/accordion/bundles/index.umd.js +45 -100
- package/components/containers/accordion/esm2022/accordion-pane/accordion-pane.component.mjs +19 -70
- package/components/containers/accordion/esm2022/accordion.directive.mjs +24 -29
- package/components/containers/accordion/fesm2022/index.mjs +43 -98
- package/components/containers/accordion/fesm2022/index.mjs.map +1 -1
- package/components/containers/accordion/package.json +0 -3
- package/components/containers/layout-grid/bundles/index.umd.js +60 -60
- package/components/containers/layout-grid/esm2022/layout-grid-column/layout-grid-column.directive.mjs +23 -23
- package/components/containers/layout-grid/esm2022/layout-grid-row/layout-grid-row.directive.mjs +20 -20
- package/components/containers/layout-grid/esm2022/layout-grid.directive.mjs +20 -20
- package/components/containers/layout-grid/fesm2022/index.mjs +61 -61
- package/components/containers/layout-grid/fesm2022/index.mjs.map +1 -1
- package/components/containers/layout-grid/package.json +0 -3
- package/components/containers/linear-layout/bundles/index.umd.js +38 -38
- package/components/containers/linear-layout/esm2022/linear-layout-item/linear-layout-item.directive.mjs +20 -20
- package/components/containers/linear-layout/esm2022/linear-layout.directive.mjs +20 -20
- package/components/containers/linear-layout/fesm2022/index.mjs +39 -39
- package/components/containers/linear-layout/fesm2022/index.mjs.map +1 -1
- package/components/containers/linear-layout/package.json +0 -3
- package/components/containers/panel/bundles/index.umd.js +62 -223
- package/components/containers/panel/esm2022/panel.component.mjs +29 -190
- package/components/containers/panel/fesm2022/index.mjs +29 -190
- package/components/containers/panel/fesm2022/index.mjs.map +1 -1
- package/components/containers/panel/package.json +0 -3
- package/components/containers/tabs/bundles/index.umd.js +95 -204
- package/components/containers/tabs/esm2022/tab-pane/tab-pane.component.mjs +34 -51
- package/components/containers/tabs/esm2022/tabs.component.mjs +29 -123
- package/components/containers/tabs/fesm2022/index.mjs +61 -170
- package/components/containers/tabs/fesm2022/index.mjs.map +1 -1
- package/components/containers/tabs/package.json +0 -3
- package/components/containers/tabs/tab-pane/tab-pane.component.d.ts +3 -4
- package/components/containers/tile/bundles/index.umd.js +19 -19
- package/components/containers/tile/esm2022/tile.directive.mjs +20 -20
- package/components/containers/tile/fesm2022/index.mjs +20 -20
- package/components/containers/tile/fesm2022/index.mjs.map +1 -1
- package/components/containers/tile/package.json +0 -3
- package/components/containers/wizard/bundles/index.umd.js +119 -302
- package/components/containers/wizard/esm2022/wizard-action/wizard-action.directive.mjs +21 -21
- package/components/containers/wizard/esm2022/wizard-step/wizard-step.component.mjs +32 -45
- package/components/containers/wizard/esm2022/wizard.component.mjs +30 -201
- package/components/containers/wizard/fesm2022/index.mjs +81 -264
- package/components/containers/wizard/fesm2022/index.mjs.map +1 -1
- package/components/containers/wizard/package.json +0 -3
- package/components/containers/wizard/wizard.component.d.ts +1 -1
- package/components/data/card/bundles/index.umd.js +108 -208
- package/components/data/card/esm2022/card-actions/card-actions.directive.mjs +15 -15
- package/components/data/card/esm2022/card-content/card-content.component.mjs +19 -34
- package/components/data/card/esm2022/card-footer/card-footer.directive.mjs +15 -15
- package/components/data/card/esm2022/card.component.mjs +21 -107
- package/components/data/card/fesm2022/index.mjs +67 -167
- package/components/data/card/fesm2022/index.mjs.map +1 -1
- package/components/data/card/package.json +0 -3
- package/components/data/form/bundles/index.umd.js +287 -467
- package/components/data/form/esm2022/form-action/form-action.directive.mjs +22 -22
- package/components/data/form/esm2022/form-field/form-field.directive.mjs +80 -91
- package/components/data/form/esm2022/form-widget.directive.mjs +31 -31
- package/components/data/form/esm2022/form.component.mjs +88 -251
- package/components/data/form/esm2022/form.props.mjs +1 -1
- package/components/data/form/esm2022/live-actions/dependson.directive.mjs +19 -24
- package/components/data/form/esm2022/live-actions/live-actions.directive.mjs +15 -15
- package/components/data/form/esm2022/live-filter/live-filter.directive.mjs +15 -15
- package/components/data/form/esm2022/live-form/live-form.directive.mjs +23 -25
- package/components/data/form/fesm2022/index.mjs +288 -468
- package/components/data/form/fesm2022/index.mjs.map +1 -1
- package/components/data/form/package.json +0 -3
- package/components/data/list/bundles/index.umd.js +80 -360
- package/components/data/list/esm2022/list-item.directive.mjs +27 -34
- package/components/data/list/esm2022/list.animator.mjs +1 -1
- package/components/data/list/esm2022/list.component.mjs +55 -330
- package/components/data/list/esm2022/list.props.mjs +1 -1
- package/components/data/list/fesm2022/index.mjs +79 -358
- package/components/data/list/fesm2022/index.mjs.map +1 -1
- package/components/data/list/list-item.directive.d.ts +3 -3
- package/components/data/list/list.component.d.ts +2 -4
- package/components/data/list/package.json +0 -3
- package/components/data/live-table/bundles/index.umd.js +28 -39
- package/components/data/live-table/esm2022/live-table.component.mjs +25 -37
- package/components/data/live-table/fesm2022/index.mjs +26 -37
- package/components/data/live-table/fesm2022/index.mjs.map +1 -1
- package/components/data/live-table/package.json +0 -3
- package/components/data/pagination/bundles/index.umd.js +33 -505
- package/components/data/pagination/esm2022/pagination.component.mjs +33 -507
- package/components/data/pagination/esm2022/pagination.props.mjs +1 -1
- package/components/data/pagination/fesm2022/index.mjs +32 -505
- package/components/data/pagination/fesm2022/index.mjs.map +1 -1
- package/components/data/pagination/package.json +0 -3
- package/components/data/pagination/pagination.component.d.ts +1 -1
- package/components/data/table/bundles/index.umd.js +310 -457
- package/components/data/table/esm2022/table-action/table-action.directive.mjs +22 -22
- package/components/data/table/esm2022/table-column/table-column.directive.mjs +50 -71
- package/components/data/table/esm2022/table-column/table-column.props.mjs +1 -1
- package/components/data/table/esm2022/table-column-group/table-column-group.directive.mjs +26 -26
- package/components/data/table/esm2022/table-cud.directive.mjs +15 -15
- package/components/data/table/esm2022/table-filter.directive.mjs +16 -16
- package/components/data/table/esm2022/table-row/table-row.directive.mjs +24 -24
- package/components/data/table/esm2022/table-row-action/table-row-action.directive.mjs +29 -29
- package/components/data/table/esm2022/table.component.mjs +135 -263
- package/components/data/table/esm2022/table.props.mjs +2 -1
- package/components/data/table/fesm2022/index.mjs +312 -459
- package/components/data/table/fesm2022/index.mjs.map +1 -1
- package/components/data/table/package.json +0 -3
- package/components/data/table/table-column/table-column.directive.d.ts +1 -1
- package/components/data/table/table.component.d.ts +3 -0
- package/components/dialogs/alert-dialog/bundles/index.umd.js +50 -79
- package/components/dialogs/alert-dialog/esm2022/alert-dialog.component.mjs +32 -62
- package/components/dialogs/alert-dialog/fesm2022/index.mjs +32 -61
- package/components/dialogs/alert-dialog/fesm2022/index.mjs.map +1 -1
- package/components/dialogs/alert-dialog/package.json +0 -3
- package/components/dialogs/confirm-dialog/bundles/index.umd.js +36 -72
- package/components/dialogs/confirm-dialog/esm2022/confirm-dialog.component.mjs +34 -71
- package/components/dialogs/confirm-dialog/fesm2022/index.mjs +35 -71
- package/components/dialogs/confirm-dialog/fesm2022/index.mjs.map +1 -1
- package/components/dialogs/confirm-dialog/package.json +0 -3
- package/components/dialogs/default/bundles/index.umd.js +85 -232
- package/components/dialogs/default/esm2022/base-dialog.mjs +14 -14
- package/components/dialogs/default/esm2022/dialog-body/dialog-body.directive.mjs +16 -18
- package/components/dialogs/default/esm2022/dialog-footer/dialog-footer.directive.mjs +20 -20
- package/components/dialogs/default/esm2022/dialog-header/dialog-header.component.mjs +34 -179
- package/components/dialogs/default/fesm2022/index.mjs +80 -227
- package/components/dialogs/default/fesm2022/index.mjs.map +1 -1
- package/components/dialogs/default/package.json +0 -3
- package/components/dialogs/design-dialog/bundles/index.umd.js +52 -108
- package/components/dialogs/design-dialog/esm2022/dialog.component.mjs +50 -107
- package/components/dialogs/design-dialog/fesm2022/index.mjs +51 -107
- package/components/dialogs/design-dialog/fesm2022/index.mjs.map +1 -1
- package/components/dialogs/design-dialog/package.json +0 -3
- package/components/dialogs/iframe-dialog/bundles/index.umd.js +33 -81
- package/components/dialogs/iframe-dialog/esm2022/iframe-dialog.component.mjs +32 -82
- package/components/dialogs/iframe-dialog/fesm2022/index.mjs +33 -82
- package/components/dialogs/iframe-dialog/fesm2022/index.mjs.map +1 -1
- package/components/dialogs/iframe-dialog/package.json +0 -3
- package/components/dialogs/login-dialog/bundles/index.umd.js +22 -29
- package/components/dialogs/login-dialog/esm2022/login-dialog.directive.mjs +23 -30
- package/components/dialogs/login-dialog/fesm2022/index.mjs +23 -30
- package/components/dialogs/login-dialog/fesm2022/index.mjs.map +1 -1
- package/components/dialogs/login-dialog/package.json +0 -3
- package/components/dialogs/partial-dialog/bundles/index.umd.js +39 -85
- package/components/dialogs/partial-dialog/esm2022/partial-dialog.component.mjs +38 -85
- package/components/dialogs/partial-dialog/fesm2022/index.mjs +39 -85
- package/components/dialogs/partial-dialog/fesm2022/index.mjs.map +1 -1
- package/components/dialogs/partial-dialog/package.json +0 -3
- package/components/input/base-form/.npmignore +2 -0
- package/components/input/base-form/bundles/index.umd.js +133 -0
- package/components/input/base-form/esm2022/base-form.component.mjs +110 -0
- package/components/input/base-form/esm2022/index.mjs +5 -0
- package/components/input/base-form/esm2022/public_api.mjs +2 -0
- package/components/input/base-form/fesm2022/index.mjs +117 -0
- package/components/input/base-form/fesm2022/index.mjs.map +1 -0
- package/components/input/base-form/index.d.ts +5 -0
- package/components/input/base-form/package.json +20 -0
- package/components/input/base-form/public_api.d.ts +1 -0
- package/components/input/base-form-custom/.npmignore +2 -0
- package/components/input/{default → base-form-custom}/base-form-custom.component.d.ts +1 -1
- package/components/input/base-form-custom/bundles/index.umd.js +118 -0
- package/components/input/base-form-custom/esm2022/base-form-custom.component.mjs +94 -0
- package/components/input/base-form-custom/esm2022/index.mjs +5 -0
- package/components/input/base-form-custom/esm2022/public_api.mjs +2 -0
- package/components/input/base-form-custom/fesm2022/index.mjs +101 -0
- package/components/input/base-form-custom/fesm2022/index.mjs.map +1 -0
- package/components/input/base-form-custom/index.d.ts +5 -0
- package/components/input/base-form-custom/package.json +20 -0
- package/components/input/base-form-custom/public_api.d.ts +1 -0
- package/components/input/button/.npmignore +2 -0
- package/components/input/button/bundles/index.umd.js +98 -0
- package/components/input/button/esm2022/button.component.mjs +50 -0
- package/components/input/button/esm2022/button.props.mjs +26 -0
- package/components/input/button/esm2022/index.mjs +5 -0
- package/components/input/button/esm2022/public_api.mjs +2 -0
- package/components/input/button/fesm2022/index.mjs +81 -0
- package/components/input/button/fesm2022/index.mjs.map +1 -0
- package/components/input/button/index.d.ts +5 -0
- package/components/input/button/package.json +20 -0
- package/components/input/button/public_api.d.ts +1 -0
- package/components/input/button-group/.npmignore +2 -0
- package/components/input/button-group/bundles/index.umd.js +80 -0
- package/components/input/button-group/esm2022/button-group.directive.mjs +47 -0
- package/components/input/button-group/esm2022/button-group.props.mjs +10 -0
- package/components/input/button-group/esm2022/index.mjs +5 -0
- package/components/input/button-group/esm2022/public_api.mjs +2 -0
- package/components/input/button-group/fesm2022/index.mjs +62 -0
- package/components/input/button-group/fesm2022/index.mjs.map +1 -0
- package/components/input/button-group/index.d.ts +5 -0
- package/components/input/button-group/package.json +20 -0
- package/components/input/button-group/public_api.d.ts +1 -0
- package/components/input/calendar/bundles/index.umd.js +25 -38
- package/components/input/calendar/esm2022/calendar.component.mjs +22 -36
- package/components/input/calendar/fesm2022/index.mjs +23 -36
- package/components/input/calendar/fesm2022/index.mjs.map +1 -1
- package/components/input/calendar/package.json +0 -3
- package/components/input/caption-position/.npmignore +2 -0
- package/components/input/caption-position/bundles/index.umd.js +196 -0
- package/components/input/caption-position/esm2022/caption-position.directive.mjs +172 -0
- package/components/input/caption-position/esm2022/index.mjs +5 -0
- package/components/input/caption-position/esm2022/public_api.mjs +2 -0
- package/components/input/caption-position/fesm2022/index.mjs +178 -0
- package/components/input/caption-position/fesm2022/index.mjs.map +1 -0
- package/components/input/caption-position/index.d.ts +5 -0
- package/components/input/caption-position/package.json +20 -0
- package/components/input/caption-position/public_api.d.ts +1 -0
- package/components/input/checkbox/.npmignore +2 -0
- package/components/input/checkbox/bundles/index.umd.js +190 -0
- package/components/input/{default/checkbox → checkbox}/checkbox.component.d.ts +1 -1
- package/components/input/checkbox/esm2022/checkbox.component.mjs +145 -0
- package/components/input/checkbox/esm2022/checkbox.props.mjs +27 -0
- package/components/{basic/progress → input/checkbox}/esm2022/index.mjs +1 -1
- package/components/input/checkbox/esm2022/public_api.mjs +2 -0
- package/components/input/checkbox/fesm2022/index.mjs +175 -0
- package/components/input/checkbox/fesm2022/index.mjs.map +1 -0
- package/components/input/checkbox/index.d.ts +5 -0
- package/components/input/checkbox/package.json +20 -0
- package/components/input/checkbox/public_api.d.ts +1 -0
- package/components/input/checkboxset/.npmignore +2 -0
- package/components/input/checkboxset/bundles/index.umd.js +151 -0
- package/components/input/{default/checkboxset → checkboxset}/checkboxset.component.d.ts +1 -1
- package/components/input/checkboxset/esm2022/checkboxset.component.mjs +99 -0
- package/components/input/checkboxset/esm2022/checkboxset.props.mjs +35 -0
- package/components/input/checkboxset/esm2022/index.mjs +5 -0
- package/components/input/checkboxset/esm2022/public_api.mjs +2 -0
- package/components/input/checkboxset/fesm2022/index.mjs +138 -0
- package/components/input/checkboxset/fesm2022/index.mjs.map +1 -0
- package/components/input/checkboxset/index.d.ts +5 -0
- package/components/input/checkboxset/package.json +20 -0
- package/components/input/checkboxset/public_api.d.ts +1 -0
- package/components/input/chips/bundles/index.umd.js +94 -153
- package/components/input/chips/chips.component.d.ts +1 -1
- package/components/input/chips/esm2022/chips.component.mjs +41 -101
- package/components/input/chips/fesm2022/index.mjs +42 -101
- package/components/input/chips/fesm2022/index.mjs.map +1 -1
- package/components/input/chips/package.json +0 -3
- package/components/input/color-picker/bundles/index.umd.js +35 -74
- package/components/input/color-picker/color-picker.component.d.ts +2 -2
- package/components/input/color-picker/esm2022/color-picker.component.mjs +34 -75
- package/components/input/color-picker/fesm2022/index.mjs +36 -75
- package/components/input/color-picker/fesm2022/index.mjs.map +1 -1
- package/components/input/color-picker/package.json +0 -3
- package/components/input/composite/.npmignore +2 -0
- package/components/input/composite/bundles/index.umd.js +111 -0
- package/components/input/composite/esm2022/composite.directive.mjs +79 -0
- package/components/input/composite/esm2022/composite.props.mjs +10 -0
- package/components/input/composite/esm2022/index.mjs +5 -0
- package/components/input/composite/esm2022/public_api.mjs +2 -0
- package/components/input/composite/fesm2022/index.mjs +94 -0
- package/components/input/composite/fesm2022/index.mjs.map +1 -0
- package/components/input/composite/index.d.ts +5 -0
- package/components/input/composite/package.json +20 -0
- package/components/input/composite/public_api.d.ts +1 -0
- package/components/input/currency/bundles/index.umd.js +31 -52
- package/components/input/currency/currency.component.d.ts +1 -1
- package/components/input/currency/esm2022/currency.component.mjs +28 -50
- package/components/input/currency/fesm2022/index.mjs +30 -51
- package/components/input/currency/fesm2022/index.mjs.map +1 -1
- package/components/input/currency/package.json +0 -3
- package/components/input/dataset-aware-form/.npmignore +2 -0
- package/components/input/dataset-aware-form/bundles/index.umd.js +328 -0
- package/components/input/{default → dataset-aware-form}/dataset-aware-form.component.d.ts +1 -1
- package/components/input/dataset-aware-form/esm2022/dataset-aware-form.component.mjs +307 -0
- package/components/input/dataset-aware-form/esm2022/index.mjs +5 -0
- package/components/input/dataset-aware-form/esm2022/public_api.mjs +2 -0
- package/components/input/dataset-aware-form/fesm2022/index.mjs +314 -0
- package/components/input/dataset-aware-form/fesm2022/index.mjs.map +1 -0
- package/components/input/dataset-aware-form/index.d.ts +5 -0
- package/components/input/dataset-aware-form/package.json +20 -0
- package/components/input/dataset-aware-form/public_api.d.ts +1 -0
- package/components/input/epoch/base-date-time/.npmignore +2 -0
- package/components/input/epoch/{base-date-time.component.d.ts → base-date-time/base-date-time.component.d.ts} +1 -1
- package/components/input/epoch/base-date-time/bundles/index.umd.js +1086 -0
- package/components/input/epoch/{esm2022 → base-date-time/esm2022}/base-date-time.component.mjs +22 -31
- package/components/input/epoch/base-date-time/esm2022/index.mjs +5 -0
- package/components/input/epoch/base-date-time/esm2022/public_api.mjs +2 -0
- package/components/input/epoch/base-date-time/fesm2022/index.mjs +1077 -0
- package/components/input/epoch/base-date-time/fesm2022/index.mjs.map +1 -0
- package/components/input/epoch/base-date-time/index.d.ts +5 -0
- package/components/input/epoch/base-date-time/package.json +20 -0
- package/components/input/epoch/base-date-time/public_api.d.ts +1 -0
- package/components/input/epoch/date/.npmignore +2 -0
- package/components/input/epoch/date/bundles/index.umd.js +492 -0
- package/components/input/epoch/date/date.component.d.ts +2 -2
- package/components/input/epoch/date/esm2022/date.component.mjs +322 -0
- package/components/input/epoch/{esm2022/date → date/esm2022}/date.props.mjs +1 -1
- package/components/input/epoch/{esm2022/date → date/esm2022}/imaskUtil.mjs +1 -1
- package/components/input/epoch/date/esm2022/index.mjs +5 -0
- package/components/input/epoch/date/esm2022/public_api.mjs +2 -0
- package/components/input/epoch/date/fesm2022/index.mjs +482 -0
- package/components/input/epoch/date/fesm2022/index.mjs.map +1 -0
- package/components/input/epoch/date/index.d.ts +5 -0
- package/components/input/epoch/date/package.json +20 -0
- package/components/input/epoch/date/public_api.d.ts +1 -0
- package/components/input/epoch/date-time/.npmignore +2 -0
- package/components/input/epoch/date-time/bundles/index.umd.js +518 -0
- package/components/input/epoch/date-time/date-time.component.d.ts +1 -1
- package/components/input/epoch/date-time/esm2022/date-time.component.mjs +458 -0
- package/components/input/epoch/{esm2022/date-time → date-time/esm2022}/date-time.props.mjs +1 -1
- package/components/input/epoch/date-time/esm2022/index.mjs +5 -0
- package/components/input/epoch/date-time/esm2022/public_api.mjs +2 -0
- package/components/input/epoch/date-time/fesm2022/index.mjs +509 -0
- package/components/input/epoch/date-time/fesm2022/index.mjs.map +1 -0
- package/components/input/epoch/date-time/index.d.ts +5 -0
- package/components/input/epoch/date-time/package.json +20 -0
- package/components/input/epoch/date-time/public_api.d.ts +1 -0
- package/components/input/epoch/date-time-picker/.npmignore +2 -0
- package/components/input/epoch/date-time-picker/bundles/index.umd.js +453 -0
- package/components/input/epoch/date-time-picker/esm2022/date-time-picker.component.mjs +433 -0
- package/components/input/epoch/date-time-picker/esm2022/index.mjs +5 -0
- package/components/input/epoch/date-time-picker/esm2022/public_api.mjs +2 -0
- package/components/input/epoch/date-time-picker/fesm2022/index.mjs +439 -0
- package/components/input/epoch/date-time-picker/fesm2022/index.mjs.map +1 -0
- package/components/input/epoch/date-time-picker/index.d.ts +5 -0
- package/components/input/epoch/date-time-picker/package.json +20 -0
- package/components/input/epoch/date-time-picker/public_api.d.ts +1 -0
- package/components/input/epoch/picker/.npmignore +2 -0
- package/components/input/epoch/picker/bundles/index.umd.js +192 -0
- package/components/input/epoch/picker/esm2022/index.mjs +5 -0
- package/components/input/epoch/picker/esm2022/picker.component.mjs +165 -0
- package/components/input/epoch/picker/esm2022/public_api.mjs +3 -0
- package/components/input/epoch/picker/fesm2022/index.mjs +172 -0
- package/components/input/epoch/picker/fesm2022/index.mjs.map +1 -0
- package/components/input/epoch/picker/index.d.ts +5 -0
- package/components/input/epoch/picker/package.json +20 -0
- package/components/input/epoch/picker/public_api.d.ts +2 -0
- package/components/input/epoch/time/.npmignore +2 -0
- package/components/input/epoch/time/bundles/index.umd.js +397 -0
- package/components/input/epoch/time/esm2022/index.mjs +5 -0
- package/components/input/epoch/time/esm2022/public_api.mjs +2 -0
- package/components/input/epoch/time/esm2022/time.component.mjs +348 -0
- package/components/input/epoch/{esm2022/time → time/esm2022}/time.props.mjs +1 -1
- package/components/input/epoch/time/fesm2022/index.mjs +387 -0
- package/components/input/epoch/time/fesm2022/index.mjs.map +1 -0
- package/components/input/epoch/time/index.d.ts +5 -0
- package/components/input/epoch/time/package.json +20 -0
- package/components/input/epoch/time/public_api.d.ts +1 -0
- package/components/input/epoch/time/time.component.d.ts +1 -1
- package/components/input/file-upload/bundles/index.umd.js +56 -348
- package/components/input/file-upload/esm2022/file-upload.component.mjs +20 -313
- package/components/input/file-upload/fesm2022/index.mjs +20 -312
- package/components/input/file-upload/fesm2022/index.mjs.map +1 -1
- package/components/input/file-upload/package.json +0 -3
- package/components/input/number/.npmignore +2 -0
- package/components/input/number/bundles/index.umd.js +101 -0
- package/components/input/number/esm2022/index.mjs +5 -0
- package/components/input/number/esm2022/number.component.mjs +49 -0
- package/components/input/number/esm2022/number.props.mjs +35 -0
- package/components/input/number/esm2022/public_api.mjs +2 -0
- package/components/input/number/fesm2022/index.mjs +87 -0
- package/components/input/number/fesm2022/index.mjs.map +1 -0
- package/components/input/number/index.d.ts +5 -0
- package/components/input/{default/number → number}/number.component.d.ts +1 -1
- package/components/input/number/package.json +20 -0
- package/components/input/number/public_api.d.ts +1 -0
- package/components/input/radioset/.npmignore +2 -0
- package/components/input/radioset/bundles/index.umd.js +136 -0
- package/components/input/radioset/esm2022/index.mjs +5 -0
- package/components/input/radioset/esm2022/public_api.mjs +2 -0
- package/components/input/radioset/esm2022/radioset.component.mjs +84 -0
- package/components/input/radioset/esm2022/radioset.props.mjs +35 -0
- package/components/input/radioset/fesm2022/index.mjs +123 -0
- package/components/input/radioset/fesm2022/index.mjs.map +1 -0
- package/components/input/radioset/index.d.ts +5 -0
- package/components/input/radioset/package.json +20 -0
- package/components/input/radioset/public_api.d.ts +1 -0
- package/components/input/{default/radioset → radioset}/radioset.component.d.ts +1 -1
- package/components/input/rating/bundles/index.umd.js +49 -103
- package/components/input/rating/esm2022/rating.component.mjs +24 -79
- package/components/input/rating/fesm2022/index.mjs +25 -79
- package/components/input/rating/fesm2022/index.mjs.map +1 -1
- package/components/input/rating/package.json +0 -3
- package/components/input/rating/rating.component.d.ts +1 -1
- package/components/input/select/.npmignore +2 -0
- package/components/input/select/bundles/index.umd.js +219 -0
- package/components/input/select/esm2022/index.mjs +5 -0
- package/components/input/select/esm2022/public_api.mjs +2 -0
- package/components/input/select/esm2022/select.component.mjs +166 -0
- package/components/input/select/esm2022/select.props.mjs +36 -0
- package/components/input/select/fesm2022/index.mjs +205 -0
- package/components/input/select/fesm2022/index.mjs.map +1 -0
- package/components/input/select/index.d.ts +5 -0
- package/components/input/select/package.json +20 -0
- package/components/input/select/public_api.d.ts +1 -0
- package/components/input/{default/select → select}/select.component.d.ts +1 -1
- package/components/input/slider/bundles/index.umd.js +44 -111
- package/components/input/slider/esm2022/slider.component.mjs +25 -95
- package/components/input/slider/esm2022/slider.props.mjs +1 -1
- package/components/input/slider/fesm2022/index.mjs +25 -93
- package/components/input/slider/fesm2022/index.mjs.map +1 -1
- package/components/input/slider/package.json +0 -3
- package/components/input/slider/slider.component.d.ts +2 -2
- package/components/input/switch/.npmignore +2 -0
- package/components/input/switch/bundles/index.umd.js +204 -0
- package/components/input/switch/esm2022/index.mjs +5 -0
- package/components/input/switch/esm2022/public_api.mjs +2 -0
- package/components/input/switch/esm2022/switch.component.mjs +159 -0
- package/components/input/switch/esm2022/switch.props.mjs +28 -0
- package/components/input/switch/fesm2022/index.mjs +191 -0
- package/components/input/switch/fesm2022/index.mjs.map +1 -0
- package/components/input/switch/index.d.ts +5 -0
- package/components/input/switch/package.json +20 -0
- package/components/input/switch/public_api.d.ts +1 -0
- package/components/input/{default/switch → switch}/switch.component.d.ts +1 -1
- package/components/input/text/.npmignore +2 -0
- package/components/input/{default/text/base → text/base-input}/base-input.d.ts +1 -1
- package/components/input/text/bundles/index.umd.js +1070 -0
- package/components/input/text/esm2022/base-input/base-input.mjs +93 -0
- package/components/input/text/esm2022/index.mjs +5 -0
- package/components/input/text/esm2022/input-calendar/input-calendar.component.mjs +46 -0
- package/components/input/text/esm2022/input-calendar/input-calendar.props.mjs +30 -0
- package/components/input/text/esm2022/input-color/input-color.component.mjs +46 -0
- package/components/input/text/esm2022/input-color/input-color.props.mjs +27 -0
- package/components/input/text/esm2022/input-email/input-email.component.mjs +46 -0
- package/components/input/text/esm2022/input-email/input-email.props.mjs +29 -0
- package/components/input/text/esm2022/input-number/input-number.component.mjs +56 -0
- package/components/input/text/esm2022/input-number/input-number.props.mjs +32 -0
- package/components/input/text/esm2022/input-text/input-text.component.mjs +121 -0
- package/components/input/text/esm2022/input-text/input-text.props.mjs +46 -0
- package/components/input/text/esm2022/number-locale/number-locale.mjs +539 -0
- package/components/input/text/esm2022/public_api.mjs +8 -0
- package/components/input/text/fesm2022/index.mjs +1054 -0
- package/components/input/text/fesm2022/index.mjs.map +1 -0
- package/components/input/text/index.d.ts +5 -0
- package/components/input/{default/text/calendar → text/input-calendar}/input-calendar.component.d.ts +1 -1
- package/components/input/{default/text/color → text/input-color}/input-color.component.d.ts +1 -1
- package/components/input/{default/text/email → text/input-email}/input-email.component.d.ts +1 -1
- package/components/input/{default/text/number → text/input-number}/input-number.component.d.ts +1 -1
- package/components/input/{default/text/text → text/input-text}/input-text.component.d.ts +1 -1
- package/components/input/{default/text/locale → text/number-locale}/number-locale.d.ts +1 -1
- package/components/input/text/package.json +20 -0
- package/components/input/text/public_api.d.ts +7 -0
- package/components/input/textarea/.npmignore +2 -0
- package/components/input/textarea/bundles/index.umd.js +101 -0
- package/components/input/textarea/esm2022/index.mjs +5 -0
- package/components/input/textarea/esm2022/public_api.mjs +2 -0
- package/components/input/textarea/esm2022/textarea.component.mjs +53 -0
- package/components/input/textarea/esm2022/textarea.props.mjs +30 -0
- package/components/input/textarea/fesm2022/index.mjs +87 -0
- package/components/input/textarea/fesm2022/index.mjs.map +1 -0
- package/components/input/textarea/index.d.ts +5 -0
- package/components/input/textarea/package.json +20 -0
- package/components/input/textarea/public_api.d.ts +1 -0
- package/components/input/{default/textarea → textarea}/textarea.component.d.ts +1 -1
- package/components/navigation/breadcrumb/bundles/index.umd.js +37 -79
- package/components/navigation/breadcrumb/esm2022/breadcrumb.component.mjs +20 -64
- package/components/navigation/breadcrumb/fesm2022/index.mjs +21 -64
- package/components/navigation/breadcrumb/fesm2022/index.mjs.map +1 -1
- package/components/navigation/breadcrumb/package.json +0 -3
- package/components/navigation/menu/bundles/index.umd.js +247 -442
- package/components/navigation/menu/esm2022/menu-adapator.component.mjs +14 -19
- package/components/navigation/menu/esm2022/menu-dropdown/menu-dropdown.component.mjs +13 -29
- package/components/navigation/menu/esm2022/menu-dropdown-item/menu-dropdown-item.component.mjs +43 -100
- package/components/navigation/menu/esm2022/menu.component.mjs +53 -104
- package/components/navigation/menu/esm2022/nav/nav-item/nav-item.directive.mjs +30 -37
- package/components/navigation/menu/esm2022/nav/nav.component.mjs +20 -88
- package/components/navigation/menu/esm2022/nav/navigation-control.directive.mjs +14 -14
- package/components/navigation/menu/fesm2022/index.mjs +174 -369
- package/components/navigation/menu/fesm2022/index.mjs.map +1 -1
- package/components/navigation/menu/menu-dropdown/menu-dropdown.component.d.ts +2 -3
- package/components/navigation/menu/menu-dropdown-item/menu-dropdown-item.component.d.ts +3 -3
- package/components/navigation/menu/package.json +0 -3
- package/components/navigation/navbar/bundles/index.umd.js +32 -83
- package/components/navigation/navbar/esm2022/navbar.component.mjs +20 -72
- package/components/navigation/navbar/fesm2022/index.mjs +20 -71
- package/components/navigation/navbar/fesm2022/index.mjs.map +1 -1
- package/components/navigation/navbar/package.json +0 -3
- package/components/navigation/popover/bundles/index.umd.js +31 -59
- package/components/navigation/popover/esm2022/popover.component.mjs +29 -58
- package/components/navigation/popover/fesm2022/index.mjs +31 -59
- package/components/navigation/popover/fesm2022/index.mjs.map +1 -1
- package/components/navigation/popover/package.json +0 -3
- package/components/page/default/bundles/index.umd.js +109 -123
- package/components/page/default/esm2022/content/content.component.mjs +16 -25
- package/components/page/default/esm2022/layout.directive.mjs +21 -21
- package/components/page/default/esm2022/page-content/page-content.component.mjs +16 -23
- package/components/page/default/esm2022/page.directive.mjs +21 -21
- package/components/page/default/esm2022/router-outlet.directive.mjs +20 -20
- package/components/page/default/esm2022/spa-page.directive.mjs +21 -21
- package/components/page/default/fesm2022/index.mjs +111 -125
- package/components/page/default/fesm2022/index.mjs.map +1 -1
- package/components/page/default/package.json +0 -3
- package/components/page/footer/bundles/index.umd.js +20 -20
- package/components/page/footer/esm2022/footer.directive.mjs +21 -21
- package/components/page/footer/fesm2022/index.mjs +21 -21
- package/components/page/footer/fesm2022/index.mjs.map +1 -1
- package/components/page/footer/package.json +0 -3
- package/components/page/header/bundles/index.umd.js +19 -26
- package/components/page/header/esm2022/header.component.mjs +16 -24
- package/components/page/header/fesm2022/index.mjs +17 -24
- package/components/page/header/fesm2022/index.mjs.map +1 -1
- package/components/page/header/package.json +0 -3
- package/components/page/left-panel/bundles/index.umd.js +30 -30
- package/components/page/left-panel/esm2022/left-panel.directive.mjs +31 -31
- package/components/page/left-panel/fesm2022/index.mjs +31 -31
- package/components/page/left-panel/fesm2022/index.mjs.map +1 -1
- package/components/page/left-panel/package.json +0 -3
- package/components/page/right-panel/bundles/index.umd.js +23 -23
- package/components/page/right-panel/esm2022/right-panel.directive.mjs +24 -24
- package/components/page/right-panel/fesm2022/index.mjs +24 -24
- package/components/page/right-panel/fesm2022/index.mjs.map +1 -1
- package/components/page/right-panel/package.json +0 -3
- package/components/page/top-nav/bundles/index.umd.js +20 -20
- package/components/page/top-nav/esm2022/top-nav.directive.mjs +21 -21
- package/components/page/top-nav/fesm2022/index.mjs +21 -21
- package/components/page/top-nav/fesm2022/index.mjs.map +1 -1
- package/components/page/top-nav/package.json +0 -3
- package/components/prefab/bundles/index.umd.js +41 -41
- package/components/prefab/esm2022/prefab-container/prefab-container.directive.mjs +20 -20
- package/components/prefab/esm2022/prefab.directive.mjs +23 -23
- package/components/prefab/fesm2022/index.mjs +42 -42
- package/components/prefab/fesm2022/index.mjs.map +1 -1
- package/components/prefab/package.json +0 -3
- package/core/bundles/index.umd.js +80 -61
- package/core/esm2022/services/constant.service.mjs +7 -7
- package/core/esm2022/services/custom-icons-loader.service.mjs +7 -7
- package/core/esm2022/services/field-type.service.mjs +7 -7
- package/core/esm2022/services/field-widget.service.mjs +7 -7
- package/core/esm2022/services/pagination.service.mjs +7 -7
- package/core/esm2022/services/script-loader.service.mjs +7 -7
- package/core/esm2022/services/state-persistence.service.mjs +7 -7
- package/core/esm2022/services/user-custom-pipe-manager.service.mjs +7 -7
- package/core/esm2022/services/utils.service.mjs +7 -7
- package/core/esm2022/services/viewport.service.mjs +7 -7
- package/core/esm2022/types/types.mjs +1 -1
- package/core/esm2022/utils/build-utils.mjs +21 -2
- package/core/fesm2022/index.mjs +80 -61
- package/core/fesm2022/index.mjs.map +1 -1
- package/core/package.json +3 -6
- package/core/types/types.d.ts +2 -1
- package/http/bundles/index.umd.js +8 -8
- package/http/esm2022/http.service.mjs +9 -9
- package/http/fesm2022/index.mjs +8 -8
- package/http/fesm2022/index.mjs.map +1 -1
- package/http/package.json +2 -5
- package/locales/moment/ar-dz.js +8 -8
- package/locales/moment/ar-ly.js +8 -8
- package/locales/moment/ar-ps.js +123 -0
- package/locales/moment/ar.js +8 -8
- package/locales/moment/be.js +2 -2
- package/locales/moment/bs.js +14 -4
- package/locales/moment/ca.js +6 -6
- package/locales/moment/cs.js +5 -4
- package/locales/moment/cv.js +2 -2
- package/locales/moment/en-au.js +6 -6
- package/locales/moment/en-ca.js +6 -6
- package/locales/moment/en-gb.js +6 -6
- package/locales/moment/en-ie.js +6 -6
- package/locales/moment/en-il.js +6 -6
- package/locales/moment/en-in.js +6 -6
- package/locales/moment/en-nz.js +6 -6
- package/locales/moment/en-sg.js +6 -6
- package/locales/moment/it.js +4 -4
- package/locales/moment/ku-kmr.js +125 -0
- package/locales/moment/lt.js +2 -2
- package/locales/moment/me.js +2 -2
- package/locales/moment/nb.js +4 -4
- package/locales/moment/nl-be.js +1 -1
- package/locales/moment/nl.js +1 -1
- package/locales/moment/oc-lnc.js +6 -6
- package/locales/moment/ru.js +2 -2
- package/locales/moment/sv.js +6 -6
- package/locales/moment/tet.js +6 -6
- package/locales/moment/tlh.js +8 -8
- package/locales/moment/tzl.js +2 -2
- package/locales/moment/uk.js +4 -4
- package/locales/moment/x-pseudo.js +6 -6
- package/locales/moment-timezone/moment-timezone-with-data.js +2 -2
- package/npm-shrinkwrap.json +2 -2
- package/oAuth/bundles/index.umd.js +5 -5
- package/oAuth/esm2022/oAuth.service.mjs +6 -6
- package/oAuth/fesm2022/index.mjs +5 -5
- package/oAuth/fesm2022/index.mjs.map +1 -1
- package/oAuth/package.json +2 -5
- package/package-lock.json +2 -2
- package/package.json +1 -1
- package/runtime/base/bundles/index.umd.js +3162 -3100
- package/runtime/base/components/empty-component/empty-page.component.d.ts +1 -0
- package/runtime/base/esm2022/components/app-component/app.component.mjs +14 -95
- package/runtime/base/esm2022/components/app-spinner.component.mjs +34 -45
- package/runtime/base/esm2022/components/base-custom-widget.component.mjs +8 -7
- package/runtime/base/esm2022/components/base-layout.component.mjs +14 -21
- package/runtime/base/esm2022/components/base-page.component.mjs +12 -19
- package/runtime/base/esm2022/components/base-partial.component.mjs +9 -14
- package/runtime/base/esm2022/components/base-prefab.component.mjs +9 -14
- package/runtime/base/esm2022/components/base-spa-page.component.mjs +12 -19
- package/runtime/base/esm2022/components/custom-toaster.component.mjs +30 -52
- package/runtime/base/esm2022/components/empty-component/empty-page.component.mjs +33 -15
- package/runtime/base/esm2022/components/prefab-preview.component.mjs +19 -26
- package/runtime/base/esm2022/directives/accessroles.directive.mjs +17 -17
- package/runtime/base/esm2022/directives/prefab.directive.mjs +15 -15
- package/runtime/base/esm2022/guards/auth.guard.mjs +6 -6
- package/runtime/base/esm2022/guards/can-deactivate-page.guard.mjs +11 -11
- package/runtime/base/esm2022/guards/page-not-found.guard.mjs +6 -6
- package/runtime/base/esm2022/guards/role.guard.mjs +6 -6
- package/runtime/base/esm2022/overrides/wm_dom_renderer.mjs +12 -12
- package/runtime/base/esm2022/overrides/wm_shared_styles_host.mjs +14 -14
- package/runtime/base/esm2022/public_api.mjs +5 -2
- package/runtime/base/esm2022/resolves/app-before-load.resolve.mjs +22 -0
- package/runtime/base/esm2022/resolves/app-extension.resolve.mjs +6 -6
- package/runtime/base/esm2022/resolves/app-js.resolve.mjs +6 -6
- package/runtime/base/esm2022/resolves/app-variables.resolve.mjs +9 -9
- package/runtime/base/esm2022/resolves/i18n.resolve.mjs +6 -6
- package/runtime/base/esm2022/resolves/metadata.resolve.mjs +9 -9
- package/runtime/base/esm2022/resolves/security-config.resolve.mjs +9 -9
- package/runtime/base/esm2022/runtime-base.module.mjs +457 -316
- package/runtime/base/esm2022/services/app-defaults.service.mjs +6 -6
- package/runtime/base/esm2022/services/app.manager.service.mjs +25 -9
- package/runtime/base/esm2022/services/app.service.mjs +39 -18
- package/runtime/base/esm2022/services/dynamic-component-ref-provider.service.mjs +6 -6
- package/runtime/base/esm2022/services/http-interceptor.services.mjs +6 -6
- package/runtime/base/esm2022/services/i18n.service.mjs +37 -34
- package/runtime/base/esm2022/services/navigation.service.mjs +6 -6
- package/runtime/base/esm2022/services/pipe-provider.service.mjs +13 -13
- package/runtime/base/esm2022/services/pipe.service.mjs +10 -8
- package/runtime/base/esm2022/services/prefab-manager.service.mjs +6 -6
- package/runtime/base/esm2022/services/spinner.service.mjs +6 -6
- package/runtime/base/esm2022/services/toaster.service.mjs +6 -6
- package/runtime/base/esm2022/util/fragment-monitor.mjs +6 -6
- package/runtime/base/esm2022/util/utils.mjs +15 -1
- package/runtime/base/esm2022/util/wm-route-reuse-strategy.mjs +1 -1
- package/runtime/base/fesm2022/index.mjs +3145 -3071
- package/runtime/base/fesm2022/index.mjs.map +1 -1
- package/runtime/base/package.json +2 -5
- package/runtime/base/public_api.d.ts +4 -1
- package/runtime/base/resolves/app-before-load.resolve.d.ts +11 -0
- package/runtime/base/runtime-base.module.d.ts +96 -59
- package/runtime/base/services/app.manager.service.d.ts +2 -1
- package/runtime/base/services/app.service.d.ts +3 -2
- package/runtime/base/services/i18n.service.d.ts +2 -1
- package/runtime/base/util/utils.d.ts +2 -1
- package/runtime/dynamic/app/app.config.d.ts +1 -1
- package/runtime/dynamic/app/services/app-variables-provider.service.d.ts +3 -1
- package/runtime/dynamic/bundles/index.umd.js +145 -114
- package/runtime/dynamic/esm2022/app/app.config.mjs +11 -10
- package/runtime/dynamic/esm2022/app/app.module.mjs +35 -5
- package/runtime/dynamic/esm2022/app/app.routes.mjs +2 -11
- package/runtime/dynamic/esm2022/app/components/page-wrapper.component.mjs +11 -16
- package/runtime/dynamic/esm2022/app/services/app-extension.service.mjs +9 -9
- package/runtime/dynamic/esm2022/app/services/app-js-provider.service.mjs +9 -9
- package/runtime/dynamic/esm2022/app/services/app-resource-manager.service.mjs +6 -6
- package/runtime/dynamic/esm2022/app/services/app-variables-provider.service.mjs +15 -11
- package/runtime/dynamic/esm2022/app/services/component-ref-provider.service.mjs +57 -8
- package/runtime/dynamic/esm2022/app/services/customwidget-config-provider.service.mjs +6 -6
- package/runtime/dynamic/esm2022/app/services/prefab-config-provider.service.mjs +6 -6
- package/runtime/dynamic/fesm2022/index.mjs +143 -88
- package/runtime/dynamic/fesm2022/index.mjs.map +1 -1
- package/runtime/dynamic/package.json +2 -5
- package/scripts/datatable/datatable.js +26 -5
- package/scripts/jquery-ui/ui/widgets/droppable.js +3 -3
- package/scripts/jquery-ui/ui/widgets/resizable.js +72 -19
- package/scripts/jquery-ui/ui/widgets/sortable.js +9 -16
- package/security/bundles/index.umd.js +5 -5
- package/security/esm2022/security.service.mjs +6 -6
- package/security/fesm2022/index.mjs +5 -5
- package/security/fesm2022/index.mjs.map +1 -1
- package/security/package.json +2 -5
- package/swipey/fesm2022/index.mjs.map +1 -1
- package/swipey/package.json +2 -5
- package/transpiler/build.d.ts +1 -1
- package/transpiler/bundles/index.umd.js +94 -56
- package/transpiler/esm2022/build.mjs +5 -2
- package/transpiler/esm2022/imports.mjs +92 -57
- package/transpiler/fesm2022/index.mjs +94 -56
- package/transpiler/fesm2022/index.mjs.map +1 -1
- package/transpiler/package.json +3 -6
- package/variables/bundles/index.umd.js +20 -10
- package/variables/constants/variables.constants.d.ts +9 -0
- package/variables/esm2022/constants/variables.constants.mjs +10 -1
- package/variables/esm2022/service/metadata-service/metadata.service.mjs +6 -6
- package/variables/esm2022/service/variables.service.mjs +6 -6
- package/variables/fesm2022/index.mjs +20 -11
- package/variables/fesm2022/index.mjs.map +1 -1
- package/variables/package.json +2 -5
- package/variables/service/variables.service.d.ts +1 -1
- package/build-task/esm2022/basic/default/anchor/anchor.build.mjs +0 -15
- package/build-task/esm2022/basic/default/audio/audio.build.mjs +0 -10
- package/build-task/esm2022/basic/default/html/html.build.mjs +0 -15
- package/build-task/esm2022/basic/default/icon/icon.build.mjs +0 -10
- package/build-task/esm2022/basic/default/iframe/iframe.build.mjs +0 -10
- package/build-task/esm2022/basic/default/label/label.build.mjs +0 -25
- package/build-task/esm2022/basic/default/picture/picture.build.mjs +0 -14
- package/build-task/esm2022/basic/default/spinner/spinner.build.mjs +0 -15
- package/build-task/esm2022/basic/default/video/video.build.mjs +0 -10
- package/components/base/components.module.d.ts +0 -25
- package/components/base/esm2022/components.module.mjs +0 -152
- package/components/basic/default/bundles/index.umd.js +0 -1036
- package/components/basic/default/esm2022/anchor/anchor.component.mjs +0 -198
- package/components/basic/default/esm2022/anchor/anchor.props.mjs +0 -27
- package/components/basic/default/esm2022/audio/audio.component.mjs +0 -59
- package/components/basic/default/esm2022/audio/audio.props.mjs +0 -19
- package/components/basic/default/esm2022/html/html.directive.mjs +0 -76
- package/components/basic/default/esm2022/html/html.props.mjs +0 -12
- package/components/basic/default/esm2022/icon/icon.component.mjs +0 -70
- package/components/basic/default/esm2022/icon/icon.props.mjs +0 -19
- package/components/basic/default/esm2022/iframe/iframe.component.mjs +0 -85
- package/components/basic/default/esm2022/iframe/iframe.props.mjs +0 -15
- package/components/basic/default/esm2022/label/label.directive.mjs +0 -71
- package/components/basic/default/esm2022/label/label.props.mjs +0 -17
- package/components/basic/default/esm2022/picture/picture.directive.mjs +0 -95
- package/components/basic/default/esm2022/picture/picture.props.mjs +0 -23
- package/components/basic/default/esm2022/public_api.mjs +0 -10
- package/components/basic/default/esm2022/spinner/spinner.component.mjs +0 -130
- package/components/basic/default/esm2022/spinner/spinner.props.mjs +0 -20
- package/components/basic/default/esm2022/video/video.component.mjs +0 -113
- package/components/basic/default/esm2022/video/video.props.mjs +0 -24
- package/components/basic/default/fesm2022/index.mjs +0 -1012
- package/components/basic/default/fesm2022/index.mjs.map +0 -1
- package/components/basic/default/public_api.d.ts +0 -9
- package/components/basic/progress/bundles/index.umd.js +0 -361
- package/components/basic/progress/esm2022/progress-bar/progress-bar.component.mjs +0 -154
- package/components/basic/progress/esm2022/progress-circle/progress-circle.component.mjs +0 -132
- package/components/basic/progress/esm2022/public_api.mjs +0 -3
- package/components/basic/progress/esm2022/utils.mjs +0 -25
- package/components/basic/progress/fesm2022/index.mjs +0 -344
- package/components/basic/progress/fesm2022/index.mjs.map +0 -1
- package/components/basic/progress/public_api.d.ts +0 -2
- package/components/input/default/bundles/index.umd.js +0 -3559
- package/components/input/default/esm2022/base-form-custom.component.mjs +0 -94
- package/components/input/default/esm2022/base-form.component.mjs +0 -110
- package/components/input/default/esm2022/button/button.component.mjs +0 -106
- package/components/input/default/esm2022/button/button.props.mjs +0 -26
- package/components/input/default/esm2022/button-group/button-group.directive.mjs +0 -51
- package/components/input/default/esm2022/button-group/button-group.props.mjs +0 -10
- package/components/input/default/esm2022/caption-position.directive.mjs +0 -172
- package/components/input/default/esm2022/checkbox/checkbox.component.mjs +0 -179
- package/components/input/default/esm2022/checkbox/checkbox.props.mjs +0 -27
- package/components/input/default/esm2022/checkboxset/checkboxset.component.mjs +0 -268
- package/components/input/default/esm2022/checkboxset/checkboxset.props.mjs +0 -35
- package/components/input/default/esm2022/composite/composite.directive.mjs +0 -84
- package/components/input/default/esm2022/composite/composite.props.mjs +0 -10
- package/components/input/default/esm2022/dataset-aware-form.component.mjs +0 -307
- package/components/input/default/esm2022/number/number.component.mjs +0 -68
- package/components/input/default/esm2022/number/number.props.mjs +0 -35
- package/components/input/default/esm2022/public_api.mjs +0 -21
- package/components/input/default/esm2022/radioset/radioset.component.mjs +0 -251
- package/components/input/default/esm2022/radioset/radioset.props.mjs +0 -35
- package/components/input/default/esm2022/select/select.component.mjs +0 -230
- package/components/input/default/esm2022/select/select.props.mjs +0 -36
- package/components/input/default/esm2022/switch/switch.component.mjs +0 -227
- package/components/input/default/esm2022/switch/switch.props.mjs +0 -28
- package/components/input/default/esm2022/text/base/base-input.mjs +0 -93
- package/components/input/default/esm2022/text/calendar/input-calendar.component.mjs +0 -69
- package/components/input/default/esm2022/text/calendar/input-calendar.props.mjs +0 -30
- package/components/input/default/esm2022/text/color/input-color.component.mjs +0 -69
- package/components/input/default/esm2022/text/color/input-color.props.mjs +0 -27
- package/components/input/default/esm2022/text/email/input-email.component.mjs +0 -68
- package/components/input/default/esm2022/text/email/input-email.props.mjs +0 -29
- package/components/input/default/esm2022/text/locale/number-locale.mjs +0 -539
- package/components/input/default/esm2022/text/number/input-number.component.mjs +0 -79
- package/components/input/default/esm2022/text/number/input-number.props.mjs +0 -32
- package/components/input/default/esm2022/text/text/input-text.component.mjs +0 -145
- package/components/input/default/esm2022/text/text/input-text.props.mjs +0 -46
- package/components/input/default/esm2022/textarea/textarea.component.mjs +0 -85
- package/components/input/default/esm2022/textarea/textarea.props.mjs +0 -30
- package/components/input/default/fesm2022/index.mjs +0 -3529
- package/components/input/default/fesm2022/index.mjs.map +0 -1
- package/components/input/default/public_api.d.ts +0 -20
- package/components/input/epoch/bundles/index.umd.js +0 -3292
- package/components/input/epoch/esm2022/date/date.component.mjs +0 -376
- package/components/input/epoch/esm2022/date-time/date-time-picker.component.mjs +0 -473
- package/components/input/epoch/esm2022/date-time/date-time.component.mjs +0 -563
- package/components/input/epoch/esm2022/picker/picker.component.mjs +0 -184
- package/components/input/epoch/esm2022/public_api.mjs +0 -6
- package/components/input/epoch/esm2022/time/time.component.mjs +0 -432
- package/components/input/epoch/fesm2022/index.mjs +0 -3280
- package/components/input/epoch/fesm2022/index.mjs.map +0 -1
- package/components/input/epoch/public_api.d.ts +0 -5
- /package/build-task/basic/{default/anchor → anchor}/anchor.build.d.ts +0 -0
- /package/build-task/basic/{default/audio → audio}/audio.build.d.ts +0 -0
- /package/build-task/basic/{default/html → html}/html.build.d.ts +0 -0
- /package/build-task/basic/{default/icon → icon}/icon.build.d.ts +0 -0
- /package/build-task/basic/{default/iframe → iframe}/iframe.build.d.ts +0 -0
- /package/build-task/basic/{default/label → label}/label.build.d.ts +0 -0
- /package/build-task/basic/{default/picture → picture}/picture.build.d.ts +0 -0
- /package/build-task/basic/{default/spinner → spinner}/spinner.build.d.ts +0 -0
- /package/build-task/basic/{default/video → video}/video.build.d.ts +0 -0
- /package/components/basic/{default → anchor}/.npmignore +0 -0
- /package/components/basic/{default/anchor → anchor}/anchor.component.d.ts +0 -0
- /package/components/basic/{default/anchor → anchor}/anchor.props.d.ts +0 -0
- /package/components/basic/{progress → audio}/.npmignore +0 -0
- /package/components/basic/{default/audio → audio}/audio.component.d.ts +0 -0
- /package/components/basic/{default/audio → audio}/audio.props.d.ts +0 -0
- /package/components/{input/default → basic/html}/.npmignore +0 -0
- /package/components/basic/{default/html → html}/html.directive.d.ts +0 -0
- /package/components/basic/{default/html → html}/html.props.d.ts +0 -0
- /package/components/{input/epoch → basic/icon}/.npmignore +0 -0
- /package/components/basic/{default/icon → icon}/icon.component.d.ts +0 -0
- /package/components/basic/{default/icon → icon}/icon.props.d.ts +0 -0
- /package/components/basic/{default/iframe → iframe}/iframe.component.d.ts +0 -0
- /package/components/basic/{default/iframe → iframe}/iframe.props.d.ts +0 -0
- /package/components/basic/{default/label → label}/label.props.d.ts +0 -0
- /package/components/basic/{default/picture → picture}/picture.directive.d.ts +0 -0
- /package/components/basic/{default/picture → picture}/picture.props.d.ts +0 -0
- /package/components/basic/progress/{utils.d.ts → progress-utils/progress-utils.d.ts} +0 -0
- /package/components/basic/{default/spinner → spinner}/spinner.component.d.ts +0 -0
- /package/components/basic/{default/spinner → spinner}/spinner.props.d.ts +0 -0
- /package/components/basic/{default/video → video}/video.component.d.ts +0 -0
- /package/components/basic/{default/video → video}/video.props.d.ts +0 -0
- /package/components/input/{default → base-form}/base-form.component.d.ts +0 -0
- /package/components/input/{default/button → button}/button.component.d.ts +0 -0
- /package/components/input/{default/button → button}/button.props.d.ts +0 -0
- /package/components/input/{default/button-group → button-group}/button-group.directive.d.ts +0 -0
- /package/components/input/{default/button-group → button-group}/button-group.props.d.ts +0 -0
- /package/components/input/{default → caption-position}/caption-position.directive.d.ts +0 -0
- /package/components/input/{default/checkbox → checkbox}/checkbox.props.d.ts +0 -0
- /package/components/input/{default/checkboxset → checkboxset}/checkboxset.props.d.ts +0 -0
- /package/components/input/{default/composite → composite}/composite.directive.d.ts +0 -0
- /package/components/input/{default/composite → composite}/composite.props.d.ts +0 -0
- /package/components/input/epoch/{date-time → date-time-picker}/date-time-picker.component.d.ts +0 -0
- /package/components/input/{default/number → number}/number.props.d.ts +0 -0
- /package/components/input/{default/radioset → radioset}/radioset.props.d.ts +0 -0
- /package/components/input/{default/select → select}/select.props.d.ts +0 -0
- /package/components/input/{default/switch → switch}/switch.props.d.ts +0 -0
- /package/components/input/{default/text/calendar → text/input-calendar}/input-calendar.props.d.ts +0 -0
- /package/components/input/{default/text/color → text/input-color}/input-color.props.d.ts +0 -0
- /package/components/input/{default/text/email → text/input-email}/input-email.props.d.ts +0 -0
- /package/components/input/{default/text/number → text/input-number}/input-number.props.d.ts +0 -0
- /package/components/input/{default/text/text → text/input-text}/input-text.props.d.ts +0 -0
- /package/components/input/{default/textarea → textarea}/textarea.props.d.ts +0 -0
|
@@ -1,539 +0,0 @@
|
|
|
1
|
-
import { __decorate, __metadata, __param } from "tslib";
|
|
2
|
-
import { Inject, Injector, Optional } from '@angular/core';
|
|
3
|
-
import { getLocaleNumberSymbol, NumberSymbol } from '@angular/common';
|
|
4
|
-
import { AbstractI18nService, isDefined } from '@wm/core';
|
|
5
|
-
import { TrailingZeroDecimalPipe, INPUTMODE } from '@wm/components/base';
|
|
6
|
-
import { BaseInput } from '../base/base-input';
|
|
7
|
-
import { includes, intersection, isNull, isString, isUndefined, round, toArray } from "lodash-es";
|
|
8
|
-
let NumberLocale = class NumberLocale extends BaseInput {
|
|
9
|
-
constructor(inj, config, i18nService, trailingZeroDecimalPipe, explicitContext) {
|
|
10
|
-
super(inj, config, explicitContext);
|
|
11
|
-
this.i18nService = i18nService;
|
|
12
|
-
this.trailingZeroDecimalPipe = trailingZeroDecimalPipe;
|
|
13
|
-
this.isDefaultQuery = true;
|
|
14
|
-
this.decimalValue = '';
|
|
15
|
-
this.selectedLocale = i18nService.getSelectedLocale();
|
|
16
|
-
this.DECIMAL = getLocaleNumberSymbol(this.localefilter || this.selectedLocale, NumberSymbol.Decimal);
|
|
17
|
-
this.GROUP = getLocaleNumberSymbol(this.localefilter || this.selectedLocale, NumberSymbol.Group);
|
|
18
|
-
this.numberfilter = '1.0-16';
|
|
19
|
-
this.resetValidations();
|
|
20
|
-
}
|
|
21
|
-
// Setter for the datavalue.
|
|
22
|
-
// @ts-ignore
|
|
23
|
-
set datavalue(value) {
|
|
24
|
-
this.lastValIsDecimal = false;
|
|
25
|
-
// set text value to null if data value is empty.
|
|
26
|
-
// @ts-ignore
|
|
27
|
-
if (includes([null, undefined, ''], value)) {
|
|
28
|
-
const input = this.inputEl.nativeElement;
|
|
29
|
-
const prevDataValue = this.prevDatavalue;
|
|
30
|
-
this.displayValue = input.value = this.proxyModel = null;
|
|
31
|
-
this.resetValidations();
|
|
32
|
-
// Fix for [WMS-27648]: When a decimal value is entered (e.g., "3."), datavalue and prevDatavalue become null as it is an invalid number.
|
|
33
|
-
// handleChange() should be called when the invalid datavalue (e.g., "3.") is removed, and the value becomes an empty string ("").
|
|
34
|
-
if ((prevDataValue || prevDataValue == 0 || prevDataValue == null) && !this.isDefaultQuery) {
|
|
35
|
-
this.handleChange(value);
|
|
36
|
-
this._onChange();
|
|
37
|
-
}
|
|
38
|
-
return;
|
|
39
|
-
}
|
|
40
|
-
// if the widget has default value and if we change the locale, the value should be in selected locale format.
|
|
41
|
-
if (this.isDefaultQuery) {
|
|
42
|
-
const isLocalizedNumber = isString(value) && includes(value, this.DECIMAL);
|
|
43
|
-
const parts = isLocalizedNumber ? value.split(this.DECIMAL) : isString(value) && value.split('.');
|
|
44
|
-
let decimalPlacesAttrVal = this.getAttr('decimalplaces');
|
|
45
|
-
const decimalplaces = decimalPlacesAttrVal !== '' && decimalPlacesAttrVal !== undefined ? Number(decimalPlacesAttrVal) : NaN;
|
|
46
|
-
if (this.inputmode === INPUTMODE.NATURAL && !isNaN(decimalplaces)) {
|
|
47
|
-
if (decimalplaces === 0) {
|
|
48
|
-
this.decimalValue = '';
|
|
49
|
-
value = isLocalizedNumber ? parts[0] : this.transformNumber(parts[0]);
|
|
50
|
-
}
|
|
51
|
-
if (decimalplaces > 0) {
|
|
52
|
-
this.decimalValue = parts[1] && parts[1].substring(0, decimalplaces) || '';
|
|
53
|
-
if (isLocalizedNumber) {
|
|
54
|
-
value = this.decimalValue.length ? `${parts[0]}${this.DECIMAL}${this.decimalValue}` : parts[0];
|
|
55
|
-
}
|
|
56
|
-
else {
|
|
57
|
-
value = Number.parseFloat(String(value)).toFixed(decimalplaces);
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
else {
|
|
62
|
-
this.decimalValue = parts[1] || '';
|
|
63
|
-
value = isLocalizedNumber ? value : this.transformNumber(value);
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
const numberReg = /\d/;
|
|
67
|
-
const strVal = value.toString();
|
|
68
|
-
let model;
|
|
69
|
-
// When the input value only contains seperator, do not convert the sepertaor into 0
|
|
70
|
-
if (numberReg.test(strVal)) {
|
|
71
|
-
model = this.parseNumber(strVal);
|
|
72
|
-
}
|
|
73
|
-
else {
|
|
74
|
-
model = NaN;
|
|
75
|
-
}
|
|
76
|
-
// On keypress, if the user types a decimal and is still active on the input do not throw error.
|
|
77
|
-
if (isNaN(model) && strVal[strVal.length - 1] === this.DECIMAL && this.ngModelOptions.updateOn === 'change' && this.$element.find('input:focus').length) {
|
|
78
|
-
this.lastValIsDecimal = true;
|
|
79
|
-
}
|
|
80
|
-
// get a valid number form the text.
|
|
81
|
-
// if the number is valid or if number is not in range update the model value.
|
|
82
|
-
if (!this.lastValIsDecimal && this.isValid(model)) {
|
|
83
|
-
this.proxyModel = model;
|
|
84
|
-
// update the display value in the text box.
|
|
85
|
-
this.updateDisplayText();
|
|
86
|
-
// Do not trigger onchange event for default value
|
|
87
|
-
if (!this.isDefaultQuery) {
|
|
88
|
-
this.handleChange(model);
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
else {
|
|
92
|
-
this.displayValue = value.toString();
|
|
93
|
-
this.proxyModel = null;
|
|
94
|
-
this.handleChange(null);
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
// returns the actual model value of the widget.
|
|
98
|
-
get datavalue() {
|
|
99
|
-
return this.proxyModel;
|
|
100
|
-
}
|
|
101
|
-
// resets all the flags related to the widget's validation.
|
|
102
|
-
resetValidations() {
|
|
103
|
-
this.isInvalidNumber = false;
|
|
104
|
-
this.numberNotInRange = false;
|
|
105
|
-
}
|
|
106
|
-
/**
|
|
107
|
-
* Adds validations for the number before updating the widget model. like validating min and max value for the widget.
|
|
108
|
-
* @param {number} val number to be validated
|
|
109
|
-
* @returns {number}
|
|
110
|
-
*/
|
|
111
|
-
isValid(val) {
|
|
112
|
-
// id number is infinite then consider it as invalid value
|
|
113
|
-
let invalidDecimalPlaces = false;
|
|
114
|
-
if (this.inputmode === INPUTMODE.NATURAL && !isNaN(this.decimalplaces) && this.decimalplaces >= 0) {
|
|
115
|
-
invalidDecimalPlaces = this.countDecimals(val) > this.decimalplaces;
|
|
116
|
-
}
|
|
117
|
-
else if (!Number.isInteger(this.step) && this.countDecimals(val) > this.countDecimals(this.step)) {
|
|
118
|
-
invalidDecimalPlaces = true;
|
|
119
|
-
}
|
|
120
|
-
if (isNaN(val) || !isFinite(val) || invalidDecimalPlaces) {
|
|
121
|
-
this.isInvalidNumber = true;
|
|
122
|
-
return false;
|
|
123
|
-
}
|
|
124
|
-
if (val !== this.getValueInRange(val)) {
|
|
125
|
-
this.numberNotInRange = true;
|
|
126
|
-
return true;
|
|
127
|
-
}
|
|
128
|
-
this.resetValidations();
|
|
129
|
-
return true;
|
|
130
|
-
}
|
|
131
|
-
/**
|
|
132
|
-
* returns a valid number by validating the minimum and maximum values.
|
|
133
|
-
* @param {number} value
|
|
134
|
-
* @returns {number}
|
|
135
|
-
*/
|
|
136
|
-
getValueInRange(value) {
|
|
137
|
-
if (!isNaN(this.minvalue) && value < this.minvalue) {
|
|
138
|
-
this.validateType = 'minvalue';
|
|
139
|
-
return this.minvalue;
|
|
140
|
-
}
|
|
141
|
-
if (!isNaN(this.maxvalue) && value > this.maxvalue) {
|
|
142
|
-
this.validateType = 'maxvalue';
|
|
143
|
-
return this.maxvalue;
|
|
144
|
-
}
|
|
145
|
-
return value;
|
|
146
|
-
}
|
|
147
|
-
/**
|
|
148
|
-
* convert number to localized number using angular decimal pipe. eg 10,00,000 or 1,000,000
|
|
149
|
-
* @param number
|
|
150
|
-
* @returns {string}
|
|
151
|
-
*/
|
|
152
|
-
transformNumber(number, numberfilter) {
|
|
153
|
-
const filterVal = numberfilter ? numberfilter : this.numberfilter;
|
|
154
|
-
return this.trailingZeroDecimalPipe.transform(number, this.selectedLocale, filterVal, this.localefilter, this.trailingzero, this.decimalValue, !!numberfilter, this.i18nService?.getwidgetLocale());
|
|
155
|
-
}
|
|
156
|
-
/**
|
|
157
|
-
* resets the cursor position in the text box.
|
|
158
|
-
* @param {number} value cursor position index form left to right.
|
|
159
|
-
*/
|
|
160
|
-
resetCursorPosition(value) {
|
|
161
|
-
const input = this.inputEl.nativeElement;
|
|
162
|
-
// position of the cursor should be given form right to left.
|
|
163
|
-
let position = input.value.length - value;
|
|
164
|
-
position = position < 0 ? 0 : position;
|
|
165
|
-
// set the cursor position in the text box.
|
|
166
|
-
input.setSelectionRange(position, position);
|
|
167
|
-
}
|
|
168
|
-
/**
|
|
169
|
-
* Method parses the Localized number(string) to a valid number.
|
|
170
|
-
* if the string dose not result to a valid number then returns NaN.
|
|
171
|
-
* @param {string} val Localized number.
|
|
172
|
-
* @returns {number}
|
|
173
|
-
*/
|
|
174
|
-
parseNumber(val) {
|
|
175
|
-
// WMS-22179: split number based on the decimal separator in the val
|
|
176
|
-
// splits string into two parts. decimal and number.
|
|
177
|
-
const parts = val.split(this.inputmode === INPUTMODE.FINANCIAL ? (val.indexOf(this.DECIMAL) > -1 ? this.DECIMAL : '.') : this.DECIMAL);
|
|
178
|
-
if (!parts.length) {
|
|
179
|
-
return null;
|
|
180
|
-
}
|
|
181
|
-
if (parts.length > 2) {
|
|
182
|
-
return NaN;
|
|
183
|
-
}
|
|
184
|
-
// If number have decimal point and not have a decimal value then return.
|
|
185
|
-
if (parts[1] === '') {
|
|
186
|
-
return NaN;
|
|
187
|
-
}
|
|
188
|
-
// replaces all group separators form the number.
|
|
189
|
-
const number = Number(parts[0].split(this.GROUP).join(''));
|
|
190
|
-
const decimal = Number(`0.${parts[1] || 0}`);
|
|
191
|
-
if (Number.isNaN(number) || Number.isNaN(decimal)) {
|
|
192
|
-
return NaN;
|
|
193
|
-
}
|
|
194
|
-
const sum = parts.length > 1 ? parseFloat((number + decimal).toFixed(parts[1].length)) : number + decimal;
|
|
195
|
-
// if the number is negative then calculate the number as number - decimal
|
|
196
|
-
// Ex: number = -123 and decimal = 0.45 then number - decimal = -123-045 = -123.45
|
|
197
|
-
// If entered number is -0.1 to -0.9 then the number is -0 and decimal is 0.1 to 0.9. Now calaculate the number as number-decimal
|
|
198
|
-
// Ex: number = -0 and decimal = 0.1 then number-decimal = -0-0.1 = -0.1
|
|
199
|
-
if (number === 0) {
|
|
200
|
-
return Object.is(0, number) ? sum : number - decimal;
|
|
201
|
-
}
|
|
202
|
-
return number > 0 ? sum : number - decimal;
|
|
203
|
-
}
|
|
204
|
-
// updates the widgets text value.
|
|
205
|
-
updateDisplayText() {
|
|
206
|
-
const input = this.inputEl.nativeElement;
|
|
207
|
-
const position = input.selectionStart;
|
|
208
|
-
const preValue = input.value;
|
|
209
|
-
if (!this.isDefaultQuery) {
|
|
210
|
-
const parts = preValue.split(this.DECIMAL);
|
|
211
|
-
this.decimalValue = parts[1] || '';
|
|
212
|
-
}
|
|
213
|
-
const stepVal = this.stepLength();
|
|
214
|
-
if (this.inputmode === INPUTMODE.FINANCIAL && stepVal) {
|
|
215
|
-
this.displayValue = input.value = this.transformNumber(this.proxyModel, `1.${stepVal}-${stepVal}`);
|
|
216
|
-
this.decimalValue = this.decimalValue.replace(/\D/g, '');
|
|
217
|
-
}
|
|
218
|
-
else {
|
|
219
|
-
this.displayValue = input.value = this.transformNumber(this.proxyModel);
|
|
220
|
-
}
|
|
221
|
-
// in safari browser, setSelectionRange will focus the input by default, which may invoke the focus event on widget.
|
|
222
|
-
// Hence preventing the setSelectionRange when default value is set i.e. widget is not focused.
|
|
223
|
-
if (this.updateon === 'default' && !this.isDefaultQuery) {
|
|
224
|
-
this.resetCursorPosition(preValue.length - position);
|
|
225
|
-
}
|
|
226
|
-
}
|
|
227
|
-
// This function returns the step length set in the studio
|
|
228
|
-
stepLength() {
|
|
229
|
-
if (this.inputmode === 'INPUTMODE.NATURAL' && !isNaN(this.decimalplaces) && this.decimalplaces >= 0) {
|
|
230
|
-
return this.decimalplaces;
|
|
231
|
-
}
|
|
232
|
-
const stepLen = this.step.toString().split('.');
|
|
233
|
-
if (stepLen.length === 1) {
|
|
234
|
-
return;
|
|
235
|
-
}
|
|
236
|
-
else {
|
|
237
|
-
return stepLen[1].length;
|
|
238
|
-
}
|
|
239
|
-
}
|
|
240
|
-
// This function checks if the currency widget has input mode as natural and trailing zero is defined or not
|
|
241
|
-
isNaturalCurrency() {
|
|
242
|
-
return this.inputmode === INPUTMODE.NATURAL && this.widgetType === 'wm-currency' && !!this.trailingzero;
|
|
243
|
-
}
|
|
244
|
-
/**
|
|
245
|
-
* @param value contains the value entered in the input box
|
|
246
|
-
* This function modifies the user input value, into financial mode.
|
|
247
|
-
* Number starts from highest precesion decimal, on typing number shifts to the left
|
|
248
|
-
*/
|
|
249
|
-
onInputChange(value) {
|
|
250
|
-
const stepVal = this.stepLength();
|
|
251
|
-
const prevDataValue = this.getPrevDataValue();
|
|
252
|
-
// WMS-22355, Trigger change cb if value exists or value is empty but datavalue exists (when value is selected and deleted).
|
|
253
|
-
// Fix for [WMS-27041]: Ensure the change callback for the number widget triggers only on focus out (when updateon is set to blur),
|
|
254
|
-
// not during initial input when the previous value is undefined and the current value is null.
|
|
255
|
-
if (isDefined(value) && (value !== '' || this.datavalue || this.datavalue == 0)) {
|
|
256
|
-
if (this.widgetType === "wm-number") {
|
|
257
|
-
if (this.inputmode == INPUTMODE.FINANCIAL) {
|
|
258
|
-
// Case 1: when there is no default value, prevDataValue is undefined && this.datavalue is null
|
|
259
|
-
// Case 2: when there default value, prevDataValue is equal to this.datavalue
|
|
260
|
-
if (!((prevDataValue == undefined && this.datavalue == null) || (prevDataValue == this.datavalue))) {
|
|
261
|
-
this.handleChange(value);
|
|
262
|
-
}
|
|
263
|
-
}
|
|
264
|
-
else {
|
|
265
|
-
if (!(prevDataValue == undefined && this.datavalue == null)) {
|
|
266
|
-
this.handleChange(value);
|
|
267
|
-
}
|
|
268
|
-
}
|
|
269
|
-
}
|
|
270
|
-
else { // currency widget
|
|
271
|
-
this.handleChange(value);
|
|
272
|
-
}
|
|
273
|
-
}
|
|
274
|
-
else {
|
|
275
|
-
return;
|
|
276
|
-
}
|
|
277
|
-
if (!stepVal || this.inputmode !== INPUTMODE.FINANCIAL) {
|
|
278
|
-
return;
|
|
279
|
-
}
|
|
280
|
-
let financialVal;
|
|
281
|
-
/**
|
|
282
|
-
* If the value is entered by the user, format the input
|
|
283
|
-
* If the value is provided as default value, skip formatting
|
|
284
|
-
*/
|
|
285
|
-
if (this.isDefaultQuery) {
|
|
286
|
-
financialVal = parseFloat(value);
|
|
287
|
-
}
|
|
288
|
-
else {
|
|
289
|
-
const valInWholeNum = parseInt(value.toString().replace(/\D/g, ''));
|
|
290
|
-
financialVal = valInWholeNum * this.step;
|
|
291
|
-
}
|
|
292
|
-
if (!isNaN(financialVal)) {
|
|
293
|
-
// When update on key is set keypress, update the datavalue else update only the display value
|
|
294
|
-
if (this.ngModelOptions.updateOn === 'change') {
|
|
295
|
-
this.datavalue = parseFloat(financialVal.toFixed(stepVal));
|
|
296
|
-
this.handleChange(this.datavalue);
|
|
297
|
-
}
|
|
298
|
-
else {
|
|
299
|
-
this.displayValue = financialVal.toFixed(stepVal);
|
|
300
|
-
}
|
|
301
|
-
}
|
|
302
|
-
else if (this.ngModelOptions.updateOn !== 'blur') {
|
|
303
|
-
this.datavalue = undefined;
|
|
304
|
-
this.handleChange(null);
|
|
305
|
-
}
|
|
306
|
-
}
|
|
307
|
-
// Input mode is financial and trailing zero is set to false, On focus set display val to fixed point notation and On blur strip trailing zeros
|
|
308
|
-
// In currency, inputmode is natural and trailing zero and step are defined, on blur display val to fixed point notation and on focus strip the zeros
|
|
309
|
-
checkForTrailingZeros($event) {
|
|
310
|
-
const stepVal = this.stepLength();
|
|
311
|
-
const financialMode = !this.trailingzero && this.inputmode === INPUTMODE.FINANCIAL;
|
|
312
|
-
// If the user's last input is a decimal and not active on input field, throw error
|
|
313
|
-
if (this.lastValIsDecimal) {
|
|
314
|
-
this.onModelChange(this.displayValue);
|
|
315
|
-
}
|
|
316
|
-
if (!financialMode && !this.isNaturalCurrency()) {
|
|
317
|
-
return;
|
|
318
|
-
}
|
|
319
|
-
if (stepVal && this.datavalue) {
|
|
320
|
-
let numberfilter;
|
|
321
|
-
if ((financialMode && $event.type === 'focus') || (this.isNaturalCurrency() && $event.type === 'blur')) {
|
|
322
|
-
numberfilter = `1.${stepVal}-${stepVal}`;
|
|
323
|
-
}
|
|
324
|
-
this.displayValue = this.transformNumber(this.datavalue, numberfilter);
|
|
325
|
-
}
|
|
326
|
-
}
|
|
327
|
-
/**
|
|
328
|
-
* returns the number of decimal places a number have.
|
|
329
|
-
* @param value: number
|
|
330
|
-
* @returns {number}
|
|
331
|
-
*/
|
|
332
|
-
countDecimals(value) {
|
|
333
|
-
const num = Number(value);
|
|
334
|
-
if (num === 0) {
|
|
335
|
-
return 0;
|
|
336
|
-
}
|
|
337
|
-
// Convert to number and handle scientific notation
|
|
338
|
-
if (Number.isNaN(num))
|
|
339
|
-
return 0;
|
|
340
|
-
// Get the exponential form to handle scientific notation properly
|
|
341
|
-
const exponentialStr = num.toExponential();
|
|
342
|
-
const match = exponentialStr.match(/^-?\d*\.?(\d+)?e([+-]\d+)$/);
|
|
343
|
-
if (match) {
|
|
344
|
-
const decimals = match[1] ? match[1].length : 0;
|
|
345
|
-
const exponent = parseInt(match[2]);
|
|
346
|
-
return Math.max(0, decimals - exponent);
|
|
347
|
-
}
|
|
348
|
-
// Fallback to regular decimal counting
|
|
349
|
-
const decimalStr = num.toString();
|
|
350
|
-
const isLocalizedNumber = includes(decimalStr, this.DECIMAL);
|
|
351
|
-
const parts = isLocalizedNumber ? decimalStr.split(this.DECIMAL) : decimalStr.split('.');
|
|
352
|
-
return parts[1] ? parts[1].length : 0;
|
|
353
|
-
}
|
|
354
|
-
/**
|
|
355
|
-
* handles the arrow press event. Increases or decreases the number. triggered fom the template
|
|
356
|
-
* @param $event keyboard event.
|
|
357
|
-
* @param key identifier to increase or decrease the number.
|
|
358
|
-
*/
|
|
359
|
-
onArrowPress($event, key) {
|
|
360
|
-
$event.preventDefault();
|
|
361
|
-
if (this.readonly || this.step === 0) {
|
|
362
|
-
return;
|
|
363
|
-
}
|
|
364
|
-
const targetVal = $event.target.value.replace(/,/g, '');
|
|
365
|
-
// proxyModel to be updated from $event.target.value if present to support arrow keys when input changes else pick up from this.proxymodel
|
|
366
|
-
let proxyModel;
|
|
367
|
-
if (targetVal && !isNaN(parseFloat(targetVal))) {
|
|
368
|
-
proxyModel = parseFloat(targetVal);
|
|
369
|
-
}
|
|
370
|
-
else {
|
|
371
|
-
proxyModel = this.proxyModel;
|
|
372
|
-
}
|
|
373
|
-
let value;
|
|
374
|
-
// if the number is not in range and when arrow buttons are pressed need to get appropriate number value.
|
|
375
|
-
if (this.numberNotInRange) {
|
|
376
|
-
const inputValue = this.parseNumber(this.inputEl.nativeElement.value);
|
|
377
|
-
// take the textbox value as current model if the value is valid.
|
|
378
|
-
if (!isNaN(inputValue)) {
|
|
379
|
-
value = this.getValueInRange(inputValue);
|
|
380
|
-
proxyModel = inputValue;
|
|
381
|
-
this.resetValidations();
|
|
382
|
-
}
|
|
383
|
-
}
|
|
384
|
-
else {
|
|
385
|
-
if (isUndefined(proxyModel) || isNull(proxyModel)) {
|
|
386
|
-
proxyModel = value = this.getValueInRange((this.minvalue || 0));
|
|
387
|
-
this.resetValidations();
|
|
388
|
-
}
|
|
389
|
-
else {
|
|
390
|
-
value = this.getValueInRange(proxyModel + (key === 'UP' ? this.step : -this.step));
|
|
391
|
-
}
|
|
392
|
-
}
|
|
393
|
-
if ((key === 'UP' && proxyModel <= value) || (key === 'DOWN' && proxyModel >= value)) {
|
|
394
|
-
const decimalRoundValue = Math.max(this.countDecimals(proxyModel), this.countDecimals(this.step));
|
|
395
|
-
// update the modelProxy.
|
|
396
|
-
this.proxyModel = round(value, decimalRoundValue);
|
|
397
|
-
this.updateDisplayText();
|
|
398
|
-
this.handleChange(this.proxyModel);
|
|
399
|
-
}
|
|
400
|
-
}
|
|
401
|
-
/**
|
|
402
|
-
* method is called from the from widget. to check whether the value entered is valid or not.
|
|
403
|
-
* @returns {object}
|
|
404
|
-
*/
|
|
405
|
-
validate(c) {
|
|
406
|
-
if (this.isInvalidNumber) {
|
|
407
|
-
this.validateType = '';
|
|
408
|
-
return {
|
|
409
|
-
invalidNumber: {
|
|
410
|
-
valid: false
|
|
411
|
-
},
|
|
412
|
-
};
|
|
413
|
-
}
|
|
414
|
-
if (this.numberNotInRange) {
|
|
415
|
-
return {
|
|
416
|
-
numberNotInRange: {
|
|
417
|
-
valid: false
|
|
418
|
-
},
|
|
419
|
-
};
|
|
420
|
-
}
|
|
421
|
-
this.validateType = '';
|
|
422
|
-
/* WMS-18269 | Extending the existing validation for 'required' */
|
|
423
|
-
if (this['show'] && this['required']) {
|
|
424
|
-
return (!!c.value || c.value === 0) ? null : { required: true };
|
|
425
|
-
}
|
|
426
|
-
return null;
|
|
427
|
-
}
|
|
428
|
-
validateInputEntry($event) {
|
|
429
|
-
this.isDefaultQuery = false;
|
|
430
|
-
// allow actions if control key is pressed or if backspace is pressed. (for Mozilla).
|
|
431
|
-
if ($event.ctrlKey || includes(['Backspace', 'ArrowRight', 'ArrowLeft', 'Tab', 'Enter', 'Delete'], $event.key)) {
|
|
432
|
-
return;
|
|
433
|
-
}
|
|
434
|
-
const validity = new RegExp(`^[\\d\\s-,.e+${this.GROUP}${this.DECIMAL}]$`, 'i');
|
|
435
|
-
const inputValue = $event.target?.value || "";
|
|
436
|
-
// when input mode is financial, do not restrict user on entering the value when step value limit is reached.
|
|
437
|
-
const skipStepValidation = this.inputmode === INPUTMODE.FINANCIAL;
|
|
438
|
-
// Validates if user eneters more than 16 digits
|
|
439
|
-
if (inputValue) {
|
|
440
|
-
const parsedVal = parseInt(inputValue.toString().replace(/\D/g, ''));
|
|
441
|
-
if (parsedVal.toString().length > 15) {
|
|
442
|
-
// WMS-22321: If the number is greater than MAX_SAFE_INTEGER (more than 15 numbers).
|
|
443
|
-
// user selects a range of digits and presses a key.
|
|
444
|
-
// Do not throw validation of exceeded number as selected range value will be deleted.
|
|
445
|
-
const selectedVal = window.getSelection();
|
|
446
|
-
if (selectedVal && selectedVal.toString() && selectedVal.focusNode === this.nativeElement) {
|
|
447
|
-
return true;
|
|
448
|
-
}
|
|
449
|
-
return false;
|
|
450
|
-
}
|
|
451
|
-
}
|
|
452
|
-
// validates entering of decimal values only when user provides decimal limit(i.e step contains decimal values).
|
|
453
|
-
// Restrict user from entering only if the decimal limit is reached and the new digit is entered in decimal place
|
|
454
|
-
// if (!skipStepValidation && inputValue && this.countDecimals(this.step) && (this.countDecimals(inputValue) >= this.countDecimals(this.step)) && $event.target.selectionStart >= inputValue.length - 1) {
|
|
455
|
-
// return false;
|
|
456
|
-
// }
|
|
457
|
-
// validates if user entered an invalid character.
|
|
458
|
-
if (!validity.test($event.key)) {
|
|
459
|
-
return false;
|
|
460
|
-
}
|
|
461
|
-
if (this.inputmode === INPUTMODE.NATURAL && !isNaN(this.decimalplaces)) {
|
|
462
|
-
if (this.decimalplaces === 0 && this.DECIMAL === $event.key) {
|
|
463
|
-
return false;
|
|
464
|
-
}
|
|
465
|
-
const parts = includes(inputValue, this.DECIMAL) ? inputValue.split(this.DECIMAL) : inputValue.split('.');
|
|
466
|
-
const isCursorPositionAtDecimalPlace = $event.target.selectionStart > parts[0].length;
|
|
467
|
-
if (this.decimalplaces > 0 && this.countDecimals(inputValue) >= this.decimalplaces && isCursorPositionAtDecimalPlace) {
|
|
468
|
-
return false;
|
|
469
|
-
}
|
|
470
|
-
}
|
|
471
|
-
// comma cannot be entered consecutively
|
|
472
|
-
if (includes(inputValue, ',') && inputValue[inputValue.length - 1] === ',' && $event.key === ',') {
|
|
473
|
-
return false;
|
|
474
|
-
}
|
|
475
|
-
// a decimal value can be entered only once in the input.
|
|
476
|
-
if (includes(inputValue, this.DECIMAL) && $event.key === this.DECIMAL) {
|
|
477
|
-
return false;
|
|
478
|
-
}
|
|
479
|
-
// 'e' can be entered only once in the input.
|
|
480
|
-
if (intersection(toArray(inputValue), ['e', 'E']).length && includes('eE', $event.key)) {
|
|
481
|
-
return false;
|
|
482
|
-
}
|
|
483
|
-
if ((includes(inputValue, '+') || includes(inputValue, '-')) && ($event.key === '+' || $event.key === '-')) {
|
|
484
|
-
return false;
|
|
485
|
-
}
|
|
486
|
-
// Do not allow user to enter only space without any input value
|
|
487
|
-
if (!inputValue && $event.code === 'Space') {
|
|
488
|
-
return false;
|
|
489
|
-
}
|
|
490
|
-
}
|
|
491
|
-
onBackspace($event) {
|
|
492
|
-
this.isDefaultQuery = false;
|
|
493
|
-
}
|
|
494
|
-
onDelete($event) {
|
|
495
|
-
this.isDefaultQuery = false;
|
|
496
|
-
}
|
|
497
|
-
onEnter($event) {
|
|
498
|
-
this.datavalue = $event.target.value;
|
|
499
|
-
}
|
|
500
|
-
onModelChange($event) {
|
|
501
|
-
if (this.inputmode === INPUTMODE.NATURAL || (this.inputmode === INPUTMODE.FINANCIAL && this.ngModelOptions.updateOn === 'blur')) {
|
|
502
|
-
this.datavalue = $event;
|
|
503
|
-
}
|
|
504
|
-
}
|
|
505
|
-
onPropertyChange(key, nv, ov) {
|
|
506
|
-
if (key === 'minvalue' || key === 'maxvalue') {
|
|
507
|
-
this.isValid(nv);
|
|
508
|
-
}
|
|
509
|
-
else if (key === 'datavalue' && !ov) {
|
|
510
|
-
if (this.isNaturalCurrency()) {
|
|
511
|
-
this.checkForTrailingZeros({ type: 'blur' });
|
|
512
|
-
}
|
|
513
|
-
else {
|
|
514
|
-
this.onInputChange(nv);
|
|
515
|
-
}
|
|
516
|
-
}
|
|
517
|
-
else {
|
|
518
|
-
super.onPropertyChange(key, nv, ov);
|
|
519
|
-
}
|
|
520
|
-
}
|
|
521
|
-
onPaste($event) {
|
|
522
|
-
const pastedData = $event.clipboardData.getData('text');
|
|
523
|
-
for (const char of pastedData) {
|
|
524
|
-
const mockEvent = new KeyboardEvent('keypress', { key: char });
|
|
525
|
-
if (this.validateInputEntry(mockEvent) === false) {
|
|
526
|
-
$event.preventDefault();
|
|
527
|
-
return;
|
|
528
|
-
}
|
|
529
|
-
}
|
|
530
|
-
}
|
|
531
|
-
};
|
|
532
|
-
NumberLocale = __decorate([
|
|
533
|
-
__param(4, Inject('EXPLICIT_CONTEXT')),
|
|
534
|
-
__param(4, Optional()),
|
|
535
|
-
__metadata("design:paramtypes", [Injector, Object, AbstractI18nService,
|
|
536
|
-
TrailingZeroDecimalPipe, Object])
|
|
537
|
-
], NumberLocale);
|
|
538
|
-
export { NumberLocale };
|
|
539
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVtYmVyLWxvY2FsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvd2lkZ2V0cy9pbnB1dC9kZWZhdWx0L3NyYy90ZXh0L2xvY2FsZS9udW1iZXItbG9jYWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUMsTUFBTSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFekQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRXRFLE9BQU8sRUFBQyxtQkFBbUIsRUFBRSxTQUFTLEVBQUMsTUFBTSxVQUFVLENBQUM7QUFDeEQsT0FBTyxFQUFpQix1QkFBdUIsRUFBRSxTQUFTLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUV4RixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDL0MsT0FBTyxFQUFDLFFBQVEsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBQyxNQUFNLFdBQVcsQ0FBQztBQUVoRyxJQUFzQixZQUFZLEdBQWxDLE1BQXNCLFlBQWEsU0FBUSxTQUFTO0lBeUJoRCxZQUNJLEdBQWEsRUFDYixNQUFxQixFQUNiLFdBQWdDLEVBQ2hDLHVCQUFnRCxFQUNoQixlQUFvQjtRQUU1RCxLQUFLLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxlQUFlLENBQUMsQ0FBQztRQUo1QixnQkFBVyxHQUFYLFdBQVcsQ0FBcUI7UUFDaEMsNEJBQXVCLEdBQXZCLHVCQUF1QixDQUF5QjtRQXRCcEQsbUJBQWMsR0FBWSxJQUFJLENBQUM7UUFDL0IsaUJBQVksR0FBVyxFQUFFLENBQUM7UUF5QjlCLElBQUksQ0FBQyxjQUFjLEdBQUcsV0FBVyxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFDdEQsSUFBSSxDQUFD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LElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUNwQyxJQUFJLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxFQUFFLENBQUM7Z0JBQzNCLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxFQUFDLElBQUksRUFBRSxNQUFNLEVBQUMsQ0FBQyxDQUFDO1lBQy9DLENBQUM7aUJBQU0sQ0FBQztnQkFDSixJQUFJLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQzNCLENBQUM7UUFDTCxDQUFDO2FBQU0sQ0FBQztZQUNKLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ3hDLENBQUM7SUFDTCxDQUFDO0lBQ00sT0FBTyxDQUFDLE1BQXNCO1FBQ2pDLE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRXhELEtBQUssTUFBTSxJQUFJLElBQUksVUFBVSxFQUFFLENBQUM7WUFDNUIsTUFBTSxTQUFTLEdBQUcsSUFBSSxhQUFhLENBQUMsVUFBVSxFQUFFLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7WUFDL0QsSUFBSSxJQUFJLENBQUMsa0JBQWtCLENBQUMsU0FBUyxDQUFDLEtBQUcsS0FBSyxFQUFFLENBQUM7Z0JBQzdDLE1BQU0sQ0FBQyxjQUFjLEVBQUUsQ0FBQztnQkFDeEIsT0FBTztZQUNYLENBQUM7UUFDTCxDQUFDO0lBQ0wsQ0FBQztDQUVKLENBQUE7QUFqa0JxQixZQUFZO0lBOEJ6QixXQUFBLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFBO0lBQUUsV0FBQSxRQUFRLEVBQUUsQ0FBQTtxQ0FKbEMsUUFBUSxVQUVRLG1CQUFtQjtRQUNQLHVCQUF1QjtHQTdCMUMsWUFBWSxDQWlrQmpDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3QsIEluamVjdG9yLCBPcHRpb25hbH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIFZhbGlkYXRvciB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IGdldExvY2FsZU51bWJlclN5bWJvbCwgTnVtYmVyU3ltYm9sIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuaW1wb3J0IHtBYnN0cmFjdEkxOG5TZXJ2aWNlLCBpc0RlZmluZWR9IGZyb20gJ0B3bS9jb3JlJztcbmltcG9ydCB7IElXaWRnZXRDb25maWcsIFRyYWlsaW5nWmVyb0RlY2ltYWxQaXBlLCBJTlBVVE1PREUgfSBmcm9tICdAd20vY29tcG9uZW50cy9iYXNlJztcblxuaW1wb3J0IHsgQmFzZUlucHV0IH0gZnJvbSAnLi4vYmFzZS9iYXNlLWlucHV0JztcbmltcG9ydCB7aW5jbHVkZXMsIGludGVyc2VjdGlvbiwgaXNOdWxsLCBpc1N0cmluZywgaXNVbmRlZmluZWQsIHJvdW5kLCB0b0FycmF5fSBmcm9tIFwibG9kYXNoLWVzXCI7XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBOdW1iZXJMb2NhbGUgZXh0ZW5kcyBCYXNlSW5wdXQgaW1wbGVtZW50cyBWYWxpZGF0b3Ige1xuICAgIHByaXZhdGUgREVDSU1BTDogc3RyaW5nO1xuICAgIHByaXZhdGUgR1JPVVA6IHN0cmluZztcbiAgICBwcml2YXRlIHNlbGVjdGVkTG9jYWxlOiBzdHJpbmc7XG4gICAgcHJpdmF0ZSBwcm94eU1vZGVsOiBudW1iZXI7XG4gICAgcHJpdmF0ZSBudW1iZXJOb3RJblJhbmdlOiBib29sZWFuO1xuICAgIHByaXZhdGUgaXNJbnZhbGlkTnVtYmVyOiBib29sZWFuO1xuICAgIHByaXZhdGUgaXNEZWZhdWx0UXVlcnk6IGJvb2xlYW4gPSB0cnVlO1xuICAgIHByaXZhdGUgZGVjaW1hbFZhbHVlOiBzdHJpbmcgPSAnJztcbiAgICBwdWJsaWMgZGlzcGxheVZhbHVlOiBzdHJpbmc7XG4gICAgcHJpdmF0ZSBudW1iZXJmaWx0ZXI6IHN0cmluZztcbiAgICBwcml2YXRlIGxvY2FsZWZpbHRlcjogc3RyaW5nO1xuICAgIHB1YmxpYyByZWFkb25seTogYm9vbGVhbjtcblxuICAgIHB1YmxpYyBwbGFjZWhvbGRlcjogc3RyaW5nO1xuICAgIHB1YmxpYyBtaW52YWx1ZTogbnVtYmVyO1xuICAgIHB1YmxpYyBtYXh2YWx1ZTogbnVtYmVyO1xuICAgIHB1YmxpYyB1cGRhdGVvbjogc3RyaW5nO1xuICAgIHB1YmxpYyBzdGVwOiBudW1iZXI7XG4gICAgcHVibGljIHRyYWlsaW5nemVybzogYm9vbGVhbjtcbiAgICBwcml2YXRlIHZhbGlkYXRlVHlwZTogc3RyaW5nO1xuICAgIHB1YmxpYyBpbnB1dG1vZGU6IHN0cmluZztcbiAgICBwdWJsaWMgZGVjaW1hbHBsYWNlczogbnVtYmVyO1xuICAgIHByaXZhdGUgbGFzdFZhbElzRGVjaW1hbDogYm9vbGVhbjtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBpbmo6IEluamVjdG9yLFxuICAgICAgICBjb25maWc6IElXaWRnZXRDb25maWcsXG4gICAgICAgIHByaXZhdGUgaTE4blNlcnZpY2U6IEFic3RyYWN0STE4blNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgdHJhaWxpbmdaZXJvRGVjaW1hbFBpcGU6IFRyYWlsaW5nWmVyb0RlY2ltYWxQaXBlLFxuICAgICAgICBASW5qZWN0KCdFWFBMSUNJVF9DT05URVhUJykgQE9wdGlvbmFsKCkgZXhwbGljaXRDb250ZXh0OiBhbnlcbiAgICApIHtcbiAgICAgICAgc3VwZXIoaW5qLCBjb25maWcsIGV4cGxpY2l0Q29udGV4dCk7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRMb2NhbGUgPSBpMThuU2VydmljZS5nZXRTZWxlY3RlZExvY2FsZSgpO1xuICAgICAgICB0aGlzLkRFQ0lNQUwgPSBnZXRMb2NhbGVOdW1iZXJTeW1ib2wodGhpcy5sb2NhbGVmaWx0ZXIgfHwgdGhpcy5zZWxlY3RlZExvY2FsZSwgTnVtYmVyU3ltYm9sLkRlY2ltYWwpO1xuICAgICAgICB0aGlzLkdST1VQID0gZ2V0TG9jYWxlTnVtYmVyU3ltYm9sKHRoaXMubG9jYWxlZmlsdGVyIHx8IHRoaXMuc2VsZWN0ZWRMb2NhbGUsIE51bWJlclN5bWJvbC5Hcm91cCk7XG4gICAgICAgIHRoaXMubnVtYmVyZmlsdGVyID0gJzEuMC0xNic7XG4gICAgICAgIHRoaXMucmVzZXRWYWxpZGF0aW9ucygpO1xuICAgIH1cblxuICAgIC8vIFNldHRlciBmb3IgdGhlIGRhdGF2YWx1ZS5cbiAgICAvLyBAdHMtaWdub3JlXG4gICAgc2V0IGRhdGF2YWx1ZSh2YWx1ZTogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMubGFzdFZhbElzRGVjaW1hbCA9IGZhbHNlO1xuXG4gICAgICAgIC8vIHNldCB0ZXh0IHZhbHVlIHRvIG51bGwgaWYgZGF0YSB2YWx1ZSBpcyBlbXB0eS5cbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICBpZiAoaW5jbHVkZXMoW251bGwsIHVuZGVmaW5lZCwgJyddLCB2YWx1ZSkpIHtcbiAgICAgICAgICAgIGNvbnN0IGlucHV0ID0gdGhpcy5pbnB1dEVsLm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgICAgICBjb25zdCBwcmV2RGF0YVZhbHVlID0gICh0aGlzIGFzIGFueSkucHJldkRhdGF2YWx1ZTtcbiAgICAgICAgICAgIHRoaXMuZGlzcGxheVZhbHVlID0gaW5wdXQudmFsdWUgPSB0aGlzLnByb3h5TW9kZWwgPSBudWxsO1xuICAgICAgICAgICAgdGhpcy5yZXNldFZhbGlkYXRpb25zKCk7XG4gICAgICAgICAgICAvLyBGaXggZm9yIFtXTVMtMjc2NDhdOiBXaGVuIGEgZGVjaW1hbCB2YWx1ZSBpcyBlbnRlcmVkIChlLmcuLCBcIjMuXCIpLCBkYXRhdmFsdWUgYW5kIHByZXZEYXRhdmFsdWUgYmVjb21lIG51bGwgYXMgaXQgaXMgYW4gaW52YWxpZCBudW1iZXIuXG4gICAgICAgICAgICAvLyBoYW5kbGVDaGFuZ2UoKSBzaG91bGQgYmUgY2FsbGVkIHdoZW4gdGhlIGludmFsaWQgZGF0YXZhbHVlIChlLmcuLCBcIjMuXCIpIGlzIHJlbW92ZWQsIGFuZCB0aGUgdmFsdWUgYmVjb21lcyBhbiBlbXB0eSBzdHJpbmcgKFwiXCIpLlxuICAgICAgICAgICAgaWYgKChwcmV2RGF0YVZhbHVlIHx8IHByZXZEYXRhVmFsdWUgPT0gMCB8fCBwcmV2RGF0YVZhbHVlID09IG51bGwpICYmICF0aGlzLmlzRGVmYXVsdFF1ZXJ5KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVDaGFuZ2UodmFsdWUpO1xuICAgICAgICAgICAgICAgIHRoaXMuX29uQ2hhbmdlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgLy8gaWYgdGhlIHdpZGdldCBoYXMgZGVmYXVsdCB2YWx1ZSBhbmQgaWYgd2UgY2hhbmdlIHRoZSBsb2NhbGUsIHRoZSB2YWx1ZSBzaG91bGQgYmUgaW4gc2VsZWN0ZWQgbG9jYWxlIGZvcm1hdC5cbiAgICAgICAgaWYgKHRoaXMuaXNEZWZhdWx0UXVlcnkpIHtcbiAgICAgICAgICAgIGNvbnN0IGlzTG9jYWxpemVkTnVtYmVyID0gaXNTdHJpbmcodmFsdWUpICYmIGluY2x1ZGVzKHZhbHVlLCB0aGlzLkRFQ0lNQUwpO1xuICAgICAgICAgICAgY29uc3QgcGFydHMgPSBpc0xvY2FsaXplZE51bWJlciA/ICh2YWx1ZSBhcyBhbnkpLnNwbGl0KHRoaXMuREVDSU1BTCkgOiBpc1N0cmluZyh2YWx1ZSkgJiYgKHZhbHVlIGFzIGFueSkuc3BsaXQoJy4nKTtcblxuICAgICAgICAgICAgbGV0IGRlY2ltYWxQbGFjZXNBdHRyVmFsID0gdGhpcy5nZXRBdHRyKCdkZWNpbWFscGxhY2VzJyk7XG4gICAgICAgICAgICBjb25zdCBkZWNpbWFscGxhY2VzID0gZGVjaW1hbFBsYWNlc0F0dHJWYWwgIT09ICcnICYmIGRlY2ltYWxQbGFjZXNBdHRyVmFsICE9PSB1bmRlZmluZWQgPyBOdW1iZXIoZGVjaW1hbFBsYWNlc0F0dHJWYWwpIDogTmFOO1xuICAgICAgICAgICAgaWYodGhpcy5pbnB1dG1vZGUgPT09IElOUFVUTU9ERS5OQVRVUkFMICYmICFpc05hTihkZWNpbWFscGxhY2VzKSkge1xuICAgICAgICAgICAgICAgIGlmKGRlY2ltYWxwbGFjZXMgPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kZWNpbWFsVmFsdWUgPSAnJztcbiAgICAgICAgICAgICAgICAgICAgKHZhbHVlIGFzIGFueSkgPSBpc0xvY2FsaXplZE51bWJlciA/IHBhcnRzWzBdIDogdGhpcy50cmFuc2Zvcm1OdW1iZXIocGFydHNbMF0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZihkZWNpbWFscGxhY2VzID4gMCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRlY2ltYWxWYWx1ZSA9IHBhcnRzWzFdICYmIHBhcnRzWzFdLnN1YnN0cmluZygwLCBkZWNpbWFscGxhY2VzKSB8fCAnJztcbiAgICAgICAgICAgICAgICAgICAgaWYoaXNMb2NhbGl6ZWROdW1iZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICh2YWx1ZSBhcyBhbnkpID0gdGhpcy5kZWNpbWFsVmFsdWUubGVuZ3RoID8gYCR7cGFydHNbMF19JHt0aGlzLkRFQ0lNQUx9JHt0aGlzLmRlY2ltYWxWYWx1ZX1gIDogcGFydHNbMF07XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAodmFsdWUgYXMgYW55KSA9IE51bWJlci5wYXJzZUZsb2F0KFN0cmluZyh2YWx1ZSkpLnRvRml4ZWQoZGVjaW1hbHBsYWNlcyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuZGVjaW1hbFZhbHVlID0gcGFydHNbMV0gfHwgJyc7XG4gICAgICAgICAgICAgICAgKHZhbHVlIGFzIGFueSkgPSBpc0xvY2FsaXplZE51bWJlciA/IHZhbHVlIDogdGhpcy50cmFuc2Zvcm1OdW1iZXIodmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgbnVtYmVyUmVnID0gL1xcZC87XG4gICAgICAgIGNvbnN0IHN0clZhbCA9IHZhbHVlLnRvU3RyaW5nKCk7XG4gICAgICAgIGxldCBtb2RlbDtcbiAgICAgICAgLy8gV2hlbiB0aGUgaW5wdXQgdmFsdWUgb25seSBjb250YWlucyBzZXBlcmF0b3IsIGRvIG5vdCBjb252ZXJ0IHRoZSBzZXBlcnRhb3IgaW50byAwXG4gICAgICAgIGlmIChudW1iZXJSZWcudGVzdChzdHJWYWwpKSB7XG4gICAgICAgICAgICBtb2RlbCA9IHRoaXMucGFyc2VOdW1iZXIoc3RyVmFsKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG1vZGVsID0gTmFOO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gT24ga2V5cHJlc3MsIGlmIHRoZSB1c2VyIHR5cGVzIGEgZGVjaW1hbCBhbmQgaXMgc3RpbGwgYWN0aXZlIG9uIHRoZSBpbnB1dCBkbyBub3QgdGhyb3cgZXJyb3IuXG4gICAgICAgIGlmIChpc05hTihtb2RlbCkgJiYgc3RyVmFsW3N0clZhbC5sZW5ndGggLSAxXSA9PT0gdGhpcy5ERUNJTUFMICYmIHRoaXMubmdNb2RlbE9wdGlvbnMudXBkYXRlT24gPT09ICdjaGFuZ2UnICYmIHRoaXMuJGVsZW1lbnQuZmluZCgnaW5wdXQ6Zm9jdXMnKS5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMubGFzdFZhbElzRGVjaW1hbCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgLy8gZ2V0IGEgdmFsaWQgbnVtYmVyIGZvcm0gdGhlIHRleHQuXG4gICAgICAgIC8vIGlmIHRoZSBudW1iZXIgaXMgdmFsaWQgb3IgaWYgbnVtYmVyIGlzIG5vdCBpbiByYW5nZSB1cGRhdGUgdGhlIG1vZGVsIHZhbHVlLlxuICAgICAgICBpZiAoIXRoaXMubGFzdFZhbElzRGVjaW1hbCAmJiB0aGlzLmlzVmFsaWQobW9kZWwpKSB7XG4gICAgICAgICAgICB0aGlzLnByb3h5TW9kZWwgPSBtb2RlbDtcbiAgICAgICAgICAgIC8vIHVwZGF0ZSB0aGUgZGlzcGxheSB2YWx1ZSBpbiB0aGUgdGV4dCBib3guXG4gICAgICAgICAgICB0aGlzLnVwZGF0ZURpc3BsYXlUZXh0KCk7XG4gICAgICAgICAgICAvLyBEbyBub3QgdHJpZ2dlciBvbmNoYW5nZSBldmVudCBmb3IgZGVmYXVsdCB2YWx1ZVxuICAgICAgICAgICAgaWYgKCF0aGlzLmlzRGVmYXVsdFF1ZXJ5KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVDaGFuZ2UobW9kZWwpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5kaXNwbGF5VmFsdWUgPSB2YWx1ZS50b1N0cmluZygpO1xuICAgICAgICAgICAgdGhpcy5wcm94eU1vZGVsID0gbnVsbDtcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlQ2hhbmdlKG51bGwpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gcmV0dXJucyB0aGUgYWN0dWFsIG1vZGVsIHZhbHVlIG9mIHRoZSB3aWRnZXQuXG4gICAgZ2V0IGRhdGF2YWx1ZSgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5wcm94eU1vZGVsO1xuICAgIH1cblxuICAgIC8vIHJlc2V0cyBhbGwgdGhlIGZsYWdzIHJlbGF0ZWQgdG8gdGhlIHdpZGdldCdzIHZhbGlkYXRpb24uXG4gICAgcHJvdGVjdGVkIHJlc2V0VmFsaWRhdGlvbnMoKSB7XG4gICAgICAgIHRoaXMuaXNJbnZhbGlkTnVtYmVyID0gZmFsc2U7XG4gICAgICAgIHRoaXMubnVtYmVyTm90SW5SYW5nZSA9IGZhbHNlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFkZHMgdmFsaWRhdGlvbnMgZm9yIHRoZSBudW1iZXIgYmVmb3JlIHVwZGF0aW5nIHRoZSB3aWRnZXQgbW9kZWwuIGxpa2UgdmFsaWRhdGluZyBtaW4gYW5kIG1heCB2YWx1ZSBmb3IgdGhlIHdpZGdldC5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gdmFsIG51bWJlciB0byBiZSB2YWxpZGF0ZWRcbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfVxuICAgICAqL1xuICAgIHByaXZhdGUgaXNWYWxpZCh2YWw6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgICAgICAvLyBpZCBudW1iZXIgaXMgaW5maW5pdGUgdGhlbiBjb25zaWRlciBpdCBhcyBpbnZhbGlkIHZhbHVlXG4gICAgICAgIGxldCBpbnZhbGlkRGVjaW1hbFBsYWNlcyA9IGZhbHNlO1xuICAgICAgICBpZih0aGlzLmlucHV0bW9kZSA9PT0gSU5QVVRNT0RFLk5BVFVSQUwgJiYgIWlzTmFOKHRoaXMuZGVjaW1hbHBsYWNlcykgJiYgdGhpcy5kZWNpbWFscGxhY2VzID49IDApIHtcbiAgICAgICAgICAgIGludmFsaWREZWNpbWFsUGxhY2VzID0gdGhpcy5jb3VudERlY2ltYWxzKHZhbCkgPiB0aGlzLmRlY2ltYWxwbGFjZXM7XG4gICAgICAgIH0gZWxzZSBpZighTnVtYmVyLmlzSW50ZWdlcih0aGlzLnN0ZXApICYmIHRoaXMuY291bnREZWNpbWFscyh2YWwpID4gdGhpcy5jb3VudERlY2ltYWxzKHRoaXMuc3RlcCkpIHtcbiAgICAgICAgICAgIGludmFsaWREZWNpbWFsUGxhY2VzID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNOYU4odmFsKSB8fCAhaXNGaW5pdGUodmFsKSB8fCBpbnZhbGlkRGVjaW1hbFBsYWNlcykge1xuICAgICAgICAgICAgdGhpcy5pc0ludmFsaWROdW1iZXIgPSB0cnVlO1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGlmICh2YWwgIT09IHRoaXMuZ2V0VmFsdWVJblJhbmdlKHZhbCkpIHtcbiAgICAgICAgICAgIHRoaXMubnVtYmVyTm90SW5SYW5nZSA9IHRydWU7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnJlc2V0VmFsaWRhdGlvbnMoKTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogcmV0dXJucyBhIHZhbGlkIG51bWJlciBieSB2YWxpZGF0aW5nIHRoZSBtaW5pbXVtIGFuZCBtYXhpbXVtIHZhbHVlcy5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gdmFsdWVcbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfVxuICAgICAqL1xuICAgIHByaXZhdGUgZ2V0VmFsdWVJblJhbmdlKHZhbHVlOiBudW1iZXIpOiBudW1iZXIge1xuICAgICAgICBpZiAoIWlzTmFOKHRoaXMubWludmFsdWUpICYmIHZhbHVlIDwgdGhpcy5taW52YWx1ZSkge1xuICAgICAgICAgICAgdGhpcy52YWxpZGF0ZVR5cGUgPSAnbWludmFsdWUnO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMubWludmFsdWU7XG5cbiAgICAgICAgfVxuICAgICAgICBpZiAoIWlzTmFOKHRoaXMubWF4dmFsdWUpICYmIHZhbHVlID4gdGhpcy5tYXh2YWx1ZSkge1xuICAgICAgICAgICAgdGhpcy52YWxpZGF0ZVR5cGUgPSAnbWF4dmFsdWUnO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMubWF4dmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGNvbnZlcnQgbnVtYmVyIHRvIGxvY2FsaXplZCBudW1iZXIgdXNpbmcgYW5ndWxhciBkZWNpbWFsIHBpcGUuIGVnIDEwLDAwLDAwMCBvciAxLDAwMCwwMDBcbiAgICAgKiBAcGFyYW0gbnVtYmVyXG4gICAgICogQHJldHVybnMge3N0cmluZ31cbiAgICAgKi9cbiAgICBwcml2YXRlIHRyYW5zZm9ybU51bWJlcihudW1iZXIsIG51bWJlcmZpbHRlcj8pOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBmaWx0ZXJWYWwgPSBudW1iZXJmaWx0ZXIgPyBudW1iZXJmaWx0ZXIgOiB0aGlzLm51bWJlcmZpbHRlcjtcbiAgICAgICAgcmV0dXJuIHRoaXMudHJhaWxpbmdaZXJvRGVjaW1hbFBpcGUudHJhbnNmb3JtKG51bWJlciwgdGhpcy5zZWxlY3RlZExvY2FsZSwgZmlsdGVyVmFsLCB0aGlzLmxvY2FsZWZpbHRlciwgdGhpcy50cmFpbGluZ3plcm8sIHRoaXMuZGVjaW1hbFZhbHVlLCAhIW51bWJlcmZpbHRlciwgdGhpcy5pMThuU2VydmljZT8uZ2V0d2lkZ2V0TG9jYWxlKCkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIHJlc2V0cyB0aGUgY3Vyc29yIHBvc2l0aW9uIGluIHRoZSB0ZXh0IGJveC5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gdmFsdWUgY3Vyc29yIHBvc2l0aW9uIGluZGV4IGZvcm0gbGVmdCB0byByaWdodC5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlc2V0Q3Vyc29yUG9zaXRpb24odmFsdWU6IG51bWJlcikge1xuICAgICAgICBjb25zdCBpbnB1dCA9IHRoaXMuaW5wdXRFbC5uYXRpdmVFbGVtZW50O1xuICAgICAgICAvLyBwb3NpdGlvbiBvZiB0aGUgY3Vyc29yIHNob3VsZCBiZSBnaXZlbiBmb3JtIHJpZ2h0IHRvIGxlZnQuXG4gICAgICAgIGxldCBwb3NpdGlvbiA9IGlucHV0LnZhbHVlLmxlbmd0aCAtIHZhbHVlO1xuICAgICAgICBwb3NpdGlvbiA9IHBvc2l0aW9uIDwgMCA/IDAgOiBwb3NpdGlvbjtcbiAgICAgICAgLy8gc2V0IHRoZSBjdXJzb3IgcG9zaXRpb24gaW4gdGhlIHRleHQgYm94LlxuICAgICAgICBpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZShwb3NpdGlvbiwgcG9zaXRpb24pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE1ldGhvZCBwYXJzZXMgdGhlIExvY2FsaXplZCBudW1iZXIoc3RyaW5nKSB0byBhIHZhbGlkIG51bWJlci5cbiAgICAgKiBpZiB0aGUgc3RyaW5nIGRvc2Ugbm90IHJlc3VsdCB0byBhIHZhbGlkIG51bWJlciB0aGVuIHJldHVybnMgTmFOLlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSB2YWwgTG9jYWxpemVkIG51bWJlci5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfVxuICAgICAqL1xuICAgIHByaXZhdGUgcGFyc2VOdW1iZXIodmFsOiBzdHJpbmcpOiBudW1iZXIge1xuICAgICAgICAvLyBXTVMtMjIxNzk6IHNwbGl0IG51bWJlciBiYXNlZCBvbiB0aGUgZGVjaW1hbCBzZXBhcmF0b3IgaW4gdGhlIHZhbFxuICAgICAgICAvLyBzcGxpdHMgc3RyaW5nIGludG8gdHdvIHBhcnRzLiBkZWNpbWFsIGFuZCBudW1iZXIuXG4gICAgICAgIGNvbnN0IHBhcnRzID0gdmFsLnNwbGl0KHRoaXMuaW5wdXRtb2RlID09PSBJTlBVVE1PREUuRklOQU5DSUFMID8gKHZhbC5pbmRleE9mKHRoaXMuREVDSU1BTCkgPiAtMSA/IHRoaXMuREVDSU1BTCA6ICcuJykgOiB0aGlzLkRFQ0lNQUwpO1xuICAgICAgICBpZiAoIXBhcnRzLmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHBhcnRzLmxlbmd0aCA+IDIpIHtcbiAgICAgICAgICAgIHJldHVybiBOYU47XG4gICAgICAgIH1cbiAgICAgICAgLy8gSWYgbnVtYmVyIGhhdmUgZGVjaW1hbCBwb2ludCBhbmQgbm90IGhhdmUgYSBkZWNpbWFsIHZhbHVlIHRoZW4gcmV0dXJuLlxuICAgICAgICBpZiAocGFydHNbMV0gPT09ICcnKSB7XG4gICAgICAgICAgICByZXR1cm4gTmFOO1xuICAgICAgICB9XG4gICAgICAgIC8vIHJlcGxhY2VzIGFsbCBncm91cCBzZXBhcmF0b3JzIGZvcm0gdGhlIG51bWJlci5cbiAgICAgICAgY29uc3QgbnVtYmVyID0gTnVtYmVyKHBhcnRzWzBdLnNwbGl0KHRoaXMuR1JPVVApLmpvaW4oJycpKTtcbiAgICAgICAgY29uc3QgZGVjaW1hbCA9IE51bWJlcihgMC4ke3BhcnRzWzFdIHx8IDB9YCk7XG4gICAgICAgIGlmIChOdW1iZXIuaXNOYU4obnVtYmVyKSB8fCBOdW1iZXIuaXNOYU4oZGVjaW1hbCkpIHtcbiAgICAgICAgICAgIHJldHVybiBOYU47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgc3VtID0gcGFydHMubGVuZ3RoID4gMSA/IHBhcnNlRmxvYXQoKG51bWJlciArIGRlY2ltYWwpLnRvRml4ZWQocGFydHNbMV0ubGVuZ3RoKSkgOiBudW1iZXIgKyBkZWNpbWFsO1xuICAgICAgICAvLyBpZiB0aGUgbnVtYmVyIGlzIG5lZ2F0aXZlIHRoZW4gY2FsY3VsYXRlIHRoZSBudW1iZXIgYXMgbnVtYmVyIC0gZGVjaW1hbFxuICAgICAgICAvLyBFeDogbnVtYmVyID0gLTEyMyBhbmQgZGVjaW1hbCA9IDAuNDUgdGhlbiBudW1iZXIgLSBkZWNpbWFsID0gLTEyMy0wNDUgPSAtMTIzLjQ1XG4gICAgICAgIC8vIElmIGVudGVyZWQgbnVtYmVyIGlzIC0wLjEgdG8gLTAuOSB0aGVuIHRoZSBudW1iZXIgaXMgLTAgYW5kIGRlY2ltYWwgaXMgMC4xIHRvIDAuOS4gTm93IGNhbGFjdWxhdGUgdGhlIG51bWJlciBhcyBudW1iZXItZGVjaW1hbFxuICAgICAgICAvLyBFeDogbnVtYmVyID0gLTAgYW5kIGRlY2ltYWwgPSAwLjEgdGhlbiBudW1iZXItZGVjaW1hbCA9IC0wLTAuMSA9IC0wLjFcbiAgICAgICAgaWYgKG51bWJlciA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIE9iamVjdC5pcygwLCBudW1iZXIpID8gc3VtIDogbnVtYmVyIC0gZGVjaW1hbDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVtYmVyID4gMCA/IHN1bSA6IG51bWJlciAtIGRlY2ltYWw7XG4gICAgfVxuXG4gICAgLy8gdXBkYXRlcyB0aGUgd2lkZ2V0cyB0ZXh0IHZhbHVlLlxuICAgIHByaXZhdGUgdXBkYXRlRGlzcGxheVRleHQoKSB7XG4gICAgICAgIGNvbnN0IGlucHV0ID0gdGhpcy5pbnB1dEVsLm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgIGNvbnN0IHBvc2l0aW9uOiBudW1iZXIgPSBpbnB1dC5zZWxlY3Rpb25TdGFydDtcbiAgICAgICAgY29uc3QgcHJlVmFsdWU6IHN0cmluZyA9IGlucHV0LnZhbHVlO1xuICAgICAgICBpZiAoIXRoaXMuaXNEZWZhdWx0UXVlcnkpIHtcbiAgICAgICAgICAgIGNvbnN0IHBhcnRzID0gcHJlVmFsdWUuc3BsaXQodGhpcy5ERUNJTUFMKTtcbiAgICAgICAgICAgIHRoaXMuZGVjaW1hbFZhbHVlID0gcGFydHNbMV0gfHwgJyc7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgc3RlcFZhbCA9IHRoaXMuc3RlcExlbmd0aCgpO1xuICAgICAgICBpZiAodGhpcy5pbnB1dG1vZGUgPT09IElOUFVUTU9ERS5GSU5BTkNJQUwgJiYgc3RlcFZhbCkge1xuICAgICAgICAgICAgdGhpcy5kaXNwbGF5VmFsdWUgPSBpbnB1dC52YWx1ZSA9IHRoaXMudHJhbnNmb3JtTnVtYmVyKHRoaXMucHJveHlNb2RlbCwgYDEuJHtzdGVwVmFsfS0ke3N0ZXBWYWx9YCk7XG4gICAgICAgICAgICB0aGlzLmRlY2ltYWxWYWx1ZSA9IHRoaXMuZGVjaW1hbFZhbHVlLnJlcGxhY2UoL1xcRC9nLCcnKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuZGlzcGxheVZhbHVlID0gaW5wdXQudmFsdWUgPSB0aGlzLnRyYW5zZm9ybU51bWJlcih0aGlzLnByb3h5TW9kZWwpO1xuICAgICAgICB9XG4gICAgICAgIC8vIGluIHNhZmFyaSBicm93c2VyLCBzZXRTZWxlY3Rpb25SYW5nZSB3aWxsIGZvY3VzIHRoZSBpbnB1dCBieSBkZWZhdWx0LCB3aGljaCBtYXkgaW52b2tlIHRoZSBmb2N1cyBldmVudCBvbiB3aWRnZXQuXG4gICAgICAgIC8vIEhlbmNlIHByZXZlbnRpbmcgdGhlIHNldFNlbGVjdGlvblJhbmdlIHdoZW4gZGVmYXVsdCB2YWx1ZSBpcyBzZXQgaS5lLiB3aWRnZXQgaXMgbm90IGZvY3VzZWQuXG4gICAgICAgIGlmICh0aGlzLnVwZGF0ZW9uID09PSAnZGVmYXVsdCcgJiYgIXRoaXMuaXNEZWZhdWx0UXVlcnkpIHtcbiAgICAgICAgICAgIHRoaXMucmVzZXRDdXJzb3JQb3NpdGlvbihwcmVWYWx1ZS5sZW5ndGggLSBwb3NpdGlvbik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBUaGlzIGZ1bmN0aW9uIHJldHVybnMgdGhlIHN0ZXAgbGVuZ3RoIHNldCBpbiB0aGUgc3R1ZGlvXG4gICAgcHJpdmF0ZSBzdGVwTGVuZ3RoKCkge1xuICAgICAgICBpZih0aGlzLmlucHV0bW9kZSA9PT0gJ0lOUFVUTU9ERS5OQVRVUkFMJyAmJiAhaXNOYU4odGhpcy5kZWNpbWFscGxhY2VzKSAmJiB0aGlzLmRlY2ltYWxwbGFjZXMgPj0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGVjaW1hbHBsYWNlcztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBzdGVwTGVuID0gdGhpcy5zdGVwLnRvU3RyaW5nKCkuc3BsaXQoJy4nKTtcbiAgICAgICAgaWYgKHN0ZXBMZW4ubGVuZ3RoID09PSAxICkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHN0ZXBMZW5bMV0ubGVuZ3RoO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gVGhpcyBmdW5jdGlvbiBjaGVja3MgaWYgdGhlIGN1cnJlbmN5IHdpZGdldCBoYXMgaW5wdXQgbW9kZSBhcyBuYXR1cmFsIGFuZCB0cmFpbGluZyB6ZXJvIGlzIGRlZmluZWQgb3Igbm90XG4gICAgcHVibGljIGlzTmF0dXJhbEN1cnJlbmN5KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5pbnB1dG1vZGUgPT09IElOUFVUTU9ERS5OQVRVUkFMICYmIHRoaXMud2lkZ2V0VHlwZSA9PT0gJ3dtLWN1cnJlbmN5JyAmJiAhIXRoaXMudHJhaWxpbmd6ZXJvO1xuICAgIH1cblxuICAgICAgIC8qKlxuICAgICAqIEBwYXJhbSB2YWx1ZSBjb250YWlucyB0aGUgdmFsdWUgZW50ZXJlZCBpbiB0aGUgaW5wdXQgYm94XG4gICAgICogVGhpcyBmdW5jdGlvbiBtb2RpZmllcyB0aGUgdXNlciBpbnB1dCB2YWx1ZSwgaW50byBmaW5hbmNpYWwgbW9kZS5cbiAgICAgKiBOdW1iZXIgc3RhcnRzIGZyb20gaGlnaGVzdCBwcmVjZXNpb24gZGVjaW1hbCwgb24gdHlwaW5nIG51bWJlciBzaGlmdHMgdG8gdGhlIGxlZnRcbiAgICAgKi9cbiAgICBwdWJsaWMgb25JbnB1dENoYW5nZSh2YWx1ZTogYW55KSB7XG4gICAgICAgIGNvbnN0IHN0ZXBWYWwgPSB0aGlzLnN0ZXBMZW5ndGgoKTtcbiAgICAgICAgY29uc3QgcHJldkRhdGFWYWx1ZSA9ICB0aGlzLmdldFByZXZEYXRhVmFsdWUoKTtcbiAgICAgICAgLy8gV01TLTIyMzU1LCBUcmlnZ2VyIGNoYW5nZSBjYiBpZiB2YWx1ZSBleGlzdHMgb3IgdmFsdWUgaXMgZW1wdHkgYnV0IGRhdGF2YWx1ZSBleGlzdHMgKHdoZW4gdmFsdWUgaXMgc2VsZWN0ZWQgYW5kIGRlbGV0ZWQpLlxuICAgICAgICAgICAvLyBGaXggZm9yIFtXTVMtMjcwNDFdOiBFbnN1cmUgdGhlIGNoYW5nZSBjYWxsYmFjayBmb3IgdGhlIG51bWJlciB3aWRnZXQgdHJpZ2dlcnMgb25seSBvbiBmb2N1cyBvdXQgKHdoZW4gdXBkYXRlb24gaXMgc2V0IHRvIGJsdXIpLFxuICAgICAgICAgICAvLyBub3QgZHVyaW5nIGluaXRpYWwgaW5wdXQgd2hlbiB0aGUgcHJldmlvdXMgdmFsdWUgaXMgdW5kZWZpbmVkIGFuZCB0aGUgY3VycmVudCB2YWx1ZSBpcyBudWxsLlxuICAgICAgICBpZiAoaXNEZWZpbmVkKHZhbHVlKSAmJiAodmFsdWUgIT09ICcnIHx8IHRoaXMuZGF0YXZhbHVlIHx8IHRoaXMuZGF0YXZhbHVlID09IDApKSB7XG4gICAgICAgICAgICBpZiAodGhpcy53aWRnZXRUeXBlID09PSBcIndtLW51bWJlclwiKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuaW5wdXRtb2RlID09IElOUFVUTU9ERS5GSU5BTkNJQUwpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gQ2FzZSAxOiB3aGVuIHRoZXJlIGlzIG5vIGRlZmF1bHQgdmFsdWUsIHByZXZEYXRhVmFsdWUgaXMgdW5kZWZpbmVkICYmIHRoaXMuZGF0YXZhbHVlIGlzIG51bGxcbiAgICAgICAgICAgICAgICAgICAgLy8gQ2FzZSAyOiB3aGVuIHRoZXJlIGRlZmF1bHQgdmFsdWUsIHByZXZEYXRhVmFsdWUgaXMgZXF1YWwgdG8gdGhpcy5kYXRhdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgaWYgKCEoKHByZXZEYXRhVmFsdWUgPT0gdW5kZWZpbmVkICYmIHRoaXMuZGF0YXZhbHVlID09IG51bGwpIHx8IChwcmV2RGF0YVZhbHVlID09IHRoaXMuZGF0YXZhbHVlKSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlQ2hhbmdlKHZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghKHByZXZEYXRhVmFsdWUgPT0gdW5kZWZpbmVkICYmIHRoaXMuZGF0YXZhbHVlID09IG51bGwpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZUNoYW5nZSh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2UgeyAvLyBjdXJyZW5jeSB3aWRnZXRcbiAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZUNoYW5nZSh2YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXN0ZXBWYWwgfHwgdGhpcy5pbnB1dG1vZGUgIT09IElOUFVUTU9ERS5GSU5BTkNJQUwpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBmaW5hbmNpYWxWYWw7XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIElmIHRoZSB2YWx1ZSBpcyBlbnRlcmVkIGJ5IHRoZSB1c2VyLCBmb3JtYXQgdGhlIGlucHV0XG4gICAgICAgICAqIElmIHRoZSB2YWx1ZSBpcyBwcm92aWRlZCBhcyBkZWZhdWx0IHZhbHVlLCBza2lwIGZvcm1hdHRpbmdcbiAgICAgICAgICovXG4gICAgICAgIGlmICh0aGlzLmlzRGVmYXVsdFF1ZXJ5KSB7XG4gICAgICAgICAgICBmaW5hbmNpYWxWYWwgPSBwYXJzZUZsb2F0KHZhbHVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IHZhbEluV2hvbGVOdW0gPSBwYXJzZUludCh2YWx1ZS50b1N0cmluZygpLnJlcGxhY2UoL1xcRC9nLCcnKSk7XG4gICAgICAgICAgICBmaW5hbmNpYWxWYWwgPSB2YWxJbldob2xlTnVtICogIHRoaXMuc3RlcDtcbiAgICAgICAgfVxuXG4gICAgICAgICAgIGlmICghaXNOYU4oZmluYW5jaWFsVmFsKSkge1xuICAgICAgICAgICAgLy8gV2hlbiB1cGRhdGUgb24ga2V5IGlzIHNldCBrZXlwcmVzcywgdXBkYXRlIHRoZSBkYXRhdmFsdWUgZWxzZSB1cGRhdGUgb25seSB0aGUgZGlzcGxheSB2YWx1ZVxuICAgICAgICAgICAgaWYgKHRoaXMubmdNb2RlbE9wdGlvbnMudXBkYXRlT24gPT09ICdjaGFuZ2UnKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5kYXRhdmFsdWUgPSBwYXJzZUZsb2F0KGZpbmFuY2lhbFZhbC50b0ZpeGVkKHN0ZXBWYWwpKTtcbiAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZUNoYW5nZSh0aGlzLmRhdGF2YWx1ZSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuZGlzcGxheVZhbHVlID0gZmluYW5jaWFsVmFsLnRvRml4ZWQoc3RlcFZhbCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5uZ01vZGVsT3B0aW9ucy51cGRhdGVPbiAhPT0gJ2JsdXInKSB7XG4gICAgICAgICAgICB0aGlzLmRhdGF2YWx1ZSA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlQ2hhbmdlKG51bGwpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gSW5wdXQgbW9kZSBpcyBmaW5hbmNpYWwgYW5kIHRyYWlsaW5nIHplcm8gaXMgc2V0IHRvIGZhbHNlLCBPbiBmb2N1cyBzZXQgZGlzcGxheSB2YWwgdG8gZml4ZWQgcG9pbnQgbm90YXRpb24gYW5kIE9uIGJsdXIgc3RyaXAgdHJhaWxpbmcgemVyb3NcbiAgICAvLyBJbiBjdXJyZW5jeSwgaW5wdXRtb2RlIGlzIG5hdHVyYWwgYW5kIHRyYWlsaW5nIHplcm8gYW5kIHN0ZXAgYXJlIGRlZmluZWQsIG9uIGJsdXIgZGlzcGxheSB2YWwgdG8gZml4ZWQgcG9pbnQgbm90YXRpb24gYW5kIG9uIGZvY3VzIHN0cmlwIHRoZSB6ZXJvc1xuICAgIHB1YmxpYyBjaGVja0ZvclRyYWlsaW5nWmVyb3MoJGV2ZW50KSB7XG4gICAgICAgIGNvbnN0IHN0ZXBWYWwgPSB0aGlzLnN0ZXBMZW5ndGgoKTtcbiAgICAgICAgY29uc3QgZmluYW5jaWFsTW9kZSA9ICF0aGlzLnRyYWlsaW5nemVybyAmJiB0aGlzLmlucHV0bW9kZSA9PT0gSU5QVVRNT0RFLkZJTkFOQ0lBTDtcblxuICAgICAgICAvLyBJZiB0aGUgdXNlcidzIGxhc3QgaW5wdXQgaXMgYSBkZWNpbWFsIGFuZCBub3QgYWN0aXZlIG9uIGlucHV0IGZpZWxkLCB0aHJvdyBlcnJvclxuICAgICAgICBpZiAodGhpcy5sYXN0VmFsSXNEZWNpbWFsKSB7XG4gICAgICAgICAgICB0aGlzLm9uTW9kZWxDaGFuZ2UodGhpcy5kaXNwbGF5VmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghZmluYW5jaWFsTW9kZSAmJiAhdGhpcy5pc05hdHVyYWxDdXJyZW5jeSgpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHN0ZXBWYWwgJiYgdGhpcy5kYXRhdmFsdWUpIHtcbiAgICAgICAgICAgIGxldCBudW1iZXJmaWx0ZXI7XG4gICAgICAgICAgICBpZiAoKGZpbmFuY2lhbE1vZGUgJiYgJGV2ZW50LnR5cGUgPT09ICdmb2N1cycpIHx8ICh0aGlzLmlzTmF0dXJhbEN1cnJlbmN5KCkgJiYgJGV2ZW50LnR5cGUgPT09ICdibHVyJykpIHtcbiAgICAgICAgICAgICAgICBudW1iZXJmaWx0ZXIgPSBgMS4ke3N0ZXBWYWx9LSR7c3RlcFZhbH1gO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5kaXNwbGF5VmFsdWUgPSB0aGlzLnRyYW5zZm9ybU51bWJlcih0aGlzLmRhdGF2YWx1ZSwgbnVtYmVyZmlsdGVyKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIHJldHVybnMgdGhlIG51bWJlciBvZiBkZWNpbWFsIHBsYWNlcyBhIG51bWJlciBoYXZlLlxuICAgICAqIEBwYXJhbSB2YWx1ZTogbnVtYmVyXG4gICAgICogQHJldHVybnMge251bWJlcn1cbiAgICAgKi9cbiAgICBwcml2YXRlIGNvdW50RGVjaW1hbHModmFsdWUpIHtcbiAgICAgICAgY29uc3QgbnVtID0gTnVtYmVyKHZhbHVlKTtcbiAgICAgICAgaWYgKG51bSA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBDb252ZXJ0IHRvIG51bWJlciBhbmQgaGFuZGxlIHNjaWVudGlmaWMgbm90YXRpb25cbiAgICAgICAgaWYgKE51bWJlci5pc05hTihudW0pKSByZXR1cm4gMDtcblxuICAgICAgICAvLyBHZXQgdGhlIGV4cG9uZW50aWFsIGZvcm0gdG8gaGFuZGxlIHNjaWVudGlmaWMgbm90YXRpb24gcHJvcGVybHlcbiAgICAgICAgY29uc3QgZXhwb25lbnRpYWxTdHIgPSBudW0udG9FeHBvbmVudGlhbCgpO1xuICAgICAgICBjb25zdCBtYXRjaCA9IGV4cG9uZW50aWFsU3RyLm1hdGNoKC9eLT9cXGQqXFwuPyhcXGQrKT9lKFsrLV1cXGQrKSQvKTtcblxuICAgICAgICBpZiAobWF0Y2gpIHtcbiAgICAgICAgICAgIGNvbnN0IGRlY2ltYWxzID0gbWF0Y2hbMV0gPyBtYXRjaFsxXS5sZW5ndGggOiAwO1xuICAgICAgICAgICAgY29uc3QgZXhwb25lbnQgPSBwYXJzZUludChtYXRjaFsyXSk7XG4gICAgICAgICAgICByZXR1cm4gTWF0aC5tYXgoMCwgZGVjaW1hbHMgLSBleHBvbmVudCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBGYWxsYmFjayB0byByZWd1bGFyIGRlY2ltYWwgY291bnRpbmdcbiAgICAgICAgY29uc3QgZGVjaW1hbFN0ciA9IG51bS50b1N0cmluZygpO1xuICAgICAgICBjb25zdCBpc0xvY2FsaXplZE51bWJlciA9IGluY2x1ZGVzKGRlY2ltYWxTdHIsIHRoaXMuREVDSU1BTCk7XG4gICAgICAgIGNvbnN0IHBhcnRzID0gaXNMb2NhbGl6ZWROdW1iZXIgPyBkZWNpbWFsU3RyLnNwbGl0KHRoaXMuREVDSU1BTCkgOiBkZWNpbWFsU3RyLnNwbGl0KCcuJyk7XG4gICAgICAgIHJldHVybiBwYXJ0c1sxXSA/IHBhcnRzWzFdLmxlbmd0aCA6IDA7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogaGFuZGxlcyB0aGUgYXJyb3cgcHJlc3MgZXZlbnQuIEluY3JlYXNlcyBvciBkZWNyZWFzZXMgdGhlIG51bWJlci4gdHJpZ2dlcmVkIGZvbSB0aGUgdGVtcGxhdGVcbiAgICAgKiBAcGFyYW0gJGV2ZW50IGtleWJvYXJkIGV2ZW50LlxuICAgICAqIEBwYXJhbSBrZXkgaWRlbnRpZmllciB0byBpbmNyZWFzZSBvciBkZWNyZWFzZSB0aGUgbnVtYmVyLlxuICAgICAqL1xuICAgIHB1YmxpYyBvbkFycm93UHJlc3MoJGV2ZW50LCBrZXkpIHtcbiAgICAgICAgJGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGlmICh0aGlzLnJlYWRvbmx5IHx8IHRoaXMuc3RlcCA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHRhcmdldFZhbCA9ICRldmVudC50YXJnZXQudmFsdWUucmVwbGFjZSgvLC9nLCAnJyk7XG5cbiAgICAgICAgLy8gcHJveHlNb2RlbCB0byBiZSB1cGRhdGVkIGZyb20gJGV2ZW50LnRhcmdldC52YWx1ZSBpZiBwcmVzZW50IHRvIHN1cHBvcnQgYXJyb3cga2V5cyB3aGVuIGlucHV0IGNoYW5nZXMgZWxzZSBwaWNrIHVwIGZyb20gdGhpcy5wcm94eW1vZGVsXG4gICAgICAgIGxldCBwcm94eU1vZGVsO1xuICAgICAgICBpZiAodGFyZ2V0VmFsICYmICFpc05hTihwYXJzZUZsb2F0KHRhcmdldFZhbCkpKSB7XG4gICAgICAgICAgICBwcm94eU1vZGVsID0gcGFyc2VGbG9hdCh0YXJnZXRWYWwpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcHJveHlNb2RlbCA9IHRoaXMucHJveHlNb2RlbDtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCB2YWx1ZTtcblxuICAgICAgICAvLyBpZiB0aGUgbnVtYmVyIGlzIG5vdCBpbiByYW5nZSBhbmQgd2hlbiBhcnJvdyBidXR0b25zIGFyZSBwcmVzc2VkIG5lZWQgdG8gZ2V0IGFwcHJvcHJpYXRlIG51bWJlciB2YWx1ZS5cbiAgICAgICAgaWYgKHRoaXMubnVtYmVyTm90SW5SYW5nZSkge1xuICAgICAgICAgICAgY29uc3QgaW5wdXRWYWx1ZSA9IHRoaXMucGFyc2VOdW1iZXIodGhpcy5pbnB1dEVsLm5hdGl2ZUVsZW1lbnQudmFsdWUpO1xuICAgICAgICAgICAgLy8gdGFrZSB0aGUgdGV4dGJveCB2YWx1ZSBhcyBjdXJyZW50IG1vZGVsIGlmIHRoZSB2YWx1ZSBpcyB2YWxpZC5cbiAgICAgICAgICAgIGlmICghaXNOYU4oaW5wdXRWYWx1ZSkpIHtcbiAgICAgICAgICAgICAgICB2YWx1ZSA9IHRoaXMuZ2V0VmFsdWVJblJhbmdlKGlucHV0VmFsdWUpO1xuICAgICAgICAgICAgICAgIHByb3h5TW9kZWwgPSBpbnB1dFZhbHVlO1xuICAgICAgICAgICAgICAgIHRoaXMucmVzZXRWYWxpZGF0aW9ucygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKGlzVW5kZWZpbmVkKHByb3h5TW9kZWwpIHx8IGlzTnVsbChwcm94eU1vZGVsKSkge1xuICAgICAgICAgICAgICAgIHByb3h5TW9kZWwgPSB2YWx1ZSA9IHRoaXMuZ2V0VmFsdWVJblJhbmdlKCh0aGlzLm1pbnZhbHVlIHx8IDApKTtcbiAgICAgICAgICAgICAgICB0aGlzLnJlc2V0VmFsaWRhdGlvbnMoKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdmFsdWUgPSB0aGlzLmdldFZhbHVlSW5SYW5nZShwcm94eU1vZGVsICsgKGtleSA9PT0gJ1VQJyA/IHRoaXMuc3RlcCA6IC10aGlzLnN0ZXApKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoKGtleSA9PT0gJ1VQJyAmJiBwcm94eU1vZGVsIDw9IHZhbHVlKSB8fCAoa2V5ID09PSAnRE9XTicgJiYgcHJveHlNb2RlbCA+PSB2YWx1ZSkpIHtcbiAgICAgICAgICAgIGNvbnN0IGRlY2ltYWxSb3VuZFZhbHVlID0gTWF0aC5tYXgodGhpcy5jb3VudERlY2ltYWxzKHByb3h5TW9kZWwpLCB0aGlzLmNvdW50RGVjaW1hbHModGhpcy5zdGVwKSk7XG5cbiAgICAgICAgICAgIC8vIHVwZGF0ZSB0aGUgbW9kZWxQcm94eS5cbiAgICAgICAgICAgIHRoaXMucHJveHlNb2RlbCA9IHJvdW5kKHZhbHVlLCBkZWNpbWFsUm91bmRWYWx1ZSk7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZURpc3BsYXlUZXh0KCk7XG4gICAgICAgICAgICB0aGlzLmhhbmRsZUNoYW5nZSh0aGlzLnByb3h5TW9kZWwpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogbWV0aG9kIGlzIGNhbGxlZCBmcm9tIHRoZSBmcm9tIHdpZGdldC4gdG8gY2hlY2sgd2hldGhlciB0aGUgdmFsdWUgZW50ZXJlZCBpcyB2YWxpZCBvciBub3QuXG4gICAgICogQHJldHVybnMge29iamVjdH1cbiAgICAgKi9cbiAgICBwdWJsaWMgdmFsaWRhdGUoYzogQWJzdHJhY3RDb250cm9sKSB7XG4gICAgICAgIGlmICh0aGlzLmlzSW52YWxpZE51bWJlcikge1xuICAgICAgICAgICAgdGhpcy52YWxpZGF0ZVR5cGUgPSAnJztcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgaW52YWxpZE51bWJlcjoge1xuICAgICAgICAgICAgICAgICAgICB2YWxpZDogZmFsc2VcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5udW1iZXJOb3RJblJhbmdlKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIG51bWJlck5vdEluUmFuZ2U6IHtcbiAgICAgICAgICAgICAgICAgICAgdmFsaWQ6IGZhbHNlXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy52YWxpZGF0ZVR5cGUgPSAnJztcbiAgICAgICAgLyogV01TLTE4MjY5IHwgRXh0ZW5kaW5nIHRoZSBleGlzdGluZyB2YWxpZGF0aW9uIGZvciAncmVxdWlyZWQnICovXG4gICAgICAgIGlmICh0aGlzWydzaG93J10gJiYgdGhpc1sncmVxdWlyZWQnXSkge1xuICAgICAgICAgICAgcmV0dXJuICghIWMudmFsdWUgfHwgYy52YWx1ZSA9PT0gMCkgPyBudWxsIDogeyByZXF1aXJlZDogdHJ1ZSB9O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHB1YmxpYyB2YWxpZGF0ZUlucHV0RW50cnkoJGV2ZW50KSB7XG5cbiAgICAgICAgdGhpcy5pc0RlZmF1bHRRdWVyeSA9IGZhbHNlO1xuXG4gICAgICAgIC8vIGFsbG93IGFjdGlvbnMgaWYgY29udHJvbCBrZXkgaXMgcHJlc3NlZCBvciBpZiBiYWNrc3BhY2UgaXMgcHJlc3NlZC4gKGZvciBNb3ppbGxhKS5cbiAgICAgICAgaWYgKCRldmVudC5jdHJsS2V5IHx8IGluY2x1ZGVzKFsnQmFja3NwYWNlJywgJ0Fycm93UmlnaHQnLCAnQXJyb3dMZWZ0JywgJ1RhYicsICdFbnRlcicsICdEZWxldGUnXSwgJGV2ZW50LmtleSkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHZhbGlkaXR5ID0gbmV3IFJlZ0V4cChgXltcXFxcZFxcXFxzLSwuZSske3RoaXMuR1JPVVB9JHt0aGlzLkRFQ0lNQUx9XSRgLCAnaScpO1xuICAgICAgICBjb25zdCBpbnB1dFZhbHVlID0gJGV2ZW50LnRhcmdldD8udmFsdWV8fFwiXCI7XG5cbiAgICAgICAgLy8gd2hlbiBpbnB1dCBtb2RlIGlzIGZpbmFuY2lhbCwgZG8gbm90IHJlc3RyaWN0IHVzZXIgb24gZW50ZXJpbmcgdGhlIHZhbHVlIHdoZW4gc3RlcCB2YWx1ZSBsaW1pdCBpcyByZWFjaGVkLlxuICAgICAgICBjb25zdCBza2lwU3RlcFZhbGlkYXRpb24gPSB0aGlzLmlucHV0bW9kZSA9PT0gSU5QVVRNT0RFLkZJTkFOQ0lBTDtcblxuICAgICAgICAvLyBWYWxpZGF0ZXMgaWYgdXNlciBlbmV0ZXJzIG1vcmUgdGhhbiAxNiBkaWdpdHNcbiAgICAgICAgaWYgKGlucHV0VmFsdWUpIHtcbiAgICAgICAgICAgIGNvbnN0IHBhcnNlZFZhbCA9ICBwYXJzZUludChpbnB1dFZhbHVlLnRvU3RyaW5nKCkucmVwbGFjZSgvXFxEL2csJycpKTtcbiAgICAgICAgICAgIGlmIChwYXJzZWRWYWwudG9TdHJpbmcoKS5sZW5ndGggPiAxNSkge1xuICAgICAgICAgICAgICAgIC8vIFdNUy0yMjMyMTogSWYgdGhlIG51bWJlciBpcyBncmVhdGVyIHRoYW4gTUFYX1NBRkVfSU5URUdFUiAobW9yZSB0aGFuIDE1IG51bWJlcnMpLlxuICAgICAgICAgICAgICAgIC8vIHVzZXIgc2VsZWN0cyBhIHJhbmdlIG9mIGRpZ2l0cyBhbmQgcHJlc3NlcyBhIGtleS5cbiAgICAgICAgICAgICAgICAvLyBEbyBub3QgdGhyb3cgdmFsaWRhdGlvbiBvZiBleGNlZWRlZCBudW1iZXIgYXMgc2VsZWN0ZWQgcmFuZ2UgdmFsdWUgd2lsbCBiZSBkZWxldGVkLlxuICAgICAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkVmFsID0gd2luZG93LmdldFNlbGVjdGlvbigpO1xuICAgICAgICAgICAgICAgIGlmIChzZWxlY3RlZFZhbCAmJiBzZWxlY3RlZFZhbC50b1N0cmluZygpICYmIHNlbGVjdGVkVmFsLmZvY3VzTm9kZSA9PT0gdGhpcy5uYXRpdmVFbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyB2YWxpZGF0ZXMgZW50ZXJpbmcgb2YgZGVjaW1hbCB2YWx1ZXMgb25seSB3aGVuIHVzZXIgcHJvdmlkZXMgZGVjaW1hbCBsaW1pdChpLmUgc3RlcCBjb250YWlucyBkZWNpbWFsIHZhbHVlcykuXG4gICAgICAgIC8vIFJlc3RyaWN0IHVzZXIgZnJvbSBlbnRlcmluZyBvbmx5IGlmIHRoZSBkZWNpbWFsIGxpbWl0IGlzIHJlYWNoZWQgYW5kIHRoZSBuZXcgZGlnaXQgaXMgZW50ZXJlZCBpbiBkZWNpbWFsIHBsYWNlXG4gICAgICAgIC8vIGlmICghc2tpcFN0ZXBWYWxpZGF0aW9uICYmIGlucHV0VmFsdWUgJiYgdGhpcy5jb3VudERlY2ltYWxzKHRoaXMuc3RlcCkgJiYgKHRoaXMuY291bnREZWNpbWFscyhpbnB1dFZhbHVlKSA+PSB0aGlzLmNvdW50RGVjaW1hbHModGhpcy5zdGVwKSkgJiYgJGV2ZW50LnRhcmdldC5zZWxlY3Rpb25TdGFydCA+PSBpbnB1dFZhbHVlLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgLy8gICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgLy8gfVxuICAgICAgICAvLyB2YWxpZGF0ZXMgaWYgdXNlciBlbnRlcmVkIGFuIGludmFsaWQgY2hhcmFjdGVyLlxuICAgICAgICBpZiAoIXZhbGlkaXR5LnRlc3QoJGV2ZW50LmtleSkpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmKHRoaXMuaW5wdXRtb2RlID09PSBJTlBVVE1PREUuTkFUVVJBTCAmJiAhaXNOYU4odGhpcy5kZWNpbWFscGxhY2VzKSkge1xuICAgICAgICAgICAgaWYodGhpcy5kZWNpbWFscGxhY2VzID09PSAwICYmIHRoaXMuREVDSU1BTCA9PT0gJGV2ZW50LmtleSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IHBhcnRzID0gaW5jbHVkZXMoaW5wdXRWYWx1ZSwgdGhpcy5ERUNJTUFMKSA/IChpbnB1dFZhbHVlIGFzIGFueSkuc3BsaXQodGhpcy5ERUNJTUFMKSA6IGlucHV0VmFsdWUuc3BsaXQoJy4nKTtcbiAgICAgICAgICAgIGNvbnN0IGlzQ3Vyc29yUG9zaXRpb25BdERlY2ltYWxQbGFjZSA9ICRldmVudC50YXJnZXQuc2VsZWN0aW9uU3RhcnQgPiBwYXJ0c1swXS5sZW5ndGg7XG4gICAgICAgICAgICBpZih0aGlzLmRlY2ltYWxwbGFjZXMgPiAwICYmIHRoaXMuY291bnREZWNpbWFscyhpbnB1dFZhbHVlKSA+PSB0aGlzLmRlY2ltYWxwbGFjZXMgJiYgaXNDdXJzb3JQb3NpdGlvbkF0RGVjaW1hbFBsYWNlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gY29tbWEgY2Fubm90IGJlIGVudGVyZWQgY29uc2VjdXRpdmVseVxuICAgICAgICBpZiAoaW5jbHVkZXMoaW5wdXRWYWx1ZSwgJywnKSAmJiBpbnB1dFZhbHVlW2lucHV0VmFsdWUubGVuZ3RoIC0gMV0gPT09ICcsJyAmJiAkZXZlbnQua2V5ID09PSAnLCcpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGEgZGVjaW1hbCB2YWx1ZSBjYW4gYmUgZW50ZXJlZCBvbmx5IG9uY2UgaW4gdGhlIGlucHV0LlxuICAgICAgICBpZiAoaW5jbHVkZXMoaW5wdXRWYWx1ZSwgdGhpcy5ERUNJTUFMKSAmJiAkZXZlbnQua2V5ID09PSB0aGlzLkRFQ0lNQUwpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICAvLyAnZScgY2FuIGJlIGVudGVyZWQgb25seSBvbmNlIGluIHRoZSBpbnB1dC5cbiAgICAgICAgaWYgKGludGVyc2VjdGlvbih0b0FycmF5KGlucHV0VmFsdWUpLCBbJ2UnLCAnRSddKS5sZW5ndGggJiYgaW5jbHVkZXMoJ2VFJywgJGV2ZW50LmtleSkpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoKGluY2x1ZGVzKGlucHV0VmFsdWUsICcrJykgfHwgaW5jbHVkZXMoaW5wdXRWYWx1ZSwgJy0nKSkgJiYgKCRldmVudC5rZXkgPT09ICcrJyB8fCAkZXZlbnQua2V5ID09PSAnLScpKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgLy8gRG8gbm90IGFsbG93IHVzZXIgdG8gZW50ZXIgb25seSBzcGFjZSB3aXRob3V0IGFueSBpbnB1dCB2YWx1ZVxuICAgICAgICBpZiAoIWlucHV0VmFsdWUgJiYgJGV2ZW50LmNvZGUgPT09ICdTcGFjZScpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBvbkJhY2tzcGFjZSgkZXZlbnQpIHtcbiAgICAgICAgdGhpcy5pc0RlZmF1bHRRdWVyeSA9IGZhbHNlO1xuICAgIH1cbiAgICBvbkRlbGV0ZSgkZXZlbnQpIHtcbiAgICAgICAgdGhpcy5pc0RlZmF1bHRRdWVyeSA9IGZhbHNlO1xuICAgIH1cbiAgICBvbkVudGVyKCRldmVudCkge1xuICAgICAgICB0aGlzLmRhdGF2YWx1ZSA9ICRldmVudC50YXJnZXQudmFsdWU7XG4gICAgfVxuXG4gICAgb25Nb2RlbENoYW5nZSgkZXZlbnQpIHtcbiAgICAgICAgaWYgKHRoaXMuaW5wdXRtb2RlID09PSBJTlBVVE1PREUuTkFUVVJBTCB8fCAodGhpcy5pbnB1dG1vZGUgPT09IElOUFVUTU9ERS5GSU5BTkNJQUwgJiYgdGhpcy5uZ01vZGVsT3B0aW9ucy51cGRhdGVPbiA9PT0gJ2JsdXInKSkge1xuICAgICAgICAgICAgdGhpcy5kYXRhdmFsdWUgPSAkZXZlbnQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvblByb3BlcnR5Q2hhbmdlKGtleSwgbnYsIG92Pykge1xuICAgICAgICBpZiAoa2V5ID09PSAnbWludmFsdWUnIHx8IGtleSA9PT0gJ21heHZhbHVlJykge1xuICAgICAgICAgICAgdGhpcy5pc1ZhbGlkKG52KTtcbiAgICAgICAgfSBlbHNlIGlmIChrZXkgPT09ICdkYXRhdmFsdWUnICYmICFvdikge1xuICAgICAgICAgICAgaWYgKHRoaXMuaXNOYXR1cmFsQ3VycmVuY3koKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuY2hlY2tGb3JUcmFpbGluZ1plcm9zKHt0eXBlOiAnYmx1cid9KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5vbklucHV0Q2hhbmdlKG52KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHN1cGVyLm9uUHJvcGVydHlDaGFuZ2Uoa2V5LCBudiwgb3YpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHB1YmxpYyBvblBhc3RlKCRldmVudDogQ2xpcGJvYXJkRXZlbnQpIHtcbiAgICAgICAgY29uc3QgcGFzdGVkRGF0YSA9ICRldmVudC5jbGlwYm9hcmREYXRhLmdldERhdGEoJ3RleHQnKTtcblxuICAgICAgICBmb3IgKGNvbnN0IGNoYXIgb2YgcGFzdGVkRGF0YSkge1xuICAgICAgICAgICAgY29uc3QgbW9ja0V2ZW50ID0gbmV3IEtleWJvYXJkRXZlbnQoJ2tleXByZXNzJywgeyBrZXk6IGNoYXIgfSk7XG4gICAgICAgICAgICBpZiAodGhpcy52YWxpZGF0ZUlucHV0RW50cnkobW9ja0V2ZW50KT09PWZhbHNlKSB7XG4gICAgICAgICAgICAgICAgJGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG59XG4iXX0=
|