cax-design-system 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +47 -0
- package/accordion/accordion.d.ts +220 -0
- package/accordion/accordion.interface.d.ts +49 -0
- package/accordion/accordion.module.d.ts +13 -0
- package/accordion/index.d.ts +5 -0
- package/accordion/public_api.d.ts +3 -0
- package/animate/animate.d.ts +40 -0
- package/animate/index.d.ts +5 -0
- package/animate/public_api.d.ts +1 -0
- package/animateonscroll/animateonscroll.d.ts +75 -0
- package/animateonscroll/index.d.ts +5 -0
- package/animateonscroll/public_api.d.ts +1 -0
- package/api/blockableui.d.ts +10 -0
- package/api/caxconfig.d.ts +24 -0
- package/api/confirmaeventtype.d.ts +8 -0
- package/api/confirmation.d.ts +91 -0
- package/api/confirmationservice.d.ts +30 -0
- package/api/contextmenuservice.d.ts +11 -0
- package/api/filtermatchmode.d.ts +22 -0
- package/api/filtermetadata.d.ts +18 -0
- package/api/filteroperator.d.ts +4 -0
- package/api/filterservice.d.ts +10 -0
- package/api/index.d.ts +5 -0
- package/api/lazyloadevent.d.ts +47 -0
- package/api/lazyloadmeta.d.ts +19 -0
- package/api/megamenuitem.d.ts +130 -0
- package/api/menuitem.d.ts +176 -0
- package/api/message.d.ts +30 -0
- package/api/messageservice.d.ts +32 -0
- package/api/overlayoptions.d.ts +188 -0
- package/api/overlayservice.d.ts +9 -0
- package/api/primeicons.d.ts +313 -0
- package/api/public_api.d.ts +33 -0
- package/api/scrolleroptions.d.ts +116 -0
- package/api/selectitem.d.ts +12 -0
- package/api/selectitemgroup.d.ts +10 -0
- package/api/shared.d.ts +24 -0
- package/api/sortevent.d.ts +12 -0
- package/api/sortmeta.d.ts +8 -0
- package/api/tablestate.d.ts +60 -0
- package/api/tooltipoptions.d.ts +69 -0
- package/api/translation.d.ts +135 -0
- package/api/translationkeys.d.ts +50 -0
- package/api/treedragdropservice.d.ts +12 -0
- package/api/treenode.d.ts +86 -0
- package/api/treenodedragevent.d.ts +27 -0
- package/api/treetablenode.d.ts +36 -0
- package/autocomplete/autocomplete.d.ts +629 -0
- package/autocomplete/autocomplete.interface.d.ts +164 -0
- package/autocomplete/index.d.ts +5 -0
- package/autocomplete/public_api.d.ts +2 -0
- package/autofocus/autofocus.d.ts +28 -0
- package/autofocus/index.d.ts +5 -0
- package/autofocus/public_api.d.ts +1 -0
- package/avatar/avatar.d.ts +73 -0
- package/avatar/avatar.module.d.ts +7 -0
- package/avatar/index.d.ts +5 -0
- package/avatar/public_api.d.ts +2 -0
- package/avatargroup/avatargroup.d.ts +27 -0
- package/avatargroup/index.d.ts +5 -0
- package/avatargroup/public_api.d.ts +1 -0
- package/badge/badge.d.ts +23 -0
- package/badge/badge.directive.d.ts +33 -0
- package/badge/badge.module.d.ts +10 -0
- package/badge/index.d.ts +5 -0
- package/badge/public_api.d.ts +3 -0
- package/baseicon/baseicon.d.ts +15 -0
- package/baseicon/index.d.ts +5 -0
- package/baseicon/public_api.d.ts +1 -0
- package/blockui/blockui.d.ts +64 -0
- package/blockui/blockui.interface.d.ts +11 -0
- package/blockui/index.d.ts +5 -0
- package/blockui/public_api.d.ts +2 -0
- package/breadcrumb/breadcrumb.d.ts +55 -0
- package/breadcrumb/breadcrumb.interface.d.ts +38 -0
- package/breadcrumb/breadcrumb.module.d.ts +13 -0
- package/breadcrumb/index.d.ts +5 -0
- package/breadcrumb/public_api.d.ts +3 -0
- package/button/button.d.ts +84 -0
- package/button/button.directive.d.ts +46 -0
- package/button/button.interface.d.ts +30 -0
- package/button/button.module.d.ts +9 -0
- package/button/index.d.ts +5 -0
- package/button/public_api.d.ts +4 -0
- package/buttongroup/buttongroup.d.ts +11 -0
- package/buttongroup/index.d.ts +5 -0
- package/buttongroup/public_api.d.ts +1 -0
- package/calendar/calendar.d.ts +712 -0
- package/calendar/calendar.interface.d.ts +204 -0
- package/calendar/calendar.module.d.ts +9 -0
- package/calendar/index.d.ts +5 -0
- package/calendar/public_api.d.ts +3 -0
- package/card/card.d.ts +53 -0
- package/card/card.interface.d.ts +27 -0
- package/card/card.module.d.ts +11 -0
- package/card/index.d.ts +5 -0
- package/card/public_api.d.ts +3 -0
- package/carousel/carousel.d.ts +227 -0
- package/carousel/carousel.interface.d.ts +63 -0
- package/carousel/index.d.ts +5 -0
- package/carousel/public_api.d.ts +2 -0
- package/cascadeselect/cascadeselect.d.ts +435 -0
- package/cascadeselect/cascadeselect.interface.d.ts +115 -0
- package/cascadeselect/cascadeselect.module.d.ts +15 -0
- package/cascadeselect/index.d.ts +5 -0
- package/cascadeselect/public_api.d.ts +3 -0
- package/chart/chart.d.ts +87 -0
- package/chart/index.d.ts +5 -0
- package/chart/public_api.d.ts +1 -0
- package/checkbox/checkbox.d.ts +164 -0
- package/checkbox/checkbox.interface.d.ts +26 -0
- package/checkbox/checkbox.module.d.ts +10 -0
- package/checkbox/index.d.ts +5 -0
- package/checkbox/public_api.d.ts +3 -0
- package/chip/chip.d.ts +37 -0
- package/chip/chip.interface.d.ts +15 -0
- package/chip/chip.module.d.ts +10 -0
- package/chip/index.d.ts +5 -0
- package/chip/public_api.d.ts +3 -0
- package/chips/chips.d.ts +221 -0
- package/chips/chips.interface.d.ts +58 -0
- package/chips/chips.module.d.ts +13 -0
- package/chips/index.d.ts +5 -0
- package/chips/public_api.d.ts +3 -0
- package/colorpicker/colorpicker.d.ts +247 -0
- package/colorpicker/colorpicker.interface.d.ts +15 -0
- package/colorpicker/index.d.ts +5 -0
- package/colorpicker/public_api.d.ts +2 -0
- package/confirmdialog/confirmdialog.d.ts +273 -0
- package/confirmdialog/confirmdialog.interface.d.ts +39 -0
- package/confirmdialog/index.d.ts +5 -0
- package/confirmdialog/public_api.d.ts +2 -0
- package/confirmpopup/confirmpopup.d.ts +119 -0
- package/confirmpopup/confirmpopup.interface.d.ts +27 -0
- package/confirmpopup/index.d.ts +5 -0
- package/confirmpopup/public_api.d.ts +2 -0
- package/contextmenu/contextmenu.d.ts +260 -0
- package/contextmenu/index.d.ts +5 -0
- package/contextmenu/public_api.d.ts +1 -0
- package/dataview/dataview.d.ts +274 -0
- package/dataview/dataview.interface.d.ts +183 -0
- package/dataview/index.d.ts +5 -0
- package/dataview/public_api.d.ts +2 -0
- package/defer/defer.d.ts +39 -0
- package/defer/index.d.ts +5 -0
- package/defer/public_api.d.ts +1 -0
- package/dialog/dialog.d.ts +373 -0
- package/dialog/dialog.interface.d.ts +31 -0
- package/dialog/index.d.ts +5 -0
- package/dialog/public_api.d.ts +2 -0
- package/divider/divider.d.ts +49 -0
- package/divider/divider.module.d.ts +7 -0
- package/divider/index.d.ts +5 -0
- package/divider/public_api.d.ts +2 -0
- package/dock/dock.d.ts +115 -0
- package/dock/dock.interface.d.ts +19 -0
- package/dock/index.d.ts +5 -0
- package/dock/public_api.d.ts +2 -0
- package/dom/connectedoverlayscrollhandler.d.ts +9 -0
- package/dom/domhandler.d.ts +95 -0
- package/dom/index.d.ts +5 -0
- package/dom/public_api.d.ts +2 -0
- package/dragdrop/dragdrop.d.ts +112 -0
- package/dragdrop/dragdrop.module.d.ts +8 -0
- package/dragdrop/index.d.ts +5 -0
- package/dragdrop/public_api.d.ts +2 -0
- package/dropdown/dropdown-item.d.ts +30 -0
- package/dropdown/dropdown.d.ts +627 -0
- package/dropdown/dropdown.interface.d.ts +154 -0
- package/dropdown/dropdown.module.d.ts +11 -0
- package/dropdown/index.d.ts +5 -0
- package/dropdown/public_api.d.ts +4 -0
- package/dynamicdialog/dialogservice.d.ts +35 -0
- package/dynamicdialog/dynamicdialog-config.d.ts +221 -0
- package/dynamicdialog/dynamicdialog-injector.d.ts +7 -0
- package/dynamicdialog/dynamicdialog-ref.d.ts +101 -0
- package/dynamicdialog/dynamicdialog.d.ts +124 -0
- package/dynamicdialog/dynamicdialogcontent.d.ts +8 -0
- package/dynamicdialog/index.d.ts +5 -0
- package/dynamicdialog/public_api.d.ts +6 -0
- package/editor/editor.d.ts +111 -0
- package/editor/editor.interface.d.ts +64 -0
- package/editor/index.d.ts +5 -0
- package/editor/public_api.d.ts +2 -0
- package/esm2022/accordion/accordion.interface.mjs +2 -0
- package/esm2022/accordion/accordion.mjs +591 -0
- package/esm2022/accordion/accordion.module.mjs +23 -0
- package/esm2022/accordion/cax-design-system-accordion.mjs +5 -0
- package/esm2022/accordion/public_api.mjs +4 -0
- package/esm2022/animate/animate.mjs +101 -0
- package/esm2022/animate/cax-design-system-animate.mjs +5 -0
- package/esm2022/animate/public_api.mjs +2 -0
- package/esm2022/animateonscroll/animateonscroll.mjs +185 -0
- package/esm2022/animateonscroll/cax-design-system-animateonscroll.mjs +5 -0
- package/esm2022/animateonscroll/public_api.mjs +2 -0
- package/esm2022/api/blockableui.mjs +2 -0
- package/esm2022/api/cax-design-system-api.mjs +5 -0
- package/esm2022/api/caxconfig.mjs +163 -0
- package/esm2022/api/confirmaeventtype.mjs +10 -0
- package/esm2022/api/confirmation.mjs +2 -0
- package/esm2022/api/confirmationservice.mjs +43 -0
- package/esm2022/api/contextmenuservice.mjs +22 -0
- package/esm2022/api/filtermatchmode.mjs +23 -0
- package/esm2022/api/filtermetadata.mjs +2 -0
- package/esm2022/api/filteroperator.mjs +5 -0
- package/esm2022/api/filterservice.mjs +225 -0
- package/esm2022/api/lazyloadevent.mjs +2 -0
- package/esm2022/api/lazyloadmeta.mjs +2 -0
- package/esm2022/api/megamenuitem.mjs +2 -0
- package/esm2022/api/menuitem.mjs +2 -0
- package/esm2022/api/message.mjs +2 -0
- package/esm2022/api/messageservice.mjs +47 -0
- package/esm2022/api/overlayoptions.mjs +2 -0
- package/esm2022/api/overlayservice.mjs +19 -0
- package/esm2022/api/primeicons.mjs +314 -0
- package/esm2022/api/public_api.mjs +34 -0
- package/esm2022/api/scrolleroptions.mjs +2 -0
- package/esm2022/api/selectitem.mjs +2 -0
- package/esm2022/api/selectitemgroup.mjs +2 -0
- package/esm2022/api/shared.mjs +65 -0
- package/esm2022/api/sortevent.mjs +2 -0
- package/esm2022/api/sortmeta.mjs +2 -0
- package/esm2022/api/tablestate.mjs +2 -0
- package/esm2022/api/tooltipoptions.mjs +2 -0
- package/esm2022/api/translation.mjs +2 -0
- package/esm2022/api/translationkeys.mjs +51 -0
- package/esm2022/api/treedragdropservice.mjs +21 -0
- package/esm2022/api/treenode.mjs +2 -0
- package/esm2022/api/treenodedragevent.mjs +2 -0
- package/esm2022/api/treetablenode.mjs +2 -0
- package/esm2022/autocomplete/autocomplete.interface.mjs +2 -0
- package/esm2022/autocomplete/autocomplete.mjs +1880 -0
- package/esm2022/autocomplete/cax-design-system-autocomplete.mjs +5 -0
- package/esm2022/autocomplete/public_api.mjs +3 -0
- package/esm2022/autofocus/autofocus.mjs +78 -0
- package/esm2022/autofocus/cax-design-system-autofocus.mjs +5 -0
- package/esm2022/autofocus/public_api.mjs +2 -0
- package/esm2022/avatar/avatar.mjs +104 -0
- package/esm2022/avatar/avatar.module.mjs +16 -0
- package/esm2022/avatar/cax-design-system-avatar.mjs +5 -0
- package/esm2022/avatar/public_api.mjs +3 -0
- package/esm2022/avatargroup/avatargroup.mjs +54 -0
- package/esm2022/avatargroup/cax-design-system-avatargroup.mjs +5 -0
- package/esm2022/avatargroup/public_api.mjs +2 -0
- package/esm2022/badge/badge.directive.mjs +199 -0
- package/esm2022/badge/badge.mjs +51 -0
- package/esm2022/badge/badge.module.mjs +20 -0
- package/esm2022/badge/cax-design-system-badge.mjs +5 -0
- package/esm2022/badge/public_api.mjs +4 -0
- package/esm2022/baseicon/baseicon.mjs +45 -0
- package/esm2022/baseicon/cax-design-system-baseicon.mjs +5 -0
- package/esm2022/baseicon/public_api.mjs +2 -0
- package/esm2022/blockui/blockui.interface.mjs +2 -0
- package/esm2022/blockui/blockui.mjs +206 -0
- package/esm2022/blockui/cax-design-system-blockui.mjs +5 -0
- package/esm2022/blockui/public_api.mjs +3 -0
- package/esm2022/breadcrumb/breadcrumb.interface.mjs +2 -0
- package/esm2022/breadcrumb/breadcrumb.mjs +120 -0
- package/esm2022/breadcrumb/breadcrumb.module.mjs +23 -0
- package/esm2022/breadcrumb/cax-design-system-breadcrumb.mjs +5 -0
- package/esm2022/breadcrumb/public_api.mjs +4 -0
- package/esm2022/button/button.directive.mjs +227 -0
- package/esm2022/button/button.interface.mjs +2 -0
- package/esm2022/button/button.mjs +189 -0
- package/esm2022/button/button.module.mjs +18 -0
- package/esm2022/button/cax-design-system-button.mjs +5 -0
- package/esm2022/button/public_api.mjs +5 -0
- package/esm2022/buttongroup/buttongroup.mjs +38 -0
- package/esm2022/buttongroup/cax-design-system-buttongroup.mjs +5 -0
- package/esm2022/buttongroup/public_api.mjs +2 -0
- package/esm2022/calendar/calendar.interface.mjs +2 -0
- package/esm2022/calendar/calendar.mjs +3192 -0
- package/esm2022/calendar/calendar.module.mjs +18 -0
- package/esm2022/calendar/cax-design-system-calendar.mjs +5 -0
- package/esm2022/calendar/public_api.mjs +4 -0
- package/esm2022/card/card.interface.mjs +2 -0
- package/esm2022/card/card.mjs +117 -0
- package/esm2022/card/card.module.mjs +21 -0
- package/esm2022/card/cax-design-system-card.mjs +5 -0
- package/esm2022/card/public_api.mjs +4 -0
- package/esm2022/carousel/carousel.interface.mjs +2 -0
- package/esm2022/carousel/carousel.mjs +968 -0
- package/esm2022/carousel/cax-design-system-carousel.mjs +5 -0
- package/esm2022/carousel/public_api.mjs +3 -0
- package/esm2022/cascadeselect/cascadeselect.interface.mjs +2 -0
- package/esm2022/cascadeselect/cascadeselect.mjs +1135 -0
- package/esm2022/cascadeselect/cascadeselect.module.mjs +25 -0
- package/esm2022/cascadeselect/cax-design-system-cascadeselect.mjs +5 -0
- package/esm2022/cascadeselect/public_api.mjs +4 -0
- package/esm2022/cax-design-system.mjs +5 -0
- package/esm2022/chart/cax-design-system-chart.mjs +5 -0
- package/esm2022/chart/chart.mjs +236 -0
- package/esm2022/chart/public_api.mjs +2 -0
- package/esm2022/checkbox/cax-design-system-checkbox.mjs +5 -0
- package/esm2022/checkbox/checkbox.interface.mjs +2 -0
- package/esm2022/checkbox/checkbox.mjs +303 -0
- package/esm2022/checkbox/checkbox.module.mjs +20 -0
- package/esm2022/checkbox/public_api.mjs +4 -0
- package/esm2022/chip/cax-design-system-chip.mjs +5 -0
- package/esm2022/chip/chip.interface.mjs +2 -0
- package/esm2022/chip/chip.mjs +86 -0
- package/esm2022/chip/chip.module.mjs +20 -0
- package/esm2022/chip/public_api.mjs +4 -0
- package/esm2022/chips/cax-design-system-chips.mjs +5 -0
- package/esm2022/chips/chips.interface.mjs +2 -0
- package/esm2022/chips/chips.mjs +568 -0
- package/esm2022/chips/chips.module.mjs +22 -0
- package/esm2022/chips/public_api.mjs +4 -0
- package/esm2022/colorpicker/cax-design-system-colorpicker.mjs +5 -0
- package/esm2022/colorpicker/colorpicker.interface.mjs +2 -0
- package/esm2022/colorpicker/colorpicker.mjs +829 -0
- package/esm2022/colorpicker/public_api.mjs +3 -0
- package/esm2022/confirmdialog/cax-design-system-confirmdialog.mjs +5 -0
- package/esm2022/confirmdialog/confirmdialog.interface.mjs +2 -0
- package/esm2022/confirmdialog/confirmdialog.mjs +689 -0
- package/esm2022/confirmdialog/public_api.mjs +3 -0
- package/esm2022/confirmpopup/cax-design-system-confirmpopup.mjs +5 -0
- package/esm2022/confirmpopup/confirmpopup.interface.mjs +2 -0
- package/esm2022/confirmpopup/confirmpopup.mjs +499 -0
- package/esm2022/confirmpopup/public_api.mjs +3 -0
- package/esm2022/contextmenu/cax-design-system-contextmenu.mjs +5 -0
- package/esm2022/contextmenu/contextmenu.mjs +1304 -0
- package/esm2022/contextmenu/public_api.mjs +2 -0
- package/esm2022/dataview/cax-design-system-dataview.mjs +5 -0
- package/esm2022/dataview/dataview.interface.mjs +2 -0
- package/esm2022/dataview/dataview.mjs +723 -0
- package/esm2022/dataview/public_api.mjs +3 -0
- package/esm2022/defer/cax-design-system-defer.mjs +5 -0
- package/esm2022/defer/defer.mjs +111 -0
- package/esm2022/defer/public_api.mjs +2 -0
- package/esm2022/dialog/cax-design-system-dialog.mjs +5 -0
- package/esm2022/dialog/dialog.interface.mjs +2 -0
- package/esm2022/dialog/dialog.mjs +1168 -0
- package/esm2022/dialog/public_api.mjs +3 -0
- package/esm2022/divider/cax-design-system-divider.mjs +5 -0
- package/esm2022/divider/divider.mjs +69 -0
- package/esm2022/divider/divider.module.mjs +16 -0
- package/esm2022/divider/public_api.mjs +3 -0
- package/esm2022/dock/cax-design-system-dock.mjs +5 -0
- package/esm2022/dock/dock.interface.mjs +2 -0
- package/esm2022/dock/dock.mjs +431 -0
- package/esm2022/dock/public_api.mjs +3 -0
- package/esm2022/dom/cax-design-system-dom.mjs +5 -0
- package/esm2022/dom/connectedoverlayscrollhandler.mjs +30 -0
- package/esm2022/dom/domhandler.mjs +722 -0
- package/esm2022/dom/public_api.mjs +3 -0
- package/esm2022/dragdrop/cax-design-system-dragdrop.mjs +5 -0
- package/esm2022/dragdrop/dragdrop.mjs +309 -0
- package/esm2022/dragdrop/dragdrop.module.mjs +18 -0
- package/esm2022/dragdrop/public_api.mjs +3 -0
- package/esm2022/dropdown/cax-design-system-dropdown.mjs +5 -0
- package/esm2022/dropdown/dropdown-item.mjs +72 -0
- package/esm2022/dropdown/dropdown.interface.mjs +2 -0
- package/esm2022/dropdown/dropdown.mjs +1597 -0
- package/esm2022/dropdown/dropdown.module.mjs +20 -0
- package/esm2022/dropdown/public_api.mjs +5 -0
- package/esm2022/dynamicdialog/cax-design-system-dynamicdialog.mjs +5 -0
- package/esm2022/dynamicdialog/dialogservice.mjs +102 -0
- package/esm2022/dynamicdialog/dynamicdialog-config.mjs +187 -0
- package/esm2022/dynamicdialog/dynamicdialog-injector.mjs +15 -0
- package/esm2022/dynamicdialog/dynamicdialog-ref.mjs +119 -0
- package/esm2022/dynamicdialog/dynamicdialog.mjs +696 -0
- package/esm2022/dynamicdialog/dynamicdialogcontent.mjs +20 -0
- package/esm2022/dynamicdialog/public_api.mjs +7 -0
- package/esm2022/editor/cax-design-system-editor.mjs +5 -0
- package/esm2022/editor/editor.interface.mjs +2 -0
- package/esm2022/editor/editor.mjs +392 -0
- package/esm2022/editor/public_api.mjs +3 -0
- package/esm2022/fieldset/cax-design-system-fieldset.mjs +5 -0
- package/esm2022/fieldset/fieldset.interface.mjs +2 -0
- package/esm2022/fieldset/fieldset.mjs +297 -0
- package/esm2022/fieldset/public_api.mjs +3 -0
- package/esm2022/fileupload/cax-design-system-fileupload.mjs +5 -0
- package/esm2022/fileupload/fileupload.interface.mjs +2 -0
- package/esm2022/fileupload/fileupload.mjs +1188 -0
- package/esm2022/fileupload/public_api.mjs +3 -0
- package/esm2022/floatlabel/cax-design-system-floatlabel.mjs +5 -0
- package/esm2022/floatlabel/floatlabel.mjs +44 -0
- package/esm2022/floatlabel/public_api.mjs +2 -0
- package/esm2022/focustrap/cax-design-system-focustrap.mjs +5 -0
- package/esm2022/focustrap/focustrap.mjs +103 -0
- package/esm2022/focustrap/public_api.mjs +2 -0
- package/esm2022/galleria/cax-design-system-galleria.mjs +5 -0
- package/esm2022/galleria/galleria.interface.mjs +2 -0
- package/esm2022/galleria/galleria.mjs +1668 -0
- package/esm2022/galleria/public_api.mjs +3 -0
- package/esm2022/iconfield/cax-design-system-iconfield.mjs +5 -0
- package/esm2022/iconfield/iconfield.mjs +44 -0
- package/esm2022/iconfield/public_api.mjs +2 -0
- package/esm2022/icons/angledoubledown/angledoubledown.mjs +35 -0
- package/esm2022/icons/angledoubledown/cax-design-system-icons-angledoubledown.mjs +5 -0
- package/esm2022/icons/angledoubledown/public_api.mjs +2 -0
- package/esm2022/icons/angledoubleleft/angledoubleleft.mjs +35 -0
- package/esm2022/icons/angledoubleleft/cax-design-system-icons-angledoubleleft.mjs +5 -0
- package/esm2022/icons/angledoubleleft/public_api.mjs +2 -0
- package/esm2022/icons/angledoubleright/angledoubleright.mjs +35 -0
- package/esm2022/icons/angledoubleright/cax-design-system-icons-angledoubleright.mjs +5 -0
- package/esm2022/icons/angledoubleright/public_api.mjs +2 -0
- package/esm2022/icons/angledoubleup/angledoubleup.mjs +35 -0
- package/esm2022/icons/angledoubleup/cax-design-system-icons-angledoubleup.mjs +5 -0
- package/esm2022/icons/angledoubleup/public_api.mjs +2 -0
- package/esm2022/icons/angledown/angledown.mjs +31 -0
- package/esm2022/icons/angledown/cax-design-system-icons-angledown.mjs +5 -0
- package/esm2022/icons/angledown/public_api.mjs +2 -0
- package/esm2022/icons/angleleft/angleleft.mjs +31 -0
- package/esm2022/icons/angleleft/cax-design-system-icons-angleleft.mjs +5 -0
- package/esm2022/icons/angleleft/public_api.mjs +2 -0
- package/esm2022/icons/angleright/angleright.mjs +31 -0
- package/esm2022/icons/angleright/cax-design-system-icons-angleright.mjs +5 -0
- package/esm2022/icons/angleright/public_api.mjs +2 -0
- package/esm2022/icons/angleup/angleup.mjs +31 -0
- package/esm2022/icons/angleup/cax-design-system-icons-angleup.mjs +5 -0
- package/esm2022/icons/angleup/public_api.mjs +2 -0
- package/esm2022/icons/arrowdown/arrowdown.mjs +54 -0
- package/esm2022/icons/arrowdown/cax-design-system-icons-arrowdown.mjs +5 -0
- package/esm2022/icons/arrowdown/public_api.mjs +2 -0
- package/esm2022/icons/arrowdownleft/arrowdownleft.mjs +31 -0
- package/esm2022/icons/arrowdownleft/cax-design-system-icons-arrowdownleft.mjs +5 -0
- package/esm2022/icons/arrowdownleft/public_api.mjs +2 -0
- package/esm2022/icons/arrowdownright/arrowdownright.mjs +31 -0
- package/esm2022/icons/arrowdownright/cax-design-system-icons-arrowdownright.mjs +5 -0
- package/esm2022/icons/arrowdownright/public_api.mjs +2 -0
- package/esm2022/icons/arrowleft/arrowleft.mjs +54 -0
- package/esm2022/icons/arrowleft/cax-design-system-icons-arrowleft.mjs +5 -0
- package/esm2022/icons/arrowleft/public_api.mjs +2 -0
- package/esm2022/icons/arrowright/arrowright.mjs +35 -0
- package/esm2022/icons/arrowright/cax-design-system-icons-arrowright.mjs +5 -0
- package/esm2022/icons/arrowright/public_api.mjs +2 -0
- package/esm2022/icons/arrowup/arrowup.mjs +54 -0
- package/esm2022/icons/arrowup/cax-design-system-icons-arrowup.mjs +5 -0
- package/esm2022/icons/arrowup/public_api.mjs +2 -0
- package/esm2022/icons/ban/ban.mjs +50 -0
- package/esm2022/icons/ban/cax-design-system-icons-ban.mjs +5 -0
- package/esm2022/icons/ban/public_api.mjs +2 -0
- package/esm2022/icons/bars/bars.mjs +35 -0
- package/esm2022/icons/bars/cax-design-system-icons-bars.mjs +5 -0
- package/esm2022/icons/bars/public_api.mjs +2 -0
- package/esm2022/icons/blank/blank.mjs +25 -0
- package/esm2022/icons/blank/cax-design-system-icons-blank.mjs +5 -0
- package/esm2022/icons/blank/public_api.mjs +2 -0
- package/esm2022/icons/calendar/calendar.mjs +31 -0
- package/esm2022/icons/calendar/cax-design-system-icons-calendar.mjs +5 -0
- package/esm2022/icons/calendar/public_api.mjs +2 -0
- package/esm2022/icons/caretleft/caretleft.mjs +31 -0
- package/esm2022/icons/caretleft/cax-design-system-icons-caretleft.mjs +5 -0
- package/esm2022/icons/caretleft/public_api.mjs +2 -0
- package/esm2022/icons/caretright/caretright.mjs +31 -0
- package/esm2022/icons/caretright/cax-design-system-icons-caretright.mjs +5 -0
- package/esm2022/icons/caretright/public_api.mjs +2 -0
- package/esm2022/icons/check/cax-design-system-icons-check.mjs +5 -0
- package/esm2022/icons/check/check.mjs +31 -0
- package/esm2022/icons/check/public_api.mjs +2 -0
- package/esm2022/icons/chevrondown/cax-design-system-icons-chevrondown.mjs +5 -0
- package/esm2022/icons/chevrondown/chevrondown.mjs +31 -0
- package/esm2022/icons/chevrondown/public_api.mjs +2 -0
- package/esm2022/icons/chevronleft/cax-design-system-icons-chevronleft.mjs +5 -0
- package/esm2022/icons/chevronleft/chevronleft.mjs +31 -0
- package/esm2022/icons/chevronleft/public_api.mjs +2 -0
- package/esm2022/icons/chevronright/cax-design-system-icons-chevronright.mjs +5 -0
- package/esm2022/icons/chevronright/chevronright.mjs +31 -0
- package/esm2022/icons/chevronright/public_api.mjs +2 -0
- package/esm2022/icons/chevronup/cax-design-system-icons-chevronup.mjs +5 -0
- package/esm2022/icons/chevronup/chevronup.mjs +31 -0
- package/esm2022/icons/chevronup/public_api.mjs +2 -0
- package/esm2022/icons/exclamationtriangle/cax-design-system-icons-exclamationtriangle.mjs +5 -0
- package/esm2022/icons/exclamationtriangle/exclamationtriangle.mjs +66 -0
- package/esm2022/icons/exclamationtriangle/public_api.mjs +2 -0
- package/esm2022/icons/eye/cax-design-system-icons-eye.mjs +5 -0
- package/esm2022/icons/eye/eye.mjs +35 -0
- package/esm2022/icons/eye/public_api.mjs +2 -0
- package/esm2022/icons/eyeslash/cax-design-system-icons-eyeslash.mjs +5 -0
- package/esm2022/icons/eyeslash/eyeslash.mjs +54 -0
- package/esm2022/icons/eyeslash/public_api.mjs +2 -0
- package/esm2022/icons/filter/cax-design-system-icons-filter.mjs +5 -0
- package/esm2022/icons/filter/filter.mjs +50 -0
- package/esm2022/icons/filter/public_api.mjs +2 -0
- package/esm2022/icons/filterslash/cax-design-system-icons-filterslash.mjs +5 -0
- package/esm2022/icons/filterslash/filterslash.mjs +54 -0
- package/esm2022/icons/filterslash/public_api.mjs +2 -0
- package/esm2022/icons/home/cax-design-system-icons-home.mjs +5 -0
- package/esm2022/icons/home/home.mjs +54 -0
- package/esm2022/icons/home/public_api.mjs +2 -0
- package/esm2022/icons/infocircle/cax-design-system-icons-infocircle.mjs +5 -0
- package/esm2022/icons/infocircle/infocircle.mjs +54 -0
- package/esm2022/icons/infocircle/public_api.mjs +2 -0
- package/esm2022/icons/minus/cax-design-system-icons-minus.mjs +5 -0
- package/esm2022/icons/minus/minus.mjs +32 -0
- package/esm2022/icons/minus/public_api.mjs +2 -0
- package/esm2022/icons/pencil/cax-design-system-icons-pencil.mjs +5 -0
- package/esm2022/icons/pencil/pencil.mjs +50 -0
- package/esm2022/icons/pencil/public_api.mjs +2 -0
- package/esm2022/icons/plus/cax-design-system-icons-plus.mjs +5 -0
- package/esm2022/icons/plus/plus.mjs +50 -0
- package/esm2022/icons/plus/public_api.mjs +2 -0
- package/esm2022/icons/refresh/cax-design-system-icons-refresh.mjs +5 -0
- package/esm2022/icons/refresh/public_api.mjs +2 -0
- package/esm2022/icons/refresh/refresh.mjs +54 -0
- package/esm2022/icons/search/cax-design-system-icons-search.mjs +5 -0
- package/esm2022/icons/search/public_api.mjs +2 -0
- package/esm2022/icons/search/search.mjs +54 -0
- package/esm2022/icons/searchminus/cax-design-system-icons-searchminus.mjs +5 -0
- package/esm2022/icons/searchminus/public_api.mjs +2 -0
- package/esm2022/icons/searchminus/searchminus.mjs +54 -0
- package/esm2022/icons/searchplus/cax-design-system-icons-searchplus.mjs +5 -0
- package/esm2022/icons/searchplus/public_api.mjs +2 -0
- package/esm2022/icons/searchplus/searchplus.mjs +54 -0
- package/esm2022/icons/sortalt/cax-design-system-icons-sortalt.mjs +5 -0
- package/esm2022/icons/sortalt/public_api.mjs +2 -0
- package/esm2022/icons/sortalt/sortalt.mjs +62 -0
- package/esm2022/icons/sortamountdown/cax-design-system-icons-sortamountdown.mjs +5 -0
- package/esm2022/icons/sortamountdown/public_api.mjs +2 -0
- package/esm2022/icons/sortamountdown/sortamountdown.mjs +50 -0
- package/esm2022/icons/sortamountupalt/cax-design-system-icons-sortamountupalt.mjs +5 -0
- package/esm2022/icons/sortamountupalt/public_api.mjs +2 -0
- package/esm2022/icons/sortamountupalt/sortamountupalt.mjs +50 -0
- package/esm2022/icons/spinner/cax-design-system-icons-spinner.mjs +5 -0
- package/esm2022/icons/spinner/public_api.mjs +2 -0
- package/esm2022/icons/spinner/spinner.mjs +50 -0
- package/esm2022/icons/star/cax-design-system-icons-star.mjs +5 -0
- package/esm2022/icons/star/public_api.mjs +2 -0
- package/esm2022/icons/star/star.mjs +50 -0
- package/esm2022/icons/starfill/cax-design-system-icons-starfill.mjs +5 -0
- package/esm2022/icons/starfill/public_api.mjs +2 -0
- package/esm2022/icons/starfill/starfill.mjs +50 -0
- package/esm2022/icons/thlarge/cax-design-system-icons-thlarge.mjs +5 -0
- package/esm2022/icons/thlarge/public_api.mjs +2 -0
- package/esm2022/icons/thlarge/thlarge.mjs +54 -0
- package/esm2022/icons/times/cax-design-system-icons-times.mjs +5 -0
- package/esm2022/icons/times/public_api.mjs +2 -0
- package/esm2022/icons/times/times.mjs +31 -0
- package/esm2022/icons/timescircle/cax-design-system-icons-timescircle.mjs +5 -0
- package/esm2022/icons/timescircle/public_api.mjs +2 -0
- package/esm2022/icons/timescircle/timescircle.mjs +54 -0
- package/esm2022/icons/trash/cax-design-system-icons-trash.mjs +5 -0
- package/esm2022/icons/trash/public_api.mjs +2 -0
- package/esm2022/icons/trash/trash.mjs +54 -0
- package/esm2022/icons/undo/cax-design-system-icons-undo.mjs +5 -0
- package/esm2022/icons/undo/public_api.mjs +2 -0
- package/esm2022/icons/undo/undo.mjs +54 -0
- package/esm2022/icons/upload/cax-design-system-icons-upload.mjs +5 -0
- package/esm2022/icons/upload/public_api.mjs +2 -0
- package/esm2022/icons/upload/upload.mjs +54 -0
- package/esm2022/icons/windowmaximize/cax-design-system-icons-windowmaximize.mjs +5 -0
- package/esm2022/icons/windowmaximize/public_api.mjs +2 -0
- package/esm2022/icons/windowmaximize/windowmaximize.mjs +54 -0
- package/esm2022/icons/windowminimize/cax-design-system-icons-windowminimize.mjs +5 -0
- package/esm2022/icons/windowminimize/public_api.mjs +2 -0
- package/esm2022/icons/windowminimize/windowminimize.mjs +54 -0
- package/esm2022/image/cax-design-system-image.mjs +5 -0
- package/esm2022/image/image.interface.mjs +2 -0
- package/esm2022/image/image.mjs +418 -0
- package/esm2022/image/image.module.mjs +17 -0
- package/esm2022/image/public_api.mjs +4 -0
- package/esm2022/inplace/cax-design-system-inplace.mjs +5 -0
- package/esm2022/inplace/inplace.interface.mjs +2 -0
- package/esm2022/inplace/inplace.mjs +243 -0
- package/esm2022/inplace/public_api.mjs +3 -0
- package/esm2022/inputgroup/cax-design-system-inputgroup.mjs +5 -0
- package/esm2022/inputgroup/inputgroup.mjs +48 -0
- package/esm2022/inputgroup/inputgroup.module.mjs +25 -0
- package/esm2022/inputgroup/public_api.mjs +3 -0
- package/esm2022/inputgroupaddon/cax-design-system-inputgroupaddon.mjs +5 -0
- package/esm2022/inputgroupaddon/inputgroupaddon.mjs +32 -0
- package/esm2022/inputgroupaddon/inputgroupaddon.module.mjs +24 -0
- package/esm2022/inputgroupaddon/public_api.mjs +3 -0
- package/esm2022/inputicon/cax-design-system-inputicon.mjs +5 -0
- package/esm2022/inputicon/inputicon.mjs +38 -0
- package/esm2022/inputicon/public_api.mjs +2 -0
- package/esm2022/inputmask/cax-design-system-inputmask.mjs +5 -0
- package/esm2022/inputmask/inputmask.interface.mjs +2 -0
- package/esm2022/inputmask/inputmask.mjs +914 -0
- package/esm2022/inputmask/public_api.mjs +3 -0
- package/esm2022/inputnumber/cax-design-system-inputnumber.mjs +5 -0
- package/esm2022/inputnumber/inputnumber.interface.mjs +2 -0
- package/esm2022/inputnumber/inputnumber.mjs +1290 -0
- package/esm2022/inputnumber/inputnumber.module.mjs +17 -0
- package/esm2022/inputnumber/public_api.mjs +4 -0
- package/esm2022/inputotp/cax-design-system-inputotp.mjs +5 -0
- package/esm2022/inputotp/inputotp.interface.mjs +2 -0
- package/esm2022/inputotp/inputotp.mjs +381 -0
- package/esm2022/inputotp/public_api.mjs +3 -0
- package/esm2022/inputswitch/cax-design-system-inputswitch.mjs +5 -0
- package/esm2022/inputswitch/inputswitch.interface.mjs +2 -0
- package/esm2022/inputswitch/inputswitch.mjs +244 -0
- package/esm2022/inputswitch/public_api.mjs +3 -0
- package/esm2022/inputtext/cax-design-system-inputtext.mjs +5 -0
- package/esm2022/inputtext/inputtext.component.mjs +74 -0
- package/esm2022/inputtext/inputtext.directive.mjs +52 -0
- package/esm2022/inputtext/inputtext.module.mjs +20 -0
- package/esm2022/inputtext/public_api.mjs +4 -0
- package/esm2022/inputtextarea/cax-design-system-inputtextarea.mjs +5 -0
- package/esm2022/inputtextarea/inputtextarea.mjs +135 -0
- package/esm2022/inputtextarea/public_api.mjs +2 -0
- package/esm2022/keyfilter/cax-design-system-keyfilter.mjs +5 -0
- package/esm2022/keyfilter/keyfilter.interface.mjs +2 -0
- package/esm2022/keyfilter/keyfilter.mjs +265 -0
- package/esm2022/keyfilter/public_api.mjs +3 -0
- package/esm2022/knob/cax-design-system-knob.mjs +5 -0
- package/esm2022/knob/knob.mjs +464 -0
- package/esm2022/knob/public_api.mjs +2 -0
- package/esm2022/listbox/cax-design-system-listbox.mjs +5 -0
- package/esm2022/listbox/listbox.interface.mjs +2 -0
- package/esm2022/listbox/listbox.mjs +1555 -0
- package/esm2022/listbox/public_api.mjs +3 -0
- package/esm2022/logo/cax-design-system-logo.mjs +5 -0
- package/esm2022/logo/logo.mjs +45 -0
- package/esm2022/logo/logo.module.mjs +16 -0
- package/esm2022/logo/public_api.mjs +3 -0
- package/esm2022/megamenu/cax-design-system-megamenu.mjs +5 -0
- package/esm2022/megamenu/megamenu.interface.mjs +2 -0
- package/esm2022/megamenu/megamenu.mjs +1190 -0
- package/esm2022/megamenu/public_api.mjs +3 -0
- package/esm2022/menu/cax-design-system-menu.mjs +5 -0
- package/esm2022/menu/menu.mjs +953 -0
- package/esm2022/menu/public_api.mjs +2 -0
- package/esm2022/menubar/cax-design-system-menubar.mjs +5 -0
- package/esm2022/menubar/menubar.interface.mjs +2 -0
- package/esm2022/menubar/menubar.mjs +1249 -0
- package/esm2022/menubar/public_api.mjs +3 -0
- package/esm2022/message/cax-design-system-message.mjs +5 -0
- package/esm2022/message/message.mjs +112 -0
- package/esm2022/message/public_api.mjs +2 -0
- package/esm2022/messages/cax-design-system-messages.mjs +5 -0
- package/esm2022/messages/messages.interface.mjs +2 -0
- package/esm2022/messages/messages.mjs +283 -0
- package/esm2022/messages/messages.module.mjs +17 -0
- package/esm2022/messages/public_api.mjs +4 -0
- package/esm2022/metergroup/cax-design-system-metergroup.mjs +5 -0
- package/esm2022/metergroup/metergroup.interface.mjs +2 -0
- package/esm2022/metergroup/metergroup.mjs +280 -0
- package/esm2022/metergroup/public_api.mjs +3 -0
- package/esm2022/multiselect/cax-design-system-multiselect.mjs +5 -0
- package/esm2022/multiselect/multiselect.interface.mjs +2 -0
- package/esm2022/multiselect/multiselect.mjs +2525 -0
- package/esm2022/multiselect/public_api.mjs +3 -0
- package/esm2022/navigation/cax-design-system-navigation.mjs +5 -0
- package/esm2022/navigation/navigation.interface.mjs +2 -0
- package/esm2022/navigation/navigation.mjs +261 -0
- package/esm2022/navigation/navigation.module.mjs +16 -0
- package/esm2022/navigation/public_api.mjs +3 -0
- package/esm2022/orderlist/cax-design-system-orderlist.mjs +5 -0
- package/esm2022/orderlist/orderlist.interface.mjs +2 -0
- package/esm2022/orderlist/orderlist.mjs +993 -0
- package/esm2022/orderlist/public_api.mjs +3 -0
- package/esm2022/organizationchart/cax-design-system-organizationchart.mjs +5 -0
- package/esm2022/organizationchart/organizationchart.interface.mjs +2 -0
- package/esm2022/organizationchart/organizationchart.mjs +416 -0
- package/esm2022/organizationchart/public_api.mjs +3 -0
- package/esm2022/overlay/cax-design-system-overlay.mjs +5 -0
- package/esm2022/overlay/overlay.mjs +579 -0
- package/esm2022/overlay/overlay.module.mjs +17 -0
- package/esm2022/overlay/public_api.mjs +3 -0
- package/esm2022/overlaypanel/cax-design-system-overlaypanel.mjs +5 -0
- package/esm2022/overlaypanel/overlaypanel.mjs +470 -0
- package/esm2022/overlaypanel/overlaypanel.module.mjs +17 -0
- package/esm2022/overlaypanel/public_api.mjs +3 -0
- package/esm2022/paginator/cax-design-system-paginator.mjs +5 -0
- package/esm2022/paginator/paginator.interface.mjs +2 -0
- package/esm2022/paginator/paginator.mjs +424 -0
- package/esm2022/paginator/paginator.module.mjs +27 -0
- package/esm2022/paginator/public_api.mjs +4 -0
- package/esm2022/panel/cax-design-system-panel.mjs +5 -0
- package/esm2022/panel/panel.interface.mjs +2 -0
- package/esm2022/panel/panel.mjs +393 -0
- package/esm2022/panel/public_api.mjs +3 -0
- package/esm2022/panelmenu/cax-design-system-panelmenu.mjs +5 -0
- package/esm2022/panelmenu/panelmenu.interface.mjs +2 -0
- package/esm2022/panelmenu/panelmenu.mjs +1276 -0
- package/esm2022/panelmenu/public_api.mjs +3 -0
- package/esm2022/password/cax-design-system-password.mjs +5 -0
- package/esm2022/password/password.mjs +1017 -0
- package/esm2022/password/public_api.mjs +2 -0
- package/esm2022/picklist/cax-design-system-picklist.mjs +5 -0
- package/esm2022/picklist/picklist.interface.mjs +2 -0
- package/esm2022/picklist/picklist.mjs +1909 -0
- package/esm2022/picklist/public_api.mjs +3 -0
- package/esm2022/progressbar/cax-design-system-progressbar.mjs +5 -0
- package/esm2022/progressbar/progressbar.mjs +86 -0
- package/esm2022/progressbar/progressbar.module.mjs +18 -0
- package/esm2022/progressbar/public_api.mjs +3 -0
- package/esm2022/progressspinner/cax-design-system-progressspinner.mjs +5 -0
- package/esm2022/progressspinner/progressspinner.mjs +112 -0
- package/esm2022/progressspinner/progressspinner.module.mjs +18 -0
- package/esm2022/progressspinner/public_api.mjs +3 -0
- package/esm2022/public_api.mjs +2 -0
- package/esm2022/radiobutton/cax-design-system-radiobutton.mjs +5 -0
- package/esm2022/radiobutton/public_api.mjs +4 -0
- package/esm2022/radiobutton/radiobutton.interface.mjs +2 -0
- package/esm2022/radiobutton/radiobutton.mjs +277 -0
- package/esm2022/radiobutton/radiobutton.module.mjs +16 -0
- package/esm2022/rating/cax-design-system-rating.mjs +5 -0
- package/esm2022/rating/public_api.mjs +3 -0
- package/esm2022/rating/rating.interface.mjs +2 -0
- package/esm2022/rating/rating.mjs +388 -0
- package/esm2022/ripple/cax-design-system-ripple.mjs +5 -0
- package/esm2022/ripple/public_api.mjs +3 -0
- package/esm2022/ripple/ripple.mjs +129 -0
- package/esm2022/ripple/ripple.module.mjs +16 -0
- package/esm2022/scroller/cax-design-system-scroller.mjs +5 -0
- package/esm2022/scroller/public_api.mjs +4 -0
- package/esm2022/scroller/scroller.interface.mjs +2 -0
- package/esm2022/scroller/scroller.mjs +981 -0
- package/esm2022/scroller/scroller.module.mjs +17 -0
- package/esm2022/scrollpanel/cax-design-system-scrollpanel.mjs +5 -0
- package/esm2022/scrollpanel/public_api.mjs +3 -0
- package/esm2022/scrollpanel/scrollpanel.interface.mjs +2 -0
- package/esm2022/scrollpanel/scrollpanel.mjs +501 -0
- package/esm2022/scrolltop/cax-design-system-scrolltop.mjs +5 -0
- package/esm2022/scrolltop/public_api.mjs +3 -0
- package/esm2022/scrolltop/scrolltop.interface.mjs +2 -0
- package/esm2022/scrolltop/scrolltop.mjs +282 -0
- package/esm2022/selectbutton/cax-design-system-selectbutton.mjs +5 -0
- package/esm2022/selectbutton/public_api.mjs +3 -0
- package/esm2022/selectbutton/selectbutton.interface.mjs +2 -0
- package/esm2022/selectbutton/selectbutton.mjs +378 -0
- package/esm2022/sidebar/cax-design-system-sidebar.mjs +5 -0
- package/esm2022/sidebar/public_api.mjs +4 -0
- package/esm2022/sidebar/sidebar.interface.mjs +2 -0
- package/esm2022/sidebar/sidebar.mjs +419 -0
- package/esm2022/sidebar/sidebar.module.mjs +21 -0
- package/esm2022/skeleton/cax-design-system-skeleton.mjs +5 -0
- package/esm2022/skeleton/public_api.mjs +3 -0
- package/esm2022/skeleton/skeleton.mjs +87 -0
- package/esm2022/skeleton/skeleton.module.mjs +18 -0
- package/esm2022/slidemenu/cax-design-system-slidemenu.mjs +5 -0
- package/esm2022/slidemenu/public_api.mjs +3 -0
- package/esm2022/slidemenu/slidemenu.interface.mjs +2 -0
- package/esm2022/slidemenu/slidemenu.mjs +1501 -0
- package/esm2022/slider/cax-design-system-slider.mjs +5 -0
- package/esm2022/slider/public_api.mjs +3 -0
- package/esm2022/slider/slider.interface.mjs +2 -0
- package/esm2022/slider/slider.mjs +796 -0
- package/esm2022/speeddial/cax-design-system-speeddial.mjs +5 -0
- package/esm2022/speeddial/public_api.mjs +4 -0
- package/esm2022/speeddial/speeddial.interface.mjs +2 -0
- package/esm2022/speeddial/speeddial.mjs +611 -0
- package/esm2022/speeddial/speeddial.module.mjs +24 -0
- package/esm2022/spinner/cax-design-system-spinner.mjs +5 -0
- package/esm2022/spinner/public_api.mjs +2 -0
- package/esm2022/spinner/spinner.mjs +447 -0
- package/esm2022/splitbutton/cax-design-system-splitbutton.mjs +5 -0
- package/esm2022/splitbutton/public_api.mjs +4 -0
- package/esm2022/splitbutton/splitbutton.interface.mjs +2 -0
- package/esm2022/splitbutton/splitbutton.mjs +364 -0
- package/esm2022/splitbutton/splitbutton.module.mjs +22 -0
- package/esm2022/splitter/cax-design-system-splitter.mjs +5 -0
- package/esm2022/splitter/public_api.mjs +3 -0
- package/esm2022/splitter/splitter.interface.mjs +2 -0
- package/esm2022/splitter/splitter.mjs +562 -0
- package/esm2022/stepper/cax-design-system-stepper.mjs +5 -0
- package/esm2022/stepper/public_api.mjs +3 -0
- package/esm2022/stepper/stepper.interface.mjs +2 -0
- package/esm2022/stepper/stepper.mjs +677 -0
- package/esm2022/steps/cax-design-system-steps.mjs +5 -0
- package/esm2022/steps/public_api.mjs +2 -0
- package/esm2022/steps/steps.mjs +345 -0
- package/esm2022/styleclass/cax-design-system-styleclass.mjs +5 -0
- package/esm2022/styleclass/public_api.mjs +2 -0
- package/esm2022/styleclass/styleclass.mjs +316 -0
- package/esm2022/table/cax-design-system-table.mjs +5 -0
- package/esm2022/table/columnfilter.interface.mjs +2 -0
- package/esm2022/table/components/cell-editor/cell-editor.mjs +52 -0
- package/esm2022/table/components/column-filter/column-filter.mjs +685 -0
- package/esm2022/table/components/column-filter-form-element/column-filter-form-element.mjs +106 -0
- package/esm2022/table/components/sort-icon/sort-icon.mjs +75 -0
- package/esm2022/table/components/table-body/table-body.mjs +152 -0
- package/esm2022/table/components/table-checkbox/table-checkbox.mjs +82 -0
- package/esm2022/table/components/table-header-checkbox/table-header-checkbox.mjs +92 -0
- package/esm2022/table/components/table-radio-button/table-radio-button.mjs +79 -0
- package/esm2022/table/directives/cancel-editable-row.directive.mjs +32 -0
- package/esm2022/table/directives/content-menu-row.directive.mjs +70 -0
- package/esm2022/table/directives/editable-column.directive.mjs +344 -0
- package/esm2022/table/directives/editable-row.directive.mjs +32 -0
- package/esm2022/table/directives/frozen-column.directive.mjs +77 -0
- package/esm2022/table/directives/init-editable-row.directive.mjs +32 -0
- package/esm2022/table/directives/reorderable-column.directive.mjs +115 -0
- package/esm2022/table/directives/reorderable-row-handle.directive.mjs +25 -0
- package/esm2022/table/directives/reorderable-row.directive.mjs +122 -0
- package/esm2022/table/directives/resizable-column.directive.mjs +123 -0
- package/esm2022/table/directives/row-group-header.directive.mjs +26 -0
- package/esm2022/table/directives/row-toggler.directive.mjs +42 -0
- package/esm2022/table/directives/save-editable-row.directive.mjs +32 -0
- package/esm2022/table/directives/selectable-row-double-click.directive.mjs +71 -0
- package/esm2022/table/directives/selectable-row.directive.mjs +243 -0
- package/esm2022/table/directives/sortable-column.directive.mjs +90 -0
- package/esm2022/table/public_api.mjs +29 -0
- package/esm2022/table/table.interface.mjs +2 -0
- package/esm2022/table/table.mjs +2721 -0
- package/esm2022/table/table.module.mjs +147 -0
- package/esm2022/table/table.service.mjs +42 -0
- package/esm2022/tabmenu/cax-design-system-tabmenu.mjs +5 -0
- package/esm2022/tabmenu/public_api.mjs +3 -0
- package/esm2022/tabmenu/tabmenu.interface.mjs +2 -0
- package/esm2022/tabmenu/tabmenu.mjs +576 -0
- package/esm2022/tabview/cax-design-system-tabview.mjs +5 -0
- package/esm2022/tabview/public_api.mjs +4 -0
- package/esm2022/tabview/tabview.interface.mjs +2 -0
- package/esm2022/tabview/tabview.mjs +824 -0
- package/esm2022/tabview/tabview.module.mjs +24 -0
- package/esm2022/tag/cax-design-system-tag.mjs +5 -0
- package/esm2022/tag/public_api.mjs +4 -0
- package/esm2022/tag/tag.interface.mjs +2 -0
- package/esm2022/tag/tag.mjs +95 -0
- package/esm2022/tag/tag.module.mjs +19 -0
- package/esm2022/terminal/cax-design-system-terminal.mjs +5 -0
- package/esm2022/terminal/public_api.mjs +3 -0
- package/esm2022/terminal/terminal.mjs +143 -0
- package/esm2022/terminal/terminalservice.mjs +25 -0
- package/esm2022/tieredmenu/cax-design-system-tieredmenu.mjs +5 -0
- package/esm2022/tieredmenu/public_api.mjs +4 -0
- package/esm2022/tieredmenu/tieredmenu.interface.mjs +2 -0
- package/esm2022/tieredmenu/tieredmenu.mjs +1289 -0
- package/esm2022/tieredmenu/tiredmenu.module.mjs +23 -0
- package/esm2022/timeline/cax-design-system-timeline.mjs +5 -0
- package/esm2022/timeline/public_api.mjs +3 -0
- package/esm2022/timeline/timeline.interface.mjs +2 -0
- package/esm2022/timeline/timeline.mjs +167 -0
- package/esm2022/toast/cax-design-system-toast.mjs +5 -0
- package/esm2022/toast/public_api.mjs +4 -0
- package/esm2022/toast/toast.interface.mjs +2 -0
- package/esm2022/toast/toast.mjs +324 -0
- package/esm2022/toast/toast.module.mjs +18 -0
- package/esm2022/toast/toastitem.mjs +170 -0
- package/esm2022/togglebutton/cax-design-system-togglebutton.mjs +5 -0
- package/esm2022/togglebutton/public_api.mjs +3 -0
- package/esm2022/togglebutton/togglebutton.interface.mjs +2 -0
- package/esm2022/togglebutton/togglebutton.mjs +274 -0
- package/esm2022/toggleswitch/cax-design-system-toggleswitch.mjs +5 -0
- package/esm2022/toggleswitch/public_api.mjs +3 -0
- package/esm2022/toggleswitch/toggleswitch.mjs +34 -0
- package/esm2022/toggleswitch/toggleswitch.module.mjs +19 -0
- package/esm2022/toolbar/cax-design-system-toolbar.mjs +5 -0
- package/esm2022/toolbar/public_api.mjs +3 -0
- package/esm2022/toolbar/toolbar.interface.mjs +2 -0
- package/esm2022/toolbar/toolbar.mjs +111 -0
- package/esm2022/tooltip/cax-design-system-tooltip.mjs +5 -0
- package/esm2022/tooltip/public_api.mjs +3 -0
- package/esm2022/tooltip/tooltip.mjs +889 -0
- package/esm2022/tooltip/tooltip.module.mjs +18 -0
- package/esm2022/tree/cax-design-system-tree.mjs +5 -0
- package/esm2022/tree/public_api.mjs +4 -0
- package/esm2022/tree/tree.interface.mjs +2 -0
- package/esm2022/tree/tree.mjs +1495 -0
- package/esm2022/tree/tree.module.mjs +29 -0
- package/esm2022/treeselect/cax-design-system-treeselect.mjs +5 -0
- package/esm2022/treeselect/public_api.mjs +3 -0
- package/esm2022/treeselect/treeselect.interface.mjs +2 -0
- package/esm2022/treeselect/treeselect.mjs +1193 -0
- package/esm2022/treetable/cax-design-system-treetable.mjs +5 -0
- package/esm2022/treetable/public_api.mjs +3 -0
- package/esm2022/treetable/treetable.interface.mjs +2 -0
- package/esm2022/treetable/treetable.mjs +4111 -0
- package/esm2022/tristatecheckbox/cax-design-system-tristatecheckbox.mjs +5 -0
- package/esm2022/tristatecheckbox/public_api.mjs +4 -0
- package/esm2022/tristatecheckbox/tristatecheckbox.interface.mjs +2 -0
- package/esm2022/tristatecheckbox/tristatecheckbox.mjs +215 -0
- package/esm2022/tristatecheckbox/tristatecheckbox.module.mjs +17 -0
- package/esm2022/ts-helpers/cax-design-system-ts-helpers.mjs +5 -0
- package/esm2022/ts-helpers/public_api.mjs +2 -0
- package/esm2022/ts-helpers/ts-helpers.mjs +2 -0
- package/esm2022/utils/cax-design-system-utils.mjs +5 -0
- package/esm2022/utils/objectutils.mjs +258 -0
- package/esm2022/utils/public_api.mjs +5 -0
- package/esm2022/utils/uniquecomponentid.mjs +6 -0
- package/esm2022/utils/zindexutils.mjs +35 -0
- package/esm2022/virtualscroller/cax-design-system-virtualscroller.mjs +5 -0
- package/esm2022/virtualscroller/public_api.mjs +3 -0
- package/esm2022/virtualscroller/virtualscroller.interface.mjs +2 -0
- package/esm2022/virtualscroller/virtualscroller.mjs +215 -0
- package/fesm2022/cax-design-system-accordion.mjs +617 -0
- package/fesm2022/cax-design-system-accordion.mjs.map +1 -0
- package/fesm2022/cax-design-system-animate.mjs +108 -0
- package/fesm2022/cax-design-system-animate.mjs.map +1 -0
- package/fesm2022/cax-design-system-animateonscroll.mjs +192 -0
- package/fesm2022/cax-design-system-animateonscroll.mjs.map +1 -0
- package/fesm2022/cax-design-system-api.mjs +995 -0
- package/fesm2022/cax-design-system-api.mjs.map +1 -0
- package/fesm2022/cax-design-system-autocomplete.mjs +1887 -0
- package/fesm2022/cax-design-system-autocomplete.mjs.map +1 -0
- package/fesm2022/cax-design-system-autofocus.mjs +85 -0
- package/fesm2022/cax-design-system-autofocus.mjs.map +1 -0
- package/fesm2022/cax-design-system-avatar.mjs +124 -0
- package/fesm2022/cax-design-system-avatar.mjs.map +1 -0
- package/fesm2022/cax-design-system-avatargroup.mjs +61 -0
- package/fesm2022/cax-design-system-avatargroup.mjs.map +1 -0
- package/fesm2022/cax-design-system-badge.mjs +270 -0
- package/fesm2022/cax-design-system-badge.mjs.map +1 -0
- package/fesm2022/cax-design-system-baseicon.mjs +52 -0
- package/fesm2022/cax-design-system-baseicon.mjs.map +1 -0
- package/fesm2022/cax-design-system-blockui.mjs +213 -0
- package/fesm2022/cax-design-system-blockui.mjs.map +1 -0
- package/fesm2022/cax-design-system-breadcrumb.mjs +146 -0
- package/fesm2022/cax-design-system-breadcrumb.mjs.map +1 -0
- package/fesm2022/cax-design-system-button.mjs +431 -0
- package/fesm2022/cax-design-system-button.mjs.map +1 -0
- package/fesm2022/cax-design-system-buttongroup.mjs +45 -0
- package/fesm2022/cax-design-system-buttongroup.mjs.map +1 -0
- package/fesm2022/cax-design-system-calendar.mjs +3212 -0
- package/fesm2022/cax-design-system-calendar.mjs.map +1 -0
- package/fesm2022/cax-design-system-card.mjs +141 -0
- package/fesm2022/cax-design-system-card.mjs.map +1 -0
- package/fesm2022/cax-design-system-carousel.mjs +975 -0
- package/fesm2022/cax-design-system-carousel.mjs.map +1 -0
- package/fesm2022/cax-design-system-cascadeselect.mjs +1163 -0
- package/fesm2022/cax-design-system-cascadeselect.mjs.map +1 -0
- package/fesm2022/cax-design-system-chart.mjs +243 -0
- package/fesm2022/cax-design-system-chart.mjs.map +1 -0
- package/fesm2022/cax-design-system-checkbox.mjs +326 -0
- package/fesm2022/cax-design-system-checkbox.mjs.map +1 -0
- package/fesm2022/cax-design-system-chip.mjs +109 -0
- package/fesm2022/cax-design-system-chip.mjs.map +1 -0
- package/fesm2022/cax-design-system-chips.mjs +588 -0
- package/fesm2022/cax-design-system-chips.mjs.map +1 -0
- package/fesm2022/cax-design-system-colorpicker.mjs +836 -0
- package/fesm2022/cax-design-system-colorpicker.mjs.map +1 -0
- package/fesm2022/cax-design-system-confirmdialog.mjs +696 -0
- package/fesm2022/cax-design-system-confirmdialog.mjs.map +1 -0
- package/fesm2022/cax-design-system-confirmpopup.mjs +506 -0
- package/fesm2022/cax-design-system-confirmpopup.mjs.map +1 -0
- package/fesm2022/cax-design-system-contextmenu.mjs +1311 -0
- package/fesm2022/cax-design-system-contextmenu.mjs.map +1 -0
- package/fesm2022/cax-design-system-dataview.mjs +730 -0
- package/fesm2022/cax-design-system-dataview.mjs.map +1 -0
- package/fesm2022/cax-design-system-defer.mjs +118 -0
- package/fesm2022/cax-design-system-defer.mjs.map +1 -0
- package/fesm2022/cax-design-system-dialog.mjs +1175 -0
- package/fesm2022/cax-design-system-dialog.mjs.map +1 -0
- package/fesm2022/cax-design-system-divider.mjs +89 -0
- package/fesm2022/cax-design-system-divider.mjs.map +1 -0
- package/fesm2022/cax-design-system-dock.mjs +438 -0
- package/fesm2022/cax-design-system-dock.mjs.map +1 -0
- package/fesm2022/cax-design-system-dom.mjs +757 -0
- package/fesm2022/cax-design-system-dom.mjs.map +1 -0
- package/fesm2022/cax-design-system-dragdrop.mjs +331 -0
- package/fesm2022/cax-design-system-dragdrop.mjs.map +1 -0
- package/fesm2022/cax-design-system-dropdown.mjs +1684 -0
- package/fesm2022/cax-design-system-dropdown.mjs.map +1 -0
- package/fesm2022/cax-design-system-dynamicdialog.mjs +1133 -0
- package/fesm2022/cax-design-system-dynamicdialog.mjs.map +1 -0
- package/fesm2022/cax-design-system-editor.mjs +399 -0
- package/fesm2022/cax-design-system-editor.mjs.map +1 -0
- package/fesm2022/cax-design-system-fieldset.mjs +304 -0
- package/fesm2022/cax-design-system-fieldset.mjs.map +1 -0
- package/fesm2022/cax-design-system-fileupload.mjs +1195 -0
- package/fesm2022/cax-design-system-fileupload.mjs.map +1 -0
- package/fesm2022/cax-design-system-floatlabel.mjs +51 -0
- package/fesm2022/cax-design-system-floatlabel.mjs.map +1 -0
- package/fesm2022/cax-design-system-focustrap.mjs +110 -0
- package/fesm2022/cax-design-system-focustrap.mjs.map +1 -0
- package/fesm2022/cax-design-system-galleria.mjs +1675 -0
- package/fesm2022/cax-design-system-galleria.mjs.map +1 -0
- package/fesm2022/cax-design-system-iconfield.mjs +51 -0
- package/fesm2022/cax-design-system-iconfield.mjs.map +1 -0
- package/fesm2022/cax-design-system-icons-angledoubledown.mjs +42 -0
- package/fesm2022/cax-design-system-icons-angledoubledown.mjs.map +1 -0
- package/fesm2022/cax-design-system-icons-angledoubleleft.mjs +42 -0
- package/fesm2022/cax-design-system-icons-angledoubleleft.mjs.map +1 -0
- package/fesm2022/cax-design-system-icons-angledoubleright.mjs +42 -0
- package/fesm2022/cax-design-system-icons-angledoubleright.mjs.map +1 -0
- package/fesm2022/cax-design-system-icons-angledoubleup.mjs +42 -0
- package/fesm2022/cax-design-system-icons-angledoubleup.mjs.map +1 -0
- package/fesm2022/cax-design-system-icons-angledown.mjs +38 -0
- package/fesm2022/cax-design-system-icons-angledown.mjs.map +1 -0
- package/fesm2022/cax-design-system-icons-angleleft.mjs +38 -0
- package/fesm2022/cax-design-system-icons-angleleft.mjs.map +1 -0
- package/fesm2022/cax-design-system-icons-angleright.mjs +38 -0
- package/fesm2022/cax-design-system-icons-angleright.mjs.map +1 -0
- package/fesm2022/cax-design-system-icons-angleup.mjs +38 -0
- package/fesm2022/cax-design-system-icons-angleup.mjs.map +1 -0
- package/fesm2022/cax-design-system-icons-arrowdown.mjs +61 -0
- package/fesm2022/cax-design-system-icons-arrowdown.mjs.map +1 -0
- package/fesm2022/cax-design-system-icons-arrowdownleft.mjs +38 -0
- package/fesm2022/cax-design-system-icons-arrowdownleft.mjs.map +1 -0
- package/fesm2022/cax-design-system-icons-arrowdownright.mjs +38 -0
- package/fesm2022/cax-design-system-icons-arrowdownright.mjs.map +1 -0
- package/fesm2022/cax-design-system-icons-arrowleft.mjs +61 -0
- package/fesm2022/cax-design-system-icons-arrowleft.mjs.map +1 -0
- package/fesm2022/cax-design-system-icons-arrowright.mjs +42 -0
- package/fesm2022/cax-design-system-icons-arrowright.mjs.map +1 -0
- package/fesm2022/cax-design-system-icons-arrowup.mjs +61 -0
- package/fesm2022/cax-design-system-icons-arrowup.mjs.map +1 -0
- package/fesm2022/cax-design-system-icons-ban.mjs +57 -0
- package/fesm2022/cax-design-system-icons-ban.mjs.map +1 -0
- package/fesm2022/cax-design-system-icons-bars.mjs +42 -0
- package/fesm2022/cax-design-system-icons-bars.mjs.map +1 -0
- package/fesm2022/cax-design-system-icons-blank.mjs +32 -0
- package/fesm2022/cax-design-system-icons-blank.mjs.map +1 -0
- package/fesm2022/cax-design-system-icons-calendar.mjs +38 -0
- package/fesm2022/cax-design-system-icons-calendar.mjs.map +1 -0
- package/fesm2022/cax-design-system-icons-caretleft.mjs +38 -0
- package/fesm2022/cax-design-system-icons-caretleft.mjs.map +1 -0
- package/fesm2022/cax-design-system-icons-caretright.mjs +38 -0
- package/fesm2022/cax-design-system-icons-caretright.mjs.map +1 -0
- package/fesm2022/cax-design-system-icons-check.mjs +38 -0
- package/fesm2022/cax-design-system-icons-check.mjs.map +1 -0
- package/fesm2022/cax-design-system-icons-chevrondown.mjs +38 -0
- package/fesm2022/cax-design-system-icons-chevrondown.mjs.map +1 -0
- package/fesm2022/cax-design-system-icons-chevronleft.mjs +38 -0
- package/fesm2022/cax-design-system-icons-chevronleft.mjs.map +1 -0
- package/fesm2022/cax-design-system-icons-chevronright.mjs +38 -0
- package/fesm2022/cax-design-system-icons-chevronright.mjs.map +1 -0
- package/fesm2022/cax-design-system-icons-chevronup.mjs +38 -0
- package/fesm2022/cax-design-system-icons-chevronup.mjs.map +1 -0
- package/fesm2022/cax-design-system-icons-exclamationtriangle.mjs +73 -0
- package/fesm2022/cax-design-system-icons-exclamationtriangle.mjs.map +1 -0
- package/fesm2022/cax-design-system-icons-eye.mjs +42 -0
- package/fesm2022/cax-design-system-icons-eye.mjs.map +1 -0
- package/fesm2022/cax-design-system-icons-eyeslash.mjs +61 -0
- package/fesm2022/cax-design-system-icons-eyeslash.mjs.map +1 -0
- package/fesm2022/cax-design-system-icons-filter.mjs +57 -0
- package/fesm2022/cax-design-system-icons-filter.mjs.map +1 -0
- package/fesm2022/cax-design-system-icons-filterslash.mjs +61 -0
- package/fesm2022/cax-design-system-icons-filterslash.mjs.map +1 -0
- package/fesm2022/cax-design-system-icons-home.mjs +61 -0
- package/fesm2022/cax-design-system-icons-home.mjs.map +1 -0
- package/fesm2022/cax-design-system-icons-infocircle.mjs +61 -0
- package/fesm2022/cax-design-system-icons-infocircle.mjs.map +1 -0
- package/fesm2022/cax-design-system-icons-minus.mjs +39 -0
- package/fesm2022/cax-design-system-icons-minus.mjs.map +1 -0
- package/fesm2022/cax-design-system-icons-pencil.mjs +57 -0
- package/fesm2022/cax-design-system-icons-pencil.mjs.map +1 -0
- package/fesm2022/cax-design-system-icons-plus.mjs +57 -0
- package/fesm2022/cax-design-system-icons-plus.mjs.map +1 -0
- package/fesm2022/cax-design-system-icons-refresh.mjs +61 -0
- package/fesm2022/cax-design-system-icons-refresh.mjs.map +1 -0
- package/fesm2022/cax-design-system-icons-search.mjs +61 -0
- package/fesm2022/cax-design-system-icons-search.mjs.map +1 -0
- package/fesm2022/cax-design-system-icons-searchminus.mjs +61 -0
- package/fesm2022/cax-design-system-icons-searchminus.mjs.map +1 -0
- package/fesm2022/cax-design-system-icons-searchplus.mjs +61 -0
- package/fesm2022/cax-design-system-icons-searchplus.mjs.map +1 -0
- package/fesm2022/cax-design-system-icons-sortalt.mjs +69 -0
- package/fesm2022/cax-design-system-icons-sortalt.mjs.map +1 -0
- package/fesm2022/cax-design-system-icons-sortamountdown.mjs +57 -0
- package/fesm2022/cax-design-system-icons-sortamountdown.mjs.map +1 -0
- package/fesm2022/cax-design-system-icons-sortamountupalt.mjs +57 -0
- package/fesm2022/cax-design-system-icons-sortamountupalt.mjs.map +1 -0
- package/fesm2022/cax-design-system-icons-spinner.mjs +57 -0
- package/fesm2022/cax-design-system-icons-spinner.mjs.map +1 -0
- package/fesm2022/cax-design-system-icons-star.mjs +57 -0
- package/fesm2022/cax-design-system-icons-star.mjs.map +1 -0
- package/fesm2022/cax-design-system-icons-starfill.mjs +57 -0
- package/fesm2022/cax-design-system-icons-starfill.mjs.map +1 -0
- package/fesm2022/cax-design-system-icons-thlarge.mjs +61 -0
- package/fesm2022/cax-design-system-icons-thlarge.mjs.map +1 -0
- package/fesm2022/cax-design-system-icons-times.mjs +38 -0
- package/fesm2022/cax-design-system-icons-times.mjs.map +1 -0
- package/fesm2022/cax-design-system-icons-timescircle.mjs +61 -0
- package/fesm2022/cax-design-system-icons-timescircle.mjs.map +1 -0
- package/fesm2022/cax-design-system-icons-trash.mjs +61 -0
- package/fesm2022/cax-design-system-icons-trash.mjs.map +1 -0
- package/fesm2022/cax-design-system-icons-undo.mjs +61 -0
- package/fesm2022/cax-design-system-icons-undo.mjs.map +1 -0
- package/fesm2022/cax-design-system-icons-upload.mjs +61 -0
- package/fesm2022/cax-design-system-icons-upload.mjs.map +1 -0
- package/fesm2022/cax-design-system-icons-windowmaximize.mjs +61 -0
- package/fesm2022/cax-design-system-icons-windowmaximize.mjs.map +1 -0
- package/fesm2022/cax-design-system-icons-windowminimize.mjs +61 -0
- package/fesm2022/cax-design-system-icons-windowminimize.mjs.map +1 -0
- package/fesm2022/cax-design-system-image.mjs +438 -0
- package/fesm2022/cax-design-system-image.mjs.map +1 -0
- package/fesm2022/cax-design-system-inplace.mjs +250 -0
- package/fesm2022/cax-design-system-inplace.mjs.map +1 -0
- package/fesm2022/cax-design-system-inputgroup.mjs +77 -0
- package/fesm2022/cax-design-system-inputgroup.mjs.map +1 -0
- package/fesm2022/cax-design-system-inputgroupaddon.mjs +60 -0
- package/fesm2022/cax-design-system-inputgroupaddon.mjs.map +1 -0
- package/fesm2022/cax-design-system-inputicon.mjs +45 -0
- package/fesm2022/cax-design-system-inputicon.mjs.map +1 -0
- package/fesm2022/cax-design-system-inputmask.mjs +921 -0
- package/fesm2022/cax-design-system-inputmask.mjs.map +1 -0
- package/fesm2022/cax-design-system-inputnumber.mjs +1310 -0
- package/fesm2022/cax-design-system-inputnumber.mjs.map +1 -0
- package/fesm2022/cax-design-system-inputotp.mjs +388 -0
- package/fesm2022/cax-design-system-inputotp.mjs.map +1 -0
- package/fesm2022/cax-design-system-inputswitch.mjs +251 -0
- package/fesm2022/cax-design-system-inputswitch.mjs.map +1 -0
- package/fesm2022/cax-design-system-inputtext.mjs +145 -0
- package/fesm2022/cax-design-system-inputtext.mjs.map +1 -0
- package/fesm2022/cax-design-system-inputtextarea.mjs +142 -0
- package/fesm2022/cax-design-system-inputtextarea.mjs.map +1 -0
- package/fesm2022/cax-design-system-keyfilter.mjs +272 -0
- package/fesm2022/cax-design-system-keyfilter.mjs.map +1 -0
- package/fesm2022/cax-design-system-knob.mjs +471 -0
- package/fesm2022/cax-design-system-knob.mjs.map +1 -0
- package/fesm2022/cax-design-system-listbox.mjs +1562 -0
- package/fesm2022/cax-design-system-listbox.mjs.map +1 -0
- package/fesm2022/cax-design-system-logo.mjs +65 -0
- package/fesm2022/cax-design-system-logo.mjs.map +1 -0
- package/fesm2022/cax-design-system-megamenu.mjs +1197 -0
- package/fesm2022/cax-design-system-megamenu.mjs.map +1 -0
- package/fesm2022/cax-design-system-menu.mjs +960 -0
- package/fesm2022/cax-design-system-menu.mjs.map +1 -0
- package/fesm2022/cax-design-system-menubar.mjs +1256 -0
- package/fesm2022/cax-design-system-menubar.mjs.map +1 -0
- package/fesm2022/cax-design-system-message.mjs +119 -0
- package/fesm2022/cax-design-system-message.mjs.map +1 -0
- package/fesm2022/cax-design-system-messages.mjs +303 -0
- package/fesm2022/cax-design-system-messages.mjs.map +1 -0
- package/fesm2022/cax-design-system-metergroup.mjs +287 -0
- package/fesm2022/cax-design-system-metergroup.mjs.map +1 -0
- package/fesm2022/cax-design-system-multiselect.mjs +2532 -0
- package/fesm2022/cax-design-system-multiselect.mjs.map +1 -0
- package/fesm2022/cax-design-system-navigation.mjs +281 -0
- package/fesm2022/cax-design-system-navigation.mjs.map +1 -0
- package/fesm2022/cax-design-system-orderlist.mjs +1000 -0
- package/fesm2022/cax-design-system-orderlist.mjs.map +1 -0
- package/fesm2022/cax-design-system-organizationchart.mjs +423 -0
- package/fesm2022/cax-design-system-organizationchart.mjs.map +1 -0
- package/fesm2022/cax-design-system-overlay.mjs +599 -0
- package/fesm2022/cax-design-system-overlay.mjs.map +1 -0
- package/fesm2022/cax-design-system-overlaypanel.mjs +490 -0
- package/fesm2022/cax-design-system-overlaypanel.mjs.map +1 -0
- package/fesm2022/cax-design-system-paginator.mjs +454 -0
- package/fesm2022/cax-design-system-paginator.mjs.map +1 -0
- package/fesm2022/cax-design-system-panel.mjs +400 -0
- package/fesm2022/cax-design-system-panel.mjs.map +1 -0
- package/fesm2022/cax-design-system-panelmenu.mjs +1283 -0
- package/fesm2022/cax-design-system-panelmenu.mjs.map +1 -0
- package/fesm2022/cax-design-system-password.mjs +1024 -0
- package/fesm2022/cax-design-system-password.mjs.map +1 -0
- package/fesm2022/cax-design-system-picklist.mjs +1916 -0
- package/fesm2022/cax-design-system-picklist.mjs.map +1 -0
- package/fesm2022/cax-design-system-progressbar.mjs +108 -0
- package/fesm2022/cax-design-system-progressbar.mjs.map +1 -0
- package/fesm2022/cax-design-system-progressspinner.mjs +134 -0
- package/fesm2022/cax-design-system-progressspinner.mjs.map +1 -0
- package/fesm2022/cax-design-system-radiobutton.mjs +297 -0
- package/fesm2022/cax-design-system-radiobutton.mjs.map +1 -0
- package/fesm2022/cax-design-system-rating.mjs +395 -0
- package/fesm2022/cax-design-system-rating.mjs.map +1 -0
- package/fesm2022/cax-design-system-ripple.mjs +149 -0
- package/fesm2022/cax-design-system-ripple.mjs.map +1 -0
- package/fesm2022/cax-design-system-scroller.mjs +1001 -0
- package/fesm2022/cax-design-system-scroller.mjs.map +1 -0
- package/fesm2022/cax-design-system-scrollpanel.mjs +508 -0
- package/fesm2022/cax-design-system-scrollpanel.mjs.map +1 -0
- package/fesm2022/cax-design-system-scrolltop.mjs +289 -0
- package/fesm2022/cax-design-system-scrolltop.mjs.map +1 -0
- package/fesm2022/cax-design-system-selectbutton.mjs +385 -0
- package/fesm2022/cax-design-system-selectbutton.mjs.map +1 -0
- package/fesm2022/cax-design-system-sidebar.mjs +439 -0
- package/fesm2022/cax-design-system-sidebar.mjs.map +1 -0
- package/fesm2022/cax-design-system-skeleton.mjs +109 -0
- package/fesm2022/cax-design-system-skeleton.mjs.map +1 -0
- package/fesm2022/cax-design-system-slidemenu.mjs +1508 -0
- package/fesm2022/cax-design-system-slidemenu.mjs.map +1 -0
- package/fesm2022/cax-design-system-slider.mjs +803 -0
- package/fesm2022/cax-design-system-slider.mjs.map +1 -0
- package/fesm2022/cax-design-system-speeddial.mjs +637 -0
- package/fesm2022/cax-design-system-speeddial.mjs.map +1 -0
- package/fesm2022/cax-design-system-spinner.mjs +454 -0
- package/fesm2022/cax-design-system-spinner.mjs.map +1 -0
- package/fesm2022/cax-design-system-splitbutton.mjs +390 -0
- package/fesm2022/cax-design-system-splitbutton.mjs.map +1 -0
- package/fesm2022/cax-design-system-splitter.mjs +569 -0
- package/fesm2022/cax-design-system-splitter.mjs.map +1 -0
- package/fesm2022/cax-design-system-stepper.mjs +684 -0
- package/fesm2022/cax-design-system-stepper.mjs.map +1 -0
- package/fesm2022/cax-design-system-steps.mjs +352 -0
- package/fesm2022/cax-design-system-steps.mjs.map +1 -0
- package/fesm2022/cax-design-system-styleclass.mjs +323 -0
- package/fesm2022/cax-design-system-styleclass.mjs.map +1 -0
- package/fesm2022/cax-design-system-table.mjs +5562 -0
- package/fesm2022/cax-design-system-table.mjs.map +1 -0
- package/fesm2022/cax-design-system-tabmenu.mjs +583 -0
- package/fesm2022/cax-design-system-tabmenu.mjs.map +1 -0
- package/fesm2022/cax-design-system-tabview.mjs +850 -0
- package/fesm2022/cax-design-system-tabview.mjs.map +1 -0
- package/fesm2022/cax-design-system-tag.mjs +117 -0
- package/fesm2022/cax-design-system-tag.mjs.map +1 -0
- package/fesm2022/cax-design-system-terminal.mjs +172 -0
- package/fesm2022/cax-design-system-terminal.mjs.map +1 -0
- package/fesm2022/cax-design-system-tieredmenu.mjs +1314 -0
- package/fesm2022/cax-design-system-tieredmenu.mjs.map +1 -0
- package/fesm2022/cax-design-system-timeline.mjs +174 -0
- package/fesm2022/cax-design-system-timeline.mjs.map +1 -0
- package/fesm2022/cax-design-system-toast.mjs +507 -0
- package/fesm2022/cax-design-system-toast.mjs.map +1 -0
- package/fesm2022/cax-design-system-togglebutton.mjs +281 -0
- package/fesm2022/cax-design-system-togglebutton.mjs.map +1 -0
- package/fesm2022/cax-design-system-toggleswitch.mjs +57 -0
- package/fesm2022/cax-design-system-toggleswitch.mjs.map +1 -0
- package/fesm2022/cax-design-system-toolbar.mjs +118 -0
- package/fesm2022/cax-design-system-toolbar.mjs.map +1 -0
- package/fesm2022/cax-design-system-tooltip.mjs +910 -0
- package/fesm2022/cax-design-system-tooltip.mjs.map +1 -0
- package/fesm2022/cax-design-system-tree.mjs +1527 -0
- package/fesm2022/cax-design-system-tree.mjs.map +1 -0
- package/fesm2022/cax-design-system-treeselect.mjs +1200 -0
- package/fesm2022/cax-design-system-treeselect.mjs.map +1 -0
- package/fesm2022/cax-design-system-treetable.mjs +4118 -0
- package/fesm2022/cax-design-system-treetable.mjs.map +1 -0
- package/fesm2022/cax-design-system-tristatecheckbox.mjs +235 -0
- package/fesm2022/cax-design-system-tristatecheckbox.mjs.map +1 -0
- package/fesm2022/cax-design-system-ts-helpers.mjs +4 -0
- package/fesm2022/cax-design-system-ts-helpers.mjs.map +1 -0
- package/fesm2022/cax-design-system-utils.mjs +305 -0
- package/fesm2022/cax-design-system-utils.mjs.map +1 -0
- package/fesm2022/cax-design-system-virtualscroller.mjs +222 -0
- package/fesm2022/cax-design-system-virtualscroller.mjs.map +1 -0
- package/fesm2022/cax-design-system.mjs +6 -0
- package/fesm2022/cax-design-system.mjs.map +1 -0
- package/fieldset/fieldset.d.ts +93 -0
- package/fieldset/fieldset.interface.d.ts +46 -0
- package/fieldset/index.d.ts +5 -0
- package/fieldset/public_api.d.ts +2 -0
- package/fileupload/fileupload.d.ts +380 -0
- package/fileupload/fileupload.interface.d.ts +226 -0
- package/fileupload/index.d.ts +5 -0
- package/fileupload/public_api.d.ts +2 -0
- package/floatlabel/floatlabel.d.ts +17 -0
- package/floatlabel/index.d.ts +5 -0
- package/floatlabel/public_api.d.ts +1 -0
- package/focustrap/focustrap.d.ts +34 -0
- package/focustrap/index.d.ts +5 -0
- package/focustrap/public_api.d.ts +1 -0
- package/galleria/galleria.d.ts +404 -0
- package/galleria/galleria.interface.d.ts +97 -0
- package/galleria/index.d.ts +5 -0
- package/galleria/public_api.d.ts +2 -0
- package/iconfield/iconfield.d.ts +25 -0
- package/iconfield/index.d.ts +5 -0
- package/iconfield/public_api.d.ts +1 -0
- package/icons/angledoubledown/angledoubledown.d.ts +6 -0
- package/icons/angledoubledown/index.d.ts +5 -0
- package/icons/angledoubledown/public_api.d.ts +1 -0
- package/icons/angledoubleleft/angledoubleleft.d.ts +6 -0
- package/icons/angledoubleleft/index.d.ts +5 -0
- package/icons/angledoubleleft/public_api.d.ts +1 -0
- package/icons/angledoubleright/angledoubleright.d.ts +6 -0
- package/icons/angledoubleright/index.d.ts +5 -0
- package/icons/angledoubleright/public_api.d.ts +1 -0
- package/icons/angledoubleup/angledoubleup.d.ts +6 -0
- package/icons/angledoubleup/index.d.ts +5 -0
- package/icons/angledoubleup/public_api.d.ts +1 -0
- package/icons/angledown/angledown.d.ts +6 -0
- package/icons/angledown/index.d.ts +5 -0
- package/icons/angledown/public_api.d.ts +1 -0
- package/icons/angleleft/angleleft.d.ts +6 -0
- package/icons/angleleft/index.d.ts +5 -0
- package/icons/angleleft/public_api.d.ts +1 -0
- package/icons/angleright/angleright.d.ts +6 -0
- package/icons/angleright/index.d.ts +5 -0
- package/icons/angleright/public_api.d.ts +1 -0
- package/icons/angleup/angleup.d.ts +6 -0
- package/icons/angleup/index.d.ts +5 -0
- package/icons/angleup/public_api.d.ts +1 -0
- package/icons/arrowdown/arrowdown.d.ts +9 -0
- package/icons/arrowdown/index.d.ts +5 -0
- package/icons/arrowdown/public_api.d.ts +1 -0
- package/icons/arrowdownleft/arrowdownleft.d.ts +6 -0
- package/icons/arrowdownleft/index.d.ts +5 -0
- package/icons/arrowdownleft/public_api.d.ts +1 -0
- package/icons/arrowdownright/arrowdownright.d.ts +6 -0
- package/icons/arrowdownright/index.d.ts +5 -0
- package/icons/arrowdownright/public_api.d.ts +1 -0
- package/icons/arrowleft/arrowleft.d.ts +8 -0
- package/icons/arrowleft/index.d.ts +5 -0
- package/icons/arrowleft/public_api.d.ts +1 -0
- package/icons/arrowright/arrowright.d.ts +6 -0
- package/icons/arrowright/index.d.ts +5 -0
- package/icons/arrowright/public_api.d.ts +1 -0
- package/icons/arrowup/arrowup.d.ts +8 -0
- package/icons/arrowup/index.d.ts +5 -0
- package/icons/arrowup/public_api.d.ts +1 -0
- package/icons/ban/ban.d.ts +8 -0
- package/icons/ban/index.d.ts +5 -0
- package/icons/ban/public_api.d.ts +1 -0
- package/icons/bars/bars.d.ts +6 -0
- package/icons/bars/index.d.ts +5 -0
- package/icons/bars/public_api.d.ts +1 -0
- package/icons/blank/blank.d.ts +6 -0
- package/icons/blank/index.d.ts +5 -0
- package/icons/blank/public_api.d.ts +1 -0
- package/icons/calendar/calendar.d.ts +6 -0
- package/icons/calendar/index.d.ts +5 -0
- package/icons/calendar/public_api.d.ts +1 -0
- package/icons/caretleft/caretleft.d.ts +6 -0
- package/icons/caretleft/index.d.ts +5 -0
- package/icons/caretleft/public_api.d.ts +1 -0
- package/icons/caretright/caretright.d.ts +6 -0
- package/icons/caretright/index.d.ts +5 -0
- package/icons/caretright/public_api.d.ts +1 -0
- package/icons/check/check.d.ts +6 -0
- package/icons/check/index.d.ts +5 -0
- package/icons/check/public_api.d.ts +1 -0
- package/icons/chevrondown/chevrondown.d.ts +6 -0
- package/icons/chevrondown/index.d.ts +5 -0
- package/icons/chevrondown/public_api.d.ts +1 -0
- package/icons/chevronleft/chevronleft.d.ts +6 -0
- package/icons/chevronleft/index.d.ts +5 -0
- package/icons/chevronleft/public_api.d.ts +1 -0
- package/icons/chevronright/chevronright.d.ts +6 -0
- package/icons/chevronright/index.d.ts +5 -0
- package/icons/chevronright/public_api.d.ts +1 -0
- package/icons/chevronup/chevronup.d.ts +6 -0
- package/icons/chevronup/index.d.ts +5 -0
- package/icons/chevronup/public_api.d.ts +1 -0
- package/icons/exclamationtriangle/exclamationtriangle.d.ts +9 -0
- package/icons/exclamationtriangle/index.d.ts +5 -0
- package/icons/exclamationtriangle/public_api.d.ts +1 -0
- package/icons/eye/eye.d.ts +6 -0
- package/icons/eye/index.d.ts +5 -0
- package/icons/eye/public_api.d.ts +1 -0
- package/icons/eyeslash/eyeslash.d.ts +8 -0
- package/icons/eyeslash/index.d.ts +5 -0
- package/icons/eyeslash/public_api.d.ts +1 -0
- package/icons/filter/filter.d.ts +8 -0
- package/icons/filter/index.d.ts +5 -0
- package/icons/filter/public_api.d.ts +1 -0
- package/icons/filterslash/filterslash.d.ts +8 -0
- package/icons/filterslash/index.d.ts +5 -0
- package/icons/filterslash/public_api.d.ts +1 -0
- package/icons/home/home.d.ts +8 -0
- package/icons/home/index.d.ts +5 -0
- package/icons/home/public_api.d.ts +1 -0
- package/icons/infocircle/index.d.ts +5 -0
- package/icons/infocircle/infocircle.d.ts +8 -0
- package/icons/infocircle/public_api.d.ts +1 -0
- package/icons/minus/index.d.ts +5 -0
- package/icons/minus/minus.d.ts +6 -0
- package/icons/minus/public_api.d.ts +1 -0
- package/icons/pencil/index.d.ts +5 -0
- package/icons/pencil/pencil.d.ts +8 -0
- package/icons/pencil/public_api.d.ts +1 -0
- package/icons/plus/index.d.ts +5 -0
- package/icons/plus/plus.d.ts +8 -0
- package/icons/plus/public_api.d.ts +1 -0
- package/icons/refresh/index.d.ts +5 -0
- package/icons/refresh/public_api.d.ts +1 -0
- package/icons/refresh/refresh.d.ts +8 -0
- package/icons/search/index.d.ts +5 -0
- package/icons/search/public_api.d.ts +1 -0
- package/icons/search/search.d.ts +8 -0
- package/icons/searchminus/index.d.ts +5 -0
- package/icons/searchminus/public_api.d.ts +1 -0
- package/icons/searchminus/searchminus.d.ts +8 -0
- package/icons/searchplus/index.d.ts +5 -0
- package/icons/searchplus/public_api.d.ts +1 -0
- package/icons/searchplus/searchplus.d.ts +8 -0
- package/icons/sortalt/index.d.ts +5 -0
- package/icons/sortalt/public_api.d.ts +1 -0
- package/icons/sortalt/sortalt.d.ts +8 -0
- package/icons/sortamountdown/index.d.ts +5 -0
- package/icons/sortamountdown/public_api.d.ts +1 -0
- package/icons/sortamountdown/sortamountdown.d.ts +8 -0
- package/icons/sortamountupalt/index.d.ts +5 -0
- package/icons/sortamountupalt/public_api.d.ts +1 -0
- package/icons/sortamountupalt/sortamountupalt.d.ts +8 -0
- package/icons/spinner/index.d.ts +5 -0
- package/icons/spinner/public_api.d.ts +1 -0
- package/icons/spinner/spinner.d.ts +8 -0
- package/icons/star/index.d.ts +5 -0
- package/icons/star/public_api.d.ts +1 -0
- package/icons/star/star.d.ts +8 -0
- package/icons/starfill/index.d.ts +5 -0
- package/icons/starfill/public_api.d.ts +1 -0
- package/icons/starfill/starfill.d.ts +8 -0
- package/icons/thlarge/index.d.ts +5 -0
- package/icons/thlarge/public_api.d.ts +1 -0
- package/icons/thlarge/thlarge.d.ts +8 -0
- package/icons/times/index.d.ts +5 -0
- package/icons/times/public_api.d.ts +1 -0
- package/icons/times/times.d.ts +6 -0
- package/icons/timescircle/index.d.ts +5 -0
- package/icons/timescircle/public_api.d.ts +1 -0
- package/icons/timescircle/timescircle.d.ts +8 -0
- package/icons/trash/index.d.ts +5 -0
- package/icons/trash/public_api.d.ts +1 -0
- package/icons/trash/trash.d.ts +8 -0
- package/icons/undo/index.d.ts +5 -0
- package/icons/undo/public_api.d.ts +1 -0
- package/icons/undo/undo.d.ts +8 -0
- package/icons/upload/index.d.ts +5 -0
- package/icons/upload/public_api.d.ts +1 -0
- package/icons/upload/upload.d.ts +8 -0
- package/icons/windowmaximize/index.d.ts +5 -0
- package/icons/windowmaximize/public_api.d.ts +1 -0
- package/icons/windowmaximize/windowmaximize.d.ts +8 -0
- package/icons/windowminimize/index.d.ts +5 -0
- package/icons/windowminimize/public_api.d.ts +1 -0
- package/icons/windowminimize/windowminimize.d.ts +8 -0
- package/image/image.d.ts +188 -0
- package/image/image.interface.d.ts +31 -0
- package/image/image.module.d.ts +8 -0
- package/image/index.d.ts +5 -0
- package/image/public_api.d.ts +3 -0
- package/index.d.ts +5 -0
- package/inplace/index.d.ts +5 -0
- package/inplace/inplace.d.ts +109 -0
- package/inplace/inplace.interface.d.ts +19 -0
- package/inplace/public_api.d.ts +2 -0
- package/inputgroup/index.d.ts +5 -0
- package/inputgroup/inputgroup.d.ts +28 -0
- package/inputgroup/inputgroup.module.d.ts +15 -0
- package/inputgroup/public_api.d.ts +2 -0
- package/inputgroupaddon/index.d.ts +5 -0
- package/inputgroupaddon/inputgroupaddon.d.ts +21 -0
- package/inputgroupaddon/inputgroupaddon.module.d.ts +14 -0
- package/inputgroupaddon/public_api.d.ts +2 -0
- package/inputicon/index.d.ts +5 -0
- package/inputicon/inputicon.d.ts +21 -0
- package/inputicon/public_api.d.ts +1 -0
- package/inputmask/index.d.ts +5 -0
- package/inputmask/inputmask.d.ts +273 -0
- package/inputmask/inputmask.interface.d.ts +19 -0
- package/inputmask/public_api.d.ts +2 -0
- package/inputnumber/index.d.ts +5 -0
- package/inputnumber/inputnumber.d.ts +392 -0
- package/inputnumber/inputnumber.interface.d.ts +38 -0
- package/inputnumber/inputnumber.module.d.ts +8 -0
- package/inputnumber/public_api.d.ts +3 -0
- package/inputotp/index.d.ts +5 -0
- package/inputotp/inputotp.d.ts +123 -0
- package/inputotp/inputotp.interface.d.ts +65 -0
- package/inputotp/public_api.d.ts +2 -0
- package/inputswitch/index.d.ts +5 -0
- package/inputswitch/inputswitch.d.ts +106 -0
- package/inputswitch/inputswitch.interface.d.ts +15 -0
- package/inputswitch/public_api.d.ts +2 -0
- package/inputtext/index.d.ts +5 -0
- package/inputtext/inputtext.component.d.ts +25 -0
- package/inputtext/inputtext.directive.d.ts +20 -0
- package/inputtext/inputtext.module.d.ts +10 -0
- package/inputtext/public_api.d.ts +3 -0
- package/inputtextarea/index.d.ts +5 -0
- package/inputtextarea/inputtextarea.d.ts +53 -0
- package/inputtextarea/public_api.d.ts +1 -0
- package/keyfilter/index.d.ts +5 -0
- package/keyfilter/keyfilter.d.ts +58 -0
- package/keyfilter/keyfilter.interface.d.ts +5 -0
- package/keyfilter/public_api.d.ts +2 -0
- package/knob/index.d.ts +5 -0
- package/knob/knob.d.ts +178 -0
- package/knob/public_api.d.ts +1 -0
- package/listbox/index.d.ts +5 -0
- package/listbox/listbox.d.ts +463 -0
- package/listbox/listbox.interface.d.ts +156 -0
- package/listbox/public_api.d.ts +2 -0
- package/logo/index.d.ts +5 -0
- package/logo/logo.d.ts +11 -0
- package/logo/logo.module.d.ts +7 -0
- package/logo/public_api.d.ts +2 -0
- package/megamenu/index.d.ts +5 -0
- package/megamenu/megamenu.d.ts +198 -0
- package/megamenu/megamenu.interface.d.ts +31 -0
- package/megamenu/public_api.d.ts +2 -0
- package/menu/index.d.ts +5 -0
- package/menu/menu.d.ts +220 -0
- package/menu/public_api.d.ts +1 -0
- package/menubar/index.d.ts +5 -0
- package/menubar/menubar.d.ts +248 -0
- package/menubar/menubar.interface.d.ts +40 -0
- package/menubar/public_api.d.ts +2 -0
- package/message/index.d.ts +5 -0
- package/message/message.d.ts +52 -0
- package/message/public_api.d.ts +1 -0
- package/messages/index.d.ts +5 -0
- package/messages/messages.d.ts +115 -0
- package/messages/messages.interface.d.ts +18 -0
- package/messages/messages.module.d.ts +8 -0
- package/messages/public_api.d.ts +3 -0
- package/metergroup/index.d.ts +5 -0
- package/metergroup/metergroup.d.ts +101 -0
- package/metergroup/metergroup.interface.d.ts +122 -0
- package/metergroup/public_api.d.ts +2 -0
- package/multiselect/index.d.ts +5 -0
- package/multiselect/multiselect.d.ts +724 -0
- package/multiselect/multiselect.interface.d.ts +247 -0
- package/multiselect/public_api.d.ts +2 -0
- package/navigation/index.d.ts +5 -0
- package/navigation/navigation.d.ts +54 -0
- package/navigation/navigation.interface.d.ts +23 -0
- package/navigation/navigation.module.d.ts +7 -0
- package/navigation/public_api.d.ts +2 -0
- package/orderlist/index.d.ts +5 -0
- package/orderlist/orderlist.d.ts +270 -0
- package/orderlist/orderlist.interface.d.ts +110 -0
- package/orderlist/public_api.d.ts +2 -0
- package/organizationchart/index.d.ts +5 -0
- package/organizationchart/organizationchart.d.ts +132 -0
- package/organizationchart/organizationchart.interface.d.ts +59 -0
- package/organizationchart/public_api.d.ts +2 -0
- package/overlay/index.d.ts +5 -0
- package/overlay/overlay.d.ts +238 -0
- package/overlay/overlay.module.d.ts +8 -0
- package/overlay/public_api.d.ts +2 -0
- package/overlaypanel/index.d.ts +5 -0
- package/overlaypanel/overlaypanel.d.ts +162 -0
- package/overlaypanel/overlaypanel.module.d.ts +8 -0
- package/overlaypanel/public_api.d.ts +2 -0
- package/package.json +1033 -0
- package/paginator/index.d.ts +5 -0
- package/paginator/paginator.d.ts +192 -0
- package/paginator/paginator.interface.d.ts +37 -0
- package/paginator/paginator.module.d.ts +17 -0
- package/paginator/public_api.d.ts +3 -0
- package/panel/index.d.ts +5 -0
- package/panel/panel.d.ts +126 -0
- package/panel/panel.interface.d.ts +58 -0
- package/panel/public_api.d.ts +2 -0
- package/panelmenu/index.d.ts +5 -0
- package/panelmenu/panelmenu.d.ts +225 -0
- package/panelmenu/panelmenu.interface.d.ts +23 -0
- package/panelmenu/public_api.d.ts +2 -0
- package/password/index.d.ts +5 -0
- package/password/password.d.ts +342 -0
- package/password/public_api.d.ts +1 -0
- package/picklist/index.d.ts +5 -0
- package/picklist/picklist.d.ts +453 -0
- package/picklist/picklist.interface.d.ts +242 -0
- package/picklist/public_api.d.ts +2 -0
- package/progressbar/index.d.ts +5 -0
- package/progressbar/progressbar.d.ts +54 -0
- package/progressbar/progressbar.module.d.ts +8 -0
- package/progressbar/public_api.d.ts +2 -0
- package/progressspinner/index.d.ts +5 -0
- package/progressspinner/progressspinner.d.ts +50 -0
- package/progressspinner/progressspinner.module.d.ts +8 -0
- package/progressspinner/public_api.d.ts +2 -0
- package/public_api.d.ts +2 -0
- package/radiobutton/index.d.ts +5 -0
- package/radiobutton/public_api.d.ts +3 -0
- package/radiobutton/radiobutton.d.ts +145 -0
- package/radiobutton/radiobutton.interface.d.ts +15 -0
- package/radiobutton/radiobutton.module.d.ts +7 -0
- package/rating/index.d.ts +5 -0
- package/rating/public_api.d.ts +2 -0
- package/rating/rating.d.ts +146 -0
- package/rating/rating.interface.d.ts +34 -0
- package/resources/cax.min.scss +1 -0
- package/resources/cax.scss +784 -0
- package/resources/components/accordion/accordion.scss +44 -0
- package/resources/components/autocomplete/autocomplete.css +104 -0
- package/resources/components/avatar/avatar.scss +33 -0
- package/resources/components/avatargroup/avatargroup.css +10 -0
- package/resources/components/badge/badge.scss +34 -0
- package/resources/components/blockui/blockui.css +26 -0
- package/resources/components/breadcrumb/breadcrumb.scss +33 -0
- package/resources/components/button/button.scss +117 -0
- package/resources/components/calendar/calendar.scss +177 -0
- package/resources/components/card/card.scss +50 -0
- package/resources/components/carousel/carousel.css +71 -0
- package/resources/components/cascadeselect/cascadeselect.scss +99 -0
- package/resources/components/checkbox/checkbox.scss +30 -0
- package/resources/components/chip/chip.scss +63 -0
- package/resources/components/chips/chips.scss +156 -0
- package/resources/components/colorpicker/colorpicker-images.css +7 -0
- package/resources/components/colorpicker/colorpicker.css +83 -0
- package/resources/components/colorpicker/images/color.png +0 -0
- package/resources/components/colorpicker/images/hue.png +0 -0
- package/resources/components/common/common.scss +182 -0
- package/resources/components/confirmpopup/confirmpopup.css +53 -0
- package/resources/components/contextmenu/contextmenu.css +42 -0
- package/resources/components/dataview/dataview.css +13 -0
- package/resources/components/dialog/dialog.scss +164 -0
- package/resources/components/divider/divider.scss +86 -0
- package/resources/components/dock/dock.css +107 -0
- package/resources/components/dropdown/dropdown.scss +92 -0
- package/resources/components/editor/editor.css +4 -0
- package/resources/components/fieldset/fieldset.css +30 -0
- package/resources/components/fileupload/fileupload.css +47 -0
- package/resources/components/galleria/galleria.css +281 -0
- package/resources/components/iconfield/iconfield.css +5 -0
- package/resources/components/image/image.scss +97 -0
- package/resources/components/inplace/inplace.css +19 -0
- package/resources/components/inputicon/inputicon.css +6 -0
- package/resources/components/inputmask/inputmask.css +12 -0
- package/resources/components/inputnumber/inputnumber.scss +116 -0
- package/resources/components/inputotp/inputotp.css +2 -0
- package/resources/components/inputswitch/inputswitch.css +23 -0
- package/resources/components/inputtext/inputtext.scss +150 -0
- package/resources/components/inputtextarea/inputtextarea.css +10 -0
- package/resources/components/knob/knob.css +20 -0
- package/resources/components/listbox/listbox.css +40 -0
- package/resources/components/logo/logo.scss +0 -0
- package/resources/components/megamenu/megamenu.css +108 -0
- package/resources/components/menu/menu.css +30 -0
- package/resources/components/menubar/menubar.css +81 -0
- package/resources/components/message/message.css +17 -0
- package/resources/components/messages/messages.scss +55 -0
- package/resources/components/multiselect/multiselect.css +116 -0
- package/resources/components/navigation/navigation.scss +217 -0
- package/resources/components/orderlist/orderlist.css +78 -0
- package/resources/components/organizationchart/organizationchart.css +62 -0
- package/resources/components/overlay/overlay.scss +80 -0
- package/resources/components/overlaypanel/overlaypanel.scss +63 -0
- package/resources/components/paginator/paginator.scss +37 -0
- package/resources/components/panel/panel.css +29 -0
- package/resources/components/panelmenu/panelmenu.css +45 -0
- package/resources/components/password/images/password-meter.png +0 -0
- package/resources/components/password/password.css +54 -0
- package/resources/components/picklist/picklist.css +60 -0
- package/resources/components/progressbar/progressbar.scss +122 -0
- package/resources/components/progressspinner/progressspinner.scss +94 -0
- package/resources/components/radiobutton/radiobutton.scss +38 -0
- package/resources/components/rating/rating.css +15 -0
- package/resources/components/ripple/ripple.scss +29 -0
- package/resources/components/scroller/scroller.scss +58 -0
- package/resources/components/scrollpanel/scrollpanel.css +50 -0
- package/resources/components/scrolltop/scrolltop.css +18 -0
- package/resources/components/sidebar/sidebar.scss +114 -0
- package/resources/components/skeleton/skeleton.scss +25 -0
- package/resources/components/slidemenu/slidemenu.css +100 -0
- package/resources/components/slider/slider.css +41 -0
- package/resources/components/speeddial/speeddial.scss +122 -0
- package/resources/components/spinner/spinner.css +63 -0
- package/resources/components/splitbutton/splitbutton.scss +48 -0
- package/resources/components/splitter/splitter.css +70 -0
- package/resources/components/stepper/stepper.css +9 -0
- package/resources/components/steps/steps.css +49 -0
- package/resources/components/table/table.scss +249 -0
- package/resources/components/tabmenu/tabmenu.css +80 -0
- package/resources/components/tabview/tabview.scss +163 -0
- package/resources/components/tag/tag.scss +17 -0
- package/resources/components/terminal/terminal.css +24 -0
- package/resources/components/tieredmenu/tieredmenu.scss +55 -0
- package/resources/components/timeline/timeline.css +114 -0
- package/resources/components/toast/toast.scss +83 -0
- package/resources/components/toggleswitch/toggleswitch.scss +30 -0
- package/resources/components/toolbar/toolbar.css +19 -0
- package/resources/components/tooltip/tooltip.scss +124 -0
- package/resources/components/tree/images/line.gif +0 -0
- package/resources/components/tree/tree.scss +158 -0
- package/resources/components/treeselect/treeselect.css +98 -0
- package/resources/components/treetable/treetable.css +205 -0
- package/resources/images/color.png +0 -0
- package/resources/images/hue.png +0 -0
- package/resources/images/line.gif +0 -0
- package/resources/images/password-meter.png +0 -0
- package/resources/logo/dataX-dark.svg +12 -0
- package/resources/logo/dataX-icon-dark.svg +6 -0
- package/resources/logo/dataX-icon.svg +6 -0
- package/resources/logo/dataX.svg +12 -0
- package/resources/logo/usercard.png +0 -0
- package/resources/themes/cax-theme.scss +9272 -0
- package/ripple/index.d.ts +5 -0
- package/ripple/public_api.d.ts +2 -0
- package/ripple/ripple.d.ts +30 -0
- package/ripple/ripple.module.d.ts +7 -0
- package/scroller/index.d.ts +5 -0
- package/scroller/public_api.d.ts +3 -0
- package/scroller/scroller.d.ts +343 -0
- package/scroller/scroller.interface.d.ts +177 -0
- package/scroller/scroller.module.d.ts +8 -0
- package/scrollpanel/index.d.ts +5 -0
- package/scrollpanel/public_api.d.ts +2 -0
- package/scrollpanel/scrollpanel.d.ts +103 -0
- package/scrollpanel/scrollpanel.interface.d.ts +11 -0
- package/scrolltop/index.d.ts +5 -0
- package/scrolltop/public_api.d.ts +2 -0
- package/scrolltop/scrolltop.d.ts +97 -0
- package/scrolltop/scrolltop.interface.d.ts +18 -0
- package/selectbutton/index.d.ts +5 -0
- package/selectbutton/public_api.d.ts +2 -0
- package/selectbutton/selectbutton.d.ts +136 -0
- package/selectbutton/selectbutton.interface.d.ts +45 -0
- package/sidebar/index.d.ts +5 -0
- package/sidebar/public_api.d.ts +3 -0
- package/sidebar/sidebar.d.ts +158 -0
- package/sidebar/sidebar.interface.d.ts +27 -0
- package/sidebar/sidebar.module.d.ts +12 -0
- package/skeleton/index.d.ts +5 -0
- package/skeleton/public_api.d.ts +2 -0
- package/skeleton/skeleton.d.ts +61 -0
- package/skeleton/skeleton.module.d.ts +8 -0
- package/slidemenu/index.d.ts +5 -0
- package/slidemenu/public_api.d.ts +2 -0
- package/slidemenu/slidemenu.d.ts +322 -0
- package/slidemenu/slidemenu.interface.d.ts +15 -0
- package/slider/index.d.ts +5 -0
- package/slider/public_api.d.ts +2 -0
- package/slider/slider.d.ts +174 -0
- package/slider/slider.interface.d.ts +38 -0
- package/speeddial/index.d.ts +5 -0
- package/speeddial/public_api.d.ts +3 -0
- package/speeddial/speeddial.d.ts +277 -0
- package/speeddial/speeddial.interface.d.ts +28 -0
- package/speeddial/speeddial.module.d.ts +14 -0
- package/spinner/index.d.ts +5 -0
- package/spinner/public_api.d.ts +1 -0
- package/spinner/spinner.d.ts +90 -0
- package/splitbutton/index.d.ts +5 -0
- package/splitbutton/public_api.d.ts +3 -0
- package/splitbutton/splitbutton.d.ts +221 -0
- package/splitbutton/splitbutton.interface.d.ts +30 -0
- package/splitbutton/splitbutton.module.d.ts +12 -0
- package/splitter/index.d.ts +5 -0
- package/splitter/public_api.d.ts +2 -0
- package/splitter/splitter.d.ts +164 -0
- package/splitter/splitter.interface.d.ts +34 -0
- package/stepper/index.d.ts +5 -0
- package/stepper/public_api.d.ts +2 -0
- package/stepper/stepper.d.ts +117 -0
- package/stepper/stepper.interface.d.ts +26 -0
- package/steps/index.d.ts +5 -0
- package/steps/public_api.d.ts +1 -0
- package/steps/steps.d.ts +85 -0
- package/styleclass/index.d.ts +5 -0
- package/styleclass/public_api.d.ts +1 -0
- package/styleclass/styleclass.d.ts +108 -0
- package/table/columnfilter.interface.d.ts +247 -0
- package/table/components/cell-editor/cell-editor.d.ts +20 -0
- package/table/components/column-filter/column-filter.d.ts +256 -0
- package/table/components/column-filter-form-element/column-filter-form-element.d.ts +37 -0
- package/table/components/sort-icon/sort-icon.d.ts +21 -0
- package/table/components/table-body/table-body.d.ts +36 -0
- package/table/components/table-checkbox/table-checkbox.d.ts +31 -0
- package/table/components/table-header-checkbox/table-header-checkbox.d.ts +29 -0
- package/table/components/table-radio-button/table-radio-button.d.ts +29 -0
- package/table/directives/cancel-editable-row.directive.d.ts +11 -0
- package/table/directives/content-menu-row.directive.d.ts +22 -0
- package/table/directives/editable-column.directive.d.ts +40 -0
- package/table/directives/editable-row.directive.d.ts +12 -0
- package/table/directives/frozen-column.directive.d.ts +16 -0
- package/table/directives/init-editable-row.directive.d.ts +11 -0
- package/table/directives/reorderable-column.directive.d.ts +32 -0
- package/table/directives/reorderable-row-handle.directive.d.ts +9 -0
- package/table/directives/reorderable-row.directive.d.ts +34 -0
- package/table/directives/resizable-column.directive.d.ts +35 -0
- package/table/directives/row-group-header.directive.d.ts +9 -0
- package/table/directives/row-toggler.directive.d.ts +13 -0
- package/table/directives/save-editable-row.directive.d.ts +11 -0
- package/table/directives/selectable-row-double-click.directive.d.ts +22 -0
- package/table/directives/selectable-row.directive.d.ts +37 -0
- package/table/directives/sortable-column.directive.d.ts +24 -0
- package/table/index.d.ts +5 -0
- package/table/public_api.d.ts +28 -0
- package/table/table.d.ts +859 -0
- package/table/table.interface.d.ts +623 -0
- package/table/table.module.d.ts +32 -0
- package/table/table.service.d.ts +24 -0
- package/tabmenu/index.d.ts +5 -0
- package/tabmenu/public_api.d.ts +2 -0
- package/tabmenu/tabmenu.d.ts +126 -0
- package/tabmenu/tabmenu.interface.d.ts +32 -0
- package/tabview/index.d.ts +5 -0
- package/tabview/public_api.d.ts +3 -0
- package/tabview/tabview.d.ts +281 -0
- package/tabview/tabview.interface.d.ts +49 -0
- package/tabview/tabview.module.d.ts +14 -0
- package/tag/index.d.ts +5 -0
- package/tag/public_api.d.ts +3 -0
- package/tag/tag.d.ts +61 -0
- package/tag/tag.interface.d.ts +11 -0
- package/tag/tag.module.d.ts +9 -0
- package/terminal/index.d.ts +5 -0
- package/terminal/public_api.d.ts +2 -0
- package/terminal/terminal.d.ts +56 -0
- package/terminal/terminalservice.d.ts +11 -0
- package/tieredmenu/index.d.ts +5 -0
- package/tieredmenu/public_api.d.ts +3 -0
- package/tieredmenu/tieredmenu.d.ts +266 -0
- package/tieredmenu/tieredmenu.interface.d.ts +27 -0
- package/tieredmenu/tiredmenu.module.d.ts +13 -0
- package/timeline/index.d.ts +5 -0
- package/timeline/public_api.d.ts +2 -0
- package/timeline/timeline.d.ts +54 -0
- package/timeline/timeline.interface.d.ts +43 -0
- package/toast/index.d.ts +5 -0
- package/toast/public_api.d.ts +3 -0
- package/toast/toast.d.ts +142 -0
- package/toast/toast.interface.d.ts +52 -0
- package/toast/toast.module.d.ts +9 -0
- package/toast/toastitem.d.ts +37 -0
- package/togglebutton/index.d.ts +5 -0
- package/togglebutton/public_api.d.ts +2 -0
- package/togglebutton/togglebutton.d.ts +115 -0
- package/togglebutton/togglebutton.interface.d.ts +34 -0
- package/toggleswitch/index.d.ts +5 -0
- package/toggleswitch/public_api.d.ts +2 -0
- package/toggleswitch/toggleswitch.d.ts +13 -0
- package/toggleswitch/toggleswitch.module.d.ts +9 -0
- package/toolbar/index.d.ts +5 -0
- package/toolbar/public_api.d.ts +2 -0
- package/toolbar/toolbar.d.ts +43 -0
- package/toolbar/toolbar.interface.d.ts +19 -0
- package/tooltip/index.d.ts +5 -0
- package/tooltip/public_api.d.ts +2 -0
- package/tooltip/tooltip.d.ts +208 -0
- package/tooltip/tooltip.module.d.ts +8 -0
- package/tree/index.d.ts +5 -0
- package/tree/public_api.d.ts +3 -0
- package/tree/tree.d.ts +449 -0
- package/tree/tree.interface.d.ts +193 -0
- package/tree/tree.module.d.ts +19 -0
- package/treeselect/index.d.ts +5 -0
- package/treeselect/public_api.d.ts +2 -0
- package/treeselect/treeselect.d.ts +405 -0
- package/treeselect/treeselect.interface.d.ts +108 -0
- package/treetable/index.d.ts +5 -0
- package/treetable/public_api.d.ts +2 -0
- package/treetable/treetable.d.ts +988 -0
- package/treetable/treetable.interface.d.ts +472 -0
- package/tristatecheckbox/index.d.ts +5 -0
- package/tristatecheckbox/public_api.d.ts +3 -0
- package/tristatecheckbox/tristatecheckbox.d.ts +117 -0
- package/tristatecheckbox/tristatecheckbox.interface.d.ts +30 -0
- package/tristatecheckbox/tristatecheckbox.module.d.ts +8 -0
- package/ts-helpers/index.d.ts +5 -0
- package/ts-helpers/public_api.d.ts +1 -0
- package/ts-helpers/ts-helpers.d.ts +4 -0
- package/utils/index.d.ts +5 -0
- package/utils/objectutils.d.ts +24 -0
- package/utils/public_api.d.ts +4 -0
- package/utils/uniquecomponentid.d.ts +2 -0
- package/utils/zindexutils.d.ts +7 -0
- package/virtualscroller/index.d.ts +5 -0
- package/virtualscroller/public_api.d.ts +2 -0
- package/virtualscroller/virtualscroller.d.ts +89 -0
- package/virtualscroller/virtualscroller.interface.d.ts +72 -0
|
@@ -0,0 +1,1668 @@
|
|
|
1
|
+
import { animate, style, transition, trigger } from '@angular/animations';
|
|
2
|
+
import { CommonModule, DOCUMENT, isPlatformBrowser } from '@angular/common';
|
|
3
|
+
import { ChangeDetectionStrategy, Component, ContentChildren, EventEmitter, HostListener, Inject, Input, NgModule, Output, PLATFORM_ID, ViewChild, ViewEncapsulation, booleanAttribute, numberAttribute } from '@angular/core';
|
|
4
|
+
import { CaxTemplate, SharedModule } from 'cax-design-system/api';
|
|
5
|
+
import { DomHandler } from 'cax-design-system/dom';
|
|
6
|
+
import { ChevronLeftIcon } from 'cax-design-system/icons/chevronleft';
|
|
7
|
+
import { ChevronRightIcon } from 'cax-design-system/icons/chevronright';
|
|
8
|
+
import { TimesIcon } from 'cax-design-system/icons/times';
|
|
9
|
+
import { WindowMaximizeIcon } from 'cax-design-system/icons/windowmaximize';
|
|
10
|
+
import { WindowMinimizeIcon } from 'cax-design-system/icons/windowminimize';
|
|
11
|
+
import { RippleModule } from 'cax-design-system/ripple';
|
|
12
|
+
import { UniqueComponentId, ZIndexUtils } from 'cax-design-system/utils';
|
|
13
|
+
import { FocusTrapModule } from 'cax-design-system/focustrap';
|
|
14
|
+
import * as i0 from "@angular/core";
|
|
15
|
+
import * as i1 from "cax-design-system/api";
|
|
16
|
+
import * as i2 from "@angular/common";
|
|
17
|
+
import * as i3 from "cax-design-system/focustrap";
|
|
18
|
+
/**
|
|
19
|
+
* Galleria is an advanced content gallery component.
|
|
20
|
+
* @group Components
|
|
21
|
+
*/
|
|
22
|
+
export class Galleria {
|
|
23
|
+
document;
|
|
24
|
+
platformId;
|
|
25
|
+
element;
|
|
26
|
+
cd;
|
|
27
|
+
config;
|
|
28
|
+
/**
|
|
29
|
+
* Index of the first item.
|
|
30
|
+
* @group Props
|
|
31
|
+
*/
|
|
32
|
+
get activeIndex() {
|
|
33
|
+
return this._activeIndex;
|
|
34
|
+
}
|
|
35
|
+
set activeIndex(activeIndex) {
|
|
36
|
+
this._activeIndex = activeIndex;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Whether to display the component on fullscreen.
|
|
40
|
+
* @group Props
|
|
41
|
+
*/
|
|
42
|
+
fullScreen = false;
|
|
43
|
+
/**
|
|
44
|
+
* Unique identifier of the element.
|
|
45
|
+
* @group Props
|
|
46
|
+
*/
|
|
47
|
+
id;
|
|
48
|
+
/**
|
|
49
|
+
* An array of objects to display.
|
|
50
|
+
* @group Props
|
|
51
|
+
*/
|
|
52
|
+
value;
|
|
53
|
+
/**
|
|
54
|
+
* Number of items per page.
|
|
55
|
+
* @group Props
|
|
56
|
+
*/
|
|
57
|
+
numVisible = 3;
|
|
58
|
+
/**
|
|
59
|
+
* An array of options for responsive design.
|
|
60
|
+
* @see {GalleriaResponsiveOptions}
|
|
61
|
+
* @group Props
|
|
62
|
+
*/
|
|
63
|
+
responsiveOptions;
|
|
64
|
+
/**
|
|
65
|
+
* Whether to display navigation buttons in item section.
|
|
66
|
+
* @group Props
|
|
67
|
+
*/
|
|
68
|
+
showItemNavigators = false;
|
|
69
|
+
/**
|
|
70
|
+
* Whether to display navigation buttons in thumbnail container.
|
|
71
|
+
* @group Props
|
|
72
|
+
*/
|
|
73
|
+
showThumbnailNavigators = true;
|
|
74
|
+
/**
|
|
75
|
+
* Whether to display navigation buttons on item hover.
|
|
76
|
+
* @group Props
|
|
77
|
+
*/
|
|
78
|
+
showItemNavigatorsOnHover = false;
|
|
79
|
+
/**
|
|
80
|
+
* When enabled, item is changed on indicator hover.
|
|
81
|
+
* @group Props
|
|
82
|
+
*/
|
|
83
|
+
changeItemOnIndicatorHover = false;
|
|
84
|
+
/**
|
|
85
|
+
* Defines if scrolling would be infinite.
|
|
86
|
+
* @group Props
|
|
87
|
+
*/
|
|
88
|
+
circular = false;
|
|
89
|
+
/**
|
|
90
|
+
* Items are displayed with a slideshow in autoPlay mode.
|
|
91
|
+
* @group Props
|
|
92
|
+
*/
|
|
93
|
+
autoPlay = false;
|
|
94
|
+
/**
|
|
95
|
+
* When enabled, autorun should stop by click.
|
|
96
|
+
* @group Props
|
|
97
|
+
*/
|
|
98
|
+
shouldStopAutoplayByClick = true;
|
|
99
|
+
/**
|
|
100
|
+
* Time in milliseconds to scroll items.
|
|
101
|
+
* @group Props
|
|
102
|
+
*/
|
|
103
|
+
transitionInterval = 4000;
|
|
104
|
+
/**
|
|
105
|
+
* Whether to display thumbnail container.
|
|
106
|
+
* @group Props
|
|
107
|
+
*/
|
|
108
|
+
showThumbnails = true;
|
|
109
|
+
/**
|
|
110
|
+
* Position of thumbnails.
|
|
111
|
+
* @group Props
|
|
112
|
+
*/
|
|
113
|
+
thumbnailsPosition = 'bottom';
|
|
114
|
+
/**
|
|
115
|
+
* Height of the viewport in vertical thumbnail.
|
|
116
|
+
* @group Props
|
|
117
|
+
*/
|
|
118
|
+
verticalThumbnailViewPortHeight = '300px';
|
|
119
|
+
/**
|
|
120
|
+
* Whether to display indicator container.
|
|
121
|
+
* @group Props
|
|
122
|
+
*/
|
|
123
|
+
showIndicators = false;
|
|
124
|
+
/**
|
|
125
|
+
* When enabled, indicator container is displayed on item container.
|
|
126
|
+
* @group Props
|
|
127
|
+
*/
|
|
128
|
+
showIndicatorsOnItem = false;
|
|
129
|
+
/**
|
|
130
|
+
* Position of indicators.
|
|
131
|
+
* @group Props
|
|
132
|
+
*/
|
|
133
|
+
indicatorsPosition = 'bottom';
|
|
134
|
+
/**
|
|
135
|
+
* Base zIndex value to use in layering.
|
|
136
|
+
* @group Props
|
|
137
|
+
*/
|
|
138
|
+
baseZIndex = 0;
|
|
139
|
+
/**
|
|
140
|
+
* Style class of the mask on fullscreen mode.
|
|
141
|
+
* @group Props
|
|
142
|
+
*/
|
|
143
|
+
maskClass;
|
|
144
|
+
/**
|
|
145
|
+
* Style class of the component on fullscreen mode. Otherwise, the 'class' property can be used.
|
|
146
|
+
* @group Props
|
|
147
|
+
*/
|
|
148
|
+
containerClass;
|
|
149
|
+
/**
|
|
150
|
+
* Inline style of the component on fullscreen mode. Otherwise, the 'style' property can be used.
|
|
151
|
+
* @group Props
|
|
152
|
+
*/
|
|
153
|
+
containerStyle;
|
|
154
|
+
/**
|
|
155
|
+
* Transition options of the show animation.
|
|
156
|
+
* @group Props
|
|
157
|
+
*/
|
|
158
|
+
showTransitionOptions = '150ms cubic-bezier(0, 0, 0.2, 1)';
|
|
159
|
+
/**
|
|
160
|
+
* Transition options of the hide animation.
|
|
161
|
+
* @group Props
|
|
162
|
+
*/
|
|
163
|
+
hideTransitionOptions = '150ms cubic-bezier(0, 0, 0.2, 1)';
|
|
164
|
+
/**
|
|
165
|
+
* Specifies the visibility of the mask on fullscreen mode.
|
|
166
|
+
* @group Props
|
|
167
|
+
*/
|
|
168
|
+
get visible() {
|
|
169
|
+
return this._visible;
|
|
170
|
+
}
|
|
171
|
+
set visible(visible) {
|
|
172
|
+
this._visible = visible;
|
|
173
|
+
if (this._visible && !this.maskVisible) {
|
|
174
|
+
this.maskVisible = true;
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* Callback to invoke on active index change.
|
|
179
|
+
* @param {number} number - Active index.
|
|
180
|
+
* @group Emits
|
|
181
|
+
*/
|
|
182
|
+
activeIndexChange = new EventEmitter();
|
|
183
|
+
/**
|
|
184
|
+
* Callback to invoke on visiblity change.
|
|
185
|
+
* @param {boolean} boolean - Visible value.
|
|
186
|
+
* @group Emits
|
|
187
|
+
*/
|
|
188
|
+
visibleChange = new EventEmitter();
|
|
189
|
+
mask;
|
|
190
|
+
container;
|
|
191
|
+
templates;
|
|
192
|
+
_visible = false;
|
|
193
|
+
_activeIndex = 0;
|
|
194
|
+
headerFacet;
|
|
195
|
+
footerFacet;
|
|
196
|
+
indicatorFacet;
|
|
197
|
+
captionFacet;
|
|
198
|
+
closeIconTemplate;
|
|
199
|
+
previousThumbnailIconTemplate;
|
|
200
|
+
nextThumbnailIconTemplate;
|
|
201
|
+
itemPreviousIconTemplate;
|
|
202
|
+
itemNextIconTemplate;
|
|
203
|
+
maskVisible = false;
|
|
204
|
+
numVisibleLimit = 0;
|
|
205
|
+
constructor(document, platformId, element, cd, config) {
|
|
206
|
+
this.document = document;
|
|
207
|
+
this.platformId = platformId;
|
|
208
|
+
this.element = element;
|
|
209
|
+
this.cd = cd;
|
|
210
|
+
this.config = config;
|
|
211
|
+
}
|
|
212
|
+
ngAfterContentInit() {
|
|
213
|
+
this.templates?.forEach((item) => {
|
|
214
|
+
switch (item.getType()) {
|
|
215
|
+
case 'header':
|
|
216
|
+
this.headerFacet = item.template;
|
|
217
|
+
break;
|
|
218
|
+
case 'footer':
|
|
219
|
+
this.footerFacet = item.template;
|
|
220
|
+
break;
|
|
221
|
+
case 'indicator':
|
|
222
|
+
this.indicatorFacet = item.template;
|
|
223
|
+
break;
|
|
224
|
+
case 'closeicon':
|
|
225
|
+
this.closeIconTemplate = item.template;
|
|
226
|
+
break;
|
|
227
|
+
case 'itemnexticon':
|
|
228
|
+
this.itemNextIconTemplate = item.template;
|
|
229
|
+
break;
|
|
230
|
+
case 'itempreviousicon':
|
|
231
|
+
this.itemPreviousIconTemplate = item.template;
|
|
232
|
+
break;
|
|
233
|
+
case 'previousthumbnailicon':
|
|
234
|
+
this.previousThumbnailIconTemplate = item.template;
|
|
235
|
+
break;
|
|
236
|
+
case 'nextthumbnailicon':
|
|
237
|
+
this.nextThumbnailIconTemplate = item.template;
|
|
238
|
+
break;
|
|
239
|
+
case 'caption':
|
|
240
|
+
this.captionFacet = item.template;
|
|
241
|
+
break;
|
|
242
|
+
}
|
|
243
|
+
});
|
|
244
|
+
}
|
|
245
|
+
ngOnChanges(simpleChanges) {
|
|
246
|
+
if (simpleChanges.value && simpleChanges.value.currentValue?.length < this.numVisible) {
|
|
247
|
+
this.numVisibleLimit = simpleChanges.value.currentValue.length;
|
|
248
|
+
}
|
|
249
|
+
else {
|
|
250
|
+
this.numVisibleLimit = 0;
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
onMaskHide() {
|
|
254
|
+
this.visible = false;
|
|
255
|
+
this.visibleChange.emit(false);
|
|
256
|
+
}
|
|
257
|
+
onActiveItemChange(index) {
|
|
258
|
+
if (this.activeIndex !== index) {
|
|
259
|
+
this.activeIndex = index;
|
|
260
|
+
this.activeIndexChange.emit(index);
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
onAnimationStart(event) {
|
|
264
|
+
switch (event.toState) {
|
|
265
|
+
case 'visible':
|
|
266
|
+
this.enableModality();
|
|
267
|
+
setTimeout(() => {
|
|
268
|
+
DomHandler.focus(DomHandler.findSingle(this.container.nativeElement, '[data-pc-section="closebutton"]'));
|
|
269
|
+
}, 25);
|
|
270
|
+
break;
|
|
271
|
+
case 'void':
|
|
272
|
+
DomHandler.addClass(this.mask?.nativeElement, 'p-component-overlay-leave');
|
|
273
|
+
break;
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
onAnimationEnd(event) {
|
|
277
|
+
switch (event.toState) {
|
|
278
|
+
case 'void':
|
|
279
|
+
this.disableModality();
|
|
280
|
+
break;
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
enableModality() {
|
|
284
|
+
DomHandler.blockBodyScroll();
|
|
285
|
+
this.cd.markForCheck();
|
|
286
|
+
if (this.mask) {
|
|
287
|
+
ZIndexUtils.set('modal', this.mask.nativeElement, this.baseZIndex || this.config.zIndex.modal);
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
disableModality() {
|
|
291
|
+
DomHandler.unblockBodyScroll();
|
|
292
|
+
this.maskVisible = false;
|
|
293
|
+
this.cd.markForCheck();
|
|
294
|
+
if (this.mask) {
|
|
295
|
+
ZIndexUtils.clear(this.mask.nativeElement);
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
ngOnDestroy() {
|
|
299
|
+
if (this.fullScreen) {
|
|
300
|
+
DomHandler.removeClass(this.document.body, 'p-overflow-hidden');
|
|
301
|
+
}
|
|
302
|
+
if (this.mask) {
|
|
303
|
+
this.disableModality();
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: Galleria, deps: [{ token: DOCUMENT }, { token: PLATFORM_ID }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i1.caxConfig }], target: i0.ɵɵFactoryTarget.Component });
|
|
307
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "18.2.9", type: Galleria, selector: "p-galleria", inputs: { activeIndex: "activeIndex", fullScreen: ["fullScreen", "fullScreen", booleanAttribute], id: "id", value: "value", numVisible: ["numVisible", "numVisible", numberAttribute], responsiveOptions: "responsiveOptions", showItemNavigators: ["showItemNavigators", "showItemNavigators", booleanAttribute], showThumbnailNavigators: ["showThumbnailNavigators", "showThumbnailNavigators", booleanAttribute], showItemNavigatorsOnHover: ["showItemNavigatorsOnHover", "showItemNavigatorsOnHover", booleanAttribute], changeItemOnIndicatorHover: ["changeItemOnIndicatorHover", "changeItemOnIndicatorHover", booleanAttribute], circular: ["circular", "circular", booleanAttribute], autoPlay: ["autoPlay", "autoPlay", booleanAttribute], shouldStopAutoplayByClick: ["shouldStopAutoplayByClick", "shouldStopAutoplayByClick", booleanAttribute], transitionInterval: ["transitionInterval", "transitionInterval", numberAttribute], showThumbnails: ["showThumbnails", "showThumbnails", booleanAttribute], thumbnailsPosition: "thumbnailsPosition", verticalThumbnailViewPortHeight: "verticalThumbnailViewPortHeight", showIndicators: ["showIndicators", "showIndicators", booleanAttribute], showIndicatorsOnItem: ["showIndicatorsOnItem", "showIndicatorsOnItem", booleanAttribute], indicatorsPosition: "indicatorsPosition", baseZIndex: ["baseZIndex", "baseZIndex", numberAttribute], maskClass: "maskClass", containerClass: "containerClass", containerStyle: "containerStyle", showTransitionOptions: "showTransitionOptions", hideTransitionOptions: "hideTransitionOptions", visible: "visible" }, outputs: { activeIndexChange: "activeIndexChange", visibleChange: "visibleChange" }, host: { classAttribute: "cax-element" }, queries: [{ propertyName: "templates", predicate: CaxTemplate }], viewQueries: [{ propertyName: "mask", first: true, predicate: ["mask"], descendants: true }, { propertyName: "container", first: true, predicate: ["container"], descendants: true }], usesOnChanges: true, ngImport: i0, template: `
|
|
308
|
+
<div *ngIf="fullScreen; else windowed" #container>
|
|
309
|
+
<div
|
|
310
|
+
*ngIf="maskVisible"
|
|
311
|
+
#mask
|
|
312
|
+
[ngClass]="{ 'p-galleria-mask p-component-overlay p-component-overlay-enter': true, 'p-galleria-visible': this.visible }"
|
|
313
|
+
[class]="maskClass"
|
|
314
|
+
[attr.role]="fullScreen ? 'dialog' : 'region'"
|
|
315
|
+
[attr.aria-modal]="fullScreen ? 'true' : undefined"
|
|
316
|
+
>
|
|
317
|
+
<p-galleriaContent
|
|
318
|
+
*ngIf="visible"
|
|
319
|
+
[@animation]="{ value: 'visible', params: { showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions } }"
|
|
320
|
+
(@animation.start)="onAnimationStart($event)"
|
|
321
|
+
(@animation.done)="onAnimationEnd($event)"
|
|
322
|
+
[value]="value"
|
|
323
|
+
[activeIndex]="activeIndex"
|
|
324
|
+
[numVisible]="numVisibleLimit || numVisible"
|
|
325
|
+
(maskHide)="onMaskHide()"
|
|
326
|
+
(activeItemChange)="onActiveItemChange($event)"
|
|
327
|
+
[ngStyle]="containerStyle"
|
|
328
|
+
[fullScreen]="fullScreen"
|
|
329
|
+
></p-galleriaContent>
|
|
330
|
+
</div>
|
|
331
|
+
</div>
|
|
332
|
+
|
|
333
|
+
<ng-template #windowed>
|
|
334
|
+
<p-galleriaContent [value]="value" [activeIndex]="activeIndex" [numVisible]="numVisibleLimit || numVisible" (activeItemChange)="onActiveItemChange($event)"></p-galleriaContent>
|
|
335
|
+
</ng-template>
|
|
336
|
+
`, isInline: true, styles: ["@layer cax{.p-galleria-content{display:flex;flex-direction:column}.p-galleria-item-wrapper{display:flex;flex-direction:column;position:relative}.p-galleria-item-container{position:relative;display:flex;height:100%}.p-galleria-item-nav{position:absolute;top:50%;margin-top:-.5rem;display:inline-flex;justify-content:center;align-items:center;overflow:hidden}.p-galleria-item-prev{left:0;border-top-left-radius:0;border-bottom-left-radius:0}.p-galleria-item-next{right:0;border-top-right-radius:0;border-bottom-right-radius:0}.p-galleria-item{display:flex;justify-content:center;align-items:center;height:100%;width:100%}.p-galleria-item-nav-onhover .p-galleria-item-nav{pointer-events:none;opacity:0;transition:opacity .2s ease-in-out}.p-galleria-item-nav-onhover .p-galleria-item-wrapper:hover .p-galleria-item-nav,.p-galleria-item-nav-onhover .p-galleria-item-nav-focused{pointer-events:all;opacity:1}.p-galleria-item-nav-onhover .p-galleria-item-wrapper:hover .p-galleria-item-nav.p-disabled{pointer-events:none}.p-galleria-caption{position:absolute;bottom:0;left:0;width:100%}.p-galleria-thumbnail-wrapper{display:flex;flex-direction:column;overflow:auto;flex-shrink:0}.p-galleria-thumbnail-prev,.p-galleria-thumbnail-next{align-self:center;flex:0 0 auto;display:flex;justify-content:center;align-items:center;overflow:hidden;position:relative}.p-galleria-thumbnail-prev span,.p-galleria-thumbnail-next span{display:flex;justify-content:center;align-items:center}.p-galleria-thumbnail-container{display:flex;flex-direction:row}.p-galleria-thumbnail-items-container{overflow:hidden;width:100%}.p-galleria-thumbnail-items{display:flex}.p-galleria-thumbnail-item{overflow:auto;display:flex;align-items:center;justify-content:center;cursor:pointer;opacity:.5}.p-galleria-thumbnail-item:hover{opacity:1;transition:opacity .3s}.p-galleria-thumbnail-item-current{opacity:1}.p-galleria-thumbnails-left .p-galleria-content,.p-galleria-thumbnails-right .p-galleria-content,.p-galleria-thumbnails-left .p-galleria-item-wrapper,.p-galleria-thumbnails-right .p-galleria-item-wrapper{flex-direction:row}.p-galleria-thumbnails-left p-galleriaitem,.p-galleria-thumbnails-top p-galleriaitem{order:2}.p-galleria-thumbnails-left p-galleriathumbnails,.p-galleria-thumbnails-top p-galleriathumbnails{order:1}.p-galleria-thumbnails-left .p-galleria-thumbnail-container,.p-galleria-thumbnails-right .p-galleria-thumbnail-container{flex-direction:column;flex-grow:1}.p-galleria-thumbnails-left .p-galleria-thumbnail-items,.p-galleria-thumbnails-right .p-galleria-thumbnail-items{flex-direction:column;height:100%}.p-galleria-thumbnails-left .p-galleria-thumbnail-wrapper,.p-galleria-thumbnails-right .p-galleria-thumbnail-wrapper{height:100%}.p-galleria-indicators{display:flex;align-items:center;justify-content:center}.p-galleria-indicator>button{display:inline-flex;align-items:center}.p-galleria-indicators-left .p-galleria-item-wrapper,.p-galleria-indicators-right .p-galleria-item-wrapper{flex-direction:row;align-items:center}.p-galleria-indicators-left .p-galleria-item-container,.p-galleria-indicators-top .p-galleria-item-container{order:2}.p-galleria-indicators-left .p-galleria-indicators,.p-galleria-indicators-top .p-galleria-indicators{order:1}.p-galleria-indicators-left .p-galleria-indicators,.p-galleria-indicators-right .p-galleria-indicators{flex-direction:column}.p-galleria-indicator-onitem .p-galleria-indicators{position:absolute;display:flex;z-index:1}.p-galleria-indicator-onitem.p-galleria-indicators-top .p-galleria-indicators{top:0;left:0;width:100%;align-items:flex-start}.p-galleria-indicator-onitem.p-galleria-indicators-right .p-galleria-indicators{right:0;top:0;height:100%;align-items:flex-end}.p-galleria-indicator-onitem.p-galleria-indicators-bottom .p-galleria-indicators{bottom:0;left:0;width:100%;align-items:flex-end}.p-galleria-indicator-onitem.p-galleria-indicators-left .p-galleria-indicators{left:0;top:0;height:100%;align-items:flex-start}.p-galleria-mask{position:fixed;top:0;left:0;width:100%;height:100%;display:flex;align-items:center;justify-content:center;background-color:transparent;transition-property:background-color}.p-galleria-close{position:absolute;top:0;right:0;display:flex;justify-content:center;align-items:center;overflow:hidden}.p-galleria-mask .p-galleria-item-nav{position:fixed;top:50%;margin-top:-.5rem}.p-galleria-mask.p-galleria-mask-leave{background-color:transparent}.p-items-hidden .p-galleria-thumbnail-item{visibility:hidden}.p-items-hidden .p-galleria-thumbnail-item.p-galleria-thumbnail-item-active{visibility:visible}}\n"], dependencies: [{ kind: "directive", type: i0.forwardRef(() => i2.NgClass), selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i0.forwardRef(() => i2.NgIf), selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i0.forwardRef(() => i2.NgStyle), selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i0.forwardRef(() => GalleriaContent), selector: "p-galleriaContent", inputs: ["activeIndex", "value", "numVisible", "fullScreen"], outputs: ["maskHide", "activeItemChange"] }], animations: [
|
|
337
|
+
trigger('animation', [
|
|
338
|
+
transition('void => visible', [style({ transform: 'scale(0.7)', opacity: 0 }), animate('{{showTransitionParams}}')]),
|
|
339
|
+
transition('visible => void', [animate('{{hideTransitionParams}}', style({ transform: 'scale(0.7)', opacity: 0 }))])
|
|
340
|
+
])
|
|
341
|
+
], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
342
|
+
}
|
|
343
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: Galleria, decorators: [{
|
|
344
|
+
type: Component,
|
|
345
|
+
args: [{ selector: 'p-galleria', template: `
|
|
346
|
+
<div *ngIf="fullScreen; else windowed" #container>
|
|
347
|
+
<div
|
|
348
|
+
*ngIf="maskVisible"
|
|
349
|
+
#mask
|
|
350
|
+
[ngClass]="{ 'p-galleria-mask p-component-overlay p-component-overlay-enter': true, 'p-galleria-visible': this.visible }"
|
|
351
|
+
[class]="maskClass"
|
|
352
|
+
[attr.role]="fullScreen ? 'dialog' : 'region'"
|
|
353
|
+
[attr.aria-modal]="fullScreen ? 'true' : undefined"
|
|
354
|
+
>
|
|
355
|
+
<p-galleriaContent
|
|
356
|
+
*ngIf="visible"
|
|
357
|
+
[@animation]="{ value: 'visible', params: { showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions } }"
|
|
358
|
+
(@animation.start)="onAnimationStart($event)"
|
|
359
|
+
(@animation.done)="onAnimationEnd($event)"
|
|
360
|
+
[value]="value"
|
|
361
|
+
[activeIndex]="activeIndex"
|
|
362
|
+
[numVisible]="numVisibleLimit || numVisible"
|
|
363
|
+
(maskHide)="onMaskHide()"
|
|
364
|
+
(activeItemChange)="onActiveItemChange($event)"
|
|
365
|
+
[ngStyle]="containerStyle"
|
|
366
|
+
[fullScreen]="fullScreen"
|
|
367
|
+
></p-galleriaContent>
|
|
368
|
+
</div>
|
|
369
|
+
</div>
|
|
370
|
+
|
|
371
|
+
<ng-template #windowed>
|
|
372
|
+
<p-galleriaContent [value]="value" [activeIndex]="activeIndex" [numVisible]="numVisibleLimit || numVisible" (activeItemChange)="onActiveItemChange($event)"></p-galleriaContent>
|
|
373
|
+
</ng-template>
|
|
374
|
+
`, animations: [
|
|
375
|
+
trigger('animation', [
|
|
376
|
+
transition('void => visible', [style({ transform: 'scale(0.7)', opacity: 0 }), animate('{{showTransitionParams}}')]),
|
|
377
|
+
transition('visible => void', [animate('{{hideTransitionParams}}', style({ transform: 'scale(0.7)', opacity: 0 }))])
|
|
378
|
+
])
|
|
379
|
+
], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
|
|
380
|
+
class: 'cax-element'
|
|
381
|
+
}, styles: ["@layer cax{.p-galleria-content{display:flex;flex-direction:column}.p-galleria-item-wrapper{display:flex;flex-direction:column;position:relative}.p-galleria-item-container{position:relative;display:flex;height:100%}.p-galleria-item-nav{position:absolute;top:50%;margin-top:-.5rem;display:inline-flex;justify-content:center;align-items:center;overflow:hidden}.p-galleria-item-prev{left:0;border-top-left-radius:0;border-bottom-left-radius:0}.p-galleria-item-next{right:0;border-top-right-radius:0;border-bottom-right-radius:0}.p-galleria-item{display:flex;justify-content:center;align-items:center;height:100%;width:100%}.p-galleria-item-nav-onhover .p-galleria-item-nav{pointer-events:none;opacity:0;transition:opacity .2s ease-in-out}.p-galleria-item-nav-onhover .p-galleria-item-wrapper:hover .p-galleria-item-nav,.p-galleria-item-nav-onhover .p-galleria-item-nav-focused{pointer-events:all;opacity:1}.p-galleria-item-nav-onhover .p-galleria-item-wrapper:hover .p-galleria-item-nav.p-disabled{pointer-events:none}.p-galleria-caption{position:absolute;bottom:0;left:0;width:100%}.p-galleria-thumbnail-wrapper{display:flex;flex-direction:column;overflow:auto;flex-shrink:0}.p-galleria-thumbnail-prev,.p-galleria-thumbnail-next{align-self:center;flex:0 0 auto;display:flex;justify-content:center;align-items:center;overflow:hidden;position:relative}.p-galleria-thumbnail-prev span,.p-galleria-thumbnail-next span{display:flex;justify-content:center;align-items:center}.p-galleria-thumbnail-container{display:flex;flex-direction:row}.p-galleria-thumbnail-items-container{overflow:hidden;width:100%}.p-galleria-thumbnail-items{display:flex}.p-galleria-thumbnail-item{overflow:auto;display:flex;align-items:center;justify-content:center;cursor:pointer;opacity:.5}.p-galleria-thumbnail-item:hover{opacity:1;transition:opacity .3s}.p-galleria-thumbnail-item-current{opacity:1}.p-galleria-thumbnails-left .p-galleria-content,.p-galleria-thumbnails-right .p-galleria-content,.p-galleria-thumbnails-left .p-galleria-item-wrapper,.p-galleria-thumbnails-right .p-galleria-item-wrapper{flex-direction:row}.p-galleria-thumbnails-left p-galleriaitem,.p-galleria-thumbnails-top p-galleriaitem{order:2}.p-galleria-thumbnails-left p-galleriathumbnails,.p-galleria-thumbnails-top p-galleriathumbnails{order:1}.p-galleria-thumbnails-left .p-galleria-thumbnail-container,.p-galleria-thumbnails-right .p-galleria-thumbnail-container{flex-direction:column;flex-grow:1}.p-galleria-thumbnails-left .p-galleria-thumbnail-items,.p-galleria-thumbnails-right .p-galleria-thumbnail-items{flex-direction:column;height:100%}.p-galleria-thumbnails-left .p-galleria-thumbnail-wrapper,.p-galleria-thumbnails-right .p-galleria-thumbnail-wrapper{height:100%}.p-galleria-indicators{display:flex;align-items:center;justify-content:center}.p-galleria-indicator>button{display:inline-flex;align-items:center}.p-galleria-indicators-left .p-galleria-item-wrapper,.p-galleria-indicators-right .p-galleria-item-wrapper{flex-direction:row;align-items:center}.p-galleria-indicators-left .p-galleria-item-container,.p-galleria-indicators-top .p-galleria-item-container{order:2}.p-galleria-indicators-left .p-galleria-indicators,.p-galleria-indicators-top .p-galleria-indicators{order:1}.p-galleria-indicators-left .p-galleria-indicators,.p-galleria-indicators-right .p-galleria-indicators{flex-direction:column}.p-galleria-indicator-onitem .p-galleria-indicators{position:absolute;display:flex;z-index:1}.p-galleria-indicator-onitem.p-galleria-indicators-top .p-galleria-indicators{top:0;left:0;width:100%;align-items:flex-start}.p-galleria-indicator-onitem.p-galleria-indicators-right .p-galleria-indicators{right:0;top:0;height:100%;align-items:flex-end}.p-galleria-indicator-onitem.p-galleria-indicators-bottom .p-galleria-indicators{bottom:0;left:0;width:100%;align-items:flex-end}.p-galleria-indicator-onitem.p-galleria-indicators-left .p-galleria-indicators{left:0;top:0;height:100%;align-items:flex-start}.p-galleria-mask{position:fixed;top:0;left:0;width:100%;height:100%;display:flex;align-items:center;justify-content:center;background-color:transparent;transition-property:background-color}.p-galleria-close{position:absolute;top:0;right:0;display:flex;justify-content:center;align-items:center;overflow:hidden}.p-galleria-mask .p-galleria-item-nav{position:fixed;top:50%;margin-top:-.5rem}.p-galleria-mask.p-galleria-mask-leave{background-color:transparent}.p-items-hidden .p-galleria-thumbnail-item{visibility:hidden}.p-items-hidden .p-galleria-thumbnail-item.p-galleria-thumbnail-item-active{visibility:visible}}\n"] }]
|
|
382
|
+
}], ctorParameters: () => [{ type: Document, decorators: [{
|
|
383
|
+
type: Inject,
|
|
384
|
+
args: [DOCUMENT]
|
|
385
|
+
}] }, { type: undefined, decorators: [{
|
|
386
|
+
type: Inject,
|
|
387
|
+
args: [PLATFORM_ID]
|
|
388
|
+
}] }, { type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i1.caxConfig }], propDecorators: { activeIndex: [{
|
|
389
|
+
type: Input
|
|
390
|
+
}], fullScreen: [{
|
|
391
|
+
type: Input,
|
|
392
|
+
args: [{ transform: booleanAttribute }]
|
|
393
|
+
}], id: [{
|
|
394
|
+
type: Input
|
|
395
|
+
}], value: [{
|
|
396
|
+
type: Input
|
|
397
|
+
}], numVisible: [{
|
|
398
|
+
type: Input,
|
|
399
|
+
args: [{ transform: numberAttribute }]
|
|
400
|
+
}], responsiveOptions: [{
|
|
401
|
+
type: Input
|
|
402
|
+
}], showItemNavigators: [{
|
|
403
|
+
type: Input,
|
|
404
|
+
args: [{ transform: booleanAttribute }]
|
|
405
|
+
}], showThumbnailNavigators: [{
|
|
406
|
+
type: Input,
|
|
407
|
+
args: [{ transform: booleanAttribute }]
|
|
408
|
+
}], showItemNavigatorsOnHover: [{
|
|
409
|
+
type: Input,
|
|
410
|
+
args: [{ transform: booleanAttribute }]
|
|
411
|
+
}], changeItemOnIndicatorHover: [{
|
|
412
|
+
type: Input,
|
|
413
|
+
args: [{ transform: booleanAttribute }]
|
|
414
|
+
}], circular: [{
|
|
415
|
+
type: Input,
|
|
416
|
+
args: [{ transform: booleanAttribute }]
|
|
417
|
+
}], autoPlay: [{
|
|
418
|
+
type: Input,
|
|
419
|
+
args: [{ transform: booleanAttribute }]
|
|
420
|
+
}], shouldStopAutoplayByClick: [{
|
|
421
|
+
type: Input,
|
|
422
|
+
args: [{ transform: booleanAttribute }]
|
|
423
|
+
}], transitionInterval: [{
|
|
424
|
+
type: Input,
|
|
425
|
+
args: [{ transform: numberAttribute }]
|
|
426
|
+
}], showThumbnails: [{
|
|
427
|
+
type: Input,
|
|
428
|
+
args: [{ transform: booleanAttribute }]
|
|
429
|
+
}], thumbnailsPosition: [{
|
|
430
|
+
type: Input
|
|
431
|
+
}], verticalThumbnailViewPortHeight: [{
|
|
432
|
+
type: Input
|
|
433
|
+
}], showIndicators: [{
|
|
434
|
+
type: Input,
|
|
435
|
+
args: [{ transform: booleanAttribute }]
|
|
436
|
+
}], showIndicatorsOnItem: [{
|
|
437
|
+
type: Input,
|
|
438
|
+
args: [{ transform: booleanAttribute }]
|
|
439
|
+
}], indicatorsPosition: [{
|
|
440
|
+
type: Input
|
|
441
|
+
}], baseZIndex: [{
|
|
442
|
+
type: Input,
|
|
443
|
+
args: [{ transform: numberAttribute }]
|
|
444
|
+
}], maskClass: [{
|
|
445
|
+
type: Input
|
|
446
|
+
}], containerClass: [{
|
|
447
|
+
type: Input
|
|
448
|
+
}], containerStyle: [{
|
|
449
|
+
type: Input
|
|
450
|
+
}], showTransitionOptions: [{
|
|
451
|
+
type: Input
|
|
452
|
+
}], hideTransitionOptions: [{
|
|
453
|
+
type: Input
|
|
454
|
+
}], visible: [{
|
|
455
|
+
type: Input
|
|
456
|
+
}], activeIndexChange: [{
|
|
457
|
+
type: Output
|
|
458
|
+
}], visibleChange: [{
|
|
459
|
+
type: Output
|
|
460
|
+
}], mask: [{
|
|
461
|
+
type: ViewChild,
|
|
462
|
+
args: ['mask']
|
|
463
|
+
}], container: [{
|
|
464
|
+
type: ViewChild,
|
|
465
|
+
args: ['container']
|
|
466
|
+
}], templates: [{
|
|
467
|
+
type: ContentChildren,
|
|
468
|
+
args: [CaxTemplate]
|
|
469
|
+
}] } });
|
|
470
|
+
export class GalleriaContent {
|
|
471
|
+
galleria;
|
|
472
|
+
cd;
|
|
473
|
+
differs;
|
|
474
|
+
config;
|
|
475
|
+
elementRef;
|
|
476
|
+
get activeIndex() {
|
|
477
|
+
return this._activeIndex;
|
|
478
|
+
}
|
|
479
|
+
set activeIndex(activeIndex) {
|
|
480
|
+
this._activeIndex = activeIndex;
|
|
481
|
+
}
|
|
482
|
+
value = [];
|
|
483
|
+
numVisible;
|
|
484
|
+
fullScreen;
|
|
485
|
+
maskHide = new EventEmitter();
|
|
486
|
+
activeItemChange = new EventEmitter();
|
|
487
|
+
closeButton;
|
|
488
|
+
id;
|
|
489
|
+
_activeIndex = 0;
|
|
490
|
+
slideShowActive = true;
|
|
491
|
+
interval;
|
|
492
|
+
styleClass;
|
|
493
|
+
differ;
|
|
494
|
+
constructor(galleria, cd, differs, config, elementRef) {
|
|
495
|
+
this.galleria = galleria;
|
|
496
|
+
this.cd = cd;
|
|
497
|
+
this.differs = differs;
|
|
498
|
+
this.config = config;
|
|
499
|
+
this.elementRef = elementRef;
|
|
500
|
+
this.id = this.galleria.id || UniqueComponentId();
|
|
501
|
+
this.differ = this.differs.find(this.galleria).create();
|
|
502
|
+
}
|
|
503
|
+
// For custom fullscreen
|
|
504
|
+
handleFullscreenChange(event) {
|
|
505
|
+
if (document?.fullscreenElement === this.elementRef.nativeElement?.children[0]) {
|
|
506
|
+
this.fullScreen = true;
|
|
507
|
+
}
|
|
508
|
+
else {
|
|
509
|
+
this.fullScreen = false;
|
|
510
|
+
}
|
|
511
|
+
}
|
|
512
|
+
ngDoCheck() {
|
|
513
|
+
if (isPlatformBrowser(this.galleria.platformId)) {
|
|
514
|
+
const changes = this.differ.diff(this.galleria);
|
|
515
|
+
if (changes && changes.forEachItem.length > 0) {
|
|
516
|
+
// Because we change the properties of the parent component,
|
|
517
|
+
// and the children take our entity from the injector.
|
|
518
|
+
// We can tell the children to redraw themselves when we change the properties of the parent component.
|
|
519
|
+
// Since we have an onPush strategy
|
|
520
|
+
this.cd.markForCheck();
|
|
521
|
+
}
|
|
522
|
+
}
|
|
523
|
+
}
|
|
524
|
+
galleriaClass() {
|
|
525
|
+
const thumbnailsPosClass = this.galleria.showThumbnails && this.getPositionClass('p-galleria-thumbnails', this.galleria.thumbnailsPosition);
|
|
526
|
+
const indicatorPosClass = this.galleria.showIndicators && this.getPositionClass('p-galleria-indicators', this.galleria.indicatorsPosition);
|
|
527
|
+
return (this.galleria.containerClass ? this.galleria.containerClass + ' ' : '') + (thumbnailsPosClass ? thumbnailsPosClass + ' ' : '') + (indicatorPosClass ? indicatorPosClass + ' ' : '');
|
|
528
|
+
}
|
|
529
|
+
startSlideShow() {
|
|
530
|
+
if (isPlatformBrowser(this.galleria.platformId)) {
|
|
531
|
+
this.interval = setInterval(() => {
|
|
532
|
+
let activeIndex = this.galleria.circular && this.value.length - 1 === this.activeIndex ? 0 : this.activeIndex + 1;
|
|
533
|
+
this.onActiveIndexChange(activeIndex);
|
|
534
|
+
this.activeIndex = activeIndex;
|
|
535
|
+
}, this.galleria.transitionInterval);
|
|
536
|
+
this.slideShowActive = true;
|
|
537
|
+
}
|
|
538
|
+
}
|
|
539
|
+
stopSlideShow() {
|
|
540
|
+
if (this.galleria.autoPlay && !this.galleria.shouldStopAutoplayByClick) {
|
|
541
|
+
return;
|
|
542
|
+
}
|
|
543
|
+
if (this.interval) {
|
|
544
|
+
clearInterval(this.interval);
|
|
545
|
+
}
|
|
546
|
+
this.slideShowActive = false;
|
|
547
|
+
}
|
|
548
|
+
getPositionClass(preClassName, position) {
|
|
549
|
+
const positions = ['top', 'left', 'bottom', 'right'];
|
|
550
|
+
const pos = positions.find((item) => item === position);
|
|
551
|
+
return pos ? `${preClassName}-${pos}` : '';
|
|
552
|
+
}
|
|
553
|
+
isVertical() {
|
|
554
|
+
return this.galleria.thumbnailsPosition === 'left' || this.galleria.thumbnailsPosition === 'right';
|
|
555
|
+
}
|
|
556
|
+
onActiveIndexChange(index) {
|
|
557
|
+
if (this.activeIndex !== index) {
|
|
558
|
+
this.activeIndex = index;
|
|
559
|
+
this.activeItemChange.emit(this.activeIndex);
|
|
560
|
+
}
|
|
561
|
+
}
|
|
562
|
+
closeAriaLabel() {
|
|
563
|
+
return this.config.translation.aria ? this.config.translation.aria.close : undefined;
|
|
564
|
+
}
|
|
565
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: GalleriaContent, deps: [{ token: Galleria }, { token: i0.ChangeDetectorRef }, { token: i0.KeyValueDiffers }, { token: i1.caxConfig }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
566
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "18.2.9", type: GalleriaContent, selector: "p-galleriaContent", inputs: { activeIndex: "activeIndex", value: "value", numVisible: ["numVisible", "numVisible", numberAttribute], fullScreen: ["fullScreen", "fullScreen", booleanAttribute] }, outputs: { maskHide: "maskHide", activeItemChange: "activeItemChange" }, host: { listeners: { "document:fullscreenchange": "handleFullscreenChange($event)" } }, viewQueries: [{ propertyName: "closeButton", first: true, predicate: ["closeButton"], descendants: true }], ngImport: i0, template: `
|
|
567
|
+
<div
|
|
568
|
+
[attr.id]="id"
|
|
569
|
+
[attr.role]="'region'"
|
|
570
|
+
*ngIf="value && value.length > 0"
|
|
571
|
+
[ngClass]="{
|
|
572
|
+
'p-galleria p-component': true,
|
|
573
|
+
'p-galleria-fullscreen': this.galleria.fullScreen,
|
|
574
|
+
'p-galleria-indicator-onitem': this.galleria.showIndicatorsOnItem,
|
|
575
|
+
'p-galleria-item-nav-onhover': this.galleria.showItemNavigatorsOnHover && !this.galleria.fullScreen
|
|
576
|
+
}"
|
|
577
|
+
[ngStyle]="!galleria.fullScreen ? galleria.containerStyle : {}"
|
|
578
|
+
[class]="galleriaClass()"
|
|
579
|
+
caxFocusTrap
|
|
580
|
+
[caxFocusTrapDisabled]="!fullScreen"
|
|
581
|
+
>
|
|
582
|
+
<button *ngIf="galleria.fullScreen" type="button" class="p-galleria-close p-link" (click)="maskHide.emit()" pRipple [attr.aria-label]="closeAriaLabel()" [attr.data-pc-section]="'closebutton'">
|
|
583
|
+
<TimesIcon *ngIf="!galleria.closeIconTemplate" [styleClass]="'p-galleria-close-icon'" />
|
|
584
|
+
<ng-template *ngTemplateOutlet="galleria.closeIconTemplate"></ng-template>
|
|
585
|
+
</button>
|
|
586
|
+
<div *ngIf="galleria.templates && galleria.headerFacet" class="p-galleria-header">
|
|
587
|
+
<p-galleriaItemSlot type="header" [templates]="galleria.templates"></p-galleriaItemSlot>
|
|
588
|
+
</div>
|
|
589
|
+
<div class="p-galleria-content" [attr.aria-live]="galleria.autoPlay ? 'polite' : 'off'">
|
|
590
|
+
<p-galleriaItem
|
|
591
|
+
[id]="id"
|
|
592
|
+
[value]="value"
|
|
593
|
+
[activeIndex]="activeIndex"
|
|
594
|
+
[circular]="galleria.circular"
|
|
595
|
+
[templates]="galleria.templates"
|
|
596
|
+
(onActiveIndexChange)="onActiveIndexChange($event)"
|
|
597
|
+
[showIndicators]="galleria.showIndicators"
|
|
598
|
+
[changeItemOnIndicatorHover]="galleria.changeItemOnIndicatorHover"
|
|
599
|
+
[indicatorFacet]="galleria.indicatorFacet"
|
|
600
|
+
[captionFacet]="galleria.captionFacet"
|
|
601
|
+
[showItemNavigators]="galleria.showItemNavigators"
|
|
602
|
+
[autoPlay]="galleria.autoPlay"
|
|
603
|
+
[slideShowActive]="slideShowActive"
|
|
604
|
+
(startSlideShow)="startSlideShow()"
|
|
605
|
+
(stopSlideShow)="stopSlideShow()"
|
|
606
|
+
></p-galleriaItem>
|
|
607
|
+
|
|
608
|
+
<p-galleriaThumbnails
|
|
609
|
+
*ngIf="galleria.showThumbnails"
|
|
610
|
+
[containerId]="id"
|
|
611
|
+
[value]="value"
|
|
612
|
+
(onActiveIndexChange)="onActiveIndexChange($event)"
|
|
613
|
+
[activeIndex]="activeIndex"
|
|
614
|
+
[templates]="galleria.templates"
|
|
615
|
+
[numVisible]="numVisible"
|
|
616
|
+
[responsiveOptions]="galleria.responsiveOptions"
|
|
617
|
+
[circular]="galleria.circular"
|
|
618
|
+
[isVertical]="isVertical()"
|
|
619
|
+
[contentHeight]="galleria.verticalThumbnailViewPortHeight"
|
|
620
|
+
[showThumbnailNavigators]="galleria.showThumbnailNavigators"
|
|
621
|
+
[slideShowActive]="slideShowActive"
|
|
622
|
+
(stopSlideShow)="stopSlideShow()"
|
|
623
|
+
></p-galleriaThumbnails>
|
|
624
|
+
</div>
|
|
625
|
+
<div *ngIf="galleria.templates && galleria.footerFacet" class="p-galleria-footer">
|
|
626
|
+
<p-galleriaItemSlot type="footer" [templates]="galleria.templates"></p-galleriaItemSlot>
|
|
627
|
+
</div>
|
|
628
|
+
</div>
|
|
629
|
+
`, isInline: true, dependencies: [{ kind: "directive", type: i0.forwardRef(() => i2.NgClass), selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i0.forwardRef(() => i2.NgIf), selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i0.forwardRef(() => i2.NgTemplateOutlet), selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i0.forwardRef(() => i2.NgStyle), selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i0.forwardRef(() => TimesIcon), selector: "TimesIcon" }, { kind: "directive", type: i0.forwardRef(() => i3.FocusTrap), selector: "[caxFocusTrap]", inputs: ["caxFocusTrapDisabled"] }, { kind: "component", type: i0.forwardRef(() => GalleriaItemSlot), selector: "p-galleriaItemSlot", inputs: ["templates", "index", "item", "type"] }, { kind: "component", type: i0.forwardRef(() => GalleriaItem), selector: "p-galleriaItem", inputs: ["id", "circular", "value", "showItemNavigators", "showIndicators", "slideShowActive", "changeItemOnIndicatorHover", "autoPlay", "templates", "indicatorFacet", "captionFacet", "activeIndex"], outputs: ["startSlideShow", "stopSlideShow", "onActiveIndexChange"] }, { kind: "component", type: i0.forwardRef(() => GalleriaThumbnails), selector: "p-galleriaThumbnails", inputs: ["containerId", "value", "isVertical", "slideShowActive", "circular", "responsiveOptions", "contentHeight", "showThumbnailNavigators", "templates", "numVisible", "activeIndex"], outputs: ["onActiveIndexChange", "stopSlideShow"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
630
|
+
}
|
|
631
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: GalleriaContent, decorators: [{
|
|
632
|
+
type: Component,
|
|
633
|
+
args: [{
|
|
634
|
+
selector: 'p-galleriaContent',
|
|
635
|
+
template: `
|
|
636
|
+
<div
|
|
637
|
+
[attr.id]="id"
|
|
638
|
+
[attr.role]="'region'"
|
|
639
|
+
*ngIf="value && value.length > 0"
|
|
640
|
+
[ngClass]="{
|
|
641
|
+
'p-galleria p-component': true,
|
|
642
|
+
'p-galleria-fullscreen': this.galleria.fullScreen,
|
|
643
|
+
'p-galleria-indicator-onitem': this.galleria.showIndicatorsOnItem,
|
|
644
|
+
'p-galleria-item-nav-onhover': this.galleria.showItemNavigatorsOnHover && !this.galleria.fullScreen
|
|
645
|
+
}"
|
|
646
|
+
[ngStyle]="!galleria.fullScreen ? galleria.containerStyle : {}"
|
|
647
|
+
[class]="galleriaClass()"
|
|
648
|
+
caxFocusTrap
|
|
649
|
+
[caxFocusTrapDisabled]="!fullScreen"
|
|
650
|
+
>
|
|
651
|
+
<button *ngIf="galleria.fullScreen" type="button" class="p-galleria-close p-link" (click)="maskHide.emit()" pRipple [attr.aria-label]="closeAriaLabel()" [attr.data-pc-section]="'closebutton'">
|
|
652
|
+
<TimesIcon *ngIf="!galleria.closeIconTemplate" [styleClass]="'p-galleria-close-icon'" />
|
|
653
|
+
<ng-template *ngTemplateOutlet="galleria.closeIconTemplate"></ng-template>
|
|
654
|
+
</button>
|
|
655
|
+
<div *ngIf="galleria.templates && galleria.headerFacet" class="p-galleria-header">
|
|
656
|
+
<p-galleriaItemSlot type="header" [templates]="galleria.templates"></p-galleriaItemSlot>
|
|
657
|
+
</div>
|
|
658
|
+
<div class="p-galleria-content" [attr.aria-live]="galleria.autoPlay ? 'polite' : 'off'">
|
|
659
|
+
<p-galleriaItem
|
|
660
|
+
[id]="id"
|
|
661
|
+
[value]="value"
|
|
662
|
+
[activeIndex]="activeIndex"
|
|
663
|
+
[circular]="galleria.circular"
|
|
664
|
+
[templates]="galleria.templates"
|
|
665
|
+
(onActiveIndexChange)="onActiveIndexChange($event)"
|
|
666
|
+
[showIndicators]="galleria.showIndicators"
|
|
667
|
+
[changeItemOnIndicatorHover]="galleria.changeItemOnIndicatorHover"
|
|
668
|
+
[indicatorFacet]="galleria.indicatorFacet"
|
|
669
|
+
[captionFacet]="galleria.captionFacet"
|
|
670
|
+
[showItemNavigators]="galleria.showItemNavigators"
|
|
671
|
+
[autoPlay]="galleria.autoPlay"
|
|
672
|
+
[slideShowActive]="slideShowActive"
|
|
673
|
+
(startSlideShow)="startSlideShow()"
|
|
674
|
+
(stopSlideShow)="stopSlideShow()"
|
|
675
|
+
></p-galleriaItem>
|
|
676
|
+
|
|
677
|
+
<p-galleriaThumbnails
|
|
678
|
+
*ngIf="galleria.showThumbnails"
|
|
679
|
+
[containerId]="id"
|
|
680
|
+
[value]="value"
|
|
681
|
+
(onActiveIndexChange)="onActiveIndexChange($event)"
|
|
682
|
+
[activeIndex]="activeIndex"
|
|
683
|
+
[templates]="galleria.templates"
|
|
684
|
+
[numVisible]="numVisible"
|
|
685
|
+
[responsiveOptions]="galleria.responsiveOptions"
|
|
686
|
+
[circular]="galleria.circular"
|
|
687
|
+
[isVertical]="isVertical()"
|
|
688
|
+
[contentHeight]="galleria.verticalThumbnailViewPortHeight"
|
|
689
|
+
[showThumbnailNavigators]="galleria.showThumbnailNavigators"
|
|
690
|
+
[slideShowActive]="slideShowActive"
|
|
691
|
+
(stopSlideShow)="stopSlideShow()"
|
|
692
|
+
></p-galleriaThumbnails>
|
|
693
|
+
</div>
|
|
694
|
+
<div *ngIf="galleria.templates && galleria.footerFacet" class="p-galleria-footer">
|
|
695
|
+
<p-galleriaItemSlot type="footer" [templates]="galleria.templates"></p-galleriaItemSlot>
|
|
696
|
+
</div>
|
|
697
|
+
</div>
|
|
698
|
+
`,
|
|
699
|
+
changeDetection: ChangeDetectionStrategy.OnPush
|
|
700
|
+
}]
|
|
701
|
+
}], ctorParameters: () => [{ type: Galleria }, { type: i0.ChangeDetectorRef }, { type: i0.KeyValueDiffers }, { type: i1.caxConfig }, { type: i0.ElementRef }], propDecorators: { activeIndex: [{
|
|
702
|
+
type: Input
|
|
703
|
+
}], value: [{
|
|
704
|
+
type: Input
|
|
705
|
+
}], numVisible: [{
|
|
706
|
+
type: Input,
|
|
707
|
+
args: [{ transform: numberAttribute }]
|
|
708
|
+
}], fullScreen: [{
|
|
709
|
+
type: Input,
|
|
710
|
+
args: [{ transform: booleanAttribute }]
|
|
711
|
+
}], maskHide: [{
|
|
712
|
+
type: Output
|
|
713
|
+
}], activeItemChange: [{
|
|
714
|
+
type: Output
|
|
715
|
+
}], closeButton: [{
|
|
716
|
+
type: ViewChild,
|
|
717
|
+
args: ['closeButton']
|
|
718
|
+
}], handleFullscreenChange: [{
|
|
719
|
+
type: HostListener,
|
|
720
|
+
args: ['document:fullscreenchange', ['$event']]
|
|
721
|
+
}] } });
|
|
722
|
+
export class GalleriaItemSlot {
|
|
723
|
+
templates;
|
|
724
|
+
index;
|
|
725
|
+
get item() {
|
|
726
|
+
return this._item;
|
|
727
|
+
}
|
|
728
|
+
set item(item) {
|
|
729
|
+
this._item = item;
|
|
730
|
+
if (this.templates) {
|
|
731
|
+
this.templates.forEach((item) => {
|
|
732
|
+
if (item.getType() === this.type) {
|
|
733
|
+
switch (this.type) {
|
|
734
|
+
case 'item':
|
|
735
|
+
case 'caption':
|
|
736
|
+
case 'thumbnail':
|
|
737
|
+
this.context = { $implicit: this.item };
|
|
738
|
+
this.contentTemplate = item.template;
|
|
739
|
+
break;
|
|
740
|
+
}
|
|
741
|
+
}
|
|
742
|
+
});
|
|
743
|
+
}
|
|
744
|
+
}
|
|
745
|
+
type;
|
|
746
|
+
contentTemplate;
|
|
747
|
+
context;
|
|
748
|
+
_item;
|
|
749
|
+
ngAfterContentInit() {
|
|
750
|
+
this.templates?.forEach((item) => {
|
|
751
|
+
if (item.getType() === this.type) {
|
|
752
|
+
switch (this.type) {
|
|
753
|
+
case 'item':
|
|
754
|
+
case 'caption':
|
|
755
|
+
case 'thumbnail':
|
|
756
|
+
this.context = { $implicit: this.item };
|
|
757
|
+
this.contentTemplate = item.template;
|
|
758
|
+
break;
|
|
759
|
+
case 'indicator':
|
|
760
|
+
this.context = { $implicit: this.index };
|
|
761
|
+
this.contentTemplate = item.template;
|
|
762
|
+
break;
|
|
763
|
+
default:
|
|
764
|
+
this.context = {};
|
|
765
|
+
this.contentTemplate = item.template;
|
|
766
|
+
break;
|
|
767
|
+
}
|
|
768
|
+
}
|
|
769
|
+
});
|
|
770
|
+
}
|
|
771
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: GalleriaItemSlot, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
772
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "18.2.9", type: GalleriaItemSlot, selector: "p-galleriaItemSlot", inputs: { templates: "templates", index: ["index", "index", numberAttribute], item: "item", type: "type" }, ngImport: i0, template: `
|
|
773
|
+
<ng-container *ngIf="contentTemplate">
|
|
774
|
+
<ng-container *ngTemplateOutlet="contentTemplate; context: context"></ng-container>
|
|
775
|
+
</ng-container>
|
|
776
|
+
`, isInline: true, dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
777
|
+
}
|
|
778
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: GalleriaItemSlot, decorators: [{
|
|
779
|
+
type: Component,
|
|
780
|
+
args: [{
|
|
781
|
+
selector: 'p-galleriaItemSlot',
|
|
782
|
+
template: `
|
|
783
|
+
<ng-container *ngIf="contentTemplate">
|
|
784
|
+
<ng-container *ngTemplateOutlet="contentTemplate; context: context"></ng-container>
|
|
785
|
+
</ng-container>
|
|
786
|
+
`,
|
|
787
|
+
changeDetection: ChangeDetectionStrategy.OnPush
|
|
788
|
+
}]
|
|
789
|
+
}], propDecorators: { templates: [{
|
|
790
|
+
type: Input
|
|
791
|
+
}], index: [{
|
|
792
|
+
type: Input,
|
|
793
|
+
args: [{ transform: numberAttribute }]
|
|
794
|
+
}], item: [{
|
|
795
|
+
type: Input
|
|
796
|
+
}], type: [{
|
|
797
|
+
type: Input
|
|
798
|
+
}] } });
|
|
799
|
+
export class GalleriaItem {
|
|
800
|
+
galleria;
|
|
801
|
+
id;
|
|
802
|
+
circular = false;
|
|
803
|
+
value;
|
|
804
|
+
showItemNavigators = false;
|
|
805
|
+
showIndicators = true;
|
|
806
|
+
slideShowActive = true;
|
|
807
|
+
changeItemOnIndicatorHover = true;
|
|
808
|
+
autoPlay = false;
|
|
809
|
+
templates;
|
|
810
|
+
indicatorFacet;
|
|
811
|
+
captionFacet;
|
|
812
|
+
startSlideShow = new EventEmitter();
|
|
813
|
+
stopSlideShow = new EventEmitter();
|
|
814
|
+
onActiveIndexChange = new EventEmitter();
|
|
815
|
+
get activeIndex() {
|
|
816
|
+
return this._activeIndex;
|
|
817
|
+
}
|
|
818
|
+
set activeIndex(activeIndex) {
|
|
819
|
+
this._activeIndex = activeIndex;
|
|
820
|
+
}
|
|
821
|
+
get activeItem() {
|
|
822
|
+
return this.value && this.value[this._activeIndex];
|
|
823
|
+
}
|
|
824
|
+
_activeIndex = 0;
|
|
825
|
+
leftButtonFocused = false;
|
|
826
|
+
rightButtonFocused = false;
|
|
827
|
+
constructor(galleria) {
|
|
828
|
+
this.galleria = galleria;
|
|
829
|
+
}
|
|
830
|
+
ngOnChanges({ autoPlay }) {
|
|
831
|
+
if (autoPlay?.currentValue) {
|
|
832
|
+
this.startSlideShow.emit();
|
|
833
|
+
}
|
|
834
|
+
if (autoPlay && autoPlay.currentValue === false) {
|
|
835
|
+
this.stopTheSlideShow();
|
|
836
|
+
}
|
|
837
|
+
}
|
|
838
|
+
next() {
|
|
839
|
+
let nextItemIndex = this.activeIndex + 1;
|
|
840
|
+
let activeIndex = this.circular && this.value.length - 1 === this.activeIndex ? 0 : nextItemIndex;
|
|
841
|
+
this.onActiveIndexChange.emit(activeIndex);
|
|
842
|
+
}
|
|
843
|
+
prev() {
|
|
844
|
+
let prevItemIndex = this.activeIndex !== 0 ? this.activeIndex - 1 : 0;
|
|
845
|
+
let activeIndex = this.circular && this.activeIndex === 0 ? this.value.length - 1 : prevItemIndex;
|
|
846
|
+
this.onActiveIndexChange.emit(activeIndex);
|
|
847
|
+
}
|
|
848
|
+
onButtonFocus(pos) {
|
|
849
|
+
if (pos === 'left') {
|
|
850
|
+
this.leftButtonFocused = true;
|
|
851
|
+
}
|
|
852
|
+
else
|
|
853
|
+
this.rightButtonFocused = true;
|
|
854
|
+
}
|
|
855
|
+
onButtonBlur(pos) {
|
|
856
|
+
if (pos === 'left') {
|
|
857
|
+
this.leftButtonFocused = false;
|
|
858
|
+
}
|
|
859
|
+
else
|
|
860
|
+
this.rightButtonFocused = false;
|
|
861
|
+
}
|
|
862
|
+
stopTheSlideShow() {
|
|
863
|
+
if (this.slideShowActive && this.stopSlideShow) {
|
|
864
|
+
this.stopSlideShow.emit();
|
|
865
|
+
}
|
|
866
|
+
}
|
|
867
|
+
navForward(e) {
|
|
868
|
+
this.stopTheSlideShow();
|
|
869
|
+
this.next();
|
|
870
|
+
if (e && e.cancelable) {
|
|
871
|
+
e.preventDefault();
|
|
872
|
+
}
|
|
873
|
+
}
|
|
874
|
+
navBackward(e) {
|
|
875
|
+
this.stopTheSlideShow();
|
|
876
|
+
this.prev();
|
|
877
|
+
if (e && e.cancelable) {
|
|
878
|
+
e.preventDefault();
|
|
879
|
+
}
|
|
880
|
+
}
|
|
881
|
+
onIndicatorClick(index) {
|
|
882
|
+
this.stopTheSlideShow();
|
|
883
|
+
this.onActiveIndexChange.emit(index);
|
|
884
|
+
}
|
|
885
|
+
onIndicatorMouseEnter(index) {
|
|
886
|
+
if (this.changeItemOnIndicatorHover) {
|
|
887
|
+
this.stopTheSlideShow();
|
|
888
|
+
this.onActiveIndexChange.emit(index);
|
|
889
|
+
}
|
|
890
|
+
}
|
|
891
|
+
onIndicatorKeyDown(event, index) {
|
|
892
|
+
switch (event.code) {
|
|
893
|
+
case 'Enter':
|
|
894
|
+
case 'Space':
|
|
895
|
+
this.stopTheSlideShow();
|
|
896
|
+
this.onActiveIndexChange.emit(index);
|
|
897
|
+
event.preventDefault();
|
|
898
|
+
break;
|
|
899
|
+
case 'ArrowDown':
|
|
900
|
+
case 'ArrowUp':
|
|
901
|
+
event.preventDefault();
|
|
902
|
+
break;
|
|
903
|
+
default:
|
|
904
|
+
break;
|
|
905
|
+
}
|
|
906
|
+
}
|
|
907
|
+
isNavForwardDisabled() {
|
|
908
|
+
return !this.circular && this.activeIndex === this.value.length - 1;
|
|
909
|
+
}
|
|
910
|
+
isNavBackwardDisabled() {
|
|
911
|
+
return !this.circular && this.activeIndex === 0;
|
|
912
|
+
}
|
|
913
|
+
isIndicatorItemActive(index) {
|
|
914
|
+
return this.activeIndex === index;
|
|
915
|
+
}
|
|
916
|
+
ariaSlideLabel() {
|
|
917
|
+
return this.galleria.config.translation.aria ? this.galleria.config.translation.aria.slide : undefined;
|
|
918
|
+
}
|
|
919
|
+
ariaSlideNumber(value) {
|
|
920
|
+
return this.galleria.config.translation.aria ? this.galleria.config.translation.aria.slideNumber.replace(/{slideNumber}/g, value) : undefined;
|
|
921
|
+
}
|
|
922
|
+
ariaPageLabel(value) {
|
|
923
|
+
return this.galleria.config.translation.aria ? this.galleria.config.translation.aria.pageLabel.replace(/{page}/g, value) : undefined;
|
|
924
|
+
}
|
|
925
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: GalleriaItem, deps: [{ token: Galleria }], target: i0.ɵɵFactoryTarget.Component });
|
|
926
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "18.2.9", type: GalleriaItem, selector: "p-galleriaItem", inputs: { id: "id", circular: ["circular", "circular", booleanAttribute], value: "value", showItemNavigators: ["showItemNavigators", "showItemNavigators", booleanAttribute], showIndicators: ["showIndicators", "showIndicators", booleanAttribute], slideShowActive: ["slideShowActive", "slideShowActive", booleanAttribute], changeItemOnIndicatorHover: ["changeItemOnIndicatorHover", "changeItemOnIndicatorHover", booleanAttribute], autoPlay: ["autoPlay", "autoPlay", booleanAttribute], templates: "templates", indicatorFacet: "indicatorFacet", captionFacet: "captionFacet", activeIndex: "activeIndex" }, outputs: { startSlideShow: "startSlideShow", stopSlideShow: "stopSlideShow", onActiveIndexChange: "onActiveIndexChange" }, usesOnChanges: true, ngImport: i0, template: `
|
|
927
|
+
<div class="p-galleria-item-wrapper">
|
|
928
|
+
<div class="p-galleria-item-container">
|
|
929
|
+
<button
|
|
930
|
+
*ngIf="showItemNavigators"
|
|
931
|
+
type="button"
|
|
932
|
+
role="navigation"
|
|
933
|
+
[ngClass]="{ 'p-galleria-item-prev p-galleria-item-nav p-link': true, 'p-galleria-item-nav-focused': leftButtonFocused, 'p-disabled': this.isNavBackwardDisabled() }"
|
|
934
|
+
(click)="navBackward($event)"
|
|
935
|
+
[disabled]="isNavBackwardDisabled()"
|
|
936
|
+
pRipple
|
|
937
|
+
(focus)="onButtonFocus('left')"
|
|
938
|
+
(blur)="onButtonBlur('left')"
|
|
939
|
+
>
|
|
940
|
+
<ChevronLeftIcon *ngIf="!galleria.itemPreviousIconTemplate" [styleClass]="'p-galleria-item-prev-icon'" />
|
|
941
|
+
<ng-template *ngTemplateOutlet="galleria.itemPreviousIconTemplate"></ng-template>
|
|
942
|
+
</button>
|
|
943
|
+
<div [id]="id + '_item_' + activeIndex" role="group" [attr.aria-label]="ariaSlideNumber(activeIndex + 1)" [attr.aria-roledescription]="ariaSlideLabel()" [style.width]="'100%'">
|
|
944
|
+
<p-galleriaItemSlot type="item" [item]="activeItem" [templates]="templates" class="p-galleria-item"></p-galleriaItemSlot>
|
|
945
|
+
</div>
|
|
946
|
+
<button
|
|
947
|
+
*ngIf="showItemNavigators"
|
|
948
|
+
type="button"
|
|
949
|
+
[ngClass]="{ 'p-galleria-item-next p-galleria-item-nav p-link': true, 'p-galleria-item-nav-focused': rightButtonFocused, 'p-disabled': this.isNavForwardDisabled() }"
|
|
950
|
+
(click)="navForward($event)"
|
|
951
|
+
[disabled]="isNavForwardDisabled()"
|
|
952
|
+
pRipple
|
|
953
|
+
role="navigation"
|
|
954
|
+
(focus)="onButtonFocus('right')"
|
|
955
|
+
(blur)="onButtonBlur('right')"
|
|
956
|
+
>
|
|
957
|
+
<ChevronRightIcon *ngIf="!galleria.itemNextIconTemplate" [styleClass]="'p-galleria-item-next-icon'" />
|
|
958
|
+
<ng-template *ngTemplateOutlet="galleria.itemNextIconTemplate"></ng-template>
|
|
959
|
+
</button>
|
|
960
|
+
<div class="p-galleria-caption" *ngIf="captionFacet">
|
|
961
|
+
<p-galleriaItemSlot type="caption" [item]="activeItem" [templates]="templates"></p-galleriaItemSlot>
|
|
962
|
+
</div>
|
|
963
|
+
</div>
|
|
964
|
+
<ul *ngIf="showIndicators" class="p-galleria-indicators p-reset">
|
|
965
|
+
<li
|
|
966
|
+
*ngFor="let item of value; let index = index"
|
|
967
|
+
tabindex="0"
|
|
968
|
+
(click)="onIndicatorClick(index)"
|
|
969
|
+
(mouseenter)="onIndicatorMouseEnter(index)"
|
|
970
|
+
(keydown)="onIndicatorKeyDown($event, index)"
|
|
971
|
+
[ngClass]="{ 'p-galleria-indicator': true, 'p-highlight': isIndicatorItemActive(index) }"
|
|
972
|
+
[attr.aria-label]="ariaPageLabel(index + 1)"
|
|
973
|
+
[attr.aria-selected]="activeIndex === index"
|
|
974
|
+
[attr.aria-controls]="id + '_item_' + index"
|
|
975
|
+
>
|
|
976
|
+
<button type="button" tabIndex="-1" class="p-link" *ngIf="!indicatorFacet"></button>
|
|
977
|
+
<p-galleriaItemSlot type="indicator" [index]="index" [templates]="templates"></p-galleriaItemSlot>
|
|
978
|
+
</li>
|
|
979
|
+
</ul>
|
|
980
|
+
</div>
|
|
981
|
+
`, isInline: true, dependencies: [{ kind: "directive", type: i0.forwardRef(() => i2.NgClass), selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i0.forwardRef(() => i2.NgForOf), selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i0.forwardRef(() => i2.NgIf), selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i0.forwardRef(() => i2.NgTemplateOutlet), selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i0.forwardRef(() => ChevronRightIcon), selector: "ChevronRightIcon" }, { kind: "component", type: i0.forwardRef(() => ChevronLeftIcon), selector: "ChevronLeftIcon" }, { kind: "component", type: i0.forwardRef(() => GalleriaItemSlot), selector: "p-galleriaItemSlot", inputs: ["templates", "index", "item", "type"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
982
|
+
}
|
|
983
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: GalleriaItem, decorators: [{
|
|
984
|
+
type: Component,
|
|
985
|
+
args: [{
|
|
986
|
+
selector: 'p-galleriaItem',
|
|
987
|
+
template: `
|
|
988
|
+
<div class="p-galleria-item-wrapper">
|
|
989
|
+
<div class="p-galleria-item-container">
|
|
990
|
+
<button
|
|
991
|
+
*ngIf="showItemNavigators"
|
|
992
|
+
type="button"
|
|
993
|
+
role="navigation"
|
|
994
|
+
[ngClass]="{ 'p-galleria-item-prev p-galleria-item-nav p-link': true, 'p-galleria-item-nav-focused': leftButtonFocused, 'p-disabled': this.isNavBackwardDisabled() }"
|
|
995
|
+
(click)="navBackward($event)"
|
|
996
|
+
[disabled]="isNavBackwardDisabled()"
|
|
997
|
+
pRipple
|
|
998
|
+
(focus)="onButtonFocus('left')"
|
|
999
|
+
(blur)="onButtonBlur('left')"
|
|
1000
|
+
>
|
|
1001
|
+
<ChevronLeftIcon *ngIf="!galleria.itemPreviousIconTemplate" [styleClass]="'p-galleria-item-prev-icon'" />
|
|
1002
|
+
<ng-template *ngTemplateOutlet="galleria.itemPreviousIconTemplate"></ng-template>
|
|
1003
|
+
</button>
|
|
1004
|
+
<div [id]="id + '_item_' + activeIndex" role="group" [attr.aria-label]="ariaSlideNumber(activeIndex + 1)" [attr.aria-roledescription]="ariaSlideLabel()" [style.width]="'100%'">
|
|
1005
|
+
<p-galleriaItemSlot type="item" [item]="activeItem" [templates]="templates" class="p-galleria-item"></p-galleriaItemSlot>
|
|
1006
|
+
</div>
|
|
1007
|
+
<button
|
|
1008
|
+
*ngIf="showItemNavigators"
|
|
1009
|
+
type="button"
|
|
1010
|
+
[ngClass]="{ 'p-galleria-item-next p-galleria-item-nav p-link': true, 'p-galleria-item-nav-focused': rightButtonFocused, 'p-disabled': this.isNavForwardDisabled() }"
|
|
1011
|
+
(click)="navForward($event)"
|
|
1012
|
+
[disabled]="isNavForwardDisabled()"
|
|
1013
|
+
pRipple
|
|
1014
|
+
role="navigation"
|
|
1015
|
+
(focus)="onButtonFocus('right')"
|
|
1016
|
+
(blur)="onButtonBlur('right')"
|
|
1017
|
+
>
|
|
1018
|
+
<ChevronRightIcon *ngIf="!galleria.itemNextIconTemplate" [styleClass]="'p-galleria-item-next-icon'" />
|
|
1019
|
+
<ng-template *ngTemplateOutlet="galleria.itemNextIconTemplate"></ng-template>
|
|
1020
|
+
</button>
|
|
1021
|
+
<div class="p-galleria-caption" *ngIf="captionFacet">
|
|
1022
|
+
<p-galleriaItemSlot type="caption" [item]="activeItem" [templates]="templates"></p-galleriaItemSlot>
|
|
1023
|
+
</div>
|
|
1024
|
+
</div>
|
|
1025
|
+
<ul *ngIf="showIndicators" class="p-galleria-indicators p-reset">
|
|
1026
|
+
<li
|
|
1027
|
+
*ngFor="let item of value; let index = index"
|
|
1028
|
+
tabindex="0"
|
|
1029
|
+
(click)="onIndicatorClick(index)"
|
|
1030
|
+
(mouseenter)="onIndicatorMouseEnter(index)"
|
|
1031
|
+
(keydown)="onIndicatorKeyDown($event, index)"
|
|
1032
|
+
[ngClass]="{ 'p-galleria-indicator': true, 'p-highlight': isIndicatorItemActive(index) }"
|
|
1033
|
+
[attr.aria-label]="ariaPageLabel(index + 1)"
|
|
1034
|
+
[attr.aria-selected]="activeIndex === index"
|
|
1035
|
+
[attr.aria-controls]="id + '_item_' + index"
|
|
1036
|
+
>
|
|
1037
|
+
<button type="button" tabIndex="-1" class="p-link" *ngIf="!indicatorFacet"></button>
|
|
1038
|
+
<p-galleriaItemSlot type="indicator" [index]="index" [templates]="templates"></p-galleriaItemSlot>
|
|
1039
|
+
</li>
|
|
1040
|
+
</ul>
|
|
1041
|
+
</div>
|
|
1042
|
+
`,
|
|
1043
|
+
changeDetection: ChangeDetectionStrategy.OnPush
|
|
1044
|
+
}]
|
|
1045
|
+
}], ctorParameters: () => [{ type: Galleria }], propDecorators: { id: [{
|
|
1046
|
+
type: Input
|
|
1047
|
+
}], circular: [{
|
|
1048
|
+
type: Input,
|
|
1049
|
+
args: [{ transform: booleanAttribute }]
|
|
1050
|
+
}], value: [{
|
|
1051
|
+
type: Input
|
|
1052
|
+
}], showItemNavigators: [{
|
|
1053
|
+
type: Input,
|
|
1054
|
+
args: [{ transform: booleanAttribute }]
|
|
1055
|
+
}], showIndicators: [{
|
|
1056
|
+
type: Input,
|
|
1057
|
+
args: [{ transform: booleanAttribute }]
|
|
1058
|
+
}], slideShowActive: [{
|
|
1059
|
+
type: Input,
|
|
1060
|
+
args: [{ transform: booleanAttribute }]
|
|
1061
|
+
}], changeItemOnIndicatorHover: [{
|
|
1062
|
+
type: Input,
|
|
1063
|
+
args: [{ transform: booleanAttribute }]
|
|
1064
|
+
}], autoPlay: [{
|
|
1065
|
+
type: Input,
|
|
1066
|
+
args: [{ transform: booleanAttribute }]
|
|
1067
|
+
}], templates: [{
|
|
1068
|
+
type: Input
|
|
1069
|
+
}], indicatorFacet: [{
|
|
1070
|
+
type: Input
|
|
1071
|
+
}], captionFacet: [{
|
|
1072
|
+
type: Input
|
|
1073
|
+
}], startSlideShow: [{
|
|
1074
|
+
type: Output
|
|
1075
|
+
}], stopSlideShow: [{
|
|
1076
|
+
type: Output
|
|
1077
|
+
}], onActiveIndexChange: [{
|
|
1078
|
+
type: Output
|
|
1079
|
+
}], activeIndex: [{
|
|
1080
|
+
type: Input
|
|
1081
|
+
}] } });
|
|
1082
|
+
export class GalleriaThumbnails {
|
|
1083
|
+
galleria;
|
|
1084
|
+
document;
|
|
1085
|
+
platformId;
|
|
1086
|
+
renderer;
|
|
1087
|
+
cd;
|
|
1088
|
+
containerId;
|
|
1089
|
+
value;
|
|
1090
|
+
isVertical = false;
|
|
1091
|
+
slideShowActive = false;
|
|
1092
|
+
circular = false;
|
|
1093
|
+
responsiveOptions;
|
|
1094
|
+
contentHeight = '300px';
|
|
1095
|
+
showThumbnailNavigators = true;
|
|
1096
|
+
templates;
|
|
1097
|
+
onActiveIndexChange = new EventEmitter();
|
|
1098
|
+
stopSlideShow = new EventEmitter();
|
|
1099
|
+
itemsContainer;
|
|
1100
|
+
get numVisible() {
|
|
1101
|
+
return this._numVisible;
|
|
1102
|
+
}
|
|
1103
|
+
set numVisible(numVisible) {
|
|
1104
|
+
this._numVisible = numVisible;
|
|
1105
|
+
this._oldNumVisible = this.d_numVisible;
|
|
1106
|
+
this.d_numVisible = numVisible;
|
|
1107
|
+
}
|
|
1108
|
+
get activeIndex() {
|
|
1109
|
+
return this._activeIndex;
|
|
1110
|
+
}
|
|
1111
|
+
set activeIndex(activeIndex) {
|
|
1112
|
+
this._oldactiveIndex = this._activeIndex;
|
|
1113
|
+
this._activeIndex = activeIndex;
|
|
1114
|
+
}
|
|
1115
|
+
index;
|
|
1116
|
+
startPos = null;
|
|
1117
|
+
thumbnailsStyle = null;
|
|
1118
|
+
sortedResponsiveOptions = null;
|
|
1119
|
+
totalShiftedItems = 0;
|
|
1120
|
+
page = 0;
|
|
1121
|
+
documentResizeListener;
|
|
1122
|
+
_numVisible = 0;
|
|
1123
|
+
d_numVisible = 0;
|
|
1124
|
+
_oldNumVisible = 0;
|
|
1125
|
+
_activeIndex = 0;
|
|
1126
|
+
_oldactiveIndex = 0;
|
|
1127
|
+
constructor(galleria, document, platformId, renderer, cd) {
|
|
1128
|
+
this.galleria = galleria;
|
|
1129
|
+
this.document = document;
|
|
1130
|
+
this.platformId = platformId;
|
|
1131
|
+
this.renderer = renderer;
|
|
1132
|
+
this.cd = cd;
|
|
1133
|
+
}
|
|
1134
|
+
ngOnInit() {
|
|
1135
|
+
if (isPlatformBrowser(this.platformId)) {
|
|
1136
|
+
this.createStyle();
|
|
1137
|
+
if (this.responsiveOptions) {
|
|
1138
|
+
this.bindDocumentListeners();
|
|
1139
|
+
}
|
|
1140
|
+
}
|
|
1141
|
+
}
|
|
1142
|
+
ngAfterContentChecked() {
|
|
1143
|
+
let totalShiftedItems = this.totalShiftedItems;
|
|
1144
|
+
if ((this._oldNumVisible !== this.d_numVisible || this._oldactiveIndex !== this._activeIndex) && this.itemsContainer) {
|
|
1145
|
+
if (this._activeIndex <= this.getMedianItemIndex()) {
|
|
1146
|
+
totalShiftedItems = 0;
|
|
1147
|
+
}
|
|
1148
|
+
else if (this.value.length - this.d_numVisible + this.getMedianItemIndex() < this._activeIndex) {
|
|
1149
|
+
totalShiftedItems = this.d_numVisible - this.value.length;
|
|
1150
|
+
}
|
|
1151
|
+
else if (this.value.length - this.d_numVisible < this._activeIndex && this.d_numVisible % 2 === 0) {
|
|
1152
|
+
totalShiftedItems = this._activeIndex * -1 + this.getMedianItemIndex() + 1;
|
|
1153
|
+
}
|
|
1154
|
+
else {
|
|
1155
|
+
totalShiftedItems = this._activeIndex * -1 + this.getMedianItemIndex();
|
|
1156
|
+
}
|
|
1157
|
+
if (totalShiftedItems !== this.totalShiftedItems) {
|
|
1158
|
+
this.totalShiftedItems = totalShiftedItems;
|
|
1159
|
+
}
|
|
1160
|
+
if (this.itemsContainer && this.itemsContainer.nativeElement) {
|
|
1161
|
+
this.itemsContainer.nativeElement.style.transform = this.isVertical ? `translate3d(0, ${totalShiftedItems * (100 / this.d_numVisible)}%, 0)` : `translate3d(${totalShiftedItems * (100 / this.d_numVisible)}%, 0, 0)`;
|
|
1162
|
+
}
|
|
1163
|
+
if (this._oldactiveIndex !== this._activeIndex) {
|
|
1164
|
+
DomHandler.removeClass(this.itemsContainer.nativeElement, 'p-items-hidden');
|
|
1165
|
+
this.itemsContainer.nativeElement.style.transition = 'transform 500ms ease 0s';
|
|
1166
|
+
}
|
|
1167
|
+
this._oldactiveIndex = this._activeIndex;
|
|
1168
|
+
this._oldNumVisible = this.d_numVisible;
|
|
1169
|
+
}
|
|
1170
|
+
}
|
|
1171
|
+
ngAfterViewInit() {
|
|
1172
|
+
if (isPlatformBrowser(this.platformId)) {
|
|
1173
|
+
this.calculatePosition();
|
|
1174
|
+
}
|
|
1175
|
+
}
|
|
1176
|
+
createStyle() {
|
|
1177
|
+
if (!this.thumbnailsStyle) {
|
|
1178
|
+
this.thumbnailsStyle = this.document.createElement('style');
|
|
1179
|
+
this.document.body.appendChild(this.thumbnailsStyle);
|
|
1180
|
+
}
|
|
1181
|
+
let innerHTML = `
|
|
1182
|
+
#${this.containerId} .p-galleria-thumbnail-item {
|
|
1183
|
+
flex: 1 0 ${100 / this.d_numVisible}%
|
|
1184
|
+
}
|
|
1185
|
+
`;
|
|
1186
|
+
if (this.responsiveOptions) {
|
|
1187
|
+
this.sortedResponsiveOptions = [...this.responsiveOptions];
|
|
1188
|
+
this.sortedResponsiveOptions.sort((data1, data2) => {
|
|
1189
|
+
const value1 = data1.breakpoint;
|
|
1190
|
+
const value2 = data2.breakpoint;
|
|
1191
|
+
let result = null;
|
|
1192
|
+
if (value1 == null && value2 != null)
|
|
1193
|
+
result = -1;
|
|
1194
|
+
else if (value1 != null && value2 == null)
|
|
1195
|
+
result = 1;
|
|
1196
|
+
else if (value1 == null && value2 == null)
|
|
1197
|
+
result = 0;
|
|
1198
|
+
else if (typeof value1 === 'string' && typeof value2 === 'string')
|
|
1199
|
+
result = value1.localeCompare(value2, undefined, { numeric: true });
|
|
1200
|
+
else
|
|
1201
|
+
result = value1 < value2 ? -1 : value1 > value2 ? 1 : 0;
|
|
1202
|
+
return -1 * result;
|
|
1203
|
+
});
|
|
1204
|
+
for (let i = 0; i < this.sortedResponsiveOptions.length; i++) {
|
|
1205
|
+
let res = this.sortedResponsiveOptions[i];
|
|
1206
|
+
innerHTML += `
|
|
1207
|
+
@media screen and (max-width: ${res.breakpoint}) {
|
|
1208
|
+
#${this.containerId} .p-galleria-thumbnail-item {
|
|
1209
|
+
flex: 1 0 ${100 / res.numVisible}%
|
|
1210
|
+
}
|
|
1211
|
+
}
|
|
1212
|
+
`;
|
|
1213
|
+
}
|
|
1214
|
+
}
|
|
1215
|
+
this.thumbnailsStyle.innerHTML = innerHTML;
|
|
1216
|
+
DomHandler.setAttribute(this.thumbnailsStyle, 'nonce', this.galleria.config?.csp()?.nonce);
|
|
1217
|
+
}
|
|
1218
|
+
calculatePosition() {
|
|
1219
|
+
if (isPlatformBrowser(this.platformId)) {
|
|
1220
|
+
if (this.itemsContainer && this.sortedResponsiveOptions) {
|
|
1221
|
+
let windowWidth = window.innerWidth;
|
|
1222
|
+
let matchedResponsiveData = {
|
|
1223
|
+
numVisible: this._numVisible
|
|
1224
|
+
};
|
|
1225
|
+
for (let i = 0; i < this.sortedResponsiveOptions.length; i++) {
|
|
1226
|
+
let res = this.sortedResponsiveOptions[i];
|
|
1227
|
+
if (parseInt(res.breakpoint, 10) >= windowWidth) {
|
|
1228
|
+
matchedResponsiveData = res;
|
|
1229
|
+
}
|
|
1230
|
+
}
|
|
1231
|
+
if (this.d_numVisible !== matchedResponsiveData.numVisible) {
|
|
1232
|
+
this.d_numVisible = matchedResponsiveData.numVisible;
|
|
1233
|
+
this.cd.markForCheck();
|
|
1234
|
+
}
|
|
1235
|
+
}
|
|
1236
|
+
}
|
|
1237
|
+
}
|
|
1238
|
+
getTabIndex(index) {
|
|
1239
|
+
return this.isItemActive(index) ? 0 : null;
|
|
1240
|
+
}
|
|
1241
|
+
navForward(e) {
|
|
1242
|
+
this.stopTheSlideShow();
|
|
1243
|
+
let nextItemIndex = this._activeIndex + 1;
|
|
1244
|
+
if (nextItemIndex + this.totalShiftedItems > this.getMedianItemIndex() && (-1 * this.totalShiftedItems < this.getTotalPageNumber() - 1 || this.circular)) {
|
|
1245
|
+
this.step(-1);
|
|
1246
|
+
}
|
|
1247
|
+
let activeIndex = this.circular && this.value.length - 1 === this._activeIndex ? 0 : nextItemIndex;
|
|
1248
|
+
this.onActiveIndexChange.emit(activeIndex);
|
|
1249
|
+
if (e.cancelable) {
|
|
1250
|
+
e.preventDefault();
|
|
1251
|
+
}
|
|
1252
|
+
}
|
|
1253
|
+
navBackward(e) {
|
|
1254
|
+
this.stopTheSlideShow();
|
|
1255
|
+
let prevItemIndex = this._activeIndex !== 0 ? this._activeIndex - 1 : 0;
|
|
1256
|
+
let diff = prevItemIndex + this.totalShiftedItems;
|
|
1257
|
+
if (this.d_numVisible - diff - 1 > this.getMedianItemIndex() && (-1 * this.totalShiftedItems !== 0 || this.circular)) {
|
|
1258
|
+
this.step(1);
|
|
1259
|
+
}
|
|
1260
|
+
let activeIndex = this.circular && this._activeIndex === 0 ? this.value.length - 1 : prevItemIndex;
|
|
1261
|
+
this.onActiveIndexChange.emit(activeIndex);
|
|
1262
|
+
if (e.cancelable) {
|
|
1263
|
+
e.preventDefault();
|
|
1264
|
+
}
|
|
1265
|
+
}
|
|
1266
|
+
onItemClick(index) {
|
|
1267
|
+
this.stopTheSlideShow();
|
|
1268
|
+
let selectedItemIndex = index;
|
|
1269
|
+
if (selectedItemIndex !== this._activeIndex) {
|
|
1270
|
+
const diff = selectedItemIndex + this.totalShiftedItems;
|
|
1271
|
+
let dir = 0;
|
|
1272
|
+
if (selectedItemIndex < this._activeIndex) {
|
|
1273
|
+
dir = this.d_numVisible - diff - 1 - this.getMedianItemIndex();
|
|
1274
|
+
if (dir > 0 && -1 * this.totalShiftedItems !== 0) {
|
|
1275
|
+
this.step(dir);
|
|
1276
|
+
}
|
|
1277
|
+
}
|
|
1278
|
+
else {
|
|
1279
|
+
dir = this.getMedianItemIndex() - diff;
|
|
1280
|
+
if (dir < 0 && -1 * this.totalShiftedItems < this.getTotalPageNumber() - 1) {
|
|
1281
|
+
this.step(dir);
|
|
1282
|
+
}
|
|
1283
|
+
}
|
|
1284
|
+
this.activeIndex = selectedItemIndex;
|
|
1285
|
+
this.onActiveIndexChange.emit(this.activeIndex);
|
|
1286
|
+
}
|
|
1287
|
+
}
|
|
1288
|
+
onThumbnailKeydown(event, index) {
|
|
1289
|
+
if (event.code === 'Enter' || event.code === 'Space') {
|
|
1290
|
+
this.onItemClick(index);
|
|
1291
|
+
event.preventDefault();
|
|
1292
|
+
}
|
|
1293
|
+
switch (event.code) {
|
|
1294
|
+
case 'ArrowRight':
|
|
1295
|
+
this.onRightKey();
|
|
1296
|
+
break;
|
|
1297
|
+
case 'ArrowLeft':
|
|
1298
|
+
this.onLeftKey();
|
|
1299
|
+
break;
|
|
1300
|
+
case 'Home':
|
|
1301
|
+
this.onHomeKey();
|
|
1302
|
+
event.preventDefault();
|
|
1303
|
+
break;
|
|
1304
|
+
case 'End':
|
|
1305
|
+
this.onEndKey();
|
|
1306
|
+
event.preventDefault();
|
|
1307
|
+
break;
|
|
1308
|
+
case 'ArrowUp':
|
|
1309
|
+
case 'ArrowDown':
|
|
1310
|
+
event.preventDefault();
|
|
1311
|
+
break;
|
|
1312
|
+
case 'Tab':
|
|
1313
|
+
this.onTabKey();
|
|
1314
|
+
break;
|
|
1315
|
+
default:
|
|
1316
|
+
break;
|
|
1317
|
+
}
|
|
1318
|
+
}
|
|
1319
|
+
onRightKey() {
|
|
1320
|
+
const indicators = DomHandler.find(this.itemsContainer.nativeElement, '[data-pc-section="thumbnailitem"]');
|
|
1321
|
+
const activeIndex = this.findFocusedIndicatorIndex();
|
|
1322
|
+
this.changedFocusedIndicator(activeIndex, activeIndex + 1 === indicators.length ? indicators.length - 1 : activeIndex + 1);
|
|
1323
|
+
}
|
|
1324
|
+
onLeftKey() {
|
|
1325
|
+
const activeIndex = this.findFocusedIndicatorIndex();
|
|
1326
|
+
this.changedFocusedIndicator(activeIndex, activeIndex - 1 <= 0 ? 0 : activeIndex - 1);
|
|
1327
|
+
}
|
|
1328
|
+
onHomeKey() {
|
|
1329
|
+
const activeIndex = this.findFocusedIndicatorIndex();
|
|
1330
|
+
this.changedFocusedIndicator(activeIndex, 0);
|
|
1331
|
+
}
|
|
1332
|
+
onEndKey() {
|
|
1333
|
+
const indicators = DomHandler.find(this.itemsContainer.nativeElement, '[data-pc-section="thumbnailitem"]');
|
|
1334
|
+
const activeIndex = this.findFocusedIndicatorIndex();
|
|
1335
|
+
this.changedFocusedIndicator(activeIndex, indicators.length - 1);
|
|
1336
|
+
}
|
|
1337
|
+
onTabKey() {
|
|
1338
|
+
const indicators = [...DomHandler.find(this.itemsContainer.nativeElement, '[data-pc-section="thumbnailitem"]')];
|
|
1339
|
+
const highlightedIndex = indicators.findIndex((ind) => DomHandler.getAttribute(ind, 'data-p-active') === true);
|
|
1340
|
+
const activeIndicator = DomHandler.findSingle(this.itemsContainer.nativeElement, '[tabindex="0"]');
|
|
1341
|
+
const activeIndex = indicators.findIndex((ind) => ind === activeIndicator.parentElement);
|
|
1342
|
+
indicators[activeIndex].children[0].tabIndex = '-1';
|
|
1343
|
+
indicators[highlightedIndex].children[0].tabIndex = '0';
|
|
1344
|
+
}
|
|
1345
|
+
findFocusedIndicatorIndex() {
|
|
1346
|
+
const indicators = [...DomHandler.find(this.itemsContainer.nativeElement, '[data-pc-section="thumbnailitem"]')];
|
|
1347
|
+
const activeIndicator = DomHandler.findSingle(this.itemsContainer.nativeElement, '[data-pc-section="thumbnailitem"] > [tabindex="0"]');
|
|
1348
|
+
return indicators.findIndex((ind) => ind === activeIndicator.parentElement);
|
|
1349
|
+
}
|
|
1350
|
+
changedFocusedIndicator(prevInd, nextInd) {
|
|
1351
|
+
const indicators = DomHandler.find(this.itemsContainer.nativeElement, '[data-pc-section="thumbnailitem"]');
|
|
1352
|
+
indicators[prevInd].children[0].tabIndex = '-1';
|
|
1353
|
+
indicators[nextInd].children[0].tabIndex = '0';
|
|
1354
|
+
indicators[nextInd].children[0].focus();
|
|
1355
|
+
}
|
|
1356
|
+
step(dir) {
|
|
1357
|
+
let totalShiftedItems = this.totalShiftedItems + dir;
|
|
1358
|
+
if (dir < 0 && -1 * totalShiftedItems + this.d_numVisible > this.value.length - 1) {
|
|
1359
|
+
totalShiftedItems = this.d_numVisible - this.value.length;
|
|
1360
|
+
}
|
|
1361
|
+
else if (dir > 0 && totalShiftedItems > 0) {
|
|
1362
|
+
totalShiftedItems = 0;
|
|
1363
|
+
}
|
|
1364
|
+
if (this.circular) {
|
|
1365
|
+
if (dir < 0 && this.value.length - 1 === this._activeIndex) {
|
|
1366
|
+
totalShiftedItems = 0;
|
|
1367
|
+
}
|
|
1368
|
+
else if (dir > 0 && this._activeIndex === 0) {
|
|
1369
|
+
totalShiftedItems = this.d_numVisible - this.value.length;
|
|
1370
|
+
}
|
|
1371
|
+
}
|
|
1372
|
+
if (this.itemsContainer) {
|
|
1373
|
+
DomHandler.removeClass(this.itemsContainer.nativeElement, 'p-items-hidden');
|
|
1374
|
+
this.itemsContainer.nativeElement.style.transform = this.isVertical ? `translate3d(0, ${totalShiftedItems * (100 / this.d_numVisible)}%, 0)` : `translate3d(${totalShiftedItems * (100 / this.d_numVisible)}%, 0, 0)`;
|
|
1375
|
+
this.itemsContainer.nativeElement.style.transition = 'transform 500ms ease 0s';
|
|
1376
|
+
}
|
|
1377
|
+
this.totalShiftedItems = totalShiftedItems;
|
|
1378
|
+
}
|
|
1379
|
+
stopTheSlideShow() {
|
|
1380
|
+
if (this.slideShowActive && this.stopSlideShow) {
|
|
1381
|
+
this.stopSlideShow.emit();
|
|
1382
|
+
}
|
|
1383
|
+
}
|
|
1384
|
+
changePageOnTouch(e, diff) {
|
|
1385
|
+
if (diff < 0) {
|
|
1386
|
+
// left
|
|
1387
|
+
this.navForward(e);
|
|
1388
|
+
}
|
|
1389
|
+
else {
|
|
1390
|
+
// right
|
|
1391
|
+
this.navBackward(e);
|
|
1392
|
+
}
|
|
1393
|
+
}
|
|
1394
|
+
getTotalPageNumber() {
|
|
1395
|
+
return this.value.length > this.d_numVisible ? this.value.length - this.d_numVisible + 1 : 0;
|
|
1396
|
+
}
|
|
1397
|
+
getMedianItemIndex() {
|
|
1398
|
+
let index = Math.floor(this.d_numVisible / 2);
|
|
1399
|
+
return this.d_numVisible % 2 ? index : index - 1;
|
|
1400
|
+
}
|
|
1401
|
+
onTransitionEnd() {
|
|
1402
|
+
if (this.itemsContainer && this.itemsContainer.nativeElement) {
|
|
1403
|
+
DomHandler.addClass(this.itemsContainer.nativeElement, 'p-items-hidden');
|
|
1404
|
+
this.itemsContainer.nativeElement.style.transition = '';
|
|
1405
|
+
}
|
|
1406
|
+
}
|
|
1407
|
+
onTouchEnd(e) {
|
|
1408
|
+
let touchobj = e.changedTouches[0];
|
|
1409
|
+
if (this.isVertical) {
|
|
1410
|
+
this.changePageOnTouch(e, touchobj.pageY - this.startPos.y);
|
|
1411
|
+
}
|
|
1412
|
+
else {
|
|
1413
|
+
this.changePageOnTouch(e, touchobj.pageX - this.startPos.x);
|
|
1414
|
+
}
|
|
1415
|
+
}
|
|
1416
|
+
onTouchMove(e) {
|
|
1417
|
+
if (e.cancelable) {
|
|
1418
|
+
e.preventDefault();
|
|
1419
|
+
}
|
|
1420
|
+
}
|
|
1421
|
+
onTouchStart(e) {
|
|
1422
|
+
let touchobj = e.changedTouches[0];
|
|
1423
|
+
this.startPos = {
|
|
1424
|
+
x: touchobj.pageX,
|
|
1425
|
+
y: touchobj.pageY
|
|
1426
|
+
};
|
|
1427
|
+
}
|
|
1428
|
+
isNavBackwardDisabled() {
|
|
1429
|
+
return (!this.circular && this._activeIndex === 0) || this.value.length <= this.d_numVisible;
|
|
1430
|
+
}
|
|
1431
|
+
isNavForwardDisabled() {
|
|
1432
|
+
return (!this.circular && this._activeIndex === this.value.length - 1) || this.value.length <= this.d_numVisible;
|
|
1433
|
+
}
|
|
1434
|
+
firstItemAciveIndex() {
|
|
1435
|
+
return this.totalShiftedItems * -1;
|
|
1436
|
+
}
|
|
1437
|
+
lastItemActiveIndex() {
|
|
1438
|
+
return this.firstItemAciveIndex() + this.d_numVisible - 1;
|
|
1439
|
+
}
|
|
1440
|
+
isItemActive(index) {
|
|
1441
|
+
return this.firstItemAciveIndex() <= index && this.lastItemActiveIndex() >= index;
|
|
1442
|
+
}
|
|
1443
|
+
bindDocumentListeners() {
|
|
1444
|
+
if (isPlatformBrowser(this.platformId)) {
|
|
1445
|
+
const window = this.document.defaultView || 'window';
|
|
1446
|
+
this.documentResizeListener = this.renderer.listen(window, 'resize', () => {
|
|
1447
|
+
this.calculatePosition();
|
|
1448
|
+
});
|
|
1449
|
+
}
|
|
1450
|
+
}
|
|
1451
|
+
unbindDocumentListeners() {
|
|
1452
|
+
if (this.documentResizeListener) {
|
|
1453
|
+
this.documentResizeListener();
|
|
1454
|
+
this.documentResizeListener = null;
|
|
1455
|
+
}
|
|
1456
|
+
}
|
|
1457
|
+
ngOnDestroy() {
|
|
1458
|
+
if (this.responsiveOptions) {
|
|
1459
|
+
this.unbindDocumentListeners();
|
|
1460
|
+
}
|
|
1461
|
+
if (this.thumbnailsStyle) {
|
|
1462
|
+
this.thumbnailsStyle.parentNode?.removeChild(this.thumbnailsStyle);
|
|
1463
|
+
}
|
|
1464
|
+
}
|
|
1465
|
+
ariaPrevButtonLabel() {
|
|
1466
|
+
return this.galleria.config.translation.aria ? this.galleria.config.translation.aria.prevPageLabel : undefined;
|
|
1467
|
+
}
|
|
1468
|
+
ariaNextButtonLabel() {
|
|
1469
|
+
return this.galleria.config.translation.aria ? this.galleria.config.translation.aria.nextPageLabel : undefined;
|
|
1470
|
+
}
|
|
1471
|
+
ariaPageLabel(value) {
|
|
1472
|
+
return this.galleria.config.translation.aria ? this.galleria.config.translation.aria.pageLabel.replace(/{page}/g, value) : undefined;
|
|
1473
|
+
}
|
|
1474
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: GalleriaThumbnails, deps: [{ token: Galleria }, { token: DOCUMENT }, { token: PLATFORM_ID }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
1475
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "18.2.9", type: GalleriaThumbnails, selector: "p-galleriaThumbnails", inputs: { containerId: "containerId", value: "value", isVertical: ["isVertical", "isVertical", booleanAttribute], slideShowActive: ["slideShowActive", "slideShowActive", booleanAttribute], circular: ["circular", "circular", booleanAttribute], responsiveOptions: "responsiveOptions", contentHeight: "contentHeight", showThumbnailNavigators: "showThumbnailNavigators", templates: "templates", numVisible: "numVisible", activeIndex: "activeIndex" }, outputs: { onActiveIndexChange: "onActiveIndexChange", stopSlideShow: "stopSlideShow" }, viewQueries: [{ propertyName: "itemsContainer", first: true, predicate: ["itemsContainer"], descendants: true }], ngImport: i0, template: `
|
|
1476
|
+
<div class="p-galleria-thumbnail-wrapper">
|
|
1477
|
+
<div class="p-galleria-thumbnail-container">
|
|
1478
|
+
<button
|
|
1479
|
+
*ngIf="showThumbnailNavigators"
|
|
1480
|
+
type="button"
|
|
1481
|
+
[ngClass]="{ 'p-galleria-thumbnail-prev p-link': true, 'p-disabled': this.isNavBackwardDisabled() }"
|
|
1482
|
+
(click)="navBackward($event)"
|
|
1483
|
+
[disabled]="isNavBackwardDisabled()"
|
|
1484
|
+
pRipple
|
|
1485
|
+
[attr.aria-label]="ariaPrevButtonLabel()"
|
|
1486
|
+
>
|
|
1487
|
+
<ng-container *ngIf="!galleria.previousThumbnailIconTemplate">
|
|
1488
|
+
<ChevronLeftIcon *ngIf="!isVertical" [styleClass]="'p-galleria-thumbnail-prev-icon'" />
|
|
1489
|
+
<ChevronUpIcon *ngIf="isVertical" [styleClass]="'p-galleria-thumbnail-prev-icon'" />
|
|
1490
|
+
</ng-container>
|
|
1491
|
+
<ng-template *ngTemplateOutlet="galleria.previousThumbnailIconTemplate"></ng-template>
|
|
1492
|
+
</button>
|
|
1493
|
+
<div class="p-galleria-thumbnail-items-container" [ngStyle]="{ height: isVertical ? contentHeight : '' }">
|
|
1494
|
+
<div #itemsContainer class="p-galleria-thumbnail-items" (transitionend)="onTransitionEnd()" (touchstart)="onTouchStart($event)" (touchmove)="onTouchMove($event)" role="tablist">
|
|
1495
|
+
<div
|
|
1496
|
+
*ngFor="let item of value; let index = index"
|
|
1497
|
+
[ngClass]="{
|
|
1498
|
+
'p-galleria-thumbnail-item': true,
|
|
1499
|
+
'p-galleria-thumbnail-item-current': activeIndex === index,
|
|
1500
|
+
'p-galleria-thumbnail-item-active': isItemActive(index),
|
|
1501
|
+
'p-galleria-thumbnail-item-start': firstItemAciveIndex() === index,
|
|
1502
|
+
'p-galleria-thumbnail-item-end': lastItemActiveIndex() === index
|
|
1503
|
+
}"
|
|
1504
|
+
[attr.aria-selected]="activeIndex === index"
|
|
1505
|
+
[attr.aria-controls]="containerId + '_item_' + index"
|
|
1506
|
+
[attr.data-pc-section]="'thumbnailitem'"
|
|
1507
|
+
[attr.data-p-active]="activeIndex === index"
|
|
1508
|
+
(keydown)="onThumbnailKeydown($event, index)"
|
|
1509
|
+
>
|
|
1510
|
+
<div
|
|
1511
|
+
class="p-galleria-thumbnail-item-content"
|
|
1512
|
+
[attr.tabindex]="activeIndex === index ? 0 : -1"
|
|
1513
|
+
[attr.aria-current]="activeIndex === index ? 'page' : undefined"
|
|
1514
|
+
[attr.aria-label]="ariaPageLabel(index + 1)"
|
|
1515
|
+
(click)="onItemClick(index)"
|
|
1516
|
+
(touchend)="onItemClick(index)"
|
|
1517
|
+
(keydown.enter)="onItemClick(index)"
|
|
1518
|
+
>
|
|
1519
|
+
<p-galleriaItemSlot type="thumbnail" [item]="item" [templates]="templates"></p-galleriaItemSlot>
|
|
1520
|
+
</div>
|
|
1521
|
+
</div>
|
|
1522
|
+
</div>
|
|
1523
|
+
</div>
|
|
1524
|
+
<button
|
|
1525
|
+
*ngIf="showThumbnailNavigators"
|
|
1526
|
+
type="button"
|
|
1527
|
+
[ngClass]="{ 'p-galleria-thumbnail-next p-link': true, 'p-disabled': this.isNavForwardDisabled() }"
|
|
1528
|
+
(click)="navForward($event)"
|
|
1529
|
+
[disabled]="isNavForwardDisabled()"
|
|
1530
|
+
pRipple
|
|
1531
|
+
[attr.aria-label]="ariaNextButtonLabel()"
|
|
1532
|
+
>
|
|
1533
|
+
<ng-container *ngIf="!galleria.nextThumbnailIconTemplate">
|
|
1534
|
+
<ChevronRightIcon *ngIf="!isVertical" [ngClass]="'p-galleria-thumbnail-next-icon'" />
|
|
1535
|
+
<ChevronDownIcon *ngIf="isVertical" [ngClass]="'p-galleria-thumbnail-next-icon'" />
|
|
1536
|
+
</ng-container>
|
|
1537
|
+
<ng-template *ngTemplateOutlet="galleria.nextThumbnailIconTemplate"></ng-template>
|
|
1538
|
+
</button>
|
|
1539
|
+
</div>
|
|
1540
|
+
</div>
|
|
1541
|
+
`, isInline: true, dependencies: [{ kind: "directive", type: i0.forwardRef(() => i2.NgClass), selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i0.forwardRef(() => i2.NgForOf), selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i0.forwardRef(() => i2.NgIf), selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i0.forwardRef(() => i2.NgTemplateOutlet), selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i0.forwardRef(() => i2.NgStyle), selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i0.forwardRef(() => ChevronRightIcon), selector: "ChevronRightIcon" }, { kind: "component", type: i0.forwardRef(() => ChevronLeftIcon), selector: "ChevronLeftIcon" }, { kind: "component", type: i0.forwardRef(() => GalleriaItemSlot), selector: "p-galleriaItemSlot", inputs: ["templates", "index", "item", "type"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
1542
|
+
}
|
|
1543
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: GalleriaThumbnails, decorators: [{
|
|
1544
|
+
type: Component,
|
|
1545
|
+
args: [{
|
|
1546
|
+
selector: 'p-galleriaThumbnails',
|
|
1547
|
+
template: `
|
|
1548
|
+
<div class="p-galleria-thumbnail-wrapper">
|
|
1549
|
+
<div class="p-galleria-thumbnail-container">
|
|
1550
|
+
<button
|
|
1551
|
+
*ngIf="showThumbnailNavigators"
|
|
1552
|
+
type="button"
|
|
1553
|
+
[ngClass]="{ 'p-galleria-thumbnail-prev p-link': true, 'p-disabled': this.isNavBackwardDisabled() }"
|
|
1554
|
+
(click)="navBackward($event)"
|
|
1555
|
+
[disabled]="isNavBackwardDisabled()"
|
|
1556
|
+
pRipple
|
|
1557
|
+
[attr.aria-label]="ariaPrevButtonLabel()"
|
|
1558
|
+
>
|
|
1559
|
+
<ng-container *ngIf="!galleria.previousThumbnailIconTemplate">
|
|
1560
|
+
<ChevronLeftIcon *ngIf="!isVertical" [styleClass]="'p-galleria-thumbnail-prev-icon'" />
|
|
1561
|
+
<ChevronUpIcon *ngIf="isVertical" [styleClass]="'p-galleria-thumbnail-prev-icon'" />
|
|
1562
|
+
</ng-container>
|
|
1563
|
+
<ng-template *ngTemplateOutlet="galleria.previousThumbnailIconTemplate"></ng-template>
|
|
1564
|
+
</button>
|
|
1565
|
+
<div class="p-galleria-thumbnail-items-container" [ngStyle]="{ height: isVertical ? contentHeight : '' }">
|
|
1566
|
+
<div #itemsContainer class="p-galleria-thumbnail-items" (transitionend)="onTransitionEnd()" (touchstart)="onTouchStart($event)" (touchmove)="onTouchMove($event)" role="tablist">
|
|
1567
|
+
<div
|
|
1568
|
+
*ngFor="let item of value; let index = index"
|
|
1569
|
+
[ngClass]="{
|
|
1570
|
+
'p-galleria-thumbnail-item': true,
|
|
1571
|
+
'p-galleria-thumbnail-item-current': activeIndex === index,
|
|
1572
|
+
'p-galleria-thumbnail-item-active': isItemActive(index),
|
|
1573
|
+
'p-galleria-thumbnail-item-start': firstItemAciveIndex() === index,
|
|
1574
|
+
'p-galleria-thumbnail-item-end': lastItemActiveIndex() === index
|
|
1575
|
+
}"
|
|
1576
|
+
[attr.aria-selected]="activeIndex === index"
|
|
1577
|
+
[attr.aria-controls]="containerId + '_item_' + index"
|
|
1578
|
+
[attr.data-pc-section]="'thumbnailitem'"
|
|
1579
|
+
[attr.data-p-active]="activeIndex === index"
|
|
1580
|
+
(keydown)="onThumbnailKeydown($event, index)"
|
|
1581
|
+
>
|
|
1582
|
+
<div
|
|
1583
|
+
class="p-galleria-thumbnail-item-content"
|
|
1584
|
+
[attr.tabindex]="activeIndex === index ? 0 : -1"
|
|
1585
|
+
[attr.aria-current]="activeIndex === index ? 'page' : undefined"
|
|
1586
|
+
[attr.aria-label]="ariaPageLabel(index + 1)"
|
|
1587
|
+
(click)="onItemClick(index)"
|
|
1588
|
+
(touchend)="onItemClick(index)"
|
|
1589
|
+
(keydown.enter)="onItemClick(index)"
|
|
1590
|
+
>
|
|
1591
|
+
<p-galleriaItemSlot type="thumbnail" [item]="item" [templates]="templates"></p-galleriaItemSlot>
|
|
1592
|
+
</div>
|
|
1593
|
+
</div>
|
|
1594
|
+
</div>
|
|
1595
|
+
</div>
|
|
1596
|
+
<button
|
|
1597
|
+
*ngIf="showThumbnailNavigators"
|
|
1598
|
+
type="button"
|
|
1599
|
+
[ngClass]="{ 'p-galleria-thumbnail-next p-link': true, 'p-disabled': this.isNavForwardDisabled() }"
|
|
1600
|
+
(click)="navForward($event)"
|
|
1601
|
+
[disabled]="isNavForwardDisabled()"
|
|
1602
|
+
pRipple
|
|
1603
|
+
[attr.aria-label]="ariaNextButtonLabel()"
|
|
1604
|
+
>
|
|
1605
|
+
<ng-container *ngIf="!galleria.nextThumbnailIconTemplate">
|
|
1606
|
+
<ChevronRightIcon *ngIf="!isVertical" [ngClass]="'p-galleria-thumbnail-next-icon'" />
|
|
1607
|
+
<ChevronDownIcon *ngIf="isVertical" [ngClass]="'p-galleria-thumbnail-next-icon'" />
|
|
1608
|
+
</ng-container>
|
|
1609
|
+
<ng-template *ngTemplateOutlet="galleria.nextThumbnailIconTemplate"></ng-template>
|
|
1610
|
+
</button>
|
|
1611
|
+
</div>
|
|
1612
|
+
</div>
|
|
1613
|
+
`,
|
|
1614
|
+
changeDetection: ChangeDetectionStrategy.OnPush
|
|
1615
|
+
}]
|
|
1616
|
+
}], ctorParameters: () => [{ type: Galleria }, { type: Document, decorators: [{
|
|
1617
|
+
type: Inject,
|
|
1618
|
+
args: [DOCUMENT]
|
|
1619
|
+
}] }, { type: undefined, decorators: [{
|
|
1620
|
+
type: Inject,
|
|
1621
|
+
args: [PLATFORM_ID]
|
|
1622
|
+
}] }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }], propDecorators: { containerId: [{
|
|
1623
|
+
type: Input
|
|
1624
|
+
}], value: [{
|
|
1625
|
+
type: Input
|
|
1626
|
+
}], isVertical: [{
|
|
1627
|
+
type: Input,
|
|
1628
|
+
args: [{ transform: booleanAttribute }]
|
|
1629
|
+
}], slideShowActive: [{
|
|
1630
|
+
type: Input,
|
|
1631
|
+
args: [{ transform: booleanAttribute }]
|
|
1632
|
+
}], circular: [{
|
|
1633
|
+
type: Input,
|
|
1634
|
+
args: [{ transform: booleanAttribute }]
|
|
1635
|
+
}], responsiveOptions: [{
|
|
1636
|
+
type: Input
|
|
1637
|
+
}], contentHeight: [{
|
|
1638
|
+
type: Input
|
|
1639
|
+
}], showThumbnailNavigators: [{
|
|
1640
|
+
type: Input
|
|
1641
|
+
}], templates: [{
|
|
1642
|
+
type: Input
|
|
1643
|
+
}], onActiveIndexChange: [{
|
|
1644
|
+
type: Output
|
|
1645
|
+
}], stopSlideShow: [{
|
|
1646
|
+
type: Output
|
|
1647
|
+
}], itemsContainer: [{
|
|
1648
|
+
type: ViewChild,
|
|
1649
|
+
args: ['itemsContainer']
|
|
1650
|
+
}], numVisible: [{
|
|
1651
|
+
type: Input
|
|
1652
|
+
}], activeIndex: [{
|
|
1653
|
+
type: Input
|
|
1654
|
+
}] } });
|
|
1655
|
+
export class GalleriaModule {
|
|
1656
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: GalleriaModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
1657
|
+
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.9", ngImport: i0, type: GalleriaModule, declarations: [Galleria, GalleriaContent, GalleriaItemSlot, GalleriaItem, GalleriaThumbnails], imports: [CommonModule, SharedModule, RippleModule, TimesIcon, ChevronRightIcon, ChevronLeftIcon, WindowMaximizeIcon, WindowMinimizeIcon, FocusTrapModule], exports: [CommonModule, Galleria, GalleriaContent, GalleriaItemSlot, GalleriaItem, GalleriaThumbnails, SharedModule] });
|
|
1658
|
+
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: GalleriaModule, imports: [CommonModule, SharedModule, RippleModule, TimesIcon, ChevronRightIcon, ChevronLeftIcon, WindowMaximizeIcon, WindowMinimizeIcon, FocusTrapModule, CommonModule, SharedModule] });
|
|
1659
|
+
}
|
|
1660
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: GalleriaModule, decorators: [{
|
|
1661
|
+
type: NgModule,
|
|
1662
|
+
args: [{
|
|
1663
|
+
imports: [CommonModule, SharedModule, RippleModule, TimesIcon, ChevronRightIcon, ChevronLeftIcon, WindowMaximizeIcon, WindowMinimizeIcon, FocusTrapModule],
|
|
1664
|
+
exports: [CommonModule, Galleria, GalleriaContent, GalleriaItemSlot, GalleriaItem, GalleriaThumbnails, SharedModule],
|
|
1665
|
+
declarations: [Galleria, GalleriaContent, GalleriaItemSlot, GalleriaItem, GalleriaThumbnails]
|
|
1666
|
+
}]
|
|
1667
|
+
}] });
|
|
1668
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2FsbGVyaWEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvZ2FsbGVyaWEvZ2FsbGVyaWEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFrQixPQUFPLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUMxRixPQUFPLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzVFLE9BQU8sRUFHSCx1QkFBdUIsRUFFdkIsU0FBUyxFQUNULGVBQWUsRUFHZixZQUFZLEVBQ1osWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBRUwsUUFBUSxFQUlSLE1BQU0sRUFDTixXQUFXLEVBS1gsU0FBUyxFQUNULGlCQUFpQixFQUNqQixnQkFBZ0IsRUFDaEIsZUFBZSxFQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQWEsV0FBVyxFQUFFLFlBQVksRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzdFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDdEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDeEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQzFELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQzVFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQzVFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUV4RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsV0FBVyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFekUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFN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LFlBQVksRUFBRSxrQkFBa0IsQ0FBQztpQkFDaEciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBbmltYXRpb25FdmVudCwgYW5pbWF0ZSwgc3R5bGUsIHRyYW5zaXRpb24sIHRyaWdnZXIgfSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSwgRE9DVU1FTlQsIGlzUGxhdGZvcm1Ccm93c2VyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gICAgQWZ0ZXJDb250ZW50Q2hlY2tlZCxcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBDb250ZW50Q2hpbGRyZW4sXG4gICAgRG9DaGVjayxcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBIb3N0TGlzdGVuZXIsXG4gICAgSW5qZWN0LFxuICAgIElucHV0LFxuICAgIEtleVZhbHVlRGlmZmVycyxcbiAgICBOZ01vZHVsZSxcbiAgICBPbkNoYW5nZXMsXG4gICAgT25EZXN0cm95LFxuICAgIE9uSW5pdCxcbiAgICBPdXRwdXQsXG4gICAgUExBVEZPUk1fSUQsXG4gICAgUXVlcnlMaXN0LFxuICAgIFJlbmRlcmVyMixcbiAgICBTaW1wbGVDaGFuZ2VzLFxuICAgIFRlbXBsYXRlUmVmLFxuICAgIFZpZXdDaGlsZCxcbiAgICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgICBib29sZWFuQXR0cmlidXRlLFxuICAgIG51bWJlckF0dHJpYnV0ZVxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGNheENvbmZpZywgQ2F4VGVtcGxhdGUsIFNoYXJlZE1vZHVsZSB9IGZyb20gJ2NheC1kZXNpZ24tc3lzdGVtL2FwaSc7XG5pbXBvcnQgeyBEb21IYW5kbGVyIH0gZnJvbSAnY2F4LWRlc2lnbi1zeXN0ZW0vZG9tJztcbmltcG9ydCB7IENoZXZyb25MZWZ0SWNvbiB9IGZyb20gJ2NheC1kZXNpZ24tc3lzdGVtL2ljb25zL2NoZXZyb25sZWZ0JztcbmltcG9ydCB7IENoZXZyb25SaWdodEljb24gfSBmcm9tICdjYXgtZGVzaWduLXN5c3RlbS9pY29ucy9jaGV2cm9ucmlnaHQnO1xuaW1wb3J0IHsgVGltZXNJY29uIH0gZnJvbSAnY2F4LWRlc2lnbi1zeXN0ZW0vaWNvbnMvdGltZXMnO1xuaW1wb3J0IHsgV2luZG93TWF4aW1pemVJY29uIH0gZnJvbSAnY2F4LWRlc2lnbi1zeXN0ZW0vaWNvbnMvd2luZG93bWF4aW1pemUnO1xuaW1wb3J0IHsgV2luZG93TWluaW1pemVJY29uIH0gZnJvbSAnY2F4LWRlc2lnbi1zeXN0ZW0vaWNvbnMvd2luZG93bWluaW1pemUnO1xuaW1wb3J0IHsgUmlwcGxlTW9kdWxlIH0gZnJvbSAnY2F4LWRlc2lnbi1zeXN0ZW0vcmlwcGxlJztcbmltcG9ydCB7IFZvaWRMaXN0ZW5lciB9IGZyb20gJ2NheC1kZXNpZ24tc3lzdGVtL3RzLWhlbHBlcnMnO1xuaW1wb3J0IHsgVW5pcXVlQ29tcG9uZW50SWQsIFpJbmRleFV0aWxzIH0gZnJvbSAnY2F4LWRlc2lnbi1zeXN0ZW0vdXRpbHMnO1xuaW1wb3J0IHsgR2FsbGVyaWFSZXNwb25zaXZlT3B0aW9ucyB9IGZyb20gJy4vZ2FsbGVyaWEuaW50ZXJmYWNlJztcbmltcG9ydCB7IEZvY3VzVHJhcE1vZHVsZSB9IGZyb20gJ2NheC1kZXNpZ24tc3lzdGVtL2ZvY3VzdHJhcCc7XG4vKipcbiAqIEdhbGxlcmlhIGlzIGFuIGFkdmFuY2VkIGNvbnRlbnQgZ2FsbGVyeSBjb21wb25lbnQuXG4gKiBAZ3JvdXAgQ29tcG9uZW50c1xuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3AtZ2FsbGVyaWEnLFxuICAgIHRlbXBsYXRlOiBgXG4gICAgICAgIDxkaXYgKm5nSWY9XCJmdWxsU2NyZWVuOyBlbHNlIHdpbmRvd2VkXCIgI2NvbnRhaW5lcj5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAqbmdJZj1cIm1hc2tWaXNpYmxlXCJcbiAgICAgICAgICAgICAgICAjbWFza1xuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ3AtZ2FsbGVyaWEtbWFzayBwLWNvbXBvbmVudC1vdmVybGF5IHAtY29tcG9uZW50LW92ZXJsYXktZW50ZXInOiB0cnVlLCAncC1nYWxsZXJpYS12aXNpYmxlJzogdGhpcy52aXNpYmxlIH1cIlxuICAgICAgICAgICAgICAgIFtjbGFzc109XCJtYXNrQ2xhc3NcIlxuICAgICAgICAgICAgICAgIFthdHRyLnJvbGVdPVwiZnVsbFNjcmVlbiA/ICdkaWFsb2cnIDogJ3JlZ2lvbidcIlxuICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbW9kYWxdPVwiZnVsbFNjcmVlbiA/ICd0cnVlJyA6IHVuZGVmaW5lZFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPHAtZ2FsbGVyaWFDb250ZW50XG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwidmlzaWJsZVwiXG4gICAgICAgICAgICAgICAgICAgIFtAYW5pbWF0aW9uXT1cInsgdmFsdWU6ICd2aXNpYmxlJywgcGFyYW1zOiB7IHNob3dUcmFuc2l0aW9uUGFyYW1zOiBzaG93VHJhbnNpdGlvbk9wdGlvbnMsIGhpZGVUcmFuc2l0aW9uUGFyYW1zOiBoaWRlVHJhbnNpdGlvbk9wdGlvbnMgfSB9XCJcbiAgICAgICAgICAgICAgICAgICAgKEBhbmltYXRpb24uc3RhcnQpPVwib25BbmltYXRpb25TdGFydCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgKEBhbmltYXRpb24uZG9uZSk9XCJvbkFuaW1hdGlvbkVuZCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cInZhbHVlXCJcbiAgICAgICAgICAgICAgICAgICAgW2FjdGl2ZUluZGV4XT1cImFjdGl2ZUluZGV4XCJcbiAgICAgICAgICAgICAgICAgICAgW251bVZpc2libGVdPVwibnVtVmlzaWJsZUxpbWl0IHx8IG51bVZpc2libGVcIlxuICAgICAgICAgICAgICAgICAgICAobWFza0hpZGUpPVwib25NYXNrSGlkZSgpXCJcbiAgICAgICAgICAgICAgICAgICAgKGFjdGl2ZUl0ZW1DaGFuZ2UpPVwib25BY3RpdmVJdGVtQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJjb250YWluZXJTdHlsZVwiXG4gICAgICAgICAgICAgICAgICAgIFtmdWxsU2NyZWVuXT1cImZ1bGxTY3JlZW5cIlxuICAgICAgICAgICAgICAgID48L3AtZ2FsbGVyaWFDb250ZW50PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjd2luZG93ZWQ+XG4gICAgICAgICAgICA8cC1nYWxsZXJpYUNvbnRlbnQgW3ZhbHVlXT1cInZhbHVlXCIgW2FjdGl2ZUluZGV4XT1cImFjdGl2ZUluZGV4XCIgW251bVZpc2libGVdPVwibnVtVmlzaWJsZUxpbWl0IHx8IG51bVZpc2libGVcIiAoYWN0aXZlSXRlbUNoYW5nZSk9XCJvbkFjdGl2ZUl0ZW1DaGFuZ2UoJGV2ZW50KVwiPjwvcC1nYWxsZXJpYUNvbnRlbnQ+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgYCxcbiAgICBhbmltYXRpb25zOiBbXG4gICAgICAgIHRyaWdnZXIoJ2FuaW1hdGlvbicsIFtcbiAgICAgICAgICAgIHRyYW5zaXRpb24oJ3ZvaWQgPT4gdmlzaWJsZScsIFtzdHlsZSh7IHRyYW5zZm9ybTogJ3NjYWxlKDAuNyknLCBvcGFjaXR5OiAwIH0pLCBhbmltYXRlKCd7e3Nob3dUcmFuc2l0aW9uUGFyYW1zfX0nKV0pLFxuICAgICAgICAgICAgdHJhbnNpdGlvbigndmlzaWJsZSA9PiB2b2lkJywgW2FuaW1hdGUoJ3t7aGlkZVRyYW5zaXRpb25QYXJhbXN9fScsIHN0eWxlKHsgdHJhbnNmb3JtOiAnc2NhbGUoMC43KScsIG9wYWNpdHk6IDAgfSkpXSlcbiAgICAgICAgXSlcbiAgICBdLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgc3R5bGVVcmxzOiBbJy4vZ2FsbGVyaWEuY3NzJ10sXG4gICAgaG9zdDoge1xuICAgICAgICBjbGFzczogJ2NheC1lbGVtZW50J1xuICAgIH1cbn0pXG5leHBvcnQgY2xhc3MgR2FsbGVyaWEgaW1wbGVtZW50cyBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XG4gICAgLyoqXG4gICAgICogSW5kZXggb2YgdGhlIGZpcnN0IGl0ZW0uXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgZ2V0IGFjdGl2ZUluZGV4KCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLl9hY3RpdmVJbmRleDtcbiAgICB9XG4gICAgc2V0IGFjdGl2ZUluZGV4KGFjdGl2ZUluZGV4KSB7XG4gICAgICAgIHRoaXMuX2FjdGl2ZUluZGV4ID0gYWN0aXZlSW5kZXg7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgdG8gZGlzcGxheSB0aGUgY29tcG9uZW50IG9uIGZ1bGxzY3JlZW4uXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGZ1bGxTY3JlZW46IGJvb2xlYW4gPSBmYWxzZTtcbiAgICAvKipcbiAgICAgKiBVbmlxdWUgaWRlbnRpZmllciBvZiB0aGUgZWxlbWVudC5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBpZDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIEFuIGFycmF5IG9mIG9iamVjdHMgdG8gZGlzcGxheS5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSB2YWx1ZTogYW55W10gfCB1bmRlZmluZWQ7XG4gICAgLyoqXG4gICAgICogTnVtYmVyIG9mIGl0ZW1zIHBlciBwYWdlLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogbnVtYmVyQXR0cmlidXRlIH0pIG51bVZpc2libGU6IG51bWJlciA9IDM7XG4gICAgLyoqXG4gICAgICogQW4gYXJyYXkgb2Ygb3B0aW9ucyBmb3IgcmVzcG9uc2l2ZSBkZXNpZ24uXG4gICAgICogQHNlZSB7R2FsbGVyaWFSZXNwb25zaXZlT3B0aW9uc31cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSByZXNwb25zaXZlT3B0aW9uczogR2FsbGVyaWFSZXNwb25zaXZlT3B0aW9uc1tdIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgdG8gZGlzcGxheSBuYXZpZ2F0aW9uIGJ1dHRvbnMgaW4gaXRlbSBzZWN0aW9uLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBzaG93SXRlbU5hdmlnYXRvcnM6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIHRvIGRpc3BsYXkgbmF2aWdhdGlvbiBidXR0b25zIGluIHRodW1ibmFpbCBjb250YWluZXIuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIHNob3dUaHVtYm5haWxOYXZpZ2F0b3JzOiBib29sZWFuID0gdHJ1ZTtcbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIHRvIGRpc3BsYXkgbmF2aWdhdGlvbiBidXR0b25zIG9uIGl0ZW0gaG92ZXIuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIHNob3dJdGVtTmF2aWdhdG9yc09uSG92ZXI6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICAvKipcbiAgICAgKiBXaGVuIGVuYWJsZWQsIGl0ZW0gaXMgY2hhbmdlZCBvbiBpbmRpY2F0b3IgaG92ZXIuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGNoYW5nZUl0ZW1PbkluZGljYXRvckhvdmVyOiBib29sZWFuID0gZmFsc2U7XG4gICAgLyoqXG4gICAgICogRGVmaW5lcyBpZiBzY3JvbGxpbmcgd291bGQgYmUgaW5maW5pdGUuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGNpcmN1bGFyOiBib29sZWFuID0gZmFsc2U7XG4gICAgLyoqXG4gICAgICogSXRlbXMgYXJlIGRpc3BsYXllZCB3aXRoIGEgc2xpZGVzaG93IGluIGF1dG9QbGF5IG1vZGUuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGF1dG9QbGF5OiBib29sZWFuID0gZmFsc2U7XG4gICAgLyoqXG4gICAgICogV2hlbiBlbmFibGVkLCBhdXRvcnVuIHNob3VsZCBzdG9wIGJ5IGNsaWNrLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBzaG91bGRTdG9wQXV0b3BsYXlCeUNsaWNrOiBib29sZWFuID0gdHJ1ZTtcbiAgICAvKipcbiAgICAgKiBUaW1lIGluIG1pbGxpc2Vjb25kcyB0byBzY3JvbGwgaXRlbXMuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBudW1iZXJBdHRyaWJ1dGUgfSkgdHJhbnNpdGlvbkludGVydmFsOiBudW1iZXIgPSA0MDAwO1xuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgdG8gZGlzcGxheSB0aHVtYm5haWwgY29udGFpbmVyLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBzaG93VGh1bWJuYWlsczogYm9vbGVhbiA9IHRydWU7XG4gICAgLyoqXG4gICAgICogUG9zaXRpb24gb2YgdGh1bWJuYWlscy5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSB0aHVtYm5haWxzUG9zaXRpb246ICdib3R0b20nIHwgJ3RvcCcgfCAnbGVmdCcgfCAncmlnaHQnIHwgdW5kZWZpbmVkID0gJ2JvdHRvbSc7XG4gICAgLyoqXG4gICAgICogSGVpZ2h0IG9mIHRoZSB2aWV3cG9ydCBpbiB2ZXJ0aWNhbCB0aHVtYm5haWwuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgdmVydGljYWxUaHVtYm5haWxWaWV3UG9ydEhlaWdodDogc3RyaW5nID0gJzMwMHB4JztcbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIHRvIGRpc3BsYXkgaW5kaWNhdG9yIGNvbnRhaW5lci5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgc2hvd0luZGljYXRvcnM6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICAvKipcbiAgICAgKiBXaGVuIGVuYWJsZWQsIGluZGljYXRvciBjb250YWluZXIgaXMgZGlzcGxheWVkIG9uIGl0ZW0gY29udGFpbmVyLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBzaG93SW5kaWNhdG9yc09uSXRlbTogYm9vbGVhbiA9IGZhbHNlO1xuICAgIC8qKlxuICAgICAqIFBvc2l0aW9uIG9mIGluZGljYXRvcnMuXG4gICAgICogQGdyb3VwIFByb3BzXG4gICAgICovXG4gICAgQElucHV0KCkgaW5kaWNhdG9yc1Bvc2l0aW9uOiAnYm90dG9tJyB8ICd0b3AnIHwgJ2xlZnQnIHwgJ3JpZ2h0JyB8IHVuZGVmaW5lZCA9ICdib3R0b20nO1xuICAgIC8qKlxuICAgICAqIEJhc2UgekluZGV4IHZhbHVlIHRvIHVzZSBpbiBsYXllcmluZy5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IG51bWJlckF0dHJpYnV0ZSB9KSBiYXNlWkluZGV4OiBudW1iZXIgPSAwO1xuICAgIC8qKlxuICAgICAqIFN0eWxlIGNsYXNzIG9mIHRoZSBtYXNrIG9uIGZ1bGxzY3JlZW4gbW9kZS5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBtYXNrQ2xhc3M6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBTdHlsZSBjbGFzcyBvZiB0aGUgY29tcG9uZW50IG9uIGZ1bGxzY3JlZW4gbW9kZS4gT3RoZXJ3aXNlLCB0aGUgJ2NsYXNzJyBwcm9wZXJ0eSBjYW4gYmUgdXNlZC5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBjb250YWluZXJDbGFzczogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIElubGluZSBzdHlsZSBvZiB0aGUgY29tcG9uZW50IG9uIGZ1bGxzY3JlZW4gbW9kZS4gT3RoZXJ3aXNlLCB0aGUgJ3N0eWxlJyBwcm9wZXJ0eSBjYW4gYmUgdXNlZC5cbiAgICAgKiBAZ3JvdXAgUHJvcHNcbiAgICAgKi9cbiAgICBASW5wdXQoKSBjb250YWluZXJTdHlsZTogeyBba2xhc3M6IHN0cmluZ106IGFueSB9IHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgICAvKipcbiAgICAgKiBUcmFuc2l0aW9uIG9wdGlvbnMgb2YgdGhlIHNob3cgYW5pbWF0aW9uLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIHNob3dUcmFuc2l0aW9uT3B0aW9uczogc3RyaW5nID0gJzE1MG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpJztcbiAgICAvKipcbiAgICAgKiBUcmFuc2l0aW9uIG9wdGlvbnMgb2YgdGhlIGhpZGUgYW5pbWF0aW9uLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIGhpZGVUcmFuc2l0aW9uT3B0aW9uczogc3RyaW5nID0gJzE1MG1zIGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpJztcbiAgICAvKipcbiAgICAgKiBTcGVjaWZpZXMgdGhlIHZpc2liaWxpdHkgb2YgdGhlIG1hc2sgb24gZnVsbHNjcmVlbiBtb2RlLlxuICAgICAqIEBncm91cCBQcm9wc1xuICAgICAqL1xuICAgIEBJbnB1dCgpIGdldCB2aXNpYmxlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fdmlzaWJsZTtcbiAgICB9XG4gICAgc2V0IHZpc2libGUodmlzaWJsZTogYm9vbGVhbikge1xuICAgICAgICB0aGlzLl92aXNpYmxlID0gdmlzaWJsZTtcblxuICAgICAgICBpZiAodGhpcy5fdmlzaWJsZSAmJiAhdGhpcy5tYXNrVmlzaWJsZSkge1xuICAgICAgICAgICAgdGhpcy5tYXNrVmlzaWJsZSA9IHRydWU7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLyoqXG4gICAgICogQ2FsbGJhY2sgdG8gaW52b2tlIG9uIGFjdGl2ZSBpbmRleCBjaGFuZ2UuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IG51bWJlciAtIEFjdGl2ZSBpbmRleC5cbiAgICAgKiBAZ3JvdXAgRW1pdHNcbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgYWN0aXZlSW5kZXhDaGFuZ2U6IEV2ZW50RW1pdHRlcjxudW1iZXI+ID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG4gICAgLyoqXG4gICAgICogQ2FsbGJhY2sgdG8gaW52b2tlIG9uIHZpc2libGl0eSBjaGFuZ2UuXG4gICAgICogQHBhcmFtIHtib29sZWFufSBib29sZWFuIC0gVmlzaWJsZSB2YWx1ZS5cbiAgICAgKiBAZ3JvdXAgRW1pdHNcbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgdmlzaWJsZUNoYW5nZTogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gICAgQFZpZXdDaGlsZCgnbWFzaycpIG1hc2s6IEVsZW1lbnRSZWYgfCB1bmRlZmluZWQ7XG5cbiAgICBAVmlld0NoaWxkKCdjb250YWluZXInKSBjb250YWluZXI6IEVsZW1lbnRSZWYgfCB1bmRlZmluZWQ7XG5cbiAgICBAQ29udGVudENoaWxkcmVuKENheFRlbXBsYXRlKSB0ZW1wbGF0ZXM6IFF1ZXJ5TGlzdDxDYXhUZW1wbGF0ZT4gfCB1bmRlZmluZWQ7XG5cbiAgICBfdmlzaWJsZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgX2FjdGl2ZUluZGV4OiBudW1iZXIgPSAwO1xuXG4gICAgaGVhZGVyRmFjZXQ6IGFueTtcblxuICAgIGZvb3RlckZhY2V0OiBhbnk7XG5cbiAgICBpbmRpY2F0b3JGYWNldDogYW55O1xuXG4gICAgY2FwdGlvbkZhY2V0OiBhbnk7XG5cbiAgICBjbG9zZUljb25UZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZDtcblxuICAgIHByZXZpb3VzVGh1bWJuYWlsSWNvblRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkO1xuXG4gICAgbmV4dFRodW1ibmFpbEljb25UZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZDtcblxuICAgIGl0ZW1QcmV2aW91c0ljb25UZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZDtcblxuICAgIGl0ZW1OZXh0SWNvblRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkO1xuXG4gICAgbWFza1Zpc2libGU6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIG51bVZpc2libGVMaW1pdCA9IDA7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgQEluamVjdChET0NVTUVOVCkgcHJpdmF0ZSBkb2N1bWVudDogRG9jdW1lbnQsXG4gICAgICAgIEBJbmplY3QoUExBVEZPUk1fSUQpIHB1YmxpYyBwbGF0Zm9ybUlkOiBhbnksXG4gICAgICAgIHB1YmxpYyBlbGVtZW50OiBFbGVtZW50UmVmLFxuICAgICAgICBwdWJsaWMgY2Q6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBwdWJsaWMgY29uZmlnOiBjYXhDb25maWdcbiAgICApIHt9XG5cbiAgICBuZ0FmdGVyQ29udGVudEluaXQoKSB7XG4gICAgICAgIHRoaXMudGVtcGxhdGVzPy5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgICAgICBzd2l0Y2ggKGl0ZW0uZ2V0VHlwZSgpKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAnaGVhZGVyJzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5oZWFkZXJGYWNldCA9IGl0ZW0udGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSAnZm9vdGVyJzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mb290ZXJGYWNldCA9IGl0ZW0udGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSAnaW5kaWNhdG9yJzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbmRpY2F0b3JGYWNldCA9IGl0ZW0udGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSAnY2xvc2VpY29uJzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jbG9zZUljb25UZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSAnaXRlbW5leHRpY29uJzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pdGVtTmV4dEljb25UZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSAnaXRlbXByZXZpb3VzaWNvbic6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXRlbVByZXZpb3VzSWNvblRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlICdwcmV2aW91c3RodW1ibmFpbGljb24nOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLnByZXZpb3VzVGh1bWJuYWlsSWNvblRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlICduZXh0dGh1bWJuYWlsaWNvbic6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubmV4dFRodW1ibmFpbEljb25UZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZSAnY2FwdGlvbic6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2FwdGlvbkZhY2V0ID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG5nT25DaGFuZ2VzKHNpbXBsZUNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICAgICAgaWYgKHNpbXBsZUNoYW5nZXMudmFsdWUgJiYgc2ltcGxlQ2hhbmdlcy52YWx1ZS5jdXJyZW50VmFsdWU/Lmxlbmd0aCA8IHRoaXMubnVtVmlzaWJsZSkge1xuICAgICAgICAgICAgdGhpcy5udW1WaXNpYmxlTGltaXQgPSBzaW1wbGVDaGFuZ2VzLnZhbHVlLmN1cnJlbnRWYWx1ZS5sZW5ndGg7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLm51bVZpc2libGVMaW1pdCA9IDA7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbk1hc2tIaWRlKCkge1xuICAgICAgICB0aGlzLnZpc2libGUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy52aXNpYmxlQ2hhbmdlLmVtaXQoZmFsc2UpO1xuICAgIH1cblxuICAgIG9uQWN0aXZlSXRlbUNoYW5nZShpbmRleDogbnVtYmVyKSB7XG4gICAgICAgIGlmICh0aGlzLmFjdGl2ZUluZGV4ICE9PSBpbmRleCkge1xuICAgICAgICAgICAgdGhpcy5hY3RpdmVJbmRleCA9IGluZGV4O1xuICAgICAgICAgICAgdGhpcy5hY3RpdmVJbmRleENoYW5nZS5lbWl0KGluZGV4KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uQW5pbWF0aW9uU3RhcnQoZXZlbnQ6IEFuaW1hdGlvbkV2ZW50KSB7XG4gICAgICAgIHN3aXRjaCAoZXZlbnQudG9TdGF0ZSkge1xuICAgICAgICAgICAgY2FzZSAndmlzaWJsZSc6XG4gICAgICAgICAgICAgICAgdGhpcy5lbmFibGVNb2RhbGl0eSgpO1xuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBEb21IYW5kbGVyLmZvY3VzKERvbUhhbmRsZXIuZmluZFNpbmdsZSh0aGlzLmNvbnRhaW5lci5uYXRpdmVFbGVtZW50LCAnW2RhdGEtcGMtc2VjdGlvbj1cImNsb3NlYnV0dG9uXCJdJykpO1xuICAgICAgICAgICAgICAgIH0sIDI1KTtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgY2FzZSAndm9pZCc6XG4gICAgICAgICAgICAgICAgRG9tSGFuZGxlci5hZGRDbGFzcyh0aGlzLm1hc2s/Lm5hdGl2ZUVsZW1lbnQsICdwLWNvbXBvbmVudC1vdmVybGF5LWxlYXZlJyk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbkFuaW1hdGlvbkVuZChldmVudDogQW5pbWF0aW9uRXZlbnQpIHtcbiAgICAgICAgc3dpdGNoIChldmVudC50b1N0YXRlKSB7XG4gICAgICAgICAgICBjYXNlICd2b2lkJzpcbiAgICAgICAgICAgICAgICB0aGlzLmRpc2FibGVNb2RhbGl0eSgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZW5hYmxlTW9kYWxpdHkoKSB7XG4gICAgICAgIERvbUhhbmRsZXIuYmxvY2tCb2R5U2Nyb2xsKCk7XG4gICAgICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XG5cbiAgICAgICAgaWYgKHRoaXMubWFzaykge1xuICAgICAgICAgICAgWkluZGV4VXRpbHMuc2V0KCdtb2RhbCcsIHRoaXMubWFzay5uYXRpdmVFbGVtZW50LCB0aGlzLmJhc2VaSW5kZXggfHwgdGhpcy5jb25maWcuekluZGV4Lm1vZGFsKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGRpc2FibGVNb2RhbGl0eSgpIHtcbiAgICAgICAgRG9tSGFuZGxlci51bmJsb2NrQm9keVNjcm9sbCgpO1xuICAgICAgICB0aGlzLm1hc2tWaXNpYmxlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XG5cbiAgICAgICAgaWYgKHRoaXMubWFzaykge1xuICAgICAgICAgICAgWkluZGV4VXRpbHMuY2xlYXIodGhpcy5tYXNrLm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIGlmICh0aGlzLmZ1bGxTY3JlZW4pIHtcbiAgICAgICAgICAgIERvbUhhbmRsZXIucmVtb3ZlQ2xhc3ModGhpcy5kb2N1bWVudC5ib2R5LCAncC1vdmVyZmxvdy1oaWRkZW4nKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLm1hc2spIHtcbiAgICAgICAgICAgIHRoaXMuZGlzYWJsZU1vZGFsaXR5KCk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAncC1nYWxsZXJpYUNvbnRlbnQnLFxuICAgIHRlbXBsYXRlOiBgXG4gICAgICAgIDxkaXZcbiAgICAgICAgICAgIFthdHRyLmlkXT1cImlkXCJcbiAgICAgICAgICAgIFthdHRyLnJvbGVdPVwiJ3JlZ2lvbidcIlxuICAgICAgICAgICAgKm5nSWY9XCJ2YWx1ZSAmJiB2YWx1ZS5sZW5ndGggPiAwXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgICAncC1nYWxsZXJpYSBwLWNvbXBvbmVudCc6IHRydWUsXG4gICAgICAgICAgICAgICAgJ3AtZ2FsbGVyaWEtZnVsbHNjcmVlbic6IHRoaXMuZ2FsbGVyaWEuZnVsbFNjcmVlbixcbiAgICAgICAgICAgICAgICAncC1nYWxsZXJpYS1pbmRpY2F0b3Itb25pdGVtJzogdGhpcy5nYWxsZXJpYS5zaG93SW5kaWNhdG9yc09uSXRlbSxcbiAgICAgICAgICAgICAgICAncC1nYWxsZXJpYS1pdGVtLW5hdi1vbmhvdmVyJzogdGhpcy5nYWxsZXJpYS5zaG93SXRlbU5hdmlnYXRvcnNPbkhvdmVyICYmICF0aGlzLmdhbGxlcmlhLmZ1bGxTY3JlZW5cbiAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgW25nU3R5bGVdPVwiIWdhbGxlcmlhLmZ1bGxTY3JlZW4gPyBnYWxsZXJpYS5jb250YWluZXJTdHlsZSA6IHt9XCJcbiAgICAgICAgICAgIFtjbGFzc109XCJnYWxsZXJpYUNsYXNzKClcIlxuICAgICAgICAgICAgY2F4Rm9jdXNUcmFwXG4gICAgICAgICAgICBbY2F4Rm9jdXNUcmFwRGlzYWJsZWRdPVwiIWZ1bGxTY3JlZW5cIlxuICAgICAgICA+XG4gICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiZ2FsbGVyaWEuZnVsbFNjcmVlblwiIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cInAtZ2FsbGVyaWEtY2xvc2UgcC1saW5rXCIgKGNsaWNrKT1cIm1hc2tIaWRlLmVtaXQoKVwiIHBSaXBwbGUgW2F0dHIuYXJpYS1sYWJlbF09XCJjbG9zZUFyaWFMYWJlbCgpXCIgW2F0dHIuZGF0YS1wYy1zZWN0aW9uXT1cIidjbG9zZWJ1dHRvbidcIj5cbiAgICAgICAgICAgICAgICA8VGltZXNJY29uICpuZ0lmPVwiIWdhbGxlcmlhLmNsb3NlSWNvblRlbXBsYXRlXCIgW3N0eWxlQ2xhc3NdPVwiJ3AtZ2FsbGVyaWEtY2xvc2UtaWNvbidcIiAvPlxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAqbmdUZW1wbGF0ZU91dGxldD1cImdhbGxlcmlhLmNsb3NlSWNvblRlbXBsYXRlXCI+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cImdhbGxlcmlhLnRlbXBsYXRlcyAmJiBnYWxsZXJpYS5oZWFkZXJGYWNldFwiIGNsYXNzPVwicC1nYWxsZXJpYS1oZWFkZXJcIj5cbiAgICAgICAgICAgICAgICA8cC1nYWxsZXJpYUl0ZW1TbG90IHR5cGU9XCJoZWFkZXJcIiBbdGVtcGxhdGVzXT1cImdhbGxlcmlhLnRlbXBsYXRlc1wiPjwvcC1nYWxsZXJpYUl0ZW1TbG90PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC1nYWxsZXJpYS1jb250ZW50XCIgW2F0dHIuYXJpYS1saXZlXT1cImdhbGxlcmlhLmF1dG9QbGF5ID8gJ3BvbGl0ZScgOiAnb2ZmJ1wiPlxuICAgICAgICAgICAgICAgIDxwLWdhbGxlcmlhSXRlbVxuICAgICAgICAgICAgICAgICAgICBbaWRdPVwiaWRcIlxuICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwidmFsdWVcIlxuICAgICAgICAgICAgICAgICAgICBbYWN0aXZlSW5kZXhdPVwiYWN0aXZlSW5kZXhcIlxuICAgICAgICAgICAgICAgICAgICBbY2lyY3VsYXJdPVwiZ2FsbGVyaWEuY2lyY3VsYXJcIlxuICAgICAgICAgICAgICAgICAgICBbdGVtcGxhdGVzXT1cImdhbGxlcmlhLnRlbXBsYXRlc1wiXG4gICAgICAgICAgICAgICAgICAgIChvbkFjdGl2ZUluZGV4Q2hhbmdlKT1cIm9uQWN0aXZlSW5kZXhDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgIFtzaG93SW5kaWNhdG9yc109XCJnYWxsZXJpYS5zaG93SW5kaWNhdG9yc1wiXG4gICAgICAgICAgICAgICAgICAgIFtjaGFuZ2VJdGVtT25JbmRpY2F0b3JIb3Zlcl09XCJnYWxsZXJpYS5jaGFuZ2VJdGVtT25JbmRpY2F0b3JIb3ZlclwiXG4gICAgICAgICAgICAgICAgICAgIFtpbmRpY2F0b3JGYWNldF09XCJnYWxsZXJpYS5pbmRpY2F0b3JGYWNldFwiXG4gICAgICAgICAgICAgICAgICAgIFtjYXB0aW9uRmFjZXRdPVwiZ2FsbGVyaWEuY2FwdGlvbkZhY2V0XCJcbiAgICAgICAgICAgICAgICAgICAgW3Nob3dJdGVtTmF2aWdhdG9yc109XCJnYWxsZXJpYS5zaG93SXRlbU5hdmlnYXRvcnNcIlxuICAgICAgICAgICAgICAgICAgICBbYXV0b1BsYXldPVwiZ2FsbGVyaWEuYXV0b1BsYXlcIlxuICAgICAgICAgICAgICAgICAgICBbc2xpZGVTaG93QWN0aXZlXT1cInNsaWRlU2hvd0FjdGl2ZVwiXG4gICAgICAgICAgICAgICAgICAgIChzdGFydFNsaWRlU2hvdyk9XCJzdGFydFNsaWRlU2hvdygpXCJcbiAgICAgICAgICAgICAgICAgICAgKHN0b3BTbGlkZVNob3cpPVwic3RvcFNsaWRlU2hvdygpXCJcbiAgICAgICAgICAgICAgICA+PC9wLWdhbGxlcmlhSXRlbT5cblxuICAgICAgICAgICAgICAgIDxwLWdhbGxlcmlhVGh1bWJuYWlsc1xuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImdhbGxlcmlhLnNob3dUaHVtYm5haWxzXCJcbiAgICAgICAgICAgICAgICAgICAgW2NvbnRhaW5lcklkXT1cImlkXCJcbiAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cInZhbHVlXCJcbiAgICAgICAgICAgICAgICAgICAgKG9uQWN0aXZlSW5kZXhDaGFuZ2UpPVwib25BY3RpdmVJbmRleENoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgW2FjdGl2ZUluZGV4XT1cImFjdGl2ZUluZGV4XCJcbiAgICAgICAgICAgICAgICAgICAgW3RlbXBsYXRlc109XCJnYWxsZXJpYS50ZW1wbGF0ZXNcIlxuICAgICAgICAgICAgICAgICAgICBbbnVtVmlzaWJsZV09XCJudW1WaXNpYmxlXCJcbiAgICAgICAgICAgICAgICAgICAgW3Jlc3BvbnNpdmVPcHRpb25zXT1cImdhbGxlcmlhLnJlc3BvbnNpdmVPcHRpb25zXCJcbiAgICAgICAgICAgICAgICAgICAgW2NpcmN1bGFyXT1cImdhbGxlcmlhLmNpcmN1bGFyXCJcbiAgICAgICAgICAgICAgICAgICAgW2lzVmVydGljYWxdPVwiaXNWZXJ0aWNhbCgpXCJcbiAgICAgICAgICAgICAgICAgICAgW2NvbnRlbnRIZWlnaHRdPVwiZ2FsbGVyaWEudmVydGljYWxUaHVtYm5haWxWaWV3UG9ydEhlaWdodFwiXG4gICAgICAgICAgICAgICAgICAgIFtzaG93VGh1bWJuYWlsTmF2aWdhdG9yc109XCJnYWxsZXJpYS5zaG93VGh1bWJuYWlsTmF2aWdhdG9yc1wiXG4gICAgICAgICAgICAgICAgICAgIFtzbGlkZVNob3dBY3RpdmVdPVwic2xpZGVTaG93QWN0aXZlXCJcbiAgICAgICAgICAgICAgICAgICAgKHN0b3BTbGlkZVNob3cpPVwic3RvcFNsaWRlU2hvdygpXCJcbiAgICAgICAgICAgICAgICA+PC9wLWdhbGxlcmlhVGh1bWJuYWlscz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cImdhbGxlcmlhLnRlbXBsYXRlcyAmJiBnYWxsZXJpYS5mb290ZXJGYWNldFwiIGNsYXNzPVwicC1nYWxsZXJpYS1mb290ZXJcIj5cbiAgICAgICAgICAgICAgICA8cC1nYWxsZXJpYUl0ZW1TbG90IHR5cGU9XCJmb290ZXJcIiBbdGVtcGxhdGVzXT1cImdhbGxlcmlhLnRlbXBsYXRlc1wiPjwvcC1nYWxsZXJpYUl0ZW1TbG90PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIGAsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgR2FsbGVyaWFDb250ZW50IGltcGxlbWVudHMgRG9DaGVjayB7XG4gICAgQElucHV0KCkgZ2V0IGFjdGl2ZUluZGV4KCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLl9hY3RpdmVJbmRleDtcbiAgICB9XG4gICAgc2V0IGFjdGl2ZUluZGV4KGFjdGl2ZUluZGV4OiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5fYWN0aXZlSW5kZXggPSBhY3RpdmVJbmRleDtcbiAgICB9XG5cbiAgICBASW5wdXQoKSB2YWx1ZTogYW55W10gPSBbXTtcblxuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogbnVtYmVyQXR0cmlidXRlIH0pIG51bVZpc2libGU6IG51bWJlciB8IHVuZGVmaW5lZDtcblxuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBmdWxsU2NyZWVuOiBib29sZWFuO1xuXG4gICAgQE91dHB1dCgpIG1hc2tIaWRlOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBAT3V0cHV0KCkgYWN0aXZlSXRlbUNoYW5nZTogRXZlbnRFbWl0dGVyPG51bWJlcj4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBAVmlld0NoaWxkKCdjbG9zZUJ1dHRvbicpIGNsb3NlQnV0dG9uOiBFbGVtZW50UmVmIHwgdW5kZWZpbmVkO1xuXG4gICAgaWQ6IHN0cmluZztcblxuICAgIF9hY3RpdmVJbmRleDogbnVtYmVyID0gMDtcblxuICAgIHNsaWRlU2hvd0FjdGl2ZTogYm9vbGVhbiA9IHRydWU7XG5cbiAgICBpbnRlcnZhbDogYW55O1xuXG4gICAgc3R5bGVDbGFzczogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gICAgcHJpdmF0ZSBkaWZmZXI6IGFueTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwdWJsaWMgZ2FsbGVyaWE6IEdhbGxlcmlhLFxuICAgICAgICBwdWJsaWMgY2Q6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBwcml2YXRlIGRpZmZlcnM6IEtleVZhbHVlRGlmZmVycyxcbiAgICAgICAgcHVibGljIGNvbmZpZzogY2F4Q29uZmlnLFxuICAgICAgICBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWZcbiAgICApIHtcbiAgICAgICAgdGhpcy5pZCA9IHRoaXMuZ2FsbGVyaWEuaWQgfHwgVW5pcXVlQ29tcG9uZW50SWQoKTtcbiAgICAgICAgdGhpcy5kaWZmZXIgPSB0aGlzLmRpZmZlcnMuZmluZCh0aGlzLmdhbGxlcmlhKS5jcmVhdGUoKTtcbiAgICB9XG5cbiAgICAvLyBGb3IgY3VzdG9tIGZ1bGxzY3JlZW5cbiAgICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDpmdWxsc2NyZWVuY2hhbmdlJywgWyckZXZlbnQnXSlcbiAgICBoYW5kbGVGdWxsc2NyZWVuQ2hhbmdlKGV2ZW50OiBFdmVudCkge1xuICAgICAgICBpZiAoZG9jdW1lbnQ/LmZ1bGxzY3JlZW5FbGVtZW50ID09PSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudD8uY2hpbGRyZW5bMF0pIHtcbiAgICAgICAgICAgIHRoaXMuZnVsbFNjcmVlbiA9IHRydWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmZ1bGxTY3JlZW4gPSBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nRG9DaGVjaygpOiB2b2lkIHtcbiAgICAgICAgaWYgKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMuZ2FsbGVyaWEucGxhdGZvcm1JZCkpIHtcbiAgICAgICAgICAgIGNvbnN0IGNoYW5nZXMgPSB0aGlzLmRpZmZlci5kaWZmKHRoaXMuZ2FsbGVyaWEgYXMgdW5rbm93biBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPik7XG4gICAgICAgICAgICBpZiAoY2hhbmdlcyAmJiBjaGFuZ2VzLmZvckVhY2hJdGVtLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAvLyBCZWNhdXNlIHdlIGNoYW5nZSB0aGUgcHJvcGVydGllcyBvZiB0aGUgcGFyZW50IGNvbXBvbmVudCxcbiAgICAgICAgICAgICAgICAvLyBhbmQgdGhlIGNoaWxkcmVuIHRha2Ugb3VyIGVudGl0eSBmcm9tIHRoZSBpbmplY3Rvci5cbiAgICAgICAgICAgICAgICAvLyBXZSBjYW4gdGVsbCB0aGUgY2hpbGRyZW4gdG8gcmVkcmF3IHRoZW1zZWx2ZXMgd2hlbiB3ZSBjaGFuZ2UgdGhlIHByb3BlcnRpZXMgb2YgdGhlIHBhcmVudCBjb21wb25lbnQuXG4gICAgICAgICAgICAgICAgLy8gU2luY2Ugd2UgaGF2ZSBhbiBvblB1c2ggc3RyYXRlZ3lcbiAgICAgICAgICAgICAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2FsbGVyaWFDbGFzcygpIHtcbiAgICAgICAgY29uc3QgdGh1bWJuYWlsc1Bvc0NsYXNzID0gdGhpcy5nYWxsZXJpYS5zaG93VGh1bWJuYWlscyAmJiB0aGlzLmdldFBvc2l0aW9uQ2xhc3MoJ3AtZ2FsbGVyaWEtdGh1bWJuYWlscycsIHRoaXMuZ2FsbGVyaWEudGh1bWJuYWlsc1Bvc2l0aW9uIGFzIHN0cmluZyk7XG4gICAgICAgIGNvbnN0IGluZGljYXRvclBvc0NsYXNzID0gdGhpcy5nYWxsZXJpYS5zaG93SW5kaWNhdG9ycyAmJiB0aGlzLmdldFBvc2l0aW9uQ2xhc3MoJ3AtZ2FsbGVyaWEtaW5kaWNhdG9ycycsIHRoaXMuZ2FsbGVyaWEuaW5kaWNhdG9yc1Bvc2l0aW9uIGFzIHN0cmluZyk7XG5cbiAgICAgICAgcmV0dXJuICh0aGlzLmdhbGxlcmlhLmNvbnRhaW5lckNsYXNzID8gdGhpcy5nYWxsZXJpYS5jb250YWluZXJDbGFzcyArICcgJyA6ICcnKSArICh0aHVtYm5haWxzUG9zQ2xhc3MgPyB0aHVtYm5haWxzUG9zQ2xhc3MgKyAnICcgOiAnJykgKyAoaW5kaWNhdG9yUG9zQ2xhc3MgPyBpbmRpY2F0b3JQb3NDbGFzcyArICcgJyA6ICcnKTtcbiAgICB9XG5cbiAgICBzdGFydFNsaWRlU2hvdygpIHtcbiAgICAgICAgaWYgKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMuZ2FsbGVyaWEucGxhdGZvcm1JZCkpIHtcbiAgICAgICAgICAgIHRoaXMuaW50ZXJ2YWwgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgbGV0IGFjdGl2ZUluZGV4ID0gdGhpcy5nYWxsZXJpYS5jaXJjdWxhciAmJiB0aGlzLnZhbHVlLmxlbmd0aCAtIDEgPT09IHRoaXMuYWN0aXZlSW5kZXggPyAwIDogdGhpcy5hY3RpdmVJbmRleCArIDE7XG4gICAgICAgICAgICAgICAgdGhpcy5vbkFjdGl2ZUluZGV4Q2hhbmdlKGFjdGl2ZUluZGV4KTtcbiAgICAgICAgICAgICAgICB0aGlzLmFjdGl2ZUluZGV4ID0gYWN0aXZlSW5kZXg7XG4gICAgICAgICAgICB9LCB0aGlzLmdhbGxlcmlhLnRyYW5zaXRpb25JbnRlcnZhbCk7XG5cbiAgICAgICAgICAgIHRoaXMuc2xpZGVTaG93QWN0aXZlID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHN0b3BTbGlkZVNob3coKSB7XG4gICAgICAgIGlmICh0aGlzLmdhbGxlcmlhLmF1dG9QbGF5ICYmICF0aGlzLmdhbGxlcmlhLnNob3VsZFN0b3BBdXRvcGxheUJ5Q2xpY2spIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmludGVydmFsKSB7XG4gICAgICAgICAgICBjbGVhckludGVydmFsKHRoaXMuaW50ZXJ2YWwpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5zbGlkZVNob3dBY3RpdmUgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBnZXRQb3NpdGlvbkNsYXNzKHByZUNsYXNzTmFtZTogc3RyaW5nLCBwb3NpdGlvbjogc3RyaW5nKSB7XG4gICAgICAgIGNvbnN0IHBvc2l0aW9ucyA9IFsndG9wJywgJ2xlZnQnLCAnYm90dG9tJywgJ3JpZ2h0J107XG4gICAgICAgIGNvbnN0IHBvcyA9IHBvc2l0aW9ucy5maW5kKChpdGVtKSA9PiBpdGVtID09PSBwb3NpdGlvbik7XG5cbiAgICAgICAgcmV0dXJuIHBvcyA/IGAke3ByZUNsYXNzTmFtZX0tJHtwb3N9YCA6ICcnO1xuICAgIH1cblxuICAgIGlzVmVydGljYWwoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdhbGxlcmlhLnRodW1ibmFpbHNQb3NpdGlvbiA9PT0gJ2xlZnQnIHx8IHRoaXMuZ2FsbGVyaWEudGh1bWJuYWlsc1Bvc2l0aW9uID09PSAncmlnaHQnO1xuICAgIH1cblxuICAgIG9uQWN0aXZlSW5kZXhDaGFuZ2UoaW5kZXg6IG51bWJlcikge1xuICAgICAgICBpZiAodGhpcy5hY3RpdmVJbmRleCAhPT0gaW5kZXgpIHtcbiAgICAgICAgICAgIHRoaXMuYWN0aXZlSW5kZXggPSBpbmRleDtcbiAgICAgICAgICAgIHRoaXMuYWN0aXZlSXRlbUNoYW5nZS5lbWl0KHRoaXMuYWN0aXZlSW5kZXgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgY2xvc2VBcmlhTGFiZWwoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbmZpZy50cmFuc2xhdGlvbi5hcmlhID8gdGhpcy5jb25maWcudHJhbnNsYXRpb24uYXJpYS5jbG9zZSA6IHVuZGVmaW5lZDtcbiAgICB9XG59XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAncC1nYWxsZXJpYUl0ZW1TbG90JyxcbiAgICB0ZW1wbGF0ZTogYFxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29udGVudFRlbXBsYXRlXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY29udGVudFRlbXBsYXRlOyBjb250ZXh0OiBjb250ZXh0XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIGAsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgR2FsbGVyaWFJdGVtU2xvdCB7XG4gICAgQElucHV0KCkgdGVtcGxhdGVzOiBRdWVyeUxpc3Q8Q2F4VGVtcGxhdGU+IHwgdW5kZWZpbmVkO1xuXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBudW1iZXJBdHRyaWJ1dGUgfSkgaW5kZXg6IG51bWJlciB8IHVuZGVmaW5lZDtcblxuICAgIEBJbnB1dCgpIGdldCBpdGVtKCk6IGFueSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pdGVtO1xuICAgIH1cblxuICAgIHNldCBpdGVtKGl0ZW06IGFueSkge1xuICAgICAgICB0aGlzLl9pdGVtID0gaXRlbTtcbiAgICAgICAgaWYgKHRoaXMudGVtcGxhdGVzKSB7XG4gICAgICAgICAgICB0aGlzLnRlbXBsYXRlcy5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGl0ZW0uZ2V0VHlwZSgpID09PSB0aGlzLnR5cGUpIHtcbiAgICAgICAgICAgICAgICAgICAgc3dpdGNoICh0aGlzLnR5cGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2l0ZW0nOlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnY2FwdGlvbic6XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICd0aHVtYm5haWwnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dCA9IHsgJGltcGxpY2l0OiB0aGlzLml0ZW0gfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRlbnRUZW1wbGF0ZSA9IGl0ZW0udGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBJbnB1dCgpIHR5cGU6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAgIGNvbnRlbnRUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZDtcblxuICAgIGNvbnRleHQ6IGFueTtcblxuICAgIF9pdGVtOiBhbnk7XG5cbiAgICBuZ0FmdGVyQ29udGVudEluaXQoKSB7XG4gICAgICAgIHRoaXMudGVtcGxhdGVzPy5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgICAgICBpZiAoaXRlbS5nZXRUeXBlKCkgPT09IHRoaXMudHlwZSkge1xuICAgICAgICAgICAgICAgIHN3aXRjaCAodGhpcy50eXBlKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ2l0ZW0nOlxuICAgICAgICAgICAgICAgICAgICBjYXNlICdjYXB0aW9uJzpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAndGh1bWJuYWlsJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dCA9IHsgJGltcGxpY2l0OiB0aGlzLml0ZW0gfTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGVudFRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ2luZGljYXRvcic6XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHQgPSB7ICRpbXBsaWNpdDogdGhpcy5pbmRleCB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZW50VGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dCA9IHt9O1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZW50VGVtcGxhdGUgPSBpdGVtLnRlbXBsYXRlO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG59XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAncC1nYWxsZXJpYUl0ZW0nLFxuICAgIHRlbXBsYXRlOiBgXG4gICAgICAgIDxkaXYgY2xhc3M9XCJwLWdhbGxlcmlhLWl0ZW0td3JhcHBlclwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtZ2FsbGVyaWEtaXRlbS1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwic2hvd0l0ZW1OYXZpZ2F0b3JzXCJcbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgIHJvbGU9XCJuYXZpZ2F0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAncC1nYWxsZXJpYS1pdGVtLXByZXYgcC1nYWxsZXJpYS1pdGVtLW5hdiBwLWxpbmsnOiB0cnVlLCAncC1nYWxsZXJpYS1pdGVtLW5hdi1mb2N1c2VkJzogbGVmdEJ1dHRvbkZvY3VzZWQsICdwLWRpc2FibGVkJzogdGhpcy5pc05hdkJhY2t3YXJkRGlzYWJsZWQoKSB9XCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm5hdkJhY2t3YXJkKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiaXNOYXZCYWNrd2FyZERpc2FibGVkKClcIlxuICAgICAgICAgICAgICAgICAgICBwUmlwcGxlXG4gICAgICAgICAgICAgICAgICAgIChmb2N1cyk9XCJvbkJ1dHRvbkZvY3VzKCdsZWZ0JylcIlxuICAgICAgICAgICAgICAgICAgICAoYmx1cik9XCJvbkJ1dHRvbkJsdXIoJ2xlZnQnKVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8Q2hldnJvbkxlZnRJY29uICpuZ0lmPVwiIWdhbGxlcmlhLml0ZW1QcmV2aW91c0ljb25UZW1wbGF0ZVwiIFtzdHlsZUNsYXNzXT1cIidwLWdhbGxlcmlhLWl0ZW0tcHJldi1pY29uJ1wiIC8+XG4gICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAqbmdUZW1wbGF0ZU91dGxldD1cImdhbGxlcmlhLml0ZW1QcmV2aW91c0ljb25UZW1wbGF0ZVwiPjwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPGRpdiBbaWRdPVwiaWQgKyAnX2l0ZW1fJyArIGFjdGl2ZUluZGV4XCIgcm9sZT1cImdyb3VwXCIgW2F0dHIuYXJpYS1sYWJlbF09XCJhcmlhU2xpZGVOdW1iZXIoYWN0aXZlSW5kZXggKyAxKVwiIFthdHRyLmFyaWEtcm9sZWRlc2NyaXB0aW9uXT1cImFyaWFTbGlkZUxhYmVsKClcIiBbc3R5bGUud2lkdGhdPVwiJzEwMCUnXCI+XG4gICAgICAgICAgICAgICAgICAgIDxwLWdhbGxlcmlhSXRlbVNsb3QgdHlwZT1cIml0ZW1cIiBbaXRlbV09XCJhY3RpdmVJdGVtXCIgW3RlbXBsYXRlc109XCJ0ZW1wbGF0ZXNcIiBjbGFzcz1cInAtZ2FsbGVyaWEtaXRlbVwiPjwvcC1nYWxsZXJpYUl0ZW1TbG90PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJzaG93SXRlbU5hdmlnYXRvcnNcIlxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAncC1nYWxsZXJpYS1pdGVtLW5leHQgcC1nYWxsZXJpYS1pdGVtLW5hdiBwLWxpbmsnOiB0cnVlLCAncC1nYWxsZXJpYS1pdGVtLW5hdi1mb2N1c2VkJzogcmlnaHRCdXR0b25Gb2N1c2VkLCAncC1kaXNhYmxlZCc6IHRoaXMuaXNOYXZGb3J3YXJkRGlzYWJsZWQoKSB9XCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm5hdkZvcndhcmQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJpc05hdkZvcndhcmREaXNhYmxlZCgpXCJcbiAgICAgICAgICAgICAgICAgICAgcFJpcHBsZVxuICAgICAgICAgICAgICAgICAgICByb2xlPVwibmF2aWdhdGlvblwiXG4gICAgICAgICAgICAgICAgICAgIChmb2N1cyk9XCJvbkJ1dHRvbkZvY3VzKCdyaWdodCcpXCJcbiAgICAgICAgICAgICAgICAgICAgKGJsdXIpPVwib25CdXR0b25CbHVyKCdyaWdodCcpXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxDaGV2cm9uUmlnaHRJY29uICpuZ0lmPVwiIWdhbGxlcmlhLml0ZW1OZXh0SWNvblRlbXBsYXRlXCIgW3N0eWxlQ2xhc3NdPVwiJ3AtZ2FsbGVyaWEtaXRlbS1uZXh0LWljb24nXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICpuZ1RlbXBsYXRlT3V0bGV0PVwiZ2FsbGVyaWEuaXRlbU5leHRJY29uVGVtcGxhdGVcIj48L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLWdhbGxlcmlhLWNhcHRpb25cIiAqbmdJZj1cImNhcHRpb25GYWNldFwiPlxuICAgICAgICAgICAgICAgICAgICA8cC1nYWxsZXJpYUl0ZW1TbG90IHR5cGU9XCJjYXB0aW9uXCIgW2l0ZW1dPVwiYWN0aXZlSXRlbVwiIFt0ZW1wbGF0ZXNdPVwidGVtcGxhdGVzXCI+PC9wLWdhbGxlcmlhSXRlbVNsb3Q+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDx1bCAqbmdJZj1cInNob3dJbmRpY2F0b3JzXCIgY2xhc3M9XCJwLWdhbGxlcmlhLWluZGljYXRvcnMgcC1yZXNldFwiPlxuICAgICAgICAgICAgICAgIDxsaVxuICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiB2YWx1ZTsgbGV0IGluZGV4ID0gaW5kZXhcIlxuICAgICAgICAgICAgICAgICAgICB0YWJpbmRleD1cIjBcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25JbmRpY2F0b3JDbGljayhpbmRleClcIlxuICAgICAgICAgICAgICAgICAgICAobW91c2VlbnRlcik9XCJvbkluZGljYXRvck1vdXNlRW50ZXIoaW5kZXgpXCJcbiAgICAgICAgICAgICAgICAgICAgKGtleWRvd24pPVwib25JbmRpY2F0b3JLZXlEb3duKCRldmVudCwgaW5kZXgpXCJcbiAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAncC1nYWxsZXJpYS1pbmRpY2F0b3InOiB0cnVlLCAncC1oaWdobGlnaHQnOiBpc0luZGljYXRvckl0ZW1BY3RpdmUoaW5kZXgpIH1cIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImFyaWFQYWdlTGFiZWwoaW5kZXggKyAxKVwiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtc2VsZWN0ZWRdPVwiYWN0aXZlSW5kZXggPT09IGluZGV4XCJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1jb250cm9sc109XCJpZCArICdfaXRlbV8nICsgaW5kZXhcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgdGFiSW5kZXg9XCItMVwiIGNsYXNzPVwicC1saW5rXCIgKm5nSWY9XCIhaW5kaWNhdG9yRmFjZXRcIj48L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPHAtZ2FsbGVyaWFJdGVtU2xvdCB0eXBlPVwiaW5kaWNhdG9yXCIgW2luZGV4XT1cImluZGV4XCIgW3RlbXBsYXRlc109XCJ0ZW1wbGF0ZXNcIj48L3AtZ2FsbGVyaWFJdGVtU2xvdD5cbiAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgPC91bD5cbiAgICAgICAgPC9kaXY+XG4gICAgYCxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBHYWxsZXJpYUl0ZW0gaW1wbGVtZW50cyBPbkNoYW5nZXMge1xuICAgIEBJbnB1dCgpIGlkOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgY2lyY3VsYXI6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpIHZhbHVlOiBhbnlbXSB8IHVuZGVmaW5lZDtcblxuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBzaG93SXRlbU5hdmlnYXRvcnM6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBzaG93SW5kaWNhdG9yczogYm9vbGVhbiA9IHRydWU7XG5cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgc2xpZGVTaG93QWN0aXZlOiBib29sZWFuID0gdHJ1ZTtcblxuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBjaGFuZ2VJdGVtT25JbmRpY2F0b3JIb3ZlcjogYm9vbGVhbiA9IHRydWU7XG5cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgYXV0b1BsYXk6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpIHRlbXBsYXRlczogUXVlcnlMaXN0PENheFRlbXBsYXRlPiB8IHVuZGVmaW5lZDtcblxuICAgIEBJbnB1dCgpIGluZGljYXRvckZhY2V0OiBhbnk7XG5cbiAgICBASW5wdXQoKSBjYXB0aW9uRmFjZXQ6IGFueTtcblxuICAgIEBPdXRwdXQoKSBzdGFydFNsaWRlU2hvdzogRXZlbnRFbWl0dGVyPEV2ZW50PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIEBPdXRwdXQoKSBzdG9wU2xpZGVTaG93OiBFdmVudEVtaXR0ZXI8RXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQE91dHB1dCgpIG9uQWN0aXZlSW5kZXhDaGFuZ2U6IEV2ZW50RW1pdHRlcjxudW1iZXI+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQElucHV0KCkgZ2V0IGFjdGl2ZUluZGV4KCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLl9hY3RpdmVJbmRleDtcbiAgICB9XG5cbiAgICBzZXQgYWN0aXZlSW5kZXgoYWN0aXZlSW5kZXgpIHtcbiAgICAgICAgdGhpcy5fYWN0aXZlSW5kZXggPSBhY3RpdmVJbmRleDtcbiAgICB9XG5cbiAgICBnZXQgYWN0aXZlSXRlbSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmFsdWUgJiYgdGhpcy52YWx1ZVt0aGlzLl9hY3RpdmVJbmRleF07XG4gICAgfVxuXG4gICAgX2FjdGl2ZUluZGV4OiBudW1iZXIgPSAwO1xuXG4gICAgbGVmdEJ1dHRvbkZvY3VzZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIHJpZ2h0QnV0dG9uRm9jdXNlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgY29uc3RydWN0b3IocHVibGljIGdhbGxlcmlhOiBHYWxsZXJpYSkge31cblxuICAgIG5nT25DaGFuZ2VzKHsgYXV0b1BsYXkgfTogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgICAgICBpZiAoYXV0b1BsYXk/LmN1cnJlbnRWYWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5zdGFydFNsaWRlU2hvdy5lbWl0KCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoYXV0b1BsYXkgJiYgYXV0b1BsYXkuY3VycmVudFZhbHVlID09PSBmYWxzZSkge1xuICAgICAgICAgICAgdGhpcy5zdG9wVGhlU2xpZGVTaG93KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZXh0KCkge1xuICAgICAgICBsZXQgbmV4dEl0ZW1JbmRleCA9IHRoaXMuYWN0aXZlSW5kZXggKyAxO1xuICAgICAgICBsZXQgYWN0aXZlSW5kZXggPSB0aGlzLmNpcmN1bGFyICYmICg8YW55W10+dGhpcy52YWx1ZSkubGVuZ3RoIC0gMSA9PT0gdGhpcy5hY3RpdmVJbmRleCA/IDAgOiBuZXh0SXRlbUluZGV4O1xuICAgICAgICB0aGlzLm9uQWN0aXZlSW5kZXhDaGFuZ2UuZW1pdChhY3RpdmVJbmRleCk7XG4gICAgfVxuXG4gICAgcHJldigpIHtcbiAgICAgICAgbGV0IHByZXZJdGVtSW5kZXggPSB0aGlzLmFjdGl2ZUluZGV4ICE9PSAwID8gdGhpcy5hY3RpdmVJbmRleCAtIDEgOiAwO1xuICAgICAgICBsZXQgYWN0aXZlSW5kZXggPSB0aGlzLmNpcmN1bGFyICYmIHRoaXMuYWN0aXZlSW5kZXggPT09IDAgPyAoPGFueVtdPnRoaXMudmFsdWUpLmxlbmd0aCAtIDEgOiBwcmV2SXRlbUluZGV4O1xuICAgICAgICB0aGlzLm9uQWN0aXZlSW5kZXhDaGFuZ2UuZW1pdChhY3RpdmVJbmRleCk7XG4gICAgfVxuXG4gICAgb25CdXR0b25Gb2N1cyhwb3M6ICdsZWZ0JyB8ICdyaWdodCcpIHtcbiAgICAgICAgaWYgKHBvcyA9PT0gJ2xlZnQnKSB7XG4gICAgICAgICAgICB0aGlzLmxlZnRCdXR0b25Gb2N1c2VkID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIHRoaXMucmlnaHRCdXR0b25Gb2N1c2VkID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBvbkJ1dHRvbkJsdXIocG9zOiAnbGVmdCcgfCAncmlnaHQnKSB7XG4gICAgICAgIGlmIChwb3MgPT09ICdsZWZ0Jykge1xuICAgICAgICAgICAgdGhpcy5sZWZ0QnV0dG9uRm9jdXNlZCA9IGZhbHNlO1xuICAgICAgICB9IGVsc2UgdGhpcy5yaWdodEJ1dHRvbkZvY3VzZWQgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBzdG9wVGhlU2xpZGVTaG93KCkge1xuICAgICAgICBpZiAodGhpcy5zbGlkZVNob3dBY3RpdmUgJiYgdGhpcy5zdG9wU2xpZGVTaG93KSB7XG4gICAgICAgICAgICB0aGlzLnN0b3BTbGlkZVNob3cuZW1pdCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmF2Rm9yd2FyZChlOiBNb3VzZUV2ZW50KSB7XG4gICAgICAgIHRoaXMuc3RvcFRoZVNsaWRlU2hvdygpO1xuICAgICAgICB0aGlzLm5leHQoKTtcblxuICAgICAgICBpZiAoZSAmJiBlLmNhbmNlbGFibGUpIHtcbiAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5hdkJhY2t3YXJkKGU6IE1vdXNlRXZlbnQpIHtcbiAgICAgICAgdGhpcy5zdG9wVGhlU2xpZGVTaG93KCk7XG4gICAgICAgIHRoaXMucHJldigpO1xuXG4gICAgICAgIGlmIChlICYmIGUuY2FuY2VsYWJsZSkge1xuICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25JbmRpY2F0b3JDbGljayhpbmRleDogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuc3RvcFRoZVNsaWRlU2hvdygpO1xuICAgICAgICB0aGlzLm9uQWN0aXZlSW5kZXhDaGFuZ2UuZW1pdChpbmRleCk7XG4gICAgfVxuXG4gICAgb25JbmRpY2F0b3JNb3VzZUVudGVyKGluZGV4OiBudW1iZXIpIHtcbiAgICAgICAgaWYgKHRoaXMuY2hhbmdlSXRlbU9uSW5kaWNhdG9ySG92ZXIpIHtcbiAgICAgICAgICAgIHRoaXMuc3RvcFRoZVNsaWRlU2hvdygpO1xuICAgICAgICAgICAgdGhpcy5vbkFjdGl2ZUluZGV4Q2hhbmdlLmVtaXQoaW5kZXgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25JbmRpY2F0b3JLZXlEb3duKGV2ZW50LCBpbmRleDogbnVtYmVyKSB7XG4gICAgICAgIHN3aXRjaCAoZXZlbnQuY29kZSkge1xuICAgICAgICAgICAgY2FzZSAnRW50ZXInOlxuICAgICAgICAgICAgY2FzZSAnU3BhY2UnOlxuICAgICAgICAgICAgICAgIHRoaXMuc3RvcFRoZVNsaWRlU2hvdygpO1xuICAgICAgICAgICAgICAgIHRoaXMub25BY3RpdmVJbmRleENoYW5nZS5lbWl0KGluZGV4KTtcbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBjYXNlICdBcnJvd0Rvd24nOlxuICAgICAgICAgICAgY2FzZSAnQXJyb3dVcCc6XG4gICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGlzTmF2Rm9yd2FyZERpc2FibGVkKCkge1xuICAgICAgICByZXR1cm4gIXRoaXMuY2lyY3VsYXIgJiYgdGhpcy5hY3RpdmVJbmRleCA9PT0gKDxhbnlbXT50aGlzLnZhbHVlKS5sZW5ndGggLSAxO1xuICAgIH1cblxuICAgIGlzTmF2QmFja3dhcmREaXNhYmxlZCgpIHtcbiAgICAgICAgcmV0dXJuICF0aGlzLmNpcmN1bGFyICYmIHRoaXMuYWN0aXZlSW5kZXggPT09IDA7XG4gICAgfVxuXG4gICAgaXNJbmRpY2F0b3JJdGVtQWN0aXZlKGluZGV4OiBudW1iZXIpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYWN0aXZlSW5kZXggPT09IGluZGV4O1xuICAgIH1cblxuICAgIGFyaWFTbGlkZUxhYmVsKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5nYWxsZXJpYS5jb25maWcudHJhbnNsYXRpb24uYXJpYSA/IHRoaXMuZ2FsbGVyaWEuY29uZmlnLnRyYW5zbGF0aW9uLmFyaWEuc2xpZGUgOiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgYXJpYVNsaWRlTnVtYmVyKHZhbHVlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdhbGxlcmlhLmNvbmZpZy50cmFuc2xhdGlvbi5hcmlhID8gdGhpcy5nYWxsZXJpYS5jb25maWcudHJhbnNsYXRpb24uYXJpYS5zbGlkZU51bWJlci5yZXBsYWNlKC97c2xpZGVOdW1iZXJ9L2csIHZhbHVlKSA6IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBhcmlhUGFnZUxhYmVsKHZhbHVlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdhbGxlcmlhLmNvbmZpZy50cmFuc2xhdGlvbi5hcmlhID8gdGhpcy5nYWxsZXJpYS5jb25maWcudHJhbnNsYXRpb24uYXJpYS5wYWdlTGFiZWwucmVwbGFjZSgve3BhZ2V9L2csIHZhbHVlKSA6IHVuZGVmaW5lZDtcbiAgICB9XG59XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAncC1nYWxsZXJpYVRodW1ibmFpbHMnLFxuICAgIHRlbXBsYXRlOiBgXG4gICAgICAgIDxkaXYgY2xhc3M9XCJwLWdhbGxlcmlhLXRodW1ibmFpbC13cmFwcGVyXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC1nYWxsZXJpYS10aHVtYm5haWwtY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInNob3dUaHVtYm5haWxOYXZpZ2F0b3JzXCJcbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ3AtZ2FsbGVyaWEtdGh1bWJuYWlsLXByZXYgcC1saW5rJzogdHJ1ZSwgJ3AtZGlzYWJsZWQnOiB0aGlzLmlzTmF2QmFja3dhcmREaXNhYmxlZCgpIH1cIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwibmF2QmFja3dhcmQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJpc05hdkJhY2t3YXJkRGlzYWJsZWQoKVwiXG4gICAgICAgICAgICAgICAgICAgIHBSaXBwbGVcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJhcmlhUHJldkJ1dHRvbkxhYmVsKClcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFnYWxsZXJpYS5wcmV2aW91c1RodW1ibmFpbEljb25UZW1wbGF0ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPENoZXZyb25MZWZ0SWNvbiAqbmdJZj1cIiFpc1ZlcnRpY2FsXCIgW3N0eWxlQ2xhc3NdPVwiJ3AtZ2FsbGVyaWEtdGh1bWJuYWlsLXByZXYtaWNvbidcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPENoZXZyb25VcEljb24gKm5nSWY9XCJpc1ZlcnRpY2FsXCIgW3N0eWxlQ2xhc3NdPVwiJ3AtZ2FsbGVyaWEtdGh1bWJuYWlsLXByZXYtaWNvbidcIiAvPlxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICpuZ1RlbXBsYXRlT3V0bGV0PVwiZ2FsbGVyaWEucHJldmlvdXNUaHVtYm5haWxJY29uVGVtcGxhdGVcIj48L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLWdhbGxlcmlhLXRodW1ibmFpbC1pdGVtcy1jb250YWluZXJcIiBbbmdTdHlsZV09XCJ7IGhlaWdodDogaXNWZXJ0aWNhbCA/IGNvbnRlbnRIZWlnaHQgOiAnJyB9XCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgI2l0ZW1zQ29udGFpbmVyIGNsYXNzPVwicC1nYWxsZXJpYS10aHVtYm5haWwtaXRlbXNcIiAodHJhbnNpdGlvbmVuZCk9XCJvblRyYW5zaXRpb25FbmQoKVwiICh0b3VjaHN0YXJ0KT1cIm9uVG91Y2hTdGFydCgkZXZlbnQpXCIgKHRvdWNobW92ZSk9XCJvblRvdWNoTW92ZSgkZXZlbnQpXCIgcm9sZT1cInRhYmxpc3RcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiB2YWx1ZTsgbGV0IGluZGV4ID0gaW5kZXhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3AtZ2FsbGVyaWEtdGh1bWJuYWlsLWl0ZW0nOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncC1nYWxsZXJpYS10aHVtYm5haWwtaXRlbS1jdXJyZW50JzogYWN0aXZlSW5kZXggPT09IGluZGV4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncC1nYWxsZXJpYS10aHVtYm5haWwtaXRlbS1hY3RpdmUnOiBpc0l0ZW1BY3RpdmUoaW5kZXgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncC1nYWxsZXJpYS10aHVtYm5haWwtaXRlbS1zdGFydCc6IGZpcnN0SXRlbUFjaXZlSW5kZXgoKSA9PT0gaW5kZXgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwLWdhbGxlcmlhLXRodW1ibmFpbC1pdGVtLWVuZCc6IGxhc3RJdGVtQWN0aXZlSW5kZXgoKSA9PT0gaW5kZXhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLXNlbGVjdGVkXT1cImFjdGl2ZUluZGV4ID09PSBpbmRleFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1jb250cm9sc109XCJjb250YWluZXJJZCArICdfaXRlbV8nICsgaW5kZXhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmRhdGEtcGMtc2VjdGlvbl09XCIndGh1bWJuYWlsaXRlbSdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmRhdGEtcC1hY3RpdmVdPVwiYWN0aXZlSW5kZXggPT09IGluZGV4XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoa2V5ZG93bik9XCJvblRodW1ibmFpbEtleWRvd24oJGV2ZW50LCBpbmRleClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwLWdhbGxlcmlhLXRodW1ibmFpbC1pdGVtLWNvbnRlbnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci50YWJpbmRleF09XCJhY3RpdmVJbmRleCA9PT0gaW5kZXggPyAwIDogLTFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWN1cnJlbnRdPVwiYWN0aXZlSW5kZXggPT09IGluZGV4ID8gJ3BhZ2UnIDogdW5kZWZpbmVkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJhcmlhUGFnZUxhYmVsKGluZGV4ICsgMSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25JdGVtQ2xpY2soaW5kZXgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRvdWNoZW5kKT1cIm9uSXRlbUNsaWNrKGluZGV4KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChrZXlkb3duLmVudGVyKT1cIm9uSXRlbUNsaWNrKGluZGV4KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cC1nYWxsZXJpYUl0ZW1TbG90IHR5cGU9XCJ0aHVtYm5haWxcIiBbaXRlbV09XCJpdGVtXCIgW3RlbXBsYXRlc109XCJ0ZW1wbGF0ZXNcIj48L3AtZ2FsbGVyaWFJdGVtU2xvdD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwic2hvd1RodW1ibmFpbE5hdmlnYXRvcnNcIlxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAncC1nYWxsZXJpYS10aHVtYm5haWwtbmV4dCBwLWxpbmsnOiB0cnVlLCAncC1kaXNhYmxlZCc6IHRoaXMuaXNOYXZGb3J3YXJkRGlzYWJsZWQoKSB9XCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm5hdkZvcndhcmQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJpc05hdkZvcndhcmREaXNhYmxlZCgpXCJcbiAgICAgICAgICAgICAgICAgICAgcFJpcHBsZVxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImFyaWFOZXh0QnV0dG9uTGFiZWwoKVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWdhbGxlcmlhLm5leHRUaHVtYm5haWxJY29uVGVtcGxhdGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxDaGV2cm9uUmlnaHRJY29uICpuZ0lmPVwiIWlzVmVydGljYWxcIiBbbmdDbGFzc109XCIncC1nYWxsZXJpYS10aHVtYm5haWwtbmV4dC1pY29uJ1wiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8Q2hldnJvbkRvd25JY29uICpuZ0lmPVwiaXNWZXJ0aWNhbFwiIFtuZ0NsYXNzXT1cIidwLWdhbGxlcmlhLXRodW1ibmFpbC1uZXh0LWljb24nXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAqbmdUZW1wbGF0ZU91dGxldD1cImdhbGxlcmlhLm5leHRUaHVtYm5haWxJY29uVGVtcGxhdGVcIj48L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIGAsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgR2FsbGVyaWFUaHVtYm5haWxzIGltcGxlbWVudHMgT25Jbml0LCBBZnRlckNvbnRlbnRDaGVja2VkLCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuICAgIEBJbnB1dCgpIGNvbnRhaW5lcklkOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgICBASW5wdXQoKSB2YWx1ZTogYW55W10gfCB1bmRlZmluZWQ7XG5cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgaXNWZXJ0aWNhbDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIHNsaWRlU2hvd0FjdGl2ZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGNpcmN1bGFyOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKSByZXNwb25zaXZlT3B0aW9uczogR2FsbGVyaWFSZXNwb25zaXZlT3B0aW9uc1tdIHwgdW5kZWZpbmVkO1xuXG4gICAgQElucHV0KCkgY29udGVudEhlaWdodDogc3RyaW5nID0gJzMwMHB4JztcblxuICAgIEBJbnB1dCgpIHNob3dUaHVtYm5haWxOYXZpZ2F0b3JzID0gdHJ1ZTtcblxuICAgIEBJbnB1dCgpIHRlbXBsYXRlczogUXVlcnlMaXN0PENheFRlbXBsYXRlPiB8IHVuZGVmaW5lZDtcblxuICAgIEBPdXRwdXQoKSBvbkFjdGl2ZUluZGV4Q2hhbmdlOiBFdmVudEVtaXR0ZXI8bnVtYmVyPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIEBPdXRwdXQoKSBzdG9wU2xpZGVTaG93OiBFdmVudEVtaXR0ZXI8RXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQFZpZXdDaGlsZCgnaXRlbXNDb250YWluZXInKSBpdGVtc0NvbnRhaW5lcjogRWxlbWVudFJlZiB8IHVuZGVmaW5lZDtcblxuICAgIEBJbnB1dCgpIGdldCBudW1WaXNpYmxlKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLl9udW1WaXNpYmxlO1xuICAgIH1cblxuICAgIHNldCBudW1WaXNpYmxlKG51bVZpc2libGUpIHtcbiAgICAgICAgdGhpcy5fbnVtVmlzaWJsZSA9IG51bVZpc2libGU7XG4gICAgICAgIHRoaXMuX29sZE51bVZpc2libGUgPSB0aGlzLmRfbnVtVmlzaWJsZTtcbiAgICAgICAgdGhpcy5kX251bVZpc2libGUgPSBudW1WaXNpYmxlO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIGdldCBhY3RpdmVJbmRleCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5fYWN0aXZlSW5kZXg7XG4gICAgfVxuXG4gICAgc2V0IGFjdGl2ZUluZGV4KGFjdGl2ZUluZGV4KSB7XG4gICAgICAgIHRoaXMuX29sZGFjdGl2ZUluZGV4ID0gdGhpcy5fYWN0aXZlSW5kZXg7XG4gICAgICAgIHRoaXMuX2FjdGl2ZUluZGV4ID0gYWN0aXZlSW5kZXg7XG4gICAgfVxuXG4gICAgaW5kZXg6IG51bWJlciB8IHVuZGVmaW5lZDtcblxuICAgIHN0YXJ0UG9zOiB7IHg6IG51bWJlcjsgeTogbnVtYmVyIH0gfCBudWxsID0gbnVsbDtcblxuICAgIHRodW1ibmFpbHNTdHlsZTogSFRNTFN0eWxlRWxlbWVudCB8IG51bGwgPSBudWxsO1xuXG4gICAgc29ydGVkUmVzcG9uc2l2ZU9wdGlvbnM6IEdhbGxlcmlhUmVzcG9uc2l2ZU9wdGlvbnNbXSB8IG51bGwgPSBudWxsO1xuXG4gICAgdG90YWxTaGlmdGVkSXRlbXM6IG51bWJlciA9IDA7XG5cbiAgICBwYWdlOiBudW1iZXIgPSAwO1xuXG4gICAgZG9jdW1lbnRSZXNpemVMaXN0ZW5lcjogVm9pZExpc3RlbmVyO1xuXG4gICAgX251bVZpc2libGU6IG51bWJlciA9IDA7XG5cbiAgICBkX251bVZpc2libGU6IG51bWJlciA9IDA7XG5cbiAgICBfb2xkTnVtVmlzaWJsZTogbnVtYmVyID0gMDtcblxuICAgIF9hY3RpdmVJbmRleDogbnVtYmVyID0gMDtcblxuICAgIF9vbGRhY3RpdmVJbmRleDogbnVtYmVyID0gMDtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwdWJsaWMgZ2FsbGVyaWE6IEdhbGxlcmlhLFxuICAgICAgICBASW5qZWN0KERPQ1VNRU5UKSBwcml2YXRlIGRvY3VtZW50OiBEb2N1bWVudCxcbiAgICAgICAgQEluamVjdChQTEFURk9STV9JRCkgcHJpdmF0ZSBwbGF0Zm9ybUlkOiBhbnksXG4gICAgICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICAgICAgcHJpdmF0ZSBjZDogQ2hhbmdlRGV0ZWN0b3JSZWZcbiAgICApIHt9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgaWYgKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHtcbiAgICAgICAgICAgIHRoaXMuY3JlYXRlU3R5bGUoKTtcblxuICAgICAgICAgICAgaWYgKHRoaXMucmVzcG9uc2l2ZU9wdGlvbnMpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmJpbmREb2N1bWVudExpc3RlbmVycygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdBZnRlckNvbnRlbnRDaGVja2VkKCkge1xuICAgICAgICBsZXQgdG90YWxTaGlmdGVkSXRlbXMgPSB0aGlzLnRvdGFsU2hpZnRlZEl0ZW1zO1xuXG4gICAgICAgIGlmICgodGhpcy5fb2xkTnVtVmlzaWJsZSAhPT0gdGhpcy5kX251bVZpc2libGUgfHwgdGhpcy5fb2xkYWN0aXZlSW5kZXggIT09IHRoaXMuX2FjdGl2ZUluZGV4KSAmJiB0aGlzLml0ZW1zQ29udGFpbmVyKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5fYWN0aXZlSW5kZXggPD0gdGhpcy5nZXRNZWRpYW5JdGVtSW5kZXgoKSkge1xuICAgICAgICAgICAgICAgIHRvdGFsU2hpZnRlZEl0ZW1zID0gMDtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoKDxhbnlbXT50aGlzLnZhbHVlKS5sZW5ndGggLSB0aGlzLmRfbnVtVmlzaWJsZSArIHRoaXMuZ2V0TWVkaWFuSXRlbUluZGV4KCkgPCB0aGlzLl9hY3RpdmVJbmRleCkge1xuICAgICAgICAgICAgICAgIHRvdGFsU2hpZnRlZEl0ZW1zID0gdGhpcy5kX251bVZpc2libGUgLSAoPGFueVtdPnRoaXMudmFsdWUpLmxlbmd0aDtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoKDxhbnlbXT50aGlzLnZhbHVlKS5sZW5ndGggLSB0aGlzLmRfbnVtVmlzaWJsZSA8IHRoaXMuX2FjdGl2ZUluZGV4ICYmIHRoaXMuZF9udW1WaXNpYmxlICUgMiA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHRvdGFsU2hpZnRlZEl0ZW1zID0gdGhpcy5fYWN0aXZlSW5kZXggKiAtMSArIHRoaXMuZ2V0TWVkaWFuSXRlbUluZGV4KCkgKyAxO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0b3RhbFNoaWZ0ZWRJdGVtcyA9IHRoaXMuX2FjdGl2ZUluZGV4ICogLTEgKyB0aGlzLmdldE1lZGlhbkl0ZW1JbmRleCgpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodG90YWxTaGlmdGVkSXRlbXMgIT09IHRoaXMudG90YWxTaGlmdGVkSXRlbXMpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnRvdGFsU2hpZnRlZEl0ZW1zID0gdG90YWxTaGlmdGVkSXRlbXM7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh0aGlzLml0ZW1zQ29udGFpbmVyICYmIHRoaXMuaXRlbXNDb250YWluZXIubmF0aXZlRWxlbWVudCkge1xuICAgICAgICAgICAgICAgIHRoaXMuaXRlbXNDb250YWluZXIubmF0aXZlRWxlbWVudC5zdHlsZS50cmFuc2Zvcm0gPSB0aGlzLmlzVmVydGljYWwgPyBgdHJhbnNsYXRlM2QoMCwgJHt0b3RhbFNoaWZ0ZWRJdGVtcyAqICgxMDAgLyB0aGlzLmRfbnVtVmlzaWJsZSl9JSwgMClgIDogYHRyYW5zbGF0ZTNkKCR7dG90YWxTaGlmdGVkSXRlbXMgKiAoMTAwIC8gdGhpcy5kX251bVZpc2libGUpfSUsIDAsIDApYDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHRoaXMuX29sZGFjdGl2ZUluZGV4ICE9PSB0aGlzLl9hY3RpdmVJbmRleCkge1xuICAgICAgICAgICAgICAgIERvbUhhbmRsZXIucmVtb3ZlQ2xhc3ModGhpcy5pdGVtc0NvbnRhaW5lci5uYXRpdmVFbGVtZW50LCAncC1pdGVtcy1oaWRkZW4nKTtcbiAgICAgICAgICAgICAgICB0aGlzLml0ZW1zQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuc3R5bGUudHJhbnNpdGlvbiA9ICd0cmFuc2Zvcm0gNTAwbXMgZWFzZSAwcyc7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuX29sZGFjdGl2ZUluZGV4ID0gdGhpcy5fYWN0aXZlSW5kZXg7XG4gICAgICAgICAgICB0aGlzLl9vbGROdW1WaXNpYmxlID0gdGhpcy5kX251bVZpc2libGU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgICAgIGlmIChpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSB7XG4gICAgICAgICAgICB0aGlzLmNhbGN1bGF0ZVBvc2l0aW9uKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjcmVhdGVTdHlsZSgpIHtcbiAgICAgICAgaWYgKCF0aGlzLnRodW1ibmFpbHNTdHlsZSkge1xuICAgICAgICAgICAgdGhpcy50aHVtYm5haWxzU3R5bGUgPSB0aGlzLmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3N0eWxlJyk7XG4gICAgICAgICAgICB0aGlzLmRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodGhpcy50aHVtYm5haWxzU3R5bGUpO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGlubmVySFRNTCA9IGBcbiAgICAgICAgICAgICMke3RoaXMuY29udGFpbmVySWR9IC5wLWdhbGxlcmlhLXRodW1ibmFpbC1pdGVtIHtcbiAgICAgICAgICAgICAgICBmbGV4OiAxIDAgJHsxMDAgLyB0aGlzLmRfbnVtVmlzaWJsZX0lXG4gICAgICAgICAgICB9XG4gICAgICAgIGA7XG5cbiAgICAgICAgaWYgKHRoaXMucmVzcG9uc2l2ZU9wdGlvbnMpIHtcbiAgICAgICAgICAgIHRoaXMuc29ydGVkUmVzcG9uc2l2ZU9wdGlvbnMgPSBbLi4udGhpcy5yZXNwb25zaXZlT3B0aW9uc107XG4gICAgICAgICAgICB0aGlzLnNvcnRlZFJlc3BvbnNpdmVPcHRpb25zLnNvcnQoKGRhdGExLCBkYXRhMikgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlMSA9IGRhdGExLmJyZWFrcG9pbnQ7XG4gICAgICAgICAgICAgICAgY29uc3QgdmFsdWUyID0gZGF0YTIuYnJlYWtwb2ludDtcbiAgICAgICAgICAgICAgICBsZXQgcmVzdWx0ID0gbnVsbDtcblxuICAgICAgICAgICAgICAgIGlmICh2YWx1ZTEgPT0gbnVsbCAmJiB2YWx1ZTIgIT0gbnVsbCkgcmVzdWx0ID0gLTE7XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAodmFsdWUxICE9IG51bGwgJiYgdmFsdWUyID09IG51bGwpIHJlc3VsdCA9IDE7XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAodmFsdWUxID09IG51bGwgJiYgdmFsdWUyID09IG51bGwpIHJlc3VsdCA9IDA7XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAodHlwZW9mIHZhbHVlMSA9PT0gJ3N0cmluZycgJiYgdHlwZW9mIHZhbHVlMiA9PT0gJ3N0cmluZycpIHJlc3VsdCA9IHZhbHVlMS5sb2NhbGVDb21wYXJlKHZhbHVlMiwgdW5kZWZpbmVkLCB7IG51bWVyaWM6IHRydWUgfSk7XG4gICAgICAgICAgICAgICAgZWxzZSByZXN1bHQgPSB2YWx1ZTEgPCB2YWx1ZTIgPyAtMSA6IHZhbHVlMSA+IHZhbHVlMiA/IDEgOiAwO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIC0xICogcmVzdWx0O1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5zb3J0ZWRSZXNwb25zaXZlT3B0aW9ucy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIGxldCByZXMgPSB0aGlzLnNvcnRlZFJlc3BvbnNpdmVPcHRpb25zW2ldO1xuXG4gICAgICAgICAgICAgICAgaW5uZXJIVE1MICs9IGBcbiAgICAgICAgICAgICAgICAgICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogJHtyZXMuYnJlYWtwb2ludH0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICMke3RoaXMuY29udGFpbmVySWR9IC5wLWdhbGxlcmlhLXRodW1ibmFpbC1pdGVtIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGV4OiAxIDAgJHsxMDAgLyByZXMubnVtVmlzaWJsZX0lXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBgO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy50aHVtYm5haWxzU3R5bGUuaW5uZXJIVE1MID0gaW5uZXJIVE1MO1xuICAgICAgICBEb21IYW5kbGVyLnNldEF0dHJpYnV0ZSh0aGlzLnRodW1ibmFpbHNTdHlsZSwgJ25vbmNlJywgdGhpcy5nYWxsZXJpYS5jb25maWc/LmNzcCgpPy5ub25jZSk7XG4gICAgfVxuXG4gICAgY2FsY3VsYXRlUG9zaXRpb24oKSB7XG4gICAgICAgIGlmIChpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5pdGVtc0NvbnRhaW5lciAmJiB0aGlzLnNvcnRlZFJlc3BvbnNpdmVPcHRpb25zKSB7XG4gICAgICAgICAgICAgICAgbGV0IHdpbmRvd1dpZHRoID0gd2luZG93LmlubmVyV2lkdGg7XG4gICAgICAgICAgICAgICAgbGV0IG1hdGNoZWRSZXNwb25zaXZlRGF0YSA9IHtcbiAgICAgICAgICAgICAgICAgICAgbnVtVmlzaWJsZTogdGhpcy5fbnVtVmlzaWJsZVxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuc29ydGVkUmVzcG9uc2l2ZU9wdGlvbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IHJlcyA9IHRoaXMuc29ydGVkUmVzcG9uc2l2ZU9wdGlvbnNbaV07XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHBhcnNlSW50KHJlcy5icmVha3BvaW50LCAxMCkgPj0gd2luZG93V2lkdGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoZWRSZXNwb25zaXZlRGF0YSA9IHJlcztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmRfbnVtVmlzaWJsZSAhPT0gbWF0Y2hlZFJlc3BvbnNpdmVEYXRhLm51bVZpc2libGUpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kX251bVZpc2libGUgPSBtYXRjaGVkUmVzcG9uc2l2ZURhdGEubnVtVmlzaWJsZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXRUYWJJbmRleChpbmRleDogbnVtYmVyKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmlzSXRlbUFjdGl2ZShpbmRleCkgPyAwIDogbnVsbDtcbiAgICB9XG5cbiAgICBuYXZGb3J3YXJkKGU6IFRvdWNoRXZlbnQgfCBNb3VzZUV2ZW50KSB7XG4gICAgICAgIHRoaXMuc3RvcFRoZVNsaWRlU2hvdygpO1xuXG4gICAgICAgIGxldCBuZXh0SXRlbUluZGV4ID0gdGhpcy5fYWN0aXZlSW5kZXggKyAxO1xuICAgICAgICBpZiAobmV4dEl0ZW1JbmRleCArIHRoaXMudG90YWxTaGlmdGVkSXRlbXMgPiB0aGlzLmdldE1lZGlhbkl0ZW1JbmRleCgpICYmICgtMSAqIHRoaXMudG90YWxTaGlmdGVkSXRlbXMgPCB0aGlzLmdldFRvdGFsUGFnZU51bWJlcigpIC0gMSB8fCB0aGlzLmNpcmN1bGFyKSkge1xuICAgICAgICAgICAgdGhpcy5zdGVwKC0xKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBhY3RpdmVJbmRleCA9IHRoaXMuY2lyY3VsYXIgJiYgKDxhbnlbXT50aGlzLnZhbHVlKS5sZW5ndGggLSAxID09PSB0aGlzLl9hY3RpdmVJbmRleCA/IDAgOiBuZXh0SXRlbUluZGV4O1xuICAgICAgICB0aGlzLm9uQWN0aXZlSW5kZXhDaGFuZ2UuZW1pdChhY3RpdmVJbmRleCk7XG5cbiAgICAgICAgaWYgKGUuY2FuY2VsYWJsZSkge1xuICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmF2QmFja3dhcmQoZTogVG91Y2hFdmVudCB8IE1vdXNlRXZlbnQpIHtcbiAgICAgICAgdGhpcy5zdG9wVGhlU2xpZGVTaG93KCk7XG5cbiAgICAgICAgbGV0IHByZXZJdGVtSW5kZXggPSB0aGlzLl9hY3RpdmVJbmRleCAhPT0gMCA/IHRoaXMuX2FjdGl2ZUluZGV4IC0gMSA6IDA7XG4gICAgICAgIGxldCBkaWZmID0gcHJldkl0ZW1JbmRleCArIHRoaXMudG90YWxTaGlmdGVkSXRlbXM7XG4gICAgICAgIGlmICh0aGlzLmRfbnVtVmlzaWJsZSAtIGRpZmYgLSAxID4gdGhpcy5nZXRNZWRpYW5JdGVtSW5kZXgoKSAmJiAoLTEgKiB0aGlzLnRvdGFsU2hpZnRlZEl0ZW1zICE9PSAwIHx8IHRoaXMuY2lyY3VsYXIpKSB7XG4gICAgICAgICAgICB0aGlzLnN0ZXAoMSk7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgYWN0aXZlSW5kZXggPSB0aGlzLmNpcmN1bGFyICYmIHRoaXMuX2FjdGl2ZUluZGV4ID09PSAwID8gKDxhbnlbXT50aGlzLnZhbHVlKS5sZW5ndGggLSAxIDogcHJldkl0ZW1JbmRleDtcbiAgICAgICAgdGhpcy5vbkFjdGl2ZUluZGV4Q2hhbmdlLmVtaXQoYWN0aXZlSW5kZXgpO1xuXG4gICAgICAgIGlmIChlLmNhbmNlbGFibGUpIHtcbiAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uSXRlbUNsaWNrKGluZGV4OiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5zdG9wVGhlU2xpZGVTaG93KCk7XG5cbiAgICAgICAgbGV0IHNlbGVjdGVkSXRlbUluZGV4ID0gaW5kZXg7XG4gICAgICAgIGlmIChzZWxlY3RlZEl0ZW1JbmRleCAhPT0gdGhpcy5fYWN0aXZlSW5kZXgpIHtcbiAgICAgICAgICAgIGNvbnN0IGRpZmYgPSBzZWxlY3RlZEl0ZW1JbmRleCArIHRoaXMudG90YWxTaGlmdGVkSXRlbXM7XG4gICAgICAgICAgICBsZXQgZGlyID0gMDtcbiAgICAgICAgICAgIGlmIChzZWxlY3RlZEl0ZW1JbmRleCA8IHRoaXMuX2FjdGl2ZUluZGV4KSB7XG4gICAgICAgICAgICAgICAgZGlyID0gdGhpcy5kX251bVZpc2libGUgLSBkaWZmIC0gMSAtIHRoaXMuZ2V0TWVkaWFuSXRlbUluZGV4KCk7XG4gICAgICAgICAgICAgICAgaWYgKGRpciA+IDAgJiYgLTEgKiB0aGlzLnRvdGFsU2hpZnRlZEl0ZW1zICE9PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3RlcChkaXIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgZGlyID0gdGhpcy5nZXRNZWRpYW5JdGVtSW5kZXgoKSAtIGRpZmY7XG4gICAgICAgICAgICAgICAgaWYgKGRpciA8IDAgJiYgLTEgKiB0aGlzLnRvdGFsU2hpZnRlZEl0ZW1zIDwgdGhpcy5nZXRUb3RhbFBhZ2VOdW1iZXIoKSAtIDEpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGVwKGRpcik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLmFjdGl2ZUluZGV4ID0gc2VsZWN0ZWRJdGVtSW5kZXg7XG4gICAgICAgICAgICB0aGlzLm9uQWN0aXZlSW5kZXhDaGFuZ2UuZW1pdCh0aGlzLmFjdGl2ZUluZGV4KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uVGh1bWJuYWlsS2V5ZG93bihldmVudDogS2V5Ym9hcmRFdmVudCwgaW5kZXg6IG51bWJlcikge1xuICAgICAgICBpZiAoZXZlbnQuY29kZSA9PT0gJ0VudGVyJyB8fCBldmVudC5jb2RlID09PSAnU3BhY2UnKSB7XG4gICAgICAgICAgICB0aGlzLm9uSXRlbUNsaWNrKGluZGV4KTtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH1cblxuICAgICAgICBzd2l0Y2ggKGV2ZW50LmNvZGUpIHtcbiAgICAgICAgICAgIGNhc2UgJ0Fycm93UmlnaHQnOlxuICAgICAgICAgICAgICAgIHRoaXMub25SaWdodEtleSgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBjYXNlICdBcnJvd0xlZnQnOlxuICAgICAgICAgICAgICAgIHRoaXMub25MZWZ0S2V5KCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgJ0hvbWUnOlxuICAgICAgICAgICAgICAgIHRoaXMub25Ib21lS2V5KCk7XG4gICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgY2FzZSAnRW5kJzpcbiAgICAgICAgICAgICAgICB0aGlzLm9uRW5kS2V5KCk7XG4gICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgY2FzZSAnQXJyb3dVcCc6XG4gICAgICAgICAgICBjYXNlICdBcnJvd0Rvd24nOlxuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgJ1RhYic6XG4gICAgICAgICAgICAgICAgdGhpcy5vblRhYktleSgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25SaWdodEtleSgpIHtcbiAgICAgICAgY29uc3QgaW5kaWNhdG9ycyA9IERvbUhhbmRsZXIuZmluZCh0aGlzLml0ZW1zQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQsICdbZGF0YS1wYy1zZWN0aW9uPVwidGh1bWJuYWlsaXRlbVwiXScpO1xuICAgICAgICBjb25zdCBhY3RpdmVJbmRleCA9IHRoaXMuZmluZEZvY3VzZWRJbmRpY2F0b3JJbmRleCgpO1xuXG4gICAgICAgIHRoaXMuY2hhbmdlZEZvY3VzZWRJbmRpY2F0b3IoYWN0aXZlSW5kZXgsIGFjdGl2ZUluZGV4ICsgMSA9PT0gaW5kaWNhdG9ycy5sZW5ndGggPyBpbmRpY2F0b3JzLmxlbmd0aCAtIDEgOiBhY3RpdmVJbmRleCArIDEpO1xuICAgIH1cblxuICAgIG9uTGVmdEtleSgpIHtcbiAgICAgICAgY29uc3QgYWN0aXZlSW5kZXggPSB0aGlzLmZpbmRGb2N1c2VkSW5kaWNhdG9ySW5kZXgoKTtcblxuICAgICAgICB0aGlzLmNoYW5nZWRGb2N1c2VkSW5kaWNhdG9yKGFjdGl2ZUluZGV4LCBhY3RpdmVJbmRleCAtIDEgPD0gMCA/IDAgOiBhY3RpdmVJbmRleCAtIDEpO1xuICAgIH1cblxuICAgIG9uSG9tZUtleSgpIHtcbiAgICAgICAgY29uc3QgYWN0aXZlSW5kZXggPSB0aGlzLmZpbmRGb2N1c2VkSW5kaWNhdG9ySW5kZXgoKTtcblxuICAgICAgICB0aGlzLmNoYW5nZWRGb2N1c2VkSW5kaWNhdG9yKGFjdGl2ZUluZGV4LCAwKTtcbiAgICB9XG5cbiAgICBvbkVuZEtleSgpIHtcbiAgICAgICAgY29uc3QgaW5kaWNhdG9ycyA9IERvbUhhbmRsZXIuZmluZCh0aGlzLml0ZW1zQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQsICdbZGF0YS1wYy1zZWN0aW9uPVwidGh1bWJuYWlsaXRlbVwiXScpO1xuICAgICAgICBjb25zdCBhY3RpdmVJbmRleCA9IHRoaXMuZmluZEZvY3VzZWRJbmRpY2F0b3JJbmRleCgpO1xuXG4gICAgICAgIHRoaXMuY2hhbmdlZEZvY3VzZWRJbmRpY2F0b3IoYWN0aXZlSW5kZXgsIGluZGljYXRvcnMubGVuZ3RoIC0gMSk7XG4gICAgfVxuXG4gICAgb25UYWJLZXkoKSB7XG4gICAgICAgIGNvbnN0IGluZGljYXRvcnMgPSBbLi4uRG9tSGFuZGxlci5maW5kKHRoaXMuaXRlbXNDb250YWluZXIubmF0aXZlRWxlbWVudCwgJ1tkYXRhLXBjLXNlY3Rpb249XCJ0aHVtYm5haWxpdGVtXCJdJyldO1xuICAgICAgICBjb25zdCBoaWdobGlnaHRlZEluZGV4ID0gaW5kaWNhdG9ycy5maW5kSW5kZXgoKGluZCkgPT4gRG9tSGFuZGxlci5nZXRBdHRyaWJ1dGUoaW5kLCAnZGF0YS1wLWFjdGl2ZScpID09PSB0cnVlKTtcblxuICAgICAgICBjb25zdCBhY3RpdmVJbmRpY2F0b3IgPSBEb21IYW5kbGVyLmZpbmRTaW5nbGUodGhpcy5pdGVtc0NvbnRhaW5lci5uYXRpdmVFbGVtZW50LCAnW3RhYmluZGV4PVwiMFwiXScpO1xuXG4gICAgICAgIGNvbnN0IGFjdGl2ZUluZGV4ID0gaW5kaWNhdG9ycy5maW5kSW5kZXgoKGluZCkgPT4gaW5kID09PSBhY3RpdmVJbmRpY2F0b3IucGFyZW50RWxlbWVudCk7XG5cbiAgICAgICAgaW5kaWNhdG9yc1thY3RpdmVJbmRleF0uY2hpbGRyZW5bMF0udGFiSW5kZXggPSAnLTEnO1xuICAgICAgICBpbmRpY2F0b3JzW2hpZ2hsaWdodGVkSW5kZXhdLmNoaWxkcmVuWzBdLnRhYkluZGV4ID0gJzAnO1xuICAgIH1cblxuICAgIGZpbmRGb2N1c2VkSW5kaWNhdG9ySW5kZXgoKSB7XG4gICAgICAgIGNvbnN0IGluZGljYXRvcnMgPSBbLi4uRG9tSGFuZGxlci5maW5kKHRoaXMuaXRlbXNDb250YWluZXIubmF0aXZlRWxlbWVudCwgJ1tkYXRhLXBjLXNlY3Rpb249XCJ0aHVtYm5haWxpdGVtXCJdJyldO1xuICAgICAgICBjb25zdCBhY3RpdmVJbmRpY2F0b3IgPSBEb21IYW5kbGVyLmZpbmRTaW5nbGUodGhpcy5pdGVtc0NvbnRhaW5lci5uYXRpdmVFbGVtZW50LCAnW2RhdGEtcGMtc2VjdGlvbj1cInRodW1ibmFpbGl0ZW1cIl0gPiBbdGFiaW5kZXg9XCIwXCJdJyk7XG5cbiAgICAgICAgcmV0dXJuIGluZGljYXRvcnMuZmluZEluZGV4KChpbmQpID0+IGluZCA9PT0gYWN0aXZlSW5kaWNhdG9yLnBhcmVudEVsZW1lbnQpO1xuICAgIH1cblxuICAgIGNoYW5nZWRGb2N1c2VkSW5kaWNhdG9yKHByZXZJbmQsIG5leHRJbmQpIHtcbiAgICAgICAgY29uc3QgaW5kaWNhdG9ycyA9IERvbUhhbmRsZXIuZmluZCh0aGlzLml0ZW1zQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQsICdbZGF0YS1wYy1zZWN0aW9uPVwidGh1bWJuYWlsaXRlbVwiXScpO1xuXG4gICAgICAgIGluZGljYXRvcnNbcHJldkluZF0uY2hpbGRyZW5bMF0udGFiSW5kZXggPSAnLTEnO1xuICAgICAgICBpbmRpY2F0b3JzW25leHRJbmRdLmNoaWxkcmVuWzBdLnRhYkluZGV4ID0gJzAnO1xuICAgICAgICBpbmRpY2F0b3JzW25leHRJbmRdLmNoaWxkcmVuWzBdLmZvY3VzKCk7XG4gICAgfVxuXG4gICAgc3RlcChkaXI6IG51bWJlcikge1xuICAgICAgICBsZXQgdG90YWxTaGlmdGVkSXRlbXMgPSB0aGlzLnRvdGFsU2hpZnRlZEl0ZW1zICsgZGlyO1xuXG4gICAgICAgIGlmIChkaXIgPCAwICYmIC0xICogdG90YWxTaGlmdGVkSXRlbXMgKyB0aGlzLmRfbnVtVmlzaWJsZSA+ICg8YW55W10+dGhpcy52YWx1ZSkubGVuZ3RoIC0gMSkge1xuICAgICAgICAgICAgdG90YWxTaGlmdGVkSXRlbXMgPSB0aGlzLmRfbnVtVmlzaWJsZSAtICg8YW55W10+dGhpcy52YWx1ZSkubGVuZ3RoO1xuICAgICAgICB9IGVsc2UgaWYgKGRpciA+IDAgJiYgdG90YWxTaGlmdGVkSXRlbXMgPiAwKSB7XG4gICAgICAgICAgICB0b3RhbFNoaWZ0ZWRJdGVtcyA9IDA7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5jaXJjdWxhcikge1xuICAgICAgICAgICAgaWYgKGRpciA8IDAgJiYgKDxhbnlbXT50aGlzLnZhbHVlKS5sZW5ndGggLSAxID09PSB0aGlzLl9hY3RpdmVJbmRleCkge1xuICAgICAgICAgICAgICAgIHRvdGFsU2hpZnRlZEl0ZW1zID0gMDtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoZGlyID4gMCAmJiB0aGlzLl9hY3RpdmVJbmRleCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHRvdGFsU2hpZnRlZEl0ZW1zID0gdGhpcy5kX251bVZpc2libGUgLSAoPGFueVtdPnRoaXMudmFsdWUpLmxlbmd0aDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLml0ZW1zQ29udGFpbmVyKSB7XG4gICAgICAgICAgICBEb21IYW5kbGVyLnJlbW92ZUNsYXNzKHRoaXMuaXRlbXNDb250YWluZXIubmF0aXZlRWxlbWVudCwgJ3AtaXRlbXMtaGlkZGVuJyk7XG4gICAgICAgICAgICB0aGlzLml0ZW1zQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuc3R5bGUudHJhbnNmb3JtID0gdGhpcy5pc1ZlcnRpY2FsID8gYHRyYW5zbGF0ZTNkKDAsICR7dG90YWxTaGlmdGVkSXRlbXMgKiAoMTAwIC8gdGhpcy5kX251bVZpc2libGUpfSUsIDApYCA6IGB0cmFuc2xhdGUzZCgke3RvdGFsU2hpZnRlZEl0ZW1zICogKDEwMCAvIHRoaXMuZF9udW1WaXNpYmxlKX0lLCAwLCAwKWA7XG4gICAgICAgICAgICB0aGlzLml0ZW1zQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuc3R5bGUudHJhbnNpdGlvbiA9ICd0cmFuc2Zvcm0gNTAwbXMgZWFzZSAwcyc7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnRvdGFsU2hpZnRlZEl0ZW1zID0gdG90YWxTaGlmdGVkSXRlbXM7XG4gICAgfVxuXG4gICAgc3RvcFRoZVNsaWRlU2hvdygpIHtcbiAgICAgICAgaWYgKHRoaXMuc2xpZGVTaG93QWN0aXZlICYmIHRoaXMuc3RvcFNsaWRlU2hvdykge1xuICAgICAgICAgICAgdGhpcy5zdG9wU2xpZGVTaG93LmVtaXQoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNoYW5nZVBhZ2VPblRvdWNoKGU6IFRvdWNoRXZlbnQsIGRpZmY6IG51bWJlcikge1xuICAgICAgICBpZiAoZGlmZiA8IDApIHtcbiAgICAgICAgICAgIC8vIGxlZnRcbiAgICAgICAgICAgIHRoaXMubmF2Rm9yd2FyZChlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIHJpZ2h0XG4gICAgICAgICAgICB0aGlzLm5hdkJhY2t3YXJkKGUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0VG90YWxQYWdlTnVtYmVyKCkge1xuICAgICAgICByZXR1cm4gKDxhbnlbXT50aGlzLnZhbHVlKS5sZW5ndGggPiB0aGlzLmRfbnVtVmlzaWJsZSA/ICg8YW55W10+dGhpcy52YWx1ZSkubGVuZ3RoIC0gdGhpcy5kX251bVZpc2libGUgKyAxIDogMDtcbiAgICB9XG5cbiAgICBnZXRNZWRpYW5JdGVtSW5kZXgoKSB7XG4gICAgICAgIGxldCBpbmRleCA9IE1hdGguZmxvb3IodGhpcy5kX251bVZpc2libGUgLyAyKTtcblxuICAgICAgICByZXR1cm4gdGhpcy5kX251bVZpc2libGUgJSAyID8gaW5kZXggOiBpbmRleCAtIDE7XG4gICAgfVxuXG4gICAgb25UcmFuc2l0aW9uRW5kKCkge1xuICAgICAgICBpZiAodGhpcy5pdGVtc0NvbnRhaW5lciAmJiB0aGlzLml0ZW1zQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQpIHtcbiAgICAgICAgICAgIERvbUhhbmRsZXIuYWRkQ2xhc3ModGhpcy5pdGVtc0NvbnRhaW5lci5uYXRpdmVFbGVtZW50LCAncC1pdGVtcy1oaWRkZW4nKTtcbiAgICAgICAgICAgIHRoaXMuaXRlbXNDb250YWluZXIubmF0aXZlRWxlbWVudC5zdHlsZS50cmFuc2l0aW9uID0gJyc7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvblRvdWNoRW5kKGU6IFRvdWNoRXZlbnQpIHtcbiAgICAgICAgbGV0IHRvdWNob2JqID0gZS5jaGFuZ2VkVG91Y2hlc1swXTtcblxuICAgICAgICBpZiAodGhpcy5pc1ZlcnRpY2FsKSB7XG4gICAgICAgICAgICB0aGlzLmNoYW5nZVBhZ2VPblRvdWNoKGUsIHRvdWNob2JqLnBhZ2VZIC0gKDx7IHg6IG51bWJlcjsgeTogbnVtYmVyIH0+dGhpcy5zdGFydFBvcykueSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmNoYW5nZVBhZ2VPblRvdWNoKGUsIHRvdWNob2JqLnBhZ2VYIC0gKDx7IHg6IG51bWJlcjsgeTogbnVtYmVyIH0+dGhpcy5zdGFydFBvcykueCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvblRvdWNoTW92ZShlOiBUb3VjaEV2ZW50KSB7XG4gICAgICAgIGlmIChlLmNhbmNlbGFibGUpIHtcbiAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uVG91Y2hTdGFydChlOiBUb3VjaEV2ZW50KSB7XG4gICAgICAgIGxldCB0b3VjaG9iaiA9IGUuY2hhbmdlZFRvdWNoZXNbMF07XG5cbiAgICAgICAgdGhpcy5zdGFydFBvcyA9IHtcbiAgICAgICAgICAgIHg6IHRvdWNob2JqLnBhZ2VYLFxuICAgICAgICAgICAgeTogdG91Y2hvYmoucGFnZVlcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBpc05hdkJhY2t3YXJkRGlzYWJsZWQoKSB7XG4gICAgICAgIHJldHVybiAoIXRoaXMuY2lyY3VsYXIgJiYgdGhpcy5fYWN0aXZlSW5kZXggPT09IDApIHx8ICg8YW55W10+dGhpcy52YWx1ZSkubGVuZ3RoIDw9IHRoaXMuZF9udW1WaXNpYmxlO1xuICAgIH1cblxuICAgIGlzTmF2Rm9yd2FyZERpc2FibGVkKCkge1xuICAgICAgICByZXR1cm4gKCF0aGlzLmNpcmN1bGFyICYmIHRoaXMuX2FjdGl2ZUluZGV4ID09PSAoPGFueVtdPnRoaXMudmFsdWUpLmxlbmd0aCAtIDEpIHx8ICg8YW55W10+dGhpcy52YWx1ZSkubGVuZ3RoIDw9IHRoaXMuZF9udW1WaXNpYmxlO1xuICAgIH1cblxuICAgIGZpcnN0SXRlbUFjaXZlSW5kZXgoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnRvdGFsU2hpZnRlZEl0ZW1zICogLTE7XG4gICAgfVxuXG4gICAgbGFzdEl0ZW1BY3RpdmVJbmRleCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZmlyc3RJdGVtQWNpdmVJbmRleCgpICsgdGhpcy5kX251bVZpc2libGUgLSAxO1xuICAgIH1cblxuICAgIGlzSXRlbUFjdGl2ZShpbmRleDogbnVtYmVyKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmZpcnN0SXRlbUFjaXZlSW5kZXgoKSA8PSBpbmRleCAmJiB0aGlzLmxhc3RJdGVtQWN0aXZlSW5kZXgoKSA+PSBpbmRleDtcbiAgICB9XG5cbiAgICBiaW5kRG9jdW1lbnRMaXN0ZW5lcnMoKSB7XG4gICAgICAgIGlmIChpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSB7XG4gICAgICAgICAgICBjb25zdCB3aW5kb3cgPSB0aGlzLmRvY3VtZW50LmRlZmF1bHRWaWV3IHx8ICd3aW5kb3cnO1xuICAgICAgICAgICAgdGhpcy5kb2N1bWVudFJlc2l6ZUxpc3RlbmVyID0gdGhpcy5yZW5kZXJlci5saXN0ZW4od2luZG93LCAncmVzaXplJywgKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuY2FsY3VsYXRlUG9zaXRpb24oKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdW5iaW5kRG9jdW1lbnRMaXN0ZW5lcnMoKSB7XG4gICAgICAgIGlmICh0aGlzLmRvY3VtZW50UmVzaXplTGlzdGVuZXIpIHtcbiAgICAgICAgICAgIHRoaXMuZG9jdW1lbnRSZXNpemVMaXN0ZW5lcigpO1xuICAgICAgICAgICAgdGhpcy5kb2N1bWVudFJlc2l6ZUxpc3RlbmVyID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCkge1xuICAgICAgICBpZiAodGhpcy5yZXNwb25zaXZlT3B0aW9ucykge1xuICAgICAgICAgICAgdGhpcy51bmJpbmREb2N1bWVudExpc3RlbmVycygpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMudGh1bWJuYWlsc1N0eWxlKSB7XG4gICAgICAgICAgICB0aGlzLnRodW1ibmFpbHNTdHlsZS5wYXJlbnROb2RlPy5yZW1vdmVDaGlsZCh0aGlzLnRodW1ibmFpbHNTdHlsZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBhcmlhUHJldkJ1dHRvbkxhYmVsKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5nYWxsZXJpYS5jb25maWcudHJhbnNsYXRpb24uYXJpYSA/IHRoaXMuZ2FsbGVyaWEuY29uZmlnLnRyYW5zbGF0aW9uLmFyaWEucHJldlBhZ2VMYWJlbCA6IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBhcmlhTmV4dEJ1dHRvbkxhYmVsKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5nYWxsZXJpYS5jb25maWcudHJhbnNsYXRpb24uYXJpYSA/IHRoaXMuZ2FsbGVyaWEuY29uZmlnLnRyYW5zbGF0aW9uLmFyaWEubmV4dFBhZ2VMYWJlbCA6IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBhcmlhUGFnZUxhYmVsKHZhbHVlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdhbGxlcmlhLmNvbmZpZy50cmFuc2xhdGlvbi5hcmlhID8gdGhpcy5nYWxsZXJpYS5jb25maWcudHJhbnNsYXRpb24uYXJpYS5wYWdlTGFiZWwucmVwbGFjZSgve3BhZ2V9L2csIHZhbHVlKSA6IHVuZGVmaW5lZDtcbiAgICB9XG59XG5cbkBOZ01vZHVsZSh7XG4gICAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgU2hhcmVkTW9kdWxlLCBSaXBwbGVNb2R1bGUsIFRpbWVzSWNvbiwgQ2hldnJvblJpZ2h0SWNvbiwgQ2hldnJvbkxlZnRJY29uLCBXaW5kb3dNYXhpbWl6ZUljb24sIFdpbmRvd01pbmltaXplSWNvbiwgRm9jdXNUcmFwTW9kdWxlXSxcbiAgICBleHBvcnRzOiBbQ29tbW9uTW9kdWxlLCBHYWxsZXJpYSwgR2FsbGVyaWFDb250ZW50LCBHYWxsZXJpYUl0ZW1TbG90LCBHYWxsZXJpYUl0ZW0sIEdhbGxlcmlhVGh1bWJuYWlscywgU2hhcmVkTW9kdWxlXSxcbiAgICBkZWNsYXJhdGlvbnM6IFtHYWxsZXJpYSwgR2FsbGVyaWFDb250ZW50LCBHYWxsZXJpYUl0ZW1TbG90LCBHYWxsZXJpYUl0ZW0sIEdhbGxlcmlhVGh1bWJuYWlsc11cbn0pXG5leHBvcnQgY2xhc3MgR2FsbGVyaWFNb2R1bGUge31cbiJdfQ==
|