@ng-doc/ui-kit
Version:
<!-- PROJECT LOGO --> <br /> <div align="center"> <a href="https://github.com/ng-doc/ng-doc"> <img src="https://ng-doc.com/assets/images/ng-doc.svg?raw=true" alt="Logo" height="150px"> </a>
1 lines • 6.79 kB
Source Map (JSON)
{"version":3,"file":"ng-doc-ui-kit-components-magnifier.mjs","sources":["../../../../libs/ui-kit/components/magnifier/magnifier.component.ts","../../../../libs/ui-kit/components/magnifier/magnifier.component.html","../../../../libs/ui-kit/components/magnifier/ng-doc-ui-kit-components-magnifier.ts"],"sourcesContent":["import { DOCUMENT } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n DestroyRef,\n ElementRef,\n inject,\n NgZone,\n OnInit,\n signal,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { fromEvent } from 'rxjs';\nimport { filter, switchMap, takeUntil, tap } from 'rxjs/operators';\n\n/**\n *\n * @param event\n */\nfunction isMouseEvent(event: Event): event is MouseEvent {\n return event instanceof MouseEvent;\n}\n\n/**\n *\n * @param event\n */\nfunction isWheelEvent(event: Event): event is WheelEvent {\n return event instanceof WheelEvent;\n}\n\n@Component({\n selector: 'ng-doc-magnifier',\n imports: [],\n templateUrl: './magnifier.component.html',\n styleUrl: './magnifier.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[attr.data-drag]': 'drag()',\n },\n})\nexport class NgDocMagnifierComponent implements OnInit {\n protected readonly x = signal<number>(0);\n protected readonly y = signal<number>(0);\n protected readonly scale = signal<number>(1);\n protected readonly transform;\n protected readonly drag = signal<boolean>(false);\n\n protected readonly document = inject(DOCUMENT);\n protected readonly element = inject<ElementRef<HTMLElement>>(ElementRef).nativeElement;\n protected readonly ngZone = inject(NgZone);\n protected readonly destroyRef = inject(DestroyRef);\n\n constructor() {\n this.transform = computed(() => {\n const scale = this.scale();\n const x = this.x();\n const y = this.y();\n return `matrix(${scale}, 0, 0, ${scale}, ${x * scale}, ${y * scale})`;\n });\n }\n\n ngOnInit(): void {\n fromEvent(this.element, 'mousedown')\n .pipe(\n switchMap((event: Event) => {\n event.preventDefault();\n this.drag.set(true);\n\n return fromEvent(this.document, 'mousemove').pipe(\n filter(isMouseEvent),\n takeUntil(fromEvent(this.document, 'mouseup')),\n tap({ complete: () => this.drag.set(false) }),\n );\n }),\n takeUntilDestroyed(this.destroyRef),\n )\n .subscribe((event: MouseEvent) => {\n this.x.update((x) => x + event.movementX / this.scale());\n this.y.update((y) => y + event.movementY / this.scale());\n });\n\n fromEvent(this.element, 'wheel')\n .pipe(filter(isWheelEvent), takeUntilDestroyed(this.destroyRef))\n .subscribe((event: WheelEvent) => {\n event.preventDefault();\n\n this.scale.update((scale) => Math.max(scale * (1 + event.deltaY / 1000), 1));\n });\n }\n\n incrementX(x: number): void {\n this.x.update((current) => current + x / this.scale());\n }\n\n incrementY(y: number): void {\n this.y.update((current) => current + y / this.scale());\n }\n\n zoom(diff: number): void {\n this.scale.update((scale) => Math.max(scale * (1 + diff / 1000), 1));\n }\n\n reset(): void {\n this.x.set(0);\n this.y.set(0);\n this.scale.set(1);\n }\n}\n","<div class=\"ng-doc-magnifier-container\" [style.transform]=\"transform()\">\n <ng-content></ng-content>\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}