ngx-tethys 18.1.0-next.0 → 18.1.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/CHANGELOG.md +13 -0
- package/action/action.component.d.ts +1 -2
- package/affix/affix.component.d.ts +2 -4
- package/anchor/anchor-link.component.d.ts +2 -4
- package/anchor/anchor.component.d.ts +1 -4
- package/arrow-switcher/arrow-switcher.component.d.ts +1 -2
- package/autocomplete/autocomplete.component.d.ts +1 -2
- package/autocomplete/autocomplete.trigger.directive.d.ts +3 -5
- package/autocomplete/overlay/autocomplete-container.component.d.ts +4 -4
- package/autocomplete/overlay/autocomplete.service.d.ts +3 -5
- package/avatar/avatar.component.d.ts +1 -3
- package/avatar/avatar.pipe.d.ts +0 -2
- package/back-top/back-top.component.d.ts +2 -4
- package/badge/badge.component.d.ts +5 -14
- package/breadcrumb/breadcrumb-item.component.d.ts +1 -2
- package/breadcrumb/breadcrumb.component.d.ts +1 -2
- package/button/button.component.d.ts +1 -2
- package/calendar/calendar-header.component.d.ts +1 -2
- package/calendar/calendar.component.d.ts +1 -2
- package/carousel/carousel-item.directive.d.ts +1 -2
- package/carousel/carousel.component.d.ts +1 -4
- package/carousel/carousel.service.d.ts +1 -2
- package/cascader/cascader.component.d.ts +4 -4
- package/checkbox/checkbox.component.d.ts +0 -2
- package/collapse/collapse-item.component.d.ts +2 -4
- package/color-picker/color-picker-panel.component.d.ts +2 -3
- package/color-picker/color-picker.component.d.ts +2 -4
- package/color-picker/coordinates.directive.d.ts +1 -2
- package/color-picker/parts/alpha/alpha.component.d.ts +1 -2
- package/color-picker/parts/hue/hue.component.d.ts +1 -2
- package/color-picker/parts/saturation/saturation.component.d.ts +1 -2
- package/copy/copy.directive.d.ts +0 -2
- package/core/click-positioner.d.ts +0 -2
- package/core/scroll.d.ts +1 -2
- package/core/update-host-class.service.d.ts +1 -2
- package/date-picker/abstract-picker.component.d.ts +1 -1
- package/date-picker/abstract-picker.directive.d.ts +2 -3
- package/date-picker/base-picker.component.d.ts +2 -3
- package/date-picker/date-picker.component.d.ts +2 -2
- package/date-picker/date-picker.directive.d.ts +1 -3
- package/date-picker/date-picker.service.d.ts +2 -2
- package/date-picker/lib/calendar/calendar-footer.component.d.ts +1 -2
- package/date-picker/lib/calendar/calendar-header.component.d.ts +0 -1
- package/date-picker/lib/date/date-header.component.d.ts +0 -3
- package/date-picker/lib/date/date-table.component.d.ts +1 -3
- package/date-picker/lib/date-carousel/date-carousel.component.d.ts +1 -2
- package/date-picker/lib/decade/decade-header.component.d.ts +1 -1
- package/date-picker/lib/month/month-header.component.d.ts +0 -3
- package/date-picker/lib/month/month-table.component.d.ts +1 -2
- package/date-picker/lib/popups/date-popup.component.d.ts +1 -3
- package/date-picker/lib/popups/inner-popup.component.d.ts +1 -4
- package/date-picker/lib/quarter/quarter-table.component.d.ts +1 -2
- package/date-picker/lib/year/year-header.component.d.ts +0 -1
- package/date-picker/month-picker.component.d.ts +2 -2
- package/date-picker/picker.component.d.ts +1 -3
- package/date-picker/picker.pipes.d.ts +0 -3
- package/date-picker/quarter-picker.component.d.ts +2 -2
- package/date-picker/range-picker.component.d.ts +2 -2
- package/date-picker/range-picker.directive.d.ts +2 -3
- package/date-picker/week-picker.component.d.ts +2 -2
- package/date-picker/year-picker.component.d.ts +2 -2
- package/date-range/date-range.component.d.ts +1 -3
- package/date-range/optional-dates/optional-dates.component.d.ts +0 -2
- package/dialog/body/dialog-body.component.d.ts +0 -2
- package/dialog/confirm/confirm.component.d.ts +2 -3
- package/dialog/dialog-container.component.d.ts +4 -5
- package/dialog/dialog.service.d.ts +4 -4
- package/dialog/footer/dialog-footer.component.d.ts +2 -2
- package/dialog/header/dialog-header.component.d.ts +2 -6
- package/dot/dot.component.d.ts +1 -2
- package/drag-drop/drag-content.directive.d.ts +2 -3
- package/drag-drop/drag-handle.directive.d.ts +2 -3
- package/drag-drop/drag.directive.d.ts +4 -5
- package/drag-drop/drop-container.directive.d.ts +6 -3
- package/dropdown/dropdown-active.directive.d.ts +3 -4
- package/dropdown/dropdown-menu-item.directive.d.ts +1 -2
- package/dropdown/dropdown-submenu.component.d.ts +1 -3
- package/dropdown/dropdown.directive.d.ts +3 -5
- package/empty/empty.component.d.ts +6 -6
- package/esm2022/action/action.component.mjs +18 -18
- package/esm2022/affix/affix.component.mjs +11 -14
- package/esm2022/anchor/anchor-link.component.mjs +9 -10
- package/esm2022/anchor/anchor.component.mjs +11 -16
- package/esm2022/arrow-switcher/arrow-switcher.component.mjs +22 -22
- package/esm2022/autocomplete/autocomplete.component.mjs +7 -7
- package/esm2022/autocomplete/autocomplete.trigger.directive.mjs +30 -37
- package/esm2022/autocomplete/overlay/autocomplete-container.component.mjs +11 -15
- package/esm2022/autocomplete/overlay/autocomplete.service.mjs +14 -21
- package/esm2022/avatar/avatar.component.mjs +24 -25
- package/esm2022/avatar/avatar.pipe.mjs +6 -7
- package/esm2022/back-top/back-top.component.mjs +11 -15
- package/esm2022/badge/badge.component.mjs +6 -6
- package/esm2022/breadcrumb/breadcrumb-item.component.mjs +7 -7
- package/esm2022/breadcrumb/breadcrumb.component.mjs +12 -12
- package/esm2022/button/button.component.mjs +12 -12
- package/esm2022/calendar/calendar-header.component.mjs +12 -12
- package/esm2022/calendar/calendar.component.mjs +12 -12
- package/esm2022/carousel/carousel-item.directive.mjs +7 -6
- package/esm2022/carousel/carousel.component.mjs +10 -12
- package/esm2022/carousel/carousel.service.mjs +7 -9
- package/esm2022/cascader/cascader.component.mjs +11 -16
- package/esm2022/checkbox/checkbox.component.mjs +7 -9
- package/esm2022/collapse/collapse-item.component.mjs +18 -21
- package/esm2022/color-picker/color-picker-panel.component.mjs +11 -12
- package/esm2022/color-picker/color-picker.component.mjs +10 -11
- package/esm2022/color-picker/coordinates.directive.mjs +10 -10
- package/esm2022/color-picker/parts/alpha/alpha.component.mjs +6 -6
- package/esm2022/color-picker/parts/hue/hue.component.mjs +6 -6
- package/esm2022/color-picker/parts/saturation/saturation.component.mjs +9 -9
- package/esm2022/copy/copy.directive.mjs +8 -12
- package/esm2022/core/click-positioner.mjs +6 -7
- package/esm2022/core/scroll.mjs +7 -9
- package/esm2022/core/store/store.mjs +1 -1
- package/esm2022/core/update-host-class.service.mjs +6 -6
- package/esm2022/date-picker/abstract-picker.component.mjs +5 -5
- package/esm2022/date-picker/abstract-picker.directive.mjs +42 -44
- package/esm2022/date-picker/base-picker.component.mjs +26 -26
- package/esm2022/date-picker/date-picker.component.mjs +6 -6
- package/esm2022/date-picker/date-picker.directive.mjs +6 -8
- package/esm2022/date-picker/date-picker.service.mjs +6 -10
- package/esm2022/date-picker/lib/calendar/calendar-footer.component.mjs +5 -5
- package/esm2022/date-picker/lib/calendar/calendar-header.component.mjs +6 -7
- package/esm2022/date-picker/lib/date/date-header.component.mjs +3 -9
- package/esm2022/date-picker/lib/date/date-table.component.mjs +7 -9
- package/esm2022/date-picker/lib/date-carousel/date-carousel.component.mjs +12 -12
- package/esm2022/date-picker/lib/decade/decade-header.component.mjs +5 -8
- package/esm2022/date-picker/lib/month/month-header.component.mjs +3 -9
- package/esm2022/date-picker/lib/month/month-table.component.mjs +6 -7
- package/esm2022/date-picker/lib/popups/date-popup.component.mjs +12 -13
- package/esm2022/date-picker/lib/popups/inner-popup.component.mjs +12 -13
- package/esm2022/date-picker/lib/quarter/quarter-table.component.mjs +6 -7
- package/esm2022/date-picker/lib/year/year-header.component.mjs +3 -9
- package/esm2022/date-picker/month-picker.component.mjs +6 -7
- package/esm2022/date-picker/picker.component.mjs +21 -22
- package/esm2022/date-picker/picker.pipes.mjs +10 -11
- package/esm2022/date-picker/quarter-picker.component.mjs +6 -7
- package/esm2022/date-picker/range-picker.component.mjs +6 -7
- package/esm2022/date-picker/range-picker.directive.mjs +6 -8
- package/esm2022/date-picker/week-picker.component.mjs +6 -7
- package/esm2022/date-picker/year-picker.component.mjs +6 -7
- package/esm2022/date-range/date-range.component.mjs +14 -15
- package/esm2022/date-range/optional-dates/optional-dates.component.mjs +8 -9
- package/esm2022/dialog/body/dialog-body.component.mjs +11 -12
- package/esm2022/dialog/confirm/confirm.component.mjs +10 -14
- package/esm2022/dialog/dialog-container.component.mjs +13 -18
- package/esm2022/dialog/dialog.service.mjs +10 -17
- package/esm2022/dialog/footer/dialog-footer.component.mjs +7 -11
- package/esm2022/dialog/header/dialog-header.component.mjs +14 -19
- package/esm2022/dot/dot.component.mjs +7 -7
- package/esm2022/drag-drop/drag-content.directive.mjs +7 -9
- package/esm2022/drag-drop/drag-handle.directive.mjs +7 -9
- package/esm2022/drag-drop/drag.directive.mjs +13 -16
- package/esm2022/drag-drop/drop-container.directive.mjs +13 -13
- package/esm2022/dropdown/dropdown-active.directive.mjs +9 -12
- package/esm2022/dropdown/dropdown-menu-item.directive.mjs +12 -12
- package/esm2022/dropdown/dropdown-submenu.component.mjs +9 -10
- package/esm2022/dropdown/dropdown.directive.mjs +12 -10
- package/esm2022/empty/empty.component.mjs +14 -17
- package/esm2022/flexible-text/flexible-text.component.mjs +16 -17
- package/esm2022/form/form-group-error/form-group-error.component.mjs +9 -12
- package/esm2022/form/form-group-label.directive.mjs +9 -10
- package/esm2022/form/form-group.component.mjs +15 -19
- package/esm2022/form/form-submit.directive.mjs +6 -7
- package/esm2022/form/form-validator-loader.mjs +1 -1
- package/esm2022/form/form-validator.service.mjs +12 -13
- package/esm2022/form/form.directive.mjs +11 -16
- package/esm2022/form/from-group-footer/form-group-footer.component.mjs +10 -16
- package/esm2022/form/validator/unique-validator.directive.mjs +7 -10
- package/esm2022/fullscreen/fullscreen.component.mjs +10 -11
- package/esm2022/fullscreen/fullscreen.service.mjs +7 -10
- package/esm2022/grid/thy-col.directive.mjs +9 -14
- package/esm2022/grid/thy-grid-item.component.mjs +8 -14
- package/esm2022/grid/thy-grid.component.mjs +7 -8
- package/esm2022/guider/guider.directive.mjs +8 -9
- package/esm2022/guider/guider.service.mjs +12 -19
- package/esm2022/icon/icon-registry.mjs +11 -16
- package/esm2022/icon/icon.component.mjs +8 -9
- package/esm2022/image/image-group.component.mjs +7 -7
- package/esm2022/image/image.directive.mjs +11 -12
- package/esm2022/image/image.service.mjs +8 -14
- package/esm2022/image/preview/image-preview.component.mjs +34 -38
- package/esm2022/input/input-count.component.mjs +7 -10
- package/esm2022/input/input-group.component.mjs +12 -13
- package/esm2022/input/input-search.component.mjs +7 -7
- package/esm2022/input/input.component.mjs +14 -14
- package/esm2022/input/input.directive.mjs +12 -17
- package/esm2022/input-number/input-number.component.mjs +6 -6
- package/esm2022/layout/sidebar.component.mjs +45 -51
- package/esm2022/list/selection/selection-list.mjs +25 -25
- package/esm2022/loading/loading.component.mjs +8 -8
- package/esm2022/mention/mention.directive.mjs +9 -14
- package/esm2022/mention/suggestions/suggestions.component.mjs +8 -9
- package/esm2022/menu/group/menu-group.component.mjs +34 -35
- package/esm2022/menu/item/action/menu-item-action.component.mjs +15 -16
- package/esm2022/menu/item/menu-item.component.mjs +6 -6
- package/esm2022/message/abstract/abstract-message-container.component.mjs +5 -5
- package/esm2022/message/abstract/abstract-message.component.mjs +6 -6
- package/esm2022/message/message-container.component.mjs +9 -11
- package/esm2022/message/message-queue.service.mjs +6 -8
- package/esm2022/message/message.component.mjs +7 -7
- package/esm2022/message/message.service.mjs +10 -11
- package/esm2022/nav/icon-nav/icon-nav.component.mjs +6 -6
- package/esm2022/nav/nav-ink-bar.directive.mjs +9 -14
- package/esm2022/nav/nav-item.directive.mjs +8 -11
- package/esm2022/nav/nav.component.mjs +32 -33
- package/esm2022/nav/nav.pipe.mjs +6 -7
- package/esm2022/notify/notify-container.component.mjs +8 -11
- package/esm2022/notify/notify-queue.service.mjs +6 -8
- package/esm2022/notify/notify.component.mjs +7 -7
- package/esm2022/notify/notify.service.mjs +11 -12
- package/esm2022/pagination/pagination.component.mjs +38 -43
- package/esm2022/pagination/pagination.pipe.mjs +6 -7
- package/esm2022/popover/header/popover-header.component.mjs +12 -14
- package/esm2022/popover/popover-container.component.mjs +11 -13
- package/esm2022/popover/popover.directive.mjs +13 -12
- package/esm2022/popover/popover.service.mjs +14 -26
- package/esm2022/progress/progress-strip.component.mjs +10 -13
- package/esm2022/property/property-item.component.mjs +10 -13
- package/esm2022/property-operation/property-operation.component.mjs +24 -25
- package/esm2022/radio/button/radio-button.component.mjs +9 -15
- package/esm2022/radio/group/radio-group.component.mjs +17 -17
- package/esm2022/radio/radio.component.mjs +8 -14
- package/esm2022/rate/rate.component.mjs +6 -6
- package/esm2022/resizable/resizable.directive.mjs +10 -12
- package/esm2022/resizable/resizable.service.mjs +7 -9
- package/esm2022/resizable/resize-handle.component.mjs +7 -8
- package/esm2022/segment/segment-item.component.mjs +12 -15
- package/esm2022/segment/segment.component.mjs +26 -26
- package/esm2022/select/custom-select/custom-select.component.mjs +14 -28
- package/esm2022/select/native-select/native-select.component.mjs +6 -6
- package/esm2022/shared/base-form-check.component.mjs +7 -8
- package/esm2022/shared/directives/string-or-template-outlet.directive.mjs +7 -7
- package/esm2022/shared/directives/thy-autofocus.directive.mjs +10 -10
- package/esm2022/shared/directives/thy-contextmenu.directive.mjs +8 -8
- package/esm2022/shared/directives/thy-ctrl-enter.directive.mjs +8 -8
- package/esm2022/shared/directives/thy-enter.directive.mjs +8 -8
- package/esm2022/shared/directives/thy-scroll.directive.mjs +21 -21
- package/esm2022/shared/directives/thy-show.mjs +11 -11
- package/esm2022/shared/directives/thy-stop-propagation.directive.mjs +7 -5
- package/esm2022/shared/directives/view-outlet.directive.mjs +7 -7
- package/esm2022/shared/ng-transclude.directive.mjs +6 -5
- package/esm2022/shared/option/group/option-group.component.mjs +10 -10
- package/esm2022/shared/option/list-option/list-option.component.mjs +12 -19
- package/esm2022/shared/option/option.component.mjs +9 -19
- package/esm2022/shared/select/select-control/select-control.component.mjs +23 -23
- package/esm2022/skeleton/skeleton-circle.component.mjs +7 -15
- package/esm2022/skeleton/skeleton-rectangle.component.mjs +7 -15
- package/esm2022/slide/drawer/drawer-container.directive.mjs +6 -6
- package/esm2022/slide/slide-container.component.mjs +12 -16
- package/esm2022/slide/slide-header/slide-header.component.mjs +10 -11
- package/esm2022/slide/slide-ref.service.mjs +1 -1
- package/esm2022/slide/slide.service.mjs +8 -12
- package/esm2022/slider/slider.component.mjs +8 -8
- package/esm2022/space/space.component.mjs +13 -13
- package/esm2022/statistic/statistic.component.mjs +20 -20
- package/esm2022/stepper/step.component.mjs +6 -11
- package/esm2022/stepper/stepper-button.directive.mjs +10 -11
- package/esm2022/strength/strength.component.mjs +11 -12
- package/esm2022/switch/switch.component.mjs +6 -6
- package/esm2022/table/table-column.component.mjs +58 -63
- package/esm2022/table/table-skeleton.component.mjs +32 -32
- package/esm2022/table/table.component.mjs +16 -24
- package/esm2022/tabs/tabs.component.mjs +19 -19
- package/esm2022/tag/tag.component.mjs +22 -22
- package/esm2022/time-picker/inner/inner-time-picker.component.mjs +10 -9
- package/esm2022/time-picker/time-picker-panel.component.mjs +27 -27
- package/esm2022/time-picker/time-picker.component.mjs +29 -29
- package/esm2022/timeline/timeline-item.component.mjs +12 -13
- package/esm2022/timeline/timeline.component.mjs +7 -8
- package/esm2022/tooltip/tooltip.component.mjs +14 -14
- package/esm2022/tooltip/tooltip.directive.mjs +11 -10
- package/esm2022/tooltip/tooltip.service.mjs +9 -13
- package/esm2022/transfer/transfer-list.component.mjs +6 -6
- package/esm2022/tree/tree-node.component.mjs +13 -17
- package/esm2022/tree/tree.component.mjs +86 -90
- package/esm2022/tree-select/tree-select.component.mjs +22 -27
- package/esm2022/typography/bg-color.directive.mjs +9 -9
- package/esm2022/typography/text-color.directive.mjs +9 -9
- package/esm2022/upload/file-drop.directive.mjs +1 -1
- package/esm2022/upload/file-select-base.mjs +5 -6
- package/esm2022/upload/file-select.component.mjs +4 -3
- package/esm2022/upload/upload.service.mjs +6 -7
- package/esm2022/version.mjs +2 -2
- package/esm2022/watermark/watermark.directive.mjs +12 -12
- package/fesm2022/ngx-tethys-action.mjs +17 -17
- package/fesm2022/ngx-tethys-action.mjs.map +1 -1
- package/fesm2022/ngx-tethys-affix.mjs +12 -14
- package/fesm2022/ngx-tethys-affix.mjs.map +1 -1
- package/fesm2022/ngx-tethys-anchor.mjs +19 -22
- package/fesm2022/ngx-tethys-anchor.mjs.map +1 -1
- package/fesm2022/ngx-tethys-arrow-switcher.mjs +21 -21
- package/fesm2022/ngx-tethys-arrow-switcher.mjs.map +1 -1
- package/fesm2022/ngx-tethys-autocomplete.mjs +59 -71
- package/fesm2022/ngx-tethys-autocomplete.mjs.map +1 -1
- package/fesm2022/ngx-tethys-avatar.mjs +27 -27
- package/fesm2022/ngx-tethys-avatar.mjs.map +1 -1
- package/fesm2022/ngx-tethys-back-top.mjs +12 -15
- package/fesm2022/ngx-tethys-back-top.mjs.map +1 -1
- package/fesm2022/ngx-tethys-badge.mjs +5 -5
- package/fesm2022/ngx-tethys-badge.mjs.map +1 -1
- package/fesm2022/ngx-tethys-breadcrumb.mjs +16 -16
- package/fesm2022/ngx-tethys-breadcrumb.mjs.map +1 -1
- package/fesm2022/ngx-tethys-button.mjs +11 -11
- package/fesm2022/ngx-tethys-button.mjs.map +1 -1
- package/fesm2022/ngx-tethys-calendar.mjs +21 -21
- package/fesm2022/ngx-tethys-calendar.mjs.map +1 -1
- package/fesm2022/ngx-tethys-carousel.mjs +20 -21
- package/fesm2022/ngx-tethys-carousel.mjs.map +1 -1
- package/fesm2022/ngx-tethys-cascader.mjs +11 -15
- package/fesm2022/ngx-tethys-cascader.mjs.map +1 -1
- package/fesm2022/ngx-tethys-checkbox.mjs +6 -7
- package/fesm2022/ngx-tethys-checkbox.mjs.map +1 -1
- package/fesm2022/ngx-tethys-collapse.mjs +17 -19
- package/fesm2022/ngx-tethys-collapse.mjs.map +1 -1
- package/fesm2022/ngx-tethys-color-picker.mjs +44 -42
- package/fesm2022/ngx-tethys-color-picker.mjs.map +1 -1
- package/fesm2022/ngx-tethys-copy.mjs +8 -12
- package/fesm2022/ngx-tethys-copy.mjs.map +1 -1
- package/fesm2022/ngx-tethys-core.mjs +14 -16
- package/fesm2022/ngx-tethys-core.mjs.map +1 -1
- package/fesm2022/ngx-tethys-date-picker.mjs +192 -216
- package/fesm2022/ngx-tethys-date-picker.mjs.map +1 -1
- package/fesm2022/ngx-tethys-date-range.mjs +20 -20
- package/fesm2022/ngx-tethys-date-range.mjs.map +1 -1
- package/fesm2022/ngx-tethys-dialog.mjs +56 -72
- package/fesm2022/ngx-tethys-dialog.mjs.map +1 -1
- package/fesm2022/ngx-tethys-dot.mjs +6 -6
- package/fesm2022/ngx-tethys-dot.mjs.map +1 -1
- package/fesm2022/ngx-tethys-drag-drop.mjs +33 -37
- package/fesm2022/ngx-tethys-drag-drop.mjs.map +1 -1
- package/fesm2022/ngx-tethys-dropdown.mjs +39 -37
- package/fesm2022/ngx-tethys-dropdown.mjs.map +1 -1
- package/fesm2022/ngx-tethys-empty.mjs +15 -15
- package/fesm2022/ngx-tethys-empty.mjs.map +1 -1
- package/fesm2022/ngx-tethys-flexible-text.mjs +16 -17
- package/fesm2022/ngx-tethys-flexible-text.mjs.map +1 -1
- package/fesm2022/ngx-tethys-form.mjs +67 -82
- package/fesm2022/ngx-tethys-form.mjs.map +1 -1
- package/fesm2022/ngx-tethys-fullscreen.mjs +14 -17
- package/fesm2022/ngx-tethys-fullscreen.mjs.map +1 -1
- package/fesm2022/ngx-tethys-grid.mjs +20 -29
- package/fesm2022/ngx-tethys-grid.mjs.map +1 -1
- package/fesm2022/ngx-tethys-guider.mjs +17 -23
- package/fesm2022/ngx-tethys-guider.mjs.map +1 -1
- package/fesm2022/ngx-tethys-icon.mjs +18 -22
- package/fesm2022/ngx-tethys-icon.mjs.map +1 -1
- package/fesm2022/ngx-tethys-image.mjs +57 -62
- package/fesm2022/ngx-tethys-image.mjs.map +1 -1
- package/fesm2022/ngx-tethys-input-number.mjs +5 -5
- package/fesm2022/ngx-tethys-input-number.mjs.map +1 -1
- package/fesm2022/ngx-tethys-input.mjs +46 -53
- package/fesm2022/ngx-tethys-input.mjs.map +1 -1
- package/fesm2022/ngx-tethys-layout.mjs +45 -50
- package/fesm2022/ngx-tethys-layout.mjs.map +1 -1
- package/fesm2022/ngx-tethys-list.mjs +24 -24
- package/fesm2022/ngx-tethys-list.mjs.map +1 -1
- package/fesm2022/ngx-tethys-loading.mjs +7 -7
- package/fesm2022/ngx-tethys-loading.mjs.map +1 -1
- package/fesm2022/ngx-tethys-mention.mjs +16 -21
- package/fesm2022/ngx-tethys-mention.mjs.map +1 -1
- package/fesm2022/ngx-tethys-menu.mjs +51 -52
- package/fesm2022/ngx-tethys-menu.mjs.map +1 -1
- package/fesm2022/ngx-tethys-message.mjs +33 -35
- package/fesm2022/ngx-tethys-message.mjs.map +1 -1
- package/fesm2022/ngx-tethys-nav.mjs +55 -64
- package/fesm2022/ngx-tethys-nav.mjs.map +1 -1
- package/fesm2022/ngx-tethys-notify.mjs +26 -29
- package/fesm2022/ngx-tethys-notify.mjs.map +1 -1
- package/fesm2022/ngx-tethys-pagination.mjs +44 -49
- package/fesm2022/ngx-tethys-pagination.mjs.map +1 -1
- package/fesm2022/ngx-tethys-popover.mjs +48 -54
- package/fesm2022/ngx-tethys-popover.mjs.map +1 -1
- package/fesm2022/ngx-tethys-progress.mjs +9 -12
- package/fesm2022/ngx-tethys-progress.mjs.map +1 -1
- package/fesm2022/ngx-tethys-property-operation.mjs +24 -24
- package/fesm2022/ngx-tethys-property-operation.mjs.map +1 -1
- package/fesm2022/ngx-tethys-property.mjs +11 -11
- package/fesm2022/ngx-tethys-property.mjs.map +1 -1
- package/fesm2022/ngx-tethys-radio.mjs +29 -35
- package/fesm2022/ngx-tethys-radio.mjs.map +1 -1
- package/fesm2022/ngx-tethys-rate.mjs +5 -5
- package/fesm2022/ngx-tethys-rate.mjs.map +1 -1
- package/fesm2022/ngx-tethys-resizable.mjs +22 -25
- package/fesm2022/ngx-tethys-resizable.mjs.map +1 -1
- package/fesm2022/ngx-tethys-segment.mjs +35 -38
- package/fesm2022/ngx-tethys-segment.mjs.map +1 -1
- package/fesm2022/ngx-tethys-select.mjs +20 -34
- package/fesm2022/ngx-tethys-select.mjs.map +1 -1
- package/fesm2022/ngx-tethys-shared.mjs +128 -143
- package/fesm2022/ngx-tethys-shared.mjs.map +1 -1
- package/fesm2022/ngx-tethys-skeleton.mjs +11 -25
- package/fesm2022/ngx-tethys-skeleton.mjs.map +1 -1
- package/fesm2022/ngx-tethys-slide.mjs +30 -34
- package/fesm2022/ngx-tethys-slide.mjs.map +1 -1
- package/fesm2022/ngx-tethys-slider.mjs +7 -7
- package/fesm2022/ngx-tethys-slider.mjs.map +1 -1
- package/fesm2022/ngx-tethys-space.mjs +13 -13
- package/fesm2022/ngx-tethys-space.mjs.map +1 -1
- package/fesm2022/ngx-tethys-statistic.mjs +19 -19
- package/fesm2022/ngx-tethys-statistic.mjs.map +1 -1
- package/fesm2022/ngx-tethys-stepper.mjs +13 -18
- package/fesm2022/ngx-tethys-stepper.mjs.map +1 -1
- package/fesm2022/ngx-tethys-strength.mjs +11 -11
- package/fesm2022/ngx-tethys-strength.mjs.map +1 -1
- package/fesm2022/ngx-tethys-switch.mjs +5 -5
- package/fesm2022/ngx-tethys-switch.mjs.map +1 -1
- package/fesm2022/ngx-tethys-table.mjs +103 -115
- package/fesm2022/ngx-tethys-table.mjs.map +1 -1
- package/fesm2022/ngx-tethys-tabs.mjs +19 -19
- package/fesm2022/ngx-tethys-tabs.mjs.map +1 -1
- package/fesm2022/ngx-tethys-tag.mjs +21 -21
- package/fesm2022/ngx-tethys-tag.mjs.map +1 -1
- package/fesm2022/ngx-tethys-time-picker.mjs +61 -58
- package/fesm2022/ngx-tethys-time-picker.mjs.map +1 -1
- package/fesm2022/ngx-tethys-timeline.mjs +16 -16
- package/fesm2022/ngx-tethys-timeline.mjs.map +1 -1
- package/fesm2022/ngx-tethys-tooltip.mjs +32 -33
- package/fesm2022/ngx-tethys-tooltip.mjs.map +1 -1
- package/fesm2022/ngx-tethys-transfer.mjs +5 -5
- package/fesm2022/ngx-tethys-transfer.mjs.map +1 -1
- package/fesm2022/ngx-tethys-tree-select.mjs +23 -28
- package/fesm2022/ngx-tethys-tree-select.mjs.map +1 -1
- package/fesm2022/ngx-tethys-tree.mjs +96 -102
- package/fesm2022/ngx-tethys-tree.mjs.map +1 -1
- package/fesm2022/ngx-tethys-typography.mjs +15 -15
- package/fesm2022/ngx-tethys-typography.mjs.map +1 -1
- package/fesm2022/ngx-tethys-upload.mjs +11 -12
- package/fesm2022/ngx-tethys-upload.mjs.map +1 -1
- package/fesm2022/ngx-tethys-watermark.mjs +12 -12
- package/fesm2022/ngx-tethys-watermark.mjs.map +1 -1
- package/fesm2022/ngx-tethys.mjs +1 -1
- package/fesm2022/ngx-tethys.mjs.map +1 -1
- package/flexible-text/flexible-text.component.d.ts +1 -3
- package/form/form-group-error/form-group-error.component.d.ts +1 -3
- package/form/form-group-label.directive.d.ts +0 -2
- package/form/form-group.component.d.ts +1 -4
- package/form/form-submit.directive.d.ts +0 -2
- package/form/form-validator.service.d.ts +0 -2
- package/form/form.directive.d.ts +4 -4
- package/form/from-group-footer/form-group-footer.component.d.ts +2 -4
- package/form/validator/unique-validator.directive.d.ts +1 -4
- package/fullscreen/fullscreen.component.d.ts +0 -2
- package/fullscreen/fullscreen.service.d.ts +0 -2
- package/grid/thy-col.directive.d.ts +1 -2
- package/grid/thy-grid-item.component.d.ts +2 -4
- package/grid/thy-grid.component.d.ts +1 -3
- package/guider/guider.directive.d.ts +1 -3
- package/guider/guider.service.d.ts +0 -7
- package/icon/icon-registry.d.ts +1 -3
- package/icon/icon.component.d.ts +1 -3
- package/image/image-group.component.d.ts +1 -2
- package/image/image.directive.d.ts +1 -3
- package/image/image.service.d.ts +2 -2
- package/image/preview/image-preview.component.d.ts +1 -4
- package/input/input-count.component.d.ts +3 -4
- package/input/input-group.component.d.ts +1 -3
- package/input/input-search.component.d.ts +2 -2
- package/input/input.component.d.ts +1 -2
- package/input/input.directive.d.ts +2 -3
- package/input-number/input-number.component.d.ts +2 -2
- package/layout/sidebar.component.d.ts +44 -13
- package/list/selection/selection-list.d.ts +1 -2
- package/loading/loading.component.d.ts +0 -2
- package/loading/styles/loading.scss +3 -1
- package/mention/mention.directive.d.ts +4 -5
- package/mention/suggestions/suggestions.component.d.ts +2 -3
- package/menu/group/menu-group.component.d.ts +12 -26
- package/menu/item/action/menu-item-action.component.d.ts +2 -3
- package/menu/item/menu-item.component.d.ts +1 -2
- package/message/abstract/abstract-message-container.component.d.ts +1 -2
- package/message/abstract/abstract-message.component.d.ts +2 -2
- package/message/message-container.component.d.ts +1 -3
- package/message/message-queue.service.d.ts +1 -2
- package/message/message.component.d.ts +1 -3
- package/message/message.service.d.ts +3 -5
- package/nav/icon-nav/icon-nav.component.d.ts +2 -2
- package/nav/nav-ink-bar.directive.d.ts +2 -4
- package/nav/nav-item.directive.d.ts +3 -4
- package/nav/nav.component.d.ts +1 -3
- package/nav/nav.pipe.d.ts +0 -2
- package/notify/notify-container.component.d.ts +1 -3
- package/notify/notify-queue.service.d.ts +1 -2
- package/notify/notify.component.d.ts +2 -3
- package/notify/notify.service.d.ts +1 -4
- package/package.json +1 -1
- package/pagination/pagination.component.d.ts +7 -19
- package/pagination/pagination.pipe.d.ts +0 -2
- package/popover/header/popover-header.component.d.ts +0 -3
- package/popover/popover-container.component.d.ts +3 -4
- package/popover/popover.directive.d.ts +2 -5
- package/popover/popover.service.d.ts +4 -6
- package/progress/progress-strip.component.d.ts +0 -1
- package/property/property-item.component.d.ts +6 -6
- package/property-operation/property-operation.component.d.ts +1 -3
- package/radio/button/radio-button.component.d.ts +2 -5
- package/radio/group/radio-group.component.d.ts +1 -2
- package/radio/radio.component.d.ts +2 -3
- package/rate/rate.component.d.ts +2 -2
- package/resizable/resizable.directive.d.ts +2 -4
- package/resizable/resizable.service.d.ts +2 -2
- package/resizable/resize-handle.component.d.ts +1 -3
- package/schematics/version.d.ts +1 -1
- package/schematics/version.js +1 -1
- package/segment/segment-item.component.d.ts +4 -5
- package/segment/segment.component.d.ts +1 -2
- package/select/custom-select/custom-select.component.d.ts +5 -5
- package/select/native-select/native-select.component.d.ts +1 -1
- package/shared/base-form-check.component.d.ts +1 -1
- package/shared/directives/string-or-template-outlet.directive.d.ts +1 -2
- package/shared/directives/thy-autofocus.directive.d.ts +0 -2
- package/shared/directives/thy-contextmenu.directive.d.ts +1 -2
- package/shared/directives/thy-ctrl-enter.directive.d.ts +1 -2
- package/shared/directives/thy-enter.directive.d.ts +1 -2
- package/shared/directives/thy-scroll.directive.d.ts +1 -2
- package/shared/directives/thy-show.d.ts +1 -2
- package/shared/directives/thy-stop-propagation.directive.d.ts +2 -2
- package/shared/directives/view-outlet.directive.d.ts +1 -2
- package/shared/ng-transclude.directive.d.ts +1 -1
- package/shared/option/group/option-group.component.d.ts +1 -2
- package/shared/option/list-option/list-option.component.d.ts +5 -10
- package/shared/option/option.component.d.ts +5 -5
- package/shared/select/select-control/select-control.component.d.ts +1 -2
- package/skeleton/skeleton-circle.component.d.ts +1 -4
- package/skeleton/skeleton-rectangle.component.d.ts +5 -5
- package/slide/drawer/drawer-container.directive.d.ts +1 -2
- package/slide/slide-container.component.d.ts +3 -4
- package/slide/slide-header/slide-header.component.d.ts +0 -2
- package/slide/slide.service.d.ts +3 -3
- package/slider/slider.component.d.ts +2 -2
- package/space/space.component.d.ts +1 -2
- package/statistic/statistic.component.d.ts +1 -2
- package/stepper/step.component.d.ts +1 -2
- package/stepper/stepper-button.directive.d.ts +0 -3
- package/strength/strength.component.d.ts +0 -1
- package/switch/switch.component.d.ts +1 -1
- package/table/table-column.component.d.ts +32 -8
- package/table/table-skeleton.component.d.ts +3 -12
- package/table/table.component.d.ts +3 -5
- package/tabs/tabs.component.d.ts +1 -2
- package/tag/tag.component.d.ts +7 -3
- package/time-picker/inner/inner-time-picker.component.d.ts +2 -4
- package/time-picker/time-picker-panel.component.d.ts +1 -2
- package/time-picker/time-picker.component.d.ts +1 -2
- package/timeline/timeline-item.component.d.ts +1 -3
- package/timeline/timeline.component.d.ts +1 -3
- package/tooltip/tooltip.component.d.ts +1 -2
- package/tooltip/tooltip.directive.d.ts +6 -9
- package/tooltip/tooltip.service.d.ts +2 -4
- package/transfer/transfer-list.component.d.ts +1 -2
- package/tree/tree-node.component.d.ts +5 -21
- package/tree/tree.component.d.ts +1 -2
- package/tree-select/tree-select.component.d.ts +5 -6
- package/typography/bg-color.directive.d.ts +0 -2
- package/typography/text-color.directive.d.ts +1 -2
- package/upload/file-select-base.d.ts +2 -3
- package/upload/file-select.component.d.ts +1 -0
- package/upload/upload.service.d.ts +0 -2
- package/watermark/watermark.directive.d.ts +1 -2
|
@@ -1,18 +1,17 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { Component, ChangeDetectionStrategy, ViewEncapsulation, InjectionToken,
|
|
2
|
+
import { inject, Injector, ElementRef, Component, ChangeDetectionStrategy, ViewEncapsulation, InjectionToken, ChangeDetectorRef, NgZone, EventEmitter, DestroyRef, Output, ViewChild, Injectable, InjectFlags, Directive, Input, NgModule } from '@angular/core';
|
|
3
3
|
import { ThyAbstractOverlayConfig } from 'ngx-tethys/core';
|
|
4
4
|
import { CdkDrag, DragDropModule } from '@angular/cdk/drag-drop';
|
|
5
5
|
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
6
|
-
import
|
|
6
|
+
import { DomSanitizer } from '@angular/platform-browser';
|
|
7
7
|
import { ThyAction, ThyActions, ThyActionModule } from 'ngx-tethys/action';
|
|
8
8
|
import { ThyCopyDirective, ThyCopyModule } from 'ngx-tethys/copy';
|
|
9
|
-
import
|
|
10
|
-
import { ThyDialogSizes, ThyDialogModule } from 'ngx-tethys/dialog';
|
|
9
|
+
import { ThyDialog, ThyDialogSizes, ThyDialogModule } from 'ngx-tethys/dialog';
|
|
11
10
|
import { ThyDivider, ThyDividerModule } from 'ngx-tethys/divider';
|
|
12
|
-
import
|
|
11
|
+
import { ThyFullscreen } from 'ngx-tethys/fullscreen';
|
|
13
12
|
import { ThyIcon, ThyIconModule } from 'ngx-tethys/icon';
|
|
14
13
|
import { ThyLoading, ThyLoadingModule } from 'ngx-tethys/loading';
|
|
15
|
-
import
|
|
14
|
+
import { ThyNotifyService } from 'ngx-tethys/notify';
|
|
16
15
|
import { ThyTooltipDirective, ThyTooltipModule } from 'ngx-tethys/tooltip';
|
|
17
16
|
import { isNumber, humanizeBytes, getClientSize, helpers, getOffset, getFitContentPosition, isUndefinedOrNull, coerceBooleanProperty } from 'ngx-tethys/util';
|
|
18
17
|
import { fromEvent, Observable, Subject } from 'rxjs';
|
|
@@ -26,9 +25,9 @@ import { PortalModule } from '@angular/cdk/portal';
|
|
|
26
25
|
* @name thy-image-group,[thyImageGroup]
|
|
27
26
|
*/
|
|
28
27
|
class ThyImageGroup {
|
|
29
|
-
constructor(
|
|
30
|
-
this.injector =
|
|
31
|
-
this.element =
|
|
28
|
+
constructor() {
|
|
29
|
+
this.injector = inject(Injector);
|
|
30
|
+
this.element = inject(ElementRef);
|
|
32
31
|
this.images = [];
|
|
33
32
|
}
|
|
34
33
|
addImage(image, index) {
|
|
@@ -37,7 +36,7 @@ class ThyImageGroup {
|
|
|
37
36
|
removeImage(index) {
|
|
38
37
|
this.images.splice(index, 1);
|
|
39
38
|
}
|
|
40
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: ThyImageGroup, deps: [
|
|
39
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: ThyImageGroup, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
41
40
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.0", type: ThyImageGroup, isStandalone: true, selector: "thy-image-group, [thyImageGroup]", ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
42
41
|
}
|
|
43
42
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: ThyImageGroup, decorators: [{
|
|
@@ -49,7 +48,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
|
|
|
49
48
|
encapsulation: ViewEncapsulation.None,
|
|
50
49
|
standalone: true
|
|
51
50
|
}]
|
|
52
|
-
}]
|
|
51
|
+
}] });
|
|
53
52
|
|
|
54
53
|
class ThyImagePreviewConfig extends ThyAbstractOverlayConfig {
|
|
55
54
|
}
|
|
@@ -95,37 +94,14 @@ const VERTICAL_SPACE = 96 + 106; // top: 96px; bottom: 106px
|
|
|
95
94
|
* @order 20
|
|
96
95
|
*/
|
|
97
96
|
class ThyImagePreview {
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
let imageSrc = this.previewImage.origin?.src || this.previewImage.src;
|
|
107
|
-
if (imageSrc.startsWith('./')) {
|
|
108
|
-
return window.location.host + '/' + imageSrc.split('./')[1];
|
|
109
|
-
}
|
|
110
|
-
return imageSrc;
|
|
111
|
-
}
|
|
112
|
-
get defaultZoom() {
|
|
113
|
-
if (this.previewConfig?.zoom && this.previewConfig?.zoom > 0) {
|
|
114
|
-
return this.previewConfig.zoom >= IMAGE_MAX_ZOOM
|
|
115
|
-
? IMAGE_MAX_ZOOM
|
|
116
|
-
: this.previewConfig.zoom <= IMAGE_MIN_ZOOM
|
|
117
|
-
? IMAGE_MIN_ZOOM
|
|
118
|
-
: this.previewConfig.zoom;
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
constructor(thyDialog, thyFullscreen, cdr, ngZone, notifyService, host, sanitizer) {
|
|
122
|
-
this.thyDialog = thyDialog;
|
|
123
|
-
this.thyFullscreen = thyFullscreen;
|
|
124
|
-
this.cdr = cdr;
|
|
125
|
-
this.ngZone = ngZone;
|
|
126
|
-
this.notifyService = notifyService;
|
|
127
|
-
this.host = host;
|
|
128
|
-
this.sanitizer = sanitizer;
|
|
97
|
+
constructor() {
|
|
98
|
+
this.thyDialog = inject(ThyDialog);
|
|
99
|
+
this.thyFullscreen = inject(ThyFullscreen);
|
|
100
|
+
this.cdr = inject(ChangeDetectorRef);
|
|
101
|
+
this.ngZone = inject(NgZone);
|
|
102
|
+
this.notifyService = inject(ThyNotifyService);
|
|
103
|
+
this.host = inject(ElementRef);
|
|
104
|
+
this.sanitizer = inject(DomSanitizer);
|
|
129
105
|
this.downloadClicked = new EventEmitter();
|
|
130
106
|
this.destroyRef = inject(DestroyRef);
|
|
131
107
|
this.images = [];
|
|
@@ -212,6 +188,29 @@ class ThyImagePreview {
|
|
|
212
188
|
}
|
|
213
189
|
];
|
|
214
190
|
}
|
|
191
|
+
get previewImage() {
|
|
192
|
+
const image = this.images[this.previewIndex];
|
|
193
|
+
if (image.size) {
|
|
194
|
+
image.size = isNumber(image.size) ? humanizeBytes(image.size) : image.size;
|
|
195
|
+
}
|
|
196
|
+
return image;
|
|
197
|
+
}
|
|
198
|
+
get previewImageOriginSrc() {
|
|
199
|
+
let imageSrc = this.previewImage.origin?.src || this.previewImage.src;
|
|
200
|
+
if (imageSrc.startsWith('./')) {
|
|
201
|
+
return window.location.host + '/' + imageSrc.split('./')[1];
|
|
202
|
+
}
|
|
203
|
+
return imageSrc;
|
|
204
|
+
}
|
|
205
|
+
get defaultZoom() {
|
|
206
|
+
if (this.previewConfig?.zoom && this.previewConfig?.zoom > 0) {
|
|
207
|
+
return this.previewConfig.zoom >= IMAGE_MAX_ZOOM
|
|
208
|
+
? IMAGE_MAX_ZOOM
|
|
209
|
+
: this.previewConfig.zoom <= IMAGE_MIN_ZOOM
|
|
210
|
+
? IMAGE_MIN_ZOOM
|
|
211
|
+
: this.previewConfig.zoom;
|
|
212
|
+
}
|
|
213
|
+
}
|
|
215
214
|
ngOnInit() {
|
|
216
215
|
this.initPreview();
|
|
217
216
|
this.ngZone.runOutsideAngular(() => {
|
|
@@ -458,7 +457,7 @@ class ThyImagePreview {
|
|
|
458
457
|
updatePreviewImageWrapperTransform() {
|
|
459
458
|
this.previewImageWrapperTransform = `translate3d(${this.position.x}px, ${this.position.y}px, 0)`;
|
|
460
459
|
}
|
|
461
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: ThyImagePreview, deps: [
|
|
460
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: ThyImagePreview, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
462
461
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.0", type: ThyImagePreview, isStandalone: true, selector: "thy-image-preview", outputs: { downloadClicked: "downloadClicked" }, host: { properties: { "class.thy-image-preview-moving": "isDragging" }, classAttribute: "thy-image-preview-wrap" }, viewQueries: [{ propertyName: "imageRef", first: true, predicate: ["imgRef"], descendants: true }, { propertyName: "imagePreviewWrapper", first: true, predicate: ["imagePreviewWrapper"], descendants: true, static: true }], exportAs: ["thyImagePreview"], ngImport: i0, template: "<div class=\"thy-image-preview\" [class.thy-image-preview-fullscreen]=\"isFullScreen\">\n @if (!isFullScreen) {\n <div class=\"thy-image-preview-header pl-10 pr-8\">\n <div class=\"thy-image-preview-header-info\">\n <p class=\"thy-image-name text-truncate\" [thyTooltipDisabled]=\"previewImage?.name?.length < 32\" [thyTooltip]=\"previewImage?.name\">\n {{ previewImage?.name }}\n </p>\n <span class=\"thy-image-size\"> {{ previewImage?.size }}</span>\n </div>\n <a thyAction thyIcon=\"close\" thyTooltip=\"\u9000\u51FA\u9884\u89C8\" href=\"javascript:;\" (click)=\"thyDialog.close()\"></a>\n </div>\n }\n @if (isFullScreen) {\n <a\n class=\"thy-image-preview-exit-fullscreen\"\n thyAction\n thyIcon=\"close\"\n thyTooltip=\"\u9000\u51FA\u9884\u89C8\"\n href=\"javascript:;\"\n (click)=\"thyFullscreen.exit()\"\n thyTooltip=\"\u9000\u51FA\u5168\u5C4F\"></a>\n }\n <div\n class=\"thy-image-preview-img-wrapper\"\n #imagePreviewWrapper\n cdkDrag\n [class.thy-image-preview-inside]=\"isInsideScreen\"\n [style.transform]=\"previewImageWrapperTransform\"\n [cdkDragFreeDragPosition]=\"position\"\n (cdkDragReleased)=\"dragReleased()\">\n @for (image of images; track $index; let imageIndex = $index) {\n @if (previewIndex === imageIndex && isLoadingDone) {\n <img #imgRef class=\"thy-image-preview-img\" [src]=\"image.objectURL || image.src\" [style.transform]=\"previewImageTransform\" />\n }\n }\n <thy-loading [thyDone]=\"isLoadingDone\"></thy-loading>\n </div>\n\n @if (images.length > 1 && !isFullScreen) {\n <div\n class=\"thy-image-preview-switch-left\"\n [thyTooltipDisabled]=\"previewIndex <= 0\"\n thyTooltip=\"\u4E0A\u4E00\u5F20\"\n [class.thy-image-preview-switch-left-disabled]=\"previewIndex <= 0\"\n (click)=\"prev()\">\n <thy-icon thyIconName=\"angle-left-bold\"></thy-icon>\n </div>\n <div\n class=\"thy-image-preview-switch-right\"\n thyTooltip=\"\u4E0B\u4E00\u5F20\"\n [thyTooltipDisabled]=\"previewIndex >= images.length - 1\"\n [class.thy-image-preview-switch-right-disabled]=\"previewIndex >= images.length - 1\"\n (click)=\"next()\">\n <thy-icon thyIconName=\"angle-right-bold\"> </thy-icon>\n </div>\n }\n @if (!isFullScreen) {\n <thy-actions thySize=\"xs\" class=\"thy-image-preview-operations py-3 px-4\">\n @for (option of previewOperations; track $index; let i = $index) {\n @if (!['original-scale', 'fit-screen', 'copyLink'].includes(option.type) || currentImageMode === option.type) {\n <a\n href=\"javascript:;\"\n thyAction\n [thyActionIcon]=\"option.icon\"\n [thyTooltip]=\"option.name\"\n [thyTooltipOffset]=\"13\"\n (click)=\"option.action(previewImage)\"></a>\n }\n @if (option?.type === 'zoom-out') {\n <span class=\"mr-2\"> {{ (zoom * 100).toFixed(0) + '%' }} </span>\n }\n @if (option?.type === 'rotate-right') {\n <thy-divider class=\"ml-2\" [thyVertical]=\"true\"></thy-divider>\n }\n @if (option.type === 'copyLink') {\n <a\n href=\"javascript:;\"\n thyAction\n [thyCopyTips]=\"option.name\"\n [thyActionIcon]=\"option.icon\"\n [thyCopyTipsOffset]=\"13\"\n (thyCopy)=\"copyLink($event)\"\n [thyCopyContent]=\"previewImageOriginSrc\"\n [thyShowNotify]=\"false\"></a>\n }\n }\n <thy-divider [thyVertical]=\"true\"></thy-divider>\n <span class=\"thy-image-preview-operations-text\"> {{ previewIndex + 1 }} / {{ images.length }} </span>\n </thy-actions>\n }\n</div>\n", dependencies: [{ kind: "directive", type: ThyTooltipDirective, selector: "[thyTooltip],[thy-tooltip]", inputs: ["thyTooltip", "thyTooltipPlacement", "thyTooltipClass", "thyTooltipShowDelay", "thyTooltipHideDelay", "thyTooltipTrigger", "thyTooltipDisabled", "thyTooltipTemplateContext", "thyTooltipOffset", "thyTooltipPin"], exportAs: ["thyTooltip"] }, { kind: "component", type: ThyAction, selector: "thy-action, [thyAction]", inputs: ["thyType", "thyIcon", "thyActionIcon", "thyActive", "thyActionActive", "thyTheme", "thyHoverIcon", "thyDisabled"] }, { kind: "directive", type: CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer", "cdkDragScale"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "component", type: ThyLoading, selector: "thy-loading", inputs: ["thyDone", "thyTip", "thyIsMask"] }, { kind: "component", type: ThyIcon, selector: "thy-icon, [thy-icon]", inputs: ["thyIconType", "thyTwotoneColor", "thyIconName", "thyIconRotate", "thyIconSet", "thyIconLegging", "thyIconLinearGradient"] }, { kind: "component", type: ThyActions, selector: "thy-actions", inputs: ["thySize"] }, { kind: "component", type: ThyDivider, selector: "thy-divider", inputs: ["thyVertical", "thyStyle", "thyColor", "thyText", "thyTextDirection", "thyDeeper"] }, { kind: "directive", type: ThyCopyDirective, selector: "[thyCopy]", inputs: ["thyCopySuccessText", "thyCopyTips", "thyCopyTipsOffset", "thyCopyContent", "thyShowNotify"], outputs: ["thyCopy"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
463
462
|
}
|
|
464
463
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: ThyImagePreview, decorators: [{
|
|
@@ -467,7 +466,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
|
|
|
467
466
|
class: 'thy-image-preview-wrap',
|
|
468
467
|
'[class.thy-image-preview-moving]': 'isDragging'
|
|
469
468
|
}, standalone: true, imports: [ThyTooltipDirective, ThyAction, CdkDrag, ThyLoading, ThyIcon, ThyActions, ThyDivider, ThyCopyDirective], template: "<div class=\"thy-image-preview\" [class.thy-image-preview-fullscreen]=\"isFullScreen\">\n @if (!isFullScreen) {\n <div class=\"thy-image-preview-header pl-10 pr-8\">\n <div class=\"thy-image-preview-header-info\">\n <p class=\"thy-image-name text-truncate\" [thyTooltipDisabled]=\"previewImage?.name?.length < 32\" [thyTooltip]=\"previewImage?.name\">\n {{ previewImage?.name }}\n </p>\n <span class=\"thy-image-size\"> {{ previewImage?.size }}</span>\n </div>\n <a thyAction thyIcon=\"close\" thyTooltip=\"\u9000\u51FA\u9884\u89C8\" href=\"javascript:;\" (click)=\"thyDialog.close()\"></a>\n </div>\n }\n @if (isFullScreen) {\n <a\n class=\"thy-image-preview-exit-fullscreen\"\n thyAction\n thyIcon=\"close\"\n thyTooltip=\"\u9000\u51FA\u9884\u89C8\"\n href=\"javascript:;\"\n (click)=\"thyFullscreen.exit()\"\n thyTooltip=\"\u9000\u51FA\u5168\u5C4F\"></a>\n }\n <div\n class=\"thy-image-preview-img-wrapper\"\n #imagePreviewWrapper\n cdkDrag\n [class.thy-image-preview-inside]=\"isInsideScreen\"\n [style.transform]=\"previewImageWrapperTransform\"\n [cdkDragFreeDragPosition]=\"position\"\n (cdkDragReleased)=\"dragReleased()\">\n @for (image of images; track $index; let imageIndex = $index) {\n @if (previewIndex === imageIndex && isLoadingDone) {\n <img #imgRef class=\"thy-image-preview-img\" [src]=\"image.objectURL || image.src\" [style.transform]=\"previewImageTransform\" />\n }\n }\n <thy-loading [thyDone]=\"isLoadingDone\"></thy-loading>\n </div>\n\n @if (images.length > 1 && !isFullScreen) {\n <div\n class=\"thy-image-preview-switch-left\"\n [thyTooltipDisabled]=\"previewIndex <= 0\"\n thyTooltip=\"\u4E0A\u4E00\u5F20\"\n [class.thy-image-preview-switch-left-disabled]=\"previewIndex <= 0\"\n (click)=\"prev()\">\n <thy-icon thyIconName=\"angle-left-bold\"></thy-icon>\n </div>\n <div\n class=\"thy-image-preview-switch-right\"\n thyTooltip=\"\u4E0B\u4E00\u5F20\"\n [thyTooltipDisabled]=\"previewIndex >= images.length - 1\"\n [class.thy-image-preview-switch-right-disabled]=\"previewIndex >= images.length - 1\"\n (click)=\"next()\">\n <thy-icon thyIconName=\"angle-right-bold\"> </thy-icon>\n </div>\n }\n @if (!isFullScreen) {\n <thy-actions thySize=\"xs\" class=\"thy-image-preview-operations py-3 px-4\">\n @for (option of previewOperations; track $index; let i = $index) {\n @if (!['original-scale', 'fit-screen', 'copyLink'].includes(option.type) || currentImageMode === option.type) {\n <a\n href=\"javascript:;\"\n thyAction\n [thyActionIcon]=\"option.icon\"\n [thyTooltip]=\"option.name\"\n [thyTooltipOffset]=\"13\"\n (click)=\"option.action(previewImage)\"></a>\n }\n @if (option?.type === 'zoom-out') {\n <span class=\"mr-2\"> {{ (zoom * 100).toFixed(0) + '%' }} </span>\n }\n @if (option?.type === 'rotate-right') {\n <thy-divider class=\"ml-2\" [thyVertical]=\"true\"></thy-divider>\n }\n @if (option.type === 'copyLink') {\n <a\n href=\"javascript:;\"\n thyAction\n [thyCopyTips]=\"option.name\"\n [thyActionIcon]=\"option.icon\"\n [thyCopyTipsOffset]=\"13\"\n (thyCopy)=\"copyLink($event)\"\n [thyCopyContent]=\"previewImageOriginSrc\"\n [thyShowNotify]=\"false\"></a>\n }\n }\n <thy-divider [thyVertical]=\"true\"></thy-divider>\n <span class=\"thy-image-preview-operations-text\"> {{ previewIndex + 1 }} / {{ images.length }} </span>\n </thy-actions>\n }\n</div>\n" }]
|
|
470
|
-
}],
|
|
469
|
+
}], propDecorators: { downloadClicked: [{
|
|
471
470
|
type: Output
|
|
472
471
|
}], imageRef: [{
|
|
473
472
|
type: ViewChild,
|
|
@@ -512,10 +511,11 @@ class ThyImagePreviewRef {
|
|
|
512
511
|
* 图片预览服务
|
|
513
512
|
*/
|
|
514
513
|
class ThyImageService {
|
|
515
|
-
constructor(
|
|
516
|
-
this.thyDialog =
|
|
514
|
+
constructor() {
|
|
515
|
+
this.thyDialog = inject(ThyDialog);
|
|
517
516
|
this.downloadClicked$ = new Subject();
|
|
518
517
|
this.ngUnsubscribe$ = new Subject();
|
|
518
|
+
const defaultConfig = inject(THY_IMAGE_DEFAULT_PREVIEW_OPTIONS, { optional: true });
|
|
519
519
|
this.defaultConfig = defaultConfig;
|
|
520
520
|
}
|
|
521
521
|
/**
|
|
@@ -550,17 +550,12 @@ class ThyImageService {
|
|
|
550
550
|
this.ngUnsubscribe$.next();
|
|
551
551
|
this.ngUnsubscribe$.complete();
|
|
552
552
|
}
|
|
553
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: ThyImageService, deps: [
|
|
553
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: ThyImageService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
554
554
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: ThyImageService }); }
|
|
555
555
|
}
|
|
556
556
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: ThyImageService, decorators: [{
|
|
557
557
|
type: Injectable
|
|
558
|
-
}], ctorParameters: () => [
|
|
559
|
-
type: Optional
|
|
560
|
-
}, {
|
|
561
|
-
type: Inject,
|
|
562
|
-
args: [THY_IMAGE_DEFAULT_PREVIEW_OPTIONS]
|
|
563
|
-
}] }] });
|
|
558
|
+
}], ctorParameters: () => [] });
|
|
564
559
|
|
|
565
560
|
/**
|
|
566
561
|
* thyImage: 预览图片指令,只可绑定到 img 标签上
|
|
@@ -568,18 +563,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
|
|
|
568
563
|
* @order 10
|
|
569
564
|
*/
|
|
570
565
|
class ThyImageDirective {
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
this.thyImageService = thyImageService;
|
|
576
|
-
this.injector = injector;
|
|
577
|
-
this.elementRef = elementRef;
|
|
566
|
+
constructor() {
|
|
567
|
+
this.thyImageService = inject(ThyImageService);
|
|
568
|
+
this.injector = inject(Injector);
|
|
569
|
+
this.elementRef = inject(ElementRef);
|
|
578
570
|
/**
|
|
579
571
|
* 是否自动计算图片资源大小
|
|
580
572
|
*/
|
|
581
573
|
this.thyResolveSize = false;
|
|
582
574
|
}
|
|
575
|
+
get previewable() {
|
|
576
|
+
return !this.thyDisablePreview;
|
|
577
|
+
}
|
|
583
578
|
ngOnInit() {
|
|
584
579
|
this.getParentGroup();
|
|
585
580
|
}
|
|
@@ -656,7 +651,7 @@ class ThyImageDirective {
|
|
|
656
651
|
this.parentGroup.removeImage(index);
|
|
657
652
|
}
|
|
658
653
|
}
|
|
659
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: ThyImageDirective, deps: [
|
|
654
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: ThyImageDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
660
655
|
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "18.2.0", type: ThyImageDirective, isStandalone: true, selector: "img[thyImage]", inputs: { thySrc: "thySrc", thyPreviewSrc: "thyPreviewSrc", thyOriginSrc: "thyOriginSrc", thyImageMeta: "thyImageMeta", thyDisablePreview: ["thyDisablePreview", "thyDisablePreview", coerceBooleanProperty], thyResolveSize: ["thyResolveSize", "thyResolveSize", coerceBooleanProperty] }, host: { listeners: { "click": "onPreview($event)" }, properties: { "class.thy-image-disabled": "thyDisablePreview" }, classAttribute: "thy-image" }, exportAs: ["thyImage"], usesOnChanges: true, ngImport: i0 }); }
|
|
661
656
|
}
|
|
662
657
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: ThyImageDirective, decorators: [{
|
|
@@ -671,7 +666,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
|
|
|
671
666
|
},
|
|
672
667
|
standalone: true
|
|
673
668
|
}]
|
|
674
|
-
}],
|
|
669
|
+
}], propDecorators: { thySrc: [{
|
|
675
670
|
type: Input
|
|
676
671
|
}], thyPreviewSrc: [{
|
|
677
672
|
type: Input
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ngx-tethys-image.mjs","sources":["../../../src/image/image-group.component.ts","../../../src/image/image.config.ts","../../../src/image/utils.ts","../../../src/image/preview/image-preview.component.ts","../../../src/image/preview/image-preview.component.html","../../../src/image/preview/image-preview-ref.ts","../../../src/image/image.service.ts","../../../src/image/image.directive.ts","../../../src/image/module.ts","../../../src/image/ngx-tethys-image.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, ViewEncapsulation, Injector, ElementRef } from '@angular/core';\nimport { ThyImageDirective } from './image.directive';\n\n/**\n * 图片分组,提供 thyImageGroup 指令和 thy-image-group 标签两种使用方式\n * @name thy-image-group,[thyImageGroup]\n */\n@Component({\n selector: 'thy-image-group, [thyImageGroup]',\n template: '<ng-content></ng-content>',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n standalone: true\n})\nexport class ThyImageGroup {\n constructor(\n public injector: Injector,\n public element: ElementRef\n ) {}\n\n images: ThyImageDirective[] = [];\n\n addImage(image: ThyImageDirective, index: number): void {\n this.images.splice(index, 0, image);\n }\n\n removeImage(index: number) {\n this.images.splice(index, 1);\n }\n}\n","import { InjectionToken } from '@angular/core';\nimport { ThyAbstractOverlayConfig, ThyAbstractOverlayOptions } from 'ngx-tethys/core';\n\nexport class ThyImagePreviewConfig<TData = unknown> extends ThyAbstractOverlayConfig<TData> {\n closeOnNavigation?: boolean;\n disableClose?: boolean;\n disableKeyboardSelectable?: boolean;\n zoom?: number;\n rotate?: number;\n}\n\nexport const THY_IMAGE_DEFAULT_PREVIEW_OPTIONS = new InjectionToken<ThyImagePreviewConfig>('thy-image-default-options');\n\nexport const THY_IMAGE_DEFAULT_PREVIEW_OPTIONS_PROVIDER = {\n provide: THY_IMAGE_DEFAULT_PREVIEW_OPTIONS,\n useValue: {\n hasBackdrop: true,\n closeOnNavigation: true,\n disableClose: false,\n disableKeyboardSelectable: false,\n restoreFocus: false\n }\n};\n\nexport const imageAbstractOverlayOptions: ThyAbstractOverlayOptions = {\n name: 'image',\n animationEnabled: true,\n disposeWhenClose: true\n};\n","import { fromEvent } from 'rxjs';\nimport { map, take } from 'rxjs/operators';\n\nexport const fetchImageBlob = (url: string) => {\n const xhr = new XMLHttpRequest();\n xhr.open('GET', url);\n xhr.responseType = 'blob';\n const loadedXhr$ = fromEvent(xhr, 'load').pipe(\n take(1),\n map(data => {\n return xhr.response;\n })\n );\n xhr.send();\n return loadedXhr$;\n};\n","import { CdkDrag } from '@angular/cdk/drag-drop';\n\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n DestroyRef,\n ElementRef,\n EventEmitter,\n NgZone,\n OnInit,\n Output,\n ViewChild,\n ViewEncapsulation,\n inject\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { ThyAction, ThyActions } from 'ngx-tethys/action';\nimport { ThyCopyDirective, ThyCopyEvent } from 'ngx-tethys/copy';\nimport { ThyDialog } from 'ngx-tethys/dialog';\nimport { ThyDivider } from 'ngx-tethys/divider';\nimport { ThyFullscreen } from 'ngx-tethys/fullscreen';\nimport { ThyIcon } from 'ngx-tethys/icon';\nimport { ThyLoading } from 'ngx-tethys/loading';\nimport { ThyNotifyService } from 'ngx-tethys/notify';\nimport { ThyTooltipDirective } from 'ngx-tethys/tooltip';\nimport { getClientSize, getFitContentPosition, getOffset, helpers, humanizeBytes, isNumber, isUndefinedOrNull } from 'ngx-tethys/util';\nimport { Observable, fromEvent } from 'rxjs';\nimport { InternalImageInfo, ThyImageInfo, ThyImagePreviewMode, ThyImagePreviewOperation, ThyImagePreviewOptions } from '../image.class';\nimport { fetchImageBlob } from '../utils';\n\nconst initialPosition = {\n x: 0,\n y: 0\n};\nconst IMAGE_MAX_ZOOM = 3;\nconst IMAGE_MIN_ZOOM = 0.1;\nconst HORIZONTAL_SPACE = 100 * 2; // left: 100px; right: 100px\nconst VERTICAL_SPACE = 96 + 106; // top: 96px; bottom: 106px\n\n/**\n * 图片预览组件\n * @name thy-image-preview\n * @order 20\n */\n@Component({\n selector: 'thy-image-preview',\n exportAs: 'thyImagePreview',\n templateUrl: './image-preview.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'thy-image-preview-wrap',\n '[class.thy-image-preview-moving]': 'isDragging'\n },\n standalone: true,\n imports: [ThyTooltipDirective, ThyAction, CdkDrag, ThyLoading, ThyIcon, ThyActions, ThyDivider, ThyCopyDirective]\n})\nexport class ThyImagePreview implements OnInit {\n @Output() downloadClicked: EventEmitter<ThyImageInfo> = new EventEmitter();\n\n private readonly destroyRef = inject(DestroyRef);\n\n images: InternalImageInfo[] = [];\n previewIndex: number = 0;\n previewConfig: ThyImagePreviewOptions;\n previewImageTransform = '';\n previewImageWrapperTransform = '';\n zoomDisabled = false;\n zoom: number = 1;\n position = { ...initialPosition };\n isDragging = false;\n isLoadingDone = false;\n isFullScreen = false;\n isInsideScreen = true;\n currentImageMode: ThyImagePreviewMode = 'original-scale';\n previewOperations: ThyImagePreviewOperation[];\n defaultPreviewOperations: ThyImagePreviewOperation[] = [\n {\n icon: 'zoom-out',\n name: '缩小',\n action: (image: ThyImageInfo) => {\n this.zoomOut();\n },\n type: 'zoom-out'\n },\n {\n icon: 'zoom-in',\n name: '放大',\n action: (image: ThyImageInfo) => {\n this.zoomIn();\n },\n type: 'zoom-in'\n },\n {\n icon: 'one-to-one',\n name: '原始比例',\n action: (image: ThyImageInfo) => {\n this.setOriginalSize();\n },\n type: 'original-scale'\n },\n {\n icon: 'max-view',\n name: '适应屏幕',\n action: () => {\n this.setFitScreen();\n },\n type: 'fit-screen'\n },\n {\n icon: 'expand-arrows',\n name: '全屏显示',\n action: () => {\n this.fullScreen();\n },\n type: 'full-screen'\n },\n {\n icon: 'rotate-right',\n name: '旋转',\n action: (image: ThyImageInfo) => {\n this.rotateRight();\n },\n type: 'rotate-right'\n },\n {\n icon: 'download',\n name: '下载',\n action: (image: ThyImageInfo) => {\n this.download(image);\n },\n type: 'download'\n },\n {\n icon: 'preview',\n name: '查看原图',\n action: () => {\n this.viewOriginal();\n },\n type: 'view-original'\n },\n {\n icon: 'link-insert',\n name: '复制链接',\n type: 'copyLink'\n }\n ];\n\n private rotate: number;\n\n get previewImage(): InternalImageInfo {\n const image = this.images[this.previewIndex];\n if (image.size) {\n image.size = isNumber(image.size) ? humanizeBytes(image.size) : image.size;\n }\n return image;\n }\n\n get previewImageOriginSrc() {\n let imageSrc = this.previewImage.origin?.src || this.previewImage.src;\n if (imageSrc.startsWith('./')) {\n return window.location.host + '/' + imageSrc.split('./')[1];\n }\n return imageSrc;\n }\n\n get defaultZoom(): number {\n if (this.previewConfig?.zoom && this.previewConfig?.zoom > 0) {\n return this.previewConfig.zoom >= IMAGE_MAX_ZOOM\n ? IMAGE_MAX_ZOOM\n : this.previewConfig.zoom <= IMAGE_MIN_ZOOM\n ? IMAGE_MIN_ZOOM\n : this.previewConfig.zoom;\n }\n }\n\n @ViewChild('imgRef', { static: false }) imageRef!: ElementRef<HTMLImageElement>;\n @ViewChild('imagePreviewWrapper', { static: true }) imagePreviewWrapper!: ElementRef<HTMLElement>;\n\n constructor(\n public thyDialog: ThyDialog,\n public thyFullscreen: ThyFullscreen,\n private cdr: ChangeDetectorRef,\n private ngZone: NgZone,\n private notifyService: ThyNotifyService,\n private host: ElementRef<HTMLElement>,\n private sanitizer: DomSanitizer\n ) {}\n\n ngOnInit(): void {\n this.initPreview();\n this.ngZone.runOutsideAngular(() => {\n fromEvent(this.host.nativeElement, 'click')\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(event => {\n if (\n (event.target === event.currentTarget ||\n (this.isInsideScreen && this.imagePreviewWrapper.nativeElement.contains(event.target as HTMLElement))) &&\n !this.previewConfig?.disableClose\n ) {\n this.ngZone.run(() => !this.isFullScreen && this.thyDialog.close());\n }\n });\n\n fromEvent(this.imagePreviewWrapper.nativeElement, 'mousedown')\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => {\n this.isDragging = !this.isInsideScreen && true;\n });\n });\n }\n\n setOriginalSize() {\n this.reset();\n this.currentImageMode = 'fit-screen';\n this.zoom = 1;\n this.updatePreviewImageTransform();\n this.calculateInsideScreen();\n this.isLoadingDone = true;\n this.cdr.detectChanges();\n }\n\n setFitScreen() {\n this.reset();\n this.isInsideScreen = true;\n this.updatePreviewImage();\n }\n\n useDefaultZoomUpdate(isUpdateImageWrapper: boolean) {\n this.zoom = this.defaultZoom;\n this.isLoadingDone = true;\n this.updatePreviewImageTransform();\n if (isUpdateImageWrapper) {\n this.updatePreviewImageWrapperTransform();\n }\n this.cdr.detectChanges();\n }\n\n useCalculateZoomUpdate(isUpdateImageWrapper?: boolean) {\n let img = new Image();\n img.src = this.previewImage.src;\n img.onload = () => {\n const { width: offsetWidth, height: offsetHeight } = getClientSize();\n const innerWidth = offsetWidth - HORIZONTAL_SPACE;\n const innerHeight = offsetHeight - VERTICAL_SPACE;\n const { naturalWidth, naturalHeight } = img;\n const xRatio = innerWidth / naturalWidth;\n const yRatio = innerHeight / naturalHeight;\n const zoom = Math.min(xRatio, yRatio);\n if (zoom > 1) {\n this.zoom = 1;\n } else {\n this.zoom = zoom;\n }\n this.isLoadingDone = true;\n this.updatePreviewImageTransform();\n if (isUpdateImageWrapper) {\n this.updatePreviewImageWrapperTransform();\n }\n this.cdr.detectChanges();\n };\n }\n\n updatePreviewImage() {\n this.resolvePreviewImage().subscribe(result => {\n if (!result) {\n // error\n this.isLoadingDone = true;\n return;\n }\n // image size\n if (!this.previewImage.size && this.previewImage.blob) {\n this.previewImage.size = humanizeBytes(this.previewImage.blob.size);\n }\n if (this.defaultZoom) {\n this.useDefaultZoomUpdate(true);\n } else {\n this.useCalculateZoomUpdate();\n }\n });\n }\n\n resolvePreviewImage() {\n return new Observable<Boolean>(subscriber => {\n if (this.previewImage.src.startsWith('blob:')) {\n this.previewImage.objectURL = this.sanitizer.bypassSecurityTrustUrl(this.previewImage.src);\n subscriber.next(true);\n subscriber.complete();\n return;\n }\n if (this.previewImage.objectURL || !this.previewConfig.resolveSize) {\n subscriber.next(true);\n subscriber.complete();\n } else {\n fetchImageBlob(this.previewImage.src).subscribe(\n blob => {\n const urlCreator = window.URL || window.webkitURL;\n const objectURL = urlCreator.createObjectURL(blob);\n this.previewImage.objectURL = this.sanitizer.bypassSecurityTrustUrl(objectURL);\n this.previewImage.blob = blob;\n subscriber.next(true);\n subscriber.complete();\n },\n error => {\n subscriber.next(false);\n subscriber.complete();\n }\n );\n }\n });\n }\n\n initPreview() {\n if (Array.isArray(this.previewConfig?.operations) && this.previewConfig?.operations.length) {\n const defaultOperationsMap = helpers.keyBy(this.defaultPreviewOperations, 'type');\n this.previewOperations = this.previewConfig?.operations.map(operation => {\n if (helpers.isString(operation) && defaultOperationsMap[operation]) {\n return defaultOperationsMap[operation];\n } else {\n return operation as ThyImagePreviewOperation;\n }\n });\n } else {\n this.previewOperations = this.defaultPreviewOperations;\n }\n this.rotate = this.previewConfig?.rotate ?? 0;\n this.updatePreviewImage();\n }\n\n download(image: ThyImageInfo) {\n this.downloadClicked.emit(image);\n const src = image.origin?.src || image.src;\n fetchImageBlob(src)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(blob => {\n const urlCreator = window.URL || window.webkitURL;\n const objectURL = urlCreator.createObjectURL(blob);\n let a = document.createElement('a');\n a.download = image.name || 'default.png';\n a.href = objectURL;\n a.click();\n });\n }\n\n zoomIn(): void {\n if (this.zoom < IMAGE_MAX_ZOOM) {\n this.zoom = Math.min(this.zoom + 0.1, IMAGE_MAX_ZOOM);\n this.calculateInsideScreen();\n this.updatePreviewImageTransform();\n this.position = { ...initialPosition };\n }\n }\n\n zoomOut(): void {\n if (this.zoom > IMAGE_MIN_ZOOM) {\n this.zoom = Math.max(this.zoom - 0.1, IMAGE_MIN_ZOOM);\n this.calculateInsideScreen();\n this.updatePreviewImageTransform();\n this.position = { ...initialPosition };\n }\n }\n\n calculateInsideScreen() {\n const width = this.imageRef.nativeElement.offsetWidth * this.zoom;\n const height = this.imageRef.nativeElement.offsetHeight * this.zoom;\n const { width: clientWidth, height: clientHeight } = getClientSize();\n if (width >= clientWidth || height >= clientHeight) {\n this.isInsideScreen = false;\n } else {\n this.isInsideScreen = true;\n }\n }\n\n viewOriginal() {\n window.open(this.previewImage?.origin?.src || this.previewImage.src, '_blank');\n }\n\n rotateRight(): void {\n this.rotate += 90;\n this.updatePreviewImageTransform();\n }\n\n fullScreen(): void {\n const targetElement = this.host.nativeElement.querySelector('.thy-image-preview');\n this.isFullScreen = true;\n const fullscreenRef = this.thyFullscreen.launch({\n target: targetElement\n });\n fullscreenRef.afterExited().subscribe(() => {\n this.isFullScreen = false;\n this.cdr.markForCheck();\n });\n }\n\n copyLink(event: ThyCopyEvent) {\n if (event.isSuccess) {\n this.notifyService.success('复制图片地址成功');\n } else {\n this.notifyService.error('复制图片地址失败');\n }\n }\n\n prev() {\n if (this.previewIndex > 0) {\n this.previewIndex--;\n this.isLoadingDone = false;\n this.reset();\n this.updatePreviewImage();\n }\n }\n\n next() {\n if (this.previewIndex < this.images.length - 1) {\n this.previewIndex++;\n this.isLoadingDone = false;\n this.reset();\n this.updatePreviewImage();\n }\n }\n\n dragReleased() {\n this.isDragging = false;\n const width = this.imageRef.nativeElement.offsetWidth * this.zoom;\n const height = this.imageRef.nativeElement.offsetHeight * this.zoom;\n const { left, top } = getOffset(this.imageRef.nativeElement, window);\n const { width: clientWidth, height: clientHeight } = getClientSize();\n const isRotate = this.rotate % 180 !== 0;\n const fitContentParams = {\n width: isRotate ? height : width,\n height: isRotate ? width : height,\n left,\n top,\n clientWidth,\n clientHeight\n };\n const fitContentPos = getFitContentPosition(fitContentParams);\n if (!isUndefinedOrNull(fitContentPos.x) || !isUndefinedOrNull(fitContentPos.y)) {\n this.position = { ...this.position, ...fitContentPos };\n }\n }\n\n private reset(): void {\n this.currentImageMode = 'original-scale';\n this.rotate = this.previewConfig?.rotate ?? 0;\n this.position = { ...initialPosition };\n this.cdr.detectChanges();\n }\n\n private updatePreviewImageTransform(): void {\n this.previewImageTransform = `scale3d(${this.zoom}, ${this.zoom}, 1) rotate(${this.rotate}deg)`;\n }\n\n private updatePreviewImageWrapperTransform(): void {\n this.previewImageWrapperTransform = `translate3d(${this.position.x}px, ${this.position.y}px, 0)`;\n }\n}\n","<div class=\"thy-image-preview\" [class.thy-image-preview-fullscreen]=\"isFullScreen\">\n @if (!isFullScreen) {\n <div class=\"thy-image-preview-header pl-10 pr-8\">\n <div class=\"thy-image-preview-header-info\">\n <p class=\"thy-image-name text-truncate\" [thyTooltipDisabled]=\"previewImage?.name?.length < 32\" [thyTooltip]=\"previewImage?.name\">\n {{ previewImage?.name }}\n </p>\n <span class=\"thy-image-size\"> {{ previewImage?.size }}</span>\n </div>\n <a thyAction thyIcon=\"close\" thyTooltip=\"退出预览\" href=\"javascript:;\" (click)=\"thyDialog.close()\"></a>\n </div>\n }\n @if (isFullScreen) {\n <a\n class=\"thy-image-preview-exit-fullscreen\"\n thyAction\n thyIcon=\"close\"\n thyTooltip=\"退出预览\"\n href=\"javascript:;\"\n (click)=\"thyFullscreen.exit()\"\n thyTooltip=\"退出全屏\"></a>\n }\n <div\n class=\"thy-image-preview-img-wrapper\"\n #imagePreviewWrapper\n cdkDrag\n [class.thy-image-preview-inside]=\"isInsideScreen\"\n [style.transform]=\"previewImageWrapperTransform\"\n [cdkDragFreeDragPosition]=\"position\"\n (cdkDragReleased)=\"dragReleased()\">\n @for (image of images; track $index; let imageIndex = $index) {\n @if (previewIndex === imageIndex && isLoadingDone) {\n <img #imgRef class=\"thy-image-preview-img\" [src]=\"image.objectURL || image.src\" [style.transform]=\"previewImageTransform\" />\n }\n }\n <thy-loading [thyDone]=\"isLoadingDone\"></thy-loading>\n </div>\n\n @if (images.length > 1 && !isFullScreen) {\n <div\n class=\"thy-image-preview-switch-left\"\n [thyTooltipDisabled]=\"previewIndex <= 0\"\n thyTooltip=\"上一张\"\n [class.thy-image-preview-switch-left-disabled]=\"previewIndex <= 0\"\n (click)=\"prev()\">\n <thy-icon thyIconName=\"angle-left-bold\"></thy-icon>\n </div>\n <div\n class=\"thy-image-preview-switch-right\"\n thyTooltip=\"下一张\"\n [thyTooltipDisabled]=\"previewIndex >= images.length - 1\"\n [class.thy-image-preview-switch-right-disabled]=\"previewIndex >= images.length - 1\"\n (click)=\"next()\">\n <thy-icon thyIconName=\"angle-right-bold\"> </thy-icon>\n </div>\n }\n @if (!isFullScreen) {\n <thy-actions thySize=\"xs\" class=\"thy-image-preview-operations py-3 px-4\">\n @for (option of previewOperations; track $index; let i = $index) {\n @if (!['original-scale', 'fit-screen', 'copyLink'].includes(option.type) || currentImageMode === option.type) {\n <a\n href=\"javascript:;\"\n thyAction\n [thyActionIcon]=\"option.icon\"\n [thyTooltip]=\"option.name\"\n [thyTooltipOffset]=\"13\"\n (click)=\"option.action(previewImage)\"></a>\n }\n @if (option?.type === 'zoom-out') {\n <span class=\"mr-2\"> {{ (zoom * 100).toFixed(0) + '%' }} </span>\n }\n @if (option?.type === 'rotate-right') {\n <thy-divider class=\"ml-2\" [thyVertical]=\"true\"></thy-divider>\n }\n @if (option.type === 'copyLink') {\n <a\n href=\"javascript:;\"\n thyAction\n [thyCopyTips]=\"option.name\"\n [thyActionIcon]=\"option.icon\"\n [thyCopyTipsOffset]=\"13\"\n (thyCopy)=\"copyLink($event)\"\n [thyCopyContent]=\"previewImageOriginSrc\"\n [thyShowNotify]=\"false\"></a>\n }\n }\n <thy-divider [thyVertical]=\"true\"></thy-divider>\n <span class=\"thy-image-preview-operations-text\"> {{ previewIndex + 1 }} / {{ images.length }} </span>\n </thy-actions>\n }\n</div>\n","import { ThyImagePreview } from './image-preview.component';\nimport { ThyDialogRef } from 'ngx-tethys/dialog';\nimport { LEFT_ARROW, RIGHT_ARROW } from '@angular/cdk/keycodes';\nimport { ThyImageInfo, ThyImagePreviewOptions } from '../image.class';\nimport { Observable } from 'rxjs';\n\nexport class ThyImagePreviewRef {\n get componentInstance() {\n return this.dialogRef.componentInstance;\n }\n\n constructor(\n public previewInstance: ThyImagePreview,\n private config: ThyImagePreviewOptions,\n private dialogRef: ThyDialogRef<ThyImagePreview>\n ) {\n dialogRef\n .keydownEvents()\n .pipe()\n .subscribe(event => {\n if (!config.disableKeyboardSelectable && event.keyCode === LEFT_ARROW) {\n this.prev();\n }\n if (!config.disableKeyboardSelectable && event.keyCode === RIGHT_ARROW) {\n this.next();\n }\n });\n }\n\n next(): void {\n this.previewInstance.next();\n }\n\n prev(): void {\n this.previewInstance.prev();\n }\n\n downloadClicked(): Observable<ThyImageInfo> {\n return this.previewInstance.downloadClicked.asObservable();\n }\n}\n","import { Inject, Injectable, OnDestroy, Optional } from '@angular/core';\nimport { ThyImagePreviewConfig, THY_IMAGE_DEFAULT_PREVIEW_OPTIONS } from './image.config';\nimport { ThyImageInfo, ThyImagePreviewOptions } from './image.class';\nimport { ThyImagePreview } from './preview/image-preview.component';\nimport { ThyDialog, ThyDialogSizes } from 'ngx-tethys/dialog';\nimport { ThyImagePreviewRef } from './preview/image-preview-ref';\nimport { Observable, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\n/**\n * 图片预览服务\n */\n@Injectable()\nexport class ThyImageService implements OnDestroy {\n /**\n * 图片预览默认配置,外部可通过注入 THY_IMAGE_DEFAULT_PREVIEW_OPTIONS 进行配置\n */\n defaultConfig: ThyImagePreviewConfig;\n\n private downloadClicked$ = new Subject<ThyImageInfo>();\n\n private ngUnsubscribe$ = new Subject<void>();\n\n constructor(\n public thyDialog: ThyDialog,\n @Optional()\n @Inject(THY_IMAGE_DEFAULT_PREVIEW_OPTIONS)\n defaultConfig: ThyImagePreviewConfig\n ) {\n this.defaultConfig = defaultConfig;\n }\n\n /**\n * 图片预览方法\n */\n preview(images: ThyImageInfo[], options?: ThyImagePreviewOptions & { startIndex?: number }): ThyImagePreviewRef {\n const config = { ...this.defaultConfig, ...options };\n const dialogRef = this.thyDialog.open(ThyImagePreview, {\n initialState: {\n images,\n previewIndex: options?.startIndex >= 0 && options?.startIndex < images.length ? options.startIndex : 0,\n previewConfig: config\n },\n backdropClass: 'thy-image-preview-backdrop',\n panelClass: 'thy-image-preview-container',\n size: ThyDialogSizes.full,\n ...config\n });\n const imagePreviewRef = new ThyImagePreviewRef(dialogRef.componentInstance, { ...this.defaultConfig, ...options }, dialogRef);\n imagePreviewRef\n .downloadClicked()\n .pipe(takeUntil(this.ngUnsubscribe$))\n .subscribe(image => {\n this.downloadClicked$.next(image);\n });\n return imagePreviewRef;\n }\n\n downloadClicked(): Observable<ThyImageInfo> {\n return this.downloadClicked$.asObservable();\n }\n\n ngOnDestroy() {\n this.ngUnsubscribe$.next();\n this.ngUnsubscribe$.complete();\n }\n}\n","import {\n Directive,\n ElementRef,\n InjectFlags,\n Input,\n OnChanges,\n OnInit,\n SimpleChanges,\n Injector,\n OnDestroy,\n AfterViewInit\n} from '@angular/core';\nimport { ThyImageGroup } from './image-group.component';\nimport { ThyImageMeta } from './image.class';\nimport { ThyImageService } from './image.service';\nimport { coerceBooleanProperty } from 'ngx-tethys/util';\n\n/**\n * thyImage: 预览图片指令,只可绑定到 img 标签上\n * @name img[thyImage]\n * @order 10\n */\n@Directive({\n selector: 'img[thyImage]',\n exportAs: 'thyImage',\n host: {\n '(click)': 'onPreview($event)',\n class: 'thy-image',\n '[class.thy-image-disabled]': 'thyDisablePreview'\n },\n standalone: true\n})\nexport class ThyImageDirective implements OnInit, OnChanges, AfterViewInit, OnDestroy {\n /**\n * 图片地址\n */\n @Input() thySrc: string;\n\n /**\n * 预览图片地址\n */\n @Input() thyPreviewSrc: string;\n\n /**\n * 图片原图地址\n */\n @Input() thyOriginSrc: string;\n\n /**\n * 图片附加信息,包含 { name: string, size?: string | number; }\n */\n @Input() thyImageMeta: ThyImageMeta;\n\n /**\n * 是否禁止预览\n * @default false\n */\n @Input({ transform: coerceBooleanProperty }) thyDisablePreview: boolean;\n\n /**\n * 是否自动计算图片资源大小\n */\n @Input({ transform: coerceBooleanProperty }) thyResolveSize = false;\n\n get previewable(): boolean {\n return !this.thyDisablePreview;\n }\n\n private parentGroup: ThyImageGroup;\n\n constructor(\n private thyImageService: ThyImageService,\n private injector: Injector,\n private elementRef: ElementRef\n ) {}\n\n ngOnInit(): void {\n this.getParentGroup();\n }\n\n ngAfterViewInit(): void {\n if (this.parentGroup) {\n this.addParentImage();\n }\n }\n\n getParentGroup() {\n while (true) {\n // 多层 thy-image-group 嵌套时,获取最外层 thy-image-group 下的所有图片\n const injector = this.parentGroup?.injector || this.injector;\n const parentGroup = injector.get(ThyImageGroup, null, InjectFlags.SkipSelf);\n if (!parentGroup) {\n break;\n }\n this.parentGroup = parentGroup;\n }\n }\n\n addParentImage() {\n setTimeout(() => {\n const parentElement: HTMLElement = this.parentGroup.element.nativeElement;\n const images = parentElement.querySelectorAll('img[thyImage]');\n const index = Array.prototype.indexOf.call(images, this.elementRef.nativeElement);\n if (index >= 0) {\n this.parentGroup.addImage(this, index);\n } else {\n this.parentGroup.addImage(this, this.parentGroup.images.length);\n }\n });\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n const { thySrc } = changes;\n if (thySrc) {\n this.elementRef.nativeElement.src = thySrc.currentValue;\n }\n }\n\n onPreview(event: MouseEvent) {\n if (!this.previewable || event.button !== 0) {\n return;\n }\n if (this.parentGroup) {\n const previewAbleImages = this.parentGroup.images.filter(e => e.previewable);\n const previewImages = previewAbleImages.map(e => ({\n src: e.thyPreviewSrc || e.thySrc,\n ...e.thyImageMeta,\n origin: {\n src: e.thyOriginSrc\n }\n }));\n const startIndex = previewAbleImages.findIndex(el => this === el);\n this.thyImageService.preview(previewImages, {\n startIndex,\n resolveSize: this.thyResolveSize\n });\n } else {\n const previewImages = [\n {\n src: this.thyPreviewSrc || this.thySrc,\n ...this.thyImageMeta,\n origin: {\n src: this.thyOriginSrc\n }\n }\n ];\n this.thyImageService.preview(previewImages, { resolveSize: this.thyResolveSize });\n }\n }\n\n ngOnDestroy(): void {\n if (this.parentGroup) {\n const index = this.parentGroup.images.findIndex(item => item === this);\n this.parentGroup.removeImage(index);\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ThyImageDirective } from './image.directive';\nimport { DragDropModule } from '@angular/cdk/drag-drop';\nimport { ThyImageGroup } from './image-group.component';\nimport { ThyImagePreview } from './preview/image-preview.component';\nimport { ThyImageService } from './image.service';\nimport { PortalModule } from '@angular/cdk/portal';\nimport { THY_IMAGE_DEFAULT_PREVIEW_OPTIONS_PROVIDER } from './image.config';\nimport { ThyIconModule } from 'ngx-tethys/icon';\nimport { ThyDividerModule } from 'ngx-tethys/divider';\nimport { ThyTooltipModule } from 'ngx-tethys/tooltip';\nimport { ThyCopyModule } from 'ngx-tethys/copy';\nimport { ThyLoadingModule } from 'ngx-tethys/loading';\nimport { ThyDialogModule } from 'ngx-tethys/dialog';\nimport { ThyActionModule } from 'ngx-tethys/action';\n\n@NgModule({\n exports: [ThyImageDirective, ThyImageGroup, ThyImagePreview],\n imports: [\n CommonModule,\n PortalModule,\n DragDropModule,\n ThyIconModule,\n ThyDialogModule,\n ThyDividerModule,\n ThyTooltipModule,\n ThyCopyModule,\n ThyLoadingModule,\n ThyActionModule,\n ThyImageDirective,\n ThyImageGroup,\n ThyImagePreview\n ],\n providers: [ThyImageService, THY_IMAGE_DEFAULT_PREVIEW_OPTIONS_PROVIDER]\n})\nexport class ThyImageModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.ThyImageService"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAGA;;;AAGG;MAQU,aAAa,CAAA;IACtB,WACW,CAAA,QAAkB,EAClB,OAAmB,EAAA;QADnB,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAU;QAClB,IAAO,CAAA,OAAA,GAAP,OAAO,CAAY;QAG9B,IAAM,CAAA,MAAA,GAAwB,EAAE,CAAC;KAF7B;IAIJ,QAAQ,CAAC,KAAwB,EAAE,KAAa,EAAA;QAC5C,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;KACvC;AAED,IAAA,WAAW,CAAC,KAAa,EAAA;QACrB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;KAChC;8GAdQ,aAAa,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAb,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,aAAa,4FALZ,2BAA2B,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;;2FAK5B,aAAa,EAAA,UAAA,EAAA,CAAA;kBAPzB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,kCAAkC;AAC5C,oBAAA,QAAQ,EAAE,2BAA2B;oBACrC,eAAe,EAAE,uBAAuB,CAAC,MAAM;oBAC/C,aAAa,EAAE,iBAAiB,CAAC,IAAI;AACrC,oBAAA,UAAU,EAAE,IAAI;AACnB,iBAAA,CAAA;;;ACVK,MAAO,qBAAuC,SAAQ,wBAA+B,CAAA;AAM1F,CAAA;MAEY,iCAAiC,GAAG,IAAI,cAAc,CAAwB,2BAA2B,EAAE;AAE3G,MAAA,0CAA0C,GAAG;AACtD,IAAA,OAAO,EAAE,iCAAiC;AAC1C,IAAA,QAAQ,EAAE;AACN,QAAA,WAAW,EAAE,IAAI;AACjB,QAAA,iBAAiB,EAAE,IAAI;AACvB,QAAA,YAAY,EAAE,KAAK;AACnB,QAAA,yBAAyB,EAAE,KAAK;AAChC,QAAA,YAAY,EAAE,KAAK;AACtB,KAAA;EACH;AAEW,MAAA,2BAA2B,GAA8B;AAClE,IAAA,IAAI,EAAE,OAAO;AACb,IAAA,gBAAgB,EAAE,IAAI;AACtB,IAAA,gBAAgB,EAAE,IAAI;;;ACxBnB,MAAM,cAAc,GAAG,CAAC,GAAW,KAAI;AAC1C,IAAA,MAAM,GAAG,GAAG,IAAI,cAAc,EAAE,CAAC;AACjC,IAAA,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AACrB,IAAA,GAAG,CAAC,YAAY,GAAG,MAAM,CAAC;IAC1B,MAAM,UAAU,GAAG,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,IAAI,CAC1C,IAAI,CAAC,CAAC,CAAC,EACP,GAAG,CAAC,IAAI,IAAG;QACP,OAAO,GAAG,CAAC,QAAQ,CAAC;KACvB,CAAC,CACL,CAAC;IACF,GAAG,CAAC,IAAI,EAAE,CAAC;AACX,IAAA,OAAO,UAAU,CAAC;AACtB,CAAC;;ACiBD,MAAM,eAAe,GAAG;AACpB,IAAA,CAAC,EAAE,CAAC;AACJ,IAAA,CAAC,EAAE,CAAC;CACP,CAAC;AACF,MAAM,cAAc,GAAG,CAAC,CAAC;AACzB,MAAM,cAAc,GAAG,GAAG,CAAC;AAC3B,MAAM,gBAAgB,GAAG,GAAG,GAAG,CAAC,CAAC;AACjC,MAAM,cAAc,GAAG,EAAE,GAAG,GAAG,CAAC;AAEhC;;;;AAIG;MAcU,eAAe,CAAA;AA6FxB,IAAA,IAAI,YAAY,GAAA;QACZ,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AAC7C,QAAA,IAAI,KAAK,CAAC,IAAI,EAAE;YACZ,KAAK,CAAC,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC;SAC9E;AACD,QAAA,OAAO,KAAK,CAAC;KAChB;AAED,IAAA,IAAI,qBAAqB,GAAA;AACrB,QAAA,IAAI,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,GAAG,IAAI,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC;AACtE,QAAA,IAAI,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;AAC3B,YAAA,OAAO,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;SAC/D;AACD,QAAA,OAAO,QAAQ,CAAC;KACnB;AAED,IAAA,IAAI,WAAW,GAAA;AACX,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE,IAAI,IAAI,IAAI,CAAC,aAAa,EAAE,IAAI,GAAG,CAAC,EAAE;AAC1D,YAAA,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,IAAI,cAAc;AAC5C,kBAAE,cAAc;AAChB,kBAAE,IAAI,CAAC,aAAa,CAAC,IAAI,IAAI,cAAc;AACzC,sBAAE,cAAc;AAChB,sBAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;SACnC;KACJ;AAKD,IAAA,WAAA,CACW,SAAoB,EACpB,aAA4B,EAC3B,GAAsB,EACtB,MAAc,EACd,aAA+B,EAC/B,IAA6B,EAC7B,SAAuB,EAAA;QANxB,IAAS,CAAA,SAAA,GAAT,SAAS,CAAW;QACpB,IAAa,CAAA,aAAA,GAAb,aAAa,CAAe;QAC3B,IAAG,CAAA,GAAA,GAAH,GAAG,CAAmB;QACtB,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;QACd,IAAa,CAAA,aAAA,GAAb,aAAa,CAAkB;QAC/B,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAyB;QAC7B,IAAS,CAAA,SAAA,GAAT,SAAS,CAAc;AAhIzB,QAAA,IAAA,CAAA,eAAe,GAA+B,IAAI,YAAY,EAAE,CAAC;AAE1D,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;QAEjD,IAAM,CAAA,MAAA,GAAwB,EAAE,CAAC;QACjC,IAAY,CAAA,YAAA,GAAW,CAAC,CAAC;QAEzB,IAAqB,CAAA,qBAAA,GAAG,EAAE,CAAC;QAC3B,IAA4B,CAAA,4BAAA,GAAG,EAAE,CAAC;QAClC,IAAY,CAAA,YAAA,GAAG,KAAK,CAAC;QACrB,IAAI,CAAA,IAAA,GAAW,CAAC,CAAC;AACjB,QAAA,IAAA,CAAA,QAAQ,GAAG,EAAE,GAAG,eAAe,EAAE,CAAC;QAClC,IAAU,CAAA,UAAA,GAAG,KAAK,CAAC;QACnB,IAAa,CAAA,aAAA,GAAG,KAAK,CAAC;QACtB,IAAY,CAAA,YAAA,GAAG,KAAK,CAAC;QACrB,IAAc,CAAA,cAAA,GAAG,IAAI,CAAC;QACtB,IAAgB,CAAA,gBAAA,GAAwB,gBAAgB,CAAC;AAEzD,QAAA,IAAA,CAAA,wBAAwB,GAA+B;AACnD,YAAA;AACI,gBAAA,IAAI,EAAE,UAAU;AAChB,gBAAA,IAAI,EAAE,IAAI;AACV,gBAAA,MAAM,EAAE,CAAC,KAAmB,KAAI;oBAC5B,IAAI,CAAC,OAAO,EAAE,CAAC;iBAClB;AACD,gBAAA,IAAI,EAAE,UAAU;AACnB,aAAA;AACD,YAAA;AACI,gBAAA,IAAI,EAAE,SAAS;AACf,gBAAA,IAAI,EAAE,IAAI;AACV,gBAAA,MAAM,EAAE,CAAC,KAAmB,KAAI;oBAC5B,IAAI,CAAC,MAAM,EAAE,CAAC;iBACjB;AACD,gBAAA,IAAI,EAAE,SAAS;AAClB,aAAA;AACD,YAAA;AACI,gBAAA,IAAI,EAAE,YAAY;AAClB,gBAAA,IAAI,EAAE,MAAM;AACZ,gBAAA,MAAM,EAAE,CAAC,KAAmB,KAAI;oBAC5B,IAAI,CAAC,eAAe,EAAE,CAAC;iBAC1B;AACD,gBAAA,IAAI,EAAE,gBAAgB;AACzB,aAAA;AACD,YAAA;AACI,gBAAA,IAAI,EAAE,UAAU;AAChB,gBAAA,IAAI,EAAE,MAAM;gBACZ,MAAM,EAAE,MAAK;oBACT,IAAI,CAAC,YAAY,EAAE,CAAC;iBACvB;AACD,gBAAA,IAAI,EAAE,YAAY;AACrB,aAAA;AACD,YAAA;AACI,gBAAA,IAAI,EAAE,eAAe;AACrB,gBAAA,IAAI,EAAE,MAAM;gBACZ,MAAM,EAAE,MAAK;oBACT,IAAI,CAAC,UAAU,EAAE,CAAC;iBACrB;AACD,gBAAA,IAAI,EAAE,aAAa;AACtB,aAAA;AACD,YAAA;AACI,gBAAA,IAAI,EAAE,cAAc;AACpB,gBAAA,IAAI,EAAE,IAAI;AACV,gBAAA,MAAM,EAAE,CAAC,KAAmB,KAAI;oBAC5B,IAAI,CAAC,WAAW,EAAE,CAAC;iBACtB;AACD,gBAAA,IAAI,EAAE,cAAc;AACvB,aAAA;AACD,YAAA;AACI,gBAAA,IAAI,EAAE,UAAU;AAChB,gBAAA,IAAI,EAAE,IAAI;AACV,gBAAA,MAAM,EAAE,CAAC,KAAmB,KAAI;AAC5B,oBAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;iBACxB;AACD,gBAAA,IAAI,EAAE,UAAU;AACnB,aAAA;AACD,YAAA;AACI,gBAAA,IAAI,EAAE,SAAS;AACf,gBAAA,IAAI,EAAE,MAAM;gBACZ,MAAM,EAAE,MAAK;oBACT,IAAI,CAAC,YAAY,EAAE,CAAC;iBACvB;AACD,gBAAA,IAAI,EAAE,eAAe;AACxB,aAAA;AACD,YAAA;AACI,gBAAA,IAAI,EAAE,aAAa;AACnB,gBAAA,IAAI,EAAE,MAAM;AACZ,gBAAA,IAAI,EAAE,UAAU;AACnB,aAAA;SACJ,CAAC;KAyCE;IAEJ,QAAQ,GAAA;QACJ,IAAI,CAAC,WAAW,EAAE,CAAC;AACnB,QAAA,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,MAAK;YAC/B,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,OAAO,CAAC;AACtC,iBAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;iBACzC,SAAS,CAAC,KAAK,IAAG;AACf,gBAAA,IACI,CAAC,KAAK,CAAC,MAAM,KAAK,KAAK,CAAC,aAAa;AACjC,qBAAC,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAqB,CAAC,CAAC;AACzG,oBAAA,CAAC,IAAI,CAAC,aAAa,EAAE,YAAY,EACnC;oBACE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,CAAC;iBACvE;AACL,aAAC,CAAC,CAAC;YAEP,SAAS,CAAC,IAAI,CAAC,mBAAmB,CAAC,aAAa,EAAE,WAAW,CAAC;AACzD,iBAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;iBACzC,SAAS,CAAC,MAAK;gBACZ,IAAI,CAAC,UAAU,GAAG,CAAC,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC;AACnD,aAAC,CAAC,CAAC;AACX,SAAC,CAAC,CAAC;KACN;IAED,eAAe,GAAA;QACX,IAAI,CAAC,KAAK,EAAE,CAAC;AACb,QAAA,IAAI,CAAC,gBAAgB,GAAG,YAAY,CAAC;AACrC,QAAA,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;QACd,IAAI,CAAC,2BAA2B,EAAE,CAAC;QACnC,IAAI,CAAC,qBAAqB,EAAE,CAAC;AAC7B,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;AAC1B,QAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;KAC5B;IAED,YAAY,GAAA;QACR,IAAI,CAAC,KAAK,EAAE,CAAC;AACb,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAC3B,IAAI,CAAC,kBAAkB,EAAE,CAAC;KAC7B;AAED,IAAA,oBAAoB,CAAC,oBAA6B,EAAA;AAC9C,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC;AAC7B,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;QAC1B,IAAI,CAAC,2BAA2B,EAAE,CAAC;QACnC,IAAI,oBAAoB,EAAE;YACtB,IAAI,CAAC,kCAAkC,EAAE,CAAC;SAC7C;AACD,QAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;KAC5B;AAED,IAAA,sBAAsB,CAAC,oBAA8B,EAAA;AACjD,QAAA,IAAI,GAAG,GAAG,IAAI,KAAK,EAAE,CAAC;QACtB,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC;AAChC,QAAA,GAAG,CAAC,MAAM,GAAG,MAAK;AACd,YAAA,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,GAAG,aAAa,EAAE,CAAC;AACrE,YAAA,MAAM,UAAU,GAAG,WAAW,GAAG,gBAAgB,CAAC;AAClD,YAAA,MAAM,WAAW,GAAG,YAAY,GAAG,cAAc,CAAC;AAClD,YAAA,MAAM,EAAE,YAAY,EAAE,aAAa,EAAE,GAAG,GAAG,CAAC;AAC5C,YAAA,MAAM,MAAM,GAAG,UAAU,GAAG,YAAY,CAAC;AACzC,YAAA,MAAM,MAAM,GAAG,WAAW,GAAG,aAAa,CAAC;YAC3C,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AACtC,YAAA,IAAI,IAAI,GAAG,CAAC,EAAE;AACV,gBAAA,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;aACjB;iBAAM;AACH,gBAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;aACpB;AACD,YAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;YAC1B,IAAI,CAAC,2BAA2B,EAAE,CAAC;YACnC,IAAI,oBAAoB,EAAE;gBACtB,IAAI,CAAC,kCAAkC,EAAE,CAAC;aAC7C;AACD,YAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;AAC7B,SAAC,CAAC;KACL;IAED,kBAAkB,GAAA;QACd,IAAI,CAAC,mBAAmB,EAAE,CAAC,SAAS,CAAC,MAAM,IAAG;YAC1C,IAAI,CAAC,MAAM,EAAE;;AAET,gBAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;gBAC1B,OAAO;aACV;;AAED,YAAA,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;AACnD,gBAAA,IAAI,CAAC,YAAY,CAAC,IAAI,GAAG,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aACvE;AACD,YAAA,IAAI,IAAI,CAAC,WAAW,EAAE;AAClB,gBAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;aACnC;iBAAM;gBACH,IAAI,CAAC,sBAAsB,EAAE,CAAC;aACjC;AACL,SAAC,CAAC,CAAC;KACN;IAED,mBAAmB,GAAA;AACf,QAAA,OAAO,IAAI,UAAU,CAAU,UAAU,IAAG;YACxC,IAAI,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE;AAC3C,gBAAA,IAAI,CAAC,YAAY,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,sBAAsB,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;AAC3F,gBAAA,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACtB,UAAU,CAAC,QAAQ,EAAE,CAAC;gBACtB,OAAO;aACV;AACD,YAAA,IAAI,IAAI,CAAC,YAAY,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE;AAChE,gBAAA,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACtB,UAAU,CAAC,QAAQ,EAAE,CAAC;aACzB;iBAAM;AACH,gBAAA,cAAc,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,SAAS,CAC3C,IAAI,IAAG;oBACH,MAAM,UAAU,GAAG,MAAM,CAAC,GAAG,IAAI,MAAM,CAAC,SAAS,CAAC;oBAClD,MAAM,SAAS,GAAG,UAAU,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;AACnD,oBAAA,IAAI,CAAC,YAAY,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,sBAAsB,CAAC,SAAS,CAAC,CAAC;AAC/E,oBAAA,IAAI,CAAC,YAAY,CAAC,IAAI,GAAG,IAAI,CAAC;AAC9B,oBAAA,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBACtB,UAAU,CAAC,QAAQ,EAAE,CAAC;iBACzB,EACD,KAAK,IAAG;AACJ,oBAAA,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;oBACvB,UAAU,CAAC,QAAQ,EAAE,CAAC;AAC1B,iBAAC,CACJ,CAAC;aACL;AACL,SAAC,CAAC,CAAC;KACN;IAED,WAAW,GAAA;AACP,QAAA,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,EAAE,UAAU,CAAC,IAAI,IAAI,CAAC,aAAa,EAAE,UAAU,CAAC,MAAM,EAAE;AACxF,YAAA,MAAM,oBAAoB,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,wBAAwB,EAAE,MAAM,CAAC,CAAC;AAClF,YAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,aAAa,EAAE,UAAU,CAAC,GAAG,CAAC,SAAS,IAAG;AACpE,gBAAA,IAAI,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,oBAAoB,CAAC,SAAS,CAAC,EAAE;AAChE,oBAAA,OAAO,oBAAoB,CAAC,SAAS,CAAC,CAAC;iBAC1C;qBAAM;AACH,oBAAA,OAAO,SAAqC,CAAC;iBAChD;AACL,aAAC,CAAC,CAAC;SACN;aAAM;AACH,YAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,wBAAwB,CAAC;SAC1D;QACD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,aAAa,EAAE,MAAM,IAAI,CAAC,CAAC;QAC9C,IAAI,CAAC,kBAAkB,EAAE,CAAC;KAC7B;AAED,IAAA,QAAQ,CAAC,KAAmB,EAAA;AACxB,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACjC,MAAM,GAAG,GAAG,KAAK,CAAC,MAAM,EAAE,GAAG,IAAI,KAAK,CAAC,GAAG,CAAC;QAC3C,cAAc,CAAC,GAAG,CAAC;AACd,aAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;aACzC,SAAS,CAAC,IAAI,IAAG;YACd,MAAM,UAAU,GAAG,MAAM,CAAC,GAAG,IAAI,MAAM,CAAC,SAAS,CAAC;YAClD,MAAM,SAAS,GAAG,UAAU,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;YACnD,IAAI,CAAC,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;YACpC,CAAC,CAAC,QAAQ,GAAG,KAAK,CAAC,IAAI,IAAI,aAAa,CAAC;AACzC,YAAA,CAAC,CAAC,IAAI,GAAG,SAAS,CAAC;YACnB,CAAC,CAAC,KAAK,EAAE,CAAC;AACd,SAAC,CAAC,CAAC;KACV;IAED,MAAM,GAAA;AACF,QAAA,IAAI,IAAI,CAAC,IAAI,GAAG,cAAc,EAAE;AAC5B,YAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,GAAG,GAAG,EAAE,cAAc,CAAC,CAAC;YACtD,IAAI,CAAC,qBAAqB,EAAE,CAAC;YAC7B,IAAI,CAAC,2BAA2B,EAAE,CAAC;AACnC,YAAA,IAAI,CAAC,QAAQ,GAAG,EAAE,GAAG,eAAe,EAAE,CAAC;SAC1C;KACJ;IAED,OAAO,GAAA;AACH,QAAA,IAAI,IAAI,CAAC,IAAI,GAAG,cAAc,EAAE;AAC5B,YAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,GAAG,GAAG,EAAE,cAAc,CAAC,CAAC;YACtD,IAAI,CAAC,qBAAqB,EAAE,CAAC;YAC7B,IAAI,CAAC,2BAA2B,EAAE,CAAC;AACnC,YAAA,IAAI,CAAC,QAAQ,GAAG,EAAE,GAAG,eAAe,EAAE,CAAC;SAC1C;KACJ;IAED,qBAAqB,GAAA;AACjB,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC;AAClE,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC;AACpE,QAAA,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,GAAG,aAAa,EAAE,CAAC;QACrE,IAAI,KAAK,IAAI,WAAW,IAAI,MAAM,IAAI,YAAY,EAAE;AAChD,YAAA,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;SAC/B;aAAM;AACH,YAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;SAC9B;KACJ;IAED,YAAY,GAAA;AACR,QAAA,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,MAAM,EAAE,GAAG,IAAI,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;KAClF;IAED,WAAW,GAAA;AACP,QAAA,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC;QAClB,IAAI,CAAC,2BAA2B,EAAE,CAAC;KACtC;IAED,UAAU,GAAA;AACN,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,oBAAoB,CAAC,CAAC;AAClF,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;AACzB,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC;AAC5C,YAAA,MAAM,EAAE,aAAa;AACxB,SAAA,CAAC,CAAC;AACH,QAAA,aAAa,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,MAAK;AACvC,YAAA,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;AAC1B,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;AAC5B,SAAC,CAAC,CAAC;KACN;AAED,IAAA,QAAQ,CAAC,KAAmB,EAAA;AACxB,QAAA,IAAI,KAAK,CAAC,SAAS,EAAE;AACjB,YAAA,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;SAC1C;aAAM;AACH,YAAA,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;SACxC;KACJ;IAED,IAAI,GAAA;AACA,QAAA,IAAI,IAAI,CAAC,YAAY,GAAG,CAAC,EAAE;YACvB,IAAI,CAAC,YAAY,EAAE,CAAC;AACpB,YAAA,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;YAC3B,IAAI,CAAC,KAAK,EAAE,CAAC;YACb,IAAI,CAAC,kBAAkB,EAAE,CAAC;SAC7B;KACJ;IAED,IAAI,GAAA;AACA,QAAA,IAAI,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;YAC5C,IAAI,CAAC,YAAY,EAAE,CAAC;AACpB,YAAA,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;YAC3B,IAAI,CAAC,KAAK,EAAE,CAAC;YACb,IAAI,CAAC,kBAAkB,EAAE,CAAC;SAC7B;KACJ;IAED,YAAY,GAAA;AACR,QAAA,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;AACxB,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC;AAClE,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC;AACpE,QAAA,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;AACrE,QAAA,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,GAAG,aAAa,EAAE,CAAC;QACrE,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC;AACzC,QAAA,MAAM,gBAAgB,GAAG;YACrB,KAAK,EAAE,QAAQ,GAAG,MAAM,GAAG,KAAK;YAChC,MAAM,EAAE,QAAQ,GAAG,KAAK,GAAG,MAAM;YACjC,IAAI;YACJ,GAAG;YACH,WAAW;YACX,YAAY;SACf,CAAC;AACF,QAAA,MAAM,aAAa,GAAG,qBAAqB,CAAC,gBAAgB,CAAC,CAAC;AAC9D,QAAA,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE;AAC5E,YAAA,IAAI,CAAC,QAAQ,GAAG,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,GAAG,aAAa,EAAE,CAAC;SAC1D;KACJ;IAEO,KAAK,GAAA;AACT,QAAA,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;QACzC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,aAAa,EAAE,MAAM,IAAI,CAAC,CAAC;AAC9C,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE,GAAG,eAAe,EAAE,CAAC;AACvC,QAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;KAC5B;IAEO,2BAA2B,GAAA;AAC/B,QAAA,IAAI,CAAC,qBAAqB,GAAG,CAAW,QAAA,EAAA,IAAI,CAAC,IAAI,CAAA,EAAA,EAAK,IAAI,CAAC,IAAI,CAAe,YAAA,EAAA,IAAI,CAAC,MAAM,MAAM,CAAC;KACnG;IAEO,kCAAkC,GAAA;AACtC,QAAA,IAAI,CAAC,4BAA4B,GAAG,CAAe,YAAA,EAAA,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAA,IAAA,EAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC;KACpG;8GA7YQ,eAAe,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,aAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,YAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAf,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAe,gfC3D5B,itHA2FA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDlCc,mBAAmB,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,qBAAA,EAAA,iBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,mBAAA,EAAA,oBAAA,EAAA,2BAAA,EAAA,kBAAA,EAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,SAAS,EAAE,QAAA,EAAA,yBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAAA,eAAA,EAAA,WAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,cAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,OAAO,EAAE,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,yBAAA,EAAA,iBAAA,EAAA,0BAAA,EAAA,qBAAA,EAAA,yBAAA,EAAA,cAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,cAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,UAAU,oGAAE,OAAO,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,eAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,uBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,UAAU,EAAE,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,UAAU,qJAAE,gBAAgB,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,aAAA,EAAA,mBAAA,EAAA,gBAAA,EAAA,eAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;;2FAEvG,eAAe,EAAA,UAAA,EAAA,CAAA;kBAb3B,SAAS;+BACI,mBAAmB,EAAA,QAAA,EACnB,iBAAiB,EAAA,eAAA,EAEV,uBAAuB,CAAC,MAAM,EAChC,aAAA,EAAA,iBAAiB,CAAC,IAAI,EAC/B,IAAA,EAAA;AACF,wBAAA,KAAK,EAAE,wBAAwB;AAC/B,wBAAA,kCAAkC,EAAE,YAAY;AACnD,qBAAA,EAAA,UAAA,EACW,IAAI,EACP,OAAA,EAAA,CAAC,mBAAmB,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,gBAAgB,CAAC,EAAA,QAAA,EAAA,itHAAA,EAAA,CAAA;kPAGvG,eAAe,EAAA,CAAA;sBAAxB,MAAM;gBAsHiC,QAAQ,EAAA,CAAA;sBAA/C,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,QAAQ,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAA;gBACc,mBAAmB,EAAA,CAAA;sBAAtE,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,qBAAqB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;;;ME7KzC,kBAAkB,CAAA;AAC3B,IAAA,IAAI,iBAAiB,GAAA;AACjB,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC;KAC3C;AAED,IAAA,WAAA,CACW,eAAgC,EAC/B,MAA8B,EAC9B,SAAwC,EAAA;QAFzC,IAAe,CAAA,eAAA,GAAf,eAAe,CAAiB;QAC/B,IAAM,CAAA,MAAA,GAAN,MAAM,CAAwB;QAC9B,IAAS,CAAA,SAAA,GAAT,SAAS,CAA+B;QAEhD,SAAS;AACJ,aAAA,aAAa,EAAE;AACf,aAAA,IAAI,EAAE;aACN,SAAS,CAAC,KAAK,IAAG;YACf,IAAI,CAAC,MAAM,CAAC,yBAAyB,IAAI,KAAK,CAAC,OAAO,KAAK,UAAU,EAAE;gBACnE,IAAI,CAAC,IAAI,EAAE,CAAC;aACf;YACD,IAAI,CAAC,MAAM,CAAC,yBAAyB,IAAI,KAAK,CAAC,OAAO,KAAK,WAAW,EAAE;gBACpE,IAAI,CAAC,IAAI,EAAE,CAAC;aACf;AACL,SAAC,CAAC,CAAC;KACV;IAED,IAAI,GAAA;AACA,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC;KAC/B;IAED,IAAI,GAAA;AACA,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC;KAC/B;IAED,eAAe,GAAA;QACX,OAAO,IAAI,CAAC,eAAe,CAAC,eAAe,CAAC,YAAY,EAAE,CAAC;KAC9D;AACJ;;AC/BD;;AAEG;MAEU,eAAe,CAAA;IAUxB,WACW,CAAA,SAAoB,EAG3B,aAAoC,EAAA;QAH7B,IAAS,CAAA,SAAA,GAAT,SAAS,CAAW;AALvB,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,OAAO,EAAgB,CAAC;AAE/C,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,OAAO,EAAQ,CAAC;AAQzC,QAAA,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;KACtC;AAED;;AAEG;IACH,OAAO,CAAC,MAAsB,EAAE,OAA0D,EAAA;QACtF,MAAM,MAAM,GAAG,EAAE,GAAG,IAAI,CAAC,aAAa,EAAE,GAAG,OAAO,EAAE,CAAC;QACrD,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,EAAE;AACnD,YAAA,YAAY,EAAE;gBACV,MAAM;gBACN,YAAY,EAAE,OAAO,EAAE,UAAU,IAAI,CAAC,IAAI,OAAO,EAAE,UAAU,GAAG,MAAM,CAAC,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,CAAC;AACtG,gBAAA,aAAa,EAAE,MAAM;AACxB,aAAA;AACD,YAAA,aAAa,EAAE,4BAA4B;AAC3C,YAAA,UAAU,EAAE,6BAA6B;YACzC,IAAI,EAAE,cAAc,CAAC,IAAI;AACzB,YAAA,GAAG,MAAM;AACZ,SAAA,CAAC,CAAC;QACH,MAAM,eAAe,GAAG,IAAI,kBAAkB,CAAC,SAAS,CAAC,iBAAiB,EAAE,EAAE,GAAG,IAAI,CAAC,aAAa,EAAE,GAAG,OAAO,EAAE,EAAE,SAAS,CAAC,CAAC;QAC9H,eAAe;AACV,aAAA,eAAe,EAAE;AACjB,aAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;aACpC,SAAS,CAAC,KAAK,IAAG;AACf,YAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACtC,SAAC,CAAC,CAAC;AACP,QAAA,OAAO,eAAe,CAAC;KAC1B;IAED,eAAe,GAAA;AACX,QAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE,CAAC;KAC/C;IAED,WAAW,GAAA;AACP,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;AAC3B,QAAA,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,CAAC;KAClC;AApDQ,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,2CAaZ,iCAAiC,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;kHAbpC,eAAe,EAAA,CAAA,CAAA,EAAA;;2FAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAD3B,UAAU;;0BAaF,QAAQ;;0BACR,MAAM;2BAAC,iCAAiC,CAAA;;;ACTjD;;;;AAIG;MAWU,iBAAiB,CAAA;AAgC1B,IAAA,IAAI,WAAW,GAAA;AACX,QAAA,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC;KAClC;AAID,IAAA,WAAA,CACY,eAAgC,EAChC,QAAkB,EAClB,UAAsB,EAAA;QAFtB,IAAe,CAAA,eAAA,GAAf,eAAe,CAAiB;QAChC,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAU;QAClB,IAAU,CAAA,UAAA,GAAV,UAAU,CAAY;AAdlC;;AAEG;QAC0C,IAAc,CAAA,cAAA,GAAG,KAAK,CAAC;KAYhE;IAEJ,QAAQ,GAAA;QACJ,IAAI,CAAC,cAAc,EAAE,CAAC;KACzB;IAED,eAAe,GAAA;AACX,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;YAClB,IAAI,CAAC,cAAc,EAAE,CAAC;SACzB;KACJ;IAED,cAAc,GAAA;QACV,OAAO,IAAI,EAAE;;YAET,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC;AAC7D,YAAA,MAAM,WAAW,GAAG,QAAQ,CAAC,GAAG,CAAC,aAAa,EAAE,IAAI,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC;YAC5E,IAAI,CAAC,WAAW,EAAE;gBACd,MAAM;aACT;AACD,YAAA,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;SAClC;KACJ;IAED,cAAc,GAAA;QACV,UAAU,CAAC,MAAK;YACZ,MAAM,aAAa,GAAgB,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,aAAa,CAAC;YAC1E,MAAM,MAAM,GAAG,aAAa,CAAC,gBAAgB,CAAC,eAAe,CAAC,CAAC;AAC/D,YAAA,MAAM,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;AAClF,YAAA,IAAI,KAAK,IAAI,CAAC,EAAE;gBACZ,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;aAC1C;iBAAM;AACH,gBAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;aACnE;AACL,SAAC,CAAC,CAAC;KACN;AAED,IAAA,WAAW,CAAC,OAAsB,EAAA;AAC9B,QAAA,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;QAC3B,IAAI,MAAM,EAAE;YACR,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,GAAG,GAAG,MAAM,CAAC,YAAY,CAAC;SAC3D;KACJ;AAED,IAAA,SAAS,CAAC,KAAiB,EAAA;QACvB,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;YACzC,OAAO;SACV;AACD,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;AAClB,YAAA,MAAM,iBAAiB,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC,CAAC;YAC7E,MAAM,aAAa,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC,KAAK;AAC9C,gBAAA,GAAG,EAAE,CAAC,CAAC,aAAa,IAAI,CAAC,CAAC,MAAM;gBAChC,GAAG,CAAC,CAAC,YAAY;AACjB,gBAAA,MAAM,EAAE;oBACJ,GAAG,EAAE,CAAC,CAAC,YAAY;AACtB,iBAAA;AACJ,aAAA,CAAC,CAAC,CAAC;AACJ,YAAA,MAAM,UAAU,GAAG,iBAAiB,CAAC,SAAS,CAAC,EAAE,IAAI,IAAI,KAAK,EAAE,CAAC,CAAC;AAClE,YAAA,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,aAAa,EAAE;gBACxC,UAAU;gBACV,WAAW,EAAE,IAAI,CAAC,cAAc;AACnC,aAAA,CAAC,CAAC;SACN;aAAM;AACH,YAAA,MAAM,aAAa,GAAG;AAClB,gBAAA;AACI,oBAAA,GAAG,EAAE,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,MAAM;oBACtC,GAAG,IAAI,CAAC,YAAY;AACpB,oBAAA,MAAM,EAAE;wBACJ,GAAG,EAAE,IAAI,CAAC,YAAY;AACzB,qBAAA;AACJ,iBAAA;aACJ,CAAC;AACF,YAAA,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,WAAW,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC;SACrF;KACJ;IAED,WAAW,GAAA;AACP,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;AAClB,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,IAAI,IAAI,KAAK,IAAI,CAAC,CAAC;AACvE,YAAA,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;SACvC;KACJ;8GA3HQ,iBAAiB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,eAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAAjB,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,aAAA,EAAA,eAAA,EAAA,YAAA,EAAA,cAAA,EAAA,YAAA,EAAA,cAAA,EAAA,iBAAA,EAAA,CAAA,mBAAA,EAAA,mBAAA,EAyBN,qBAAqB,CAAA,EAAA,cAAA,EAAA,CAAA,gBAAA,EAAA,gBAAA,EAKrB,qBAAqB,CAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,mBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,0BAAA,EAAA,mBAAA,EAAA,EAAA,cAAA,EAAA,WAAA,EAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FA9BhC,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAV7B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,eAAe;AACzB,oBAAA,QAAQ,EAAE,UAAU;AACpB,oBAAA,IAAI,EAAE;AACF,wBAAA,SAAS,EAAE,mBAAmB;AAC9B,wBAAA,KAAK,EAAE,WAAW;AAClB,wBAAA,4BAA4B,EAAE,mBAAmB;AACpD,qBAAA;AACD,oBAAA,UAAU,EAAE,IAAI;AACnB,iBAAA,CAAA;iIAKY,MAAM,EAAA,CAAA;sBAAd,KAAK;gBAKG,aAAa,EAAA,CAAA;sBAArB,KAAK;gBAKG,YAAY,EAAA,CAAA;sBAApB,KAAK;gBAKG,YAAY,EAAA,CAAA;sBAApB,KAAK;gBAMuC,iBAAiB,EAAA,CAAA;sBAA7D,KAAK;uBAAC,EAAE,SAAS,EAAE,qBAAqB,EAAE,CAAA;gBAKE,cAAc,EAAA,CAAA;sBAA1D,KAAK;uBAAC,EAAE,SAAS,EAAE,qBAAqB,EAAE,CAAA;;;MC1BlC,cAAc,CAAA;8GAAd,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;AAAd,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,YAhBnB,YAAY;YACZ,YAAY;YACZ,cAAc;YACd,aAAa;YACb,eAAe;YACf,gBAAgB;YAChB,gBAAgB;YAChB,aAAa;YACb,gBAAgB;YAChB,eAAe;YACf,iBAAiB;YACjB,aAAa;AACb,YAAA,eAAe,CAdT,EAAA,OAAA,EAAA,CAAA,iBAAiB,EAAE,aAAa,EAAE,eAAe,CAAA,EAAA,CAAA,CAAA,EAAA;AAkBlD,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,aAFZ,CAAC,eAAe,EAAE,0CAA0C,CAAC,YAdpE,YAAY;YACZ,YAAY;YACZ,cAAc;YACd,aAAa;YACb,eAAe;YACf,gBAAgB;YAChB,gBAAgB;YAChB,aAAa;YACb,gBAAgB;YAChB,eAAe;YAGf,eAAe,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAIV,cAAc,EAAA,UAAA,EAAA,CAAA;kBAnB1B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,OAAO,EAAE,CAAC,iBAAiB,EAAE,aAAa,EAAE,eAAe,CAAC;AAC5D,oBAAA,OAAO,EAAE;wBACL,YAAY;wBACZ,YAAY;wBACZ,cAAc;wBACd,aAAa;wBACb,eAAe;wBACf,gBAAgB;wBAChB,gBAAgB;wBAChB,aAAa;wBACb,gBAAgB;wBAChB,eAAe;wBACf,iBAAiB;wBACjB,aAAa;wBACb,eAAe;AAClB,qBAAA;AACD,oBAAA,SAAS,EAAE,CAAC,eAAe,EAAE,0CAA0C,CAAC;AAC3E,iBAAA,CAAA;;;ACnCD;;AAEG;;;;"}
|
|
1
|
+
{"version":3,"file":"ngx-tethys-image.mjs","sources":["../../../src/image/image-group.component.ts","../../../src/image/image.config.ts","../../../src/image/utils.ts","../../../src/image/preview/image-preview.component.ts","../../../src/image/preview/image-preview.component.html","../../../src/image/preview/image-preview-ref.ts","../../../src/image/image.service.ts","../../../src/image/image.directive.ts","../../../src/image/module.ts","../../../src/image/ngx-tethys-image.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, ViewEncapsulation, Injector, ElementRef, inject } from '@angular/core';\nimport { ThyImageDirective } from './image.directive';\n\n/**\n * 图片分组,提供 thyImageGroup 指令和 thy-image-group 标签两种使用方式\n * @name thy-image-group,[thyImageGroup]\n */\n@Component({\n selector: 'thy-image-group, [thyImageGroup]',\n template: '<ng-content></ng-content>',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n standalone: true\n})\nexport class ThyImageGroup {\n injector = inject(Injector);\n element = inject(ElementRef);\n\n images: ThyImageDirective[] = [];\n\n addImage(image: ThyImageDirective, index: number): void {\n this.images.splice(index, 0, image);\n }\n\n removeImage(index: number) {\n this.images.splice(index, 1);\n }\n}\n","import { InjectionToken } from '@angular/core';\nimport { ThyAbstractOverlayConfig, ThyAbstractOverlayOptions } from 'ngx-tethys/core';\n\nexport class ThyImagePreviewConfig<TData = unknown> extends ThyAbstractOverlayConfig<TData> {\n closeOnNavigation?: boolean;\n disableClose?: boolean;\n disableKeyboardSelectable?: boolean;\n zoom?: number;\n rotate?: number;\n}\n\nexport const THY_IMAGE_DEFAULT_PREVIEW_OPTIONS = new InjectionToken<ThyImagePreviewConfig>('thy-image-default-options');\n\nexport const THY_IMAGE_DEFAULT_PREVIEW_OPTIONS_PROVIDER = {\n provide: THY_IMAGE_DEFAULT_PREVIEW_OPTIONS,\n useValue: {\n hasBackdrop: true,\n closeOnNavigation: true,\n disableClose: false,\n disableKeyboardSelectable: false,\n restoreFocus: false\n }\n};\n\nexport const imageAbstractOverlayOptions: ThyAbstractOverlayOptions = {\n name: 'image',\n animationEnabled: true,\n disposeWhenClose: true\n};\n","import { fromEvent } from 'rxjs';\nimport { map, take } from 'rxjs/operators';\n\nexport const fetchImageBlob = (url: string) => {\n const xhr = new XMLHttpRequest();\n xhr.open('GET', url);\n xhr.responseType = 'blob';\n const loadedXhr$ = fromEvent(xhr, 'load').pipe(\n take(1),\n map(data => {\n return xhr.response;\n })\n );\n xhr.send();\n return loadedXhr$;\n};\n","import { CdkDrag } from '@angular/cdk/drag-drop';\n\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n DestroyRef,\n ElementRef,\n EventEmitter,\n NgZone,\n OnInit,\n Output,\n ViewChild,\n ViewEncapsulation,\n inject\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { ThyAction, ThyActions } from 'ngx-tethys/action';\nimport { ThyCopyDirective, ThyCopyEvent } from 'ngx-tethys/copy';\nimport { ThyDialog } from 'ngx-tethys/dialog';\nimport { ThyDivider } from 'ngx-tethys/divider';\nimport { ThyFullscreen } from 'ngx-tethys/fullscreen';\nimport { ThyIcon } from 'ngx-tethys/icon';\nimport { ThyLoading } from 'ngx-tethys/loading';\nimport { ThyNotifyService } from 'ngx-tethys/notify';\nimport { ThyTooltipDirective } from 'ngx-tethys/tooltip';\nimport { getClientSize, getFitContentPosition, getOffset, helpers, humanizeBytes, isNumber, isUndefinedOrNull } from 'ngx-tethys/util';\nimport { Observable, fromEvent } from 'rxjs';\nimport { InternalImageInfo, ThyImageInfo, ThyImagePreviewMode, ThyImagePreviewOperation, ThyImagePreviewOptions } from '../image.class';\nimport { fetchImageBlob } from '../utils';\n\nconst initialPosition = {\n x: 0,\n y: 0\n};\nconst IMAGE_MAX_ZOOM = 3;\nconst IMAGE_MIN_ZOOM = 0.1;\nconst HORIZONTAL_SPACE = 100 * 2; // left: 100px; right: 100px\nconst VERTICAL_SPACE = 96 + 106; // top: 96px; bottom: 106px\n\n/**\n * 图片预览组件\n * @name thy-image-preview\n * @order 20\n */\n@Component({\n selector: 'thy-image-preview',\n exportAs: 'thyImagePreview',\n templateUrl: './image-preview.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'thy-image-preview-wrap',\n '[class.thy-image-preview-moving]': 'isDragging'\n },\n standalone: true,\n imports: [ThyTooltipDirective, ThyAction, CdkDrag, ThyLoading, ThyIcon, ThyActions, ThyDivider, ThyCopyDirective]\n})\nexport class ThyImagePreview implements OnInit {\n thyDialog = inject(ThyDialog);\n thyFullscreen = inject(ThyFullscreen);\n private cdr = inject(ChangeDetectorRef);\n private ngZone = inject(NgZone);\n private notifyService = inject(ThyNotifyService);\n private host = inject<ElementRef<HTMLElement>>(ElementRef);\n private sanitizer = inject(DomSanitizer);\n\n @Output() downloadClicked: EventEmitter<ThyImageInfo> = new EventEmitter();\n\n private readonly destroyRef = inject(DestroyRef);\n\n images: InternalImageInfo[] = [];\n previewIndex: number = 0;\n previewConfig: ThyImagePreviewOptions;\n previewImageTransform = '';\n previewImageWrapperTransform = '';\n zoomDisabled = false;\n zoom: number = 1;\n position = { ...initialPosition };\n isDragging = false;\n isLoadingDone = false;\n isFullScreen = false;\n isInsideScreen = true;\n currentImageMode: ThyImagePreviewMode = 'original-scale';\n previewOperations: ThyImagePreviewOperation[];\n defaultPreviewOperations: ThyImagePreviewOperation[] = [\n {\n icon: 'zoom-out',\n name: '缩小',\n action: (image: ThyImageInfo) => {\n this.zoomOut();\n },\n type: 'zoom-out'\n },\n {\n icon: 'zoom-in',\n name: '放大',\n action: (image: ThyImageInfo) => {\n this.zoomIn();\n },\n type: 'zoom-in'\n },\n {\n icon: 'one-to-one',\n name: '原始比例',\n action: (image: ThyImageInfo) => {\n this.setOriginalSize();\n },\n type: 'original-scale'\n },\n {\n icon: 'max-view',\n name: '适应屏幕',\n action: () => {\n this.setFitScreen();\n },\n type: 'fit-screen'\n },\n {\n icon: 'expand-arrows',\n name: '全屏显示',\n action: () => {\n this.fullScreen();\n },\n type: 'full-screen'\n },\n {\n icon: 'rotate-right',\n name: '旋转',\n action: (image: ThyImageInfo) => {\n this.rotateRight();\n },\n type: 'rotate-right'\n },\n {\n icon: 'download',\n name: '下载',\n action: (image: ThyImageInfo) => {\n this.download(image);\n },\n type: 'download'\n },\n {\n icon: 'preview',\n name: '查看原图',\n action: () => {\n this.viewOriginal();\n },\n type: 'view-original'\n },\n {\n icon: 'link-insert',\n name: '复制链接',\n type: 'copyLink'\n }\n ];\n\n private rotate: number;\n\n get previewImage(): InternalImageInfo {\n const image = this.images[this.previewIndex];\n if (image.size) {\n image.size = isNumber(image.size) ? humanizeBytes(image.size) : image.size;\n }\n return image;\n }\n\n get previewImageOriginSrc() {\n let imageSrc = this.previewImage.origin?.src || this.previewImage.src;\n if (imageSrc.startsWith('./')) {\n return window.location.host + '/' + imageSrc.split('./')[1];\n }\n return imageSrc;\n }\n\n get defaultZoom(): number {\n if (this.previewConfig?.zoom && this.previewConfig?.zoom > 0) {\n return this.previewConfig.zoom >= IMAGE_MAX_ZOOM\n ? IMAGE_MAX_ZOOM\n : this.previewConfig.zoom <= IMAGE_MIN_ZOOM\n ? IMAGE_MIN_ZOOM\n : this.previewConfig.zoom;\n }\n }\n\n @ViewChild('imgRef', { static: false }) imageRef!: ElementRef<HTMLImageElement>;\n @ViewChild('imagePreviewWrapper', { static: true }) imagePreviewWrapper!: ElementRef<HTMLElement>;\n\n ngOnInit(): void {\n this.initPreview();\n this.ngZone.runOutsideAngular(() => {\n fromEvent(this.host.nativeElement, 'click')\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(event => {\n if (\n (event.target === event.currentTarget ||\n (this.isInsideScreen && this.imagePreviewWrapper.nativeElement.contains(event.target as HTMLElement))) &&\n !this.previewConfig?.disableClose\n ) {\n this.ngZone.run(() => !this.isFullScreen && this.thyDialog.close());\n }\n });\n\n fromEvent(this.imagePreviewWrapper.nativeElement, 'mousedown')\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => {\n this.isDragging = !this.isInsideScreen && true;\n });\n });\n }\n\n setOriginalSize() {\n this.reset();\n this.currentImageMode = 'fit-screen';\n this.zoom = 1;\n this.updatePreviewImageTransform();\n this.calculateInsideScreen();\n this.isLoadingDone = true;\n this.cdr.detectChanges();\n }\n\n setFitScreen() {\n this.reset();\n this.isInsideScreen = true;\n this.updatePreviewImage();\n }\n\n useDefaultZoomUpdate(isUpdateImageWrapper: boolean) {\n this.zoom = this.defaultZoom;\n this.isLoadingDone = true;\n this.updatePreviewImageTransform();\n if (isUpdateImageWrapper) {\n this.updatePreviewImageWrapperTransform();\n }\n this.cdr.detectChanges();\n }\n\n useCalculateZoomUpdate(isUpdateImageWrapper?: boolean) {\n let img = new Image();\n img.src = this.previewImage.src;\n img.onload = () => {\n const { width: offsetWidth, height: offsetHeight } = getClientSize();\n const innerWidth = offsetWidth - HORIZONTAL_SPACE;\n const innerHeight = offsetHeight - VERTICAL_SPACE;\n const { naturalWidth, naturalHeight } = img;\n const xRatio = innerWidth / naturalWidth;\n const yRatio = innerHeight / naturalHeight;\n const zoom = Math.min(xRatio, yRatio);\n if (zoom > 1) {\n this.zoom = 1;\n } else {\n this.zoom = zoom;\n }\n this.isLoadingDone = true;\n this.updatePreviewImageTransform();\n if (isUpdateImageWrapper) {\n this.updatePreviewImageWrapperTransform();\n }\n this.cdr.detectChanges();\n };\n }\n\n updatePreviewImage() {\n this.resolvePreviewImage().subscribe(result => {\n if (!result) {\n // error\n this.isLoadingDone = true;\n return;\n }\n // image size\n if (!this.previewImage.size && this.previewImage.blob) {\n this.previewImage.size = humanizeBytes(this.previewImage.blob.size);\n }\n if (this.defaultZoom) {\n this.useDefaultZoomUpdate(true);\n } else {\n this.useCalculateZoomUpdate();\n }\n });\n }\n\n resolvePreviewImage() {\n return new Observable<Boolean>(subscriber => {\n if (this.previewImage.src.startsWith('blob:')) {\n this.previewImage.objectURL = this.sanitizer.bypassSecurityTrustUrl(this.previewImage.src);\n subscriber.next(true);\n subscriber.complete();\n return;\n }\n if (this.previewImage.objectURL || !this.previewConfig.resolveSize) {\n subscriber.next(true);\n subscriber.complete();\n } else {\n fetchImageBlob(this.previewImage.src).subscribe(\n blob => {\n const urlCreator = window.URL || window.webkitURL;\n const objectURL = urlCreator.createObjectURL(blob);\n this.previewImage.objectURL = this.sanitizer.bypassSecurityTrustUrl(objectURL);\n this.previewImage.blob = blob;\n subscriber.next(true);\n subscriber.complete();\n },\n error => {\n subscriber.next(false);\n subscriber.complete();\n }\n );\n }\n });\n }\n\n initPreview() {\n if (Array.isArray(this.previewConfig?.operations) && this.previewConfig?.operations.length) {\n const defaultOperationsMap = helpers.keyBy(this.defaultPreviewOperations, 'type');\n this.previewOperations = this.previewConfig?.operations.map(operation => {\n if (helpers.isString(operation) && defaultOperationsMap[operation]) {\n return defaultOperationsMap[operation];\n } else {\n return operation as ThyImagePreviewOperation;\n }\n });\n } else {\n this.previewOperations = this.defaultPreviewOperations;\n }\n this.rotate = this.previewConfig?.rotate ?? 0;\n this.updatePreviewImage();\n }\n\n download(image: ThyImageInfo) {\n this.downloadClicked.emit(image);\n const src = image.origin?.src || image.src;\n fetchImageBlob(src)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(blob => {\n const urlCreator = window.URL || window.webkitURL;\n const objectURL = urlCreator.createObjectURL(blob);\n let a = document.createElement('a');\n a.download = image.name || 'default.png';\n a.href = objectURL;\n a.click();\n });\n }\n\n zoomIn(): void {\n if (this.zoom < IMAGE_MAX_ZOOM) {\n this.zoom = Math.min(this.zoom + 0.1, IMAGE_MAX_ZOOM);\n this.calculateInsideScreen();\n this.updatePreviewImageTransform();\n this.position = { ...initialPosition };\n }\n }\n\n zoomOut(): void {\n if (this.zoom > IMAGE_MIN_ZOOM) {\n this.zoom = Math.max(this.zoom - 0.1, IMAGE_MIN_ZOOM);\n this.calculateInsideScreen();\n this.updatePreviewImageTransform();\n this.position = { ...initialPosition };\n }\n }\n\n calculateInsideScreen() {\n const width = this.imageRef.nativeElement.offsetWidth * this.zoom;\n const height = this.imageRef.nativeElement.offsetHeight * this.zoom;\n const { width: clientWidth, height: clientHeight } = getClientSize();\n if (width >= clientWidth || height >= clientHeight) {\n this.isInsideScreen = false;\n } else {\n this.isInsideScreen = true;\n }\n }\n\n viewOriginal() {\n window.open(this.previewImage?.origin?.src || this.previewImage.src, '_blank');\n }\n\n rotateRight(): void {\n this.rotate += 90;\n this.updatePreviewImageTransform();\n }\n\n fullScreen(): void {\n const targetElement = this.host.nativeElement.querySelector('.thy-image-preview');\n this.isFullScreen = true;\n const fullscreenRef = this.thyFullscreen.launch({\n target: targetElement\n });\n fullscreenRef.afterExited().subscribe(() => {\n this.isFullScreen = false;\n this.cdr.markForCheck();\n });\n }\n\n copyLink(event: ThyCopyEvent) {\n if (event.isSuccess) {\n this.notifyService.success('复制图片地址成功');\n } else {\n this.notifyService.error('复制图片地址失败');\n }\n }\n\n prev() {\n if (this.previewIndex > 0) {\n this.previewIndex--;\n this.isLoadingDone = false;\n this.reset();\n this.updatePreviewImage();\n }\n }\n\n next() {\n if (this.previewIndex < this.images.length - 1) {\n this.previewIndex++;\n this.isLoadingDone = false;\n this.reset();\n this.updatePreviewImage();\n }\n }\n\n dragReleased() {\n this.isDragging = false;\n const width = this.imageRef.nativeElement.offsetWidth * this.zoom;\n const height = this.imageRef.nativeElement.offsetHeight * this.zoom;\n const { left, top } = getOffset(this.imageRef.nativeElement, window);\n const { width: clientWidth, height: clientHeight } = getClientSize();\n const isRotate = this.rotate % 180 !== 0;\n const fitContentParams = {\n width: isRotate ? height : width,\n height: isRotate ? width : height,\n left,\n top,\n clientWidth,\n clientHeight\n };\n const fitContentPos = getFitContentPosition(fitContentParams);\n if (!isUndefinedOrNull(fitContentPos.x) || !isUndefinedOrNull(fitContentPos.y)) {\n this.position = { ...this.position, ...fitContentPos };\n }\n }\n\n private reset(): void {\n this.currentImageMode = 'original-scale';\n this.rotate = this.previewConfig?.rotate ?? 0;\n this.position = { ...initialPosition };\n this.cdr.detectChanges();\n }\n\n private updatePreviewImageTransform(): void {\n this.previewImageTransform = `scale3d(${this.zoom}, ${this.zoom}, 1) rotate(${this.rotate}deg)`;\n }\n\n private updatePreviewImageWrapperTransform(): void {\n this.previewImageWrapperTransform = `translate3d(${this.position.x}px, ${this.position.y}px, 0)`;\n }\n}\n","<div class=\"thy-image-preview\" [class.thy-image-preview-fullscreen]=\"isFullScreen\">\n @if (!isFullScreen) {\n <div class=\"thy-image-preview-header pl-10 pr-8\">\n <div class=\"thy-image-preview-header-info\">\n <p class=\"thy-image-name text-truncate\" [thyTooltipDisabled]=\"previewImage?.name?.length < 32\" [thyTooltip]=\"previewImage?.name\">\n {{ previewImage?.name }}\n </p>\n <span class=\"thy-image-size\"> {{ previewImage?.size }}</span>\n </div>\n <a thyAction thyIcon=\"close\" thyTooltip=\"退出预览\" href=\"javascript:;\" (click)=\"thyDialog.close()\"></a>\n </div>\n }\n @if (isFullScreen) {\n <a\n class=\"thy-image-preview-exit-fullscreen\"\n thyAction\n thyIcon=\"close\"\n thyTooltip=\"退出预览\"\n href=\"javascript:;\"\n (click)=\"thyFullscreen.exit()\"\n thyTooltip=\"退出全屏\"></a>\n }\n <div\n class=\"thy-image-preview-img-wrapper\"\n #imagePreviewWrapper\n cdkDrag\n [class.thy-image-preview-inside]=\"isInsideScreen\"\n [style.transform]=\"previewImageWrapperTransform\"\n [cdkDragFreeDragPosition]=\"position\"\n (cdkDragReleased)=\"dragReleased()\">\n @for (image of images; track $index; let imageIndex = $index) {\n @if (previewIndex === imageIndex && isLoadingDone) {\n <img #imgRef class=\"thy-image-preview-img\" [src]=\"image.objectURL || image.src\" [style.transform]=\"previewImageTransform\" />\n }\n }\n <thy-loading [thyDone]=\"isLoadingDone\"></thy-loading>\n </div>\n\n @if (images.length > 1 && !isFullScreen) {\n <div\n class=\"thy-image-preview-switch-left\"\n [thyTooltipDisabled]=\"previewIndex <= 0\"\n thyTooltip=\"上一张\"\n [class.thy-image-preview-switch-left-disabled]=\"previewIndex <= 0\"\n (click)=\"prev()\">\n <thy-icon thyIconName=\"angle-left-bold\"></thy-icon>\n </div>\n <div\n class=\"thy-image-preview-switch-right\"\n thyTooltip=\"下一张\"\n [thyTooltipDisabled]=\"previewIndex >= images.length - 1\"\n [class.thy-image-preview-switch-right-disabled]=\"previewIndex >= images.length - 1\"\n (click)=\"next()\">\n <thy-icon thyIconName=\"angle-right-bold\"> </thy-icon>\n </div>\n }\n @if (!isFullScreen) {\n <thy-actions thySize=\"xs\" class=\"thy-image-preview-operations py-3 px-4\">\n @for (option of previewOperations; track $index; let i = $index) {\n @if (!['original-scale', 'fit-screen', 'copyLink'].includes(option.type) || currentImageMode === option.type) {\n <a\n href=\"javascript:;\"\n thyAction\n [thyActionIcon]=\"option.icon\"\n [thyTooltip]=\"option.name\"\n [thyTooltipOffset]=\"13\"\n (click)=\"option.action(previewImage)\"></a>\n }\n @if (option?.type === 'zoom-out') {\n <span class=\"mr-2\"> {{ (zoom * 100).toFixed(0) + '%' }} </span>\n }\n @if (option?.type === 'rotate-right') {\n <thy-divider class=\"ml-2\" [thyVertical]=\"true\"></thy-divider>\n }\n @if (option.type === 'copyLink') {\n <a\n href=\"javascript:;\"\n thyAction\n [thyCopyTips]=\"option.name\"\n [thyActionIcon]=\"option.icon\"\n [thyCopyTipsOffset]=\"13\"\n (thyCopy)=\"copyLink($event)\"\n [thyCopyContent]=\"previewImageOriginSrc\"\n [thyShowNotify]=\"false\"></a>\n }\n }\n <thy-divider [thyVertical]=\"true\"></thy-divider>\n <span class=\"thy-image-preview-operations-text\"> {{ previewIndex + 1 }} / {{ images.length }} </span>\n </thy-actions>\n }\n</div>\n","import { ThyImagePreview } from './image-preview.component';\nimport { ThyDialogRef } from 'ngx-tethys/dialog';\nimport { LEFT_ARROW, RIGHT_ARROW } from '@angular/cdk/keycodes';\nimport { ThyImageInfo, ThyImagePreviewOptions } from '../image.class';\nimport { Observable } from 'rxjs';\n\nexport class ThyImagePreviewRef {\n get componentInstance() {\n return this.dialogRef.componentInstance;\n }\n\n constructor(\n public previewInstance: ThyImagePreview,\n private config: ThyImagePreviewOptions,\n private dialogRef: ThyDialogRef<ThyImagePreview>\n ) {\n dialogRef\n .keydownEvents()\n .pipe()\n .subscribe(event => {\n if (!config.disableKeyboardSelectable && event.keyCode === LEFT_ARROW) {\n this.prev();\n }\n if (!config.disableKeyboardSelectable && event.keyCode === RIGHT_ARROW) {\n this.next();\n }\n });\n }\n\n next(): void {\n this.previewInstance.next();\n }\n\n prev(): void {\n this.previewInstance.prev();\n }\n\n downloadClicked(): Observable<ThyImageInfo> {\n return this.previewInstance.downloadClicked.asObservable();\n }\n}\n","import { Injectable, OnDestroy, inject } from '@angular/core';\nimport { ThyImagePreviewConfig, THY_IMAGE_DEFAULT_PREVIEW_OPTIONS } from './image.config';\nimport { ThyImageInfo, ThyImagePreviewOptions } from './image.class';\nimport { ThyImagePreview } from './preview/image-preview.component';\nimport { ThyDialog, ThyDialogSizes } from 'ngx-tethys/dialog';\nimport { ThyImagePreviewRef } from './preview/image-preview-ref';\nimport { Observable, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\n/**\n * 图片预览服务\n */\n@Injectable()\nexport class ThyImageService implements OnDestroy {\n thyDialog = inject(ThyDialog);\n\n /**\n * 图片预览默认配置,外部可通过注入 THY_IMAGE_DEFAULT_PREVIEW_OPTIONS 进行配置\n */\n defaultConfig: ThyImagePreviewConfig;\n\n private downloadClicked$ = new Subject<ThyImageInfo>();\n\n private ngUnsubscribe$ = new Subject<void>();\n\n constructor() {\n const defaultConfig = inject(THY_IMAGE_DEFAULT_PREVIEW_OPTIONS, { optional: true })!;\n\n this.defaultConfig = defaultConfig;\n }\n\n /**\n * 图片预览方法\n */\n preview(images: ThyImageInfo[], options?: ThyImagePreviewOptions & { startIndex?: number }): ThyImagePreviewRef {\n const config = { ...this.defaultConfig, ...options };\n const dialogRef = this.thyDialog.open(ThyImagePreview, {\n initialState: {\n images,\n previewIndex: options?.startIndex >= 0 && options?.startIndex < images.length ? options.startIndex : 0,\n previewConfig: config\n },\n backdropClass: 'thy-image-preview-backdrop',\n panelClass: 'thy-image-preview-container',\n size: ThyDialogSizes.full,\n ...config\n });\n const imagePreviewRef = new ThyImagePreviewRef(dialogRef.componentInstance, { ...this.defaultConfig, ...options }, dialogRef);\n imagePreviewRef\n .downloadClicked()\n .pipe(takeUntil(this.ngUnsubscribe$))\n .subscribe(image => {\n this.downloadClicked$.next(image);\n });\n return imagePreviewRef;\n }\n\n downloadClicked(): Observable<ThyImageInfo> {\n return this.downloadClicked$.asObservable();\n }\n\n ngOnDestroy() {\n this.ngUnsubscribe$.next();\n this.ngUnsubscribe$.complete();\n }\n}\n","import {\n Directive,\n ElementRef,\n InjectFlags,\n Input,\n OnChanges,\n OnInit,\n SimpleChanges,\n Injector,\n OnDestroy,\n AfterViewInit,\n inject\n} from '@angular/core';\nimport { ThyImageGroup } from './image-group.component';\nimport { ThyImageMeta } from './image.class';\nimport { ThyImageService } from './image.service';\nimport { coerceBooleanProperty } from 'ngx-tethys/util';\n\n/**\n * thyImage: 预览图片指令,只可绑定到 img 标签上\n * @name img[thyImage]\n * @order 10\n */\n@Directive({\n selector: 'img[thyImage]',\n exportAs: 'thyImage',\n host: {\n '(click)': 'onPreview($event)',\n class: 'thy-image',\n '[class.thy-image-disabled]': 'thyDisablePreview'\n },\n standalone: true\n})\nexport class ThyImageDirective implements OnInit, OnChanges, AfterViewInit, OnDestroy {\n private thyImageService = inject(ThyImageService);\n private injector = inject(Injector);\n private elementRef = inject(ElementRef);\n\n /**\n * 图片地址\n */\n @Input() thySrc: string;\n\n /**\n * 预览图片地址\n */\n @Input() thyPreviewSrc: string;\n\n /**\n * 图片原图地址\n */\n @Input() thyOriginSrc: string;\n\n /**\n * 图片附加信息,包含 { name: string, size?: string | number; }\n */\n @Input() thyImageMeta: ThyImageMeta;\n\n /**\n * 是否禁止预览\n * @default false\n */\n @Input({ transform: coerceBooleanProperty }) thyDisablePreview: boolean;\n\n /**\n * 是否自动计算图片资源大小\n */\n @Input({ transform: coerceBooleanProperty }) thyResolveSize = false;\n\n get previewable(): boolean {\n return !this.thyDisablePreview;\n }\n\n private parentGroup: ThyImageGroup;\n\n ngOnInit(): void {\n this.getParentGroup();\n }\n\n ngAfterViewInit(): void {\n if (this.parentGroup) {\n this.addParentImage();\n }\n }\n\n getParentGroup() {\n while (true) {\n // 多层 thy-image-group 嵌套时,获取最外层 thy-image-group 下的所有图片\n const injector = this.parentGroup?.injector || this.injector;\n const parentGroup = injector.get(ThyImageGroup, null, InjectFlags.SkipSelf);\n if (!parentGroup) {\n break;\n }\n this.parentGroup = parentGroup;\n }\n }\n\n addParentImage() {\n setTimeout(() => {\n const parentElement: HTMLElement = this.parentGroup.element.nativeElement;\n const images = parentElement.querySelectorAll('img[thyImage]');\n const index = Array.prototype.indexOf.call(images, this.elementRef.nativeElement);\n if (index >= 0) {\n this.parentGroup.addImage(this, index);\n } else {\n this.parentGroup.addImage(this, this.parentGroup.images.length);\n }\n });\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n const { thySrc } = changes;\n if (thySrc) {\n this.elementRef.nativeElement.src = thySrc.currentValue;\n }\n }\n\n onPreview(event: MouseEvent) {\n if (!this.previewable || event.button !== 0) {\n return;\n }\n if (this.parentGroup) {\n const previewAbleImages = this.parentGroup.images.filter(e => e.previewable);\n const previewImages = previewAbleImages.map(e => ({\n src: e.thyPreviewSrc || e.thySrc,\n ...e.thyImageMeta,\n origin: {\n src: e.thyOriginSrc\n }\n }));\n const startIndex = previewAbleImages.findIndex(el => this === el);\n this.thyImageService.preview(previewImages, {\n startIndex,\n resolveSize: this.thyResolveSize\n });\n } else {\n const previewImages = [\n {\n src: this.thyPreviewSrc || this.thySrc,\n ...this.thyImageMeta,\n origin: {\n src: this.thyOriginSrc\n }\n }\n ];\n this.thyImageService.preview(previewImages, { resolveSize: this.thyResolveSize });\n }\n }\n\n ngOnDestroy(): void {\n if (this.parentGroup) {\n const index = this.parentGroup.images.findIndex(item => item === this);\n this.parentGroup.removeImage(index);\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ThyImageDirective } from './image.directive';\nimport { DragDropModule } from '@angular/cdk/drag-drop';\nimport { ThyImageGroup } from './image-group.component';\nimport { ThyImagePreview } from './preview/image-preview.component';\nimport { ThyImageService } from './image.service';\nimport { PortalModule } from '@angular/cdk/portal';\nimport { THY_IMAGE_DEFAULT_PREVIEW_OPTIONS_PROVIDER } from './image.config';\nimport { ThyIconModule } from 'ngx-tethys/icon';\nimport { ThyDividerModule } from 'ngx-tethys/divider';\nimport { ThyTooltipModule } from 'ngx-tethys/tooltip';\nimport { ThyCopyModule } from 'ngx-tethys/copy';\nimport { ThyLoadingModule } from 'ngx-tethys/loading';\nimport { ThyDialogModule } from 'ngx-tethys/dialog';\nimport { ThyActionModule } from 'ngx-tethys/action';\n\n@NgModule({\n exports: [ThyImageDirective, ThyImageGroup, ThyImagePreview],\n imports: [\n CommonModule,\n PortalModule,\n DragDropModule,\n ThyIconModule,\n ThyDialogModule,\n ThyDividerModule,\n ThyTooltipModule,\n ThyCopyModule,\n ThyLoadingModule,\n ThyActionModule,\n ThyImageDirective,\n ThyImageGroup,\n ThyImagePreview\n ],\n providers: [ThyImageService, THY_IMAGE_DEFAULT_PREVIEW_OPTIONS_PROVIDER]\n})\nexport class ThyImageModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { EventEmitter, numberAttribute, forwardRef, Component, ViewChild, Input, Output, NgModule } from '@angular/core';
|
|
2
|
+
import { inject, ChangeDetectorRef, EventEmitter, numberAttribute, forwardRef, Component, ViewChild, Input, Output, NgModule } from '@angular/core';
|
|
3
3
|
import { CommonModule } from '@angular/common';
|
|
4
4
|
import * as i1 from '@angular/forms';
|
|
5
5
|
import { NG_VALUE_ACCESSOR, FormsModule } from '@angular/forms';
|
|
@@ -49,9 +49,9 @@ class ThyInputNumber extends TabIndexDisabledControlValueAccessorMixin {
|
|
|
49
49
|
get thyMin() {
|
|
50
50
|
return this.innerMin;
|
|
51
51
|
}
|
|
52
|
-
constructor(
|
|
52
|
+
constructor() {
|
|
53
53
|
super();
|
|
54
|
-
this.cdr =
|
|
54
|
+
this.cdr = inject(ChangeDetectorRef);
|
|
55
55
|
this.hostFocusControl = useHostFocusControl();
|
|
56
56
|
this.disabledUp = false;
|
|
57
57
|
this.disabledDown = false;
|
|
@@ -306,7 +306,7 @@ class ThyInputNumber extends TabIndexDisabledControlValueAccessorMixin {
|
|
|
306
306
|
ngOnDestroy() {
|
|
307
307
|
this.hostFocusControl.destroy();
|
|
308
308
|
}
|
|
309
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: ThyInputNumber, deps: [
|
|
309
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: ThyInputNumber, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
310
310
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "18.2.0", type: ThyInputNumber, isStandalone: true, selector: "thy-input-number", inputs: { thyAutoFocus: ["thyAutoFocus", "thyAutoFocus", coerceBooleanProperty], thyPlaceholder: "thyPlaceholder", thyDisabled: ["thyDisabled", "thyDisabled", coerceBooleanProperty], thyMax: "thyMax", thyMin: "thyMin", thyStep: ["thyStep", "thyStep", numberAttribute], thyStepDelay: ["thyStepDelay", "thyStepDelay", numberAttribute], thySize: "thySize", thyPrecision: "thyPrecision", thySuffix: "thySuffix" }, outputs: { thyBlur: "thyBlur", thyFocus: "thyFocus", thyStepChange: "thyStepChange" }, host: { properties: { "attr.tabindex": "tabIndex" }, classAttribute: "thy-input-number" }, providers: [
|
|
311
311
|
{
|
|
312
312
|
provide: NG_VALUE_ACCESSOR,
|
|
@@ -327,7 +327,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
|
|
|
327
327
|
class: 'thy-input-number',
|
|
328
328
|
'[attr.tabindex]': 'tabIndex'
|
|
329
329
|
}, template: "<div class=\"input-number-handler-wrap\" [class.input-number-disabled]=\"thyDisabled\">\n <span\n unselectable=\"unselectable\"\n class=\"input-number-handler input-number-handler-up\"\n (mousedown)=\"up($event)\"\n (mouseup)=\"stop()\"\n (mouseleave)=\"stop()\"\n [class.disabled]=\"disabledUp\">\n <thy-icon thyIconName=\"angle-up\"></thy-icon>\n </span>\n <span\n unselectable=\"unselectable\"\n class=\"input-number-handler input-number-handler-down\"\n (mousedown)=\"down($event)\"\n (mouseup)=\"stop()\"\n (mouseleave)=\"stop()\"\n [class.disabled]=\"disabledDown\">\n <thy-icon thyIconName=\"angle-down\"></thy-icon>\n </span>\n</div>\n<input\n thyInput\n #input\n autocomplete=\"off\"\n class=\"input-number-input form-control\"\n [thySize]=\"thySize\"\n [thyAutofocus]=\"thyAutoFocus\"\n [disabled]=\"thyDisabled\"\n [attr.min]=\"thyMin\"\n [attr.max]=\"thyMax\"\n [placeholder]=\"thyPlaceholder\"\n [attr.step]=\"thyStep\"\n (keydown)=\"onKeyDown($event)\"\n (keyup)=\"stop()\"\n [(ngModel)]=\"displayValue\"\n (ngModelChange)=\"onModelChange($event)\"\n (focus)=\"onInputFocus($event)\"\n tabindex=\"-1\" />\n" }]
|
|
330
|
-
}], ctorParameters: () => [
|
|
330
|
+
}], ctorParameters: () => [], propDecorators: { inputElement: [{
|
|
331
331
|
type: ViewChild,
|
|
332
332
|
args: ['input', { static: true }]
|
|
333
333
|
}], thyAutoFocus: [{
|