@delon/abc 15.2.1 → 16.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/auto-focus/auto-focus.directive.d.ts +1 -1
- package/avatar-list/avatar-list-item.component.d.ts +1 -1
- package/avatar-list/avatar-list.component.d.ts +1 -1
- package/count-down/count-down.component.d.ts +1 -1
- package/date-picker/range.directive.d.ts +1 -1
- package/down-file/down-file.directive.d.ts +1 -1
- package/ellipsis/ellipsis.component.d.ts +1 -1
- package/error-collect/error-collect.component.d.ts +1 -1
- package/esm2022/auto-focus/auto-focus.directive.mjs +51 -0
- package/esm2022/auto-focus/auto-focus.module.mjs +18 -0
- package/esm2022/avatar-list/avatar-list-item.component.mjs +27 -0
- package/esm2022/avatar-list/avatar-list.component.mjs +89 -0
- package/esm2022/avatar-list/avatar-list.module.mjs +23 -0
- package/esm2022/count-down/count-down.component.mjs +46 -0
- package/esm2022/count-down/count-down.module.mjs +21 -0
- package/esm2022/date-picker/date-picker.module.mjs +23 -0
- package/esm2022/date-picker/range-shortcut.component.mjs +41 -0
- package/esm2022/date-picker/range.directive.mjs +174 -0
- package/esm2022/down-file/down-file.directive.mjs +115 -0
- package/esm2022/down-file/down-file.module.mjs +21 -0
- package/esm2022/ellipsis/ellipsis.component.mjs +233 -0
- package/esm2022/ellipsis/ellipsis.module.mjs +22 -0
- package/esm2022/error-collect/error-collect.component.mjs +122 -0
- package/esm2022/error-collect/error-collect.module.mjs +21 -0
- package/esm2022/exception/exception.component.mjs +109 -0
- package/esm2022/exception/exception.module.mjs +24 -0
- package/esm2022/footer-toolbar/footer-toolbar.component.mjs +45 -0
- package/esm2022/footer-toolbar/footer-toolbar.module.mjs +22 -0
- package/esm2022/full-content/full-content-toggle.directive.mjs +25 -0
- package/esm2022/full-content/full-content.component.mjs +140 -0
- package/esm2022/full-content/full-content.module.mjs +21 -0
- package/esm2022/full-content/full-content.service.mjs +23 -0
- package/esm2022/global-footer/global-footer-item.component.mjs +31 -0
- package/esm2022/global-footer/global-footer.component.mjs +73 -0
- package/esm2022/global-footer/global-footer.module.mjs +22 -0
- package/esm2022/hotkey/hotkey.directive.mjs +37 -0
- package/esm2022/hotkey/hotkey.module.mjs +18 -0
- package/esm2022/let/let.directive.mjs +38 -0
- package/esm2022/let/let.module.mjs +18 -0
- package/esm2022/loading/loading.component.mjs +27 -0
- package/esm2022/loading/loading.module.mjs +24 -0
- package/esm2022/loading/loading.service.mjs +91 -0
- package/esm2022/lodop/lodop.module.mjs +13 -0
- package/esm2022/lodop/lodop.service.mjs +223 -0
- package/esm2022/media/media.component.mjs +118 -0
- package/esm2022/media/media.module.mjs +20 -0
- package/esm2022/media/media.service.mjs +47 -0
- package/esm2022/notice-icon/notice-icon-tab.component.mjs +35 -0
- package/esm2022/notice-icon/notice-icon.component.mjs +90 -0
- package/esm2022/notice-icon/notice-icon.module.mjs +59 -0
- package/esm2022/observers/observer-size.mjs +119 -0
- package/esm2022/onboarding/onboarding.component.mjs +135 -0
- package/esm2022/onboarding/onboarding.module.mjs +27 -0
- package/esm2022/onboarding/onboarding.service.mjs +186 -0
- package/esm2022/page-header/page-header.component.mjs +247 -0
- package/esm2022/page-header/page-header.module.mjs +25 -0
- package/esm2022/pdf/pdf.component.mjs +474 -0
- package/{esm2020 → esm2022}/pdf/pdf.config.mjs +2 -2
- package/esm2022/pdf/pdf.module.mjs +21 -0
- package/esm2022/qr/qr.component.mjs +137 -0
- package/esm2022/qr/qr.module.mjs +20 -0
- package/esm2022/quick-menu/quick-menu.component.mjs +90 -0
- package/esm2022/quick-menu/quick-menu.module.mjs +22 -0
- package/esm2022/result/result.component.mjs +61 -0
- package/esm2022/result/result.module.mjs +22 -0
- package/esm2022/reuse-tab/reuse-tab-context-menu.component.mjs +77 -0
- package/esm2022/reuse-tab/reuse-tab-context.component.mjs +34 -0
- package/esm2022/reuse-tab/reuse-tab-context.directive.mjs +36 -0
- package/esm2022/reuse-tab/reuse-tab-context.service.mjs +56 -0
- package/esm2022/reuse-tab/reuse-tab.component.mjs +368 -0
- package/esm2022/reuse-tab/reuse-tab.module.mjs +50 -0
- package/esm2022/reuse-tab/reuse-tab.service.mjs +559 -0
- package/esm2022/se/se-container.component.mjs +174 -0
- package/esm2022/se/se.component.mjs +235 -0
- package/esm2022/se/se.module.mjs +24 -0
- package/esm2022/sg/sg-container.component.mjs +53 -0
- package/esm2022/sg/sg.component.mjs +68 -0
- package/esm2022/sg/sg.module.mjs +21 -0
- package/esm2022/st/st-column-source.mjs +493 -0
- package/esm2022/st/st-data-source.mjs +480 -0
- package/esm2022/st/st-export.mjs +90 -0
- package/{esm2020 → esm2022}/st/st-filter.component.mjs +8 -7
- package/esm2022/st/st-row.directive.mjs +47 -0
- package/esm2022/st/st-widget-host.directive.mjs +32 -0
- package/esm2022/st/st-widget.mjs +27 -0
- package/esm2022/st/st.component.mjs +1004 -0
- package/esm2022/st/st.module.mjs +97 -0
- package/esm2022/sv/sv-container.component.mjs +127 -0
- package/esm2022/sv/sv-value.component.mjs +45 -0
- package/esm2022/sv/sv.component.mjs +120 -0
- package/esm2022/sv/sv.module.mjs +26 -0
- package/esm2022/tag-select/tag-select.component.mjs +64 -0
- package/esm2022/tag-select/tag-select.module.mjs +22 -0
- package/esm2022/xlsx/xlsx.directive.mjs +28 -0
- package/esm2022/xlsx/xlsx.module.mjs +20 -0
- package/esm2022/xlsx/xlsx.service.mjs +129 -0
- package/esm2022/zip/zip.module.mjs +16 -0
- package/esm2022/zip/zip.service.mjs +117 -0
- package/exception/exception.component.d.ts +1 -1
- package/{fesm2015 → fesm2022}/auto-focus.mjs +7 -7
- package/{fesm2015 → fesm2022}/auto-focus.mjs.map +1 -1
- package/{fesm2020 → fesm2022}/avatar-list.mjs +10 -10
- package/fesm2022/avatar-list.mjs.map +1 -0
- package/{fesm2020 → fesm2022}/chart-observer-size.mjs +10 -10
- package/fesm2022/chart-observer-size.mjs.map +1 -0
- package/{fesm2020 → fesm2022}/count-down.mjs +7 -7
- package/fesm2022/count-down.mjs.map +1 -0
- package/{fesm2020 → fesm2022}/date-picker.mjs +14 -13
- package/fesm2022/date-picker.mjs.map +1 -0
- package/{fesm2020 → fesm2022}/down-file.mjs +8 -8
- package/fesm2022/down-file.mjs.map +1 -0
- package/{fesm2020 → fesm2022}/ellipsis.mjs +7 -7
- package/fesm2022/ellipsis.mjs.map +1 -0
- package/{fesm2020 → fesm2022}/error-collect.mjs +9 -9
- package/fesm2022/error-collect.mjs.map +1 -0
- package/{fesm2020 → fesm2022}/exception.mjs +7 -7
- package/fesm2022/exception.mjs.map +1 -0
- package/{fesm2020 → fesm2022}/footer-toolbar.mjs +7 -7
- package/fesm2022/footer-toolbar.mjs.map +1 -0
- package/{fesm2020 → fesm2022}/full-content.mjs +13 -13
- package/fesm2022/full-content.mjs.map +1 -0
- package/{fesm2020 → fesm2022}/global-footer.mjs +10 -10
- package/fesm2022/global-footer.mjs.map +1 -0
- package/{fesm2020 → fesm2022}/hotkey.mjs +7 -7
- package/{fesm2015 → fesm2022}/hotkey.mjs.map +1 -1
- package/{fesm2020 → fesm2022}/let.mjs +9 -8
- package/fesm2022/let.mjs.map +1 -0
- package/{fesm2020 → fesm2022}/loading.mjs +10 -11
- package/fesm2022/loading.mjs.map +1 -0
- package/{fesm2020 → fesm2022}/lodop.mjs +7 -7
- package/{fesm2020 → fesm2022}/lodop.mjs.map +1 -1
- package/{fesm2020 → fesm2022}/media.mjs +10 -10
- package/fesm2022/media.mjs.map +1 -0
- package/fesm2022/notice-icon.mjs +180 -0
- package/fesm2022/notice-icon.mjs.map +1 -0
- package/{fesm2020 → fesm2022}/onboarding.mjs +10 -11
- package/{fesm2020 → fesm2022}/onboarding.mjs.map +1 -1
- package/{fesm2020 → fesm2022}/page-header.mjs +7 -7
- package/{fesm2015 → fesm2022}/page-header.mjs.map +1 -1
- package/{fesm2020 → fesm2022}/pdf.mjs +10 -10
- package/fesm2022/pdf.mjs.map +1 -0
- package/{fesm2015 → fesm2022}/qr.mjs +7 -7
- package/{fesm2020 → fesm2022}/qr.mjs.map +1 -1
- package/{fesm2020 → fesm2022}/quick-menu.mjs +7 -7
- package/fesm2022/quick-menu.mjs.map +1 -0
- package/{fesm2020 → fesm2022}/result.mjs +7 -7
- package/{fesm2020 → fesm2022}/result.mjs.map +1 -1
- package/{fesm2020 → fesm2022}/reuse-tab.mjs +31 -31
- package/{fesm2015 → fesm2022}/reuse-tab.mjs.map +1 -1
- package/{fesm2020 → fesm2022}/se.mjs +15 -15
- package/fesm2022/se.mjs.map +1 -0
- package/{fesm2020 → fesm2022}/sg.mjs +10 -10
- package/fesm2022/sg.mjs.map +1 -0
- package/{fesm2020 → fesm2022}/st.mjs +72 -72
- package/fesm2022/st.mjs.map +1 -0
- package/{fesm2020 → fesm2022}/sv.mjs +20 -20
- package/fesm2022/sv.mjs.map +1 -0
- package/{fesm2020 → fesm2022}/tag-select.mjs +7 -7
- package/fesm2022/tag-select.mjs.map +1 -0
- package/{fesm2020 → fesm2022}/xlsx.mjs +10 -10
- package/fesm2022/xlsx.mjs.map +1 -0
- package/{fesm2020 → fesm2022}/zip.mjs +7 -7
- package/{fesm2015 → fesm2022}/zip.mjs.map +1 -1
- package/footer-toolbar/footer-toolbar.component.d.ts +1 -1
- package/full-content/full-content.component.d.ts +1 -1
- package/global-footer/global-footer-item.component.d.ts +1 -1
- package/global-footer/global-footer.component.d.ts +1 -1
- package/hotkey/hotkey.directive.d.ts +1 -1
- package/let/let.directive.d.ts +1 -1
- package/loading/style/index.less +1 -4
- package/media/media.component.d.ts +1 -1
- package/notice-icon/notice-icon-tab.component.d.ts +1 -1
- package/notice-icon/notice-icon.component.d.ts +1 -1
- package/onboarding/style/index.less +1 -4
- package/package.json +106 -176
- package/page-header/page-header.component.d.ts +1 -1
- package/pdf/pdf.component.d.ts +1 -1
- package/qr/qr.component.d.ts +1 -1
- package/quick-menu/quick-menu.component.d.ts +1 -1
- package/result/result.component.d.ts +1 -1
- package/reuse-tab/reuse-tab-context-menu.component.d.ts +1 -1
- package/reuse-tab/reuse-tab-context.component.d.ts +1 -1
- package/reuse-tab/reuse-tab-context.directive.d.ts +1 -1
- package/reuse-tab/reuse-tab.component.d.ts +1 -1
- package/se/se-container.component.d.ts +1 -1
- package/se/se.component.d.ts +1 -1
- package/sg/sg-container.component.d.ts +1 -1
- package/sg/sg.component.d.ts +1 -1
- package/st/st-filter.component.d.ts +1 -1
- package/st/st-row.directive.d.ts +1 -1
- package/st/st-widget-host.directive.d.ts +1 -1
- package/st/st.component.d.ts +9 -5
- package/st/style/index.less +6 -2
- package/sv/sv-container.component.d.ts +1 -1
- package/sv/sv-value.component.d.ts +1 -1
- package/sv/sv.component.d.ts +1 -1
- package/tag-select/tag-select.component.d.ts +1 -1
- package/xlsx/xlsx.directive.d.ts +1 -1
- package/esm2020/auto-focus/auto-focus.directive.mjs +0 -50
- package/esm2020/auto-focus/auto-focus.module.mjs +0 -17
- package/esm2020/avatar-list/avatar-list-item.component.mjs +0 -26
- package/esm2020/avatar-list/avatar-list.component.mjs +0 -88
- package/esm2020/avatar-list/avatar-list.module.mjs +0 -22
- package/esm2020/count-down/count-down.component.mjs +0 -45
- package/esm2020/count-down/count-down.module.mjs +0 -20
- package/esm2020/date-picker/date-picker.module.mjs +0 -22
- package/esm2020/date-picker/range-shortcut.component.mjs +0 -40
- package/esm2020/date-picker/range.directive.mjs +0 -172
- package/esm2020/down-file/down-file.directive.mjs +0 -114
- package/esm2020/down-file/down-file.module.mjs +0 -20
- package/esm2020/ellipsis/ellipsis.component.mjs +0 -232
- package/esm2020/ellipsis/ellipsis.module.mjs +0 -21
- package/esm2020/error-collect/error-collect.component.mjs +0 -121
- package/esm2020/error-collect/error-collect.module.mjs +0 -20
- package/esm2020/exception/exception.component.mjs +0 -108
- package/esm2020/exception/exception.module.mjs +0 -23
- package/esm2020/footer-toolbar/footer-toolbar.component.mjs +0 -44
- package/esm2020/footer-toolbar/footer-toolbar.module.mjs +0 -21
- package/esm2020/full-content/full-content-toggle.directive.mjs +0 -24
- package/esm2020/full-content/full-content.component.mjs +0 -139
- package/esm2020/full-content/full-content.module.mjs +0 -20
- package/esm2020/full-content/full-content.service.mjs +0 -22
- package/esm2020/global-footer/global-footer-item.component.mjs +0 -30
- package/esm2020/global-footer/global-footer.component.mjs +0 -72
- package/esm2020/global-footer/global-footer.module.mjs +0 -21
- package/esm2020/hotkey/hotkey.directive.mjs +0 -36
- package/esm2020/hotkey/hotkey.module.mjs +0 -17
- package/esm2020/let/let.directive.mjs +0 -36
- package/esm2020/let/let.module.mjs +0 -17
- package/esm2020/loading/loading.component.mjs +0 -26
- package/esm2020/loading/loading.module.mjs +0 -24
- package/esm2020/loading/loading.service.mjs +0 -90
- package/esm2020/lodop/lodop.module.mjs +0 -12
- package/esm2020/lodop/lodop.service.mjs +0 -222
- package/esm2020/media/media.component.mjs +0 -117
- package/esm2020/media/media.module.mjs +0 -19
- package/esm2020/media/media.service.mjs +0 -46
- package/esm2020/notice-icon/notice-icon-tab.component.mjs +0 -34
- package/esm2020/notice-icon/notice-icon.component.mjs +0 -89
- package/esm2020/notice-icon/notice-icon.module.mjs +0 -58
- package/esm2020/observers/observer-size.mjs +0 -116
- package/esm2020/onboarding/onboarding.component.mjs +0 -134
- package/esm2020/onboarding/onboarding.module.mjs +0 -27
- package/esm2020/onboarding/onboarding.service.mjs +0 -185
- package/esm2020/page-header/page-header.component.mjs +0 -246
- package/esm2020/page-header/page-header.module.mjs +0 -24
- package/esm2020/pdf/pdf.component.mjs +0 -473
- package/esm2020/pdf/pdf.module.mjs +0 -20
- package/esm2020/qr/qr.component.mjs +0 -136
- package/esm2020/qr/qr.module.mjs +0 -19
- package/esm2020/quick-menu/quick-menu.component.mjs +0 -89
- package/esm2020/quick-menu/quick-menu.module.mjs +0 -21
- package/esm2020/result/result.component.mjs +0 -60
- package/esm2020/result/result.module.mjs +0 -21
- package/esm2020/reuse-tab/reuse-tab-context-menu.component.mjs +0 -76
- package/esm2020/reuse-tab/reuse-tab-context.component.mjs +0 -33
- package/esm2020/reuse-tab/reuse-tab-context.directive.mjs +0 -35
- package/esm2020/reuse-tab/reuse-tab-context.service.mjs +0 -55
- package/esm2020/reuse-tab/reuse-tab.component.mjs +0 -367
- package/esm2020/reuse-tab/reuse-tab.module.mjs +0 -49
- package/esm2020/reuse-tab/reuse-tab.service.mjs +0 -558
- package/esm2020/se/se-container.component.mjs +0 -172
- package/esm2020/se/se.component.mjs +0 -234
- package/esm2020/se/se.module.mjs +0 -23
- package/esm2020/sg/sg-container.component.mjs +0 -52
- package/esm2020/sg/sg.component.mjs +0 -67
- package/esm2020/sg/sg.module.mjs +0 -20
- package/esm2020/st/st-column-source.mjs +0 -492
- package/esm2020/st/st-data-source.mjs +0 -479
- package/esm2020/st/st-export.mjs +0 -89
- package/esm2020/st/st-row.directive.mjs +0 -45
- package/esm2020/st/st-widget-host.directive.mjs +0 -31
- package/esm2020/st/st-widget.mjs +0 -26
- package/esm2020/st/st.component.mjs +0 -1002
- package/esm2020/st/st.module.mjs +0 -96
- package/esm2020/sv/sv-container.component.mjs +0 -125
- package/esm2020/sv/sv-value.component.mjs +0 -44
- package/esm2020/sv/sv.component.mjs +0 -119
- package/esm2020/sv/sv.module.mjs +0 -25
- package/esm2020/tag-select/tag-select.component.mjs +0 -63
- package/esm2020/tag-select/tag-select.module.mjs +0 -21
- package/esm2020/xlsx/xlsx.directive.mjs +0 -27
- package/esm2020/xlsx/xlsx.module.mjs +0 -19
- package/esm2020/xlsx/xlsx.service.mjs +0 -128
- package/esm2020/zip/zip.module.mjs +0 -15
- package/esm2020/zip/zip.service.mjs +0 -116
- package/fesm2015/avatar-list.mjs +0 -139
- package/fesm2015/avatar-list.mjs.map +0 -1
- package/fesm2015/chart-observer-size.mjs +0 -124
- package/fesm2015/chart-observer-size.mjs.map +0 -1
- package/fesm2015/count-down.mjs +0 -69
- package/fesm2015/count-down.mjs.map +0 -1
- package/fesm2015/date-picker.mjs +0 -236
- package/fesm2015/date-picker.mjs.map +0 -1
- package/fesm2015/down-file.mjs +0 -141
- package/fesm2015/down-file.mjs.map +0 -1
- package/fesm2015/ellipsis.mjs +0 -258
- package/fesm2015/ellipsis.mjs.map +0 -1
- package/fesm2015/error-collect.mjs +0 -147
- package/fesm2015/error-collect.mjs.map +0 -1
- package/fesm2015/exception.mjs +0 -138
- package/fesm2015/exception.mjs.map +0 -1
- package/fesm2015/footer-toolbar.mjs +0 -70
- package/fesm2015/footer-toolbar.mjs.map +0 -1
- package/fesm2015/full-content.mjs +0 -202
- package/fesm2015/full-content.mjs.map +0 -1
- package/fesm2015/global-footer.mjs +0 -126
- package/fesm2015/global-footer.mjs.map +0 -1
- package/fesm2015/hotkey.mjs +0 -57
- package/fesm2015/let.mjs +0 -59
- package/fesm2015/let.mjs.map +0 -1
- package/fesm2015/loading.mjs +0 -142
- package/fesm2015/loading.mjs.map +0 -1
- package/fesm2015/lodop.mjs +0 -232
- package/fesm2015/lodop.mjs.map +0 -1
- package/fesm2015/media.mjs +0 -180
- package/fesm2015/media.mjs.map +0 -1
- package/fesm2015/notice-icon.mjs +0 -180
- package/fesm2015/notice-icon.mjs.map +0 -1
- package/fesm2015/onboarding.mjs +0 -336
- package/fesm2015/onboarding.mjs.map +0 -1
- package/fesm2015/page-header.mjs +0 -276
- package/fesm2015/pdf.mjs +0 -516
- package/fesm2015/pdf.mjs.map +0 -1
- package/fesm2015/qr.mjs.map +0 -1
- package/fesm2015/quick-menu.mjs +0 -114
- package/fesm2015/quick-menu.mjs.map +0 -1
- package/fesm2015/result.mjs +0 -88
- package/fesm2015/result.mjs.map +0 -1
- package/fesm2015/reuse-tab.mjs +0 -1217
- package/fesm2015/se.mjs +0 -444
- package/fesm2015/se.mjs.map +0 -1
- package/fesm2015/sg.mjs +0 -139
- package/fesm2015/sg.mjs.map +0 -1
- package/fesm2015/st.mjs +0 -2526
- package/fesm2015/st.mjs.map +0 -1
- package/fesm2015/sv.mjs +0 -308
- package/fesm2015/sv.mjs.map +0 -1
- package/fesm2015/tag-select.mjs +0 -91
- package/fesm2015/tag-select.mjs.map +0 -1
- package/fesm2015/xlsx.mjs +0 -172
- package/fesm2015/xlsx.mjs.map +0 -1
- package/fesm2015/zip.mjs +0 -136
- package/fesm2020/abc.mjs +0 -7
- package/fesm2020/abc.mjs.map +0 -1
- package/fesm2020/auto-focus.mjs +0 -71
- package/fesm2020/auto-focus.mjs.map +0 -1
- package/fesm2020/avatar-list.mjs.map +0 -1
- package/fesm2020/chart-observer-size.mjs.map +0 -1
- package/fesm2020/count-down.mjs.map +0 -1
- package/fesm2020/date-picker.mjs.map +0 -1
- package/fesm2020/down-file.mjs.map +0 -1
- package/fesm2020/ellipsis.mjs.map +0 -1
- package/fesm2020/error-collect.mjs.map +0 -1
- package/fesm2020/exception.mjs.map +0 -1
- package/fesm2020/footer-toolbar.mjs.map +0 -1
- package/fesm2020/full-content.mjs.map +0 -1
- package/fesm2020/global-footer.mjs.map +0 -1
- package/fesm2020/hotkey.mjs.map +0 -1
- package/fesm2020/let.mjs.map +0 -1
- package/fesm2020/loading.mjs.map +0 -1
- package/fesm2020/media.mjs.map +0 -1
- package/fesm2020/notice-icon.mjs +0 -180
- package/fesm2020/notice-icon.mjs.map +0 -1
- package/fesm2020/page-header.mjs.map +0 -1
- package/fesm2020/pdf.mjs.map +0 -1
- package/fesm2020/qr.mjs +0 -171
- package/fesm2020/quick-menu.mjs.map +0 -1
- package/fesm2020/reuse-tab.mjs.map +0 -1
- package/fesm2020/se.mjs.map +0 -1
- package/fesm2020/sg.mjs.map +0 -1
- package/fesm2020/st.mjs.map +0 -1
- package/fesm2020/sv.mjs.map +0 -1
- package/fesm2020/tag-select.mjs.map +0 -1
- package/fesm2020/xlsx.mjs.map +0 -1
- package/fesm2020/zip.mjs.map +0 -1
- /package/{esm2020 → esm2022}/abc.mjs +0 -0
- /package/{esm2020 → esm2022}/auto-focus/auto-focus.mjs +0 -0
- /package/{esm2020 → esm2022}/auto-focus/index.mjs +0 -0
- /package/{esm2020 → esm2022}/avatar-list/avatar-list.mjs +0 -0
- /package/{esm2020 → esm2022}/avatar-list/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/count-down/count-down.mjs +0 -0
- /package/{esm2020 → esm2022}/count-down/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/date-picker/date-picker.mjs +0 -0
- /package/{esm2020 → esm2022}/date-picker/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/down-file/down-file.mjs +0 -0
- /package/{esm2020 → esm2022}/down-file/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/ellipsis/ellipsis.mjs +0 -0
- /package/{esm2020 → esm2022}/ellipsis/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/error-collect/error-collect.mjs +0 -0
- /package/{esm2020 → esm2022}/error-collect/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/exception/exception.mjs +0 -0
- /package/{esm2020 → esm2022}/exception/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/footer-toolbar/footer-toolbar.mjs +0 -0
- /package/{esm2020 → esm2022}/footer-toolbar/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/full-content/full-content.mjs +0 -0
- /package/{esm2020 → esm2022}/full-content/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/global-footer/global-footer.mjs +0 -0
- /package/{esm2020 → esm2022}/global-footer/global-footer.types.mjs +0 -0
- /package/{esm2020 → esm2022}/global-footer/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/hotkey/hotkey.mjs +0 -0
- /package/{esm2020 → esm2022}/hotkey/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/let/index.mjs +0 -0
- /package/{esm2020 → esm2022}/let/let.mjs +0 -0
- /package/{esm2020 → esm2022}/loading/loading.mjs +0 -0
- /package/{esm2020 → esm2022}/loading/loading.types.mjs +0 -0
- /package/{esm2020 → esm2022}/loading/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/lodop/lodop.mjs +0 -0
- /package/{esm2020 → esm2022}/lodop/lodop.types.mjs +0 -0
- /package/{esm2020 → esm2022}/lodop/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/media/media.mjs +0 -0
- /package/{esm2020 → esm2022}/media/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/notice-icon/notice-icon.mjs +0 -0
- /package/{esm2020 → esm2022}/notice-icon/notice-icon.types.mjs +0 -0
- /package/{esm2020 → esm2022}/notice-icon/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/observers/chart-observer-size.mjs +0 -0
- /package/{esm2020 → esm2022}/observers/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/onboarding/onboarding.mjs +0 -0
- /package/{esm2020 → esm2022}/onboarding/onboarding.types.mjs +0 -0
- /package/{esm2020 → esm2022}/onboarding/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/page-header/page-header.mjs +0 -0
- /package/{esm2020 → esm2022}/page-header/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/pdf/pdf.mjs +0 -0
- /package/{esm2020 → esm2022}/pdf/pdf.types.mjs +0 -0
- /package/{esm2020 → esm2022}/pdf/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/qr/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/qr/qr.config.mjs +0 -0
- /package/{esm2020 → esm2022}/qr/qr.mjs +0 -0
- /package/{esm2020 → esm2022}/qr/qr.types.mjs +0 -0
- /package/{esm2020 → esm2022}/quick-menu/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/quick-menu/quick-menu.mjs +0 -0
- /package/{esm2020 → esm2022}/result/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/result/result.mjs +0 -0
- /package/{esm2020 → esm2022}/reuse-tab/lifecycle_hooks.mjs +0 -0
- /package/{esm2020 → esm2022}/reuse-tab/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/reuse-tab/reuse-tab.interfaces.mjs +0 -0
- /package/{esm2020 → esm2022}/reuse-tab/reuse-tab.mjs +0 -0
- /package/{esm2020 → esm2022}/reuse-tab/reuse-tab.state.mjs +0 -0
- /package/{esm2020 → esm2022}/reuse-tab/reuse-tab.strategy.mjs +0 -0
- /package/{esm2020 → esm2022}/se/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/se/se.mjs +0 -0
- /package/{esm2020 → esm2022}/se/se.types.mjs +0 -0
- /package/{esm2020 → esm2022}/sg/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/sg/sg.mjs +0 -0
- /package/{esm2020 → esm2022}/st/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/st/st.config.mjs +0 -0
- /package/{esm2020 → esm2022}/st/st.interfaces.mjs +0 -0
- /package/{esm2020 → esm2022}/st/st.mjs +0 -0
- /package/{esm2020 → esm2022}/st/st.types.mjs +0 -0
- /package/{esm2020 → esm2022}/sv/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/sv/sv.mjs +0 -0
- /package/{esm2020 → esm2022}/tag-select/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/tag-select/tag-select.mjs +0 -0
- /package/{esm2020 → esm2022}/xlsx/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/xlsx/xlsx.mjs +0 -0
- /package/{esm2020 → esm2022}/xlsx/xlsx.types.mjs +0 -0
- /package/{esm2020 → esm2022}/zip/public_api.mjs +0 -0
- /package/{esm2020 → esm2022}/zip/zip.mjs +0 -0
- /package/{esm2020 → esm2022}/zip/zip.types.mjs +0 -0
- /package/{fesm2015 → fesm2022}/abc.mjs +0 -0
- /package/{fesm2015 → fesm2022}/abc.mjs.map +0 -0
|
@@ -0,0 +1,493 @@
|
|
|
1
|
+
import { Host, Inject, Injectable, Optional } from '@angular/core';
|
|
2
|
+
import { ALAIN_I18N_TOKEN } from '@delon/theme';
|
|
3
|
+
import { deepCopy, warn } from '@delon/util/other';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "@angular/platform-browser";
|
|
6
|
+
import * as i2 from "./st-row.directive";
|
|
7
|
+
import * as i3 from "@delon/acl";
|
|
8
|
+
import * as i4 from "./st-widget";
|
|
9
|
+
class STColumnSource {
|
|
10
|
+
constructor(dom, rowSource, acl, i18nSrv, stWidgetRegistry) {
|
|
11
|
+
this.dom = dom;
|
|
12
|
+
this.rowSource = rowSource;
|
|
13
|
+
this.acl = acl;
|
|
14
|
+
this.i18nSrv = i18nSrv;
|
|
15
|
+
this.stWidgetRegistry = stWidgetRegistry;
|
|
16
|
+
}
|
|
17
|
+
setCog(val) {
|
|
18
|
+
this.cog = val;
|
|
19
|
+
}
|
|
20
|
+
fixPop(i, def) {
|
|
21
|
+
if (i.pop == null || i.pop === false) {
|
|
22
|
+
i.pop = false;
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
let pop = {
|
|
26
|
+
...def
|
|
27
|
+
};
|
|
28
|
+
if (typeof i.pop === 'string') {
|
|
29
|
+
pop.title = i.pop;
|
|
30
|
+
}
|
|
31
|
+
else if (typeof i.pop === 'object') {
|
|
32
|
+
pop = {
|
|
33
|
+
...pop,
|
|
34
|
+
...i.pop
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
if (typeof pop.condition !== 'function') {
|
|
38
|
+
pop.condition = () => false;
|
|
39
|
+
}
|
|
40
|
+
i.pop = pop;
|
|
41
|
+
}
|
|
42
|
+
btnCoerce(list) {
|
|
43
|
+
if (!list)
|
|
44
|
+
return [];
|
|
45
|
+
const ret = [];
|
|
46
|
+
const { modal, drawer, pop, btnIcon } = this.cog;
|
|
47
|
+
for (const item of list) {
|
|
48
|
+
if (this.acl && item.acl && !this.acl.can(item.acl)) {
|
|
49
|
+
continue;
|
|
50
|
+
}
|
|
51
|
+
if (item.type === 'modal' || item.type === 'static') {
|
|
52
|
+
if (item.modal == null || item.modal.component == null) {
|
|
53
|
+
if (typeof ngDevMode === 'undefined' || ngDevMode) {
|
|
54
|
+
console.warn(`[st] Should specify modal parameter when type is modal or static`);
|
|
55
|
+
}
|
|
56
|
+
item.type = 'none';
|
|
57
|
+
}
|
|
58
|
+
else {
|
|
59
|
+
item.modal = { ...{ paramsName: 'record', size: 'lg' }, ...modal, ...item.modal };
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
if (item.type === 'drawer') {
|
|
63
|
+
if (item.drawer == null || item.drawer.component == null) {
|
|
64
|
+
if (typeof ngDevMode === 'undefined' || ngDevMode) {
|
|
65
|
+
console.warn(`[st] Should specify drawer parameter when type is drawer`);
|
|
66
|
+
}
|
|
67
|
+
item.type = 'none';
|
|
68
|
+
}
|
|
69
|
+
else {
|
|
70
|
+
item.drawer = { ...{ paramsName: 'record', size: 'lg' }, ...drawer, ...item.drawer };
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
if (item.type === 'del' && typeof item.pop === 'undefined') {
|
|
74
|
+
item.pop = true;
|
|
75
|
+
}
|
|
76
|
+
// pop
|
|
77
|
+
this.fixPop(item, pop);
|
|
78
|
+
if (item.icon) {
|
|
79
|
+
item.icon = {
|
|
80
|
+
...btnIcon,
|
|
81
|
+
...(typeof item.icon === 'string' ? { type: item.icon } : item.icon)
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
item.children = item.children && item.children.length > 0 ? this.btnCoerce(item.children) : [];
|
|
85
|
+
// i18n
|
|
86
|
+
if (item.i18n && this.i18nSrv) {
|
|
87
|
+
item.text = this.i18nSrv.fanyi(item.i18n);
|
|
88
|
+
}
|
|
89
|
+
ret.push(item);
|
|
90
|
+
}
|
|
91
|
+
this.btnCoerceIf(ret);
|
|
92
|
+
return ret;
|
|
93
|
+
}
|
|
94
|
+
btnCoerceIf(list) {
|
|
95
|
+
for (const item of list) {
|
|
96
|
+
item.iifBehavior = item.iifBehavior || this.cog.iifBehavior;
|
|
97
|
+
if (item.children && item.children.length > 0) {
|
|
98
|
+
this.btnCoerceIf(item.children);
|
|
99
|
+
}
|
|
100
|
+
else {
|
|
101
|
+
item.children = [];
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
fixedCoerce(list) {
|
|
106
|
+
const countReduce = (a, b) => a + +b.width.toString().replace('px', '');
|
|
107
|
+
// left width
|
|
108
|
+
list
|
|
109
|
+
.filter(w => w.fixed && w.fixed === 'left' && w.width)
|
|
110
|
+
.forEach((item, idx) => (item._left = `${list.slice(0, idx).reduce(countReduce, 0)}px`));
|
|
111
|
+
// right width
|
|
112
|
+
list
|
|
113
|
+
.filter(w => w.fixed && w.fixed === 'right' && w.width)
|
|
114
|
+
.reverse()
|
|
115
|
+
.forEach((item, idx) => (item._right = `${idx > 0 ? list.slice(-idx).reduce(countReduce, 0) : 0}px`));
|
|
116
|
+
}
|
|
117
|
+
sortCoerce(item) {
|
|
118
|
+
const res = this.fixSortCoerce(item);
|
|
119
|
+
res.reName = {
|
|
120
|
+
...this.cog.sortReName,
|
|
121
|
+
...res.reName
|
|
122
|
+
};
|
|
123
|
+
return res;
|
|
124
|
+
}
|
|
125
|
+
fixSortCoerce(item) {
|
|
126
|
+
if (typeof item.sort === 'undefined') {
|
|
127
|
+
return { enabled: false };
|
|
128
|
+
}
|
|
129
|
+
let res = {};
|
|
130
|
+
if (typeof item.sort === 'string') {
|
|
131
|
+
res.key = item.sort;
|
|
132
|
+
}
|
|
133
|
+
else if (typeof item.sort !== 'boolean') {
|
|
134
|
+
res = item.sort;
|
|
135
|
+
}
|
|
136
|
+
else if (typeof item.sort === 'boolean') {
|
|
137
|
+
res.compare = (a, b) => a[item.indexKey] - b[item.indexKey];
|
|
138
|
+
}
|
|
139
|
+
if (!res.key) {
|
|
140
|
+
res.key = item.indexKey;
|
|
141
|
+
}
|
|
142
|
+
res.enabled = true;
|
|
143
|
+
return res;
|
|
144
|
+
}
|
|
145
|
+
filterCoerce(item) {
|
|
146
|
+
if (item.filter == null) {
|
|
147
|
+
return null;
|
|
148
|
+
}
|
|
149
|
+
let res = item.filter;
|
|
150
|
+
res.type = res.type || 'default';
|
|
151
|
+
res.showOPArea = res.showOPArea !== false;
|
|
152
|
+
let icon = 'filter';
|
|
153
|
+
let iconTheme = 'fill';
|
|
154
|
+
let fixMenus = true;
|
|
155
|
+
let value = undefined;
|
|
156
|
+
switch (res.type) {
|
|
157
|
+
case 'keyword':
|
|
158
|
+
icon = 'search';
|
|
159
|
+
iconTheme = 'outline';
|
|
160
|
+
break;
|
|
161
|
+
case 'number':
|
|
162
|
+
icon = 'search';
|
|
163
|
+
iconTheme = 'outline';
|
|
164
|
+
res.number = {
|
|
165
|
+
step: 1,
|
|
166
|
+
min: -Infinity,
|
|
167
|
+
max: Infinity,
|
|
168
|
+
...res.number
|
|
169
|
+
};
|
|
170
|
+
break;
|
|
171
|
+
case 'date':
|
|
172
|
+
icon = 'calendar';
|
|
173
|
+
iconTheme = 'outline';
|
|
174
|
+
res.date = {
|
|
175
|
+
range: false,
|
|
176
|
+
mode: 'date',
|
|
177
|
+
showToday: true,
|
|
178
|
+
showNow: false,
|
|
179
|
+
...res.date
|
|
180
|
+
};
|
|
181
|
+
break;
|
|
182
|
+
case 'custom':
|
|
183
|
+
break;
|
|
184
|
+
default:
|
|
185
|
+
fixMenus = false;
|
|
186
|
+
break;
|
|
187
|
+
}
|
|
188
|
+
if (fixMenus && (res.menus == null || res.menus.length === 0)) {
|
|
189
|
+
res.menus = [{ value }];
|
|
190
|
+
}
|
|
191
|
+
if (res.menus?.length === 0) {
|
|
192
|
+
return null;
|
|
193
|
+
}
|
|
194
|
+
if (typeof res.multiple === 'undefined') {
|
|
195
|
+
res.multiple = true;
|
|
196
|
+
}
|
|
197
|
+
res.confirmText = res.confirmText || this.cog.filterConfirmText;
|
|
198
|
+
res.clearText = res.clearText || this.cog.filterClearText;
|
|
199
|
+
res.key = res.key || item.indexKey;
|
|
200
|
+
res.icon = res.icon || icon;
|
|
201
|
+
const baseIcon = { type: icon, theme: iconTheme };
|
|
202
|
+
if (typeof res.icon === 'string') {
|
|
203
|
+
res.icon = { ...baseIcon, type: res.icon };
|
|
204
|
+
}
|
|
205
|
+
else {
|
|
206
|
+
res.icon = { ...baseIcon, ...res.icon };
|
|
207
|
+
}
|
|
208
|
+
this.updateDefault(res);
|
|
209
|
+
if (this.acl) {
|
|
210
|
+
res.menus = res.menus?.filter(w => this.acl.can(w.acl));
|
|
211
|
+
}
|
|
212
|
+
return res.menus?.length === 0 ? null : res;
|
|
213
|
+
}
|
|
214
|
+
restoreRender(item) {
|
|
215
|
+
if (item.renderTitle) {
|
|
216
|
+
item.__renderTitle =
|
|
217
|
+
typeof item.renderTitle === 'string'
|
|
218
|
+
? this.rowSource.getTitle(item.renderTitle)
|
|
219
|
+
: item.renderTitle;
|
|
220
|
+
}
|
|
221
|
+
if (item.render) {
|
|
222
|
+
item.__render =
|
|
223
|
+
typeof item.render === 'string' ? this.rowSource.getRow(item.render) : item.render;
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
widgetCoerce(item) {
|
|
227
|
+
if (item.type !== 'widget')
|
|
228
|
+
return;
|
|
229
|
+
if (item.widget == null || !this.stWidgetRegistry.has(item.widget.type)) {
|
|
230
|
+
delete item.type;
|
|
231
|
+
if (typeof ngDevMode === 'undefined' || ngDevMode) {
|
|
232
|
+
warn(`st: No widget for type "${item.widget?.type}"`);
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
genHeaders(rootColumns) {
|
|
237
|
+
const rows = [];
|
|
238
|
+
const widths = [];
|
|
239
|
+
const fillRowCells = (columns, colIndex, rowIndex = 0) => {
|
|
240
|
+
// Init rows
|
|
241
|
+
rows[rowIndex] = rows[rowIndex] || [];
|
|
242
|
+
let currentColIndex = colIndex;
|
|
243
|
+
const colSpans = columns.map(column => {
|
|
244
|
+
const cell = {
|
|
245
|
+
column,
|
|
246
|
+
colStart: currentColIndex,
|
|
247
|
+
hasSubColumns: false
|
|
248
|
+
};
|
|
249
|
+
let colSpan = 1;
|
|
250
|
+
const subColumns = column.children;
|
|
251
|
+
if (Array.isArray(subColumns) && subColumns.length > 0) {
|
|
252
|
+
colSpan = fillRowCells(subColumns, currentColIndex, rowIndex + 1).reduce((total, count) => total + count, 0);
|
|
253
|
+
cell.hasSubColumns = true;
|
|
254
|
+
}
|
|
255
|
+
else {
|
|
256
|
+
widths.push(cell.column.width || '');
|
|
257
|
+
}
|
|
258
|
+
if ('colSpan' in column) {
|
|
259
|
+
colSpan = column.colSpan;
|
|
260
|
+
}
|
|
261
|
+
if ('rowSpan' in column) {
|
|
262
|
+
cell.rowSpan = column.rowSpan;
|
|
263
|
+
}
|
|
264
|
+
cell.colSpan = colSpan;
|
|
265
|
+
cell.colEnd = cell.colStart + colSpan - 1;
|
|
266
|
+
rows[rowIndex].push(cell);
|
|
267
|
+
currentColIndex += colSpan;
|
|
268
|
+
return colSpan;
|
|
269
|
+
});
|
|
270
|
+
return colSpans;
|
|
271
|
+
};
|
|
272
|
+
fillRowCells(rootColumns, 0);
|
|
273
|
+
// Handle `rowSpan`
|
|
274
|
+
const rowCount = rows.length;
|
|
275
|
+
for (let rowIndex = 0; rowIndex < rowCount; rowIndex += 1) {
|
|
276
|
+
rows[rowIndex].forEach(cell => {
|
|
277
|
+
if (!('rowSpan' in cell) && !cell.hasSubColumns) {
|
|
278
|
+
cell.rowSpan = rowCount - rowIndex;
|
|
279
|
+
}
|
|
280
|
+
});
|
|
281
|
+
}
|
|
282
|
+
return { headers: rows, headerWidths: rowCount > 1 ? widths : null };
|
|
283
|
+
}
|
|
284
|
+
cleanCond(list) {
|
|
285
|
+
const res = [];
|
|
286
|
+
const copyList = deepCopy(list);
|
|
287
|
+
for (const item of copyList) {
|
|
288
|
+
if (typeof item.iif === 'function' && !item.iif(item)) {
|
|
289
|
+
continue;
|
|
290
|
+
}
|
|
291
|
+
if (this.acl && item.acl && !this.acl.can(item.acl)) {
|
|
292
|
+
continue;
|
|
293
|
+
}
|
|
294
|
+
if (Array.isArray(item.children) && item.children.length > 0) {
|
|
295
|
+
item.children = this.cleanCond(item.children);
|
|
296
|
+
}
|
|
297
|
+
res.push(item);
|
|
298
|
+
}
|
|
299
|
+
return res;
|
|
300
|
+
}
|
|
301
|
+
mergeClass(item) {
|
|
302
|
+
const builtInClassNames = [];
|
|
303
|
+
if (item._isTruncate) {
|
|
304
|
+
builtInClassNames.push('text-truncate');
|
|
305
|
+
}
|
|
306
|
+
const rawClassName = item.className;
|
|
307
|
+
if (!rawClassName) {
|
|
308
|
+
const typeClass = {
|
|
309
|
+
number: 'text-right',
|
|
310
|
+
currency: 'text-right',
|
|
311
|
+
date: 'text-center'
|
|
312
|
+
}[item.type];
|
|
313
|
+
if (typeClass) {
|
|
314
|
+
builtInClassNames.push(typeClass);
|
|
315
|
+
}
|
|
316
|
+
item._className = builtInClassNames;
|
|
317
|
+
return;
|
|
318
|
+
}
|
|
319
|
+
const rawClassNameIsArray = Array.isArray(rawClassName);
|
|
320
|
+
if (!rawClassNameIsArray && typeof rawClassName === 'object') {
|
|
321
|
+
const objClassNames = rawClassName;
|
|
322
|
+
builtInClassNames.forEach(key => (objClassNames[key] = true));
|
|
323
|
+
item._className = objClassNames;
|
|
324
|
+
return;
|
|
325
|
+
}
|
|
326
|
+
const arrayClassNames = rawClassNameIsArray ? Array.from(rawClassName) : [rawClassName];
|
|
327
|
+
arrayClassNames.splice(0, 0, ...builtInClassNames);
|
|
328
|
+
item._className = [...new Set(arrayClassNames)].filter(w => !!w);
|
|
329
|
+
}
|
|
330
|
+
process(list, options) {
|
|
331
|
+
if (!list || list.length === 0) {
|
|
332
|
+
return { columns: [], headers: [], headerWidths: null };
|
|
333
|
+
}
|
|
334
|
+
const { noIndex } = this.cog;
|
|
335
|
+
let checkboxCount = 0;
|
|
336
|
+
let radioCount = 0;
|
|
337
|
+
let point = 0;
|
|
338
|
+
const columns = [];
|
|
339
|
+
const processItem = (item) => {
|
|
340
|
+
// index
|
|
341
|
+
if (item.index) {
|
|
342
|
+
if (!Array.isArray(item.index)) {
|
|
343
|
+
item.index = item.index.toString().split('.');
|
|
344
|
+
}
|
|
345
|
+
item.indexKey = item.index.join('.');
|
|
346
|
+
}
|
|
347
|
+
// #region title
|
|
348
|
+
const tit = (typeof item.title === 'string' ? { text: item.title } : item.title) || {};
|
|
349
|
+
if (tit.i18n && this.i18nSrv) {
|
|
350
|
+
tit.text = this.i18nSrv.fanyi(tit.i18n);
|
|
351
|
+
}
|
|
352
|
+
if (tit.text) {
|
|
353
|
+
tit._text = this.dom.bypassSecurityTrustHtml(tit.text);
|
|
354
|
+
}
|
|
355
|
+
item.title = tit;
|
|
356
|
+
// #endregion
|
|
357
|
+
// no
|
|
358
|
+
if (item.type === 'no') {
|
|
359
|
+
item.noIndex = item.noIndex == null ? noIndex : item.noIndex;
|
|
360
|
+
}
|
|
361
|
+
// checkbox
|
|
362
|
+
if (item.selections == null) {
|
|
363
|
+
item.selections = [];
|
|
364
|
+
}
|
|
365
|
+
if (item.type === 'checkbox') {
|
|
366
|
+
++checkboxCount;
|
|
367
|
+
if (!item.width) {
|
|
368
|
+
item.width = `${item.selections.length > 0 ? 62 : 50}px`;
|
|
369
|
+
}
|
|
370
|
+
}
|
|
371
|
+
if (this.acl) {
|
|
372
|
+
item.selections = item.selections.filter(w => this.acl.can(w.acl));
|
|
373
|
+
}
|
|
374
|
+
// radio
|
|
375
|
+
if (item.type === 'radio') {
|
|
376
|
+
++radioCount;
|
|
377
|
+
item.selections = [];
|
|
378
|
+
if (!item.width) {
|
|
379
|
+
item.width = '50px';
|
|
380
|
+
}
|
|
381
|
+
}
|
|
382
|
+
// types
|
|
383
|
+
if (item.type === 'yn') {
|
|
384
|
+
item.yn = { truth: true, ...this.cog.yn, ...item.yn };
|
|
385
|
+
}
|
|
386
|
+
// date
|
|
387
|
+
if (item.type === 'date') {
|
|
388
|
+
item.dateFormat = item.dateFormat || this.cog.date?.format;
|
|
389
|
+
}
|
|
390
|
+
if ((item.type === 'link' && typeof item.click !== 'function') ||
|
|
391
|
+
(item.type === 'badge' && item.badge == null) ||
|
|
392
|
+
(item.type === 'tag' && item.tag == null) ||
|
|
393
|
+
(item.type === 'enum' && item.enum == null)) {
|
|
394
|
+
item.type = '';
|
|
395
|
+
}
|
|
396
|
+
item._isTruncate = !!item.width && options.widthMode.strictBehavior === 'truncate' && item.type !== 'img';
|
|
397
|
+
// className
|
|
398
|
+
this.mergeClass(item);
|
|
399
|
+
// width
|
|
400
|
+
if (typeof item.width === 'number') {
|
|
401
|
+
item._width = item.width;
|
|
402
|
+
item.width = `${item.width}px`;
|
|
403
|
+
}
|
|
404
|
+
item._left = false;
|
|
405
|
+
item._right = false;
|
|
406
|
+
item.safeType = item.safeType ?? options.safeType;
|
|
407
|
+
// sorter
|
|
408
|
+
item._sort = this.sortCoerce(item);
|
|
409
|
+
// filter
|
|
410
|
+
item.filter = this.filterCoerce(item);
|
|
411
|
+
// buttons
|
|
412
|
+
item.buttons = this.btnCoerce(item.buttons);
|
|
413
|
+
// widget
|
|
414
|
+
this.widgetCoerce(item);
|
|
415
|
+
// restore custom row
|
|
416
|
+
this.restoreRender(item);
|
|
417
|
+
// resizable
|
|
418
|
+
item.resizable = {
|
|
419
|
+
disabled: true,
|
|
420
|
+
bounds: 'window',
|
|
421
|
+
minWidth: 60,
|
|
422
|
+
maxWidth: 360,
|
|
423
|
+
preview: true,
|
|
424
|
+
...options.resizable,
|
|
425
|
+
...(typeof item.resizable === 'boolean' ? { disabled: !item.resizable } : item.resizable)
|
|
426
|
+
};
|
|
427
|
+
item.__point = point++;
|
|
428
|
+
return item;
|
|
429
|
+
};
|
|
430
|
+
const processList = (data) => {
|
|
431
|
+
for (const item of data) {
|
|
432
|
+
columns.push(processItem(item));
|
|
433
|
+
if (Array.isArray(item.children)) {
|
|
434
|
+
processList(item.children);
|
|
435
|
+
}
|
|
436
|
+
}
|
|
437
|
+
};
|
|
438
|
+
const copyList = this.cleanCond(list);
|
|
439
|
+
processList(copyList);
|
|
440
|
+
if (checkboxCount > 1) {
|
|
441
|
+
throw new Error(`[st]: just only one column checkbox`);
|
|
442
|
+
}
|
|
443
|
+
if (radioCount > 1) {
|
|
444
|
+
throw new Error(`[st]: just only one column radio`);
|
|
445
|
+
}
|
|
446
|
+
this.fixedCoerce(columns);
|
|
447
|
+
return {
|
|
448
|
+
columns: columns.filter(w => !Array.isArray(w.children) || w.children.length === 0),
|
|
449
|
+
...this.genHeaders(copyList)
|
|
450
|
+
};
|
|
451
|
+
}
|
|
452
|
+
restoreAllRender(columns) {
|
|
453
|
+
columns.forEach(i => this.restoreRender(i));
|
|
454
|
+
}
|
|
455
|
+
updateDefault(filter) {
|
|
456
|
+
if (filter.menus == null)
|
|
457
|
+
return this;
|
|
458
|
+
if (filter.type === 'default') {
|
|
459
|
+
filter.default = filter.menus.findIndex(w => w.checked) !== -1;
|
|
460
|
+
}
|
|
461
|
+
else {
|
|
462
|
+
filter.default = !!filter.menus[0].value;
|
|
463
|
+
}
|
|
464
|
+
return this;
|
|
465
|
+
}
|
|
466
|
+
cleanFilter(col) {
|
|
467
|
+
const f = col.filter;
|
|
468
|
+
f.default = false;
|
|
469
|
+
if (f.type === 'default') {
|
|
470
|
+
f.menus.forEach(i => (i.checked = false));
|
|
471
|
+
}
|
|
472
|
+
else {
|
|
473
|
+
f.menus[0].value = undefined;
|
|
474
|
+
}
|
|
475
|
+
return this;
|
|
476
|
+
}
|
|
477
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.4", ngImport: i0, type: STColumnSource, deps: [{ token: i1.DomSanitizer }, { token: i2.STRowSource, host: true }, { token: i3.ACLService, optional: true }, { token: ALAIN_I18N_TOKEN, optional: true }, { token: i4.STWidgetRegistry }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
478
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.0.4", ngImport: i0, type: STColumnSource }); }
|
|
479
|
+
}
|
|
480
|
+
export { STColumnSource };
|
|
481
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.4", ngImport: i0, type: STColumnSource, decorators: [{
|
|
482
|
+
type: Injectable
|
|
483
|
+
}], ctorParameters: function () { return [{ type: i1.DomSanitizer }, { type: i2.STRowSource, decorators: [{
|
|
484
|
+
type: Host
|
|
485
|
+
}] }, { type: i3.ACLService, decorators: [{
|
|
486
|
+
type: Optional
|
|
487
|
+
}] }, { type: undefined, decorators: [{
|
|
488
|
+
type: Optional
|
|
489
|
+
}, {
|
|
490
|
+
type: Inject,
|
|
491
|
+
args: [ALAIN_I18N_TOKEN]
|
|
492
|
+
}] }, { type: i4.STWidgetRegistry }]; } });
|
|
493
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3QtY29sdW1uLXNvdXJjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FiYy9zdC9zdC1jb2x1bW4tc291cmNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQWUsTUFBTSxlQUFlLENBQUM7QUFJaEYsT0FBTyxFQUFvQixnQkFBZ0IsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUVsRSxPQUFPLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxNQUFNLG1CQUFtQixDQUFDOzs7Ozs7QUF5Qm5ELE1BQ2EsY0FBYztJQUd6QixZQUNVLEdBQWlCLEVBQ1QsU0FBc0IsRUFDbEIsR0FBZSxFQUNXLE9BQXlCLEVBQy9ELGdCQUFrQztRQUpsQyxRQUFHLEdBQUgsR0FBRyxDQUFjO1FBQ1QsY0FBUyxHQUFULFNBQVMsQ0FBYTtRQUNsQixRQUFHLEdBQUgsR0FBRyxDQUFZO1FBQ1csWUFBTyxHQUFQLE9BQU8sQ0FBa0I7UUFDL0QscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtJQUN6QyxDQUFDO0lBRUosTUFBTSxDQUFDLEdBQWtCO1FBQ3ZCLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO0lBQ2pCLENBQUM7SUFFTyxNQUFNLENBQUMsQ0FBaUIsRUFBRSxHQUFzQjtRQUN0RCxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksSUFBSSxJQUFJLENBQUMsQ0FBQyxHQUFHLEtBQUssS0FBSyxFQUFFO1lBQ3BDLENBQUMsQ0FBQyxHQUFHLEdBQUcsS0FBSyxDQUFDO1lBQ2QsT0FBTztTQUNSO1FBRUQsSUFBSSxHQUFHLEdBQUc7WUFDUixHQUFHLEdBQUc7U0FDUCxDQUFDO1FBQ0YsSUFBSSxPQUFPLENBQUMsQ0FBQyxHQUFHLEtBQUssUUFBUSxFQUFFO1lBQzdCLEdBQUcsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FB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a0JBRDFCLFVBQVU7OzBCQU1OLElBQUk7OzBCQUNKLFFBQVE7OzBCQUNSLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsZ0JBQWdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSG9zdCwgSW5qZWN0LCBJbmplY3RhYmxlLCBPcHRpb25hbCwgVGVtcGxhdGVSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERvbVNhbml0aXplciB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuXG5pbXBvcnQgeyBBQ0xTZXJ2aWNlIH0gZnJvbSAnQGRlbG9uL2FjbCc7XG5pbXBvcnQgeyBBbGFpbkkxOE5TZXJ2aWNlLCBBTEFJTl9JMThOX1RPS0VOIH0gZnJvbSAnQGRlbG9uL3RoZW1lJztcbmltcG9ydCB7IEFsYWluU1RDb25maWcgfSBmcm9tICdAZGVsb24vdXRpbC9jb25maWcnO1xuaW1wb3J0IHsgZGVlcENvcHksIHdhcm4gfSBmcm9tICdAZGVsb24vdXRpbC9vdGhlcic7XG5pbXBvcnQgdHlwZSB7IE5nQ2xhc3NJbnRlcmZhY2UsIE56U2FmZUFueSB9IGZyb20gJ25nLXpvcnJvLWFudGQvY29yZS90eXBlcyc7XG5cbmltcG9ydCB7IFNUUm93U291cmNlIH0gZnJvbSAnLi9zdC1yb3cuZGlyZWN0aXZlJztcbmltcG9ydCB7IFNUV2lkZ2V0UmVnaXN0cnkgfSBmcm9tICcuL3N0LXdpZGdldCc7XG5pbXBvcnQge1xuICBTVENvbHVtbixcbiAgU1RDb2x1bW5CdXR0b24sXG4gIFNUQ29sdW1uQnV0dG9uUG9wLFxuICBTVENvbHVtbkZpbHRlcixcbiAgU1RDb2x1bW5Hcm91cFR5cGUsXG4gIFNUQ29sdW1uU2FmZVR5cGUsXG4gIFNUSWNvbixcbiAgU1RSZXNpemFibGUsXG4gIFNUU29ydE1hcCxcbiAgU1RXaWR0aE1vZGVcbn0gZnJvbSAnLi9zdC5pbnRlcmZhY2VzJztcbmltcG9ydCB7IF9TVENvbHVtbiwgX1NUSGVhZGVyIH0gZnJvbSAnLi9zdC50eXBlcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU1RDb2x1bW5Tb3VyY2VQcm9jZXNzT3B0aW9ucyB7XG4gIHdpZHRoTW9kZTogU1RXaWR0aE1vZGU7XG4gIHJlc2l6YWJsZT86IFNUUmVzaXphYmxlO1xuICBzYWZlVHlwZTogU1RDb2x1bW5TYWZlVHlwZTtcbn1cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFNUQ29sdW1uU291cmNlIHtcbiAgcHJpdmF0ZSBjb2chOiBBbGFpblNUQ29uZmlnO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZG9tOiBEb21TYW5pdGl6ZXIsXG4gICAgQEhvc3QoKSBwcml2YXRlIHJvd1NvdXJjZTogU1RSb3dTb3VyY2UsXG4gICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBhY2w6IEFDTFNlcnZpY2UsXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChBTEFJTl9JMThOX1RPS0VOKSBwcml2YXRlIGkxOG5TcnY6IEFsYWluSTE4TlNlcnZpY2UsXG4gICAgcHJpdmF0ZSBzdFdpZGdldFJlZ2lzdHJ5OiBTVFdpZGdldFJlZ2lzdHJ5XG4gICkge31cblxuICBzZXRDb2codmFsOiBBbGFpblNUQ29uZmlnKTogdm9pZCB7XG4gICAgdGhpcy5jb2cgPSB2YWw7XG4gIH1cblxuICBwcml2YXRlIGZpeFBvcChpOiBTVENvbHVtbkJ1dHRvbiwgZGVmOiBTVENvbHVtbkJ1dHRvblBvcCk6IHZvaWQge1xuICAgIGlmIChpLnBvcCA9PSBudWxsIHx8IGkucG9wID09PSBmYWxzZSkge1xuICAgICAgaS5wb3AgPSBmYWxzZTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBsZXQgcG9wID0ge1xuICAgICAgLi4uZGVmXG4gICAgfTtcbiAgICBpZiAodHlwZW9mIGkucG9wID09PSAnc3RyaW5nJykge1xuICAgICAgcG9wLnRpdGxlID0gaS5wb3A7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgaS5wb3AgPT09ICdvYmplY3QnKSB7XG4gICAgICBwb3AgPSB7XG4gICAgICAgIC4uLnBvcCxcbiAgICAgICAgLi4uaS5wb3BcbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBwb3AuY29uZGl0aW9uICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICBwb3AuY29uZGl0aW9uID0gKCkgPT4gZmFsc2U7XG4gICAgfVxuXG4gICAgaS5wb3AgPSBwb3A7XG4gIH1cblxuICBwcml2YXRlIGJ0bkNvZXJjZShsaXN0OiBTVENvbHVtbkJ1dHRvbltdKTogU1RDb2x1bW5CdXR0b25bXSB7XG4gICAgaWYgKCFsaXN0KSByZXR1cm4gW107XG4gICAgY29uc3QgcmV0OiBTVENvbHVtbkJ1dHRvbltdID0gW107XG4gICAgY29uc3QgeyBtb2RhbCwgZHJhd2VyLCBwb3AsIGJ0bkljb24gfSA9IHRoaXMuY29nO1xuXG4gICAgZm9yIChjb25zdCBpdGVtIG9mIGxpc3QpIHtcbiAgICAgIGlmICh0aGlzLmFjbCAmJiBpdGVtLmFjbCAmJiAhdGhpcy5hY2wuY2FuKGl0ZW0uYWNsKSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKGl0ZW0udHlwZSA9PT0gJ21vZGFsJyB8fCBpdGVtLnR5cGUgPT09ICdzdGF0aWMnKSB7XG4gICAgICAgIGlmIChpdGVtLm1vZGFsID09IG51bGwgfHwgaXRlbS5tb2RhbC5jb21wb25lbnQgPT0gbnVsbCkge1xuICAgICAgICAgIGlmICh0eXBlb2YgbmdEZXZNb2RlID09PSAndW5kZWZpbmVkJyB8fCBuZ0Rldk1vZGUpIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihgW3N0XSBTaG91bGQgc3BlY2lmeSBtb2RhbCBwYXJhbWV0ZXIgd2hlbiB0eXBlIGlzIG1vZGFsIG9yIHN0YXRpY2ApO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpdGVtLnR5cGUgPSAnbm9uZSc7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaXRlbS5tb2RhbCA9IHsgLi4ueyBwYXJhbXNOYW1lOiAncmVjb3JkJywgc2l6ZTogJ2xnJyB9LCAuLi5tb2RhbCwgLi4uaXRlbS5tb2RhbCB9O1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChpdGVtLnR5cGUgPT09ICdkcmF3ZXInKSB7XG4gICAgICAgIGlmIChpdGVtLmRyYXdlciA9PSBudWxsIHx8IGl0ZW0uZHJhd2VyLmNvbXBvbmVudCA9PSBudWxsKSB7XG4gICAgICAgICAgaWYgKHR5cGVvZiBuZ0Rldk1vZGUgPT09ICd1bmRlZmluZWQnIHx8IG5nRGV2TW9kZSkge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKGBbc3RdIFNob3VsZCBzcGVjaWZ5IGRyYXdlciBwYXJhbWV0ZXIgd2hlbiB0eXBlIGlzIGRyYXdlcmApO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpdGVtLnR5cGUgPSAnbm9uZSc7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaXRlbS5kcmF3ZXIgPSB7IC4uLnsgcGFyYW1zTmFtZTogJ3JlY29yZCcsIHNpemU6ICdsZycgfSwgLi4uZHJhd2VyLCAuLi5pdGVtLmRyYXdlciB9O1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChpdGVtLnR5cGUgPT09ICdkZWwnICYmIHR5cGVvZiBpdGVtLnBvcCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgaXRlbS5wb3AgPSB0cnVlO1xuICAgICAgfVxuXG4gICAgICAvLyBwb3BcbiAgICAgIHRoaXMuZml4UG9wKGl0ZW0sIHBvcCEpO1xuXG4gICAgICBpZiAoaXRlbS5pY29uKSB7XG4gICAgICAgIGl0ZW0uaWNvbiA9IHtcbiAgICAgICAgICAuLi5idG5JY29uLFxuICAgICAgICAgIC4uLih0eXBlb2YgaXRlbS5pY29uID09PSAnc3RyaW5nJyA/IHsgdHlwZTogaXRlbS5pY29uIH0gOiBpdGVtLmljb24pXG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIGl0ZW0uY2hpbGRyZW4gPSBpdGVtLmNoaWxkcmVuICYmIGl0ZW0uY2hpbGRyZW4ubGVuZ3RoID4gMCA/IHRoaXMuYnRuQ29lcmNlKGl0ZW0uY2hpbGRyZW4pIDogW107XG5cbiAgICAgIC8vIGkxOG5cbiAgICAgIGlmIChpdGVtLmkxOG4gJiYgdGhpcy5pMThuU3J2KSB7XG4gICAgICAgIGl0ZW0udGV4dCA9IHRoaXMuaTE4blNydi5mYW55aShpdGVtLmkxOG4pO1xuICAgICAgfVxuXG4gICAgICByZXQucHVzaChpdGVtKTtcbiAgICB9XG4gICAgdGhpcy5idG5Db2VyY2VJZihyZXQpO1xuICAgIHJldHVybiByZXQ7XG4gIH1cblxuICBwcml2YXRlIGJ0bkNvZXJjZUlmKGxpc3Q6IFNUQ29sdW1uQnV0dG9uW10pOiB2b2lkIHtcbiAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgbGlzdCkge1xuICAgICAgaXRlbS5paWZCZWhhdmlvciA9IGl0ZW0uaWlmQmVoYXZpb3IgfHwgdGhpcy5jb2cuaWlmQmVoYXZpb3I7XG4gICAgICBpZiAoaXRlbS5jaGlsZHJlbiAmJiBpdGVtLmNoaWxkcmVuLmxlbmd0aCA+IDApIHtcbiAgICAgICAgdGhpcy5idG5Db2VyY2VJZihpdGVtLmNoaWxkcmVuKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGl0ZW0uY2hpbGRyZW4gPSBbXTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGZpeGVkQ29lcmNlKGxpc3Q6IF9TVENvbHVtbltdKTogdm9pZCB7XG4gICAgY29uc3QgY291bnRSZWR1Y2UgPSAoYTogbnVtYmVyLCBiOiBfU1RDb2x1bW4pOiBudW1iZXIgPT4gYSArICtiLndpZHRoIS50b1N0cmluZygpLnJlcGxhY2UoJ3B4JywgJycpO1xuICAgIC8vIGxlZnQgd2lkdGhcbiAgICBsaXN0XG4gICAgICAuZmlsdGVyKHcgPT4gdy5maXhlZCAmJiB3LmZpeGVkID09PSAnbGVmdCcgJiYgdy53aWR0aClcbiAgICAgIC5mb3JFYWNoKChpdGVtLCBpZHgpID0+IChpdGVtLl9sZWZ0ID0gYCR7bGlzdC5zbGljZSgwLCBpZHgpLnJlZHVjZShjb3VudFJlZHVjZSwgMCl9cHhgKSk7XG4gICAgLy8gcmlnaHQgd2lkdGhcbiAgICBsaXN0XG4gICAgICAuZmlsdGVyKHcgPT4gdy5maXhlZCAmJiB3LmZpeGVkID09PSAncmlnaHQnICYmIHcud2lkdGgpXG4gICAgICAucmV2ZXJzZSgpXG4gICAgICAuZm9yRWFjaCgoaXRlbSwgaWR4KSA9PiAoaXRlbS5fcmlnaHQgPSBgJHtpZHggPiAwID8gbGlzdC5zbGljZSgtaWR4KS5yZWR1Y2UoY291bnRSZWR1Y2UsIDApIDogMH1weGApKTtcbiAgfVxuXG4gIHByaXZhdGUgc29ydENvZXJjZShpdGVtOiBfU1RDb2x1bW4pOiBTVFNvcnRNYXAge1xuICAgIGNvbnN0IHJlcyA9IHRoaXMuZml4U29ydENvZXJjZShpdGVtKTtcbiAgICByZXMucmVOYW1lID0ge1xuICAgICAgLi4udGhpcy5jb2cuc29ydFJlTmFtZSxcbiAgICAgIC4uLnJlcy5yZU5hbWVcbiAgICB9O1xuICAgIHJldHVybiByZXM7XG4gIH1cblxuICBwcml2YXRlIGZpeFNvcnRDb2VyY2UoaXRlbTogX1NUQ29sdW1uKTogU1RTb3J0TWFwIHtcbiAgICBpZiAodHlwZW9mIGl0ZW0uc29ydCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHJldHVybiB7IGVuYWJsZWQ6IGZhbHNlIH07XG4gICAgfVxuXG4gICAgbGV0IHJlczogU1RTb3J0TWFwID0ge307XG5cbiAgICBpZiAodHlwZW9mIGl0ZW0uc29ydCA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHJlcy5rZXkgPSBpdGVtLnNvcnQ7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgaXRlbS5zb3J0ICE9PSAnYm9vbGVhbicpIHtcbiAgICAgIHJlcyA9IGl0ZW0uc29ydDtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBpdGVtLnNvcnQgPT09ICdib29sZWFuJykge1xuICAgICAgcmVzLmNvbXBhcmUgPSAoYSwgYikgPT4gYVtpdGVtLmluZGV4S2V5IV0gLSBiW2l0ZW0uaW5kZXhLZXkhXTtcbiAgICB9XG5cbiAgICBpZiAoIXJlcy5rZXkpIHtcbiAgICAgIHJlcy5rZXkgPSBpdGVtLmluZGV4S2V5O1xuICAgIH1cblxuICAgIHJlcy5lbmFibGVkID0gdHJ1ZTtcblxuICAgIHJldHVybiByZXM7XG4gIH1cblxuICBwcml2YXRlIGZpbHRlckNvZXJjZShpdGVtOiBfU1RDb2x1bW4pOiBTVENvbHVtbkZpbHRlciB8IG51bGwge1xuICAgIGlmIChpdGVtLmZpbHRlciA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBsZXQgcmVzOiBTVENvbHVtbkZpbHRlciB8IG51bGwgPSBpdGVtLmZpbHRlcjtcbiAgICByZXMudHlwZSA9IHJlcy50eXBlIHx8ICdkZWZhdWx0JztcbiAgICByZXMuc2hvd09QQXJlYSA9IHJlcy5zaG93T1BBcmVhICE9PSBmYWxzZTtcblxuICAgIGxldCBpY29uID0gJ2ZpbHRlcic7XG4gICAgbGV0IGljb25UaGVtZSA9ICdmaWxsJztcbiAgICBsZXQgZml4TWVudXMgPSB0cnVlO1xuICAgIGxldCB2YWx1ZTogTnpTYWZlQW55ID0gdW5kZWZpbmVkO1xuICAgIHN3aXRjaCAocmVzLnR5cGUpIHtcbiAgICAgIGNhc2UgJ2tleXdvcmQnOlxuICAgICAgICBpY29uID0gJ3NlYXJjaCc7XG4gICAgICAgIGljb25UaGVtZSA9ICdvdXRsaW5lJztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdudW1iZXInOlxuICAgICAgICBpY29uID0gJ3NlYXJjaCc7XG4gICAgICAgIGljb25UaGVtZSA9ICdvdXRsaW5lJztcbiAgICAgICAgcmVzLm51bWJlciA9IHtcbiAgICAgICAgICBzdGVwOiAxLFxuICAgICAgICAgIG1pbjogLUluZmluaXR5LFxuICAgICAgICAgIG1heDogSW5maW5pdHksXG4gICAgICAgICAgLi4ucmVzLm51bWJlclxuICAgICAgICB9O1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2RhdGUnOlxuICAgICAgICBpY29uID0gJ2NhbGVuZGFyJztcbiAgICAgICAgaWNvblRoZW1lID0gJ291dGxpbmUnO1xuICAgICAgICByZXMuZGF0ZSA9IHtcbiAgICAgICAgICByYW5nZTogZmFsc2UsXG4gICAgICAgICAgbW9kZTogJ2RhdGUnLFxuICAgICAgICAgIHNob3dUb2RheTogdHJ1ZSxcbiAgICAgICAgICBzaG93Tm93OiBmYWxzZSxcbiAgICAgICAgICAuLi5yZXMuZGF0ZVxuICAgICAgICB9O1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2N1c3RvbSc6XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgZml4TWVudXMgPSBmYWxzZTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGlmIChmaXhNZW51cyAmJiAocmVzLm1lbnVzID09IG51bGwgfHwgcmVzLm1lbnVzIS5sZW5ndGggPT09IDApKSB7XG4gICAgICByZXMubWVudXMgPSBbeyB2YWx1ZSB9XTtcbiAgICB9XG5cbiAgICBpZiAocmVzLm1lbnVzPy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgcmVzLm11bHRpcGxlID09PSAndW5kZWZpbmVkJykge1xuICAgICAgcmVzLm11bHRpcGxlID0gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXMuY29uZmlybVRleHQgPSByZXMuY29uZmlybVRleHQgfHwgdGhpcy5jb2cuZmlsdGVyQ29uZmlybVRleHQ7XG4gICAgcmVzLmNsZWFyVGV4dCA9IHJlcy5jbGVhclRleHQgfHwgdGhpcy5jb2cuZmlsdGVyQ2xlYXJUZXh0O1xuICAgIHJlcy5rZXkgPSByZXMua2V5IHx8IGl0ZW0uaW5kZXhLZXk7XG4gICAgcmVzLmljb24gPSByZXMuaWNvbiB8fCBpY29uO1xuXG4gICAgY29uc3QgYmFzZUljb24gPSB7IHR5cGU6IGljb24sIHRoZW1lOiBpY29uVGhlbWUgfSBhcyBTVEljb247XG4gICAgaWYgKHR5cGVvZiByZXMuaWNvbiA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHJlcy5pY29uID0geyAuLi5iYXNlSWNvbiwgdHlwZTogcmVzLmljb24gfSBhcyBTVEljb247XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlcy5pY29uID0geyAuLi5iYXNlSWNvbiwgLi4ucmVzLmljb24gfTtcbiAgICB9XG5cbiAgICB0aGlzLnVwZGF0ZURlZmF1bHQocmVzKTtcblxuICAgIGlmICh0aGlzLmFjbCkge1xuICAgICAgcmVzLm1lbnVzID0gcmVzLm1lbnVzPy5maWx0ZXIodyA9PiB0aGlzLmFjbC5jYW4ody5hY2whKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlcy5tZW51cz8ubGVuZ3RoID09PSAwID8gbnVsbCA6IHJlcztcbiAgfVxuXG4gIHByaXZhdGUgcmVzdG9yZVJlbmRlcihpdGVtOiBfU1RDb2x1bW4pOiB2b2lkIHtcbiAgICBpZiAoaXRlbS5yZW5kZXJUaXRsZSkge1xuICAgICAgaXRlbS5fX3JlbmRlclRpdGxlID1cbiAgICAgICAgdHlwZW9mIGl0ZW0ucmVuZGVyVGl0bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgPyB0aGlzLnJvd1NvdXJjZS5nZXRUaXRsZShpdGVtLnJlbmRlclRpdGxlKVxuICAgICAgICAgIDogKGl0ZW0ucmVuZGVyVGl0bGUgYXMgVGVtcGxhdGVSZWY8dm9pZD4pO1xuICAgIH1cbiAgICBpZiAoaXRlbS5yZW5kZXIpIHtcbiAgICAgIGl0ZW0uX19yZW5kZXIgPVxuICAgICAgICB0eXBlb2YgaXRlbS5yZW5kZXIgPT09ICdzdHJpbmcnID8gdGhpcy5yb3dTb3VyY2UuZ2V0Um93KGl0ZW0ucmVuZGVyKSA6IChpdGVtLnJlbmRlciBhcyBUZW1wbGF0ZVJlZjx2b2lkPik7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB3aWRnZXRDb2VyY2UoaXRlbTogX1NUQ29sdW1uKTogdm9pZCB7XG4gICAgaWYgKGl0ZW0udHlwZSAhPT0gJ3dpZGdldCcpIHJldHVybjtcbiAgICBpZiAoaXRlbS53aWRnZXQgPT0gbnVsbCB8fCAhdGhpcy5zdFdpZGdldFJlZ2lzdHJ5LmhhcyhpdGVtLndpZGdldC50eXBlKSkge1xuICAgICAgZGVsZXRlIGl0ZW0udHlwZTtcbiAgICAgIGlmICh0eXBlb2YgbmdEZXZNb2RlID09PSAndW5kZWZpbmVkJyB8fCBuZ0Rldk1vZGUpIHtcbiAgICAgICAgd2Fybihgc3Q6IE5vIHdpZGdldCBmb3IgdHlwZSBcIiR7aXRlbS53aWRnZXQ/LnR5cGV9XCJgKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdlbkhlYWRlcnMocm9vdENvbHVtbnM6IF9TVENvbHVtbltdKTogeyBoZWFkZXJzOiBfU1RIZWFkZXJbXVtdOyBoZWFkZXJXaWR0aHM6IHN0cmluZ1tdIHwgbnVsbCB9IHtcbiAgICBjb25zdCByb3dzOiBfU1RIZWFkZXJbXVtdID0gW107XG4gICAgY29uc3Qgd2lkdGhzOiBzdHJpbmdbXSA9IFtdO1xuICAgIGNvbnN0IGZpbGxSb3dDZWxscyA9IChjb2x1bW5zOiBfU1RDb2x1bW5bXSwgY29sSW5kZXg6IG51bWJlciwgcm93SW5kZXggPSAwKTogbnVtYmVyW10gPT4ge1xuICAgICAgLy8gSW5pdCByb3dzXG4gICAgICByb3dzW3Jvd0luZGV4XSA9IHJvd3Nbcm93SW5kZXhdIHx8IFtdO1xuXG4gICAgICBsZXQgY3VycmVudENvbEluZGV4ID0gY29sSW5kZXg7XG4gICAgICBjb25zdCBjb2xTcGFuczogbnVtYmVyW10gPSBjb2x1bW5zLm1hcChjb2x1bW4gPT4ge1xuICAgICAgICBjb25zdCBjZWxsOiBTVENvbHVtbkdyb3VwVHlwZSA9IHtcbiAgICAgICAgICBjb2x1bW4sXG4gICAgICAgICAgY29sU3RhcnQ6IGN1cnJlbnRDb2xJbmRleCxcbiAgICAgICAgICBoYXNTdWJDb2x1bW5zOiBmYWxzZVxuICAgICAgICB9O1xuXG4gICAgICAgIGxldCBjb2xTcGFuID0gMTtcblxuICAgICAgICBjb25zdCBzdWJDb2x1bW5zID0gY29sdW1uLmNoaWxkcmVuO1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShzdWJDb2x1bW5zKSAmJiBzdWJDb2x1bW5zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICBjb2xTcGFuID0gZmlsbFJvd0NlbGxzKHN1YkNvbHVtbnMsIGN1cnJlbnRDb2xJbmRleCwgcm93SW5kZXggKyAxKS5yZWR1Y2UoKHRvdGFsLCBjb3VudCkgPT4gdG90YWwgKyBjb3VudCwgMCk7XG4gICAgICAgICAgY2VsbC5oYXNTdWJDb2x1bW5zID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB3aWR0aHMucHVzaCgoY2VsbC5jb2x1bW4ud2lkdGggYXMgc3RyaW5nKSB8fCAnJyk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoJ2NvbFNwYW4nIGluIGNvbHVtbikge1xuICAgICAgICAgIGNvbFNwYW4gPSBjb2x1bW4uY29sU3BhbiE7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoJ3Jvd1NwYW4nIGluIGNvbHVtbikge1xuICAgICAgICAgIGNlbGwucm93U3BhbiA9IGNvbHVtbi5yb3dTcGFuO1xuICAgICAgICB9XG5cbiAgICAgICAgY2VsbC5jb2xTcGFuID0gY29sU3BhbjtcbiAgICAgICAgY2VsbC5jb2xFbmQgPSBjZWxsLmNvbFN0YXJ0ICsgY29sU3BhbiAtIDE7XG4gICAgICAgIHJvd3Nbcm93SW5kZXhdLnB1c2goY2VsbCBhcyBOelNhZmVBbnkpO1xuXG4gICAgICAgIGN1cnJlbnRDb2xJbmRleCArPSBjb2xTcGFuO1xuXG4gICAgICAgIHJldHVybiBjb2xTcGFuO1xuICAgICAgfSk7XG5cbiAgICAgIHJldHVybiBjb2xTcGFucztcbiAgICB9O1xuXG4gICAgZmlsbFJvd0NlbGxzKHJvb3RDb2x1bW5zLCAwKTtcblxuICAgIC8vIEhhbmRsZSBgcm93U3BhbmBcbiAgICBjb25zdCByb3dDb3VudCA9IHJvd3MubGVuZ3RoO1xuICAgIGZvciAobGV0IHJvd0luZGV4ID0gMDsgcm93SW5kZXggPCByb3dDb3VudDsgcm93SW5kZXggKz0gMSkge1xuICAgICAgcm93c1tyb3dJbmRleF0uZm9yRWFjaChjZWxsID0+IHtcbiAgICAgICAgaWYgKCEoJ3Jvd1NwYW4nIGluIGNlbGwpICYmICEoY2VsbCBhcyBfU1RIZWFkZXIpLmhhc1N1YkNvbHVtbnMpIHtcbiAgICAgICAgICAoY2VsbCBhcyBfU1RIZWFkZXIpLnJvd1NwYW4gPSByb3dDb3VudCAtIHJvd0luZGV4O1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4geyBoZWFkZXJzOiByb3dzLCBoZWFkZXJXaWR0aHM6IHJvd0NvdW50ID4gMSA/IHdpZHRocyA6IG51bGwgfTtcbiAgfVxuXG4gIHByaXZhdGUgY2xlYW5Db25kKGxpc3Q6IF9TVENvbHVtbltdKTogX1NUQ29sdW1uW10ge1xuICAgIGNvbnN0IHJlczogX1NUQ29sdW1uW10gPSBbXTtcbiAgICBjb25zdCBjb3B5TGlzdCA9IGRlZXBDb3B5KGxpc3QpO1xuICAgIGZvciAoY29uc3QgaXRlbSBvZiBjb3B5TGlzdCkge1xuICAgICAgaWYgKHR5cGVvZiBpdGVtLmlpZiA9PT0gJ2Z1bmN0aW9uJyAmJiAhaXRlbS5paWYoaXRlbSkpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5hY2wgJiYgaXRlbS5hY2wgJiYgIXRoaXMuYWNsLmNhbihpdGVtLmFjbCkpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShpdGVtLmNoaWxkcmVuKSAmJiBpdGVtLmNoaWxkcmVuLmxlbmd0aCA+IDApIHtcbiAgICAgICAgaXRlbS5jaGlsZHJlbiA9IHRoaXMuY2xlYW5Db25kKGl0ZW0uY2hpbGRyZW4pO1xuICAgICAgfVxuICAgICAgcmVzLnB1c2goaXRlbSk7XG4gICAgfVxuICAgIHJldHVybiByZXM7XG4gIH1cblxuICBwcml2YXRlIG1lcmdlQ2xhc3MoaXRlbTogX1NUQ29sdW1uKTogdm9pZCB7XG4gICAgY29uc3QgYnVpbHRJbkNsYXNzTmFtZXM6IHN0cmluZ1tdID0gW107XG4gICAgaWYgKGl0ZW0uX2lzVHJ1bmNhdGUpIHtcbiAgICAgIGJ1aWx0SW5DbGFzc05hbWVzLnB1c2goJ3RleHQtdHJ1bmNhdGUnKTtcbiAgICB9XG4gICAgY29uc3QgcmF3Q2xhc3NOYW1lID0gaXRlbS5jbGFzc05hbWU7XG4gICAgaWYgKCFyYXdDbGFzc05hbWUpIHtcbiAgICAgIGNvbnN0IHR5cGVDbGFzcyA9IChcbiAgICAgICAge1xuICAgICAgICAgIG51bWJlcjogJ3RleHQtcmlnaHQnLFxuICAgICAgICAgIGN1cnJlbmN5OiAndGV4dC1yaWdodCcsXG4gICAgICAgICAgZGF0ZTogJ3RleHQtY2VudGVyJ1xuICAgICAgICB9IGFzIE56U2FmZUFueVxuICAgICAgKVtpdGVtLnR5cGUhXTtcbiAgICAgIGlmICh0eXBlQ2xhc3MpIHtcbiAgICAgICAgYnVpbHRJbkNsYXNzTmFtZXMucHVzaCh0eXBlQ2xhc3MpO1xuICAgICAgfVxuICAgICAgaXRlbS5fY2xhc3NOYW1lID0gYnVpbHRJbkNsYXNzTmFtZXM7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgcmF3Q2xhc3NOYW1lSXNBcnJheSA9IEFycmF5LmlzQXJyYXkocmF3Q2xhc3NOYW1lKTtcbiAgICBpZiAoIXJhd0NsYXNzTmFtZUlzQXJyYXkgJiYgdHlwZW9mIHJhd0NsYXNzTmFtZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgIGNvbnN0IG9iakNsYXNzTmFtZXM6IE5nQ2xhc3NJbnRlcmZhY2UgPSByYXdDbGFzc05hbWU7XG4gICAgICBidWlsdEluQ2xhc3NOYW1lcy5mb3JFYWNoKGtleSA9PiAob2JqQ2xhc3NOYW1lc1trZXldID0gdHJ1ZSkpO1xuICAgICAgaXRlbS5fY2xhc3NOYW1lID0gb2JqQ2xhc3NOYW1lcztcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBhcnJheUNsYXNzTmFtZXMgPSByYXdDbGFzc05hbWVJc0FycmF5ID8gQXJyYXkuZnJvbShyYXdDbGFzc05hbWUgYXMgc3RyaW5nW10pIDogW3Jhd0NsYXNzTmFtZV07XG4gICAgYXJyYXlDbGFzc05hbWVzLnNwbGljZSgwLCAwLCAuLi5idWlsdEluQ2xhc3NOYW1lcyk7XG4gICAgaXRlbS5fY2xhc3NOYW1lID0gWy4uLm5ldyBTZXQoYXJyYXlDbGFzc05hbWVzKV0uZmlsdGVyKHcgPT4gISF3KTtcbiAgfVxuXG4gIHByb2Nlc3MoXG4gICAgbGlzdDogU1RDb2x1bW5bXSxcbiAgICBvcHRpb25zOiBTVENvbHVtblNvdXJjZVByb2Nlc3NPcHRpb25zXG4gICk6IHsgY29sdW1uczogX1NUQ29sdW1uW107IGhlYWRlcnM6IF9TVEhlYWRlcltdW107IGhlYWRlcldpZHRoczogc3RyaW5nW10gfCBudWxsIH0ge1xuICAgIGlmICghbGlzdCB8fCBsaXN0Lmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIHsgY29sdW1uczogW10sIGhlYWRlcnM6IFtdLCBoZWFkZXJXaWR0aHM6IG51bGwgfTtcbiAgICB9XG4gICAgY29uc3QgeyBub0luZGV4IH0gPSB0aGlzLmNvZztcbiAgICBsZXQgY2hlY2tib3hDb3VudCA9IDA7XG4gICAgbGV0IHJhZGlvQ291bnQgPSAwO1xuICAgIGxldCBwb2ludCA9IDA7XG4gICAgY29uc3QgY29sdW1uczogX1NUQ29sdW1uW10gPSBbXTtcblxuICAgIGNvbnN0IHByb2Nlc3NJdGVtID0gKGl0ZW06IF9TVENvbHVtbik6IF9TVENvbHVtbiA9PiB7XG4gICAgICAvLyBpbmRleFxuICAgICAgaWYgKGl0ZW0uaW5kZXgpIHtcbiAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGl0ZW0uaW5kZXgpKSB7XG4gICAgICAgICAgaXRlbS5pbmRleCA9IGl0ZW0uaW5kZXgudG9TdHJpbmcoKS5zcGxpdCgnLicpO1xuICAgICAgICB9XG4gICAgICAgIGl0ZW0uaW5kZXhLZXkgPSBpdGVtLmluZGV4LmpvaW4oJy4nKTtcbiAgICAgIH1cblxuICAgICAgLy8gI3JlZ2lvbiB0aXRsZVxuXG4gICAgICBjb25zdCB0aXQgPSAodHlwZW9mIGl0ZW0udGl0bGUgPT09ICdzdHJpbmcnID8geyB0ZXh0OiBpdGVtLnRpdGxlIH0gOiBpdGVtLnRpdGxlKSB8fCB7fTtcbiAgICAgIGlmICh0aXQuaTE4biAmJiB0aGlzLmkxOG5TcnYpIHtcbiAgICAgICAgdGl0LnRleHQgPSB0aGlzLmkxOG5TcnYuZmFueWkodGl0LmkxOG4pO1xuICAgICAgfVxuICAgICAgaWYgKHRpdC50ZXh0KSB7XG4gICAgICAgIHRpdC5fdGV4dCA9IHRoaXMuZG9tLmJ5cGFzc1NlY3VyaXR5VHJ1c3RIdG1sKHRpdC50ZXh0KTtcbiAgICAgIH1cbiAgICAgIGl0ZW0udGl0bGUgPSB0aXQ7XG5cbiAgICAgIC8vICNlbmRyZWdpb25cblxuICAgICAgLy8gbm9cbiAgICAgIGlmIChpdGVtLnR5cGUgPT09ICdubycpIHtcbiAgICAgICAgaXRlbS5ub0luZGV4ID0gaXRlbS5ub0luZGV4ID09IG51bGwgPyBub0luZGV4IDogaXRlbS5ub0luZGV4O1xuICAgICAgfVxuICAgICAgLy8gY2hlY2tib3hcbiAgICAgIGlmIChpdGVtLnNlbGVjdGlvbnMgPT0gbnVsbCkge1xuICAgICAgICBpdGVtLnNlbGVjdGlvbnMgPSBbXTtcbiAgICAgIH1cbiAgICAgIGlmIChpdGVtLnR5cGUgPT09ICdjaGVja2JveCcpIHtcbiAgICAgICAgKytjaGVja2JveENvdW50O1xuICAgICAgICBpZiAoIWl0ZW0ud2lkdGgpIHtcbiAgICAgICAgICBpdGVtLndpZHRoID0gYCR7aXRlbS5zZWxlY3Rpb25zLmxlbmd0aCA+IDAgPyA2MiA6IDUwfXB4YDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHRoaXMuYWNsKSB7XG4gICAgICAgIGl0ZW0uc2VsZWN0aW9ucyA9IGl0ZW0uc2VsZWN0aW9ucy5maWx0ZXIodyA9PiB0aGlzLmFjbC5jYW4ody5hY2whKSk7XG4gICAgICB9XG4gICAgICAvLyByYWRpb1xuICAgICAgaWYgKGl0ZW0udHlwZSA9PT0gJ3JhZGlvJykge1xuICAgICAgICArK3JhZGlvQ291bnQ7XG4gICAgICAgIGl0ZW0uc2VsZWN0aW9ucyA9IFtdO1xuICAgICAgICBpZiAoIWl0ZW0ud2lkdGgpIHtcbiAgICAgICAgICBpdGVtLndpZHRoID0gJzUwcHgnO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICAvLyB0eXBlc1xuICAgICAgaWYgKGl0ZW0udHlwZSA9PT0gJ3luJykge1xuICAgICAgICBpdGVtLnluID0geyB0cnV0aDogdHJ1ZSwgLi4udGhpcy5jb2cueW4sIC4uLml0ZW0ueW4gfTtcbiAgICAgIH1cbiAgICAgIC8vIGRhdGVcbiAgICAgIGlmIChpdGVtLnR5cGUgPT09ICdkYXRlJykge1xuICAgICAgICBpdGVtLmRhdGVGb3JtYXQgPSBpdGVtLmRhdGVGb3JtYXQgfHwgdGhpcy5jb2cuZGF0ZT8uZm9ybWF0O1xuICAgICAgfVxuICAgICAgaWYgKFxuICAgICAgICAoaXRlbS50eXBlID09PSAnbGluaycgJiYgdHlwZW9mIGl0ZW0uY2xpY2sgIT09ICdmdW5jdGlvbicpIHx8XG4gICAgICAgIChpdGVtLnR5cGUgPT09ICdiYWRnZScgJiYgaXRlbS5iYWRnZSA9PSBudWxsKSB8fFxuICAgICAgICAoaXRlbS50eXBlID09PSAndGFnJyAmJiBpdGVtLnRhZyA9PSBudWxsKSB8fFxuICAgICAgICAoaXRlbS50eXBlID09PSAnZW51bScgJiYgaXRlbS5lbnVtID09IG51bGwpXG4gICAgICApIHtcbiAgICAgICAgaXRlbS50eXBlID0gJyc7XG4gICAgICB9XG4gICAgICBpdGVtLl9pc1RydW5jYXRlID0gISFpdGVtLndpZHRoICYmIG9wdGlvbnMud2lkdGhNb2RlLnN0cmljdEJlaGF2aW9yID09PSAndHJ1bmNhdGUnICYmIGl0ZW0udHlwZSAhPT0gJ2ltZyc7XG4gICAgICAvLyBjbGFzc05hbWVcbiAgICAgIHRoaXMubWVyZ2VDbGFzcyhpdGVtKTtcbiAgICAgIC8vIHdpZHRoXG4gICAgICBpZiAodHlwZW9mIGl0ZW0ud2lkdGggPT09ICdudW1iZXInKSB7XG4gICAgICAgIGl0ZW0uX3dpZHRoID0gaXRlbS53aWR0aDtcbiAgICAgICAgaXRlbS53aWR0aCA9IGAke2l0ZW0ud2lkdGh9cHhgO1xuICAgICAgfVxuICAgICAgaXRlbS5fbGVmdCA9IGZhbHNlO1xuICAgICAgaXRlbS5fcmlnaHQgPSBmYWxzZTtcbiAgICAgIGl0ZW0uc2FmZVR5cGUgPSBpdGVtLnNhZmVUeXBlID8/IG9wdGlvbnMuc2FmZVR5cGU7XG5cbiAgICAgIC8vIHNvcnRlclxuICAgICAgaXRlbS5fc29ydCA9IHRoaXMuc29ydENvZXJjZShpdGVtKTtcbiAgICAgIC8vIGZpbHRlclxuICAgICAgaXRlbS5maWx0ZXIgPSB0aGlzLmZpbHRlckNvZXJjZShpdGVtKSBhcyBTVENvbHVtbkZpbHRlcjtcbiAgICAgIC8vIGJ1dHRvbnNcbiAgICAgIGl0ZW0uYnV0dG9ucyA9IHRoaXMuYnRuQ29lcmNlKGl0ZW0uYnV0dG9ucyEpO1xuICAgICAgLy8gd2lkZ2V0XG4gICAgICB0aGlzLndpZGdldENvZXJjZShpdGVtKTtcbiAgICAgIC8vIHJlc3RvcmUgY3VzdG9tIHJvd1xuICAgICAgdGhpcy5yZXN0b3JlUmVuZGVyKGl0ZW0pO1xuICAgICAgLy8gcmVzaXphYmxlXG4gICAgICBpdGVtLnJlc2l6YWJsZSA9IHtcbiAgICAgICAgZGlzYWJsZWQ6IHRydWUsXG4gICAgICAgIGJvdW5kczogJ3dpbmRvdycsXG4gICAgICAgIG1pbldpZHRoOiA2MCxcbiAgICAgICAgbWF4V2lkdGg6IDM2MCxcbiAgICAgICAgcHJldmlldzogdHJ1ZSxcbiAgICAgICAgLi4ub3B0aW9ucy5yZXNpemFibGUsXG4gICAgICAgIC4uLih0eXBlb2YgaXRlbS5yZXNpemFibGUgPT09ICdib29sZWFuJyA/ICh7IGRpc2FibGVkOiAhaXRlbS5yZXNpemFibGUgfSBhcyBTVFJlc2l6YWJsZSkgOiBpdGVtLnJlc2l6YWJsZSlcbiAgICAgIH07XG5cbiAgICAgIGl0ZW0uX19wb2ludCA9IHBvaW50Kys7XG5cbiAgICAgIHJldHVybiBpdGVtO1xuICAgIH07XG5cbiAgICBjb25zdCBwcm9jZXNzTGlzdCA9IChkYXRhOiBfU1RDb2x1bW5bXSk6IHZvaWQgPT4ge1xuICAgICAgZm9yIChjb25zdCBpdGVtIG9mIGRhdGEpIHtcbiAgICAgICAgY29sdW1ucy5wdXNoKHByb2Nlc3NJdGVtKGl0ZW0pKTtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoaXRlbS5jaGlsZHJlbikpIHtcbiAgICAgICAgICBwcm9jZXNzTGlzdChpdGVtLmNoaWxkcmVuKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG5cbiAgICBjb25zdCBjb3B5TGlzdCA9IHRoaXMuY2xlYW5Db25kKGxpc3QgYXMgX1NUQ29sdW1uW10pO1xuICAgIHByb2Nlc3NMaXN0KGNvcHlMaXN0KTtcblxuICAgIGlmIChjaGVja2JveENvdW50ID4gMSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBbc3RdOiBqdXN0IG9ubHkgb25lIGNvbHVtbiBjaGVja2JveGApO1xuICAgIH1cbiAgICBpZiAocmFkaW9Db3VudCA+IDEpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgW3N0XToganVzdCBvbmx5IG9uZSBjb2x1bW4gcmFkaW9gKTtcbiAgICB9XG5cbiAgICB0aGlzLmZpeGVkQ29lcmNlKGNvbHVtbnMgYXMgX1NUQ29sdW1uW10pO1xuICAgIHJldHVybiB7XG4gICAgICBjb2x1bW5zOiBjb2x1bW5zLmZpbHRlcih3ID0+ICFBcnJheS5pc0FycmF5KHcuY2hpbGRyZW4pIHx8IHcuY2hpbGRyZW4ubGVuZ3RoID09PSAwKSxcbiAgICAgIC4uLnRoaXMuZ2VuSGVhZGVycyhjb3B5TGlzdClcbiAgICB9O1xuICB9XG5cbiAgcmVzdG9yZUFsbFJlbmRlcihjb2x1bW5zOiBfU1RDb2x1bW5bXSk6IHZvaWQge1xuICAgIGNvbHVtbnMuZm9yRWFjaChpID0+IHRoaXMucmVzdG9yZVJlbmRlcihpKSk7XG4gIH1cblxuICB1cGRhdGVEZWZhdWx0KGZpbHRlcjogU1RDb2x1bW5GaWx0ZXIpOiB0aGlzIHtcbiAgICBpZiAoZmlsdGVyLm1lbnVzID09IG51bGwpIHJldHVybiB0aGlzO1xuXG4gICAgaWYgKGZpbHRlci50eXBlID09PSAnZGVmYXVsdCcpIHtcbiAgICAgIGZpbHRlci5kZWZhdWx0ID0gZmlsdGVyLm1lbnVzIS5maW5kSW5kZXgodyA9PiB3LmNoZWNrZWQhKSAhPT0gLTE7XG4gICAgfSBlbHNlIHtcbiAgICAgIGZpbHRlci5kZWZhdWx0ID0gISFmaWx0ZXIubWVudXMhWzBdLnZhbHVlO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGNsZWFuRmlsdGVyKGNvbDogX1NUQ29sdW1uKTogdGhpcyB7XG4gICAgY29uc3QgZiA9IGNvbC5maWx0ZXIhO1xuICAgIGYuZGVmYXVsdCA9IGZhbHNlO1xuICAgIGlmIChmLnR5cGUgPT09ICdkZWZhdWx0Jykge1xuICAgICAgZi5tZW51cyEuZm9yRWFjaChpID0+IChpLmNoZWNrZWQgPSBmYWxzZSkpO1xuICAgIH0gZWxzZSB7XG4gICAgICBmLm1lbnVzIVswXS52YWx1ZSA9IHVuZGVmaW5lZDtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cbn1cbiJdfQ==
|