@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
|
@@ -1,172 +0,0 @@
|
|
|
1
|
-
import { Directive, EventEmitter, Host, Input, Optional, Output } from '@angular/core';
|
|
2
|
-
import { Subject } from 'rxjs';
|
|
3
|
-
import { fixEndTimeOfRange, getTimeDistance } from '@delon/util/date-time';
|
|
4
|
-
import { assert, deepMergeKey } from '@delon/util/other';
|
|
5
|
-
import { RangePickerShortcutTplComponent } from './range-shortcut.component';
|
|
6
|
-
import * as i0 from "@angular/core";
|
|
7
|
-
import * as i1 from "@angular/platform-browser";
|
|
8
|
-
import * as i2 from "@delon/util/config";
|
|
9
|
-
import * as i3 from "ng-zorro-antd/date-picker";
|
|
10
|
-
export class RangePickerDirective {
|
|
11
|
-
set shortcut(val) {
|
|
12
|
-
const item = deepMergeKey({ list: [] }, true, this.defaultShortcuts, val == null ? {} : val);
|
|
13
|
-
if (typeof val !== 'object') {
|
|
14
|
-
item.enabled = val !== false;
|
|
15
|
-
}
|
|
16
|
-
(item.list || []).forEach(i => {
|
|
17
|
-
i._text = this.dom.bypassSecurityTrustHtml(i.text);
|
|
18
|
-
});
|
|
19
|
-
this._shortcut = item;
|
|
20
|
-
this.refreshShortcut();
|
|
21
|
-
}
|
|
22
|
-
get shortcut() {
|
|
23
|
-
return this._shortcut;
|
|
24
|
-
}
|
|
25
|
-
get dp() {
|
|
26
|
-
return this.nativeComp.datePicker;
|
|
27
|
-
}
|
|
28
|
-
get srv() {
|
|
29
|
-
return this.dp.datePickerService;
|
|
30
|
-
}
|
|
31
|
-
constructor(dom, configSrv, nativeComp, vcr) {
|
|
32
|
-
this.dom = dom;
|
|
33
|
-
this.nativeComp = nativeComp;
|
|
34
|
-
this.vcr = vcr;
|
|
35
|
-
this._shortcut = null;
|
|
36
|
-
this.destroy$ = new Subject();
|
|
37
|
-
this.shortcutFactory = null;
|
|
38
|
-
this.start = null;
|
|
39
|
-
this.end = null;
|
|
40
|
-
this.ngModelEndChange = new EventEmitter();
|
|
41
|
-
assert(!!nativeComp, `It should be attached to nz-range-picker component, for example: '<nz-range-picker [(ngModel)]="i.start" extend [(ngModelEnd)]="i.end" shortcut></nz-range-picker>'`);
|
|
42
|
-
const cog = configSrv.merge('dataRange', {
|
|
43
|
-
nzFormat: 'yyyy-MM-dd',
|
|
44
|
-
nzAllowClear: true,
|
|
45
|
-
nzAutoFocus: false,
|
|
46
|
-
nzPopupStyle: { position: 'relative' },
|
|
47
|
-
nzShowToday: true,
|
|
48
|
-
shortcuts: {
|
|
49
|
-
enabled: false,
|
|
50
|
-
closed: true,
|
|
51
|
-
list: [
|
|
52
|
-
{
|
|
53
|
-
text: '今天',
|
|
54
|
-
fn: () => getTimeDistance('today')
|
|
55
|
-
},
|
|
56
|
-
{
|
|
57
|
-
text: '昨天',
|
|
58
|
-
fn: () => getTimeDistance('yesterday')
|
|
59
|
-
},
|
|
60
|
-
{
|
|
61
|
-
text: '近3天',
|
|
62
|
-
fn: () => getTimeDistance(-2)
|
|
63
|
-
},
|
|
64
|
-
{
|
|
65
|
-
text: '近7天',
|
|
66
|
-
fn: () => getTimeDistance(-6)
|
|
67
|
-
},
|
|
68
|
-
{
|
|
69
|
-
text: '本周',
|
|
70
|
-
fn: () => getTimeDistance('week')
|
|
71
|
-
},
|
|
72
|
-
{
|
|
73
|
-
text: '本月',
|
|
74
|
-
fn: () => getTimeDistance('month')
|
|
75
|
-
},
|
|
76
|
-
{
|
|
77
|
-
text: '全年',
|
|
78
|
-
fn: () => getTimeDistance('year')
|
|
79
|
-
}
|
|
80
|
-
]
|
|
81
|
-
}
|
|
82
|
-
});
|
|
83
|
-
this.defaultShortcuts = { ...cog.shortcuts };
|
|
84
|
-
Object.assign(this, cog);
|
|
85
|
-
}
|
|
86
|
-
cd() {
|
|
87
|
-
this.dp.cdr.markForCheck();
|
|
88
|
-
}
|
|
89
|
-
overrideNative() {
|
|
90
|
-
const dp = this.dp;
|
|
91
|
-
dp.writeValue = (value) => {
|
|
92
|
-
const dates = (value && this.ngModelEnd ? [value, this.ngModelEnd] : []).filter(w => !!w);
|
|
93
|
-
this.srv.setValue(this.srv.makeValue(dates));
|
|
94
|
-
this.start = dates.length > 0 ? dates[0] : null;
|
|
95
|
-
this.end = dates.length > 0 ? dates[1] : null;
|
|
96
|
-
this.cd();
|
|
97
|
-
};
|
|
98
|
-
const oldOnChangeFn = dp.onChangeFn;
|
|
99
|
-
dp.onChangeFn = (list) => {
|
|
100
|
-
let start = null;
|
|
101
|
-
let end = null;
|
|
102
|
-
if (list.length > 0 && list.filter(w => w != null).length === 2) {
|
|
103
|
-
[start, end] = fixEndTimeOfRange([list[0], list[1]]);
|
|
104
|
-
}
|
|
105
|
-
this.start = start;
|
|
106
|
-
this.end = end;
|
|
107
|
-
oldOnChangeFn(start);
|
|
108
|
-
this.ngModelEnd = end;
|
|
109
|
-
this.ngModelEndChange.emit(end);
|
|
110
|
-
};
|
|
111
|
-
}
|
|
112
|
-
refreshShortcut() {
|
|
113
|
-
if (!this._shortcut) {
|
|
114
|
-
return;
|
|
115
|
-
}
|
|
116
|
-
const { enabled, list } = this._shortcut;
|
|
117
|
-
let extraFooter;
|
|
118
|
-
if (!this.nativeComp || !enabled) {
|
|
119
|
-
extraFooter = undefined;
|
|
120
|
-
}
|
|
121
|
-
else {
|
|
122
|
-
if (!this.shortcutFactory) {
|
|
123
|
-
this.shortcutFactory = this.vcr.createComponent(RangePickerShortcutTplComponent);
|
|
124
|
-
}
|
|
125
|
-
const { instance } = this.shortcutFactory;
|
|
126
|
-
instance.list = list;
|
|
127
|
-
instance.click = (item) => {
|
|
128
|
-
const res = item.fn([this.start, this.end]);
|
|
129
|
-
this.srv.setValue(this.srv.makeValue(res));
|
|
130
|
-
this.dp.onChangeFn(res);
|
|
131
|
-
this.dp.close();
|
|
132
|
-
};
|
|
133
|
-
extraFooter = instance.tpl;
|
|
134
|
-
}
|
|
135
|
-
this.nativeComp.datePicker.extraFooter = extraFooter;
|
|
136
|
-
Promise.resolve().then(() => this.cd());
|
|
137
|
-
}
|
|
138
|
-
ngAfterViewInit() {
|
|
139
|
-
this.overrideNative();
|
|
140
|
-
this.refreshShortcut();
|
|
141
|
-
}
|
|
142
|
-
destoryShortcut() {
|
|
143
|
-
if (this.shortcutFactory != null) {
|
|
144
|
-
this.shortcutFactory.destroy();
|
|
145
|
-
}
|
|
146
|
-
}
|
|
147
|
-
ngOnDestroy() {
|
|
148
|
-
this.destoryShortcut();
|
|
149
|
-
this.destroy$.next();
|
|
150
|
-
this.destroy$.complete();
|
|
151
|
-
}
|
|
152
|
-
}
|
|
153
|
-
RangePickerDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: RangePickerDirective, deps: [{ token: i1.DomSanitizer }, { token: i2.AlainConfigService }, { token: i3.NzRangePickerComponent, host: true, optional: true }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
154
|
-
RangePickerDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.9", type: RangePickerDirective, selector: "nz-range-picker[extend]", inputs: { shortcut: "shortcut", ngModelEnd: "ngModelEnd" }, outputs: { ngModelEndChange: "ngModelEndChange" }, exportAs: ["extendRangePicker"], ngImport: i0 });
|
|
155
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: RangePickerDirective, decorators: [{
|
|
156
|
-
type: Directive,
|
|
157
|
-
args: [{
|
|
158
|
-
selector: 'nz-range-picker[extend]',
|
|
159
|
-
exportAs: 'extendRangePicker'
|
|
160
|
-
}]
|
|
161
|
-
}], ctorParameters: function () { return [{ type: i1.DomSanitizer }, { type: i2.AlainConfigService }, { type: i3.NzRangePickerComponent, decorators: [{
|
|
162
|
-
type: Host
|
|
163
|
-
}, {
|
|
164
|
-
type: Optional
|
|
165
|
-
}] }, { type: i0.ViewContainerRef }]; }, propDecorators: { shortcut: [{
|
|
166
|
-
type: Input
|
|
167
|
-
}], ngModelEnd: [{
|
|
168
|
-
type: Input
|
|
169
|
-
}], ngModelEndChange: [{
|
|
170
|
-
type: Output
|
|
171
|
-
}] } });
|
|
172
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFuZ2UuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYWJjL2RhdGUtcGlja2VyL3JhbmdlLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBR0wsU0FBUyxFQUNULFlBQVksRUFDWixJQUFJLEVBQ0osS0FBSyxFQUVMLFFBQVEsRUFDUixNQUFNLEVBR1AsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUcvQixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsZUFBZSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDM0UsT0FBTyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUt6RCxPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7Ozs7QUFNN0UsTUFBTSxPQUFPLG9CQUFvQjtJQVUvQixJQUNJLFFBQVEsQ0FBQyxHQUF3QztRQUNuRCxNQUFNLElBQUksR0FBRyxZQUFZLENBQ3ZCLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxFQUNaLElBQUksRUFDSixJQUFJLENBQUMsZ0JBQWdCLEVBQ3JCLEdBQUcsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUNTLENBQUM7UUFDbEMsSUFBSSxPQUFPLEdBQUcsS0FBSyxRQUFRLEVBQUU7WUFDM0IsSUFBSSxDQUFDLE9BQU8sR0FBRyxHQUFHLEtBQUssS0FBSyxDQUFDO1NBQzlCO1FBQ0QsQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUM1QixDQUFDLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsdUJBQXVCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3JELENB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cG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENvbXBvbmVudFJlZixcbiAgRGlyZWN0aXZlLFxuICBFdmVudEVtaXR0ZXIsXG4gIEhvc3QsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9wdGlvbmFsLFxuICBPdXRwdXQsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3Q29udGFpbmVyUmVmXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRG9tU2FuaXRpemVyIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IEFsYWluQ29uZmlnU2VydmljZSwgQWxhaW5EYXRlUmFuZ2VQaWNrZXJTaG9ydGN1dCwgQWxhaW5EYXRlUmFuZ2VQaWNrZXJTaG9ydGN1dEl0ZW0gfSBmcm9tICdAZGVsb24vdXRpbC9jb25maWcnO1xuaW1wb3J0IHsgZml4RW5kVGltZU9mUmFuZ2UsIGdldFRpbWVEaXN0YW5jZSB9IGZyb20gJ0BkZWxvbi91dGlsL2RhdGUtdGltZSc7XG5pbXBvcnQgeyBhc3NlcnQsIGRlZXBNZXJnZUtleSB9IGZyb20gJ0BkZWxvbi91dGlsL290aGVyJztcbmltcG9ydCB0eXBlIHsgTnpTYWZlQW55IH0gZnJvbSAnbmctem9ycm8tYW50ZC9jb3JlL3R5cGVzJztcbmltcG9ydCB7IE56RGF0ZVBpY2tlckNvbXBvbmVudCwgTnpSYW5nZVBpY2tlckNvbXBvbmVudCB9IGZyb20gJ25nLXpvcnJvLWFudGQvZGF0ZS1waWNrZXInO1xuaW1wb3J0IHsgRGF0ZVBpY2tlclNlcnZpY2UgfSBmcm9tICduZy16b3Jyby1hbnRkL2RhdGUtcGlja2VyL2RhdGUtcGlja2VyLnNlcnZpY2UnO1xuXG5pbXBvcnQgeyBSYW5nZVBpY2tlclNob3J0Y3V0VHBsQ29tcG9uZW50IH0gZnJvbSAnLi9yYW5nZS1zaG9ydGN1dC5jb21wb25lbnQnO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICduei1yYW5nZS1waWNrZXJbZXh0ZW5kXScsXG4gIGV4cG9ydEFzOiAnZXh0ZW5kUmFuZ2VQaWNrZXInXG59KVxuZXhwb3J0IGNsYXNzIFJhbmdlUGlja2VyRGlyZWN0aXZlIGltcGxlbWVudHMgT25EZXN0cm95LCBBZnRlclZpZXdJbml0IHtcbiAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX3Nob3J0Y3V0OiBBbGFpbkRhdGVSYW5nZVBpY2tlclNob3J0Y3V0IHwgc3RyaW5nIHwgbnVsbDtcblxuICBwcml2YXRlIGRlZmF1bHRTaG9ydGN1dHM6IEFsYWluRGF0ZVJhbmdlUGlja2VyU2hvcnRjdXQ7XG4gIHByaXZhdGUgX3Nob3J0Y3V0OiBBbGFpbkRhdGVSYW5nZVBpY2tlclNob3J0Y3V0IHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICBwcml2YXRlIHNob3J0Y3V0RmFjdG9yeTogQ29tcG9uZW50UmVmPFJhbmdlUGlja2VyU2hvcnRjdXRUcGxDb21wb25lbnQ+IHwgbnVsbCA9IG51bGw7XG4gIHN0YXJ0OiBEYXRlIHwgbnVsbCA9IG51bGw7XG4gIGVuZDogRGF0ZSB8IG51bGwgPSBudWxsO1xuXG4gIEBJbnB1dCgpXG4gIHNldCBzaG9ydGN1dCh2YWw6IEFsYWluRGF0ZVJhbmdlUGlja2VyU2hvcnRjdXQgfCBudWxsKSB7XG4gICAgY29uc3QgaXRlbSA9IGRlZXBNZXJnZUtleShcbiAgICAgIHsgbGlzdDogW10gfSxcbiAgICAgIHRydWUsXG4gICAgICB0aGlzLmRlZmF1bHRTaG9ydGN1dHMsXG4gICAgICB2YWwgPT0gbnVsbCA/IHt9IDogdmFsXG4gICAgKSBhcyBBbGFpbkRhdGVSYW5nZVBpY2tlclNob3J0Y3V0O1xuICAgIGlmICh0eXBlb2YgdmFsICE9PSAnb2JqZWN0Jykge1xuICAgICAgaXRlbS5lbmFibGVkID0gdmFsICE9PSBmYWxzZTtcbiAgICB9XG4gICAgKGl0ZW0ubGlzdCB8fCBbXSkuZm9yRWFjaChpID0+IHtcbiAgICAgIGkuX3RleHQgPSB0aGlzLmRvbS5ieXBhc3NTZWN1cml0eVRydXN0SHRtbChpLnRleHQpO1xuICAgIH0pO1xuICAgIHRoaXMuX3Nob3J0Y3V0ID0gaXRlbTtcbiAgICB0aGlzLnJlZnJlc2hTaG9ydGN1dCgpO1xuICB9XG4gIGdldCBzaG9ydGN1dCgpOiBBbGFpbkRhdGVSYW5nZVBpY2tlclNob3J0Y3V0IHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX3Nob3J0Y3V0O1xuICB9XG4gIEBJbnB1dCgpIG5nTW9kZWxFbmQ6IE56U2FmZUFueTtcbiAgQE91dHB1dCgpIHJlYWRvbmx5IG5nTW9kZWxFbmRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPE56U2FmZUFueT4oKTtcblxuICBwcml2YXRlIGdldCBkcCgpOiBOekRhdGVQaWNrZXJDb21wb25lbnQge1xuICAgIHJldHVybiB0aGlzLm5hdGl2ZUNvbXAuZGF0ZVBpY2tlcjtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0IHNydigpOiBEYXRlUGlja2VyU2VydmljZSB7XG4gICAgcmV0dXJuIHRoaXMuZHAuZGF0ZVBpY2tlclNlcnZpY2U7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGRvbTogRG9tU2FuaXRpemVyLFxuICAgIGNvbmZpZ1NydjogQWxhaW5Db25maWdTZXJ2aWNlLFxuICAgIEBIb3N0KCkgQE9wdGlvbmFsKCkgcHJpdmF0ZSBuYXRpdmVDb21wOiBOelJhbmdlUGlja2VyQ29tcG9uZW50LFxuICAgIHByaXZhdGUgdmNyOiBWaWV3Q29udGFpbmVyUmVmXG4gICkge1xuICAgIGFzc2VydChcbiAgICAgICEhbmF0aXZlQ29tcCxcbiAgICAgIGBJdCBzaG91bGQgYmUgYXR0YWNoZWQgdG8gbnotcmFuZ2UtcGlja2VyIGNvbXBvbmVudCwgZm9yIGV4YW1wbGU6ICc8bnotcmFuZ2UtcGlja2VyIFsobmdNb2RlbCldPVwiaS5zdGFydFwiIGV4dGVuZCBbKG5nTW9kZWxFbmQpXT1cImkuZW5kXCIgc2hvcnRjdXQ+PC9uei1yYW5nZS1waWNrZXI+J2BcbiAgICApO1xuICAgIGNvbnN0IGNvZyA9IGNvbmZpZ1Nydi5tZXJnZSgnZGF0YVJhbmdlJywge1xuICAgICAgbnpGb3JtYXQ6ICd5eXl5LU1NLWRkJyxcbiAgICAgIG56QWxsb3dDbGVhcjogdHJ1ZSxcbiAgICAgIG56QXV0b0ZvY3VzOiBmYWxzZSxcbiAgICAgIG56UG9wdXBTdHlsZTogeyBwb3NpdGlvbjogJ3JlbGF0aXZlJyB9LFxuICAgICAgbnpTaG93VG9kYXk6IHRydWUsXG4gICAgICBzaG9ydGN1dHM6IHtcbiAgICAgICAgZW5hYmxlZDogZmFsc2UsXG4gICAgICAgIGNsb3NlZDogdHJ1ZSxcbiAgICAgICAgbGlzdDogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIHRleHQ6ICfku4rlpKknLFxuICAgICAgICAgICAgZm46ICgpID0+IGdldFRpbWVEaXN0YW5jZSgndG9kYXknKVxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgdGV4dDogJ+aYqOWkqScsXG4gICAgICAgICAgICBmbjogKCkgPT4gZ2V0VGltZURpc3RhbmNlKCd5ZXN0ZXJkYXknKVxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgdGV4dDogJ+i/kTPlpKknLFxuICAgICAgICAgICAgZm46ICgpID0+IGdldFRpbWVEaXN0YW5jZSgtMilcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHRleHQ6ICfov5E35aSpJyxcbiAgICAgICAgICAgIGZuOiAoKSA9PiBnZXRUaW1lRGlzdGFuY2UoLTYpXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICB0ZXh0OiAn5pys5ZGoJyxcbiAgICAgICAgICAgIGZuOiAoKSA9PiBnZXRUaW1lRGlzdGFuY2UoJ3dlZWsnKVxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgdGV4dDogJ+acrOaciCcsXG4gICAgICAgICAgICBmbjogKCkgPT4gZ2V0VGltZURpc3RhbmNlKCdtb250aCcpXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICB0ZXh0OiAn5YWo5bm0JyxcbiAgICAgICAgICAgIGZuOiAoKSA9PiBnZXRUaW1lRGlzdGFuY2UoJ3llYXInKVxuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfVxuICAgIH0pITtcbiAgICB0aGlzLmRlZmF1bHRTaG9ydGN1dHMgPSB7IC4uLmNvZy5zaG9ydGN1dHMgfSBhcyBBbGFpbkRhdGVSYW5nZVBpY2tlclNob3J0Y3V0O1xuICAgIE9iamVjdC5hc3NpZ24odGhpcywgY29nKTtcbiAgfVxuXG4gIHByaXZhdGUgY2QoKTogdm9pZCB7XG4gICAgKHRoaXMuZHAgYXMgTnpTYWZlQW55KS5jZHIubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBwcml2YXRlIG92ZXJyaWRlTmF0aXZlKCk6IHZvaWQge1xuICAgIGNvbnN0IGRwID0gdGhpcy5kcDtcbiAgICBkcC53cml0ZVZhbHVlID0gKHZhbHVlOiBEYXRlKSA9PiB7XG4gICAgICBjb25zdCBkYXRlcyA9ICh2YWx1ZSAmJiB0aGlzLm5nTW9kZWxFbmQgPyBbdmFsdWUsIHRoaXMubmdNb2RlbEVuZF0gOiBbXSkuZmlsdGVyKHcgPT4gISF3KTtcbiAgICAgIHRoaXMuc3J2LnNldFZhbHVlKHRoaXMuc3J2Lm1ha2VWYWx1ZShkYXRlcykpO1xuICAgICAgdGhpcy5zdGFydCA9IGRhdGVzLmxlbmd0aCA+IDAgPyBkYXRlc1swXSA6IG51bGw7XG4gICAgICB0aGlzLmVuZCA9IGRhdGVzLmxlbmd0aCA+IDAgPyBkYXRlc1sxXSA6IG51bGw7XG4gICAgICB0aGlzLmNkKCk7XG4gICAgfTtcblxuICAgIGNvbnN0IG9sZE9uQ2hhbmdlRm4gPSBkcC5vbkNoYW5nZUZuO1xuICAgIGRwLm9uQ2hhbmdlRm4gPSAobGlzdDogQXJyYXk8RGF0ZSB8IG51bGw+KSA9PiB7XG4gICAgICBsZXQgc3RhcnQ6IERhdGUgfCBudWxsID0gbnVsbDtcbiAgICAgIGxldCBlbmQ6IERhdGUgfCBudWxsID0gbnVsbDtcbiAgICAgIGlmIChsaXN0Lmxlbmd0aCA+IDAgJiYgbGlzdC5maWx0ZXIodyA9PiB3ICE9IG51bGwpLmxlbmd0aCA9PT0gMikge1xuICAgICAgICBbc3RhcnQsIGVuZF0gPSBmaXhFbmRUaW1lT2ZSYW5nZShbbGlzdFswXSEsIGxpc3RbMV0hXSk7XG4gICAgICB9XG4gICAgICB0aGlzLnN0YXJ0ID0gc3RhcnQ7XG4gICAgICB0aGlzLmVuZCA9IGVuZDtcbiAgICAgIG9sZE9uQ2hhbmdlRm4oc3RhcnQpO1xuICAgICAgdGhpcy5uZ01vZGVsRW5kID0gZW5kO1xuICAgICAgdGhpcy5uZ01vZGVsRW5kQ2hhbmdlLmVtaXQoZW5kKTtcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSByZWZyZXNoU2hvcnRjdXQoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl9zaG9ydGN1dCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCB7IGVuYWJsZWQsIGxpc3QgfSA9IHRoaXMuX3Nob3J0Y3V0O1xuICAgIGxldCBleHRyYUZvb3RlcjogVGVtcGxhdGVSZWY8TnpTYWZlQW55PiB8IHVuZGVmaW5lZDtcbiAgICBpZiAoIXRoaXMubmF0aXZlQ29tcCB8fCAhZW5hYmxlZCkge1xuICAgICAgZXh0cmFGb290ZXIgPSB1bmRlZmluZWQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICghdGhpcy5zaG9ydGN1dEZhY3RvcnkpIHtcbiAgICAgICAgdGhpcy5zaG9ydGN1dEZhY3RvcnkgPSB0aGlzLnZjci5jcmVhdGVDb21wb25lbnQoUmFuZ2VQaWNrZXJTaG9ydGN1dFRwbENvbXBvbmVudCk7XG4gICAgICB9XG4gICAgICBjb25zdCB7IGluc3RhbmNlIH0gPSB0aGlzLnNob3J0Y3V0RmFjdG9yeTtcbiAgICAgIGluc3RhbmNlLmxpc3QgPSBsaXN0ITtcbiAgICAgIGluc3RhbmNlLmNsaWNrID0gKGl0ZW06IEFsYWluRGF0ZVJhbmdlUGlja2VyU2hvcnRjdXRJdGVtKSA9PiB7XG4gICAgICAgIGNvbnN0IHJlcyA9IGl0ZW0uZm4oW3RoaXMuc3RhcnQsIHRoaXMuZW5kXSk7XG4gICAgICAgIHRoaXMuc3J2LnNldFZhbHVlKHRoaXMuc3J2Lm1ha2VWYWx1ZShyZXMgYXMgRGF0ZVtdKSk7XG4gICAgICAgIHRoaXMuZHAub25DaGFuZ2VGbihyZXMpO1xuICAgICAgICB0aGlzLmRwLmNsb3NlKCk7XG4gICAgICB9O1xuICAgICAgZXh0cmFGb290ZXIgPSBpbnN0YW5jZS50cGw7XG4gICAgfVxuICAgIHRoaXMubmF0aXZlQ29tcC5kYXRlUGlja2VyLmV4dHJhRm9vdGVyID0gZXh0cmFGb290ZXI7XG4gICAgUHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKSA9PiB0aGlzLmNkKCkpO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMub3ZlcnJpZGVOYXRpdmUoKTtcbiAgICB0aGlzLnJlZnJlc2hTaG9ydGN1dCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBkZXN0b3J5U2hvcnRjdXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc2hvcnRjdXRGYWN0b3J5ICE9IG51bGwpIHtcbiAgICAgIHRoaXMuc2hvcnRjdXRGYWN0b3J5LmRlc3Ryb3koKTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmRlc3RvcnlTaG9ydGN1dCgpO1xuICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xuICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcbiAgfVxufVxuIl19
|
|
@@ -1,114 +0,0 @@
|
|
|
1
|
-
import { Directive, EventEmitter, Input, Output } from '@angular/core';
|
|
2
|
-
import { finalize } from 'rxjs';
|
|
3
|
-
import { saveAs } from 'file-saver';
|
|
4
|
-
import * as i0 from "@angular/core";
|
|
5
|
-
import * as i1 from "@delon/theme";
|
|
6
|
-
export class DownFileDirective {
|
|
7
|
-
getDisposition(data) {
|
|
8
|
-
const arr = (data || '')
|
|
9
|
-
.split(';')
|
|
10
|
-
.filter(i => i.includes('='))
|
|
11
|
-
.map(v => {
|
|
12
|
-
const strArr = v.split('=');
|
|
13
|
-
const utfId = `UTF-8''`;
|
|
14
|
-
let value = strArr[1];
|
|
15
|
-
if (value.startsWith(utfId))
|
|
16
|
-
value = value.substring(utfId.length);
|
|
17
|
-
return { [strArr[0].trim()]: value };
|
|
18
|
-
});
|
|
19
|
-
return arr.reduce((_o, item) => item, {});
|
|
20
|
-
}
|
|
21
|
-
constructor(el, _http) {
|
|
22
|
-
this.el = el;
|
|
23
|
-
this._http = _http;
|
|
24
|
-
this.isFileSaverSupported = true;
|
|
25
|
-
this.httpMethod = 'get';
|
|
26
|
-
this.success = new EventEmitter();
|
|
27
|
-
this.error = new EventEmitter();
|
|
28
|
-
let isFileSaverSupported = false;
|
|
29
|
-
try {
|
|
30
|
-
isFileSaverSupported = !!new Blob();
|
|
31
|
-
}
|
|
32
|
-
catch { }
|
|
33
|
-
this.isFileSaverSupported = isFileSaverSupported;
|
|
34
|
-
if (!isFileSaverSupported) {
|
|
35
|
-
el.nativeElement.classList.add(`down-file__not-support`);
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
setDisabled(status) {
|
|
39
|
-
const el = this.el.nativeElement;
|
|
40
|
-
el.disabled = status;
|
|
41
|
-
el.classList[status ? 'add' : 'remove'](`down-file__disabled`);
|
|
42
|
-
}
|
|
43
|
-
async _click(ev) {
|
|
44
|
-
if (!this.isFileSaverSupported || (typeof this.pre === 'function' && !(await this.pre(ev)))) {
|
|
45
|
-
ev.stopPropagation();
|
|
46
|
-
ev.preventDefault();
|
|
47
|
-
return;
|
|
48
|
-
}
|
|
49
|
-
this.setDisabled(true);
|
|
50
|
-
this._http
|
|
51
|
-
.request(this.httpMethod, this.httpUrl, {
|
|
52
|
-
params: this.httpData || {},
|
|
53
|
-
responseType: 'blob',
|
|
54
|
-
observe: 'response',
|
|
55
|
-
body: this.httpBody
|
|
56
|
-
})
|
|
57
|
-
.pipe(finalize(() => this.setDisabled(false)))
|
|
58
|
-
.subscribe({
|
|
59
|
-
next: (res) => {
|
|
60
|
-
if (res.status !== 200 || res.body.size <= 0) {
|
|
61
|
-
this.error.emit(res);
|
|
62
|
-
return;
|
|
63
|
-
}
|
|
64
|
-
const disposition = this.getDisposition(res.headers.get('content-disposition'));
|
|
65
|
-
let fileName = this.fileName;
|
|
66
|
-
if (typeof fileName === 'function')
|
|
67
|
-
fileName = fileName(res);
|
|
68
|
-
fileName =
|
|
69
|
-
fileName ||
|
|
70
|
-
disposition[`filename*`] ||
|
|
71
|
-
disposition[`filename`] ||
|
|
72
|
-
res.headers.get('filename') ||
|
|
73
|
-
res.headers.get('x-filename');
|
|
74
|
-
saveAs(res.body, decodeURI(fileName));
|
|
75
|
-
this.success.emit(res);
|
|
76
|
-
},
|
|
77
|
-
error: err => this.error.emit(err)
|
|
78
|
-
});
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
DownFileDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: DownFileDirective, deps: [{ token: i0.ElementRef }, { token: i1._HttpClient }], target: i0.ɵɵFactoryTarget.Directive });
|
|
82
|
-
DownFileDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.9", type: DownFileDirective, selector: "[down-file]", inputs: { httpData: ["http-data", "httpData"], httpBody: ["http-body", "httpBody"], httpMethod: ["http-method", "httpMethod"], httpUrl: ["http-url", "httpUrl"], fileName: ["file-name", "fileName"], pre: "pre" }, outputs: { success: "success", error: "error" }, host: { listeners: { "click": "_click($event)" } }, exportAs: ["downFile"], ngImport: i0 });
|
|
83
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: DownFileDirective, decorators: [{
|
|
84
|
-
type: Directive,
|
|
85
|
-
args: [{
|
|
86
|
-
selector: '[down-file]',
|
|
87
|
-
exportAs: 'downFile',
|
|
88
|
-
host: {
|
|
89
|
-
'(click)': '_click($event)'
|
|
90
|
-
}
|
|
91
|
-
}]
|
|
92
|
-
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1._HttpClient }]; }, propDecorators: { httpData: [{
|
|
93
|
-
type: Input,
|
|
94
|
-
args: ['http-data']
|
|
95
|
-
}], httpBody: [{
|
|
96
|
-
type: Input,
|
|
97
|
-
args: ['http-body']
|
|
98
|
-
}], httpMethod: [{
|
|
99
|
-
type: Input,
|
|
100
|
-
args: ['http-method']
|
|
101
|
-
}], httpUrl: [{
|
|
102
|
-
type: Input,
|
|
103
|
-
args: ['http-url']
|
|
104
|
-
}], fileName: [{
|
|
105
|
-
type: Input,
|
|
106
|
-
args: ['file-name']
|
|
107
|
-
}], pre: [{
|
|
108
|
-
type: Input
|
|
109
|
-
}], success: [{
|
|
110
|
-
type: Output
|
|
111
|
-
}], error: [{
|
|
112
|
-
type: Output
|
|
113
|
-
}] } });
|
|
114
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG93bi1maWxlLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FiYy9kb3duLWZpbGUvZG93bi1maWxlLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsU0FBUyxFQUFjLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25GLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFaEMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFlBQVksQ0FBQzs7O0FBWXBDLE1BQU0sT0FBTyxpQkFBaUI7SUFXcEIsY0FBYyxDQUFDLElBQW1CO1FBQ3hDLE1BQU0sR0FBRyxHQUFrQyxDQUFDLElBQUksSUFBSSxFQUFFLENBQUM7YUFDcEQsS0FBSyxDQUFDLEdBQUcsQ0FBQzthQUNWLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7YUFDNUIsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ1AsTUFBTSxNQUFNLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUM1QixNQUFNLEtBQUssR0FBRyxTQUFTLENBQUM7WUFDeEIsSUFBSSxLQUFLLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3RCLElBQUksS0FBSyxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUM7Z0JBQUUsS0FBSyxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ25FLE9BQU8sRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDO1FBQ3ZDLENBQUMsQ0FBQyxDQUFDO1FBQ0wsT0FBTyxHQUFHLENBQUMsTUFBTSxDQUFDLENB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LENBQUM7d0JBQ3ZCLEdBQUcsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQzt3QkFDM0IsR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUM7Z0JBQ2hDLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSyxFQUFFLFNBQVMsQ0FBQyxRQUFrQixDQUFDLENBQUMsQ0FBQztnQkFDakQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDekIsQ0FBQztZQUNELEtBQUssRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQztTQUNuQyxDQUFDLENBQUM7SUFDUCxDQUFDOzs4R0E3RVUsaUJBQWlCO2tHQUFqQixpQkFBaUI7MkZBQWpCLGlCQUFpQjtrQkFQN0IsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsYUFBYTtvQkFDdkIsUUFBUSxFQUFFLFVBQVU7b0JBQ3BCLElBQUksRUFBRTt3QkFDSixTQUFTLEVBQUUsZ0JBQWdCO3FCQUM1QjtpQkFDRjsySEFHcUIsUUFBUTtzQkFBM0IsS0FBSzt1QkFBQyxXQUFXO2dCQUNFLFFBQVE7c0JBQTNCLEtBQUs7dUJBQUMsV0FBVztnQkFDSSxVQUFVO3NCQUEvQixLQUFLO3VCQUFDLGFBQWE7Z0JBQ0QsT0FBTztzQkFBekIsS0FBSzt1QkFBQyxVQUFVO2dCQUNHLFFBQVE7c0JBQTNCLEtBQUs7dUJBQUMsV0FBVztnQkFDVCxHQUFHO3NCQUFYLEtBQUs7Z0JBQ2EsT0FBTztzQkFBekIsTUFBTTtnQkFDWSxLQUFLO3NCQUF2QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cFJlc3BvbnNlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGZpbmFsaXplIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IHNhdmVBcyB9IGZyb20gJ2ZpbGUtc2F2ZXInO1xuXG5pbXBvcnQgeyBfSHR0cENsaWVudCB9IGZyb20gJ0BkZWxvbi90aGVtZSc7XG5pbXBvcnQgdHlwZSB7IE56U2FmZUFueSB9IGZyb20gJ25nLXpvcnJvLWFudGQvY29yZS90eXBlcyc7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tkb3duLWZpbGVdJyxcbiAgZXhwb3J0QXM6ICdkb3duRmlsZScsXG4gIGhvc3Q6IHtcbiAgICAnKGNsaWNrKSc6ICdfY2xpY2soJGV2ZW50KSdcbiAgfVxufSlcbmV4cG9ydCBjbGFzcyBEb3duRmlsZURpcmVjdGl2ZSB7XG4gIHByaXZhdGUgaXNGaWxlU2F2ZXJTdXBwb3J0ZWQgPSB0cnVlO1xuICBASW5wdXQoJ2h0dHAtZGF0YScpIGh0dHBEYXRhOiBOelNhZmVBbnk7XG4gIEBJbnB1dCgnaHR0cC1ib2R5JykgaHR0cEJvZHk6IE56U2FmZUFueTtcbiAgQElucHV0KCdodHRwLW1ldGhvZCcpIGh0dHBNZXRob2Q6IHN0cmluZyA9ICdnZXQnO1xuICBASW5wdXQoJ2h0dHAtdXJsJykgaHR0cFVybCE6IHN0cmluZztcbiAgQElucHV0KCdmaWxlLW5hbWUnKSBmaWxlTmFtZT86IHN0cmluZyB8ICgocmVwOiBIdHRwUmVzcG9uc2U8QmxvYj4pID0+IHN0cmluZyk7XG4gIEBJbnB1dCgpIHByZT86IChldjogTW91c2VFdmVudCkgPT4gUHJvbWlzZTxib29sZWFuPjtcbiAgQE91dHB1dCgpIHJlYWRvbmx5IHN1Y2Nlc3MgPSBuZXcgRXZlbnRFbWl0dGVyPEh0dHBSZXNwb25zZTxCbG9iPj4oKTtcbiAgQE91dHB1dCgpIHJlYWRvbmx5IGVycm9yID0gbmV3IEV2ZW50RW1pdHRlcjxOelNhZmVBbnk+KCk7XG5cbiAgcHJpdmF0ZSBnZXREaXNwb3NpdGlvbihkYXRhOiBzdHJpbmcgfCBudWxsKTogTnpTYWZlQW55IHtcbiAgICBjb25zdCBhcnI6IEFycmF5PFJlY29yZDxzdHJpbmcsIHN0cmluZz4+ID0gKGRhdGEgfHwgJycpXG4gICAgICAuc3BsaXQoJzsnKVxuICAgICAgLmZpbHRlcihpID0+IGkuaW5jbHVkZXMoJz0nKSlcbiAgICAgIC5tYXAodiA9PiB7XG4gICAgICAgIGNvbnN0IHN0ckFyciA9IHYuc3BsaXQoJz0nKTtcbiAgICAgICAgY29uc3QgdXRmSWQgPSBgVVRGLTgnJ2A7XG4gICAgICAgIGxldCB2YWx1ZSA9IHN0ckFyclsxXTtcbiAgICAgICAgaWYgKHZhbHVlLnN0YXJ0c1dpdGgodXRmSWQpKSB2YWx1ZSA9IHZhbHVlLnN1YnN0cmluZyh1dGZJZC5sZW5ndGgpO1xuICAgICAgICByZXR1cm4geyBbc3RyQXJyWzBdLnRyaW0oKV06IHZhbHVlIH07XG4gICAgICB9KTtcbiAgICByZXR1cm4gYXJyLnJlZHVjZSgoX28sIGl0ZW0pID0+IGl0ZW0sIHt9KTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZWw6IEVsZW1lbnRSZWY8SFRNTEJ1dHRvbkVsZW1lbnQ+LCBwcml2YXRlIF9odHRwOiBfSHR0cENsaWVudCkge1xuICAgIGxldCBpc0ZpbGVTYXZlclN1cHBvcnRlZCA9IGZhbHNlO1xuICAgIHRyeSB7XG4gICAgICBpc0ZpbGVTYXZlclN1cHBvcnRlZCA9ICEhbmV3IEJsb2IoKTtcbiAgICB9IGNhdGNoIHt9XG4gICAgdGhpcy5pc0ZpbGVTYXZlclN1cHBvcnRlZCA9IGlzRmlsZVNhdmVyU3VwcG9ydGVkO1xuICAgIGlmICghaXNGaWxlU2F2ZXJTdXBwb3J0ZWQpIHtcbiAgICAgIGVsLm5hdGl2ZUVsZW1lbnQuY2xhc3NMaXN0LmFkZChgZG93bi1maWxlX19ub3Qtc3VwcG9ydGApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc2V0RGlzYWJsZWQoc3RhdHVzOiBib29sZWFuKTogdm9pZCB7XG4gICAgY29uc3QgZWwgPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQ7XG4gICAgZWwuZGlzYWJsZWQgPSBzdGF0dXM7XG4gICAgZWwuY2xhc3NMaXN0W3N0YXR1cyA/ICdhZGQnIDogJ3JlbW92ZSddKGBkb3duLWZpbGVfX2Rpc2FibGVkYCk7XG4gIH1cblxuICBhc3luYyBfY2xpY2soZXY6IE1vdXNlRXZlbnQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoIXRoaXMuaXNGaWxlU2F2ZXJTdXBwb3J0ZWQgfHwgKHR5cGVvZiB0aGlzLnByZSA9PT0gJ2Z1bmN0aW9uJyAmJiAhKGF3YWl0IHRoaXMucHJlKGV2KSkpKSB7XG4gICAgICBldi5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgIGV2LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuc2V0RGlzYWJsZWQodHJ1ZSk7XG4gICAgdGhpcy5faHR0cFxuICAgICAgLnJlcXVlc3QodGhpcy5odHRwTWV0aG9kLCB0aGlzLmh0dHBVcmwsIHtcbiAgICAgICAgcGFyYW1zOiB0aGlzLmh0dHBEYXRhIHx8IHt9LFxuICAgICAgICByZXNwb25zZVR5cGU6ICdibG9iJyxcbiAgICAgICAgb2JzZXJ2ZTogJ3Jlc3BvbnNlJyxcbiAgICAgICAgYm9keTogdGhpcy5odHRwQm9keVxuICAgICAgfSlcbiAgICAgIC5waXBlKGZpbmFsaXplKCgpID0+IHRoaXMuc2V0RGlzYWJsZWQoZmFsc2UpKSlcbiAgICAgIC5zdWJzY3JpYmUoe1xuICAgICAgICBuZXh0OiAocmVzOiBIdHRwUmVzcG9uc2U8QmxvYj4pID0+IHtcbiAgICAgICAgICBpZiAocmVzLnN0YXR1cyAhPT0gMjAwIHx8IHJlcy5ib2R5IS5zaXplIDw9IDApIHtcbiAgICAgICAgICAgIHRoaXMuZXJyb3IuZW1pdChyZXMpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zdCBkaXNwb3NpdGlvbiA9IHRoaXMuZ2V0RGlzcG9zaXRpb24ocmVzLmhlYWRlcnMuZ2V0KCdjb250ZW50LWRpc3Bvc2l0aW9uJykpO1xuICAgICAgICAgIGxldCBmaWxlTmFtZSA9IHRoaXMuZmlsZU5hbWU7XG4gICAgICAgICAgaWYgKHR5cGVvZiBmaWxlTmFtZSA9PT0gJ2Z1bmN0aW9uJykgZmlsZU5hbWUgPSBmaWxlTmFtZShyZXMpO1xuICAgICAgICAgIGZpbGVOYW1lID1cbiAgICAgICAgICAgIGZpbGVOYW1lIHx8XG4gICAgICAgICAgICBkaXNwb3NpdGlvbltgZmlsZW5hbWUqYF0gfHxcbiAgICAgICAgICAgIGRpc3Bvc2l0aW9uW2BmaWxlbmFtZWBdIHx8XG4gICAgICAgICAgICByZXMuaGVhZGVycy5nZXQoJ2ZpbGVuYW1lJykgfHxcbiAgICAgICAgICAgIHJlcy5oZWFkZXJzLmdldCgneC1maWxlbmFtZScpO1xuICAgICAgICAgIHNhdmVBcyhyZXMuYm9keSEsIGRlY29kZVVSSShmaWxlTmFtZSBhcyBzdHJpbmcpKTtcbiAgICAgICAgICB0aGlzLnN1Y2Nlc3MuZW1pdChyZXMpO1xuICAgICAgICB9LFxuICAgICAgICBlcnJvcjogZXJyID0+IHRoaXMuZXJyb3IuZW1pdChlcnIpXG4gICAgICB9KTtcbiAgfVxufVxuIl19
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import { CommonModule } from '@angular/common';
|
|
2
|
-
import { NgModule } from '@angular/core';
|
|
3
|
-
import { AlainThemeModule } from '@delon/theme';
|
|
4
|
-
import { DownFileDirective } from './down-file.directive';
|
|
5
|
-
import * as i0 from "@angular/core";
|
|
6
|
-
const DIRECTIVES = [DownFileDirective];
|
|
7
|
-
export class DownFileModule {
|
|
8
|
-
}
|
|
9
|
-
DownFileModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: DownFileModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
10
|
-
DownFileModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.9", ngImport: i0, type: DownFileModule, declarations: [DownFileDirective], imports: [CommonModule, AlainThemeModule], exports: [DownFileDirective] });
|
|
11
|
-
DownFileModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: DownFileModule, imports: [CommonModule, AlainThemeModule] });
|
|
12
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: DownFileModule, decorators: [{
|
|
13
|
-
type: NgModule,
|
|
14
|
-
args: [{
|
|
15
|
-
imports: [CommonModule, AlainThemeModule],
|
|
16
|
-
declarations: [...DIRECTIVES],
|
|
17
|
-
exports: [...DIRECTIVES]
|
|
18
|
-
}]
|
|
19
|
-
}] });
|
|
20
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG93bi1maWxlLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FiYy9kb3duLWZpbGUvZG93bi1maWxlLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV6QyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFaEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7O0FBRTFELE1BQU0sVUFBVSxHQUFHLENBQUMsaUJBQWlCLENBQUMsQ0FBQztBQU92QyxNQUFNLE9BQU8sY0FBYzs7MkdBQWQsY0FBYzs0R0FBZCxjQUFjLGlCQVBQLGlCQUFpQixhQUd6QixZQUFZLEVBQUUsZ0JBQWdCLGFBSHRCLGlCQUFpQjs0R0FPeEIsY0FBYyxZQUpmLFlBQVksRUFBRSxnQkFBZ0I7MkZBSTdCLGNBQWM7a0JBTDFCLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFFLGdCQUFnQixDQUFDO29CQUN6QyxZQUFZLEVBQUUsQ0FBQyxHQUFHLFVBQVUsQ0FBQztvQkFDN0IsT0FBTyxFQUFFLENBQUMsR0FBRyxVQUFVLENBQUM7aUJBQ3pCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IEFsYWluVGhlbWVNb2R1bGUgfSBmcm9tICdAZGVsb24vdGhlbWUnO1xuXG5pbXBvcnQgeyBEb3duRmlsZURpcmVjdGl2ZSB9IGZyb20gJy4vZG93bi1maWxlLmRpcmVjdGl2ZSc7XG5cbmNvbnN0IERJUkVDVElWRVMgPSBbRG93bkZpbGVEaXJlY3RpdmVdO1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBBbGFpblRoZW1lTW9kdWxlXSxcbiAgZGVjbGFyYXRpb25zOiBbLi4uRElSRUNUSVZFU10sXG4gIGV4cG9ydHM6IFsuLi5ESVJFQ1RJVkVTXVxufSlcbmV4cG9ydCBjbGFzcyBEb3duRmlsZU1vZHVsZSB7fVxuIl19
|
|
@@ -1,232 +0,0 @@
|
|
|
1
|
-
import { __decorate } from "tslib";
|
|
2
|
-
import { DOCUMENT } from '@angular/common';
|
|
3
|
-
import { ChangeDetectionStrategy, Component, Inject, Input, ViewChild, ViewEncapsulation } from '@angular/core';
|
|
4
|
-
import { take } from 'rxjs';
|
|
5
|
-
import { InputBoolean, InputNumber } from '@delon/util/decorator';
|
|
6
|
-
import * as i0 from "@angular/core";
|
|
7
|
-
import * as i1 from "@angular/platform-browser";
|
|
8
|
-
import * as i2 from "@angular/common";
|
|
9
|
-
import * as i3 from "@angular/cdk/observers";
|
|
10
|
-
import * as i4 from "ng-zorro-antd/tooltip";
|
|
11
|
-
export class EllipsisComponent {
|
|
12
|
-
get linsWord() {
|
|
13
|
-
const { targetCount, text, tail } = this;
|
|
14
|
-
return ((targetCount > 0 ? text.substring(0, targetCount) : '') +
|
|
15
|
-
(targetCount > 0 && targetCount < text.length ? tail : ''));
|
|
16
|
-
}
|
|
17
|
-
get win() {
|
|
18
|
-
return this.doc.defaultView || window;
|
|
19
|
-
}
|
|
20
|
-
constructor(el, ngZone, dom, doc, cdr) {
|
|
21
|
-
this.el = el;
|
|
22
|
-
this.ngZone = ngZone;
|
|
23
|
-
this.dom = dom;
|
|
24
|
-
this.doc = doc;
|
|
25
|
-
this.cdr = cdr;
|
|
26
|
-
this.isSupportLineClamp = this.doc.body.style['webkitLineClamp'] !== undefined;
|
|
27
|
-
this.inited = false;
|
|
28
|
-
this.type = 'default';
|
|
29
|
-
this.cls = {};
|
|
30
|
-
this.text = '';
|
|
31
|
-
this.targetCount = 0;
|
|
32
|
-
this.tooltip = false;
|
|
33
|
-
this.fullWidthRecognition = false;
|
|
34
|
-
this.tail = '...';
|
|
35
|
-
}
|
|
36
|
-
getStrFullLength(str) {
|
|
37
|
-
return str.split('').reduce((pre, cur) => {
|
|
38
|
-
const charCode = cur.charCodeAt(0);
|
|
39
|
-
if (charCode >= 0 && charCode <= 128) {
|
|
40
|
-
return pre + 1;
|
|
41
|
-
}
|
|
42
|
-
return pre + 2;
|
|
43
|
-
}, 0);
|
|
44
|
-
}
|
|
45
|
-
cutStrByFullLength(str, maxLength) {
|
|
46
|
-
let showLength = 0;
|
|
47
|
-
return str.split('').reduce((pre, cur) => {
|
|
48
|
-
const charCode = cur.charCodeAt(0);
|
|
49
|
-
if (charCode >= 0 && charCode <= 128) {
|
|
50
|
-
showLength += 1;
|
|
51
|
-
}
|
|
52
|
-
else {
|
|
53
|
-
showLength += 2;
|
|
54
|
-
}
|
|
55
|
-
if (showLength <= maxLength) {
|
|
56
|
-
return pre + cur;
|
|
57
|
-
}
|
|
58
|
-
return pre;
|
|
59
|
-
}, '');
|
|
60
|
-
}
|
|
61
|
-
bisection(targetHeight, mid, begin, end, text, node) {
|
|
62
|
-
const suffix = this.tail;
|
|
63
|
-
node.innerHTML = text.substring(0, mid) + suffix;
|
|
64
|
-
let sh = node.offsetHeight;
|
|
65
|
-
if (sh <= targetHeight) {
|
|
66
|
-
node.innerHTML = text.substring(0, mid + 1) + suffix;
|
|
67
|
-
sh = node.offsetHeight;
|
|
68
|
-
if (sh > targetHeight || mid === begin) {
|
|
69
|
-
return mid;
|
|
70
|
-
}
|
|
71
|
-
begin = mid;
|
|
72
|
-
mid = end - begin === 1 ? begin + 1 : Math.floor((end - begin) / 2) + begin;
|
|
73
|
-
return this.bisection(targetHeight, mid, begin, end, text, node);
|
|
74
|
-
}
|
|
75
|
-
if (mid - 1 < 0) {
|
|
76
|
-
return mid;
|
|
77
|
-
}
|
|
78
|
-
node.innerHTML = text.substring(0, mid - 1) + suffix;
|
|
79
|
-
sh = node.offsetHeight;
|
|
80
|
-
if (sh <= targetHeight) {
|
|
81
|
-
return mid - 1;
|
|
82
|
-
}
|
|
83
|
-
end = mid;
|
|
84
|
-
mid = Math.floor((end - begin) / 2) + begin;
|
|
85
|
-
return this.bisection(targetHeight, mid, begin, end, text, node);
|
|
86
|
-
}
|
|
87
|
-
genType() {
|
|
88
|
-
const { lines, length, isSupportLineClamp } = this;
|
|
89
|
-
this.cls = {
|
|
90
|
-
ellipsis: true,
|
|
91
|
-
ellipsis__lines: lines && !isSupportLineClamp,
|
|
92
|
-
'ellipsis__line-clamp': lines && isSupportLineClamp
|
|
93
|
-
};
|
|
94
|
-
if (!lines && !length) {
|
|
95
|
-
this.type = 'default';
|
|
96
|
-
}
|
|
97
|
-
else if (!lines) {
|
|
98
|
-
this.type = 'length';
|
|
99
|
-
}
|
|
100
|
-
else if (isSupportLineClamp) {
|
|
101
|
-
this.type = 'line-clamp';
|
|
102
|
-
}
|
|
103
|
-
else {
|
|
104
|
-
this.type = 'line';
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
gen() {
|
|
108
|
-
const { type, lines, length, fullWidthRecognition, tail, orgEl, cdr, ngZone } = this;
|
|
109
|
-
if (type === 'length') {
|
|
110
|
-
const el = orgEl.nativeElement;
|
|
111
|
-
if (el.children.length > 0) {
|
|
112
|
-
throw new Error('Ellipsis content must be string.');
|
|
113
|
-
}
|
|
114
|
-
const lengthText = el.textContent;
|
|
115
|
-
const textLength = fullWidthRecognition ? this.getStrFullLength(lengthText) : lengthText.length;
|
|
116
|
-
if (textLength <= length || length < 0) {
|
|
117
|
-
this.text = lengthText;
|
|
118
|
-
}
|
|
119
|
-
else {
|
|
120
|
-
let displayText;
|
|
121
|
-
if (length - tail.length <= 0) {
|
|
122
|
-
displayText = '';
|
|
123
|
-
}
|
|
124
|
-
else {
|
|
125
|
-
displayText = fullWidthRecognition
|
|
126
|
-
? this.cutStrByFullLength(lengthText, length)
|
|
127
|
-
: lengthText.slice(0, length);
|
|
128
|
-
}
|
|
129
|
-
this.text = displayText + tail;
|
|
130
|
-
}
|
|
131
|
-
ngZone.run(() => cdr.detectChanges());
|
|
132
|
-
}
|
|
133
|
-
else if (type === 'line') {
|
|
134
|
-
const { shadowOrgEl, shadowTextEl } = this;
|
|
135
|
-
const orgNode = shadowOrgEl.nativeElement;
|
|
136
|
-
const lineText = orgNode.innerText || orgNode.textContent;
|
|
137
|
-
const lineHeight = parseInt(this.win.getComputedStyle(this.getEl('.ellipsis')).lineHeight, 10);
|
|
138
|
-
const targetHeight = lines * lineHeight;
|
|
139
|
-
this.getEl('.ellipsis__handle').style.height = `${targetHeight}px`;
|
|
140
|
-
if (orgNode.offsetHeight <= targetHeight) {
|
|
141
|
-
this.text = lineText;
|
|
142
|
-
this.targetCount = lineText.length;
|
|
143
|
-
}
|
|
144
|
-
else {
|
|
145
|
-
// bisection
|
|
146
|
-
const len = lineText.length;
|
|
147
|
-
const mid = Math.ceil(len / 2);
|
|
148
|
-
const count = this.bisection(targetHeight, mid, 0, len, lineText, shadowTextEl.nativeElement.firstChild);
|
|
149
|
-
this.text = lineText;
|
|
150
|
-
this.targetCount = count;
|
|
151
|
-
}
|
|
152
|
-
ngZone.run(() => cdr.detectChanges());
|
|
153
|
-
}
|
|
154
|
-
}
|
|
155
|
-
getEl(cls) {
|
|
156
|
-
return this.el.nativeElement.querySelector(cls);
|
|
157
|
-
}
|
|
158
|
-
executeOnStable(fn) {
|
|
159
|
-
if (this.ngZone.isStable) {
|
|
160
|
-
fn();
|
|
161
|
-
}
|
|
162
|
-
else {
|
|
163
|
-
this.ngZone.onStable.asObservable().pipe(take(1)).subscribe(fn);
|
|
164
|
-
}
|
|
165
|
-
}
|
|
166
|
-
refresh() {
|
|
167
|
-
this.genType();
|
|
168
|
-
const { type, dom, orgEl, cdr } = this;
|
|
169
|
-
const html = orgEl.nativeElement.innerHTML;
|
|
170
|
-
this.orgHtml = dom.bypassSecurityTrustHtml(html);
|
|
171
|
-
cdr.detectChanges();
|
|
172
|
-
this.executeOnStable(() => {
|
|
173
|
-
this.gen();
|
|
174
|
-
if (type !== 'line') {
|
|
175
|
-
const el = this.getEl('.ellipsis');
|
|
176
|
-
if (el) {
|
|
177
|
-
el.innerHTML = html;
|
|
178
|
-
}
|
|
179
|
-
}
|
|
180
|
-
});
|
|
181
|
-
}
|
|
182
|
-
ngAfterViewInit() {
|
|
183
|
-
this.inited = true;
|
|
184
|
-
this.refresh();
|
|
185
|
-
}
|
|
186
|
-
ngOnChanges() {
|
|
187
|
-
if (this.inited) {
|
|
188
|
-
this.refresh();
|
|
189
|
-
}
|
|
190
|
-
}
|
|
191
|
-
}
|
|
192
|
-
EllipsisComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: EllipsisComponent, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }, { token: i1.DomSanitizer }, { token: DOCUMENT }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
193
|
-
EllipsisComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: EllipsisComponent, selector: "ellipsis", inputs: { tooltip: "tooltip", length: "length", lines: "lines", fullWidthRecognition: "fullWidthRecognition", tail: "tail" }, viewQueries: [{ propertyName: "orgEl", first: true, predicate: ["orgEl"], descendants: true }, { propertyName: "shadowOrgEl", first: true, predicate: ["shadowOrgEl"], descendants: true }, { propertyName: "shadowTextEl", first: true, predicate: ["shadowTextEl"], descendants: true }], exportAs: ["ellipsis"], usesOnChanges: true, ngImport: i0, template: "<div (cdkObserveContent)=\"refresh()\" #orgEl style=\"display: none\"><ng-content></ng-content></div>\n<ng-template #tooltipTpl let-con>\n <span\n *ngIf=\"tooltip; else con\"\n nz-tooltip\n [nzTooltipTitle]=\"titleTpl\"\n [nzTooltipOverlayStyle]=\"{ 'overflow-wrap': 'break-word', 'word-wrap': 'break-word' }\"\n >\n <ng-container *ngTemplateOutlet=\"con\"></ng-container>\n <ng-template #titleTpl><div [innerHTML]=\"orgHtml\"></div></ng-template>\n </span>\n</ng-template>\n<ng-container [ngSwitch]=\"type\">\n <span *ngSwitchCase=\"'default'\" [ngClass]=\"cls\"></span>\n <ng-container *ngSwitchCase=\"'length'\">\n <ng-template [ngTemplateOutlet]=\"tooltipTpl\" [ngTemplateOutletContext]=\"{ $implicit: lengthTpl }\"></ng-template>\n <ng-template #lengthTpl>{{ text }}</ng-template>\n </ng-container>\n <ng-container *ngSwitchCase=\"'line-clamp'\">\n <ng-template [ngTemplateOutlet]=\"tooltipTpl\" [ngTemplateOutletContext]=\"{ $implicit: lineClampTpl }\"></ng-template>\n <ng-template #lineClampTpl>\n <div [ngClass]=\"cls\" [ngStyle]=\"{ '-webkit-line-clamp': lines, '-webkit-box-orient': 'vertical' }\"></div>\n </ng-template>\n </ng-container>\n <div *ngSwitchCase=\"'line'\" [ngClass]=\"cls\">\n <div class=\"ellipsis__handle\">\n <ng-template [ngTemplateOutlet]=\"tooltipTpl\" [ngTemplateOutletContext]=\"{ $implicit: lineTpl }\"></ng-template>\n <ng-template #lineTpl>{{ linsWord }}</ng-template>\n <div class=\"ellipsis__shadow\" #shadowOrgEl [innerHTML]=\"orgHtml\"></div>\n <div class=\"ellipsis__shadow\" #shadowTextEl>\n <span>{{ text }}</span>\n </div>\n </div>\n </div>\n</ng-container>\n", dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i2.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i2.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i3.CdkObserveContent, selector: "[cdkObserveContent]", inputs: ["cdkObserveContentDisabled", "debounce"], outputs: ["cdkObserveContent"], exportAs: ["cdkObserveContent"] }, { kind: "directive", type: i4.NzTooltipDirective, selector: "[nz-tooltip]", inputs: ["nzTooltipTitle", "nzTooltipTitleContext", "nz-tooltip", "nzTooltipTrigger", "nzTooltipPlacement", "nzTooltipOrigin", "nzTooltipVisible", "nzTooltipMouseEnterDelay", "nzTooltipMouseLeaveDelay", "nzTooltipOverlayClassName", "nzTooltipOverlayStyle", "nzTooltipArrowPointAtCenter", "nzTooltipColor"], outputs: ["nzTooltipVisibleChange"], exportAs: ["nzTooltip"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
194
|
-
__decorate([
|
|
195
|
-
InputBoolean()
|
|
196
|
-
], EllipsisComponent.prototype, "tooltip", void 0);
|
|
197
|
-
__decorate([
|
|
198
|
-
InputNumber(null)
|
|
199
|
-
], EllipsisComponent.prototype, "length", void 0);
|
|
200
|
-
__decorate([
|
|
201
|
-
InputNumber(null)
|
|
202
|
-
], EllipsisComponent.prototype, "lines", void 0);
|
|
203
|
-
__decorate([
|
|
204
|
-
InputBoolean()
|
|
205
|
-
], EllipsisComponent.prototype, "fullWidthRecognition", void 0);
|
|
206
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: EllipsisComponent, decorators: [{
|
|
207
|
-
type: Component,
|
|
208
|
-
args: [{ selector: 'ellipsis', exportAs: 'ellipsis', preserveWhitespaces: false, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<div (cdkObserveContent)=\"refresh()\" #orgEl style=\"display: none\"><ng-content></ng-content></div>\n<ng-template #tooltipTpl let-con>\n <span\n *ngIf=\"tooltip; else con\"\n nz-tooltip\n [nzTooltipTitle]=\"titleTpl\"\n [nzTooltipOverlayStyle]=\"{ 'overflow-wrap': 'break-word', 'word-wrap': 'break-word' }\"\n >\n <ng-container *ngTemplateOutlet=\"con\"></ng-container>\n <ng-template #titleTpl><div [innerHTML]=\"orgHtml\"></div></ng-template>\n </span>\n</ng-template>\n<ng-container [ngSwitch]=\"type\">\n <span *ngSwitchCase=\"'default'\" [ngClass]=\"cls\"></span>\n <ng-container *ngSwitchCase=\"'length'\">\n <ng-template [ngTemplateOutlet]=\"tooltipTpl\" [ngTemplateOutletContext]=\"{ $implicit: lengthTpl }\"></ng-template>\n <ng-template #lengthTpl>{{ text }}</ng-template>\n </ng-container>\n <ng-container *ngSwitchCase=\"'line-clamp'\">\n <ng-template [ngTemplateOutlet]=\"tooltipTpl\" [ngTemplateOutletContext]=\"{ $implicit: lineClampTpl }\"></ng-template>\n <ng-template #lineClampTpl>\n <div [ngClass]=\"cls\" [ngStyle]=\"{ '-webkit-line-clamp': lines, '-webkit-box-orient': 'vertical' }\"></div>\n </ng-template>\n </ng-container>\n <div *ngSwitchCase=\"'line'\" [ngClass]=\"cls\">\n <div class=\"ellipsis__handle\">\n <ng-template [ngTemplateOutlet]=\"tooltipTpl\" [ngTemplateOutletContext]=\"{ $implicit: lineTpl }\"></ng-template>\n <ng-template #lineTpl>{{ linsWord }}</ng-template>\n <div class=\"ellipsis__shadow\" #shadowOrgEl [innerHTML]=\"orgHtml\"></div>\n <div class=\"ellipsis__shadow\" #shadowTextEl>\n <span>{{ text }}</span>\n </div>\n </div>\n </div>\n</ng-container>\n" }]
|
|
209
|
-
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.NgZone }, { type: i1.DomSanitizer }, { type: undefined, decorators: [{
|
|
210
|
-
type: Inject,
|
|
211
|
-
args: [DOCUMENT]
|
|
212
|
-
}] }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { orgEl: [{
|
|
213
|
-
type: ViewChild,
|
|
214
|
-
args: ['orgEl', { static: false }]
|
|
215
|
-
}], shadowOrgEl: [{
|
|
216
|
-
type: ViewChild,
|
|
217
|
-
args: ['shadowOrgEl', { static: false }]
|
|
218
|
-
}], shadowTextEl: [{
|
|
219
|
-
type: ViewChild,
|
|
220
|
-
args: ['shadowTextEl', { static: false }]
|
|
221
|
-
}], tooltip: [{
|
|
222
|
-
type: Input
|
|
223
|
-
}], length: [{
|
|
224
|
-
type: Input
|
|
225
|
-
}], lines: [{
|
|
226
|
-
type: Input
|
|
227
|
-
}], fullWidthRecognition: [{
|
|
228
|
-
type: Input
|
|
229
|
-
}], tail: [{
|
|
230
|
-
type: Input
|
|
231
|
-
}] } });
|
|
232
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxsaXBzaXMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYWJjL2VsbGlwc2lzL2VsbGlwc2lzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FiYy9lbGxpcHNpcy9lbGxpcHNpcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFFTCx1QkFBdUIsRUFFdkIsU0FBUyxFQUVULE1BQU0sRUFDTixLQUFLLEVBR0wsU0FBUyxFQUNULGlCQUFpQixFQUNsQixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRTVCLE9BQU8sRUFBZ0IsWUFBWSxFQUFFLFdBQVcsRUFBZSxNQUFNLHVCQUF1QixDQUFDOzs7Ozs7QUFXN0YsTUFBTSxPQUFPLGlCQUFpQjtJQXVCNUIsSUFBSSxRQUFRO1FBQ1YsTUFBTSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDO1FBQ3pDLE9BQU8sQ0FDTCxDQUFDLFdBQVcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDdkQsQ0FBQyxXQUFXLEdBQUcsQ0FBQyxJQUFJLFdBQVcsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUMzRCxDQUFDO0lBQ0osQ0FBQztJQUVELElBQVksR0FBRztRQUNiLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxXQUFXLElBQUksTUFBTSxDQUFDO0lBQ3hDLENBQUM7SUFFRCxZQUNVLEVBQWMsRUFDZCxNQUFjLEVBQ2QsR0FBaUIsRUFDQyxHQUFjLEVBQ2hDLEdBQXNCO1FBSnRCLE9BQUUsR0FBRixFQUFFLENBQVk7UUFDZCxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsUUFBRyxHQUFILEdBQUcsQ0FBYztRQUNDLFFBQUcsR0FBSCxHQUFHLENBQVc7UUFDaEMsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFsQ3hCLHVCQUFrQixHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLFNBQVMsQ0FBQztRQUkxRSxXQUFNLEdBQUcsS0FBSyxDQUFDO1FBRXZCLFNBQUksR0FBRyxTQUFTLENBQUM7UUFDakIsUUFBRyxHQUFHLEVBQUUsQ0FBQztRQUNULFNBQUksR0FBRyxFQUFFLENBQUM7UUFDVixnQkFBVyxHQUFHLENBQUMsQ0FBQztRQUVTLFlBQU8sR0FBRyxLQUFLLENBQUM7UUFHaEIseUJBQW9CLEdBQUcsS0FBSyxDQUFDO1FBQzdDLFNBQUksR0FBRyxLQUFLLENBQUM7SUFvQm5CLENBQUM7SUFFSSxnQkFBZ0IsQ0FBQyxHQUFXO1FBQ2xDLE9BQU8sR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUU7WUFDdkMsTUFBTSxRQUFRLEdBQUcsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNuQyxJQUFJLFFBQVEsSUFBSSxDQUFDLElBQUksUUFBUSxJQUFJLEdBQUcsRUFBRTtnQkFDcEMsT0FBTyxHQUFHLEdBQUcsQ0FBQyxDQUFDO2FBQ2hCO1lBQ0QsT0FBTyxHQUFHLEdBQUcsQ0FBQyxDQUFDO1FBQ2pCLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNSLENBQUM7SUFFTyxrQkFBa0IsQ0FBQyxHQUFXLEVBQUUsU0FBaUI7UUFDdkQsSUFBSSxVQUFVLEdBQUcsQ0FBQyxDQUFDO1FBQ25CLE9BQU8sR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUU7WUFDdkMsTUFBTSxRQUFRLEdBQUcsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNuQyxJQUFJLFFBQVEsSUFBSSxDQUFDLElBQUksUUFBUSxJQUFJLEdBQUcsRUFBRTtnQkFDcEMsVUFBVSxJQUFJLENBQUMsQ0FBQzthQUNqQjtpQkFBTTtnQkFDTCxVQUFVLElBQUksQ0FBQyxDQUFDO2FBQ2pCO1lBQ0QsSUFBSSxVQUFVLElBQUksU0FBUyxFQUFFO2dCQUMzQixPQUFPLEdBQUcsR0FBRyxHQUFHLENBQUM7YUFDbEI7WUFDRCxPQUFPLEdBQUcsQ0FBQztRQUNiLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNULENBQUM7SUFFTyxTQUFTLENBQ2YsWUFBb0IsRUFDcEIsR0FBVyxFQUNYLEtBQWEsRUFDYixHQUFXLEVBQ1gsSUFBWSxFQUNaLElBQWlCO1FBRWpCLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7UUFDekIsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsR0FBRyxNQUFNLENBQUM7UUFDakQsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQztRQUUzQixJQUFJLEVBQUUsSUFBSSxZQUFZLEVBQUU7WUFDdEIsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDO1lBQ3JELEVBQUUsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDO1lBQ3ZCLElBQUksRUFBRSxHQUFHLFlBQVksSUFBSSxHQUFHLEtBQUssS0FBSyxFQUFFO2dCQUN0QyxPQUFPLEdBQUcsQ0FBQzthQUNaO1lBQ0QsS0FBSyxHQUFHLEdBQUcsQ0FBQztZQUNaLEdBQUcsR0FBRyxHQUFHLEdBQUcsS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUM7WUFDNUUsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7U0FDbEU7UUFDRCxJQUFJLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ2YsT0FBTyxHQUFHLENBQUM7U0FDWjtRQUNELElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxHQUFHLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQztRQUNyRCxFQUFFLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQztRQUN2QixJQUFJLEVBQUUsSUFBSSxZQUFZLEVBQUU7WUFDdEIsT0FBTyxHQUFHLEdBQUcsQ0FBQyxDQUFDO1NBQ2hCO1FBQ0QsR0FBRyxHQUFHLEdBQUcsQ0FBQztRQUNWLEdBQUcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQztRQUM1QyxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNuRSxDQUFDO0lBRU8sT0FBTztRQUNiLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLGtCQUFrQixFQUFFLEdBQUcsSUFBSSxDQUFDO1FBQ25ELElBQUksQ0FBQyxHQUFHLEdBQUc7WUFDVCxRQUFRLEVBQUUsSUFBSTtZQUNkLGVBQWUsRUFBRSxLQUFLLElBQUksQ0FBQyxrQkFBa0I7WUFDN0Msc0JBQXNCLEVBQUUsS0FBSyxJQUFJLGtCQUFrQjtTQUNwRCxDQUFDO1FBQ0YsSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNyQixJQUFJLENBQUMsSUFBSSxHQUFHLFNBQVMsQ0FBQztTQUN2QjthQUFNLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDakIsSUFBSSxDQUFDLElBQUksR0FBRyxRQUFRLENBQUM7U0FDdEI7YUFBTSxJQUFJLGtCQUFrQixFQUFFO1lBQzdCLElBQUksQ0FBQyxJQUFJLEdBQUcsWUFBWSxDQUFDO1NBQzFCO2FBQU07WUFDTCxJQUFJLENBQUMsSUFBSSxHQUFHLE1BQU0sQ0FBQztTQUNwQjtJQUNILENBQUM7SUFFTyxHQUFHO1FBQ1QsTUFBTSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLG9CQUFvQixFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQztRQUNyRixJQUFJLElBQUksS0FBSyxRQUFRLEVBQUU7WUFDckIsTUFBTSxFQUFFLEdBQUcsS0FBSyxDQUFDLGFBQTRCLENBQUM7WUFDOUMsSUFBSSxFQUFFLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7Z0JBQzFCLE1BQU0sSUFBSSxLQUFLLENBQUMsa0NBQWtDLENBQUMsQ0FBQzthQUNyRDtZQUNELE1BQU0sVUFBVSxHQUFHLEVBQUUsQ0FBQyxXQUFZLENBQUM7WUFDbkMsTUFBTSxVQUFVLEdBQUcsb0JBQW9CLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQztZQUNoRyxJQUFJLFVBQVUsSUFBSSxNQUFPLElBQUksTUFBTyxHQUFHLENBQUMsRUFBRTtnQkFDeEMsSUFBSSxDQUFDLElBQUksR0FBRyxVQUFVLENBQUM7YUFDeEI7aUJBQU07Z0JBQ0wsSUFBSSxXQUFtQixDQUFDO2dCQUN4QixJQUFJLE1BQU8sR0FBRyxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsRUFBRTtvQkFDOUIsV0FBVyxHQUFHLEVBQUUsQ0FBQztpQkFDbEI7cUJBQU07b0JBQ0wsV0FBVyxHQUFHLG9CQUFvQjt3QkFDaEMsQ0FBQyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxVQUFVLEVBQUUsTUFBTyxDQUFDO3dCQUM5QyxDQUFDLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUM7aUJBQ2pDO2dCQUNELElBQUksQ0FBQyxJQUFJLEdBQUcsV0FBVyxHQUFHLElBQUksQ0FBQzthQUNoQztZQUNELE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUM7U0FDdkM7YUFBTSxJQUFJLElBQUksS0FBSyxNQUFNLEVBQUU7WUFDMUIsTUFBTSxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsR0FBRyxJQUFJLENBQUM7WUFDM0MsTUFBTSxPQUFPLEdBQUcsV0FBVyxDQUFDLGFBQTRCLENBQUM7WUFDekQsTUFBTSxRQUFRLEdBQUcsT0FBTyxDQUFDLFNBQVMsSUFBSSxPQUFPLENBQUMsV0FBWSxDQUFDO1lBQzNELE1BQU0sVUFBVSxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxVQUFXLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDaEcsTUFBTSxZQUFZLEdBQUcsS0FBTSxHQUFHLFVBQVUsQ0FBQztZQUN6QyxJQUFJLENBQUMsS0FBSyxDQUFDLG1CQUFtQixDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxHQUFHLFlBQVksSUFBSSxDQUFDO1lBRW5FLElBQUksT0FBTyxDQUFDLFlBQVksSUFBSSxZQUFZLEVBQUU7Z0JBQ3hDLElBQUksQ0FBQyxJQUFJLEdBQUcsUUFBUSxDQUFDO2dCQUNyQixJQUFJLENBQUMsV0FBVyxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUM7YUFDcEM7aUJBQU07Z0JBQ0wsWUFBWTtnQkFDWixNQUFNLEdBQUcsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDO2dCQUM1QixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQztnQkFFL0IsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLFlBQVksQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLENBQUM7Z0JBQ3pHLElBQUksQ0FBQyxJQUFJLEdBQUcsUUFBUSxDQUFDO2dCQUNyQixJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQzthQUMxQjtZQUNELE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUM7U0FDdkM7SUFDSCxDQUFDO0lBRU8sS0FBSyxDQUFDLEdBQVc7UUFDdkIsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUVPLGVBQWUsQ0FBQyxFQUFjO1FBQ3BDLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUU7WUFDeEIsRUFBRSxFQUFFLENBQUM7U0FDTjthQUFNO1lBQ0wsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsWUFBWSxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQztTQUNqRTtJQUNILENBQUM7SUFFRCxPQUFPO1FBQ0wsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ2YsTUFBTSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQztRQUN2QyxNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQztRQUMzQyxJQUFJLENBQUMsT0FBTyxHQUFHLEdBQUcsQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNqRCxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDcEIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLEVBQUU7WUFDeEIsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQ1gsSUFBSSxJQUFJLEtBQUssTUFBTSxFQUFFO2dCQUNuQixNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO2dCQUNuQyxJQUFJLEVBQUUsRUFBRTtvQkFDTixFQUFFLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztpQkFDckI7YUFDRjtRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELGVBQWU7UUFDYixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztRQUNuQixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDakIsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDZixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7U0FDaEI7SUFDSCxDQUFDOzs4R0EvTVUsaUJBQWlCLDhGQXVDbEIsUUFBUTtrR0F2Q1AsaUJBQWlCLHVmQzVCOUIsNnBEQW1DQTtBRFUyQjtJQUFmLFlBQVksRUFBRTtrREFBaUI7QUFDYjtJQUFsQixXQUFXLENBQUMsSUFBSSxDQUFDO2lEQUFpQjtBQUNoQjtJQUFsQixXQUFXLENBQUMsSUFBSSxDQUFDO2dEQUFnQjtBQUNsQjtJQUFmLFlBQVksRUFBRTsrREFBOEI7MkZBcEIzQyxpQkFBaUI7a0JBUjdCLFNBQVM7K0JBQ0UsVUFBVSxZQUNWLFVBQVUsdUJBRUMsS0FBSyxtQkFDVCx1QkFBdUIsQ0FBQyxNQUFNLGlCQUNoQyxpQkFBaUIsQ0FBQyxJQUFJOzswQkF5Q2xDLE1BQU07MkJBQUMsUUFBUTs0RUFoQzZCLEtBQUs7c0JBQW5ELFNBQVM7dUJBQUMsT0FBTyxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFDZ0IsV0FBVztzQkFBL0QsU0FBUzt1QkFBQyxhQUFhLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQUNXLFlBQVk7c0JBQWpFLFNBQVM7dUJBQUMsY0FBYyxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFRbkIsT0FBTztzQkFBL0IsS0FBSztnQkFDc0IsTUFBTTtzQkFBakMsS0FBSztnQkFDc0IsS0FBSztzQkFBaEMsS0FBSztnQkFDbUIsb0JBQW9CO3NCQUE1QyxLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERPQ1VNRU5UIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBJbmplY3QsXG4gIElucHV0LFxuICBOZ1pvbmUsXG4gIE9uQ2hhbmdlcyxcbiAgVmlld0NoaWxkLFxuICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERvbVNhbml0aXplciwgU2FmZUh0bWwgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcbmltcG9ydCB7IHRha2UgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgQm9vbGVhbklucHV0LCBJbnB1dEJvb2xlYW4sIElucHV0TnVtYmVyLCBOdW1iZXJJbnB1dCB9IGZyb20gJ0BkZWxvbi91dGlsL2RlY29yYXRvcic7XG5pbXBvcnQgdHlwZSB7IE56U2FmZUFueSB9IGZyb20gJ25nLXpvcnJvLWFudGQvY29yZS90eXBlcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2VsbGlwc2lzJyxcbiAgZXhwb3J0QXM6ICdlbGxpcHNpcycsXG4gIHRlbXBsYXRlVXJsOiAnLi9lbGxpcHNpcy5jb21wb25lbnQuaHRtbCcsXG4gIHByZXNlcnZlV2hpdGVzcGFjZXM6IGZhbHNlLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxufSlcbmV4cG9ydCBjbGFzcyBFbGxpcHNpc0NvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uQ2hhbmdlcyB7XG4gIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV90b29sdGlwOiBCb29sZWFuSW5wdXQ7XG4gIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9sZW5ndGg6IE51bWJlcklucHV0O1xuICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfbGluZXM6IE51bWJlcklucHV0O1xuICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfZnVsbFdpZHRoUmVjb2duaXRpb246IEJvb2xlYW5JbnB1dDtcblxuICBwcml2YXRlIGlzU3VwcG9ydExpbmVDbGFtcCA9IHRoaXMuZG9jLmJvZHkuc3R5bGVbJ3dlYmtpdExpbmVDbGFtcCddICE9PSB1bmRlZmluZWQ7XG4gIEBWaWV3Q2hpbGQoJ29yZ0VsJywgeyBzdGF0aWM6IGZhbHNlIH0pIHByaXZhdGUgb3JnRWwhOiBFbGVtZW50UmVmO1xuICBAVmlld0NoaWxkKCdzaGFkb3dPcmdFbCcsIHsgc3RhdGljOiBmYWxzZSB9KSBwcml2YXRlIHNoYWRvd09yZ0VsITogRWxlbWVudFJlZjtcbiAgQFZpZXdDaGlsZCgnc2hhZG93VGV4dEVsJywgeyBzdGF0aWM6IGZhbHNlIH0pIHByaXZhdGUgc2hhZG93VGV4dEVsITogRWxlbWVudFJlZjtcbiAgcHJpdmF0ZSBpbml0ZWQgPSBmYWxzZTtcbiAgb3JnSHRtbCE6IFNhZmVIdG1sO1xuICB0eXBlID0gJ2RlZmF1bHQnO1xuICBjbHMgPSB7fTtcbiAgdGV4dCA9ICcnO1xuICB0YXJnZXRDb3VudCA9IDA7XG5cbiAgQElucHV0KCkgQElucHV0Qm9vbGVhbigpIHRvb2x0aXAgPSBmYWxzZTtcbiAgQElucHV0KCkgQElucHV0TnVtYmVyKG51bGwpIGxlbmd0aD86IG51bWJlcjtcbiAgQElucHV0KCkgQElucHV0TnVtYmVyKG51bGwpIGxpbmVzPzogbnVtYmVyO1xuICBASW5wdXQoKSBASW5wdXRCb29sZWFuKCkgZnVsbFdpZHRoUmVjb2duaXRpb24gPSBmYWxzZTtcbiAgQElucHV0KCkgdGFpbCA9ICcuLi4nO1xuXG4gIGdldCBsaW5zV29yZCgpOiBzdHJpbmcge1xuICAgIGNvbnN0IHsgdGFyZ2V0Q291bnQsIHRleHQsIHRhaWwgfSA9IHRoaXM7XG4gICAgcmV0dXJuIChcbiAgICAgICh0YXJnZXRDb3VudCA+IDAgPyB0ZXh0LnN1YnN0cmluZygwLCB0YXJnZXRDb3VudCkgOiAnJykgK1xuICAgICAgKHRhcmdldENvdW50ID4gMCAmJiB0YXJnZXRDb3VudCA8IHRleHQubGVuZ3RoID8gdGFpbCA6ICcnKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGdldCB3aW4oKTogTnpTYWZlQW55IHtcbiAgICByZXR1cm4gdGhpcy5kb2MuZGVmYXVsdFZpZXcgfHwgd2luZG93O1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBlbDogRWxlbWVudFJlZixcbiAgICBwcml2YXRlIG5nWm9uZTogTmdab25lLFxuICAgIHByaXZhdGUgZG9tOiBEb21TYW5pdGl6ZXIsXG4gICAgQEluamVjdChET0NVTUVOVCkgcHJpdmF0ZSBkb2M6IE56U2FmZUFueSxcbiAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWZcbiAgKSB7fVxuXG4gIHByaXZhdGUgZ2V0U3RyRnVsbExlbmd0aChzdHI6IHN0cmluZyk6IG51bWJlciB7XG4gICAgcmV0dXJuIHN0ci5zcGxpdCgnJykucmVkdWNlKChwcmUsIGN1cikgPT4ge1xuICAgICAgY29uc3QgY2hhckNvZGUgPSBjdXIuY2hhckNvZGVBdCgwKTtcbiAgICAgIGlmIChjaGFyQ29kZSA+PSAwICYmIGNoYXJDb2RlIDw9IDEyOCkge1xuICAgICAgICByZXR1cm4gcHJlICsgMTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBwcmUgKyAyO1xuICAgIH0sIDApO1xuICB9XG5cbiAgcHJpdmF0ZSBjdXRTdHJCeUZ1bGxMZW5ndGgoc3RyOiBzdHJpbmcsIG1heExlbmd0aDogbnVtYmVyKTogc3RyaW5nIHtcbiAgICBsZXQgc2hvd0xlbmd0aCA9IDA7XG4gICAgcmV0dXJuIHN0ci5zcGxpdCgnJykucmVkdWNlKChwcmUsIGN1cikgPT4ge1xuICAgICAgY29uc3QgY2hhckNvZGUgPSBjdXIuY2hhckNvZGVBdCgwKTtcbiAgICAgIGlmIChjaGFyQ29kZSA+PSAwICYmIGNoYXJDb2RlIDw9IDEyOCkge1xuICAgICAgICBzaG93TGVuZ3RoICs9IDE7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzaG93TGVuZ3RoICs9IDI7XG4gICAgICB9XG4gICAgICBpZiAoc2hvd0xlbmd0aCA8PSBtYXhMZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIHByZSArIGN1cjtcbiAgICAgIH1cbiAgICAgIHJldHVybiBwcmU7XG4gICAgfSwgJycpO1xuICB9XG5cbiAgcHJpdmF0ZSBiaXNlY3Rpb24oXG4gICAgdGFyZ2V0SGVpZ2h0OiBudW1iZXIsXG4gICAgbWlkOiBudW1iZXIsXG4gICAgYmVnaW46IG51bWJlcixcbiAgICBlbmQ6IG51bWJlcixcbiAgICB0ZXh0OiBzdHJpbmcsXG4gICAgbm9kZTogSFRNTEVsZW1lbnRcbiAgKTogbnVtYmVyIHtcbiAgICBjb25zdCBzdWZmaXggPSB0aGlzLnRhaWw7XG4gICAgbm9kZS5pbm5lckhUTUwgPSB0ZXh0LnN1YnN0cmluZygwLCBtaWQpICsgc3VmZml4O1xuICAgIGxldCBzaCA9IG5vZGUub2Zmc2V0SGVpZ2h0O1xuXG4gICAgaWYgKHNoIDw9IHRhcmdldEhlaWdodCkge1xuICAgICAgbm9kZS5pbm5lckhUTUwgPSB0ZXh0LnN1YnN0cmluZygwLCBtaWQgKyAxKSArIHN1ZmZpeDtcbiAgICAgIHNoID0gbm9kZS5vZmZzZXRIZWlnaHQ7XG4gICAgICBpZiAoc2ggPiB0YXJnZXRIZWlnaHQgfHwgbWlkID09PSBiZWdpbikge1xuICAgICAgICByZXR1cm4gbWlkO1xuICAgICAgfVxuICAgICAgYmVnaW4gPSBtaWQ7XG4gICAgICBtaWQgPSBlbmQgLSBiZWdpbiA9PT0gMSA/IGJlZ2luICsgMSA6IE1hdGguZmxvb3IoKGVuZCAtIGJlZ2luKSAvIDIpICsgYmVnaW47XG4gICAgICByZXR1cm4gdGhpcy5iaXNlY3Rpb24odGFyZ2V0SGVpZ2h0LCBtaWQsIGJlZ2luLCBlbmQsIHRleHQsIG5vZGUpO1xuICAgIH1cbiAgICBpZiAobWlkIC0gMSA8IDApIHtcbiAgICAgIHJldHVybiBtaWQ7XG4gICAgfVxuICAgIG5vZGUuaW5uZXJIVE1MID0gdGV4dC5zdWJzdHJpbmcoMCwgbWlkIC0gMSkgKyBzdWZmaXg7XG4gICAgc2ggPSBub2RlLm9mZnNldEhlaWdodDtcbiAgICBpZiAoc2ggPD0gdGFyZ2V0SGVpZ2h0KSB7XG4gICAgICByZXR1cm4gbWlkIC0gMTtcbiAgICB9XG4gICAgZW5kID0gbWlkO1xuICAgIG1pZCA9IE1hdGguZmxvb3IoKGVuZCAtIGJlZ2luKSAvIDIpICsgYmVnaW47XG4gICAgcmV0dXJuIHRoaXMuYmlzZWN0aW9uKHRhcmdldEhlaWdodCwgbWlkLCBiZWdpbiwgZW5kLCB0ZXh0LCBub2RlKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2VuVHlwZSgpOiB2b2lkIHtcbiAgICBjb25zdCB7IGxpbmVzLCBsZW5ndGgsIGlzU3VwcG9ydExpbmVDbGFtcCB9ID0gdGhpcztcbiAgICB0aGlzLmNscyA9IHtcbiAgICAgIGVsbGlwc2lzOiB0cnVlLFxuICAgICAgZWxsaXBzaXNfX2xpbmVzOiBsaW5lcyAmJiAhaXNTdXBwb3J0TGluZUNsYW1wLFxuICAgICAgJ2VsbGlwc2lzX19saW5lLWNsYW1wJzogbGluZXMgJiYgaXNTdXBwb3J0TGluZUNsYW1wXG4gICAgfTtcbiAgICBpZiAoIWxpbmVzICYmICFsZW5ndGgpIHtcbiAgICAgIHRoaXMudHlwZSA9ICdkZWZhdWx0JztcbiAgICB9IGVsc2UgaWYgKCFsaW5lcykge1xuICAgICAgdGhpcy50eXBlID0gJ2xlbmd0aCc7XG4gICAgfSBlbHNlIGlmIChpc1N1cHBvcnRMaW5lQ2xhbXApIHtcbiAgICAgIHRoaXMudHlwZSA9ICdsaW5lLWNsYW1wJztcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy50eXBlID0gJ2xpbmUnO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2VuKCk6IHZvaWQge1xuICAgIGNvbnN0IHsgdHlwZSwgbGluZXMsIGxlbmd0aCwgZnVsbFdpZHRoUmVjb2duaXRpb24sIHRhaWwsIG9yZ0VsLCBjZHIsIG5nWm9uZSB9ID0gdGhpcztcbiAgICBpZiAodHlwZSA9PT0gJ2xlbmd0aCcpIHtcbiAgICAgIGNvbnN0IGVsID0gb3JnRWwubmF0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudDtcbiAgICAgIGlmIChlbC5jaGlsZHJlbi5sZW5ndGggPiAwKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignRWxsaXBzaXMgY29udGVudCBtdXN0IGJlIHN0cmluZy4nKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGxlbmd0aFRleHQgPSBlbC50ZXh0Q29udGVudCE7XG4gICAgICBjb25zdCB0ZXh0TGVuZ3RoID0gZnVsbFdpZHRoUmVjb2duaXRpb24gPyB0aGlzLmdldFN0ckZ1bGxMZW5ndGgobGVuZ3RoVGV4dCkgOiBsZW5ndGhUZXh0Lmxlbmd0aDtcbiAgICAgIGlmICh0ZXh0TGVuZ3RoIDw9IGxlbmd0aCEgfHwgbGVuZ3RoISA8IDApIHtcbiAgICAgICAgdGhpcy50ZXh0ID0gbGVuZ3RoVGV4dDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxldCBkaXNwbGF5VGV4dDogc3RyaW5nO1xuICAgICAgICBpZiAobGVuZ3RoISAtIHRhaWwubGVuZ3RoIDw9IDApIHtcbiAgICAgICAgICBkaXNwbGF5VGV4dCA9ICcnO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGRpc3BsYXlUZXh0ID0gZnVsbFdpZHRoUmVjb2duaXRpb25cbiAgICAgICAgICAgID8gdGhpcy5jdXRTdHJCeUZ1bGxMZW5ndGgobGVuZ3RoVGV4dCwgbGVuZ3RoISlcbiAgICAgICAgICAgIDogbGVuZ3RoVGV4dC5zbGljZSgwLCBsZW5ndGgpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMudGV4dCA9IGRpc3BsYXlUZXh0ICsgdGFpbDtcbiAgICAgIH1cbiAgICAgIG5nWm9uZS5ydW4oKCkgPT4gY2RyLmRldGVjdENoYW5nZXMoKSk7XG4gICAgfSBlbHNlIGlmICh0eXBlID09PSAnbGluZScpIHtcbiAgICAgIGNvbnN0IHsgc2hhZG93T3JnRWwsIHNoYWRvd1RleHRFbCB9ID0gdGhpcztcbiAgICAgIGNvbnN0IG9yZ05vZGUgPSBzaGFkb3dPcmdFbC5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50O1xuICAgICAgY29uc3QgbGluZVRleHQgPSBvcmdOb2RlLmlubmVyVGV4dCB8fCBvcmdOb2RlLnRleHRDb250ZW50ITtcbiAgICAgIGNvbnN0IGxpbmVIZWlnaHQgPSBwYXJzZUludCh0aGlzLndpbi5nZXRDb21wdXRlZFN0eWxlKHRoaXMuZ2V0RWwoJy5lbGxpcHNpcycpKS5saW5lSGVpZ2h0ISwgMTApO1xuICAgICAgY29uc3QgdGFyZ2V0SGVpZ2h0ID0gbGluZXMhICogbGluZUhlaWdodDtcbiAgICAgIHRoaXMuZ2V0RWwoJy5lbGxpcHNpc19faGFuZGxlJykuc3R5bGUuaGVpZ2h0ID0gYCR7dGFyZ2V0SGVpZ2h0fXB4YDtcblxuICAgICAgaWYgKG9yZ05vZGUub2Zmc2V0SGVpZ2h0IDw9IHRhcmdldEhlaWdodCkge1xuICAgICAgICB0aGlzLnRleHQgPSBsaW5lVGV4dDtcbiAgICAgICAgdGhpcy50YXJnZXRDb3VudCA9IGxpbmVUZXh0Lmxlbmd0aDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIGJpc2VjdGlvblxuICAgICAgICBjb25zdCBsZW4gPSBsaW5lVGV4dC5sZW5ndGg7XG4gICAgICAgIGNvbnN0IG1pZCA9IE1hdGguY2VpbChsZW4gLyAyKTtcblxuICAgICAgICBjb25zdCBjb3VudCA9IHRoaXMuYmlzZWN0aW9uKHRhcmdldEhlaWdodCwgbWlkLCAwLCBsZW4sIGxpbmVUZXh0LCBzaGFkb3dUZXh0RWwubmF0aXZlRWxlbWVudC5maXJzdENoaWxkKTtcbiAgICAgICAgdGhpcy50ZXh0ID0gbGluZVRleHQ7XG4gICAgICAgIHRoaXMudGFyZ2V0Q291bnQgPSBjb3VudDtcbiAgICAgIH1cbiAgICAgIG5nWm9uZS5ydW4oKCkgPT4gY2RyLmRldGVjdENoYW5nZXMoKSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXRFbChjbHM6IHN0cmluZyk6IEhUTUxFbGVtZW50IHtcbiAgICByZXR1cm4gdGhpcy5lbC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoY2xzKTtcbiAgfVxuXG4gIHByaXZhdGUgZXhlY3V0ZU9uU3RhYmxlKGZuOiAoKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgaWYgKHRoaXMubmdab25lLmlzU3RhYmxlKSB7XG4gICAgICBmbigpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm5nWm9uZS5vblN0YWJsZS5hc09ic2VydmFibGUoKS5waXBlKHRha2UoMSkpLnN1YnNjcmliZShmbik7XG4gICAgfVxuICB9XG5cbiAgcmVmcmVzaCgpOiB2b2lkIHtcbiAgICB0aGlzLmdlblR5cGUoKTtcbiAgICBjb25zdCB7IHR5cGUsIGRvbSwgb3JnRWwsIGNkciB9ID0gdGhpcztcbiAgICBjb25zdCBodG1sID0gb3JnRWwubmF0aXZlRWxlbWVudC5pbm5lckhUTUw7XG4gICAgdGhpcy5vcmdIdG1sID0gZG9tLmJ5cGFzc1NlY3VyaXR5VHJ1c3RIdG1sKGh0bWwpO1xuICAgIGNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgdGhpcy5leGVjdXRlT25TdGFibGUoKCkgPT4ge1xuICAgICAgdGhpcy5nZW4oKTtcbiAgICAgIGlmICh0eXBlICE9PSAnbGluZScpIHtcbiAgICAgICAgY29uc3QgZWwgPSB0aGlzLmdldEVsKCcuZWxsaXBzaXMnKTtcbiAgICAgICAgaWYgKGVsKSB7XG4gICAgICAgICAgZWwuaW5uZXJIVE1MID0gaHRtbDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMuaW5pdGVkID0gdHJ1ZTtcbiAgICB0aGlzLnJlZnJlc2goKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmluaXRlZCkge1xuICAgICAgdGhpcy5yZWZyZXNoKCk7XG4gICAgfVxuICB9XG59XG4iLCI8ZGl2IChjZGtPYnNlcnZlQ29udGVudCk9XCJyZWZyZXNoKClcIiAjb3JnRWwgc3R5bGU9XCJkaXNwbGF5OiBub25lXCI+PG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PjwvZGl2PlxuPG5nLXRlbXBsYXRlICN0b29sdGlwVHBsIGxldC1jb24+XG4gIDxzcGFuXG4gICAgKm5nSWY9XCJ0b29sdGlwOyBlbHNlIGNvblwiXG4gICAgbnotdG9vbHRpcFxuICAgIFtuelRvb2x0aXBUaXRsZV09XCJ0aXRsZVRwbFwiXG4gICAgW256VG9vbHRpcE92ZXJsYXlTdHlsZV09XCJ7ICdvdmVyZmxvdy13cmFwJzogJ2JyZWFrLXdvcmQnLCAnd29yZC13cmFwJzogJ2JyZWFrLXdvcmQnIH1cIlxuICA+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNvblwiPjwvbmctY29udGFpbmVyPlxuICAgIDxuZy10ZW1wbGF0ZSAjdGl0bGVUcGw+PGRpdiBbaW5uZXJIVE1MXT1cIm9yZ0h0bWxcIj48L2Rpdj48L25nLXRlbXBsYXRlPlxuICA8L3NwYW4+XG48L25nLXRlbXBsYXRlPlxuPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwidHlwZVwiPlxuICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiJ2RlZmF1bHQnXCIgW25nQ2xhc3NdPVwiY2xzXCI+PC9zcGFuPlxuICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInbGVuZ3RoJ1wiPlxuICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJ0b29sdGlwVHBsXCIgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiBsZW5ndGhUcGwgfVwiPjwvbmctdGVtcGxhdGU+XG4gICAgPG5nLXRlbXBsYXRlICNsZW5ndGhUcGw+e3sgdGV4dCB9fTwvbmctdGVtcGxhdGU+XG4gIDwvbmctY29udGFpbmVyPlxuICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInbGluZS1jbGFtcCdcIj5cbiAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwidG9vbHRpcFRwbFwiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogbGluZUNsYW1wVHBsIH1cIj48L25nLXRlbXBsYXRlPlxuICAgIDxuZy10ZW1wbGF0ZSAjbGluZUNsYW1wVHBsPlxuICAgICAgPGRpdiBbbmdDbGFzc109XCJjbHNcIiBbbmdTdHlsZV09XCJ7ICctd2Via2l0LWxpbmUtY2xhbXAnOiBsaW5lcywgJy13ZWJraXQtYm94LW9yaWVudCc6ICd2ZXJ0aWNhbCcgfVwiPjwvZGl2PlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwvbmctY29udGFpbmVyPlxuICA8ZGl2ICpuZ1N3aXRjaENhc2U9XCInbGluZSdcIiBbbmdDbGFzc109XCJjbHNcIj5cbiAgICA8ZGl2IGNsYXNzPVwiZWxsaXBzaXNfX2hhbmRsZVwiPlxuICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInRvb2x0aXBUcGxcIiBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IGxpbmVUcGwgfVwiPjwvbmctdGVtcGxhdGU+XG4gICAgICA8bmctdGVtcGxhdGUgI2xpbmVUcGw+e3sgbGluc1dvcmQgfX08L25nLXRlbXBsYXRlPlxuICAgICAgPGRpdiBjbGFzcz1cImVsbGlwc2lzX19zaGFkb3dcIiAjc2hhZG93T3JnRWwgW2lubmVySFRNTF09XCJvcmdIdG1sXCI+PC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiZWxsaXBzaXNfX3NoYWRvd1wiICNzaGFkb3dUZXh0RWw+XG4gICAgICAgIDxzcGFuPnt7IHRleHQgfX08L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L25nLWNvbnRhaW5lcj5cbiJdfQ==
|