@wavemaker/app-ng-runtime 12.0.0-next.45104 → 12.0.0-next.45128
Sign up to get free protection for your applications and to get access to all the features.
- app-ng-runtime/build-task/bundles/index.umd.js +46 -38
- app-ng-runtime/build-task/esm2022/basic/default/anchor/anchor.build.mjs +2 -2
- app-ng-runtime/build-task/esm2022/basic/default/html/html.build.mjs +2 -2
- app-ng-runtime/build-task/esm2022/basic/default/icon/icon.build.mjs +2 -2
- app-ng-runtime/build-task/esm2022/basic/default/label/label.build.mjs +2 -2
- app-ng-runtime/build-task/esm2022/basic/default/picture/picture.build.mjs +2 -2
- app-ng-runtime/build-task/esm2022/basic/default/spinner/spinner.build.mjs +2 -2
- app-ng-runtime/build-task/esm2022/basic/progress/progress-circle/progress-circle.build.mjs +7 -2
- app-ng-runtime/build-task/esm2022/basic/rich-text-editor/rich-text-editor.build.mjs +2 -2
- app-ng-runtime/build-task/esm2022/containers/tile/tile.build.mjs +2 -2
- app-ng-runtime/build-task/esm2022/data/form/form-field/form-field.build.mjs +2 -2
- app-ng-runtime/build-task/esm2022/device/barcode-scanner/barcode-scanner.build.mjs +2 -2
- app-ng-runtime/build-task/esm2022/device/camera/camera.build.mjs +2 -2
- app-ng-runtime/build-task/esm2022/dialogs/alert-dialog/alert-dialog.build.mjs +2 -2
- app-ng-runtime/build-task/esm2022/input/calendar/calendar.build.mjs +2 -2
- app-ng-runtime/build-task/esm2022/input/color-picker/color-picker.build.mjs +3 -3
- app-ng-runtime/build-task/esm2022/input/currency/currency.build.mjs +3 -3
- app-ng-runtime/build-task/esm2022/input/default/button/button.build.mjs +2 -2
- app-ng-runtime/build-task/esm2022/input/default/button-group/button-group.build.mjs +2 -2
- app-ng-runtime/build-task/esm2022/input/default/switch/switch.build.mjs +2 -2
- app-ng-runtime/build-task/esm2022/input/file-upload/file-upload.build.mjs +5 -1
- app-ng-runtime/build-task/esm2022/page/footer/footer.build.mjs +2 -2
- app-ng-runtime/build-task/esm2022/page/header/header.build.mjs +2 -2
- app-ng-runtime/build-task/esm2022/page/layout.build.mjs +2 -2
- app-ng-runtime/build-task/esm2022/page/left-panel/left-panel.build.mjs +2 -2
- app-ng-runtime/build-task/esm2022/page/page.build.mjs +2 -2
- app-ng-runtime/build-task/esm2022/page/right-panel/right-panel.build.mjs +2 -2
- app-ng-runtime/build-task/esm2022/page/top-nav/top-nav.build.mjs +2 -2
- app-ng-runtime/build-task/fesm2022/index.mjs +46 -38
- app-ng-runtime/build-task/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/advanced/carousel/bundles/index.umd.js +1 -1
- app-ng-runtime/components/advanced/carousel/esm2022/carousel.animator.mjs +2 -2
- app-ng-runtime/components/advanced/carousel/fesm2022/index.mjs +1 -1
- app-ng-runtime/components/advanced/carousel/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/base/bundles/index.umd.js +8 -2
- app-ng-runtime/components/base/esm2022/pipes/custom-pipes.mjs +3 -3
- app-ng-runtime/components/base/esm2022/utils/live-utils.mjs +8 -2
- app-ng-runtime/components/base/fesm2022/index.mjs +8 -2
- app-ng-runtime/components/base/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/base/pipes/custom-pipes.d.ts +1 -1
- app-ng-runtime/components/base/widgets/common/base/base-field-validations.d.ts +1 -1
- app-ng-runtime/components/basic/default/anchor/anchor.component.d.ts +1 -0
- app-ng-runtime/components/basic/default/audio/audio.component.d.ts +1 -0
- app-ng-runtime/components/basic/default/bundles/index.umd.js +27 -18
- app-ng-runtime/components/basic/default/esm2022/anchor/anchor.component.mjs +4 -4
- app-ng-runtime/components/basic/default/esm2022/anchor/anchor.props.mjs +2 -1
- app-ng-runtime/components/basic/default/esm2022/audio/audio.component.mjs +5 -5
- app-ng-runtime/components/basic/default/esm2022/audio/audio.props.mjs +2 -1
- app-ng-runtime/components/basic/default/esm2022/html/html.props.mjs +2 -1
- app-ng-runtime/components/basic/default/esm2022/icon/icon.component.mjs +6 -7
- app-ng-runtime/components/basic/default/esm2022/icon/icon.props.mjs +2 -1
- app-ng-runtime/components/basic/default/esm2022/iframe/iframe.component.mjs +3 -3
- app-ng-runtime/components/basic/default/esm2022/iframe/iframe.props.mjs +3 -2
- app-ng-runtime/components/basic/default/esm2022/label/label.props.mjs +1 -1
- app-ng-runtime/components/basic/default/esm2022/picture/picture.directive.mjs +2 -2
- app-ng-runtime/components/basic/default/esm2022/picture/picture.props.mjs +3 -1
- app-ng-runtime/components/basic/default/esm2022/spinner/spinner.props.mjs +3 -2
- app-ng-runtime/components/basic/default/esm2022/video/video.component.mjs +5 -4
- app-ng-runtime/components/basic/default/esm2022/video/video.props.mjs +2 -1
- app-ng-runtime/components/basic/default/fesm2022/index.mjs +27 -18
- app-ng-runtime/components/basic/default/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/basic/default/icon/icon.component.d.ts +1 -0
- app-ng-runtime/components/basic/default/iframe/iframe.component.d.ts +1 -0
- app-ng-runtime/components/basic/default/picture/picture.directive.d.ts +2 -1
- app-ng-runtime/components/basic/default/video/video.component.d.ts +1 -0
- app-ng-runtime/components/basic/progress/bundles/index.umd.js +12 -8
- app-ng-runtime/components/basic/progress/esm2022/progress-bar/progress-bar.component.mjs +4 -4
- app-ng-runtime/components/basic/progress/esm2022/progress-bar/progress-bar.props.mjs +2 -1
- app-ng-runtime/components/basic/progress/esm2022/progress-circle/progress-circle.component.mjs +8 -6
- app-ng-runtime/components/basic/progress/esm2022/progress-circle/progress-circle.props.mjs +2 -1
- app-ng-runtime/components/basic/progress/fesm2022/index.mjs +12 -8
- app-ng-runtime/components/basic/progress/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/basic/progress/progress-bar/progress-bar.component.d.ts +1 -0
- app-ng-runtime/components/basic/progress/progress-circle/progress-circle.component.d.ts +3 -1
- app-ng-runtime/components/basic/rich-text-editor/bundles/index.umd.js +2 -0
- app-ng-runtime/components/basic/rich-text-editor/esm2022/rich-text-editor.component.mjs +2 -1
- app-ng-runtime/components/basic/rich-text-editor/esm2022/rich-text-editor.props.mjs +2 -1
- app-ng-runtime/components/basic/rich-text-editor/fesm2022/index.mjs +2 -0
- app-ng-runtime/components/basic/rich-text-editor/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/basic/search/bundles/index.umd.js +11 -9
- app-ng-runtime/components/basic/search/esm2022/search.component.mjs +14 -13
- app-ng-runtime/components/basic/search/esm2022/search.props.mjs +2 -1
- app-ng-runtime/components/basic/search/fesm2022/index.mjs +11 -9
- app-ng-runtime/components/basic/search/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/basic/search/search.component.d.ts +1 -0
- app-ng-runtime/components/containers/accordion/bundles/index.umd.js +3 -3
- app-ng-runtime/components/containers/accordion/esm2022/accordion-pane/accordion-pane.component.mjs +4 -4
- app-ng-runtime/components/containers/accordion/fesm2022/index.mjs +3 -3
- app-ng-runtime/components/containers/accordion/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/containers/panel/bundles/index.umd.js +14 -14
- app-ng-runtime/components/containers/panel/esm2022/panel.component.mjs +15 -15
- app-ng-runtime/components/containers/panel/fesm2022/index.mjs +14 -14
- app-ng-runtime/components/containers/panel/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/containers/tabs/bundles/index.umd.js +2 -2
- app-ng-runtime/components/containers/tabs/esm2022/tabs.component.mjs +3 -3
- app-ng-runtime/components/containers/tabs/fesm2022/index.mjs +2 -2
- app-ng-runtime/components/containers/tabs/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/containers/wizard/bundles/index.umd.js +17 -0
- app-ng-runtime/components/containers/wizard/esm2022/wizard.component.mjs +18 -1
- app-ng-runtime/components/containers/wizard/fesm2022/index.mjs +17 -0
- app-ng-runtime/components/containers/wizard/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/containers/wizard/wizard.component.d.ts +1 -0
- app-ng-runtime/components/data/form/bundles/index.umd.js +4 -0
- app-ng-runtime/components/data/form/esm2022/form-field/form-field.directive.mjs +5 -3
- app-ng-runtime/components/data/form/fesm2022/index.mjs +4 -2
- app-ng-runtime/components/data/form/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/data/form/form-field/form-field.directive.d.ts +1 -0
- app-ng-runtime/components/data/live-table/bundles/index.umd.js +2 -2
- app-ng-runtime/components/data/live-table/esm2022/live-table.component.mjs +3 -3
- app-ng-runtime/components/data/live-table/fesm2022/index.mjs +2 -2
- app-ng-runtime/components/data/live-table/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/data/pagination/bundles/index.umd.js +2 -0
- app-ng-runtime/components/data/pagination/esm2022/pagination.component.mjs +3 -1
- app-ng-runtime/components/data/pagination/fesm2022/index.mjs +2 -0
- app-ng-runtime/components/data/pagination/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/data/table/bundles/index.umd.js +44 -10
- app-ng-runtime/components/data/table/esm2022/table-column/table-column.directive.mjs +14 -5
- app-ng-runtime/components/data/table/esm2022/table.component.mjs +30 -7
- app-ng-runtime/components/data/table/esm2022/table.props.mjs +3 -1
- app-ng-runtime/components/data/table/fesm2022/index.mjs +45 -11
- app-ng-runtime/components/data/table/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/data/table/table.component.d.ts +8 -1
- app-ng-runtime/components/dialogs/alert-dialog/bundles/index.umd.js +6 -4
- app-ng-runtime/components/dialogs/alert-dialog/esm2022/alert-dialog.component.mjs +7 -5
- app-ng-runtime/components/dialogs/alert-dialog/fesm2022/index.mjs +6 -4
- app-ng-runtime/components/dialogs/alert-dialog/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/dialogs/confirm-dialog/bundles/index.umd.js +8 -5
- app-ng-runtime/components/dialogs/confirm-dialog/esm2022/confirm-dialog.component.mjs +9 -6
- app-ng-runtime/components/dialogs/confirm-dialog/fesm2022/index.mjs +8 -5
- app-ng-runtime/components/dialogs/confirm-dialog/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/dialogs/default/bundles/index.umd.js +20 -3
- app-ng-runtime/components/dialogs/default/dialog-header/dialog-header.component.d.ts +2 -1
- app-ng-runtime/components/dialogs/default/esm2022/base-dialog.mjs +13 -1
- app-ng-runtime/components/dialogs/default/esm2022/dialog-header/dialog-header.component.mjs +9 -4
- app-ng-runtime/components/dialogs/default/fesm2022/index.mjs +20 -3
- app-ng-runtime/components/dialogs/default/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/dialogs/design-dialog/bundles/index.umd.js +4 -4
- app-ng-runtime/components/dialogs/design-dialog/esm2022/dialog.component.mjs +5 -5
- app-ng-runtime/components/dialogs/design-dialog/fesm2022/index.mjs +4 -4
- app-ng-runtime/components/dialogs/design-dialog/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/dialogs/iframe-dialog/bundles/index.umd.js +9 -5
- app-ng-runtime/components/dialogs/iframe-dialog/esm2022/iframe-dialog.component.mjs +10 -6
- app-ng-runtime/components/dialogs/iframe-dialog/fesm2022/index.mjs +9 -5
- app-ng-runtime/components/dialogs/iframe-dialog/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/dialogs/partial-dialog/bundles/index.umd.js +9 -5
- app-ng-runtime/components/dialogs/partial-dialog/esm2022/partial-dialog.component.mjs +10 -6
- app-ng-runtime/components/dialogs/partial-dialog/fesm2022/index.mjs +9 -5
- app-ng-runtime/components/dialogs/partial-dialog/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/input/calendar/bundles/index.umd.js +2 -4
- app-ng-runtime/components/input/calendar/esm2022/calendar.component.mjs +3 -5
- app-ng-runtime/components/input/calendar/fesm2022/index.mjs +2 -4
- app-ng-runtime/components/input/calendar/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/input/chips/bundles/index.umd.js +3 -2
- app-ng-runtime/components/input/chips/esm2022/chips.component.mjs +3 -3
- app-ng-runtime/components/input/chips/esm2022/chips.props.mjs +2 -1
- app-ng-runtime/components/input/chips/fesm2022/index.mjs +3 -2
- app-ng-runtime/components/input/chips/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/input/color-picker/bundles/index.umd.js +5 -3
- app-ng-runtime/components/input/color-picker/color-picker.component.d.ts +1 -0
- app-ng-runtime/components/input/color-picker/esm2022/color-picker.component.mjs +6 -5
- app-ng-runtime/components/input/color-picker/esm2022/color-picker.props.mjs +2 -1
- app-ng-runtime/components/input/color-picker/fesm2022/index.mjs +5 -3
- app-ng-runtime/components/input/color-picker/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/input/currency/bundles/index.umd.js +4 -3
- app-ng-runtime/components/input/currency/currency.component.d.ts +1 -0
- app-ng-runtime/components/input/currency/esm2022/currency.component.mjs +6 -6
- app-ng-runtime/components/input/currency/esm2022/currency.props.mjs +2 -1
- app-ng-runtime/components/input/currency/fesm2022/index.mjs +4 -3
- app-ng-runtime/components/input/currency/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/input/default/bundles/index.umd.js +206 -110
- app-ng-runtime/components/input/default/button/button.component.d.ts +1 -0
- app-ng-runtime/components/input/default/checkbox/checkbox.component.d.ts +1 -0
- app-ng-runtime/components/input/default/esm2022/button/button.component.mjs +1 -1
- app-ng-runtime/components/input/default/esm2022/button/button.props.mjs +2 -1
- app-ng-runtime/components/input/default/esm2022/caption-position.directive.mjs +8 -7
- app-ng-runtime/components/input/default/esm2022/checkbox/checkbox.component.mjs +7 -7
- app-ng-runtime/components/input/default/esm2022/checkbox/checkbox.props.mjs +2 -1
- app-ng-runtime/components/input/default/esm2022/checkboxset/checkboxset.component.mjs +21 -16
- app-ng-runtime/components/input/default/esm2022/number/number.component.mjs +5 -5
- app-ng-runtime/components/input/default/esm2022/number/number.props.mjs +3 -1
- app-ng-runtime/components/input/default/esm2022/radioset/radioset.component.mjs +28 -23
- app-ng-runtime/components/input/default/esm2022/select/select.component.mjs +60 -30
- app-ng-runtime/components/input/default/esm2022/select/select.props.mjs +2 -1
- app-ng-runtime/components/input/default/esm2022/switch/switch.component.mjs +6 -5
- app-ng-runtime/components/input/default/esm2022/switch/switch.props.mjs +2 -1
- app-ng-runtime/components/input/default/esm2022/text/calendar/input-calendar.component.mjs +5 -5
- app-ng-runtime/components/input/default/esm2022/text/calendar/input-calendar.props.mjs +2 -1
- app-ng-runtime/components/input/default/esm2022/text/color/input-color.component.mjs +5 -5
- app-ng-runtime/components/input/default/esm2022/text/color/input-color.props.mjs +2 -1
- app-ng-runtime/components/input/default/esm2022/text/email/input-email.component.mjs +5 -5
- app-ng-runtime/components/input/default/esm2022/text/email/input-email.props.mjs +2 -1
- app-ng-runtime/components/input/default/esm2022/text/locale/number-locale.mjs +51 -14
- app-ng-runtime/components/input/default/esm2022/text/number/input-number.component.mjs +5 -5
- app-ng-runtime/components/input/default/esm2022/text/number/input-number.props.mjs +2 -1
- app-ng-runtime/components/input/default/esm2022/text/text/input-text.component.mjs +5 -5
- app-ng-runtime/components/input/default/esm2022/text/text/input-text.props.mjs +2 -1
- app-ng-runtime/components/input/default/esm2022/textarea/textarea.component.mjs +9 -6
- app-ng-runtime/components/input/default/esm2022/textarea/textarea.props.mjs +2 -1
- app-ng-runtime/components/input/default/fesm2022/index.mjs +206 -110
- app-ng-runtime/components/input/default/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/input/default/number/number.component.d.ts +1 -0
- app-ng-runtime/components/input/default/select/select.component.d.ts +4 -4
- app-ng-runtime/components/input/default/text/calendar/input-calendar.component.d.ts +1 -0
- app-ng-runtime/components/input/default/text/color/input-color.component.d.ts +1 -0
- app-ng-runtime/components/input/default/text/email/input-email.component.d.ts +1 -0
- app-ng-runtime/components/input/default/text/locale/number-locale.d.ts +1 -0
- app-ng-runtime/components/input/default/text/number/input-number.component.d.ts +1 -0
- app-ng-runtime/components/input/default/text/text/input-text.component.d.ts +1 -0
- app-ng-runtime/components/input/default/textarea/textarea.component.d.ts +4 -2
- app-ng-runtime/components/input/epoch/bundles/index.umd.js +15 -9
- app-ng-runtime/components/input/epoch/date/date.component.d.ts +1 -0
- app-ng-runtime/components/input/epoch/date-time/date-time.component.d.ts +2 -1
- app-ng-runtime/components/input/epoch/esm2022/date/date.component.mjs +6 -6
- app-ng-runtime/components/input/epoch/esm2022/date/date.props.mjs +2 -1
- app-ng-runtime/components/input/epoch/esm2022/date-time/date-time.component.mjs +10 -7
- app-ng-runtime/components/input/epoch/esm2022/date-time/date-time.props.mjs +2 -1
- app-ng-runtime/components/input/epoch/esm2022/time/time.component.mjs +7 -7
- app-ng-runtime/components/input/epoch/esm2022/time/time.props.mjs +2 -1
- app-ng-runtime/components/input/epoch/fesm2022/index.mjs +15 -9
- app-ng-runtime/components/input/epoch/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/input/epoch/time/time.component.d.ts +1 -0
- app-ng-runtime/components/input/file-upload/bundles/index.umd.js +208 -95
- app-ng-runtime/components/input/file-upload/esm2022/file-upload.component.mjs +206 -98
- app-ng-runtime/components/input/file-upload/esm2022/file-upload.props.mjs +6 -1
- app-ng-runtime/components/input/file-upload/fesm2022/index.mjs +209 -96
- app-ng-runtime/components/input/file-upload/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/input/file-upload/file-upload.component.d.ts +17 -11
- app-ng-runtime/components/input/slider/bundles/index.umd.js +5 -6
- app-ng-runtime/components/input/slider/esm2022/slider.component.mjs +6 -8
- app-ng-runtime/components/input/slider/esm2022/slider.props.mjs +2 -1
- app-ng-runtime/components/input/slider/fesm2022/index.mjs +5 -6
- app-ng-runtime/components/input/slider/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/input/slider/slider.component.d.ts +1 -0
- app-ng-runtime/components/navigation/menu/bundles/index.umd.js +10 -8
- app-ng-runtime/components/navigation/menu/esm2022/menu.component.mjs +9 -8
- app-ng-runtime/components/navigation/menu/esm2022/menu.props.mjs +2 -1
- app-ng-runtime/components/navigation/menu/esm2022/nav/nav.component.mjs +2 -2
- app-ng-runtime/components/navigation/menu/fesm2022/index.mjs +10 -8
- app-ng-runtime/components/navigation/menu/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/navigation/menu/menu.component.d.ts +1 -0
- app-ng-runtime/components/navigation/popover/bundles/index.umd.js +121 -13
- app-ng-runtime/components/navigation/popover/esm2022/popover.component.mjs +122 -15
- app-ng-runtime/components/navigation/popover/esm2022/popover.props.mjs +2 -1
- app-ng-runtime/components/navigation/popover/fesm2022/index.mjs +121 -13
- app-ng-runtime/components/navigation/popover/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/navigation/popover/popover.component.d.ts +15 -3
- app-ng-runtime/components/page/default/bundles/index.umd.js +2 -1
- app-ng-runtime/components/page/default/esm2022/page.props.mjs +4 -3
- app-ng-runtime/components/page/default/fesm2022/index.mjs +2 -1
- app-ng-runtime/components/page/default/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/page/footer/bundles/index.umd.js +2 -1
- app-ng-runtime/components/page/footer/esm2022/footer.props.mjs +3 -2
- app-ng-runtime/components/page/footer/fesm2022/index.mjs +2 -1
- app-ng-runtime/components/page/footer/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/page/header/bundles/index.umd.js +2 -1
- app-ng-runtime/components/page/header/esm2022/header.props.mjs +3 -2
- app-ng-runtime/components/page/header/fesm2022/index.mjs +2 -1
- app-ng-runtime/components/page/header/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/page/left-panel/bundles/index.umd.js +2 -1
- app-ng-runtime/components/page/left-panel/esm2022/left-panel.props.mjs +3 -2
- app-ng-runtime/components/page/left-panel/fesm2022/index.mjs +2 -1
- app-ng-runtime/components/page/left-panel/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/page/right-panel/bundles/index.umd.js +2 -1
- app-ng-runtime/components/page/right-panel/esm2022/right-panel.props.mjs +3 -2
- app-ng-runtime/components/page/right-panel/fesm2022/index.mjs +2 -1
- app-ng-runtime/components/page/right-panel/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/components/page/top-nav/bundles/index.umd.js +2 -1
- app-ng-runtime/components/page/top-nav/esm2022/top-nav.props.mjs +3 -2
- app-ng-runtime/components/page/top-nav/fesm2022/index.mjs +2 -1
- app-ng-runtime/components/page/top-nav/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/core/bundles/index.umd.js +12 -9
- app-ng-runtime/core/esm2022/public_api.mjs +2 -2
- app-ng-runtime/core/esm2022/utils/build-utils.mjs +7 -7
- app-ng-runtime/core/esm2022/utils/utils.mjs +5 -4
- app-ng-runtime/core/fesm2022/index.mjs +12 -10
- app-ng-runtime/core/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/core/public_api.d.ts +1 -1
- app-ng-runtime/core/utils/utils.d.ts +1 -0
- app-ng-runtime/locales/moment-timezone/moment-timezone-with-data.js +37 -37
- app-ng-runtime/mobile/components/device/barcode-scanner/bundles/index.umd.js +2 -1
- app-ng-runtime/mobile/components/device/barcode-scanner/esm2022/barcode-scanner.props.mjs +3 -2
- app-ng-runtime/mobile/components/device/barcode-scanner/fesm2022/index.mjs +2 -1
- app-ng-runtime/mobile/components/device/barcode-scanner/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/mobile/components/device/camera/bundles/index.umd.js +2 -1
- app-ng-runtime/mobile/components/device/camera/esm2022/camera.props.mjs +3 -2
- app-ng-runtime/mobile/components/device/camera/fesm2022/index.mjs +2 -1
- app-ng-runtime/mobile/components/device/camera/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/mobile/core/bundles/index.umd.js +18 -2
- app-ng-runtime/mobile/core/esm2022/native.xhr.mjs +19 -3
- app-ng-runtime/mobile/core/fesm2022/index.mjs +18 -2
- app-ng-runtime/mobile/core/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/package.json +1 -1
- app-ng-runtime/runtime/base/bundles/index.umd.js +7 -5
- app-ng-runtime/runtime/base/components/app-component/app.component.d.ts +2 -3
- app-ng-runtime/runtime/base/esm2022/components/app-component/app.component.mjs +5 -5
- app-ng-runtime/runtime/base/esm2022/guards/can-deactivate-page.guard.mjs +5 -4
- app-ng-runtime/runtime/base/esm2022/services/i18n.service.mjs +2 -2
- app-ng-runtime/runtime/base/fesm2022/index.mjs +7 -5
- app-ng-runtime/runtime/base/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/runtime/base/guards/can-deactivate-page.guard.d.ts +2 -1
- app-ng-runtime/runtime/base/services/i18n.service.d.ts +1 -1
- app-ng-runtime/scripts/@wavemaker/nvd3/build/nv.d3.min.js +1 -1
- app-ng-runtime/scripts/datatable/datatable.js +29 -29
- app-ng-runtime/scripts/summernote/dist/summernote-lite.min.js +2 -3
@@ -44,7 +44,7 @@ function TabsComponent_li_1_Template(rf, ctx) { if (rf & 1) {
|
|
44
44
|
i0.ɵɵattribute("data-paneid", pane_r3.widgetId);
|
45
45
|
i0.ɵɵadvance();
|
46
46
|
i0.ɵɵproperty("tabindex", pane_r3.isActive ? "0" : "-1");
|
47
|
-
i0.ɵɵattribute("
|
47
|
+
i0.ɵɵattribute("aria-label", pane_r3.badgevalue ? pane_r3.title + " " + pane_r3.badgevalue : pane_r3.title)("icon-position", ctx_r4.iconposition)("title", pane_r3.title)("aria-selected", pane_r3.isActive);
|
48
48
|
i0.ɵɵadvance();
|
49
49
|
i0.ɵɵproperty("ngIf", pane_r3.paneicon);
|
50
50
|
i0.ɵɵadvance();
|
@@ -454,7 +454,7 @@ export class TabsComponent extends StylableComponent {
|
|
454
454
|
type: Component,
|
455
455
|
args: [{ selector: 'div[wmTabs]', exportAs: 'wmTabs', providers: [
|
456
456
|
provideAsWidgetRef(TabsComponent)
|
457
|
-
], template: "<ul class=\"nav nav-tabs\" [ngClass]=\"{'nav-stacked': vertical, 'nav-justified': justified}\" role=\"tablist\">\n <li class=\"tab-header\" *ngFor=\"let pane of panes; let i=index;\" [attr.data-paneid]=\"pane.widgetId\" [ngClass]=\"{'active': pane.isActive, 'disabled': pane.disabled}\"\n [hidden]=\"!pane.show\" role=\"presentation\">\n <a
|
457
|
+
], template: "<ul class=\"nav nav-tabs\" [ngClass]=\"{'nav-stacked': vertical, 'nav-justified': justified}\" role=\"tablist\">\n <li class=\"tab-header\" *ngFor=\"let pane of panes; let i=index;\" [attr.data-paneid]=\"pane.widgetId\" [ngClass]=\"{'active': pane.isActive, 'disabled': pane.disabled}\"\n [hidden]=\"!pane.show\" role=\"presentation\">\n <a [attr.aria-label]=\"pane.badgevalue ? pane.title + ' ' + pane.badgevalue : pane.title\"\n [attr.icon-position]=\"iconposition\" \n [attr.title]=\"pane.title\"\n [tabindex]=\"pane.isActive ? '0' : '-1'\"\n class=\"tab-heading\" href=\"javascript:void(0);\"\n [attr.aria-selected]=\"pane.isActive\" role=\"tab\" (click)=\"pane.select($event); pane.tabpaneHeaderClick($event, i);\" (keydown)=\"onkeydown($event)\">\n <i [ngClass]=\"['app-icon', pane.paneicon]\" *ngIf=\"pane.paneicon\"></i>\n <span [textContent]=\"pane.title\"></span>\n <span *ngIf=\"pane.badgevalue\" class=\"label label-{{pane.badgetype}}\" [textContent]=\"pane.badgevalue\"></span>\n </a>\n </li>\n</ul>\n<div class=\"tab-content\" *ngIf=\"type !== 'dynamic'\" [ngClass]=\"{'tab-stacked': vertical, 'tab-justified': justified}\">\n <ng-content ngProjectAs=\"div[wmTabPane]\"></ng-content>\n</div>\n<div class=\"tab-content\" *ngIf=\"type === 'dynamic'\" [ngClass]=\"{'tab-stacked': vertical, 'tab-justified': justified}\">\n <div *ngIf=\"fieldDefs && !fieldDefs.length\">{{nodatamessage}}</div>\n <ng-content select=\"div[wmRepeatTemplate]\"></ng-content>\n</div>\n" }]
|
458
458
|
}], () => [{ type: i0.Injector }, { type: i1.DynamicComponentRefProvider }, { type: undefined, decorators: [{
|
459
459
|
type: Attribute,
|
460
460
|
args: ['transition']
|
@@ -474,4 +474,4 @@ export class TabsComponent extends StylableComponent {
|
|
474
474
|
args: [TabPaneComponent]
|
475
475
|
}] }); })();
|
476
476
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(TabsComponent, { className: "TabsComponent", filePath: "tabs.component.ts", lineNumber: 51 }); })();
|
477
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFicy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3dpZGdldHMvY29udGFpbmVycy90YWJzL3NyYy90YWJzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvd2lkZ2V0cy9jb250YWluZXJzL3RhYnMvc3JjL3RhYnMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUdILFNBQVMsRUFDVCxTQUFTLEVBQ1QsZUFBZSxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQ3BDLFFBQVEsRUFFUixRQUFRLEVBQ1IsU0FBUyxFQUNaLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFDSCxRQUFRLEVBQ1IsVUFBVSxFQUNWLDJCQUEyQixFQUMzQixJQUFJLEVBQ0osV0FBVyxFQUNYLGdCQUFnQixFQUNuQixNQUFNLFVBQVUsQ0FBQztBQUNsQixPQUFPLEVBQ0gsaUJBQWlCLEVBRWpCLGtCQUFrQixFQUNsQixNQUFNLEVBQ04saUJBQWlCLEVBQ2pCLGVBQWUsRUFDbEIsTUFBTSxxQkFBcUIsQ0FBQztBQUU3QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUM3QyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNqRSxPQUFPLEVBQUMsSUFBSSxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFDLE1BQU0sV0FBVyxDQUFDOzs7Ozs7Ozs7Ozs7O0lDM0JuRSx1QkFBcUU7OztJQUFsRSxzRUFBdUM7OztJQUUxQywwQkFBNEc7OztJQUE5RSxnRUFBc0M7SUFBQyxnREFBK0I7Ozs7SUFKNUcsQUFGSiw2QkFDOEMsV0FFMEc7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UnpCLFNBQVM7MkJBQ0ksYUFBYSxZQUViLFFBQVEsYUFDUDtvQkFDUCxrQkFBa0IsZUFBZTtpQkFDcEM7O3NCQWlDSSxTQUFTO3VCQUFDLFlBQVk7O3NCQUN0QixTQUFTO3VCQUFDLGNBQWM7O3NCQUV4QixNQUFNO3VCQUFDLGtCQUFrQjs7c0JBQUcsUUFBUTtxQkFWTixZQUFZO2tCQUE5QyxXQUFXO21CQUFDLG9CQUFvQjtZQUVFLEtBQUs7a0JBQXZDLGVBQWU7bUJBQUMsZ0JBQWdCOztrRkExQnhCLGFBQWEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIEFmdGVyQ29udGVudEluaXQsXG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBBdHRyaWJ1dGUsXG4gICAgQ29tcG9uZW50LFxuICAgIENvbnRlbnRDaGlsZHJlbiwgSG9zdEJpbmRpbmcsIEluamVjdCxcbiAgICBJbmplY3RvcixcbiAgICBPbkluaXQsXG4gICAgT3B0aW9uYWwsXG4gICAgUXVlcnlMaXN0XG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQge1xuICAgIGFkZENsYXNzLFxuICAgIGFwcGVuZE5vZGUsXG4gICAgRHluYW1pY0NvbXBvbmVudFJlZlByb3ZpZGVyLFxuICAgIG5vb3AsXG4gICAgcmVtb3ZlQ2xhc3MsXG4gICAgU3RhdGVQZXJzaXN0ZW5jZVxufSBmcm9tICdAd20vY29yZSc7XG5pbXBvcnQge1xuICAgIEFQUExZX1NUWUxFU19UWVBFLFxuICAgIElXaWRnZXRDb25maWcsXG4gICAgcHJvdmlkZUFzV2lkZ2V0UmVmLFxuICAgIHN0eWxlcixcbiAgICBTdHlsYWJsZUNvbXBvbmVudCxcbiAgICBjcmVhdGVBcnJheUZyb21cbn0gZnJvbSAnQHdtL2NvbXBvbmVudHMvYmFzZSc7XG5cbmltcG9ydCB7IFRhYnNBbmltYXRvciB9IGZyb20gJy4vdGFicy5hbmltYXRvcic7XG5pbXBvcnQgeyByZWdpc3RlclByb3BzIH0gZnJvbSAnLi90YWJzLnByb3BzJztcbmltcG9ydCB7IFRhYlBhbmVDb21wb25lbnQgfSBmcm9tICcuL3RhYi1wYW5lL3RhYi1wYW5lLmNvbXBvbmVudCc7XG5pbXBvcnQge2ZpbmQsIGZpbmRJbmRleCwgZm9yRWFjaCwgZ2V0LCBpbmRleE9mLCBpc0FycmF5LCBpc0VtcHR5fSBmcm9tIFwibG9kYXNoLWVzXCI7XG5cbmRlY2xhcmUgY29uc3QgJDtcblxuY29uc3QgREVGQVVMVF9DTFMgPSAnYXBwLXRhYnMgY2xlYXJmaXgnO1xuY29uc3QgV0lER0VUX0NPTkZJRzogSVdpZGdldENvbmZpZyA9IHtcbiAgICB3aWRnZXRUeXBlOiAnd20tdGFicycsXG4gICAgaG9zdENsYXNzOiBERUZBVUxUX0NMU1xufTtcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdkaXZbd21UYWJzXScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3RhYnMuY29tcG9uZW50Lmh0bWwnLFxuICAgIGV4cG9ydEFzOiAnd21UYWJzJyxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgcHJvdmlkZUFzV2lkZ2V0UmVmKFRhYnNDb21wb25lbnQpXG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBUYWJzQ29tcG9uZW50IGV4dGVuZHMgU3R5bGFibGVDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlckNvbnRlbnRJbml0LCBPbkluaXQsIEFmdGVyVmlld0luaXQge1xuICAgIHN0YXRpYyBpbml0aWFsaXplUHJvcHMgPSByZWdpc3RlclByb3BzKCk7XG5cbiAgICBwdWJsaWMgZGVmYXVsdHBhbmVpbmRleDogbnVtYmVyO1xuICAgIHB1YmxpYyB0cmFuc2l0aW9uOiBzdHJpbmc7XG4gICAgcHVibGljIHRhYnNwb3NpdGlvbjogc3RyaW5nO1xuICAgIHB1YmxpYyBzdGF0ZWhhbmRsZXI6IGFueTtcbiAgICBwcml2YXRlIHN0YXRlUGVyc2lzdGVuY2U6IFN0YXRlUGVyc2lzdGVuY2U7XG5cbiAgICBwdWJsaWMgdmVydGljYWw6IGJvb2xlYW47XG4gICAgcHVibGljIGp1c3RpZmllZDogYm9vbGVhbjtcbiAgICBwcml2YXRlIGFjdGl2ZVRhYjogVGFiUGFuZUNvbXBvbmVudDtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHByb21pc2VSZXNvbHZlckZuOiBGdW5jdGlvbjtcbiAgICBwcml2YXRlIHRhYnNBbmltYXRvcjogVGFic0FuaW1hdG9yO1xuICAgIHByaXZhdGUgX29sZFBhbmVJbmRleDogbnVtYmVyO1xuICAgIHByaXZhdGUgaXNQYWdlTG9hZENhbGw6IGJvb2xlYW47XG4gICAgcHJpdmF0ZSBkeW5hbWljQ29tcG9uZW50UHJvdmlkZXI7XG4gICAgcHJpdmF0ZSBfZHluYW1pY0NvbnRleHQ7XG4gICAgcHJpdmF0ZSBkeW5hbWljUGFuZUluZGV4O1xuICAgIHB1YmxpYyBkeW5hbWljVGFicztcbiAgICBwdWJsaWMgZmllbGREZWZzO1xuICAgIHB1YmxpYyB0eXBlO1xuICAgIHB1YmxpYyBub2RhdGFtZXNzYWdlO1xuXG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLmljb24tcG9zaXRpb24nKSBpY29ucG9zaXRpb246IHN0cmluZyA9ICcnO1xuXG4gICAgQENvbnRlbnRDaGlsZHJlbihUYWJQYW5lQ29tcG9uZW50KSBwYW5lczogUXVlcnlMaXN0PFRhYlBhbmVDb21wb25lbnQ+O1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIGluajogSW5qZWN0b3IsXG4gICAgICAgIGR5bmFtaWNDb21wb25lbnRQcm92aWRlcjogRHluYW1pY0NvbXBvbmVudFJlZlByb3ZpZGVyLFxuICAgICAgICBAQXR0cmlidXRlKCd0cmFuc2l0aW9uJykgX3RyYW5zaXRpb246IHN0cmluZyxcbiAgICAgICAgQEF0dHJpYnV0ZSgndGFic3Bvc2l0aW9uJykgX3RhYnNQb3NpdGlvbjogc3RyaW5nLFxuICAgICAgICBzdGF0ZVBlcnNpc3RlbmNlOiBTdGF0ZVBlcnNpc3RlbmNlLFxuICAgICAgICBASW5qZWN0KCdFWFBMSUNJVF9DT05URVhUJykgQE9wdGlvbmFsKCkgZXhwbGljaXRDb250ZXh0OiBhbnlcbiAgICApIHtcbiAgICAgICAgLy8gaGFuZGxlIHRvIHRoZSBwcm9taXNlIHJlc29sdmVyXG4gICAgICAgIGxldCByZXNvbHZlRm46IEZ1bmN0aW9uID0gbm9vcDtcbiAgICAgICAgc3VwZXIoaW5qLCBXSURHRVRfQ09ORklHLCBleHBsaWNpdENvbnRleHQsIG5ldyBQcm9taXNlKHJlcyA9PiByZXNvbHZlRm4gPSByZXMpKTtcblxuICAgICAgICB0aGlzLnRyYW5zaXRpb24gPSBfdHJhbnNpdGlvbjtcbiAgICAgICAgdGhpcy50YWJzcG9zaXRpb24gPSBfdGFic1Bvc2l0aW9uO1xuICAgICAgICB0aGlzLnN0YXRlUGVyc2lzdGVuY2UgPSBzdGF0ZVBlcnNpc3RlbmNlO1xuICAgICAgICB0aGlzLmR5bmFtaWNDb21wb25lbnRQcm92aWRlciA9IGR5bmFtaWNDb21wb25lbnRQcm92aWRlcjtcbiAgICAgICAgdGhpcy5keW5hbWljVGFicyA9IFtdO1xuICAgICAgICB0aGlzLmR5bmFtaWNQYW5lSW5kZXggPSAwO1xuXG4gICAgICAgIHRoaXMucHJvbWlzZVJlc29sdmVyRm4gPSByZXNvbHZlRm47XG5cbiAgICAgICAgc3R5bGVyKHRoaXMubmF0aXZlRWxlbWVudCwgdGhpcywgQVBQTFlfU1RZTEVTX1RZUEUuQ09OVEFJTkVSKTtcblxuICAgIH1cblxuICAgIGFuaW1hdGVJbiAoZWxlbWVudDogSFRNTEVsZW1lbnQpIHtcbiAgICAgICAgY29uc3QgdGFiSGVhZGVyID0gJChlbGVtZW50KTtcbiAgICAgICAgLy8gd2hlbiB0aGUgYW5pbWF0aW9uIGlzIG5vdCBwcmVzZW50IHRvZ2dsZSB0aGUgYWN0aXZlIGNsYXNzLlxuICAgICAgICB0YWJIZWFkZXIuc2libGluZ3MoJy5hY3RpdmUnKS5yZW1vdmVDbGFzcygnYWN0aXZlJyk7XG4gICAgICAgIHRhYkhlYWRlci5hZGRDbGFzcygnYWN0aXZlJyk7XG5cbiAgICAgICAgY29uc3QgdWwgPSB0aGlzLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcigndWwubmF2Lm5hdi10YWJzJyk7XG5cbiAgICAgICAgLy8gbW92ZSB0aGUgdGFiaGVhZGVyIGludG8gdGhlIHZpZXdwb3J0XG4gICAgICAgIGNvbnN0ICRwcmV2SGVhZGVyRWxlID0gdGFiSGVhZGVyLnByZXYoKTtcbiAgICAgICAgaWYgKCRwcmV2SGVhZGVyRWxlLmxlbmd0aCkge1xuICAgICAgICAgICAgdWwuc2Nyb2xsTGVmdCA9ICRwcmV2SGVhZGVyRWxlWzBdLm9mZnNldExlZnQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB1bC5zY3JvbGxMZWZ0ID0gMDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIHVzZWQgdG8gcmVnaXN0ZXIgdGhlIGR5bmFtaWMgcGFuZXMuXG4gICAgICogQWZ0ZXIgYWxsIHBhbmVzIGFyZSBpbml0aWFsemVkLCB1cGRhdGUgdGhlIHF1ZXJ5bGlzdCBtYW51YWxseSBiYXNlZCBvbiBpbmRleC5cbiAgICAgKiBAcGFyYW0gcGFuZVJlZiAtIHJlZnJlbmNlIG9mIHRoZSB0YWJwYW5lXG4gICAgICovXG4gICAgcHVibGljIHJlZ2lzdGVyRHluYW1pY1RhYihwYW5lUmVmKSB7XG4gICAgICAgIHRoaXMuZHluYW1pY1RhYnMucHVzaChwYW5lUmVmKTtcbiAgICAgICAgY29uc3QgaXNMYXN0UGFuZSA9ICB0aGlzLmR5bmFtaWNUYWJzLmxlbmd0aCA9PT0gdGhpcy5keW5hbWljUGFuZUluZGV4O1xuICAgICAgICBpZiAoaXNMYXN0UGFuZSkge1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmR5bmFtaWNUYWJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgbmV3UGFuZVJlZiA9IGZpbmQodGhpcy5keW5hbWljVGFicywgcGFuZSA9PiBwYW5lLmR5bmFtaWNQYW5lSW5kZXggPT09IGkpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGlzUGFuZUFscmVhZHlFeGlzdCA9IGZpbmQodGhpcy5wYW5lcy50b0FycmF5KCksIG5ld1BhbmVSZWYpO1xuICAgICAgICAgICAgICAgIGlmICghaXNQYW5lQWxyZWFkeUV4aXN0KSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucGFuZXMucmVzZXQoWy4uLnRoaXMucGFuZXMudG9BcnJheSgpLCBuZXdQYW5lUmVmXSk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChuZXdQYW5lUmVmLmFjdGl2ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3UGFuZVJlZi5zZWxlY3QoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIDIwKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIHRvIGFkZCB0aGUgdGFicGFuZSBkeW5hbWljYWxseVxuICAgICAqIEBwYXJhbSB0YWJwYW5lcyAtIGxpc3Qgb2YgdGFicGFuZXNcbiAgICAgKi9cbiAgICBwdWJsaWMgYWRkUGFuZSh0YWJwYW5lcykge1xuICAgICAgICBpZiAoIWlzQXJyYXkodGFicGFuZXMpKSB7XG4gICAgICAgICAgICB0YWJwYW5lcyA9IFt0YWJwYW5lc107XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcGFuZU5hbWVzTGlzdCA9IFtdO1xuICAgICAgICBmb3JFYWNoKHRhYnBhbmVzLCAocGFuZSwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGlzUGFuZUFscmVhZHlDcmVhdGVkID0gZmluZCh0aGlzLnBhbmVzLnRvQXJyYXkoKSwge25hbWU6IHBhbmUubmFtZX0pO1xuICAgICAgICAgICAgY29uc3QgaXNQYW5lTmFtZUV4aXN0ID0gaW5kZXhPZihwYW5lTmFtZXNMaXN0LCBwYW5lLm5hbWUpO1xuICAgICAgICAgICAgLy8gSWYgdXNlciB0cmllcyB0byBhZGQgdGFicGFuZSB3aXRoIHRoZSBzYW1lIG5hbWUgd2hpY2ggaXMgYWxyZWFkeSBleGlzdHMgdGhlbiBkbyBub3QgY3JlYXRlIHRoZSBwYW5lXG4gICAgICAgICAgICBpZiAoaXNQYW5lQWxyZWFkeUNyZWF0ZWQgfHwgaXNQYW5lTmFtZUV4aXN0ID4gMCkge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybihgVGhlIHRhYiBwYW5lIHdpdGggbmFtZSAke3BhbmUubmFtZX0gYWxyZWFkeSBleGlzdHNgKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGxldCBwYXJhbU1hcmt1cCA9ICcnO1xuICAgICAgICAgICAgbGV0IHByb3BzVG1wbCA9ICcnO1xuICAgICAgICAgICAgdGhpcy5keW5hbWljUGFuZUluZGV4Kys7XG4gICAgICAgICAgICBjb25zdCBuYW1lID0gcGFuZS5uYW1lID8gcGFuZS5uYW1lIDogYHRhYnBhbmUke3RoaXMucGFuZXMudG9BcnJheSgpLmxlbmd0aCArIChpbmRleCArIDEpfWA7XG4gICAgICAgICAgICBwYW5lTmFtZXNMaXN0LnB1c2gobmFtZSk7XG4gICAgICAgICAgICBjb25zdCBwYXJ0aWFsUGFyYW1zID0gZ2V0KHBhbmUsICdwYXJhbXMnKTtcblxuICAgICAgICAgICAgZm9yRWFjaChwYW5lLCAodmFsdWUsIGtleSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChrZXkgIT09ICdwYXJhbXMnKSB7XG4gICAgICAgICAgICAgICAgICAgIHByb3BzVG1wbCA9IGAke3Byb3BzVG1wbH0gJHtrZXl9PVwiJHt2YWx1ZX1cImA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGZvckVhY2gocGFydGlhbFBhcmFtcywgKHZhbHVlLCBrZXkpID0+IHtcbiAgICAgICAgICAgICAgICBwYXJhbU1hcmt1cCA9IGAke3BhcmFtTWFya3VwfSA8d20tcGFyYW0gbmFtZT1cIiR7a2V5fVwiIHZhbHVlPVwiJHt2YWx1ZX1cIj48L3dtLXBhcmFtPmA7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGNvbnN0IG1hcmt1cCA9IGA8d20tdGFicGFuZSBkeW5hbWljUGFuZUluZGV4PVwiJHt0aGlzLmR5bmFtaWNQYW5lSW5kZXggLSAxfVwiIGlzZHluYW1pYz1cInRydWVcIiBuYW1lPVwiJHtuYW1lfVwiICR7cHJvcHNUbXBsfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAke3BhcmFtTWFya3VwfVxuICAgICAgICAgICAgICAgICAgICAgICAgPC93bS10YWJwYW5lPmA7XG5cbiAgICAgICAgICAgIGlmICghdGhpcy5fZHluYW1pY0NvbnRleHQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9keW5hbWljQ29udGV4dCA9IE9iamVjdC5jcmVhdGUodGhpcy52aWV3UGFyZW50KTtcbiAgICAgICAgICAgICAgICB0aGlzLl9keW5hbWljQ29udGV4dFt0aGlzLmdldEF0dHIoJ3dtVGFiJyldID0gdGhpcztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5keW5hbWljQ29tcG9uZW50UHJvdmlkZXIuYWRkQ29tcG9uZW50KHRoaXMuZ2V0TmF0aXZlRWxlbWVudCgpLnF1ZXJ5U2VsZWN0b3IoJy50YWItY29udGVudCcpLCBtYXJrdXAsIHRoaXMuX2R5bmFtaWNDb250ZXh0LCB7aW5qOiB0aGlzLmluan0pO1xuXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gcGFuZU5hbWVzTGlzdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyB0byByZW1vdmUgdGhlIHRhYnBhbmVcbiAgICAgKiBAcGFyYW0gcGFuZUluZGV4IC0gaW5kZXggb2YgdGhlIHBhbmVcbiAgICAgKi9cbiAgICBwdWJsaWMgcmVtb3ZlUGFuZShwYW5lTmFtZSkge1xuICAgICAgICBjb25zdCBwYW5lUmVmID0gdGhpcy5nZXRQYW5lUmVmQnlOYW1lKHBhbmVOYW1lKTtcbiAgICAgICAgaWYgKHBhbmVSZWYpIHtcbiAgICAgICAgICAgIHBhbmVSZWYucmVtb3ZlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUYWJQYW5lIGNoaWxkcmVuIGNvbXBvbmVudHMgaW52b2tlIHRoaXMgbWV0aG9kIHRvIGNvbW11bmljYXRlIHdpdGggdGhlIHBhcmVudFxuICAgICAqIGlmIHRoZSBldnQgYXJndW1lbnQgaXMgZGVmaW5lZCBvbi1jaGFuZ2UgY2FsbGJhY2sgd2lsbCBiZSBpbnZva2VkLlxuICAgICAqL1xuICAgIHB1YmxpYyBub3RpZnlDaGFuZ2UocGFuZVJlZjogVGFiUGFuZUNvbXBvbmVudCwgZXZ0OiBFdmVudCwgaXNLZXlCb2FyZEV2ZW50OiBib29sZWFuKSB7XG4gICAgICAgIGlmICghdGhpcy5pc1NlbGVjdGFibGVUYWIocGFuZVJlZikpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBoZWFkZXJFbGVtZW50O1xuICAgICAgICAvLyBpbnZva2UgZGVzZWxlY3QgZXZlbnQgY2FsbGJhY2sgb24gdGhlIHByZXNldCBhY3RpdmUgdGFiXG4gICAgICAgIGlmICghaXNFbXB0eSh0aGlzLmFjdGl2ZVRhYikpIHtcbiAgICAgICAgICAgIHRoaXMuYWN0aXZlVGFiLmRlc2VsZWN0KCk7XG4gICAgICAgIH1cblxuXG4gICAgICAgIHRoaXMuYWN0aXZlVGFiID0gcGFuZVJlZi5nZXRXaWRnZXQoKTtcbiAgICAgICAgY29uc3QgbmV3UGFuZUluZGV4ID0gdGhpcy5nZXRQYW5lSW5kZXhCeVJlZihwYW5lUmVmKTtcbiAgICAgICAgY29uc3QgbW9kZSA9IHRoaXMuc3RhdGVQZXJzaXN0ZW5jZS5jb21wdXRlTW9kZSh0aGlzLnN0YXRlaGFuZGxlcik7XG4gICAgICAgIGlmICghdGhpcy5pc1BhZ2VMb2FkQ2FsbCAmJiBtb2RlICYmIG1vZGUudG9Mb3dlckNhc2UoKSAhPT0gJ25vbmUnKSB7XG4gICAgICAgICAgICB0aGlzLnN0YXRlUGVyc2lzdGVuY2Uuc2V0V2lkZ2V0U3RhdGUodGhpcywgdGhpcy5hY3RpdmVUYWIubmFtZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmRlZmF1bHRwYW5laW5kZXggPSB0aGlzLmdldFBhbmVJbmRleEJ5UmVmKHBhbmVSZWYpO1xuICAgICAgICAgICAgdGhpcy5pc1BhZ2VMb2FkQ2FsbCA9IGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gaW52b2tlIHNlbGVjdCBjYWxsYmFjayBvbiB0aGUgc2VsZWN0ZWQgdGFiXG4gICAgICAgIHBhbmVSZWYuaW52b2tlT25TZWxlY3RDYWxsYmFjayhldnQpO1xuXG4gICAgICAgIC8vIGludm9rZSBjaGFuZ2UgY2FsbGJhY2sgaWYgdGhlIGV2dCBpcyBwcmVzZW50LCBzZWxlY3QgYSB0YWIgcHJvZ3JhbW1hdGljYWxseSB3aWxsIG5vdCBoYXZlIHRoZSBldmVudFxuICAgICAgICBpZiAoZXZ0KSB7XG4gICAgICAgICAgICB0aGlzLmludm9rZUV2ZW50Q2FsbGJhY2soJ2NoYW5nZScsIHtcbiAgICAgICAgICAgICAgICAkZXZlbnQ6IGV2dCxcbiAgICAgICAgICAgICAgICBuZXdQYW5lSW5kZXg6IG5ld1BhbmVJbmRleCxcbiAgICAgICAgICAgICAgICBvbGRQYW5lSW5kZXg6IHRoaXMuX29sZFBhbmVJbmRleCB8fCAwXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9vbGRQYW5lSW5kZXggPSBuZXdQYW5lSW5kZXg7XG5cbiAgICAgICAgaWYgKGV2dCkge1xuICAgICAgICAgICAgaGVhZGVyRWxlbWVudCA9ICQoZXZ0LnRhcmdldCBhcyBIVE1MRWxlbWVudCkuY2xvc2VzdCgnbGkudGFiLWhlYWRlcicpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghZXZ0IHx8ICFoZWFkZXJFbGVtZW50IHx8ICFoZWFkZXJFbGVtZW50Lmxlbmd0aCkge1xuICAgICAgICAgICAgaGVhZGVyRWxlbWVudCA9IHRoaXMubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKGBsaVtkYXRhLXBhbmVpZD0ke3BhbmVSZWYud2lkZ2V0SWR9XWApO1xuICAgICAgICAgICAgY29uc3QgaW5zaWRlVGFicyA9ICEhJChoZWFkZXJFbGVtZW50KS5jbG9zZXN0KCcuYXBwLXRhYnMnKVxuICAgICAgICAgICAgICAgIC5wYXJlbnQoKS5jbG9zZXN0KCcuYXBwLXRhYnMnKS5sZW5ndGg7XG4gICAgICAgICAgICBpZiAoIWluc2lkZVRhYnMgJiYgaXNLZXlCb2FyZEV2ZW50KSB7XG4gICAgICAgICAgICAgICAgJChoZWFkZXJFbGVtZW50KS5jaGlsZHJlbigpLmZvY3VzKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5hbmltYXRlSW4oaGVhZGVyRWxlbWVudCk7XG5cbiAgICAgICAgLy8gdGhpcy5zZXRUYWJzTGVmdFBvc2l0aW9uKHRoaXMuZ2V0UGFuZUluZGV4QnlSZWYodGhpcy5hY3RpdmVUYWIpLCB0aGlzLnBhbmVzLmxlbmd0aCk7XG4gICAgICAgIGlmICh0aGlzLmNhblNsaWRlKCkpIHtcbiAgICAgICAgICAgIGlmICghdGhpcy50YWJzQW5pbWF0b3IpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnRhYnNBbmltYXRvciA9IG5ldyBUYWJzQW5pbWF0b3IodGhpcyk7XG4gICAgICAgICAgICAgICAgdGhpcy50YWJzQW5pbWF0b3Iuc2V0R2VzdHVyZXNFbmFibGVkKHRoaXMuY2FuU2xpZGUoKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnRhYnNBbmltYXRvci50cmFuc2l0aW9uVGFiSW50b1ZpZXcoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBnb1RvVGFiKHRhYkluZGV4KSB7XG4gICAgICAgIGlmICh0aGlzLmlzVmFsaWRQYW5lSW5kZXgodGFiSW5kZXggLSAxKSkge1xuICAgICAgICAgICAgY29uc3QgdGFiID0gdGhpcy5nZXRQYW5lUmVmQnlJbmRleCh0YWJJbmRleCAtIDEpO1xuICAgICAgICAgICAgdGFiLnNlbGVjdCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRQYW5lSW5kZXhCeVJlZihwYW5lUmVmOiBUYWJQYW5lQ29tcG9uZW50KTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucGFuZXMudG9BcnJheSgpLmluZGV4T2YocGFuZVJlZik7XG4gICAgfVxuXG4gICAgLy8gUmV0dXJucyB0aGUgYWN0aXZlIHRhYiBpbmRleCBmcm9tIHRhYnMuXG4gICAgcHVibGljIGdldEFjdGl2ZVRhYkluZGV4KCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiBmaW5kSW5kZXgodGhpcy5wYW5lcy50b0FycmF5KCksIHtpc0FjdGl2ZTogdHJ1ZX0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNWYWxpZFBhbmVJbmRleChpbmRleDogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAoaW5kZXggPj0gMCAmJiBpbmRleCA8IHRoaXMucGFuZXMubGVuZ3RoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFBhbmVSZWZCeUluZGV4KGluZGV4OiBudW1iZXIpOiBUYWJQYW5lQ29tcG9uZW50IHtcbiAgICAgICAgcmV0dXJuIHRoaXMucGFuZXMudG9BcnJheSgpW2luZGV4XTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFBhbmVSZWZCeU5hbWUobmFtZTogc3RyaW5nKTogVGFiUGFuZUNvbXBvbmVudCB7XG4gICAgICAgIHJldHVybiBmaW5kKHRoaXMucGFuZXMudG9BcnJheSgpLCB7bmFtZTogbmFtZX0pO1xuICAgIH1cblxuICAgIC8vIHJldHVybnMgZmFsc2UgaWYgdGhlIHBhbmUgaXMgaGlkZGVuIG9yIGRpc2FibGVkXG4gICAgcHJpdmF0ZSBpc1NlbGVjdGFibGVUYWIocGFuZVJlZjogVGFiUGFuZUNvbXBvbmVudCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gcGFuZVJlZi5zaG93ICYmICFwYW5lUmVmLmRpc2FibGVkO1xuICAgIH1cblxuICAgIHByaXZhdGUgY2FuU2xpZGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnRyYW5zaXRpb24gPT09ICdzbGlkZScgJiYgIXRoaXMudmVydGljYWw7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRTZWxlY3RhYmxlVGFiQWZ0ZXJJbmRleChpbmRleDogbnVtYmVyKTogVGFiUGFuZUNvbXBvbmVudCB7XG4gICAgICAgIGZvciAobGV0IGkgPSBpbmRleCArIDE7IGkgPCB0aGlzLnBhbmVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCBwYW5lID0gdGhpcy5nZXRQYW5lUmVmQnlJbmRleChpKTtcbiAgICAgICAgICAgIGlmICh0aGlzLmlzU2VsZWN0YWJsZVRhYihwYW5lKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBwYW5lO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChpbmRleCA9PT0gdGhpcy5wYW5lcy5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgICBjb25zdCBwYW5lID0gdGhpcy5nZXRQYW5lUmVmQnlJbmRleCgwKTtcbiAgICAgICAgICAgICBpZiAodGhpcy5pc1NlbGVjdGFibGVUYWIocGFuZSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcGFuZTtcbiAgICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFNlbGVjdGFibGVUYWJCZWZvcmVJbmRleChpbmRleDogbnVtYmVyKTogVGFiUGFuZUNvbXBvbmVudCB7XG4gICAgICAgIGZvciAobGV0IGkgPSBpbmRleCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgICAgICBjb25zdCBwYW5lID0gdGhpcy5nZXRQYW5lUmVmQnlJbmRleChpKTtcbiAgICAgICAgICAgIGlmICh0aGlzLmlzU2VsZWN0YWJsZVRhYihwYW5lKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBwYW5lO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChpbmRleCA9PT0gMCkge1xuICAgICAgICAgICAgY29uc3QgcGFuZSA9IHRoaXMuZ2V0UGFuZVJlZkJ5SW5kZXgodGhpcy5wYW5lcy5sZW5ndGggLSAxKTtcbiAgICAgICAgICAgIGlmICh0aGlzLmlzU2VsZWN0YWJsZVRhYihwYW5lKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBwYW5lO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gc2VsZWN0IG5leHQgdGFiIHJlbGF0aXZlIHRvIHRoZSBjdXJyZW50IGFjdGl2ZSB0YWJcbiAgICBwdWJsaWMgbmV4dCgkZXZlbnQ/OiBFdmVudCwgaXNLZXlCb2FyZEV2ZW50PzogYm9vbGVhbikge1xuICAgICAgICBjb25zdCBwYW5lID0gdGhpcy5nZXRTZWxlY3RhYmxlVGFiQWZ0ZXJJbmRleCh0aGlzLmdldEFjdGl2ZVRhYkluZGV4KCkpO1xuICAgICAgICBpZiAocGFuZSkge1xuICAgICAgICAgICAgcGFuZS5zZWxlY3QoJGV2ZW50LCBpc0tleUJvYXJkRXZlbnQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gc2VsZWN0IHByZXYgdGFiIHJlbGF0aXZlIHRvIHRoZSBjdXJyZW50IGFjdGl2ZSB0YWJcbiAgICBwdWJsaWMgcHJldigkZXZlbnQ/OiBFdmVudCwgaXNLZXlCb2FyZEV2ZW50PzogYm9vbGVhbikge1xuICAgICAgICBjb25zdCBwYW5lID0gdGhpcy5nZXRTZWxlY3RhYmxlVGFiQmVmb3JlSW5kZXgodGhpcy5nZXRBY3RpdmVUYWJJbmRleCgpKTtcbiAgICAgICAgaWYgKHBhbmUpIHtcbiAgICAgICAgICAgIHBhbmUuc2VsZWN0KCRldmVudCwgaXNLZXlCb2FyZEV2ZW50KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIHRoaXMgbWV0aG9kIHdpbGwgYmUgaW52b2tlZCBkdXJpbmcgdGhlIGluaXRpYWxpemF0aW9uIG9mIHRoZSBjb21wb25lbnQgYW5kIG9uIGRlZmF1bHRwYW5laW5kZXggcHJvcGVydHkgY2hhbmdlLFxuICAgICAqIGlmIHRoZSBwcm92aWRlZCBkZWZhdWx0cGFuZWluZGV4IGlzIG5vdCB2YWxpZCwgZmluZCB0aGUgZmlyc3QgcGFuZSBpbmRleCB3aGljaCBjYW4gYmUgc2hvd24gYW5kIHNlbGVjdCBpdFxuICAgICAqL1xuICAgIHByaXZhdGUgc2VsZWN0RGVmYXVsdFBhbmVCeUluZGV4KGluZGV4OiBudW1iZXIpIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzVmFsaWRQYW5lSW5kZXgoaW5kZXgpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgcGFuZVJlZiA9IHRoaXMuZ2V0UGFuZVJlZkJ5SW5kZXgoaW5kZXgpO1xuICAgICAgICBpZiAoIXRoaXMuaXNTZWxlY3RhYmxlVGFiKHBhbmVSZWYpKSB7XG4gICAgICAgICAgICBwYW5lUmVmID0gdGhpcy5nZXRTZWxlY3RhYmxlVGFiQWZ0ZXJJbmRleCgwKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocGFuZVJlZikge1xuICAgICAgICAgICAgcGFuZVJlZi5zZWxlY3QoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIHVwZGF0ZSB0aGUgcG9zdGlvbiBvZiB0YWIgaGVhZGVyXG4gICAgcHJpdmF0ZSBzZXRUYWJzUG9zaXRpb24oKSB7XG4gICAgICAgIGNvbnN0IHVsID0gdGhpcy5uYXRpdmVFbGVtZW50LmNoaWxkcmVuWzBdO1xuXG4gICAgICAgIHRoaXMudmVydGljYWwgPSAodGhpcy50YWJzcG9zaXRpb24gPT09ICdsZWZ0JyB8fCB0aGlzLnRhYnNwb3NpdGlvbiA9PT0gJ3JpZ2h0Jyk7XG5cbiAgICAgICAgcmVtb3ZlQ2xhc3ModGhpcy5uYXRpdmVFbGVtZW50LCAnaW52ZXJ0ZWQnKTtcbiAgICAgICAgaWYgKHRoaXMudGFic3Bvc2l0aW9uID09PSAnYm90dG9tJyB8fCB0aGlzLnRhYnNwb3NpdGlvbiA9PT0gJ3JpZ2h0Jykge1xuICAgICAgICAgICAgYXBwZW5kTm9kZSh1bCBhcyBIVE1MRWxlbWVudCwgdGhpcy5uYXRpdmVFbGVtZW50KTtcbiAgICAgICAgICAgIGFkZENsYXNzKHRoaXMubmF0aXZlRWxlbWVudCwgJ2ludmVydGVkJyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIG9uRGF0YUNoYW5nZShuZXdWYWwpIHtcbiAgICAgICAgdGhpcy5maWVsZERlZnMgPSBjcmVhdGVBcnJheUZyb20obmV3VmFsKTtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLnNlbGVjdERlZmF1bHRQYW5lQnlJbmRleCh0aGlzLmRlZmF1bHRwYW5laW5kZXggfHwgMCkpO1xuICAgIH1cblxuICAgIG9uUHJvcGVydHlDaGFuZ2Uoa2V5OiBzdHJpbmcsIG52OiBhbnksIG92KSB7XG5cbiAgICAgICAgaWYgKGtleSA9PT0gJ2RlZmF1bHRwYW5laW5kZXgnKSB7XG4gICAgICAgICAgICB0aGlzLmRlZmF1bHRwYW5laW5kZXggPSBudjtcbiAgICAgICAgfSBlbHNlIGlmIChrZXkgPT09ICdkYXRhc2V0Jykge1xuICAgICAgICAgICAgdGhpcy5vbkRhdGFDaGFuZ2UobnYpO1xuICAgICAgICB9IGVsc2UgaWYgKGtleSA9PT0gJ3N0YXRlaGFuZGxlcicpIHtcbiAgICAgICAgICAgIHRoaXMuaXNQYWdlTG9hZENhbGwgPSB0cnVlO1xuICAgICAgICAgICAgY29uc3Qgd2lkZ2V0U3RhdGUgPSB0aGlzLnN0YXRlUGVyc2lzdGVuY2UuZ2V0V2lkZ2V0U3RhdGUodGhpcyk7XG4gICAgICAgICAgICBpZiAobnYgIT09ICdub25lJyAmJiB3aWRnZXRTdGF0ZSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHBhbmVUb1NlbGVjdDogYW55ID0gdGhpcy5wYW5lcy5maWx0ZXIoZnVuY3Rpb24ocGFuZSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gd2lkZ2V0U3RhdGUgPT09IHBhbmUubmFtZTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBpZiAoIXBhbmVUb1NlbGVjdC5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS53YXJuKCdUYWIgcGFuZSBuYW1lICcgKyB3aWRnZXRTdGF0ZSArICcgaW4gU3RhdGUgaXMgaW5jb3JyZWN0LiBGYWxsaW5nIGJhY2sgdG8gdGhlIGRlZmF1bHQgcGFuZScpO1xuICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuc2VsZWN0RGVmYXVsdFBhbmVCeUluZGV4KHRoaXMuZGVmYXVsdHBhbmVpbmRleCB8fCAwKSwgMjApO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5nZXRQYW5lSW5kZXhCeVJlZihwYW5lVG9TZWxlY3RbMF0pO1xuICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuc2VsZWN0RGVmYXVsdFBhbmVCeUluZGV4KGluZGV4KSwgMjApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLnNlbGVjdERlZmF1bHRQYW5lQnlJbmRleCh0aGlzLmRlZmF1bHRwYW5laW5kZXggfHwgMCksIDIwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHN1cGVyLm9uUHJvcGVydHlDaGFuZ2Uoa2V5LCBudiwgb3YpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmVnaXN0ZXJUYWJzU2Nyb2xsKCkge1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0ICR1bCA9IHRoaXMuJGVsZW1lbnQuZmluZCgnPiB1bCcpO1xuICAgICAgICAgICAgbGV0ICRsaVBvc2l0aW9uO1xuXG4gICAgICAgICAgICBjb25zdCAgJGxpID0gJHVsLmNoaWxkcmVuKCk7XG4gICAgICAgICAgICAkbGlQb3NpdGlvbiA9ICRsaS5sYXN0KCkucG9zaXRpb24oKTtcbiAgICAgICAgICAgIGlmICgkbGlQb3NpdGlvbiAmJiAoJGxpUG9zaXRpb24ubGVmdCA+ICR1bC53aWR0aCgpKSkge1xuICAgICAgICAgICAgICAgICR1bC5vbignbW91c2V3aGVlbCcsIChlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGxlZnQgPSAkdWxbMF0uc2Nyb2xsTGVmdCxcbiAgICAgICAgICAgICAgICAgICAgICAgIF9kZWx0YSA9IC0xICogZS5vcmlnaW5hbEV2ZW50LndoZWVsRGVsdGE7XG4gICAgICAgICAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAgICAgJHVsLmFuaW1hdGUoe3Njcm9sbExlZnQ6IGxlZnQgKyBfZGVsdGF9LCB7J2R1cmF0aW9uJzogMTB9KTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuICAgIG9ua2V5ZG93bihldmVudCkge1xuICAgICAgICBzd2l0Y2ggKGV2ZW50LmtleSkge1xuICAgICAgICAgICAgY2FzZSAnQXJyb3dMZWZ0JzpcbiAgICAgICAgICAgIGNhc2UgJ0Fycm93VXAnOlxuICAgICAgICAgICAgICAgIHRoaXMucHJldihudWxsLCB0cnVlKTtcbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBjYXNlICdBcnJvd1JpZ2h0JzpcbiAgICAgICAgICAgIGNhc2UgJ0Fycm93RG93bic6XG4gICAgICAgICAgICAgICAgdGhpcy5uZXh0KG51bGwsIHRydWUpO1xuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdBZnRlckNvbnRlbnRJbml0KCkge1xuICAgICAgICB0aGlzLnByb21pc2VSZXNvbHZlckZuKCk7XG4gICAgICAgIHN1cGVyLm5nQWZ0ZXJDb250ZW50SW5pdCgpO1xuICAgICAgICB0aGlzLnNldFRhYnNQb3NpdGlvbigpO1xuICAgICAgICB0aGlzLnBhbmVzLmNoYW5nZXMuc3Vic2NyaWJlKCBzbGlkZXMgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMucGFuZXMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3REZWZhdWx0UGFuZUJ5SW5kZXgodGhpcy5kZWZhdWx0cGFuZWluZGV4IHx8IDApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgICAgIHN1cGVyLm5nQWZ0ZXJWaWV3SW5pdCgpO1xuICAgICAgICB0aGlzLnJlZ2lzdGVyVGFic1Njcm9sbCgpO1xuICAgIH1cbn1cbiIsIjx1bCBjbGFzcz1cIm5hdiBuYXYtdGFic1wiIFtuZ0NsYXNzXT1cInsnbmF2LXN0YWNrZWQnOiB2ZXJ0aWNhbCwgJ25hdi1qdXN0aWZpZWQnOiBqdXN0aWZpZWR9XCIgcm9sZT1cInRhYmxpc3RcIj5cbiAgICA8bGkgY2xhc3M9XCJ0YWItaGVhZGVyXCIgKm5nRm9yPVwibGV0IHBhbmUgb2YgcGFuZXM7IGxldCBpPWluZGV4O1wiIFthdHRyLmRhdGEtcGFuZWlkXT1cInBhbmUud2lkZ2V0SWRcIiBbbmdDbGFzc109XCJ7J2FjdGl2ZSc6IHBhbmUuaXNBY3RpdmUsICdkaXNhYmxlZCc6IHBhbmUuZGlzYWJsZWR9XCJcbiAgICAgICAgW2hpZGRlbl09XCIhcGFuZS5zaG93XCIgcm9sZT1cInByZXNlbnRhdGlvblwiPlxuICAgICAgICA8YSBjbGFzcz1cInRhYi1oZWFkaW5nXCIgaHJlZj1cImphdmFzY3JpcHQ6dm9pZCgwKTtcIiBbYXR0ci5pY29uLXBvc2l0aW9uXT1cImljb25wb3NpdGlvblwiIFthdHRyLmFyaWEtbGFiZWxdPVwicGFuZS50aXRsZVwiIFthdHRyLnRpdGxlXT1cInBhbmUudGl0bGVcIiBbdGFiaW5kZXhdPVwicGFuZS5pc0FjdGl2ZSA/ICcwJyA6ICctMSdcIlxuICAgICAgICAgICBbYXR0ci5hcmlhLXNlbGVjdGVkXT1cInBhbmUuaXNBY3RpdmVcIiByb2xlPVwidGFiXCIgKGNsaWNrKT1cInBhbmUuc2VsZWN0KCRldmVudCk7IHBhbmUudGFicGFuZUhlYWRlckNsaWNrKCRldmVudCwgaSk7XCIgKGtleWRvd24pPVwib25rZXlkb3duKCRldmVudClcIj5cbiAgICAgICAgICAgICAgICA8aSBbbmdDbGFzc109XCJbJ2FwcC1pY29uJywgcGFuZS5wYW5laWNvbl1cIiAqbmdJZj1cInBhbmUucGFuZWljb25cIj48L2k+XG4gICAgICAgICAgICAgICAgPHNwYW4gW3RleHRDb250ZW50XT1cInBhbmUudGl0bGVcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJwYW5lLmJhZGdldmFsdWVcIiBjbGFzcz1cImxhYmVsIGxhYmVsLXt7cGFuZS5iYWRnZXR5cGV9fVwiIFt0ZXh0Q29udGVudF09XCJwYW5lLmJhZGdldmFsdWVcIj48L3NwYW4+XG4gICAgICAgIDwvYT5cbiAgICA8L2xpPlxuPC91bD5cbjxkaXYgY2xhc3M9XCJ0YWItY29udGVudFwiICpuZ0lmPVwidHlwZSAhPT0gJ2R5bmFtaWMnXCIgW25nQ2xhc3NdPVwieyd0YWItc3RhY2tlZCc6IHZlcnRpY2FsLCAndGFiLWp1c3RpZmllZCc6IGp1c3RpZmllZH1cIj5cbiAgICA8bmctY29udGVudCBuZ1Byb2plY3RBcz1cImRpdlt3bVRhYlBhbmVdXCI+PC9uZy1jb250ZW50PlxuPC9kaXY+XG48ZGl2IGNsYXNzPVwidGFiLWNvbnRlbnRcIiAqbmdJZj1cInR5cGUgPT09ICdkeW5hbWljJ1wiIFtuZ0NsYXNzXT1cInsndGFiLXN0YWNrZWQnOiB2ZXJ0aWNhbCwgJ3RhYi1qdXN0aWZpZWQnOiBqdXN0aWZpZWR9XCI+XG4gICAgPGRpdiAqbmdJZj1cImZpZWxkRGVmcyAmJiAhZmllbGREZWZzLmxlbmd0aFwiPnt7bm9kYXRhbWVzc2FnZX19PC9kaXY+XG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiZGl2W3dtUmVwZWF0VGVtcGxhdGVdXCI+PC9uZy1jb250ZW50PlxuPC9kaXY+XG4iXX0=
|
477
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFicy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3dpZGdldHMvY29udGFpbmVycy90YWJzL3NyYy90YWJzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvd2lkZ2V0cy9jb250YWluZXJzL3RhYnMvc3JjL3RhYnMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUdILFNBQVMsRUFDVCxTQUFTLEVBQ1QsZUFBZSxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQ3BDLFFBQVEsRUFFUixRQUFRLEVBQ1IsU0FBUyxFQUNaLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFDSCxRQUFRLEVBQ1IsVUFBVSxFQUNWLDJCQUEyQixFQUMzQixJQUFJLEVBQ0osV0FBVyxFQUNYLGdCQUFnQixFQUNuQixNQUFNLFVBQVUsQ0FBQztBQUNsQixPQUFPLEVBQ0gsaUJBQWlCLEVBRWpCLGtCQUFrQixFQUNsQixNQUFNLEVBQ04saUJBQWlCLEVBQ2pCLGVBQWUsRUFDbEIsTUFBTSxxQkFBcUIsQ0FBQztBQUU3QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUM3QyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNqRSxPQUFPLEVBQUMsSUFBSSxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFDLE1BQU0sV0FBVyxDQUFDOzs7Ozs7Ozs7Ozs7O0lDdkJuRSx1QkFBcUU7OztJQUFsRSxzRUFBdUM7OztJQUUxQywwQkFBNEc7OztJQUE5RSxnRUFBc0M7SUFBQyxnREFBK0I7Ozs7SUFSNUcsQUFGSiw2QkFDOEMsV0FNMEc7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UnpCLFNBQVM7MkJBQ0ksYUFBYSxZQUViLFFBQVEsYUFDUDtvQkFDUCxrQkFBa0IsZUFBZTtpQkFDcEM7O3NCQWlDSSxTQUFTO3VCQUFDLFlBQVk7O3NCQUN0QixTQUFTO3VCQUFDLGNBQWM7O3NCQUV4QixNQUFNO3VCQUFDLGtCQUFrQjs7c0JBQUcsUUFBUTtxQkFWTixZQUFZO2tCQUE5QyxXQUFXO21CQUFDLG9CQUFvQjtZQUVFLEtBQUs7a0JBQXZDLGVBQWU7bUJBQUMsZ0JBQWdCOztrRkExQnhCLGFBQWEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIEFmdGVyQ29udGVudEluaXQsXG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBBdHRyaWJ1dGUsXG4gICAgQ29tcG9uZW50LFxuICAgIENvbnRlbnRDaGlsZHJlbiwgSG9zdEJpbmRpbmcsIEluamVjdCxcbiAgICBJbmplY3RvcixcbiAgICBPbkluaXQsXG4gICAgT3B0aW9uYWwsXG4gICAgUXVlcnlMaXN0XG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQge1xuICAgIGFkZENsYXNzLFxuICAgIGFwcGVuZE5vZGUsXG4gICAgRHluYW1pY0NvbXBvbmVudFJlZlByb3ZpZGVyLFxuICAgIG5vb3AsXG4gICAgcmVtb3ZlQ2xhc3MsXG4gICAgU3RhdGVQZXJzaXN0ZW5jZVxufSBmcm9tICdAd20vY29yZSc7XG5pbXBvcnQge1xuICAgIEFQUExZX1NUWUxFU19UWVBFLFxuICAgIElXaWRnZXRDb25maWcsXG4gICAgcHJvdmlkZUFzV2lkZ2V0UmVmLFxuICAgIHN0eWxlcixcbiAgICBTdHlsYWJsZUNvbXBvbmVudCxcbiAgICBjcmVhdGVBcnJheUZyb21cbn0gZnJvbSAnQHdtL2NvbXBvbmVudHMvYmFzZSc7XG5cbmltcG9ydCB7IFRhYnNBbmltYXRvciB9IGZyb20gJy4vdGFicy5hbmltYXRvcic7XG5pbXBvcnQgeyByZWdpc3RlclByb3BzIH0gZnJvbSAnLi90YWJzLnByb3BzJztcbmltcG9ydCB7IFRhYlBhbmVDb21wb25lbnQgfSBmcm9tICcuL3RhYi1wYW5lL3RhYi1wYW5lLmNvbXBvbmVudCc7XG5pbXBvcnQge2ZpbmQsIGZpbmRJbmRleCwgZm9yRWFjaCwgZ2V0LCBpbmRleE9mLCBpc0FycmF5LCBpc0VtcHR5fSBmcm9tIFwibG9kYXNoLWVzXCI7XG5cbmRlY2xhcmUgY29uc3QgJDtcblxuY29uc3QgREVGQVVMVF9DTFMgPSAnYXBwLXRhYnMgY2xlYXJmaXgnO1xuY29uc3QgV0lER0VUX0NPTkZJRzogSVdpZGdldENvbmZpZyA9IHtcbiAgICB3aWRnZXRUeXBlOiAnd20tdGFicycsXG4gICAgaG9zdENsYXNzOiBERUZBVUxUX0NMU1xufTtcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdkaXZbd21UYWJzXScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3RhYnMuY29tcG9uZW50Lmh0bWwnLFxuICAgIGV4cG9ydEFzOiAnd21UYWJzJyxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgcHJvdmlkZUFzV2lkZ2V0UmVmKFRhYnNDb21wb25lbnQpXG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBUYWJzQ29tcG9uZW50IGV4dGVuZHMgU3R5bGFibGVDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlckNvbnRlbnRJbml0LCBPbkluaXQsIEFmdGVyVmlld0luaXQge1xuICAgIHN0YXRpYyBpbml0aWFsaXplUHJvcHMgPSByZWdpc3RlclByb3BzKCk7XG5cbiAgICBwdWJsaWMgZGVmYXVsdHBhbmVpbmRleDogbnVtYmVyO1xuICAgIHB1YmxpYyB0cmFuc2l0aW9uOiBzdHJpbmc7XG4gICAgcHVibGljIHRhYnNwb3NpdGlvbjogc3RyaW5nO1xuICAgIHB1YmxpYyBzdGF0ZWhhbmRsZXI6IGFueTtcbiAgICBwcml2YXRlIHN0YXRlUGVyc2lzdGVuY2U6IFN0YXRlUGVyc2lzdGVuY2U7XG5cbiAgICBwdWJsaWMgdmVydGljYWw6IGJvb2xlYW47XG4gICAgcHVibGljIGp1c3RpZmllZDogYm9vbGVhbjtcbiAgICBwcml2YXRlIGFjdGl2ZVRhYjogVGFiUGFuZUNvbXBvbmVudDtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHByb21pc2VSZXNvbHZlckZuOiBGdW5jdGlvbjtcbiAgICBwcml2YXRlIHRhYnNBbmltYXRvcjogVGFic0FuaW1hdG9yO1xuICAgIHByaXZhdGUgX29sZFBhbmVJbmRleDogbnVtYmVyO1xuICAgIHByaXZhdGUgaXNQYWdlTG9hZENhbGw6IGJvb2xlYW47XG4gICAgcHJpdmF0ZSBkeW5hbWljQ29tcG9uZW50UHJvdmlkZXI7XG4gICAgcHJpdmF0ZSBfZHluYW1pY0NvbnRleHQ7XG4gICAgcHJpdmF0ZSBkeW5hbWljUGFuZUluZGV4O1xuICAgIHB1YmxpYyBkeW5hbWljVGFicztcbiAgICBwdWJsaWMgZmllbGREZWZzO1xuICAgIHB1YmxpYyB0eXBlO1xuICAgIHB1YmxpYyBub2RhdGFtZXNzYWdlO1xuXG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLmljb24tcG9zaXRpb24nKSBpY29ucG9zaXRpb246IHN0cmluZyA9ICcnO1xuXG4gICAgQENvbnRlbnRDaGlsZHJlbihUYWJQYW5lQ29tcG9uZW50KSBwYW5lczogUXVlcnlMaXN0PFRhYlBhbmVDb21wb25lbnQ+O1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIGluajogSW5qZWN0b3IsXG4gICAgICAgIGR5bmFtaWNDb21wb25lbnRQcm92aWRlcjogRHluYW1pY0NvbXBvbmVudFJlZlByb3ZpZGVyLFxuICAgICAgICBAQXR0cmlidXRlKCd0cmFuc2l0aW9uJykgX3RyYW5zaXRpb246IHN0cmluZyxcbiAgICAgICAgQEF0dHJpYnV0ZSgndGFic3Bvc2l0aW9uJykgX3RhYnNQb3NpdGlvbjogc3RyaW5nLFxuICAgICAgICBzdGF0ZVBlcnNpc3RlbmNlOiBTdGF0ZVBlcnNpc3RlbmNlLFxuICAgICAgICBASW5qZWN0KCdFWFBMSUNJVF9DT05URVhUJykgQE9wdGlvbmFsKCkgZXhwbGljaXRDb250ZXh0OiBhbnlcbiAgICApIHtcbiAgICAgICAgLy8gaGFuZGxlIHRvIHRoZSBwcm9taXNlIHJlc29sdmVyXG4gICAgICAgIGxldCByZXNvbHZlRm46IEZ1bmN0aW9uID0gbm9vcDtcbiAgICAgICAgc3VwZXIoaW5qLCBXSURHRVRfQ09ORklHLCBleHBsaWNpdENvbnRleHQsIG5ldyBQcm9taXNlKHJlcyA9PiByZXNvbHZlRm4gPSByZXMpKTtcblxuICAgICAgICB0aGlzLnRyYW5zaXRpb24gPSBfdHJhbnNpdGlvbjtcbiAgICAgICAgdGhpcy50YWJzcG9zaXRpb24gPSBfdGFic1Bvc2l0aW9uO1xuICAgICAgICB0aGlzLnN0YXRlUGVyc2lzdGVuY2UgPSBzdGF0ZVBlcnNpc3RlbmNlO1xuICAgICAgICB0aGlzLmR5bmFtaWNDb21wb25lbnRQcm92aWRlciA9IGR5bmFtaWNDb21wb25lbnRQcm92aWRlcjtcbiAgICAgICAgdGhpcy5keW5hbWljVGFicyA9IFtdO1xuICAgICAgICB0aGlzLmR5bmFtaWNQYW5lSW5kZXggPSAwO1xuXG4gICAgICAgIHRoaXMucHJvbWlzZVJlc29sdmVyRm4gPSByZXNvbHZlRm47XG5cbiAgICAgICAgc3R5bGVyKHRoaXMubmF0aXZlRWxlbWVudCwgdGhpcywgQVBQTFlfU1RZTEVTX1RZUEUuQ09OVEFJTkVSKTtcblxuICAgIH1cblxuICAgIGFuaW1hdGVJbiAoZWxlbWVudDogSFRNTEVsZW1lbnQpIHtcbiAgICAgICAgY29uc3QgdGFiSGVhZGVyID0gJChlbGVtZW50KTtcbiAgICAgICAgLy8gd2hlbiB0aGUgYW5pbWF0aW9uIGlzIG5vdCBwcmVzZW50IHRvZ2dsZSB0aGUgYWN0aXZlIGNsYXNzLlxuICAgICAgICB0YWJIZWFkZXIuc2libGluZ3MoJy5hY3RpdmUnKS5yZW1vdmVDbGFzcygnYWN0aXZlJyk7XG4gICAgICAgIHRhYkhlYWRlci5hZGRDbGFzcygnYWN0aXZlJyk7XG5cbiAgICAgICAgY29uc3QgdWwgPSB0aGlzLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcigndWwubmF2Lm5hdi10YWJzJyk7XG5cbiAgICAgICAgLy8gbW92ZSB0aGUgdGFiaGVhZGVyIGludG8gdGhlIHZpZXdwb3J0XG4gICAgICAgIGNvbnN0ICRwcmV2SGVhZGVyRWxlID0gdGFiSGVhZGVyLnByZXYoKTtcbiAgICAgICAgaWYgKCRwcmV2SGVhZGVyRWxlLmxlbmd0aCkge1xuICAgICAgICAgICAgdWwuc2Nyb2xsTGVmdCA9ICRwcmV2SGVhZGVyRWxlWzBdLm9mZnNldExlZnQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB1bC5zY3JvbGxMZWZ0ID0gMDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIHVzZWQgdG8gcmVnaXN0ZXIgdGhlIGR5bmFtaWMgcGFuZXMuXG4gICAgICogQWZ0ZXIgYWxsIHBhbmVzIGFyZSBpbml0aWFsemVkLCB1cGRhdGUgdGhlIHF1ZXJ5bGlzdCBtYW51YWxseSBiYXNlZCBvbiBpbmRleC5cbiAgICAgKiBAcGFyYW0gcGFuZVJlZiAtIHJlZnJlbmNlIG9mIHRoZSB0YWJwYW5lXG4gICAgICovXG4gICAgcHVibGljIHJlZ2lzdGVyRHluYW1pY1RhYihwYW5lUmVmKSB7XG4gICAgICAgIHRoaXMuZHluYW1pY1RhYnMucHVzaChwYW5lUmVmKTtcbiAgICAgICAgY29uc3QgaXNMYXN0UGFuZSA9ICB0aGlzLmR5bmFtaWNUYWJzLmxlbmd0aCA9PT0gdGhpcy5keW5hbWljUGFuZUluZGV4O1xuICAgICAgICBpZiAoaXNMYXN0UGFuZSkge1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmR5bmFtaWNUYWJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgbmV3UGFuZVJlZiA9IGZpbmQodGhpcy5keW5hbWljVGFicywgcGFuZSA9PiBwYW5lLmR5bmFtaWNQYW5lSW5kZXggPT09IGkpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGlzUGFuZUFscmVhZHlFeGlzdCA9IGZpbmQodGhpcy5wYW5lcy50b0FycmF5KCksIG5ld1BhbmVSZWYpO1xuICAgICAgICAgICAgICAgIGlmICghaXNQYW5lQWxyZWFkeUV4aXN0KSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucGFuZXMucmVzZXQoWy4uLnRoaXMucGFuZXMudG9BcnJheSgpLCBuZXdQYW5lUmVmXSk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChuZXdQYW5lUmVmLmFjdGl2ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3UGFuZVJlZi5zZWxlY3QoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIDIwKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIHRvIGFkZCB0aGUgdGFicGFuZSBkeW5hbWljYWxseVxuICAgICAqIEBwYXJhbSB0YWJwYW5lcyAtIGxpc3Qgb2YgdGFicGFuZXNcbiAgICAgKi9cbiAgICBwdWJsaWMgYWRkUGFuZSh0YWJwYW5lcykge1xuICAgICAgICBpZiAoIWlzQXJyYXkodGFicGFuZXMpKSB7XG4gICAgICAgICAgICB0YWJwYW5lcyA9IFt0YWJwYW5lc107XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcGFuZU5hbWVzTGlzdCA9IFtdO1xuICAgICAgICBmb3JFYWNoKHRhYnBhbmVzLCAocGFuZSwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGlzUGFuZUFscmVhZHlDcmVhdGVkID0gZmluZCh0aGlzLnBhbmVzLnRvQXJyYXkoKSwge25hbWU6IHBhbmUubmFtZX0pO1xuICAgICAgICAgICAgY29uc3QgaXNQYW5lTmFtZUV4aXN0ID0gaW5kZXhPZihwYW5lTmFtZXNMaXN0LCBwYW5lLm5hbWUpO1xuICAgICAgICAgICAgLy8gSWYgdXNlciB0cmllcyB0byBhZGQgdGFicGFuZSB3aXRoIHRoZSBzYW1lIG5hbWUgd2hpY2ggaXMgYWxyZWFkeSBleGlzdHMgdGhlbiBkbyBub3QgY3JlYXRlIHRoZSBwYW5lXG4gICAgICAgICAgICBpZiAoaXNQYW5lQWxyZWFkeUNyZWF0ZWQgfHwgaXNQYW5lTmFtZUV4aXN0ID4gMCkge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybihgVGhlIHRhYiBwYW5lIHdpdGggbmFtZSAke3BhbmUubmFtZX0gYWxyZWFkeSBleGlzdHNgKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGxldCBwYXJhbU1hcmt1cCA9ICcnO1xuICAgICAgICAgICAgbGV0IHByb3BzVG1wbCA9ICcnO1xuICAgICAgICAgICAgdGhpcy5keW5hbWljUGFuZUluZGV4Kys7XG4gICAgICAgICAgICBjb25zdCBuYW1lID0gcGFuZS5uYW1lID8gcGFuZS5uYW1lIDogYHRhYnBhbmUke3RoaXMucGFuZXMudG9BcnJheSgpLmxlbmd0aCArIChpbmRleCArIDEpfWA7XG4gICAgICAgICAgICBwYW5lTmFtZXNMaXN0LnB1c2gobmFtZSk7XG4gICAgICAgICAgICBjb25zdCBwYXJ0aWFsUGFyYW1zID0gZ2V0KHBhbmUsICdwYXJhbXMnKTtcblxuICAgICAgICAgICAgZm9yRWFjaChwYW5lLCAodmFsdWUsIGtleSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChrZXkgIT09ICdwYXJhbXMnKSB7XG4gICAgICAgICAgICAgICAgICAgIHByb3BzVG1wbCA9IGAke3Byb3BzVG1wbH0gJHtrZXl9PVwiJHt2YWx1ZX1cImA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGZvckVhY2gocGFydGlhbFBhcmFtcywgKHZhbHVlLCBrZXkpID0+IHtcbiAgICAgICAgICAgICAgICBwYXJhbU1hcmt1cCA9IGAke3BhcmFtTWFya3VwfSA8d20tcGFyYW0gbmFtZT1cIiR7a2V5fVwiIHZhbHVlPVwiJHt2YWx1ZX1cIj48L3dtLXBhcmFtPmA7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGNvbnN0IG1hcmt1cCA9IGA8d20tdGFicGFuZSBkeW5hbWljUGFuZUluZGV4PVwiJHt0aGlzLmR5bmFtaWNQYW5lSW5kZXggLSAxfVwiIGlzZHluYW1pYz1cInRydWVcIiBuYW1lPVwiJHtuYW1lfVwiICR7cHJvcHNUbXBsfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAke3BhcmFtTWFya3VwfVxuICAgICAgICAgICAgICAgICAgICAgICAgPC93bS10YWJwYW5lPmA7XG5cbiAgICAgICAgICAgIGlmICghdGhpcy5fZHluYW1pY0NvbnRleHQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9keW5hbWljQ29udGV4dCA9IE9iamVjdC5jcmVhdGUodGhpcy52aWV3UGFyZW50KTtcbiAgICAgICAgICAgICAgICB0aGlzLl9keW5hbWljQ29udGV4dFt0aGlzLmdldEF0dHIoJ3dtVGFiJyldID0gdGhpcztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5keW5hbWljQ29tcG9uZW50UHJvdmlkZXIuYWRkQ29tcG9uZW50KHRoaXMuZ2V0TmF0aXZlRWxlbWVudCgpLnF1ZXJ5U2VsZWN0b3IoJy50YWItY29udGVudCcpLCBtYXJrdXAsIHRoaXMuX2R5bmFtaWNDb250ZXh0LCB7aW5qOiB0aGlzLmluan0pO1xuXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gcGFuZU5hbWVzTGlzdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIG1ldGhvZCBpcyB0byByZW1vdmUgdGhlIHRhYnBhbmVcbiAgICAgKiBAcGFyYW0gcGFuZUluZGV4IC0gaW5kZXggb2YgdGhlIHBhbmVcbiAgICAgKi9cbiAgICBwdWJsaWMgcmVtb3ZlUGFuZShwYW5lTmFtZSkge1xuICAgICAgICBjb25zdCBwYW5lUmVmID0gdGhpcy5nZXRQYW5lUmVmQnlOYW1lKHBhbmVOYW1lKTtcbiAgICAgICAgaWYgKHBhbmVSZWYpIHtcbiAgICAgICAgICAgIHBhbmVSZWYucmVtb3ZlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUYWJQYW5lIGNoaWxkcmVuIGNvbXBvbmVudHMgaW52b2tlIHRoaXMgbWV0aG9kIHRvIGNvbW11bmljYXRlIHdpdGggdGhlIHBhcmVudFxuICAgICAqIGlmIHRoZSBldnQgYXJndW1lbnQgaXMgZGVmaW5lZCBvbi1jaGFuZ2UgY2FsbGJhY2sgd2lsbCBiZSBpbnZva2VkLlxuICAgICAqL1xuICAgIHB1YmxpYyBub3RpZnlDaGFuZ2UocGFuZVJlZjogVGFiUGFuZUNvbXBvbmVudCwgZXZ0OiBFdmVudCwgaXNLZXlCb2FyZEV2ZW50OiBib29sZWFuKSB7XG4gICAgICAgIGlmICghdGhpcy5pc1NlbGVjdGFibGVUYWIocGFuZVJlZikpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBoZWFkZXJFbGVtZW50O1xuICAgICAgICAvLyBpbnZva2UgZGVzZWxlY3QgZXZlbnQgY2FsbGJhY2sgb24gdGhlIHByZXNldCBhY3RpdmUgdGFiXG4gICAgICAgIGlmICghaXNFbXB0eSh0aGlzLmFjdGl2ZVRhYikpIHtcbiAgICAgICAgICAgIHRoaXMuYWN0aXZlVGFiLmRlc2VsZWN0KCk7XG4gICAgICAgIH1cblxuXG4gICAgICAgIHRoaXMuYWN0aXZlVGFiID0gcGFuZVJlZi5nZXRXaWRnZXQoKTtcbiAgICAgICAgY29uc3QgbmV3UGFuZUluZGV4ID0gdGhpcy5nZXRQYW5lSW5kZXhCeVJlZihwYW5lUmVmKTtcbiAgICAgICAgY29uc3QgbW9kZSA9IHRoaXMuc3RhdGVQZXJzaXN0ZW5jZS5jb21wdXRlTW9kZSh0aGlzLnN0YXRlaGFuZGxlcik7XG4gICAgICAgIGlmICghdGhpcy5pc1BhZ2VMb2FkQ2FsbCAmJiBtb2RlICYmIG1vZGUudG9Mb3dlckNhc2UoKSAhPT0gJ25vbmUnKSB7XG4gICAgICAgICAgICB0aGlzLnN0YXRlUGVyc2lzdGVuY2Uuc2V0V2lkZ2V0U3RhdGUodGhpcywgdGhpcy5hY3RpdmVUYWIubmFtZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmRlZmF1bHRwYW5laW5kZXggPSB0aGlzLmdldFBhbmVJbmRleEJ5UmVmKHBhbmVSZWYpO1xuICAgICAgICAgICAgdGhpcy5pc1BhZ2VMb2FkQ2FsbCA9IGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gaW52b2tlIHNlbGVjdCBjYWxsYmFjayBvbiB0aGUgc2VsZWN0ZWQgdGFiXG4gICAgICAgIHBhbmVSZWYuaW52b2tlT25TZWxlY3RDYWxsYmFjayhldnQpO1xuXG4gICAgICAgIC8vIGludm9rZSBjaGFuZ2UgY2FsbGJhY2sgaWYgdGhlIGV2dCBpcyBwcmVzZW50LCBzZWxlY3QgYSB0YWIgcHJvZ3JhbW1hdGljYWxseSB3aWxsIG5vdCBoYXZlIHRoZSBldmVudFxuICAgICAgICBpZiAoZXZ0KSB7XG4gICAgICAgICAgICB0aGlzLmludm9rZUV2ZW50Q2FsbGJhY2soJ2NoYW5nZScsIHtcbiAgICAgICAgICAgICAgICAkZXZlbnQ6IGV2dCxcbiAgICAgICAgICAgICAgICBuZXdQYW5lSW5kZXg6IG5ld1BhbmVJbmRleCxcbiAgICAgICAgICAgICAgICBvbGRQYW5lSW5kZXg6IHRoaXMuX29sZFBhbmVJbmRleCB8fCAwXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9vbGRQYW5lSW5kZXggPSBuZXdQYW5lSW5kZXg7XG5cbiAgICAgICAgaWYgKGV2dCkge1xuICAgICAgICAgICAgaGVhZGVyRWxlbWVudCA9ICQoZXZ0LnRhcmdldCBhcyBIVE1MRWxlbWVudCkuY2xvc2VzdCgnbGkudGFiLWhlYWRlcicpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghZXZ0IHx8ICFoZWFkZXJFbGVtZW50IHx8ICFoZWFkZXJFbGVtZW50Lmxlbmd0aCkge1xuICAgICAgICAgICAgaGVhZGVyRWxlbWVudCA9IHRoaXMubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKGBsaVtkYXRhLXBhbmVpZD0ke3BhbmVSZWYud2lkZ2V0SWR9XWApO1xuICAgICAgICAgICAgY29uc3QgaW5zaWRlVGFicyA9ICEhJChoZWFkZXJFbGVtZW50KS5jbG9zZXN0KCcuYXBwLXRhYnMnKVxuICAgICAgICAgICAgICAgIC5wYXJlbnQoKS5jbG9zZXN0KCcuYXBwLXRhYnMnKS5sZW5ndGg7XG4gICAgICAgICAgICBpZiAoIWluc2lkZVRhYnMgJiYgaXNLZXlCb2FyZEV2ZW50KSB7XG4gICAgICAgICAgICAgICAgJChoZWFkZXJFbGVtZW50KS5jaGlsZHJlbigpLmZvY3VzKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5hbmltYXRlSW4oaGVhZGVyRWxlbWVudCk7XG5cbiAgICAgICAgLy8gdGhpcy5zZXRUYWJzTGVmdFBvc2l0aW9uKHRoaXMuZ2V0UGFuZUluZGV4QnlSZWYodGhpcy5hY3RpdmVUYWIpLCB0aGlzLnBhbmVzLmxlbmd0aCk7XG4gICAgICAgIGlmICh0aGlzLmNhblNsaWRlKCkpIHtcbiAgICAgICAgICAgIGlmICghdGhpcy50YWJzQW5pbWF0b3IpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnRhYnNBbmltYXRvciA9IG5ldyBUYWJzQW5pbWF0b3IodGhpcyk7XG4gICAgICAgICAgICAgICAgdGhpcy50YWJzQW5pbWF0b3Iuc2V0R2VzdHVyZXNFbmFibGVkKHRoaXMuY2FuU2xpZGUoKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnRhYnNBbmltYXRvci50cmFuc2l0aW9uVGFiSW50b1ZpZXcoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBnb1RvVGFiKHRhYkluZGV4KSB7XG4gICAgICAgIGlmICh0aGlzLmlzVmFsaWRQYW5lSW5kZXgodGFiSW5kZXggLSAxKSkge1xuICAgICAgICAgICAgY29uc3QgdGFiID0gdGhpcy5nZXRQYW5lUmVmQnlJbmRleCh0YWJJbmRleCAtIDEpO1xuICAgICAgICAgICAgdGFiLnNlbGVjdCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRQYW5lSW5kZXhCeVJlZihwYW5lUmVmOiBUYWJQYW5lQ29tcG9uZW50KTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucGFuZXMudG9BcnJheSgpLmluZGV4T2YocGFuZVJlZik7XG4gICAgfVxuXG4gICAgLy8gUmV0dXJucyB0aGUgYWN0aXZlIHRhYiBpbmRleCBmcm9tIHRhYnMuXG4gICAgcHVibGljIGdldEFjdGl2ZVRhYkluZGV4KCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiBmaW5kSW5kZXgodGhpcy5wYW5lcy50b0FycmF5KCksIHtpc0FjdGl2ZTogdHJ1ZX0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNWYWxpZFBhbmVJbmRleChpbmRleDogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAoaW5kZXggPj0gMCAmJiBpbmRleCA8IHRoaXMucGFuZXMubGVuZ3RoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFBhbmVSZWZCeUluZGV4KGluZGV4OiBudW1iZXIpOiBUYWJQYW5lQ29tcG9uZW50IHtcbiAgICAgICAgcmV0dXJuIHRoaXMucGFuZXMudG9BcnJheSgpW2luZGV4XTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFBhbmVSZWZCeU5hbWUobmFtZTogc3RyaW5nKTogVGFiUGFuZUNvbXBvbmVudCB7XG4gICAgICAgIHJldHVybiBmaW5kKHRoaXMucGFuZXMudG9BcnJheSgpLCB7bmFtZTogbmFtZX0pO1xuICAgIH1cblxuICAgIC8vIHJldHVybnMgZmFsc2UgaWYgdGhlIHBhbmUgaXMgaGlkZGVuIG9yIGRpc2FibGVkXG4gICAgcHJpdmF0ZSBpc1NlbGVjdGFibGVUYWIocGFuZVJlZjogVGFiUGFuZUNvbXBvbmVudCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gcGFuZVJlZi5zaG93ICYmICFwYW5lUmVmLmRpc2FibGVkO1xuICAgIH1cblxuICAgIHByaXZhdGUgY2FuU2xpZGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnRyYW5zaXRpb24gPT09ICdzbGlkZScgJiYgIXRoaXMudmVydGljYWw7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRTZWxlY3RhYmxlVGFiQWZ0ZXJJbmRleChpbmRleDogbnVtYmVyKTogVGFiUGFuZUNvbXBvbmVudCB7XG4gICAgICAgIGZvciAobGV0IGkgPSBpbmRleCArIDE7IGkgPCB0aGlzLnBhbmVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCBwYW5lID0gdGhpcy5nZXRQYW5lUmVmQnlJbmRleChpKTtcbiAgICAgICAgICAgIGlmICh0aGlzLmlzU2VsZWN0YWJsZVRhYihwYW5lKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBwYW5lO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChpbmRleCA9PT0gdGhpcy5wYW5lcy5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgICBjb25zdCBwYW5lID0gdGhpcy5nZXRQYW5lUmVmQnlJbmRleCgwKTtcbiAgICAgICAgICAgICBpZiAodGhpcy5pc1NlbGVjdGFibGVUYWIocGFuZSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcGFuZTtcbiAgICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFNlbGVjdGFibGVUYWJCZWZvcmVJbmRleChpbmRleDogbnVtYmVyKTogVGFiUGFuZUNvbXBvbmVudCB7XG4gICAgICAgIGZvciAobGV0IGkgPSBpbmRleCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgICAgICBjb25zdCBwYW5lID0gdGhpcy5nZXRQYW5lUmVmQnlJbmRleChpKTtcbiAgICAgICAgICAgIGlmICh0aGlzLmlzU2VsZWN0YWJsZVRhYihwYW5lKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBwYW5lO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChpbmRleCA9PT0gMCkge1xuICAgICAgICAgICAgY29uc3QgcGFuZSA9IHRoaXMuZ2V0UGFuZVJlZkJ5SW5kZXgodGhpcy5wYW5lcy5sZW5ndGggLSAxKTtcbiAgICAgICAgICAgIGlmICh0aGlzLmlzU2VsZWN0YWJsZVRhYihwYW5lKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBwYW5lO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gc2VsZWN0IG5leHQgdGFiIHJlbGF0aXZlIHRvIHRoZSBjdXJyZW50IGFjdGl2ZSB0YWJcbiAgICBwdWJsaWMgbmV4dCgkZXZlbnQ/OiBFdmVudCwgaXNLZXlCb2FyZEV2ZW50PzogYm9vbGVhbikge1xuICAgICAgICBjb25zdCBwYW5lID0gdGhpcy5nZXRTZWxlY3RhYmxlVGFiQWZ0ZXJJbmRleCh0aGlzLmdldEFjdGl2ZVRhYkluZGV4KCkpO1xuICAgICAgICBpZiAocGFuZSkge1xuICAgICAgICAgICAgcGFuZS5zZWxlY3QoJGV2ZW50LCBpc0tleUJvYXJkRXZlbnQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gc2VsZWN0IHByZXYgdGFiIHJlbGF0aXZlIHRvIHRoZSBjdXJyZW50IGFjdGl2ZSB0YWJcbiAgICBwdWJsaWMgcHJldigkZXZlbnQ/OiBFdmVudCwgaXNLZXlCb2FyZEV2ZW50PzogYm9vbGVhbikge1xuICAgICAgICBjb25zdCBwYW5lID0gdGhpcy5nZXRTZWxlY3RhYmxlVGFiQmVmb3JlSW5kZXgodGhpcy5nZXRBY3RpdmVUYWJJbmRleCgpKTtcbiAgICAgICAgaWYgKHBhbmUpIHtcbiAgICAgICAgICAgIHBhbmUuc2VsZWN0KCRldmVudCwgaXNLZXlCb2FyZEV2ZW50KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIHRoaXMgbWV0aG9kIHdpbGwgYmUgaW52b2tlZCBkdXJpbmcgdGhlIGluaXRpYWxpemF0aW9uIG9mIHRoZSBjb21wb25lbnQgYW5kIG9uIGRlZmF1bHRwYW5laW5kZXggcHJvcGVydHkgY2hhbmdlLFxuICAgICAqIGlmIHRoZSBwcm92aWRlZCBkZWZhdWx0cGFuZWluZGV4IGlzIG5vdCB2YWxpZCwgZmluZCB0aGUgZmlyc3QgcGFuZSBpbmRleCB3aGljaCBjYW4gYmUgc2hvd24gYW5kIHNlbGVjdCBpdFxuICAgICAqL1xuICAgIHByaXZhdGUgc2VsZWN0RGVmYXVsdFBhbmVCeUluZGV4KGluZGV4OiBudW1iZXIpIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzVmFsaWRQYW5lSW5kZXgoaW5kZXgpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgcGFuZVJlZiA9IHRoaXMuZ2V0UGFuZVJlZkJ5SW5kZXgoaW5kZXgpO1xuICAgICAgICBpZiAoIXRoaXMuaXNTZWxlY3RhYmxlVGFiKHBhbmVSZWYpKSB7XG4gICAgICAgICAgICBwYW5lUmVmID0gdGhpcy5nZXRTZWxlY3RhYmxlVGFiQWZ0ZXJJbmRleCgwKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocGFuZVJlZikge1xuICAgICAgICAgICAgcGFuZVJlZi5zZWxlY3QoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIHVwZGF0ZSB0aGUgcG9zdGlvbiBvZiB0YWIgaGVhZGVyXG4gICAgcHJpdmF0ZSBzZXRUYWJzUG9zaXRpb24oKSB7XG4gICAgICAgIGNvbnN0IHVsID0gdGhpcy5uYXRpdmVFbGVtZW50LmNoaWxkcmVuWzBdO1xuXG4gICAgICAgIHRoaXMudmVydGljYWwgPSAodGhpcy50YWJzcG9zaXRpb24gPT09ICdsZWZ0JyB8fCB0aGlzLnRhYnNwb3NpdGlvbiA9PT0gJ3JpZ2h0Jyk7XG5cbiAgICAgICAgcmVtb3ZlQ2xhc3ModGhpcy5uYXRpdmVFbGVtZW50LCAnaW52ZXJ0ZWQnKTtcbiAgICAgICAgaWYgKHRoaXMudGFic3Bvc2l0aW9uID09PSAnYm90dG9tJyB8fCB0aGlzLnRhYnNwb3NpdGlvbiA9PT0gJ3JpZ2h0Jykge1xuICAgICAgICAgICAgYXBwZW5kTm9kZSh1bCBhcyBIVE1MRWxlbWVudCwgdGhpcy5uYXRpdmVFbGVtZW50KTtcbiAgICAgICAgICAgIGFkZENsYXNzKHRoaXMubmF0aXZlRWxlbWVudCwgJ2ludmVydGVkJyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIG9uRGF0YUNoYW5nZShuZXdWYWwpIHtcbiAgICAgICAgdGhpcy5maWVsZERlZnMgPSBjcmVhdGVBcnJheUZyb20obmV3VmFsKTtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLnNlbGVjdERlZmF1bHRQYW5lQnlJbmRleCh0aGlzLmRlZmF1bHRwYW5laW5kZXggfHwgMCkpO1xuICAgIH1cblxuICAgIG9uUHJvcGVydHlDaGFuZ2Uoa2V5OiBzdHJpbmcsIG52OiBhbnksIG92KSB7XG5cbiAgICAgICAgaWYgKGtleSA9PT0gJ2RlZmF1bHRwYW5laW5kZXgnKSB7XG4gICAgICAgICAgICB0aGlzLmRlZmF1bHRwYW5laW5kZXggPSBudjtcbiAgICAgICAgfSBlbHNlIGlmIChrZXkgPT09ICdkYXRhc2V0Jykge1xuICAgICAgICAgICAgdGhpcy5vbkRhdGFDaGFuZ2UobnYpO1xuICAgICAgICB9IGVsc2UgaWYgKGtleSA9PT0gJ3N0YXRlaGFuZGxlcicpIHtcbiAgICAgICAgICAgIHRoaXMuaXNQYWdlTG9hZENhbGwgPSB0cnVlO1xuICAgICAgICAgICAgY29uc3Qgd2lkZ2V0U3RhdGUgPSB0aGlzLnN0YXRlUGVyc2lzdGVuY2UuZ2V0V2lkZ2V0U3RhdGUodGhpcyk7XG4gICAgICAgICAgICBpZiAobnYgIT09ICdub25lJyAmJiB3aWRnZXRTdGF0ZSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHBhbmVUb1NlbGVjdDogYW55ID0gdGhpcy5wYW5lcy5maWx0ZXIoZnVuY3Rpb24ocGFuZSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gd2lkZ2V0U3RhdGUgPT09IHBhbmUubmFtZTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBpZiAoIXBhbmVUb1NlbGVjdC5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS53YXJuKCdUYWIgcGFuZSBuYW1lICcgKyB3aWRnZXRTdGF0ZSArICcgaW4gU3RhdGUgaXMgaW5jb3JyZWN0LiBGYWxsaW5nIGJhY2sgdG8gdGhlIGRlZmF1bHQgcGFuZScpO1xuICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuc2VsZWN0RGVmYXVsdFBhbmVCeUluZGV4KHRoaXMuZGVmYXVsdHBhbmVpbmRleCB8fCAwKSwgMjApO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5nZXRQYW5lSW5kZXhCeVJlZihwYW5lVG9TZWxlY3RbMF0pO1xuICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuc2VsZWN0RGVmYXVsdFBhbmVCeUluZGV4KGluZGV4KSwgMjApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLnNlbGVjdERlZmF1bHRQYW5lQnlJbmRleCh0aGlzLmRlZmF1bHRwYW5laW5kZXggfHwgMCksIDIwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHN1cGVyLm9uUHJvcGVydHlDaGFuZ2Uoa2V5LCBudiwgb3YpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmVnaXN0ZXJUYWJzU2Nyb2xsKCkge1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0ICR1bCA9IHRoaXMuJGVsZW1lbnQuZmluZCgnPiB1bCcpO1xuICAgICAgICAgICAgbGV0ICRsaVBvc2l0aW9uO1xuXG4gICAgICAgICAgICBjb25zdCAgJGxpID0gJHVsLmNoaWxkcmVuKCk7XG4gICAgICAgICAgICAkbGlQb3NpdGlvbiA9ICRsaS5sYXN0KCkucG9zaXRpb24oKTtcbiAgICAgICAgICAgIGlmICgkbGlQb3NpdGlvbiAmJiAoJGxpUG9zaXRpb24ubGVmdCA+ICR1bC53aWR0aCgpKSkge1xuICAgICAgICAgICAgICAgICR1bC5vbignbW91c2V3aGVlbCcsIChlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGxlZnQgPSAkdWxbMF0uc2Nyb2xsTGVmdCxcbiAgICAgICAgICAgICAgICAgICAgICAgIF9kZWx0YSA9IC0xICogZS5vcmlnaW5hbEV2ZW50LndoZWVsRGVsdGE7XG4gICAgICAgICAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAgICAgJHVsLmFuaW1hdGUoe3Njcm9sbExlZnQ6IGxlZnQgKyBfZGVsdGF9LCB7J2R1cmF0aW9uJzogMTB9KTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuICAgIG9ua2V5ZG93bihldmVudCkge1xuICAgICAgICBzd2l0Y2ggKGV2ZW50LmtleSkge1xuICAgICAgICAgICAgY2FzZSAnQXJyb3dMZWZ0JzpcbiAgICAgICAgICAgIGNhc2UgJ0Fycm93VXAnOlxuICAgICAgICAgICAgICAgIHRoaXMucHJldihudWxsLCB0cnVlKTtcbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBjYXNlICdBcnJvd1JpZ2h0JzpcbiAgICAgICAgICAgIGNhc2UgJ0Fycm93RG93bic6XG4gICAgICAgICAgICAgICAgdGhpcy5uZXh0KG51bGwsIHRydWUpO1xuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdBZnRlckNvbnRlbnRJbml0KCkge1xuICAgICAgICB0aGlzLnByb21pc2VSZXNvbHZlckZuKCk7XG4gICAgICAgIHN1cGVyLm5nQWZ0ZXJDb250ZW50SW5pdCgpO1xuICAgICAgICB0aGlzLnNldFRhYnNQb3NpdGlvbigpO1xuICAgICAgICB0aGlzLnBhbmVzLmNoYW5nZXMuc3Vic2NyaWJlKCBzbGlkZXMgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMucGFuZXMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3REZWZhdWx0UGFuZUJ5SW5kZXgodGhpcy5kZWZhdWx0cGFuZWluZGV4IHx8IDApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgICAgIHN1cGVyLm5nQWZ0ZXJWaWV3SW5pdCgpO1xuICAgICAgICB0aGlzLnJlZ2lzdGVyVGFic1Njcm9sbCgpO1xuICAgIH1cbn1cbiIsIjx1bCBjbGFzcz1cIm5hdiBuYXYtdGFic1wiIFtuZ0NsYXNzXT1cInsnbmF2LXN0YWNrZWQnOiB2ZXJ0aWNhbCwgJ25hdi1qdXN0aWZpZWQnOiBqdXN0aWZpZWR9XCIgcm9sZT1cInRhYmxpc3RcIj5cbiAgICA8bGkgY2xhc3M9XCJ0YWItaGVhZGVyXCIgKm5nRm9yPVwibGV0IHBhbmUgb2YgcGFuZXM7IGxldCBpPWluZGV4O1wiIFthdHRyLmRhdGEtcGFuZWlkXT1cInBhbmUud2lkZ2V0SWRcIiBbbmdDbGFzc109XCJ7J2FjdGl2ZSc6IHBhbmUuaXNBY3RpdmUsICdkaXNhYmxlZCc6IHBhbmUuZGlzYWJsZWR9XCJcbiAgICAgICAgW2hpZGRlbl09XCIhcGFuZS5zaG93XCIgcm9sZT1cInByZXNlbnRhdGlvblwiPlxuICAgICAgICA8YSBbYXR0ci5hcmlhLWxhYmVsXT1cInBhbmUuYmFkZ2V2YWx1ZSA/IHBhbmUudGl0bGUgKyAnICcgKyBwYW5lLmJhZGdldmFsdWUgOiBwYW5lLnRpdGxlXCJcbiAgICAgICAgICAgW2F0dHIuaWNvbi1wb3NpdGlvbl09XCJpY29ucG9zaXRpb25cIiBcbiAgICAgICAgICAgW2F0dHIudGl0bGVdPVwicGFuZS50aXRsZVwiXG4gICAgICAgICAgIFt0YWJpbmRleF09XCJwYW5lLmlzQWN0aXZlID8gJzAnIDogJy0xJ1wiXG4gICAgICAgICAgIGNsYXNzPVwidGFiLWhlYWRpbmdcIiBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApO1wiXG4gICAgICAgICAgIFthdHRyLmFyaWEtc2VsZWN0ZWRdPVwicGFuZS5pc0FjdGl2ZVwiIHJvbGU9XCJ0YWJcIiAoY2xpY2spPVwicGFuZS5zZWxlY3QoJGV2ZW50KTsgcGFuZS50YWJwYW5lSGVhZGVyQ2xpY2soJGV2ZW50LCBpKTtcIiAoa2V5ZG93bik9XCJvbmtleWRvd24oJGV2ZW50KVwiPlxuICAgICAgICAgICAgICAgIDxpIFtuZ0NsYXNzXT1cIlsnYXBwLWljb24nLCBwYW5lLnBhbmVpY29uXVwiICpuZ0lmPVwicGFuZS5wYW5laWNvblwiPjwvaT5cbiAgICAgICAgICAgICAgICA8c3BhbiBbdGV4dENvbnRlbnRdPVwicGFuZS50aXRsZVwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInBhbmUuYmFkZ2V2YWx1ZVwiIGNsYXNzPVwibGFiZWwgbGFiZWwte3twYW5lLmJhZGdldHlwZX19XCIgW3RleHRDb250ZW50XT1cInBhbmUuYmFkZ2V2YWx1ZVwiPjwvc3Bhbj5cbiAgICAgICAgPC9hPlxuICAgIDwvbGk+XG48L3VsPlxuPGRpdiBjbGFzcz1cInRhYi1jb250ZW50XCIgKm5nSWY9XCJ0eXBlICE9PSAnZHluYW1pYydcIiBbbmdDbGFzc109XCJ7J3RhYi1zdGFja2VkJzogdmVydGljYWwsICd0YWItanVzdGlmaWVkJzoganVzdGlmaWVkfVwiPlxuICAgIDxuZy1jb250ZW50IG5nUHJvamVjdEFzPVwiZGl2W3dtVGFiUGFuZV1cIj48L25nLWNvbnRlbnQ+XG48L2Rpdj5cbjxkaXYgY2xhc3M9XCJ0YWItY29udGVudFwiICpuZ0lmPVwidHlwZSA9PT0gJ2R5bmFtaWMnXCIgW25nQ2xhc3NdPVwieyd0YWItc3RhY2tlZCc6IHZlcnRpY2FsLCAndGFiLWp1c3RpZmllZCc6IGp1c3RpZmllZH1cIj5cbiAgICA8ZGl2ICpuZ0lmPVwiZmllbGREZWZzICYmICFmaWVsZERlZnMubGVuZ3RoXCI+e3tub2RhdGFtZXNzYWdlfX08L2Rpdj5cbiAgICA8bmctY29udGVudCBzZWxlY3Q9XCJkaXZbd21SZXBlYXRUZW1wbGF0ZV1cIj48L25nLWNvbnRlbnQ+XG48L2Rpdj5cbiJdfQ==
|
@@ -335,7 +335,7 @@ function TabsComponent_li_1_Template(rf, ctx) { if (rf & 1) {
|
|
335
335
|
i0.ɵɵattribute("data-paneid", pane_r3.widgetId);
|
336
336
|
i0.ɵɵadvance();
|
337
337
|
i0.ɵɵproperty("tabindex", pane_r3.isActive ? "0" : "-1");
|
338
|
-
i0.ɵɵattribute("
|
338
|
+
i0.ɵɵattribute("aria-label", pane_r3.badgevalue ? pane_r3.title + " " + pane_r3.badgevalue : pane_r3.title)("icon-position", ctx_r4.iconposition)("title", pane_r3.title)("aria-selected", pane_r3.isActive);
|
339
339
|
i0.ɵɵadvance();
|
340
340
|
i0.ɵɵproperty("ngIf", pane_r3.paneicon);
|
341
341
|
i0.ɵɵadvance();
|
@@ -745,7 +745,7 @@ class TabsComponent extends StylableComponent {
|
|
745
745
|
type: Component,
|
746
746
|
args: [{ selector: 'div[wmTabs]', exportAs: 'wmTabs', providers: [
|
747
747
|
provideAsWidgetRef(TabsComponent)
|
748
|
-
], template: "<ul class=\"nav nav-tabs\" [ngClass]=\"{'nav-stacked': vertical, 'nav-justified': justified}\" role=\"tablist\">\n <li class=\"tab-header\" *ngFor=\"let pane of panes; let i=index;\" [attr.data-paneid]=\"pane.widgetId\" [ngClass]=\"{'active': pane.isActive, 'disabled': pane.disabled}\"\n [hidden]=\"!pane.show\" role=\"presentation\">\n <a
|
748
|
+
], template: "<ul class=\"nav nav-tabs\" [ngClass]=\"{'nav-stacked': vertical, 'nav-justified': justified}\" role=\"tablist\">\n <li class=\"tab-header\" *ngFor=\"let pane of panes; let i=index;\" [attr.data-paneid]=\"pane.widgetId\" [ngClass]=\"{'active': pane.isActive, 'disabled': pane.disabled}\"\n [hidden]=\"!pane.show\" role=\"presentation\">\n <a [attr.aria-label]=\"pane.badgevalue ? pane.title + ' ' + pane.badgevalue : pane.title\"\n [attr.icon-position]=\"iconposition\" \n [attr.title]=\"pane.title\"\n [tabindex]=\"pane.isActive ? '0' : '-1'\"\n class=\"tab-heading\" href=\"javascript:void(0);\"\n [attr.aria-selected]=\"pane.isActive\" role=\"tab\" (click)=\"pane.select($event); pane.tabpaneHeaderClick($event, i);\" (keydown)=\"onkeydown($event)\">\n <i [ngClass]=\"['app-icon', pane.paneicon]\" *ngIf=\"pane.paneicon\"></i>\n <span [textContent]=\"pane.title\"></span>\n <span *ngIf=\"pane.badgevalue\" class=\"label label-{{pane.badgetype}}\" [textContent]=\"pane.badgevalue\"></span>\n </a>\n </li>\n</ul>\n<div class=\"tab-content\" *ngIf=\"type !== 'dynamic'\" [ngClass]=\"{'tab-stacked': vertical, 'tab-justified': justified}\">\n <ng-content ngProjectAs=\"div[wmTabPane]\"></ng-content>\n</div>\n<div class=\"tab-content\" *ngIf=\"type === 'dynamic'\" [ngClass]=\"{'tab-stacked': vertical, 'tab-justified': justified}\">\n <div *ngIf=\"fieldDefs && !fieldDefs.length\">{{nodatamessage}}</div>\n <ng-content select=\"div[wmRepeatTemplate]\"></ng-content>\n</div>\n" }]
|
749
749
|
}], () => [{ type: i0.Injector }, { type: i1.DynamicComponentRefProvider }, { type: undefined, decorators: [{
|
750
750
|
type: Attribute,
|
751
751
|
args: ['transition']
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.mjs","sources":["../../../../../projects/components/widgets/containers/tabs/src/tabs.animator.ts","../../../../../projects/components/widgets/containers/tabs/src/tabs.props.ts","../../../../../projects/components/widgets/containers/tabs/src/tab-pane/tab-pane.props.ts","../../../../../projects/components/widgets/containers/tabs/src/tab-pane/tab-pane.component.ts","../../../../../projects/components/widgets/containers/tabs/src/tab-pane/tab-pane.component.html","../../../../../projects/components/widgets/containers/tabs/src/tabs.component.html","../../../../../projects/components/widgets/containers/tabs/src/tabs.component.ts","../../../../../projects/components/widgets/containers/tabs/src/tabs.module.ts","../../../../../projects/components/widgets/containers/tabs/src/index.ts"],"sourcesContent":["import { SwipeAnimation } from '@swipey';\n\nimport { $appDigest, addClass, setCSS, setCSSFromObj } from '@wm/core';\n\nimport { TabsComponent } from './tabs.component';\n\ndeclare const $;\n\nexport class TabsAnimator extends SwipeAnimation {\n\n private _$el;\n\n public constructor(private tabs: TabsComponent) {\n super();\n this._$el = $(this.tabs.getNativeElement()).find('>.tab-content');\n this.init(this._$el);\n }\n\n public calibrate() {\n const activeTabIndex = this.tabs.getActiveTabIndex();\n const panes = this._$el.find('>.tab-pane');\n let activeTabVisibleIndex = 0;\n let noOfVisiblePanes = 0;\n let visiblePanes = [];\n panes.each((i, p) => {\n if (!$(p).prop('hidden')) {\n noOfVisiblePanes++;\n if (i === activeTabIndex) {\n activeTabVisibleIndex = noOfVisiblePanes - 1;\n }\n visiblePanes.push(p);\n }\n return true;\n });\n return {\n activeTabIndex: activeTabVisibleIndex,\n noOfTabs: noOfVisiblePanes,\n panes: visiblePanes\n };\n }\n\n public bounds() {\n const {activeTabIndex, noOfTabs, panes} = this.calibrate(),\n w = $(panes[0]).width(),\n centerVal = -1 * activeTabIndex * w;\n this.clearContentFocus();\n return {\n strict: false,\n lower: activeTabIndex === noOfTabs - 1 ? 0 : -w,\n center: centerVal,\n upper: activeTabIndex === 0 ? centerVal : w\n };\n }\n\n public context() {\n return {\n 'w': this._$el.width()\n };\n }\n\n public animation() {\n return {\n 'transform': 'translate3d(${{ ($D + $d)/w * 100 + \\'%\\'}}, 0, 0)',\n '-webkit-transform': 'translate3d(${{ ($D + $d)/w * 100 + \\'%\\'}}, 0, 0)'\n };\n }\n /* WMS-18031 | On Tab Switch | Remove the Focus on the Existing Tab Contents */\n private clearContentFocus() {\n let activeTab = this._$el.find('>.tab-pane.active');\n if(activeTab.length && activeTab.find(document.activeElement).length){\n (document.activeElement as HTMLElement).blur();\n }\n }\n public transitionTabIntoView() {\n const {activeTabIndex, noOfTabs, panes} = this.calibrate();\n const maxWidth = `${noOfTabs * 100}%`;\n setCSSFromObj(this._$el[0], {maxWidth: maxWidth, width: maxWidth});\n addClass(this.tabs.getNativeElement(), 'has-transition');\n const width = `${100 / noOfTabs}%`;\n panes.forEach(p => {\n setCSS(p as any, 'width', width);\n });\n setCSS(this._$el[0], 'transform', `translate3d(${-1 * activeTabIndex / noOfTabs * 100}%, 0, 0)`);\n }\n\n public onUpper($event?: Event) {\n this.tabs.prev($event);\n $appDigest();\n }\n\n public onLower($event?: Event) {\n this.tabs.next($event);\n $appDigest();\n }\n\n public threshold() {\n return 5;\n }\n}\n","import { isMobileApp } from '@wm/core';\n\nimport { PROP_ANY, PROP_BOOLEAN, PROP_NUMBER, PROP_STRING, register} from '@wm/components/base';\n\nexport const registerProps = () => {\n const props = new Map(\n [\n ['class', PROP_STRING],\n ['dataset', PROP_ANY],\n ['defaultpaneindex', {value: 0, ...PROP_NUMBER}],\n ['justified', PROP_BOOLEAN],\n ['tabsposition', {value: 'top', ...PROP_STRING}],\n ['name', PROP_STRING],\n ['nodatamessage', {value: 'No Data Found', ... PROP_STRING}],\n ['show', {value: true, ...PROP_BOOLEAN}],\n ['statehandler', {value: 'none', ...PROP_STRING}],\n ['transition', PROP_STRING],\n ['type', PROP_STRING],\n ['iconposition', PROP_STRING],\n ]\n );\n if (isMobileApp()) {\n props.set('transition', {value: 'slide', ...PROP_STRING});\n }\n register('wm-tabs', props);\n};\n","import { PROP_BOOLEAN, PROP_NUMBER, PROP_STRING, register } from '@wm/components/base';\n\nexport const registerProps = () => {\n register(\n 'wm-tabpane',\n new Map(\n [\n ['active', PROP_BOOLEAN], // internal property\n ['badgevalue', PROP_STRING],\n ['badgetype', {value: 'default', ...PROP_STRING}],\n ['class', PROP_STRING],\n ['content', PROP_STRING],\n ['disabled', PROP_BOOLEAN],\n ['dynamicPaneIndex', PROP_NUMBER], // internal property\n ['heading', PROP_STRING],\n ['isdefaulttab', PROP_STRING],\n ['isdynamic', PROP_BOOLEAN], // internal property\n ['name', PROP_STRING],\n ['paneicon', PROP_STRING],\n ['show', {value: true, ...PROP_BOOLEAN}],\n ['smoothscroll', {value: false, ...PROP_BOOLEAN}],\n ['title', {value: 'Tab Title', ...PROP_STRING}]\n ]\n )\n );\n};\n","import {\n AfterViewInit,\n Attribute,\n Component,\n ContentChildren,\n HostBinding, Inject,\n Injector,\n OnInit,\n Optional\n} from '@angular/core';\n\nimport {noop, removeAttr} from '@wm/core';\n\nimport { APPLY_STYLES_TYPE, IWidgetConfig, provideAsWidgetRef, RedrawableDirective, styler, StylableComponent } from '@wm/components/base';\nimport { registerProps } from './tab-pane.props';\nimport { TabsComponent } from '../tabs.component';\n\nconst DEFAULT_CLS = 'tab-pane';\nconst WIDGET_CONFIG: IWidgetConfig = {\n widgetType: 'wm-tabpane',\n hostClass: DEFAULT_CLS\n};\n\n@Component({\n selector: 'div[wmTabPane]',\n templateUrl: './tab-pane.component.html',\n providers: [\n provideAsWidgetRef(TabPaneComponent)\n ]\n})\nexport class TabPaneComponent extends StylableComponent implements OnInit, AfterViewInit {\n static initializeProps = registerProps();\n\n private _isFirstLoad: boolean = true;\n private _isOnLoadTriggered: boolean = false;\n public $lazyLoad = noop;\n public name: string;\n public show: boolean;\n public smoothscroll: any;\n private isdynamic: boolean;\n public content: string;\n\n @HostBinding('class.active') isActive = false;\n @HostBinding('class.disabled') disabled = false;\n\n // reference to the components which needs a redraw(eg, grid, chart) when the height of this component changes\n @ContentChildren(RedrawableDirective, {descendants: true}) reDrawableComponents;\n\n constructor(\n inj: Injector,\n private tabsRef: TabsComponent,\n @Attribute('heading') public heading,\n @Attribute('title') public title,\n @Inject('EXPLICIT_CONTEXT') @Optional() explicitContext: any\n ) {\n super(inj, WIDGET_CONFIG, explicitContext);\n\n // title property here serves the purpose of heading.\n // TODO: make it common for all the widget.\n removeAttr(this.nativeElement, 'title');\n }\n\n // parent tabs component will call this method for the order of callbacks to be proper\n // order of callbacks - deselect, select, change\n public invokeOnSelectCallback($event?: Event) {\n this.invokeEventCallback('select', {$event});\n }\n\n public select($event?: Event, isKeyBoardEvent?: boolean) {\n // When called programatically $event won't be available\n if (this.isActive || this.disabled) {\n return;\n }\n\n this.isActive = true;\n this.$lazyLoad();\n this.redrawChildren();\n this.notifyParent($event, isKeyBoardEvent);\n }\n\n tabpaneHeaderClick($event, paneIndex) {\n this.invokeEventCallback('headerclick', {$event, paneIndex});\n }\n\n public deselect() {\n if (this.isActive) {\n this.isActive = false;\n this.invokeEventCallback('deselect');\n }\n }\n\n public remove() {\n if (this.isActive) {\n this === this.tabsRef.panes.last ? this.tabsRef.prev() : this.tabsRef.next();\n }\n const availablePanes = this.tabsRef.panes.toArray();\n availablePanes.splice((this as any).tabsRef.getPaneIndexByRef(this), 1);\n this.tabsRef.panes.reset([...availablePanes]);\n this.nativeElement.remove();\n this.tabsRef.$element.find(`.tab-header[data-paneid='${this.$element.attr('widget-id')}'] a`).remove();\n }\n\n private redrawChildren() {\n setTimeout(() => {\n if (this.reDrawableComponents) {\n this.reDrawableComponents.forEach(c => c.redraw());\n }\n // Fix for [WMS-24564]: trigger Onload event when it is inline content\n if (!this._isOnLoadTriggered && !this.content) {\n this.invokeEventCallback('load');\n this._isOnLoadTriggered = true;\n }\n }, 100);\n }\n\n private notifyParent(evt?: Event, isKeyBoardEvent?: boolean) {\n this.tabsRef.notifyChange(this, evt, isKeyBoardEvent);\n }\n\n // select next valid tab\n private handleSwipeLeft() {\n this.tabsRef.next();\n }\n\n // select prev valid tab\n private handleSwipeRight() {\n this.tabsRef.prev();\n }\n\n // select event is called manually\n protected handleEvent(node: HTMLElement, eventName: string, callback: Function, locals: any) {\n if (eventName !== 'select') {\n super.handleEvent(this.nativeElement, eventName, callback, locals);\n }\n }\n\n onPropertyChange(key: string, nv: any, ov?: any) {\n if (key === 'content') {\n if (this.isActive) {\n setTimeout(() => this.$lazyLoad(), 100);\n }\n } else if (key === 'show') {\n // overridding the base component show propertyChangeHandler\n this.nativeElement.hidden = !nv;\n // setting default tab pane on pageload whenever show property is bindable\n if (this._isFirstLoad) {\n (this as any).tabsRef.selectDefaultPaneByIndex((this as any).tabsRef.defaultpaneindex);\n } else if (!nv && this.isActive) {\n (this as any).tabsRef.next();\n } else if (nv || !this.isActive) {\n (this as any).tabsRef.tabsAnimator?.transitionTabIntoView();\n }\n this._isFirstLoad = false;\n } else {\n super.onPropertyChange(key, nv, ov);\n }\n }\n\n ngOnInit() {\n super.ngOnInit();\n this.title = this.title || this.heading;\n }\n\n ngAfterViewInit() {\n styler(\n this.nativeElement.querySelector('.tab-body') as HTMLElement,\n this,\n APPLY_STYLES_TYPE.CONTAINER\n );\n super.ngAfterViewInit();\n if (this.isdynamic) {\n this.tabsRef.registerDynamicTab(this);\n }\n }\n}\n","<div class=\"tab-body\" partial-container-target [wmSmoothscroll]=\"smoothscroll\">\n <ng-content></ng-content>\n</div>","<ul class=\"nav nav-tabs\" [ngClass]=\"{'nav-stacked': vertical, 'nav-justified': justified}\" role=\"tablist\">\n <li class=\"tab-header\" *ngFor=\"let pane of panes; let i=index;\" [attr.data-paneid]=\"pane.widgetId\" [ngClass]=\"{'active': pane.isActive, 'disabled': pane.disabled}\"\n [hidden]=\"!pane.show\" role=\"presentation\">\n <a class=\"tab-heading\" href=\"javascript:void(0);\" [attr.icon-position]=\"iconposition\" [attr.aria-label]=\"pane.title\" [attr.title]=\"pane.title\" [tabindex]=\"pane.isActive ? '0' : '-1'\"\n [attr.aria-selected]=\"pane.isActive\" role=\"tab\" (click)=\"pane.select($event); pane.tabpaneHeaderClick($event, i);\" (keydown)=\"onkeydown($event)\">\n <i [ngClass]=\"['app-icon', pane.paneicon]\" *ngIf=\"pane.paneicon\"></i>\n <span [textContent]=\"pane.title\"></span>\n <span *ngIf=\"pane.badgevalue\" class=\"label label-{{pane.badgetype}}\" [textContent]=\"pane.badgevalue\"></span>\n </a>\n </li>\n</ul>\n<div class=\"tab-content\" *ngIf=\"type !== 'dynamic'\" [ngClass]=\"{'tab-stacked': vertical, 'tab-justified': justified}\">\n <ng-content ngProjectAs=\"div[wmTabPane]\"></ng-content>\n</div>\n<div class=\"tab-content\" *ngIf=\"type === 'dynamic'\" [ngClass]=\"{'tab-stacked': vertical, 'tab-justified': justified}\">\n <div *ngIf=\"fieldDefs && !fieldDefs.length\">{{nodatamessage}}</div>\n <ng-content select=\"div[wmRepeatTemplate]\"></ng-content>\n</div>\n","import {\n AfterContentInit,\n AfterViewInit,\n Attribute,\n Component,\n ContentChildren, HostBinding, Inject,\n Injector,\n OnInit,\n Optional,\n QueryList\n} from '@angular/core';\n\nimport {\n addClass,\n appendNode,\n DynamicComponentRefProvider,\n noop,\n removeClass,\n StatePersistence\n} from '@wm/core';\nimport {\n APPLY_STYLES_TYPE,\n IWidgetConfig,\n provideAsWidgetRef,\n styler,\n StylableComponent,\n createArrayFrom\n} from '@wm/components/base';\n\nimport { TabsAnimator } from './tabs.animator';\nimport { registerProps } from './tabs.props';\nimport { TabPaneComponent } from './tab-pane/tab-pane.component';\nimport {find, findIndex, forEach, get, indexOf, isArray, isEmpty} from \"lodash-es\";\n\ndeclare const $;\n\nconst DEFAULT_CLS = 'app-tabs clearfix';\nconst WIDGET_CONFIG: IWidgetConfig = {\n widgetType: 'wm-tabs',\n hostClass: DEFAULT_CLS\n};\n\n@Component({\n selector: 'div[wmTabs]',\n templateUrl: './tabs.component.html',\n exportAs: 'wmTabs',\n providers: [\n provideAsWidgetRef(TabsComponent)\n ]\n})\nexport class TabsComponent extends StylableComponent implements AfterContentInit, OnInit, AfterViewInit {\n static initializeProps = registerProps();\n\n public defaultpaneindex: number;\n public transition: string;\n public tabsposition: string;\n public statehandler: any;\n private statePersistence: StatePersistence;\n\n public vertical: boolean;\n public justified: boolean;\n private activeTab: TabPaneComponent;\n private readonly promiseResolverFn: Function;\n private tabsAnimator: TabsAnimator;\n private _oldPaneIndex: number;\n private isPageLoadCall: boolean;\n private dynamicComponentProvider;\n private _dynamicContext;\n private dynamicPaneIndex;\n public dynamicTabs;\n public fieldDefs;\n public type;\n public nodatamessage;\n\n @HostBinding('attr.icon-position') iconposition: string = '';\n\n @ContentChildren(TabPaneComponent) panes: QueryList<TabPaneComponent>;\n\n constructor(\n inj: Injector,\n dynamicComponentProvider: DynamicComponentRefProvider,\n @Attribute('transition') _transition: string,\n @Attribute('tabsposition') _tabsPosition: string,\n statePersistence: StatePersistence,\n @Inject('EXPLICIT_CONTEXT') @Optional() explicitContext: any\n ) {\n // handle to the promise resolver\n let resolveFn: Function = noop;\n super(inj, WIDGET_CONFIG, explicitContext, new Promise(res => resolveFn = res));\n\n this.transition = _transition;\n this.tabsposition = _tabsPosition;\n this.statePersistence = statePersistence;\n this.dynamicComponentProvider = dynamicComponentProvider;\n this.dynamicTabs = [];\n this.dynamicPaneIndex = 0;\n\n this.promiseResolverFn = resolveFn;\n\n styler(this.nativeElement, this, APPLY_STYLES_TYPE.CONTAINER);\n\n }\n\n animateIn (element: HTMLElement) {\n const tabHeader = $(element);\n // when the animation is not present toggle the active class.\n tabHeader.siblings('.active').removeClass('active');\n tabHeader.addClass('active');\n\n const ul = this.nativeElement.querySelector('ul.nav.nav-tabs');\n\n // move the tabheader into the viewport\n const $prevHeaderEle = tabHeader.prev();\n if ($prevHeaderEle.length) {\n ul.scrollLeft = $prevHeaderEle[0].offsetLeft;\n } else {\n ul.scrollLeft = 0;\n }\n }\n\n /**\n * This method is used to register the dynamic panes.\n * After all panes are initialzed, update the querylist manually based on index.\n * @param paneRef - refrence of the tabpane\n */\n public registerDynamicTab(paneRef) {\n this.dynamicTabs.push(paneRef);\n const isLastPane = this.dynamicTabs.length === this.dynamicPaneIndex;\n if (isLastPane) {\n for (let i = 0; i < this.dynamicTabs.length; i++) {\n const newPaneRef = find(this.dynamicTabs, pane => pane.dynamicPaneIndex === i);\n const isPaneAlreadyExist = find(this.panes.toArray(), newPaneRef);\n if (!isPaneAlreadyExist) {\n this.panes.reset([...this.panes.toArray(), newPaneRef]);\n if (newPaneRef.active) {\n setTimeout(() => {\n newPaneRef.select();\n }, 20);\n }\n }\n }\n }\n }\n\n /**\n * This method is to add the tabpane dynamically\n * @param tabpanes - list of tabpanes\n */\n public addPane(tabpanes) {\n if (!isArray(tabpanes)) {\n tabpanes = [tabpanes];\n }\n const paneNamesList = [];\n forEach(tabpanes, (pane, index) => {\n const isPaneAlreadyCreated = find(this.panes.toArray(), {name: pane.name});\n const isPaneNameExist = indexOf(paneNamesList, pane.name);\n // If user tries to add tabpane with the same name which is already exists then do not create the pane\n if (isPaneAlreadyCreated || isPaneNameExist > 0) {\n console.warn(`The tab pane with name ${pane.name} already exists`);\n return;\n }\n\n let paramMarkup = '';\n let propsTmpl = '';\n this.dynamicPaneIndex++;\n const name = pane.name ? pane.name : `tabpane${this.panes.toArray().length + (index + 1)}`;\n paneNamesList.push(name);\n const partialParams = get(pane, 'params');\n\n forEach(pane, (value, key) => {\n if (key !== 'params') {\n propsTmpl = `${propsTmpl} ${key}=\"${value}\"`;\n }\n });\n\n forEach(partialParams, (value, key) => {\n paramMarkup = `${paramMarkup} <wm-param name=\"${key}\" value=\"${value}\"></wm-param>`;\n });\n const markup = `<wm-tabpane dynamicPaneIndex=\"${this.dynamicPaneIndex - 1}\" isdynamic=\"true\" name=\"${name}\" ${propsTmpl}>\n ${paramMarkup}\n </wm-tabpane>`;\n\n if (!this._dynamicContext) {\n this._dynamicContext = Object.create(this.viewParent);\n this._dynamicContext[this.getAttr('wmTab')] = this;\n }\n\n this.dynamicComponentProvider.addComponent(this.getNativeElement().querySelector('.tab-content'), markup, this._dynamicContext, {inj: this.inj});\n\n });\n return paneNamesList;\n }\n\n /**\n * This method is to remove the tabpane\n * @param paneIndex - index of the pane\n */\n public removePane(paneName) {\n const paneRef = this.getPaneRefByName(paneName);\n if (paneRef) {\n paneRef.remove();\n }\n }\n\n /**\n * TabPane children components invoke this method to communicate with the parent\n * if the evt argument is defined on-change callback will be invoked.\n */\n public notifyChange(paneRef: TabPaneComponent, evt: Event, isKeyBoardEvent: boolean) {\n if (!this.isSelectableTab(paneRef)) {\n return;\n }\n\n let headerElement;\n // invoke deselect event callback on the preset active tab\n if (!isEmpty(this.activeTab)) {\n this.activeTab.deselect();\n }\n\n\n this.activeTab = paneRef.getWidget();\n const newPaneIndex = this.getPaneIndexByRef(paneRef);\n const mode = this.statePersistence.computeMode(this.statehandler);\n if (!this.isPageLoadCall && mode && mode.toLowerCase() !== 'none') {\n this.statePersistence.setWidgetState(this, this.activeTab.name);\n } else {\n this.defaultpaneindex = this.getPaneIndexByRef(paneRef);\n this.isPageLoadCall = false;\n }\n\n // invoke select callback on the selected tab\n paneRef.invokeOnSelectCallback(evt);\n\n // invoke change callback if the evt is present, select a tab programmatically will not have the event\n if (evt) {\n this.invokeEventCallback('change', {\n $event: evt,\n newPaneIndex: newPaneIndex,\n oldPaneIndex: this._oldPaneIndex || 0\n });\n }\n this._oldPaneIndex = newPaneIndex;\n\n if (evt) {\n headerElement = $(evt.target as HTMLElement).closest('li.tab-header');\n }\n if (!evt || !headerElement || !headerElement.length) {\n headerElement = this.nativeElement.querySelector(`li[data-paneid=${paneRef.widgetId}]`);\n const insideTabs = !!$(headerElement).closest('.app-tabs')\n .parent().closest('.app-tabs').length;\n if (!insideTabs && isKeyBoardEvent) {\n $(headerElement).children().focus();\n }\n }\n this.animateIn(headerElement);\n\n // this.setTabsLeftPosition(this.getPaneIndexByRef(this.activeTab), this.panes.length);\n if (this.canSlide()) {\n if (!this.tabsAnimator) {\n this.tabsAnimator = new TabsAnimator(this);\n this.tabsAnimator.setGesturesEnabled(this.canSlide());\n }\n this.tabsAnimator.transitionTabIntoView();\n }\n }\n\n public goToTab(tabIndex) {\n if (this.isValidPaneIndex(tabIndex - 1)) {\n const tab = this.getPaneRefByIndex(tabIndex - 1);\n tab.select();\n }\n }\n\n private getPaneIndexByRef(paneRef: TabPaneComponent): number {\n return this.panes.toArray().indexOf(paneRef);\n }\n\n // Returns the active tab index from tabs.\n public getActiveTabIndex(): number {\n return findIndex(this.panes.toArray(), {isActive: true});\n }\n\n private isValidPaneIndex(index: number): boolean {\n return (index >= 0 && index < this.panes.length);\n }\n\n private getPaneRefByIndex(index: number): TabPaneComponent {\n return this.panes.toArray()[index];\n }\n\n private getPaneRefByName(name: string): TabPaneComponent {\n return find(this.panes.toArray(), {name: name});\n }\n\n // returns false if the pane is hidden or disabled\n private isSelectableTab(paneRef: TabPaneComponent): boolean {\n return paneRef.show && !paneRef.disabled;\n }\n\n private canSlide() {\n return this.transition === 'slide' && !this.vertical;\n }\n\n private getSelectableTabAfterIndex(index: number): TabPaneComponent {\n for (let i = index + 1; i < this.panes.length; i++) {\n const pane = this.getPaneRefByIndex(i);\n if (this.isSelectableTab(pane)) {\n return pane;\n }\n }\n if (index === this.panes.length - 1) {\n const pane = this.getPaneRefByIndex(0);\n if (this.isSelectableTab(pane)) {\n return pane;\n }\n }\n }\n\n private getSelectableTabBeforeIndex(index: number): TabPaneComponent {\n for (let i = index - 1; i >= 0; i--) {\n const pane = this.getPaneRefByIndex(i);\n if (this.isSelectableTab(pane)) {\n return pane;\n }\n }\n if (index === 0) {\n const pane = this.getPaneRefByIndex(this.panes.length - 1);\n if (this.isSelectableTab(pane)) {\n return pane;\n }\n }\n }\n\n // select next tab relative to the current active tab\n public next($event?: Event, isKeyBoardEvent?: boolean) {\n const pane = this.getSelectableTabAfterIndex(this.getActiveTabIndex());\n if (pane) {\n pane.select($event, isKeyBoardEvent);\n }\n }\n\n // select prev tab relative to the current active tab\n public prev($event?: Event, isKeyBoardEvent?: boolean) {\n const pane = this.getSelectableTabBeforeIndex(this.getActiveTabIndex());\n if (pane) {\n pane.select($event, isKeyBoardEvent);\n }\n }\n\n /**\n * this method will be invoked during the initialization of the component and on defaultpaneindex property change,\n * if the provided defaultpaneindex is not valid, find the first pane index which can be shown and select it\n */\n private selectDefaultPaneByIndex(index: number) {\n if (!this.isValidPaneIndex(index)) {\n return;\n }\n\n let paneRef = this.getPaneRefByIndex(index);\n if (!this.isSelectableTab(paneRef)) {\n paneRef = this.getSelectableTabAfterIndex(0);\n }\n if (paneRef) {\n paneRef.select();\n }\n }\n\n // update the postion of tab header\n private setTabsPosition() {\n const ul = this.nativeElement.children[0];\n\n this.vertical = (this.tabsposition === 'left' || this.tabsposition === 'right');\n\n removeClass(this.nativeElement, 'inverted');\n if (this.tabsposition === 'bottom' || this.tabsposition === 'right') {\n appendNode(ul as HTMLElement, this.nativeElement);\n addClass(this.nativeElement, 'inverted');\n }\n }\n\n private onDataChange(newVal) {\n this.fieldDefs = createArrayFrom(newVal);\n setTimeout(() => this.selectDefaultPaneByIndex(this.defaultpaneindex || 0));\n }\n\n onPropertyChange(key: string, nv: any, ov) {\n\n if (key === 'defaultpaneindex') {\n this.defaultpaneindex = nv;\n } else if (key === 'dataset') {\n this.onDataChange(nv);\n } else if (key === 'statehandler') {\n this.isPageLoadCall = true;\n const widgetState = this.statePersistence.getWidgetState(this);\n if (nv !== 'none' && widgetState) {\n const paneToSelect: any = this.panes.filter(function(pane) {\n return widgetState === pane.name;\n });\n if (!paneToSelect.length) {\n console.warn('Tab pane name ' + widgetState + ' in State is incorrect. Falling back to the default pane');\n setTimeout(() => this.selectDefaultPaneByIndex(this.defaultpaneindex || 0), 20);\n } else {\n const index = this.getPaneIndexByRef(paneToSelect[0]);\n setTimeout(() => this.selectDefaultPaneByIndex(index), 20);\n }\n } else {\n setTimeout(() => this.selectDefaultPaneByIndex(this.defaultpaneindex || 0), 20);\n }\n } else {\n super.onPropertyChange(key, nv, ov);\n }\n }\n\n registerTabsScroll() {\n setTimeout(() => {\n const $ul = this.$element.find('> ul');\n let $liPosition;\n\n const $li = $ul.children();\n $liPosition = $li.last().position();\n if ($liPosition && ($liPosition.left > $ul.width())) {\n $ul.on('mousewheel', (e) => {\n const left = $ul[0].scrollLeft,\n _delta = -1 * e.originalEvent.wheelDelta;\n e.stopPropagation();\n e.preventDefault();\n $ul.animate({scrollLeft: left + _delta}, {'duration': 10});\n });\n }\n });\n }\n onkeydown(event) {\n switch (event.key) {\n case 'ArrowLeft':\n case 'ArrowUp':\n this.prev(null, true);\n event.preventDefault();\n break;\n\n case 'ArrowRight':\n case 'ArrowDown':\n this.next(null, true);\n event.preventDefault();\n break;\n default:\n break;\n }\n }\n\n ngAfterContentInit() {\n this.promiseResolverFn();\n super.ngAfterContentInit();\n this.setTabsPosition();\n this.panes.changes.subscribe( slides => {\n if (this.panes.length) {\n this.selectDefaultPaneByIndex(this.defaultpaneindex || 0);\n }\n });\n }\n\n ngAfterViewInit() {\n super.ngAfterViewInit();\n this.registerTabsScroll();\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { WmComponentsModule } from '@wm/components/base';\n\nimport { TabsComponent } from './tabs.component';\nimport { TabPaneComponent } from './tab-pane/tab-pane.component';\n\nconst components = [\n TabPaneComponent,\n TabsComponent\n];\n\n@NgModule({\n imports: [\n CommonModule,\n WmComponentsModule\n ],\n declarations: [...components],\n exports: [...components]\n})\nexport class TabsModule {\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["registerProps","DEFAULT_CLS","WIDGET_CONFIG","i1.TabsComponent","_c0","_c1"],"mappings":"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"}
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../../../../../projects/components/widgets/containers/tabs/src/tabs.animator.ts","../../../../../projects/components/widgets/containers/tabs/src/tabs.props.ts","../../../../../projects/components/widgets/containers/tabs/src/tab-pane/tab-pane.props.ts","../../../../../projects/components/widgets/containers/tabs/src/tab-pane/tab-pane.component.ts","../../../../../projects/components/widgets/containers/tabs/src/tab-pane/tab-pane.component.html","../../../../../projects/components/widgets/containers/tabs/src/tabs.component.html","../../../../../projects/components/widgets/containers/tabs/src/tabs.component.ts","../../../../../projects/components/widgets/containers/tabs/src/tabs.module.ts","../../../../../projects/components/widgets/containers/tabs/src/index.ts"],"sourcesContent":["import { SwipeAnimation } from '@swipey';\n\nimport { $appDigest, addClass, setCSS, setCSSFromObj } from '@wm/core';\n\nimport { TabsComponent } from './tabs.component';\n\ndeclare const $;\n\nexport class TabsAnimator extends SwipeAnimation {\n\n private _$el;\n\n public constructor(private tabs: TabsComponent) {\n super();\n this._$el = $(this.tabs.getNativeElement()).find('>.tab-content');\n this.init(this._$el);\n }\n\n public calibrate() {\n const activeTabIndex = this.tabs.getActiveTabIndex();\n const panes = this._$el.find('>.tab-pane');\n let activeTabVisibleIndex = 0;\n let noOfVisiblePanes = 0;\n let visiblePanes = [];\n panes.each((i, p) => {\n if (!$(p).prop('hidden')) {\n noOfVisiblePanes++;\n if (i === activeTabIndex) {\n activeTabVisibleIndex = noOfVisiblePanes - 1;\n }\n visiblePanes.push(p);\n }\n return true;\n });\n return {\n activeTabIndex: activeTabVisibleIndex,\n noOfTabs: noOfVisiblePanes,\n panes: visiblePanes\n };\n }\n\n public bounds() {\n const {activeTabIndex, noOfTabs, panes} = this.calibrate(),\n w = $(panes[0]).width(),\n centerVal = -1 * activeTabIndex * w;\n this.clearContentFocus();\n return {\n strict: false,\n lower: activeTabIndex === noOfTabs - 1 ? 0 : -w,\n center: centerVal,\n upper: activeTabIndex === 0 ? centerVal : w\n };\n }\n\n public context() {\n return {\n 'w': this._$el.width()\n };\n }\n\n public animation() {\n return {\n 'transform': 'translate3d(${{ ($D + $d)/w * 100 + \\'%\\'}}, 0, 0)',\n '-webkit-transform': 'translate3d(${{ ($D + $d)/w * 100 + \\'%\\'}}, 0, 0)'\n };\n }\n /* WMS-18031 | On Tab Switch | Remove the Focus on the Existing Tab Contents */\n private clearContentFocus() {\n let activeTab = this._$el.find('>.tab-pane.active');\n if(activeTab.length && activeTab.find(document.activeElement).length){\n (document.activeElement as HTMLElement).blur();\n }\n }\n public transitionTabIntoView() {\n const {activeTabIndex, noOfTabs, panes} = this.calibrate();\n const maxWidth = `${noOfTabs * 100}%`;\n setCSSFromObj(this._$el[0], {maxWidth: maxWidth, width: maxWidth});\n addClass(this.tabs.getNativeElement(), 'has-transition');\n const width = `${100 / noOfTabs}%`;\n panes.forEach(p => {\n setCSS(p as any, 'width', width);\n });\n setCSS(this._$el[0], 'transform', `translate3d(${-1 * activeTabIndex / noOfTabs * 100}%, 0, 0)`);\n }\n\n public onUpper($event?: Event) {\n this.tabs.prev($event);\n $appDigest();\n }\n\n public onLower($event?: Event) {\n this.tabs.next($event);\n $appDigest();\n }\n\n public threshold() {\n return 5;\n }\n}\n","import { isMobileApp } from '@wm/core';\n\nimport { PROP_ANY, PROP_BOOLEAN, PROP_NUMBER, PROP_STRING, register} from '@wm/components/base';\n\nexport const registerProps = () => {\n const props = new Map(\n [\n ['class', PROP_STRING],\n ['dataset', PROP_ANY],\n ['defaultpaneindex', {value: 0, ...PROP_NUMBER}],\n ['justified', PROP_BOOLEAN],\n ['tabsposition', {value: 'top', ...PROP_STRING}],\n ['name', PROP_STRING],\n ['nodatamessage', {value: 'No Data Found', ... PROP_STRING}],\n ['show', {value: true, ...PROP_BOOLEAN}],\n ['statehandler', {value: 'none', ...PROP_STRING}],\n ['transition', PROP_STRING],\n ['type', PROP_STRING],\n ['iconposition', PROP_STRING],\n ]\n );\n if (isMobileApp()) {\n props.set('transition', {value: 'slide', ...PROP_STRING});\n }\n register('wm-tabs', props);\n};\n","import { PROP_BOOLEAN, PROP_NUMBER, PROP_STRING, register } from '@wm/components/base';\n\nexport const registerProps = () => {\n register(\n 'wm-tabpane',\n new Map(\n [\n ['active', PROP_BOOLEAN], // internal property\n ['badgevalue', PROP_STRING],\n ['badgetype', {value: 'default', ...PROP_STRING}],\n ['class', PROP_STRING],\n ['content', PROP_STRING],\n ['disabled', PROP_BOOLEAN],\n ['dynamicPaneIndex', PROP_NUMBER], // internal property\n ['heading', PROP_STRING],\n ['isdefaulttab', PROP_STRING],\n ['isdynamic', PROP_BOOLEAN], // internal property\n ['name', PROP_STRING],\n ['paneicon', PROP_STRING],\n ['show', {value: true, ...PROP_BOOLEAN}],\n ['smoothscroll', {value: false, ...PROP_BOOLEAN}],\n ['title', {value: 'Tab Title', ...PROP_STRING}]\n ]\n )\n );\n};\n","import {\n AfterViewInit,\n Attribute,\n Component,\n ContentChildren,\n HostBinding, Inject,\n Injector,\n OnInit,\n Optional\n} from '@angular/core';\n\nimport {noop, removeAttr} from '@wm/core';\n\nimport { APPLY_STYLES_TYPE, IWidgetConfig, provideAsWidgetRef, RedrawableDirective, styler, StylableComponent } from '@wm/components/base';\nimport { registerProps } from './tab-pane.props';\nimport { TabsComponent } from '../tabs.component';\n\nconst DEFAULT_CLS = 'tab-pane';\nconst WIDGET_CONFIG: IWidgetConfig = {\n widgetType: 'wm-tabpane',\n hostClass: DEFAULT_CLS\n};\n\n@Component({\n selector: 'div[wmTabPane]',\n templateUrl: './tab-pane.component.html',\n providers: [\n provideAsWidgetRef(TabPaneComponent)\n ]\n})\nexport class TabPaneComponent extends StylableComponent implements OnInit, AfterViewInit {\n static initializeProps = registerProps();\n\n private _isFirstLoad: boolean = true;\n private _isOnLoadTriggered: boolean = false;\n public $lazyLoad = noop;\n public name: string;\n public show: boolean;\n public smoothscroll: any;\n private isdynamic: boolean;\n public content: string;\n\n @HostBinding('class.active') isActive = false;\n @HostBinding('class.disabled') disabled = false;\n\n // reference to the components which needs a redraw(eg, grid, chart) when the height of this component changes\n @ContentChildren(RedrawableDirective, {descendants: true}) reDrawableComponents;\n\n constructor(\n inj: Injector,\n private tabsRef: TabsComponent,\n @Attribute('heading') public heading,\n @Attribute('title') public title,\n @Inject('EXPLICIT_CONTEXT') @Optional() explicitContext: any\n ) {\n super(inj, WIDGET_CONFIG, explicitContext);\n\n // title property here serves the purpose of heading.\n // TODO: make it common for all the widget.\n removeAttr(this.nativeElement, 'title');\n }\n\n // parent tabs component will call this method for the order of callbacks to be proper\n // order of callbacks - deselect, select, change\n public invokeOnSelectCallback($event?: Event) {\n this.invokeEventCallback('select', {$event});\n }\n\n public select($event?: Event, isKeyBoardEvent?: boolean) {\n // When called programatically $event won't be available\n if (this.isActive || this.disabled) {\n return;\n }\n\n this.isActive = true;\n this.$lazyLoad();\n this.redrawChildren();\n this.notifyParent($event, isKeyBoardEvent);\n }\n\n tabpaneHeaderClick($event, paneIndex) {\n this.invokeEventCallback('headerclick', {$event, paneIndex});\n }\n\n public deselect() {\n if (this.isActive) {\n this.isActive = false;\n this.invokeEventCallback('deselect');\n }\n }\n\n public remove() {\n if (this.isActive) {\n this === this.tabsRef.panes.last ? this.tabsRef.prev() : this.tabsRef.next();\n }\n const availablePanes = this.tabsRef.panes.toArray();\n availablePanes.splice((this as any).tabsRef.getPaneIndexByRef(this), 1);\n this.tabsRef.panes.reset([...availablePanes]);\n this.nativeElement.remove();\n this.tabsRef.$element.find(`.tab-header[data-paneid='${this.$element.attr('widget-id')}'] a`).remove();\n }\n\n private redrawChildren() {\n setTimeout(() => {\n if (this.reDrawableComponents) {\n this.reDrawableComponents.forEach(c => c.redraw());\n }\n // Fix for [WMS-24564]: trigger Onload event when it is inline content\n if (!this._isOnLoadTriggered && !this.content) {\n this.invokeEventCallback('load');\n this._isOnLoadTriggered = true;\n }\n }, 100);\n }\n\n private notifyParent(evt?: Event, isKeyBoardEvent?: boolean) {\n this.tabsRef.notifyChange(this, evt, isKeyBoardEvent);\n }\n\n // select next valid tab\n private handleSwipeLeft() {\n this.tabsRef.next();\n }\n\n // select prev valid tab\n private handleSwipeRight() {\n this.tabsRef.prev();\n }\n\n // select event is called manually\n protected handleEvent(node: HTMLElement, eventName: string, callback: Function, locals: any) {\n if (eventName !== 'select') {\n super.handleEvent(this.nativeElement, eventName, callback, locals);\n }\n }\n\n onPropertyChange(key: string, nv: any, ov?: any) {\n if (key === 'content') {\n if (this.isActive) {\n setTimeout(() => this.$lazyLoad(), 100);\n }\n } else if (key === 'show') {\n // overridding the base component show propertyChangeHandler\n this.nativeElement.hidden = !nv;\n // setting default tab pane on pageload whenever show property is bindable\n if (this._isFirstLoad) {\n (this as any).tabsRef.selectDefaultPaneByIndex((this as any).tabsRef.defaultpaneindex);\n } else if (!nv && this.isActive) {\n (this as any).tabsRef.next();\n } else if (nv || !this.isActive) {\n (this as any).tabsRef.tabsAnimator?.transitionTabIntoView();\n }\n this._isFirstLoad = false;\n } else {\n super.onPropertyChange(key, nv, ov);\n }\n }\n\n ngOnInit() {\n super.ngOnInit();\n this.title = this.title || this.heading;\n }\n\n ngAfterViewInit() {\n styler(\n this.nativeElement.querySelector('.tab-body') as HTMLElement,\n this,\n APPLY_STYLES_TYPE.CONTAINER\n );\n super.ngAfterViewInit();\n if (this.isdynamic) {\n this.tabsRef.registerDynamicTab(this);\n }\n }\n}\n","<div class=\"tab-body\" partial-container-target [wmSmoothscroll]=\"smoothscroll\">\n <ng-content></ng-content>\n</div>","<ul class=\"nav nav-tabs\" [ngClass]=\"{'nav-stacked': vertical, 'nav-justified': justified}\" role=\"tablist\">\n <li class=\"tab-header\" *ngFor=\"let pane of panes; let i=index;\" [attr.data-paneid]=\"pane.widgetId\" [ngClass]=\"{'active': pane.isActive, 'disabled': pane.disabled}\"\n [hidden]=\"!pane.show\" role=\"presentation\">\n <a [attr.aria-label]=\"pane.badgevalue ? pane.title + ' ' + pane.badgevalue : pane.title\"\n [attr.icon-position]=\"iconposition\" \n [attr.title]=\"pane.title\"\n [tabindex]=\"pane.isActive ? '0' : '-1'\"\n class=\"tab-heading\" href=\"javascript:void(0);\"\n [attr.aria-selected]=\"pane.isActive\" role=\"tab\" (click)=\"pane.select($event); pane.tabpaneHeaderClick($event, i);\" (keydown)=\"onkeydown($event)\">\n <i [ngClass]=\"['app-icon', pane.paneicon]\" *ngIf=\"pane.paneicon\"></i>\n <span [textContent]=\"pane.title\"></span>\n <span *ngIf=\"pane.badgevalue\" class=\"label label-{{pane.badgetype}}\" [textContent]=\"pane.badgevalue\"></span>\n </a>\n </li>\n</ul>\n<div class=\"tab-content\" *ngIf=\"type !== 'dynamic'\" [ngClass]=\"{'tab-stacked': vertical, 'tab-justified': justified}\">\n <ng-content ngProjectAs=\"div[wmTabPane]\"></ng-content>\n</div>\n<div class=\"tab-content\" *ngIf=\"type === 'dynamic'\" [ngClass]=\"{'tab-stacked': vertical, 'tab-justified': justified}\">\n <div *ngIf=\"fieldDefs && !fieldDefs.length\">{{nodatamessage}}</div>\n <ng-content select=\"div[wmRepeatTemplate]\"></ng-content>\n</div>\n","import {\n AfterContentInit,\n AfterViewInit,\n Attribute,\n Component,\n ContentChildren, HostBinding, Inject,\n Injector,\n OnInit,\n Optional,\n QueryList\n} from '@angular/core';\n\nimport {\n addClass,\n appendNode,\n DynamicComponentRefProvider,\n noop,\n removeClass,\n StatePersistence\n} from '@wm/core';\nimport {\n APPLY_STYLES_TYPE,\n IWidgetConfig,\n provideAsWidgetRef,\n styler,\n StylableComponent,\n createArrayFrom\n} from '@wm/components/base';\n\nimport { TabsAnimator } from './tabs.animator';\nimport { registerProps } from './tabs.props';\nimport { TabPaneComponent } from './tab-pane/tab-pane.component';\nimport {find, findIndex, forEach, get, indexOf, isArray, isEmpty} from \"lodash-es\";\n\ndeclare const $;\n\nconst DEFAULT_CLS = 'app-tabs clearfix';\nconst WIDGET_CONFIG: IWidgetConfig = {\n widgetType: 'wm-tabs',\n hostClass: DEFAULT_CLS\n};\n\n@Component({\n selector: 'div[wmTabs]',\n templateUrl: './tabs.component.html',\n exportAs: 'wmTabs',\n providers: [\n provideAsWidgetRef(TabsComponent)\n ]\n})\nexport class TabsComponent extends StylableComponent implements AfterContentInit, OnInit, AfterViewInit {\n static initializeProps = registerProps();\n\n public defaultpaneindex: number;\n public transition: string;\n public tabsposition: string;\n public statehandler: any;\n private statePersistence: StatePersistence;\n\n public vertical: boolean;\n public justified: boolean;\n private activeTab: TabPaneComponent;\n private readonly promiseResolverFn: Function;\n private tabsAnimator: TabsAnimator;\n private _oldPaneIndex: number;\n private isPageLoadCall: boolean;\n private dynamicComponentProvider;\n private _dynamicContext;\n private dynamicPaneIndex;\n public dynamicTabs;\n public fieldDefs;\n public type;\n public nodatamessage;\n\n @HostBinding('attr.icon-position') iconposition: string = '';\n\n @ContentChildren(TabPaneComponent) panes: QueryList<TabPaneComponent>;\n\n constructor(\n inj: Injector,\n dynamicComponentProvider: DynamicComponentRefProvider,\n @Attribute('transition') _transition: string,\n @Attribute('tabsposition') _tabsPosition: string,\n statePersistence: StatePersistence,\n @Inject('EXPLICIT_CONTEXT') @Optional() explicitContext: any\n ) {\n // handle to the promise resolver\n let resolveFn: Function = noop;\n super(inj, WIDGET_CONFIG, explicitContext, new Promise(res => resolveFn = res));\n\n this.transition = _transition;\n this.tabsposition = _tabsPosition;\n this.statePersistence = statePersistence;\n this.dynamicComponentProvider = dynamicComponentProvider;\n this.dynamicTabs = [];\n this.dynamicPaneIndex = 0;\n\n this.promiseResolverFn = resolveFn;\n\n styler(this.nativeElement, this, APPLY_STYLES_TYPE.CONTAINER);\n\n }\n\n animateIn (element: HTMLElement) {\n const tabHeader = $(element);\n // when the animation is not present toggle the active class.\n tabHeader.siblings('.active').removeClass('active');\n tabHeader.addClass('active');\n\n const ul = this.nativeElement.querySelector('ul.nav.nav-tabs');\n\n // move the tabheader into the viewport\n const $prevHeaderEle = tabHeader.prev();\n if ($prevHeaderEle.length) {\n ul.scrollLeft = $prevHeaderEle[0].offsetLeft;\n } else {\n ul.scrollLeft = 0;\n }\n }\n\n /**\n * This method is used to register the dynamic panes.\n * After all panes are initialzed, update the querylist manually based on index.\n * @param paneRef - refrence of the tabpane\n */\n public registerDynamicTab(paneRef) {\n this.dynamicTabs.push(paneRef);\n const isLastPane = this.dynamicTabs.length === this.dynamicPaneIndex;\n if (isLastPane) {\n for (let i = 0; i < this.dynamicTabs.length; i++) {\n const newPaneRef = find(this.dynamicTabs, pane => pane.dynamicPaneIndex === i);\n const isPaneAlreadyExist = find(this.panes.toArray(), newPaneRef);\n if (!isPaneAlreadyExist) {\n this.panes.reset([...this.panes.toArray(), newPaneRef]);\n if (newPaneRef.active) {\n setTimeout(() => {\n newPaneRef.select();\n }, 20);\n }\n }\n }\n }\n }\n\n /**\n * This method is to add the tabpane dynamically\n * @param tabpanes - list of tabpanes\n */\n public addPane(tabpanes) {\n if (!isArray(tabpanes)) {\n tabpanes = [tabpanes];\n }\n const paneNamesList = [];\n forEach(tabpanes, (pane, index) => {\n const isPaneAlreadyCreated = find(this.panes.toArray(), {name: pane.name});\n const isPaneNameExist = indexOf(paneNamesList, pane.name);\n // If user tries to add tabpane with the same name which is already exists then do not create the pane\n if (isPaneAlreadyCreated || isPaneNameExist > 0) {\n console.warn(`The tab pane with name ${pane.name} already exists`);\n return;\n }\n\n let paramMarkup = '';\n let propsTmpl = '';\n this.dynamicPaneIndex++;\n const name = pane.name ? pane.name : `tabpane${this.panes.toArray().length + (index + 1)}`;\n paneNamesList.push(name);\n const partialParams = get(pane, 'params');\n\n forEach(pane, (value, key) => {\n if (key !== 'params') {\n propsTmpl = `${propsTmpl} ${key}=\"${value}\"`;\n }\n });\n\n forEach(partialParams, (value, key) => {\n paramMarkup = `${paramMarkup} <wm-param name=\"${key}\" value=\"${value}\"></wm-param>`;\n });\n const markup = `<wm-tabpane dynamicPaneIndex=\"${this.dynamicPaneIndex - 1}\" isdynamic=\"true\" name=\"${name}\" ${propsTmpl}>\n ${paramMarkup}\n </wm-tabpane>`;\n\n if (!this._dynamicContext) {\n this._dynamicContext = Object.create(this.viewParent);\n this._dynamicContext[this.getAttr('wmTab')] = this;\n }\n\n this.dynamicComponentProvider.addComponent(this.getNativeElement().querySelector('.tab-content'), markup, this._dynamicContext, {inj: this.inj});\n\n });\n return paneNamesList;\n }\n\n /**\n * This method is to remove the tabpane\n * @param paneIndex - index of the pane\n */\n public removePane(paneName) {\n const paneRef = this.getPaneRefByName(paneName);\n if (paneRef) {\n paneRef.remove();\n }\n }\n\n /**\n * TabPane children components invoke this method to communicate with the parent\n * if the evt argument is defined on-change callback will be invoked.\n */\n public notifyChange(paneRef: TabPaneComponent, evt: Event, isKeyBoardEvent: boolean) {\n if (!this.isSelectableTab(paneRef)) {\n return;\n }\n\n let headerElement;\n // invoke deselect event callback on the preset active tab\n if (!isEmpty(this.activeTab)) {\n this.activeTab.deselect();\n }\n\n\n this.activeTab = paneRef.getWidget();\n const newPaneIndex = this.getPaneIndexByRef(paneRef);\n const mode = this.statePersistence.computeMode(this.statehandler);\n if (!this.isPageLoadCall && mode && mode.toLowerCase() !== 'none') {\n this.statePersistence.setWidgetState(this, this.activeTab.name);\n } else {\n this.defaultpaneindex = this.getPaneIndexByRef(paneRef);\n this.isPageLoadCall = false;\n }\n\n // invoke select callback on the selected tab\n paneRef.invokeOnSelectCallback(evt);\n\n // invoke change callback if the evt is present, select a tab programmatically will not have the event\n if (evt) {\n this.invokeEventCallback('change', {\n $event: evt,\n newPaneIndex: newPaneIndex,\n oldPaneIndex: this._oldPaneIndex || 0\n });\n }\n this._oldPaneIndex = newPaneIndex;\n\n if (evt) {\n headerElement = $(evt.target as HTMLElement).closest('li.tab-header');\n }\n if (!evt || !headerElement || !headerElement.length) {\n headerElement = this.nativeElement.querySelector(`li[data-paneid=${paneRef.widgetId}]`);\n const insideTabs = !!$(headerElement).closest('.app-tabs')\n .parent().closest('.app-tabs').length;\n if (!insideTabs && isKeyBoardEvent) {\n $(headerElement).children().focus();\n }\n }\n this.animateIn(headerElement);\n\n // this.setTabsLeftPosition(this.getPaneIndexByRef(this.activeTab), this.panes.length);\n if (this.canSlide()) {\n if (!this.tabsAnimator) {\n this.tabsAnimator = new TabsAnimator(this);\n this.tabsAnimator.setGesturesEnabled(this.canSlide());\n }\n this.tabsAnimator.transitionTabIntoView();\n }\n }\n\n public goToTab(tabIndex) {\n if (this.isValidPaneIndex(tabIndex - 1)) {\n const tab = this.getPaneRefByIndex(tabIndex - 1);\n tab.select();\n }\n }\n\n private getPaneIndexByRef(paneRef: TabPaneComponent): number {\n return this.panes.toArray().indexOf(paneRef);\n }\n\n // Returns the active tab index from tabs.\n public getActiveTabIndex(): number {\n return findIndex(this.panes.toArray(), {isActive: true});\n }\n\n private isValidPaneIndex(index: number): boolean {\n return (index >= 0 && index < this.panes.length);\n }\n\n private getPaneRefByIndex(index: number): TabPaneComponent {\n return this.panes.toArray()[index];\n }\n\n private getPaneRefByName(name: string): TabPaneComponent {\n return find(this.panes.toArray(), {name: name});\n }\n\n // returns false if the pane is hidden or disabled\n private isSelectableTab(paneRef: TabPaneComponent): boolean {\n return paneRef.show && !paneRef.disabled;\n }\n\n private canSlide() {\n return this.transition === 'slide' && !this.vertical;\n }\n\n private getSelectableTabAfterIndex(index: number): TabPaneComponent {\n for (let i = index + 1; i < this.panes.length; i++) {\n const pane = this.getPaneRefByIndex(i);\n if (this.isSelectableTab(pane)) {\n return pane;\n }\n }\n if (index === this.panes.length - 1) {\n const pane = this.getPaneRefByIndex(0);\n if (this.isSelectableTab(pane)) {\n return pane;\n }\n }\n }\n\n private getSelectableTabBeforeIndex(index: number): TabPaneComponent {\n for (let i = index - 1; i >= 0; i--) {\n const pane = this.getPaneRefByIndex(i);\n if (this.isSelectableTab(pane)) {\n return pane;\n }\n }\n if (index === 0) {\n const pane = this.getPaneRefByIndex(this.panes.length - 1);\n if (this.isSelectableTab(pane)) {\n return pane;\n }\n }\n }\n\n // select next tab relative to the current active tab\n public next($event?: Event, isKeyBoardEvent?: boolean) {\n const pane = this.getSelectableTabAfterIndex(this.getActiveTabIndex());\n if (pane) {\n pane.select($event, isKeyBoardEvent);\n }\n }\n\n // select prev tab relative to the current active tab\n public prev($event?: Event, isKeyBoardEvent?: boolean) {\n const pane = this.getSelectableTabBeforeIndex(this.getActiveTabIndex());\n if (pane) {\n pane.select($event, isKeyBoardEvent);\n }\n }\n\n /**\n * this method will be invoked during the initialization of the component and on defaultpaneindex property change,\n * if the provided defaultpaneindex is not valid, find the first pane index which can be shown and select it\n */\n private selectDefaultPaneByIndex(index: number) {\n if (!this.isValidPaneIndex(index)) {\n return;\n }\n\n let paneRef = this.getPaneRefByIndex(index);\n if (!this.isSelectableTab(paneRef)) {\n paneRef = this.getSelectableTabAfterIndex(0);\n }\n if (paneRef) {\n paneRef.select();\n }\n }\n\n // update the postion of tab header\n private setTabsPosition() {\n const ul = this.nativeElement.children[0];\n\n this.vertical = (this.tabsposition === 'left' || this.tabsposition === 'right');\n\n removeClass(this.nativeElement, 'inverted');\n if (this.tabsposition === 'bottom' || this.tabsposition === 'right') {\n appendNode(ul as HTMLElement, this.nativeElement);\n addClass(this.nativeElement, 'inverted');\n }\n }\n\n private onDataChange(newVal) {\n this.fieldDefs = createArrayFrom(newVal);\n setTimeout(() => this.selectDefaultPaneByIndex(this.defaultpaneindex || 0));\n }\n\n onPropertyChange(key: string, nv: any, ov) {\n\n if (key === 'defaultpaneindex') {\n this.defaultpaneindex = nv;\n } else if (key === 'dataset') {\n this.onDataChange(nv);\n } else if (key === 'statehandler') {\n this.isPageLoadCall = true;\n const widgetState = this.statePersistence.getWidgetState(this);\n if (nv !== 'none' && widgetState) {\n const paneToSelect: any = this.panes.filter(function(pane) {\n return widgetState === pane.name;\n });\n if (!paneToSelect.length) {\n console.warn('Tab pane name ' + widgetState + ' in State is incorrect. Falling back to the default pane');\n setTimeout(() => this.selectDefaultPaneByIndex(this.defaultpaneindex || 0), 20);\n } else {\n const index = this.getPaneIndexByRef(paneToSelect[0]);\n setTimeout(() => this.selectDefaultPaneByIndex(index), 20);\n }\n } else {\n setTimeout(() => this.selectDefaultPaneByIndex(this.defaultpaneindex || 0), 20);\n }\n } else {\n super.onPropertyChange(key, nv, ov);\n }\n }\n\n registerTabsScroll() {\n setTimeout(() => {\n const $ul = this.$element.find('> ul');\n let $liPosition;\n\n const $li = $ul.children();\n $liPosition = $li.last().position();\n if ($liPosition && ($liPosition.left > $ul.width())) {\n $ul.on('mousewheel', (e) => {\n const left = $ul[0].scrollLeft,\n _delta = -1 * e.originalEvent.wheelDelta;\n e.stopPropagation();\n e.preventDefault();\n $ul.animate({scrollLeft: left + _delta}, {'duration': 10});\n });\n }\n });\n }\n onkeydown(event) {\n switch (event.key) {\n case 'ArrowLeft':\n case 'ArrowUp':\n this.prev(null, true);\n event.preventDefault();\n break;\n\n case 'ArrowRight':\n case 'ArrowDown':\n this.next(null, true);\n event.preventDefault();\n break;\n default:\n break;\n }\n }\n\n ngAfterContentInit() {\n this.promiseResolverFn();\n super.ngAfterContentInit();\n this.setTabsPosition();\n this.panes.changes.subscribe( slides => {\n if (this.panes.length) {\n this.selectDefaultPaneByIndex(this.defaultpaneindex || 0);\n }\n });\n }\n\n ngAfterViewInit() {\n super.ngAfterViewInit();\n this.registerTabsScroll();\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { WmComponentsModule } from '@wm/components/base';\n\nimport { TabsComponent } from './tabs.component';\nimport { TabPaneComponent } from './tab-pane/tab-pane.component';\n\nconst components = [\n TabPaneComponent,\n TabsComponent\n];\n\n@NgModule({\n imports: [\n CommonModule,\n WmComponentsModule\n ],\n declarations: [...components],\n exports: [...components]\n})\nexport class TabsModule {\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["registerProps","DEFAULT_CLS","WIDGET_CONFIG","i1.TabsComponent","_c0","_c1"],"mappings":"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"}
|
@@ -567,6 +567,23 @@
|
|
567
567
|
skip() {
|
568
568
|
this.next('skip');
|
569
569
|
}
|
570
|
+
gotoStep(stepName) {
|
571
|
+
if (stepName) {
|
572
|
+
const gotoStepIndex = this.steps.toArray().map(step => step.name).indexOf(stepName);
|
573
|
+
if (gotoStepIndex !== -1) {
|
574
|
+
const gotoStep = this.getStepRefByIndex(gotoStepIndex);
|
575
|
+
if (gotoStep?.show) {
|
576
|
+
this.onWizardHeaderClick(event, gotoStep);
|
577
|
+
}
|
578
|
+
else {
|
579
|
+
console.error("The gotoStep function cannot navigate to hidden steps");
|
580
|
+
}
|
581
|
+
}
|
582
|
+
else {
|
583
|
+
console.error(`Could not find step '${stepName}'`);
|
584
|
+
}
|
585
|
+
}
|
586
|
+
}
|
570
587
|
// Method to invoke on-Done event on wizard
|
571
588
|
done() {
|
572
589
|
this.currentStep.isDone = true;
|