@embedpdf/plugin-annotation 1.3.13 → 1.3.14
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/dist/vue/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sources":["../../src/vue/hooks/use-annotation.ts","../../src/vue/components/annotation-container.vue","../../src/vue/components/annotations/circle.vue","../../src/vue/components/annotations/free-text.vue","../../src/vue/components/annotations/ink.vue","../../src/vue/components/annotations/line.vue","../../src/vue/components/annotations/polygon.vue","../../src/vue/components/annotations/polyline.vue","../../src/vue/components/annotations/square.vue","../../src/vue/components/render-annotation.vue","../../src/vue/components/annotations/stamp.vue","../../src/vue/components/text-markup/highlight.vue","../../src/vue/components/text-markup/squiggly.vue","../../src/vue/components/text-markup/strikeout.vue","../../src/vue/components/text-markup/underline.vue","../../src/vue/components/annotations.vue","../../src/vue/components/text-markup.vue","../../src/vue/components/preview-renderer.vue","../../src/vue/components/annotation-paint-layer.vue","../../src/vue/components/annotation-layer.vue"],"sourcesContent":["import { readonly, ref, watchEffect } from 'vue';\nimport { useCapability, usePlugin } from '@embedpdf/core/vue';\nimport { AnnotationPlugin, AnnotationState, initialState } from '@embedpdf/plugin-annotation';\nimport { AnnotationPluginConfig } from '../../lib';\n\nexport const useAnnotationPlugin = () => usePlugin<AnnotationPlugin>(AnnotationPlugin.id);\nexport const useAnnotationCapability = () => useCapability<AnnotationPlugin>(AnnotationPlugin.id);\n\nexport const useAnnotation = () => {\n const { provides } = useAnnotationCapability();\n // We need to provide a dummy config to initialState\n const dummyConfig: AnnotationPluginConfig = { enabled: true };\n const state = ref<AnnotationState>(initialState(dummyConfig));\n\n watchEffect((onCleanup) => {\n if (provides.value) {\n const unsubscribe = provides.value.onStateChange((newState) => {\n state.value = newState;\n });\n onCleanup(unsubscribe);\n }\n });\n\n return {\n state: readonly(state),\n provides,\n };\n};\n","<template>\n <div data-no-interaction>\n <div v-bind=\"{ ...dragProps, ...doubleProps }\" :style=\"containerStyle\">\n <slot :annotation=\"currentObject\"></slot>\n\n <template v-if=\"isSelected && isResizable\">\n <template v-for=\"{ key, style, ...handle } in resize\" :key=\"key\">\n <slot\n v-if=\"slots['resize-handle']\"\n name=\"resize-handle\"\n v-bind=\"{ key, style, ...handle, backgroundColor: HANDLE_COLOR }\"\n >\n <!-- Fallback content if slot is provided but empty -->\n <div v-bind=\"handle\" :style=\"[style, { backgroundColor: HANDLE_COLOR }]\" />\n </slot>\n <div v-else v-bind=\"handle\" :style=\"[style, { backgroundColor: HANDLE_COLOR }]\" />\n </template>\n </template>\n\n <template v-if=\"isSelected && vertices.length > 0\">\n <template v-for=\"{ key, style, ...vertex } in vertices\" :key=\"key\">\n <slot\n v-if=\"slots['vertex-handle']\"\n name=\"vertex-handle\"\n v-bind=\"{ key, style, ...vertex, backgroundColor: VERTEX_COLOR }\"\n >\n <!-- Fallback content if slot is provided but empty -->\n <div v-bind=\"vertex\" :style=\"[style, { backgroundColor: VERTEX_COLOR }]\" />\n </slot>\n <div v-else v-bind=\"vertex\" :style=\"[style, { backgroundColor: VERTEX_COLOR }]\" />\n </template>\n </template>\n </div>\n\n <CounterRotate\n :rect=\"{\n origin: {\n x: currentObject.rect.origin.x * scale,\n y: currentObject.rect.origin.y * scale,\n },\n size: {\n width: currentObject.rect.size.width * scale,\n height: currentObject.rect.size.height * scale,\n },\n }\"\n :rotation=\"rotation\"\n >\n <template #default=\"{ rect, menuWrapperProps }\">\n <slot\n name=\"selection-menu\"\n :annotation=\"trackedAnnotation\"\n :selected=\"isSelected\"\n :rect=\"rect\"\n :menu-wrapper-props=\"menuWrapperProps\"\n />\n </template>\n </CounterRotate>\n </div>\n</template>\n\n<script setup lang=\"ts\" generic=\"T extends PdfAnnotationObject\">\nimport { ref, computed, watch, useSlots, toRaw, shallowRef } from 'vue';\nimport { PdfAnnotationObject } from '@embedpdf/models';\nimport { CounterRotate, useDoublePressProps, useInteractionHandles } from '@embedpdf/utils/vue';\nimport { TrackedAnnotation } from '@embedpdf/plugin-annotation';\nimport { VertexConfig } from '../../shared/types';\nimport { useAnnotationCapability } from '../hooks';\n\nconst props = withDefaults(\n defineProps<{\n scale: number;\n pageIndex: number;\n rotation: number;\n pageWidth: number;\n pageHeight: number;\n trackedAnnotation: TrackedAnnotation<T>;\n isSelected: boolean;\n isDraggable: boolean;\n isResizable: boolean;\n lockAspectRatio?: boolean;\n vertexConfig?: VertexConfig<T>;\n outlineOffset?: number;\n onDoubleClick?: (event: any) => void;\n onSelect: (event: any) => void;\n zIndex?: number;\n selectionOutlineColor?: string;\n }>(),\n {\n lockAspectRatio: false,\n outlineOffset: 1,\n zIndex: 1,\n selectionOutlineColor: '#007ACC',\n },\n);\n\nconst HANDLE_COLOR = '#007ACC';\nconst VERTEX_COLOR = '#007ACC';\nconst HANDLE_SIZE = 12;\nconst VERTEX_SIZE = 12;\n\nconst preview = shallowRef<Partial<T>>(toRaw(props.trackedAnnotation.object));\nconst { provides: annotationProvides } = useAnnotationCapability();\nconst gestureBaseRef = ref<T | null>(null);\n\nconst currentObject = computed<T>(\n () => ({ ...toRaw(props.trackedAnnotation.object), ...toRaw(preview.value) }) as T,\n);\n\nconst elementSnapshot = computed(() => {\n const obj = toRaw(currentObject.value);\n return obj.rect; // plain-ish; composable will normalize fully\n});\n\nconst verticesSnapshot = computed(() => {\n const obj = toRaw(currentObject.value);\n return props.vertexConfig?.extractVertices(obj) ?? [];\n});\n\nconst constraintsSnapshot = computed(() => ({\n minWidth: 10,\n minHeight: 10,\n boundingBox: {\n width: props.pageWidth / props.scale,\n height: props.pageHeight / props.scale,\n },\n}));\n\nconst { dragProps, vertices, resize } = useInteractionHandles({\n controller: {\n element: elementSnapshot,\n vertices: verticesSnapshot,\n constraints: constraintsSnapshot,\n maintainAspectRatio: computed(() => props.lockAspectRatio),\n pageRotation: computed(() => props.rotation),\n scale: computed(() => props.scale),\n enabled: computed(() => props.isSelected),\n onUpdate: (event) => {\n if (!event.transformData?.type) return;\n\n if (event.state === 'start') {\n gestureBaseRef.value = currentObject.value;\n }\n\n const base = gestureBaseRef.value ?? currentObject.value;\n\n const changes = event.transformData.changes.vertices\n ? props.vertexConfig?.transformAnnotation(toRaw(base), event.transformData.changes.vertices)\n : { rect: event.transformData.changes.rect };\n\n const patched = annotationProvides.value?.transformAnnotation<T>(base, {\n type: event.transformData.type,\n changes: changes as Partial<T>,\n metadata: event.transformData.metadata,\n });\n\n if (patched) {\n preview.value = { ...toRaw(preview.value), ...patched };\n }\n\n if (event.state === 'end' && patched) {\n gestureBaseRef.value = null;\n annotationProvides.value?.updateAnnotation(\n props.pageIndex,\n props.trackedAnnotation.object.id,\n patched,\n );\n }\n },\n },\n resizeUI: {\n handleSize: HANDLE_SIZE,\n spacing: props.outlineOffset,\n offsetMode: 'outside',\n includeSides: !props.lockAspectRatio,\n zIndex: props.zIndex + 1,\n },\n vertexUI: {\n vertexSize: VERTEX_SIZE,\n zIndex: props.zIndex + 2,\n },\n includeVertices: !!props.vertexConfig,\n});\n\nconst doubleProps = useDoublePressProps(props.onDoubleClick);\n\nwatch(\n () => props.trackedAnnotation.object,\n (newObject) => {\n preview.value = newObject;\n },\n { deep: true },\n);\n\nconst containerStyle = computed(() => ({\n position: 'absolute' as 'absolute',\n left: `${currentObject.value.rect.origin.x * props.scale}px`,\n top: `${currentObject.value.rect.origin.y * props.scale}px`,\n width: `${currentObject.value.rect.size.width * props.scale}px`,\n height: `${currentObject.value.rect.size.height * props.scale}px`,\n outline: props.isSelected ? `1px solid ${props.selectionOutlineColor}` : 'none',\n outlineOffset: props.isSelected ? `${props.outlineOffset}px` : '0px',\n pointerEvents: props.isSelected ? 'auto' : ('none' as 'auto' | 'none'),\n touchAction: 'none',\n cursor: props.isSelected && props.isDraggable ? 'move' : 'default',\n zIndex: props.zIndex,\n}));\n\n// Add useSlots to access slot information\nconst slots = useSlots();\n</script>\n","<template>\n <svg\n :style=\"{\n position: 'absolute',\n width: svgWidth,\n height: svgHeight,\n pointerEvents: 'none',\n zIndex: 2,\n }\"\n :width=\"svgWidth\"\n :height=\"svgHeight\"\n :viewBox=\"`0 0 ${geometry.width} ${geometry.height}`\"\n >\n <ellipse\n :cx=\"geometry.cx\"\n :cy=\"geometry.cy\"\n :rx=\"geometry.rx\"\n :ry=\"geometry.ry\"\n :fill=\"color\"\n :opacity=\"opacity\"\n @pointerdown=\"onClick\"\n @touchstart=\"onClick\"\n :style=\"{\n cursor: isSelected ? 'move' : 'pointer',\n pointerEvents: isSelected ? 'none' : color === 'transparent' ? 'visibleStroke' : 'visible',\n stroke: strokeColor ?? color,\n strokeWidth: strokeWidth,\n ...(strokeStyle === PdfAnnotationBorderStyle.DASHED && {\n strokeDasharray: strokeDashArray?.join(','),\n }),\n }\"\n />\n </svg>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed } from 'vue';\nimport { PdfAnnotationBorderStyle, Rect } from '@embedpdf/models';\n\ninterface CircleProps {\n isSelected: boolean;\n color?: string;\n strokeColor?: string;\n opacity?: number;\n strokeWidth: number;\n strokeStyle?: PdfAnnotationBorderStyle;\n strokeDashArray?: number[];\n rect: Rect;\n scale: number;\n onClick?: (e: PointerEvent | TouchEvent) => void;\n}\n\nconst props = withDefaults(defineProps<CircleProps>(), {\n color: '#000000',\n opacity: 1,\n strokeStyle: PdfAnnotationBorderStyle.SOLID,\n});\n\nconst geometry = computed(() => {\n const outerW = props.rect.size.width;\n const outerH = props.rect.size.height;\n const innerW = Math.max(outerW - props.strokeWidth, 0);\n const innerH = Math.max(outerH - props.strokeWidth, 0);\n\n return {\n width: outerW,\n height: outerH,\n cx: props.strokeWidth / 2 + innerW / 2,\n cy: props.strokeWidth / 2 + innerH / 2,\n rx: innerW / 2,\n ry: innerH / 2,\n };\n});\n\nconst svgWidth = computed(() => geometry.value.width * props.scale);\nconst svgHeight = computed(() => geometry.value.height * props.scale);\n</script>\n","<template>\n <div\n :style=\"{\n position: 'absolute',\n width: `${annotation.object.rect.size.width * scale}px`,\n height: `${annotation.object.rect.size.height * scale}px`,\n cursor: isSelected && !isEditing ? 'move' : 'default',\n pointerEvents: isSelected && !isEditing ? 'none' : 'auto',\n zIndex: 2,\n }\"\n @pointerdown=\"onClick\"\n @touchstart=\"onClick\"\n >\n <span\n ref=\"editorRef\"\n @blur=\"handleBlur\"\n tabindex=\"0\"\n :style=\"editorStyle\"\n :contenteditable=\"isEditing\"\n >{{ annotation.object.contents }}</span\n >\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, watch, computed, onMounted } from 'vue';\nimport {\n PdfFreeTextAnnoObject,\n PdfVerticalAlignment,\n standardFontCss,\n textAlignmentToCss,\n} from '@embedpdf/models';\nimport { TrackedAnnotation } from '@embedpdf/plugin-annotation';\nimport { useAnnotationCapability } from '../../hooks';\n\nconst props = defineProps<{\n isSelected: boolean;\n isEditing: boolean;\n annotation: TrackedAnnotation<PdfFreeTextAnnoObject>;\n pageIndex: number;\n scale: number;\n onClick?: (e: PointerEvent | TouchEvent) => void;\n}>();\n\nconst editorRef = ref<HTMLSpanElement | null>(null);\nconst { provides: annotationProvides } = useAnnotationCapability();\nconst isIOS = ref(false);\n\nonMounted(() => {\n try {\n const nav = navigator as any;\n isIOS.value =\n /iPad|iPhone|iPod/.test(navigator.userAgent) ||\n (navigator.platform === 'MacIntel' && nav?.maxTouchPoints > 1);\n } catch {\n isIOS.value = false;\n }\n});\n\nwatch(\n () => props.isEditing,\n (editing) => {\n if (editing && editorRef.value) {\n const editor = editorRef.value;\n editor.focus();\n const selection = window.getSelection();\n if (selection) {\n const range = document.createRange();\n range.selectNodeContents(editor);\n range.collapse(false);\n selection.removeAllRanges();\n selection.addRange(range);\n }\n }\n },\n);\n\nconst handleBlur = () => {\n if (!annotationProvides.value || !editorRef.value) return;\n annotationProvides.value.updateAnnotation(props.pageIndex, props.annotation.object.id, {\n contents: editorRef.value.innerText,\n });\n};\n\nconst editorStyle = computed(() => {\n const { object: anno } = props.annotation;\n const computedFontPx = anno.fontSize * props.scale;\n const MIN_IOS_FOCUS_FONT_PX = 16;\n const needsComp =\n isIOS.value && props.isEditing && computedFontPx > 0 && computedFontPx < MIN_IOS_FOCUS_FONT_PX;\n const adjustedFontPx = needsComp ? MIN_IOS_FOCUS_FONT_PX : computedFontPx;\n const scaleComp = needsComp ? computedFontPx / MIN_IOS_FOCUS_FONT_PX : 1;\n const invScalePercent = needsComp ? 100 / scaleComp : 100;\n\n return {\n color: anno.fontColor,\n fontSize: `${adjustedFontPx}px`,\n fontFamily: standardFontCss(anno.fontFamily),\n textAlign: textAlignmentToCss(anno.textAlign),\n flexDirection: 'column' as 'column',\n justifyContent:\n anno.verticalAlign === PdfVerticalAlignment.Top\n ? 'flex-start'\n : anno.verticalAlign === PdfVerticalAlignment.Middle\n ? 'center'\n : 'flex-end',\n display: 'flex',\n backgroundColor: anno.backgroundColor,\n opacity: anno.opacity,\n width: needsComp ? `${invScalePercent}%` : '100%',\n height: needsComp ? `${invScalePercent}%` : '100%',\n lineHeight: '1.18',\n overflow: 'hidden',\n cursor: props.isEditing ? 'text' : 'pointer',\n outline: 'none',\n transform: needsComp ? `scale(${scaleComp})` : undefined,\n transformOrigin: 'top left',\n };\n});\n</script>\n","<template>\n <svg\n :style=\"{\n position: 'absolute',\n width: `${width}px`,\n height: `${height}px`,\n pointerEvents: 'none',\n zIndex: 2,\n overflow: 'visible',\n }\"\n :width=\"width\"\n :height=\"height\"\n :viewBox=\"`0 0 ${rect.size.width} ${rect.size.height}`\"\n >\n <path\n v-for=\"(d, i) in paths\"\n :key=\"i\"\n :d=\"d\"\n fill=\"none\"\n :opacity=\"opacity\"\n @pointerdown=\"onClick\"\n @touchstart=\"onClick\"\n :style=\"{\n cursor: isSelected ? 'move' : 'pointer',\n pointerEvents: isSelected ? 'none' : 'visibleStroke',\n stroke: color,\n strokeWidth: strokeWidth,\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n }\"\n />\n </svg>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed } from 'vue';\nimport { PdfInkListObject, Rect } from '@embedpdf/models';\n\nconst props = withDefaults(\n defineProps<{\n isSelected: boolean;\n color?: string;\n opacity?: number;\n strokeWidth: number;\n inkList: PdfInkListObject[];\n rect: Rect;\n scale: number;\n onClick?: (e: PointerEvent | TouchEvent) => void;\n }>(),\n {\n color: '#000000',\n opacity: 1,\n },\n);\n\nconst paths = computed(() => {\n return props.inkList.map(({ points }) => {\n let d = '';\n points.forEach(({ x, y }, i) => {\n const lx = x - props.rect.origin.x;\n const ly = y - props.rect.origin.y;\n d += (i === 0 ? 'M' : 'L') + `${lx} ${ly} `;\n });\n return d.trim();\n });\n});\n\nconst width = computed(() => props.rect.size.width * props.scale);\nconst height = computed(() => props.rect.size.height * props.scale);\n</script>\n","<template>\n <svg\n :style=\"{\n position: 'absolute',\n width: `${width}px`,\n height: `${height}px`,\n pointerEvents: 'none',\n zIndex: 2,\n overflow: 'visible',\n }\"\n :width=\"width\"\n :height=\"height\"\n :viewBox=\"`0 0 ${rect.size.width} ${rect.size.height}`\"\n >\n <line\n :x1=\"localLine.x1\"\n :y1=\"localLine.y1\"\n :x2=\"localLine.x2\"\n :y2=\"localLine.y2\"\n :opacity=\"opacity\"\n @pointerdown=\"onClick\"\n @touchstart=\"onClick\"\n :style=\"{\n cursor: isSelected ? 'move' : 'pointer',\n pointerEvents: isSelected ? 'none' : 'visibleStroke',\n stroke: strokeColor,\n strokeWidth: strokeWidth,\n strokeLinecap: 'butt',\n ...(strokeStyle === PdfAnnotationBorderStyle.DASHED && {\n strokeDasharray: strokeDashArray?.join(','),\n }),\n }\"\n />\n <path\n v-if=\"endings.start\"\n :d=\"endings.start.d\"\n :transform=\"endings.start.transform\"\n @pointerdown=\"onClick\"\n @touchstart=\"onClick\"\n :stroke=\"strokeColor\"\n :style=\"getEndingStyle(endings.start)\"\n :fill=\"endings.start.filled ? color : 'none'\"\n />\n <path\n v-if=\"endings.end\"\n :d=\"endings.end.d\"\n :transform=\"endings.end.transform\"\n @pointerdown=\"onClick\"\n @touchstart=\"onClick\"\n :stroke=\"strokeColor\"\n :style=\"getEndingStyle(endings.end)\"\n :fill=\"endings.end.filled ? color : 'none'\"\n />\n </svg>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed } from 'vue';\nimport { Rect, LinePoints, LineEndings, PdfAnnotationBorderStyle } from '@embedpdf/models';\nimport { patching } from '@embedpdf/plugin-annotation';\n\nconst props = withDefaults(\n defineProps<{\n color?: string;\n opacity?: number;\n strokeWidth: number;\n strokeColor?: string;\n strokeStyle?: PdfAnnotationBorderStyle;\n strokeDashArray?: number[];\n rect: Rect;\n linePoints: LinePoints;\n lineEndings?: LineEndings;\n scale: number;\n onClick?: (e: PointerEvent | TouchEvent) => void;\n isSelected: boolean;\n }>(),\n {\n color: 'transparent',\n opacity: 1,\n strokeColor: '#000000',\n strokeStyle: PdfAnnotationBorderStyle.SOLID,\n },\n);\n\nconst localLine = computed(() => ({\n x1: props.linePoints.start.x - props.rect.origin.x,\n y1: props.linePoints.start.y - props.rect.origin.y,\n x2: props.linePoints.end.x - props.rect.origin.x,\n y2: props.linePoints.end.y - props.rect.origin.y,\n}));\n\nconst endings = computed(() => {\n const { x1, y1, x2, y2 } = localLine.value;\n const angle = Math.atan2(y2 - y1, x2 - x1);\n return {\n start: patching.createEnding(\n props.lineEndings?.start,\n props.strokeWidth,\n angle + Math.PI,\n x1,\n y1,\n ),\n end: patching.createEnding(props.lineEndings?.end, props.strokeWidth, angle, x2, y2),\n };\n});\n\nconst getEndingStyle = (ending: patching.SvgEnding) => ({\n cursor: props.isSelected ? 'move' : 'pointer',\n strokeWidth: props.strokeWidth,\n strokeLinecap: 'butt' as 'butt',\n pointerEvents: (props.isSelected ? 'none' : ending.filled ? 'visible' : 'visibleStroke') as\n | 'none'\n | 'visible'\n | 'visibleStroke',\n ...(props.strokeStyle === PdfAnnotationBorderStyle.DASHED && {\n strokeDasharray: props.strokeDashArray?.join(','),\n }),\n});\n\nconst width = computed(() => props.rect.size.width * props.scale);\nconst height = computed(() => props.rect.size.height * props.scale);\n</script>\n","<template>\n <svg\n :style=\"{\n position: 'absolute',\n width: `${width}px`,\n height: `${height}px`,\n pointerEvents: 'none',\n zIndex: 2,\n overflow: 'visible',\n }\"\n :width=\"width\"\n :height=\"height\"\n :viewBox=\"`0 0 ${rect.size.width} ${rect.size.height}`\"\n >\n <path\n :d=\"pathData\"\n @pointerdown=\"onClick\"\n @touchstart=\"onClick\"\n :opacity=\"opacity\"\n :style=\"{\n fill: currentVertex ? 'none' : color,\n stroke: strokeColor ?? color,\n strokeWidth,\n cursor: isSelected ? 'move' : 'pointer',\n pointerEvents: isSelected ? 'none' : color === 'transparent' ? 'visibleStroke' : 'visible',\n strokeLinecap: 'butt',\n strokeLinejoin: 'miter',\n ...(strokeStyle === PdfAnnotationBorderStyle.DASHED && {\n strokeDasharray: strokeDashArray?.join(','),\n }),\n }\"\n />\n <path\n v-if=\"isPreviewing && localPts.length > 1\"\n :d=\"`M ${localPts[localPts.length - 1].x} ${\n localPts[localPts.length - 1].y\n } L ${localPts[0].x} ${localPts[0].y}`\"\n fill=\"none\"\n :style=\"{\n stroke: strokeColor,\n strokeWidth,\n strokeDasharray: '4,4',\n opacity: 0.7,\n }\"\n />\n <rect\n v-if=\"isPreviewing && localPts.length >= 2\"\n :x=\"localPts[0].x - handleSize / scale / 2\"\n :y=\"localPts[0].y - handleSize / scale / 2\"\n :width=\"handleSize / scale\"\n :height=\"handleSize / scale\"\n :fill=\"strokeColor\"\n :opacity=\"0.4\"\n :stroke=\"strokeColor\"\n :stroke-width=\"strokeWidth / 2\"\n />\n </svg>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed } from 'vue';\nimport { Rect, Position, PdfAnnotationBorderStyle } from '@embedpdf/models';\n\nconst props = withDefaults(\n defineProps<{\n rect: Rect;\n vertices: Position[];\n color?: string;\n strokeColor?: string;\n opacity?: number;\n strokeWidth: number;\n strokeStyle?: PdfAnnotationBorderStyle;\n strokeDashArray?: number[];\n scale: number;\n isSelected: boolean;\n onClick?: (e: PointerEvent | TouchEvent) => void;\n currentVertex?: Position;\n handleSize?: number;\n }>(),\n {\n color: 'transparent',\n strokeColor: '#000000',\n opacity: 1,\n strokeStyle: PdfAnnotationBorderStyle.SOLID,\n handleSize: 14,\n },\n);\n\nconst allPoints = computed(() =>\n props.currentVertex ? [...props.vertices, props.currentVertex] : props.vertices,\n);\n\nconst localPts = computed(() =>\n allPoints.value.map(({ x, y }) => ({\n x: x - props.rect.origin.x,\n y: y - props.rect.origin.y,\n })),\n);\n\nconst pathData = computed(() => {\n if (!localPts.value.length) return '';\n const [first, ...rest] = localPts.value;\n const isPreview = !!props.currentVertex;\n return (\n `M ${first.x} ${first.y} ` +\n rest.map((p) => `L ${p.x} ${p.y}`).join(' ') +\n (isPreview ? '' : ' Z')\n ).trim();\n});\n\nconst isPreviewing = computed(() => props.currentVertex && props.vertices.length > 0);\n\nconst width = computed(() => props.rect.size.width * props.scale);\nconst height = computed(() => props.rect.size.height * props.scale);\n</script>\n","<template>\n <svg\n :style=\"{\n position: 'absolute',\n width: `${width}px`,\n height: `${height}px`,\n pointerEvents: 'none',\n zIndex: 2,\n overflow: 'visible',\n }\"\n :width=\"width\"\n :height=\"height\"\n :viewBox=\"`0 0 ${rect.size.width} ${rect.size.height}`\"\n >\n <path\n :d=\"pathData\"\n @pointerdown=\"onClick\"\n @touchstart=\"onClick\"\n :opacity=\"opacity\"\n :style=\"{\n fill: 'none',\n stroke: strokeColor ?? color,\n strokeWidth,\n cursor: isSelected ? 'move' : 'pointer',\n pointerEvents: isSelected ? 'none' : 'visibleStroke',\n strokeLinecap: 'butt',\n strokeLinejoin: 'miter',\n }\"\n />\n <path\n v-if=\"endings.start\"\n :d=\"endings.start.d\"\n :transform=\"endings.start.transform\"\n :stroke=\"strokeColor\"\n :fill=\"endings.start.filled ? color : 'none'\"\n @pointerdown=\"onClick\"\n @touchstart=\"onClick\"\n :style=\"getEndingStyle(endings.start)\"\n />\n <path\n v-if=\"endings.end\"\n :d=\"endings.end.d\"\n :transform=\"endings.end.transform\"\n :stroke=\"strokeColor\"\n :fill=\"endings.end.filled ? color : 'none'\"\n @pointerdown=\"onClick\"\n @touchstart=\"onClick\"\n :style=\"getEndingStyle(endings.end)\"\n />\n </svg>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed } from 'vue';\nimport { Rect, Position, LineEndings } from '@embedpdf/models';\nimport { patching } from '@embedpdf/plugin-annotation';\n\nconst props = withDefaults(\n defineProps<{\n rect: Rect;\n vertices: Position[];\n color?: string;\n strokeColor?: string;\n opacity?: number;\n strokeWidth: number;\n scale: number;\n isSelected: boolean;\n onClick?: (e: PointerEvent | TouchEvent) => void;\n lineEndings?: LineEndings;\n }>(),\n {\n color: 'transparent',\n strokeColor: '#000000',\n opacity: 1,\n },\n);\n\nconst localPts = computed(() =>\n props.vertices.map(({ x, y }) => ({\n x: x - props.rect.origin.x,\n y: y - props.rect.origin.y,\n })),\n);\n\nconst pathData = computed(() => {\n if (localPts.value.length === 0) return '';\n const [first, ...rest] = localPts.value;\n return (`M ${first.x} ${first.y} ` + rest.map((p) => `L ${p.x} ${p.y} `).join('')).trim();\n});\n\nconst endings = computed(() => {\n if (localPts.value.length < 2) return { start: null, end: null };\n const toAngle = (a: Position, b: Position) => Math.atan2(b.y - a.y, b.x - a.x);\n\n const startRad = toAngle(localPts.value[0], localPts.value[1]);\n const endRad = toAngle(\n localPts.value[localPts.value.length - 2],\n localPts.value[localPts.value.length - 1],\n );\n\n return {\n start: patching.createEnding(\n props.lineEndings?.start,\n props.strokeWidth,\n startRad + Math.PI,\n localPts.value[0].x,\n localPts.value[0].y,\n ),\n end: patching.createEnding(\n props.lineEndings?.end,\n props.strokeWidth,\n endRad,\n localPts.value[localPts.value.length - 1].x,\n localPts.value[localPts.value.length - 1].y,\n ),\n };\n});\n\nconst getEndingStyle = (ending: patching.SvgEnding) => ({\n cursor: props.isSelected ? 'move' : 'pointer',\n strokeWidth: props.strokeWidth,\n pointerEvents: (props.isSelected ? 'none' : ending.filled ? 'visible' : 'visibleStroke') as\n | 'none'\n | 'visible'\n | 'visibleStroke',\n strokeLinecap: 'butt' as 'butt',\n});\n\nconst width = computed(() => props.rect.size.width * props.scale);\nconst height = computed(() => props.rect.size.height * props.scale);\n</script>\n","<template>\n <svg\n :style=\"{\n position: 'absolute',\n width: svgWidth,\n height: svgHeight,\n pointerEvents: 'none',\n zIndex: 2,\n }\"\n :width=\"svgWidth\"\n :height=\"svgHeight\"\n :viewBox=\"`0 0 ${geometry.width + strokeWidth} ${geometry.height + strokeWidth}`\"\n >\n <rect\n :x=\"geometry.x\"\n :y=\"geometry.y\"\n :width=\"geometry.width\"\n :height=\"geometry.height\"\n :fill=\"color\"\n :opacity=\"opacity\"\n @pointerdown=\"onClick\"\n @touchstart=\"onClick\"\n :style=\"{\n cursor: isSelected ? 'move' : 'pointer',\n pointerEvents: isSelected ? 'none' : color === 'transparent' ? 'visibleStroke' : 'visible',\n stroke: strokeColor ?? color,\n strokeWidth: strokeWidth,\n ...(strokeStyle === PdfAnnotationBorderStyle.DASHED && {\n strokeDasharray: strokeDashArray?.join(','),\n }),\n }\"\n />\n </svg>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed } from 'vue';\nimport { PdfAnnotationBorderStyle, Rect } from '@embedpdf/models';\n\nconst props = withDefaults(\n defineProps<{\n isSelected: boolean;\n color?: string;\n strokeColor?: string;\n opacity?: number;\n strokeWidth: number;\n strokeStyle?: PdfAnnotationBorderStyle;\n strokeDashArray?: number[];\n rect: Rect;\n scale: number;\n onClick?: (e: PointerEvent | TouchEvent) => void;\n }>(),\n {\n color: '#000000',\n opacity: 1,\n strokeStyle: PdfAnnotationBorderStyle.SOLID,\n },\n);\n\nconst geometry = computed(() => {\n const outerW = props.rect.size.width;\n const outerH = props.rect.size.height;\n const innerW = Math.max(outerW - props.strokeWidth, 0);\n const innerH = Math.max(outerH - props.strokeWidth, 0);\n\n return {\n width: innerW,\n height: innerH,\n x: props.strokeWidth / 2,\n y: props.strokeWidth / 2,\n };\n});\n\nconst svgWidth = computed(() => (geometry.value.width + props.strokeWidth) * props.scale);\nconst svgHeight = computed(() => (geometry.value.height + props.strokeWidth) * props.scale);\n</script>\n","<template>\n <img\n v-if=\"imageUrl\"\n :src=\"imageUrl\"\n @load=\"handleImageLoad\"\n :style=\"{\n width: '100%',\n height: '100%',\n display: 'block',\n ...style,\n }\"\n />\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, watch, onUnmounted, CSSProperties, computed } from 'vue';\nimport { ignore, PdfAnnotationObject, PdfErrorCode } from '@embedpdf/models';\nimport { useAnnotationCapability } from '../hooks';\nimport { deepToRaw } from '@embedpdf/utils/vue';\n\nconst props = withDefaults(\n defineProps<{\n pageIndex: number;\n annotation: PdfAnnotationObject;\n scaleFactor?: number;\n style?: CSSProperties;\n }>(),\n {\n scaleFactor: 1,\n },\n);\n\nconst { provides: annotationProvides } = useAnnotationCapability();\nconst imageUrl = ref<string | null>(null);\nconst urlRef = ref<string | null>(null);\nconst currentTask = ref<any>(null);\n\n// Extract primitive values to avoid unnecessary re-renders\nconst annotationId = computed(() => props.annotation.id);\nconst rectWidth = computed(() => props.annotation.rect.size.width);\nconst rectHeight = computed(() => props.annotation.rect.size.height);\n\nwatch(\n () => [\n props.pageIndex,\n props.scaleFactor,\n annotationId.value,\n rectWidth.value,\n rectHeight.value,\n annotationProvides.value,\n ],\n (_, __, onCleanup) => {\n if (annotationProvides.value) {\n if (urlRef.value) {\n URL.revokeObjectURL(urlRef.value);\n urlRef.value = null;\n }\n\n const task = annotationProvides.value.renderAnnotation({\n pageIndex: props.pageIndex,\n annotation: deepToRaw(props.annotation),\n options: {\n scaleFactor: props.scaleFactor,\n dpr: window.devicePixelRatio,\n },\n });\n\n currentTask.value = task;\n\n task.wait((blob) => {\n const url = URL.createObjectURL(blob);\n imageUrl.value = url;\n urlRef.value = url;\n }, ignore);\n\n onCleanup(() => {\n if (urlRef.value) {\n URL.revokeObjectURL(urlRef.value);\n urlRef.value = null;\n } else {\n task.abort({\n code: PdfErrorCode.Cancelled,\n message: 'canceled render task',\n });\n }\n });\n }\n },\n { immediate: true },\n);\n\nonUnmounted(() => {\n if (urlRef.value) {\n URL.revokeObjectURL(urlRef.value);\n urlRef.value = null;\n }\n if (currentTask.value) {\n currentTask.value.abort({\n code: PdfErrorCode.Cancelled,\n message: 'canceled render task on unmount',\n });\n }\n});\n\nconst handleImageLoad = () => {\n if (urlRef.value) {\n URL.revokeObjectURL(urlRef.value);\n urlRef.value = null;\n }\n};\n</script>\n","<template>\n <div\n :style=\"{\n position: 'absolute',\n width: '100%',\n height: '100%',\n zIndex: 2,\n pointerEvents: isSelected ? 'none' : 'auto',\n cursor: 'pointer',\n }\"\n @pointerdown=\"onClick\"\n @touchstart=\"onClick\"\n >\n <RenderAnnotation\n :pageIndex=\"pageIndex\"\n :annotation=\"{ ...annotation.object, id: annotation.object.id }\"\n :scaleFactor=\"scale\"\n />\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { PdfStampAnnoObject } from '@embedpdf/models';\nimport { TrackedAnnotation } from '@embedpdf/plugin-annotation';\nimport RenderAnnotation from '../render-annotation.vue';\n\ndefineProps<{\n isSelected: boolean;\n annotation: TrackedAnnotation<PdfStampAnnoObject>;\n pageIndex: number;\n scale: number;\n onClick: (e: PointerEvent | TouchEvent) => void;\n}>();\n</script>\n","<template>\n <div\n v-for=\"(b, i) in segmentRects\"\n :key=\"i\"\n @pointerdown=\"onClick\"\n @touchstart=\"onClick\"\n :style=\"{\n position: 'absolute',\n left: `${(rect ? b.origin.x - rect.origin.x : b.origin.x) * scale}px`,\n top: `${(rect ? b.origin.y - rect.origin.y : b.origin.y) * scale}px`,\n width: `${b.size.width * scale}px`,\n height: `${b.size.height * scale}px`,\n background: color,\n opacity: opacity,\n pointerEvents: onClick ? 'auto' : 'none',\n cursor: onClick ? 'pointer' : 'default',\n zIndex: onClick ? 1 : undefined,\n }\"\n ></div>\n</template>\n\n<script setup lang=\"ts\">\nimport { Rect } from '@embedpdf/models';\n\nwithDefaults(\n defineProps<{\n color?: string;\n opacity?: number;\n segmentRects: Rect[];\n rect?: Rect;\n scale: number;\n onClick?: (e: PointerEvent | TouchEvent) => void;\n }>(),\n {\n color: '#FFFF00',\n opacity: 0.5,\n },\n);\n</script>\n","<template>\n <div\n v-for=\"(r, i) in segmentRects\"\n :key=\"i\"\n @pointerdown=\"onClick\"\n @touchstart=\"onClick\"\n :style=\"{\n position: 'absolute',\n left: `${(rect ? r.origin.x - rect.origin.x : r.origin.x) * scale}px`,\n top: `${(rect ? r.origin.y - rect.origin.y : r.origin.y) * scale}px`,\n width: `${r.size.width * scale}px`,\n height: `${r.size.height * scale}px`,\n background: 'transparent',\n pointerEvents: onClick ? 'auto' : 'none',\n cursor: onClick ? 'pointer' : 'default',\n zIndex: onClick ? 1 : 0,\n }\"\n >\n <div\n :style=\"{\n position: 'absolute',\n left: 0,\n bottom: 0,\n width: '100%',\n height: `${amplitude * 2}px`,\n backgroundImage: svgDataUri,\n backgroundRepeat: 'repeat-x',\n backgroundSize: `${period}px ${amplitude * 2}px`,\n opacity: opacity,\n pointerEvents: 'none',\n }\"\n />\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed } from 'vue';\nimport { Rect } from '@embedpdf/models';\n\nconst props = withDefaults(\n defineProps<{\n color?: string;\n opacity?: number;\n segmentRects: Rect[];\n rect?: Rect;\n scale: number;\n onClick?: (e: PointerEvent | TouchEvent) => void;\n }>(),\n {\n color: '#FFFF00',\n opacity: 0.5,\n },\n);\n\nconst amplitude = computed(() => 2 * props.scale);\nconst period = computed(() => 6 * props.scale);\n\nconst svgDataUri = computed(() => {\n const amp = amplitude.value;\n const per = period.value;\n const svg = `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"${per}\" height=\"${\n amp * 2\n }\" viewBox=\"0 0 ${per} ${amp * 2}\">\n <path d=\"M0 ${amp} Q ${per / 4} 0 ${per / 2} ${amp} T ${per} ${amp}\"\n fill=\"none\" stroke=\"${props.color}\" stroke-width=\"${amp}\" stroke-linecap=\"round\"/>\n </svg>`;\n return `url(\"data:image/svg+xml;utf8,${encodeURIComponent(svg)}\")`;\n});\n</script>\n","<template>\n <div\n v-for=\"(r, i) in segmentRects\"\n :key=\"i\"\n @pointerdown=\"onClick\"\n @touchstart=\"onClick\"\n :style=\"{\n position: 'absolute',\n left: `${(rect ? r.origin.x - rect.origin.x : r.origin.x) * scale}px`,\n top: `${(rect ? r.origin.y - rect.origin.y : r.origin.y) * scale}px`,\n width: `${r.size.width * scale}px`,\n height: `${r.size.height * scale}px`,\n background: 'transparent',\n pointerEvents: onClick ? 'auto' : 'none',\n cursor: onClick ? 'pointer' : 'default',\n zIndex: onClick ? 1 : 0,\n }\"\n >\n <div\n :style=\"{\n position: 'absolute',\n left: 0,\n top: '50%',\n width: '100%',\n height: `${thickness}px`,\n background: color,\n opacity: opacity,\n transform: 'translateY(-50%)',\n pointerEvents: 'none',\n }\"\n />\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed } from 'vue';\nimport { Rect } from '@embedpdf/models';\n\nconst props = withDefaults(\n defineProps<{\n color?: string;\n opacity?: number;\n segmentRects: Rect[];\n rect?: Rect;\n scale: number;\n onClick?: (e: PointerEvent | TouchEvent) => void;\n }>(),\n {\n color: '#FFFF00',\n opacity: 0.5,\n },\n);\n\nconst thickness = computed(() => 2 * props.scale);\n</script>\n","<template>\n <div\n v-for=\"(r, i) in segmentRects\"\n :key=\"i\"\n @pointerdown=\"onClick\"\n @touchstart=\"onClick\"\n :style=\"{\n position: 'absolute',\n left: `${(rect ? r.origin.x - rect.origin.x : r.origin.x) * scale}px`,\n top: `${(rect ? r.origin.y - rect.origin.y : r.origin.y) * scale}px`,\n width: `${r.size.width * scale}px`,\n height: `${r.size.height * scale}px`,\n background: 'transparent',\n pointerEvents: onClick ? 'auto' : 'none',\n cursor: onClick ? 'pointer' : 'default',\n zIndex: onClick ? 1 : 0,\n }\"\n >\n <div\n :style=\"{\n position: 'absolute',\n left: 0,\n bottom: 0,\n width: '100%',\n height: `${thickness}px`,\n background: color,\n opacity: opacity,\n pointerEvents: 'none',\n }\"\n />\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed } from 'vue';\nimport { Rect } from '@embedpdf/models';\n\nconst props = withDefaults(\n defineProps<{\n color?: string;\n opacity?: number;\n segmentRects: Rect[];\n rect?: Rect;\n scale: number;\n onClick?: (e: PointerEvent | TouchEvent) => void;\n }>(),\n {\n color: '#FFFF00',\n opacity: 0.5,\n },\n);\n\nconst thickness = computed(() => 2 * props.scale);\n</script>\n","<template>\n <template v-for=\"annotation in annotations\" :key=\"annotation.object.id\">\n <!-- Ink -->\n <AnnotationContainer\n v-if=\"isInk(annotation)\"\n :trackedAnnotation=\"annotation\"\n :isSelected=\"selectionState?.object.id === annotation.object.id\"\n :isDraggable=\"isDraggable(annotation)\"\n :isResizable=\"isResizable(annotation)\"\n :lockAspectRatio=\"lockAspectRatio(annotation)\"\n :onSelect=\"(e) => handleClick(e, annotation)\"\n :vertexConfig=\"getVertexConfig(annotation)\"\n v-bind=\"props\"\n >\n <template #default=\"{ annotation: currentObject }\">\n <AnnoComponents.Ink\n v-bind=\"currentObject\"\n :isSelected=\"selectionState?.object.id === annotation.object.id\"\n :scale=\"scale\"\n :onClick=\"(e: MouseEvent) => handleClick(e, annotation)\"\n />\n </template>\n <template #selection-menu=\"slotProps\">\n <slot name=\"selection-menu\" v-bind=\"slotProps\" />\n </template>\n <template #resize-handle=\"slotProps\">\n <slot name=\"resize-handle\" v-bind=\"slotProps\" />\n </template>\n <template #vertex-handle=\"slotProps\">\n <slot name=\"vertex-handle\" v-bind=\"slotProps\" />\n </template>\n </AnnotationContainer>\n\n <!-- Square -->\n <AnnotationContainer\n v-else-if=\"isSquare(annotation)\"\n :trackedAnnotation=\"annotation\"\n :isSelected=\"selectionState?.object.id === annotation.object.id\"\n :isDraggable=\"isDraggable(annotation)\"\n :isResizable=\"isResizable(annotation)\"\n :lockAspectRatio=\"lockAspectRatio(annotation)\"\n :onSelect=\"(e) => handleClick(e, annotation)\"\n :vertexConfig=\"getVertexConfig(annotation)\"\n v-bind=\"props\"\n >\n <template #default=\"{ annotation: currentObject }\">\n <AnnoComponents.Square\n v-bind=\"currentObject\"\n :isSelected=\"selectionState?.object.id === annotation.object.id\"\n :scale=\"scale\"\n :onClick=\"(e: MouseEvent) => handleClick(e, annotation)\"\n />\n </template>\n <template #selection-menu=\"slotProps\">\n <slot name=\"selection-menu\" v-bind=\"slotProps\" />\n </template>\n <template #resize-handle=\"slotProps\">\n <slot name=\"resize-handle\" v-bind=\"slotProps\" />\n </template>\n <template #vertex-handle=\"slotProps\">\n <slot name=\"vertex-handle\" v-bind=\"slotProps\" />\n </template>\n </AnnotationContainer>\n\n <!-- Circle -->\n <AnnotationContainer\n v-else-if=\"isCircle(annotation)\"\n :trackedAnnotation=\"annotation\"\n :isSelected=\"selectionState?.object.id === annotation.object.id\"\n :isDraggable=\"isDraggable(annotation)\"\n :isResizable=\"isResizable(annotation)\"\n :lockAspectRatio=\"lockAspectRatio(annotation)\"\n :onSelect=\"(e) => handleClick(e, annotation)\"\n :vertexConfig=\"getVertexConfig(annotation)\"\n v-bind=\"props\"\n >\n <template #default=\"{ annotation: currentObject }\">\n <AnnoComponents.Circle\n v-bind=\"currentObject\"\n :isSelected=\"selectionState?.object.id === annotation.object.id\"\n :scale=\"scale\"\n :onClick=\"(e: MouseEvent) => handleClick(e, annotation)\"\n />\n </template>\n <template #selection-menu=\"slotProps\">\n <slot name=\"selection-menu\" v-bind=\"slotProps\" />\n </template>\n <template #resize-handle=\"slotProps\">\n <slot name=\"resize-handle\" v-bind=\"slotProps\" />\n </template>\n <template #vertex-handle=\"slotProps\">\n <slot name=\"vertex-handle\" v-bind=\"slotProps\" />\n </template>\n </AnnotationContainer>\n\n <!-- Line -->\n <AnnotationContainer\n v-else-if=\"isLine(annotation)\"\n :trackedAnnotation=\"annotation\"\n :isSelected=\"selectionState?.object.id === annotation.object.id\"\n :isDraggable=\"isDraggable(annotation)\"\n :isResizable=\"isResizable(annotation)\"\n :lockAspectRatio=\"lockAspectRatio(annotation)\"\n :onSelect=\"(e) => handleClick(e, annotation)\"\n :vertexConfig=\"getVertexConfig(annotation)\"\n v-bind=\"props\"\n >\n <template #default=\"{ annotation: currentObject }\">\n <AnnoComponents.Line\n v-bind=\"currentObject\"\n :isSelected=\"selectionState?.object.id === annotation.object.id\"\n :scale=\"scale\"\n :onClick=\"(e: MouseEvent) => handleClick(e, annotation)\"\n />\n </template>\n <template #selection-menu=\"slotProps\">\n <slot name=\"selection-menu\" v-bind=\"slotProps\" />\n </template>\n <template #resize-handle=\"slotProps\">\n <slot name=\"resize-handle\" v-bind=\"slotProps\" />\n </template>\n <template #vertex-handle=\"slotProps\">\n <slot name=\"vertex-handle\" v-bind=\"slotProps\" />\n </template>\n </AnnotationContainer>\n\n <!-- Polyline -->\n <AnnotationContainer\n v-else-if=\"isPolyline(annotation)\"\n :trackedAnnotation=\"annotation\"\n :isSelected=\"selectionState?.object.id === annotation.object.id\"\n :isDraggable=\"isDraggable(annotation)\"\n :isResizable=\"isResizable(annotation)\"\n :lockAspectRatio=\"lockAspectRatio(annotation)\"\n :onSelect=\"(e) => handleClick(e, annotation)\"\n :vertexConfig=\"getVertexConfig(annotation)\"\n v-bind=\"props\"\n >\n <template #default=\"{ annotation: currentObject }\">\n <AnnoComponents.Polyline\n v-bind=\"currentObject\"\n :isSelected=\"selectionState?.object.id === annotation.object.id\"\n :scale=\"scale\"\n :onClick=\"(e: MouseEvent) => handleClick(e, annotation)\"\n />\n </template>\n <template #selection-menu=\"slotProps\">\n <slot name=\"selection-menu\" v-bind=\"slotProps\" />\n </template>\n <template #resize-handle=\"slotProps\">\n <slot name=\"resize-handle\" v-bind=\"slotProps\" />\n </template>\n <template #vertex-handle=\"slotProps\">\n <slot name=\"vertex-handle\" v-bind=\"slotProps\" />\n </template>\n </AnnotationContainer>\n\n <!-- Polygon -->\n <AnnotationContainer\n v-else-if=\"isPolygon(annotation)\"\n :trackedAnnotation=\"annotation\"\n :isSelected=\"selectionState?.object.id === annotation.object.id\"\n :isDraggable=\"isDraggable(annotation)\"\n :isResizable=\"isResizable(annotation)\"\n :lockAspectRatio=\"lockAspectRatio(annotation)\"\n :onSelect=\"(e) => handleClick(e, annotation)\"\n :vertexConfig=\"getVertexConfig(annotation)\"\n v-bind=\"props\"\n >\n <template #default=\"{ annotation: currentObject }\">\n <AnnoComponents.Polygon\n v-bind=\"currentObject\"\n :isSelected=\"selectionState?.object.id === annotation.object.id\"\n :scale=\"scale\"\n :onClick=\"(e: PointerEvent | TouchEvent) => handleClick(e, annotation)\"\n />\n </template>\n <template #selection-menu=\"slotProps\">\n <slot name=\"selection-menu\" v-bind=\"slotProps\" />\n </template>\n <template #resize-handle=\"slotProps\">\n <slot name=\"resize-handle\" v-bind=\"slotProps\" />\n </template>\n <template #vertex-handle=\"slotProps\">\n <slot name=\"vertex-handle\" v-bind=\"slotProps\" />\n </template>\n </AnnotationContainer>\n\n <!-- FreeText -->\n <AnnotationContainer\n v-else-if=\"isFreeText(annotation)\"\n :trackedAnnotation=\"annotation\"\n :isSelected=\"selectionState?.object.id === annotation.object.id\"\n :isDraggable=\"isDraggable(annotation)\"\n :isResizable=\"isResizable(annotation)\"\n :lockAspectRatio=\"lockAspectRatio(annotation)\"\n :onSelect=\"(e) => handleClick(e, annotation)\"\n :onDoubleClick=\"(e) => handleDoubleClick(e, annotation.object.id)\"\n :vertexConfig=\"getVertexConfig(annotation)\"\n v-bind=\"props\"\n >\n <template #default=\"{ annotation: currentObject }\">\n <AnnoComponents.FreeText\n :isSelected=\"selectionState?.object.id === annotation.object.id\"\n :isEditing=\"editingId === annotation.object.id\"\n :annotation=\"{ ...annotation, object: currentObject }\"\n :pageIndex=\"pageIndex\"\n :scale=\"scale\"\n :onClick=\"(e: PointerEvent | TouchEvent) => handleClick(e, annotation)\"\n />\n </template>\n <template #selection-menu=\"slotProps\">\n <slot name=\"selection-menu\" v-bind=\"slotProps\" />\n </template>\n <template #resize-handle=\"slotProps\">\n <slot name=\"resize-handle\" v-bind=\"slotProps\" />\n </template>\n <template #vertex-handle=\"slotProps\">\n <slot name=\"vertex-handle\" v-bind=\"slotProps\" />\n </template>\n </AnnotationContainer>\n\n <!-- Stamp -->\n <AnnotationContainer\n v-else-if=\"isStamp(annotation)\"\n :trackedAnnotation=\"annotation\"\n :isSelected=\"selectionState?.object.id === annotation.object.id\"\n :isDraggable=\"isDraggable(annotation)\"\n :isResizable=\"isResizable(annotation)\"\n :lockAspectRatio=\"lockAspectRatio(annotation)\"\n :onSelect=\"(e) => handleClick(e, annotation)\"\n :vertexConfig=\"getVertexConfig(annotation)\"\n v-bind=\"props\"\n >\n <template #default>\n <AnnoComponents.Stamp\n :isSelected=\"selectionState?.object.id === annotation.object.id\"\n :annotation=\"annotation\"\n :pageIndex=\"pageIndex\"\n :scale=\"scale\"\n :onClick=\"(e: PointerEvent | TouchEvent) => handleClick(e, annotation)\"\n />\n </template>\n <template #selection-menu=\"slotProps\">\n <slot name=\"selection-menu\" v-bind=\"slotProps\" />\n </template>\n <template #resize-handle=\"slotProps\">\n <slot name=\"resize-handle\" v-bind=\"slotProps\" />\n </template>\n <template #vertex-handle=\"slotProps\">\n <slot name=\"vertex-handle\" v-bind=\"slotProps\" />\n </template>\n </AnnotationContainer>\n\n <!-- Text Markup: Underline, StrikeOut, Squiggly, Highlight -->\n <AnnotationContainer\n v-else-if=\"isUnderline(annotation)\"\n :trackedAnnotation=\"annotation\"\n :isSelected=\"selectionState?.object.id === annotation.object.id\"\n :isDraggable=\"isDraggable(annotation)\"\n :isResizable=\"isResizable(annotation)\"\n :lockAspectRatio=\"lockAspectRatio(annotation)\"\n :onSelect=\"(e) => handleClick(e, annotation)\"\n :vertexConfig=\"getVertexConfig(annotation)\"\n :zIndex=\"0\"\n v-bind=\"props\"\n >\n <template #default=\"{ annotation: currentObject }\">\n <TextMarkupComponents.Underline\n v-bind=\"currentObject\"\n :scale=\"scale\"\n :onClick=\"(e: MouseEvent) => handleClick(e, annotation)\"\n />\n </template>\n <template #selection-menu=\"slotProps\">\n <slot name=\"selection-menu\" v-bind=\"slotProps\" />\n </template>\n </AnnotationContainer>\n\n <AnnotationContainer\n v-else-if=\"isStrikeout(annotation)\"\n :trackedAnnotation=\"annotation\"\n :isSelected=\"selectionState?.object.id === annotation.object.id\"\n :isDraggable=\"isDraggable(annotation)\"\n :isResizable=\"isResizable(annotation)\"\n :lockAspectRatio=\"lockAspectRatio(annotation)\"\n :onSelect=\"(e) => handleClick(e, annotation)\"\n :vertexConfig=\"getVertexConfig(annotation)\"\n :zIndex=\"0\"\n v-bind=\"props\"\n >\n <template #default=\"{ annotation: currentObject }\">\n <TextMarkupComponents.Strikeout\n v-bind=\"currentObject\"\n :scale=\"scale\"\n :onClick=\"(e: MouseEvent) => handleClick(e, annotation)\"\n />\n </template>\n <template #selection-menu=\"slotProps\">\n <slot name=\"selection-menu\" v-bind=\"slotProps\" />\n </template>\n </AnnotationContainer>\n\n <AnnotationContainer\n v-else-if=\"isSquiggly(annotation)\"\n :trackedAnnotation=\"annotation\"\n :isSelected=\"selectionState?.object.id === annotation.object.id\"\n :isDraggable=\"isDraggable(annotation)\"\n :isResizable=\"isResizable(annotation)\"\n :lockAspectRatio=\"lockAspectRatio(annotation)\"\n :onSelect=\"(e) => handleClick(e, annotation)\"\n :vertexConfig=\"getVertexConfig(annotation)\"\n :zIndex=\"0\"\n v-bind=\"props\"\n >\n <template #default=\"{ annotation: currentObject }\">\n <TextMarkupComponents.Squiggly\n v-bind=\"currentObject\"\n :scale=\"scale\"\n :onClick=\"(e: MouseEvent) => handleClick(e, annotation)\"\n />\n </template>\n <template #selection-menu=\"slotProps\">\n <slot name=\"selection-menu\" v-bind=\"slotProps\" />\n </template>\n </AnnotationContainer>\n\n <AnnotationContainer\n v-else-if=\"isHighlight(annotation)\"\n :trackedAnnotation=\"annotation\"\n :isSelected=\"selectionState?.object.id === annotation.object.id\"\n :isDraggable=\"isDraggable(annotation)\"\n :isResizable=\"isResizable(annotation)\"\n :lockAspectRatio=\"lockAspectRatio(annotation)\"\n :onSelect=\"(e) => handleClick(e, annotation)\"\n :vertexConfig=\"getVertexConfig(annotation)\"\n :zIndex=\"0\"\n v-bind=\"props\"\n >\n <template #default=\"{ annotation: currentObject }\">\n <TextMarkupComponents.Highlight\n v-bind=\"currentObject\"\n :scale=\"scale\"\n :onClick=\"(e: MouseEvent) => handleClick(e, annotation)\"\n />\n </template>\n <template #selection-menu=\"slotProps\">\n <slot name=\"selection-menu\" v-bind=\"slotProps\" />\n </template>\n </AnnotationContainer>\n </template>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, watchEffect } from 'vue';\nimport { Position } from '@embedpdf/models';\nimport {\n getAnnotationsByPageIndex,\n getSelectedAnnotationByPageIndex,\n isCircle,\n isFreeText,\n isHighlight,\n isInk,\n isLine,\n isPolygon,\n isPolyline,\n isSquare,\n isSquiggly,\n isStamp,\n isStrikeout,\n isUnderline,\n TrackedAnnotation,\n} from '@embedpdf/plugin-annotation';\nimport { usePointerHandlers } from '@embedpdf/plugin-interaction-manager/vue';\nimport { useSelectionCapability } from '@embedpdf/plugin-selection/vue';\nimport { useAnnotationCapability } from '../hooks';\nimport AnnotationContainer from './annotation-container.vue';\nimport * as AnnoComponents from './annotations';\nimport * as TextMarkupComponents from './text-markup';\nimport { VertexConfig } from '../../shared/types';\nimport { ResizeHandleUI, VertexHandleUI } from '../types';\n\nconst props = defineProps<{\n pageIndex: number;\n scale: number;\n rotation: number;\n pageWidth: number;\n pageHeight: number;\n resizeUI?: ResizeHandleUI;\n vertexUI?: VertexHandleUI;\n selectionOutlineColor?: string;\n}>();\n\nconst { provides: annotationProvides } = useAnnotationCapability();\nconst { provides: selectionProvides } = useSelectionCapability();\nconst annotations = ref<TrackedAnnotation[]>([]);\nconst { register } = usePointerHandlers({ pageIndex: props.pageIndex });\nconst selectionState = ref<TrackedAnnotation | null>(null);\nconst editingId = ref<string | null>(null);\n\nwatchEffect((onCleanup) => {\n if (annotationProvides.value) {\n const off = annotationProvides.value.onStateChange((state) => {\n annotations.value = getAnnotationsByPageIndex(state, props.pageIndex);\n selectionState.value = getSelectedAnnotationByPageIndex(state, props.pageIndex);\n });\n onCleanup(off);\n }\n});\n\nconst handlePointerDown = (_pos: Position, pe: PointerEvent) => {\n if (pe.target === pe.currentTarget && annotationProvides.value) {\n annotationProvides.value.deselectAnnotation();\n editingId.value = null;\n }\n};\n\nconst handleClick = (e: MouseEvent | TouchEvent, annotation: TrackedAnnotation) => {\n e.stopPropagation();\n if (annotationProvides.value && selectionProvides.value) {\n annotationProvides.value.selectAnnotation(props.pageIndex, annotation.object.id);\n selectionProvides.value.clear();\n if (annotation.object.id !== editingId.value) {\n editingId.value = null;\n }\n }\n};\n\nconst handleDoubleClick = (_e: MouseEvent, id: string) => {\n if (isFreeText(annotations.value.find((a) => a.object.id === id)!)) {\n editingId.value = id;\n }\n};\n\nwatchEffect((onCleanup) => {\n if (annotationProvides.value) {\n const unregister = register({ onPointerDown: handlePointerDown });\n if (unregister) {\n onCleanup(unregister);\n }\n }\n});\n\n// --- Component Logic ---\nconst getTool = (annotation: TrackedAnnotation) =>\n annotationProvides.value?.findToolForAnnotation(annotation.object);\n\nconst isDraggable = (anno: TrackedAnnotation) => {\n if (isFreeText(anno) && editingId.value === anno.object.id) return false;\n return getTool(anno)?.interaction.isDraggable ?? false;\n};\nconst isResizable = (anno: TrackedAnnotation) => getTool(anno)?.interaction.isResizable ?? false;\nconst lockAspectRatio = (anno: TrackedAnnotation) =>\n getTool(anno)?.interaction.lockAspectRatio ?? false;\n\nconst getVertexConfig = (annotation: TrackedAnnotation): VertexConfig<any> | undefined => {\n if (isLine(annotation)) {\n return {\n extractVertices: (anno) => [anno.linePoints.start, anno.linePoints.end],\n transformAnnotation: (anno, vertices) => ({\n ...anno,\n linePoints: { start: vertices[0], end: vertices[1] },\n }),\n };\n }\n if (isPolyline(annotation) || isPolygon(annotation)) {\n return {\n extractVertices: (anno) => anno.vertices,\n transformAnnotation: (anno, vertices) => ({ ...anno, vertices }),\n };\n }\n return undefined;\n};\n</script>\n","<template>\n <div\n v-if=\"boundingRect && activeTool\"\n :style=\"{\n mixBlendMode: blendMode,\n pointerEvents: 'none',\n position: 'absolute',\n inset: 0,\n }\"\n >\n <Highlight\n v-if=\"activeTool.defaults.type === PdfAnnotationSubtype.HIGHLIGHT\"\n :color=\"activeTool.defaults.color\"\n :opacity=\"activeTool.defaults.opacity\"\n :segmentRects=\"rects\"\n :scale=\"scale\"\n />\n <Underline\n v-else-if=\"activeTool.defaults.type === PdfAnnotationSubtype.UNDERLINE\"\n :color=\"activeTool.defaults.color\"\n :opacity=\"activeTool.defaults.opacity\"\n :segmentRects=\"rects\"\n :scale=\"scale\"\n />\n <Strikeout\n v-else-if=\"activeTool.defaults.type === PdfAnnotationSubtype.STRIKEOUT\"\n :color=\"activeTool.defaults.color\"\n :opacity=\"activeTool.defaults.opacity\"\n :segmentRects=\"rects\"\n :scale=\"scale\"\n />\n <Squiggly\n v-else-if=\"activeTool.defaults.type === PdfAnnotationSubtype.SQUIGGLY\"\n :color=\"activeTool.defaults.color\"\n :opacity=\"activeTool.defaults.opacity\"\n :segmentRects=\"rects\"\n :scale=\"scale\"\n />\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, onUnmounted, watchEffect, computed } from 'vue';\nimport { blendModeToCss, PdfAnnotationSubtype, PdfBlendMode, Rect } from '@embedpdf/models';\nimport { AnnotationTool } from '@embedpdf/plugin-annotation';\nimport { useSelectionCapability } from '@embedpdf/plugin-selection/vue';\nimport { useAnnotationCapability } from '../hooks';\nimport Highlight from './text-markup/highlight.vue';\nimport Underline from './text-markup/underline.vue';\nimport Strikeout from './text-markup/strikeout.vue';\nimport Squiggly from './text-markup/squiggly.vue';\n\nconst props = defineProps<{\n pageIndex: number;\n scale: number;\n}>();\n\nconst { provides: selectionProvides } = useSelectionCapability();\nconst { provides: annotationProvides } = useAnnotationCapability();\nconst rects = ref<Rect[]>([]);\nconst boundingRect = ref<Rect | null>(null);\nconst activeTool = ref<AnnotationTool | null>(null);\n\nwatchEffect((onCleanup) => {\n const unsubscribers: (() => void)[] = [];\n\n if (selectionProvides.value) {\n const provides = selectionProvides.value;\n const off = provides.onSelectionChange(() => {\n rects.value = provides.getHighlightRectsForPage(props.pageIndex);\n boundingRect.value = provides.getBoundingRectForPage(props.pageIndex);\n });\n unsubscribers.push(off);\n }\n\n if (annotationProvides.value) {\n const provides = annotationProvides.value;\n const off = provides.onActiveToolChange((tool) => (activeTool.value = tool));\n unsubscribers.push(off);\n }\n\n onCleanup(() => {\n unsubscribers.forEach((unsub) => unsub());\n });\n});\n\nconst blendMode = computed(() => {\n if (!activeTool.value) return blendModeToCss(PdfBlendMode.Normal);\n const defaultMode =\n activeTool.value.defaults.type === PdfAnnotationSubtype.HIGHLIGHT\n ? PdfBlendMode.Multiply\n : PdfBlendMode.Normal;\n return blendModeToCss(activeTool.value.defaults.blendMode ?? defaultMode);\n});\n</script>\n","<template>\n <div :style=\"style\">\n <Circle\n v-if=\"preview.type === PdfAnnotationSubtype.CIRCLE\"\n :isSelected=\"false\"\n :scale=\"scale\"\n v-bind=\"preview.data\"\n />\n <Square\n v-else-if=\"preview.type === PdfAnnotationSubtype.SQUARE\"\n :isSelected=\"false\"\n :scale=\"scale\"\n v-bind=\"preview.data\"\n />\n <Polygon\n v-else-if=\"preview.type === PdfAnnotationSubtype.POLYGON\"\n :isSelected=\"false\"\n :scale=\"scale\"\n v-bind=\"preview.data\"\n />\n <Polyline\n v-else-if=\"preview.type === PdfAnnotationSubtype.POLYLINE\"\n :isSelected=\"false\"\n :scale=\"scale\"\n v-bind=\"preview.data\"\n />\n <Line\n v-else-if=\"preview.type === PdfAnnotationSubtype.LINE\"\n :isSelected=\"false\"\n :scale=\"scale\"\n v-bind=\"preview.data\"\n />\n <Ink\n v-else-if=\"preview.type === PdfAnnotationSubtype.INK\"\n :isSelected=\"false\"\n :scale=\"scale\"\n v-bind=\"preview.data\"\n />\n <div\n v-else-if=\"preview.type === PdfAnnotationSubtype.FREETEXT\"\n :style=\"{\n width: '100%',\n height: '100%',\n border: `1px dashed ${preview.data.fontColor || '#000000'}`,\n backgroundColor: 'transparent',\n }\"\n />\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, CSSProperties } from 'vue';\nimport { AnyPreviewState } from '@embedpdf/plugin-annotation';\nimport { PdfAnnotationSubtype } from '@embedpdf/models';\nimport { Circle, Square, Polygon, Polyline, Line, Ink } from './annotations';\n\nconst props = defineProps<{\n preview: AnyPreviewState;\n scale: number;\n}>();\n\nconst style = computed<CSSProperties>(() => ({\n position: 'absolute',\n left: `${props.preview.bounds.origin.x * props.scale}px`,\n top: `${props.preview.bounds.origin.y * props.scale}px`,\n width: `${props.preview.bounds.size.width * props.scale}px`,\n height: `${props.preview.bounds.size.height * props.scale}px`,\n pointerEvents: 'none',\n zIndex: 10,\n}));\n</script>\n","<template>\n <input ref=\"fileInputRef\" type=\"file\" style=\"display: none\" />\n <canvas ref=\"canvasRef\" style=\"display: none\"></canvas>\n <PreviewRenderer\n v-for=\"[toolId, preview] in previews.entries()\"\n :key=\"toolId\"\n :preview=\"preview\"\n :scale=\"scale\"\n />\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, watchEffect, computed } from 'vue';\nimport { useAnnotationPlugin } from '../hooks';\nimport { AnyPreviewState, HandlerServices } from '@embedpdf/plugin-annotation';\nimport PreviewRenderer from './preview-renderer.vue';\n\nconst props = defineProps<{\n pageIndex: number;\n scale: number;\n}>();\n\nconst { plugin: annotationPlugin } = useAnnotationPlugin();\nconst previews = ref<Map<string, AnyPreviewState>>(new Map());\nconst fileInputRef = ref<HTMLInputElement | null>(null);\nconst canvasRef = ref<HTMLCanvasElement | null>(null);\n\nconst services = computed<HandlerServices>(() => ({\n requestFile: ({ accept, onFile }) => {\n const input = fileInputRef.value;\n if (!input) return;\n input.accept = accept;\n input.onchange = (e) => {\n const file = (e.target as HTMLInputElement).files?.[0];\n if (file) {\n onFile(file);\n input.value = '';\n }\n };\n input.click();\n },\n processImage: ({ source, maxWidth, maxHeight, onComplete }) => {\n const canvas = canvasRef.value;\n if (!canvas || !canvas.getContext) return;\n const ctx = canvas.getContext('2d');\n if (!ctx) return;\n\n const img = new Image();\n img.crossOrigin = 'Anonymous';\n img.onload = () => {\n let { naturalWidth: width, naturalHeight: height } = img;\n const scaleX = maxWidth ? maxWidth / width : 1;\n const scaleY = maxHeight ? maxHeight / height : 1;\n const scaleFactor = Math.min(scaleX, scaleY, 1);\n const finalWidth = width * scaleFactor;\n const finalHeight = height * scaleFactor;\n\n canvas.width = finalWidth;\n canvas.height = finalHeight;\n ctx.drawImage(img, 0, 0, finalWidth, finalHeight);\n\n const imageData = ctx.getImageData(0, 0, finalWidth, finalHeight);\n if (typeof source !== 'string') URL.revokeObjectURL(img.src);\n\n onComplete({ imageData, width: finalWidth, height: finalHeight });\n };\n img.src = typeof source === 'string' ? source : URL.createObjectURL(source);\n },\n}));\n\nlet unregister: (() => void) | undefined;\n\nwatchEffect((onCleanup) => {\n if (annotationPlugin.value) {\n unregister = annotationPlugin.value.registerPageHandlers(props.pageIndex, props.scale, {\n services: services.value,\n onPreview: (toolId, state) => {\n const next = new Map(previews.value);\n if (state) {\n next.set(toolId, state);\n } else {\n next.delete(toolId);\n }\n previews.value = next;\n },\n });\n }\n\n onCleanup(() => {\n unregister?.();\n });\n});\n</script>\n","<template>\n <div>\n <Annotations v-bind=\"props\">\n <template #selection-menu=\"slotProps\">\n <slot name=\"selection-menu\" v-bind=\"slotProps\"></slot>\n </template>\n <template #resize-handle=\"slotProps\">\n <slot name=\"resize-handle\" v-bind=\"slotProps\"></slot>\n </template>\n <template #vertex-handle=\"slotProps\">\n <slot name=\"vertex-handle\" v-bind=\"slotProps\"></slot>\n </template>\n </Annotations>\n <TextMarkup :pageIndex=\"pageIndex\" :scale=\"scale\" />\n <AnnotationPaintLayer :pageIndex=\"pageIndex\" :scale=\"scale\" />\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport Annotations from './annotations.vue';\nimport TextMarkup from './text-markup.vue';\nimport AnnotationPaintLayer from './annotation-paint-layer.vue';\nimport { ResizeHandleUI, VertexHandleUI } from '../types';\n\nconst props = defineProps<{\n pageIndex: number;\n scale: number;\n pageWidth: number;\n pageHeight: number;\n rotation: number;\n resizeUI?: ResizeHandleUI;\n vertexUI?: VertexHandleUI;\n selectionOutlineColor?: string;\n}>();\n</script>\n"],"names":["useAnnotationPlugin","usePlugin","AnnotationPlugin","id","useAnnotationCapability","useCapability","HANDLE_COLOR","VERTEX_COLOR","props","__props","preview","shallowRef","toRaw","trackedAnnotation","object","provides","annotationProvides","gestureBaseRef","ref","currentObject","computed","value","elementSnapshot","rect","verticesSnapshot","obj","_a","vertexConfig","extractVertices","constraintsSnapshot","minWidth","minHeight","boundingBox","width","pageWidth","scale","height","pageHeight","dragProps","vertices","resize","useInteractionHandles","controller","element","constraints","maintainAspectRatio","lockAspectRatio","pageRotation","rotation","enabled","isSelected","onUpdate","event","transformData","type","state","base","changes","_b","transformAnnotation","patched","_c","metadata","_d","updateAnnotation","pageIndex","resizeUI","handleSize","spacing","outlineOffset","offsetMode","includeSides","zIndex","vertexUI","vertexSize","includeVertices","doubleProps","useDoublePressProps","onDoubleClick","vue$1","watch","newObject","deep","containerStyle","position","left","origin","x","top","y","size","outline","selectionOutlineColor","pointerEvents","touchAction","cursor","isDraggable","slots","useSlots","_openBlock","_createElementBlock","_hoisted_1","_createElementVNode","_mergeProps","mergeProps","_unref","unref","style","_renderSlot","renderSlot","_ctx","$slots","annotation","isResizable","_Fragment","key","handle","backgroundColor","ref_for","length","vertex","_createVNode","CounterRotate","default","_withCtx","menuWrapperProps","selected","geometry","outerW","outerH","innerW","Math","max","strokeWidth","innerH","cx","cy","rx","ry","svgWidth","svgHeight","createElementBlock","_normalizeStyle","viewBox","fill","color","opacity","onPointerdown","_cache","onClick","args","onTouchstart","strokeColor","strokeStyle","PdfAnnotationBorderStyle","DASHED","strokeDashArray","join","editorRef","isIOS","onMounted","nav","navigator","test","userAgent","platform","maxTouchPoints","isEditing","editing","editor","focus","selection","window","getSelection","range","document","createRange","selectNodeContents","collapse","removeAllRanges","addRange","handleBlur","contents","innerText","editorStyle","anno","computedFontPx","fontSize","needsComp","adjustedFontPx","scaleComp","invScalePercent","fontColor","fontFamily","standardFontCss","textAlign","textAlignmentToCss","flexDirection","justifyContent","verticalAlign","PdfVerticalAlignment","Top","Middle","display","lineHeight","overflow","transform","transformOrigin","onBlur","tabindex","contenteditable","paths","inkList","map","points","d","forEach","i","lx","ly","trim","_renderList","renderList","localLine","x1","linePoints","start","y1","x2","end","y2","endings","angle","atan2","patching","createEnding","lineEndings","PI","getEndingStyle","ending","strokeLinecap","filled","strokeDasharray","stroke","normalizeStyle","allPoints","currentVertex","localPts","pathData","first","rest","isPreview","p","isPreviewing","toAngle","a","b","startRad","endRad","imageUrl","urlRef","currentTask","annotationId","rectWidth","rectHeight","scaleFactor","_","__","onCleanup","URL","revokeObjectURL","task","renderAnnotation","deepToRaw","options","dpr","devicePixelRatio","wait","blob","url","createObjectURL","ignore","abort","code","PdfErrorCode","Cancelled","message","immediate","onUnmounted","handleImageLoad","src","onLoad","RenderAnnotation","segmentRects","amplitude","period","svgDataUri","amp","per","svg","encodeURIComponent","r","backgroundSize","thickness","selectionProvides","useSelectionCapability","annotations","register","usePointerHandlers","selectionState","editingId","watchEffect","onStateChange","getAnnotationsByPageIndex","getSelectedAnnotationByPageIndex","handlePointerDown","_pos","pe","target","currentTarget","deselectAnnotation","handleClick","e","stopPropagation","selectAnnotation","clear","unregister","onPointerDown","getTool","findToolForAnnotation","isFreeText","interaction","getVertexConfig","isLine","isPolyline","isPolygon","Fragment","isInk","openBlock","_createBlock","createBlock","AnnotationContainer","onSelect","createVNode","AnnoComponents.Ink","slotProps","isSquare","AnnoComponents.Square","isCircle","AnnoComponents.Circle","AnnoComponents.Line","_e","AnnoComponents.Polyline","_f","AnnoComponents.Polygon","_g","handleDoubleClick","find","AnnoComponents.FreeText","isStamp","_h","AnnoComponents.Stamp","isUnderline","_i","TextMarkupComponents.Underline","isStrikeout","_j","TextMarkupComponents.Strikeout","isSquiggly","_k","TextMarkupComponents.Squiggly","isHighlight","_l","TextMarkupComponents.Highlight","rects","boundingRect","activeTool","unsubscribers","off","onSelectionChange","getHighlightRectsForPage","getBoundingRectForPage","push","onActiveToolChange","tool","unsub","blendMode","blendModeToCss","PdfBlendMode","Normal","defaultMode","defaults","PdfAnnotationSubtype","HIGHLIGHT","Multiply","Highlight","UNDERLINE","Underline","STRIKEOUT","Strikeout","SQUIGGLY","Squiggly","bounds","CIRCLE","data","SQUARE","POLYGON","POLYLINE","LINE","INK","FREETEXT","plugin","annotationPlugin","previews","Map","fileInputRef","canvasRef","services","requestFile","accept","onFile","input","onchange","file","files","click","processImage","source","maxWidth","maxHeight","onComplete","canvas","getContext","ctx","img","Image","crossOrigin","onload","naturalWidth","naturalHeight","scaleX","scaleY","min","finalWidth","finalHeight","drawImage","imageData","getImageData","registerPageHandlers","onPreview","toolId","next","set","delete","entries","PreviewRenderer","Annotations","TextMarkup","AnnotationPaintLayer","initialState","newState","readonly"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../../src/vue/hooks/use-annotation.ts","../../src/vue/components/annotation-container.vue","../../src/vue/components/annotations/circle.vue","../../src/vue/components/annotations/free-text.vue","../../src/vue/components/annotations/ink.vue","../../src/vue/components/annotations/line.vue","../../src/vue/components/annotations/polygon.vue","../../src/vue/components/annotations/polyline.vue","../../src/vue/components/annotations/square.vue","../../src/vue/components/render-annotation.vue","../../src/vue/components/annotations/stamp.vue","../../src/vue/components/text-markup/highlight.vue","../../src/vue/components/text-markup/squiggly.vue","../../src/vue/components/text-markup/strikeout.vue","../../src/vue/components/text-markup/underline.vue","../../src/vue/components/annotations.vue","../../src/vue/components/text-markup.vue","../../src/vue/components/preview-renderer.vue","../../src/vue/components/annotation-paint-layer.vue","../../src/vue/components/annotation-layer.vue"],"sourcesContent":["import { readonly, ref, watchEffect } from 'vue';\nimport { useCapability, usePlugin } from '@embedpdf/core/vue';\nimport { AnnotationPlugin, AnnotationState, initialState } from '@embedpdf/plugin-annotation';\nimport { AnnotationPluginConfig } from '../../lib';\n\nexport const useAnnotationPlugin = () => usePlugin<AnnotationPlugin>(AnnotationPlugin.id);\nexport const useAnnotationCapability = () => useCapability<AnnotationPlugin>(AnnotationPlugin.id);\n\nexport const useAnnotation = () => {\n const { provides } = useAnnotationCapability();\n // We need to provide a dummy config to initialState\n const dummyConfig: AnnotationPluginConfig = { enabled: true };\n const state = ref<AnnotationState>(initialState(dummyConfig));\n\n watchEffect((onCleanup) => {\n if (provides.value) {\n const unsubscribe = provides.value.onStateChange((newState) => {\n state.value = newState;\n });\n onCleanup(unsubscribe);\n }\n });\n\n return {\n state: readonly(state),\n provides,\n };\n};\n","<template>\n <div data-no-interaction>\n <div v-bind=\"{ ...dragProps, ...doubleProps }\" :style=\"containerStyle\">\n <slot :annotation=\"currentObject\"></slot>\n\n <template v-if=\"isSelected && isResizable\">\n <template v-for=\"{ key, style, ...handle } in resize\" :key=\"key\">\n <slot\n v-if=\"slots['resize-handle']\"\n name=\"resize-handle\"\n v-bind=\"{ key, style, ...handle, backgroundColor: HANDLE_COLOR }\"\n >\n <!-- Fallback content if slot is provided but empty -->\n <div v-bind=\"handle\" :style=\"[style, { backgroundColor: HANDLE_COLOR }]\" />\n </slot>\n <div v-else v-bind=\"handle\" :style=\"[style, { backgroundColor: HANDLE_COLOR }]\" />\n </template>\n </template>\n\n <template v-if=\"isSelected && vertices.length > 0\">\n <template v-for=\"{ key, style, ...vertex } in vertices\" :key=\"key\">\n <slot\n v-if=\"slots['vertex-handle']\"\n name=\"vertex-handle\"\n v-bind=\"{ key, style, ...vertex, backgroundColor: VERTEX_COLOR }\"\n >\n <!-- Fallback content if slot is provided but empty -->\n <div v-bind=\"vertex\" :style=\"[style, { backgroundColor: VERTEX_COLOR }]\" />\n </slot>\n <div v-else v-bind=\"vertex\" :style=\"[style, { backgroundColor: VERTEX_COLOR }]\" />\n </template>\n </template>\n </div>\n\n <CounterRotate\n :rect=\"{\n origin: {\n x: currentObject.rect.origin.x * scale,\n y: currentObject.rect.origin.y * scale,\n },\n size: {\n width: currentObject.rect.size.width * scale,\n height: currentObject.rect.size.height * scale,\n },\n }\"\n :rotation=\"rotation\"\n >\n <template #default=\"{ rect, menuWrapperProps }\">\n <slot\n name=\"selection-menu\"\n :annotation=\"trackedAnnotation\"\n :selected=\"isSelected\"\n :rect=\"rect\"\n :menu-wrapper-props=\"menuWrapperProps\"\n />\n </template>\n </CounterRotate>\n </div>\n</template>\n\n<script setup lang=\"ts\" generic=\"T extends PdfAnnotationObject\">\nimport { ref, computed, watch, useSlots, toRaw, shallowRef } from 'vue';\nimport { PdfAnnotationObject } from '@embedpdf/models';\nimport { CounterRotate, useDoublePressProps, useInteractionHandles } from '@embedpdf/utils/vue';\nimport { TrackedAnnotation } from '@embedpdf/plugin-annotation';\nimport { VertexConfig } from '../../shared/types';\nimport { useAnnotationCapability } from '../hooks';\n\nconst props = withDefaults(\n defineProps<{\n scale: number;\n pageIndex: number;\n rotation: number;\n pageWidth: number;\n pageHeight: number;\n trackedAnnotation: TrackedAnnotation<T>;\n isSelected: boolean;\n isDraggable: boolean;\n isResizable: boolean;\n lockAspectRatio?: boolean;\n vertexConfig?: VertexConfig<T>;\n outlineOffset?: number;\n onDoubleClick?: (event: PointerEvent | MouseEvent) => void;\n onSelect: (event: TouchEvent | MouseEvent) => void;\n zIndex?: number;\n selectionOutlineColor?: string;\n }>(),\n {\n lockAspectRatio: false,\n outlineOffset: 1,\n zIndex: 1,\n selectionOutlineColor: '#007ACC',\n },\n);\n\nconst HANDLE_COLOR = '#007ACC';\nconst VERTEX_COLOR = '#007ACC';\nconst HANDLE_SIZE = 12;\nconst VERTEX_SIZE = 12;\n\nconst preview = shallowRef<Partial<T>>(toRaw(props.trackedAnnotation.object));\nconst { provides: annotationProvides } = useAnnotationCapability();\nconst gestureBaseRef = ref<T | null>(null);\n\nconst currentObject = computed<T>(\n () => ({ ...toRaw(props.trackedAnnotation.object), ...toRaw(preview.value) }) as T,\n);\n\nconst elementSnapshot = computed(() => {\n const obj = toRaw(currentObject.value);\n return obj.rect; // plain-ish; composable will normalize fully\n});\n\nconst verticesSnapshot = computed(() => {\n const obj = toRaw(currentObject.value);\n return props.vertexConfig?.extractVertices(obj) ?? [];\n});\n\nconst constraintsSnapshot = computed(() => ({\n minWidth: 10,\n minHeight: 10,\n boundingBox: {\n width: props.pageWidth / props.scale,\n height: props.pageHeight / props.scale,\n },\n}));\n\nconst { dragProps, vertices, resize } = useInteractionHandles({\n controller: {\n element: elementSnapshot,\n vertices: verticesSnapshot,\n constraints: constraintsSnapshot,\n maintainAspectRatio: computed(() => props.lockAspectRatio),\n pageRotation: computed(() => props.rotation),\n scale: computed(() => props.scale),\n enabled: computed(() => props.isSelected),\n onUpdate: (event) => {\n if (!event.transformData?.type) return;\n\n if (event.state === 'start') {\n gestureBaseRef.value = currentObject.value;\n }\n\n const base = gestureBaseRef.value ?? currentObject.value;\n\n const changes = event.transformData.changes.vertices\n ? props.vertexConfig?.transformAnnotation(toRaw(base), event.transformData.changes.vertices)\n : { rect: event.transformData.changes.rect };\n\n const patched = annotationProvides.value?.transformAnnotation<T>(base, {\n type: event.transformData.type,\n changes: changes as Partial<T>,\n metadata: event.transformData.metadata,\n });\n\n if (patched) {\n preview.value = { ...toRaw(preview.value), ...patched };\n }\n\n if (event.state === 'end' && patched) {\n gestureBaseRef.value = null;\n annotationProvides.value?.updateAnnotation(\n props.pageIndex,\n props.trackedAnnotation.object.id,\n patched,\n );\n }\n },\n },\n resizeUI: {\n handleSize: HANDLE_SIZE,\n spacing: props.outlineOffset,\n offsetMode: 'outside',\n includeSides: !props.lockAspectRatio,\n zIndex: props.zIndex + 1,\n },\n vertexUI: {\n vertexSize: VERTEX_SIZE,\n zIndex: props.zIndex + 2,\n },\n includeVertices: !!props.vertexConfig,\n});\n\nconst doubleProps = useDoublePressProps(props.onDoubleClick);\n\nwatch(\n () => props.trackedAnnotation.object,\n (newObject) => {\n preview.value = newObject;\n },\n { deep: true },\n);\n\nconst containerStyle = computed(() => ({\n position: 'absolute' as 'absolute',\n left: `${currentObject.value.rect.origin.x * props.scale}px`,\n top: `${currentObject.value.rect.origin.y * props.scale}px`,\n width: `${currentObject.value.rect.size.width * props.scale}px`,\n height: `${currentObject.value.rect.size.height * props.scale}px`,\n outline: props.isSelected ? `1px solid ${props.selectionOutlineColor}` : 'none',\n outlineOffset: props.isSelected ? `${props.outlineOffset}px` : '0px',\n pointerEvents: props.isSelected ? 'auto' : ('none' as 'auto' | 'none'),\n touchAction: 'none',\n cursor: props.isSelected && props.isDraggable ? 'move' : 'default',\n zIndex: props.zIndex,\n}));\n\n// Add useSlots to access slot information\nconst slots = useSlots();\n</script>\n","<template>\n <svg\n :style=\"{\n position: 'absolute',\n width: svgWidth,\n height: svgHeight,\n pointerEvents: 'none',\n zIndex: 2,\n }\"\n :width=\"svgWidth\"\n :height=\"svgHeight\"\n :viewBox=\"`0 0 ${geometry.width} ${geometry.height}`\"\n >\n <ellipse\n :cx=\"geometry.cx\"\n :cy=\"geometry.cy\"\n :rx=\"geometry.rx\"\n :ry=\"geometry.ry\"\n :fill=\"color\"\n :opacity=\"opacity\"\n @pointerdown=\"onClick\"\n @touchstart=\"onClick\"\n :style=\"{\n cursor: isSelected ? 'move' : 'pointer',\n pointerEvents: isSelected ? 'none' : color === 'transparent' ? 'visibleStroke' : 'visible',\n stroke: strokeColor ?? color,\n strokeWidth: strokeWidth,\n ...(strokeStyle === PdfAnnotationBorderStyle.DASHED && {\n strokeDasharray: strokeDashArray?.join(','),\n }),\n }\"\n />\n </svg>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed } from 'vue';\nimport { PdfAnnotationBorderStyle, Rect } from '@embedpdf/models';\n\ninterface CircleProps {\n isSelected: boolean;\n color?: string;\n strokeColor?: string;\n opacity?: number;\n strokeWidth: number;\n strokeStyle?: PdfAnnotationBorderStyle;\n strokeDashArray?: number[];\n rect: Rect;\n scale: number;\n onClick?: (e: PointerEvent | TouchEvent) => void;\n}\n\nconst props = withDefaults(defineProps<CircleProps>(), {\n color: '#000000',\n opacity: 1,\n strokeStyle: PdfAnnotationBorderStyle.SOLID,\n});\n\nconst geometry = computed(() => {\n const outerW = props.rect.size.width;\n const outerH = props.rect.size.height;\n const innerW = Math.max(outerW - props.strokeWidth, 0);\n const innerH = Math.max(outerH - props.strokeWidth, 0);\n\n return {\n width: outerW,\n height: outerH,\n cx: props.strokeWidth / 2 + innerW / 2,\n cy: props.strokeWidth / 2 + innerH / 2,\n rx: innerW / 2,\n ry: innerH / 2,\n };\n});\n\nconst svgWidth = computed(() => geometry.value.width * props.scale);\nconst svgHeight = computed(() => geometry.value.height * props.scale);\n</script>\n","<template>\n <div\n :style=\"{\n position: 'absolute',\n width: `${annotation.object.rect.size.width * scale}px`,\n height: `${annotation.object.rect.size.height * scale}px`,\n cursor: isSelected && !isEditing ? 'move' : 'default',\n pointerEvents: isSelected && !isEditing ? 'none' : 'auto',\n zIndex: 2,\n }\"\n @pointerdown=\"onClick\"\n @touchstart=\"onClick\"\n >\n <span\n ref=\"editorRef\"\n @blur=\"handleBlur\"\n tabindex=\"0\"\n :style=\"editorStyle\"\n :contenteditable=\"isEditing\"\n >{{ annotation.object.contents }}</span\n >\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, watch, computed, onMounted } from 'vue';\nimport {\n PdfFreeTextAnnoObject,\n PdfVerticalAlignment,\n standardFontCss,\n textAlignmentToCss,\n} from '@embedpdf/models';\nimport { TrackedAnnotation } from '@embedpdf/plugin-annotation';\nimport { useAnnotationCapability } from '../../hooks';\n\nconst props = defineProps<{\n isSelected: boolean;\n isEditing: boolean;\n annotation: TrackedAnnotation<PdfFreeTextAnnoObject>;\n pageIndex: number;\n scale: number;\n onClick?: (e: PointerEvent | TouchEvent) => void;\n}>();\n\nconst editorRef = ref<HTMLSpanElement | null>(null);\nconst { provides: annotationProvides } = useAnnotationCapability();\nconst isIOS = ref(false);\n\nonMounted(() => {\n try {\n const nav = navigator as any;\n isIOS.value =\n /iPad|iPhone|iPod/.test(navigator.userAgent) ||\n (navigator.platform === 'MacIntel' && nav?.maxTouchPoints > 1);\n } catch {\n isIOS.value = false;\n }\n});\n\nwatch(\n () => props.isEditing,\n (editing) => {\n if (editing && editorRef.value) {\n const editor = editorRef.value;\n editor.focus();\n const selection = window.getSelection();\n if (selection) {\n const range = document.createRange();\n range.selectNodeContents(editor);\n range.collapse(false);\n selection.removeAllRanges();\n selection.addRange(range);\n }\n }\n },\n);\n\nconst handleBlur = () => {\n if (!annotationProvides.value || !editorRef.value) return;\n annotationProvides.value.updateAnnotation(props.pageIndex, props.annotation.object.id, {\n contents: editorRef.value.innerText,\n });\n};\n\nconst editorStyle = computed(() => {\n const { object: anno } = props.annotation;\n const computedFontPx = anno.fontSize * props.scale;\n const MIN_IOS_FOCUS_FONT_PX = 16;\n const needsComp =\n isIOS.value && props.isEditing && computedFontPx > 0 && computedFontPx < MIN_IOS_FOCUS_FONT_PX;\n const adjustedFontPx = needsComp ? MIN_IOS_FOCUS_FONT_PX : computedFontPx;\n const scaleComp = needsComp ? computedFontPx / MIN_IOS_FOCUS_FONT_PX : 1;\n const invScalePercent = needsComp ? 100 / scaleComp : 100;\n\n return {\n color: anno.fontColor,\n fontSize: `${adjustedFontPx}px`,\n fontFamily: standardFontCss(anno.fontFamily),\n textAlign: textAlignmentToCss(anno.textAlign),\n flexDirection: 'column' as 'column',\n justifyContent:\n anno.verticalAlign === PdfVerticalAlignment.Top\n ? 'flex-start'\n : anno.verticalAlign === PdfVerticalAlignment.Middle\n ? 'center'\n : 'flex-end',\n display: 'flex',\n backgroundColor: anno.backgroundColor,\n opacity: anno.opacity,\n width: needsComp ? `${invScalePercent}%` : '100%',\n height: needsComp ? `${invScalePercent}%` : '100%',\n lineHeight: '1.18',\n overflow: 'hidden',\n cursor: props.isEditing ? 'text' : 'pointer',\n outline: 'none',\n transform: needsComp ? `scale(${scaleComp})` : undefined,\n transformOrigin: 'top left',\n };\n});\n</script>\n","<template>\n <svg\n :style=\"{\n position: 'absolute',\n width: `${width}px`,\n height: `${height}px`,\n pointerEvents: 'none',\n zIndex: 2,\n overflow: 'visible',\n }\"\n :width=\"width\"\n :height=\"height\"\n :viewBox=\"`0 0 ${rect.size.width} ${rect.size.height}`\"\n >\n <path\n v-for=\"(d, i) in paths\"\n :key=\"i\"\n :d=\"d\"\n fill=\"none\"\n :opacity=\"opacity\"\n @pointerdown=\"onClick\"\n @touchstart=\"onClick\"\n :style=\"{\n cursor: isSelected ? 'move' : 'pointer',\n pointerEvents: isSelected ? 'none' : 'visibleStroke',\n stroke: color,\n strokeWidth: strokeWidth,\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n }\"\n />\n </svg>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed } from 'vue';\nimport { PdfInkListObject, Rect } from '@embedpdf/models';\n\nconst props = withDefaults(\n defineProps<{\n isSelected: boolean;\n color?: string;\n opacity?: number;\n strokeWidth: number;\n inkList: PdfInkListObject[];\n rect: Rect;\n scale: number;\n onClick?: (e: PointerEvent | TouchEvent) => void;\n }>(),\n {\n color: '#000000',\n opacity: 1,\n },\n);\n\nconst paths = computed(() => {\n return props.inkList.map(({ points }) => {\n let d = '';\n points.forEach(({ x, y }, i) => {\n const lx = x - props.rect.origin.x;\n const ly = y - props.rect.origin.y;\n d += (i === 0 ? 'M' : 'L') + `${lx} ${ly} `;\n });\n return d.trim();\n });\n});\n\nconst width = computed(() => props.rect.size.width * props.scale);\nconst height = computed(() => props.rect.size.height * props.scale);\n</script>\n","<template>\n <svg\n :style=\"{\n position: 'absolute',\n width: `${width}px`,\n height: `${height}px`,\n pointerEvents: 'none',\n zIndex: 2,\n overflow: 'visible',\n }\"\n :width=\"width\"\n :height=\"height\"\n :viewBox=\"`0 0 ${rect.size.width} ${rect.size.height}`\"\n >\n <line\n :x1=\"localLine.x1\"\n :y1=\"localLine.y1\"\n :x2=\"localLine.x2\"\n :y2=\"localLine.y2\"\n :opacity=\"opacity\"\n @pointerdown=\"onClick\"\n @touchstart=\"onClick\"\n :style=\"{\n cursor: isSelected ? 'move' : 'pointer',\n pointerEvents: isSelected ? 'none' : 'visibleStroke',\n stroke: strokeColor,\n strokeWidth: strokeWidth,\n strokeLinecap: 'butt',\n ...(strokeStyle === PdfAnnotationBorderStyle.DASHED && {\n strokeDasharray: strokeDashArray?.join(','),\n }),\n }\"\n />\n <path\n v-if=\"endings.start\"\n :d=\"endings.start.d\"\n :transform=\"endings.start.transform\"\n @pointerdown=\"onClick\"\n @touchstart=\"onClick\"\n :stroke=\"strokeColor\"\n :style=\"getEndingStyle(endings.start)\"\n :fill=\"endings.start.filled ? color : 'none'\"\n />\n <path\n v-if=\"endings.end\"\n :d=\"endings.end.d\"\n :transform=\"endings.end.transform\"\n @pointerdown=\"onClick\"\n @touchstart=\"onClick\"\n :stroke=\"strokeColor\"\n :style=\"getEndingStyle(endings.end)\"\n :fill=\"endings.end.filled ? color : 'none'\"\n />\n </svg>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed } from 'vue';\nimport { Rect, LinePoints, LineEndings, PdfAnnotationBorderStyle } from '@embedpdf/models';\nimport { patching } from '@embedpdf/plugin-annotation';\n\nconst props = withDefaults(\n defineProps<{\n color?: string;\n opacity?: number;\n strokeWidth: number;\n strokeColor?: string;\n strokeStyle?: PdfAnnotationBorderStyle;\n strokeDashArray?: number[];\n rect: Rect;\n linePoints: LinePoints;\n lineEndings?: LineEndings;\n scale: number;\n onClick?: (e: PointerEvent | TouchEvent) => void;\n isSelected: boolean;\n }>(),\n {\n color: 'transparent',\n opacity: 1,\n strokeColor: '#000000',\n strokeStyle: PdfAnnotationBorderStyle.SOLID,\n },\n);\n\nconst localLine = computed(() => ({\n x1: props.linePoints.start.x - props.rect.origin.x,\n y1: props.linePoints.start.y - props.rect.origin.y,\n x2: props.linePoints.end.x - props.rect.origin.x,\n y2: props.linePoints.end.y - props.rect.origin.y,\n}));\n\nconst endings = computed(() => {\n const { x1, y1, x2, y2 } = localLine.value;\n const angle = Math.atan2(y2 - y1, x2 - x1);\n return {\n start: patching.createEnding(\n props.lineEndings?.start,\n props.strokeWidth,\n angle + Math.PI,\n x1,\n y1,\n ),\n end: patching.createEnding(props.lineEndings?.end, props.strokeWidth, angle, x2, y2),\n };\n});\n\nconst getEndingStyle = (ending: patching.SvgEnding) => ({\n cursor: props.isSelected ? 'move' : 'pointer',\n strokeWidth: props.strokeWidth,\n strokeLinecap: 'butt' as 'butt',\n pointerEvents: (props.isSelected ? 'none' : ending.filled ? 'visible' : 'visibleStroke') as\n | 'none'\n | 'visible'\n | 'visibleStroke',\n ...(props.strokeStyle === PdfAnnotationBorderStyle.DASHED && {\n strokeDasharray: props.strokeDashArray?.join(','),\n }),\n});\n\nconst width = computed(() => props.rect.size.width * props.scale);\nconst height = computed(() => props.rect.size.height * props.scale);\n</script>\n","<template>\n <svg\n :style=\"{\n position: 'absolute',\n width: `${width}px`,\n height: `${height}px`,\n pointerEvents: 'none',\n zIndex: 2,\n overflow: 'visible',\n }\"\n :width=\"width\"\n :height=\"height\"\n :viewBox=\"`0 0 ${rect.size.width} ${rect.size.height}`\"\n >\n <path\n :d=\"pathData\"\n @pointerdown=\"onClick\"\n @touchstart=\"onClick\"\n :opacity=\"opacity\"\n :style=\"{\n fill: currentVertex ? 'none' : color,\n stroke: strokeColor ?? color,\n strokeWidth,\n cursor: isSelected ? 'move' : 'pointer',\n pointerEvents: isSelected ? 'none' : color === 'transparent' ? 'visibleStroke' : 'visible',\n strokeLinecap: 'butt',\n strokeLinejoin: 'miter',\n ...(strokeStyle === PdfAnnotationBorderStyle.DASHED && {\n strokeDasharray: strokeDashArray?.join(','),\n }),\n }\"\n />\n <path\n v-if=\"isPreviewing && localPts.length > 1\"\n :d=\"`M ${localPts[localPts.length - 1].x} ${\n localPts[localPts.length - 1].y\n } L ${localPts[0].x} ${localPts[0].y}`\"\n fill=\"none\"\n :style=\"{\n stroke: strokeColor,\n strokeWidth,\n strokeDasharray: '4,4',\n opacity: 0.7,\n }\"\n />\n <rect\n v-if=\"isPreviewing && localPts.length >= 2\"\n :x=\"localPts[0].x - handleSize / scale / 2\"\n :y=\"localPts[0].y - handleSize / scale / 2\"\n :width=\"handleSize / scale\"\n :height=\"handleSize / scale\"\n :fill=\"strokeColor\"\n :opacity=\"0.4\"\n :stroke=\"strokeColor\"\n :stroke-width=\"strokeWidth / 2\"\n />\n </svg>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed } from 'vue';\nimport { Rect, Position, PdfAnnotationBorderStyle } from '@embedpdf/models';\n\nconst props = withDefaults(\n defineProps<{\n rect: Rect;\n vertices: Position[];\n color?: string;\n strokeColor?: string;\n opacity?: number;\n strokeWidth: number;\n strokeStyle?: PdfAnnotationBorderStyle;\n strokeDashArray?: number[];\n scale: number;\n isSelected: boolean;\n onClick?: (e: PointerEvent | TouchEvent) => void;\n currentVertex?: Position;\n handleSize?: number;\n }>(),\n {\n color: 'transparent',\n strokeColor: '#000000',\n opacity: 1,\n strokeStyle: PdfAnnotationBorderStyle.SOLID,\n handleSize: 14,\n },\n);\n\nconst allPoints = computed(() =>\n props.currentVertex ? [...props.vertices, props.currentVertex] : props.vertices,\n);\n\nconst localPts = computed(() =>\n allPoints.value.map(({ x, y }) => ({\n x: x - props.rect.origin.x,\n y: y - props.rect.origin.y,\n })),\n);\n\nconst pathData = computed(() => {\n if (!localPts.value.length) return '';\n const [first, ...rest] = localPts.value;\n const isPreview = !!props.currentVertex;\n return (\n `M ${first.x} ${first.y} ` +\n rest.map((p) => `L ${p.x} ${p.y}`).join(' ') +\n (isPreview ? '' : ' Z')\n ).trim();\n});\n\nconst isPreviewing = computed(() => props.currentVertex && props.vertices.length > 0);\n\nconst width = computed(() => props.rect.size.width * props.scale);\nconst height = computed(() => props.rect.size.height * props.scale);\n</script>\n","<template>\n <svg\n :style=\"{\n position: 'absolute',\n width: `${width}px`,\n height: `${height}px`,\n pointerEvents: 'none',\n zIndex: 2,\n overflow: 'visible',\n }\"\n :width=\"width\"\n :height=\"height\"\n :viewBox=\"`0 0 ${rect.size.width} ${rect.size.height}`\"\n >\n <path\n :d=\"pathData\"\n @pointerdown=\"onClick\"\n @touchstart=\"onClick\"\n :opacity=\"opacity\"\n :style=\"{\n fill: 'none',\n stroke: strokeColor ?? color,\n strokeWidth,\n cursor: isSelected ? 'move' : 'pointer',\n pointerEvents: isSelected ? 'none' : 'visibleStroke',\n strokeLinecap: 'butt',\n strokeLinejoin: 'miter',\n }\"\n />\n <path\n v-if=\"endings.start\"\n :d=\"endings.start.d\"\n :transform=\"endings.start.transform\"\n :stroke=\"strokeColor\"\n :fill=\"endings.start.filled ? color : 'none'\"\n @pointerdown=\"onClick\"\n @touchstart=\"onClick\"\n :style=\"getEndingStyle(endings.start)\"\n />\n <path\n v-if=\"endings.end\"\n :d=\"endings.end.d\"\n :transform=\"endings.end.transform\"\n :stroke=\"strokeColor\"\n :fill=\"endings.end.filled ? color : 'none'\"\n @pointerdown=\"onClick\"\n @touchstart=\"onClick\"\n :style=\"getEndingStyle(endings.end)\"\n />\n </svg>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed } from 'vue';\nimport { Rect, Position, LineEndings } from '@embedpdf/models';\nimport { patching } from '@embedpdf/plugin-annotation';\n\nconst props = withDefaults(\n defineProps<{\n rect: Rect;\n vertices: Position[];\n color?: string;\n strokeColor?: string;\n opacity?: number;\n strokeWidth: number;\n scale: number;\n isSelected: boolean;\n onClick?: (e: PointerEvent | TouchEvent) => void;\n lineEndings?: LineEndings;\n }>(),\n {\n color: 'transparent',\n strokeColor: '#000000',\n opacity: 1,\n },\n);\n\nconst localPts = computed(() =>\n props.vertices.map(({ x, y }) => ({\n x: x - props.rect.origin.x,\n y: y - props.rect.origin.y,\n })),\n);\n\nconst pathData = computed(() => {\n if (localPts.value.length === 0) return '';\n const [first, ...rest] = localPts.value;\n return (`M ${first.x} ${first.y} ` + rest.map((p) => `L ${p.x} ${p.y} `).join('')).trim();\n});\n\nconst endings = computed(() => {\n if (localPts.value.length < 2) return { start: null, end: null };\n const toAngle = (a: Position, b: Position) => Math.atan2(b.y - a.y, b.x - a.x);\n\n const startRad = toAngle(localPts.value[0], localPts.value[1]);\n const endRad = toAngle(\n localPts.value[localPts.value.length - 2],\n localPts.value[localPts.value.length - 1],\n );\n\n return {\n start: patching.createEnding(\n props.lineEndings?.start,\n props.strokeWidth,\n startRad + Math.PI,\n localPts.value[0].x,\n localPts.value[0].y,\n ),\n end: patching.createEnding(\n props.lineEndings?.end,\n props.strokeWidth,\n endRad,\n localPts.value[localPts.value.length - 1].x,\n localPts.value[localPts.value.length - 1].y,\n ),\n };\n});\n\nconst getEndingStyle = (ending: patching.SvgEnding) => ({\n cursor: props.isSelected ? 'move' : 'pointer',\n strokeWidth: props.strokeWidth,\n pointerEvents: (props.isSelected ? 'none' : ending.filled ? 'visible' : 'visibleStroke') as\n | 'none'\n | 'visible'\n | 'visibleStroke',\n strokeLinecap: 'butt' as 'butt',\n});\n\nconst width = computed(() => props.rect.size.width * props.scale);\nconst height = computed(() => props.rect.size.height * props.scale);\n</script>\n","<template>\n <svg\n :style=\"{\n position: 'absolute',\n width: svgWidth,\n height: svgHeight,\n pointerEvents: 'none',\n zIndex: 2,\n }\"\n :width=\"svgWidth\"\n :height=\"svgHeight\"\n :viewBox=\"`0 0 ${geometry.width + strokeWidth} ${geometry.height + strokeWidth}`\"\n >\n <rect\n :x=\"geometry.x\"\n :y=\"geometry.y\"\n :width=\"geometry.width\"\n :height=\"geometry.height\"\n :fill=\"color\"\n :opacity=\"opacity\"\n @pointerdown=\"onClick\"\n @touchstart=\"onClick\"\n :style=\"{\n cursor: isSelected ? 'move' : 'pointer',\n pointerEvents: isSelected ? 'none' : color === 'transparent' ? 'visibleStroke' : 'visible',\n stroke: strokeColor ?? color,\n strokeWidth: strokeWidth,\n ...(strokeStyle === PdfAnnotationBorderStyle.DASHED && {\n strokeDasharray: strokeDashArray?.join(','),\n }),\n }\"\n />\n </svg>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed } from 'vue';\nimport { PdfAnnotationBorderStyle, Rect } from '@embedpdf/models';\n\nconst props = withDefaults(\n defineProps<{\n isSelected: boolean;\n color?: string;\n strokeColor?: string;\n opacity?: number;\n strokeWidth: number;\n strokeStyle?: PdfAnnotationBorderStyle;\n strokeDashArray?: number[];\n rect: Rect;\n scale: number;\n onClick?: (e: PointerEvent | TouchEvent) => void;\n }>(),\n {\n color: '#000000',\n opacity: 1,\n strokeStyle: PdfAnnotationBorderStyle.SOLID,\n },\n);\n\nconst geometry = computed(() => {\n const outerW = props.rect.size.width;\n const outerH = props.rect.size.height;\n const innerW = Math.max(outerW - props.strokeWidth, 0);\n const innerH = Math.max(outerH - props.strokeWidth, 0);\n\n return {\n width: innerW,\n height: innerH,\n x: props.strokeWidth / 2,\n y: props.strokeWidth / 2,\n };\n});\n\nconst svgWidth = computed(() => (geometry.value.width + props.strokeWidth) * props.scale);\nconst svgHeight = computed(() => (geometry.value.height + props.strokeWidth) * props.scale);\n</script>\n","<template>\n <img\n v-if=\"imageUrl\"\n :src=\"imageUrl\"\n @load=\"handleImageLoad\"\n :style=\"{\n width: '100%',\n height: '100%',\n display: 'block',\n ...style,\n }\"\n />\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, watch, onUnmounted, CSSProperties, computed } from 'vue';\nimport { ignore, PdfAnnotationObject, PdfErrorCode } from '@embedpdf/models';\nimport { useAnnotationCapability } from '../hooks';\nimport { deepToRaw } from '@embedpdf/utils/vue';\n\nconst props = withDefaults(\n defineProps<{\n pageIndex: number;\n annotation: PdfAnnotationObject;\n scaleFactor?: number;\n style?: CSSProperties;\n }>(),\n {\n scaleFactor: 1,\n },\n);\n\nconst { provides: annotationProvides } = useAnnotationCapability();\nconst imageUrl = ref<string | null>(null);\nconst urlRef = ref<string | null>(null);\nconst currentTask = ref<any>(null);\n\n// Extract primitive values to avoid unnecessary re-renders\nconst annotationId = computed(() => props.annotation.id);\nconst rectWidth = computed(() => props.annotation.rect.size.width);\nconst rectHeight = computed(() => props.annotation.rect.size.height);\n\nwatch(\n () => [\n props.pageIndex,\n props.scaleFactor,\n annotationId.value,\n rectWidth.value,\n rectHeight.value,\n annotationProvides.value,\n ],\n (_, __, onCleanup) => {\n if (annotationProvides.value) {\n if (urlRef.value) {\n URL.revokeObjectURL(urlRef.value);\n urlRef.value = null;\n }\n\n const task = annotationProvides.value.renderAnnotation({\n pageIndex: props.pageIndex,\n annotation: deepToRaw(props.annotation),\n options: {\n scaleFactor: props.scaleFactor,\n dpr: window.devicePixelRatio,\n },\n });\n\n currentTask.value = task;\n\n task.wait((blob) => {\n const url = URL.createObjectURL(blob);\n imageUrl.value = url;\n urlRef.value = url;\n }, ignore);\n\n onCleanup(() => {\n if (urlRef.value) {\n URL.revokeObjectURL(urlRef.value);\n urlRef.value = null;\n } else {\n task.abort({\n code: PdfErrorCode.Cancelled,\n message: 'canceled render task',\n });\n }\n });\n }\n },\n { immediate: true },\n);\n\nonUnmounted(() => {\n if (urlRef.value) {\n URL.revokeObjectURL(urlRef.value);\n urlRef.value = null;\n }\n if (currentTask.value) {\n currentTask.value.abort({\n code: PdfErrorCode.Cancelled,\n message: 'canceled render task on unmount',\n });\n }\n});\n\nconst handleImageLoad = () => {\n if (urlRef.value) {\n URL.revokeObjectURL(urlRef.value);\n urlRef.value = null;\n }\n};\n</script>\n","<template>\n <div\n :style=\"{\n position: 'absolute',\n width: '100%',\n height: '100%',\n zIndex: 2,\n pointerEvents: isSelected ? 'none' : 'auto',\n cursor: 'pointer',\n }\"\n @pointerdown=\"onClick\"\n @touchstart=\"onClick\"\n >\n <RenderAnnotation\n :pageIndex=\"pageIndex\"\n :annotation=\"{ ...annotation.object, id: annotation.object.id }\"\n :scaleFactor=\"scale\"\n />\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { PdfStampAnnoObject } from '@embedpdf/models';\nimport { TrackedAnnotation } from '@embedpdf/plugin-annotation';\nimport RenderAnnotation from '../render-annotation.vue';\n\ndefineProps<{\n isSelected: boolean;\n annotation: TrackedAnnotation<PdfStampAnnoObject>;\n pageIndex: number;\n scale: number;\n onClick: (e: PointerEvent | TouchEvent) => void;\n}>();\n</script>\n","<template>\n <div\n v-for=\"(b, i) in segmentRects\"\n :key=\"i\"\n @pointerdown=\"onClick\"\n @touchstart=\"onClick\"\n :style=\"{\n position: 'absolute',\n left: `${(rect ? b.origin.x - rect.origin.x : b.origin.x) * scale}px`,\n top: `${(rect ? b.origin.y - rect.origin.y : b.origin.y) * scale}px`,\n width: `${b.size.width * scale}px`,\n height: `${b.size.height * scale}px`,\n background: color,\n opacity: opacity,\n pointerEvents: onClick ? 'auto' : 'none',\n cursor: onClick ? 'pointer' : 'default',\n zIndex: onClick ? 1 : undefined,\n }\"\n ></div>\n</template>\n\n<script setup lang=\"ts\">\nimport { Rect } from '@embedpdf/models';\n\nwithDefaults(\n defineProps<{\n color?: string;\n opacity?: number;\n segmentRects: Rect[];\n rect?: Rect;\n scale: number;\n onClick?: (e: PointerEvent | TouchEvent) => void;\n }>(),\n {\n color: '#FFFF00',\n opacity: 0.5,\n },\n);\n</script>\n","<template>\n <div\n v-for=\"(r, i) in segmentRects\"\n :key=\"i\"\n @pointerdown=\"onClick\"\n @touchstart=\"onClick\"\n :style=\"{\n position: 'absolute',\n left: `${(rect ? r.origin.x - rect.origin.x : r.origin.x) * scale}px`,\n top: `${(rect ? r.origin.y - rect.origin.y : r.origin.y) * scale}px`,\n width: `${r.size.width * scale}px`,\n height: `${r.size.height * scale}px`,\n background: 'transparent',\n pointerEvents: onClick ? 'auto' : 'none',\n cursor: onClick ? 'pointer' : 'default',\n zIndex: onClick ? 1 : 0,\n }\"\n >\n <div\n :style=\"{\n position: 'absolute',\n left: 0,\n bottom: 0,\n width: '100%',\n height: `${amplitude * 2}px`,\n backgroundImage: svgDataUri,\n backgroundRepeat: 'repeat-x',\n backgroundSize: `${period}px ${amplitude * 2}px`,\n opacity: opacity,\n pointerEvents: 'none',\n }\"\n />\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed } from 'vue';\nimport { Rect } from '@embedpdf/models';\n\nconst props = withDefaults(\n defineProps<{\n color?: string;\n opacity?: number;\n segmentRects: Rect[];\n rect?: Rect;\n scale: number;\n onClick?: (e: PointerEvent | TouchEvent) => void;\n }>(),\n {\n color: '#FFFF00',\n opacity: 0.5,\n },\n);\n\nconst amplitude = computed(() => 2 * props.scale);\nconst period = computed(() => 6 * props.scale);\n\nconst svgDataUri = computed(() => {\n const amp = amplitude.value;\n const per = period.value;\n const svg = `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"${per}\" height=\"${\n amp * 2\n }\" viewBox=\"0 0 ${per} ${amp * 2}\">\n <path d=\"M0 ${amp} Q ${per / 4} 0 ${per / 2} ${amp} T ${per} ${amp}\"\n fill=\"none\" stroke=\"${props.color}\" stroke-width=\"${amp}\" stroke-linecap=\"round\"/>\n </svg>`;\n return `url(\"data:image/svg+xml;utf8,${encodeURIComponent(svg)}\")`;\n});\n</script>\n","<template>\n <div\n v-for=\"(r, i) in segmentRects\"\n :key=\"i\"\n @pointerdown=\"onClick\"\n @touchstart=\"onClick\"\n :style=\"{\n position: 'absolute',\n left: `${(rect ? r.origin.x - rect.origin.x : r.origin.x) * scale}px`,\n top: `${(rect ? r.origin.y - rect.origin.y : r.origin.y) * scale}px`,\n width: `${r.size.width * scale}px`,\n height: `${r.size.height * scale}px`,\n background: 'transparent',\n pointerEvents: onClick ? 'auto' : 'none',\n cursor: onClick ? 'pointer' : 'default',\n zIndex: onClick ? 1 : 0,\n }\"\n >\n <div\n :style=\"{\n position: 'absolute',\n left: 0,\n top: '50%',\n width: '100%',\n height: `${thickness}px`,\n background: color,\n opacity: opacity,\n transform: 'translateY(-50%)',\n pointerEvents: 'none',\n }\"\n />\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed } from 'vue';\nimport { Rect } from '@embedpdf/models';\n\nconst props = withDefaults(\n defineProps<{\n color?: string;\n opacity?: number;\n segmentRects: Rect[];\n rect?: Rect;\n scale: number;\n onClick?: (e: PointerEvent | TouchEvent) => void;\n }>(),\n {\n color: '#FFFF00',\n opacity: 0.5,\n },\n);\n\nconst thickness = computed(() => 2 * props.scale);\n</script>\n","<template>\n <div\n v-for=\"(r, i) in segmentRects\"\n :key=\"i\"\n @pointerdown=\"onClick\"\n @touchstart=\"onClick\"\n :style=\"{\n position: 'absolute',\n left: `${(rect ? r.origin.x - rect.origin.x : r.origin.x) * scale}px`,\n top: `${(rect ? r.origin.y - rect.origin.y : r.origin.y) * scale}px`,\n width: `${r.size.width * scale}px`,\n height: `${r.size.height * scale}px`,\n background: 'transparent',\n pointerEvents: onClick ? 'auto' : 'none',\n cursor: onClick ? 'pointer' : 'default',\n zIndex: onClick ? 1 : 0,\n }\"\n >\n <div\n :style=\"{\n position: 'absolute',\n left: 0,\n bottom: 0,\n width: '100%',\n height: `${thickness}px`,\n background: color,\n opacity: opacity,\n pointerEvents: 'none',\n }\"\n />\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed } from 'vue';\nimport { Rect } from '@embedpdf/models';\n\nconst props = withDefaults(\n defineProps<{\n color?: string;\n opacity?: number;\n segmentRects: Rect[];\n rect?: Rect;\n scale: number;\n onClick?: (e: PointerEvent | TouchEvent) => void;\n }>(),\n {\n color: '#FFFF00',\n opacity: 0.5,\n },\n);\n\nconst thickness = computed(() => 2 * props.scale);\n</script>\n","<template>\n <template v-for=\"annotation in annotations\" :key=\"annotation.object.id\">\n <!-- Ink -->\n <AnnotationContainer\n v-if=\"isInk(annotation)\"\n :trackedAnnotation=\"annotation\"\n :isSelected=\"selectionState?.object.id === annotation.object.id\"\n :isDraggable=\"isDraggable(annotation)\"\n :isResizable=\"isResizable(annotation)\"\n :lockAspectRatio=\"lockAspectRatio(annotation)\"\n :onSelect=\"(e) => handleClick(e, annotation)\"\n :vertexConfig=\"getVertexConfig(annotation)\"\n :style=\"{ mixBlendMode: blendModeToCss(annotation.object.blendMode ?? PdfBlendMode.Normal) }\"\n v-bind=\"props\"\n >\n <template #default=\"{ annotation: currentObject }\">\n <AnnoComponents.Ink\n v-bind=\"currentObject\"\n :isSelected=\"selectionState?.object.id === annotation.object.id\"\n :scale=\"scale\"\n :onClick=\"(e: MouseEvent) => handleClick(e, annotation)\"\n />\n </template>\n <template #selection-menu=\"slotProps\">\n <slot name=\"selection-menu\" v-bind=\"slotProps\" />\n </template>\n <template #resize-handle=\"slotProps\">\n <slot name=\"resize-handle\" v-bind=\"slotProps\" />\n </template>\n <template #vertex-handle=\"slotProps\">\n <slot name=\"vertex-handle\" v-bind=\"slotProps\" />\n </template>\n </AnnotationContainer>\n\n <!-- Square -->\n <AnnotationContainer\n v-else-if=\"isSquare(annotation)\"\n :trackedAnnotation=\"annotation\"\n :isSelected=\"selectionState?.object.id === annotation.object.id\"\n :isDraggable=\"isDraggable(annotation)\"\n :isResizable=\"isResizable(annotation)\"\n :lockAspectRatio=\"lockAspectRatio(annotation)\"\n :onSelect=\"(e) => handleClick(e, annotation)\"\n :vertexConfig=\"getVertexConfig(annotation)\"\n :style=\"{ mixBlendMode: blendModeToCss(annotation.object.blendMode ?? PdfBlendMode.Normal) }\"\n v-bind=\"props\"\n >\n <template #default=\"{ annotation: currentObject }\">\n <AnnoComponents.Square\n v-bind=\"currentObject\"\n :isSelected=\"selectionState?.object.id === annotation.object.id\"\n :scale=\"scale\"\n :onClick=\"(e: MouseEvent) => handleClick(e, annotation)\"\n />\n </template>\n <template #selection-menu=\"slotProps\">\n <slot name=\"selection-menu\" v-bind=\"slotProps\" />\n </template>\n <template #resize-handle=\"slotProps\">\n <slot name=\"resize-handle\" v-bind=\"slotProps\" />\n </template>\n <template #vertex-handle=\"slotProps\">\n <slot name=\"vertex-handle\" v-bind=\"slotProps\" />\n </template>\n </AnnotationContainer>\n\n <!-- Circle -->\n <AnnotationContainer\n v-else-if=\"isCircle(annotation)\"\n :trackedAnnotation=\"annotation\"\n :isSelected=\"selectionState?.object.id === annotation.object.id\"\n :isDraggable=\"isDraggable(annotation)\"\n :isResizable=\"isResizable(annotation)\"\n :lockAspectRatio=\"lockAspectRatio(annotation)\"\n :onSelect=\"(e) => handleClick(e, annotation)\"\n :vertexConfig=\"getVertexConfig(annotation)\"\n :style=\"{ mixBlendMode: blendModeToCss(annotation.object.blendMode ?? PdfBlendMode.Normal) }\"\n v-bind=\"props\"\n >\n <template #default=\"{ annotation: currentObject }\">\n <AnnoComponents.Circle\n v-bind=\"currentObject\"\n :isSelected=\"selectionState?.object.id === annotation.object.id\"\n :scale=\"scale\"\n :onClick=\"(e: MouseEvent) => handleClick(e, annotation)\"\n />\n </template>\n <template #selection-menu=\"slotProps\">\n <slot name=\"selection-menu\" v-bind=\"slotProps\" />\n </template>\n <template #resize-handle=\"slotProps\">\n <slot name=\"resize-handle\" v-bind=\"slotProps\" />\n </template>\n <template #vertex-handle=\"slotProps\">\n <slot name=\"vertex-handle\" v-bind=\"slotProps\" />\n </template>\n </AnnotationContainer>\n\n <!-- Line -->\n <AnnotationContainer\n v-else-if=\"isLine(annotation)\"\n :trackedAnnotation=\"annotation\"\n :isSelected=\"selectionState?.object.id === annotation.object.id\"\n :isDraggable=\"isDraggable(annotation)\"\n :isResizable=\"isResizable(annotation)\"\n :lockAspectRatio=\"lockAspectRatio(annotation)\"\n :onSelect=\"(e) => handleClick(e, annotation)\"\n :vertexConfig=\"getVertexConfig(annotation)\"\n :style=\"{ mixBlendMode: blendModeToCss(annotation.object.blendMode ?? PdfBlendMode.Normal) }\"\n v-bind=\"props\"\n >\n <template #default=\"{ annotation: currentObject }\">\n <AnnoComponents.Line\n v-bind=\"currentObject\"\n :isSelected=\"selectionState?.object.id === annotation.object.id\"\n :scale=\"scale\"\n :onClick=\"(e: MouseEvent) => handleClick(e, annotation)\"\n />\n </template>\n <template #selection-menu=\"slotProps\">\n <slot name=\"selection-menu\" v-bind=\"slotProps\" />\n </template>\n <template #resize-handle=\"slotProps\">\n <slot name=\"resize-handle\" v-bind=\"slotProps\" />\n </template>\n <template #vertex-handle=\"slotProps\">\n <slot name=\"vertex-handle\" v-bind=\"slotProps\" />\n </template>\n </AnnotationContainer>\n\n <!-- Polyline -->\n <AnnotationContainer\n v-else-if=\"isPolyline(annotation)\"\n :trackedAnnotation=\"annotation\"\n :isSelected=\"selectionState?.object.id === annotation.object.id\"\n :isDraggable=\"isDraggable(annotation)\"\n :isResizable=\"isResizable(annotation)\"\n :lockAspectRatio=\"lockAspectRatio(annotation)\"\n :onSelect=\"(e) => handleClick(e, annotation)\"\n :vertexConfig=\"getVertexConfig(annotation)\"\n :style=\"{ mixBlendMode: blendModeToCss(annotation.object.blendMode ?? PdfBlendMode.Normal) }\"\n v-bind=\"props\"\n >\n <template #default=\"{ annotation: currentObject }\">\n <AnnoComponents.Polyline\n v-bind=\"currentObject\"\n :isSelected=\"selectionState?.object.id === annotation.object.id\"\n :scale=\"scale\"\n :onClick=\"(e: MouseEvent) => handleClick(e, annotation)\"\n />\n </template>\n <template #selection-menu=\"slotProps\">\n <slot name=\"selection-menu\" v-bind=\"slotProps\" />\n </template>\n <template #resize-handle=\"slotProps\">\n <slot name=\"resize-handle\" v-bind=\"slotProps\" />\n </template>\n <template #vertex-handle=\"slotProps\">\n <slot name=\"vertex-handle\" v-bind=\"slotProps\" />\n </template>\n </AnnotationContainer>\n\n <!-- Polygon -->\n <AnnotationContainer\n v-else-if=\"isPolygon(annotation)\"\n :trackedAnnotation=\"annotation\"\n :isSelected=\"selectionState?.object.id === annotation.object.id\"\n :isDraggable=\"isDraggable(annotation)\"\n :isResizable=\"isResizable(annotation)\"\n :lockAspectRatio=\"lockAspectRatio(annotation)\"\n :onSelect=\"(e) => handleClick(e, annotation)\"\n :vertexConfig=\"getVertexConfig(annotation)\"\n :style=\"{ mixBlendMode: blendModeToCss(annotation.object.blendMode ?? PdfBlendMode.Normal) }\"\n v-bind=\"props\"\n >\n <template #default=\"{ annotation: currentObject }\">\n <AnnoComponents.Polygon\n v-bind=\"currentObject\"\n :isSelected=\"selectionState?.object.id === annotation.object.id\"\n :scale=\"scale\"\n :onClick=\"(e: PointerEvent | TouchEvent) => handleClick(e, annotation)\"\n />\n </template>\n <template #selection-menu=\"slotProps\">\n <slot name=\"selection-menu\" v-bind=\"slotProps\" />\n </template>\n <template #resize-handle=\"slotProps\">\n <slot name=\"resize-handle\" v-bind=\"slotProps\" />\n </template>\n <template #vertex-handle=\"slotProps\">\n <slot name=\"vertex-handle\" v-bind=\"slotProps\" />\n </template>\n </AnnotationContainer>\n\n <!-- FreeText -->\n <AnnotationContainer\n v-else-if=\"isFreeText(annotation)\"\n :trackedAnnotation=\"annotation\"\n :isSelected=\"selectionState?.object.id === annotation.object.id\"\n :isDraggable=\"isDraggable(annotation)\"\n :isResizable=\"isResizable(annotation)\"\n :lockAspectRatio=\"lockAspectRatio(annotation)\"\n :onSelect=\"(e) => handleClick(e, annotation)\"\n :onDoubleClick=\"(e) => handleDoubleClick(e, annotation.object.id)\"\n :vertexConfig=\"getVertexConfig(annotation)\"\n :style=\"{ mixBlendMode: blendModeToCss(annotation.object.blendMode ?? PdfBlendMode.Normal) }\"\n v-bind=\"props\"\n >\n <template #default=\"{ annotation: currentObject }\">\n <AnnoComponents.FreeText\n :isSelected=\"selectionState?.object.id === annotation.object.id\"\n :isEditing=\"editingId === annotation.object.id\"\n :annotation=\"{ ...annotation, object: currentObject }\"\n :pageIndex=\"pageIndex\"\n :scale=\"scale\"\n :onClick=\"(e: PointerEvent | TouchEvent) => handleClick(e, annotation)\"\n />\n </template>\n <template #selection-menu=\"slotProps\">\n <slot name=\"selection-menu\" v-bind=\"slotProps\" />\n </template>\n <template #resize-handle=\"slotProps\">\n <slot name=\"resize-handle\" v-bind=\"slotProps\" />\n </template>\n <template #vertex-handle=\"slotProps\">\n <slot name=\"vertex-handle\" v-bind=\"slotProps\" />\n </template>\n </AnnotationContainer>\n\n <!-- Stamp -->\n <AnnotationContainer\n v-else-if=\"isStamp(annotation)\"\n :trackedAnnotation=\"annotation\"\n :isSelected=\"selectionState?.object.id === annotation.object.id\"\n :isDraggable=\"isDraggable(annotation)\"\n :isResizable=\"isResizable(annotation)\"\n :lockAspectRatio=\"lockAspectRatio(annotation)\"\n :onSelect=\"(e) => handleClick(e, annotation)\"\n :vertexConfig=\"getVertexConfig(annotation)\"\n :style=\"{ mixBlendMode: blendModeToCss(annotation.object.blendMode ?? PdfBlendMode.Normal) }\"\n v-bind=\"props\"\n >\n <template #default>\n <AnnoComponents.Stamp\n :isSelected=\"selectionState?.object.id === annotation.object.id\"\n :annotation=\"annotation\"\n :pageIndex=\"pageIndex\"\n :scale=\"scale\"\n :onClick=\"(e: PointerEvent | TouchEvent) => handleClick(e, annotation)\"\n />\n </template>\n <template #selection-menu=\"slotProps\">\n <slot name=\"selection-menu\" v-bind=\"slotProps\" />\n </template>\n <template #resize-handle=\"slotProps\">\n <slot name=\"resize-handle\" v-bind=\"slotProps\" />\n </template>\n <template #vertex-handle=\"slotProps\">\n <slot name=\"vertex-handle\" v-bind=\"slotProps\" />\n </template>\n </AnnotationContainer>\n\n <!-- Text Markup: Underline, StrikeOut, Squiggly, Highlight -->\n <AnnotationContainer\n v-else-if=\"isUnderline(annotation)\"\n :trackedAnnotation=\"annotation\"\n :isSelected=\"selectionState?.object.id === annotation.object.id\"\n :isDraggable=\"isDraggable(annotation)\"\n :isResizable=\"isResizable(annotation)\"\n :lockAspectRatio=\"lockAspectRatio(annotation)\"\n :onSelect=\"(e) => handleClick(e, annotation)\"\n :vertexConfig=\"getVertexConfig(annotation)\"\n :zIndex=\"0\"\n :style=\"{ mixBlendMode: blendModeToCss(annotation.object.blendMode ?? PdfBlendMode.Normal) }\"\n v-bind=\"props\"\n >\n <template #default=\"{ annotation: currentObject }\">\n <TextMarkupComponents.Underline\n v-bind=\"currentObject\"\n :scale=\"scale\"\n :onClick=\"(e: MouseEvent) => handleClick(e, annotation)\"\n />\n </template>\n <template #selection-menu=\"slotProps\">\n <slot name=\"selection-menu\" v-bind=\"slotProps\" />\n </template>\n </AnnotationContainer>\n\n <AnnotationContainer\n v-else-if=\"isStrikeout(annotation)\"\n :trackedAnnotation=\"annotation\"\n :isSelected=\"selectionState?.object.id === annotation.object.id\"\n :isDraggable=\"isDraggable(annotation)\"\n :isResizable=\"isResizable(annotation)\"\n :lockAspectRatio=\"lockAspectRatio(annotation)\"\n :onSelect=\"(e) => handleClick(e, annotation)\"\n :vertexConfig=\"getVertexConfig(annotation)\"\n :zIndex=\"0\"\n :style=\"{ mixBlendMode: blendModeToCss(annotation.object.blendMode ?? PdfBlendMode.Normal) }\"\n v-bind=\"props\"\n >\n <template #default=\"{ annotation: currentObject }\">\n <TextMarkupComponents.Strikeout\n v-bind=\"currentObject\"\n :scale=\"scale\"\n :onClick=\"(e: MouseEvent) => handleClick(e, annotation)\"\n />\n </template>\n <template #selection-menu=\"slotProps\">\n <slot name=\"selection-menu\" v-bind=\"slotProps\" />\n </template>\n </AnnotationContainer>\n\n <AnnotationContainer\n v-else-if=\"isSquiggly(annotation)\"\n :trackedAnnotation=\"annotation\"\n :isSelected=\"selectionState?.object.id === annotation.object.id\"\n :isDraggable=\"isDraggable(annotation)\"\n :isResizable=\"isResizable(annotation)\"\n :lockAspectRatio=\"lockAspectRatio(annotation)\"\n :onSelect=\"(e) => handleClick(e, annotation)\"\n :vertexConfig=\"getVertexConfig(annotation)\"\n :zIndex=\"0\"\n :style=\"{ mixBlendMode: blendModeToCss(annotation.object.blendMode ?? PdfBlendMode.Normal) }\"\n v-bind=\"props\"\n >\n <template #default=\"{ annotation: currentObject }\">\n <TextMarkupComponents.Squiggly\n v-bind=\"currentObject\"\n :scale=\"scale\"\n :onClick=\"(e: MouseEvent) => handleClick(e, annotation)\"\n />\n </template>\n <template #selection-menu=\"slotProps\">\n <slot name=\"selection-menu\" v-bind=\"slotProps\" />\n </template>\n </AnnotationContainer>\n\n <AnnotationContainer\n v-else-if=\"isHighlight(annotation)\"\n :trackedAnnotation=\"annotation\"\n :isSelected=\"selectionState?.object.id === annotation.object.id\"\n :isDraggable=\"isDraggable(annotation)\"\n :isResizable=\"isResizable(annotation)\"\n :lockAspectRatio=\"lockAspectRatio(annotation)\"\n :onSelect=\"(e) => handleClick(e, annotation)\"\n :vertexConfig=\"getVertexConfig(annotation)\"\n :zIndex=\"0\"\n :style=\"{\n mixBlendMode: blendModeToCss(annotation.object.blendMode ?? PdfBlendMode.Multiply),\n }\"\n v-bind=\"props\"\n >\n <template #default=\"{ annotation: currentObject }\">\n <TextMarkupComponents.Highlight\n v-bind=\"currentObject\"\n :scale=\"scale\"\n :onClick=\"(e: MouseEvent) => handleClick(e, annotation)\"\n />\n </template>\n <template #selection-menu=\"slotProps\">\n <slot name=\"selection-menu\" v-bind=\"slotProps\" />\n </template>\n </AnnotationContainer>\n </template>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, watchEffect } from 'vue';\nimport { blendModeToCss, PdfBlendMode, Position } from '@embedpdf/models';\nimport {\n getAnnotationsByPageIndex,\n getSelectedAnnotationByPageIndex,\n isCircle,\n isFreeText,\n isHighlight,\n isInk,\n isLine,\n isPolygon,\n isPolyline,\n isSquare,\n isSquiggly,\n isStamp,\n isStrikeout,\n isUnderline,\n TrackedAnnotation,\n} from '@embedpdf/plugin-annotation';\nimport { usePointerHandlers } from '@embedpdf/plugin-interaction-manager/vue';\nimport { useSelectionCapability } from '@embedpdf/plugin-selection/vue';\nimport { useAnnotationCapability } from '../hooks';\nimport AnnotationContainer from './annotation-container.vue';\nimport * as AnnoComponents from './annotations';\nimport * as TextMarkupComponents from './text-markup';\nimport { VertexConfig } from '../../shared/types';\nimport { ResizeHandleUI, VertexHandleUI } from '../types';\n\nconst props = defineProps<{\n pageIndex: number;\n scale: number;\n rotation: number;\n pageWidth: number;\n pageHeight: number;\n resizeUI?: ResizeHandleUI;\n vertexUI?: VertexHandleUI;\n selectionOutlineColor?: string;\n}>();\n\nconst { provides: annotationProvides } = useAnnotationCapability();\nconst { provides: selectionProvides } = useSelectionCapability();\nconst annotations = ref<TrackedAnnotation[]>([]);\nconst { register } = usePointerHandlers({ pageIndex: props.pageIndex });\nconst selectionState = ref<TrackedAnnotation | null>(null);\nconst editingId = ref<string | null>(null);\n\nwatchEffect((onCleanup) => {\n if (annotationProvides.value) {\n const off = annotationProvides.value.onStateChange((state) => {\n annotations.value = getAnnotationsByPageIndex(state, props.pageIndex);\n selectionState.value = getSelectedAnnotationByPageIndex(state, props.pageIndex);\n });\n onCleanup(off);\n }\n});\n\nconst handlePointerDown = (_pos: Position, pe: PointerEvent) => {\n if (pe.target === pe.currentTarget && annotationProvides.value) {\n annotationProvides.value.deselectAnnotation();\n editingId.value = null;\n }\n};\n\nconst handleClick = (e: MouseEvent | TouchEvent, annotation: TrackedAnnotation) => {\n e.stopPropagation();\n if (annotationProvides.value && selectionProvides.value) {\n annotationProvides.value.selectAnnotation(props.pageIndex, annotation.object.id);\n selectionProvides.value.clear();\n if (annotation.object.id !== editingId.value) {\n editingId.value = null;\n }\n }\n};\n\nconst handleDoubleClick = (_e: MouseEvent | PointerEvent, id: string) => {\n if (isFreeText(annotations.value.find((a) => a.object.id === id)!)) {\n editingId.value = id;\n }\n};\n\nwatchEffect((onCleanup) => {\n if (annotationProvides.value) {\n const unregister = register({ onPointerDown: handlePointerDown });\n if (unregister) {\n onCleanup(unregister);\n }\n }\n});\n\n// --- Component Logic ---\nconst getTool = (annotation: TrackedAnnotation) =>\n annotationProvides.value?.findToolForAnnotation(annotation.object);\n\nconst isDraggable = (anno: TrackedAnnotation) => {\n if (isFreeText(anno) && editingId.value === anno.object.id) return false;\n return getTool(anno)?.interaction.isDraggable ?? false;\n};\nconst isResizable = (anno: TrackedAnnotation) => getTool(anno)?.interaction.isResizable ?? false;\nconst lockAspectRatio = (anno: TrackedAnnotation) =>\n getTool(anno)?.interaction.lockAspectRatio ?? false;\n\nconst getVertexConfig = (annotation: TrackedAnnotation): VertexConfig<any> | undefined => {\n if (isLine(annotation)) {\n return {\n extractVertices: (anno) => [anno.linePoints.start, anno.linePoints.end],\n transformAnnotation: (anno, vertices) => ({\n ...anno,\n linePoints: { start: vertices[0], end: vertices[1] },\n }),\n };\n }\n if (isPolyline(annotation) || isPolygon(annotation)) {\n return {\n extractVertices: (anno) => anno.vertices,\n transformAnnotation: (anno, vertices) => ({ ...anno, vertices }),\n };\n }\n return undefined;\n};\n</script>\n","<template>\n <div\n v-if=\"boundingRect && activeTool\"\n :style=\"{\n mixBlendMode: blendMode,\n pointerEvents: 'none',\n position: 'absolute',\n inset: 0,\n }\"\n >\n <Highlight\n v-if=\"activeTool.defaults.type === PdfAnnotationSubtype.HIGHLIGHT\"\n :color=\"activeTool.defaults.color\"\n :opacity=\"activeTool.defaults.opacity\"\n :segmentRects=\"rects\"\n :scale=\"scale\"\n />\n <Underline\n v-else-if=\"activeTool.defaults.type === PdfAnnotationSubtype.UNDERLINE\"\n :color=\"activeTool.defaults.color\"\n :opacity=\"activeTool.defaults.opacity\"\n :segmentRects=\"rects\"\n :scale=\"scale\"\n />\n <Strikeout\n v-else-if=\"activeTool.defaults.type === PdfAnnotationSubtype.STRIKEOUT\"\n :color=\"activeTool.defaults.color\"\n :opacity=\"activeTool.defaults.opacity\"\n :segmentRects=\"rects\"\n :scale=\"scale\"\n />\n <Squiggly\n v-else-if=\"activeTool.defaults.type === PdfAnnotationSubtype.SQUIGGLY\"\n :color=\"activeTool.defaults.color\"\n :opacity=\"activeTool.defaults.opacity\"\n :segmentRects=\"rects\"\n :scale=\"scale\"\n />\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, onUnmounted, watchEffect, computed } from 'vue';\nimport { blendModeToCss, PdfAnnotationSubtype, PdfBlendMode, Rect } from '@embedpdf/models';\nimport { AnnotationTool } from '@embedpdf/plugin-annotation';\nimport { useSelectionCapability } from '@embedpdf/plugin-selection/vue';\nimport { useAnnotationCapability } from '../hooks';\nimport Highlight from './text-markup/highlight.vue';\nimport Underline from './text-markup/underline.vue';\nimport Strikeout from './text-markup/strikeout.vue';\nimport Squiggly from './text-markup/squiggly.vue';\n\nconst props = defineProps<{\n pageIndex: number;\n scale: number;\n}>();\n\nconst { provides: selectionProvides } = useSelectionCapability();\nconst { provides: annotationProvides } = useAnnotationCapability();\nconst rects = ref<Rect[]>([]);\nconst boundingRect = ref<Rect | null>(null);\nconst activeTool = ref<AnnotationTool | null>(null);\n\nwatchEffect((onCleanup) => {\n const unsubscribers: (() => void)[] = [];\n\n if (selectionProvides.value) {\n const provides = selectionProvides.value;\n const off = provides.onSelectionChange(() => {\n rects.value = provides.getHighlightRectsForPage(props.pageIndex);\n boundingRect.value = provides.getBoundingRectForPage(props.pageIndex);\n });\n unsubscribers.push(off);\n }\n\n if (annotationProvides.value) {\n const provides = annotationProvides.value;\n const off = provides.onActiveToolChange((tool) => (activeTool.value = tool));\n unsubscribers.push(off);\n }\n\n onCleanup(() => {\n unsubscribers.forEach((unsub) => unsub());\n });\n});\n\nconst blendMode = computed(() => {\n if (!activeTool.value) return blendModeToCss(PdfBlendMode.Normal);\n const defaultMode =\n activeTool.value.defaults.type === PdfAnnotationSubtype.HIGHLIGHT\n ? PdfBlendMode.Multiply\n : PdfBlendMode.Normal;\n return blendModeToCss(activeTool.value.defaults.blendMode ?? defaultMode);\n});\n</script>\n","<template>\n <div :style=\"style\">\n <Circle\n v-if=\"preview.type === PdfAnnotationSubtype.CIRCLE\"\n :isSelected=\"false\"\n :scale=\"scale\"\n v-bind=\"preview.data\"\n />\n <Square\n v-else-if=\"preview.type === PdfAnnotationSubtype.SQUARE\"\n :isSelected=\"false\"\n :scale=\"scale\"\n v-bind=\"preview.data\"\n />\n <Polygon\n v-else-if=\"preview.type === PdfAnnotationSubtype.POLYGON\"\n :isSelected=\"false\"\n :scale=\"scale\"\n v-bind=\"preview.data\"\n />\n <Polyline\n v-else-if=\"preview.type === PdfAnnotationSubtype.POLYLINE\"\n :isSelected=\"false\"\n :scale=\"scale\"\n v-bind=\"preview.data\"\n />\n <Line\n v-else-if=\"preview.type === PdfAnnotationSubtype.LINE\"\n :isSelected=\"false\"\n :scale=\"scale\"\n v-bind=\"preview.data\"\n />\n <Ink\n v-else-if=\"preview.type === PdfAnnotationSubtype.INK\"\n :isSelected=\"false\"\n :scale=\"scale\"\n v-bind=\"preview.data\"\n />\n <div\n v-else-if=\"preview.type === PdfAnnotationSubtype.FREETEXT\"\n :style=\"{\n width: '100%',\n height: '100%',\n border: `1px dashed ${preview.data.fontColor || '#000000'}`,\n backgroundColor: 'transparent',\n }\"\n />\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, CSSProperties } from 'vue';\nimport { AnyPreviewState } from '@embedpdf/plugin-annotation';\nimport { PdfAnnotationSubtype } from '@embedpdf/models';\nimport { Circle, Square, Polygon, Polyline, Line, Ink } from './annotations';\n\nconst props = defineProps<{\n preview: AnyPreviewState;\n scale: number;\n}>();\n\nconst style = computed<CSSProperties>(() => ({\n position: 'absolute',\n left: `${props.preview.bounds.origin.x * props.scale}px`,\n top: `${props.preview.bounds.origin.y * props.scale}px`,\n width: `${props.preview.bounds.size.width * props.scale}px`,\n height: `${props.preview.bounds.size.height * props.scale}px`,\n pointerEvents: 'none',\n zIndex: 10,\n}));\n</script>\n","<template>\n <input ref=\"fileInputRef\" type=\"file\" style=\"display: none\" />\n <canvas ref=\"canvasRef\" style=\"display: none\"></canvas>\n <PreviewRenderer\n v-for=\"[toolId, preview] in previews.entries()\"\n :key=\"toolId\"\n :preview=\"preview\"\n :scale=\"scale\"\n />\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, watchEffect, computed } from 'vue';\nimport { useAnnotationPlugin } from '../hooks';\nimport { AnyPreviewState, HandlerServices } from '@embedpdf/plugin-annotation';\nimport PreviewRenderer from './preview-renderer.vue';\n\nconst props = defineProps<{\n pageIndex: number;\n scale: number;\n}>();\n\nconst { plugin: annotationPlugin } = useAnnotationPlugin();\nconst previews = ref<Map<string, AnyPreviewState>>(new Map());\nconst fileInputRef = ref<HTMLInputElement | null>(null);\nconst canvasRef = ref<HTMLCanvasElement | null>(null);\n\nconst services = computed<HandlerServices>(() => ({\n requestFile: ({ accept, onFile }) => {\n const input = fileInputRef.value;\n if (!input) return;\n input.accept = accept;\n input.onchange = (e) => {\n const file = (e.target as HTMLInputElement).files?.[0];\n if (file) {\n onFile(file);\n input.value = '';\n }\n };\n input.click();\n },\n processImage: ({ source, maxWidth, maxHeight, onComplete }) => {\n const canvas = canvasRef.value;\n if (!canvas || !canvas.getContext) return;\n const ctx = canvas.getContext('2d');\n if (!ctx) return;\n\n const img = new Image();\n img.crossOrigin = 'Anonymous';\n img.onload = () => {\n let { naturalWidth: width, naturalHeight: height } = img;\n const scaleX = maxWidth ? maxWidth / width : 1;\n const scaleY = maxHeight ? maxHeight / height : 1;\n const scaleFactor = Math.min(scaleX, scaleY, 1);\n const finalWidth = width * scaleFactor;\n const finalHeight = height * scaleFactor;\n\n canvas.width = finalWidth;\n canvas.height = finalHeight;\n ctx.drawImage(img, 0, 0, finalWidth, finalHeight);\n\n const imageData = ctx.getImageData(0, 0, finalWidth, finalHeight);\n if (typeof source !== 'string') URL.revokeObjectURL(img.src);\n\n onComplete({ imageData, width: finalWidth, height: finalHeight });\n };\n img.src = typeof source === 'string' ? source : URL.createObjectURL(source);\n },\n}));\n\nlet unregister: (() => void) | undefined;\n\nwatchEffect((onCleanup) => {\n if (annotationPlugin.value) {\n unregister = annotationPlugin.value.registerPageHandlers(props.pageIndex, props.scale, {\n services: services.value,\n onPreview: (toolId, state) => {\n const next = new Map(previews.value);\n if (state) {\n next.set(toolId, state);\n } else {\n next.delete(toolId);\n }\n previews.value = next;\n },\n });\n }\n\n onCleanup(() => {\n unregister?.();\n });\n});\n</script>\n","<template>\n <div>\n <Annotations v-bind=\"props\">\n <template #selection-menu=\"slotProps\">\n <slot name=\"selection-menu\" v-bind=\"slotProps\"></slot>\n </template>\n <template #resize-handle=\"slotProps\">\n <slot name=\"resize-handle\" v-bind=\"slotProps\"></slot>\n </template>\n <template #vertex-handle=\"slotProps\">\n <slot name=\"vertex-handle\" v-bind=\"slotProps\"></slot>\n </template>\n </Annotations>\n <TextMarkup :pageIndex=\"pageIndex\" :scale=\"scale\" />\n <AnnotationPaintLayer :pageIndex=\"pageIndex\" :scale=\"scale\" />\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport Annotations from './annotations.vue';\nimport TextMarkup from './text-markup.vue';\nimport AnnotationPaintLayer from './annotation-paint-layer.vue';\nimport { ResizeHandleUI, VertexHandleUI } from '../types';\n\nconst props = defineProps<{\n pageIndex: number;\n scale: number;\n pageWidth: number;\n pageHeight: number;\n rotation: number;\n resizeUI?: ResizeHandleUI;\n vertexUI?: VertexHandleUI;\n selectionOutlineColor?: string;\n}>();\n</script>\n"],"names":["useAnnotationPlugin","usePlugin","AnnotationPlugin","id","useAnnotationCapability","useCapability","HANDLE_COLOR","VERTEX_COLOR","props","__props","preview","shallowRef","toRaw","trackedAnnotation","object","provides","annotationProvides","gestureBaseRef","ref","currentObject","computed","value","elementSnapshot","rect","verticesSnapshot","obj","_a","vertexConfig","extractVertices","constraintsSnapshot","minWidth","minHeight","boundingBox","width","pageWidth","scale","height","pageHeight","dragProps","vertices","resize","useInteractionHandles","controller","element","constraints","maintainAspectRatio","lockAspectRatio","pageRotation","rotation","enabled","isSelected","onUpdate","event","transformData","type","state","base","changes","_b","transformAnnotation","patched","_c","metadata","_d","updateAnnotation","pageIndex","resizeUI","handleSize","spacing","outlineOffset","offsetMode","includeSides","zIndex","vertexUI","vertexSize","includeVertices","doubleProps","useDoublePressProps","onDoubleClick","vue$1","watch","newObject","deep","containerStyle","position","left","origin","x","top","y","size","outline","selectionOutlineColor","pointerEvents","touchAction","cursor","isDraggable","slots","useSlots","_openBlock","_createElementBlock","_hoisted_1","_createElementVNode","_mergeProps","mergeProps","_unref","unref","style","_renderSlot","renderSlot","_ctx","$slots","annotation","isResizable","_Fragment","key","handle","backgroundColor","ref_for","length","vertex","_createVNode","CounterRotate","default","_withCtx","menuWrapperProps","selected","geometry","outerW","outerH","innerW","Math","max","strokeWidth","innerH","cx","cy","rx","ry","svgWidth","svgHeight","createElementBlock","_normalizeStyle","viewBox","fill","color","opacity","onPointerdown","_cache","onClick","args","onTouchstart","strokeColor","strokeStyle","PdfAnnotationBorderStyle","DASHED","strokeDashArray","join","editorRef","isIOS","onMounted","nav","navigator","test","userAgent","platform","maxTouchPoints","isEditing","editing","editor","focus","selection","window","getSelection","range","document","createRange","selectNodeContents","collapse","removeAllRanges","addRange","handleBlur","contents","innerText","editorStyle","anno","computedFontPx","fontSize","needsComp","adjustedFontPx","scaleComp","invScalePercent","fontColor","fontFamily","standardFontCss","textAlign","textAlignmentToCss","flexDirection","justifyContent","verticalAlign","PdfVerticalAlignment","Top","Middle","display","lineHeight","overflow","transform","transformOrigin","onBlur","tabindex","contenteditable","paths","inkList","map","points","d","forEach","i","lx","ly","trim","_renderList","renderList","localLine","x1","linePoints","start","y1","x2","end","y2","endings","angle","atan2","patching","createEnding","lineEndings","PI","getEndingStyle","ending","strokeLinecap","filled","strokeDasharray","stroke","normalizeStyle","allPoints","currentVertex","localPts","pathData","first","rest","isPreview","p","isPreviewing","toAngle","a","b","startRad","endRad","imageUrl","urlRef","currentTask","annotationId","rectWidth","rectHeight","scaleFactor","_","__","onCleanup","URL","revokeObjectURL","task","renderAnnotation","deepToRaw","options","dpr","devicePixelRatio","wait","blob","url","createObjectURL","ignore","abort","code","PdfErrorCode","Cancelled","message","immediate","onUnmounted","handleImageLoad","src","onLoad","RenderAnnotation","segmentRects","amplitude","period","svgDataUri","amp","per","svg","encodeURIComponent","r","backgroundSize","thickness","selectionProvides","useSelectionCapability","annotations","register","usePointerHandlers","selectionState","editingId","watchEffect","onStateChange","getAnnotationsByPageIndex","getSelectedAnnotationByPageIndex","handlePointerDown","_pos","pe","target","currentTarget","deselectAnnotation","handleClick","e","stopPropagation","selectAnnotation","clear","unregister","onPointerDown","getTool","findToolForAnnotation","isFreeText","interaction","getVertexConfig","isLine","isPolyline","isPolygon","Fragment","isInk","openBlock","_createBlock","createBlock","AnnotationContainer","onSelect","mixBlendMode","blendModeToCss","blendMode","PdfBlendMode","Normal","createVNode","AnnoComponents.Ink","slotProps","isSquare","AnnoComponents.Square","isCircle","AnnoComponents.Circle","AnnoComponents.Line","_e","AnnoComponents.Polyline","_f","AnnoComponents.Polygon","_g","handleDoubleClick","find","AnnoComponents.FreeText","isStamp","_h","AnnoComponents.Stamp","isUnderline","_i","TextMarkupComponents.Underline","isStrikeout","_j","TextMarkupComponents.Strikeout","isSquiggly","_k","TextMarkupComponents.Squiggly","isHighlight","_l","Multiply","TextMarkupComponents.Highlight","rects","boundingRect","activeTool","unsubscribers","off","onSelectionChange","getHighlightRectsForPage","getBoundingRectForPage","push","onActiveToolChange","tool","unsub","defaultMode","defaults","PdfAnnotationSubtype","HIGHLIGHT","Highlight","UNDERLINE","Underline","STRIKEOUT","Strikeout","SQUIGGLY","Squiggly","bounds","CIRCLE","data","SQUARE","POLYGON","POLYLINE","LINE","INK","FREETEXT","plugin","annotationPlugin","previews","Map","fileInputRef","canvasRef","services","requestFile","accept","onFile","input","onchange","file","files","click","processImage","source","maxWidth","maxHeight","onComplete","canvas","getContext","ctx","img","Image","crossOrigin","onload","naturalWidth","naturalHeight","scaleX","scaleY","min","finalWidth","finalHeight","drawImage","imageData","getImageData","registerPageHandlers","onPreview","toolId","next","set","delete","entries","PreviewRenderer","Annotations","TextMarkup","AnnotationPaintLayer","initialState","newState","readonly"],"mappings":"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"}
|