@ng-nest/ui 17.0.11 → 18.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/affix/affix.component.d.ts +0 -2
- package/affix/affix.property.d.ts +12 -7
- package/alert/alert.component.d.ts +12 -11
- package/alert/alert.property.d.ts +36 -35
- package/anchor/anchor.component.d.ts +15 -18
- package/anchor/anchor.property.d.ts +17 -8
- package/api/api.component.d.ts +2 -7
- package/auto-complete/auto-complete-portal.component.d.ts +20 -25
- package/auto-complete/auto-complete.component.d.ts +17 -34
- package/auto-complete/auto-complete.property.d.ts +282 -20
- package/avatar/avatar.component.d.ts +29 -19
- package/avatar/avatar.property.d.ts +78 -12
- package/back-top/back-top.component.d.ts +12 -17
- package/back-top/back-top.property.d.ts +12 -8
- package/badge/badge.component.d.ts +9 -16
- package/badge/badge.property.d.ts +95 -13
- package/base-form/base-form.component.d.ts +53 -26
- package/base-form/base-form.module.d.ts +1 -2
- package/base-form/base-form.property.d.ts +173 -45
- package/button/button.component.d.ts +16 -14
- package/button/button.property.d.ts +242 -100
- package/button/buttons.component.d.ts +8 -10
- package/calendar/calendar.component.d.ts +41 -27
- package/calendar/calendar.property.d.ts +69 -10
- package/card/card.component.d.ts +4 -6
- package/card/card.property.d.ts +50 -9
- package/carousel/carousel-panel.component.d.ts +15 -14
- package/carousel/carousel.component.d.ts +18 -19
- package/carousel/carousel.property.d.ts +168 -28
- package/cascade/cascade-portal.component.d.ts +28 -28
- package/cascade/cascade.component.d.ts +24 -30
- package/cascade/cascade.property.d.ts +292 -20
- package/checkbox/checkbox.component.d.ts +17 -17
- package/checkbox/checkbox.property.d.ts +274 -35
- package/collapse/collapse-panel.component.d.ts +5 -2
- package/collapse/collapse.component.d.ts +3 -7
- package/collapse/collapse.property.d.ts +113 -20
- package/color/color.component.d.ts +4 -9
- package/color/color.property.d.ts +36 -8
- package/color-picker/color-picker-portal.component.d.ts +40 -52
- package/color-picker/color-picker.component.d.ts +19 -28
- package/color-picker/color-picker.property.d.ts +260 -10
- package/comment/comment-reply.component.d.ts +1 -8
- package/comment/comment.component.d.ts +4 -14
- package/comment/comment.property.d.ts +21 -15
- package/container/aside.component.d.ts +3 -8
- package/container/container.component.d.ts +5 -9
- package/container/container.property.d.ts +33 -19
- package/container/footer.component.d.ts +2 -5
- package/container/header.component.d.ts +2 -5
- package/container/main.component.d.ts +2 -7
- package/core/animation/badge.d.ts +8 -0
- package/core/animation/connect.d.ts +8 -1
- package/core/animation/consts.d.ts +4 -0
- package/core/animation/drop.d.ts +4 -0
- package/core/animation/fade.d.ts +4 -0
- package/core/animation/move.d.ts +4 -0
- package/core/animation/opacity.d.ts +4 -0
- package/core/animation/slide.d.ts +4 -1
- package/core/config/config.d.ts +174 -108
- package/core/config/config.service.d.ts +5 -5
- package/core/config/index.d.ts +1 -0
- package/core/functions/chunk.d.ts +12 -1
- package/core/functions/clone-deep.d.ts +16 -0
- package/core/functions/convert.d.ts +77 -4
- package/core/functions/csspx.d.ts +5 -0
- package/core/functions/date.d.ts +59 -3
- package/core/functions/drop.d.ts +13 -1
- package/core/functions/flex.d.ts +4 -0
- package/core/functions/group-by.d.ts +5 -1
- package/core/functions/guid.d.ts +2 -1
- package/core/functions/has-in.d.ts +4 -0
- package/core/functions/order-by.d.ts +5 -1
- package/core/functions/parent-path.d.ts +8 -0
- package/core/functions/property.d.ts +12 -6
- package/core/functions/public-api.d.ts +1 -0
- package/core/functions/remove.d.ts +5 -1
- package/core/functions/resize.d.ts +13 -1
- package/core/interfaces/data.type.d.ts +172 -3
- package/core/interfaces/identify.type.d.ts +60 -0
- package/core/interfaces/layout.type.d.ts +88 -37
- package/core/interfaces/result-list.type.d.ts +91 -3
- package/core/services/http.service.d.ts +0 -22
- package/core/services/repository.service.d.ts +1 -1
- package/core/services/reuse-strategy.service.d.ts +0 -22
- package/core/services/storage.service.d.ts +0 -21
- package/core/theme/theme.d.ts +45 -1
- package/core/theme/theme.service.d.ts +46 -11
- package/core/util/animation.d.ts +1 -1
- package/core/util/camel-to-kebab.d.ts +13 -0
- package/core/util/check.d.ts +10 -2
- package/core/util/computed-style.d.ts +8 -0
- package/core/util/host.d.ts +3 -2
- package/core/util/html.d.ts +3 -2
- package/core/util/kebab-to-camel.d.ts +13 -0
- package/core/util/log.d.ts +10 -2
- package/core/util/option.d.ts +3 -4
- package/core/util/public-api.d.ts +2 -0
- package/crumb/crumb.component.d.ts +1 -10
- package/crumb/crumb.property.d.ts +12 -8
- package/date-picker/date-picker-portal.component.d.ts +80 -33
- package/date-picker/date-picker.component.d.ts +74 -32
- package/date-picker/date-picker.property.d.ts +662 -214
- package/date-picker/date-range-portal.component.d.ts +102 -49
- package/date-picker/date-range.component.d.ts +87 -43
- package/date-picker/picker-date.component.d.ts +63 -17
- package/date-picker/picker-month.component.d.ts +59 -13
- package/date-picker/picker-quarter.component.d.ts +61 -15
- package/date-picker/picker-year.component.d.ts +8 -11
- package/description/description-item.component.d.ts +1 -1
- package/description/description.component.d.ts +6 -10
- package/description/description.property.d.ts +135 -16
- package/dialog/dialog-portal.component.d.ts +4 -4
- package/dialog/dialog-portal.directives.d.ts +1 -1
- package/dialog/dialog.component.d.ts +30 -23
- package/dialog/dialog.property.d.ts +77 -134
- package/doc/doc.component.d.ts +2 -5
- package/drag/drag.directive.d.ts +1 -1
- package/drag/drag.property.d.ts +4 -5
- package/drawer/drawer-container.component.d.ts +1 -1
- package/drawer/drawer-portal.component.d.ts +1 -1
- package/drawer/drawer.component.d.ts +15 -14
- package/drawer/drawer.property.d.ts +26 -18
- package/dropdown/dropdown-portal.component.d.ts +36 -45
- package/dropdown/dropdown.component.d.ts +17 -21
- package/dropdown/dropdown.property.d.ts +24 -21
- package/empty/empty.component.d.ts +0 -7
- package/empty/empty.property.d.ts +27 -4
- package/esm2022/affix/affix.component.mjs +6 -11
- package/esm2022/affix/affix.module.mjs +4 -4
- package/esm2022/affix/affix.property.mjs +22 -20
- package/esm2022/alert/alert.component.mjs +39 -44
- package/esm2022/alert/alert.module.mjs +4 -4
- package/esm2022/alert/alert.property.mjs +102 -107
- package/esm2022/anchor/anchor-inner.component.mjs +3 -3
- package/esm2022/anchor/anchor.component.mjs +73 -95
- package/esm2022/anchor/anchor.module.mjs +4 -4
- package/esm2022/anchor/anchor.property.mjs +45 -35
- package/esm2022/api/api.component.mjs +11 -14
- package/esm2022/api/api.module.mjs +4 -4
- package/esm2022/auto-complete/auto-complete-portal.component.mjs +36 -47
- package/esm2022/auto-complete/auto-complete.component.mjs +122 -162
- package/esm2022/auto-complete/auto-complete.module.mjs +4 -4
- package/esm2022/auto-complete/auto-complete.property.mjs +142 -55
- package/esm2022/avatar/avatar-group.component.mjs +3 -3
- package/esm2022/avatar/avatar.component.mjs +75 -81
- package/esm2022/avatar/avatar.module.mjs +4 -4
- package/esm2022/avatar/avatar.property.mjs +116 -45
- package/esm2022/back-top/back-top.component.mjs +57 -73
- package/esm2022/back-top/back-top.module.mjs +4 -4
- package/esm2022/back-top/back-top.property.mjs +37 -29
- package/esm2022/badge/badge.component.mjs +51 -59
- package/esm2022/badge/badge.module.mjs +4 -4
- package/esm2022/badge/badge.property.mjs +111 -38
- package/esm2022/base-form/base-form.component.mjs +89 -81
- package/esm2022/base-form/base-form.module.mjs +7 -8
- package/esm2022/base-form/base-form.property.mjs +200 -89
- package/esm2022/button/button.component.mjs +50 -59
- package/esm2022/button/button.module.mjs +4 -4
- package/esm2022/button/button.property.mjs +293 -98
- package/esm2022/button/buttons.component.mjs +35 -21
- package/esm2022/calendar/calendar.component.mjs +56 -84
- package/esm2022/calendar/calendar.module.mjs +4 -4
- package/esm2022/calendar/calendar.property.mjs +78 -24
- package/esm2022/card/card.component.mjs +10 -14
- package/esm2022/card/card.module.mjs +4 -4
- package/esm2022/card/card.property.mjs +57 -22
- package/esm2022/carousel/carousel-panel.component.mjs +98 -76
- package/esm2022/carousel/carousel.component.mjs +55 -65
- package/esm2022/carousel/carousel.module.mjs +4 -4
- package/esm2022/carousel/carousel.property.mjs +215 -85
- package/esm2022/cascade/cascade-portal.component.mjs +77 -69
- package/esm2022/cascade/cascade.component.mjs +107 -135
- package/esm2022/cascade/cascade.module.mjs +4 -4
- package/esm2022/cascade/cascade.property.mjs +137 -48
- package/esm2022/checkbox/checkbox.component.mjs +68 -83
- package/esm2022/checkbox/checkbox.module.mjs +4 -4
- package/esm2022/checkbox/checkbox.property.mjs +136 -73
- package/esm2022/collapse/collapse-panel.component.mjs +31 -21
- package/esm2022/collapse/collapse.component.mjs +16 -21
- package/esm2022/collapse/collapse.module.mjs +4 -4
- package/esm2022/collapse/collapse.property.mjs +156 -66
- package/esm2022/color/color.component.mjs +25 -26
- package/esm2022/color/color.module.mjs +4 -4
- package/esm2022/color/color.property.mjs +47 -27
- package/esm2022/color-picker/color-picker-portal.component.mjs +120 -130
- package/esm2022/color-picker/color-picker.component.mjs +76 -117
- package/esm2022/color-picker/color-picker.module.mjs +4 -4
- package/esm2022/color-picker/color-picker.property.mjs +123 -27
- package/esm2022/comment/comment-reply.component.mjs +9 -24
- package/esm2022/comment/comment.component.mjs +11 -40
- package/esm2022/comment/comment.module.mjs +4 -4
- package/esm2022/comment/comment.property.mjs +27 -50
- package/esm2022/container/aside.component.mjs +12 -15
- package/esm2022/container/container.component.mjs +21 -24
- package/esm2022/container/container.module.mjs +4 -4
- package/esm2022/container/container.property.mjs +55 -51
- package/esm2022/container/footer.component.mjs +14 -16
- package/esm2022/container/header.component.mjs +14 -16
- package/esm2022/container/main.component.mjs +10 -13
- package/esm2022/core/animation/badge.mjs +17 -3
- package/esm2022/core/animation/connect.mjs +17 -99
- package/esm2022/core/animation/consts.mjs +5 -1
- package/esm2022/core/animation/drop.mjs +5 -1
- package/esm2022/core/animation/fade.mjs +13 -3
- package/esm2022/core/animation/move.mjs +5 -1
- package/esm2022/core/animation/opacity.mjs +5 -1
- package/esm2022/core/animation/slide.mjs +5 -23
- package/esm2022/core/config/config.mjs +1 -1
- package/esm2022/core/config/config.service.mjs +11 -59
- package/esm2022/core/config/index.mjs +2 -0
- package/esm2022/core/functions/chunk.mjs +12 -1
- package/esm2022/core/functions/clone-deep.mjs +17 -1
- package/esm2022/core/functions/convert.mjs +110 -13
- package/esm2022/core/functions/csspx.mjs +17 -0
- package/esm2022/core/functions/date.mjs +80 -4
- package/esm2022/core/functions/drop.mjs +13 -1
- package/esm2022/core/functions/flex.mjs +5 -1
- package/esm2022/core/functions/group-by.mjs +5 -1
- package/esm2022/core/functions/guid.mjs +3 -2
- package/esm2022/core/functions/has-in.mjs +5 -1
- package/esm2022/core/functions/order-by.mjs +5 -1
- package/esm2022/core/functions/parent-path.mjs +9 -1
- package/esm2022/core/functions/property.mjs +16 -8
- package/esm2022/core/functions/public-api.mjs +2 -1
- package/esm2022/core/functions/remove.mjs +5 -1
- package/esm2022/core/functions/resize.mjs +7 -5
- package/esm2022/core/interfaces/data.type.mjs +97 -8
- package/esm2022/core/interfaces/identify.type.mjs +5 -2
- package/esm2022/core/interfaces/layout.type.mjs +1 -1
- package/esm2022/core/interfaces/result-list.type.mjs +1 -1
- package/esm2022/core/services/http.service.mjs +4 -33
- package/esm2022/core/services/preloading-strategy.service.mjs +4 -6
- package/esm2022/core/services/repository.service.mjs +1 -1
- package/esm2022/core/services/reuse-strategy.service.mjs +1 -26
- package/esm2022/core/services/storage.service.mjs +4 -26
- package/esm2022/core/theme/theme.mjs +55 -11
- package/esm2022/core/theme/theme.service.mjs +92 -20
- package/esm2022/core/util/animation.mjs +2 -23
- package/esm2022/core/util/camel-to-kebab.mjs +16 -0
- package/esm2022/core/util/check.mjs +11 -3
- package/esm2022/core/util/computed-style.mjs +9 -1
- package/esm2022/core/util/host.mjs +4 -3
- package/esm2022/core/util/html.mjs +5 -4
- package/esm2022/core/util/kebab-to-camel.mjs +16 -0
- package/esm2022/core/util/log.mjs +11 -3
- package/esm2022/core/util/option.mjs +4 -5
- package/esm2022/core/util/public-api.mjs +3 -1
- package/esm2022/crumb/crumb.component.mjs +6 -29
- package/esm2022/crumb/crumb.module.mjs +4 -4
- package/esm2022/crumb/crumb.property.mjs +21 -26
- package/esm2022/date-picker/date-picker-portal.component.mjs +86 -102
- package/esm2022/date-picker/date-picker.component.mjs +157 -191
- package/esm2022/date-picker/date-picker.module.mjs +4 -4
- package/esm2022/date-picker/date-picker.property.mjs +440 -462
- package/esm2022/date-picker/date-quarter.pipe.mjs +3 -3
- package/esm2022/date-picker/date-range-portal.component.mjs +172 -186
- package/esm2022/date-picker/date-range.component.mjs +224 -266
- package/esm2022/date-picker/picker-date.component.mjs +150 -150
- package/esm2022/date-picker/picker-month.component.mjs +115 -118
- package/esm2022/date-picker/picker-quarter.component.mjs +120 -119
- package/esm2022/date-picker/picker-year.component.mjs +121 -108
- package/esm2022/description/description-item.component.mjs +12 -11
- package/esm2022/description/description.component.mjs +33 -48
- package/esm2022/description/description.module.mjs +4 -4
- package/esm2022/description/description.property.mjs +175 -52
- package/esm2022/dialog/dialog-container.component.mjs +3 -3
- package/esm2022/dialog/dialog-portal.component.mjs +14 -20
- package/esm2022/dialog/dialog-portal.directives.mjs +20 -20
- package/esm2022/dialog/dialog-ref.mjs +1 -1
- package/esm2022/dialog/dialog.component.mjs +117 -131
- package/esm2022/dialog/dialog.module.mjs +4 -4
- package/esm2022/dialog/dialog.property.mjs +149 -139
- package/esm2022/dialog/dialog.service.mjs +7 -7
- package/esm2022/doc/doc.component.mjs +11 -12
- package/esm2022/doc/doc.module.mjs +4 -4
- package/esm2022/drag/drag.directive.mjs +8 -21
- package/esm2022/drag/drag.module.mjs +4 -4
- package/esm2022/drag/drag.property.mjs +10 -16
- package/esm2022/drawer/drawer-container.component.mjs +9 -9
- package/esm2022/drawer/drawer-portal.component.mjs +11 -13
- package/esm2022/drawer/drawer-portal.directives.mjs +9 -9
- package/esm2022/drawer/drawer.component.mjs +40 -59
- package/esm2022/drawer/drawer.module.mjs +4 -4
- package/esm2022/drawer/drawer.property.mjs +47 -54
- package/esm2022/drawer/drawer.service.mjs +6 -6
- package/esm2022/dropdown/dropdown-portal.component.mjs +90 -91
- package/esm2022/dropdown/dropdown.component.mjs +75 -91
- package/esm2022/dropdown/dropdown.module.mjs +4 -4
- package/esm2022/dropdown/dropdown.property.mjs +62 -59
- package/esm2022/empty/empty.component.mjs +6 -26
- package/esm2022/empty/empty.module.mjs +4 -4
- package/esm2022/empty/empty.property.mjs +41 -20
- package/esm2022/examples/examples.component.mjs +11 -12
- package/esm2022/examples/examples.module.mjs +4 -4
- package/esm2022/find/find.component.mjs +188 -232
- package/esm2022/find/find.module.mjs +4 -4
- package/esm2022/find/find.property.mjs +234 -193
- package/esm2022/form/control.component.mjs +138 -116
- package/esm2022/form/form.component.mjs +28 -36
- package/esm2022/form/form.module.mjs +4 -4
- package/esm2022/form/form.property.mjs +57 -55
- package/esm2022/highlight/highlight.component.mjs +54 -59
- package/esm2022/highlight/highlight.module.mjs +4 -4
- package/esm2022/highlight/highlight.property.mjs +25 -21
- package/esm2022/highlight/highlight.service.mjs +17 -0
- package/esm2022/highlight/public-api.mjs +2 -1
- package/esm2022/i18n/i18n.directive.mjs +17 -31
- package/esm2022/i18n/i18n.module.mjs +4 -4
- package/esm2022/i18n/i18n.pipe.mjs +4 -4
- package/esm2022/i18n/i18n.property.mjs +2 -2
- package/esm2022/i18n/i18n.service.mjs +4 -4
- package/esm2022/i18n/languages/ar_EG.mjs +122 -77
- package/esm2022/i18n/languages/bg_BG.mjs +135 -87
- package/esm2022/i18n/languages/ca_ES.mjs +130 -82
- package/esm2022/i18n/languages/cs_CZ.mjs +127 -79
- package/esm2022/i18n/languages/da_DK.mjs +129 -81
- package/esm2022/i18n/languages/de_DE.mjs +125 -77
- package/esm2022/i18n/languages/el_GR.mjs +132 -84
- package/esm2022/i18n/languages/en_GB.mjs +5 -2
- package/esm2022/i18n/languages/en_US.mjs +5 -2
- package/esm2022/i18n/languages/es_ES.mjs +131 -83
- package/esm2022/i18n/languages/et_EE.mjs +130 -82
- package/esm2022/i18n/languages/fa_IR.mjs +109 -61
- package/esm2022/i18n/languages/fi_FI.mjs +134 -86
- package/esm2022/i18n/languages/fr_BE.mjs +128 -80
- package/esm2022/i18n/languages/fr_FR.mjs +127 -79
- package/esm2022/i18n/languages/he_IL.mjs +119 -74
- package/esm2022/i18n/languages/hi_IN.mjs +104 -56
- package/esm2022/i18n/languages/hr_HR.mjs +133 -85
- package/esm2022/i18n/languages/hu_HU.mjs +132 -84
- package/esm2022/i18n/languages/hy_AM.mjs +133 -85
- package/esm2022/i18n/languages/id_ID.mjs +119 -71
- package/esm2022/i18n/languages/is_IS.mjs +125 -77
- package/esm2022/i18n/languages/it_IT.mjs +127 -79
- package/esm2022/i18n/languages/ja_JP.mjs +95 -47
- package/esm2022/i18n/languages/ka_GE.mjs +106 -58
- package/esm2022/i18n/languages/kn_IN.mjs +110 -62
- package/esm2022/i18n/languages/ko_KR.mjs +126 -70
- package/esm2022/i18n/languages/ku_IQ.mjs +117 -85
- package/esm2022/i18n/languages/lv_LV.mjs +128 -72
- package/esm2022/i18n/languages/mn_MN.mjs +138 -82
- package/esm2022/i18n/languages/ms_MY.mjs +124 -68
- package/esm2022/i18n/languages/nb_NO.mjs +133 -77
- package/esm2022/i18n/languages/ne_NP.mjs +117 -61
- package/esm2022/i18n/languages/nl_BE.mjs +134 -78
- package/esm2022/i18n/languages/nl_NL.mjs +134 -78
- package/esm2022/i18n/languages/pl_PL.mjs +132 -76
- package/esm2022/i18n/languages/pt_BR.mjs +133 -77
- package/esm2022/i18n/languages/pt_PT.mjs +133 -77
- package/esm2022/i18n/languages/ro_RO.mjs +130 -74
- package/esm2022/i18n/languages/ru_RU.mjs +131 -75
- package/esm2022/i18n/languages/sk_SK.mjs +130 -83
- package/esm2022/i18n/languages/sl_SI.mjs +121 -73
- package/esm2022/i18n/languages/sr_RS.mjs +138 -90
- package/esm2022/i18n/languages/sv_SE.mjs +132 -84
- package/esm2022/i18n/languages/ta_IN.mjs +117 -61
- package/esm2022/i18n/languages/th_TH.mjs +99 -43
- package/esm2022/i18n/languages/tr_TR.mjs +126 -70
- package/esm2022/i18n/languages/uk_UA.mjs +124 -68
- package/esm2022/i18n/languages/vi_VN.mjs +133 -77
- package/esm2022/i18n/languages/zh_CN.mjs +5 -2
- package/esm2022/i18n/languages/zh_TW.mjs +5 -2
- package/esm2022/icon/icon.component.mjs +46 -77
- package/esm2022/icon/icon.module.mjs +4 -4
- package/esm2022/icon/icon.property.mjs +52 -30
- package/esm2022/icon/icon.service.mjs +15 -14
- package/esm2022/image/image-group.component.mjs +15 -15
- package/esm2022/image/image-preview.component.mjs +47 -46
- package/esm2022/image/image.component.mjs +34 -53
- package/esm2022/image/image.module.mjs +4 -4
- package/esm2022/image/image.property.mjs +152 -38
- package/esm2022/index.mjs +1 -3
- package/esm2022/inner/inner.component.mjs +15 -20
- package/esm2022/inner/inner.module.mjs +4 -4
- package/esm2022/inner/inner.property.mjs +17 -15
- package/esm2022/input/input-group.component.mjs +5 -7
- package/esm2022/input/input.component.mjs +130 -143
- package/esm2022/input/input.module.mjs +4 -4
- package/esm2022/input/input.property.mjs +205 -143
- package/esm2022/input-number/input-number.component.mjs +68 -86
- package/esm2022/input-number/input-number.module.mjs +4 -4
- package/esm2022/input-number/input-number.property.mjs +130 -60
- package/esm2022/keyword/keyword.directive.mjs +46 -54
- package/esm2022/keyword/keyword.module.mjs +4 -4
- package/esm2022/keyword/keyword.property.mjs +32 -28
- package/esm2022/layout/col.component.mjs +48 -51
- package/esm2022/layout/layout.module.mjs +4 -4
- package/esm2022/layout/layout.property.mjs +71 -63
- package/esm2022/layout/row.component.mjs +36 -27
- package/esm2022/link/link.component.mjs +18 -45
- package/esm2022/link/link.module.mjs +4 -4
- package/esm2022/link/link.property.mjs +101 -41
- package/esm2022/list/list-drop-group.directive.mjs +9 -18
- package/esm2022/list/list-option.component.mjs +16 -33
- package/esm2022/list/list.component.mjs +160 -164
- package/esm2022/list/list.module.mjs +4 -4
- package/esm2022/list/list.property.mjs +195 -188
- package/esm2022/loading/loading.component.mjs +44 -45
- package/esm2022/loading/loading.module.mjs +4 -4
- package/esm2022/loading/loading.property.mjs +50 -52
- package/esm2022/menu/menu-node.component.mjs +21 -21
- package/esm2022/menu/menu.component.mjs +57 -76
- package/esm2022/menu/menu.module.mjs +4 -4
- package/esm2022/menu/menu.property.mjs +56 -73
- package/esm2022/message/message.component.mjs +8 -8
- package/esm2022/message/message.module.mjs +4 -4
- package/esm2022/message/message.property.mjs +1 -1
- package/esm2022/message/message.service.mjs +7 -7
- package/esm2022/message-box/message-box.component.mjs +5 -5
- package/esm2022/message-box/message-box.module.mjs +4 -4
- package/esm2022/message-box/message-box.service.mjs +6 -6
- package/esm2022/notification/notification.component.mjs +8 -8
- package/esm2022/notification/notification.module.mjs +4 -4
- package/esm2022/notification/notification.property.mjs +1 -1
- package/esm2022/notification/notification.service.mjs +8 -8
- package/esm2022/outlet/outlet.directive.mjs +12 -14
- package/esm2022/outlet/outlet.module.mjs +4 -4
- package/esm2022/outlet/outlet.property.mjs +2 -2
- package/esm2022/page-header/page-header.component.mjs +12 -28
- package/esm2022/page-header/page-header.module.mjs +4 -4
- package/esm2022/page-header/page-header.property.mjs +31 -27
- package/esm2022/pagination/pagination.component.mjs +74 -100
- package/esm2022/pagination/pagination.module.mjs +4 -4
- package/esm2022/pagination/pagination.property.mjs +99 -136
- package/esm2022/pattern/pattern.component.mjs +12 -13
- package/esm2022/pattern/pattern.module.mjs +4 -4
- package/esm2022/pattern/pattern.property.mjs +2 -2
- package/esm2022/popconfirm/popconfirm.component.mjs +35 -47
- package/esm2022/popconfirm/popconfirm.module.mjs +4 -4
- package/esm2022/popconfirm/popconfirm.property.mjs +76 -62
- package/esm2022/popover/popover-portal.component.mjs +24 -75
- package/esm2022/popover/popover.directive.mjs +70 -86
- package/esm2022/popover/popover.module.mjs +4 -4
- package/esm2022/popover/popover.property.mjs +71 -58
- package/esm2022/portal/portal.module.mjs +4 -4
- package/esm2022/portal/portal.property.mjs +1 -1
- package/esm2022/portal/portal.service.mjs +4 -4
- package/esm2022/progress/progress.component.mjs +173 -167
- package/esm2022/progress/progress.module.mjs +4 -4
- package/esm2022/progress/progress.property.mjs +67 -71
- package/esm2022/radio/radio.component.mjs +45 -61
- package/esm2022/radio/radio.module.mjs +4 -4
- package/esm2022/radio/radio.property.mjs +139 -66
- package/esm2022/rate/rate.component.mjs +61 -79
- package/esm2022/rate/rate.module.mjs +4 -4
- package/esm2022/rate/rate.property.mjs +121 -29
- package/esm2022/resizable/resizable.directive.mjs +30 -45
- package/esm2022/resizable/resizable.module.mjs +4 -4
- package/esm2022/resizable/resizable.property.mjs +16 -46
- package/esm2022/result/result.component.mjs +13 -17
- package/esm2022/result/result.module.mjs +4 -4
- package/esm2022/result/result.property.mjs +25 -17
- package/esm2022/ripple/ripple.directive.mjs +38 -27
- package/esm2022/ripple/ripple.module.mjs +4 -4
- package/esm2022/ripple/ripple.property.mjs +27 -20
- package/esm2022/select/select-portal.component.mjs +52 -67
- package/esm2022/select/select.component.mjs +301 -289
- package/esm2022/select/select.module.mjs +4 -4
- package/esm2022/select/select.property.mjs +195 -102
- package/esm2022/skeleton/skeleton.component.mjs +12 -23
- package/esm2022/skeleton/skeleton.module.mjs +4 -4
- package/esm2022/skeleton/skeleton.property.mjs +31 -28
- package/esm2022/slider/slider.component.mjs +103 -149
- package/esm2022/slider/slider.module.mjs +4 -4
- package/esm2022/slider/slider.property.mjs +60 -79
- package/esm2022/slider-select/slider-select.component.mjs +201 -220
- package/esm2022/slider-select/slider-select.module.mjs +4 -4
- package/esm2022/slider-select/slider-select.property.mjs +143 -70
- package/esm2022/statistic/countdown.component.mjs +13 -16
- package/esm2022/statistic/statistic.component.mjs +23 -21
- package/esm2022/statistic/statistic.module.mjs +4 -4
- package/esm2022/statistic/statistic.property.mjs +68 -34
- package/esm2022/steps/steps.component.mjs +33 -63
- package/esm2022/steps/steps.module.mjs +4 -4
- package/esm2022/steps/steps.property.mjs +28 -39
- package/esm2022/switch/switch.component.mjs +22 -37
- package/esm2022/switch/switch.module.mjs +4 -4
- package/esm2022/switch/switch.property.mjs +122 -32
- package/esm2022/table/table-body.component.mjs +134 -139
- package/esm2022/table/table-foot.component.mjs +15 -18
- package/esm2022/table/table-head.component.mjs +60 -91
- package/esm2022/table/table.component.mjs +192 -222
- package/esm2022/table/table.module.mjs +4 -4
- package/esm2022/table/table.property.mjs +396 -341
- package/esm2022/tabs/tab-content.component.mjs +13 -16
- package/esm2022/tabs/tab-link.directive.mjs +6 -6
- package/esm2022/tabs/tab.component.mjs +9 -17
- package/esm2022/tabs/tabs.component.mjs +83 -135
- package/esm2022/tabs/tabs.module.mjs +4 -4
- package/esm2022/tabs/tabs.property.mjs +80 -91
- package/esm2022/tag/tag.component.mjs +19 -33
- package/esm2022/tag/tag.module.mjs +4 -4
- package/esm2022/tag/tag.property.mjs +44 -68
- package/esm2022/text-retract/text-retract.component.mjs +29 -46
- package/esm2022/text-retract/text-retract.module.mjs +4 -4
- package/esm2022/text-retract/text-retract.property.mjs +22 -18
- package/esm2022/textarea/textarea.component.mjs +49 -79
- package/esm2022/textarea/textarea.module.mjs +4 -4
- package/esm2022/textarea/textarea.property.mjs +124 -47
- package/esm2022/theme/theme.component.mjs +86 -81
- package/esm2022/theme/theme.module.mjs +4 -4
- package/esm2022/theme/theme.property.mjs +35 -46
- package/esm2022/time-ago/time-ago.module.mjs +4 -4
- package/esm2022/time-ago/time-ago.pipe.mjs +12 -11
- package/esm2022/time-ago/time-ago.property.mjs +2 -2
- package/esm2022/time-picker/time-picker-frame.component.mjs +173 -188
- package/esm2022/time-picker/time-picker-portal.component.mjs +35 -42
- package/esm2022/time-picker/time-picker.component.mjs +139 -170
- package/esm2022/time-picker/time-picker.module.mjs +4 -4
- package/esm2022/time-picker/time-picker.property.mjs +158 -70
- package/esm2022/time-range/time-range.module.mjs +4 -4
- package/esm2022/time-range/time-range.pipe.mjs +10 -10
- package/esm2022/time-range/time-range.property.mjs +2 -2
- package/esm2022/timeline/timeline.component.mjs +14 -38
- package/esm2022/timeline/timeline.module.mjs +4 -4
- package/esm2022/timeline/timeline.property.mjs +30 -30
- package/esm2022/tooltip/tooltip-portal.component.mjs +51 -65
- package/esm2022/tooltip/tooltip.directive.mjs +65 -62
- package/esm2022/tooltip/tooltip.module.mjs +4 -4
- package/esm2022/tooltip/tooltip.property.mjs +53 -47
- package/esm2022/transfer/transfer.component.mjs +225 -184
- package/esm2022/transfer/transfer.module.mjs +4 -4
- package/esm2022/transfer/transfer.property.mjs +84 -76
- package/esm2022/tree/tree-node.component.mjs +142 -132
- package/esm2022/tree/tree.component.mjs +236 -232
- package/esm2022/tree/tree.module.mjs +4 -4
- package/esm2022/tree/tree.property.mjs +228 -226
- package/esm2022/tree/tree.service.mjs +4 -4
- package/esm2022/tree-file/tree-file.component.mjs +34 -43
- package/esm2022/tree-file/tree-file.module.mjs +4 -4
- package/esm2022/tree-file/tree-file.property.mjs +45 -56
- package/esm2022/tree-select/tree-select-portal.component.mjs +45 -78
- package/esm2022/tree-select/tree-select.component.mjs +283 -296
- package/esm2022/tree-select/tree-select.module.mjs +4 -4
- package/esm2022/tree-select/tree-select.property.mjs +203 -125
- package/esm2022/typography/typography.component.mjs +13 -10
- package/esm2022/typography/typography.module.mjs +4 -4
- package/esm2022/typography/typography.property.mjs +12 -11
- package/esm2022/upload/upload-portal.component.mjs +54 -57
- package/esm2022/upload/upload.component.mjs +79 -98
- package/esm2022/upload/upload.module.mjs +4 -4
- package/esm2022/upload/upload.property.mjs +73 -68
- package/examples/examples.component.d.ts +2 -5
- package/fesm2022/ng-nest-ui-affix.mjs +30 -32
- package/fesm2022/ng-nest-ui-affix.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-alert.mjs +142 -152
- package/fesm2022/ng-nest-ui-alert.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-anchor.mjs +121 -133
- package/fesm2022/ng-nest-ui-anchor.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-api.mjs +14 -17
- package/fesm2022/ng-nest-ui-api.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-auto-complete.mjs +296 -260
- package/fesm2022/ng-nest-ui-auto-complete.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-avatar.mjs +195 -130
- package/fesm2022/ng-nest-ui-avatar.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-back-top.mjs +95 -103
- package/fesm2022/ng-nest-ui-back-top.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-badge.mjs +161 -96
- package/fesm2022/ng-nest-ui-badge.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-base-form.mjs +286 -166
- package/fesm2022/ng-nest-ui-base-form.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-button.mjs +376 -175
- package/fesm2022/ng-nest-ui-button.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-calendar.mjs +134 -108
- package/fesm2022/ng-nest-ui-calendar.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-card.mjs +67 -36
- package/fesm2022/ng-nest-ui-card.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-carousel.mjs +365 -223
- package/fesm2022/ng-nest-ui-carousel.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-cascade.mjs +318 -249
- package/fesm2022/ng-nest-ui-cascade.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-checkbox.mjs +203 -155
- package/fesm2022/ng-nest-ui-checkbox.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-collapse.mjs +202 -106
- package/fesm2022/ng-nest-ui-collapse.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-color-picker.mjs +316 -270
- package/fesm2022/ng-nest-ui-color-picker.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-color.mjs +73 -54
- package/fesm2022/ng-nest-ui-color.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-comment.mjs +44 -108
- package/fesm2022/ng-nest-ui-comment.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-container.mjs +119 -123
- package/fesm2022/ng-nest-ui-container.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-core.mjs +985 -664
- package/fesm2022/ng-nest-ui-core.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-crumb.mjs +28 -55
- package/fesm2022/ng-nest-ui-crumb.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-date-picker.mjs +1552 -1671
- package/fesm2022/ng-nest-ui-date-picker.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-description.mjs +218 -109
- package/fesm2022/ng-nest-ui-description.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-dialog.mjs +307 -316
- package/fesm2022/ng-nest-ui-dialog.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-doc.mjs +14 -15
- package/fesm2022/ng-nest-ui-doc.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-drag.mjs +20 -39
- package/fesm2022/ng-nest-ui-drag.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-drawer.mjs +116 -145
- package/fesm2022/ng-nest-ui-drawer.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-dropdown.mjs +223 -238
- package/fesm2022/ng-nest-ui-dropdown.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-empty.mjs +49 -46
- package/fesm2022/ng-nest-ui-empty.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-examples.mjs +14 -15
- package/fesm2022/ng-nest-ui-examples.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-find.mjs +422 -425
- package/fesm2022/ng-nest-ui-find.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-form.mjs +218 -203
- package/fesm2022/ng-nest-ui-form.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-highlight.mjs +93 -81
- package/fesm2022/ng-nest-ui-highlight.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-i18n.mjs +5892 -3516
- package/fesm2022/ng-nest-ui-i18n.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-icon.mjs +112 -120
- package/fesm2022/ng-nest-ui-icon.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-image.mjs +244 -147
- package/fesm2022/ng-nest-ui-image.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-inner.mjs +33 -35
- package/fesm2022/ng-nest-ui-inner.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-input-number.mjs +198 -146
- package/fesm2022/ng-nest-ui-input-number.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-input.mjs +340 -292
- package/fesm2022/ng-nest-ui-input.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-keyword.mjs +78 -82
- package/fesm2022/ng-nest-ui-keyword.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-layout.mjs +151 -140
- package/fesm2022/ng-nest-ui-layout.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-link.mjs +119 -86
- package/fesm2022/ng-nest-ui-link.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-list.mjs +376 -400
- package/fesm2022/ng-nest-ui-list.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-loading.mjs +94 -97
- package/fesm2022/ng-nest-ui-loading.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-menu.mjs +131 -167
- package/fesm2022/ng-nest-ui-menu.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-message-box.mjs +13 -13
- package/fesm2022/ng-nest-ui-message-box.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-message.mjs +17 -17
- package/fesm2022/ng-nest-ui-message.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-notification.mjs +18 -18
- package/fesm2022/ng-nest-ui-notification.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-outlet.mjs +16 -18
- package/fesm2022/ng-nest-ui-outlet.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-page-header.mjs +44 -55
- package/fesm2022/ng-nest-ui-page-header.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-pagination.mjs +173 -236
- package/fesm2022/ng-nest-ui-pagination.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-pattern.mjs +16 -17
- package/fesm2022/ng-nest-ui-pattern.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-popconfirm.mjs +110 -107
- package/fesm2022/ng-nest-ui-popconfirm.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-popover.mjs +163 -215
- package/fesm2022/ng-nest-ui-popover.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-portal.mjs +7 -7
- package/fesm2022/ng-nest-ui-portal.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-progress.mjs +240 -238
- package/fesm2022/ng-nest-ui-progress.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-radio.mjs +184 -127
- package/fesm2022/ng-nest-ui-radio.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-rate.mjs +182 -108
- package/fesm2022/ng-nest-ui-rate.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-resizable.mjs +46 -91
- package/fesm2022/ng-nest-ui-resizable.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-result.mjs +38 -34
- package/fesm2022/ng-nest-ui-result.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-ripple.mjs +66 -48
- package/fesm2022/ng-nest-ui-ripple.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-select.mjs +547 -459
- package/fesm2022/ng-nest-ui-select.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-skeleton.mjs +44 -52
- package/fesm2022/ng-nest-ui-skeleton.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-slider-select.mjs +344 -290
- package/fesm2022/ng-nest-ui-slider-select.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-slider.mjs +163 -228
- package/fesm2022/ng-nest-ui-slider.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-statistic.mjs +102 -68
- package/fesm2022/ng-nest-ui-statistic.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-steps.mjs +61 -102
- package/fesm2022/ng-nest-ui-steps.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-switch.mjs +145 -69
- package/fesm2022/ng-nest-ui-switch.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-table.mjs +784 -800
- package/fesm2022/ng-nest-ui-table.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-tabs.mjs +185 -259
- package/fesm2022/ng-nest-ui-tabs.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-tag.mjs +63 -101
- package/fesm2022/ng-nest-ui-tag.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-text-retract.mjs +52 -64
- package/fesm2022/ng-nest-ui-text-retract.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-textarea.mjs +173 -126
- package/fesm2022/ng-nest-ui-textarea.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-theme.mjs +123 -129
- package/fesm2022/ng-nest-ui-theme.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-time-ago.mjs +16 -15
- package/fesm2022/ng-nest-ui-time-ago.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-time-picker.mjs +498 -463
- package/fesm2022/ng-nest-ui-time-picker.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-time-range.mjs +14 -14
- package/fesm2022/ng-nest-ui-time-range.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-timeline.mjs +44 -68
- package/fesm2022/ng-nest-ui-timeline.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-tooltip.mjs +168 -170
- package/fesm2022/ng-nest-ui-tooltip.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-transfer.mjs +311 -262
- package/fesm2022/ng-nest-ui-transfer.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-tree-file.mjs +80 -99
- package/fesm2022/ng-nest-ui-tree-file.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-tree-select.mjs +527 -495
- package/fesm2022/ng-nest-ui-tree-select.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-tree.mjs +601 -587
- package/fesm2022/ng-nest-ui-tree.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-typography.mjs +26 -22
- package/fesm2022/ng-nest-ui-typography.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-upload.mjs +204 -220
- package/fesm2022/ng-nest-ui-upload.mjs.map +1 -1
- package/fesm2022/ng-nest-ui.mjs +0 -2
- package/fesm2022/ng-nest-ui.mjs.map +1 -1
- package/find/find.component.d.ts +30 -34
- package/find/find.property.d.ts +321 -108
- package/form/control.component.d.ts +37 -18
- package/form/form.component.d.ts +8 -10
- package/form/form.property.d.ts +111 -27
- package/highlight/highlight.component.d.ts +10 -17
- package/highlight/highlight.property.d.ts +40 -11
- package/highlight/highlight.service.d.ts +8 -0
- package/highlight/public-api.d.ts +1 -0
- package/i18n/i18n.directive.d.ts +6 -9
- package/i18n/i18n.property.d.ts +6 -2
- package/i18n/i18n.service.d.ts +2 -2
- package/i18n/languages/ar_EG.d.ts +56 -0
- package/i18n/languages/bg_BG.d.ts +56 -0
- package/i18n/languages/ca_ES.d.ts +56 -0
- package/i18n/languages/cs_CZ.d.ts +56 -0
- package/i18n/languages/da_DK.d.ts +56 -0
- package/i18n/languages/de_DE.d.ts +56 -0
- package/i18n/languages/el_GR.d.ts +56 -0
- package/i18n/languages/en_GB.d.ts +3 -0
- package/i18n/languages/en_US.d.ts +3 -0
- package/i18n/languages/es_ES.d.ts +56 -0
- package/i18n/languages/et_EE.d.ts +56 -0
- package/i18n/languages/fa_IR.d.ts +56 -0
- package/i18n/languages/fi_FI.d.ts +56 -0
- package/i18n/languages/fr_BE.d.ts +60 -4
- package/i18n/languages/fr_FR.d.ts +56 -0
- package/i18n/languages/he_IL.d.ts +56 -0
- package/i18n/languages/hi_IN.d.ts +56 -0
- package/i18n/languages/hr_HR.d.ts +56 -0
- package/i18n/languages/hu_HU.d.ts +56 -0
- package/i18n/languages/hy_AM.d.ts +56 -0
- package/i18n/languages/id_ID.d.ts +56 -0
- package/i18n/languages/is_IS.d.ts +56 -0
- package/i18n/languages/it_IT.d.ts +56 -0
- package/i18n/languages/ja_JP.d.ts +56 -0
- package/i18n/languages/ka_GE.d.ts +56 -0
- package/i18n/languages/kn_IN.d.ts +56 -0
- package/i18n/languages/ko_KR.d.ts +56 -0
- package/i18n/languages/ku_IQ.d.ts +32 -0
- package/i18n/languages/lv_LV.d.ts +56 -0
- package/i18n/languages/mn_MN.d.ts +56 -0
- package/i18n/languages/ms_MY.d.ts +56 -0
- package/i18n/languages/nb_NO.d.ts +56 -0
- package/i18n/languages/ne_NP.d.ts +56 -0
- package/i18n/languages/nl_BE.d.ts +56 -0
- package/i18n/languages/nl_NL.d.ts +56 -0
- package/i18n/languages/pl_PL.d.ts +56 -0
- package/i18n/languages/pt_BR.d.ts +56 -0
- package/i18n/languages/pt_PT.d.ts +56 -0
- package/i18n/languages/ro_RO.d.ts +56 -0
- package/i18n/languages/ru_RU.d.ts +56 -0
- package/i18n/languages/sk_SK.d.ts +56 -1
- package/i18n/languages/sl_SI.d.ts +56 -0
- package/i18n/languages/sr_RS.d.ts +56 -0
- package/i18n/languages/sv_SE.d.ts +56 -0
- package/i18n/languages/ta_IN.d.ts +56 -0
- package/i18n/languages/th_TH.d.ts +56 -0
- package/i18n/languages/tr_TR.d.ts +56 -0
- package/i18n/languages/uk_UA.d.ts +56 -0
- package/i18n/languages/vi_VN.d.ts +56 -0
- package/i18n/languages/zh_CN.d.ts +3 -0
- package/i18n/languages/zh_TW.d.ts +3 -0
- package/icon/icon.component.d.ts +8 -14
- package/icon/icon.property.d.ts +31 -13
- package/icon/icon.service.d.ts +1 -1
- package/image/image-group.component.d.ts +1 -3
- package/image/image-preview.component.d.ts +11 -13
- package/image/image.component.d.ts +10 -11
- package/image/image.property.d.ts +117 -16
- package/index.d.ts +0 -2
- package/inner/inner.component.d.ts +3 -10
- package/inner/inner.property.d.ts +8 -4
- package/input/input-group.component.d.ts +0 -2
- package/input/input.component.d.ts +32 -30
- package/input/input.property.d.ts +347 -65
- package/input-number/input-number.component.d.ts +14 -19
- package/input-number/input-number.property.d.ts +292 -26
- package/keyword/keyword.directive.d.ts +4 -12
- package/keyword/keyword.property.d.ts +11 -7
- package/layout/col.component.d.ts +8 -11
- package/layout/layout.property.d.ts +25 -18
- package/layout/row.component.d.ts +7 -8
- package/link/link.component.d.ts +7 -13
- package/link/link.property.d.ts +64 -11
- package/list/list-drop-group.directive.d.ts +3 -5
- package/list/list-option.component.d.ts +7 -9
- package/list/list.component.d.ts +35 -30
- package/list/list.property.d.ts +126 -61
- package/loading/loading.component.d.ts +12 -12
- package/loading/loading.property.d.ts +20 -11
- package/menu/menu-node.component.d.ts +11 -8
- package/menu/menu.component.d.ts +18 -19
- package/menu/menu.property.d.ts +23 -28
- package/message/message.property.d.ts +1 -1
- package/notification/notification.property.d.ts +1 -1
- package/outlet/outlet.directive.d.ts +4 -4
- package/outlet/outlet.property.d.ts +1 -1
- package/package.json +78 -84
- package/page-header/page-header.component.d.ts +4 -8
- package/page-header/page-header.property.d.ts +11 -8
- package/pagination/pagination.component.d.ts +15 -22
- package/pagination/pagination.property.d.ts +34 -66
- package/pattern/pattern.component.d.ts +2 -5
- package/pattern/pattern.property.d.ts +1 -1
- package/popconfirm/popconfirm.component.d.ts +12 -14
- package/popconfirm/popconfirm.property.d.ts +32 -19
- package/popover/popover-portal.component.d.ts +16 -33
- package/popover/popover.directive.d.ts +6 -12
- package/popover/popover.property.d.ts +31 -22
- package/portal/portal.property.d.ts +2 -2
- package/portal/portal.service.d.ts +2 -2
- package/progress/progress.component.d.ts +25 -30
- package/progress/progress.property.d.ts +29 -20
- package/radio/radio.component.d.ts +14 -15
- package/radio/radio.property.d.ts +271 -31
- package/rate/rate.component.d.ts +14 -17
- package/rate/rate.property.d.ts +259 -12
- package/resizable/resizable.directive.d.ts +5 -5
- package/resizable/resizable.property.d.ts +14 -14
- package/result/result.component.d.ts +5 -7
- package/result/result.property.d.ts +11 -7
- package/ripple/ripple.directive.d.ts +5 -4
- package/ripple/ripple.property.d.ts +14 -5
- package/select/select-portal.component.d.ts +39 -43
- package/select/select.component.d.ts +53 -56
- package/select/select.property.d.ts +317 -37
- package/skeleton/skeleton.component.d.ts +4 -8
- package/skeleton/skeleton.property.d.ts +17 -8
- package/slider/slider.component.d.ts +34 -31
- package/slider/slider.property.d.ts +26 -22
- package/slider-select/slider-select.component.d.ts +38 -38
- package/slider-select/slider-select.property.d.ts +302 -28
- package/statistic/countdown.component.d.ts +2 -5
- package/statistic/statistic.component.d.ts +3 -8
- package/statistic/statistic.property.d.ts +44 -13
- package/steps/steps.component.d.ts +6 -16
- package/steps/steps.property.d.ts +15 -10
- package/style/core/index.css +0 -38
- package/style/core/index.css.map +1 -1
- package/style/core/var.scss +0 -4
- package/style/mixins/compatibility.scss +0 -1
- package/style/mixins/form.scss +8 -2
- package/style/params/index.scss +0 -1
- package/style/params/primary.scss +7 -28
- package/switch/switch.component.d.ts +9 -10
- package/switch/switch.property.d.ts +265 -16
- package/table/table-body.component.d.ts +21 -20
- package/table/table-foot.component.d.ts +7 -5
- package/table/table-head.component.d.ts +17 -19
- package/table/table.component.d.ts +62 -50
- package/table/table.property.d.ts +180 -178
- package/tabs/tab-content.component.d.ts +6 -8
- package/tabs/tab.component.d.ts +3 -5
- package/tabs/tabs.component.d.ts +17 -24
- package/tabs/tabs.property.d.ts +28 -24
- package/tag/tag.component.d.ts +7 -8
- package/tag/tag.property.d.ts +19 -21
- package/text-retract/text-retract.component.d.ts +4 -14
- package/text-retract/text-retract.property.d.ts +9 -5
- package/textarea/textarea.component.d.ts +17 -20
- package/textarea/textarea.property.d.ts +266 -30
- package/theme/theme.component.d.ts +24 -13
- package/theme/theme.property.d.ts +67 -16
- package/time-ago/time-ago.pipe.d.ts +7 -3
- package/time-ago/time-ago.property.d.ts +1 -1
- package/time-picker/time-picker-frame.component.d.ts +52 -39
- package/time-picker/time-picker-portal.component.d.ts +29 -29
- package/time-picker/time-picker.component.d.ts +29 -30
- package/time-picker/time-picker.property.d.ts +314 -23
- package/time-range/time-range.property.d.ts +1 -1
- package/timeline/timeline.component.d.ts +5 -13
- package/timeline/timeline.property.d.ts +12 -8
- package/tooltip/tooltip-portal.component.d.ts +23 -29
- package/tooltip/tooltip.directive.d.ts +10 -9
- package/tooltip/tooltip.property.d.ts +18 -14
- package/transfer/transfer.component.d.ts +23 -20
- package/transfer/transfer.property.d.ts +81 -25
- package/tree/tree-node.component.d.ts +21 -21
- package/tree/tree.component.d.ts +29 -28
- package/tree/tree.property.d.ts +129 -79
- package/tree-file/tree-file.component.d.ts +7 -9
- package/tree-file/tree-file.property.d.ts +40 -16
- package/tree-select/tree-select-portal.component.d.ts +38 -49
- package/tree-select/tree-select.component.d.ts +50 -53
- package/tree-select/tree-select.property.d.ts +328 -39
- package/typography/typography.component.d.ts +1 -1
- package/typography/typography.property.d.ts +3 -3
- package/upload/upload-portal.component.d.ts +14 -14
- package/upload/upload.component.d.ts +18 -17
- package/upload/upload.property.d.ts +73 -24
- package/border/border.component.d.ts +0 -11
- package/border/border.module.d.ts +0 -7
- package/border/border.property.d.ts +0 -6
- package/border/index.d.ts +0 -5
- package/border/public-api.d.ts +0 -3
- package/esm2022/border/border.component.mjs +0 -21
- package/esm2022/border/border.module.mjs +0 -16
- package/esm2022/border/border.property.mjs +0 -7
- package/esm2022/border/ng-nest-ui-border.mjs +0 -5
- package/esm2022/border/public-api.mjs +0 -4
- package/fesm2022/ng-nest-ui-border.mjs +0 -47
- package/fesm2022/ng-nest-ui-border.mjs.map +0 -1
- package/style/params/colors.scss +0 -38
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { Component, ViewEncapsulation, ChangeDetectionStrategy, HostBinding, HostListener,
|
|
1
|
+
import { Component, ViewEncapsulation, ChangeDetectionStrategy, HostBinding, HostListener, input, output, computed, viewChild, signal, inject, model } from '@angular/core';
|
|
2
2
|
import { XDateRangePortalPrefix } from './date-picker.property';
|
|
3
3
|
import { XIsEmpty, XConnectBaseAnimation, XAddMonths, XAddYears, XIsNull, XIsArray, XIsNumber, XIsString, XAddDays } from '@ng-nest/ui/core';
|
|
4
|
-
import {
|
|
5
|
-
import { takeUntil, map } from 'rxjs/operators';
|
|
4
|
+
import { map } from 'rxjs/operators';
|
|
6
5
|
import { DatePipe, LowerCasePipe, NgTemplateOutlet } from '@angular/common';
|
|
6
|
+
import { XI18nService, zh_CN } from '@ng-nest/ui/i18n';
|
|
7
7
|
import { XPickerMonthComponent } from './picker-month.component';
|
|
8
8
|
import { XPickerYearComponent } from './picker-year.component';
|
|
9
9
|
import { XPickerDateComponent } from './picker-date.component';
|
|
@@ -12,99 +12,91 @@ import { XPickerQuarterComponent } from './picker-quarter.component';
|
|
|
12
12
|
import { XButtonComponent } from '@ng-nest/ui/button';
|
|
13
13
|
import { XLinkComponent } from '@ng-nest/ui/link';
|
|
14
14
|
import { XOutletDirective } from '@ng-nest/ui/outlet';
|
|
15
|
+
import { toSignal } from '@angular/core/rxjs-interop';
|
|
15
16
|
import * as i0 from "@angular/core";
|
|
16
|
-
import * as i1 from "@
|
|
17
|
-
import * as i2 from "@ng-nest/ui/i18n";
|
|
18
|
-
import * as i3 from "@ng-nest/ui/time-picker";
|
|
17
|
+
import * as i1 from "@ng-nest/ui/time-picker";
|
|
19
18
|
export class XDateRangePortalComponent {
|
|
20
|
-
|
|
21
|
-
this.
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
this.
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
this.
|
|
46
|
-
this.
|
|
47
|
-
|
|
48
|
-
this.i18n = i18n;
|
|
49
|
-
this.type = 'date';
|
|
50
|
-
this.display = new Date();
|
|
51
|
-
this.startDisplay = new Date();
|
|
52
|
-
this.endDisplay = XAddMonths(this.startDisplay, 1);
|
|
53
|
-
this.value = [];
|
|
54
|
-
this.locale = {};
|
|
55
|
-
this.timeDisplay = new Date();
|
|
56
|
-
this.timeHover = false;
|
|
57
|
-
this.nodeClickCount = 0;
|
|
58
|
-
this.preset = [];
|
|
59
|
-
this._unSubject = new Subject();
|
|
60
|
-
}
|
|
61
|
-
ngOnInit() {
|
|
62
|
-
this.valueChange.pipe(takeUntil(this._unSubject)).subscribe((x) => {
|
|
63
|
-
this.value = x;
|
|
64
|
-
this.init();
|
|
65
|
-
});
|
|
66
|
-
this.positionChange.pipe(takeUntil(this._unSubject)).subscribe((x) => {
|
|
67
|
-
this.placement = x;
|
|
68
|
-
this.cdr.detectChanges();
|
|
19
|
+
constructor() {
|
|
20
|
+
this.datePipe = inject(DatePipe);
|
|
21
|
+
this.lowerCasePipe = inject(LowerCasePipe);
|
|
22
|
+
this.i18n = inject(XI18nService);
|
|
23
|
+
this.startPicker = viewChild('startPicker');
|
|
24
|
+
this.endPicker = viewChild('endPicker');
|
|
25
|
+
this.timePickerFrame = viewChild('timePickerFrame');
|
|
26
|
+
this.value = model([]);
|
|
27
|
+
this.placement = input();
|
|
28
|
+
this.type = model('date');
|
|
29
|
+
this.preset = input([]);
|
|
30
|
+
this.extraFooter = input();
|
|
31
|
+
this.disabledDate = input();
|
|
32
|
+
this.disabledTime = input();
|
|
33
|
+
this.activeType = input('start');
|
|
34
|
+
this.animating = output();
|
|
35
|
+
this.nodeClick = output();
|
|
36
|
+
this.startNodeChanged = output();
|
|
37
|
+
this.endNodeChanged = output();
|
|
38
|
+
this.display = signal(new Date());
|
|
39
|
+
this.model = signal(null);
|
|
40
|
+
this.startModel = signal(null);
|
|
41
|
+
this.endModel = signal(null);
|
|
42
|
+
this.startYear = signal(null);
|
|
43
|
+
this.startDisplay = signal(new Date());
|
|
44
|
+
this.endDisplay = signal(XAddMonths(this.startDisplay(), 1));
|
|
45
|
+
this.locale = toSignal(this.i18n.localeChange.pipe(map((x) => x.datePicker)), {
|
|
46
|
+
initialValue: zh_CN.datePicker
|
|
69
47
|
});
|
|
70
|
-
this.
|
|
71
|
-
|
|
48
|
+
this.time = signal(null);
|
|
49
|
+
this.timeDisplay = signal(new Date());
|
|
50
|
+
this.timeModel = signal(null);
|
|
51
|
+
this.timeHover = signal(false);
|
|
52
|
+
this.nodeClickCount = signal(0);
|
|
53
|
+
this.isDatePicker = computed(() => {
|
|
54
|
+
return ['date', 'quarter', 'week', 'month', 'year'].includes(this.type());
|
|
72
55
|
});
|
|
73
|
-
this.
|
|
74
|
-
.
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
56
|
+
this.sureDisabled = computed(() => {
|
|
57
|
+
if (this.timePickerFrame() && !XIsEmpty(this.time())) {
|
|
58
|
+
const dt = new Date(this.time());
|
|
59
|
+
const hours = dt.getHours();
|
|
60
|
+
const minutes = dt.getMinutes();
|
|
61
|
+
const seconds = dt.getSeconds();
|
|
62
|
+
return (this.timePickerFrame()?.setDisabled('hours', hours) ||
|
|
63
|
+
this.timePickerFrame()?.setDisabled('minutes', minutes) ||
|
|
64
|
+
this.timePickerFrame()?.setDisabled('seconds', seconds));
|
|
65
|
+
}
|
|
66
|
+
else {
|
|
67
|
+
return true;
|
|
68
|
+
}
|
|
78
69
|
});
|
|
79
70
|
}
|
|
71
|
+
get getPlacement() {
|
|
72
|
+
return this.placement();
|
|
73
|
+
}
|
|
74
|
+
done(event) {
|
|
75
|
+
event.toState !== 'void' && this.animating.emit(false);
|
|
76
|
+
}
|
|
77
|
+
start(event) {
|
|
78
|
+
event.toState !== 'void' && this.animating.emit(true);
|
|
79
|
+
}
|
|
80
80
|
ngAfterViewInit() {
|
|
81
81
|
this.init();
|
|
82
82
|
}
|
|
83
|
-
ngOnDestroy() {
|
|
84
|
-
this._unSubject.next();
|
|
85
|
-
this._unSubject.unsubscribe();
|
|
86
|
-
}
|
|
87
83
|
init() {
|
|
88
|
-
if (!XIsEmpty(this.value)) {
|
|
84
|
+
if (!XIsEmpty(this.value())) {
|
|
89
85
|
this.setDefault();
|
|
90
86
|
}
|
|
91
87
|
else {
|
|
92
|
-
this.value
|
|
93
|
-
this.model
|
|
94
|
-
this.startModel
|
|
95
|
-
this.endModel
|
|
96
|
-
this.setDisplay(this.model);
|
|
88
|
+
this.value.set([null, null]);
|
|
89
|
+
this.model.set(this.display());
|
|
90
|
+
this.startModel.set(this.model());
|
|
91
|
+
this.endModel.set(this.setModelByType(this.model(), this.isDatePicker() ? 1 : 0));
|
|
92
|
+
this.setDisplay(this.model());
|
|
97
93
|
}
|
|
98
|
-
this.cdr.detectChanges();
|
|
99
|
-
}
|
|
100
|
-
stopPropagation(event) {
|
|
101
|
-
event.stopPropagation();
|
|
102
94
|
}
|
|
103
95
|
setModelByType(byModel, num = 1) {
|
|
104
|
-
if (['month', 'quarter'].includes(this.type)) {
|
|
96
|
+
if (['month', 'quarter'].includes(this.type())) {
|
|
105
97
|
return XAddYears(byModel, num);
|
|
106
98
|
}
|
|
107
|
-
else if (this.type === 'year') {
|
|
99
|
+
else if (this.type() === 'year') {
|
|
108
100
|
return XAddYears(byModel, 10 * num);
|
|
109
101
|
}
|
|
110
102
|
else {
|
|
@@ -112,174 +104,174 @@ export class XDateRangePortalComponent {
|
|
|
112
104
|
}
|
|
113
105
|
}
|
|
114
106
|
setDatesState(cell) {
|
|
115
|
-
if (this.type === 'week')
|
|
107
|
+
if (this.type() === 'week')
|
|
116
108
|
return;
|
|
117
|
-
this.startPicker?.setDatesState(cell);
|
|
118
|
-
this.endPicker?.setDatesState(cell);
|
|
109
|
+
this.startPicker()?.setDatesState(cell);
|
|
110
|
+
this.endPicker()?.setDatesState(cell);
|
|
119
111
|
}
|
|
120
112
|
setDefault() {
|
|
121
|
-
const type = this.activeType || 'start';
|
|
122
|
-
this.timeHover
|
|
113
|
+
const type = this.activeType() || 'start';
|
|
114
|
+
this.timeHover.set(!this.value().every((x) => x === null));
|
|
123
115
|
if (type === 'start') {
|
|
124
|
-
this.startModel
|
|
125
|
-
this.startDisplay
|
|
126
|
-
this.endModel
|
|
127
|
-
this.endDisplay
|
|
128
|
-
this.timeModel
|
|
129
|
-
this.timeDisplay
|
|
130
|
-
this.time
|
|
116
|
+
this.startModel.set(new Date(this.value()[0]));
|
|
117
|
+
this.startDisplay.set(this.startModel());
|
|
118
|
+
this.endModel.set(this.setModelByType(this.startModel(), this.isDatePicker() ? 1 : 0));
|
|
119
|
+
this.endDisplay.set(this.endModel());
|
|
120
|
+
this.timeModel.set(this.startModel());
|
|
121
|
+
this.timeDisplay.set(this.startDisplay());
|
|
122
|
+
this.time.set(this.startModel().getTime());
|
|
131
123
|
}
|
|
132
124
|
else if (type === 'end') {
|
|
133
|
-
this.endModel
|
|
134
|
-
this.endDisplay
|
|
135
|
-
this.startModel
|
|
136
|
-
this.startDisplay
|
|
137
|
-
this.timeModel
|
|
138
|
-
this.timeDisplay
|
|
139
|
-
this.time
|
|
125
|
+
this.endModel.set(new Date(this.value()[1]));
|
|
126
|
+
this.endDisplay.set(this.endModel());
|
|
127
|
+
this.startModel.set(this.setModelByType(this.endModel(), this.isDatePicker() ? -1 : 0));
|
|
128
|
+
this.startDisplay.set(this.startModel());
|
|
129
|
+
this.timeModel.set(this.endModel());
|
|
130
|
+
this.timeDisplay.set(this.endDisplay());
|
|
131
|
+
this.time.set(this.endModel().getTime());
|
|
140
132
|
}
|
|
141
|
-
this.cdr.detectChanges();
|
|
142
133
|
}
|
|
143
134
|
setDisplay(date) {
|
|
144
|
-
this.display
|
|
145
|
-
this.startDisplay
|
|
146
|
-
this.endDisplay
|
|
135
|
+
this.display.set(new Date(date.getFullYear(), date.getMonth(), 1));
|
|
136
|
+
this.startDisplay.set(this.display());
|
|
137
|
+
this.endDisplay.set(this.setModelByType(this.display(), this.isDatePicker() ? 1 : 0));
|
|
147
138
|
}
|
|
148
139
|
dateChange(date) {
|
|
149
|
-
this.nodeClickCount
|
|
150
|
-
let close = this.nodeClickCount === 2;
|
|
140
|
+
this.nodeClickCount.update((x) => x + 1);
|
|
141
|
+
let close = this.nodeClickCount() === 2;
|
|
151
142
|
let time = this.setDateChangeTime(date);
|
|
143
|
+
const isDatePicker = this.isDatePicker();
|
|
152
144
|
date = new Date(time);
|
|
153
|
-
if (this.activeType === 'start') {
|
|
154
|
-
this.value[0] = time;
|
|
155
|
-
if (!XIsNull(this.value[1]) && time > this.value[1]) {
|
|
156
|
-
if (this.nodeClickCount === 2) {
|
|
157
|
-
this.nodeClickCount
|
|
145
|
+
if (this.activeType() === 'start') {
|
|
146
|
+
this.value()[0] = time;
|
|
147
|
+
if (!XIsNull(this.value()[1]) && time > this.value()[1]) {
|
|
148
|
+
if (this.nodeClickCount() === 2) {
|
|
149
|
+
this.nodeClickCount.update((x) => x - 1);
|
|
158
150
|
}
|
|
159
151
|
close = false;
|
|
160
|
-
this.endModel
|
|
161
|
-
this.value
|
|
162
|
-
|
|
163
|
-
|
|
152
|
+
this.endModel.set(null);
|
|
153
|
+
this.value.update((x) => {
|
|
154
|
+
x[1] = null;
|
|
155
|
+
return [...x];
|
|
156
|
+
});
|
|
157
|
+
if (!isDatePicker) {
|
|
158
|
+
this.timeHover.set(false);
|
|
164
159
|
}
|
|
165
|
-
this.
|
|
160
|
+
this.endNodeChanged.emit({ date: null, close, isDatePicker });
|
|
166
161
|
}
|
|
167
|
-
this.
|
|
162
|
+
this.startNodeChanged.emit({ date, close, isDatePicker });
|
|
168
163
|
}
|
|
169
|
-
else if (this.activeType === 'end') {
|
|
170
|
-
this.value[1] = time;
|
|
171
|
-
if (!XIsNull(this.value[0]) && time < this.value[0]) {
|
|
172
|
-
if (this.nodeClickCount === 2) {
|
|
173
|
-
this.nodeClickCount
|
|
164
|
+
else if (this.activeType() === 'end') {
|
|
165
|
+
this.value()[1] = time;
|
|
166
|
+
if (!XIsNull(this.value()[0]) && time < this.value()[0]) {
|
|
167
|
+
if (this.nodeClickCount() === 2) {
|
|
168
|
+
this.nodeClickCount.update((x) => x - 1);
|
|
174
169
|
}
|
|
175
170
|
close = false;
|
|
176
|
-
this.startModel
|
|
177
|
-
this.value
|
|
178
|
-
|
|
179
|
-
|
|
171
|
+
this.startModel.set(null);
|
|
172
|
+
this.value.update((x) => {
|
|
173
|
+
x[0] = null;
|
|
174
|
+
return [...x];
|
|
175
|
+
});
|
|
176
|
+
if (!isDatePicker) {
|
|
177
|
+
this.timeHover.set(false);
|
|
180
178
|
}
|
|
181
|
-
this.
|
|
179
|
+
this.startNodeChanged.emit({ date: null, close, isDatePicker });
|
|
182
180
|
}
|
|
183
|
-
this.
|
|
181
|
+
this.endNodeChanged.emit({ date, close, isDatePicker });
|
|
184
182
|
}
|
|
185
|
-
if (!this.value.includes(null) &&
|
|
186
|
-
this.
|
|
183
|
+
if (!this.value().includes(null) && isDatePicker) {
|
|
184
|
+
this.nodeClick.emit({ date: this.value().map((x) => new Date(x)), close });
|
|
187
185
|
}
|
|
188
186
|
}
|
|
189
187
|
setDateChangeTime(date) {
|
|
190
|
-
if (this.isDatePicker) {
|
|
188
|
+
if (this.isDatePicker()) {
|
|
191
189
|
return date.getTime();
|
|
192
190
|
}
|
|
193
191
|
else {
|
|
194
192
|
let time = new Date();
|
|
195
|
-
if (this.time) {
|
|
196
|
-
time = new Date(this.time);
|
|
193
|
+
if (this.time()) {
|
|
194
|
+
time = new Date(this.time());
|
|
197
195
|
}
|
|
198
196
|
else {
|
|
199
|
-
this.time
|
|
197
|
+
this.time.set(time.getTime());
|
|
200
198
|
}
|
|
201
|
-
if (['date-hour', 'date-minute'].includes(this.type)) {
|
|
199
|
+
if (['date-hour', 'date-minute'].includes(this.type())) {
|
|
202
200
|
time.setSeconds(0);
|
|
203
201
|
}
|
|
204
|
-
if (this.type === 'date-hour') {
|
|
202
|
+
if (this.type() === 'date-hour') {
|
|
205
203
|
time.setMinutes(0);
|
|
206
204
|
}
|
|
207
205
|
return new Date(date.getFullYear(), date.getMonth(), date.getDate(), time.getHours(), time.getMinutes(), time.getSeconds()).getTime();
|
|
208
206
|
}
|
|
209
207
|
}
|
|
210
208
|
typeChange(type) {
|
|
211
|
-
this.type
|
|
212
|
-
this.cdr.detectChanges();
|
|
209
|
+
this.type.set(type);
|
|
213
210
|
}
|
|
214
211
|
yearStartChange(number) {
|
|
215
|
-
this.startYear
|
|
216
|
-
this.cdr.detectChanges();
|
|
212
|
+
this.startYear.set(number);
|
|
217
213
|
}
|
|
218
214
|
nextMonth(num) {
|
|
219
|
-
let date = new Date(this.display);
|
|
215
|
+
let date = new Date(this.display());
|
|
220
216
|
date.setMonth(date.getMonth() + num);
|
|
221
217
|
this.setDisplay(date);
|
|
222
|
-
this.cdr.detectChanges();
|
|
223
218
|
}
|
|
224
219
|
nextYear(num) {
|
|
225
|
-
let date = new Date(this.display);
|
|
220
|
+
let date = new Date(this.display());
|
|
226
221
|
date.setFullYear(date.getFullYear() + num);
|
|
227
222
|
this.setDisplay(date);
|
|
228
|
-
this.cdr.detectChanges();
|
|
229
223
|
}
|
|
230
224
|
nextYears(num) {
|
|
231
|
-
this.startYear
|
|
232
|
-
let date = new Date(this.display);
|
|
233
|
-
date.setFullYear(this.startYear);
|
|
225
|
+
this.startYear.update((x) => x + num);
|
|
226
|
+
let date = new Date(this.display());
|
|
227
|
+
date.setFullYear(this.startYear());
|
|
234
228
|
this.setDisplay(date);
|
|
235
|
-
this.cdr.detectChanges();
|
|
236
229
|
}
|
|
237
230
|
getLocaleMonth(date) {
|
|
238
|
-
return this.locale[this.lowerCasePipe.transform(this.datePipe.transform(date, 'LLLL'))];
|
|
231
|
+
return this.locale()[this.lowerCasePipe.transform(this.datePipe.transform(date, 'LLLL'))];
|
|
239
232
|
}
|
|
240
233
|
selectTime(time) {
|
|
241
|
-
this.time
|
|
242
|
-
if (XIsEmpty(this.timeModel)) {
|
|
243
|
-
this.timeModel
|
|
234
|
+
this.time.set(time.getTime());
|
|
235
|
+
if (XIsEmpty(this.timeModel())) {
|
|
236
|
+
this.timeModel.set(new Date());
|
|
244
237
|
}
|
|
245
|
-
this.timeModel?.setHours(time.getHours());
|
|
246
|
-
this.timeModel?.setMinutes(time.getMinutes());
|
|
247
|
-
this.timeModel?.setSeconds(time.getSeconds());
|
|
248
|
-
this.dateChange(this.timeModel);
|
|
249
|
-
this.cdr.detectChanges();
|
|
238
|
+
this.timeModel()?.setHours(time.getHours());
|
|
239
|
+
this.timeModel()?.setMinutes(time.getMinutes());
|
|
240
|
+
this.timeModel()?.setSeconds(time.getSeconds());
|
|
241
|
+
this.dateChange(this.timeModel());
|
|
250
242
|
}
|
|
251
243
|
sureTime() {
|
|
252
|
-
if (this.sureDisabled)
|
|
244
|
+
if (this.sureDisabled())
|
|
253
245
|
return;
|
|
254
|
-
const [start, end] = this.value;
|
|
246
|
+
const [start, end] = this.value();
|
|
255
247
|
if (XIsNull(start) && !XIsNull(end)) {
|
|
256
|
-
this.time
|
|
257
|
-
this.timeHover
|
|
258
|
-
this.
|
|
248
|
+
this.time.set(null);
|
|
249
|
+
this.timeHover.set(true);
|
|
250
|
+
this.endNodeChanged.emit({ date: new Date(end), close: false, isDatePicker: true });
|
|
259
251
|
}
|
|
260
252
|
else if (!XIsNull(start) && XIsNull(end)) {
|
|
261
|
-
this.time
|
|
262
|
-
this.timeHover
|
|
263
|
-
this.
|
|
253
|
+
this.time.set(null);
|
|
254
|
+
this.timeHover.set(true);
|
|
255
|
+
this.startNodeChanged.emit({ date: new Date(start), close: false, isDatePicker: true });
|
|
264
256
|
}
|
|
265
257
|
else {
|
|
266
|
-
this.
|
|
258
|
+
this.nodeClick.emit({ date: this.value().map((x) => new Date(x)), close: true });
|
|
267
259
|
}
|
|
268
260
|
}
|
|
269
261
|
yearChange(num, type) {
|
|
270
262
|
if (type === 'start') {
|
|
271
|
-
this.endDisplay
|
|
263
|
+
this.endDisplay.update((x) => XAddYears(x, num));
|
|
272
264
|
}
|
|
273
265
|
else if (type === 'end') {
|
|
274
|
-
this.startDisplay
|
|
266
|
+
this.startDisplay.update((x) => XAddYears(x, num));
|
|
275
267
|
}
|
|
276
268
|
}
|
|
277
269
|
monthChange(num, type) {
|
|
278
270
|
if (type === 'start') {
|
|
279
|
-
this.endDisplay
|
|
271
|
+
this.endDisplay.update((x) => XAddMonths(x, num));
|
|
280
272
|
}
|
|
281
273
|
else if (type === 'end') {
|
|
282
|
-
this.startDisplay
|
|
274
|
+
this.startDisplay.update((x) => XAddMonths(x, num));
|
|
283
275
|
}
|
|
284
276
|
}
|
|
285
277
|
onPreset(type, num = 0) {
|
|
@@ -289,19 +281,22 @@ export class XDateRangePortalComponent {
|
|
|
289
281
|
const week = now.getDay();
|
|
290
282
|
const weekList = [1, 2, 3, 4, 5, 6, 7];
|
|
291
283
|
const index = weekList.indexOf(week);
|
|
292
|
-
this.
|
|
284
|
+
this.nodeClick.emit({
|
|
285
|
+
date: [XAddDays(now, weekList[0] - (index + 1) + num * 7), XAddDays(now, weekList[6] - (index + 1) + num * 7)],
|
|
286
|
+
close: true
|
|
287
|
+
});
|
|
293
288
|
}
|
|
294
289
|
else if (type === 'month') {
|
|
295
290
|
const month = XAddMonths(now, num);
|
|
296
291
|
const firstDay = new Date(month.getFullYear(), month.getMonth(), 1);
|
|
297
292
|
const lastDay = XAddDays(XAddMonths(firstDay, 1), -1);
|
|
298
|
-
this.
|
|
293
|
+
this.nodeClick.emit({ date: [firstDay, lastDay], close: true });
|
|
299
294
|
}
|
|
300
295
|
else if (type === 'year') {
|
|
301
296
|
let year = XAddYears(now, num);
|
|
302
297
|
let firstDay = new Date(year.getFullYear(), 0, 1);
|
|
303
298
|
let lastDay = XAddDays(XAddYears(firstDay, 1), -1);
|
|
304
|
-
this.
|
|
299
|
+
this.nodeClick.emit({ date: [firstDay, lastDay], close: true });
|
|
305
300
|
}
|
|
306
301
|
}
|
|
307
302
|
onPresetFunc(item) {
|
|
@@ -310,13 +305,13 @@ export class XDateRangePortalComponent {
|
|
|
310
305
|
if (XIsNumber(value[0]) || XIsString(value[0])) {
|
|
311
306
|
value = value.map((x) => new Date(x));
|
|
312
307
|
}
|
|
313
|
-
this.
|
|
308
|
+
this.nodeClick.emit({ date: value, close: true });
|
|
314
309
|
}
|
|
315
310
|
}
|
|
316
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
317
|
-
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.0", type: XDateRangePortalComponent, isStandalone: true, selector: "x-date-range-portal", host: { listeners: { "@x-connect-base-animation.done": "done($event)", "@x-connect-base-animation.start": "start($event)" }, properties: { "@x-connect-base-animation": "this.placement" } }, providers: [DatePipe, LowerCasePipe], viewQueries: [{ propertyName: "startPicker", first: true, predicate: ["startPicker"], descendants: true }, { propertyName: "endPicker", first: true, predicate: ["endPicker"], descendants: true }, { propertyName: "timePickerFrame", first: true, predicate: ["timePickerFrame"], descendants: true }], ngImport: i0, template: "<div class=\"x-date-range-portal {{ type }}\">\r\n <div class=\"x-date-range-portal-body\">\r\n @switch (type) {\r\n @case ('date') {\r\n <x-picker-date\r\n #startPicker\r\n class=\"x-date-range-portal-start\"\r\n [(display)]=\"startDisplay\"\r\n [model]=\"startModel\"\r\n [rangeValue]=\"value\"\r\n [rangeType]=\"activeType\"\r\n [nextYearBtn]=\"false\"\r\n [nextMonthBtn]=\"false\"\r\n [disabledDate]=\"disabledDate\"\r\n (modelChange)=\"dateChange($event)\"\r\n (yearChange)=\"yearChange($event, 'start')\"\r\n (monthChange)=\"monthChange($event, 'start')\"\r\n (rangeTdMouseenter)=\"setDatesState($event)\"\r\n (rangeDateClick)=\"setDatesState($event)\"\r\n rangePicker\r\n ></x-picker-date>\r\n <x-picker-date\r\n #endPicker\r\n class=\"x-date-range-portal-end\"\r\n [(display)]=\"endDisplay\"\r\n [model]=\"endModel\"\r\n [rangeValue]=\"value\"\r\n [rangeType]=\"activeType\"\r\n [lastYearBtn]=\"false\"\r\n [lastMonthBtn]=\"false\"\r\n [disabledDate]=\"disabledDate\"\r\n (modelChange)=\"dateChange($event)\"\r\n (yearChange)=\"yearChange($event, 'end')\"\r\n (monthChange)=\"monthChange($event, 'end')\"\r\n (rangeTdMouseenter)=\"setDatesState($event)\"\r\n (rangeDateClick)=\"setDatesState($event)\"\r\n rangePicker\r\n ></x-picker-date>\r\n }\r\n @case ('week') {\r\n <x-picker-date\r\n #startPicker\r\n class=\"x-date-range-portal-start\"\r\n type=\"week\"\r\n [(display)]=\"startDisplay\"\r\n [model]=\"startModel\"\r\n [rangeValue]=\"value\"\r\n [rangeType]=\"activeType\"\r\n [nextYearBtn]=\"false\"\r\n [nextMonthBtn]=\"false\"\r\n [disabledDate]=\"disabledDate\"\r\n (modelChange)=\"dateChange($event)\"\r\n (yearChange)=\"yearChange($event, 'start')\"\r\n (monthChange)=\"monthChange($event, 'start')\"\r\n (rangeTdMouseenter)=\"setDatesState($event)\"\r\n (rangeDateClick)=\"setDatesState($event)\"\r\n rangePicker\r\n ></x-picker-date>\r\n <x-picker-date\r\n #endPicker\r\n class=\"x-date-range-portal-end\"\r\n type=\"week\"\r\n [(display)]=\"endDisplay\"\r\n [model]=\"endModel\"\r\n [rangeValue]=\"value\"\r\n [rangeType]=\"activeType\"\r\n [lastYearBtn]=\"false\"\r\n [lastMonthBtn]=\"false\"\r\n [disabledDate]=\"disabledDate\"\r\n (modelChange)=\"dateChange($event)\"\r\n (yearChange)=\"yearChange($event, 'end')\"\r\n (monthChange)=\"monthChange($event, 'end')\"\r\n (rangeTdMouseenter)=\"setDatesState($event)\"\r\n (rangeDateClick)=\"setDatesState($event)\"\r\n rangePicker\r\n ></x-picker-date>\r\n }\r\n @case ('month') {\r\n <x-picker-month\r\n #startPicker\r\n class=\"x-date-range-portal-start\"\r\n [(display)]=\"startDisplay\"\r\n [model]=\"startModel\"\r\n [rangeValue]=\"value\"\r\n [rangeType]=\"activeType\"\r\n [nextYearBtn]=\"false\"\r\n [disabledDate]=\"disabledDate\"\r\n (modelChange)=\"dateChange($event)\"\r\n (yearChange)=\"yearChange($event, 'start')\"\r\n (monthChange)=\"monthChange($event, 'start')\"\r\n (rangeTdMouseenter)=\"setDatesState($event)\"\r\n (rangeDateClick)=\"setDatesState($event)\"\r\n rangePicker\r\n ></x-picker-month>\r\n <x-picker-month\r\n #endPicker\r\n class=\"x-date-range-portal-end\"\r\n [(display)]=\"endDisplay\"\r\n [model]=\"endModel\"\r\n [rangeValue]=\"value\"\r\n [rangeType]=\"activeType\"\r\n [lastYearBtn]=\"false\"\r\n [disabledDate]=\"disabledDate\"\r\n (modelChange)=\"dateChange($event)\"\r\n (yearChange)=\"yearChange($event, 'end')\"\r\n (monthChange)=\"monthChange($event, 'end')\"\r\n (rangeTdMouseenter)=\"setDatesState($event)\"\r\n (rangeDateClick)=\"setDatesState($event)\"\r\n rangePicker\r\n ></x-picker-month>\r\n }\r\n @case ('quarter') {\r\n <x-picker-quarter\r\n #startPicker\r\n class=\"x-date-range-portal-start\"\r\n [(display)]=\"startDisplay\"\r\n [model]=\"startModel\"\r\n [rangeValue]=\"value\"\r\n [rangeType]=\"activeType\"\r\n [nextYearBtn]=\"false\"\r\n [disabledDate]=\"disabledDate\"\r\n (modelChange)=\"dateChange($event)\"\r\n (yearChange)=\"yearChange($event, 'start')\"\r\n (monthChange)=\"monthChange($event, 'start')\"\r\n (rangeTdMouseenter)=\"setDatesState($event)\"\r\n (rangeDateClick)=\"setDatesState($event)\"\r\n rangePicker\r\n ></x-picker-quarter>\r\n <x-picker-quarter\r\n #endPicker\r\n class=\"x-date-range-portal-end\"\r\n [(display)]=\"endDisplay\"\r\n [model]=\"endModel\"\r\n [rangeValue]=\"value\"\r\n [rangeType]=\"activeType\"\r\n [lastYearBtn]=\"false\"\r\n [disabledDate]=\"disabledDate\"\r\n (modelChange)=\"dateChange($event)\"\r\n (yearChange)=\"yearChange($event, 'end')\"\r\n (monthChange)=\"monthChange($event, 'end')\"\r\n (rangeTdMouseenter)=\"setDatesState($event)\"\r\n (rangeDateClick)=\"setDatesState($event)\"\r\n rangePicker\r\n ></x-picker-quarter>\r\n }\r\n @case ('year') {\r\n <x-picker-year\r\n #startPicker\r\n class=\"x-date-range-portal-start\"\r\n [(display)]=\"startDisplay\"\r\n [model]=\"startModel\"\r\n [rangeValue]=\"value\"\r\n [rangeType]=\"activeType\"\r\n [nextYearBtn]=\"false\"\r\n [disabledDate]=\"disabledDate\"\r\n (modelChange)=\"dateChange($event)\"\r\n (yearChange)=\"yearChange($event, 'start')\"\r\n (monthChange)=\"monthChange($event, 'start')\"\r\n (rangeTdMouseenter)=\"setDatesState($event)\"\r\n (rangeDateClick)=\"setDatesState($event)\"\r\n rangePicker\r\n ></x-picker-year>\r\n <x-picker-year\r\n #endPicker\r\n class=\"x-date-range-portal-end\"\r\n [(display)]=\"endDisplay\"\r\n [model]=\"endModel\"\r\n [rangeValue]=\"value\"\r\n [rangeType]=\"activeType\"\r\n [lastYearBtn]=\"false\"\r\n [disabledDate]=\"disabledDate\"\r\n (modelChange)=\"dateChange($event)\"\r\n (yearChange)=\"yearChange($event, 'end')\"\r\n (monthChange)=\"monthChange($event, 'end')\"\r\n (rangeTdMouseenter)=\"setDatesState($event)\"\r\n (rangeDateClick)=\"setDatesState($event)\"\r\n rangePicker\r\n ></x-picker-year>\r\n }\r\n @case ('date-time') {\r\n <ng-container\r\n *ngTemplateOutlet=\"dateTimeHourMinuteTpl; context: { timeFormat: 'HH:mm:ss', timeType: 'time' }\"\r\n ></ng-container>\r\n }\r\n @case ('date-hour') {\r\n <ng-container\r\n *ngTemplateOutlet=\"dateTimeHourMinuteTpl; context: { timeFormat: 'HH', timeType: 'hour' }\"\r\n ></ng-container>\r\n }\r\n @case ('date-minute') {\r\n <ng-container\r\n *ngTemplateOutlet=\"dateTimeHourMinuteTpl; context: { timeFormat: 'HH:mm', timeType: 'minute' }\"\r\n ></ng-container>\r\n }\r\n }\r\n </div>\r\n @if (isDatePicker) {\r\n @if (extraFooter) {\r\n <div class=\"x-date-range-portal-extra-footer\">\r\n <ng-container *xOutlet=\"extraFooter\">{{ extraFooter }}</ng-container>\r\n </div>\r\n }\r\n <ng-container *ngTemplateOutlet=\"presetTpl\"></ng-container>\r\n }\r\n</div>\r\n\r\n<ng-template #dateTimeHourMinuteTpl let-timeFormat=\"timeFormat\" let-timeType=\"timeType\">\r\n <div class=\"x-date-range-portal-content\">\r\n <div class=\"x-date-range-portal-date\">\r\n <x-picker-date\r\n [class.x-date-range-portal-start]=\"activeType === 'start'\"\r\n [class.x-date-range-portal-end]=\"activeType === 'end'\"\r\n [(display)]=\"timeDisplay\"\r\n [(model)]=\"timeModel\"\r\n [rangeHover]=\"timeHover\"\r\n [rangeValue]=\"value\"\r\n [rangeType]=\"activeType\"\r\n [disabledDate]=\"disabledDate\"\r\n (modelChange)=\"dateChange($event)\"\r\n rangePicker\r\n ></x-picker-date>\r\n </div>\r\n <div class=\"x-date-range-portal-time\">\r\n <div class=\"x-date-range-portal-time-label\">\r\n {{ time | date: timeFormat }}\r\n </div>\r\n <x-time-picker-frame\r\n #timePickerFrame\r\n [type]=\"timeType\"\r\n [value]=\"time\"\r\n (nodeEmit)=\"selectTime($event)\"\r\n [disabledTimeParam]=\"activeType\"\r\n [disabledTime]=\"disabledTime\"\r\n [defaultNow]=\"false\"\r\n ></x-time-picker-frame>\r\n </div>\r\n </div>\r\n @if (!isDatePicker && extraFooter) {\r\n <ng-container *xOutlet=\"extraFooter\">{{ extraFooter }}</ng-container>\r\n }\r\n <div class=\"x-date-range-portal-footer\">\r\n <div class=\"x-date-range-portal-footer-left\">\r\n @if (!isDatePicker) {\r\n <ng-container *ngTemplateOutlet=\"presetTpl\"></ng-container>\r\n }\r\n </div>\r\n <x-button type=\"primary\" (click)=\"!sureDisabled && sureTime()\" size=\"small\" [disabled]=\"sureDisabled\">{{\r\n locale.sure\r\n }}</x-button>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #presetTpl>\r\n @if (preset) {\r\n <div class=\"x-date-range-portal-preset\">\r\n @for (item of preset; track item.id) {\r\n @switch (item.id) {\r\n @case ('thisWeek') {\r\n <x-link (click)=\"onPreset('week', 0)\">{{ locale.thisWeek }}</x-link>\r\n }\r\n @case ('lastWeek') {\r\n <x-link (click)=\"onPreset('week', -1)\">{{ locale.lastWeek }}</x-link>\r\n }\r\n @case ('nextWeek') {\r\n <x-link (click)=\"onPreset('week', 1)\">{{ locale.nextWeek }}</x-link>\r\n }\r\n @case ('thisMonth') {\r\n <x-link (click)=\"onPreset('month', 0)\">{{ locale.thisMonth }}</x-link>\r\n }\r\n @case ('lastMonth') {\r\n <x-link (click)=\"onPreset('month', -1)\">{{ locale.lastMonth }}</x-link>\r\n }\r\n @case ('nextMonth') {\r\n <x-link (click)=\"onPreset('month', 1)\">{{ locale.nextMonth }}</x-link>\r\n }\r\n @case ('thisYear') {\r\n <x-link (click)=\"onPreset('year', 0)\">{{ locale.thisYear }}</x-link>\r\n }\r\n @case ('lastYear') {\r\n <x-link (click)=\"onPreset('year', -1)\">{{ locale.lastYear }}</x-link>\r\n }\r\n @case ('nextYear') {\r\n <x-link (click)=\"onPreset('year', 1)\">{{ locale.nextYear }}</x-link>\r\n }\r\n }\r\n @if (!!item.func) {\r\n <x-link (click)=\"onPresetFunc(item)\">{{ item.label }}</x-link>\r\n }\r\n }\r\n </div>\r\n }\r\n</ng-template>\r\n", styles: ["@charset \"UTF-8\";.x-date-range-portal{margin:.0625rem 0;font-size:var(--x-font-size);color:var(--x-text);border:var(--x-border-width) var(--x-border-style) var(--x-border);border-radius:var(--x-border-radius);box-shadow:var(--x-box-shadow) var(--x-box-shadow-light-color);background-color:var(--x-background);width:34rem;display:flex;flex-direction:column}.x-date-range-portal.week .x-picker-date-body .x-picker-date-item:not(.x-date-in-range):not(.x-date-active) .x-date-text{background-color:transparent}.x-date-range-portal.week .x-picker-date-body tbody tr.x-date-week-in-range:not(.x-date-week-start-active):not(.x-date-week-end-active) .x-picker-date-item{background-color:var(--x-primary-800)}.x-date-range-portal.week .x-picker-date-body tbody tr:not(.x-date-week-active):not(.x-date-week-start-active):not(.x-date-week-end-active):not(.x-date-week-in-range):hover .x-picker-date-item{background-color:var(--x-background-a200);border-radius:var(--x-border-radius)}.x-date-range-portal.date-time{width:27rem}.x-date-range-portal.date-time .x-date-range-portal-body{flex-direction:column}.x-date-range-portal.date-hour{width:19.75rem}.x-date-range-portal.date-hour .x-date-range-portal-body{flex-direction:column}.x-date-range-portal.date-minute{width:23.375rem}.x-date-range-portal.date-minute .x-date-range-portal-body{flex-direction:column}.x-date-range-portal-content{display:flex}.x-date-range-portal-preset{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;border-top:var(--x-border-width) solid var(--x-border)}.x-date-range-portal-preset>x-link{padding:.25rem}.x-date-range-portal-preset>x-link:not(:first-child){margin-left:1rem}.x-date-range-portal-extra-footer{display:flex;align-items:center;border-top:var(--x-border-width) var(--x-border-style) var(--x-border);padding:.5rem}.x-date-range-portal-year-month{flex:1;text-align:center}.x-date-range-portal-body{display:flex}.x-date-range-portal-body .x-picker-date-item:before,.x-date-range-portal-body .x-picker-date-item:after{position:absolute;top:50%;right:0;left:0;z-index:1;border:var(--x-border-width) dashed transparent;transform:translateY(-50%);transition:var(--x-animation-duration-base);content:\"\"}.x-date-range-portal-body .x-picker-date-item.x-date-range-start:not(.x-date-last-or-next),.x-date-range-portal-body .x-picker-date-item.x-date-range-end:not(.x-date-last-or-next){color:var(--x-background-100)}.x-date-range-portal-body .x-picker-date-item.x-date-range-start:not(.x-date-last-or-next) .x-date-text,.x-date-range-portal-body .x-picker-date-item.x-date-range-end:not(.x-date-last-or-next) .x-date-text{background-color:var(--x-primary);border-color:var(--x-primary)}.x-date-range-portal-body .x-picker-date-item.x-date-range-start:not(.x-date-last-or-next):hover,.x-date-range-portal-body .x-picker-date-item.x-date-range-end:not(.x-date-last-or-next):hover{color:var(--x-background-100)}.x-date-range-portal-body .x-picker-date-item.x-date-range-start:not(.x-date-last-or-next):hover .x-date-text,.x-date-range-portal-body .x-picker-date-item.x-date-range-end:not(.x-date-last-or-next):hover .x-date-text{background-color:var(--x-primary)}.x-date-range-portal-body .x-picker-date-item.x-date-range-end-left:not(.x-date-last-or-next):not(.x-date-first-day):not(:first-child) .x-date-text{z-index:1}.x-date-range-portal-body .x-picker-date-item.x-date-range-end-left:not(.x-date-last-or-next):not(.x-date-first-day):not(:first-child):after{background-color:var(--x-primary-800);transform:translate(-.25rem,-50%);border-radius:var(--x-border-radius);z-index:0}.x-date-range-portal-body .x-picker-date-item.x-date-range-end-left:not(.x-date-last-or-next):not(.x-date-first-day):not(:first-child).x-date-in-range-hover:after{background-color:var(--x-primary-700)}.x-date-range-portal-body .x-picker-date-item.x-date-range-start-right:not(.x-date-last-or-next):not(.x-date-last-day):not(:last-child) .x-date-text{z-index:1}.x-date-range-portal-body .x-picker-date-item.x-date-range-start-right:not(.x-date-last-or-next):not(.x-date-last-day):not(:last-child):after{background-color:var(--x-primary-800);transform:translate(.25rem,-50%);border-radius:var(--x-border-radius);z-index:0}.x-date-range-portal-body .x-picker-date-item.x-date-range-start-right:not(.x-date-last-or-next):not(.x-date-last-day):not(:last-child).x-date-in-range-hover:after{background-color:var(--x-primary-700)}.x-date-range-portal-body .x-picker-date-item.x-date-range-start.x-date-range-end.x-date-range-start-right:not(.x-date-last-or-next):not(.x-date-last-day):not(:last-child):after{display:none}.x-date-range-portal-body .x-picker-date-item.x-date-in-range:not(.x-date-range-start):not(.x-date-range-end):not(.x-date-last-or-next) .x-date-text{position:relative;z-index:1}.x-date-range-portal-body .x-picker-date-item.x-date-in-range:not(.x-date-range-start):not(.x-date-range-end):not(.x-date-last-or-next):before{background-color:var(--x-primary-800);z-index:0}.x-date-range-portal-body .x-picker-date-item.x-date-in-range:not(.x-date-range-start):not(.x-date-range-end):not(.x-date-last-or-next):first-child:before{transform:translate(.25rem,-50%)}.x-date-range-portal-body .x-picker-date-item.x-date-in-range:not(.x-date-range-start):not(.x-date-range-end):not(.x-date-last-or-next):last-child:before{transform:translate(-.25rem,-50%)}.x-date-range-portal-body .x-picker-date-item.x-date-in-range:not(.x-date-range-start):not(.x-date-range-end):not(.x-date-last-or-next).x-date-in-range-hover-left:before{transform:translate(-.25rem,-50%)}.x-date-range-portal-body .x-picker-date-item.x-date-in-range:not(.x-date-range-start):not(.x-date-range-end):not(.x-date-last-or-next).x-date-in-range-hover-right:before{transform:translate(.25rem,-50%)}.x-date-range-portal-body .x-picker-date-item.x-date-in-range:not(.x-date-range-start):not(.x-date-range-end):not(.x-date-last-or-next).x-date-in-range-hover:before{background-color:var(--x-primary-700)}.x-date-range-portal-body .x-picker-date-item.x-date-range-hover:not(.x-date-last-or-next):before{border-color:var(--x-primary);border-left-color:transparent;border-right-color:transparent;transform:translate(-.25rem,-50%)}.x-date-range-portal-body .x-picker-date-item.x-date-range-hover:first-child:not(.x-date-last-or-next):before,.x-date-range-portal-body .x-picker-date-item.x-date-range-hover.x-date-first-day:before{border-left-color:var(--x-primary);transform:translate(.25rem,-50%)}.x-date-range-portal-body .x-picker-date-item.x-date-range-hover:first-child:not(.x-date-last-or-next).x-date-range-hover-end:before,.x-date-range-portal-body .x-picker-date-item.x-date-range-hover.x-date-first-day.x-date-range-hover-end:before{transform:translate(.25rem,-50%)}.x-date-range-portal-body .x-picker-date-item.x-date-range-hover.x-date-first-day:last-child:not(.x-date-last-or-next):before{transform:translate(.25rem,-50%)}.x-date-range-portal-body .x-picker-date-item.x-date-range-hover:last-child:not(.x-date-last-or-next):before,.x-date-range-portal-body .x-picker-date-item.x-date-range-hover.x-date-last-day:before{border-right-color:var(--x-primary);transform:translate(-.25rem,-50%)}.x-date-range-portal-body .x-picker-date-item.x-date-range-hover:last-child:not(.x-date-last-or-next).x-date-range-hover-start:before,.x-date-range-portal-body .x-picker-date-item.x-date-range-hover.x-date-last-day.x-date-range-hover-start:before{transform:translate(.25rem,-50%)}.x-date-range-portal-body .x-picker-date-item.x-date-range-hover-start:not(.x-date-last-or-next):before{border-left-color:var(--x-primary);transform:translate(.25rem,-50%)}.x-date-range-portal-body .x-picker-date-item.x-date-range-hover.x-date-range-hover-start:not(.x-date-last-or-next):before{transform:translate(.25rem,-50%)}.x-date-range-portal-body .x-picker-date-item.x-date-range-hover-end:not(.x-date-last-or-next):before{border-right-color:var(--x-primary);transform:translate(-.25rem,-50%)}.x-date-range-portal-body .x-picker-date-item.x-date-range-hover-start-left:not(:first-child):not(.x-date-last-or-next):not(.x-date-first-day):before,.x-date-range-portal-body .x-picker-date-item.x-date-range-hover-end-left:not(:first-child):not(.x-date-last-or-next):not(.x-date-first-day):before{border-top-color:var(--x-primary);border-bottom-color:var(--x-primary);transform:translate(-.3125rem,-50%)}.x-date-range-portal-body .x-picker-date-item.x-date-range-hover-start-right:not(:last-child):not(.x-date-last-or-next):not(.x-date-last-day):before,.x-date-range-portal-body .x-picker-date-item.x-date-range-hover-end-right:not(:last-child):not(.x-date-last-or-next):not(.x-date-last-day):before{border-top-color:var(--x-primary);border-bottom-color:var(--x-primary);transform:translate(.3125rem,-50%)}.x-date-range-portal-start,.x-date-range-portal-end{flex:1}.x-date-range-portal-footer{display:flex;align-items:center;justify-content:space-between;border-top:var(--x-border-width) var(--x-border-style) var(--x-border);padding:.5rem}.x-date-range-portal-footer .x-date-range-portal-preset{border-top:none}.x-date-range-portal-footer .x-date-range-portal-preset>x-link{padding:0 .25rem}.x-date-range-portal-date{flex:1}.x-date-range-portal-time{display:flex;flex-direction:column;border-left:var(--x-border-width) var(--x-border-style) var(--x-border)}.x-date-range-portal-time-label{display:flex;align-items:center;justify-content:center;padding:0 .5rem;height:2.5rem;border-bottom:var(--x-border-width) var(--x-border-style) var(--x-border)}.x-date-range-portal-time .x-time-picker-frame{border-width:0;box-shadow:none;margin:0}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: DatePipe, name: "date" }, { kind: "component", type: XPickerDateComponent, selector: "x-picker-date" }, { kind: "component", type: XPickerMonthComponent, selector: "x-picker-month" }, { kind: "component", type: XPickerYearComponent, selector: "x-picker-year" }, { kind: "component", type: XPickerQuarterComponent, selector: "x-picker-quarter" }, { kind: "ngmodule", type: XTimePickerModule }, { kind: "component", type: i3.XTimePickerFrameComponent, selector: "x-time-picker-frame", inputs: ["type", "value", "use12Hours", "hourStep", "minuteStep", "secondStep", "defaultNow", "disabledTime", "disabledTimeParam"], outputs: ["nodeEmit"] }, { kind: "component", type: XButtonComponent, selector: "x-button" }, { kind: "component", type: XLinkComponent, selector: "x-link" }, { kind: "directive", type: XOutletDirective, selector: "[xOutlet]", inputs: ["xOutletContext", "xOutlet"] }], animations: [XConnectBaseAnimation], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
311
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: XDateRangePortalComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
312
|
+
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.1", type: XDateRangePortalComponent, isStandalone: true, selector: "x-date-range-portal", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, placement: { classPropertyName: "placement", publicName: "placement", isSignal: true, isRequired: false, transformFunction: null }, type: { classPropertyName: "type", publicName: "type", isSignal: true, isRequired: false, transformFunction: null }, preset: { classPropertyName: "preset", publicName: "preset", isSignal: true, isRequired: false, transformFunction: null }, extraFooter: { classPropertyName: "extraFooter", publicName: "extraFooter", isSignal: true, isRequired: false, transformFunction: null }, disabledDate: { classPropertyName: "disabledDate", publicName: "disabledDate", isSignal: true, isRequired: false, transformFunction: null }, disabledTime: { classPropertyName: "disabledTime", publicName: "disabledTime", isSignal: true, isRequired: false, transformFunction: null }, activeType: { classPropertyName: "activeType", publicName: "activeType", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { value: "valueChange", type: "typeChange", animating: "animating", nodeClick: "nodeClick", startNodeChanged: "startNodeChanged", endNodeChanged: "endNodeChanged" }, host: { listeners: { "@x-connect-base-animation.done": "done($event)", "@x-connect-base-animation.start": "start($event)" }, properties: { "@x-connect-base-animation": "this.getPlacement" } }, providers: [DatePipe, LowerCasePipe], viewQueries: [{ propertyName: "startPicker", first: true, predicate: ["startPicker"], descendants: true, isSignal: true }, { propertyName: "endPicker", first: true, predicate: ["endPicker"], descendants: true, isSignal: true }, { propertyName: "timePickerFrame", first: true, predicate: ["timePickerFrame"], descendants: true, isSignal: true }], ngImport: i0, template: "<div class=\"x-date-range-portal {{ type() }}\">\r\n <div class=\"x-date-range-portal-body\">\r\n @switch (type()) {\r\n @case ('date') {\r\n <x-picker-date\r\n #startPicker\r\n class=\"x-date-range-portal-start\"\r\n [(display)]=\"startDisplay\"\r\n [(model)]=\"startModel\"\r\n [rangeValue]=\"value()\"\r\n [rangeType]=\"activeType()\"\r\n [nextYearBtn]=\"false\"\r\n [nextMonthBtn]=\"false\"\r\n [disabledDate]=\"disabledDate()\"\r\n (modelChange)=\"dateChange($event!)\"\r\n (yearChange)=\"yearChange($event, 'start')\"\r\n (monthChange)=\"monthChange($event, 'start')\"\r\n (rangeTdMouseenter)=\"setDatesState($event)\"\r\n rangePicker\r\n ></x-picker-date>\r\n <x-picker-date\r\n #endPicker\r\n class=\"x-date-range-portal-end\"\r\n [(display)]=\"endDisplay\"\r\n [(model)]=\"endModel\"\r\n [rangeValue]=\"value()\"\r\n [rangeType]=\"activeType()\"\r\n [lastYearBtn]=\"false\"\r\n [lastMonthBtn]=\"false\"\r\n [disabledDate]=\"disabledDate()\"\r\n (modelChange)=\"dateChange($event!)\"\r\n (yearChange)=\"yearChange($event, 'end')\"\r\n (monthChange)=\"monthChange($event, 'end')\"\r\n (rangeTdMouseenter)=\"setDatesState($event)\"\r\n rangePicker\r\n ></x-picker-date>\r\n }\r\n @case ('week') {\r\n <x-picker-date\r\n #startPicker\r\n class=\"x-date-range-portal-start\"\r\n type=\"week\"\r\n [(display)]=\"startDisplay\"\r\n [(model)]=\"startModel\"\r\n [rangeValue]=\"value()\"\r\n [rangeType]=\"activeType()\"\r\n [nextYearBtn]=\"false\"\r\n [nextMonthBtn]=\"false\"\r\n [disabledDate]=\"disabledDate()\"\r\n (modelChange)=\"dateChange($event!)\"\r\n (yearChange)=\"yearChange($event, 'start')\"\r\n (monthChange)=\"monthChange($event, 'start')\"\r\n (rangeTdMouseenter)=\"setDatesState($event)\"\r\n rangePicker\r\n ></x-picker-date>\r\n <x-picker-date\r\n #endPicker\r\n class=\"x-date-range-portal-end\"\r\n type=\"week\"\r\n [(display)]=\"endDisplay\"\r\n [(model)]=\"endModel\"\r\n [rangeValue]=\"value()\"\r\n [rangeType]=\"activeType()\"\r\n [lastYearBtn]=\"false\"\r\n [lastMonthBtn]=\"false\"\r\n [disabledDate]=\"disabledDate()\"\r\n (modelChange)=\"dateChange($event!)\"\r\n (yearChange)=\"yearChange($event, 'end')\"\r\n (monthChange)=\"monthChange($event, 'end')\"\r\n (rangeTdMouseenter)=\"setDatesState($event)\"\r\n rangePicker\r\n ></x-picker-date>\r\n }\r\n @case ('month') {\r\n <x-picker-month\r\n #startPicker\r\n class=\"x-date-range-portal-start\"\r\n [(display)]=\"startDisplay\"\r\n [(model)]=\"startModel\"\r\n [rangeValue]=\"value()\"\r\n [rangeType]=\"activeType()\"\r\n [nextYearBtn]=\"false\"\r\n [disabledDate]=\"disabledDate()\"\r\n (modelChange)=\"dateChange($event!)\"\r\n (yearChange)=\"yearChange($event, 'start')\"\r\n (monthChange)=\"monthChange($event, 'start')\"\r\n (rangeTdMouseenter)=\"setDatesState($event)\"\r\n rangePicker\r\n ></x-picker-month>\r\n <x-picker-month\r\n #endPicker\r\n class=\"x-date-range-portal-end\"\r\n [(display)]=\"endDisplay\"\r\n [(model)]=\"endModel\"\r\n [rangeValue]=\"value()\"\r\n [rangeType]=\"activeType()\"\r\n [lastYearBtn]=\"false\"\r\n [disabledDate]=\"disabledDate()\"\r\n (modelChange)=\"dateChange($event!)\"\r\n (yearChange)=\"yearChange($event, 'end')\"\r\n (monthChange)=\"monthChange($event, 'end')\"\r\n (rangeTdMouseenter)=\"setDatesState($event)\"\r\n rangePicker\r\n ></x-picker-month>\r\n }\r\n @case ('quarter') {\r\n <x-picker-quarter\r\n #startPicker\r\n class=\"x-date-range-portal-start\"\r\n [(display)]=\"startDisplay\"\r\n [(model)]=\"startModel\"\r\n [rangeValue]=\"value()\"\r\n [rangeType]=\"activeType()\"\r\n [nextYearBtn]=\"false\"\r\n [disabledDate]=\"disabledDate()\"\r\n (modelChange)=\"dateChange($event!)\"\r\n (yearChange)=\"yearChange($event, 'start')\"\r\n (monthChange)=\"monthChange($event, 'start')\"\r\n (rangeTdMouseenter)=\"setDatesState($event)\"\r\n rangePicker\r\n ></x-picker-quarter>\r\n <x-picker-quarter\r\n #endPicker\r\n class=\"x-date-range-portal-end\"\r\n [(display)]=\"endDisplay\"\r\n [(model)]=\"endModel\"\r\n [rangeValue]=\"value()\"\r\n [rangeType]=\"activeType()\"\r\n [lastYearBtn]=\"false\"\r\n [disabledDate]=\"disabledDate()\"\r\n (modelChange)=\"dateChange($event!)\"\r\n (yearChange)=\"yearChange($event, 'end')\"\r\n (monthChange)=\"monthChange($event, 'end')\"\r\n (rangeTdMouseenter)=\"setDatesState($event)\"\r\n rangePicker\r\n ></x-picker-quarter>\r\n }\r\n @case ('year') {\r\n <x-picker-year\r\n #startPicker\r\n class=\"x-date-range-portal-start\"\r\n [(display)]=\"startDisplay\"\r\n [(model)]=\"startModel\"\r\n [rangeValue]=\"value()\"\r\n [rangeType]=\"activeType()\"\r\n [nextYearBtn]=\"false\"\r\n [disabledDate]=\"disabledDate()\"\r\n (modelChange)=\"dateChange($event!)\"\r\n (yearChange)=\"yearChange($event, 'start')\"\r\n (monthChange)=\"monthChange($event, 'start')\"\r\n (rangeTdMouseenter)=\"setDatesState($event)\"\r\n rangePicker\r\n ></x-picker-year>\r\n <x-picker-year\r\n #endPicker\r\n class=\"x-date-range-portal-end\"\r\n [(display)]=\"endDisplay\"\r\n [(model)]=\"endModel\"\r\n [rangeValue]=\"value()\"\r\n [rangeType]=\"activeType()\"\r\n [lastYearBtn]=\"false\"\r\n [disabledDate]=\"disabledDate()\"\r\n (modelChange)=\"dateChange($event!)\"\r\n (yearChange)=\"yearChange($event, 'end')\"\r\n (monthChange)=\"monthChange($event, 'end')\"\r\n (rangeTdMouseenter)=\"setDatesState($event)\"\r\n rangePicker\r\n ></x-picker-year>\r\n }\r\n @case ('date-time') {\r\n <ng-container\r\n *ngTemplateOutlet=\"dateTimeHourMinuteTpl; context: { timeFormat: 'HH:mm:ss', timeType: 'time' }\"\r\n ></ng-container>\r\n }\r\n @case ('date-hour') {\r\n <ng-container\r\n *ngTemplateOutlet=\"dateTimeHourMinuteTpl; context: { timeFormat: 'HH', timeType: 'hour' }\"\r\n ></ng-container>\r\n }\r\n @case ('date-minute') {\r\n <ng-container\r\n *ngTemplateOutlet=\"dateTimeHourMinuteTpl; context: { timeFormat: 'HH:mm', timeType: 'minute' }\"\r\n ></ng-container>\r\n }\r\n }\r\n </div>\r\n @if (isDatePicker()) {\r\n @if (extraFooter()) {\r\n <div class=\"x-date-range-portal-extra-footer\">\r\n <ng-container *xOutlet=\"extraFooter()\">{{ extraFooter() }}</ng-container>\r\n </div>\r\n }\r\n <ng-container *ngTemplateOutlet=\"presetTpl\"></ng-container>\r\n }\r\n</div>\r\n\r\n<ng-template #dateTimeHourMinuteTpl let-timeFormat=\"timeFormat\" let-timeType=\"timeType\">\r\n <div class=\"x-date-range-portal-content\">\r\n <div class=\"x-date-range-portal-date\">\r\n <x-picker-date\r\n [class.x-date-range-portal-start]=\"activeType() === 'start'\"\r\n [class.x-date-range-portal-end]=\"activeType() === 'end'\"\r\n [(display)]=\"timeDisplay\"\r\n [(model)]=\"timeModel\"\r\n [rangeHover]=\"timeHover()\"\r\n [rangeValue]=\"value()\"\r\n [rangeType]=\"activeType()\"\r\n [disabledDate]=\"disabledDate()\"\r\n (modelChange)=\"dateChange($event!)\"\r\n rangePicker\r\n ></x-picker-date>\r\n </div>\r\n <div class=\"x-date-range-portal-time\">\r\n <div class=\"x-date-range-portal-time-label\">\r\n {{ time() | date: timeFormat }}\r\n </div>\r\n <x-time-picker-frame\r\n #timePickerFrame\r\n [type]=\"timeType\"\r\n [value]=\"time()\"\r\n (nodeEmit)=\"selectTime($event)\"\r\n [disabledTimeParam]=\"activeType()\"\r\n [disabledTime]=\"disabledTime()\"\r\n [defaultNow]=\"false\"\r\n ></x-time-picker-frame>\r\n </div>\r\n </div>\r\n @if (!isDatePicker() && extraFooter()) {\r\n <ng-container *xOutlet=\"extraFooter()\">{{ extraFooter() }}</ng-container>\r\n }\r\n <div class=\"x-date-range-portal-footer\">\r\n <div class=\"x-date-range-portal-footer-left\">\r\n @if (!isDatePicker()) {\r\n <ng-container *ngTemplateOutlet=\"presetTpl\"></ng-container>\r\n }\r\n </div>\r\n <x-button type=\"primary\" text (click)=\"!sureDisabled() && sureTime()\" size=\"small\" [disabled]=\"sureDisabled()!\">{{\r\n locale().sure\r\n }}</x-button>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #presetTpl>\r\n @if (preset()) {\r\n <div class=\"x-date-range-portal-preset\">\r\n @for (item of preset(); track item) {\r\n @switch (item.id) {\r\n @case ('thisWeek') {\r\n <x-link (click)=\"onPreset('week', 0)\">{{ locale().thisWeek }}</x-link>\r\n }\r\n @case ('lastWeek') {\r\n <x-link (click)=\"onPreset('week', -1)\">{{ locale().lastWeek }}</x-link>\r\n }\r\n @case ('nextWeek') {\r\n <x-link (click)=\"onPreset('week', 1)\">{{ locale().nextWeek }}</x-link>\r\n }\r\n @case ('thisMonth') {\r\n <x-link (click)=\"onPreset('month', 0)\">{{ locale().thisMonth }}</x-link>\r\n }\r\n @case ('lastMonth') {\r\n <x-link (click)=\"onPreset('month', -1)\">{{ locale().lastMonth }}</x-link>\r\n }\r\n @case ('nextMonth') {\r\n <x-link (click)=\"onPreset('month', 1)\">{{ locale().nextMonth }}</x-link>\r\n }\r\n @case ('thisYear') {\r\n <x-link (click)=\"onPreset('year', 0)\">{{ locale().thisYear }}</x-link>\r\n }\r\n @case ('lastYear') {\r\n <x-link (click)=\"onPreset('year', -1)\">{{ locale().lastYear }}</x-link>\r\n }\r\n @case ('nextYear') {\r\n <x-link (click)=\"onPreset('year', 1)\">{{ locale().nextYear }}</x-link>\r\n }\r\n }\r\n @if (!!item.func) {\r\n <x-link (click)=\"onPresetFunc(item)\">{{ item.label }}</x-link>\r\n }\r\n }\r\n </div>\r\n }\r\n</ng-template>\r\n", styles: ["@charset \"UTF-8\";.x-date-range-portal{margin:.0625rem 0;font-size:var(--x-font-size);color:var(--x-text);border-radius:var(--x-border-small-radius);box-shadow:var(--x-box-shadow);background-color:var(--x-background-100);width:34rem;display:flex;flex-direction:column}.x-date-range-portal.week .x-picker-date-body .x-picker-date-item:not(.x-date-in-range):not(.x-date-active) .x-date-text{background-color:transparent}.x-date-range-portal.week .x-picker-date-body tbody tr.x-date-week-in-range:not(.x-date-week-start-active):not(.x-date-week-end-active) .x-picker-date-item{background-color:var(--x-primary-800)}.x-date-range-portal.week .x-picker-date-body tbody tr:not(.x-date-week-active):not(.x-date-week-start-active):not(.x-date-week-end-active):not(.x-date-week-in-range):hover .x-picker-date-item{background-color:var(--x-background-a200)}.x-date-range-portal.week .x-picker-date-body tbody tr:not(.x-date-week-active):not(.x-date-week-start-active):not(.x-date-week-end-active):not(.x-date-week-in-range):hover .x-picker-date-item:first-child{border-top-left-radius:var(--x-border-radius);border-bottom-left-radius:var(--x-border-radius)}.x-date-range-portal.week .x-picker-date-body tbody tr:not(.x-date-week-active):not(.x-date-week-start-active):not(.x-date-week-end-active):not(.x-date-week-in-range):hover .x-picker-date-item:last-child{border-top-right-radius:var(--x-border-radius);border-bottom-right-radius:var(--x-border-radius)}.x-date-range-portal.date-time{width:27rem}.x-date-range-portal.date-time .x-date-range-portal-body{flex-direction:column}.x-date-range-portal.date-hour{width:19.75rem}.x-date-range-portal.date-hour .x-date-range-portal-body{flex-direction:column}.x-date-range-portal.date-minute{width:23.375rem}.x-date-range-portal.date-minute .x-date-range-portal-body{flex-direction:column}.x-date-range-portal-content{display:flex}.x-date-range-portal-preset{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;border-top:var(--x-border-width) solid var(--x-border)}.x-date-range-portal-preset>x-link{padding:.25rem}.x-date-range-portal-preset>x-link:not(:first-child){margin-left:1rem}.x-date-range-portal-extra-footer{display:flex;align-items:center;border-top:var(--x-border-width) var(--x-border-style) var(--x-border);padding:.5rem}.x-date-range-portal-year-month{flex:1;text-align:center}.x-date-range-portal-body{display:flex}.x-date-range-portal-body .x-picker-date-item:before,.x-date-range-portal-body .x-picker-date-item:after{position:absolute;top:50%;right:0;left:0;z-index:1;border:var(--x-border-width) dashed transparent;transform:translateY(-50%);transition:var(--x-animation-duration-base);content:\"\"}.x-date-range-portal-body .x-picker-date-item.x-date-range-start:not(.x-date-last-or-next),.x-date-range-portal-body .x-picker-date-item.x-date-range-end:not(.x-date-last-or-next){color:var(--x-background-100)}.x-date-range-portal-body .x-picker-date-item.x-date-range-start:not(.x-date-last-or-next) .x-date-text,.x-date-range-portal-body .x-picker-date-item.x-date-range-end:not(.x-date-last-or-next) .x-date-text{background-color:var(--x-primary);border-color:var(--x-primary)}.x-date-range-portal-body .x-picker-date-item.x-date-range-start:not(.x-date-last-or-next):hover,.x-date-range-portal-body .x-picker-date-item.x-date-range-end:not(.x-date-last-or-next):hover{color:var(--x-background-100)}.x-date-range-portal-body .x-picker-date-item.x-date-range-start:not(.x-date-last-or-next):hover .x-date-text,.x-date-range-portal-body .x-picker-date-item.x-date-range-end:not(.x-date-last-or-next):hover .x-date-text{background-color:var(--x-primary)}.x-date-range-portal-body .x-picker-date-item.x-date-range-end-left:not(.x-date-last-or-next):not(.x-date-first-day):not(:first-child) .x-date-text{z-index:1}.x-date-range-portal-body .x-picker-date-item.x-date-range-end-left:not(.x-date-last-or-next):not(.x-date-first-day):not(:first-child):after{background-color:var(--x-primary-800);transform:translate(-.25rem,-50%);border-top-right-radius:var(--x-border-radius);border-bottom-right-radius:var(--x-border-radius);z-index:0}.x-date-range-portal-body .x-picker-date-item.x-date-range-end-left:not(.x-date-last-or-next):not(.x-date-first-day):not(:first-child).x-date-in-range-hover:after{background-color:var(--x-primary-700)}.x-date-range-portal-body .x-picker-date-item.x-date-range-start-right:not(.x-date-last-or-next):not(.x-date-last-day):not(:last-child) .x-date-text{z-index:1}.x-date-range-portal-body .x-picker-date-item.x-date-range-start-right:not(.x-date-last-or-next):not(.x-date-last-day):not(:last-child):after{background-color:var(--x-primary-800);transform:translate(.25rem,-50%);border-top-left-radius:var(--x-border-radius);border-bottom-left-radius:var(--x-border-radius);z-index:0}.x-date-range-portal-body .x-picker-date-item.x-date-range-start-right:not(.x-date-last-or-next):not(.x-date-last-day):not(:last-child).x-date-in-range-hover:after{background-color:var(--x-primary-700)}.x-date-range-portal-body .x-picker-date-item.x-date-range-start.x-date-range-end.x-date-range-start-right:not(.x-date-last-or-next):not(.x-date-last-day):not(:last-child):after{display:none}.x-date-range-portal-body .x-picker-date-item.x-date-in-range:not(.x-date-range-start):not(.x-date-range-end):not(.x-date-last-or-next) .x-date-text{position:relative;z-index:1}.x-date-range-portal-body .x-picker-date-item.x-date-in-range:not(.x-date-range-start):not(.x-date-range-end):not(.x-date-last-or-next):before{background-color:var(--x-primary-800);z-index:0}.x-date-range-portal-body .x-picker-date-item.x-date-in-range:not(.x-date-range-start):not(.x-date-range-end):not(.x-date-last-or-next):first-child:before{transform:translate(.25rem,-50%)}.x-date-range-portal-body .x-picker-date-item.x-date-in-range:not(.x-date-range-start):not(.x-date-range-end):not(.x-date-last-or-next):last-child:before{transform:translate(-.25rem,-50%)}.x-date-range-portal-body .x-picker-date-item.x-date-in-range:not(.x-date-range-start):not(.x-date-range-end):not(.x-date-last-or-next).x-date-in-range-hover-left:before{transform:translate(-.25rem,-50%)}.x-date-range-portal-body .x-picker-date-item.x-date-in-range:not(.x-date-range-start):not(.x-date-range-end):not(.x-date-last-or-next).x-date-in-range-hover-right:before{transform:translate(.25rem,-50%)}.x-date-range-portal-body .x-picker-date-item.x-date-in-range:not(.x-date-range-start):not(.x-date-range-end):not(.x-date-last-or-next).x-date-in-range-hover:before{background-color:var(--x-primary-700)}.x-date-range-portal-body .x-picker-date-item.x-date-range-hover:not(.x-date-last-or-next):before{border-color:var(--x-primary);border-left-color:transparent;border-right-color:transparent;transform:translate(-.25rem,-50%)}.x-date-range-portal-body .x-picker-date-item.x-date-range-hover:first-child:not(.x-date-last-or-next):before,.x-date-range-portal-body .x-picker-date-item.x-date-range-hover.x-date-first-day:before{border-left-color:var(--x-primary);transform:translate(.25rem,-50%)}.x-date-range-portal-body .x-picker-date-item.x-date-range-hover:first-child:not(.x-date-last-or-next).x-date-range-hover-end:before,.x-date-range-portal-body .x-picker-date-item.x-date-range-hover.x-date-first-day.x-date-range-hover-end:before{transform:translate(.25rem,-50%)}.x-date-range-portal-body .x-picker-date-item.x-date-range-hover.x-date-first-day:last-child:not(.x-date-last-or-next):before{transform:translate(.25rem,-50%)}.x-date-range-portal-body .x-picker-date-item.x-date-range-hover:last-child:not(.x-date-last-or-next):before,.x-date-range-portal-body .x-picker-date-item.x-date-range-hover.x-date-last-day:before{border-right-color:var(--x-primary);transform:translate(-.25rem,-50%)}.x-date-range-portal-body .x-picker-date-item.x-date-range-hover:last-child:not(.x-date-last-or-next).x-date-range-hover-start:before,.x-date-range-portal-body .x-picker-date-item.x-date-range-hover.x-date-last-day.x-date-range-hover-start:before{transform:translate(.25rem,-50%)}.x-date-range-portal-body .x-picker-date-item.x-date-range-hover-start:not(.x-date-last-or-next):before{border-left-color:var(--x-primary);transform:translate(.25rem,-50%);border-top-left-radius:var(--x-border-radius);border-bottom-left-radius:var(--x-border-radius)}.x-date-range-portal-body .x-picker-date-item.x-date-range-hover.x-date-range-hover-start:not(.x-date-last-or-next):before{transform:translate(.25rem,-50%)}.x-date-range-portal-body .x-picker-date-item.x-date-range-hover-end:not(.x-date-last-or-next):before{border-right-color:var(--x-primary);transform:translate(-.25rem,-50%);border-top-right-radius:var(--x-border-radius);border-bottom-right-radius:var(--x-border-radius)}.x-date-range-portal-body .x-picker-date-item.x-date-range-hover-start-left:not(:first-child):not(.x-date-last-or-next):not(.x-date-first-day):before,.x-date-range-portal-body .x-picker-date-item.x-date-range-hover-end-left:not(:first-child):not(.x-date-last-or-next):not(.x-date-first-day):before{border-top-color:var(--x-primary);border-bottom-color:var(--x-primary);transform:translate(-.3125rem,-50%);border-top-right-radius:var(--x-border-radius);border-bottom-right-radius:var(--x-border-radius)}.x-date-range-portal-body .x-picker-date-item.x-date-range-hover-start-right:not(:last-child):not(.x-date-last-or-next):not(.x-date-last-day):before,.x-date-range-portal-body .x-picker-date-item.x-date-range-hover-end-right:not(:last-child):not(.x-date-last-or-next):not(.x-date-last-day):before{border-top-color:var(--x-primary);border-bottom-color:var(--x-primary);transform:translate(.3125rem,-50%);border-top-left-radius:var(--x-border-radius);border-bottom-left-radius:var(--x-border-radius)}.x-date-range-portal-start,.x-date-range-portal-end{flex:1}.x-date-range-portal-footer{display:flex;align-items:center;justify-content:space-between;border-top:var(--x-border-width) var(--x-border-style) var(--x-border);padding:.5rem}.x-date-range-portal-footer .x-date-range-portal-preset{border-top:none}.x-date-range-portal-footer .x-date-range-portal-preset>x-link{padding:0 .25rem}.x-date-range-portal-date{flex:1}.x-date-range-portal-time{display:flex;flex-direction:column;border-left:var(--x-border-width) var(--x-border-style) var(--x-border)}.x-date-range-portal-time-label{display:flex;align-items:center;justify-content:center;padding:0 .5rem;height:2.5rem;border-bottom:var(--x-border-width) var(--x-border-style) var(--x-border)}.x-date-range-portal-time .x-time-picker-frame{border-width:0;box-shadow:none;margin:0}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: DatePipe, name: "date" }, { kind: "component", type: XPickerDateComponent, selector: "x-picker-date" }, { kind: "component", type: XPickerMonthComponent, selector: "x-picker-month" }, { kind: "component", type: XPickerYearComponent, selector: "x-picker-year" }, { kind: "component", type: XPickerQuarterComponent, selector: "x-picker-quarter" }, { kind: "ngmodule", type: XTimePickerModule }, { kind: "component", type: i1.XTimePickerFrameComponent, selector: "x-time-picker-frame", inputs: ["type", "value", "use12Hours", "hourStep", "minuteStep", "secondStep", "defaultNow", "disabledTime", "disabledTimeParam"], outputs: ["nodeEmit"] }, { kind: "component", type: XButtonComponent, selector: "x-button" }, { kind: "component", type: XLinkComponent, selector: "x-link" }, { kind: "directive", type: XOutletDirective, selector: "[xOutlet]", inputs: ["xOutletContext", "xOutlet"] }], animations: [XConnectBaseAnimation], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
318
313
|
}
|
|
319
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
314
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: XDateRangePortalComponent, decorators: [{
|
|
320
315
|
type: Component,
|
|
321
316
|
args: [{ selector: `${XDateRangePortalPrefix}`, standalone: true, imports: [
|
|
322
317
|
NgTemplateOutlet,
|
|
@@ -329,8 +324,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImpor
|
|
|
329
324
|
XButtonComponent,
|
|
330
325
|
XLinkComponent,
|
|
331
326
|
XOutletDirective
|
|
332
|
-
], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, animations: [XConnectBaseAnimation], providers: [DatePipe, LowerCasePipe], template: "<div class=\"x-date-range-portal {{ type }}\">\r\n <div class=\"x-date-range-portal-body\">\r\n @switch (type) {\r\n @case ('date') {\r\n <x-picker-date\r\n #startPicker\r\n class=\"x-date-range-portal-start\"\r\n [(display)]=\"startDisplay\"\r\n [model]=\"startModel\"\r\n [rangeValue]=\"value\"\r\n [rangeType]=\"activeType\"\r\n [nextYearBtn]=\"false\"\r\n [nextMonthBtn]=\"false\"\r\n [disabledDate]=\"disabledDate\"\r\n (modelChange)=\"dateChange($event)\"\r\n (yearChange)=\"yearChange($event, 'start')\"\r\n (monthChange)=\"monthChange($event, 'start')\"\r\n (rangeTdMouseenter)=\"setDatesState($event)\"\r\n (rangeDateClick)=\"setDatesState($event)\"\r\n rangePicker\r\n ></x-picker-date>\r\n <x-picker-date\r\n #endPicker\r\n class=\"x-date-range-portal-end\"\r\n [(display)]=\"endDisplay\"\r\n [model]=\"endModel\"\r\n [rangeValue]=\"value\"\r\n [rangeType]=\"activeType\"\r\n [lastYearBtn]=\"false\"\r\n [lastMonthBtn]=\"false\"\r\n [disabledDate]=\"disabledDate\"\r\n (modelChange)=\"dateChange($event)\"\r\n (yearChange)=\"yearChange($event, 'end')\"\r\n (monthChange)=\"monthChange($event, 'end')\"\r\n (rangeTdMouseenter)=\"setDatesState($event)\"\r\n (rangeDateClick)=\"setDatesState($event)\"\r\n rangePicker\r\n ></x-picker-date>\r\n }\r\n @case ('week') {\r\n <x-picker-date\r\n #startPicker\r\n class=\"x-date-range-portal-start\"\r\n type=\"week\"\r\n [(display)]=\"startDisplay\"\r\n [model]=\"startModel\"\r\n [rangeValue]=\"value\"\r\n [rangeType]=\"activeType\"\r\n [nextYearBtn]=\"false\"\r\n [nextMonthBtn]=\"false\"\r\n [disabledDate]=\"disabledDate\"\r\n (modelChange)=\"dateChange($event)\"\r\n (yearChange)=\"yearChange($event, 'start')\"\r\n (monthChange)=\"monthChange($event, 'start')\"\r\n (rangeTdMouseenter)=\"setDatesState($event)\"\r\n (rangeDateClick)=\"setDatesState($event)\"\r\n rangePicker\r\n ></x-picker-date>\r\n <x-picker-date\r\n #endPicker\r\n class=\"x-date-range-portal-end\"\r\n type=\"week\"\r\n [(display)]=\"endDisplay\"\r\n [model]=\"endModel\"\r\n [rangeValue]=\"value\"\r\n [rangeType]=\"activeType\"\r\n [lastYearBtn]=\"false\"\r\n [lastMonthBtn]=\"false\"\r\n [disabledDate]=\"disabledDate\"\r\n (modelChange)=\"dateChange($event)\"\r\n (yearChange)=\"yearChange($event, 'end')\"\r\n (monthChange)=\"monthChange($event, 'end')\"\r\n (rangeTdMouseenter)=\"setDatesState($event)\"\r\n (rangeDateClick)=\"setDatesState($event)\"\r\n rangePicker\r\n ></x-picker-date>\r\n }\r\n @case ('month') {\r\n <x-picker-month\r\n #startPicker\r\n class=\"x-date-range-portal-start\"\r\n [(display)]=\"startDisplay\"\r\n [model]=\"startModel\"\r\n [rangeValue]=\"value\"\r\n [rangeType]=\"activeType\"\r\n [nextYearBtn]=\"false\"\r\n [disabledDate]=\"disabledDate\"\r\n (modelChange)=\"dateChange($event)\"\r\n (yearChange)=\"yearChange($event, 'start')\"\r\n (monthChange)=\"monthChange($event, 'start')\"\r\n (rangeTdMouseenter)=\"setDatesState($event)\"\r\n (rangeDateClick)=\"setDatesState($event)\"\r\n rangePicker\r\n ></x-picker-month>\r\n <x-picker-month\r\n #endPicker\r\n class=\"x-date-range-portal-end\"\r\n [(display)]=\"endDisplay\"\r\n [model]=\"endModel\"\r\n [rangeValue]=\"value\"\r\n [rangeType]=\"activeType\"\r\n [lastYearBtn]=\"false\"\r\n [disabledDate]=\"disabledDate\"\r\n (modelChange)=\"dateChange($event)\"\r\n (yearChange)=\"yearChange($event, 'end')\"\r\n (monthChange)=\"monthChange($event, 'end')\"\r\n (rangeTdMouseenter)=\"setDatesState($event)\"\r\n (rangeDateClick)=\"setDatesState($event)\"\r\n rangePicker\r\n ></x-picker-month>\r\n }\r\n @case ('quarter') {\r\n <x-picker-quarter\r\n #startPicker\r\n class=\"x-date-range-portal-start\"\r\n [(display)]=\"startDisplay\"\r\n [model]=\"startModel\"\r\n [rangeValue]=\"value\"\r\n [rangeType]=\"activeType\"\r\n [nextYearBtn]=\"false\"\r\n [disabledDate]=\"disabledDate\"\r\n (modelChange)=\"dateChange($event)\"\r\n (yearChange)=\"yearChange($event, 'start')\"\r\n (monthChange)=\"monthChange($event, 'start')\"\r\n (rangeTdMouseenter)=\"setDatesState($event)\"\r\n (rangeDateClick)=\"setDatesState($event)\"\r\n rangePicker\r\n ></x-picker-quarter>\r\n <x-picker-quarter\r\n #endPicker\r\n class=\"x-date-range-portal-end\"\r\n [(display)]=\"endDisplay\"\r\n [model]=\"endModel\"\r\n [rangeValue]=\"value\"\r\n [rangeType]=\"activeType\"\r\n [lastYearBtn]=\"false\"\r\n [disabledDate]=\"disabledDate\"\r\n (modelChange)=\"dateChange($event)\"\r\n (yearChange)=\"yearChange($event, 'end')\"\r\n (monthChange)=\"monthChange($event, 'end')\"\r\n (rangeTdMouseenter)=\"setDatesState($event)\"\r\n (rangeDateClick)=\"setDatesState($event)\"\r\n rangePicker\r\n ></x-picker-quarter>\r\n }\r\n @case ('year') {\r\n <x-picker-year\r\n #startPicker\r\n class=\"x-date-range-portal-start\"\r\n [(display)]=\"startDisplay\"\r\n [model]=\"startModel\"\r\n [rangeValue]=\"value\"\r\n [rangeType]=\"activeType\"\r\n [nextYearBtn]=\"false\"\r\n [disabledDate]=\"disabledDate\"\r\n (modelChange)=\"dateChange($event)\"\r\n (yearChange)=\"yearChange($event, 'start')\"\r\n (monthChange)=\"monthChange($event, 'start')\"\r\n (rangeTdMouseenter)=\"setDatesState($event)\"\r\n (rangeDateClick)=\"setDatesState($event)\"\r\n rangePicker\r\n ></x-picker-year>\r\n <x-picker-year\r\n #endPicker\r\n class=\"x-date-range-portal-end\"\r\n [(display)]=\"endDisplay\"\r\n [model]=\"endModel\"\r\n [rangeValue]=\"value\"\r\n [rangeType]=\"activeType\"\r\n [lastYearBtn]=\"false\"\r\n [disabledDate]=\"disabledDate\"\r\n (modelChange)=\"dateChange($event)\"\r\n (yearChange)=\"yearChange($event, 'end')\"\r\n (monthChange)=\"monthChange($event, 'end')\"\r\n (rangeTdMouseenter)=\"setDatesState($event)\"\r\n (rangeDateClick)=\"setDatesState($event)\"\r\n rangePicker\r\n ></x-picker-year>\r\n }\r\n @case ('date-time') {\r\n <ng-container\r\n *ngTemplateOutlet=\"dateTimeHourMinuteTpl; context: { timeFormat: 'HH:mm:ss', timeType: 'time' }\"\r\n ></ng-container>\r\n }\r\n @case ('date-hour') {\r\n <ng-container\r\n *ngTemplateOutlet=\"dateTimeHourMinuteTpl; context: { timeFormat: 'HH', timeType: 'hour' }\"\r\n ></ng-container>\r\n }\r\n @case ('date-minute') {\r\n <ng-container\r\n *ngTemplateOutlet=\"dateTimeHourMinuteTpl; context: { timeFormat: 'HH:mm', timeType: 'minute' }\"\r\n ></ng-container>\r\n }\r\n }\r\n </div>\r\n @if (isDatePicker) {\r\n @if (extraFooter) {\r\n <div class=\"x-date-range-portal-extra-footer\">\r\n <ng-container *xOutlet=\"extraFooter\">{{ extraFooter }}</ng-container>\r\n </div>\r\n }\r\n <ng-container *ngTemplateOutlet=\"presetTpl\"></ng-container>\r\n }\r\n</div>\r\n\r\n<ng-template #dateTimeHourMinuteTpl let-timeFormat=\"timeFormat\" let-timeType=\"timeType\">\r\n <div class=\"x-date-range-portal-content\">\r\n <div class=\"x-date-range-portal-date\">\r\n <x-picker-date\r\n [class.x-date-range-portal-start]=\"activeType === 'start'\"\r\n [class.x-date-range-portal-end]=\"activeType === 'end'\"\r\n [(display)]=\"timeDisplay\"\r\n [(model)]=\"timeModel\"\r\n [rangeHover]=\"timeHover\"\r\n [rangeValue]=\"value\"\r\n [rangeType]=\"activeType\"\r\n [disabledDate]=\"disabledDate\"\r\n (modelChange)=\"dateChange($event)\"\r\n rangePicker\r\n ></x-picker-date>\r\n </div>\r\n <div class=\"x-date-range-portal-time\">\r\n <div class=\"x-date-range-portal-time-label\">\r\n {{ time | date: timeFormat }}\r\n </div>\r\n <x-time-picker-frame\r\n #timePickerFrame\r\n [type]=\"timeType\"\r\n [value]=\"time\"\r\n (nodeEmit)=\"selectTime($event)\"\r\n [disabledTimeParam]=\"activeType\"\r\n [disabledTime]=\"disabledTime\"\r\n [defaultNow]=\"false\"\r\n ></x-time-picker-frame>\r\n </div>\r\n </div>\r\n @if (!isDatePicker && extraFooter) {\r\n <ng-container *xOutlet=\"extraFooter\">{{ extraFooter }}</ng-container>\r\n }\r\n <div class=\"x-date-range-portal-footer\">\r\n <div class=\"x-date-range-portal-footer-left\">\r\n @if (!isDatePicker) {\r\n <ng-container *ngTemplateOutlet=\"presetTpl\"></ng-container>\r\n }\r\n </div>\r\n <x-button type=\"primary\" (click)=\"!sureDisabled && sureTime()\" size=\"small\" [disabled]=\"sureDisabled\">{{\r\n locale.sure\r\n }}</x-button>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #presetTpl>\r\n @if (preset) {\r\n <div class=\"x-date-range-portal-preset\">\r\n @for (item of preset; track item.id) {\r\n @switch (item.id) {\r\n @case ('thisWeek') {\r\n <x-link (click)=\"onPreset('week', 0)\">{{ locale.thisWeek }}</x-link>\r\n }\r\n @case ('lastWeek') {\r\n <x-link (click)=\"onPreset('week', -1)\">{{ locale.lastWeek }}</x-link>\r\n }\r\n @case ('nextWeek') {\r\n <x-link (click)=\"onPreset('week', 1)\">{{ locale.nextWeek }}</x-link>\r\n }\r\n @case ('thisMonth') {\r\n <x-link (click)=\"onPreset('month', 0)\">{{ locale.thisMonth }}</x-link>\r\n }\r\n @case ('lastMonth') {\r\n <x-link (click)=\"onPreset('month', -1)\">{{ locale.lastMonth }}</x-link>\r\n }\r\n @case ('nextMonth') {\r\n <x-link (click)=\"onPreset('month', 1)\">{{ locale.nextMonth }}</x-link>\r\n }\r\n @case ('thisYear') {\r\n <x-link (click)=\"onPreset('year', 0)\">{{ locale.thisYear }}</x-link>\r\n }\r\n @case ('lastYear') {\r\n <x-link (click)=\"onPreset('year', -1)\">{{ locale.lastYear }}</x-link>\r\n }\r\n @case ('nextYear') {\r\n <x-link (click)=\"onPreset('year', 1)\">{{ locale.nextYear }}</x-link>\r\n }\r\n }\r\n @if (!!item.func) {\r\n <x-link (click)=\"onPresetFunc(item)\">{{ item.label }}</x-link>\r\n }\r\n }\r\n </div>\r\n }\r\n</ng-template>\r\n", styles: ["@charset \"UTF-8\";.x-date-range-portal{margin:.0625rem 0;font-size:var(--x-font-size);color:var(--x-text);border:var(--x-border-width) var(--x-border-style) var(--x-border);border-radius:var(--x-border-radius);box-shadow:var(--x-box-shadow) var(--x-box-shadow-light-color);background-color:var(--x-background);width:34rem;display:flex;flex-direction:column}.x-date-range-portal.week .x-picker-date-body .x-picker-date-item:not(.x-date-in-range):not(.x-date-active) .x-date-text{background-color:transparent}.x-date-range-portal.week .x-picker-date-body tbody tr.x-date-week-in-range:not(.x-date-week-start-active):not(.x-date-week-end-active) .x-picker-date-item{background-color:var(--x-primary-800)}.x-date-range-portal.week .x-picker-date-body tbody tr:not(.x-date-week-active):not(.x-date-week-start-active):not(.x-date-week-end-active):not(.x-date-week-in-range):hover .x-picker-date-item{background-color:var(--x-background-a200);border-radius:var(--x-border-radius)}.x-date-range-portal.date-time{width:27rem}.x-date-range-portal.date-time .x-date-range-portal-body{flex-direction:column}.x-date-range-portal.date-hour{width:19.75rem}.x-date-range-portal.date-hour .x-date-range-portal-body{flex-direction:column}.x-date-range-portal.date-minute{width:23.375rem}.x-date-range-portal.date-minute .x-date-range-portal-body{flex-direction:column}.x-date-range-portal-content{display:flex}.x-date-range-portal-preset{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;border-top:var(--x-border-width) solid var(--x-border)}.x-date-range-portal-preset>x-link{padding:.25rem}.x-date-range-portal-preset>x-link:not(:first-child){margin-left:1rem}.x-date-range-portal-extra-footer{display:flex;align-items:center;border-top:var(--x-border-width) var(--x-border-style) var(--x-border);padding:.5rem}.x-date-range-portal-year-month{flex:1;text-align:center}.x-date-range-portal-body{display:flex}.x-date-range-portal-body .x-picker-date-item:before,.x-date-range-portal-body .x-picker-date-item:after{position:absolute;top:50%;right:0;left:0;z-index:1;border:var(--x-border-width) dashed transparent;transform:translateY(-50%);transition:var(--x-animation-duration-base);content:\"\"}.x-date-range-portal-body .x-picker-date-item.x-date-range-start:not(.x-date-last-or-next),.x-date-range-portal-body .x-picker-date-item.x-date-range-end:not(.x-date-last-or-next){color:var(--x-background-100)}.x-date-range-portal-body .x-picker-date-item.x-date-range-start:not(.x-date-last-or-next) .x-date-text,.x-date-range-portal-body .x-picker-date-item.x-date-range-end:not(.x-date-last-or-next) .x-date-text{background-color:var(--x-primary);border-color:var(--x-primary)}.x-date-range-portal-body .x-picker-date-item.x-date-range-start:not(.x-date-last-or-next):hover,.x-date-range-portal-body .x-picker-date-item.x-date-range-end:not(.x-date-last-or-next):hover{color:var(--x-background-100)}.x-date-range-portal-body .x-picker-date-item.x-date-range-start:not(.x-date-last-or-next):hover .x-date-text,.x-date-range-portal-body .x-picker-date-item.x-date-range-end:not(.x-date-last-or-next):hover .x-date-text{background-color:var(--x-primary)}.x-date-range-portal-body .x-picker-date-item.x-date-range-end-left:not(.x-date-last-or-next):not(.x-date-first-day):not(:first-child) .x-date-text{z-index:1}.x-date-range-portal-body .x-picker-date-item.x-date-range-end-left:not(.x-date-last-or-next):not(.x-date-first-day):not(:first-child):after{background-color:var(--x-primary-800);transform:translate(-.25rem,-50%);border-radius:var(--x-border-radius);z-index:0}.x-date-range-portal-body .x-picker-date-item.x-date-range-end-left:not(.x-date-last-or-next):not(.x-date-first-day):not(:first-child).x-date-in-range-hover:after{background-color:var(--x-primary-700)}.x-date-range-portal-body .x-picker-date-item.x-date-range-start-right:not(.x-date-last-or-next):not(.x-date-last-day):not(:last-child) .x-date-text{z-index:1}.x-date-range-portal-body .x-picker-date-item.x-date-range-start-right:not(.x-date-last-or-next):not(.x-date-last-day):not(:last-child):after{background-color:var(--x-primary-800);transform:translate(.25rem,-50%);border-radius:var(--x-border-radius);z-index:0}.x-date-range-portal-body .x-picker-date-item.x-date-range-start-right:not(.x-date-last-or-next):not(.x-date-last-day):not(:last-child).x-date-in-range-hover:after{background-color:var(--x-primary-700)}.x-date-range-portal-body .x-picker-date-item.x-date-range-start.x-date-range-end.x-date-range-start-right:not(.x-date-last-or-next):not(.x-date-last-day):not(:last-child):after{display:none}.x-date-range-portal-body .x-picker-date-item.x-date-in-range:not(.x-date-range-start):not(.x-date-range-end):not(.x-date-last-or-next) .x-date-text{position:relative;z-index:1}.x-date-range-portal-body .x-picker-date-item.x-date-in-range:not(.x-date-range-start):not(.x-date-range-end):not(.x-date-last-or-next):before{background-color:var(--x-primary-800);z-index:0}.x-date-range-portal-body .x-picker-date-item.x-date-in-range:not(.x-date-range-start):not(.x-date-range-end):not(.x-date-last-or-next):first-child:before{transform:translate(.25rem,-50%)}.x-date-range-portal-body .x-picker-date-item.x-date-in-range:not(.x-date-range-start):not(.x-date-range-end):not(.x-date-last-or-next):last-child:before{transform:translate(-.25rem,-50%)}.x-date-range-portal-body .x-picker-date-item.x-date-in-range:not(.x-date-range-start):not(.x-date-range-end):not(.x-date-last-or-next).x-date-in-range-hover-left:before{transform:translate(-.25rem,-50%)}.x-date-range-portal-body .x-picker-date-item.x-date-in-range:not(.x-date-range-start):not(.x-date-range-end):not(.x-date-last-or-next).x-date-in-range-hover-right:before{transform:translate(.25rem,-50%)}.x-date-range-portal-body .x-picker-date-item.x-date-in-range:not(.x-date-range-start):not(.x-date-range-end):not(.x-date-last-or-next).x-date-in-range-hover:before{background-color:var(--x-primary-700)}.x-date-range-portal-body .x-picker-date-item.x-date-range-hover:not(.x-date-last-or-next):before{border-color:var(--x-primary);border-left-color:transparent;border-right-color:transparent;transform:translate(-.25rem,-50%)}.x-date-range-portal-body .x-picker-date-item.x-date-range-hover:first-child:not(.x-date-last-or-next):before,.x-date-range-portal-body .x-picker-date-item.x-date-range-hover.x-date-first-day:before{border-left-color:var(--x-primary);transform:translate(.25rem,-50%)}.x-date-range-portal-body .x-picker-date-item.x-date-range-hover:first-child:not(.x-date-last-or-next).x-date-range-hover-end:before,.x-date-range-portal-body .x-picker-date-item.x-date-range-hover.x-date-first-day.x-date-range-hover-end:before{transform:translate(.25rem,-50%)}.x-date-range-portal-body .x-picker-date-item.x-date-range-hover.x-date-first-day:last-child:not(.x-date-last-or-next):before{transform:translate(.25rem,-50%)}.x-date-range-portal-body .x-picker-date-item.x-date-range-hover:last-child:not(.x-date-last-or-next):before,.x-date-range-portal-body .x-picker-date-item.x-date-range-hover.x-date-last-day:before{border-right-color:var(--x-primary);transform:translate(-.25rem,-50%)}.x-date-range-portal-body .x-picker-date-item.x-date-range-hover:last-child:not(.x-date-last-or-next).x-date-range-hover-start:before,.x-date-range-portal-body .x-picker-date-item.x-date-range-hover.x-date-last-day.x-date-range-hover-start:before{transform:translate(.25rem,-50%)}.x-date-range-portal-body .x-picker-date-item.x-date-range-hover-start:not(.x-date-last-or-next):before{border-left-color:var(--x-primary);transform:translate(.25rem,-50%)}.x-date-range-portal-body .x-picker-date-item.x-date-range-hover.x-date-range-hover-start:not(.x-date-last-or-next):before{transform:translate(.25rem,-50%)}.x-date-range-portal-body .x-picker-date-item.x-date-range-hover-end:not(.x-date-last-or-next):before{border-right-color:var(--x-primary);transform:translate(-.25rem,-50%)}.x-date-range-portal-body .x-picker-date-item.x-date-range-hover-start-left:not(:first-child):not(.x-date-last-or-next):not(.x-date-first-day):before,.x-date-range-portal-body .x-picker-date-item.x-date-range-hover-end-left:not(:first-child):not(.x-date-last-or-next):not(.x-date-first-day):before{border-top-color:var(--x-primary);border-bottom-color:var(--x-primary);transform:translate(-.3125rem,-50%)}.x-date-range-portal-body .x-picker-date-item.x-date-range-hover-start-right:not(:last-child):not(.x-date-last-or-next):not(.x-date-last-day):before,.x-date-range-portal-body .x-picker-date-item.x-date-range-hover-end-right:not(:last-child):not(.x-date-last-or-next):not(.x-date-last-day):before{border-top-color:var(--x-primary);border-bottom-color:var(--x-primary);transform:translate(.3125rem,-50%)}.x-date-range-portal-start,.x-date-range-portal-end{flex:1}.x-date-range-portal-footer{display:flex;align-items:center;justify-content:space-between;border-top:var(--x-border-width) var(--x-border-style) var(--x-border);padding:.5rem}.x-date-range-portal-footer .x-date-range-portal-preset{border-top:none}.x-date-range-portal-footer .x-date-range-portal-preset>x-link{padding:0 .25rem}.x-date-range-portal-date{flex:1}.x-date-range-portal-time{display:flex;flex-direction:column;border-left:var(--x-border-width) var(--x-border-style) var(--x-border)}.x-date-range-portal-time-label{display:flex;align-items:center;justify-content:center;padding:0 .5rem;height:2.5rem;border-bottom:var(--x-border-width) var(--x-border-style) var(--x-border)}.x-date-range-portal-time .x-time-picker-frame{border-width:0;box-shadow:none;margin:0}\n"] }]
|
|
333
|
-
}],
|
|
327
|
+
], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, animations: [XConnectBaseAnimation], providers: [DatePipe, LowerCasePipe], template: "<div class=\"x-date-range-portal {{ type() }}\">\r\n <div class=\"x-date-range-portal-body\">\r\n @switch (type()) {\r\n @case ('date') {\r\n <x-picker-date\r\n #startPicker\r\n class=\"x-date-range-portal-start\"\r\n [(display)]=\"startDisplay\"\r\n [(model)]=\"startModel\"\r\n [rangeValue]=\"value()\"\r\n [rangeType]=\"activeType()\"\r\n [nextYearBtn]=\"false\"\r\n [nextMonthBtn]=\"false\"\r\n [disabledDate]=\"disabledDate()\"\r\n (modelChange)=\"dateChange($event!)\"\r\n (yearChange)=\"yearChange($event, 'start')\"\r\n (monthChange)=\"monthChange($event, 'start')\"\r\n (rangeTdMouseenter)=\"setDatesState($event)\"\r\n rangePicker\r\n ></x-picker-date>\r\n <x-picker-date\r\n #endPicker\r\n class=\"x-date-range-portal-end\"\r\n [(display)]=\"endDisplay\"\r\n [(model)]=\"endModel\"\r\n [rangeValue]=\"value()\"\r\n [rangeType]=\"activeType()\"\r\n [lastYearBtn]=\"false\"\r\n [lastMonthBtn]=\"false\"\r\n [disabledDate]=\"disabledDate()\"\r\n (modelChange)=\"dateChange($event!)\"\r\n (yearChange)=\"yearChange($event, 'end')\"\r\n (monthChange)=\"monthChange($event, 'end')\"\r\n (rangeTdMouseenter)=\"setDatesState($event)\"\r\n rangePicker\r\n ></x-picker-date>\r\n }\r\n @case ('week') {\r\n <x-picker-date\r\n #startPicker\r\n class=\"x-date-range-portal-start\"\r\n type=\"week\"\r\n [(display)]=\"startDisplay\"\r\n [(model)]=\"startModel\"\r\n [rangeValue]=\"value()\"\r\n [rangeType]=\"activeType()\"\r\n [nextYearBtn]=\"false\"\r\n [nextMonthBtn]=\"false\"\r\n [disabledDate]=\"disabledDate()\"\r\n (modelChange)=\"dateChange($event!)\"\r\n (yearChange)=\"yearChange($event, 'start')\"\r\n (monthChange)=\"monthChange($event, 'start')\"\r\n (rangeTdMouseenter)=\"setDatesState($event)\"\r\n rangePicker\r\n ></x-picker-date>\r\n <x-picker-date\r\n #endPicker\r\n class=\"x-date-range-portal-end\"\r\n type=\"week\"\r\n [(display)]=\"endDisplay\"\r\n [(model)]=\"endModel\"\r\n [rangeValue]=\"value()\"\r\n [rangeType]=\"activeType()\"\r\n [lastYearBtn]=\"false\"\r\n [lastMonthBtn]=\"false\"\r\n [disabledDate]=\"disabledDate()\"\r\n (modelChange)=\"dateChange($event!)\"\r\n (yearChange)=\"yearChange($event, 'end')\"\r\n (monthChange)=\"monthChange($event, 'end')\"\r\n (rangeTdMouseenter)=\"setDatesState($event)\"\r\n rangePicker\r\n ></x-picker-date>\r\n }\r\n @case ('month') {\r\n <x-picker-month\r\n #startPicker\r\n class=\"x-date-range-portal-start\"\r\n [(display)]=\"startDisplay\"\r\n [(model)]=\"startModel\"\r\n [rangeValue]=\"value()\"\r\n [rangeType]=\"activeType()\"\r\n [nextYearBtn]=\"false\"\r\n [disabledDate]=\"disabledDate()\"\r\n (modelChange)=\"dateChange($event!)\"\r\n (yearChange)=\"yearChange($event, 'start')\"\r\n (monthChange)=\"monthChange($event, 'start')\"\r\n (rangeTdMouseenter)=\"setDatesState($event)\"\r\n rangePicker\r\n ></x-picker-month>\r\n <x-picker-month\r\n #endPicker\r\n class=\"x-date-range-portal-end\"\r\n [(display)]=\"endDisplay\"\r\n [(model)]=\"endModel\"\r\n [rangeValue]=\"value()\"\r\n [rangeType]=\"activeType()\"\r\n [lastYearBtn]=\"false\"\r\n [disabledDate]=\"disabledDate()\"\r\n (modelChange)=\"dateChange($event!)\"\r\n (yearChange)=\"yearChange($event, 'end')\"\r\n (monthChange)=\"monthChange($event, 'end')\"\r\n (rangeTdMouseenter)=\"setDatesState($event)\"\r\n rangePicker\r\n ></x-picker-month>\r\n }\r\n @case ('quarter') {\r\n <x-picker-quarter\r\n #startPicker\r\n class=\"x-date-range-portal-start\"\r\n [(display)]=\"startDisplay\"\r\n [(model)]=\"startModel\"\r\n [rangeValue]=\"value()\"\r\n [rangeType]=\"activeType()\"\r\n [nextYearBtn]=\"false\"\r\n [disabledDate]=\"disabledDate()\"\r\n (modelChange)=\"dateChange($event!)\"\r\n (yearChange)=\"yearChange($event, 'start')\"\r\n (monthChange)=\"monthChange($event, 'start')\"\r\n (rangeTdMouseenter)=\"setDatesState($event)\"\r\n rangePicker\r\n ></x-picker-quarter>\r\n <x-picker-quarter\r\n #endPicker\r\n class=\"x-date-range-portal-end\"\r\n [(display)]=\"endDisplay\"\r\n [(model)]=\"endModel\"\r\n [rangeValue]=\"value()\"\r\n [rangeType]=\"activeType()\"\r\n [lastYearBtn]=\"false\"\r\n [disabledDate]=\"disabledDate()\"\r\n (modelChange)=\"dateChange($event!)\"\r\n (yearChange)=\"yearChange($event, 'end')\"\r\n (monthChange)=\"monthChange($event, 'end')\"\r\n (rangeTdMouseenter)=\"setDatesState($event)\"\r\n rangePicker\r\n ></x-picker-quarter>\r\n }\r\n @case ('year') {\r\n <x-picker-year\r\n #startPicker\r\n class=\"x-date-range-portal-start\"\r\n [(display)]=\"startDisplay\"\r\n [(model)]=\"startModel\"\r\n [rangeValue]=\"value()\"\r\n [rangeType]=\"activeType()\"\r\n [nextYearBtn]=\"false\"\r\n [disabledDate]=\"disabledDate()\"\r\n (modelChange)=\"dateChange($event!)\"\r\n (yearChange)=\"yearChange($event, 'start')\"\r\n (monthChange)=\"monthChange($event, 'start')\"\r\n (rangeTdMouseenter)=\"setDatesState($event)\"\r\n rangePicker\r\n ></x-picker-year>\r\n <x-picker-year\r\n #endPicker\r\n class=\"x-date-range-portal-end\"\r\n [(display)]=\"endDisplay\"\r\n [(model)]=\"endModel\"\r\n [rangeValue]=\"value()\"\r\n [rangeType]=\"activeType()\"\r\n [lastYearBtn]=\"false\"\r\n [disabledDate]=\"disabledDate()\"\r\n (modelChange)=\"dateChange($event!)\"\r\n (yearChange)=\"yearChange($event, 'end')\"\r\n (monthChange)=\"monthChange($event, 'end')\"\r\n (rangeTdMouseenter)=\"setDatesState($event)\"\r\n rangePicker\r\n ></x-picker-year>\r\n }\r\n @case ('date-time') {\r\n <ng-container\r\n *ngTemplateOutlet=\"dateTimeHourMinuteTpl; context: { timeFormat: 'HH:mm:ss', timeType: 'time' }\"\r\n ></ng-container>\r\n }\r\n @case ('date-hour') {\r\n <ng-container\r\n *ngTemplateOutlet=\"dateTimeHourMinuteTpl; context: { timeFormat: 'HH', timeType: 'hour' }\"\r\n ></ng-container>\r\n }\r\n @case ('date-minute') {\r\n <ng-container\r\n *ngTemplateOutlet=\"dateTimeHourMinuteTpl; context: { timeFormat: 'HH:mm', timeType: 'minute' }\"\r\n ></ng-container>\r\n }\r\n }\r\n </div>\r\n @if (isDatePicker()) {\r\n @if (extraFooter()) {\r\n <div class=\"x-date-range-portal-extra-footer\">\r\n <ng-container *xOutlet=\"extraFooter()\">{{ extraFooter() }}</ng-container>\r\n </div>\r\n }\r\n <ng-container *ngTemplateOutlet=\"presetTpl\"></ng-container>\r\n }\r\n</div>\r\n\r\n<ng-template #dateTimeHourMinuteTpl let-timeFormat=\"timeFormat\" let-timeType=\"timeType\">\r\n <div class=\"x-date-range-portal-content\">\r\n <div class=\"x-date-range-portal-date\">\r\n <x-picker-date\r\n [class.x-date-range-portal-start]=\"activeType() === 'start'\"\r\n [class.x-date-range-portal-end]=\"activeType() === 'end'\"\r\n [(display)]=\"timeDisplay\"\r\n [(model)]=\"timeModel\"\r\n [rangeHover]=\"timeHover()\"\r\n [rangeValue]=\"value()\"\r\n [rangeType]=\"activeType()\"\r\n [disabledDate]=\"disabledDate()\"\r\n (modelChange)=\"dateChange($event!)\"\r\n rangePicker\r\n ></x-picker-date>\r\n </div>\r\n <div class=\"x-date-range-portal-time\">\r\n <div class=\"x-date-range-portal-time-label\">\r\n {{ time() | date: timeFormat }}\r\n </div>\r\n <x-time-picker-frame\r\n #timePickerFrame\r\n [type]=\"timeType\"\r\n [value]=\"time()\"\r\n (nodeEmit)=\"selectTime($event)\"\r\n [disabledTimeParam]=\"activeType()\"\r\n [disabledTime]=\"disabledTime()\"\r\n [defaultNow]=\"false\"\r\n ></x-time-picker-frame>\r\n </div>\r\n </div>\r\n @if (!isDatePicker() && extraFooter()) {\r\n <ng-container *xOutlet=\"extraFooter()\">{{ extraFooter() }}</ng-container>\r\n }\r\n <div class=\"x-date-range-portal-footer\">\r\n <div class=\"x-date-range-portal-footer-left\">\r\n @if (!isDatePicker()) {\r\n <ng-container *ngTemplateOutlet=\"presetTpl\"></ng-container>\r\n }\r\n </div>\r\n <x-button type=\"primary\" text (click)=\"!sureDisabled() && sureTime()\" size=\"small\" [disabled]=\"sureDisabled()!\">{{\r\n locale().sure\r\n }}</x-button>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #presetTpl>\r\n @if (preset()) {\r\n <div class=\"x-date-range-portal-preset\">\r\n @for (item of preset(); track item) {\r\n @switch (item.id) {\r\n @case ('thisWeek') {\r\n <x-link (click)=\"onPreset('week', 0)\">{{ locale().thisWeek }}</x-link>\r\n }\r\n @case ('lastWeek') {\r\n <x-link (click)=\"onPreset('week', -1)\">{{ locale().lastWeek }}</x-link>\r\n }\r\n @case ('nextWeek') {\r\n <x-link (click)=\"onPreset('week', 1)\">{{ locale().nextWeek }}</x-link>\r\n }\r\n @case ('thisMonth') {\r\n <x-link (click)=\"onPreset('month', 0)\">{{ locale().thisMonth }}</x-link>\r\n }\r\n @case ('lastMonth') {\r\n <x-link (click)=\"onPreset('month', -1)\">{{ locale().lastMonth }}</x-link>\r\n }\r\n @case ('nextMonth') {\r\n <x-link (click)=\"onPreset('month', 1)\">{{ locale().nextMonth }}</x-link>\r\n }\r\n @case ('thisYear') {\r\n <x-link (click)=\"onPreset('year', 0)\">{{ locale().thisYear }}</x-link>\r\n }\r\n @case ('lastYear') {\r\n <x-link (click)=\"onPreset('year', -1)\">{{ locale().lastYear }}</x-link>\r\n }\r\n @case ('nextYear') {\r\n <x-link (click)=\"onPreset('year', 1)\">{{ locale().nextYear }}</x-link>\r\n }\r\n }\r\n @if (!!item.func) {\r\n <x-link (click)=\"onPresetFunc(item)\">{{ item.label }}</x-link>\r\n }\r\n }\r\n </div>\r\n }\r\n</ng-template>\r\n", styles: ["@charset \"UTF-8\";.x-date-range-portal{margin:.0625rem 0;font-size:var(--x-font-size);color:var(--x-text);border-radius:var(--x-border-small-radius);box-shadow:var(--x-box-shadow);background-color:var(--x-background-100);width:34rem;display:flex;flex-direction:column}.x-date-range-portal.week .x-picker-date-body .x-picker-date-item:not(.x-date-in-range):not(.x-date-active) .x-date-text{background-color:transparent}.x-date-range-portal.week .x-picker-date-body tbody tr.x-date-week-in-range:not(.x-date-week-start-active):not(.x-date-week-end-active) .x-picker-date-item{background-color:var(--x-primary-800)}.x-date-range-portal.week .x-picker-date-body tbody tr:not(.x-date-week-active):not(.x-date-week-start-active):not(.x-date-week-end-active):not(.x-date-week-in-range):hover .x-picker-date-item{background-color:var(--x-background-a200)}.x-date-range-portal.week .x-picker-date-body tbody tr:not(.x-date-week-active):not(.x-date-week-start-active):not(.x-date-week-end-active):not(.x-date-week-in-range):hover .x-picker-date-item:first-child{border-top-left-radius:var(--x-border-radius);border-bottom-left-radius:var(--x-border-radius)}.x-date-range-portal.week .x-picker-date-body tbody tr:not(.x-date-week-active):not(.x-date-week-start-active):not(.x-date-week-end-active):not(.x-date-week-in-range):hover .x-picker-date-item:last-child{border-top-right-radius:var(--x-border-radius);border-bottom-right-radius:var(--x-border-radius)}.x-date-range-portal.date-time{width:27rem}.x-date-range-portal.date-time .x-date-range-portal-body{flex-direction:column}.x-date-range-portal.date-hour{width:19.75rem}.x-date-range-portal.date-hour .x-date-range-portal-body{flex-direction:column}.x-date-range-portal.date-minute{width:23.375rem}.x-date-range-portal.date-minute .x-date-range-portal-body{flex-direction:column}.x-date-range-portal-content{display:flex}.x-date-range-portal-preset{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;border-top:var(--x-border-width) solid var(--x-border)}.x-date-range-portal-preset>x-link{padding:.25rem}.x-date-range-portal-preset>x-link:not(:first-child){margin-left:1rem}.x-date-range-portal-extra-footer{display:flex;align-items:center;border-top:var(--x-border-width) var(--x-border-style) var(--x-border);padding:.5rem}.x-date-range-portal-year-month{flex:1;text-align:center}.x-date-range-portal-body{display:flex}.x-date-range-portal-body .x-picker-date-item:before,.x-date-range-portal-body .x-picker-date-item:after{position:absolute;top:50%;right:0;left:0;z-index:1;border:var(--x-border-width) dashed transparent;transform:translateY(-50%);transition:var(--x-animation-duration-base);content:\"\"}.x-date-range-portal-body .x-picker-date-item.x-date-range-start:not(.x-date-last-or-next),.x-date-range-portal-body .x-picker-date-item.x-date-range-end:not(.x-date-last-or-next){color:var(--x-background-100)}.x-date-range-portal-body .x-picker-date-item.x-date-range-start:not(.x-date-last-or-next) .x-date-text,.x-date-range-portal-body .x-picker-date-item.x-date-range-end:not(.x-date-last-or-next) .x-date-text{background-color:var(--x-primary);border-color:var(--x-primary)}.x-date-range-portal-body .x-picker-date-item.x-date-range-start:not(.x-date-last-or-next):hover,.x-date-range-portal-body .x-picker-date-item.x-date-range-end:not(.x-date-last-or-next):hover{color:var(--x-background-100)}.x-date-range-portal-body .x-picker-date-item.x-date-range-start:not(.x-date-last-or-next):hover .x-date-text,.x-date-range-portal-body .x-picker-date-item.x-date-range-end:not(.x-date-last-or-next):hover .x-date-text{background-color:var(--x-primary)}.x-date-range-portal-body .x-picker-date-item.x-date-range-end-left:not(.x-date-last-or-next):not(.x-date-first-day):not(:first-child) .x-date-text{z-index:1}.x-date-range-portal-body .x-picker-date-item.x-date-range-end-left:not(.x-date-last-or-next):not(.x-date-first-day):not(:first-child):after{background-color:var(--x-primary-800);transform:translate(-.25rem,-50%);border-top-right-radius:var(--x-border-radius);border-bottom-right-radius:var(--x-border-radius);z-index:0}.x-date-range-portal-body .x-picker-date-item.x-date-range-end-left:not(.x-date-last-or-next):not(.x-date-first-day):not(:first-child).x-date-in-range-hover:after{background-color:var(--x-primary-700)}.x-date-range-portal-body .x-picker-date-item.x-date-range-start-right:not(.x-date-last-or-next):not(.x-date-last-day):not(:last-child) .x-date-text{z-index:1}.x-date-range-portal-body .x-picker-date-item.x-date-range-start-right:not(.x-date-last-or-next):not(.x-date-last-day):not(:last-child):after{background-color:var(--x-primary-800);transform:translate(.25rem,-50%);border-top-left-radius:var(--x-border-radius);border-bottom-left-radius:var(--x-border-radius);z-index:0}.x-date-range-portal-body .x-picker-date-item.x-date-range-start-right:not(.x-date-last-or-next):not(.x-date-last-day):not(:last-child).x-date-in-range-hover:after{background-color:var(--x-primary-700)}.x-date-range-portal-body .x-picker-date-item.x-date-range-start.x-date-range-end.x-date-range-start-right:not(.x-date-last-or-next):not(.x-date-last-day):not(:last-child):after{display:none}.x-date-range-portal-body .x-picker-date-item.x-date-in-range:not(.x-date-range-start):not(.x-date-range-end):not(.x-date-last-or-next) .x-date-text{position:relative;z-index:1}.x-date-range-portal-body .x-picker-date-item.x-date-in-range:not(.x-date-range-start):not(.x-date-range-end):not(.x-date-last-or-next):before{background-color:var(--x-primary-800);z-index:0}.x-date-range-portal-body .x-picker-date-item.x-date-in-range:not(.x-date-range-start):not(.x-date-range-end):not(.x-date-last-or-next):first-child:before{transform:translate(.25rem,-50%)}.x-date-range-portal-body .x-picker-date-item.x-date-in-range:not(.x-date-range-start):not(.x-date-range-end):not(.x-date-last-or-next):last-child:before{transform:translate(-.25rem,-50%)}.x-date-range-portal-body .x-picker-date-item.x-date-in-range:not(.x-date-range-start):not(.x-date-range-end):not(.x-date-last-or-next).x-date-in-range-hover-left:before{transform:translate(-.25rem,-50%)}.x-date-range-portal-body .x-picker-date-item.x-date-in-range:not(.x-date-range-start):not(.x-date-range-end):not(.x-date-last-or-next).x-date-in-range-hover-right:before{transform:translate(.25rem,-50%)}.x-date-range-portal-body .x-picker-date-item.x-date-in-range:not(.x-date-range-start):not(.x-date-range-end):not(.x-date-last-or-next).x-date-in-range-hover:before{background-color:var(--x-primary-700)}.x-date-range-portal-body .x-picker-date-item.x-date-range-hover:not(.x-date-last-or-next):before{border-color:var(--x-primary);border-left-color:transparent;border-right-color:transparent;transform:translate(-.25rem,-50%)}.x-date-range-portal-body .x-picker-date-item.x-date-range-hover:first-child:not(.x-date-last-or-next):before,.x-date-range-portal-body .x-picker-date-item.x-date-range-hover.x-date-first-day:before{border-left-color:var(--x-primary);transform:translate(.25rem,-50%)}.x-date-range-portal-body .x-picker-date-item.x-date-range-hover:first-child:not(.x-date-last-or-next).x-date-range-hover-end:before,.x-date-range-portal-body .x-picker-date-item.x-date-range-hover.x-date-first-day.x-date-range-hover-end:before{transform:translate(.25rem,-50%)}.x-date-range-portal-body .x-picker-date-item.x-date-range-hover.x-date-first-day:last-child:not(.x-date-last-or-next):before{transform:translate(.25rem,-50%)}.x-date-range-portal-body .x-picker-date-item.x-date-range-hover:last-child:not(.x-date-last-or-next):before,.x-date-range-portal-body .x-picker-date-item.x-date-range-hover.x-date-last-day:before{border-right-color:var(--x-primary);transform:translate(-.25rem,-50%)}.x-date-range-portal-body .x-picker-date-item.x-date-range-hover:last-child:not(.x-date-last-or-next).x-date-range-hover-start:before,.x-date-range-portal-body .x-picker-date-item.x-date-range-hover.x-date-last-day.x-date-range-hover-start:before{transform:translate(.25rem,-50%)}.x-date-range-portal-body .x-picker-date-item.x-date-range-hover-start:not(.x-date-last-or-next):before{border-left-color:var(--x-primary);transform:translate(.25rem,-50%);border-top-left-radius:var(--x-border-radius);border-bottom-left-radius:var(--x-border-radius)}.x-date-range-portal-body .x-picker-date-item.x-date-range-hover.x-date-range-hover-start:not(.x-date-last-or-next):before{transform:translate(.25rem,-50%)}.x-date-range-portal-body .x-picker-date-item.x-date-range-hover-end:not(.x-date-last-or-next):before{border-right-color:var(--x-primary);transform:translate(-.25rem,-50%);border-top-right-radius:var(--x-border-radius);border-bottom-right-radius:var(--x-border-radius)}.x-date-range-portal-body .x-picker-date-item.x-date-range-hover-start-left:not(:first-child):not(.x-date-last-or-next):not(.x-date-first-day):before,.x-date-range-portal-body .x-picker-date-item.x-date-range-hover-end-left:not(:first-child):not(.x-date-last-or-next):not(.x-date-first-day):before{border-top-color:var(--x-primary);border-bottom-color:var(--x-primary);transform:translate(-.3125rem,-50%);border-top-right-radius:var(--x-border-radius);border-bottom-right-radius:var(--x-border-radius)}.x-date-range-portal-body .x-picker-date-item.x-date-range-hover-start-right:not(:last-child):not(.x-date-last-or-next):not(.x-date-last-day):before,.x-date-range-portal-body .x-picker-date-item.x-date-range-hover-end-right:not(:last-child):not(.x-date-last-or-next):not(.x-date-last-day):before{border-top-color:var(--x-primary);border-bottom-color:var(--x-primary);transform:translate(.3125rem,-50%);border-top-left-radius:var(--x-border-radius);border-bottom-left-radius:var(--x-border-radius)}.x-date-range-portal-start,.x-date-range-portal-end{flex:1}.x-date-range-portal-footer{display:flex;align-items:center;justify-content:space-between;border-top:var(--x-border-width) var(--x-border-style) var(--x-border);padding:.5rem}.x-date-range-portal-footer .x-date-range-portal-preset{border-top:none}.x-date-range-portal-footer .x-date-range-portal-preset>x-link{padding:0 .25rem}.x-date-range-portal-date{flex:1}.x-date-range-portal-time{display:flex;flex-direction:column;border-left:var(--x-border-width) var(--x-border-style) var(--x-border)}.x-date-range-portal-time-label{display:flex;align-items:center;justify-content:center;padding:0 .5rem;height:2.5rem;border-bottom:var(--x-border-width) var(--x-border-style) var(--x-border)}.x-date-range-portal-time .x-time-picker-frame{border-width:0;box-shadow:none;margin:0}\n"] }]
|
|
328
|
+
}], propDecorators: { getPlacement: [{
|
|
334
329
|
type: HostBinding,
|
|
335
330
|
args: ['@x-connect-base-animation']
|
|
336
331
|
}], done: [{
|
|
@@ -339,14 +334,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImpor
|
|
|
339
334
|
}], start: [{
|
|
340
335
|
type: HostListener,
|
|
341
336
|
args: ['@x-connect-base-animation.start', ['$event']]
|
|
342
|
-
}], startPicker: [{
|
|
343
|
-
type: ViewChild,
|
|
344
|
-
args: ['startPicker']
|
|
345
|
-
}], endPicker: [{
|
|
346
|
-
type: ViewChild,
|
|
347
|
-
args: ['endPicker']
|
|
348
|
-
}], timePickerFrame: [{
|
|
349
|
-
type: ViewChild,
|
|
350
|
-
args: ['timePickerFrame']
|
|
351
337
|
}] } });
|
|
352
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1yYW5nZS1wb3J0YWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGliL25nLW5lc3QvdWkvZGF0ZS1waWNrZXIvZGF0ZS1yYW5nZS1wb3J0YWwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGliL25nLW5lc3QvdWkvZGF0ZS1waWNrZXIvZGF0ZS1yYW5nZS1wb3J0YWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxpQkFBaUIsRUFDakIsdUJBQXVCLEVBS3ZCLFdBQVcsRUFDWCxZQUFZLEVBQ1osU0FBUyxFQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDTCxzQkFBc0IsRUFNdkIsTUFBTSx3QkFBd0IsQ0FBQztBQUNoQyxPQUFPLEVBQ0wsUUFBUSxFQUNSLHFCQUFxQixFQUVyQixVQUFVLEVBQ1YsU0FBUyxFQUNULE9BQU8sRUFFUCxRQUFRLEVBQ1IsU0FBUyxFQUNULFNBQVMsRUFDVCxRQUFRLEVBQ1QsTUFBTSxrQkFBa0IsQ0FBQztBQUMxQixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDaEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxhQUFhLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUU1RSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUMvRCxPQUFPLEVBQTZCLGlCQUFpQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDdkYsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sNEJB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QyxJQUFJLG1CQUNwQix1QkFBdUIsQ0FBQyxNQUFNLGNBQ25DLENBQUMscUJBQXFCLENBQUMsYUFDeEIsQ0FBQyxRQUFRLEVBQUUsYUFBYSxDQUFDO29LQUdhLFNBQVM7c0JBQXpELFdBQVc7dUJBQUMsMkJBQTJCO2dCQUNvQixJQUFJO3NCQUEvRCxZQUFZO3VCQUFDLGdDQUFnQyxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQUlHLEtBQUs7c0JBQWpFLFlBQVk7dUJBQUMsaUNBQWlDLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBSWpDLFdBQVc7c0JBQXBDLFNBQVM7dUJBQUMsYUFBYTtnQkFDQSxTQUFTO3NCQUFoQyxTQUFTO3VCQUFDLFdBQVc7Z0JBQ1EsZUFBZTtzQkFBNUMsU0FBUzt1QkFBQyxpQkFBaUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBWaWV3RW5jYXBzdWxhdGlvbixcclxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICBPbkluaXQsXHJcbiAgT25EZXN0cm95LFxyXG4gIEFmdGVyVmlld0luaXQsXHJcbiAgSG9zdEJpbmRpbmcsXHJcbiAgSG9zdExpc3RlbmVyLFxyXG4gIFZpZXdDaGlsZFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge1xyXG4gIFhEYXRlUmFuZ2VQb3J0YWxQcmVmaXgsXHJcbiAgWERhdGVQaWNrZXJUeXBlLFxyXG4gIFhEYXRlQ2VsbCxcclxuICBYRGF0ZVJhbmdlUHJlc2V0LFxyXG4gIFhEYXRlUGlja2VyRGlzYWJsZWREYXRlLFxyXG4gIFhEYXRlUGlja2VyRGlzYWJsZWRUaW1lXHJcbn0gZnJvbSAnLi9kYXRlLXBpY2tlci5wcm9wZXJ0eSc7XHJcbmltcG9ydCB7XHJcbiAgWElzRW1wdHksXHJcbiAgWENvbm5lY3RCYXNlQW5pbWF0aW9uLFxyXG4gIFhQb3NpdGlvblRvcEJvdHRvbSxcclxuICBYQWRkTW9udGhzLFxyXG4gIFhBZGRZZWFycyxcclxuICBYSXNOdWxsLFxyXG4gIFhUZW1wbGF0ZSxcclxuICBYSXNBcnJheSxcclxuICBYSXNOdW1iZXIsXHJcbiAgWElzU3RyaW5nLFxyXG4gIFhBZGREYXlzXHJcbn0gZnJvbSAnQG5nLW5lc3QvdWkvY29yZSc7XHJcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgdGFrZVVudGlsLCBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IERhdGVQaXBlLCBMb3dlckNhc2VQaXBlLCBOZ1RlbXBsYXRlT3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgWEkxOG5TZXJ2aWNlLCBYSTE4bkRhdGVQaWNrZXIgfSBmcm9tICdAbmctbmVzdC91aS9pMThuJztcclxuaW1wb3J0IHsgWFBpY2tlck1vbnRoQ29tcG9uZW50IH0gZnJvbSAnLi9waWNrZXItbW9udGguY29tcG9uZW50JztcclxuaW1wb3J0IHsgWFBpY2tlclllYXJDb21wb25lbnQgfSBmcm9tICcuL3BpY2tlci15ZWFyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFhQaWNrZXJEYXRlQ29tcG9uZW50IH0gZnJvbSAnLi9waWNrZXItZGF0ZS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBYVGltZVBpY2tlckZyYW1lQ29tcG9uZW50LCBYVGltZVBpY2tlck1vZHVsZSB9IGZyb20gJ0BuZy1uZXN0L3VpL3RpbWUtcGlja2VyJztcclxuaW1wb3J0IHsgWFBpY2tlclF1YXJ0ZXJDb21wb25lbnQgfSBmcm9tICcuL3BpY2tlci1xdWFydGVyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFhCdXR0b25Db21wb25lbnQgfSBmcm9tICdAbmctbmVzdC91aS9idXR0b24nO1xyXG5pbXBvcnQgeyBYTGlua0NvbXBvbmVudCB9IGZyb20gJ0BuZy1uZXN0L3VpL2xpbmsnO1xyXG5pbXBvcnQgeyBYT3V0bGV0RGlyZWN0aXZlIH0gZnJvbSAnQG5nLW5lc3QvdWkvb3V0bGV0JztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiBgJHtYRGF0ZVJhbmdlUG9ydGFsUHJlZml4fWAsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBOZ1RlbXBsYXRlT3V0bGV0LFxyXG4gICAgRGF0ZVBpcGUsXHJcbiAgICBYUGlja2VyRGF0ZUNvbXBvbmVudCxcclxuICAgIFhQaWNrZXJNb250aENvbXBvbmVudCxcclxuICAgIFhQaWNrZXJZZWFyQ29tcG9uZW50LFxyXG4gICAgWFBpY2tlclF1YXJ0ZXJDb21wb25lbnQsXHJcbiAgICBYVGltZVBpY2tlck1vZHVsZSxcclxuICAgIFhCdXR0b25Db21wb25lbnQsXHJcbiAgICBYTGlua0NvbXBvbmVudCxcclxuICAgIFhPdXRsZXREaXJlY3RpdmVcclxuICBdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9kYXRlLXJhbmdlLXBvcnRhbC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vZGF0ZS1yYW5nZS1wb3J0YWwuY29tcG9uZW50LnNjc3MnXSxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG4gIGFuaW1hdGlvbnM6IFtYQ29ubmVjdEJhc2VBbmltYXRpb25dLFxyXG4gIHByb3ZpZGVyczogW0RhdGVQaXBlLCBMb3dlckNhc2VQaXBlXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgWERhdGVSYW5nZVBvcnRhbENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBBZnRlclZpZXdJbml0IHtcclxuICBASG9zdEJpbmRpbmcoJ0B4LWNvbm5lY3QtYmFzZS1hbmltYXRpb24nKSBwdWJsaWMgcGxhY2VtZW50ITogWFBvc2l0aW9uVG9wQm90dG9tO1xyXG4gIEBIb3N0TGlzdGVuZXIoJ0B4LWNvbm5lY3QtYmFzZS1hbmltYXRpb24uZG9uZScsIFsnJGV2ZW50J10pIGRvbmUoZXZlbnQ6IHsgdG9TdGF0ZTogYW55IH0pIHtcclxuICAgIHRoaXMuYW5pbWF0aW5nKGZhbHNlKTtcclxuICAgIGV2ZW50LnRvU3RhdGUgPT09ICd2b2lkJyAmJiB0aGlzLmRlc3Ryb3lQb3J0YWwoKTtcclxuICB9XHJcbiAgQEhvc3RMaXN0ZW5lcignQHgtY29ubmVjdC1iYXNlLWFuaW1hdGlvbi5zdGFydCcsIFsnJGV2ZW50J10pIHN0YXJ0KCkge1xyXG4gICAgdGhpcy5hbmltYXRpbmcodHJ1ZSk7XHJcbiAgfVxyXG5cclxuICBAVmlld0NoaWxkKCdzdGFydFBpY2tlcicpIHN0YXJ0UGlja2VyITogWFBpY2tlckRhdGVDb21wb25lbnQgfCBYUGlja2VyTW9udGhDb21wb25lbnQgfCBYUGlja2VyWWVhckNvbXBvbmVudDtcclxuICBAVmlld0NoaWxkKCdlbmRQaWNrZXInKSBlbmRQaWNrZXIhOiBYUGlja2VyRGF0ZUNvbXBvbmVudCB8IFhQaWNrZXJNb250aENvbXBvbmVudCB8IFhQaWNrZXJZZWFyQ29tcG9uZW50O1xyXG4gIEBWaWV3Q2hpbGQoJ3RpbWVQaWNrZXJGcmFtZScpIHRpbWVQaWNrZXJGcmFtZT86IFhUaW1lUGlja2VyRnJhbWVDb21wb25lbnQ7XHJcblxyXG4gIHR5cGU6IFhEYXRlUGlja2VyVHlwZSA9ICdkYXRlJztcclxuICBkaXNwbGF5ID0gbmV3IERhdGUoKTtcclxuICBtb2RlbCE6IERhdGU7XHJcbiAgc3RhcnRNb2RlbCE6IERhdGUgfCBudWxsO1xyXG4gIGVuZE1vZGVsITogRGF0ZSB8IG51bGw7XHJcbiAgc3RhcnRZZWFyITogbnVtYmVyO1xyXG4gIHN0YXJ0RGlzcGxheTogRGF0ZSA9IG5ldyBEYXRlKCk7XHJcbiAgZW5kRGlzcGxheTogRGF0ZSA9IFhBZGRNb250aHModGhpcy5zdGFydERpc3BsYXksIDEpO1xyXG4gIHZhbHVlOiAobnVtYmVyIHwgbnVsbClbXSA9IFtdO1xyXG4gIHZhbHVlQ2hhbmdlITogU3ViamVjdDxudW1iZXJbXT47XHJcbiAgcG9zaXRpb25DaGFuZ2UhOiBTdWJqZWN0PGFueT47XHJcbiAgYWN0aXZlVHlwZUNoYW5nZSE6IFN1YmplY3Q8J3N0YXJ0JyB8ICdlbmQnPjtcclxuICBhY3RpdmVUeXBlITogJ3N0YXJ0JyB8ICdlbmQnO1xyXG4gIGFuaW1hdGluZyE6IEZ1bmN0aW9uO1xyXG4gIGNsb3NlUG9ydGFsITogRnVuY3Rpb247XHJcbiAgZGVzdHJveVBvcnRhbCE6IEZ1bmN0aW9uO1xyXG4gIGRpc2FibGVkRGF0ZSE6IFhEYXRlUGlja2VyRGlzYWJsZWREYXRlO1xyXG4gIGRpc2FibGVkVGltZSE6IFhEYXRlUGlja2VyRGlzYWJsZWRUaW1lO1xyXG4gIG5vZGVFbWl0ITogKGRhdGU6IERhdGVbXSwgY2xvc2U/OiBib29sZWFuKSA9PiB2b2lkO1xyXG4gIHN0YXJ0Tm9kZUVtaXQhOiAoZGF0ZTogRGF0ZSB8IG51bGwsIGNsb3NlPzogYm9vbGVhbiwgaXNEYXRlUGlja2VyPzogYm9vbGVhbikgPT4gdm9pZDtcclxuICBlbmROb2RlRW1pdCE6IChkYXRlOiBEYXRlIHwgbnVsbCwgY2xvc2U/OiBib29sZWFuLCBpc0RhdGVQaWNrZXI/OiBib29sZWFuKSA9PiB2b2lkO1xyXG4gIGxvY2FsZTogWEkxOG5EYXRlUGlja2VyID0ge307XHJcbiAgdGltZSE6IG51bWJlciB8IG51bGw7XHJcbiAgdGltZURpc3BsYXk6IERhdGUgPSBuZXcgRGF0ZSgpO1xyXG4gIHRpbWVNb2RlbCE6IERhdGUgfCBudWxsO1xyXG4gIHRpbWVIb3ZlciA9IGZhbHNlO1xyXG4gIG5vZGVDbGlja0NvdW50ID0gMDtcclxuICBwcmVzZXQ6IFhEYXRlUmFuZ2VQcmVzZXRbXSA9IFtdO1xyXG4gIGV4dHJhRm9vdGVyPzogWFRlbXBsYXRlO1xyXG4gIHByaXZhdGUgX3VuU3ViamVjdCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcblxyXG4gIGdldCBpc0RhdGVQaWNrZXIoKSB7XHJcbiAgICByZXR1cm4gWydkYXRlJywgJ3F1YXJ0ZXInLCAnd2VlaycsICdtb250aCcsICd5ZWFyJ10uaW5jbHVkZXModGhpcy50eXBlKTtcclxuICB9XHJcblxyXG4gIGdldCBzdXJlRGlzYWJsZWQoKSB7XHJcbiAgICBpZiAodGhpcy50aW1lUGlja2VyRnJhbWUgJiYgIVhJc0VtcHR5KHRoaXMudGltZSkpIHtcclxuICAgICAgY29uc3QgZHQgPSBuZXcgRGF0ZSh0aGlzLnRpbWUhKTtcclxuICAgICAgY29uc3QgaG91cnMgPSBkdC5nZXRIb3VycygpO1xyXG4gICAgICBjb25zdCBtaW51dGVzID0gZHQuZ2V0TWludXRlcygpO1xyXG4gICAgICBjb25zdCBzZWNvbmRzID0gZHQuZ2V0U2Vjb25kcygpO1xyXG4gICAgICByZXR1cm4gKFxyXG4gICAgICAgIHRoaXMudGltZVBpY2tlckZyYW1lLnNldERpc2FibGVkKCdob3VycycsIGhvdXJzKSB8fFxyXG4gICAgICAgIHRoaXMudGltZVBpY2tlckZyYW1lLnNldERpc2FibGVkKCdtaW51dGVzJywgbWludXRlcykgfHxcclxuICAgICAgICB0aGlzLnRpbWVQaWNrZXJGcmFtZS5zZXREaXNhYmxlZCgnc2Vjb25kcycsIHNlY29uZHMpXHJcbiAgICAgICk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHVibGljIGRhdGVQaXBlOiBEYXRlUGlwZSxcclxuICAgIHB1YmxpYyBsb3dlckNhc2VQaXBlOiBMb3dlckNhc2VQaXBlLFxyXG4gICAgcHVibGljIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBwdWJsaWMgaTE4bjogWEkxOG5TZXJ2aWNlXHJcbiAgKSB7fVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMudmFsdWVDaGFuZ2UucGlwZSh0YWtlVW50aWwodGhpcy5fdW5TdWJqZWN0KSkuc3Vic2NyaWJlKCh4KSA9PiB7XHJcbiAgICAgIHRoaXMudmFsdWUgPSB4O1xyXG4gICAgICB0aGlzLmluaXQoKTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5wb3NpdGlvbkNoYW5nZS5waXBlKHRha2VVbnRpbCh0aGlzLl91blN1YmplY3QpKS5zdWJzY3JpYmUoKHgpID0+IHtcclxuICAgICAgdGhpcy5wbGFjZW1lbnQgPSB4O1xyXG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9KTtcclxuICAgIHRoaXMuYWN0aXZlVHlwZUNoYW5nZS5waXBlKHRha2VVbnRpbCh0aGlzLl91blN1YmplY3QpKS5zdWJzY3JpYmUoKHgpID0+IHtcclxuICAgICAgdGhpcy5hY3RpdmVUeXBlID0geDtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5pMThuLmxvY2FsZUNoYW5nZVxyXG4gICAgICAucGlwZShcclxuICAgICAgICBtYXAoKHgpID0+IHguZGF0ZVBpY2tlciBhcyBYSTE4bkRhdGVQaWNrZXIpLFxyXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLl91blN1YmplY3QpXHJcbiAgICAgIClcclxuICAgICAgLnN1YnNjcmliZSgoeCkgPT4ge1xyXG4gICAgICAgIHRoaXMubG9jYWxlID0geDtcclxuICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICB0aGlzLmluaXQoKTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5fdW5TdWJqZWN0Lm5leHQoKTtcclxuICAgIHRoaXMuX3VuU3ViamVjdC51bnN1YnNjcmliZSgpO1xyXG4gIH1cclxuXHJcbiAgaW5pdCgpIHtcclxuICAgIGlmICghWElzRW1wdHkodGhpcy52YWx1ZSkpIHtcclxuICAgICAgdGhpcy5zZXREZWZhdWx0KCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnZhbHVlID0gW251bGwsIG51bGxdO1xyXG4gICAgICB0aGlzLm1vZGVsID0gdGhpcy5kaXNwbGF5O1xyXG4gICAgICB0aGlzLnN0YXJ0TW9kZWwgPSB0aGlzLm1vZGVsO1xyXG4gICAgICB0aGlzLmVuZE1vZGVsID0gdGhpcy5zZXRNb2RlbEJ5VHlwZSh0aGlzLm1vZGVsLCB0aGlzLmlzRGF0ZVBpY2tlciA/IDEgOiAwKTtcclxuICAgICAgdGhpcy5zZXREaXNwbGF5KHRoaXMubW9kZWwpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgc3RvcFByb3BhZ2F0aW9uKGV2ZW50OiBFdmVudCk6IHZvaWQge1xyXG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgfVxyXG5cclxuICBzZXRNb2RlbEJ5VHlwZShieU1vZGVsOiBEYXRlLCBudW06IG51bWJlciA9IDEpIHtcclxuICAgIGlmIChbJ21vbnRoJywgJ3F1YXJ0ZXInXS5pbmNsdWRlcyh0aGlzLnR5cGUpKSB7XHJcbiAgICAgIHJldHVybiBYQWRkWWVhcnMoYnlNb2RlbCEsIG51bSk7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMudHlwZSA9PT0gJ3llYXInKSB7XHJcbiAgICAgIHJldHVybiBYQWRkWWVhcnMoYnlNb2RlbCEsIDEwICogbnVtKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBYQWRkTW9udGhzKGJ5TW9kZWwhLCBudW0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0RGF0ZXNTdGF0ZShjZWxsOiBYRGF0ZUNlbGwpIHtcclxuICAgIGlmICh0aGlzLnR5cGUgPT09ICd3ZWVrJykgcmV0dXJuO1xyXG4gICAgdGhpcy5zdGFydFBpY2tlcj8uc2V0RGF0ZXNTdGF0ZShjZWxsKTtcclxuICAgIHRoaXMuZW5kUGlja2VyPy5zZXREYXRlc1N0YXRlKGNlbGwpO1xyXG4gIH1cclxuXHJcbiAgc2V0RGVmYXVsdCgpIHtcclxuICAgIGNvbnN0IHR5cGUgPSB0aGlzLmFjdGl2ZVR5cGUgfHwgJ3N0YXJ0JztcclxuICAgIHRoaXMudGltZUhvdmVyID0gIXRoaXMudmFsdWUuZXZlcnkoKHgpID0+IHggPT09IG51bGwpO1xyXG4gICAgaWYgKHR5cGUgPT09ICdzdGFydCcpIHtcclxuICAgICAgdGhpcy5zdGFydE1vZGVsID0gbmV3IERhdGUodGhpcy52YWx1ZVswXSEpO1xyXG4gICAgICB0aGlzLnN0YXJ0RGlzcGxheSA9IHRoaXMuc3RhcnRNb2RlbDtcclxuICAgICAgdGhpcy5lbmRNb2RlbCA9IHRoaXMuc2V0TW9kZWxCeVR5cGUodGhpcy5zdGFydE1vZGVsLCB0aGlzLmlzRGF0ZVBpY2tlciA/IDEgOiAwKTtcclxuICAgICAgdGhpcy5lbmREaXNwbGF5ID0gdGhpcy5lbmRNb2RlbCE7XHJcbiAgICAgIHRoaXMudGltZU1vZGVsID0gdGhpcy5zdGFydE1vZGVsO1xyXG4gICAgICB0aGlzLnRpbWVEaXNwbGF5ID0gdGhpcy5zdGFydERpc3BsYXk7XHJcbiAgICAgIHRoaXMudGltZSA9IHRoaXMuc3RhcnRNb2RlbC5nZXRUaW1lKCk7XHJcbiAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdlbmQnKSB7XHJcbiAgICAgIHRoaXMuZW5kTW9kZWwgPSBuZXcgRGF0ZSh0aGlzLnZhbHVlWzFdISk7XHJcbiAgICAgIHRoaXMuZW5kRGlzcGxheSA9IHRoaXMuZW5kTW9kZWw7XHJcbiAgICAgIHRoaXMuc3RhcnRNb2RlbCA9IHRoaXMuc2V0TW9kZWxCeVR5cGUodGhpcy5lbmRNb2RlbCwgdGhpcy5pc0RhdGVQaWNrZXIgPyAtMSA6IDApO1xyXG4gICAgICB0aGlzLnN0YXJ0RGlzcGxheSA9IHRoaXMuc3RhcnRNb2RlbCE7XHJcbiAgICAgIHRoaXMudGltZU1vZGVsID0gdGhpcy5lbmRNb2RlbDtcclxuICAgICAgdGhpcy50aW1lRGlzcGxheSA9IHRoaXMuZW5kRGlzcGxheTtcclxuICAgICAgdGhpcy50aW1lID0gdGhpcy5lbmRNb2RlbC5nZXRUaW1lKCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBzZXREaXNwbGF5KGRhdGU6IERhdGUpIHtcclxuICAgIHRoaXMuZGlzcGxheSA9IG5ldyBEYXRlKGRhdGUuZ2V0RnVsbFllYXIoKSwgZGF0ZS5nZXRNb250aCgpLCAxKTtcclxuICAgIHRoaXMuc3RhcnREaXNwbGF5ID0gdGhpcy5kaXNwbGF5O1xyXG4gICAgdGhpcy5lbmREaXNwbGF5ID0gdGhpcy5zZXRNb2RlbEJ5VHlwZSh0aGlzLmRpc3BsYXksIHRoaXMuaXNEYXRlUGlja2VyID8gMSA6IDApO1xyXG4gIH1cclxuXHJcbiAgZGF0ZUNoYW5nZShkYXRlOiBEYXRlKSB7XHJcbiAgICB0aGlzLm5vZGVDbGlja0NvdW50Kys7XHJcbiAgICBsZXQgY2xvc2UgPSB0aGlzLm5vZGVDbGlja0NvdW50ID09PSAyO1xyXG4gICAgbGV0IHRpbWUgPSB0aGlzLnNldERhdGVDaGFuZ2VUaW1lKGRhdGUpO1xyXG4gICAgZGF0ZSA9IG5ldyBEYXRlKHRpbWUpO1xyXG4gICAgaWYgKHRoaXMuYWN0aXZlVHlwZSA9PT0gJ3N0YXJ0Jykge1xyXG4gICAgICB0aGlzLnZhbHVlWzBdID0gdGltZTtcclxuICAgICAgaWYgKCFYSXNOdWxsKHRoaXMudmFsdWVbMV0pICYmIHRpbWUgPiB0aGlzLnZhbHVlWzFdISkge1xyXG4gICAgICAgIGlmICh0aGlzLm5vZGVDbGlja0NvdW50ID09PSAyKSB7XHJcbiAgICAgICAgICB0aGlzLm5vZGVDbGlja0NvdW50LS07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNsb3NlID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5lbmRNb2RlbCA9IG51bGw7XHJcbiAgICAgICAgdGhpcy52YWx1ZVsxXSA9IG51bGw7XHJcbiAgICAgICAgaWYgKCF0aGlzLmlzRGF0ZVBpY2tlcikge1xyXG4gICAgICAgICAgdGhpcy50aW1lSG92ZXIgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5lbmROb2RlRW1pdChudWxsLCBjbG9zZSwgdGhpcy5pc0RhdGVQaWNrZXIpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuc3RhcnROb2RlRW1pdChkYXRlLCBjbG9zZSwgdGhpcy5pc0RhdGVQaWNrZXIpO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLmFjdGl2ZVR5cGUgPT09ICdlbmQnKSB7XHJcbiAgICAgIHRoaXMudmFsdWVbMV0gPSB0aW1lO1xyXG4gICAgICBpZiAoIVhJc051bGwodGhpcy52YWx1ZVswXSkgJiYgdGltZSA8IHRoaXMudmFsdWVbMF0hKSB7XHJcbiAgICAgICAgaWYgKHRoaXMubm9kZUNsaWNrQ291bnQgPT09IDIpIHtcclxuICAgICAgICAgIHRoaXMubm9kZUNsaWNrQ291bnQtLTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY2xvc2UgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnN0YXJ0TW9kZWwgPSBudWxsO1xyXG4gICAgICAgIHRoaXMudmFsdWVbMF0gPSBudWxsO1xyXG4gICAgICAgIGlmICghdGhpcy5pc0RhdGVQaWNrZXIpIHtcclxuICAgICAgICAgIHRoaXMudGltZUhvdmVyID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuc3RhcnROb2RlRW1pdChudWxsLCBjbG9zZSwgdGhpcy5pc0RhdGVQaWNrZXIpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuZW5kTm9kZUVtaXQoZGF0ZSwgY2xvc2UsIHRoaXMuaXNEYXRlUGlja2VyKTtcclxuICAgIH1cclxuICAgIGlmICghdGhpcy52YWx1ZS5pbmNsdWRlcyhudWxsKSAmJiB0aGlzLmlzRGF0ZVBpY2tlcikge1xyXG4gICAgICB0aGlzLm5vZGVFbWl0KFxyXG4gICAgICAgIHRoaXMudmFsdWUubWFwKCh4KSA9PiBuZXcgRGF0ZSh4ISkpLFxyXG4gICAgICAgIGNsb3NlXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZXREYXRlQ2hhbmdlVGltZShkYXRlOiBEYXRlKSB7XHJcbiAgICBpZiAodGhpcy5pc0RhdGVQaWNrZXIpIHtcclxuICAgICAgcmV0dXJuIGRhdGUuZ2V0VGltZSgpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgbGV0IHRpbWUgPSBuZXcgRGF0ZSgpO1xyXG4gICAgICBpZiAodGhpcy50aW1lKSB7XHJcbiAgICAgICAgdGltZSA9IG5ldyBEYXRlKHRoaXMudGltZSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy50aW1lID0gdGltZS5nZXRUaW1lKCk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKFsnZGF0ZS1ob3VyJywgJ2RhdGUtbWludXRlJ10uaW5jbHVkZXModGhpcy50eXBlKSkge1xyXG4gICAgICAgIHRpbWUuc2V0U2Vjb25kcygwKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy50eXBlID09PSAnZGF0ZS1ob3VyJykge1xyXG4gICAgICAgIHRpbWUuc2V0TWludXRlcygwKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgcmV0dXJuIG5ldyBEYXRlKFxyXG4gICAgICAgIGRhdGUuZ2V0RnVsbFllYXIoKSxcclxuICAgICAgICBkYXRlLmdldE1vbnRoKCksXHJcbiAgICAgICAgZGF0ZS5nZXREYXRlKCksXHJcbiAgICAgICAgdGltZS5nZXRIb3VycygpLFxyXG4gICAgICAgIHRpbWUuZ2V0TWludXRlcygpLFxyXG4gICAgICAgIHRpbWUuZ2V0U2Vjb25kcygpXHJcbiAgICAgICkuZ2V0VGltZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgdHlwZUNoYW5nZSh0eXBlOiBYRGF0ZVBpY2tlclR5cGUpIHtcclxuICAgIHRoaXMudHlwZSA9IHR5cGU7XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICB5ZWFyU3RhcnRDaGFuZ2UobnVtYmVyOiBudW1iZXIpIHtcclxuICAgIHRoaXMuc3RhcnRZZWFyID0gbnVtYmVyO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgbmV4dE1vbnRoKG51bTogbnVtYmVyKSB7XHJcbiAgICBsZXQgZGF0ZSA9IG5ldyBEYXRlKHRoaXMuZGlzcGxheSk7XHJcbiAgICBkYXRlLnNldE1vbnRoKGRhdGUuZ2V0TW9udGgoKSArIG51bSk7XHJcbiAgICB0aGlzLnNldERpc3BsYXkoZGF0ZSk7XHJcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICBuZXh0WWVhcihudW06IG51bWJlcikge1xyXG4gICAgbGV0IGRhdGUgPSBuZXcgRGF0ZSh0aGlzLmRpc3BsYXkpO1xyXG4gICAgZGF0ZS5zZXRGdWxsWWVhcihkYXRlLmdldEZ1bGxZZWFyKCkgKyBudW0pO1xyXG4gICAgdGhpcy5zZXREaXNwbGF5KGRhdGUpO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgbmV4dFllYXJzKG51bTogbnVtYmVyKSB7XHJcbiAgICB0aGlzLnN0YXJ0WWVhciArPSBudW07XHJcbiAgICBsZXQgZGF0ZSA9IG5ldyBEYXRlKHRoaXMuZGlzcGxheSk7XHJcbiAgICBkYXRlLnNldEZ1bGxZZWFyKHRoaXMuc3RhcnRZZWFyKTtcclxuICAgIHRoaXMuc2V0RGlzcGxheShkYXRlKTtcclxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIGdldExvY2FsZU1vbnRoKGRhdGU6IERhdGUpIHtcclxuICAgIHJldHVybiAodGhpcy5sb2NhbGUgYXMgYW55KVt0aGlzLmxvd2VyQ2FzZVBpcGUudHJhbnNmb3JtKHRoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKGRhdGUsICdMTExMJykgYXMgc3RyaW5nKV07XHJcbiAgfVxyXG5cclxuICBzZWxlY3RUaW1lKHRpbWU6IERhdGUpIHtcclxuICAgIHRoaXMudGltZSA9IHRpbWUuZ2V0VGltZSgpO1xyXG4gICAgaWYgKFhJc0VtcHR5KHRoaXMudGltZU1vZGVsKSkge1xyXG4gICAgICB0aGlzLnRpbWVNb2RlbCA9IG5ldyBEYXRlKCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnRpbWVNb2RlbD8uc2V0SG91cnModGltZS5nZXRIb3VycygpKTtcclxuICAgIHRoaXMudGltZU1vZGVsPy5zZXRNaW51dGVzKHRpbWUuZ2V0TWludXRlcygpKTtcclxuICAgIHRoaXMudGltZU1vZGVsPy5zZXRTZWNvbmRzKHRpbWUuZ2V0U2Vjb25kcygpKTtcclxuICAgIHRoaXMuZGF0ZUNoYW5nZSh0aGlzLnRpbWVNb2RlbCEpO1xyXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgc3VyZVRpbWUoKSB7XHJcbiAgICBpZiAodGhpcy5zdXJlRGlzYWJsZWQpIHJldHVybjtcclxuICAgIGNvbnN0IFtzdGFydCwgZW5kXSA9IHRoaXMudmFsdWU7XHJcbiAgICBpZiAoWElzTnVsbChzdGFydCkgJiYgIVhJc051bGwoZW5kKSkge1xyXG4gICAgICB0aGlzLnRpbWUgPSBudWxsO1xyXG4gICAgICB0aGlzLnRpbWVIb3ZlciA9IHRydWU7XHJcbiAgICAgIHRoaXMuZW5kTm9kZUVtaXQobmV3IERhdGUoZW5kISksIGZhbHNlLCB0cnVlKTtcclxuICAgIH0gZWxzZSBpZiAoIVhJc051bGwoc3RhcnQpICYmIFhJc051bGwoZW5kKSkge1xyXG4gICAgICB0aGlzLnRpbWUgPSBudWxsO1xyXG4gICAgICB0aGlzLnRpbWVIb3ZlciA9IHRydWU7XHJcbiAgICAgIHRoaXMuc3RhcnROb2RlRW1pdChuZXcgRGF0ZShzdGFydCEpLCBmYWxzZSwgdHJ1ZSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLm5vZGVFbWl0KFxyXG4gICAgICAgIHRoaXMudmFsdWUubWFwKCh4KSA9PiBuZXcgRGF0ZSh4ISkpLFxyXG4gICAgICAgIHRydWVcclxuICAgICAgKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHllYXJDaGFuZ2UobnVtOiBudW1iZXIsIHR5cGU/OiAnc3RhcnQnIHwgJ2VuZCcpIHtcclxuICAgIGlmICh0eXBlID09PSAnc3RhcnQnKSB7XHJcbiAgICAgIHRoaXMuZW5kRGlzcGxheSA9IFhBZGRZZWFycyh0aGlzLmVuZERpc3BsYXksIG51bSk7XHJcbiAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdlbmQnKSB7XHJcbiAgICAgIHRoaXMuc3RhcnREaXNwbGF5ID0gWEFkZFllYXJzKHRoaXMuc3RhcnREaXNwbGF5LCBudW0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbW9udGhDaGFuZ2UobnVtOiBudW1iZXIsIHR5cGU/OiAnc3RhcnQnIHwgJ2VuZCcpIHtcclxuICAgIGlmICh0eXBlID09PSAnc3RhcnQnKSB7XHJcbiAgICAgIHRoaXMuZW5kRGlzcGxheSA9IFhBZGRNb250aHModGhpcy5lbmREaXNwbGF5LCBudW0pO1xyXG4gICAgfSBlbHNlIGlmICh0eXBlID09PSAnZW5kJykge1xyXG4gICAgICB0aGlzLnN0YXJ0RGlzcGxheSA9IFhBZGRNb250aHModGhpcy5zdGFydERpc3BsYXksIG51bSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvblByZXNldCh0eXBlOiAnd2VlaycgfCAnbW9udGgnIHwgJ3llYXInLCBudW0gPSAwKSB7XHJcbiAgICBsZXQgbm93ID0gbmV3IERhdGUoKTtcclxuICAgIGlmICh0eXBlID09PSAnd2VlaycpIHtcclxuICAgICAgbm93ID0gbmV3IERhdGUobm93LmdldEZ1bGxZZWFyKCksIG5vdy5nZXRNb250aCgpLCBub3cuZ2V0RGF0ZSgpKTtcclxuICAgICAgY29uc3Qgd2VlayA9IG5vdy5nZXREYXkoKTtcclxuICAgICAgY29uc3Qgd2Vla0xpc3QgPSBbMSwgMiwgMywgNCwgNSwgNiwgN107XHJcbiAgICAgIGNvbnN0IGluZGV4ID0gd2Vla0xpc3QuaW5kZXhPZih3ZWVrKTtcclxuICAgICAgdGhpcy5ub2RlRW1pdChcclxuICAgICAgICBbWEFkZERheXMobm93LCB3ZWVrTGlzdFswXSAtIChpbmRleCArIDEpICsgbnVtICogNyksIFhBZGREYXlzKG5vdywgd2Vla0xpc3RbNl0gLSAoaW5kZXggKyAxKSArIG51bSAqIDcpXSxcclxuICAgICAgICB0cnVlXHJcbiAgICAgICk7XHJcbiAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdtb250aCcpIHtcclxuICAgICAgY29uc3QgbW9udGggPSBYQWRkTW9udGhzKG5vdywgbnVtKTtcclxuICAgICAgY29uc3QgZmlyc3REYXkgPSBuZXcgRGF0ZShtb250aC5nZXRGdWxsWWVhcigpLCBtb250aC5nZXRNb250aCgpLCAxKTtcclxuICAgICAgY29uc3QgbGFzdERheSA9IFhBZGREYXlzKFhBZGRNb250aHMoZmlyc3REYXksIDEpLCAtMSk7XHJcbiAgICAgIHRoaXMubm9kZUVtaXQoW2ZpcnN0RGF5LCBsYXN0RGF5XSwgdHJ1ZSk7XHJcbiAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICd5ZWFyJykge1xyXG4gICAgICBsZXQgeWVhciA9IFhBZGRZZWFycyhub3csIG51bSk7XHJcbiAgICAgIGxldCBmaXJzdERheSA9IG5ldyBEYXRlKHllYXIuZ2V0RnVsbFllYXIoKSwgMCwgMSk7XHJcbiAgICAgIGxldCBsYXN0RGF5ID0gWEFkZERheXMoWEFkZFllYXJzKGZpcnN0RGF5LCAxKSwgLTEpO1xyXG4gICAgICB0aGlzLm5vZGVFbWl0KFtmaXJzdERheSwgbGFzdERheV0sIHRydWUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25QcmVzZXRGdW5jKGl0ZW06IFhEYXRlUmFuZ2VQcmVzZXQpIHtcclxuICAgIGxldCB2YWx1ZSA9IGl0ZW0uZnVuYygpO1xyXG4gICAgaWYgKFhJc0FycmF5KHZhbHVlKSAmJiB2YWx1ZS5sZW5ndGggPiAxKSB7XHJcbiAgICAgIGlmIChYSXNOdW1iZXIodmFsdWVbMF0pIHx8IFhJc1N0cmluZyh2YWx1ZVswXSkpIHtcclxuICAgICAgICB2YWx1ZSA9IHZhbHVlLm1hcCgoeCkgPT4gbmV3IERhdGUoeCkpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMubm9kZUVtaXQodmFsdWUsIHRydWUpO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwieC1kYXRlLXJhbmdlLXBvcnRhbCB7eyB0eXBlIH19XCI+XHJcbiAgPGRpdiBjbGFzcz1cIngtZGF0ZS1yYW5nZS1wb3J0YWwtYm9keVwiPlxyXG4gICAgQHN3aXRjaCAodHlwZSkge1xyXG4gICAgICBAY2FzZSAoJ2RhdGUnKSB7XHJcbiAgICAgICAgPHgtcGlja2VyLWRhdGVcclxuICAgICAgICAgICNzdGFydFBpY2tlclxyXG4gICAgICAgICAgY2xhc3M9XCJ4LWRhdGUtcmFuZ2UtcG9ydGFsLXN0YXJ0XCJcclxuICAgICAgICAgIFsoZGlzcGxheSldPVwic3RhcnREaXNwbGF5XCJcclxuICAgICAgICAgIFttb2RlbF09XCJzdGFydE1vZGVsXCJcclxuICAgICAgICAgIFtyYW5nZVZhbHVlXT1cInZhbHVlXCJcclxuICAgICAgICAgIFtyYW5nZVR5cGVdPVwiYWN0aXZlVHlwZVwiXHJcbiAgICAgICAgICBbbmV4dFllYXJCdG5dPVwiZmFsc2VcIlxyXG4gICAgICAgICAgW25leHRNb250aEJ0bl09XCJmYWxzZVwiXHJcbiAgICAgICAgICBbZGlzYWJsZWREYXRlXT1cImRpc2FibGVkRGF0ZVwiXHJcbiAgICAgICAgICAobW9kZWxDaGFuZ2UpPVwiZGF0ZUNoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgICAgICh5ZWFyQ2hhbmdlKT1cInllYXJDaGFuZ2UoJGV2ZW50LCAnc3RhcnQnKVwiXHJcbiAgICAgICAgICAobW9udGhDaGFuZ2UpPVwibW9udGhDaGFuZ2UoJGV2ZW50LCAnc3RhcnQnKVwiXHJcbiAgICAgICAgICAocmFuZ2VUZE1vdXNlZW50ZXIpPVwic2V0RGF0ZXNTdGF0ZSgkZXZlbnQpXCJcclxuICAgICAgICAgIChyYW5nZURhdGVDbGljayk9XCJzZXREYXRlc1N0YXRlKCRldmVudClcIlxyXG4gICAgICAgICAgcmFuZ2VQaWNrZXJcclxuICAgICAgICA+PC94LXBpY2tlci1kYXRlPlxyXG4gICAgICAgIDx4LXBpY2tlci1kYXRlXHJcbiAgICAgICAgICAjZW5kUGlja2VyXHJcbiAgICAgICAgICBjbGFzcz1cIngtZGF0ZS1yYW5nZS1wb3J0YWwtZW5kXCJcclxuICAgICAgICAgIFsoZGlzcGxheSldPVwiZW5kRGlzcGxheVwiXHJcbiAgICAgICAgICBbbW9kZWxdPVwiZW5kTW9kZWxcIlxyXG4gICAgICAgICAgW3JhbmdlVmFsdWVdPVwidmFsdWVcIlxyXG4gICAgICAgICAgW3JhbmdlVHlwZV09XCJhY3RpdmVUeXBlXCJcclxuICAgICAgICAgIFtsYXN0WWVhckJ0bl09XCJmYWxzZVwiXHJcbiAgICAgICAgICBbbGFzdE1vbnRoQnRuXT1cImZhbHNlXCJcclxuICAgICAgICAgIFtkaXNhYmxlZERhdGVdPVwiZGlzYWJsZWREYXRlXCJcclxuICAgICAgICAgIChtb2RlbENoYW5nZSk9XCJkYXRlQ2hhbmdlKCRldmVudClcIlxyXG4gICAgICAgICAgKHllYXJDaGFuZ2UpPVwieWVhckNoYW5nZSgkZXZlbnQsICdlbmQnKVwiXHJcbiAgICAgICAgICAobW9udGhDaGFuZ2UpPVwibW9udGhDaGFuZ2UoJGV2ZW50LCAnZW5kJylcIlxyXG4gICAgICAgICAgKHJhbmdlVGRNb3VzZWVudGVyKT1cInNldERhdGVzU3RhdGUoJGV2ZW50KVwiXHJcbiAgICAgICAgICAocmFuZ2VEYXRlQ2xpY2spPVwic2V0RGF0ZXNTdGF0ZSgkZXZlbnQpXCJcclxuICAgICAgICAgIHJhbmdlUGlja2VyXHJcbiAgICAgICAgPjwveC1waWNrZXItZGF0ZT5cclxuICAgICAgfVxyXG4gICAgICBAY2FzZSAoJ3dlZWsnKSB7XHJcbiAgICAgICAgPHgtcGlja2VyLWRhdGVcclxuICAgICAgICAgICNzdGFydFBpY2tlclxyXG4gICAgICAgICAgY2xhc3M9XCJ4LWRhdGUtcmFuZ2UtcG9ydGFsLXN0YXJ0XCJcclxuICAgICAgICAgIHR5cGU9XCJ3ZWVrXCJcclxuICAgICAgICAgIFsoZGlzcGxheSldPVwic3RhcnREaXNwbGF5XCJcclxuICAgICAgICAgIFttb2RlbF09XCJzdGFydE1vZGVsXCJcclxuICAgICAgICAgIFtyYW5nZVZhbHVlXT1cInZhbHVlXCJcclxuICAgICAgICAgIFtyYW5nZVR5cGVdPVwiYWN0aXZlVHlwZVwiXHJcbiAgICAgICAgICBbbmV4dFllYXJCdG5dPVwiZmFsc2VcIlxyXG4gICAgICAgICAgW25leHRNb250aEJ0bl09XCJmYWxzZVwiXHJcbiAgICAgICAgICBbZGlzYWJsZWREYXRlXT1cImRpc2FibGVkRGF0ZVwiXHJcbiAgICAgICAgICAobW9kZWxDaGFuZ2UpPVwiZGF0ZUNoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgICAgICh5ZWFyQ2hhbmdlKT1cInllYXJDaGFuZ2UoJGV2ZW50LCAnc3RhcnQnKVwiXHJcbiAgICAgICAgICAobW9udGhDaGFuZ2UpPVwibW9udGhDaGFuZ2UoJGV2ZW50LCAnc3RhcnQnKVwiXHJcbiAgICAgICAgICAocmFuZ2VUZE1vdXNlZW50ZXIpPVwic2V0RGF0ZXNTdGF0ZSgkZXZlbnQpXCJcclxuICAgICAgICAgIChyYW5nZURhdGVDbGljayk9XCJzZXREYXRlc1N0YXRlKCRldmVudClcIlxyXG4gICAgICAgICAgcmFuZ2VQaWNrZXJcclxuICAgICAgICA+PC94LXBpY2tlci1kYXRlPlxyXG4gICAgICAgIDx4LXBpY2tlci1kYXRlXHJcbiAgICAgICAgICAjZW5kUGlja2VyXHJcbiAgICAgICAgICBjbGFzcz1cIngtZGF0ZS1yYW5nZS1wb3J0YWwtZW5kXCJcclxuICAgICAgICAgIHR5cGU9XCJ3ZWVrXCJcclxuICAgICAgICAgIFsoZGlzcGxheSldPVwiZW5kRGlzcGxheVwiXHJcbiAgICAgICAgICBbbW9kZWxdPVwiZW5kTW9kZWxcIlxyXG4gICAgICAgICAgW3JhbmdlVmFsdWVdPVwidmFsdWVcIlxyXG4gICAgICAgICAgW3JhbmdlVHlwZV09XCJhY3RpdmVUeXBlXCJcclxuICAgICAgICAgIFtsYXN0WWVhckJ0bl09XCJmYWxzZVwiXHJcbiAgICAgICAgICBbbGFzdE1vbnRoQnRuXT1cImZhbHNlXCJcclxuICAgICAgICAgIFtkaXNhYmxlZERhdGVdPVwiZGlzYWJsZWREYXRlXCJcclxuICAgICAgICAgIChtb2RlbENoYW5nZSk9XCJkYXRlQ2hhbmdlKCRldmVudClcIlxyXG4gICAgICAgICAgKHllYXJDaGFuZ2UpPVwieWVhckNoYW5nZSgkZXZlbnQsICdlbmQnKVwiXHJcbiAgICAgICAgICAobW9udGhDaGFuZ2UpPVwibW9udGhDaGFuZ2UoJGV2ZW50LCAnZW5kJylcIlxyXG4gICAgICAgICAgKHJhbmdlVGRNb3VzZWVudGVyKT1cInNldERhdGVzU3RhdGUoJGV2ZW50KVwiXHJcbiAgICAgICAgICAocmFuZ2VEYXRlQ2xpY2spPVwic2V0RGF0ZXNTdGF0ZSgkZXZlbnQpXCJcclxuICAgICAgICAgIHJhbmdlUGlja2VyXHJcbiAgICAgICAgPjwveC1waWNrZXItZGF0ZT5cclxuICAgICAgfVxyXG4gICAgICBAY2FzZSAoJ21vbnRoJykge1xyXG4gICAgICAgIDx4LXBpY2tlci1tb250aFxyXG4gICAgICAgICAgI3N0YXJ0UGlja2VyXHJcbiAgICAgICAgICBjbGFzcz1cIngtZGF0ZS1yYW5nZS1wb3J0YWwtc3RhcnRcIlxyXG4gICAgICAgICAgWyhkaXNwbGF5KV09XCJzdGFydERpc3BsYXlcIlxyXG4gICAgICAgICAgW21vZGVsXT1cInN0YXJ0TW9kZWxcIlxyXG4gICAgICAgICAgW3JhbmdlVmFsdWVdPVwidmFsdWVcIlxyXG4gICAgICAgICAgW3JhbmdlVHlwZV09XCJhY3RpdmVUeXBlXCJcclxuICAgICAgICAgIFtuZXh0WWVhckJ0bl09XCJmYWxzZVwiXHJcbiAgICAgICAgICBbZGlzYWJsZWREYXRlXT1cImRpc2FibGVkRGF0ZVwiXHJcbiAgICAgICAgICAobW9kZWxDaGFuZ2UpPVwiZGF0ZUNoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgICAgICh5ZWFyQ2hhbmdlKT1cInllYXJDaGFuZ2UoJGV2ZW50LCAnc3RhcnQnKVwiXHJcbiAgICAgICAgICAobW9udGhDaGFuZ2UpPVwibW9udGhDaGFuZ2UoJGV2ZW50LCAnc3RhcnQnKVwiXHJcbiAgICAgICAgICAocmFuZ2VUZE1vdXNlZW50ZXIpPVwic2V0RGF0ZXNTdGF0ZSgkZXZlbnQpXCJcclxuICAgICAgICAgIChyYW5nZURhdGVDbGljayk9XCJzZXREYXRlc1N0YXRlKCRldmVudClcIlxyXG4gICAgICAgICAgcmFuZ2VQaWNrZXJcclxuICAgICAgICA+PC94LXBpY2tlci1tb250aD5cclxuICAgICAgICA8eC1waWNrZXItbW9udGhcclxuICAgICAgICAgICNlbmRQaWNrZXJcclxuICAgICAgICAgIGNsYXNzPVwieC1kYXRlLXJhbmdlLXBvcnRhbC1lbmRcIlxyXG4gICAgICAgICAgWyhkaXNwbGF5KV09XCJlbmREaXNwbGF5XCJcclxuICAgICAgICAgIFttb2RlbF09XCJlbmRNb2RlbFwiXHJcbiAgICAgICAgICBbcmFuZ2VWYWx1ZV09XCJ2YWx1ZVwiXHJcbiAgICAgICAgICBbcmFuZ2VUeXBlXT1cImFjdGl2ZVR5cGVcIlxyXG4gICAgICAgICAgW2xhc3RZZWFyQnRuXT1cImZhbHNlXCJcclxuICAgICAgICAgIFtkaXNhYmxlZERhdGVdPVwiZGlzYWJsZWREYXRlXCJcclxuICAgICAgICAgIChtb2RlbENoYW5nZSk9XCJkYXRlQ2hhbmdlKCRldmVudClcIlxyXG4gICAgICAgICAgKHllYXJDaGFuZ2UpPVwieWVhckNoYW5nZSgkZXZlbnQsICdlbmQnKVwiXHJcbiAgICAgICAgICAobW9udGhDaGFuZ2UpPVwibW9udGhDaGFuZ2UoJGV2ZW50LCAnZW5kJylcIlxyXG4gICAgICAgICAgKHJhbmdlVGRNb3VzZWVudGVyKT1cInNldERhdGVzU3RhdGUoJGV2ZW50KVwiXHJcbiAgICAgICAgICAocmFuZ2VEYXRlQ2xpY2spPVwic2V0RGF0ZXNTdGF0ZSgkZXZlbnQpXCJcclxuICAgICAgICAgIHJhbmdlUGlja2VyXHJcbiAgICAgICAgPjwveC1waWNrZXItbW9udGg+XHJcbiAgICAgIH1cclxuICAgICAgQGNhc2UgKCdxdWFydGVyJykge1xyXG4gICAgICAgIDx4LXBpY2tlci1xdWFydGVyXHJcbiAgICAgICAgICAjc3RhcnRQaWNrZXJcclxuICAgICAgICAgIGNsYXNzPVwieC1kYXRlLXJhbmdlLXBvcnRhbC1zdGFydFwiXHJcbiAgICAgICAgICBbKGRpc3BsYXkpXT1cInN0YXJ0RGlzcGxheVwiXHJcbiAgICAgICAgICBbbW9kZWxdPVwic3RhcnRNb2RlbFwiXHJcbiAgICAgICAgICBbcmFuZ2VWYWx1ZV09XCJ2YWx1ZVwiXHJcbiAgICAgICAgICBbcmFuZ2VUeXBlXT1cImFjdGl2ZVR5cGVcIlxyXG4gICAgICAgICAgW25leHRZZWFyQnRuXT1cImZhbHNlXCJcclxuICAgICAgICAgIFtkaXNhYmxlZERhdGVdPVwiZGlzYWJsZWREYXRlXCJcclxuICAgICAgICAgIChtb2RlbENoYW5nZSk9XCJkYXRlQ2hhbmdlKCRldmVudClcIlxyXG4gICAgICAgICAgKHllYXJDaGFuZ2UpPVwieWVhckNoYW5nZSgkZXZlbnQsICdzdGFydCcpXCJcclxuICAgICAgICAgIChtb250aENoYW5nZSk9XCJtb250aENoYW5nZSgkZXZlbnQsICdzdGFydCcpXCJcclxuICAgICAgICAgIChyYW5nZVRkTW91c2VlbnRlcik9XCJzZXREYXRlc1N0YXRlKCRldmVudClcIlxyXG4gICAgICAgICAgKHJhbmdlRGF0ZUNsaWNrKT1cInNldERhdGVzU3RhdGUoJGV2ZW50KVwiXHJcbiAgICAgICAgICByYW5nZVBpY2tlclxyXG4gICAgICAgID48L3gtcGlja2VyLXF1YXJ0ZXI+XHJcbiAgICAgICAgPHgtcGlja2VyLXF1YXJ0ZXJcclxuICAgICAgICAgICNlbmRQaWNrZXJcclxuICAgICAgICAgIGNsYXNzPVwieC1kYXRlLXJhbmdlLXBvcnRhbC1lbmRcIlxyXG4gICAgICAgICAgWyhkaXNwbGF5KV09XCJlbmREaXNwbGF5XCJcclxuICAgICAgICAgIFttb2RlbF09XCJlbmRNb2RlbFwiXHJcbiAgICAgICAgICBbcmFuZ2VWYWx1ZV09XCJ2YWx1ZVwiXHJcbiAgICAgICAgICBbcmFuZ2VUeXBlXT1cImFjdGl2ZVR5cGVcIlxyXG4gICAgICAgICAgW2xhc3RZZWFyQnRuXT1cImZhbHNlXCJcclxuICAgICAgICAgIFtkaXNhYmxlZERhdGVdPVwiZGlzYWJsZWREYXRlXCJcclxuICAgICAgICAgIChtb2RlbENoYW5nZSk9XCJkYXRlQ2hhbmdlKCRldmVudClcIlxyXG4gICAgICAgICAgKHllYXJDaGFuZ2UpPVwieWVhckNoYW5nZSgkZXZlbnQsICdlbmQnKVwiXHJcbiAgICAgICAgICAobW9udGhDaGFuZ2UpPVwibW9udGhDaGFuZ2UoJGV2ZW50LCAnZW5kJylcIlxyXG4gICAgICAgICAgKHJhbmdlVGRNb3VzZWVudGVyKT1cInNldERhdGVzU3RhdGUoJGV2ZW50KVwiXHJcbiAgICAgICAgICAocmFuZ2VEYXRlQ2xpY2spPVwic2V0RGF0ZXNTdGF0ZSgkZXZlbnQpXCJcclxuICAgICAgICAgIHJhbmdlUGlja2VyXHJcbiAgICAgICAgPjwveC1waWNrZXItcXVhcnRlcj5cclxuICAgICAgfVxyXG4gICAgICBAY2FzZSAoJ3llYXInKSB7XHJcbiAgICAgICAgPHgtcGlja2VyLXllYXJcclxuICAgICAgICAgICNzdGFydFBpY2tlclxyXG4gICAgICAgICAgY2xhc3M9XCJ4LWRhdGUtcmFuZ2UtcG9ydGFsLXN0YXJ0XCJcclxuICAgICAgICAgIFsoZGlzcGxheSldPVwic3RhcnREaXNwbGF5XCJcclxuICAgICAgICAgIFttb2RlbF09XCJzdGFydE1vZGVsXCJcclxuICAgICAgICAgIFtyYW5nZVZhbHVlXT1cInZhbHVlXCJcclxuICAgICAgICAgIFtyYW5nZVR5cGVdPVwiYWN0aXZlVHlwZVwiXHJcbiAgICAgICAgICBbbmV4dFllYXJCdG5dPVwiZmFsc2VcIlxyXG4gICAgICAgICAgW2Rpc2FibGVkRGF0ZV09XCJkaXNhYmxlZERhdGVcIlxyXG4gICAgICAgICAgKG1vZGVsQ2hhbmdlKT1cImRhdGVDaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICAgICAgICAoeWVhckNoYW5nZSk9XCJ5ZWFyQ2hhbmdlKCRldmVudCwgJ3N0YXJ0JylcIlxyXG4gICAgICAgICAgKG1vbnRoQ2hhbmdlKT1cIm1vbnRoQ2hhbmdlKCRldmVudCwgJ3N0YXJ0JylcIlxyXG4gICAgICAgICAgKHJhbmdlVGRNb3VzZWVudGVyKT1cInNldERhdGVzU3RhdGUoJGV2ZW50KVwiXHJcbiAgICAgICAgICAocmFuZ2VEYXRlQ2xpY2spPVwic2V0RGF0ZXNTdGF0ZSgkZXZlbnQpXCJcclxuICAgICAgICAgIHJhbmdlUGlja2VyXHJcbiAgICAgICAgPjwveC1waWNrZXIteWVhcj5cclxuICAgICAgICA8eC1waWNrZXIteWVhclxyXG4gICAgICAgICAgI2VuZFBpY2tlclxyXG4gICAgICAgICAgY2xhc3M9XCJ4LWRhdGUtcmFuZ2UtcG9ydGFsLWVuZFwiXHJcbiAgICAgICAgICBbKGRpc3BsYXkpXT1cImVuZERpc3BsYXlcIlxyXG4gICAgICAgICAgW21vZGVsXT1cImVuZE1vZGVsXCJcclxuICAgICAgICAgIFtyYW5nZVZhbHVlXT1cInZhbHVlXCJcclxuICAgICAgICAgIFtyYW5nZVR5cGVdPVwiYWN0aXZlVHlwZVwiXHJcbiAgICAgICAgICBbbGFzdFllYXJCdG5dPVwiZmFsc2VcIlxyXG4gICAgICAgICAgW2Rpc2FibGVkRGF0ZV09XCJkaXNhYmxlZERhdGVcIlxyXG4gICAgICAgICAgKG1vZGVsQ2hhbmdlKT1cImRhdGVDaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICAgICAgICAoeWVhckNoYW5nZSk9XCJ5ZWFyQ2hhbmdlKCRldmVudCwgJ2VuZCcpXCJcclxuICAgICAgICAgIChtb250aENoYW5nZSk9XCJtb250aENoYW5nZSgkZXZlbnQsICdlbmQnKVwiXHJcbiAgICAgICAgICAocmFuZ2VUZE1vdXNlZW50ZXIpPVwic2V0RGF0ZXNTdGF0ZSgkZXZlbnQpXCJcclxuICAgICAgICAgIChyYW5nZURhdGVDbGljayk9XCJzZXREYXRlc1N0YXRlKCRldmVudClcIlxyXG4gICAgICAgICAgcmFuZ2VQaWNrZXJcclxuICAgICAgICA+PC94LXBpY2tlci15ZWFyPlxyXG4gICAgICB9XHJcbiAgICAgIEBjYXNlICgnZGF0ZS10aW1lJykge1xyXG4gICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiZGF0ZVRpbWVIb3VyTWludXRlVHBsOyBjb250ZXh0OiB7IHRpbWVGb3JtYXQ6ICdISDptbTpzcycsIHRpbWVUeXBlOiAndGltZScgfVwiXHJcbiAgICAgICAgPjwvbmctY29udGFpbmVyPlxyXG4gICAgICB9XHJcbiAgICAgIEBjYXNlICgnZGF0ZS1ob3VyJykge1xyXG4gICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiZGF0ZVRpbWVIb3VyTWludXRlVHBsOyBjb250ZXh0OiB7IHRpbWVGb3JtYXQ6ICdISCcsIHRpbWVUeXBlOiAnaG91cicgfVwiXHJcbiAgICAgICAgPjwvbmctY29udGFpbmVyPlxyXG4gICAgICB9XHJcbiAgICAgIEBjYXNlICgnZGF0ZS1taW51dGUnKSB7XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJkYXRlVGltZUhvdXJNaW51dGVUcGw7IGNvbnRleHQ6IHsgdGltZUZvcm1hdDogJ0hIOm1tJywgdGltZVR5cGU6ICdtaW51dGUnIH1cIlxyXG4gICAgICAgID48L25nLWNvbnRhaW5lcj5cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIDwvZGl2PlxyXG4gIEBpZiAoaXNEYXRlUGlja2VyKSB7XHJcbiAgICBAaWYgKGV4dHJhRm9vdGVyKSB7XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ4LWRhdGUtcmFuZ2UtcG9ydGFsLWV4dHJhLWZvb3RlclwiPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKnhPdXRsZXQ9XCJleHRyYUZvb3RlclwiPnt7IGV4dHJhRm9vdGVyIH19PC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgfVxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInByZXNldFRwbFwiPjwvbmctY29udGFpbmVyPlxyXG4gIH1cclxuPC9kaXY+XHJcblxyXG48bmctdGVtcGxhdGUgI2RhdGVUaW1lSG91ck1pbnV0ZVRwbCBsZXQtdGltZUZvcm1hdD1cInRpbWVGb3JtYXRcIiBsZXQtdGltZVR5cGU9XCJ0aW1lVHlwZVwiPlxyXG4gIDxkaXYgY2xhc3M9XCJ4LWRhdGUtcmFuZ2UtcG9ydGFsLWNvbnRlbnRcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJ4LWRhdGUtcmFuZ2UtcG9ydGFsLWRhdGVcIj5cclxuICAgICAgPHgtcGlja2VyLWRhdGVcclxuICAgICAgICBbY2xhc3MueC1kYXRlLXJhbmdlLXBvcnRhbC1zdGFydF09XCJhY3RpdmVUeXBlID09PSAnc3RhcnQnXCJcclxuICAgICAgICBbY2xhc3MueC1kYXRlLXJhbmdlLXBvcnRhbC1lbmRdPVwiYWN0aXZlVHlwZSA9PT0gJ2VuZCdcIlxyXG4gICAgICAgIFsoZGlzcGxheSldPVwidGltZURpc3BsYXlcIlxyXG4gICAgICAgIFsobW9kZWwpXT1cInRpbWVNb2RlbFwiXHJcbiAgICAgICAgW3JhbmdlSG92ZXJdPVwidGltZUhvdmVyXCJcclxuICAgICAgICBbcmFuZ2VWYWx1ZV09XCJ2YWx1ZVwiXHJcbiAgICAgICAgW3JhbmdlVHlwZV09XCJhY3RpdmVUeXBlXCJcclxuICAgICAgICBbZGlzYWJsZWREYXRlXT1cImRpc2FibGVkRGF0ZVwiXHJcbiAgICAgICAgKG1vZGVsQ2hhbmdlKT1cImRhdGVDaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICAgICAgcmFuZ2VQaWNrZXJcclxuICAgICAgPjwveC1waWNrZXItZGF0ZT5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cIngtZGF0ZS1yYW5nZS1wb3J0YWwtdGltZVwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwieC1kYXRlLXJhbmdlLXBvcnRhbC10aW1lLWxhYmVsXCI+XHJcbiAgICAgICAge3sgdGltZSB8IGRhdGU6IHRpbWVGb3JtYXQgfX1cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDx4LXRpbWUtcGlja2VyLWZyYW1lXHJcbiAgICAgICAgI3RpbWVQaWNrZXJGcmFtZVxyXG4gICAgICAgIFt0eXBlXT1cInRpbWVUeXBlXCJcclxuICAgICAgICBbdmFsdWVdPVwidGltZVwiXHJcbiAgICAgICAgKG5vZGVFbWl0KT1cInNlbGVjdFRpbWUoJGV2ZW50KVwiXHJcbiAgICAgICAgW2Rpc2FibGVkVGltZVBhcmFtXT1cImFjdGl2ZVR5cGVcIlxyXG4gICAgICAgIFtkaXNhYmxlZFRpbWVdPVwiZGlzYWJsZWRUaW1lXCJcclxuICAgICAgICBbZGVmYXVsdE5vd109XCJmYWxzZVwiXHJcbiAgICAgID48L3gtdGltZS1waWNrZXItZnJhbWU+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuICBAaWYgKCFpc0RhdGVQaWNrZXIgJiYgZXh0cmFGb290ZXIpIHtcclxuICAgIDxuZy1jb250YWluZXIgKnhPdXRsZXQ9XCJleHRyYUZvb3RlclwiPnt7IGV4dHJhRm9vdGVyIH19PC9uZy1jb250YWluZXI+XHJcbiAgfVxyXG4gIDxkaXYgY2xhc3M9XCJ4LWRhdGUtcmFuZ2UtcG9ydGFsLWZvb3RlclwiPlxyXG4gICAgPGRpdiBjbGFzcz1cIngtZGF0ZS1yYW5nZS1wb3J0YWwtZm9vdGVyLWxlZnRcIj5cclxuICAgICAgQGlmICghaXNEYXRlUGlja2VyKSB7XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInByZXNldFRwbFwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICB9XHJcbiAgICA8L2Rpdj5cclxuICAgIDx4LWJ1dHRvbiB0eXBlPVwicHJpbWFyeVwiIChjbGljayk9XCIhc3VyZURpc2FibGVkICYmIHN1cmVUaW1lKClcIiBzaXplPVwic21hbGxcIiBbZGlzYWJsZWRdPVwic3VyZURpc2FibGVkXCI+e3tcclxuICAgICAgbG9jYWxlLnN1cmVcclxuICAgIH19PC94LWJ1dHRvbj5cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjcHJlc2V0VHBsPlxyXG4gIEBpZiAocHJlc2V0KSB7XHJcbiAgICA8ZGl2IGNsYXNzPVwieC1kYXRlLXJhbmdlLXBvcnRhbC1wcmVzZXRcIj5cclxuICAgICAgQGZvciAoaXRlbSBvZiBwcmVzZXQ7IHRyYWNrIGl0ZW0uaWQpIHtcclxuICAgICAgICBAc3dpdGNoIChpdGVtLmlkKSB7XHJcbiAgICAgICAgICBAY2FzZSAoJ3RoaXNXZWVrJykge1xyXG4gICAgICAgICAgICA8eC1saW5rIChjbGljayk9XCJvblByZXNldCgnd2VlaycsIDApXCI+e3sgbG9jYWxlLnRoaXNXZWVrIH19PC94LWxpbms+XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBAY2FzZSAoJ2xhc3RXZWVrJykge1xyXG4gICAgICAgICAgICA8eC1saW5rIChjbGljayk9XCJvblByZXNldCgnd2VlaycsIC0xKVwiPnt7IGxvY2FsZS5sYXN0V2VlayB9fTwveC1saW5rPlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgQGNhc2UgKCduZXh0V2VlaycpIHtcclxuICAgICAgICAgICAgPHgtbGluayAoY2xpY2spPVwib25QcmVzZXQoJ3dlZWsnLCAxKVwiPnt7IGxvY2FsZS5uZXh0V2VlayB9fTwveC1saW5rPlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgQGNhc2UgKCd0aGlzTW9udGgnKSB7XHJcbiAgICAgICAgICAgIDx4LWxpbmsgKGNsaWNrKT1cIm9uUHJlc2V0KCdtb250aCcsIDApXCI+e3sgbG9jYWxlLnRoaXNNb250aCB9fTwveC1saW5rPlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgQGNhc2UgKCdsYXN0TW9udGgnKSB7XHJcbiAgICAgICAgICAgIDx4LWxpbmsgKGNsaWNrKT1cIm9uUHJlc2V0KCdtb250aCcsIC0xKVwiPnt7IGxvY2FsZS5sYXN0TW9udGggfX08L3gtbGluaz5cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIEBjYXNlICgnbmV4dE1vbnRoJykge1xyXG4gICAgICAgICAgICA8eC1saW5rIChjbGljayk9XCJvblByZXNldCgnbW9udGgnLCAxKVwiPnt7IGxvY2FsZS5uZXh0TW9udGggfX08L3gtbGluaz5cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIEBjYXNlICgndGhpc1llYXInKSB7XHJcbiAgICAgICAgICAgIDx4LWxpbmsgKGNsaWNrKT1cIm9uUHJlc2V0KCd5ZWFyJywgMClcIj57eyBsb2NhbGUudGhpc1llYXIgfX08L3gtbGluaz5cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIEBjYXNlICgnbGFzdFllYXInKSB7XHJcbiAgICAgICAgICAgIDx4LWxpbmsgKGNsaWNrKT1cIm9uUHJlc2V0KCd5ZWFyJywgLTEpXCI+e3sgbG9jYWxlLmxhc3RZZWFyIH19PC94LWxpbms+XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBAY2FzZSAoJ25leHRZZWFyJykge1xyXG4gICAgICAgICAgICA8eC1saW5rIChjbGljayk9XCJvblByZXNldCgneWVhcicsIDEpXCI+e3sgbG9jYWxlLm5leHRZZWFyIH19PC94LWxpbms+XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIEBpZiAoISFpdGVtLmZ1bmMpIHtcclxuICAgICAgICAgIDx4LWxpbmsgKGNsaWNrKT1cIm9uUHJlc2V0RnVuYyhpdGVtKVwiPnt7IGl0ZW0ubGFiZWwgfX08L3gtbGluaz5cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIDwvZGl2PlxyXG4gIH1cclxuPC9uZy10ZW1wbGF0ZT5cclxuIl19
|
|
338
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1yYW5nZS1wb3J0YWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGliL25nLW5lc3QvdWkvZGF0ZS1waWNrZXIvZGF0ZS1yYW5nZS1wb3J0YWwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGliL25nLW5lc3QvdWkvZGF0ZS1waWNrZXIvZGF0ZS1yYW5nZS1wb3J0YWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxpQkFBaUIsRUFDakIsdUJBQXVCLEVBRXZCLFdBQVcsRUFDWCxZQUFZLEVBQ1osS0FBSyxFQUNMLE1BQU0sRUFDTixRQUFRLEVBQ1IsU0FBUyxFQUNULE1BQU0sRUFDTixNQUFNLEVBQ04sS0FBSyxFQUNOLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDTCxzQkFBc0IsRUFNdkIsTUFBTSx3QkFBd0IsQ0FBQztBQUNoQyxPQUFPLEVBQ0wsUUFBUSxFQUNSLHFCQUFxQixFQUVyQixVQUFVLEVBQ1YsU0FBUyxFQUNULE9BQU8sRUFFUCxRQUFRLEVBQ1IsU0FBUyxFQUNULFNBQVMsRUFDVCxRQUFRLEVBQ1QsTUFBTSxrQkFBa0IsQ0FBQztBQUMxQixPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckMsT0FBTyxFQUFFLFFBQVEsRUFBRSxhQUFhLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM1RSxPQUFPLEVBQUUsWUFBWSxFQUFtQixLQUFLLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUN4RSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUMvRCxPQUFPLEVBQTZCLGlC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QixDQUFDOzsyRkFHeEIseUJBQXlCO2tCQXRCckMsU0FBUzsrQkFDRSxHQUFHLHNCQUFzQixFQUFFLGNBQ3pCLElBQUksV0FDUDt3QkFDUCxnQkFBZ0I7d0JBQ2hCLFFBQVE7d0JBQ1Isb0JBQW9CO3dCQUNwQixxQkFBcUI7d0JBQ3JCLG9CQUFvQjt3QkFDcEIsdUJBQXVCO3dCQUN2QixpQkFBaUI7d0JBQ2pCLGdCQUFnQjt3QkFDaEIsY0FBYzt3QkFDZCxnQkFBZ0I7cUJBQ2pCLGlCQUdjLGlCQUFpQixDQUFDLElBQUksbUJBQ3BCLHVCQUF1QixDQUFDLE1BQU0sY0FDbkMsQ0FBQyxxQkFBcUIsQ0FBQyxhQUN4QixDQUFDLFFBQVEsRUFBRSxhQUFhLENBQUM7OEJBR2lCLFlBQVk7c0JBQWhFLFdBQVc7dUJBQUMsMkJBQTJCO2dCQUdvQixJQUFJO3NCQUEvRCxZQUFZO3VCQUFDLGdDQUFnQyxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQUdHLEtBQUs7c0JBQWpFLFlBQVk7dUJBQUMsaUNBQWlDLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBWaWV3RW5jYXBzdWxhdGlvbixcclxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICBBZnRlclZpZXdJbml0LFxyXG4gIEhvc3RCaW5kaW5nLFxyXG4gIEhvc3RMaXN0ZW5lcixcclxuICBpbnB1dCxcclxuICBvdXRwdXQsXHJcbiAgY29tcHV0ZWQsXHJcbiAgdmlld0NoaWxkLFxyXG4gIHNpZ25hbCxcclxuICBpbmplY3QsXHJcbiAgbW9kZWxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtcclxuICBYRGF0ZVJhbmdlUG9ydGFsUHJlZml4LFxyXG4gIFhEYXRlUGlja2VyVHlwZSxcclxuICBYRGF0ZUNlbGwsXHJcbiAgWERhdGVSYW5nZVByZXNldCxcclxuICBYRGF0ZVBpY2tlckRpc2FibGVkRGF0ZSxcclxuICBYRGF0ZVBpY2tlckRpc2FibGVkVGltZVxyXG59IGZyb20gJy4vZGF0ZS1waWNrZXIucHJvcGVydHknO1xyXG5pbXBvcnQge1xyXG4gIFhJc0VtcHR5LFxyXG4gIFhDb25uZWN0QmFzZUFuaW1hdGlvbixcclxuICBYUG9zaXRpb25Ub3BCb3R0b20sXHJcbiAgWEFkZE1vbnRocyxcclxuICBYQWRkWWVhcnMsXHJcbiAgWElzTnVsbCxcclxuICBYVGVtcGxhdGUsXHJcbiAgWElzQXJyYXksXHJcbiAgWElzTnVtYmVyLFxyXG4gIFhJc1N0cmluZyxcclxuICBYQWRkRGF5c1xyXG59IGZyb20gJ0BuZy1uZXN0L3VpL2NvcmUnO1xyXG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IERhdGVQaXBlLCBMb3dlckNhc2VQaXBlLCBOZ1RlbXBsYXRlT3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgWEkxOG5TZXJ2aWNlLCBYSTE4bkRhdGVQaWNrZXIsIHpoX0NOIH0gZnJvbSAnQG5nLW5lc3QvdWkvaTE4bic7XHJcbmltcG9ydCB7IFhQaWNrZXJNb250aENvbXBvbmVudCB9IGZyb20gJy4vcGlja2VyLW1vbnRoLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFhQaWNrZXJZZWFyQ29tcG9uZW50IH0gZnJvbSAnLi9waWNrZXIteWVhci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBYUGlja2VyRGF0ZUNvbXBvbmVudCB9IGZyb20gJy4vcGlja2VyLWRhdGUuY29tcG9uZW50JztcclxuaW1wb3J0IHsgWFRpbWVQaWNrZXJGcmFtZUNvbXBvbmVudCwgWFRpbWVQaWNrZXJNb2R1bGUgfSBmcm9tICdAbmctbmVzdC91aS90aW1lLXBpY2tlcic7XHJcbmltcG9ydCB7IFhQaWNrZXJRdWFydGVyQ29tcG9uZW50IH0gZnJvbSAnLi9waWNrZXItcXVhcnRlci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBYQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnQG5nLW5lc3QvdWkvYnV0dG9uJztcclxuaW1wb3J0IHsgWExpbmtDb21wb25lbnQgfSBmcm9tICdAbmctbmVzdC91aS9saW5rJztcclxuaW1wb3J0IHsgWE91dGxldERpcmVjdGl2ZSB9IGZyb20gJ0BuZy1uZXN0L3VpL291dGxldCc7XHJcbmltcG9ydCB7IHRvU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IGAke1hEYXRlUmFuZ2VQb3J0YWxQcmVmaXh9YCxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIE5nVGVtcGxhdGVPdXRsZXQsXHJcbiAgICBEYXRlUGlwZSxcclxuICAgIFhQaWNrZXJEYXRlQ29tcG9uZW50LFxyXG4gICAgWFBpY2tlck1vbnRoQ29tcG9uZW50LFxyXG4gICAgWFBpY2tlclllYXJDb21wb25lbnQsXHJcbiAgICBYUGlja2VyUXVhcnRlckNvbXBvbmVudCxcclxuICAgIFhUaW1lUGlja2VyTW9kdWxlLFxyXG4gICAgWEJ1dHRvbkNvbXBvbmVudCxcclxuICAgIFhMaW5rQ29tcG9uZW50LFxyXG4gICAgWE91dGxldERpcmVjdGl2ZVxyXG4gIF0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2RhdGUtcmFuZ2UtcG9ydGFsLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9kYXRlLXJhbmdlLXBvcnRhbC5jb21wb25lbnQuc2NzcyddLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgYW5pbWF0aW9uczogW1hDb25uZWN0QmFzZUFuaW1hdGlvbl0sXHJcbiAgcHJvdmlkZXJzOiBbRGF0ZVBpcGUsIExvd2VyQ2FzZVBpcGVdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBYRGF0ZVJhbmdlUG9ydGFsQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XHJcbiAgQEhvc3RCaW5kaW5nKCdAeC1jb25uZWN0LWJhc2UtYW5pbWF0aW9uJykgcHVibGljIGdldCBnZXRQbGFjZW1lbnQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5wbGFjZW1lbnQoKTtcclxuICB9XHJcbiAgQEhvc3RMaXN0ZW5lcignQHgtY29ubmVjdC1iYXNlLWFuaW1hdGlvbi5kb25lJywgWyckZXZlbnQnXSkgZG9uZShldmVudDogeyB0b1N0YXRlOiBzdHJpbmcgfSkge1xyXG4gICAgZXZlbnQudG9TdGF0ZSAhPT0gJ3ZvaWQnICYmIHRoaXMuYW5pbWF0aW5nLmVtaXQoZmFsc2UpO1xyXG4gIH1cclxuICBASG9zdExpc3RlbmVyKCdAeC1jb25uZWN0LWJhc2UtYW5pbWF0aW9uLnN0YXJ0JywgWyckZXZlbnQnXSkgc3RhcnQoZXZlbnQ6IHsgdG9TdGF0ZTogc3RyaW5nIH0pIHtcclxuICAgIGV2ZW50LnRvU3RhdGUgIT09ICd2b2lkJyAmJiB0aGlzLmFuaW1hdGluZy5lbWl0KHRydWUpO1xyXG4gIH1cclxuXHJcbiAgZGF0ZVBpcGUgPSBpbmplY3QoRGF0ZVBpcGUpO1xyXG4gIGxvd2VyQ2FzZVBpcGUgPSBpbmplY3QoTG93ZXJDYXNlUGlwZSk7XHJcbiAgaTE4biA9IGluamVjdChYSTE4blNlcnZpY2UpO1xyXG5cclxuICBzdGFydFBpY2tlciA9IHZpZXdDaGlsZDxYUGlja2VyRGF0ZUNvbXBvbmVudCB8IFhQaWNrZXJNb250aENvbXBvbmVudCB8IFhQaWNrZXJZZWFyQ29tcG9uZW50Pignc3RhcnRQaWNrZXInKTtcclxuICBlbmRQaWNrZXIgPSB2aWV3Q2hpbGQ8WFBpY2tlckRhdGVDb21wb25lbnQgfCBYUGlja2VyTW9udGhDb21wb25lbnQgfCBYUGlja2VyWWVhckNvbXBvbmVudD4oJ2VuZFBpY2tlcicpO1xyXG4gIHRpbWVQaWNrZXJGcmFtZSA9IHZpZXdDaGlsZDxYVGltZVBpY2tlckZyYW1lQ29tcG9uZW50PigndGltZVBpY2tlckZyYW1lJyk7XHJcblxyXG4gIHZhbHVlID0gbW9kZWw8KG51bWJlciB8IG51bGwpW10+KFtdKTtcclxuICBwbGFjZW1lbnQgPSBpbnB1dDxYUG9zaXRpb25Ub3BCb3R0b20+KCk7XHJcbiAgdHlwZSA9IG1vZGVsPFhEYXRlUGlja2VyVHlwZT4oJ2RhdGUnKTtcclxuICBwcmVzZXQgPSBpbnB1dDxYRGF0ZVJhbmdlUHJlc2V0W10+KFtdKTtcclxuICBleHRyYUZvb3RlciA9IGlucHV0PFhUZW1wbGF0ZT4oKTtcclxuICBkaXNhYmxlZERhdGUgPSBpbnB1dDxYRGF0ZVBpY2tlckRpc2FibGVkRGF0ZT4oKTtcclxuICBkaXNhYmxlZFRpbWUgPSBpbnB1dDxYRGF0ZVBpY2tlckRpc2FibGVkVGltZT4oKTtcclxuICBhY3RpdmVUeXBlID0gaW5wdXQ8J3N0YXJ0JyB8ICdlbmQnPignc3RhcnQnKTtcclxuXHJcbiAgYW5pbWF0aW5nID0gb3V0cHV0PGJvb2xlYW4+KCk7XHJcbiAgbm9kZUNsaWNrID0gb3V0cHV0PHsgZGF0ZTogRGF0ZVtdOyBjbG9zZT86IGJvb2xlYW4gfT4oKTtcclxuICBzdGFydE5vZGVDaGFuZ2VkID0gb3V0cHV0PHsgZGF0ZTogRGF0ZSB8IG51bGw7IGNsb3NlPzogYm9vbGVhbjsgaXNEYXRlUGlja2VyPzogYm9vbGVhbiB9PigpO1xyXG4gIGVuZE5vZGVDaGFuZ2VkID0gb3V0cHV0PHsgZGF0ZTogRGF0ZSB8IG51bGw7IGNsb3NlPzogYm9vbGVhbjsgaXNEYXRlUGlja2VyPzogYm9vbGVhbiB9PigpO1xyXG5cclxuICBkaXNwbGF5ID0gc2lnbmFsKG5ldyBEYXRlKCkpO1xyXG4gIG1vZGVsID0gc2lnbmFsPERhdGUgfCBudWxsPihudWxsKTtcclxuICBzdGFydE1vZGVsID0gc2lnbmFsPERhdGUgfCBudWxsPihudWxsKTtcclxuICBlbmRNb2RlbCA9IHNpZ25hbDxEYXRlIHwgbnVsbD4obnVsbCk7XHJcbiAgc3RhcnRZZWFyID0gc2lnbmFsPG51bWJlciB8IG51bGw+KG51bGwpO1xyXG4gIHN0YXJ0RGlzcGxheSA9IHNpZ25hbChuZXcgRGF0ZSgpKTtcclxuICBlbmREaXNwbGF5ID0gc2lnbmFsKFhBZGRNb250aHModGhpcy5zdGFydERpc3BsYXkoKSwgMSkpO1xyXG5cclxuICBsb2NhbGUgPSB0b1NpZ25hbCh0aGlzLmkxOG4ubG9jYWxlQ2hhbmdlLnBpcGUobWFwKCh4KSA9PiB4LmRhdGVQaWNrZXIgYXMgWEkxOG5EYXRlUGlja2VyKSksIHtcclxuICAgIGluaXRpYWxWYWx1ZTogemhfQ04uZGF0ZVBpY2tlclxyXG4gIH0pO1xyXG4gIHRpbWUgPSBzaWduYWw8bnVtYmVyIHwgbnVsbD4obnVsbCk7XHJcbiAgdGltZURpc3BsYXkgPSBzaWduYWwobmV3IERhdGUoKSk7XHJcbiAgdGltZU1vZGVsID0gc2lnbmFsPERhdGUgfCBudWxsPihudWxsKTtcclxuICB0aW1lSG92ZXIgPSBzaWduYWwoZmFsc2UpO1xyXG4gIG5vZGVDbGlja0NvdW50ID0gc2lnbmFsKDApO1xyXG5cclxuICBpc0RhdGVQaWNrZXIgPSBjb21wdXRlZCgoKSA9PiB7XHJcbiAgICByZXR1cm4gWydkYXRlJywgJ3F1YXJ0ZXInLCAnd2VlaycsICdtb250aCcsICd5ZWFyJ10uaW5jbHVkZXModGhpcy50eXBlKCkpO1xyXG4gIH0pO1xyXG5cclxuICBzdXJlRGlzYWJsZWQgPSBjb21wdXRlZCgoKSA9PiB7XHJcbiAgICBpZiAodGhpcy50aW1lUGlja2VyRnJhbWUoKSAmJiAhWElzRW1wdHkodGhpcy50aW1lKCkpKSB7XHJcbiAgICAgIGNvbnN0IGR0ID0gbmV3IERhdGUodGhpcy50aW1lKCkhKTtcclxuICAgICAgY29uc3QgaG91cnMgPSBkdC5nZXRIb3VycygpO1xyXG4gICAgICBjb25zdCBtaW51dGVzID0gZHQuZ2V0TWludXRlcygpO1xyXG4gICAgICBjb25zdCBzZWNvbmRzID0gZHQuZ2V0U2Vjb25kcygpO1xyXG4gICAgICByZXR1cm4gKFxyXG4gICAgICAgIHRoaXMudGltZVBpY2tlckZyYW1lKCk/LnNldERpc2FibGVkKCdob3VycycsIGhvdXJzKSB8fFxyXG4gICAgICAgIHRoaXMudGltZVBpY2tlckZyYW1lKCk/LnNldERpc2FibGVkKCdtaW51dGVzJywgbWludXRlcykgfHxcclxuICAgICAgICB0aGlzLnRpbWVQaWNrZXJGcmFtZSgpPy5zZXREaXNhYmxlZCgnc2Vjb25kcycsIHNlY29uZHMpXHJcbiAgICAgICk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuICB9KTtcclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgdGhpcy5pbml0KCk7XHJcbiAgfVxyXG5cclxuICBpbml0KCkge1xyXG4gICAgaWYgKCFYSXNFbXB0eSh0aGlzLnZhbHVlKCkpKSB7XHJcbiAgICAgIHRoaXMuc2V0RGVmYXVsdCgpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy52YWx1ZS5zZXQoW251bGwsIG51bGxdKTtcclxuICAgICAgdGhpcy5tb2RlbC5zZXQodGhpcy5kaXNwbGF5KCkpO1xyXG4gICAgICB0aGlzLnN0YXJ0TW9kZWwuc2V0KHRoaXMubW9kZWwoKSk7XHJcbiAgICAgIHRoaXMuZW5kTW9kZWwuc2V0KHRoaXMuc2V0TW9kZWxCeVR5cGUodGhpcy5tb2RlbCgpISwgdGhpcy5pc0RhdGVQaWNrZXIoKSA/IDEgOiAwKSk7XHJcbiAgICAgIHRoaXMuc2V0RGlzcGxheSh0aGlzLm1vZGVsKCkhKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNldE1vZGVsQnlUeXBlKGJ5TW9kZWw6IERhdGUsIG51bTogbnVtYmVyID0gMSkge1xyXG4gICAgaWYgKFsnbW9udGgnLCAncXVhcnRlciddLmluY2x1ZGVzKHRoaXMudHlwZSgpKSkge1xyXG4gICAgICByZXR1cm4gWEFkZFllYXJzKGJ5TW9kZWwhLCBudW0pO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLnR5cGUoKSA9PT0gJ3llYXInKSB7XHJcbiAgICAgIHJldHVybiBYQWRkWWVhcnMoYnlNb2RlbCEsIDEwICogbnVtKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBYQWRkTW9udGhzKGJ5TW9kZWwhLCBudW0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0RGF0ZXNTdGF0ZShjZWxsOiBYRGF0ZUNlbGwpIHtcclxuICAgIGlmICh0aGlzLnR5cGUoKSA9PT0gJ3dlZWsnKSByZXR1cm47XHJcbiAgICB0aGlzLnN0YXJ0UGlja2VyKCk/LnNldERhdGVzU3RhdGUoY2VsbCk7XHJcbiAgICB0aGlzLmVuZFBpY2tlcigpPy5zZXREYXRlc1N0YXRlKGNlbGwpO1xyXG4gIH1cclxuXHJcbiAgc2V0RGVmYXVsdCgpIHtcclxuICAgIGNvbnN0IHR5cGUgPSB0aGlzLmFjdGl2ZVR5cGUoKSB8fCAnc3RhcnQnO1xyXG4gICAgdGhpcy50aW1lSG92ZXIuc2V0KCF0aGlzLnZhbHVlKCkuZXZlcnkoKHgpID0+IHggPT09IG51bGwpKTtcclxuICAgIGlmICh0eXBlID09PSAnc3RhcnQnKSB7XHJcbiAgICAgIHRoaXMuc3RhcnRNb2RlbC5zZXQobmV3IERhdGUodGhpcy52YWx1ZSgpWzBdISkpO1xyXG4gICAgICB0aGlzLnN0YXJ0RGlzcGxheS5zZXQodGhpcy5zdGFydE1vZGVsKCkhKTtcclxuICAgICAgdGhpcy5lbmRNb2RlbC5zZXQodGhpcy5zZXRNb2RlbEJ5VHlwZSh0aGlzLnN0YXJ0TW9kZWwoKSEsIHRoaXMuaXNEYXRlUGlja2VyKCkgPyAxIDogMCkpO1xyXG4gICAgICB0aGlzLmVuZERpc3BsYXkuc2V0KHRoaXMuZW5kTW9kZWwoKSEpO1xyXG4gICAgICB0aGlzLnRpbWVNb2RlbC5zZXQodGhpcy5zdGFydE1vZGVsKCkpO1xyXG4gICAgICB0aGlzLnRpbWVEaXNwbGF5LnNldCh0aGlzLnN0YXJ0RGlzcGxheSgpKTtcclxuICAgICAgdGhpcy50aW1lLnNldCh0aGlzLnN0YXJ0TW9kZWwoKSEuZ2V0VGltZSgpKTtcclxuICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ2VuZCcpIHtcclxuICAgICAgdGhpcy5lbmRNb2RlbC5zZXQobmV3IERhdGUodGhpcy52YWx1ZSgpWzFdISkpO1xyXG4gICAgICB0aGlzLmVuZERpc3BsYXkuc2V0KHRoaXMuZW5kTW9kZWwoKSEpO1xyXG4gICAgICB0aGlzLnN0YXJ0TW9kZWwuc2V0KHRoaXMuc2V0TW9kZWxCeVR5cGUodGhpcy5lbmRNb2RlbCgpISwgdGhpcy5pc0RhdGVQaWNrZXIoKSA/IC0xIDogMCkpO1xyXG4gICAgICB0aGlzLnN0YXJ0RGlzcGxheS5zZXQodGhpcy5zdGFydE1vZGVsKCkhKTtcclxuICAgICAgdGhpcy50aW1lTW9kZWwuc2V0KHRoaXMuZW5kTW9kZWwoKSk7XHJcbiAgICAgIHRoaXMudGltZURpc3BsYXkuc2V0KHRoaXMuZW5kRGlzcGxheSgpKTtcclxuICAgICAgdGhpcy50aW1lLnNldCh0aGlzLmVuZE1vZGVsKCkhLmdldFRpbWUoKSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZXREaXNwbGF5KGRhdGU6IERhdGUpIHtcclxuICAgIHRoaXMuZGlzcGxheS5zZXQobmV3IERhdGUoZGF0ZS5nZXRGdWxsWWVhcigpLCBkYXRlLmdldE1vbnRoKCksIDEpKTtcclxuICAgIHRoaXMuc3RhcnREaXNwbGF5LnNldCh0aGlzLmRpc3BsYXkoKSk7XHJcbiAgICB0aGlzLmVuZERpc3BsYXkuc2V0KHRoaXMuc2V0TW9kZWxCeVR5cGUodGhpcy5kaXNwbGF5KCksIHRoaXMuaXNEYXRlUGlja2VyKCkgPyAxIDogMCkpO1xyXG4gIH1cclxuXHJcbiAgZGF0ZUNoYW5nZShkYXRlOiBEYXRlKSB7XHJcbiAgICB0aGlzLm5vZGVDbGlja0NvdW50LnVwZGF0ZSgoeCkgPT4geCArIDEpO1xyXG4gICAgbGV0IGNsb3NlID0gdGhpcy5ub2RlQ2xpY2tDb3VudCgpID09PSAyO1xyXG4gICAgbGV0IHRpbWUgPSB0aGlzLnNldERhdGVDaGFuZ2VUaW1lKGRhdGUpO1xyXG4gICAgY29uc3QgaXNEYXRlUGlja2VyID0gdGhpcy5pc0RhdGVQaWNrZXIoKTtcclxuICAgIGRhdGUgPSBuZXcgRGF0ZSh0aW1lKTtcclxuICAgIGlmICh0aGlzLmFjdGl2ZVR5cGUoKSA9PT0gJ3N0YXJ0Jykge1xyXG4gICAgICB0aGlzLnZhbHVlKClbMF0gPSB0aW1lO1xyXG4gICAgICBpZiAoIVhJc051bGwodGhpcy52YWx1ZSgpWzFdKSAmJiB0aW1lID4gdGhpcy52YWx1ZSgpWzFdISkge1xyXG4gICAgICAgIGlmICh0aGlzLm5vZGVDbGlja0NvdW50KCkgPT09IDIpIHtcclxuICAgICAgICAgIHRoaXMubm9kZUNsaWNrQ291bnQudXBkYXRlKCh4KSA9PiB4IC0gMSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNsb3NlID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5lbmRNb2RlbC5zZXQobnVsbCk7XHJcbiAgICAgICAgdGhpcy52YWx1ZS51cGRhdGUoKHgpID0+IHtcclxuICAgICAgICAgIHhbMV0gPSBudWxsO1xyXG4gICAgICAgICAgcmV0dXJuIFsuLi54XTtcclxuICAgICAgICB9KTtcclxuICAgICAgICBpZiAoIWlzRGF0ZVBpY2tlcikge1xyXG4gICAgICAgICAgdGhpcy50aW1lSG92ZXIuc2V0KGZhbHNlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5lbmROb2RlQ2hhbmdlZC5lbWl0KHsgZGF0ZTogbnVsbCwgY2xvc2UsIGlzRGF0ZVBpY2tlciB9KTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnN0YXJ0Tm9kZUNoYW5nZWQuZW1pdCh7IGRhdGUsIGNsb3NlLCBpc0RhdGVQaWNrZXIgfSk7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuYWN0aXZlVHlwZSgpID09PSAnZW5kJykge1xyXG4gICAgICB0aGlzLnZhbHVlKClbMV0gPSB0aW1lO1xyXG4gICAgICBpZiAoIVhJc051bGwodGhpcy52YWx1ZSgpWzBdKSAmJiB0aW1lIDwgdGhpcy52YWx1ZSgpWzBdISkge1xyXG4gICAgICAgIGlmICh0aGlzLm5vZGVDbGlja0NvdW50KCkgPT09IDIpIHtcclxuICAgICAgICAgIHRoaXMubm9kZUNsaWNrQ291bnQudXBkYXRlKCh4KSA9PiB4IC0gMSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNsb3NlID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5zdGFydE1vZGVsLnNldChudWxsKTtcclxuICAgICAgICB0aGlzLnZhbHVlLnVwZGF0ZSgoeCkgPT4ge1xyXG4gICAgICAgICAgeFswXSA9IG51bGw7XHJcbiAgICAgICAgICByZXR1cm4gWy4uLnhdO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGlmICghaXNEYXRlUGlja2VyKSB7XHJcbiAgICAgICAgICB0aGlzLnRpbWVIb3Zlci5zZXQoZmFsc2UpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnN0YXJ0Tm9kZUNoYW5nZWQuZW1pdCh7IGRhdGU6IG51bGwsIGNsb3NlLCBpc0RhdGVQaWNrZXIgfSk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5lbmROb2RlQ2hhbmdlZC5lbWl0KHsgZGF0ZSwgY2xvc2UsIGlzRGF0ZVBpY2tlciB9KTtcclxuICAgIH1cclxuICAgIGlmICghdGhpcy52YWx1ZSgpLmluY2x1ZGVzKG51bGwpICYmIGlzRGF0ZVBpY2tlcikge1xyXG4gICAgICB0aGlzLm5vZGVDbGljay5lbWl0KHsgZGF0ZTogdGhpcy52YWx1ZSgpLm1hcCgoeCkgPT4gbmV3IERhdGUoeCEpKSwgY2xvc2UgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZXREYXRlQ2hhbmdlVGltZShkYXRlOiBEYXRlKSB7XHJcbiAgICBpZiAodGhpcy5pc0RhdGVQaWNrZXIoKSkge1xyXG4gICAgICByZXR1cm4gZGF0ZS5nZXRUaW1lKCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBsZXQgdGltZSA9IG5ldyBEYXRlKCk7XHJcbiAgICAgIGlmICh0aGlzLnRpbWUoKSkge1xyXG4gICAgICAgIHRpbWUgPSBuZXcgRGF0ZSh0aGlzLnRpbWUoKSEpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMudGltZS5zZXQodGltZS5nZXRUaW1lKCkpO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChbJ2RhdGUtaG91cicsICdkYXRlLW1pbnV0ZSddLmluY2x1ZGVzKHRoaXMudHlwZSgpKSkge1xyXG4gICAgICAgIHRpbWUuc2V0U2Vjb25kcygwKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy50eXBlKCkgPT09ICdkYXRlLWhvdXInKSB7XHJcbiAgICAgICAgdGltZS5zZXRNaW51dGVzKDApO1xyXG4gICAgICB9XHJcblxyXG4gICAgICByZXR1cm4gbmV3IERhdGUoXHJcbiAgICAgICAgZGF0ZS5nZXRGdWxsWWVhcigpLFxyXG4gICAgICAgIGRhdGUuZ2V0TW9udGgoKSxcclxuICAgICAgICBkYXRlLmdldERhdGUoKSxcclxuICAgICAgICB0aW1lLmdldEhvdXJzKCksXHJcbiAgICAgICAgdGltZS5nZXRNaW51dGVzKCksXHJcbiAgICAgICAgdGltZS5nZXRTZWNvbmRzKClcclxuICAgICAgKS5nZXRUaW1lKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB0eXBlQ2hhbmdlKHR5cGU6IFhEYXRlUGlja2VyVHlwZSkge1xyXG4gICAgdGhpcy50eXBlLnNldCh0eXBlKTtcclxuICB9XHJcblxyXG4gIHllYXJTdGFydENoYW5nZShudW1iZXI6IG51bWJlcikge1xyXG4gICAgdGhpcy5zdGFydFllYXIuc2V0KG51bWJlcik7XHJcbiAgfVxyXG5cclxuICBuZXh0TW9udGgobnVtOiBudW1iZXIpIHtcclxuICAgIGxldCBkYXRlID0gbmV3IERhdGUodGhpcy5kaXNwbGF5KCkpO1xyXG4gICAgZGF0ZS5zZXRNb250aChkYXRlLmdldE1vbnRoKCkgKyBudW0pO1xyXG4gICAgdGhpcy5zZXREaXNwbGF5KGRhdGUpO1xyXG4gIH1cclxuXHJcbiAgbmV4dFllYXIobnVtOiBudW1iZXIpIHtcclxuICAgIGxldCBkYXRlID0gbmV3IERhdGUodGhpcy5kaXNwbGF5KCkpO1xyXG4gICAgZGF0ZS5zZXRGdWxsWWVhcihkYXRlLmdldEZ1bGxZZWFyKCkgKyBudW0pO1xyXG4gICAgdGhpcy5zZXREaXNwbGF5KGRhdGUpO1xyXG4gIH1cclxuXHJcbiAgbmV4dFllYXJzKG51bTogbnVtYmVyKSB7XHJcbiAgICB0aGlzLnN0YXJ0WWVhci51cGRhdGUoKHgpID0+IHghICsgbnVtKTtcclxuICAgIGxldCBkYXRlID0gbmV3IERhdGUodGhpcy5kaXNwbGF5KCkpO1xyXG4gICAgZGF0ZS5zZXRGdWxsWWVhcih0aGlzLnN0YXJ0WWVhcigpISk7XHJcbiAgICB0aGlzLnNldERpc3BsYXkoZGF0ZSk7XHJcbiAgfVxyXG5cclxuICBnZXRMb2NhbGVNb250aChkYXRlOiBEYXRlKSB7XHJcbiAgICByZXR1cm4gKHRoaXMubG9jYWxlKCkgYXMgYW55KVt0aGlzLmxvd2VyQ2FzZVBpcGUudHJhbnNmb3JtKHRoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKGRhdGUsICdMTExMJykgYXMgc3RyaW5nKV07XHJcbiAgfVxyXG5cclxuICBzZWxlY3RUaW1lKHRpbWU6IERhdGUpIHtcclxuICAgIHRoaXMudGltZS5zZXQodGltZS5nZXRUaW1lKCkpO1xyXG4gICAgaWYgKFhJc0VtcHR5KHRoaXMudGltZU1vZGVsKCkpKSB7XHJcbiAgICAgIHRoaXMudGltZU1vZGVsLnNldChuZXcgRGF0ZSgpKTtcclxuICAgIH1cclxuICAgIHRoaXMudGltZU1vZGVsKCk/LnNldEhvdXJzKHRpbWUuZ2V0SG91cnMoKSk7XHJcbiAgICB0aGlzLnRpbWVNb2RlbCgpPy5zZXRNaW51dGVzKHRpbWUuZ2V0TWludXRlcygpKTtcclxuICAgIHRoaXMudGltZU1vZGVsKCk/LnNldFNlY29uZHModGltZS5nZXRTZWNvbmRzKCkpO1xyXG4gICAgdGhpcy5kYXRlQ2hhbmdlKHRoaXMudGltZU1vZGVsKCkhKTtcclxuICB9XHJcblxyXG4gIHN1cmVUaW1lKCkge1xyXG4gICAgaWYgKHRoaXMuc3VyZURpc2FibGVkKCkpIHJldHVybjtcclxuICAgIGNvbnN0IFtzdGFydCwgZW5kXSA9IHRoaXMudmFsdWUoKTtcclxuICAgIGlmIChYSXNOdWxsKHN0YXJ0KSAmJiAhWElzTnVsbChlbmQpKSB7XHJcbiAgICAgIHRoaXMudGltZS5zZXQobnVsbCk7XHJcbiAgICAgIHRoaXMudGltZUhvdmVyLnNldCh0cnVlKTtcclxuICAgICAgdGhpcy5lbmROb2RlQ2hhbmdlZC5lbWl0KHsgZGF0ZTogbmV3IERhdGUoZW5kISksIGNsb3NlOiBmYWxzZSwgaXNEYXRlUGlja2VyOiB0cnVlIH0pO1xyXG4gICAgfSBlbHNlIGlmICghWElzTnVsbChzdGFydCkgJiYgWElzTnVsbChlbmQpKSB7XHJcbiAgICAgIHRoaXMudGltZS5zZXQobnVsbCk7XHJcbiAgICAgIHRoaXMudGltZUhvdmVyLnNldCh0cnVlKTtcclxuICAgICAgdGhpcy5zdGFydE5vZGVDaGFuZ2VkLmVtaXQoeyBkYXRlOiBuZXcgRGF0ZShzdGFydCEpLCBjbG9zZTogZmFsc2UsIGlzRGF0ZVBpY2tlcjogdHJ1ZSB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMubm9kZUNsaWNrLmVtaXQoeyBkYXRlOiB0aGlzLnZhbHVlKCkubWFwKCh4KSA9PiBuZXcgRGF0ZSh4ISkpLCBjbG9zZTogdHJ1ZSB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHllYXJDaGFuZ2UobnVtOiBudW1iZXIsIHR5cGU/OiAnc3RhcnQnIHwgJ2VuZCcpIHtcclxuICAgIGlmICh0eXBlID09PSAnc3RhcnQnKSB7XHJcbiAgICAgIHRoaXMuZW5kRGlzcGxheS51cGRhdGUoKHgpID0+IFhBZGRZZWFycyh4LCBudW0pKTtcclxuICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ2VuZCcpIHtcclxuICAgICAgdGhpcy5zdGFydERpc3BsYXkudXBkYXRlKCh4KSA9PiBYQWRkWWVhcnMoeCwgbnVtKSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBtb250aENoYW5nZShudW06IG51bWJlciwgdHlwZT86ICdzdGFydCcgfCAnZW5kJykge1xyXG4gICAgaWYgKHR5cGUgPT09ICdzdGFydCcpIHtcclxuICAgICAgdGhpcy5lbmREaXNwbGF5LnVwZGF0ZSgoeCkgPT4gWEFkZE1vbnRocyh4LCBudW0pKTtcclxuICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ2VuZCcpIHtcclxuICAgICAgdGhpcy5zdGFydERpc3BsYXkudXBkYXRlKCh4KSA9PiBYQWRkTW9udGhzKHgsIG51bSkpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25QcmVzZXQodHlwZTogJ3dlZWsnIHwgJ21vbnRoJyB8ICd5ZWFyJywgbnVtID0gMCkge1xyXG4gICAgbGV0IG5vdyA9IG5ldyBEYXRlKCk7XHJcbiAgICBpZiAodHlwZSA9PT0gJ3dlZWsnKSB7XHJcbiAgICAgIG5vdyA9IG5ldyBEYXRlKG5vdy5nZXRGdWxsWWVhcigpLCBub3cuZ2V0TW9udGgoKSwgbm93LmdldERhdGUoKSk7XHJcbiAgICAgIGNvbnN0IHdlZWsgPSBub3cuZ2V0RGF5KCk7XHJcbiAgICAgIGNvbnN0IHdlZWtMaXN0ID0gWzEsIDIsIDMsIDQsIDUsIDYsIDddO1xyXG4gICAgICBjb25zdCBpbmRleCA9IHdlZWtMaXN0LmluZGV4T2Yod2Vlayk7XHJcbiAgICAgIHRoaXMubm9kZUNsaWNrLmVtaXQoe1xyXG4gICAgICAgIGRhdGU6IFtYQWRkRGF5cyhub3csIHdlZWtMaXN0WzBdIC0gKGluZGV4ICsgMSkgKyBudW0gKiA3KSwgWEFkZERheXMobm93LCB3ZWVrTGlzdFs2XSAtIChpbmRleCArIDEpICsgbnVtICogNyldLFxyXG4gICAgICAgIGNsb3NlOiB0cnVlXHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIGlmICh0eXBlID09PSAnbW9udGgnKSB7XHJcbiAgICAgIGNvbnN0IG1vbnRoID0gWEFkZE1vbnRocyhub3csIG51bSk7XHJcbiAgICAgIGNvbnN0IGZpcnN0RGF5ID0gbmV3IERhdGUobW9udGguZ2V0RnVsbFllYXIoKSwgbW9udGguZ2V0TW9udGgoKSwgMSk7XHJcbiAgICAgIGNvbnN0IGxhc3REYXkgPSBYQWRkRGF5cyhYQWRkTW9udGhzKGZpcnN0RGF5LCAxKSwgLTEpO1xyXG4gICAgICB0aGlzLm5vZGVDbGljay5lbWl0KHsgZGF0ZTogW2ZpcnN0RGF5LCBsYXN0RGF5XSwgY2xvc2U6IHRydWUgfSk7XHJcbiAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICd5ZWFyJykge1xyXG4gICAgICBsZXQgeWVhciA9IFhBZGRZZWFycyhub3csIG51bSk7XHJcbiAgICAgIGxldCBmaXJzdERheSA9IG5ldyBEYXRlKHllYXIuZ2V0RnVsbFllYXIoKSwgMCwgMSk7XHJcbiAgICAgIGxldCBsYXN0RGF5ID0gWEFkZERheXMoWEFkZFllYXJzKGZpcnN0RGF5LCAxKSwgLTEpO1xyXG4gICAgICB0aGlzLm5vZGVDbGljay5lbWl0KHsgZGF0ZTogW2ZpcnN0RGF5LCBsYXN0RGF5XSwgY2xvc2U6IHRydWUgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvblByZXNldEZ1bmMoaXRlbTogWERhdGVSYW5nZVByZXNldCkge1xyXG4gICAgbGV0IHZhbHVlID0gaXRlbS5mdW5jKCk7XHJcbiAgICBpZiAoWElzQXJyYXkodmFsdWUpICYmIHZhbHVlLmxlbmd0aCA+IDEpIHtcclxuICAgICAgaWYgKFhJc051bWJlcih2YWx1ZVswXSkgfHwgWElzU3RyaW5nKHZhbHVlWzBdKSkge1xyXG4gICAgICAgIHZhbHVlID0gdmFsdWUubWFwKCh4KSA9PiBuZXcgRGF0ZSh4KSk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5ub2RlQ2xpY2suZW1pdCh7IGRhdGU6IHZhbHVlLCBjbG9zZTogdHJ1ZSB9KTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cIngtZGF0ZS1yYW5nZS1wb3J0YWwge3sgdHlwZSgpIH19XCI+XHJcbiAgPGRpdiBjbGFzcz1cIngtZGF0ZS1yYW5nZS1wb3J0YWwtYm9keVwiPlxyXG4gICAgQHN3aXRjaCAodHlwZSgpKSB7XHJcbiAgICAgIEBjYXNlICgnZGF0ZScpIHtcclxuICAgICAgICA8eC1waWNrZXItZGF0ZVxyXG4gICAgICAgICAgI3N0YXJ0UGlja2VyXHJcbiAgICAgICAgICBjbGFzcz1cIngtZGF0ZS1yYW5nZS1wb3J0YWwtc3RhcnRcIlxyXG4gICAgICAgICAgWyhkaXNwbGF5KV09XCJzdGFydERpc3BsYXlcIlxyXG4gICAgICAgICAgWyhtb2RlbCldPVwic3RhcnRNb2RlbFwiXHJcbiAgICAgICAgICBbcmFuZ2VWYWx1ZV09XCJ2YWx1ZSgpXCJcclxuICAgICAgICAgIFtyYW5nZVR5cGVdPVwiYWN0aXZlVHlwZSgpXCJcclxuICAgICAgICAgIFtuZXh0WWVhckJ0bl09XCJmYWxzZVwiXHJcbiAgICAgICAgICBbbmV4dE1vbnRoQnRuXT1cImZhbHNlXCJcclxuICAgICAgICAgIFtkaXNhYmxlZERhdGVdPVwiZGlzYWJsZWREYXRlKClcIlxyXG4gICAgICAgICAgKG1vZGVsQ2hhbmdlKT1cImRhdGVDaGFuZ2UoJGV2ZW50ISlcIlxyXG4gICAgICAgICAgKHllYXJDaGFuZ2UpPVwieWVhckNoYW5nZSgkZXZlbnQsICdzdGFydCcpXCJcclxuICAgICAgICAgIChtb250aENoYW5nZSk9XCJtb250aENoYW5nZSgkZXZlbnQsICdzdGFydCcpXCJcclxuICAgICAgICAgIChyYW5nZVRkTW91c2VlbnRlcik9XCJzZXREYXRlc1N0YXRlKCRldmVudClcIlxyXG4gICAgICAgICAgcmFuZ2VQaWNrZXJcclxuICAgICAgICA+PC94LXBpY2tlci1kYXRlPlxyXG4gICAgICAgIDx4LXBpY2tlci1kYXRlXHJcbiAgICAgICAgICAjZW5kUGlja2VyXHJcbiAgICAgICAgICBjbGFzcz1cIngtZGF0ZS1yYW5nZS1wb3J0YWwtZW5kXCJcclxuICAgICAgICAgIFsoZGlzcGxheSldPVwiZW5kRGlzcGxheVwiXHJcbiAgICAgICAgICBbKG1vZGVsKV09XCJlbmRNb2RlbFwiXHJcbiAgICAgICAgICBbcmFuZ2VWYWx1ZV09XCJ2YWx1ZSgpXCJcclxuICAgICAgICAgIFtyYW5nZVR5cGVdPVwiYWN0aXZlVHlwZSgpXCJcclxuICAgICAgICAgIFtsYXN0WWVhckJ0bl09XCJmYWxzZVwiXHJcbiAgICAgICAgICBbbGFzdE1vbnRoQnRuXT1cImZhbHNlXCJcclxuICAgICAgICAgIFtkaXNhYmxlZERhdGVdPVwiZGlzYWJsZWREYXRlKClcIlxyXG4gICAgICAgICAgKG1vZGVsQ2hhbmdlKT1cImRhdGVDaGFuZ2UoJGV2ZW50ISlcIlxyXG4gICAgICAgICAgKHllYXJDaGFuZ2UpPVwieWVhckNoYW5nZSgkZXZlbnQsICdlbmQnKVwiXHJcbiAgICAgICAgICAobW9udGhDaGFuZ2UpPVwibW9udGhDaGFuZ2UoJGV2ZW50LCAnZW5kJylcIlxyXG4gICAgICAgICAgKHJhbmdlVGRNb3VzZWVudGVyKT1cInNldERhdGVzU3RhdGUoJGV2ZW50KVwiXHJcbiAgICAgICAgICByYW5nZVBpY2tlclxyXG4gICAgICAgID48L3gtcGlja2VyLWRhdGU+XHJcbiAgICAgIH1cclxuICAgICAgQGNhc2UgKCd3ZWVrJykge1xyXG4gICAgICAgIDx4LXBpY2tlci1kYXRlXHJcbiAgICAgICAgICAjc3RhcnRQaWNrZXJcclxuICAgICAgICAgIGNsYXNzPVwieC1kYXRlLXJhbmdlLXBvcnRhbC1zdGFydFwiXHJcbiAgICAgICAgICB0eXBlPVwid2Vla1wiXHJcbiAgICAgICAgICBbKGRpc3BsYXkpXT1cInN0YXJ0RGlzcGxheVwiXHJcbiAgICAgICAgICBbKG1vZGVsKV09XCJzdGFydE1vZGVsXCJcclxuICAgICAgICAgIFtyYW5nZVZhbHVlXT1cInZhbHVlKClcIlxyXG4gICAgICAgICAgW3JhbmdlVHlwZV09XCJhY3RpdmVUeXBlKClcIlxyXG4gICAgICAgICAgW25leHRZZWFyQnRuXT1cImZhbHNlXCJcclxuICAgICAgICAgIFtuZXh0TW9udGhCdG5dPVwiZmFsc2VcIlxyXG4gICAgICAgICAgW2Rpc2FibGVkRGF0ZV09XCJkaXNhYmxlZERhdGUoKVwiXHJcbiAgICAgICAgICAobW9kZWxDaGFuZ2UpPVwiZGF0ZUNoYW5nZSgkZXZlbnQhKVwiXHJcbiAgICAgICAgICAoeWVhckNoYW5nZSk9XCJ5ZWFyQ2hhbmdlKCRldmVudCwgJ3N0YXJ0JylcIlxyXG4gICAgICAgICAgKG1vbnRoQ2hhbmdlKT1cIm1vbnRoQ2hhbmdlKCRldmVudCwgJ3N0YXJ0JylcIlxyXG4gICAgICAgICAgKHJhbmdlVGRNb3VzZWVudGVyKT1cInNldERhdGVzU3RhdGUoJGV2ZW50KVwiXHJcbiAgICAgICAgICByYW5nZVBpY2tlclxyXG4gICAgICAgID48L3gtcGlja2VyLWRhdGU+XHJcbiAgICAgICAgPHgtcGlja2VyLWRhdGVcclxuICAgICAgICAgICNlbmRQaWNrZXJcclxuICAgICAgICAgIGNsYXNzPVwieC1kYXRlLXJhbmdlLXBvcnRhbC1lbmRcIlxyXG4gICAgICAgICAgdHlwZT1cIndlZWtcIlxyXG4gICAgICAgICAgWyhkaXNwbGF5KV09XCJlbmREaXNwbGF5XCJcclxuICAgICAgICAgIFsobW9kZWwpXT1cImVuZE1vZGVsXCJcclxuICAgICAgICAgIFtyYW5nZVZhbHVlXT1cInZhbHVlKClcIlxyXG4gICAgICAgICAgW3JhbmdlVHlwZV09XCJhY3RpdmVUeXBlKClcIlxyXG4gICAgICAgICAgW2xhc3RZZWFyQnRuXT1cImZhbHNlXCJcclxuICAgICAgICAgIFtsYXN0TW9udGhCdG5dPVwiZmFsc2VcIlxyXG4gICAgICAgICAgW2Rpc2FibGVkRGF0ZV09XCJkaXNhYmxlZERhdGUoKVwiXHJcbiAgICAgICAgICAobW9kZWxDaGFuZ2UpPVwiZGF0ZUNoYW5nZSgkZXZlbnQhKVwiXHJcbiAgICAgICAgICAoeWVhckNoYW5nZSk9XCJ5ZWFyQ2hhbmdlKCRldmVudCwgJ2VuZCcpXCJcclxuICAgICAgICAgIChtb250aENoYW5nZSk9XCJtb250aENoYW5nZSgkZXZlbnQsICdlbmQnKVwiXHJcbiAgICAgICAgICAocmFuZ2VUZE1vdXNlZW50ZXIpPVwic2V0RGF0ZXNTdGF0ZSgkZXZlbnQpXCJcclxuICAgICAgICAgIHJhbmdlUGlja2VyXHJcbiAgICAgICAgPjwveC1waWNrZXItZGF0ZT5cclxuICAgICAgfVxyXG4gICAgICBAY2FzZSAoJ21vbnRoJykge1xyXG4gICAgICAgIDx4LXBpY2tlci1tb250aFxyXG4gICAgICAgICAgI3N0YXJ0UGlja2VyXHJcbiAgICAgICAgICBjbGFzcz1cIngtZGF0ZS1yYW5nZS1wb3J0YWwtc3RhcnRcIlxyXG4gICAgICAgICAgWyhkaXNwbGF5KV09XCJzdGFydERpc3BsYXlcIlxyXG4gICAgICAgICAgWyhtb2RlbCldPVwic3RhcnRNb2RlbFwiXHJcbiAgICAgICAgICBbcmFuZ2VWYWx1ZV09XCJ2YWx1ZSgpXCJcclxuICAgICAgICAgIFtyYW5nZVR5cGVdPVwiYWN0aXZlVHlwZSgpXCJcclxuICAgICAgICAgIFtuZXh0WWVhckJ0bl09XCJmYWxzZVwiXHJcbiAgICAgICAgICBbZGlzYWJsZWREYXRlXT1cImRpc2FibGVkRGF0ZSgpXCJcclxuICAgICAgICAgIChtb2RlbENoYW5nZSk9XCJkYXRlQ2hhbmdlKCRldmVudCEpXCJcclxuICAgICAgICAgICh5ZWFyQ2hhbmdlKT1cInllYXJDaGFuZ2UoJGV2ZW50LCAnc3RhcnQnKVwiXHJcbiAgICAgICAgICAobW9udGhDaGFuZ2UpPVwibW9udGhDaGFuZ2UoJGV2ZW50LCAnc3RhcnQnKVwiXHJcbiAgICAgICAgICAocmFuZ2VUZE1vdXNlZW50ZXIpPVwic2V0RGF0ZXNTdGF0ZSgkZXZlbnQpXCJcclxuICAgICAgICAgIHJhbmdlUGlja2VyXHJcbiAgICAgICAgPjwveC1waWNrZXItbW9udGg+XHJcbiAgICAgICAgPHgtcGlja2VyLW1vbnRoXHJcbiAgICAgICAgICAjZW5kUGlja2VyXHJcbiAgICAgICAgICBjbGFzcz1cIngtZGF0ZS1yYW5nZS1wb3J0YWwtZW5kXCJcclxuICAgICAgICAgIFsoZGlzcGxheSldPVwiZW5kRGlzcGxheVwiXHJcbiAgICAgICAgICBbKG1vZGVsKV09XCJlbmRNb2RlbFwiXHJcbiAgICAgICAgICBbcmFuZ2VWYWx1ZV09XCJ2YWx1ZSgpXCJcclxuICAgICAgICAgIFtyYW5nZVR5cGVdPVwiYWN0aXZlVHlwZSgpXCJcclxuICAgICAgICAgIFtsYXN0WWVhckJ0bl09XCJmYWxzZVwiXHJcbiAgICAgICAgICBbZGlzYWJsZWREYXRlXT1cImRpc2FibGVkRGF0ZSgpXCJcclxuICAgICAgICAgIChtb2RlbENoYW5nZSk9XCJkYXRlQ2hhbmdlKCRldmVudCEpXCJcclxuICAgICAgICAgICh5ZWFyQ2hhbmdlKT1cInllYXJDaGFuZ2UoJGV2ZW50LCAnZW5kJylcIlxyXG4gICAgICAgICAgKG1vbnRoQ2hhbmdlKT1cIm1vbnRoQ2hhbmdlKCRldmVudCwgJ2VuZCcpXCJcclxuICAgICAgICAgIChyYW5nZVRkTW91c2VlbnRlcik9XCJzZXREYXRlc1N0YXRlKCRldmVudClcIlxyXG4gICAgICAgICAgcmFuZ2VQaWNrZXJcclxuICAgICAgICA+PC94LXBpY2tlci1tb250aD5cclxuICAgICAgfVxyXG4gICAgICBAY2FzZSAoJ3F1YXJ0ZXInKSB7XHJcbiAgICAgICAgPHgtcGlja2VyLXF1YXJ0ZXJcclxuICAgICAgICAgICNzdGFydFBpY2tlclxyXG4gICAgICAgICAgY2xhc3M9XCJ4LWRhdGUtcmFuZ2UtcG9ydGFsLXN0YXJ0XCJcclxuICAgICAgICAgIFsoZGlzcGxheSldPVwic3RhcnREaXNwbGF5XCJcclxuICAgICAgICAgIFsobW9kZWwpXT1cInN0YXJ0TW9kZWxcIlxyXG4gICAgICAgICAgW3JhbmdlVmFsdWVdPVwidmFsdWUoKVwiXHJcbiAgICAgICAgICBbcmFuZ2VUeXBlXT1cImFjdGl2ZVR5cGUoKVwiXHJcbiAgICAgICAgICBbbmV4dFllYXJCdG5dPVwiZmFsc2VcIlxyXG4gICAgICAgICAgW2Rpc2FibGVkRGF0ZV09XCJkaXNhYmxlZERhdGUoKVwiXHJcbiAgICAgICAgICAobW9kZWxDaGFuZ2UpPVwiZGF0ZUNoYW5nZSgkZXZlbnQhKVwiXHJcbiAgICAgICAgICAoeWVhckNoYW5nZSk9XCJ5ZWFyQ2hhbmdlKCRldmVudCwgJ3N0YXJ0JylcIlxyXG4gICAgICAgICAgKG1vbnRoQ2hhbmdlKT1cIm1vbnRoQ2hhbmdlKCRldmVudCwgJ3N0YXJ0JylcIlxyXG4gICAgICAgICAgKHJhbmdlVGRNb3VzZWVudGVyKT1cInNldERhdGVzU3RhdGUoJGV2ZW50KVwiXHJcbiAgICAgICAgICByYW5nZVBpY2tlclxyXG4gICAgICAgID48L3gtcGlja2VyLXF1YXJ0ZXI+XHJcbiAgICAgICAgPHgtcGlja2VyLXF1YXJ0ZXJcclxuICAgICAgICAgICNlbmRQaWNrZXJcclxuICAgICAgICAgIGNsYXNzPVwieC1kYXRlLXJhbmdlLXBvcnRhbC1lbmRcIlxyXG4gICAgICAgICAgWyhkaXNwbGF5KV09XCJlbmREaXNwbGF5XCJcclxuICAgICAgICAgIFsobW9kZWwpXT1cImVuZE1vZGVsXCJcclxuICAgICAgICAgIFtyYW5nZVZhbHVlXT1cInZhbHVlKClcIlxyXG4gICAgICAgICAgW3JhbmdlVHlwZV09XCJhY3RpdmVUeXBlKClcIlxyXG4gICAgICAgICAgW2xhc3RZZWFyQnRuXT1cImZhbHNlXCJcclxuICAgICAgICAgIFtkaXNhYmxlZERhdGVdPVwiZGlzYWJsZWREYXRlKClcIlxyXG4gICAgICAgICAgKG1vZGVsQ2hhbmdlKT1cImRhdGVDaGFuZ2UoJGV2ZW50ISlcIlxyXG4gICAgICAgICAgKHllYXJDaGFuZ2UpPVwieWVhckNoYW5nZSgkZXZlbnQsICdlbmQnKVwiXHJcbiAgICAgICAgICAobW9udGhDaGFuZ2UpPVwibW9udGhDaGFuZ2UoJGV2ZW50LCAnZW5kJylcIlxyXG4gICAgICAgICAgKHJhbmdlVGRNb3VzZWVudGVyKT1cInNldERhdGVzU3RhdGUoJGV2ZW50KVwiXHJcbiAgICAgICAgICByYW5nZVBpY2tlclxyXG4gICAgICAgID48L3gtcGlja2VyLXF1YXJ0ZXI+XHJcbiAgICAgIH1cclxuICAgICAgQGNhc2UgKCd5ZWFyJykge1xyXG4gICAgICAgIDx4LXBpY2tlci15ZWFyXHJcbiAgICAgICAgICAjc3RhcnRQaWNrZXJcclxuICAgICAgICAgIGNsYXNzPVwieC1kYXRlLXJhbmdlLXBvcnRhbC1zdGFydFwiXHJcbiAgICAgICAgICBbKGRpc3BsYXkpXT1cInN0YXJ0RGlzcGxheVwiXHJcbiAgICAgICAgICBbKG1vZGVsKV09XCJzdGFydE1vZGVsXCJcclxuICAgICAgICAgIFtyYW5nZVZhbHVlXT1cInZhbHVlKClcIlxyXG4gICAgICAgICAgW3JhbmdlVHlwZV09XCJhY3RpdmVUeXBlKClcIlxyXG4gICAgICAgICAgW25leHRZZWFyQnRuXT1cImZhbHNlXCJcclxuICAgICAgICAgIFtkaXNhYmxlZERhdGVdPVwiZGlzYWJsZWREYXRlKClcIlxyXG4gICAgICAgICAgKG1vZGVsQ2hhbmdlKT1cImRhdGVDaGFuZ2UoJGV2ZW50ISlcIlxyXG4gICAgICAgICAgKHllYXJDaGFuZ2UpPVwieWVhckNoYW5nZSgkZXZlbnQsICdzdGFydCcpXCJcclxuICAgICAgICAgIChtb250aENoYW5nZSk9XCJtb250aENoYW5nZSgkZXZlbnQsICdzdGFydCcpXCJcclxuICAgICAgICAgIChyYW5nZVRkTW91c2VlbnRlcik9XCJzZXREYXRlc1N0YXRlKCRldmVudClcIlxyXG4gICAgICAgICAgcmFuZ2VQaWNrZXJcclxuICAgICAgICA+PC94LXBpY2tlci15ZWFyPlxyXG4gICAgICAgIDx4LXBpY2tlci15ZWFyXHJcbiAgICAgICAgICAjZW5kUGlja2VyXHJcbiAgICAgICAgICBjbGFzcz1cIngtZGF0ZS1yYW5nZS1wb3J0YWwtZW5kXCJcclxuICAgICAgICAgIFsoZGlzcGxheSldPVwiZW5kRGlzcGxheVwiXHJcbiAgICAgICAgICBbKG1vZGVsKV09XCJlbmRNb2RlbFwiXHJcbiAgICAgICAgICBbcmFuZ2VWYWx1ZV09XCJ2YWx1ZSgpXCJcclxuICAgICAgICAgIFtyYW5nZVR5cGVdPVwiYWN0aXZlVHlwZSgpXCJcclxuICAgICAgICAgIFtsYXN0WWVhckJ0bl09XCJmYWxzZVwiXHJcbiAgICAgICAgICBbZGlzYWJsZWREYXRlXT1cImRpc2FibGVkRGF0ZSgpXCJcclxuICAgICAgICAgIChtb2RlbENoYW5nZSk9XCJkYXRlQ2hhbmdlKCRldmVudCEpXCJcclxuICAgICAgICAgICh5ZWFyQ2hhbmdlKT1cInllYXJDaGFuZ2UoJGV2ZW50LCAnZW5kJylcIlxyXG4gICAgICAgICAgKG1vbnRoQ2hhbmdlKT1cIm1vbnRoQ2hhbmdlKCRldmVudCwgJ2VuZCcpXCJcclxuICAgICAgICAgIChyYW5nZVRkTW91c2VlbnRlcik9XCJzZXREYXRlc1N0YXRlKCRldmVudClcIlxyXG4gICAgICAgICAgcmFuZ2VQaWNrZXJcclxuICAgICAgICA+PC94LXBpY2tlci15ZWFyPlxyXG4gICAgICB9XHJcbiAgICAgIEBjYXNlICgnZGF0ZS10aW1lJykge1xyXG4gICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiZGF0ZVRpbWVIb3VyTWludXRlVHBsOyBjb250ZXh0OiB7IHRpbWVGb3JtYXQ6ICdISDptbTpzcycsIHRpbWVUeXBlOiAndGltZScgfVwiXHJcbiAgICAgICAgPjwvbmctY29udGFpbmVyPlxyXG4gICAgICB9XHJcbiAgICAgIEBjYXNlICgnZGF0ZS1ob3VyJykge1xyXG4gICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiZGF0ZVRpbWVIb3VyTWludXRlVHBsOyBjb250ZXh0OiB7IHRpbWVGb3JtYXQ6ICdISCcsIHRpbWVUeXBlOiAnaG91cicgfVwiXHJcbiAgICAgICAgPjwvbmctY29udGFpbmVyPlxyXG4gICAgICB9XHJcbiAgICAgIEBjYXNlICgnZGF0ZS1taW51dGUnKSB7XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJkYXRlVGltZUhvdXJNaW51dGVUcGw7IGNvbnRleHQ6IHsgdGltZUZvcm1hdDogJ0hIOm1tJywgdGltZVR5cGU6ICdtaW51dGUnIH1cIlxyXG4gICAgICAgID48L25nLWNvbnRhaW5lcj5cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIDwvZGl2PlxyXG4gIEBpZiAoaXNEYXRlUGlja2VyKCkpIHtcclxuICAgIEBpZiAoZXh0cmFGb290ZXIoKSkge1xyXG4gICAgICA8ZGl2IGNsYXNzPVwieC1kYXRlLXJhbmdlLXBvcnRhbC1leHRyYS1mb290ZXJcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICp4T3V0bGV0PVwiZXh0cmFGb290ZXIoKVwiPnt7IGV4dHJhRm9vdGVyKCkgfX08L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9kaXY+XHJcbiAgICB9XHJcbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwicHJlc2V0VHBsXCI+PC9uZy1jb250YWluZXI+XHJcbiAgfVxyXG48L2Rpdj5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjZGF0ZVRpbWVIb3VyTWludXRlVHBsIGxldC10aW1lRm9ybWF0PVwidGltZUZvcm1hdFwiIGxldC10aW1lVHlwZT1cInRpbWVUeXBlXCI+XHJcbiAgPGRpdiBjbGFzcz1cIngtZGF0ZS1yYW5nZS1wb3J0YWwtY29udGVudFwiPlxyXG4gICAgPGRpdiBjbGFzcz1cIngtZGF0ZS1yYW5nZS1wb3J0YWwtZGF0ZVwiPlxyXG4gICAgICA8eC1waWNrZXItZGF0ZVxyXG4gICAgICAgIFtjbGFzcy54LWRhdGUtcmFuZ2UtcG9ydGFsLXN0YXJ0XT1cImFjdGl2ZVR5cGUoKSA9PT0gJ3N0YXJ0J1wiXHJcbiAgICAgICAgW2NsYXNzLngtZGF0ZS1yYW5nZS1wb3J0YWwtZW5kXT1cImFjdGl2ZVR5cGUoKSA9PT0gJ2VuZCdcIlxyXG4gICAgICAgIFsoZGlzcGxheSldPVwidGltZURpc3BsYXlcIlxyXG4gICAgICAgIFsobW9kZWwpXT1cInRpbWVNb2RlbFwiXHJcbiAgICAgICAgW3JhbmdlSG92ZXJdPVwidGltZUhvdmVyKClcIlxyXG4gICAgICAgIFtyYW5nZVZhbHVlXT1cInZhbHVlKClcIlxyXG4gICAgICAgIFtyYW5nZVR5cGVdPVwiYWN0aXZlVHlwZSgpXCJcclxuICAgICAgICBbZGlzYWJsZWREYXRlXT1cImRpc2FibGVkRGF0ZSgpXCJcclxuICAgICAgICAobW9kZWxDaGFuZ2UpPVwiZGF0ZUNoYW5nZSgkZXZlbnQhKVwiXHJcbiAgICAgICAgcmFuZ2VQaWNrZXJcclxuICAgICAgPjwveC1waWNrZXItZGF0ZT5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cIngtZGF0ZS1yYW5nZS1wb3J0YWwtdGltZVwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwieC1kYXRlLXJhbmdlLXBvcnRhbC10aW1lLWxhYmVsXCI+XHJcbiAgICAgICAge3sgdGltZSgpIHwgZGF0ZTogdGltZUZvcm1hdCB9fVxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPHgtdGltZS1waWNrZXItZnJhbWVcclxuICAgICAgICAjdGltZVBpY2tlckZyYW1lXHJcbiAgICAgICAgW3R5cGVdPVwidGltZVR5cGVcIlxyXG4gICAgICAgIFt2YWx1ZV09XCJ0aW1lKClcIlxyXG4gICAgICAgIChub2RlRW1pdCk9XCJzZWxlY3RUaW1lKCRldmVudClcIlxyXG4gICAgICAgIFtkaXNhYmxlZFRpbWVQYXJhbV09XCJhY3RpdmVUeXBlKClcIlxyXG4gICAgICAgIFtkaXNhYmxlZFRpbWVdPVwiZGlzYWJsZWRUaW1lKClcIlxyXG4gICAgICAgIFtkZWZhdWx0Tm93XT1cImZhbHNlXCJcclxuICAgICAgPjwveC10aW1lLXBpY2tlci1mcmFtZT5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG4gIEBpZiAoIWlzRGF0ZVBpY2tlcigpICYmIGV4dHJhRm9vdGVyKCkpIHtcclxuICAgIDxuZy1jb250YWluZXIgKnhPdXRsZXQ9XCJleHRyYUZvb3RlcigpXCI+e3sgZXh0cmFGb290ZXIoKSB9fTwvbmctY29udGFpbmVyPlxyXG4gIH1cclxuICA8ZGl2IGNsYXNzPVwieC1kYXRlLXJhbmdlLXBvcnRhbC1mb290ZXJcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJ4LWRhdGUtcmFuZ2UtcG9ydGFsLWZvb3Rlci1sZWZ0XCI+XHJcbiAgICAgIEBpZiAoIWlzRGF0ZVBpY2tlcigpKSB7XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInByZXNldFRwbFwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICB9XHJcbiAgICA8L2Rpdj5cclxuICAgIDx4LWJ1dHRvbiB0eXBlPVwicHJpbWFyeVwiIHRleHQgKGNsaWNrKT1cIiFzdXJlRGlzYWJsZWQoKSAmJiBzdXJlVGltZSgpXCIgc2l6ZT1cInNtYWxsXCIgW2Rpc2FibGVkXT1cInN1cmVEaXNhYmxlZCgpIVwiPnt7XHJcbiAgICAgIGxvY2FsZSgpLnN1cmVcclxuICAgIH19PC94LWJ1dHRvbj5cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjcHJlc2V0VHBsPlxyXG4gIEBpZiAocHJlc2V0KCkpIHtcclxuICAgIDxkaXYgY2xhc3M9XCJ4LWRhdGUtcmFuZ2UtcG9ydGFsLXByZXNldFwiPlxyXG4gICAgICBAZm9yIChpdGVtIG9mIHByZXNldCgpOyB0cmFjayBpdGVtKSB7XHJcbiAgICAgICAgQHN3aXRjaCAoaXRlbS5pZCkge1xyXG4gICAgICAgICAgQGNhc2UgKCd0aGlzV2VlaycpIHtcclxuICAgICAgICAgICAgPHgtbGluayAoY2xpY2spPVwib25QcmVzZXQoJ3dlZWsnLCAwKVwiPnt7IGxvY2FsZSgpLnRoaXNXZWVrIH19PC94LWxpbms+XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBAY2FzZSAoJ2xhc3RXZWVrJykge1xyXG4gICAgICAgICAgICA8eC1saW5rIChjbGljayk9XCJvblByZXNldCgnd2VlaycsIC0xKVwiPnt7IGxvY2FsZSgpLmxhc3RXZWVrIH19PC94LWxpbms+XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBAY2FzZSAoJ25leHRXZWVrJykge1xyXG4gICAgICAgICAgICA8eC1saW5rIChjbGljayk9XCJvblByZXNldCgnd2VlaycsIDEpXCI+e3sgbG9jYWxlKCkubmV4dFdlZWsgfX08L3gtbGluaz5cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIEBjYXNlICgndGhpc01vbnRoJykge1xyXG4gICAgICAgICAgICA8eC1saW5rIChjbGljayk9XCJvblByZXNldCgnbW9udGgnLCAwKVwiPnt7IGxvY2FsZSgpLnRoaXNNb250aCB9fTwveC1saW5rPlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgQGNhc2UgKCdsYXN0TW9udGgnKSB7XHJcbiAgICAgICAgICAgIDx4LWxpbmsgKGNsaWNrKT1cIm9uUHJlc2V0KCdtb250aCcsIC0xKVwiPnt7IGxvY2FsZSgpLmxhc3RNb250aCB9fTwveC1saW5rPlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgQGNhc2UgKCduZXh0TW9udGgnKSB7XHJcbiAgICAgICAgICAgIDx4LWxpbmsgKGNsaWNrKT1cIm9uUHJlc2V0KCdtb250aCcsIDEpXCI+e3sgbG9jYWxlKCkubmV4dE1vbnRoIH19PC94LWxpbms+XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBAY2FzZSAoJ3RoaXNZZWFyJykge1xyXG4gICAgICAgICAgICA8eC1saW5rIChjbGljayk9XCJvblByZXNldCgneWVhcicsIDApXCI+e3sgbG9jYWxlKCkudGhpc1llYXIgfX08L3gtbGluaz5cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIEBjYXNlICgnbGFzdFllYXInKSB7XHJcbiAgICAgICAgICAgIDx4LWxpbmsgKGNsaWNrKT1cIm9uUHJlc2V0KCd5ZWFyJywgLTEpXCI+e3sgbG9jYWxlKCkubGFzdFllYXIgfX08L3gtbGluaz5cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIEBjYXNlICgnbmV4dFllYXInKSB7XHJcbiAgICAgICAgICAgIDx4LWxpbmsgKGNsaWNrKT1cIm9uUHJlc2V0KCd5ZWFyJywgMSlcIj57eyBsb2NhbGUoKS5uZXh0WWVhciB9fTwveC1saW5rPlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBAaWYgKCEhaXRlbS5mdW5jKSB7XHJcbiAgICAgICAgICA8eC1saW5rIChjbGljayk9XCJvblByZXNldEZ1bmMoaXRlbSlcIj57eyBpdGVtLmxhYmVsIH19PC94LWxpbms+XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICA8L2Rpdj5cclxuICB9XHJcbjwvbmctdGVtcGxhdGU+XHJcbiJdfQ==
|