66import { createAppConfig } from '@nextcloud/vite-config'
77import { resolve } from 'node:path'
88
9- const patchPdfElementsRuntimeFixes = {
10- name : 'patch-pdf-elements-runtime-fixes' ,
11- enforce : 'pre' ,
12- transform ( code , id ) {
13- if ( ! id . includes ( '/@libresign/pdf-elements/' ) ) {
14- return null
15- }
16- if ( ! id . endsWith ( '/dist/index.mjs' )
17- && ! id . endsWith ( '/src/components/DraggableElement.vue' )
18- && ! id . endsWith ( '/src/components/PDFElements.vue' ) ) {
19- return null
20- }
21-
22- let replaced = code
23-
24- // Drag/resize listeners must be non-passive because handleMove calls preventDefault.
25- replaced = replaced . replace (
26- / w i n d o w \. a d d E v e n t L i s t e n e r \( ( [ ' " ] ) t o u c h m o v e \1, \s * t h i s \. b o u n d H a n d l e M o v e \) / g,
27- 'window.addEventListener($1touchmove$1, this.boundHandleMove, { passive: false })' ,
28- )
29-
30- // Adding-mode touchmove also needs to be non-passive.
31- replaced = replaced . replace (
32- / d o c u m e n t \. a d d E v e n t L i s t e n e r \( ( [ ' " ] ) t o u c h m o v e \1, \s * t h i s \. h a n d l e M o u s e M o v e , \s * \{ \s * p a s s i v e : \s * (?: ! 0 | t r u e ) \s * \} \) / g,
33- 'document.addEventListener($1touchmove$1, this.handleMouseMove, { passive: false })' ,
34- )
35-
36- // Guard against race where add mode ends while RAF callback is still queued.
37- replaced = replaced . replace (
38- / c o n s t s = t h i s \. p e n d i n g H o v e r C l i e n t P o s ; \s * i f \( ! s \) r e t u r n ; / g,
39- 'if (!this.isAddingMode || !this.previewElement) { this.pendingHoverClientPos = null; return; } const s = this.pendingHoverClientPos; if (!s) return;' ,
40- )
41-
42- // Defensive access to preview element dimensions in async mobile flow.
43- replaced = replaced . replace ( / t h i s \. p r e v i e w E l e m e n t \. w i d t h / g, '(this.previewElement?.width || 0)' )
44- replaced = replaced . replace ( / t h i s \. p r e v i e w E l e m e n t \. h e i g h t / g, '(this.previewElement?.height || 0)' )
45-
46- // Keep toolbar above by default, but place below when signature is near top.
47- replaced = replaced . replace (
48- / c o n s t e = t h i s \. p a g e s S c a l e \| \| 1 , t = t h i s \. m o d e = = = " d r a g " , i = t h i s \. m o d e = = = " r e s i z e " , s = t \? t h i s \. o f f s e t X : 0 , n = t \? t h i s \. o f f s e t Y : 0 , a = i \? t h i s \. r e s i z e O f f s e t X : 0 , o = i \? t h i s \. r e s i z e O f f s e t Y : 0 , r = i \? t h i s \. r e s i z e O f f s e t W : 0 , h = t h i s \. o b j e c t \. x \+ s \+ a , l = t h i s \. o b j e c t \. y \+ n \+ o , u = t h i s \. o b j e c t \. w i d t h \+ r , d = l - 6 0 , g = d < 0 \? l \+ 8 : d ; / g,
49- 'const e = this.pagesScale || 1, t = this.mode === "drag", i = this.mode === "resize", s = t ? this.offsetX : 0, n = t ? this.offsetY : 0, a = i ? this.resizeOffsetX : 0, o = i ? this.resizeOffsetY : 0, r = i ? this.resizeOffsetW : 0, h = i ? this.resizeOffsetH : 0, l = this.object.x + s + a, u = this.object.y + n + o, c = this.object.width + r, d = this.object.height + h, g = u * e < 72, f = g ? u + d : u, b = g ? "translate(-50%, 8px)" : "translate(-50%, calc(-100% - 8px))";' ,
50- )
51- replaced = replaced . replace (
52- / l e f t : ` \$ \{ \( h \+ u \/ 2 \) \* e \} p x ` , \s * t o p : ` \$ \{ g \* e \} p x ` , \s * t r a n s f o r m : " t r a n s l a t e X \( - 5 0 % \) " / g,
53- 'left: `${(l + c / 2) * e}px`, top: `${f * e}px`, transform: b' ,
54- )
55-
56- return replaced === code ? null : { code : replaced , map : null }
57- } ,
58- }
59-
609export default createAppConfig ( {
6110 main : resolve ( 'src/main.ts' ) ,
6211 init : resolve ( 'src/init.ts' ) ,
@@ -76,7 +25,6 @@ export default createAppConfig({
7625 } ,
7726 } ,
7827 plugins : [
79- patchPdfElementsRuntimeFixes ,
8028 {
8129 name : 'vue-devtools' ,
8230 config ( _ , { mode } ) {
0 commit comments