bbj-screen-widget 2.4.60 → 2.4.62
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/core/package.json +2 -10
- package/core/src/service/baidu-map.service.ts +107 -0
- package/karma.conf.js +32 -0
- package/ng-package.json +59 -0
- package/package.json +4 -13
- package/src/lib/announcement/announcement.component.html +3 -0
- package/src/lib/announcement/announcement.component.less +5 -0
- package/src/lib/announcement/announcement.component.spec.ts +25 -0
- package/src/lib/announcement/announcement.component.ts +55 -0
- package/src/lib/announcement/announcement.module.ts +19 -0
- package/src/lib/audio/audio.component.html +6 -0
- package/src/lib/audio/audio.component.less +12 -0
- package/src/lib/audio/audio.component.spec.ts +25 -0
- package/src/lib/audio/audio.component.ts +167 -0
- package/src/lib/audio/audio.module.ts +15 -0
- package/src/lib/background/background.component.html +1 -0
- package/src/lib/background/background.component.less +6 -0
- package/src/lib/background/background.component.spec.ts +25 -0
- package/src/lib/background/background.component.ts +33 -0
- package/src/lib/background/background.module.ts +14 -0
- package/src/lib/bar-chart-three-d/bar-chart-three-d.component.html +1 -0
- package/src/lib/bar-chart-three-d/bar-chart-three-d.component.less +8 -0
- package/src/lib/bar-chart-three-d/bar-chart-three-d.component.spec.ts +25 -0
- package/src/lib/bar-chart-three-d/bar-chart-three-d.component.ts +271 -0
- package/src/lib/bar-chart-three-d/bar-chart-three-d.module.ts +15 -0
- package/src/lib/basic-bar-chart/basic-bar-chart.component.html +7 -0
- package/src/lib/basic-bar-chart/basic-bar-chart.component.less +5 -0
- package/src/lib/basic-bar-chart/basic-bar-chart.component.spec.ts +25 -0
- package/src/lib/basic-bar-chart/basic-bar-chart.component.ts +493 -0
- package/src/lib/basic-bar-chart/basic-bar-chart.module.ts +21 -0
- package/src/lib/basic-line-chart/basic-line-chart.component.html +7 -0
- package/src/lib/basic-line-chart/basic-line-chart.component.less +8 -0
- package/src/lib/basic-line-chart/basic-line-chart.component.spec.ts +25 -0
- package/src/lib/basic-line-chart/basic-line-chart.component.ts +654 -0
- package/src/lib/basic-line-chart/basic-line-chart.module.ts +15 -0
- package/src/lib/basic-pie-chart/basic-pie-chart.component.html +7 -0
- package/src/lib/basic-pie-chart/basic-pie-chart.component.less +8 -0
- package/src/lib/basic-pie-chart/basic-pie-chart.component.spec.ts +25 -0
- package/src/lib/basic-pie-chart/basic-pie-chart.component.ts +439 -0
- package/src/lib/basic-pie-chart/basic-pie-chart.module.ts +15 -0
- package/src/lib/basic-planimetric-map/basic-planimetric-map.component.html +2 -0
- package/src/lib/basic-planimetric-map/basic-planimetric-map.component.less +9 -0
- package/src/lib/basic-planimetric-map/basic-planimetric-map.component.spec.ts +25 -0
- package/src/lib/basic-planimetric-map/basic-planimetric-map.component.ts +211 -0
- package/src/lib/basic-planimetric-map/basic-planimetric-map.module.ts +16 -0
- package/src/lib/breathing-bubble-layer/breathing-bubble-layer.component.css +0 -0
- package/src/lib/breathing-bubble-layer/breathing-bubble-layer.component.html +1 -0
- package/src/lib/breathing-bubble-layer/breathing-bubble-layer.component.spec.ts +25 -0
- package/src/lib/breathing-bubble-layer/breathing-bubble-layer.component.ts +487 -0
- package/src/lib/breathing-bubble-layer/breathing-bubble-layer.module.ts +14 -0
- package/src/lib/bubble-chart/bubble-chart.component.html +7 -0
- package/src/lib/bubble-chart/bubble-chart.component.less +8 -0
- package/src/lib/bubble-chart/bubble-chart.component.spec.ts +25 -0
- package/src/lib/bubble-chart/bubble-chart.component.ts +307 -0
- package/src/lib/bubble-chart/bubble-chart.module.ts +15 -0
- package/src/lib/bulletin-board/bulletin-board.component.html +15 -0
- package/src/lib/bulletin-board/bulletin-board.component.less +27 -0
- package/src/lib/bulletin-board/bulletin-board.component.spec.ts +25 -0
- package/src/lib/bulletin-board/bulletin-board.component.ts +127 -0
- package/src/lib/bulletin-board/bulletin-board.module.ts +20 -0
- package/src/lib/button/button.component.html +1 -0
- package/src/lib/button/button.component.less +17 -0
- package/src/lib/button/button.component.spec.ts +25 -0
- package/src/lib/button/button.component.ts +137 -0
- package/src/lib/button/button.module.ts +16 -0
- package/src/lib/calendar/background-events/background-events.component.html +0 -0
- package/src/lib/calendar/background-events/background-events.component.less +0 -0
- package/src/lib/calendar/background-events/background-events.component.spec.ts +25 -0
- package/src/lib/calendar/background-events/background-events.component.ts +51 -0
- package/src/lib/calendar/calendar-events-child.ts +27 -0
- package/src/lib/calendar/calendar.component.html +2 -0
- package/src/lib/calendar/calendar.component.less +14 -0
- package/src/lib/calendar/calendar.component.spec.ts +25 -0
- package/src/lib/calendar/calendar.component.ts +151 -0
- package/src/lib/calendar/calendar.module.ts +27 -0
- package/src/lib/calendar/calendar.util.ts +14 -0
- package/src/lib/calendar/events/events.component.html +0 -0
- package/src/lib/calendar/events/events.component.less +0 -0
- package/src/lib/calendar/events/events.component.spec.ts +25 -0
- package/src/lib/calendar/events/events.component.ts +61 -0
- package/src/lib/checkbox/checkbox.component.html +61 -0
- package/src/lib/checkbox/checkbox.component.less +104 -0
- package/src/lib/checkbox/checkbox.component.spec.ts +25 -0
- package/src/lib/checkbox/checkbox.component.ts +292 -0
- package/src/lib/checkbox/checkbox.module.ts +16 -0
- package/src/lib/cross-table/cross-table.component.html +16 -0
- package/src/lib/cross-table/cross-table.component.less +75 -0
- package/src/lib/cross-table/cross-table.component.spec.ts +25 -0
- package/src/lib/cross-table/cross-table.component.ts +257 -0
- package/src/lib/cross-table/cross-table.module.ts +18 -0
- package/src/lib/custom-baidu-map/baidu-marker-layer/baidu-marker-layer.component.html +32 -0
- package/src/lib/custom-baidu-map/baidu-marker-layer/baidu-marker-layer.component.less +11 -0
- package/src/lib/custom-baidu-map/baidu-marker-layer/baidu-marker-layer.component.spec.ts +25 -0
- package/src/lib/custom-baidu-map/baidu-marker-layer/baidu-marker-layer.component.ts +689 -0
- package/src/lib/custom-baidu-map/baidu-polyline-layer/baidu-polyline-layer.component.html +0 -0
- package/src/lib/custom-baidu-map/baidu-polyline-layer/baidu-polyline-layer.component.less +0 -0
- package/src/lib/custom-baidu-map/baidu-polyline-layer/baidu-polyline-layer.component.spec.ts +25 -0
- package/src/lib/custom-baidu-map/baidu-polyline-layer/baidu-polyline-layer.component.ts +248 -0
- package/src/lib/custom-baidu-map/base-layer.ts +50 -0
- package/src/lib/custom-baidu-map/custom-baidu-map.component.html +15 -0
- package/src/lib/custom-baidu-map/custom-baidu-map.component.less +69 -0
- package/src/lib/custom-baidu-map/custom-baidu-map.component.spec.ts +25 -0
- package/src/lib/custom-baidu-map/custom-baidu-map.component.ts +652 -0
- package/src/lib/custom-baidu-map/custom-baidu-map.module.ts +41 -0
- package/src/lib/custom-baidu-map/typhoon-area-layer/typhoon-area-layer.component.html +0 -0
- package/src/lib/custom-baidu-map/typhoon-area-layer/typhoon-area-layer.component.less +0 -0
- package/src/lib/custom-baidu-map/typhoon-area-layer/typhoon-area-layer.component.spec.ts +25 -0
- package/src/lib/custom-baidu-map/typhoon-area-layer/typhoon-area-layer.component.ts +99 -0
- package/src/lib/custom-baidu-map/wind-layer/wind-layer.component.html +0 -0
- package/src/lib/custom-baidu-map/wind-layer/wind-layer.component.less +0 -0
- package/src/lib/custom-baidu-map/wind-layer/wind-layer.component.spec.ts +25 -0
- package/src/lib/custom-baidu-map/wind-layer/wind-layer.component.ts +404 -0
- package/src/lib/data-map/data-map.component.html +9 -0
- package/src/lib/data-map/data-map.component.less +0 -0
- package/src/lib/data-map/data-map.component.spec.ts +25 -0
- package/src/lib/data-map/data-map.component.ts +105 -0
- package/src/lib/data-map/data-map.module.ts +15 -0
- package/src/lib/date-picker/date-picker.component.html +32 -0
- package/src/lib/date-picker/date-picker.component.less +20 -0
- package/src/lib/date-picker/date-picker.component.spec.ts +25 -0
- package/src/lib/date-picker/date-picker.component.ts +389 -0
- package/src/lib/date-picker/date-picker.module.ts +18 -0
- package/src/lib/drop-down-detail-list/drop-down-detail-list.component.html +25 -0
- package/src/lib/drop-down-detail-list/drop-down-detail-list.component.less +35 -0
- package/src/lib/drop-down-detail-list/drop-down-detail-list.component.spec.ts +25 -0
- package/src/lib/drop-down-detail-list/drop-down-detail-list.component.ts +117 -0
- package/src/lib/drop-down-detail-list/drop-down-detail-list.module.ts +15 -0
- package/src/lib/dynamic-list/dynamic-list.component.html +15 -0
- package/src/lib/dynamic-list/dynamic-list.component.less +31 -0
- package/src/lib/dynamic-list/dynamic-list.component.spec.ts +25 -0
- package/src/lib/dynamic-list/dynamic-list.component.ts +57 -0
- package/src/lib/dynamic-list/dynamic-list.module.ts +15 -0
- package/src/lib/funnel-chart/funnel-chart.component.html +7 -0
- package/src/lib/funnel-chart/funnel-chart.component.less +8 -0
- package/src/lib/funnel-chart/funnel-chart.component.spec.ts +25 -0
- package/src/lib/funnel-chart/funnel-chart.component.ts +198 -0
- package/src/lib/funnel-chart/funnel-chart.module.ts +15 -0
- package/src/lib/gantt/gantt.component.html +10 -0
- package/src/lib/gantt/gantt.component.less +76 -0
- package/src/lib/gantt/gantt.component.spec.ts +25 -0
- package/src/lib/gantt/gantt.component.ts +213 -0
- package/src/lib/gantt/gantt.module.ts +37 -0
- package/src/lib/gauge/gauge.component.html +1 -0
- package/src/lib/gauge/gauge.component.less +8 -0
- package/src/lib/gauge/gauge.component.spec.ts +25 -0
- package/src/lib/gauge/gauge.component.ts +268 -0
- package/src/lib/gauge/gauge.module.ts +15 -0
- package/src/lib/gauge-progress/gauge-progress.component.html +29 -0
- package/src/lib/gauge-progress/gauge-progress.component.less +51 -0
- package/src/lib/gauge-progress/gauge-progress.component.ts +293 -0
- package/src/lib/gauge-progress/gauge.module.ts +17 -0
- package/src/lib/general-text/general-text.component.html +7 -0
- package/src/lib/general-text/general-text.component.less +8 -0
- package/src/lib/general-text/general-text.component.spec.ts +25 -0
- package/src/lib/general-text/general-text.component.ts +114 -0
- package/src/lib/general-text/general-text.module.ts +15 -0
- package/src/lib/iconfont/icon.ts +198 -0
- package/src/lib/iconfont/iconfont.component.html +4 -0
- package/src/lib/iconfont/iconfont.component.less +5 -0
- package/src/lib/iconfont/iconfont.component.spec.ts +25 -0
- package/src/lib/iconfont/iconfont.component.ts +42 -0
- package/src/lib/iconfont/iconfont.module.ts +15 -0
- package/src/lib/iframe/iframe.component.html +1 -0
- package/src/lib/iframe/iframe.component.less +13 -0
- package/src/lib/iframe/iframe.component.spec.ts +25 -0
- package/src/lib/iframe/iframe.component.ts +34 -0
- package/src/lib/iframe/iframe.module.ts +15 -0
- package/src/lib/image/image.component.html +2 -0
- package/src/lib/image/image.component.less +13 -0
- package/src/lib/image/image.component.spec.ts +25 -0
- package/src/lib/image/image.component.ts +79 -0
- package/src/lib/image/image.module.ts +14 -0
- package/src/lib/item-swiper/item-swiper.component.html +48 -0
- package/src/lib/item-swiper/item-swiper.component.less +75 -0
- package/src/lib/item-swiper/item-swiper.component.spec.ts +25 -0
- package/src/lib/item-swiper/item-swiper.component.ts +277 -0
- package/src/lib/item-swiper/item-swiper.module.ts +17 -0
- package/src/lib/line-bar-chart/line-bar-chart.component.html +7 -0
- package/src/lib/line-bar-chart/line-bar-chart.component.less +3 -0
- package/src/lib/line-bar-chart/line-bar-chart.component.spec.ts +25 -0
- package/src/lib/line-bar-chart/line-bar-chart.component.ts +346 -0
- package/src/lib/line-bar-chart/line-bar-chart.module.ts +15 -0
- package/src/lib/line-light-flow/line-light-flow.component.css +0 -0
- package/src/lib/line-light-flow/line-light-flow.component.html +3 -0
- package/src/lib/line-light-flow/line-light-flow.component.spec.ts +25 -0
- package/src/lib/line-light-flow/line-light-flow.component.ts +274 -0
- package/src/lib/line-light-flow/line-light-flow.module.ts +21 -0
- package/src/lib/liquid-fill/liquid-fill.component.html +1 -0
- package/src/lib/liquid-fill/liquid-fill.component.less +8 -0
- package/src/lib/liquid-fill/liquid-fill.component.spec.ts +25 -0
- package/src/lib/liquid-fill/liquid-fill.component.ts +127 -0
- package/src/lib/liquid-fill/liquid-fill.module.ts +15 -0
- package/src/lib/marquee/marquee.component.html +5 -0
- package/src/lib/marquee/marquee.component.less +9 -0
- package/src/lib/marquee/marquee.component.spec.ts +25 -0
- package/src/lib/marquee/marquee.component.ts +84 -0
- package/src/lib/marquee/marquee.module.ts +14 -0
- package/src/lib/mip-anim/mip-anim.component.html +1 -0
- package/src/lib/mip-anim/mip-anim.component.less +7 -0
- package/src/lib/mip-anim/mip-anim.component.spec.ts +25 -0
- package/src/lib/mip-anim/mip-anim.component.ts +18 -0
- package/src/lib/mip-anim/mip-anim.module.ts +14 -0
- package/src/lib/multi-title-gauge/multi-title-gauge.component.html +1 -0
- package/src/lib/multi-title-gauge/multi-title-gauge.component.less +9 -0
- package/src/lib/multi-title-gauge/multi-title-gauge.component.spec.ts +25 -0
- package/src/lib/multi-title-gauge/multi-title-gauge.component.ts +231 -0
- package/src/lib/multi-title-gauge/multi-title-gauge.module.ts +19 -0
- package/src/lib/number-flop/number-flop.component.html +31 -0
- package/src/lib/number-flop/number-flop.component.less +155 -0
- package/src/lib/number-flop/number-flop.component.spec.ts +25 -0
- package/src/lib/number-flop/number-flop.component.ts +96 -0
- package/src/lib/number-flop/number-flop.module.ts +14 -0
- package/src/lib/parent-container/parent-container.component.html +0 -0
- package/src/lib/parent-container/parent-container.component.less +0 -0
- package/src/lib/parent-container/parent-container.component.spec.ts +25 -0
- package/src/lib/parent-container/parent-container.component.ts +21 -0
- package/src/lib/parent-container/parent-container.module.ts +14 -0
- package/src/lib/percent-pie-chart/percent-pie-chart.component.html +8 -0
- package/src/lib/percent-pie-chart/percent-pie-chart.component.less +8 -0
- package/src/lib/percent-pie-chart/percent-pie-chart.component.spec.ts +25 -0
- package/src/lib/percent-pie-chart/percent-pie-chart.component.ts +213 -0
- package/src/lib/percent-pie-chart/percent-pie-chart.module.ts +15 -0
- package/src/lib/pie3d-chart/pie3d-chart.component.html +1 -0
- package/src/lib/pie3d-chart/pie3d-chart.component.less +9 -0
- package/src/lib/pie3d-chart/pie3d-chart.component.spec.ts +25 -0
- package/src/lib/pie3d-chart/pie3d-chart.component.ts +278 -0
- package/src/lib/pie3d-chart/pie3d-chart.module.ts +16 -0
- package/src/lib/planimetric-map2d/fly-line-layer/fly-line-layer.component.html +0 -0
- package/src/lib/planimetric-map2d/fly-line-layer/fly-line-layer.component.less +0 -0
- package/src/lib/planimetric-map2d/fly-line-layer/fly-line-layer.component.spec.ts +25 -0
- package/src/lib/planimetric-map2d/fly-line-layer/fly-line-layer.component.ts +411 -0
- package/src/lib/planimetric-map2d/fly-line-layer/fly-line-layer.module.ts +13 -0
- package/src/lib/planimetric-map2d/map2d-mark-layer/map2d-mark-layer.component.html +1 -0
- package/src/lib/planimetric-map2d/map2d-mark-layer/map2d-mark-layer.component.less +0 -0
- package/src/lib/planimetric-map2d/map2d-mark-layer/map2d-mark-layer.component.spec.ts +25 -0
- package/src/lib/planimetric-map2d/map2d-mark-layer/map2d-mark-layer.component.ts +235 -0
- package/src/lib/planimetric-map2d/map2d-mark-layer/map2d-mark-layer.module.ts +16 -0
- package/src/lib/planimetric-map2d/map2d-polyline-layer/map2d-polyline-layer.component.html +0 -0
- package/src/lib/planimetric-map2d/map2d-polyline-layer/map2d-polyline-layer.component.less +0 -0
- package/src/lib/planimetric-map2d/map2d-polyline-layer/map2d-polyline-layer.component.spec.ts +25 -0
- package/src/lib/planimetric-map2d/map2d-polyline-layer/map2d-polyline-layer.component.ts +107 -0
- package/src/lib/planimetric-map2d/map2d-polyline-layer/map2d-polyline-layer.module.ts +17 -0
- package/src/lib/planimetric-map2d/map2d-visual-layer/map2d-visual-layer.component.html +0 -0
- package/src/lib/planimetric-map2d/map2d-visual-layer/map2d-visual-layer.component.less +0 -0
- package/src/lib/planimetric-map2d/map2d-visual-layer/map2d-visual-layer.component.spec.ts +25 -0
- package/src/lib/planimetric-map2d/map2d-visual-layer/map2d-visual-layer.component.ts +337 -0
- package/src/lib/planimetric-map2d/map2d-visual-layer/map2d-visual-layer.module.ts +18 -0
- package/src/lib/planimetric-map2d/planimetric-map2d.component.html +11 -0
- package/src/lib/planimetric-map2d/planimetric-map2d.component.less +9 -0
- package/src/lib/planimetric-map2d/planimetric-map2d.component.spec.ts +25 -0
- package/src/lib/planimetric-map2d/planimetric-map2d.component.ts +690 -0
- package/src/lib/planimetric-map2d/planimetric-map2d.module.ts +29 -0
- package/src/lib/planimetric-map3d/map3d-line-layer/map3d-line-layer.component.html +0 -0
- package/src/lib/planimetric-map3d/map3d-line-layer/map3d-line-layer.component.less +0 -0
- package/src/lib/planimetric-map3d/map3d-line-layer/map3d-line-layer.component.spec.ts +25 -0
- package/src/lib/planimetric-map3d/map3d-line-layer/map3d-line-layer.component.ts +123 -0
- package/src/lib/planimetric-map3d/map3d-line-layer/map3d-line-layer.module.ts +14 -0
- package/src/lib/planimetric-map3d/map3d-mark-layer/map3d-mark-layer.component.html +0 -0
- package/src/lib/planimetric-map3d/map3d-mark-layer/map3d-mark-layer.component.less +0 -0
- package/src/lib/planimetric-map3d/map3d-mark-layer/map3d-mark-layer.component.spec.ts +25 -0
- package/src/lib/planimetric-map3d/map3d-mark-layer/map3d-mark-layer.component.ts +229 -0
- package/src/lib/planimetric-map3d/map3d-mark-layer/map3d-mark-layer.module.ts +14 -0
- package/src/lib/planimetric-map3d/planimetric-map3d.component.html +2 -0
- package/src/lib/planimetric-map3d/planimetric-map3d.component.less +10 -0
- package/src/lib/planimetric-map3d/planimetric-map3d.component.spec.ts +25 -0
- package/src/lib/planimetric-map3d/planimetric-map3d.component.ts +227 -0
- package/src/lib/planimetric-map3d/planimetric-map3d.module.ts +17 -0
- package/src/lib/radar-chart/radar-chart.component.html +7 -0
- package/src/lib/radar-chart/radar-chart.component.less +8 -0
- package/src/lib/radar-chart/radar-chart.component.spec.ts +25 -0
- package/src/lib/radar-chart/radar-chart.component.ts +219 -0
- package/src/lib/radar-chart/radar-chart.module.ts +15 -0
- package/src/lib/radio/radio.component.html +18 -0
- package/src/lib/radio/radio.component.less +61 -0
- package/src/lib/radio/radio.component.spec.ts +25 -0
- package/src/lib/radio/radio.component.ts +116 -0
- package/src/lib/radio/radio.module.ts +16 -0
- package/src/lib/rate/rate.component.html +16 -0
- package/src/lib/rate/rate.component.less +39 -0
- package/src/lib/rate/rate.component.spec.ts +25 -0
- package/src/lib/rate/rate.component.ts +40 -0
- package/src/lib/rate/rate.module.ts +18 -0
- package/src/lib/scatter3d/scatter3d.component.html +1 -0
- package/src/lib/scatter3d/scatter3d.component.less +8 -0
- package/src/lib/scatter3d/scatter3d.component.spec.ts +25 -0
- package/src/lib/scatter3d/scatter3d.component.ts +129 -0
- package/src/lib/scatter3d/scatter3d.module.ts +15 -0
- package/src/lib/screen-widget.module.ts +592 -0
- package/src/lib/search/search.component.html +30 -0
- package/src/lib/search/search.component.less +30 -0
- package/src/lib/search/search.component.spec.ts +25 -0
- package/src/lib/search/search.component.ts +103 -0
- package/src/lib/search/search.module.ts +22 -0
- package/src/lib/select/select.component.html +30 -0
- package/src/lib/select/select.component.less +117 -0
- package/src/lib/select/select.component.spec.ts +25 -0
- package/src/lib/select/select.component.ts +297 -0
- package/src/lib/select/select.module.ts +18 -0
- package/src/lib/shape/shape.component.html +39 -0
- package/src/lib/shape/shape.component.less +8 -0
- package/src/lib/shape/shape.component.spec.ts +25 -0
- package/src/lib/shape/shape.component.ts +207 -0
- package/src/lib/shape/shape.module.ts +14 -0
- package/src/lib/shared/component/video-player/video-player.component.html +2 -0
- package/src/lib/shared/component/video-player/video-player.component.less +15 -0
- package/src/lib/shared/component/video-player/video-player.component.spec.ts +25 -0
- package/src/lib/shared/component/video-player/video-player.component.ts +132 -0
- package/src/lib/shared/component/video-player/video-player.module.ts +11 -0
- package/src/lib/shared/model/scale.token.ts +8 -0
- package/src/lib/shared/service/common.service.ts +28 -0
- package/src/lib/shared/service/file-url.service.ts +8 -0
- package/src/lib/shared/service/gaode-map.service.ts +37 -0
- package/src/lib/shared/service/highcharts.service.ts +29 -0
- package/src/lib/shared/service/http.service.ts +15 -0
- package/src/lib/shared/util/base.util.ts +4 -0
- package/src/lib/shared/util/echarts.util.ts +11 -0
- package/src/lib/shared/util/style.util.ts +12 -0
- package/src/lib/shuffling-list/color.pipe.ts +21 -0
- package/src/lib/shuffling-list/shuffling-list.component.html +37 -0
- package/src/lib/shuffling-list/shuffling-list.component.less +55 -0
- package/src/lib/shuffling-list/shuffling-list.component.spec.ts +25 -0
- package/src/lib/shuffling-list/shuffling-list.component.ts +534 -0
- package/src/lib/shuffling-list/shuffling-list.module.ts +17 -0
- package/src/lib/table/table.component.html +123 -0
- package/src/lib/table/table.component.less +76 -0
- package/src/lib/table/table.component.spec.ts +25 -0
- package/src/lib/table/table.component.ts +608 -0
- package/src/lib/table/table.module.ts +33 -0
- package/src/lib/tabs/tab/tab.component.html +1 -0
- package/src/lib/tabs/tab/tab.component.less +5 -0
- package/src/lib/tabs/tab/tab.component.spec.ts +25 -0
- package/src/lib/tabs/tab/tab.component.ts +18 -0
- package/src/lib/tabs/tabs.component.html +13 -0
- package/src/lib/tabs/tabs.component.less +40 -0
- package/src/lib/tabs/tabs.component.spec.ts +25 -0
- package/src/lib/tabs/tabs.component.ts +68 -0
- package/src/lib/tabs/tabs.module.ts +17 -0
- package/src/lib/temporary-data/temporary-data.component.html +1 -0
- package/src/lib/temporary-data/temporary-data.component.less +4 -0
- package/src/lib/temporary-data/temporary-data.component.spec.ts +25 -0
- package/src/lib/temporary-data/temporary-data.component.ts +46 -0
- package/src/lib/temporary-data/temporary-data.module.ts +15 -0
- package/src/lib/text/text.component.css +0 -0
- package/src/lib/text/text.component.html +3 -0
- package/src/lib/text/text.component.spec.ts +25 -0
- package/src/lib/text/text.component.ts +22 -0
- package/src/lib/text/text.module.ts +14 -0
- package/src/lib/time-picker/time-picker.component.html +1 -0
- package/src/lib/time-picker/time-picker.component.less +14 -0
- package/src/lib/time-picker/time-picker.component.spec.ts +25 -0
- package/src/lib/time-picker/time-picker.component.ts +86 -0
- package/src/lib/time-picker/time-picker.module.ts +19 -0
- package/src/lib/timer/timer.component.html +7 -0
- package/src/lib/timer/timer.component.less +24 -0
- package/src/lib/timer/timer.component.spec.ts +25 -0
- package/src/lib/timer/timer.component.ts +74 -0
- package/src/lib/timer/timer.module.ts +15 -0
- package/src/lib/tree-control/tree-control.component.html +97 -0
- package/src/lib/tree-control/tree-control.component.less +111 -0
- package/src/lib/tree-control/tree-control.component.spec.ts +25 -0
- package/src/lib/tree-control/tree-control.component.ts +363 -0
- package/src/lib/tree-control/tree-control.module.ts +18 -0
- package/src/lib/tree-ring-chart/tree-ring-chart.component.html +7 -0
- package/src/lib/tree-ring-chart/tree-ring-chart.component.less +8 -0
- package/src/lib/tree-ring-chart/tree-ring-chart.component.spec.ts +25 -0
- package/src/lib/tree-ring-chart/tree-ring-chart.component.ts +192 -0
- package/src/lib/tree-ring-chart/tree-ring-chart.module.ts +15 -0
- package/src/lib/upload/upload.component.html +32 -0
- package/src/lib/upload/upload.component.less +14 -0
- package/src/lib/upload/upload.component.spec.ts +25 -0
- package/src/lib/upload/upload.component.ts +109 -0
- package/src/lib/upload/upload.module.ts +19 -0
- package/src/lib/video-grid/video-grid.component.html +33 -0
- package/src/lib/video-grid/video-grid.component.less +68 -0
- package/src/lib/video-grid/video-grid.component.spec.ts +25 -0
- package/src/lib/video-grid/video-grid.component.ts +115 -0
- package/src/lib/video-grid/video-grid.module.ts +17 -0
- package/src/lib/visual-map-chart/visual-map-chart.component.html +8 -0
- package/src/lib/visual-map-chart/visual-map-chart.component.less +21 -0
- package/src/lib/visual-map-chart/visual-map-chart.component.spec.ts +25 -0
- package/src/lib/visual-map-chart/visual-map-chart.component.ts +365 -0
- package/src/lib/visual-map-chart/visual-map-chart.module.ts +18 -0
- package/src/lib/vote/vote.component.html +6 -0
- package/src/lib/vote/vote.component.less +41 -0
- package/src/lib/vote/vote.component.spec.ts +25 -0
- package/src/lib/vote/vote.component.ts +71 -0
- package/src/lib/vote/vote.module.ts +16 -0
- package/src/lib/weather/weather.component.html +27 -0
- package/src/lib/weather/weather.component.less +67 -0
- package/src/lib/weather/weather.component.spec.ts +25 -0
- package/src/lib/weather/weather.component.ts +78 -0
- package/src/lib/weather/weather.module.ts +16 -0
- package/src/lib/wordart/wordart.component.html +2 -0
- package/src/lib/wordart/wordart.component.less +12 -0
- package/src/lib/wordart/wordart.component.spec.ts +25 -0
- package/src/lib/wordart/wordart.component.ts +56 -0
- package/src/lib/wordart/wordart.module.ts +14 -0
- package/src/lib/workbench-widget.module.ts +675 -0
- package/{public-api.d.ts → src/public-api.ts} +46 -35
- package/src/test.ts +22 -0
- package/tsconfig.lib.json +37 -0
- package/tsconfig.lib.prod.json +9 -0
- package/tsconfig.spec.json +17 -0
- package/tslint.json +17 -0
- package/bbj-screen-widget.d.ts +0 -119
- package/bbj-screen-widget.metadata.json +0 -1
- package/bundles/bbj-screen-widget-core.umd.js +0 -606
- package/bundles/bbj-screen-widget-core.umd.js.map +0 -1
- package/bundles/bbj-screen-widget-core.umd.min.js +0 -2
- package/bundles/bbj-screen-widget-core.umd.min.js.map +0 -1
- package/bundles/bbj-screen-widget.umd.js +0 -21720
- package/bundles/bbj-screen-widget.umd.js.map +0 -1
- package/bundles/bbj-screen-widget.umd.min.js +0 -2
- package/bundles/bbj-screen-widget.umd.min.js.map +0 -1
- package/core/bbj-screen-widget-core.d.ts +0 -4
- package/core/bbj-screen-widget-core.metadata.json +0 -1
- package/core/service/baidu-map.service.d.ts +0 -16
- package/esm2015/bbj-screen-widget.js +0 -120
- package/esm2015/core/bbj-screen-widget-core.js +0 -5
- package/esm2015/core/public_api.js +0 -2
- package/esm2015/core/service/baidu-map.service.js +0 -101
- package/esm2015/lib/announcement/announcement.component.js +0 -80
- package/esm2015/lib/announcement/announcement.module.js +0 -25
- package/esm2015/lib/audio/audio.component.js +0 -167
- package/esm2015/lib/audio/audio.module.js +0 -20
- package/esm2015/lib/background/background.component.js +0 -52
- package/esm2015/lib/background/background.module.js +0 -19
- package/esm2015/lib/bar-chart-three-d/bar-chart-three-d.component.js +0 -323
- package/esm2015/lib/bar-chart-three-d/bar-chart-three-d.module.js +0 -20
- package/esm2015/lib/basic-bar-chart/basic-bar-chart.component.js +0 -604
- package/esm2015/lib/basic-bar-chart/basic-bar-chart.module.js +0 -27
- package/esm2015/lib/basic-line-chart/basic-line-chart.component.js +0 -782
- package/esm2015/lib/basic-line-chart/basic-line-chart.module.js +0 -20
- package/esm2015/lib/basic-pie-chart/basic-pie-chart.component.js +0 -471
- package/esm2015/lib/basic-pie-chart/basic-pie-chart.module.js +0 -20
- package/esm2015/lib/basic-planimetric-map/basic-planimetric-map.component.js +0 -233
- package/esm2015/lib/basic-planimetric-map/basic-planimetric-map.module.js +0 -21
- package/esm2015/lib/breathing-bubble-layer/breathing-bubble-layer.component.js +0 -503
- package/esm2015/lib/breathing-bubble-layer/breathing-bubble-layer.module.js +0 -19
- package/esm2015/lib/bubble-chart/bubble-chart.component.js +0 -348
- package/esm2015/lib/bubble-chart/bubble-chart.module.js +0 -20
- package/esm2015/lib/bulletin-board/bulletin-board.component.js +0 -160
- package/esm2015/lib/bulletin-board/bulletin-board.module.js +0 -23
- package/esm2015/lib/button/button.component.js +0 -186
- package/esm2015/lib/button/button.module.js +0 -21
- package/esm2015/lib/calendar/background-events/background-events.component.js +0 -65
- package/esm2015/lib/calendar/calendar-events-child.js +0 -28
- package/esm2015/lib/calendar/calendar.component.js +0 -168
- package/esm2015/lib/calendar/calendar.module.js +0 -32
- package/esm2015/lib/calendar/calendar.util.js +0 -12
- package/esm2015/lib/calendar/events/events.component.js +0 -75
- package/esm2015/lib/checkbox/checkbox.component.js +0 -333
- package/esm2015/lib/checkbox/checkbox.module.js +0 -21
- package/esm2015/lib/cross-table/cross-table.component.js +0 -291
- package/esm2015/lib/cross-table/cross-table.module.js +0 -20
- package/esm2015/lib/custom-baidu-map/baidu-marker-layer/baidu-marker-layer.component.js +0 -732
- package/esm2015/lib/custom-baidu-map/baidu-polyline-layer/baidu-polyline-layer.component.js +0 -278
- package/esm2015/lib/custom-baidu-map/base-layer.js +0 -53
- package/esm2015/lib/custom-baidu-map/custom-baidu-map.component.js +0 -675
- package/esm2015/lib/custom-baidu-map/custom-baidu-map.module.js +0 -46
- package/esm2015/lib/custom-baidu-map/typhoon-area-layer/typhoon-area-layer.component.js +0 -116
- package/esm2015/lib/custom-baidu-map/wind-layer/wind-layer.component.js +0 -331
- package/esm2015/lib/date-picker/date-picker.component.js +0 -447
- package/esm2015/lib/date-picker/date-picker.module.js +0 -22
- package/esm2015/lib/funnel-chart/funnel-chart.component.js +0 -241
- package/esm2015/lib/funnel-chart/funnel-chart.module.js +0 -20
- package/esm2015/lib/gantt/gantt.component.js +0 -222
- package/esm2015/lib/gantt/gantt.module.js +0 -39
- package/esm2015/lib/gauge/gauge.component.js +0 -324
- package/esm2015/lib/gauge/gauge.module.js +0 -20
- package/esm2015/lib/gauge-progress/gauge-progress.component.js +0 -356
- package/esm2015/lib/gauge-progress/gauge.module.js +0 -22
- package/esm2015/lib/general-text/general-text.component.js +0 -144
- package/esm2015/lib/general-text/general-text.module.js +0 -20
- package/esm2015/lib/iconfont/icon.js +0 -199
- package/esm2015/lib/iconfont/iconfont.component.js +0 -56
- package/esm2015/lib/iconfont/iconfont.module.js +0 -20
- package/esm2015/lib/iframe/iframe.component.js +0 -46
- package/esm2015/lib/iframe/iframe.module.js +0 -20
- package/esm2015/lib/image/image.component.js +0 -98
- package/esm2015/lib/image/image.module.js +0 -19
- package/esm2015/lib/item-swiper/item-swiper.component.js +0 -343
- package/esm2015/lib/item-swiper/item-swiper.module.js +0 -22
- package/esm2015/lib/line-bar-chart/line-bar-chart.component.js +0 -398
- package/esm2015/lib/line-bar-chart/line-bar-chart.module.js +0 -20
- package/esm2015/lib/line-light-flow/line-light-flow.component.js +0 -241
- package/esm2015/lib/line-light-flow/line-light-flow.module.js +0 -24
- package/esm2015/lib/liquid-fill/liquid-fill.component.js +0 -158
- package/esm2015/lib/liquid-fill/liquid-fill.module.js +0 -20
- package/esm2015/lib/marquee/marquee.component.js +0 -110
- package/esm2015/lib/marquee/marquee.module.js +0 -19
- package/esm2015/lib/mip-anim/mip-anim.component.js +0 -26
- package/esm2015/lib/mip-anim/mip-anim.module.js +0 -19
- package/esm2015/lib/multi-title-gauge/multi-title-gauge.component.js +0 -277
- package/esm2015/lib/multi-title-gauge/multi-title-gauge.module.js +0 -22
- package/esm2015/lib/number-flop/number-flop.component.js +0 -124
- package/esm2015/lib/number-flop/number-flop.module.js +0 -19
- package/esm2015/lib/parent-container/parent-container.component.js +0 -21
- package/esm2015/lib/parent-container/parent-container.module.js +0 -19
- package/esm2015/lib/percent-pie-chart/percent-pie-chart.component.js +0 -248
- package/esm2015/lib/percent-pie-chart/percent-pie-chart.module.js +0 -20
- package/esm2015/lib/pie3d-chart/pie3d-chart.component.js +0 -303
- package/esm2015/lib/pie3d-chart/pie3d-chart.module.js +0 -19
- package/esm2015/lib/planimetric-map2d/fly-line-layer/fly-line-layer.component.js +0 -431
- package/esm2015/lib/planimetric-map2d/fly-line-layer/fly-line-layer.module.js +0 -19
- package/esm2015/lib/planimetric-map2d/map2d-mark-layer/map2d-mark-layer.component.js +0 -252
- package/esm2015/lib/planimetric-map2d/map2d-mark-layer/map2d-mark-layer.module.js +0 -19
- package/esm2015/lib/planimetric-map2d/map2d-polyline-layer/map2d-polyline-layer.component.js +0 -124
- package/esm2015/lib/planimetric-map2d/map2d-polyline-layer/map2d-polyline-layer.module.js +0 -19
- package/esm2015/lib/planimetric-map2d/map2d-visual-layer/map2d-visual-layer.component.js +0 -359
- package/esm2015/lib/planimetric-map2d/map2d-visual-layer/map2d-visual-layer.module.js +0 -21
- package/esm2015/lib/planimetric-map2d/planimetric-map2d.component.js +0 -753
- package/esm2015/lib/planimetric-map2d/planimetric-map2d.module.js +0 -34
- package/esm2015/lib/planimetric-map3d/map3d-line-layer/map3d-line-layer.component.js +0 -128
- package/esm2015/lib/planimetric-map3d/map3d-line-layer/map3d-line-layer.module.js +0 -19
- package/esm2015/lib/planimetric-map3d/map3d-mark-layer/map3d-mark-layer.component.js +0 -242
- package/esm2015/lib/planimetric-map3d/map3d-mark-layer/map3d-mark-layer.module.js +0 -19
- package/esm2015/lib/planimetric-map3d/planimetric-map3d.component.js +0 -265
- package/esm2015/lib/planimetric-map3d/planimetric-map3d.module.js +0 -22
- package/esm2015/lib/radar-chart/radar-chart.component.js +0 -255
- package/esm2015/lib/radar-chart/radar-chart.module.js +0 -20
- package/esm2015/lib/radio/radio.component.js +0 -148
- package/esm2015/lib/radio/radio.module.js +0 -21
- package/esm2015/lib/rate/rate.component.js +0 -57
- package/esm2015/lib/rate/rate.module.js +0 -23
- package/esm2015/lib/scatter3d/scatter3d.component.js +0 -166
- package/esm2015/lib/scatter3d/scatter3d.module.js +0 -20
- package/esm2015/lib/screen-widget.module.js +0 -536
- package/esm2015/lib/search/search.component.js +0 -130
- package/esm2015/lib/search/search.module.js +0 -29
- package/esm2015/lib/select/select.component.js +0 -359
- package/esm2015/lib/select/select.module.js +0 -22
- package/esm2015/lib/shape/shape.component.js +0 -248
- package/esm2015/lib/shape/shape.module.js +0 -19
- package/esm2015/lib/shared/component/video-player/video-player.component.js +0 -114
- package/esm2015/lib/shared/component/video-player/video-player.module.js +0 -14
- package/esm2015/lib/shared/service/common.service.js +0 -39
- package/esm2015/lib/shared/service/file-url.service.js +0 -12
- package/esm2015/lib/shared/service/gaode-map.service.js +0 -36
- package/esm2015/lib/shared/service/highcharts.service.js +0 -36
- package/esm2015/lib/shared/service/http.service.js +0 -20
- package/esm2015/lib/shared/util/base.util.js +0 -5
- package/esm2015/lib/shared/util/echarts.util.js +0 -12
- package/esm2015/lib/shared/util/style.util.js +0 -19
- package/esm2015/lib/shuffling-list/color.pipe.js +0 -23
- package/esm2015/lib/shuffling-list/shuffling-list.component.js +0 -601
- package/esm2015/lib/shuffling-list/shuffling-list.module.js +0 -22
- package/esm2015/lib/table/table.component.js +0 -657
- package/esm2015/lib/table/table.module.js +0 -38
- package/esm2015/lib/tabs/tab/tab.component.js +0 -27
- package/esm2015/lib/tabs/tabs.component.js +0 -85
- package/esm2015/lib/tabs/tabs.module.js +0 -22
- package/esm2015/lib/temporary-data/temporary-data.component.js +0 -49
- package/esm2015/lib/temporary-data/temporary-data.module.js +0 -20
- package/esm2015/lib/time-picker/time-picker.component.js +0 -112
- package/esm2015/lib/time-picker/time-picker.module.js +0 -21
- package/esm2015/lib/timer/timer.component.js +0 -108
- package/esm2015/lib/timer/timer.module.js +0 -20
- package/esm2015/lib/tree-control/tree-control.component.js +0 -435
- package/esm2015/lib/tree-control/tree-control.module.js +0 -24
- package/esm2015/lib/tree-ring-chart/tree-ring-chart.component.js +0 -215
- package/esm2015/lib/tree-ring-chart/tree-ring-chart.module.js +0 -20
- package/esm2015/lib/upload/upload.component.js +0 -127
- package/esm2015/lib/upload/upload.module.js +0 -22
- package/esm2015/lib/video-grid/video-grid.component.js +0 -140
- package/esm2015/lib/video-grid/video-grid.module.js +0 -22
- package/esm2015/lib/visual-map-chart/visual-map-chart.component.js +0 -395
- package/esm2015/lib/visual-map-chart/visual-map-chart.module.js +0 -20
- package/esm2015/lib/vote/vote.component.js +0 -100
- package/esm2015/lib/vote/vote.module.js +0 -21
- package/esm2015/lib/weather/weather.component.js +0 -92
- package/esm2015/lib/weather/weather.module.js +0 -21
- package/esm2015/lib/wordart/wordart.component.js +0 -84
- package/esm2015/lib/wordart/wordart.module.js +0 -19
- package/esm2015/lib/workbench-widget.module.js +0 -620
- package/esm2015/public-api.js +0 -40
- package/fesm2015/bbj-screen-widget-core.js +0 -107
- package/fesm2015/bbj-screen-widget-core.js.map +0 -1
- package/fesm2015/bbj-screen-widget.js +0 -20618
- package/fesm2015/bbj-screen-widget.js.map +0 -1
- package/lib/announcement/announcement.component.d.ts +0 -13
- package/lib/announcement/announcement.module.d.ts +0 -5
- package/lib/audio/audio.component.d.ts +0 -22
- package/lib/audio/audio.module.d.ts +0 -4
- package/lib/background/background.component.d.ts +0 -12
- package/lib/background/background.module.d.ts +0 -4
- package/lib/bar-chart-three-d/bar-chart-three-d.component.d.ts +0 -30
- package/lib/bar-chart-three-d/bar-chart-three-d.module.d.ts +0 -4
- package/lib/basic-bar-chart/basic-bar-chart.component.d.ts +0 -105
- package/lib/basic-bar-chart/basic-bar-chart.module.d.ts +0 -5
- package/lib/basic-line-chart/basic-line-chart.component.d.ts +0 -102
- package/lib/basic-line-chart/basic-line-chart.module.d.ts +0 -4
- package/lib/basic-pie-chart/basic-pie-chart.component.d.ts +0 -56
- package/lib/basic-pie-chart/basic-pie-chart.module.d.ts +0 -4
- package/lib/basic-planimetric-map/basic-planimetric-map.component.d.ts +0 -18
- package/lib/basic-planimetric-map/basic-planimetric-map.module.d.ts +0 -4
- package/lib/breathing-bubble-layer/breathing-bubble-layer.component.d.ts +0 -210
- package/lib/breathing-bubble-layer/breathing-bubble-layer.module.d.ts +0 -4
- package/lib/bubble-chart/bubble-chart.component.d.ts +0 -75
- package/lib/bubble-chart/bubble-chart.module.d.ts +0 -4
- package/lib/bulletin-board/bulletin-board.component.d.ts +0 -25
- package/lib/bulletin-board/bulletin-board.module.d.ts +0 -4
- package/lib/button/button.component.d.ts +0 -25
- package/lib/button/button.module.d.ts +0 -4
- package/lib/calendar/background-events/background-events.component.d.ts +0 -10
- package/lib/calendar/calendar-events-child.d.ts +0 -12
- package/lib/calendar/calendar.component.d.ts +0 -27
- package/lib/calendar/calendar.module.d.ts +0 -4
- package/lib/calendar/calendar.util.d.ts +0 -6
- package/lib/calendar/events/events.component.d.ts +0 -13
- package/lib/checkbox/checkbox.component.d.ts +0 -45
- package/lib/checkbox/checkbox.module.d.ts +0 -4
- package/lib/cross-table/cross-table.component.d.ts +0 -30
- package/lib/cross-table/cross-table.module.d.ts +0 -4
- package/lib/custom-baidu-map/baidu-marker-layer/baidu-marker-layer.component.d.ts +0 -70
- package/lib/custom-baidu-map/baidu-polyline-layer/baidu-polyline-layer.component.d.ts +0 -23
- package/lib/custom-baidu-map/base-layer.d.ts +0 -16
- package/lib/custom-baidu-map/custom-baidu-map.component.d.ts +0 -93
- package/lib/custom-baidu-map/custom-baidu-map.module.d.ts +0 -4
- package/lib/custom-baidu-map/typhoon-area-layer/typhoon-area-layer.component.d.ts +0 -16
- package/lib/custom-baidu-map/wind-layer/wind-layer.component.d.ts +0 -28
- package/lib/date-picker/date-picker.component.d.ts +0 -63
- package/lib/date-picker/date-picker.module.d.ts +0 -4
- package/lib/funnel-chart/funnel-chart.component.d.ts +0 -24
- package/lib/funnel-chart/funnel-chart.module.d.ts +0 -4
- package/lib/gantt/gantt.component.d.ts +0 -25
- package/lib/gantt/gantt.module.d.ts +0 -4
- package/lib/gauge/gauge.component.d.ts +0 -37
- package/lib/gauge/gauge.module.d.ts +0 -4
- package/lib/gauge-progress/gauge-progress.component.d.ts +0 -46
- package/lib/gauge-progress/gauge.module.d.ts +0 -5
- package/lib/general-text/general-text.component.d.ts +0 -21
- package/lib/general-text/general-text.module.d.ts +0 -4
- package/lib/iconfont/icon.d.ts +0 -1
- package/lib/iconfont/iconfont.component.d.ts +0 -11
- package/lib/iconfont/iconfont.module.d.ts +0 -4
- package/lib/iframe/iframe.component.d.ts +0 -10
- package/lib/iframe/iframe.module.d.ts +0 -4
- package/lib/image/image.component.d.ts +0 -21
- package/lib/image/image.module.d.ts +0 -4
- package/lib/item-swiper/item-swiper.component.d.ts +0 -41
- package/lib/item-swiper/item-swiper.module.d.ts +0 -5
- package/lib/line-bar-chart/line-bar-chart.component.d.ts +0 -63
- package/lib/line-bar-chart/line-bar-chart.module.d.ts +0 -4
- package/lib/line-light-flow/line-light-flow.component.d.ts +0 -26
- package/lib/line-light-flow/line-light-flow.module.d.ts +0 -4
- package/lib/liquid-fill/liquid-fill.component.d.ts +0 -18
- package/lib/liquid-fill/liquid-fill.module.d.ts +0 -4
- package/lib/marquee/marquee.component.d.ts +0 -20
- package/lib/marquee/marquee.module.d.ts +0 -4
- package/lib/mip-anim/mip-anim.component.d.ts +0 -6
- package/lib/mip-anim/mip-anim.module.d.ts +0 -4
- package/lib/multi-title-gauge/multi-title-gauge.component.d.ts +0 -26
- package/lib/multi-title-gauge/multi-title-gauge.module.d.ts +0 -4
- package/lib/number-flop/number-flop.component.d.ts +0 -22
- package/lib/number-flop/number-flop.module.d.ts +0 -4
- package/lib/parent-container/parent-container.component.d.ts +0 -9
- package/lib/parent-container/parent-container.module.d.ts +0 -4
- package/lib/percent-pie-chart/percent-pie-chart.component.d.ts +0 -24
- package/lib/percent-pie-chart/percent-pie-chart.module.d.ts +0 -4
- package/lib/pie3d-chart/pie3d-chart.component.d.ts +0 -30
- package/lib/pie3d-chart/pie3d-chart.module.d.ts +0 -4
- package/lib/planimetric-map2d/fly-line-layer/fly-line-layer.component.d.ts +0 -206
- package/lib/planimetric-map2d/fly-line-layer/fly-line-layer.module.d.ts +0 -4
- package/lib/planimetric-map2d/map2d-mark-layer/map2d-mark-layer.component.d.ts +0 -15
- package/lib/planimetric-map2d/map2d-mark-layer/map2d-mark-layer.module.d.ts +0 -4
- package/lib/planimetric-map2d/map2d-polyline-layer/map2d-polyline-layer.component.d.ts +0 -15
- package/lib/planimetric-map2d/map2d-polyline-layer/map2d-polyline-layer.module.d.ts +0 -4
- package/lib/planimetric-map2d/map2d-visual-layer/map2d-visual-layer.component.d.ts +0 -49
- package/lib/planimetric-map2d/map2d-visual-layer/map2d-visual-layer.module.d.ts +0 -4
- package/lib/planimetric-map2d/planimetric-map2d.component.d.ts +0 -49
- package/lib/planimetric-map2d/planimetric-map2d.module.d.ts +0 -4
- package/lib/planimetric-map3d/map3d-line-layer/map3d-line-layer.component.d.ts +0 -14
- package/lib/planimetric-map3d/map3d-line-layer/map3d-line-layer.module.d.ts +0 -4
- package/lib/planimetric-map3d/map3d-mark-layer/map3d-mark-layer.component.d.ts +0 -41
- package/lib/planimetric-map3d/map3d-mark-layer/map3d-mark-layer.module.d.ts +0 -4
- package/lib/planimetric-map3d/planimetric-map3d.component.d.ts +0 -29
- package/lib/planimetric-map3d/planimetric-map3d.module.d.ts +0 -4
- package/lib/radar-chart/radar-chart.component.d.ts +0 -24
- package/lib/radar-chart/radar-chart.module.d.ts +0 -4
- package/lib/radio/radio.component.d.ts +0 -21
- package/lib/radio/radio.module.d.ts +0 -4
- package/lib/rate/rate.component.d.ts +0 -13
- package/lib/rate/rate.module.d.ts +0 -4
- package/lib/scatter3d/scatter3d.component.d.ts +0 -25
- package/lib/scatter3d/scatter3d.module.d.ts +0 -4
- package/lib/screen-widget.module.d.ts +0 -4
- package/lib/search/search.component.d.ts +0 -21
- package/lib/search/search.module.d.ts +0 -6
- package/lib/select/select.component.d.ts +0 -37
- package/lib/select/select.module.d.ts +0 -4
- package/lib/shape/shape.component.d.ts +0 -50
- package/lib/shape/shape.module.d.ts +0 -4
- package/lib/shared/component/video-player/video-player.component.d.ts +0 -28
- package/lib/shared/component/video-player/video-player.module.d.ts +0 -2
- package/lib/shared/service/common.service.d.ts +0 -21
- package/lib/shared/service/file-url.service.d.ts +0 -3
- package/lib/shared/service/gaode-map.service.d.ts +0 -10
- package/lib/shared/service/highcharts.service.d.ts +0 -9
- package/lib/shared/service/http.service.d.ts +0 -7
- package/lib/shared/util/base.util.d.ts +0 -1
- package/lib/shared/util/echarts.util.d.ts +0 -1
- package/lib/shared/util/style.util.d.ts +0 -1
- package/lib/shuffling-list/color.pipe.d.ts +0 -4
- package/lib/shuffling-list/shuffling-list.component.d.ts +0 -76
- package/lib/shuffling-list/shuffling-list.module.d.ts +0 -4
- package/lib/table/table.component.d.ts +0 -65
- package/lib/table/table.module.d.ts +0 -4
- package/lib/tabs/tab/tab.component.d.ts +0 -7
- package/lib/tabs/tabs.component.d.ts +0 -13
- package/lib/tabs/tabs.module.d.ts +0 -4
- package/lib/temporary-data/temporary-data.component.d.ts +0 -13
- package/lib/temporary-data/temporary-data.module.d.ts +0 -4
- package/lib/time-picker/time-picker.component.d.ts +0 -17
- package/lib/time-picker/time-picker.module.d.ts +0 -4
- package/lib/timer/timer.component.d.ts +0 -21
- package/lib/timer/timer.module.d.ts +0 -4
- package/lib/tree-control/tree-control.component.d.ts +0 -62
- package/lib/tree-control/tree-control.module.d.ts +0 -4
- package/lib/tree-ring-chart/tree-ring-chart.component.d.ts +0 -24
- package/lib/tree-ring-chart/tree-ring-chart.module.d.ts +0 -4
- package/lib/upload/upload.component.d.ts +0 -21
- package/lib/upload/upload.module.d.ts +0 -4
- package/lib/video-grid/video-grid.component.d.ts +0 -23
- package/lib/video-grid/video-grid.module.d.ts +0 -4
- package/lib/visual-map-chart/visual-map-chart.component.d.ts +0 -49
- package/lib/visual-map-chart/visual-map-chart.module.d.ts +0 -4
- package/lib/vote/vote.component.d.ts +0 -15
- package/lib/vote/vote.module.d.ts +0 -4
- package/lib/weather/weather.component.d.ts +0 -26
- package/lib/weather/weather.module.d.ts +0 -4
- package/lib/wordart/wordart.component.d.ts +0 -14
- package/lib/wordart/wordart.module.d.ts +0 -4
- package/lib/workbench-widget.module.d.ts +0 -4
- /package/core/{public_api.d.ts → src/public_api.ts} +0 -0
|
@@ -1,657 +0,0 @@
|
|
|
1
|
-
import { __decorate, __metadata } from "tslib";
|
|
2
|
-
import { Component, ElementRef, EventEmitter } from '@angular/core';
|
|
3
|
-
import { Widget, Property, Data, DataSchema, DataOutput, Event } from 'bbj-widget-base';
|
|
4
|
-
import { isNum } from '@delon/util';
|
|
5
|
-
const ɵ0 = { type: 'object', title: '行数据' };
|
|
6
|
-
let TableComponent = class TableComponent {
|
|
7
|
-
constructor(ele) {
|
|
8
|
-
this.ele = ele;
|
|
9
|
-
this.pageSize = 10;
|
|
10
|
-
this.theadBackground = '#fafafa';
|
|
11
|
-
this.headFont = { family: '', color: '#222222', weight: 'normal', size: 12, space: 0, lineHeight: 2 };
|
|
12
|
-
this.contentAlign = 'center';
|
|
13
|
-
this.tbodyBackground = '#FFFFFF';
|
|
14
|
-
this.font = { family: '', color: '#222222', weight: 'normal', size: 12, space: 0, lineHeight: 2 };
|
|
15
|
-
this.isCustom = false;
|
|
16
|
-
this.showBorder = false;
|
|
17
|
-
this.needPage = false;
|
|
18
|
-
this.isCount = false;
|
|
19
|
-
this.level = [];
|
|
20
|
-
// @Property('字段交叉', {
|
|
21
|
-
// type: 'array',
|
|
22
|
-
// maxItems: 1,
|
|
23
|
-
// items: {
|
|
24
|
-
// type: 'object',
|
|
25
|
-
// properties: {
|
|
26
|
-
// key: {
|
|
27
|
-
// type: 'string',
|
|
28
|
-
// title: '绑定字段',
|
|
29
|
-
// },
|
|
30
|
-
// value: {
|
|
31
|
-
// type: 'string',
|
|
32
|
-
// title: '绑定值',
|
|
33
|
-
// },
|
|
34
|
-
// mergeField: {
|
|
35
|
-
// type: 'string',
|
|
36
|
-
// title: '合并字段',
|
|
37
|
-
// }
|
|
38
|
-
// },
|
|
39
|
-
// required: [],
|
|
40
|
-
// },
|
|
41
|
-
// ui: {grid: {arraySpan: 24}, spanControl: 24} as SFArrayWidgetSchema,
|
|
42
|
-
// })
|
|
43
|
-
// cross = [];
|
|
44
|
-
this.customCol = [];
|
|
45
|
-
// hasGroup = false;
|
|
46
|
-
this.isCross = false;
|
|
47
|
-
this._data = [
|
|
48
|
-
{ x: '一月', y: '10%', s: '收入' },
|
|
49
|
-
{ x: '二月', y: 20, s: '收入' },
|
|
50
|
-
{ x: '三月', y: 25, s: '收入' },
|
|
51
|
-
{ x: '四月', y: 35, s: '收入' },
|
|
52
|
-
{ x: '五月', y: 27, s: '收入' },
|
|
53
|
-
{ x: '六月', y: 28, s: '收入' },
|
|
54
|
-
{ x: '一月', y: 18, s: '支出' },
|
|
55
|
-
{ x: '二月', y: 28, s: '支出' },
|
|
56
|
-
{ x: '三月', y: 32, s: '支出' },
|
|
57
|
-
{ x: '四月', y: 48, s: '支出' },
|
|
58
|
-
{ x: '五月', y: 20, s: '支出' },
|
|
59
|
-
{ x: '六月', y: 17, s: '支出' },
|
|
60
|
-
];
|
|
61
|
-
this.tdChange = new EventEmitter();
|
|
62
|
-
this.trChange = new EventEmitter();
|
|
63
|
-
this.rowChange = new EventEmitter();
|
|
64
|
-
this.tdClick = new EventEmitter();
|
|
65
|
-
// y: string;
|
|
66
|
-
this.headStyle = {};
|
|
67
|
-
this.bodyStyle = {};
|
|
68
|
-
// rowSize = 1;
|
|
69
|
-
this.widthConfig = [];
|
|
70
|
-
this.rows = [];
|
|
71
|
-
this.totalCount = [];
|
|
72
|
-
this.needCount = false;
|
|
73
|
-
this.searchValue = {};
|
|
74
|
-
this.headers = [];
|
|
75
|
-
this.filterValues = {};
|
|
76
|
-
this.sumData = {};
|
|
77
|
-
}
|
|
78
|
-
ngOnChanges(changes) {
|
|
79
|
-
if (changes.schema || changes.customCol) {
|
|
80
|
-
this.updateHeader();
|
|
81
|
-
this.updateData();
|
|
82
|
-
}
|
|
83
|
-
else if (changes._data) {
|
|
84
|
-
if (!this.schema) {
|
|
85
|
-
this.updateHeader();
|
|
86
|
-
}
|
|
87
|
-
this.updateData();
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
ngOnInit() {
|
|
91
|
-
// if (this.ele) {
|
|
92
|
-
// const height = this.ele.nativeElement.offsetHeight - 110;
|
|
93
|
-
// this.y = height > 0 ? height + 'px' : '0px';
|
|
94
|
-
// }
|
|
95
|
-
// console.log(this.groupBy(this._data,'x'));
|
|
96
|
-
// console.log(this.countGroupRow);
|
|
97
|
-
this.headStyle = {
|
|
98
|
-
family: this.headFont.family,
|
|
99
|
-
color: this.headFont.color,
|
|
100
|
-
weight: this.headFont.weight,
|
|
101
|
-
fontSize: this.headFont.size + 'px',
|
|
102
|
-
space: this.headFont.space,
|
|
103
|
-
lineHeight: this.headFont.lineHeight,
|
|
104
|
-
background: this.theadBackground,
|
|
105
|
-
};
|
|
106
|
-
this.bodyStyle = {
|
|
107
|
-
family: this.font.family,
|
|
108
|
-
color: this.font.color,
|
|
109
|
-
weight: this.font.weight,
|
|
110
|
-
fontSize: this.font.size + 'px',
|
|
111
|
-
space: this.font.space,
|
|
112
|
-
lineHeight: this.font.lineHeight,
|
|
113
|
-
};
|
|
114
|
-
}
|
|
115
|
-
updateHeader() {
|
|
116
|
-
this.columns = [];
|
|
117
|
-
this.widthConfig = [];
|
|
118
|
-
if (this.isCustom && this.customCol[0]) {
|
|
119
|
-
const hasGroup = this.customCol.some((data) => data.group != null && data.group !== '');
|
|
120
|
-
this.groups = [];
|
|
121
|
-
const subHeader = [];
|
|
122
|
-
const groupMap = {};
|
|
123
|
-
this.customCol.forEach((data) => {
|
|
124
|
-
const grouped = !!data.group;
|
|
125
|
-
const groupName = data.group || data.title;
|
|
126
|
-
this.widthConfig.push((data.width || 100) + 'px');
|
|
127
|
-
const column = {
|
|
128
|
-
title: data.title,
|
|
129
|
-
index: data.field,
|
|
130
|
-
ismerge: data.ismerge,
|
|
131
|
-
iscount: data.iscount,
|
|
132
|
-
needlevel: data.needlevel,
|
|
133
|
-
showFilter: data.showFilter,
|
|
134
|
-
};
|
|
135
|
-
let group = groupMap[groupName];
|
|
136
|
-
if (group == null) {
|
|
137
|
-
group = { title: groupName, row: 1, col: 0, columns: [] };
|
|
138
|
-
groupMap[groupName] = group;
|
|
139
|
-
this.groups.push(group);
|
|
140
|
-
}
|
|
141
|
-
group.columns.push(column);
|
|
142
|
-
group.col++;
|
|
143
|
-
if (grouped) {
|
|
144
|
-
subHeader.push(column);
|
|
145
|
-
}
|
|
146
|
-
else {
|
|
147
|
-
group.index = data.field;
|
|
148
|
-
if (hasGroup) {
|
|
149
|
-
group.row = 2;
|
|
150
|
-
}
|
|
151
|
-
}
|
|
152
|
-
});
|
|
153
|
-
this.headers = [this.groups, subHeader];
|
|
154
|
-
}
|
|
155
|
-
else {
|
|
156
|
-
if (this.schema) {
|
|
157
|
-
Object.keys(this.schema.properties).forEach((key) => {
|
|
158
|
-
const property = this.schema.properties[key];
|
|
159
|
-
if (property) {
|
|
160
|
-
const column = { title: property.title || key, index: key, schema: property };
|
|
161
|
-
this.columns.push(column);
|
|
162
|
-
}
|
|
163
|
-
});
|
|
164
|
-
}
|
|
165
|
-
else if (this._data && this._data[0]) {
|
|
166
|
-
const data = this._data[0];
|
|
167
|
-
Object.keys(data).forEach((key) => {
|
|
168
|
-
const column = { title: key, index: key };
|
|
169
|
-
this.widthConfig.push(100 + 'px');
|
|
170
|
-
this.columns.push(column);
|
|
171
|
-
});
|
|
172
|
-
}
|
|
173
|
-
this.headers = [this.columns];
|
|
174
|
-
console.log('header', this.headers);
|
|
175
|
-
}
|
|
176
|
-
}
|
|
177
|
-
updateData() {
|
|
178
|
-
this.dataSize = this._data.length;
|
|
179
|
-
if (this._data[0]) {
|
|
180
|
-
this.titleSize = Object.keys(this._data[0]).length;
|
|
181
|
-
}
|
|
182
|
-
if (this.isCustom && this.customCol[0]) {
|
|
183
|
-
this.updateFilterOptions();
|
|
184
|
-
this.groupBy(this._data);
|
|
185
|
-
this.count();
|
|
186
|
-
}
|
|
187
|
-
if (this.sumColumns) {
|
|
188
|
-
this.sumData = {};
|
|
189
|
-
this.sumColumns.split(',').forEach((column) => {
|
|
190
|
-
let sum = this._data.reduce((p, c) => {
|
|
191
|
-
const value = c[column];
|
|
192
|
-
if (value && isNum(value)) {
|
|
193
|
-
p += +value;
|
|
194
|
-
}
|
|
195
|
-
return p;
|
|
196
|
-
}, 0);
|
|
197
|
-
this.sumData[column] = +sum.toFixed(2);
|
|
198
|
-
});
|
|
199
|
-
}
|
|
200
|
-
}
|
|
201
|
-
/**
|
|
202
|
-
* 更新筛选下拉框里的数据
|
|
203
|
-
*/
|
|
204
|
-
updateFilterOptions() {
|
|
205
|
-
if (this.groups) {
|
|
206
|
-
this.groups.forEach((group) => {
|
|
207
|
-
group.columns.forEach((column) => {
|
|
208
|
-
if (column.showFilter) {
|
|
209
|
-
const valueSet = new Set();
|
|
210
|
-
const target = group.columns.length == 1 ? group : column;
|
|
211
|
-
target.filter = [];
|
|
212
|
-
if (this._data) {
|
|
213
|
-
this._data.forEach((row) => {
|
|
214
|
-
const key = column.index;
|
|
215
|
-
const value = row[key];
|
|
216
|
-
const filterValue = this.filterValues[key];
|
|
217
|
-
const checked = filterValue && filterValue.includes(value);
|
|
218
|
-
if (checked || this.filterMatch(row, key)) {
|
|
219
|
-
if (value != null && value != '' && !valueSet.has(value)) {
|
|
220
|
-
valueSet.add(value);
|
|
221
|
-
const item = { value, checked };
|
|
222
|
-
target.filter.push(item);
|
|
223
|
-
}
|
|
224
|
-
}
|
|
225
|
-
});
|
|
226
|
-
}
|
|
227
|
-
}
|
|
228
|
-
});
|
|
229
|
-
});
|
|
230
|
-
}
|
|
231
|
-
}
|
|
232
|
-
filterMatch(record, exclude) {
|
|
233
|
-
const keys = Object.keys(this.filterValues);
|
|
234
|
-
for (const key of keys) {
|
|
235
|
-
if (key !== exclude) {
|
|
236
|
-
const filterValue = this.filterValues[key];
|
|
237
|
-
const value = record[key];
|
|
238
|
-
if ((filterValue === null || filterValue === void 0 ? void 0 : filterValue.length) && !filterValue.includes(value)) {
|
|
239
|
-
return false;
|
|
240
|
-
}
|
|
241
|
-
}
|
|
242
|
-
}
|
|
243
|
-
return true;
|
|
244
|
-
}
|
|
245
|
-
groupBy(array) {
|
|
246
|
-
this.rows = [];
|
|
247
|
-
array.forEach((record) => {
|
|
248
|
-
if (this.filterMatch(record)) {
|
|
249
|
-
const row = [];
|
|
250
|
-
for (const group of this.groups) {
|
|
251
|
-
for (const column of group.columns) {
|
|
252
|
-
const value = record[column.index];
|
|
253
|
-
// if (column.showFilter) {
|
|
254
|
-
// const filterValue = column.filterValue || group.filterValue;
|
|
255
|
-
// if (filterValue?.length && !filterValue.includes(value)) {
|
|
256
|
-
// return;
|
|
257
|
-
// }
|
|
258
|
-
// }
|
|
259
|
-
let myColor = '';
|
|
260
|
-
if (column.needlevel) {
|
|
261
|
-
myColor = this.getColor(record[column.index]);
|
|
262
|
-
}
|
|
263
|
-
if (myColor == '') {
|
|
264
|
-
myColor = this.tbodyBackground;
|
|
265
|
-
}
|
|
266
|
-
row.push({ rowspan: 1, value, index: column.index, color: myColor, data: record });
|
|
267
|
-
}
|
|
268
|
-
}
|
|
269
|
-
this.rows.push(row);
|
|
270
|
-
}
|
|
271
|
-
});
|
|
272
|
-
this.customCol.forEach((column, i) => {
|
|
273
|
-
if (column.ismerge) {
|
|
274
|
-
this.needPage = false;
|
|
275
|
-
let lastTd = null;
|
|
276
|
-
this.rows.forEach((row) => {
|
|
277
|
-
const td = row[i];
|
|
278
|
-
if (lastTd != null && lastTd.value === td.value) {
|
|
279
|
-
lastTd.rowspan++;
|
|
280
|
-
td.rowspan = 0;
|
|
281
|
-
}
|
|
282
|
-
else {
|
|
283
|
-
lastTd = td;
|
|
284
|
-
}
|
|
285
|
-
});
|
|
286
|
-
}
|
|
287
|
-
});
|
|
288
|
-
}
|
|
289
|
-
getColor(value) {
|
|
290
|
-
// value=value.toString().replace('%','');
|
|
291
|
-
const regExp = /-?\d+\.?\d*/;
|
|
292
|
-
const result = regExp.exec(value);
|
|
293
|
-
if (this.level.length > 0) {
|
|
294
|
-
for (const t of this.level) {
|
|
295
|
-
if (t.gte <= Number(result[0]) && Number(result[0]) < t.lte) {
|
|
296
|
-
return t.color;
|
|
297
|
-
}
|
|
298
|
-
}
|
|
299
|
-
}
|
|
300
|
-
return '';
|
|
301
|
-
}
|
|
302
|
-
count() {
|
|
303
|
-
const name = 'value';
|
|
304
|
-
this._data.forEach((data) => {
|
|
305
|
-
this.groups.forEach((group, i) => {
|
|
306
|
-
group.columns.forEach((column, j) => {
|
|
307
|
-
let item = {};
|
|
308
|
-
let check = false;
|
|
309
|
-
this.totalCount.forEach((ite) => {
|
|
310
|
-
if (ite.filed === column.index) {
|
|
311
|
-
item = ite;
|
|
312
|
-
check = true;
|
|
313
|
-
return;
|
|
314
|
-
}
|
|
315
|
-
});
|
|
316
|
-
if (i === 0 && j === 0 && !check) {
|
|
317
|
-
item = { filed: column.index, value: '合计' };
|
|
318
|
-
}
|
|
319
|
-
if (i !== 0 || j !== 0) {
|
|
320
|
-
if (!check) {
|
|
321
|
-
item = { filed: column.index };
|
|
322
|
-
}
|
|
323
|
-
if (column.iscount) {
|
|
324
|
-
this.needCount = true;
|
|
325
|
-
if (!item[name]) {
|
|
326
|
-
item[name] = 0;
|
|
327
|
-
}
|
|
328
|
-
item[name] = Number(item[name]) + this.getDataValue(data, column.index);
|
|
329
|
-
}
|
|
330
|
-
else {
|
|
331
|
-
item[name] = '';
|
|
332
|
-
}
|
|
333
|
-
}
|
|
334
|
-
if (!check) {
|
|
335
|
-
this.totalCount.push(item);
|
|
336
|
-
}
|
|
337
|
-
});
|
|
338
|
-
});
|
|
339
|
-
});
|
|
340
|
-
}
|
|
341
|
-
getDataValue(array, index) {
|
|
342
|
-
let result = 0;
|
|
343
|
-
array.forEach((data) => {
|
|
344
|
-
if (data.index === index) {
|
|
345
|
-
result = Number(data.value);
|
|
346
|
-
return;
|
|
347
|
-
}
|
|
348
|
-
});
|
|
349
|
-
return result;
|
|
350
|
-
}
|
|
351
|
-
onTdClick(td, i) {
|
|
352
|
-
const { index, value, data } = td;
|
|
353
|
-
this.tdChange.emit(value);
|
|
354
|
-
this.rowChange.emit(this.customCol[i].title);
|
|
355
|
-
this.tdClick.emit({ index, value, data });
|
|
356
|
-
}
|
|
357
|
-
onTdClickByGroup(data, column) {
|
|
358
|
-
const index = column.index;
|
|
359
|
-
const value = data[index];
|
|
360
|
-
this.tdChange.emit(value);
|
|
361
|
-
this.rowChange.emit(column.title);
|
|
362
|
-
this.tdClick.emit({ index, value, data });
|
|
363
|
-
}
|
|
364
|
-
onTrClick(data) {
|
|
365
|
-
// if (this.isCustom) {
|
|
366
|
-
// data.forEach((a) => {
|
|
367
|
-
// console.log('tr:td' + a.value);
|
|
368
|
-
// });
|
|
369
|
-
// }
|
|
370
|
-
this.trChange.emit(data);
|
|
371
|
-
}
|
|
372
|
-
onCheck(column, values) {
|
|
373
|
-
column.filterChecked = values;
|
|
374
|
-
}
|
|
375
|
-
filter(column) {
|
|
376
|
-
this.filterValues[column.index] = column.filterChecked;
|
|
377
|
-
// column.filterValue = column.filterChecked;
|
|
378
|
-
this.updateData();
|
|
379
|
-
column.filterVisible = false;
|
|
380
|
-
}
|
|
381
|
-
reset(column) {
|
|
382
|
-
column.filterChecked = [];
|
|
383
|
-
column.filter = column.filter.map((item) => ({
|
|
384
|
-
value: item.value,
|
|
385
|
-
}));
|
|
386
|
-
this.filter(column);
|
|
387
|
-
}
|
|
388
|
-
export() {
|
|
389
|
-
const data = [];
|
|
390
|
-
const merges = [];
|
|
391
|
-
if (this.groups) {
|
|
392
|
-
const row1 = [];
|
|
393
|
-
const row2 = [];
|
|
394
|
-
this.groups.forEach((group) => {
|
|
395
|
-
const colIndex = row1.length;
|
|
396
|
-
group.columns.forEach((column) => {
|
|
397
|
-
row1.push(group.title);
|
|
398
|
-
row2.push(column.title);
|
|
399
|
-
});
|
|
400
|
-
if (group.row > 1 || group.col > 1) {
|
|
401
|
-
merges.push({ s: { r: 0, c: colIndex }, e: { r: group.row - 1, c: colIndex + group.col - 1 } });
|
|
402
|
-
}
|
|
403
|
-
});
|
|
404
|
-
data.push(row1, row2);
|
|
405
|
-
this._data.forEach((rowData) => {
|
|
406
|
-
const rowIndex = data.length;
|
|
407
|
-
const row = [];
|
|
408
|
-
rowData.forEach((td, i) => {
|
|
409
|
-
row.push(td.value);
|
|
410
|
-
if (td.rowspan > 1) {
|
|
411
|
-
merges.push({ s: { r: rowIndex, c: i }, e: { r: rowIndex + td.rowspan - 1, c: i } });
|
|
412
|
-
}
|
|
413
|
-
});
|
|
414
|
-
data.push(row);
|
|
415
|
-
});
|
|
416
|
-
}
|
|
417
|
-
else {
|
|
418
|
-
const row1 = this.columns.map((column) => column.title);
|
|
419
|
-
data.push(row1);
|
|
420
|
-
this._data.forEach((rowData) => {
|
|
421
|
-
const row = this.columns.map((column) => rowData[column.index]);
|
|
422
|
-
data.push(row);
|
|
423
|
-
});
|
|
424
|
-
}
|
|
425
|
-
return { data, merges };
|
|
426
|
-
}
|
|
427
|
-
exportWord() {
|
|
428
|
-
const element = this.ele.nativeElement;
|
|
429
|
-
let html = '';
|
|
430
|
-
const tables = element.querySelectorAll('table');
|
|
431
|
-
if (tables.length === 1) {
|
|
432
|
-
html += tables.item(0).outerHTML;
|
|
433
|
-
}
|
|
434
|
-
else if (tables.length > 1) {
|
|
435
|
-
html += '<table>';
|
|
436
|
-
tables.forEach((table) => {
|
|
437
|
-
table = table.cloneNode(true);
|
|
438
|
-
const measureRow = table.querySelector('.ant-table-measure-now');
|
|
439
|
-
if (measureRow) {
|
|
440
|
-
measureRow.parentElement.removeChild(measureRow);
|
|
441
|
-
}
|
|
442
|
-
html += table.innerHTML;
|
|
443
|
-
});
|
|
444
|
-
html += '</table><br/>';
|
|
445
|
-
}
|
|
446
|
-
return html;
|
|
447
|
-
}
|
|
448
|
-
};
|
|
449
|
-
TableComponent.decorators = [
|
|
450
|
-
{ type: Component, args: [{
|
|
451
|
-
selector: 'sc-table',
|
|
452
|
-
template: "<nz-table\n *ngIf=\"columns\"\n #basicTable\n [nzData]=\"_data\"\n [nzScroll]=\"{ x: '50px', y: '100%' }\"\n [nzPageSize]=\"pageSize\"\n [ngStyle]=\"bodyStyle\"\n [nzBordered]=\"showBorder\"\n [nzWidthConfig]=\"widthConfig\"\n [nzFrontPagination]=\"needPage\"\n>\n <thead>\n <tr *ngFor=\"let header of headers\">\n <ng-container *ngFor=\"let column of header\">\n <th\n *ngIf=\"column.filter\"\n [rowSpan]=\"column.row\"\n [ngStyle]=\"headStyle\"\n [colSpan]=\"column.col\"\n [nzAlign]=\"contentAlign\"\n nzCustomFilter\n >\n {{ column.title }}\n <ng-container *ngIf=\"column.filter\">\n <nz-filter-trigger\n [nzDropdownMenu]=\"menu\"\n [(nzVisible)]=\"column.filterVisible\"\n [nzActive]=\"filterValues[column.index]?.length\"\n >\n <i nz-icon nzType=\"filter\" nzTheme=\"outline\"></i>\n </nz-filter-trigger>\n <nz-dropdown-menu #menu=\"nzDropdownMenu\">\n <div class=\"ant-table-filter-dropdown\">\n <div class=\"search-box\">\n <nz-checkbox-wrapper style=\"width: 100%\" (nzOnChange)=\"onCheck(column, $event)\">\n <div *ngFor=\"let option of column.filter\">\n <label nz-checkbox [nzValue]=\"option.value\" [ngModel]=\"option.checked\">\n <span [innerHTML]=\"option.value | nzSafeNull | nzSanitizer : 'html'\"></span>\n </label>\n </div>\n </nz-checkbox-wrapper>\n <button nz-button nzSize=\"small\" nzType=\"primary\" (click)=\"filter(column)\" class=\"search-button\">\n \u67E5\u8BE2\n </button>\n <button nz-button nzSize=\"small\" (click)=\"reset(column)\">\u91CD\u7F6E</button>\n </div>\n </div>\n </nz-dropdown-menu>\n </ng-container>\n </th>\n <th\n *ngIf=\"!column.filter\"\n [rowSpan]=\"column.row\"\n [ngStyle]=\"headStyle\"\n [colSpan]=\"column.col\"\n [nzAlign]=\"contentAlign\"\n >\n {{ column.title }}\n </th>\n </ng-container>\n </tr>\n </thead>\n <tbody>\n <ng-container *ngIf=\"!groups\">\n <tr *ngFor=\"let data of basicTable.data\" (click)=\"onTrClick(data)\">\n <td\n *ngFor=\"let column of columns\"\n nzAlign=\"{{ contentAlign }}\"\n (click)=\"onTdClickByGroup(data, column)\"\n [ngStyle]=\"bodyStyle\"\n [style.backgroundColor]=\"tbodyBackground\"\n [innerHTML]=\"data[column.index] | nzSafeNull | nzSanitizer : 'html'\"\n >\n </td>\n </tr>\n </ng-container>\n <ng-container *ngIf=\"groups\">\n <tr *ngFor=\"let row of rows\" (click)=\"onTrClick(row)\">\n <ng-container *ngFor=\"let td of row; let i = index\">\n <td\n *ngIf=\"td.rowspan\"\n [attr.rowspan]=\"td.rowspan\"\n [style.backgroundColor]=\"td.color\"\n nzAlign=\"{{ contentAlign }}\"\n (click)=\"onTdClick(td, i)\"\n [ngStyle]=\"bodyStyle\"\n [innerHTML]=\"td.value | nzSafeNull | nzSanitizer : 'html'\"\n ></td>\n </ng-container>\n </tr>\n </ng-container>\n <tr *ngIf=\"needCount\">\n <td *ngFor=\"let count of totalCount\" nzAlign=\"{{ contentAlign }}\" [style.backgroundColor]=\"tbodyBackground\">\n {{ count.value }}\n </td>\n </tr>\n <tr *ngIf=\"needCount\">\n <ng-container *ngFor=\"let count of totalCount; let i = index\">\n <td *ngIf=\"i === 0\" nzAlign=\"{{ contentAlign }}\" [style.backgroundColor]=\"tbodyBackground\">\u5E73\u5747\u503C</td>\n <td *ngIf=\"i !== 0\" nzAlign=\"{{ contentAlign }}\" [style.backgroundColor]=\"tbodyBackground\">\n {{ count.value / dataSize }}\n </td>\n </ng-container>\n </tr>\n <tr *ngIf=\"isCount\">\n <td nzAlign=\"{{ contentAlign }}\" [style.backgroundColor]=\"tbodyBackground\">\u4E2A\u6570</td>\n <td nzAlign=\"{{ contentAlign }}\" colSpan=\"{{ titleSize - 1 }}\" [style.backgroundColor]=\"tbodyBackground\">\n {{ dataSize }}\n </td>\n </tr>\n <tr *ngIf=\"sumColumns\">\n <td\n *ngFor=\"let column of columns; let i = index\"\n nzAlign=\"{{ contentAlign }}\"\n [ngStyle]=\"bodyStyle\"\n [style.backgroundColor]=\"tbodyBackground\"\n >\n <ng-container *ngIf=\"i == 0 && sumData[column.index] == null\">\u5408\u8BA1</ng-container>\n <ng-container *ngIf=\"sumData[column.index] != null\">{{ sumData[column.index] }}</ng-container>\n </td>\n </tr>\n </tbody>\n</nz-table>\n",
|
|
453
|
-
styles: [":host{display:block;width:100%}.ant-table-wrapper,.ant-table-wrapper ::ng-deep.ant-spin-nested-loading,:host{height:100%}.ant-table-wrapper ::ng-deep.ant-spin-nested-loading .ant-spin-container{height:100%;display:flex;flex-direction:column}.ant-table-wrapper ::ng-deep.ant-spin-nested-loading .ant-spin-container .ant-table{background:inherit;flex:1;overflow:hidden}.ant-table-wrapper ::ng-deep.ant-spin-nested-loading .ant-spin-container .ant-table .ant-table-thead>tr>th{background:inherit}.ant-table-wrapper ::ng-deep.ant-spin-nested-loading .ant-spin-container .ant-table .ant-table-container{height:100%;display:flex;flex-direction:column}.ant-table-wrapper ::ng-deep.ant-spin-nested-loading .ant-spin-container .ant-table .ant-table-container .ant-table-header{flex:none}.ant-table-wrapper ::ng-deep.ant-spin-nested-loading .ant-spin-container .ant-table .ant-table-container .ant-table-header::-webkit-scrollbar{opacity:0;background:transparent}.ant-table-wrapper ::ng-deep.ant-spin-nested-loading .ant-spin-container .ant-table .ant-table-container .ant-table-body{flex:1;overflow:auto}.ant-table-wrapper ::ng-deep.ant-spin-nested-loading .ant-spin-container .ant-table-pagination-right{align-self:flex-end}.search-box{padding:8px;width:212px}.search-box input{margin-bottom:8px;display:block}.search-box button{width:90px}.search-button{margin-right:8px}nz-filter-trigger{background:transparent!important}nz-filter-trigger ::ng-deep .ant-table-filter-trigger{font-size:inherit}nz-filter-trigger ::ng-deep .ant-table-filter-trigger:not(.active){color:inherit}.ant-checkbox-group{max-height:300px;overflow:auto}"]
|
|
454
|
-
},] }
|
|
455
|
-
];
|
|
456
|
-
TableComponent.ctorParameters = () => [
|
|
457
|
-
{ type: ElementRef }
|
|
458
|
-
];
|
|
459
|
-
__decorate([
|
|
460
|
-
Property('条数/页', { ui: { widget: 'myRange', min: 1, max: 100, step: 1 } }),
|
|
461
|
-
__metadata("design:type", Object)
|
|
462
|
-
], TableComponent.prototype, "pageSize", void 0);
|
|
463
|
-
__decorate([
|
|
464
|
-
Property('表头背景', {
|
|
465
|
-
ui: {
|
|
466
|
-
widget: 'myColor',
|
|
467
|
-
example: ['#D0021B', '#F5A623', '#F8E71C', '#50E3C2', '#3285FF', '#B45FFF', '#9B9B9B', '#333333'],
|
|
468
|
-
},
|
|
469
|
-
}),
|
|
470
|
-
__metadata("design:type", Object)
|
|
471
|
-
], TableComponent.prototype, "theadBackground", void 0);
|
|
472
|
-
__decorate([
|
|
473
|
-
Property('表头字体', { ui: { widget: 'myFont' } }),
|
|
474
|
-
__metadata("design:type", Object)
|
|
475
|
-
], TableComponent.prototype, "headFont", void 0);
|
|
476
|
-
__decorate([
|
|
477
|
-
Property('内容对齐', {
|
|
478
|
-
type: 'string',
|
|
479
|
-
ui: {
|
|
480
|
-
widget: 'select',
|
|
481
|
-
},
|
|
482
|
-
enum: [
|
|
483
|
-
{ label: '左对齐', value: 'left' },
|
|
484
|
-
{ label: '右对齐', value: 'right' },
|
|
485
|
-
{ label: '居中', value: 'center' },
|
|
486
|
-
],
|
|
487
|
-
}),
|
|
488
|
-
__metadata("design:type", Object)
|
|
489
|
-
], TableComponent.prototype, "contentAlign", void 0);
|
|
490
|
-
__decorate([
|
|
491
|
-
Property('表格背景', {
|
|
492
|
-
ui: {
|
|
493
|
-
widget: 'myColor',
|
|
494
|
-
example: ['#D0021B', '#F5A623', '#F8E71C', '#50E3C2', '#3285FF', '#B45FFF', '#9B9B9B', '#333333'],
|
|
495
|
-
},
|
|
496
|
-
}),
|
|
497
|
-
__metadata("design:type", Object)
|
|
498
|
-
], TableComponent.prototype, "tbodyBackground", void 0);
|
|
499
|
-
__decorate([
|
|
500
|
-
Property('字体', { ui: { widget: 'myFont' } }),
|
|
501
|
-
__metadata("design:type", Object)
|
|
502
|
-
], TableComponent.prototype, "font", void 0);
|
|
503
|
-
__decorate([
|
|
504
|
-
Property('是否自定义', {
|
|
505
|
-
type: 'boolean',
|
|
506
|
-
ui: {
|
|
507
|
-
checkedChildren: '开',
|
|
508
|
-
unCheckedChildren: '关',
|
|
509
|
-
},
|
|
510
|
-
}),
|
|
511
|
-
__metadata("design:type", Object)
|
|
512
|
-
], TableComponent.prototype, "isCustom", void 0);
|
|
513
|
-
__decorate([
|
|
514
|
-
Property('显示边框', {
|
|
515
|
-
type: 'boolean',
|
|
516
|
-
ui: {
|
|
517
|
-
checkedChildren: '开',
|
|
518
|
-
unCheckedChildren: '关',
|
|
519
|
-
},
|
|
520
|
-
}),
|
|
521
|
-
__metadata("design:type", Object)
|
|
522
|
-
], TableComponent.prototype, "showBorder", void 0);
|
|
523
|
-
__decorate([
|
|
524
|
-
Property('显示分页', {
|
|
525
|
-
type: 'boolean',
|
|
526
|
-
ui: {
|
|
527
|
-
checkedChildren: '开',
|
|
528
|
-
unCheckedChildren: '关',
|
|
529
|
-
},
|
|
530
|
-
}),
|
|
531
|
-
__metadata("design:type", Object)
|
|
532
|
-
], TableComponent.prototype, "needPage", void 0);
|
|
533
|
-
__decorate([
|
|
534
|
-
Property('统计个数', {
|
|
535
|
-
type: 'boolean',
|
|
536
|
-
ui: {
|
|
537
|
-
checkedChildren: '开',
|
|
538
|
-
unCheckedChildren: '关',
|
|
539
|
-
},
|
|
540
|
-
}),
|
|
541
|
-
__metadata("design:type", Object)
|
|
542
|
-
], TableComponent.prototype, "isCount", void 0);
|
|
543
|
-
__decorate([
|
|
544
|
-
Property('合计', { type: 'string', ui: { optionalHelp: '填写列名,逗号分隔' } }),
|
|
545
|
-
__metadata("design:type", String)
|
|
546
|
-
], TableComponent.prototype, "sumColumns", void 0);
|
|
547
|
-
__decorate([
|
|
548
|
-
Property('颜色分层', {
|
|
549
|
-
type: 'array',
|
|
550
|
-
maxItems: 99,
|
|
551
|
-
items: {
|
|
552
|
-
type: 'object',
|
|
553
|
-
properties: {
|
|
554
|
-
gte: {
|
|
555
|
-
type: 'number',
|
|
556
|
-
title: '大于',
|
|
557
|
-
},
|
|
558
|
-
lte: {
|
|
559
|
-
type: 'number',
|
|
560
|
-
title: '小于',
|
|
561
|
-
minimum: 1,
|
|
562
|
-
},
|
|
563
|
-
color: {
|
|
564
|
-
type: 'string',
|
|
565
|
-
title: '颜色',
|
|
566
|
-
ui: {
|
|
567
|
-
widget: 'myColor',
|
|
568
|
-
},
|
|
569
|
-
},
|
|
570
|
-
},
|
|
571
|
-
required: ['gte', 'lte'],
|
|
572
|
-
},
|
|
573
|
-
ui: { grid: { arraySpan: 24 }, spanControl: 24 },
|
|
574
|
-
}),
|
|
575
|
-
__metadata("design:type", Object)
|
|
576
|
-
], TableComponent.prototype, "level", void 0);
|
|
577
|
-
__decorate([
|
|
578
|
-
Property('自定义列', {
|
|
579
|
-
type: 'array',
|
|
580
|
-
maxItems: 99,
|
|
581
|
-
items: {
|
|
582
|
-
type: 'object',
|
|
583
|
-
properties: {
|
|
584
|
-
group: {
|
|
585
|
-
type: 'string',
|
|
586
|
-
title: '分组名',
|
|
587
|
-
},
|
|
588
|
-
title: {
|
|
589
|
-
type: 'string',
|
|
590
|
-
title: '列名',
|
|
591
|
-
},
|
|
592
|
-
field: {
|
|
593
|
-
type: 'string',
|
|
594
|
-
title: 'bind',
|
|
595
|
-
},
|
|
596
|
-
width: {
|
|
597
|
-
type: 'number',
|
|
598
|
-
title: '宽度',
|
|
599
|
-
},
|
|
600
|
-
ismerge: {
|
|
601
|
-
type: 'boolean',
|
|
602
|
-
title: '是否合并',
|
|
603
|
-
},
|
|
604
|
-
needlevel: {
|
|
605
|
-
type: 'boolean',
|
|
606
|
-
title: '颜色分层',
|
|
607
|
-
},
|
|
608
|
-
showFilter: {
|
|
609
|
-
type: 'boolean',
|
|
610
|
-
title: '显示筛选',
|
|
611
|
-
},
|
|
612
|
-
},
|
|
613
|
-
required: ['title', 'field'],
|
|
614
|
-
},
|
|
615
|
-
ui: { visibleIf: { isCustom: [true] }, grid: { arraySpan: 24 }, spanLabel: 24, spanControl: 24 },
|
|
616
|
-
}),
|
|
617
|
-
__metadata("design:type", Object)
|
|
618
|
-
], TableComponent.prototype, "customCol", void 0);
|
|
619
|
-
__decorate([
|
|
620
|
-
Data({}),
|
|
621
|
-
__metadata("design:type", Array)
|
|
622
|
-
], TableComponent.prototype, "_data", void 0);
|
|
623
|
-
__decorate([
|
|
624
|
-
DataSchema('_data'),
|
|
625
|
-
__metadata("design:type", Object)
|
|
626
|
-
], TableComponent.prototype, "schema", void 0);
|
|
627
|
-
__decorate([
|
|
628
|
-
DataOutput('单元格内容'),
|
|
629
|
-
__metadata("design:type", Object)
|
|
630
|
-
], TableComponent.prototype, "tdChange", void 0);
|
|
631
|
-
__decorate([
|
|
632
|
-
DataOutput('行数据'),
|
|
633
|
-
__metadata("design:type", Object)
|
|
634
|
-
], TableComponent.prototype, "trChange", void 0);
|
|
635
|
-
__decorate([
|
|
636
|
-
DataOutput('列名'),
|
|
637
|
-
__metadata("design:type", Object)
|
|
638
|
-
], TableComponent.prototype, "rowChange", void 0);
|
|
639
|
-
__decorate([
|
|
640
|
-
Event('点击单元格', {
|
|
641
|
-
params: {
|
|
642
|
-
properties: {
|
|
643
|
-
index: { type: 'string', title: '列名' },
|
|
644
|
-
value: { type: 'string', title: '值' },
|
|
645
|
-
data: ɵ0,
|
|
646
|
-
},
|
|
647
|
-
},
|
|
648
|
-
}),
|
|
649
|
-
__metadata("design:type", Object)
|
|
650
|
-
], TableComponent.prototype, "tdClick", void 0);
|
|
651
|
-
TableComponent = __decorate([
|
|
652
|
-
Widget('表格', { group: 'table', icon: 'icontubiao', image: '/assets/img/screen/custom-table.png' }),
|
|
653
|
-
__metadata("design:paramtypes", [ElementRef])
|
|
654
|
-
], TableComponent);
|
|
655
|
-
export { TableComponent };
|
|
656
|
-
export { ɵ0 };
|
|
657
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2NyZWVuLXdpZGdldC9zcmMvbGliL3RhYmxlL3RhYmxlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxVQUFVLEVBQTRCLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN0RyxPQUFPLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBdUIsS0FBSyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFN0csT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGFBQWEsQ0FBQztXQXdNdEIsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUU7SUFoTWpDLGNBQWMsU0FBZCxjQUFjO0lBc056QixZQUFvQixHQUFlO1FBQWYsUUFBRyxHQUFILEdBQUcsQ0FBWTtRQXBObkMsYUFBUSxHQUFHLEVBQUUsQ0FBQztRQU9kLG9CQUFlLEdBQUcsU0FBUyxDQUFDO1FBRTVCLGFBQVEsR0FBUSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxVQUFVLEVBQUUsQ0FBQyxFQUFFLENBQUM7UUFZdEcsaUJBQVksR0FBRyxRQUFRLENBQUM7UUFPeEIsb0JBQWUsR0FBRyxTQUFTLENBQUM7UUFHNUIsU0FBSSxHQUFRLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLFVBQVUsRUFBRSxDQUFDLEVBQUUsQ0FBQztRQVFsRyxhQUFRLEdBQUcsS0FBSyxD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S0FBSyxDQUFDOztnREFDaUI7QUFFbkM7SUFEQyxVQUFVLENBQUMsSUFBSSxDQUFDOztpREFDbUI7QUFVcEM7SUFUQyxLQUFLLENBQUMsT0FBTyxFQUFFO1FBQ2QsTUFBTSxFQUFFO1lBQ04sVUFBVSxFQUFFO2dCQUNWLEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRTtnQkFDdEMsS0FBSyxFQUFFLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFO2dCQUNyQyxJQUFJLElBQWtDO2FBQ3ZDO1NBQ0Y7S0FDRixDQUFDOzsrQ0FDZ0M7QUFwTXZCLGNBQWM7SUFEMUIsTUFBTSxDQUFDLElBQUksRUFBRSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUscUNBQXFDLEVBQUUsQ0FBQztxQ0F1TnhFLFVBQVU7R0F0TnhCLGNBQWMsQ0FvbEIxQjtTQXBsQlksY0FBYyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBFbGVtZW50UmVmLCBPbkNoYW5nZXMsIFNpbXBsZUNoYW5nZXMsIEV2ZW50RW1pdHRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgV2lkZ2V0LCBQcm9wZXJ0eSwgRGF0YSwgRGF0YVNjaGVtYSwgRGF0YU91dHB1dCwgQ3VzdG9tRXhwb3J0LCBTaGVldCwgRXZlbnQgfSBmcm9tICdiYmotd2lkZ2V0LWJhc2UnO1xuaW1wb3J0IHsgU0ZBcnJheVdpZGdldFNjaGVtYSwgU0ZTY2hlbWEgfSBmcm9tICdAZGVsb24vZm9ybSc7XG5pbXBvcnQgeyBpc051bSB9IGZyb20gJ0BkZWxvbi91dGlsJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc2MtdGFibGUnLFxuICB0ZW1wbGF0ZVVybDogJy4vdGFibGUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi90YWJsZS5jb21wb25lbnQubGVzcyddLFxufSlcbkBXaWRnZXQoJ+ihqOagvCcsIHsgZ3JvdXA6ICd0YWJsZScsIGljb246ICdpY29udHViaWFvJywgaW1hZ2U6ICcvYXNzZXRzL2ltZy9zY3JlZW4vY3VzdG9tLXRhYmxlLnBuZycgfSlcbmV4cG9ydCBjbGFzcyBUYWJsZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBDdXN0b21FeHBvcnQge1xuICBAUHJvcGVydHkoJ+adoeaVsC/pobUnLCB7IHVpOiB7IHdpZGdldDogJ215UmFuZ2UnLCBtaW46IDEsIG1heDogMTAwLCBzdGVwOiAxIH0gfSlcbiAgcGFnZVNpemUgPSAxMDtcbiAgQFByb3BlcnR5KCfooajlpLTog4zmma8nLCB7XG4gICAgdWk6IHtcbiAgICAgIHdpZGdldDogJ215Q29sb3InLFxuICAgICAgZXhhbXBsZTogWycjRDAwMjFCJywgJyNGNUE2MjMnLCAnI0Y4RTcxQycsICcjNTBFM0MyJywgJyMzMjg1RkYnLCAnI0I0NUZGRicsICcjOUI5QjlCJywgJyMzMzMzMzMnXSxcbiAgICB9LFxuICB9KVxuICB0aGVhZEJhY2tncm91bmQgPSAnI2ZhZmFmYSc7XG4gIEBQcm9wZXJ0eSgn6KGo5aS05a2X5L2TJywgeyB1aTogeyB3aWRnZXQ6ICdteUZvbnQnIH0gfSlcbiAgaGVhZEZvbnQ6IGFueSA9IHsgZmFtaWx5OiAnJywgY29sb3I6ICcjMjIyMjIyJywgd2VpZ2h0OiAnbm9ybWFsJywgc2l6ZTogMTIsIHNwYWNlOiAwLCBsaW5lSGVpZ2h0OiAyIH07XG4gIEBQcm9wZXJ0eSgn5YaF5a655a+56b2QJywge1xuICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgIHVpOiB7XG4gICAgICB3aWRnZXQ6ICdzZWxlY3QnLFxuICAgIH0sXG4gICAgZW51bTogW1xuICAgICAgeyBsYWJlbDogJ+W3puWvuem9kCcsIHZhbHVlOiAnbGVmdCcgfSxcbiAgICAgIHsgbGFiZWw6ICflj7Plr7npvZAnLCB2YWx1ZTogJ3JpZ2h0JyB9LFxuICAgICAgeyBsYWJlbDogJ+WxheS4rScsIHZhbHVlOiAnY2VudGVyJyB9LFxuICAgIF0sXG4gIH0pXG4gIGNvbnRlbnRBbGlnbiA9ICdjZW50ZXInO1xuICBAUHJvcGVydHkoJ+ihqOagvOiDjOaZrycsIHtcbiAgICB1aToge1xuICAgICAgd2lkZ2V0OiAnbXlDb2xvcicsXG4gICAgICBleGFtcGxlOiBbJyNEMDAyMUInLCAnI0Y1QTYyMycsICcjRjhFNzFDJywgJyM1MEUzQzInLCAnIzMyODVGRicsICcjQjQ1RkZGJywgJyM5QjlCOUInLCAnIzMzMzMzMyddLFxuICAgIH0sXG4gIH0pXG4gIHRib2R5QmFja2dyb3VuZCA9ICcjRkZGRkZGJztcblxuICBAUHJvcGVydHkoJ+Wtl+S9kycsIHsgdWk6IHsgd2lkZ2V0OiAnbXlGb250JyB9IH0pXG4gIGZvbnQ6IGFueSA9IHsgZmFtaWx5OiAnJywgY29sb3I6ICcjMjIyMjIyJywgd2VpZ2h0OiAnbm9ybWFsJywgc2l6ZTogMTIsIHNwYWNlOiAwLCBsaW5lSGVpZ2h0OiAyIH07XG4gIEBQcm9wZXJ0eSgn5piv5ZCm6Ieq5a6a5LmJJywge1xuICAgIHR5cGU6ICdib29sZWFuJyxcbiAgICB1aToge1xuICAgICAgY2hlY2tlZENoaWxkcmVuOiAn5byAJyxcbiAgICAgIHVuQ2hlY2tlZENoaWxkcmVuOiAn5YWzJyxcbiAgICB9LFxuICB9KVxuICBpc0N1c3RvbSA9IGZhbHNlO1xuICBAUHJvcGVydHkoJ+aYvuekuui+ueahhicsIHtcbiAgICB0eXBlOiAnYm9vbGVhbicsXG4gICAgdWk6IHtcbiAgICAgIGNoZWNrZWRDaGlsZHJlbjogJ+W8gCcsXG4gICAgICB1bkNoZWNrZWRDaGlsZHJlbjogJ+WFsycsXG4gICAgfSxcbiAgfSlcbiAgc2hvd0JvcmRlciA9IGZhbHNlO1xuICBAUHJvcGVydHkoJ+aYvuekuuWIhumhtScsIHtcbiAgICB0eXBlOiAnYm9vbGVhbicsXG4gICAgdWk6IHtcbiAgICAgIGNoZWNrZWRDaGlsZHJlbjogJ+W8gCcsXG4gICAgICB1bkNoZWNrZWRDaGlsZHJlbjogJ+WFsycsXG4gICAgfSxcbiAgfSlcbiAgbmVlZFBhZ2UgPSBmYWxzZTtcbiAgQFByb3BlcnR5KCfnu5/orqHkuKrmlbAnLCB7XG4gICAgdHlwZTogJ2Jvb2xlYW4nLFxuICAgIHVpOiB7XG4gICAgICBjaGVja2VkQ2hpbGRyZW46ICflvIAnLFxuICAgICAgdW5DaGVja2VkQ2hpbGRyZW46ICflhbMnLFxuICAgIH0sXG4gIH0pXG4gIGlzQ291bnQgPSBmYWxzZTtcbiAgQFByb3BlcnR5KCflkIjorqEnLCB7IHR5cGU6ICdzdHJpbmcnLCB1aTogeyBvcHRpb25hbEhlbHA6ICfloavlhpnliJflkI0s6YCX5Y+35YiG6ZqUJyB9IH0pXG4gIHN1bUNvbHVtbnM6IHN0cmluZztcbiAgQFByb3BlcnR5KCfpopzoibLliIblsYInLCB7XG4gICAgdHlwZTogJ2FycmF5JyxcbiAgICBtYXhJdGVtczogOTksXG4gICAgaXRlbXM6IHtcbiAgICAgIHR5cGU6ICdvYmplY3QnLFxuICAgICAgcHJvcGVydGllczoge1xuICAgICAgICBndGU6IHtcbiAgICAgICAgICB0eXBlOiAnbnVtYmVyJyxcbiAgICAgICAgICB0aXRsZTogJ+Wkp+S6jicsXG4gICAgICAgIH0sXG4gICAgICAgIGx0ZToge1xuICAgICAgICAgIHR5cGU6ICdudW1iZXInLFxuICAgICAgICAgIHRpdGxlOiAn5bCP5LqOJyxcbiAgICAgICAgICBtaW5pbXVtOiAxLFxuICAgICAgICB9LFxuICAgICAgICBjb2xvcjoge1xuICAgICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICAgIHRpdGxlOiAn6aKc6ImyJyxcbiAgICAgICAgICB1aToge1xuICAgICAgICAgICAgd2lkZ2V0OiAnbXlDb2xvcicsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICByZXF1aXJlZDogWydndGUnLCAnbHRlJ10sXG4gICAgfSxcbiAgICB1aTogeyBncmlkOiB7IGFycmF5U3BhbjogMjQgfSwgc3BhbkNvbnRyb2w6IDI0IH0gYXMgU0ZBcnJheVdpZGdldFNjaGVtYSxcbiAgfSlcbiAgbGV2ZWwgPSBbXTtcbiAgLy8gQFByb3BlcnR5KCflrZfmrrXkuqTlj4knLCB7XG4gIC8vICAgdHlwZTogJ2FycmF5JyxcbiAgLy8gICBtYXhJdGVtczogMSxcbiAgLy8gICBpdGVtczoge1xuICAvLyAgICAgdHlwZTogJ29iamVjdCcsXG4gIC8vICAgICBwcm9wZXJ0aWVzOiB7XG4gIC8vICAgICAgIGtleToge1xuICAvLyAgICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAvLyAgICAgICAgIHRpdGxlOiAn57uR5a6a5a2X5q61JyxcbiAgLy8gICAgICAgfSxcbiAgLy8gICAgICAgdmFsdWU6IHtcbiAgLy8gICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgLy8gICAgICAgICB0aXRsZTogJ+e7keWumuWAvCcsXG4gIC8vICAgICAgIH0sXG4gIC8vICAgICAgIG1lcmdlRmllbGQ6IHtcbiAgLy8gICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgLy8gICAgICAgICB0aXRsZTogJ+WQiOW5tuWtl+autScsXG4gIC8vICAgICAgIH1cbiAgLy8gICAgIH0sXG4gIC8vICAgICByZXF1aXJlZDogW10sXG4gIC8vICAgfSxcbiAgLy8gICB1aToge2dyaWQ6IHthcnJheVNwYW46IDI0fSwgc3BhbkNvbnRyb2w6IDI0fSBhcyBTRkFycmF5V2lkZ2V0U2NoZW1hLFxuICAvLyB9KVxuICAvLyBjcm9zcyA9IFtdO1xuICBAUHJvcGVydHkoJ+iHquWumuS5ieWIlycsIHtcbiAgICB0eXBlOiAnYXJyYXknLFxuICAgIG1heEl0ZW1zOiA5OSxcbiAgICBpdGVtczoge1xuICAgICAgdHlwZTogJ29iamVjdCcsXG4gICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgIGdyb3VwOiB7XG4gICAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgICAgdGl0bGU6ICfliIbnu4TlkI0nLFxuICAgICAgICB9LFxuICAgICAgICB0aXRsZToge1xuICAgICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICAgIHRpdGxlOiAn5YiX5ZCNJyxcbiAgICAgICAgfSxcbiAgICAgICAgZmllbGQ6IHtcbiAgICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgICB0aXRsZTogJ2JpbmQnLFxuICAgICAgICB9LFxuICAgICAgICB3aWR0aDoge1xuICAgICAgICAgIHR5cGU6ICdudW1iZXInLFxuICAgICAgICAgIHRpdGxlOiAn5a695bqmJyxcbiAgICAgICAgfSxcbiAgICAgICAgaXNtZXJnZToge1xuICAgICAgICAgIHR5cGU6ICdib29sZWFuJyxcbiAgICAgICAgICB0aXRsZTogJ+aYr+WQpuWQiOW5ticsXG4gICAgICAgIH0sXG4gICAgICAgIG5lZWRsZXZlbDoge1xuICAgICAgICAgIHR5cGU6ICdib29sZWFuJyxcbiAgICAgICAgICB0aXRsZTogJ+minOiJsuWIhuWxgicsXG4gICAgICAgIH0sXG4gICAgICAgIHNob3dGaWx0ZXI6IHtcbiAgICAgICAgICB0eXBlOiAnYm9vbGVhbicsXG4gICAgICAgICAgdGl0bGU6ICfmmL7npLrnrZvpgIknLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHJlcXVpcmVkOiBbJ3RpdGxlJywgJ2ZpZWxkJ10sXG4gICAgfSxcbiAgICB1aTogeyB2aXNpYmxlSWY6IHsgaXNDdXN0b206IFt0cnVlXSB9LCBncmlkOiB7IGFycmF5U3BhbjogMjQgfSwgc3BhbkxhYmVsOiAyNCwgc3BhbkNvbnRyb2w6IDI0IH0sXG4gIH0pXG4gIGN1c3RvbUNvbDogYW55ID0gW107XG4gIC8vIGhhc0dyb3VwID0gZmFsc2U7XG4gIGlzQ3Jvc3MgPSBmYWxzZTtcbiAgaW1hZ2U6IHN0cmluZztcbiAgQERhdGEoe30pXG4gIF9kYXRhOiBhbnlbXSA9IFtcbiAgICB7IHg6ICfkuIDmnIgnLCB5OiAnMTAlJywgczogJ+aUtuWFpScgfSxcbiAgICB7IHg6ICfkuozmnIgnLCB5OiAyMCwgczogJ+aUtuWFpScgfSxcbiAgICB7IHg6ICfkuInmnIgnLCB5OiAyNSwgczogJ+aUtuWFpScgfSxcbiAgICB7IHg6ICflm5vmnIgnLCB5OiAzNSwgczogJ+aUtuWFpScgfSxcbiAgICB7IHg6ICfkupTmnIgnLCB5OiAyNywgczogJ+aUtuWFpScgfSxcbiAgICB7IHg6ICflha3mnIgnLCB5OiAyOCwgczogJ+aUtuWFpScgfSxcbiAgICB7IHg6ICfkuIDmnIgnLCB5OiAxOCwgczogJ+aUr+WHuicgfSxcbiAgICB7IHg6ICfkuozmnIgnLCB5OiAyOCwgczogJ+aUr+WHuicgfSxcbiAgICB7IHg6ICfkuInmnIgnLCB5OiAzMiwgczogJ+aUr+WHuicgfSxcbiAgICB7IHg6ICflm5vmnIgnLCB5OiA0OCwgczogJ+aUr+WHuicgfSxcbiAgICB7IHg6ICfkupTmnIgnLCB5OiAyMCwgczogJ+aUr+WHuicgfSxcbiAgICB7IHg6ICflha3mnIgnLCB5OiAxNywgczogJ+aUr+WHuicgfSxcbiAgXTtcbiAgQERhdGFTY2hlbWEoJ19kYXRhJylcbiAgc2NoZW1hOiBTRlNjaGVtYTtcblxuICBARGF0YU91dHB1dCgn5Y2V5YWD5qC85YaF5a65JylcbiAgdGRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQERhdGFPdXRwdXQoJ+ihjOaVsOaNricpXG4gIHRyQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBEYXRhT3V0cHV0KCfliJflkI0nKVxuICByb3dDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQEV2ZW50KCfngrnlh7vljZXlhYPmoLwnLCB7XG4gICAgcGFyYW1zOiB7XG4gICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgIGluZGV4OiB7IHR5cGU6ICdzdHJpbmcnLCB0aXRsZTogJ+WIl+WQjScgfSxcbiAgICAgICAgdmFsdWU6IHsgdHlwZTogJ3N0cmluZycsIHRpdGxlOiAn5YC8JyB9LFxuICAgICAgICBkYXRhOiB7IHR5cGU6ICdvYmplY3QnLCB0aXRsZTogJ+ihjOaVsOaNricgfSxcbiAgICAgIH0sXG4gICAgfSxcbiAgfSlcbiAgdGRDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICAvLyB5OiBzdHJpbmc7XG4gIGhlYWRTdHlsZTogYW55ID0ge307XG4gIGJvZHlTdHlsZTogYW55ID0ge307XG4gIGNvbHVtbnM6IGFueTtcbiAgZ3JvdXBzOiBhbnk7XG4gIC8vIHJvd1NpemUgPSAxO1xuICB3aWR0aENvbmZpZyA9IFtdO1xuICByb3dzID0gW107XG4gIHRvdGFsQ291bnQgPSBbXTtcbiAgbmVlZENvdW50ID0gZmFsc2U7XG5cbiAgZGF0YVNpemU6IG51bWJlcjtcbiAgdGl0bGVTaXplOiBudW1iZXI7XG4gIHNlYXJjaFZhbHVlID0ge307XG4gIGhlYWRlcnMgPSBbXTtcbiAgZmlsdGVyVmFsdWVzOiB7IFtrZXk6IHN0cmluZ106IGFueVtdIH0gPSB7fTtcbiAgc3VtRGF0YSA9IHt9O1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVsZTogRWxlbWVudFJlZikge31cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXMuc2NoZW1hIHx8IGNoYW5nZXMuY3VzdG9tQ29sKSB7XG4gICAgICB0aGlzLnVwZGF0ZUhlYWRlcigpO1xuICAgICAgdGhpcy51cGRhdGVEYXRhKCk7XG4gICAgfSBlbHNlIGlmIChjaGFuZ2VzLl9kYXRhKSB7XG4gICAgICBpZiAoIXRoaXMuc2NoZW1hKSB7XG4gICAgICAgIHRoaXMudXBkYXRlSGVhZGVyKCk7XG4gICAgICB9XG4gICAgICB0aGlzLnVwZGF0ZURhdGEoKTtcbiAgICB9XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICAvLyBpZiAodGhpcy5lbGUpIHtcbiAgICAvLyAgIGNvbnN0IGhlaWdodCA9IHRoaXMuZWxlLm5hdGl2ZUVsZW1lbnQub2Zmc2V0SGVpZ2h0IC0gMTEwO1xuICAgIC8vICAgdGhpcy55ID0gaGVpZ2h0ID4gMCA/IGhlaWdodCArICdweCcgOiAnMHB4JztcbiAgICAvLyB9XG4gICAgLy8gY29uc29sZS5sb2codGhpcy5ncm91cEJ5KHRoaXMuX2RhdGEsJ3gnKSk7XG4gICAgLy8gY29uc29sZS5sb2codGhpcy5jb3VudEdyb3VwUm93KTtcbiAgICB0aGlzLmhlYWRTdHlsZSA9IHtcbiAgICAgIGZhbWlseTogdGhpcy5oZWFkRm9udC5mYW1pbHksXG4gICAgICBjb2xvcjogdGhpcy5oZWFkRm9udC5jb2xvcixcbiAgICAgIHdlaWdodDogdGhpcy5oZWFkRm9udC53ZWlnaHQsXG4gICAgICBmb250U2l6ZTogdGhpcy5oZWFkRm9udC5zaXplICsgJ3B4JyxcbiAgICAgIHNwYWNlOiB0aGlzLmhlYWRGb250LnNwYWNlLFxuICAgICAgbGluZUhlaWdodDogdGhpcy5oZWFkRm9udC5saW5lSGVpZ2h0LFxuICAgICAgYmFja2dyb3VuZDogdGhpcy50aGVhZEJhY2tncm91bmQsXG4gICAgfTtcbiAgICB0aGlzLmJvZHlTdHlsZSA9IHtcbiAgICAgIGZhbWlseTogdGhpcy5mb250LmZhbWlseSxcbiAgICAgIGNvbG9yOiB0aGlzLmZvbnQuY29sb3IsXG4gICAgICB3ZWlnaHQ6IHRoaXMuZm9udC53ZWlnaHQsXG4gICAgICBmb250U2l6ZTogdGhpcy5mb250LnNpemUgKyAncHgnLFxuICAgICAgc3BhY2U6IHRoaXMuZm9udC5zcGFjZSxcbiAgICAgIGxpbmVIZWlnaHQ6IHRoaXMuZm9udC5saW5lSGVpZ2h0LFxuICAgIH07XG4gIH1cblxuICB1cGRhdGVIZWFkZXIoKSB7XG4gICAgdGhpcy5jb2x1bW5zID0gW107XG4gICAgdGhpcy53aWR0aENvbmZpZyA9IFtdO1xuICAgIGlmICh0aGlzLmlzQ3VzdG9tICYmIHRoaXMuY3VzdG9tQ29sWzBdKSB7XG4gICAgICBjb25zdCBoYXNHcm91cCA9IHRoaXMuY3VzdG9tQ29sLnNvbWUoKGRhdGEpID0+IGRhdGEuZ3JvdXAgIT0gbnVsbCAmJiBkYXRhLmdyb3VwICE9PSAnJyk7XG4gICAgICB0aGlzLmdyb3VwcyA9IFtdO1xuICAgICAgY29uc3Qgc3ViSGVhZGVyID0gW107XG4gICAgICBjb25zdCBncm91cE1hcCA9IHt9O1xuICAgICAgdGhpcy5jdXN0b21Db2wuZm9yRWFjaCgoZGF0YSkgPT4ge1xuICAgICAgICBjb25zdCBncm91cGVkID0gISFkYXRhLmdyb3VwO1xuICAgICAgICBjb25zdCBncm91cE5hbWUgPSBkYXRhLmdyb3VwIHx8IGRhdGEudGl0bGU7XG4gICAgICAgIHRoaXMud2lkdGhDb25maWcucHVzaCgoZGF0YS53aWR0aCB8fCAxMDApICsgJ3B4Jyk7XG4gICAgICAgIGNvbnN0IGNvbHVtbjogYW55ID0ge1xuICAgICAgICAgIHRpdGxlOiBkYXRhLnRpdGxlLFxuICAgICAgICAgIGluZGV4OiBkYXRhLmZpZWxkLFxuICAgICAgICAgIGlzbWVyZ2U6IGRhdGEuaXNtZXJnZSxcbiAgICAgICAgICBpc2NvdW50OiBkYXRhLmlzY291bnQsXG4gICAgICAgICAgbmVlZGxldmVsOiBkYXRhLm5lZWRsZXZlbCxcbiAgICAgICAgICBzaG93RmlsdGVyOiBkYXRhLnNob3dGaWx0ZXIsXG4gICAgICAgIH07XG5cbiAgICAgICAgbGV0IGdyb3VwID0gZ3JvdXBNYXBbZ3JvdXBOYW1lXTtcbiAgICAgICAgaWYgKGdyb3VwID09IG51bGwpIHtcbiAgICAgICAgICBncm91cCA9IHsgdGl0bGU6IGdyb3VwTmFtZSwgcm93OiAxLCBjb2w6IDAsIGNvbHVtbnM6IFtdIH07XG4gICAgICAgICAgZ3JvdXBNYXBbZ3JvdXBOYW1lXSA9IGdyb3VwO1xuICAgICAgICAgIHRoaXMuZ3JvdXBzLnB1c2goZ3JvdXApO1xuICAgICAgICB9XG4gICAgICAgIGdyb3VwLmNvbHVtbnMucHVzaChjb2x1bW4pO1xuICAgICAgICBncm91cC5jb2wrKztcbiAgICAgICAgaWYgKGdyb3VwZWQpIHtcbiAgICAgICAgICBzdWJIZWFkZXIucHVzaChjb2x1bW4pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGdyb3VwLmluZGV4ID0gZGF0YS5maWVsZDtcbiAgICAgICAgICBpZiAoaGFzR3JvdXApIHtcbiAgICAgICAgICAgIGdyb3VwLnJvdyA9IDI7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIHRoaXMuaGVhZGVycyA9IFt0aGlzLmdyb3Vwcywgc3ViSGVhZGVyXTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHRoaXMuc2NoZW1hKSB7XG4gICAgICAgIE9iamVjdC5rZXlzKHRoaXMuc2NoZW1hLnByb3BlcnRpZXMpLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgICAgIGNvbnN0IHByb3BlcnR5ID0gdGhpcy5zY2hlbWEucHJvcGVydGllc1trZXldO1xuICAgICAgICAgIGlmIChwcm9wZXJ0eSkge1xuICAgICAgICAgICAgY29uc3QgY29sdW1uID0geyB0aXRsZTogcHJvcGVydHkudGl0bGUgfHwga2V5LCBpbmRleDoga2V5LCBzY2hlbWE6IHByb3BlcnR5IH07XG4gICAgICAgICAgICB0aGlzLmNvbHVtbnMucHVzaChjb2x1bW4pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2UgaWYgKHRoaXMuX2RhdGEgJiYgdGhpcy5fZGF0YVswXSkge1xuICAgICAgICBjb25zdCBkYXRhID0gdGhpcy5fZGF0YVswXTtcbiAgICAgICAgT2JqZWN0LmtleXMoZGF0YSkuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICAgICAgY29uc3QgY29sdW1uID0geyB0aXRsZToga2V5LCBpbmRleDoga2V5IH07XG4gICAgICAgICAgdGhpcy53aWR0aENvbmZpZy5wdXNoKDEwMCArICdweCcpO1xuICAgICAgICAgIHRoaXMuY29sdW1ucy5wdXNoKGNvbHVtbik7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgdGhpcy5oZWFkZXJzID0gW3RoaXMuY29sdW1uc107XG4gICAgICBjb25zb2xlLmxvZygnaGVhZGVyJywgdGhpcy5oZWFkZXJzKTtcbiAgICB9XG4gIH1cblxuICB1cGRhdGVEYXRhKCkge1xuICAgIHRoaXMuZGF0YVNpemUgPSB0aGlzLl9kYXRhLmxlbmd0aDtcbiAgICBpZiAodGhpcy5fZGF0YVswXSkge1xuICAgICAgdGhpcy50aXRsZVNpemUgPSBPYmplY3Qua2V5cyh0aGlzLl9kYXRhWzBdKS5sZW5ndGg7XG4gICAgfVxuICAgIGlmICh0aGlzLmlzQ3VzdG9tICYmIHRoaXMuY3VzdG9tQ29sWzBdKSB7XG4gICAgICB0aGlzLnVwZGF0ZUZpbHRlck9wdGlvbnMoKTtcbiAgICAgIHRoaXMuZ3JvdXBCeSh0aGlzLl9kYXRhKTtcbiAgICAgIHRoaXMuY291bnQoKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuc3VtQ29sdW1ucykge1xuICAgICAgdGhpcy5zdW1EYXRhID0ge307XG4gICAgICB0aGlzLnN1bUNvbHVtbnMuc3BsaXQoJywnKS5mb3JFYWNoKChjb2x1bW4pID0+IHtcbiAgICAgICAgbGV0IHN1bTogbnVtYmVyID0gdGhpcy5fZGF0YS5yZWR1Y2UoKHAsIGMpID0+IHtcbiAgICAgICAgICBjb25zdCB2YWx1ZSA9IGNbY29sdW1uXTtcbiAgICAgICAgICBpZiAodmFsdWUgJiYgaXNOdW0odmFsdWUpKSB7XG4gICAgICAgICAgICBwICs9ICt2YWx1ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHA7XG4gICAgICAgIH0sIDApO1xuICAgICAgICB0aGlzLnN1bURhdGFbY29sdW1uXSA9ICtzdW0udG9GaXhlZCgyKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiDmm7TmlrDnrZvpgInkuIvmi4nmoYbph4znmoTmlbDmja5cbiAgICovXG4gIHVwZGF0ZUZpbHRlck9wdGlvbnMoKSB7XG4gICAgaWYgKHRoaXMuZ3JvdXBzKSB7XG4gICAgICB0aGlzLmdyb3Vwcy5mb3JFYWNoKChncm91cCkgPT4ge1xuICAgICAgICBncm91cC5jb2x1bW5zLmZvckVhY2goKGNvbHVtbikgPT4ge1xuICAgICAgICAgIGlmIChjb2x1bW4uc2hvd0ZpbHRlcikge1xuICAgICAgICAgICAgY29uc3QgdmFsdWVTZXQgPSBuZXcgU2V0PGFueT4oKTtcbiAgICAgICAgICAgIGNvbnN0IHRhcmdldCA9IGdyb3VwLmNvbHVtbnMubGVuZ3RoID09IDEgPyBncm91cCA6IGNvbHVtbjtcbiAgICAgICAgICAgIHRhcmdldC5maWx0ZXIgPSBbXTtcbiAgICAgICAgICAgIGlmICh0aGlzLl9kYXRhKSB7XG4gICAgICAgICAgICAgIHRoaXMuX2RhdGEuZm9yRWFjaCgocm93KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3Qga2V5ID0gY29sdW1uLmluZGV4O1xuICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gcm93W2tleV07XG4gICAgICAgICAgICAgICAgY29uc3QgZmlsdGVyVmFsdWUgPSB0aGlzLmZpbHRlclZhbHVlc1trZXldO1xuICAgICAgICAgICAgICAgIGNvbnN0IGNoZWNrZWQgPSBmaWx0ZXJWYWx1ZSAmJiBmaWx0ZXJWYWx1ZS5pbmNsdWRlcyh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgaWYgKGNoZWNrZWQgfHwgdGhpcy5maWx0ZXJNYXRjaChyb3csIGtleSkpIHtcbiAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZSAhPSBudWxsICYmIHZhbHVlICE9ICcnICYmICF2YWx1ZVNldC5oYXModmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlU2V0LmFkZCh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGl0ZW0gPSB7IHZhbHVlLCBjaGVja2VkIH07XG4gICAgICAgICAgICAgICAgICAgIHRhcmdldC5maWx0ZXIucHVzaChpdGVtKTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBmaWx0ZXJNYXRjaChyZWNvcmQ6IGFueSwgZXhjbHVkZT86IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyh0aGlzLmZpbHRlclZhbHVlcyk7XG4gICAgZm9yIChjb25zdCBrZXkgb2Yga2V5cykge1xuICAgICAgaWYgKGtleSAhPT0gZXhjbHVkZSkge1xuICAgICAgICBjb25zdCBmaWx0ZXJWYWx1ZSA9IHRoaXMuZmlsdGVyVmFsdWVzW2tleV07XG4gICAgICAgIGNvbnN0IHZhbHVlID0gcmVjb3JkW2tleV07XG4gICAgICAgIGlmIChmaWx0ZXJWYWx1ZT8ubGVuZ3RoICYmICFmaWx0ZXJWYWx1ZS5pbmNsdWRlcyh2YWx1ZSkpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBncm91cEJ5KGFycmF5KSB7XG4gICAgdGhpcy5yb3dzID0gW107XG4gICAgYXJyYXkuZm9yRWFjaCgocmVjb3JkKSA9PiB7XG4gICAgICBpZiAodGhpcy5maWx0ZXJNYXRjaChyZWNvcmQpKSB7XG4gICAgICAgIGNvbnN0IHJvdyA9IFtdO1xuICAgICAgICBmb3IgKGNvbnN0IGdyb3VwIG9mIHRoaXMuZ3JvdXBzKSB7XG4gICAgICAgICAgZm9yIChjb25zdCBjb2x1bW4gb2YgZ3JvdXAuY29sdW1ucykge1xuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSByZWNvcmRbY29sdW1uLmluZGV4XTtcbiAgICAgICAgICAgIC8vIGlmIChjb2x1bW4uc2hvd0ZpbHRlcikge1xuICAgICAgICAgICAgLy8gICBjb25zdCBmaWx0ZXJWYWx1ZSA9IGNvbHVtbi5maWx0ZXJWYWx1ZSB8fCBncm91cC5maWx0ZXJWYWx1ZTtcbiAgICAgICAgICAgIC8vICAgaWYgKGZpbHRlclZhbHVlPy5sZW5ndGggJiYgIWZpbHRlclZhbHVlLmluY2x1ZGVzKHZhbHVlKSkge1xuICAgICAgICAgICAgLy8gICAgIHJldHVybjtcbiAgICAgICAgICAgIC8vICAgfVxuICAgICAgICAgICAgLy8gfVxuICAgICAgICAgICAgbGV0IG15Q29sb3IgPSAnJztcbiAgICAgICAgICAgIGlmIChjb2x1bW4ubmVlZGxldmVsKSB7XG4gICAgICAgICAgICAgIG15Q29sb3IgPSB0aGlzLmdldENvbG9yKHJlY29yZFtjb2x1bW4uaW5kZXhdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChteUNvbG9yID09ICcnKSB7XG4gICAgICAgICAgICAgIG15Q29sb3IgPSB0aGlzLnRib2R5QmFja2dyb3VuZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJvdy5wdXNoKHsgcm93c3BhbjogMSwgdmFsdWUsIGluZGV4OiBjb2x1bW4uaW5kZXgsIGNvbG9yOiBteUNvbG9yLCBkYXRhOiByZWNvcmQgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMucm93cy5wdXNoKHJvdyk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgdGhpcy5jdXN0b21Db2wuZm9yRWFjaCgoY29sdW1uLCBpKSA9PiB7XG4gICAgICBpZiAoY29sdW1uLmlzbWVyZ2UpIHtcbiAgICAgICAgdGhpcy5uZWVkUGFnZSA9IGZhbHNlO1xuICAgICAgICBsZXQgbGFzdFRkID0gbnVsbDtcbiAgICAgICAgdGhpcy5yb3dzLmZvckVhY2goKHJvdykgPT4ge1xuICAgICAgICAgIGNvbnN0IHRkID0gcm93W2ldO1xuICAgICAgICAgIGlmIChsYXN0VGQgIT0gbnVsbCAmJiBsYXN0VGQudmFsdWUgPT09IHRkLnZhbHVlKSB7XG4gICAgICAgICAgICBsYXN0VGQucm93c3BhbisrO1xuICAgICAgICAgICAgdGQucm93c3BhbiA9IDA7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGxhc3RUZCA9IHRkO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBnZXRDb2xvcih2YWx1ZSk6IHN0cmluZyB7XG4gICAgLy8gdmFsdWU9dmFsdWUudG9TdHJpbmcoKS5yZXBsYWNlKCclJywnJyk7XG4gICAgY29uc3QgcmVnRXhwOiBSZWdFeHAgPSAvLT9cXGQrXFwuP1xcZCovO1xuICAgIGNvbnN0IHJlc3VsdCA9IHJlZ0V4cC5leGVjKHZhbHVlKTtcbiAgICBpZiAodGhpcy5sZXZlbC5sZW5ndGggPiAwKSB7XG4gICAgICBmb3IgKGNvbnN0IHQgb2YgdGhpcy5sZXZlbCkge1xuICAgICAgICBpZiAodC5ndGUgPD0gTnVtYmVyKHJlc3VsdFswXSkgJiYgTnVtYmVyKHJlc3VsdFswXSkgPCB0Lmx0ZSkge1xuICAgICAgICAgIHJldHVybiB0LmNvbG9yO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiAnJztcbiAgfVxuXG4gIGNvdW50KCkge1xuICAgIGNvbnN0IG5hbWUgPSAndmFsdWUnO1xuICAgIHRoaXMuX2RhdGEuZm9yRWFjaCgoZGF0YSkgPT4ge1xuICAgICAgdGhpcy5ncm91cHMuZm9yRWFjaCgoZ3JvdXAsIGkpID0+IHtcbiAgICAgICAgZ3JvdXAuY29sdW1ucy5mb3JFYWNoKChjb2x1bW4sIGopID0+IHtcbiAgICAgICAgICBsZXQgaXRlbSA9IHt9O1xuICAgICAgICAgIGxldCBjaGVjayA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMudG90YWxDb3VudC5mb3JFYWNoKChpdGUpID0+IHtcbiAgICAgICAgICAgIGlmIChpdGUuZmlsZWQgPT09IGNvbHVtbi5pbmRleCkge1xuICAgICAgICAgICAgICBpdGVtID0gaXRlO1xuICAgICAgICAgICAgICBjaGVjayA9IHRydWU7XG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgICBpZiAoaSA9PT0gMCAmJiBqID09PSAwICYmICFjaGVjaykge1xuICAgICAgICAgICAgaXRlbSA9IHsgZmlsZWQ6IGNvbHVtbi5pbmRleCwgdmFsdWU6ICflkIjorqEnIH07XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChpICE9PSAwIHx8IGogIT09IDApIHtcbiAgICAgICAgICAgIGlmICghY2hlY2spIHtcbiAgICAgICAgICAgICAgaXRlbSA9IHsgZmlsZWQ6IGNvbHVtbi5pbmRleCB9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGNvbHVtbi5pc2NvdW50KSB7XG4gICAgICAgICAgICAgIHRoaXMubmVlZENvdW50ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgaWYgKCFpdGVtW25hbWVdKSB7XG4gICAgICAgICAgICAgICAgaXRlbVtuYW1lXSA9IDA7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgaXRlbVtuYW1lXSA9IE51bWJlcihpdGVtW25hbWVdKSArIHRoaXMuZ2V0RGF0YVZhbHVlKGRhdGEsIGNvbHVtbi5pbmRleCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBpdGVtW25hbWVdID0gJyc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICghY2hlY2spIHtcbiAgICAgICAgICAgIHRoaXMudG90YWxDb3VudC5wdXNoKGl0ZW0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIGdldERhdGFWYWx1ZShhcnJheSwgaW5kZXgpIHtcbiAgICBsZXQgcmVzdWx0ID0gMDtcbiAgICBhcnJheS5mb3JFYWNoKChkYXRhKSA9PiB7XG4gICAgICBpZiAoZGF0YS5pbmRleCA9PT0gaW5kZXgpIHtcbiAgICAgICAgcmVzdWx0ID0gTnVtYmVyKGRhdGEudmFsdWUpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIG9uVGRDbGljayh0ZDogYW55LCBpOiBudW1iZXIpIHtcbiAgICBjb25zdCB7IGluZGV4LCB2YWx1ZSwgZGF0YSB9ID0gdGQ7XG4gICAgdGhpcy50ZENoYW5nZS5lbWl0KHZhbHVlKTtcbiAgICB0aGlzLnJvd0NoYW5nZS5lbWl0KHRoaXMuY3VzdG9tQ29sW2ldLnRpdGxlKTtcbiAgICB0aGlzLnRkQ2xpY2suZW1pdCh7IGluZGV4LCB2YWx1ZSwgZGF0YSB9KTtcbiAgfVxuXG4gIG9uVGRDbGlja0J5R3JvdXAoZGF0YTogYW55LCBjb2x1bW46IGFueSkge1xuICAgIGNvbnN0IGluZGV4ID0gY29sdW1uLmluZGV4O1xuICAgIGNvbnN0IHZhbHVlID0gZGF0YVtpbmRleF07XG4gICAgdGhpcy50ZENoYW5nZS5lbWl0KHZhbHVlKTtcbiAgICB0aGlzLnJvd0NoYW5nZS5lbWl0KGNvbHVtbi50aXRsZSk7XG4gICAgdGhpcy50ZENsaWNrLmVtaXQoeyBpbmRleCwgdmFsdWUsIGRhdGEgfSk7XG4gIH1cblxuICBvblRyQ2xpY2soZGF0YTogYW55KSB7XG4gICAgLy8gaWYgKHRoaXMuaXNDdXN0b20pIHtcbiAgICAvLyAgIGRhdGEuZm9yRWFjaCgoYSkgPT4ge1xuICAgIC8vICAgICBjb25zb2xlLmxvZygndHI6dGQnICsgYS52YWx1ZSk7XG4gICAgLy8gICB9KTtcbiAgICAvLyB9XG4gICAgdGhpcy50ckNoYW5nZS5lbWl0KGRhdGEpO1xuICB9XG5cbiAgb25DaGVjayhjb2x1bW46IGFueSwgdmFsdWVzOiBhbnlbXSkge1xuICAgIGNvbHVtbi5maWx0ZXJDaGVja2VkID0gdmFsdWVzO1xuICB9XG5cbiAgZmlsdGVyKGNvbHVtbjogYW55KSB7XG4gICAgdGhpcy5maWx0ZXJWYWx1ZXNbY29sdW1uLmluZGV4XSA9IGNvbHVtbi5maWx0ZXJDaGVja2VkO1xuICAgIC8vIGNvbHVtbi5maWx0ZXJWYWx1ZSA9IGNvbHVtbi5maWx0ZXJDaGVja2VkO1xuICAgIHRoaXMudXBkYXRlRGF0YSgpO1xuICAgIGNvbHVtbi5maWx0ZXJWaXNpYmxlID0gZmFsc2U7XG4gIH1cblxuICByZXNldChjb2x1bW46IGFueSkge1xuICAgIGNvbHVtbi5maWx0ZXJDaGVja2VkID0gW107XG4gICAgY29sdW1uLmZpbHRlciA9IGNvbHVtbi5maWx0ZXIubWFwKChpdGVtKSA9PiAoe1xuICAgICAgdmFsdWU6IGl0ZW0udmFsdWUsXG4gICAgfSkpO1xuICAgIHRoaXMuZmlsdGVyKGNvbHVtbik7XG4gIH1cblxuICBleHBvcnQoKTogU2hlZXQge1xuICAgIGNvbnN0IGRhdGEgPSBbXTtcbiAgICBjb25zdCBtZXJnZXMgPSBbXTtcbiAgICBpZiAodGhpcy5ncm91cHMpIHtcbiAgICAgIGNvbnN0IHJvdzEgPSBbXTtcbiAgICAgIGNvbnN0IHJvdzIgPSBbXTtcbiAgICAgIHRoaXMuZ3JvdXBzLmZvckVhY2goKGdyb3VwKSA9PiB7XG4gICAgICAgIGNvbnN0IGNvbEluZGV4ID0gcm93MS5sZW5ndGg7XG4gICAgICAgIGdyb3VwLmNvbHVtbnMuZm9yRWFjaCgoY29sdW1uKSA9PiB7XG4gICAgICAgICAgcm93MS5wdXNoKGdyb3VwLnRpdGxlKTtcbiAgICAgICAgICByb3cyLnB1c2goY29sdW1uLnRpdGxlKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGlmIChncm91cC5yb3cgPiAxIHx8IGdyb3VwLmNvbCA+IDEpIHtcbiAgICAgICAgICBtZXJnZXMucHVzaCh7IHM6IHsgcjogMCwgYzogY29sSW5kZXggfSwgZTogeyByOiBncm91cC5yb3cgLSAxLCBjOiBjb2xJbmRleCArIGdyb3VwLmNvbCAtIDEgfSB9KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICBkYXRhLnB1c2gocm93MSwgcm93Mik7XG4gICAgICB0aGlzLl9kYXRhLmZvckVhY2goKHJvd0RhdGEpID0+IHtcbiAgICAgICAgY29uc3Qgcm93SW5kZXggPSBkYXRhLmxlbmd0aDtcbiAgICAgICAgY29uc3Qgcm93ID0gW107XG4gICAgICAgIHJvd0RhdGEuZm9yRWFjaCgodGQsIGkpID0+IHtcbiAgICAgICAgICByb3cucHVzaCh0ZC52YWx1ZSk7XG4gICAgICAgICAgaWYgKHRkLnJvd3NwYW4gPiAxKSB7XG4gICAgICAgICAgICBtZXJnZXMucHVzaCh7IHM6IHsgcjogcm93SW5kZXgsIGM6IGkgfSwgZTogeyByOiByb3dJbmRleCArIHRkLnJvd3NwYW4gLSAxLCBjOiBpIH0gfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgZGF0YS5wdXNoKHJvdyk7XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3Qgcm93MSA9IHRoaXMuY29sdW1ucy5tYXAoKGNvbHVtbikgPT4gY29sdW1uLnRpdGxlKTtcbiAgICAgIGRhdGEucHVzaChyb3cxKTtcbiAgICAgIHRoaXMuX2RhdGEuZm9yRWFjaCgocm93RGF0YSkgPT4ge1xuICAgICAgICBjb25zdCByb3cgPSB0aGlzLmNvbHVtbnMubWFwKChjb2x1bW4pID0+IHJvd0RhdGFbY29sdW1uLmluZGV4XSk7XG4gICAgICAgIGRhdGEucHVzaChyb3cpO1xuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiB7IGRhdGEsIG1lcmdlcyB9O1xuICB9XG5cbiAgZXhwb3J0V29yZCgpIHtcbiAgICBjb25zdCBlbGVtZW50ID0gdGhpcy5lbGUubmF0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudDtcbiAgICBsZXQgaHRtbCA9ICcnO1xuICAgIGNvbnN0IHRhYmxlcyA9IGVsZW1lbnQucXVlcnlTZWxlY3RvckFsbCgndGFibGUnKTtcbiAgICBpZiAodGFibGVzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgaHRtbCArPSB0YWJsZXMuaXRlbSgwKS5vdXRlckhUTUw7XG4gICAgfSBlbHNlIGlmICh0YWJsZXMubGVuZ3RoID4gMSkge1xuICAgICAgaHRtbCArPSAnPHRhYmxlPic7XG4gICAgICB0YWJsZXMuZm9yRWFjaCgodGFibGUpID0+IHtcbiAgICAgICAgdGFibGUgPSB0YWJsZS5jbG9uZU5vZGUodHJ1ZSkgYXMgSFRNTFRhYmxlRWxlbWVudDtcbiAgICAgICAgY29uc3QgbWVhc3VyZVJvdyA9IHRhYmxlLnF1ZXJ5U2VsZWN0b3IoJy5hbnQtdGFibGUtbWVhc3VyZS1ub3cnKTtcbiAgICAgICAgaWYgKG1lYXN1cmVSb3cpIHtcbiAgICAgICAgICBtZWFzdXJlUm93LnBhcmVudEVsZW1lbnQucmVtb3ZlQ2hpbGQobWVhc3VyZVJvdyk7XG4gICAgICAgIH1cbiAgICAgICAgaHRtbCArPSB0YWJsZS5pbm5lckhUTUw7XG4gICAgICB9KTtcbiAgICAgIGh0bWwgKz0gJzwvdGFibGU+PGJyLz4nO1xuICAgIH1cbiAgICByZXR1cm4gaHRtbDtcbiAgfVxufVxuIl19
|