ngx-tethys 20.0.1 → 20.0.2
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 +17 -0
- package/action/index.d.ts +3 -3
- package/affix/index.d.ts +1 -1
- package/alert/index.d.ts +3 -3
- package/anchor/index.d.ts +3 -3
- package/arrow-switcher/index.d.ts +6 -6
- package/autocomplete/index.d.ts +7 -7
- package/avatar/index.d.ts +9 -9
- package/back-top/index.d.ts +3 -3
- package/badge/index.d.ts +6 -6
- package/breadcrumb/index.d.ts +7 -7
- package/button/index.d.ts +19 -19
- package/calendar/index.d.ts +8 -8
- package/card/index.d.ts +6 -6
- package/carousel/index.d.ts +4 -4
- package/cascader/index.d.ts +24 -24
- package/collapse/index.d.ts +4 -4
- package/color-picker/index.d.ts +16 -16
- package/comment/index.d.ts +3 -3
- package/copy/index.d.ts +2 -2
- package/core/index.d.ts +22 -22
- package/date-picker/index.d.ts +111 -111
- package/date-range/index.d.ts +5 -5
- package/dialog/index.d.ts +18 -18
- package/divider/index.d.ts +3 -3
- package/drag-drop/index.d.ts +7 -7
- package/dropdown/index.d.ts +10 -10
- package/empty/index.d.ts +12 -12
- package/fesm2022/ngx-tethys-action.mjs +14 -12
- package/fesm2022/ngx-tethys-action.mjs.map +1 -1
- package/fesm2022/ngx-tethys-affix.mjs +7 -7
- package/fesm2022/ngx-tethys-affix.mjs.map +1 -1
- package/fesm2022/ngx-tethys-alert.mjs +10 -10
- package/fesm2022/ngx-tethys-anchor.mjs +11 -11
- package/fesm2022/ngx-tethys-anchor.mjs.map +1 -1
- package/fesm2022/ngx-tethys-arrow-switcher.mjs +7 -7
- package/fesm2022/ngx-tethys-arrow-switcher.mjs.map +1 -1
- package/fesm2022/ngx-tethys-autocomplete.mjs +19 -18
- package/fesm2022/ngx-tethys-autocomplete.mjs.map +1 -1
- package/fesm2022/ngx-tethys-avatar.mjs +23 -22
- package/fesm2022/ngx-tethys-avatar.mjs.map +1 -1
- package/fesm2022/ngx-tethys-back-top.mjs +7 -7
- package/fesm2022/ngx-tethys-badge.mjs +7 -7
- package/fesm2022/ngx-tethys-badge.mjs.map +1 -1
- package/fesm2022/ngx-tethys-breadcrumb.mjs +10 -10
- package/fesm2022/ngx-tethys-breadcrumb.mjs.map +1 -1
- package/fesm2022/ngx-tethys-button.mjs +16 -16
- package/fesm2022/ngx-tethys-button.mjs.map +1 -1
- package/fesm2022/ngx-tethys-calendar.mjs +16 -16
- package/fesm2022/ngx-tethys-calendar.mjs.map +1 -1
- package/fesm2022/ngx-tethys-card.mjs +13 -13
- package/fesm2022/ngx-tethys-card.mjs.map +1 -1
- package/fesm2022/ngx-tethys-carousel.mjs +15 -15
- package/fesm2022/ngx-tethys-carousel.mjs.map +1 -1
- package/fesm2022/ngx-tethys-cascader.mjs +41 -34
- package/fesm2022/ngx-tethys-cascader.mjs.map +1 -1
- package/fesm2022/ngx-tethys-checkbox.mjs +7 -7
- package/fesm2022/ngx-tethys-collapse.mjs +10 -10
- package/fesm2022/ngx-tethys-color-picker.mjs +65 -57
- package/fesm2022/ngx-tethys-color-picker.mjs.map +1 -1
- package/fesm2022/ngx-tethys-comment.mjs +13 -13
- package/fesm2022/ngx-tethys-copy.mjs +10 -10
- package/fesm2022/ngx-tethys-copy.mjs.map +1 -1
- package/fesm2022/ngx-tethys-core.mjs +30 -25
- package/fesm2022/ngx-tethys-core.mjs.map +1 -1
- package/fesm2022/ngx-tethys-date-picker.mjs +184 -174
- package/fesm2022/ngx-tethys-date-picker.mjs.map +1 -1
- package/fesm2022/ngx-tethys-date-range.mjs +16 -16
- package/fesm2022/ngx-tethys-date-range.mjs.map +1 -1
- package/fesm2022/ngx-tethys-dialog.mjs +24 -24
- package/fesm2022/ngx-tethys-dialog.mjs.map +1 -1
- package/fesm2022/ngx-tethys-divider.mjs +7 -7
- package/fesm2022/ngx-tethys-divider.mjs.map +1 -1
- package/fesm2022/ngx-tethys-dot.mjs +7 -7
- package/fesm2022/ngx-tethys-drag-drop.mjs +24 -24
- package/fesm2022/ngx-tethys-drag-drop.mjs.map +1 -1
- package/fesm2022/ngx-tethys-dropdown.mjs +48 -47
- package/fesm2022/ngx-tethys-dropdown.mjs.map +1 -1
- package/fesm2022/ngx-tethys-empty.mjs +13 -13
- package/fesm2022/ngx-tethys-empty.mjs.map +1 -1
- package/fesm2022/ngx-tethys-flexible-text.mjs +7 -7
- package/fesm2022/ngx-tethys-flexible-text.mjs.map +1 -1
- package/fesm2022/ngx-tethys-form.mjs +64 -61
- package/fesm2022/ngx-tethys-form.mjs.map +1 -1
- package/fesm2022/ngx-tethys-fullscreen.mjs +18 -15
- package/fesm2022/ngx-tethys-fullscreen.mjs.map +1 -1
- package/fesm2022/ngx-tethys-grid.mjs +34 -33
- package/fesm2022/ngx-tethys-grid.mjs.map +1 -1
- package/fesm2022/ngx-tethys-guider.mjs +25 -24
- package/fesm2022/ngx-tethys-guider.mjs.map +1 -1
- package/fesm2022/ngx-tethys-i18n.mjs +3 -3
- package/fesm2022/ngx-tethys-i18n.mjs.map +1 -1
- package/fesm2022/ngx-tethys-icon.mjs +15 -13
- package/fesm2022/ngx-tethys-icon.mjs.map +1 -1
- package/fesm2022/ngx-tethys-image.mjs +31 -29
- package/fesm2022/ngx-tethys-image.mjs.map +1 -1
- package/fesm2022/ngx-tethys-input-number.mjs +17 -10
- package/fesm2022/ngx-tethys-input-number.mjs.map +1 -1
- package/fesm2022/ngx-tethys-input.mjs +28 -27
- package/fesm2022/ngx-tethys-input.mjs.map +1 -1
- package/fesm2022/ngx-tethys-layout.mjs +63 -63
- package/fesm2022/ngx-tethys-layout.mjs.map +1 -1
- package/fesm2022/ngx-tethys-list.mjs +21 -18
- package/fesm2022/ngx-tethys-list.mjs.map +1 -1
- package/fesm2022/ngx-tethys-loading.mjs +7 -7
- package/fesm2022/ngx-tethys-mention.mjs +35 -31
- package/fesm2022/ngx-tethys-mention.mjs.map +1 -1
- package/fesm2022/ngx-tethys-menu.mjs +26 -26
- package/fesm2022/ngx-tethys-menu.mjs.map +1 -1
- package/fesm2022/ngx-tethys-message.mjs +24 -24
- package/fesm2022/ngx-tethys-message.mjs.map +1 -1
- package/fesm2022/ngx-tethys-nav.mjs +27 -27
- package/fesm2022/ngx-tethys-nav.mjs.map +1 -1
- package/fesm2022/ngx-tethys-notify.mjs +20 -20
- package/fesm2022/ngx-tethys-notify.mjs.map +1 -1
- package/fesm2022/ngx-tethys-pagination.mjs +18 -18
- package/fesm2022/ngx-tethys-pagination.mjs.map +1 -1
- package/fesm2022/ngx-tethys-popover.mjs +22 -21
- package/fesm2022/ngx-tethys-popover.mjs.map +1 -1
- package/fesm2022/ngx-tethys-progress.mjs +17 -17
- package/fesm2022/ngx-tethys-progress.mjs.map +1 -1
- package/fesm2022/ngx-tethys-property-operation.mjs +11 -11
- package/fesm2022/ngx-tethys-property-operation.mjs.map +1 -1
- package/fesm2022/ngx-tethys-property.mjs +12 -11
- package/fesm2022/ngx-tethys-property.mjs.map +1 -1
- package/fesm2022/ngx-tethys-radio.mjs +17 -17
- package/fesm2022/ngx-tethys-radio.mjs.map +1 -1
- package/fesm2022/ngx-tethys-rate.mjs +12 -12
- package/fesm2022/ngx-tethys-rate.mjs.map +1 -1
- package/fesm2022/ngx-tethys-resizable.mjs +21 -18
- package/fesm2022/ngx-tethys-resizable.mjs.map +1 -1
- package/fesm2022/ngx-tethys-result.mjs +11 -11
- package/fesm2022/ngx-tethys-result.mjs.map +1 -1
- package/fesm2022/ngx-tethys-segment.mjs +19 -16
- package/fesm2022/ngx-tethys-segment.mjs.map +1 -1
- package/fesm2022/ngx-tethys-select.mjs +60 -38
- package/fesm2022/ngx-tethys-select.mjs.map +1 -1
- package/fesm2022/ngx-tethys-shared.mjs +82 -79
- package/fesm2022/ngx-tethys-shared.mjs.map +1 -1
- package/fesm2022/ngx-tethys-skeleton.mjs +32 -32
- package/fesm2022/ngx-tethys-skeleton.mjs.map +1 -1
- package/fesm2022/ngx-tethys-slide.mjs +37 -36
- package/fesm2022/ngx-tethys-slide.mjs.map +1 -1
- package/fesm2022/ngx-tethys-slider.mjs +11 -11
- package/fesm2022/ngx-tethys-slider.mjs.map +1 -1
- package/fesm2022/ngx-tethys-space.mjs +10 -10
- package/fesm2022/ngx-tethys-statistic.mjs +7 -7
- package/fesm2022/ngx-tethys-statistic.mjs.map +1 -1
- package/fesm2022/ngx-tethys-stepper.mjs +22 -22
- package/fesm2022/ngx-tethys-stepper.mjs.map +1 -1
- package/fesm2022/ngx-tethys-strength.mjs +7 -7
- package/fesm2022/ngx-tethys-strength.mjs.map +1 -1
- package/fesm2022/ngx-tethys-switch.mjs +7 -7
- package/fesm2022/ngx-tethys-switch.mjs.map +1 -1
- package/fesm2022/ngx-tethys-table.mjs +28 -28
- package/fesm2022/ngx-tethys-table.mjs.map +1 -1
- package/fesm2022/ngx-tethys-tabs.mjs +13 -13
- package/fesm2022/ngx-tethys-tabs.mjs.map +1 -1
- package/fesm2022/ngx-tethys-tag.mjs +11 -11
- package/fesm2022/ngx-tethys-tag.mjs.map +1 -1
- package/fesm2022/ngx-tethys-testing.mjs +1 -1
- package/fesm2022/ngx-tethys-testing.mjs.map +1 -1
- package/fesm2022/ngx-tethys-time-picker.mjs +22 -22
- package/fesm2022/ngx-tethys-time-picker.mjs.map +1 -1
- package/fesm2022/ngx-tethys-timeline.mjs +14 -14
- package/fesm2022/ngx-tethys-timeline.mjs.map +1 -1
- package/fesm2022/ngx-tethys-tooltip.mjs +19 -16
- package/fesm2022/ngx-tethys-tooltip.mjs.map +1 -1
- package/fesm2022/ngx-tethys-transfer.mjs +15 -15
- package/fesm2022/ngx-tethys-transfer.mjs.map +1 -1
- package/fesm2022/ngx-tethys-tree-select.mjs +17 -17
- package/fesm2022/ngx-tethys-tree-select.mjs.map +1 -1
- package/fesm2022/ngx-tethys-tree.mjs +50 -43
- package/fesm2022/ngx-tethys-tree.mjs.map +1 -1
- package/fesm2022/ngx-tethys-typography.mjs +16 -16
- package/fesm2022/ngx-tethys-typography.mjs.map +1 -1
- package/fesm2022/ngx-tethys-upload.mjs +26 -25
- package/fesm2022/ngx-tethys-upload.mjs.map +1 -1
- package/fesm2022/ngx-tethys-util.mjs +11 -5
- package/fesm2022/ngx-tethys-util.mjs.map +1 -1
- package/fesm2022/ngx-tethys-vote.mjs +7 -7
- package/fesm2022/ngx-tethys-watermark.mjs +18 -15
- 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/index.d.ts +5 -5
- package/form/index.d.ts +26 -22
- package/fullscreen/index.d.ts +4 -4
- package/grid/index.d.ts +12 -12
- package/guider/index.d.ts +10 -10
- package/i18n/index.d.ts +1 -1
- package/icon/index.d.ts +3 -3
- package/image/index.d.ts +12 -12
- package/input/index.d.ts +22 -22
- package/input-number/index.d.ts +4 -4
- package/layout/index.d.ts +16 -16
- package/list/index.d.ts +16 -15
- package/mention/index.d.ts +4 -4
- package/menu/index.d.ts +7 -7
- package/message/index.d.ts +5 -5
- package/nav/index.d.ts +12 -12
- package/notify/index.d.ts +1 -1
- package/package.json +1 -1
- package/pagination/index.d.ts +21 -17
- package/popover/index.d.ts +8 -8
- package/progress/index.d.ts +18 -18
- package/property/index.d.ts +6 -6
- package/property-operation/index.d.ts +3 -3
- package/radio/index.d.ts +6 -6
- package/rate/index.d.ts +5 -5
- package/resizable/index.d.ts +2 -2
- package/result/index.d.ts +8 -8
- package/schematics/testing/test-workspace.js +1 -0
- package/schematics/version.d.ts +1 -1
- package/schematics/version.js +1 -1
- package/segment/index.d.ts +9 -9
- package/select/index.d.ts +21 -21
- package/shared/index.d.ts +29 -29
- package/skeleton/index.d.ts +52 -52
- package/slide/index.d.ts +5 -5
- package/slider/index.d.ts +6 -6
- package/space/index.d.ts +1 -1
- package/statistic/index.d.ts +18 -18
- package/stepper/index.d.ts +8 -8
- package/switch/index.d.ts +2 -2
- package/table/index.d.ts +24 -24
- package/tabs/index.d.ts +6 -6
- package/testing/index.d.ts +1 -1
- package/time-picker/index.d.ts +21 -21
- package/timeline/index.d.ts +8 -8
- package/tooltip/index.d.ts +12 -12
- package/transfer/index.d.ts +16 -16
- package/tree/index.d.ts +28 -28
- package/tree-select/index.d.ts +13 -13
- package/typography/index.d.ts +3 -3
- package/upload/index.d.ts +4 -4
- package/util/index.d.ts +17 -7
- package/vote/index.d.ts +2 -2
- package/watermark/index.d.ts +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ngx-tethys-image.mjs","sources":["../../../src/image/image.token.ts","../../../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 { ElementRef, InjectionToken, Injector, InputSignal } from '@angular/core';\nimport { ThyImageMeta } from './image.class';\n\nexport interface IThyImageDirective {\n previewable: boolean;\n thySrc: InputSignal<string>;\n thyPreviewSrc: InputSignal<string>;\n thyOriginSrc: InputSignal<string>;\n thyImageMeta: InputSignal<ThyImageMeta>;\n}\n\nexport interface IThyImageGroupComponent {\n injector: Injector;\n element: ElementRef;\n images: IThyImageDirective[];\n addImage: (image: IThyImageDirective, index: number) => void;\n removeImage: (index: number) => void;\n}\n\nexport const THY_IMAGE_GROUP_COMPONENT = new InjectionToken<IThyImageGroupComponent>('THY_IMAGE_GROUP_COMPONENT');\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation, Injector, ElementRef, inject } from '@angular/core';\nimport { IThyImageDirective, IThyImageGroupComponent, THY_IMAGE_GROUP_COMPONENT } from './image.token';\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 providers: [\n {\n provide: THY_IMAGE_GROUP_COMPONENT,\n useClass: ThyImageGroup\n }\n ]\n})\nexport class ThyImageGroup implements IThyImageGroupComponent {\n injector = inject(Injector);\n\n element = inject(ElementRef);\n\n images: IThyImageDirective[] = [];\n\n addImage(image: IThyImageDirective, 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 NgZone,\n OnInit,\n output,\n Signal,\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';\nimport { injectLocale, ThyImageLocale } from 'ngx-tethys/i18n';\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 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 public locale: Signal<ThyImageLocale> = injectLocale('image');\n\n readonly downloadClicked = output<ThyImageInfo>();\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: this.locale().zoomOut,\n action: (image: ThyImageInfo) => {\n this.zoomOut();\n },\n type: 'zoom-out'\n },\n {\n icon: 'zoom-in',\n name: this.locale().zoomIn,\n action: (image: ThyImageInfo) => {\n this.zoomIn();\n },\n type: 'zoom-in'\n },\n {\n icon: 'one-to-one',\n name: this.locale().originalSize,\n action: (image: ThyImageInfo) => {\n this.setOriginalSize();\n },\n type: 'original-scale'\n },\n {\n icon: 'max-view',\n name: this.locale().fitToScreen,\n action: () => {\n this.setFitScreen();\n },\n type: 'fit-screen'\n },\n {\n icon: 'expand-arrows',\n name: this.locale().fullScreen,\n action: () => {\n this.fullScreen();\n },\n type: 'full-screen'\n },\n {\n icon: 'rotate-right',\n name: this.locale().spin,\n action: (image: ThyImageInfo) => {\n this.rotateRight();\n },\n type: 'rotate-right'\n },\n {\n icon: 'download',\n name: this.locale().download,\n action: (image: ThyImageInfo) => {\n this.download(image);\n },\n type: 'download'\n },\n {\n icon: 'preview',\n name: this.locale().viewOriginal,\n action: () => {\n this.viewOriginal();\n },\n type: 'view-original'\n },\n {\n icon: 'link-insert',\n name: this.locale().copyLink,\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(this.locale().copySuccess);\n } else {\n this.notifyService.error(this.locale().copyError);\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]=\"locale().exitPreview\" 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 href=\"javascript:;\"\n (click)=\"thyFullscreen.exit()\"\n [thyTooltip]=\"locale().exitFullScreen\"></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]=\"locale().prev\"\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]=\"locale().next\"\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';\nimport { outputToObservable } from '@angular/core/rxjs-interop';\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 outputToObservable(this.previewInstance.downloadClicked);\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 { Directive, ElementRef, OnInit, Injector, OnDestroy, AfterViewInit, inject, input, effect } from '@angular/core';\nimport { IThyImageDirective, IThyImageGroupComponent, THY_IMAGE_GROUP_COMPONENT } from './image.token';\nimport { ThyImageMeta } from './image.class';\nimport { ThyImageService } from './image.service';\nimport { coerceBooleanProperty, ThyBooleanInput } 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})\nexport class ThyImageDirective implements IThyImageDirective, OnInit, AfterViewInit, OnDestroy {\n private thyImageService = inject(ThyImageService);\n private injector = inject(Injector);\n private elementRef = inject(ElementRef);\n\n /**\n * 图片地址\n */\n readonly thySrc = input<string>();\n\n /**\n * 预览图片地址\n */\n readonly thyPreviewSrc = input<string>();\n\n /**\n * 图片原图地址\n */\n readonly thyOriginSrc = input<string>();\n\n /**\n * 图片附加信息,包含 { name: string, size?: string | number; }\n */\n readonly thyImageMeta = input<ThyImageMeta>();\n\n /**\n * 是否禁止预览\n * @default false\n */\n readonly thyDisablePreview = input<boolean, ThyBooleanInput>(undefined, { transform: coerceBooleanProperty });\n\n /**\n * 是否自动计算图片资源大小\n */\n readonly thyResolveSize = input(false, { transform: coerceBooleanProperty });\n\n get previewable(): boolean {\n return !this.thyDisablePreview();\n }\n\n private parentGroup: IThyImageGroupComponent;\n\n constructor() {\n effect(() => {\n this.elementRef.nativeElement.src = this.thySrc();\n });\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(THY_IMAGE_GROUP_COMPONENT, null, { skipSelf: true });\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 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
|
+
{"version":3,"file":"ngx-tethys-image.mjs","sources":["../../../src/image/image.token.ts","../../../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 { ElementRef, InjectionToken, Injector, InputSignal } from '@angular/core';\nimport { ThyImageMeta } from './image.class';\n\nexport interface IThyImageDirective {\n previewable: boolean;\n thySrc: InputSignal<string | undefined>;\n thyPreviewSrc: InputSignal<string | undefined>;\n thyOriginSrc: InputSignal<string | undefined>;\n thyImageMeta: InputSignal<ThyImageMeta | undefined>;\n}\n\nexport interface IThyImageGroupComponent {\n injector: Injector;\n element: ElementRef;\n images: IThyImageDirective[];\n addImage: (image: IThyImageDirective, index: number) => void;\n removeImage: (index: number) => void;\n}\n\nexport const THY_IMAGE_GROUP_COMPONENT = new InjectionToken<IThyImageGroupComponent>('THY_IMAGE_GROUP_COMPONENT');\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation, Injector, ElementRef, inject } from '@angular/core';\nimport { IThyImageDirective, IThyImageGroupComponent, THY_IMAGE_GROUP_COMPONENT } from './image.token';\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 providers: [\n {\n provide: THY_IMAGE_GROUP_COMPONENT,\n useClass: ThyImageGroup\n }\n ]\n})\nexport class ThyImageGroup implements IThyImageGroupComponent {\n injector = inject(Injector);\n\n element = inject(ElementRef);\n\n images: IThyImageDirective[] = [];\n\n addImage(image: IThyImageDirective, 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 NgZone,\n OnInit,\n output,\n Signal,\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';\nimport { injectLocale, ThyImageLocale } from 'ngx-tethys/i18n';\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 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 public locale: Signal<ThyImageLocale> = injectLocale('image');\n\n readonly downloadClicked = output<ThyImageInfo>();\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: this.locale().zoomOut,\n action: (image: ThyImageInfo) => {\n this.zoomOut();\n },\n type: 'zoom-out'\n },\n {\n icon: 'zoom-in',\n name: this.locale().zoomIn,\n action: (image: ThyImageInfo) => {\n this.zoomIn();\n },\n type: 'zoom-in'\n },\n {\n icon: 'one-to-one',\n name: this.locale().originalSize,\n action: (image: ThyImageInfo) => {\n this.setOriginalSize();\n },\n type: 'original-scale'\n },\n {\n icon: 'max-view',\n name: this.locale().fitToScreen,\n action: () => {\n this.setFitScreen();\n },\n type: 'fit-screen'\n },\n {\n icon: 'expand-arrows',\n name: this.locale().fullScreen,\n action: () => {\n this.fullScreen();\n },\n type: 'full-screen'\n },\n {\n icon: 'rotate-right',\n name: this.locale().spin,\n action: (image: ThyImageInfo) => {\n this.rotateRight();\n },\n type: 'rotate-right'\n },\n {\n icon: 'download',\n name: this.locale().download,\n action: (image: ThyImageInfo) => {\n this.download(image);\n },\n type: 'download'\n },\n {\n icon: 'preview',\n name: this.locale().viewOriginal,\n action: () => {\n this.viewOriginal();\n },\n type: 'view-original'\n },\n {\n icon: 'link-insert',\n name: this.locale().copyLink,\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 const 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 | undefined {\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 const 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 const 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(this.locale().copySuccess);\n } else {\n this.notifyService.error(this.locale().copyError);\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]=\"locale().exitPreview\" 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 href=\"javascript:;\"\n (click)=\"thyFullscreen.exit()\"\n [thyTooltip]=\"locale().exitFullScreen\"></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]=\"locale().prev\"\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]=\"locale().next\"\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';\nimport { outputToObservable } from '@angular/core/rxjs-interop';\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 outputToObservable(this.previewInstance.downloadClicked);\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 // eslint-disable-next-line @typescript-eslint/no-non-null-asserted-optional-chain\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 { Directive, ElementRef, OnInit, Injector, OnDestroy, AfterViewInit, inject, input, effect } from '@angular/core';\nimport { IThyImageDirective, IThyImageGroupComponent, THY_IMAGE_GROUP_COMPONENT } from './image.token';\nimport { ThyImageMeta } from './image.class';\nimport { ThyImageService } from './image.service';\nimport { coerceBooleanProperty, ThyBooleanInput } 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})\nexport class ThyImageDirective implements IThyImageDirective, OnInit, AfterViewInit, OnDestroy {\n private thyImageService = inject(ThyImageService);\n private injector = inject(Injector);\n private elementRef = inject(ElementRef);\n\n /**\n * 图片地址\n */\n readonly thySrc = input<string>();\n\n /**\n * 预览图片地址\n */\n readonly thyPreviewSrc = input<string | undefined>('');\n\n /**\n * 图片原图地址\n */\n readonly thyOriginSrc = input<string | undefined>('');\n\n /**\n * 图片附加信息,包含 { name: string, size?: string | number; }\n */\n readonly thyImageMeta = input<ThyImageMeta>();\n\n /**\n * 是否禁止预览\n * @default false\n */\n readonly thyDisablePreview = input<boolean, ThyBooleanInput>(undefined, { transform: coerceBooleanProperty });\n\n /**\n * 是否自动计算图片资源大小\n */\n readonly thyResolveSize = input(false, { transform: coerceBooleanProperty });\n\n get previewable(): boolean {\n return !this.thyDisablePreview();\n }\n\n private parentGroup: IThyImageGroupComponent | null = null;\n\n constructor() {\n effect(() => {\n this.elementRef.nativeElement.src = this.thySrc();\n });\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(THY_IMAGE_GROUP_COMPONENT, null, { skipSelf: true });\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 as IThyImageDirective, index);\n } else {\n this.parentGroup?.addImage(this as IThyImageDirective, this.parentGroup?.images?.length);\n }\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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"}
|
|
@@ -23,7 +23,7 @@ var Type;
|
|
|
23
23
|
class ThyInputNumber extends TabIndexDisabledControlValueAccessorMixin {
|
|
24
24
|
constructor() {
|
|
25
25
|
super();
|
|
26
|
-
this.inputElement = viewChild('input'
|
|
26
|
+
this.inputElement = viewChild.required('input');
|
|
27
27
|
this.hostFocusControl = useHostFocusControl();
|
|
28
28
|
this.displayValue = signal(undefined, ...(ngDevMode ? [{ debugName: "displayValue" }] : []));
|
|
29
29
|
this.disabledUp = signal(false, ...(ngDevMode ? [{ debugName: "disabledUp" }] : []));
|
|
@@ -38,6 +38,11 @@ class ThyInputNumber extends TabIndexDisabledControlValueAccessorMixin {
|
|
|
38
38
|
* 输入框的placeholder
|
|
39
39
|
*/
|
|
40
40
|
this.thyPlaceholder = input('', ...(ngDevMode ? [{ debugName: "thyPlaceholder" }] : []));
|
|
41
|
+
/**
|
|
42
|
+
* 是否禁用
|
|
43
|
+
* @default false
|
|
44
|
+
*/
|
|
45
|
+
this.thyDisabled = false;
|
|
41
46
|
/**
|
|
42
47
|
* 最大值
|
|
43
48
|
* @default Infinity
|
|
@@ -86,6 +91,7 @@ class ThyInputNumber extends TabIndexDisabledControlValueAccessorMixin {
|
|
|
86
91
|
* 上下箭头点击事件
|
|
87
92
|
*/
|
|
88
93
|
this.thyStepChange = output();
|
|
94
|
+
this.isFocused = false;
|
|
89
95
|
effect(() => {
|
|
90
96
|
const displayValue = this.displayValue();
|
|
91
97
|
const max = this.thyMax();
|
|
@@ -284,11 +290,12 @@ class ThyInputNumber extends TabIndexDisabledControlValueAccessorMixin {
|
|
|
284
290
|
}
|
|
285
291
|
}
|
|
286
292
|
parser(value) {
|
|
287
|
-
return value
|
|
293
|
+
return (value
|
|
288
294
|
.trim()
|
|
289
295
|
.replace(/。/g, '.')
|
|
296
|
+
// eslint-disable-next-line no-useless-escape
|
|
290
297
|
.replace(/[^\w\.-]+/g, '')
|
|
291
|
-
.replace(this.thySuffix(), '');
|
|
298
|
+
.replace(this.thySuffix(), ''));
|
|
292
299
|
}
|
|
293
300
|
getCurrentValidValue(value) {
|
|
294
301
|
let val = value;
|
|
@@ -327,8 +334,8 @@ class ThyInputNumber extends TabIndexDisabledControlValueAccessorMixin {
|
|
|
327
334
|
ngOnDestroy() {
|
|
328
335
|
this.hostFocusControl.destroy();
|
|
329
336
|
}
|
|
330
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
331
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.
|
|
337
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: ThyInputNumber, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
338
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.15", type: ThyInputNumber, isStandalone: true, selector: "thy-input-number", inputs: { thyAutoFocus: { classPropertyName: "thyAutoFocus", publicName: "thyAutoFocus", isSignal: true, isRequired: false, transformFunction: null }, thyPlaceholder: { classPropertyName: "thyPlaceholder", publicName: "thyPlaceholder", isSignal: true, isRequired: false, transformFunction: null }, thyDisabled: { classPropertyName: "thyDisabled", publicName: "thyDisabled", isSignal: false, isRequired: false, transformFunction: coerceBooleanProperty }, thyMax: { classPropertyName: "thyMax", publicName: "thyMax", isSignal: true, isRequired: false, transformFunction: null }, thyMin: { classPropertyName: "thyMin", publicName: "thyMin", isSignal: true, isRequired: false, transformFunction: null }, thyStep: { classPropertyName: "thyStep", publicName: "thyStep", isSignal: true, isRequired: false, transformFunction: null }, thyShowStepControls: { classPropertyName: "thyShowStepControls", publicName: "thyShowStepControls", isSignal: true, isRequired: false, transformFunction: null }, thyStepDelay: { classPropertyName: "thyStepDelay", publicName: "thyStepDelay", isSignal: true, isRequired: false, transformFunction: null }, thySize: { classPropertyName: "thySize", publicName: "thySize", isSignal: true, isRequired: false, transformFunction: null }, thyPrecision: { classPropertyName: "thyPrecision", publicName: "thyPrecision", isSignal: true, isRequired: false, transformFunction: null }, thySuffix: { classPropertyName: "thySuffix", publicName: "thySuffix", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { thyBlur: "thyBlur", thyFocus: "thyFocus", thyStepChange: "thyStepChange" }, host: { properties: { "attr.tabindex": "tabIndex" }, classAttribute: "thy-input-number" }, providers: [
|
|
332
339
|
{
|
|
333
340
|
provide: NG_VALUE_ACCESSOR,
|
|
334
341
|
useExisting: forwardRef(() => ThyInputNumber),
|
|
@@ -336,7 +343,7 @@ class ThyInputNumber extends TabIndexDisabledControlValueAccessorMixin {
|
|
|
336
343
|
}
|
|
337
344
|
], viewQueries: [{ propertyName: "inputElement", first: true, predicate: ["input"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "@if (thyShowStepControls()) {\n <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}\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", dependencies: [{ kind: "component", type: ThyIcon, selector: "thy-icon, [thy-icon]", inputs: ["thyIconType", "thyTwotoneColor", "thyIconName", "thyIconRotate", "thyIconSet", "thyIconLegging", "thyIconLinearGradient"] }, { kind: "directive", type: ThyInputDirective, selector: "input[thyInput], select[thyInput], textarea[thyInput]", inputs: ["thySize"], exportAs: ["thyInput"] }, { kind: "directive", type: ThyAutofocusDirective, selector: "input[thyAutofocus],textarea[thyAutofocus]", inputs: ["thyAutofocus", "thyAutoSelect"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] }); }
|
|
338
345
|
}
|
|
339
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
346
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: ThyInputNumber, decorators: [{
|
|
340
347
|
type: Component,
|
|
341
348
|
args: [{ selector: 'thy-input-number', providers: [
|
|
342
349
|
{
|
|
@@ -354,11 +361,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.14", ngImpo
|
|
|
354
361
|
}], thyMax: [{ type: i0.Input, args: [{ isSignal: true, alias: "thyMax", required: false }] }], thyMin: [{ type: i0.Input, args: [{ isSignal: true, alias: "thyMin", required: false }] }], thyStep: [{ type: i0.Input, args: [{ isSignal: true, alias: "thyStep", required: false }] }], thyShowStepControls: [{ type: i0.Input, args: [{ isSignal: true, alias: "thyShowStepControls", required: false }] }], thyStepDelay: [{ type: i0.Input, args: [{ isSignal: true, alias: "thyStepDelay", required: false }] }], thySize: [{ type: i0.Input, args: [{ isSignal: true, alias: "thySize", required: false }] }], thyPrecision: [{ type: i0.Input, args: [{ isSignal: true, alias: "thyPrecision", required: false }] }], thySuffix: [{ type: i0.Input, args: [{ isSignal: true, alias: "thySuffix", required: false }] }], thyBlur: [{ type: i0.Output, args: ["thyBlur"] }], thyFocus: [{ type: i0.Output, args: ["thyFocus"] }], thyStepChange: [{ type: i0.Output, args: ["thyStepChange"] }] } });
|
|
355
362
|
|
|
356
363
|
class ThyInputNumberModule {
|
|
357
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.
|
|
358
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.
|
|
359
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.
|
|
364
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: ThyInputNumberModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
365
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.15", ngImport: i0, type: ThyInputNumberModule, imports: [CommonModule, FormsModule, ThySharedModule, ThyIconModule, ThyInputModule, ThyFormModule, ThyInputNumber], exports: [ThyInputNumber] }); }
|
|
366
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: ThyInputNumberModule, imports: [CommonModule, FormsModule, ThySharedModule, ThyIconModule, ThyInputModule, ThyFormModule, ThyInputNumber] }); }
|
|
360
367
|
}
|
|
361
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.
|
|
368
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: ThyInputNumberModule, decorators: [{
|
|
362
369
|
type: NgModule,
|
|
363
370
|
args: [{
|
|
364
371
|
imports: [CommonModule, FormsModule, ThySharedModule, ThyIconModule, ThyInputModule, ThyFormModule, ThyInputNumber],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ngx-tethys-input-number.mjs","sources":["../../../src/input-number/input-number.component.ts","../../../src/input-number/input-number.component.html","../../../src/input-number/module.ts","../../../src/input-number/ngx-tethys-input-number.ts"],"sourcesContent":["import { TabIndexDisabledControlValueAccessorMixin, useHostFocusControl } from 'ngx-tethys/core';\nimport { ThyMaxDirective, ThyMinDirective } from 'ngx-tethys/form';\nimport { ThyIcon } from 'ngx-tethys/icon';\nimport { ThyInputDirective } from 'ngx-tethys/input';\nimport { ThyAutofocusDirective } from 'ngx-tethys/shared';\nimport { coerceBooleanProperty, DOWN_ARROW, ENTER, isFloat, isNumber, isUndefinedOrNull, UP_ARROW } from 'ngx-tethys/util';\n\nimport { FocusOrigin } from '@angular/cdk/a11y';\nimport {\n Component,\n ElementRef,\n forwardRef,\n Input,\n numberAttribute,\n OnDestroy,\n OnInit,\n input,\n effect,\n signal,\n output,\n viewChild\n} from '@angular/core';\nimport { ControlValueAccessor, FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\n\ntype InputSize = 'xs' | 'sm' | 'md' | 'lg' | '';\n\nenum Type {\n up,\n down\n}\n\n/**\n * 数字输入框\n * @name thy-input-number\n * @order 10\n */\n@Component({\n selector: 'thy-input-number',\n templateUrl: './input-number.component.html',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ThyInputNumber),\n multi: true\n }\n ],\n imports: [ThyIcon, ThyInputDirective, ThyAutofocusDirective, FormsModule],\n host: {\n class: 'thy-input-number',\n '[attr.tabindex]': 'tabIndex'\n }\n})\nexport class ThyInputNumber extends TabIndexDisabledControlValueAccessorMixin implements ControlValueAccessor, OnInit, OnDestroy {\n readonly inputElement = viewChild<ElementRef<any>>('input');\n\n private autoStepTimer: any;\n\n private hostFocusControl = useHostFocusControl();\n\n validValue: number | string;\n\n displayValue = signal<number | string>(undefined);\n\n disabledUp = signal(false);\n\n disabledDown = signal(false);\n\n activeValue: string = '';\n\n /**\n * 是否自动聚焦\n * @default false\n */\n readonly thyAutoFocus = input(false, { transform: coerceBooleanProperty });\n\n /**\n * 输入框的placeholder\n */\n readonly thyPlaceholder = input<string>('');\n\n /**\n * 是否禁用\n * @default false\n */\n @Input({ transform: coerceBooleanProperty }) thyDisabled: boolean;\n\n /**\n * 最大值\n * @default Infinity\n */\n readonly thyMax = input(Infinity, { transform: (value: number) => (isNumber(value) ? value : Infinity) });\n\n /**\n * 最小值\n * @default -Infinity\n */\n readonly thyMin = input(-Infinity, { transform: (value: number) => (isNumber(value) ? value : -Infinity) });\n\n /**\n * 每次改变步数,可以为小数\n */\n readonly thyStep = input(1, { transform: numberAttribute });\n\n /**\n * 是否展示步数切换按钮\n */\n readonly thyShowStepControls = input(true, { transform: coerceBooleanProperty });\n\n /**\n * 改变步数时的延迟毫秒数,值越小变化的速度越快\n * @default 300\n */\n readonly thyStepDelay = input(300, { transform: numberAttribute });\n\n /**\n * 输入框大小\n * @type xs | sm | md | lg\n */\n readonly thySize = input<InputSize>();\n\n /**\n * 数值精度\n */\n readonly thyPrecision = input<number>();\n\n /**\n * 数值后缀\n */\n readonly thySuffix = input<string>();\n\n /**\n * 焦点失去事件\n */\n readonly thyBlur = output();\n\n /**\n * 焦点激活事件\n */\n readonly thyFocus = output<Event>();\n\n /**\n * 上下箭头点击事件\n */\n readonly thyStepChange = output<{ value: number; type: Type }>();\n\n private isFocused: boolean;\n\n constructor() {\n super();\n\n effect(() => {\n const displayValue = this.displayValue();\n const max = this.thyMax();\n if (displayValue || displayValue === 0) {\n const val = Number(displayValue);\n this.disabledUp.set(val >= max);\n }\n });\n\n effect(() => {\n const min = this.thyMin();\n const displayValue = this.displayValue();\n if (displayValue || displayValue === 0) {\n const val = Number(displayValue);\n this.disabledDown.set(val <= min);\n }\n });\n\n effect(() => {\n const suffix = this.thySuffix();\n const validValue = this.getCurrentValidValue(this.validValue);\n this.updateValidValue(validValue);\n this.displayValue.set(this.formatterValue(validValue));\n });\n }\n\n setDisabledState?(isDisabled: boolean): void {\n this.thyDisabled = isDisabled;\n }\n\n ngOnInit() {\n this.hostFocusControl.focusChanged = (origin: FocusOrigin) => {\n if (this.thyDisabled) {\n return;\n }\n\n if (origin) {\n if (!this.isFocused) {\n this.inputElement().nativeElement.focus();\n }\n } else {\n if (this.isFocused) {\n this.displayValue.set(this.formatterValue(this.validValue));\n this.onTouchedFn();\n this.thyBlur.emit();\n this.isFocused = false;\n }\n }\n };\n }\n\n writeValue(value: number | string): void {\n const _value = this.getCurrentValidValue(value);\n this.updateValidValue(_value);\n this.displayValue.set(this.formatterValue(_value));\n }\n\n updateValidValue(value: number | string): void {\n if (this.isNotValid(value)) {\n this.validValue = '';\n } else if (this.validValue !== value) {\n this.validValue = value;\n }\n this.disabledUp.set(false);\n this.disabledDown.set(false);\n if (value || value === 0) {\n const val = Number(value);\n if (val >= this.thyMax()) {\n this.disabledUp.set(true);\n }\n if (val <= this.thyMin()) {\n this.disabledDown.set(true);\n }\n }\n }\n\n onModelChange(value: string): void {\n const parseValue = this.parser(value);\n if (this.isInputNumber(value)) {\n this.activeValue = value;\n } else {\n this.displayValue.set(parseValue);\n this.inputElement().nativeElement.value = parseValue;\n }\n const validValue = this.getCurrentValidValue(parseValue);\n if (`${this.validValue}` !== `${validValue}`) {\n this.updateValidValue(validValue);\n this.onChangeFn(validValue);\n }\n }\n\n onInputFocus(event?: Event) {\n this.activeValue = this.parser(this.displayValue().toString());\n if (!this.isFocused) {\n this.isFocused = true;\n this.thyFocus.emit(event);\n }\n }\n\n onKeyDown(e: KeyboardEvent): void {\n if (e.keyCode === UP_ARROW) {\n this.up(e);\n this.stop();\n } else if (e.keyCode === DOWN_ARROW) {\n this.down(e);\n this.stop();\n } else if (e.keyCode === ENTER) {\n this.displayValue.set(this.formatterValue(this.validValue));\n }\n }\n\n stop() {\n if (this.autoStepTimer) {\n clearTimeout(this.autoStepTimer);\n }\n this.displayValue.set(this.toNumber(this.displayValue()));\n }\n\n step(type: Type, e: MouseEvent | KeyboardEvent): void {\n this.stop();\n e.preventDefault();\n if (this.thyDisabled) {\n return;\n }\n const value = this.validValue as number;\n let val;\n if (type === Type.up) {\n val = this.upStep(value);\n } else if (type === Type.down) {\n val = this.downStep(value);\n }\n const outOfRange = val > this.thyMax() || val < this.thyMin();\n val = this.getCurrentValidValue(val);\n this.updateValidValue(val);\n this.onChangeFn(this.validValue);\n this.thyStepChange.emit({ value: this.validValue as number, type });\n this.displayValue.set(this.formatterValue(val));\n if (outOfRange) {\n return;\n }\n this.autoStepTimer = setTimeout(() => {\n (this[Type[type] as keyof typeof Type] as (e: MouseEvent | KeyboardEvent) => void)(e);\n }, this.thyStepDelay());\n }\n\n upStep(value: number): number {\n const precisionFactor = this.getPrecisionFactor(value);\n const precision = this.getMaxPrecision(value);\n const result = ((precisionFactor * value + precisionFactor * this.thyStep()) / precisionFactor).toFixed(precision);\n return this.toNumber(result);\n }\n\n downStep(value: number): number {\n const precisionFactor = this.getPrecisionFactor(value);\n const precision = Math.abs(this.getMaxPrecision(value));\n const result = ((precisionFactor * value - precisionFactor * this.thyStep()) / precisionFactor).toFixed(precision);\n return this.toNumber(result);\n }\n\n getMaxPrecision(value: string | number): number {\n const precision = this.thyPrecision();\n if (!isUndefinedOrNull(precision)) {\n return precision;\n }\n const stepPrecision = this.getPrecision(this.thyStep());\n const currentValuePrecision = this.getPrecision(value as number);\n if (!value) {\n return stepPrecision;\n }\n return Math.max(currentValuePrecision, stepPrecision);\n }\n\n getPrecisionFactor(activeValue: string | number): number {\n const precision = this.getMaxPrecision(activeValue);\n return Math.pow(10, precision);\n }\n\n getPrecision(value: number): number {\n const valueString = value.toString();\n // 0.0000000004.toString() = 4e10 => 10\n if (valueString.indexOf('e-') >= 0) {\n return parseInt(valueString.slice(valueString.indexOf('e-') + 2), 10);\n }\n let precision = 0;\n // 1.2222 => 4\n if (valueString.indexOf('.') >= 0) {\n precision = valueString.length - valueString.indexOf('.') - 1;\n }\n return precision;\n }\n\n up(e: MouseEvent | KeyboardEvent) {\n this.inputElement().nativeElement.focus();\n this.step(Type.up, e);\n }\n\n down(e: MouseEvent | KeyboardEvent) {\n this.inputElement().nativeElement.focus();\n this.step(Type.down, e);\n }\n\n formatterValue(value: number | string) {\n const parseValue = this.parser(`${value}`);\n if (parseValue) {\n const suffix = this.thySuffix();\n return suffix ? `${parseValue} ${suffix}` : parseValue;\n } else {\n return '';\n }\n }\n\n parser(value: string) {\n return value\n .trim()\n .replace(/。/g, '.')\n .replace(/[^\\w\\.-]+/g, '')\n .replace(this.thySuffix(), '');\n }\n\n getCurrentValidValue(value: string | number): number | string {\n let val = value;\n if (value === '' || isUndefinedOrNull(value)) {\n return '';\n }\n val = parseFloat(value as string);\n if (this.isNotValid(val)) {\n val = this.validValue;\n }\n if ((val as number) < this.thyMin()) {\n val = this.thyMin();\n }\n if ((val as number) > this.thyMax()) {\n val = this.thyMax();\n }\n\n return this.toNumber(val);\n }\n\n isNotValid(num: string | number): boolean {\n return isNaN(num as number) || num === '' || num === null || !!(num && num.toString().indexOf('.') === num.toString().length - 1);\n }\n\n toNumber(num: string | number): number {\n if (this.isNotValid(num)) {\n return num as number;\n }\n const numStr = String(num);\n const precision = this.thyPrecision();\n if (numStr.indexOf('.') >= 0 && !isUndefinedOrNull(precision)) {\n return Number(Number(num).toFixed(precision));\n }\n return Number(num);\n }\n\n isInputNumber(value: string) {\n return isFloat(value) || /^[-+Ee]$|^([-+.]?[0-9])*(([.]|[.eE])?[eE]?[+-]?)?$|^$/.test(value);\n }\n\n ngOnDestroy() {\n this.hostFocusControl.destroy();\n }\n}\n","@if (thyShowStepControls()) {\n <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}\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","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { ThySharedModule } from 'ngx-tethys/shared';\nimport { ThyIconModule } from 'ngx-tethys/icon';\nimport { ThyInputNumber } from './input-number.component';\nimport { ThyInputModule } from 'ngx-tethys/input';\nimport { ThyFormModule } from 'ngx-tethys/form';\n\n@NgModule({\n imports: [CommonModule, FormsModule, ThySharedModule, ThyIconModule, ThyInputModule, ThyFormModule, ThyInputNumber],\n exports: [ThyInputNumber]\n})\nexport class ThyInputNumberModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ngx-tethys-input-number.mjs","sources":["../../../src/input-number/input-number.component.ts","../../../src/input-number/input-number.component.html","../../../src/input-number/module.ts","../../../src/input-number/ngx-tethys-input-number.ts"],"sourcesContent":["import { TabIndexDisabledControlValueAccessorMixin, useHostFocusControl } from 'ngx-tethys/core';\nimport { ThyMaxDirective, ThyMinDirective } from 'ngx-tethys/form';\nimport { ThyIcon } from 'ngx-tethys/icon';\nimport { ThyInputDirective } from 'ngx-tethys/input';\nimport { ThyAutofocusDirective } from 'ngx-tethys/shared';\nimport { coerceBooleanProperty, DOWN_ARROW, ENTER, isFloat, isNumber, isUndefinedOrNull, UP_ARROW } from 'ngx-tethys/util';\n\nimport { FocusOrigin } from '@angular/cdk/a11y';\nimport {\n Component,\n ElementRef,\n forwardRef,\n Input,\n numberAttribute,\n OnDestroy,\n OnInit,\n input,\n effect,\n signal,\n output,\n viewChild\n} from '@angular/core';\nimport { ControlValueAccessor, FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\n\ntype InputSize = 'xs' | 'sm' | 'md' | 'lg' | '';\n\nenum Type {\n up,\n down\n}\n\n/**\n * 数字输入框\n * @name thy-input-number\n * @order 10\n */\n@Component({\n selector: 'thy-input-number',\n templateUrl: './input-number.component.html',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ThyInputNumber),\n multi: true\n }\n ],\n imports: [ThyIcon, ThyInputDirective, ThyAutofocusDirective, FormsModule],\n host: {\n class: 'thy-input-number',\n '[attr.tabindex]': 'tabIndex'\n }\n})\nexport class ThyInputNumber extends TabIndexDisabledControlValueAccessorMixin implements ControlValueAccessor, OnInit, OnDestroy {\n readonly inputElement = viewChild.required<ElementRef<any>>('input');\n\n private autoStepTimer: any;\n\n private hostFocusControl = useHostFocusControl();\n\n validValue!: number | string;\n\n displayValue = signal<number | string | undefined>(undefined);\n\n disabledUp = signal(false);\n\n disabledDown = signal(false);\n\n activeValue: string = '';\n\n /**\n * 是否自动聚焦\n * @default false\n */\n readonly thyAutoFocus = input(false, { transform: coerceBooleanProperty });\n\n /**\n * 输入框的placeholder\n */\n readonly thyPlaceholder = input<string>('');\n\n /**\n * 是否禁用\n * @default false\n */\n @Input({ transform: coerceBooleanProperty }) thyDisabled: boolean = false;\n\n /**\n * 最大值\n * @default Infinity\n */\n readonly thyMax = input(Infinity, { transform: (value: number) => (isNumber(value) ? value : Infinity) });\n\n /**\n * 最小值\n * @default -Infinity\n */\n readonly thyMin = input(-Infinity, { transform: (value: number) => (isNumber(value) ? value : -Infinity) });\n\n /**\n * 每次改变步数,可以为小数\n */\n readonly thyStep = input(1, { transform: numberAttribute });\n\n /**\n * 是否展示步数切换按钮\n */\n readonly thyShowStepControls = input(true, { transform: coerceBooleanProperty });\n\n /**\n * 改变步数时的延迟毫秒数,值越小变化的速度越快\n * @default 300\n */\n readonly thyStepDelay = input(300, { transform: numberAttribute });\n\n /**\n * 输入框大小\n * @type xs | sm | md | lg\n */\n readonly thySize = input<InputSize>();\n\n /**\n * 数值精度\n */\n readonly thyPrecision = input<number>();\n\n /**\n * 数值后缀\n */\n readonly thySuffix = input<string>();\n\n /**\n * 焦点失去事件\n */\n readonly thyBlur = output();\n\n /**\n * 焦点激活事件\n */\n readonly thyFocus = output<Event>();\n\n /**\n * 上下箭头点击事件\n */\n readonly thyStepChange = output<{ value: number; type: Type }>();\n\n private isFocused: boolean = false;\n\n constructor() {\n super();\n\n effect(() => {\n const displayValue = this.displayValue();\n const max = this.thyMax();\n if (displayValue || displayValue === 0) {\n const val = Number(displayValue);\n this.disabledUp.set(val >= max);\n }\n });\n\n effect(() => {\n const min = this.thyMin();\n const displayValue = this.displayValue();\n if (displayValue || displayValue === 0) {\n const val = Number(displayValue);\n this.disabledDown.set(val <= min);\n }\n });\n\n effect(() => {\n const suffix = this.thySuffix();\n const validValue = this.getCurrentValidValue(this.validValue);\n this.updateValidValue(validValue);\n this.displayValue.set(this.formatterValue(validValue));\n });\n }\n\n setDisabledState?(isDisabled: boolean): void {\n this.thyDisabled = isDisabled;\n }\n\n ngOnInit() {\n this.hostFocusControl.focusChanged = (origin: FocusOrigin) => {\n if (this.thyDisabled) {\n return;\n }\n\n if (origin) {\n if (!this.isFocused) {\n this.inputElement().nativeElement.focus();\n }\n } else {\n if (this.isFocused) {\n this.displayValue.set(this.formatterValue(this.validValue));\n this.onTouchedFn();\n this.thyBlur.emit();\n this.isFocused = false;\n }\n }\n };\n }\n\n writeValue(value: number | string): void {\n const _value = this.getCurrentValidValue(value);\n this.updateValidValue(_value);\n this.displayValue.set(this.formatterValue(_value));\n }\n\n updateValidValue(value: number | string): void {\n if (this.isNotValid(value)) {\n this.validValue = '';\n } else if (this.validValue !== value) {\n this.validValue = value;\n }\n this.disabledUp.set(false);\n this.disabledDown.set(false);\n if (value || value === 0) {\n const val = Number(value);\n if (val >= this.thyMax()) {\n this.disabledUp.set(true);\n }\n if (val <= this.thyMin()) {\n this.disabledDown.set(true);\n }\n }\n }\n\n onModelChange(value: string): void {\n const parseValue = this.parser(value);\n if (this.isInputNumber(value)) {\n this.activeValue = value;\n } else {\n this.displayValue.set(parseValue);\n this.inputElement().nativeElement.value = parseValue;\n }\n const validValue = this.getCurrentValidValue(parseValue);\n if (`${this.validValue}` !== `${validValue}`) {\n this.updateValidValue(validValue);\n this.onChangeFn(validValue);\n }\n }\n\n onInputFocus(event?: Event) {\n this.activeValue = this.parser(this.displayValue()!.toString());\n if (!this.isFocused) {\n this.isFocused = true;\n this.thyFocus.emit(event!);\n }\n }\n\n onKeyDown(e: KeyboardEvent): void {\n if (e.keyCode === UP_ARROW) {\n this.up(e);\n this.stop();\n } else if (e.keyCode === DOWN_ARROW) {\n this.down(e);\n this.stop();\n } else if (e.keyCode === ENTER) {\n this.displayValue.set(this.formatterValue(this.validValue));\n }\n }\n\n stop() {\n if (this.autoStepTimer) {\n clearTimeout(this.autoStepTimer);\n }\n this.displayValue.set(this.toNumber(this.displayValue()!));\n }\n\n step(type: Type, e: MouseEvent | KeyboardEvent): void {\n this.stop();\n e.preventDefault();\n if (this.thyDisabled) {\n return;\n }\n const value = this.validValue as number;\n let val;\n if (type === Type.up) {\n val = this.upStep(value);\n } else if (type === Type.down) {\n val = this.downStep(value);\n }\n const outOfRange = val! > this.thyMax() || val! < this.thyMin();\n val = this.getCurrentValidValue(val!);\n this.updateValidValue(val);\n this.onChangeFn(this.validValue);\n this.thyStepChange.emit({ value: this.validValue as number, type });\n this.displayValue.set(this.formatterValue(val));\n if (outOfRange) {\n return;\n }\n this.autoStepTimer = setTimeout(() => {\n (this[Type[type] as keyof typeof Type] as (e: MouseEvent | KeyboardEvent) => void)(e);\n }, this.thyStepDelay());\n }\n\n upStep(value: number): number {\n const precisionFactor = this.getPrecisionFactor(value);\n const precision = this.getMaxPrecision(value);\n const result = ((precisionFactor * value + precisionFactor * this.thyStep()) / precisionFactor).toFixed(precision);\n return this.toNumber(result);\n }\n\n downStep(value: number): number {\n const precisionFactor = this.getPrecisionFactor(value);\n const precision = Math.abs(this.getMaxPrecision(value));\n const result = ((precisionFactor * value - precisionFactor * this.thyStep()) / precisionFactor).toFixed(precision);\n return this.toNumber(result);\n }\n\n getMaxPrecision(value: string | number): number {\n const precision = this.thyPrecision();\n if (!isUndefinedOrNull(precision)) {\n return precision;\n }\n const stepPrecision = this.getPrecision(this.thyStep());\n const currentValuePrecision = this.getPrecision(value as number);\n if (!value) {\n return stepPrecision;\n }\n return Math.max(currentValuePrecision, stepPrecision);\n }\n\n getPrecisionFactor(activeValue: string | number): number {\n const precision = this.getMaxPrecision(activeValue);\n return Math.pow(10, precision);\n }\n\n getPrecision(value: number): number {\n const valueString = value.toString();\n // 0.0000000004.toString() = 4e10 => 10\n if (valueString.indexOf('e-') >= 0) {\n return parseInt(valueString.slice(valueString.indexOf('e-') + 2), 10);\n }\n let precision = 0;\n // 1.2222 => 4\n if (valueString.indexOf('.') >= 0) {\n precision = valueString.length - valueString.indexOf('.') - 1;\n }\n return precision;\n }\n\n up(e: MouseEvent | KeyboardEvent) {\n this.inputElement().nativeElement.focus();\n this.step(Type.up, e);\n }\n\n down(e: MouseEvent | KeyboardEvent) {\n this.inputElement().nativeElement.focus();\n this.step(Type.down, e);\n }\n\n formatterValue(value: number | string) {\n const parseValue = this.parser(`${value}`);\n if (parseValue) {\n const suffix = this.thySuffix();\n return suffix ? `${parseValue} ${suffix}` : parseValue;\n } else {\n return '';\n }\n }\n\n parser(value: string) {\n return (\n value\n .trim()\n .replace(/。/g, '.')\n // eslint-disable-next-line no-useless-escape\n .replace(/[^\\w\\.-]+/g, '')\n .replace(this.thySuffix()!, '')\n );\n }\n\n getCurrentValidValue(value: string | number): number | string {\n let val = value;\n if (value === '' || isUndefinedOrNull(value)) {\n return '';\n }\n val = parseFloat(value as string);\n if (this.isNotValid(val)) {\n val = this.validValue;\n }\n if ((val as number) < this.thyMin()) {\n val = this.thyMin();\n }\n if ((val as number) > this.thyMax()) {\n val = this.thyMax();\n }\n\n return this.toNumber(val);\n }\n\n isNotValid(num: string | number): boolean {\n return isNaN(num as number) || num === '' || num === null || !!(num && num.toString().indexOf('.') === num.toString().length - 1);\n }\n\n toNumber(num: string | number): number {\n if (this.isNotValid(num)) {\n return num as number;\n }\n const numStr = String(num);\n const precision = this.thyPrecision();\n if (numStr.indexOf('.') >= 0 && !isUndefinedOrNull(precision)) {\n return Number(Number(num).toFixed(precision));\n }\n return Number(num);\n }\n\n isInputNumber(value: string) {\n return isFloat(value) || /^[-+Ee]$|^([-+.]?[0-9])*(([.]|[.eE])?[eE]?[+-]?)?$|^$/.test(value);\n }\n\n ngOnDestroy() {\n this.hostFocusControl.destroy();\n }\n}\n","@if (thyShowStepControls()) {\n <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}\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","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { ThySharedModule } from 'ngx-tethys/shared';\nimport { ThyIconModule } from 'ngx-tethys/icon';\nimport { ThyInputNumber } from './input-number.component';\nimport { ThyInputModule } from 'ngx-tethys/input';\nimport { ThyFormModule } from 'ngx-tethys/form';\n\n@NgModule({\n imports: [CommonModule, FormsModule, ThySharedModule, ThyIconModule, ThyInputModule, ThyFormModule, ThyInputNumber],\n exports: [ThyInputNumber]\n})\nexport class ThyInputNumberModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|