@eigenpal/docx-js-editor 0.0.19 → 0.0.21
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/README.md +83 -0
- package/dist/{ClipboardManager-EZ0C6Onq.d.cts → ClipboardManager-B1jZrC6h.d.cts} +1 -1
- package/dist/{ClipboardManager-D6dkOFg6.d.ts → ClipboardManager-jqJVxB6g.d.ts} +1 -1
- package/dist/{DocumentAgent-BcCDg7i2.d.ts → DocumentAgent-CnJ9AEl_.d.cts} +31 -3
- package/dist/{DocumentAgent-B0EC8lPC.d.cts → DocumentAgent-CrbsDniO.d.ts} +31 -3
- package/dist/{FindReplaceDialog-AWQXKEUQ.js → FindReplaceDialog-AQFR4OCT.js} +1 -2
- package/dist/FindReplaceDialog-J3DI3U5I.cjs +1 -0
- package/dist/{FootnotePropertiesDialog-73VT2ZVZ.cjs → FootnotePropertiesDialog-DO5DCAW6.cjs} +1 -2
- package/dist/{FootnotePropertiesDialog-ZM3EF3EF.js → FootnotePropertiesDialog-YYIZU5U6.js} +1 -2
- package/dist/{HyperlinkDialog-BA25XUT5.js → HyperlinkDialog-HGZ2S37Z.js} +1 -2
- package/dist/HyperlinkDialog-PEPS3C2G.cjs +1 -0
- package/dist/{ImagePositionDialog-AIAMKPFK.js → ImagePositionDialog-DQ4JWS4F.js} +1 -2
- package/dist/{ImagePositionDialog-KMK7ROV2.cjs → ImagePositionDialog-UYXYHSP4.cjs} +1 -2
- package/dist/{ImagePropertiesDialog-ERFCUVCW.js → ImagePropertiesDialog-GJMGLM6G.js} +1 -2
- package/dist/{ImagePropertiesDialog-USMMRK6X.cjs → ImagePropertiesDialog-V6SVKINO.cjs} +1 -2
- package/dist/{TablePropertiesDialog-72CIUAZT.cjs → TablePropertiesDialog-A36OXG3A.cjs} +1 -2
- package/dist/{TablePropertiesDialog-EMUEVYB3.js → TablePropertiesDialog-STZOGHJB.js} +1 -2
- package/dist/{agentApi-BFVyKagE.d.cts → agentApi-DfsWRyrP.d.cts} +1 -1
- package/dist/{agentApi-BFVyKagE.d.ts → agentApi-DfsWRyrP.d.ts} +1 -1
- package/dist/{chunk-FDANI5P4.cjs → chunk-2VHQ7YOQ.cjs} +1 -2
- package/dist/chunk-2Y6FLZ5Q.js +3 -0
- package/dist/chunk-32HMU2UV.js +111 -0
- package/dist/chunk-4CUGBNL2.cjs +1 -0
- package/dist/chunk-5GFXHUMP.js +1 -0
- package/dist/chunk-6NDMKJIE.js +9 -0
- package/dist/chunk-6NYA53QC.cjs +258 -0
- package/dist/chunk-7KJ3YVDQ.js +10 -0
- package/dist/{chunk-JOYPFQW2.js → chunk-AARNCPWR.js} +1 -2
- package/dist/{chunk-4QT5LPBA.cjs → chunk-B7TICMXD.cjs} +16 -17
- package/dist/{chunk-2QOEHCBX.js → chunk-BUEMG4NW.js} +1 -2
- package/dist/{chunk-CV5WFE7K.js → chunk-CLDB6TL7.js} +2 -3
- package/dist/{chunk-M2T6XKT5.js → chunk-CTYOM6BE.js} +1 -2
- package/dist/chunk-EH3NY2DQ.cjs +26 -0
- package/dist/{chunk-FGVGZLBL.js → chunk-FVUGBRDD.js} +1 -2
- package/dist/chunk-FXJAIFPR.js +59 -0
- package/dist/chunk-GICVJSFJ.cjs +9 -0
- package/dist/{chunk-Y6VCTLCJ.js → chunk-H5NTJZO4.js} +1 -2
- package/dist/chunk-HT2Z33YM.cjs +111 -0
- package/dist/chunk-JRRTZZ72.cjs +1 -0
- package/dist/{chunk-T2HQYRA7.cjs → chunk-NVAQQYBJ.cjs} +1 -2
- package/dist/chunk-P3AEZKQO.cjs +3 -0
- package/dist/{chunk-GWBTKVFD.cjs → chunk-P7ZF45KZ.cjs} +1 -2
- package/dist/{chunk-QEBO3EQP.cjs → chunk-PCJ5ACUV.cjs} +1 -2
- package/dist/{chunk-Q6HUGWO6.js → chunk-PJVI53AH.js} +1 -2
- package/dist/chunk-Q7YYC75E.js +258 -0
- package/dist/{chunk-7JSPKVOW.js → chunk-QVPR2W5S.js} +1 -2
- package/dist/{chunk-XZNOV52K.cjs → chunk-TAF6KYDM.cjs} +4 -5
- package/dist/chunk-USRMBYI6.js +3 -0
- package/dist/chunk-UTWPV2I4.js +26 -0
- package/dist/{chunk-DJAEBZ33.cjs → chunk-VTAS7VZ6.cjs} +1 -2
- package/dist/chunk-XQNCLN4T.cjs +3 -0
- package/dist/{chunk-S26DZVRQ.cjs → chunk-XS2AQFMF.cjs} +1 -2
- package/dist/chunk-Y6QBJGMO.cjs +59 -0
- package/dist/{chunk-WD2HTKRR.cjs → chunk-YS7FDEZ4.cjs} +1 -2
- package/dist/chunk-ZTVQA46Q.js +1 -0
- package/dist/{clipboard-beGtyabO.d.ts → clipboard-BE8E-szx.d.ts} +1 -1
- package/dist/{clipboard-CqE-UZ2d.d.cts → clipboard-DkfAv07F.d.cts} +1 -1
- package/dist/{colorResolver-B5YbO_a4.d.ts → colorResolver-CYttioMe.d.ts} +46 -3
- package/dist/{colorResolver-Cu46bSKr.d.cts → colorResolver-Dr8kQZAQ.d.cts} +46 -3
- package/dist/core-plugins-reexport.cjs +1 -2
- package/dist/core-plugins-reexport.d.cts +4 -4
- package/dist/core-plugins-reexport.d.ts +4 -4
- package/dist/core-plugins-reexport.js +1 -2
- package/dist/core-reexport.cjs +1 -2
- package/dist/core-reexport.d.cts +10 -10
- package/dist/core-reexport.d.ts +10 -10
- package/dist/core-reexport.js +1 -2
- package/dist/executor-JGWZ7S6Z.cjs +1 -0
- package/dist/executor-L2MVKMXO.js +1 -0
- package/dist/{fontLoader-CFKpg0Ri.d.ts → fontLoader-BsqQnB4v.d.ts} +1 -1
- package/dist/{fontLoader-HZYfILUm.d.cts → fontLoader-DECXIoMr.d.cts} +1 -1
- package/dist/headless-reexport.cjs +4 -5
- package/dist/headless-reexport.d.cts +7 -7
- package/dist/headless-reexport.d.ts +7 -7
- package/dist/headless-reexport.js +4 -5
- package/dist/index.cjs +6 -7
- package/dist/index.css +0 -1
- package/dist/index.d.cts +12 -12
- package/dist/index.d.ts +12 -12
- package/dist/index.js +6 -7
- package/dist/lib-GD2QD2JK.js +1 -0
- package/dist/lib-HOLGQI5K.cjs +1 -0
- package/dist/mcp-reexport.cjs +9 -10
- package/dist/mcp-reexport.d.cts +2 -2
- package/dist/mcp-reexport.d.ts +2 -2
- package/dist/mcp-reexport.js +4 -5
- package/dist/{processTemplate-G37IM66O.js → processTemplate-3HN7Q3KT.js} +1 -2
- package/dist/processTemplate-BXZKWRQD.cjs +1 -0
- package/dist/{react-BjOCdeTs.d.ts → react-C6bgHDFl.d.ts} +8 -6
- package/dist/{react-UzAn4o7l.d.cts → react-CAlVCYa4.d.cts} +8 -6
- package/dist/react.cjs +1 -2
- package/dist/react.css +0 -1
- package/dist/react.d.cts +5 -5
- package/dist/react.d.ts +5 -5
- package/dist/react.js +1 -2
- package/dist/{registry-DjacfR6Q.d.cts → registry-BU-FbHh-.d.cts} +1 -1
- package/dist/{registry-CV6nYWqP.d.ts → registry-gRbkCooh.d.ts} +1 -1
- package/dist/selectionRects-7QU337P5.cjs +1 -0
- package/dist/selectionRects-V5RC2BYX.js +1 -0
- package/dist/styles.css +1 -1
- package/dist/{types-DwZ3xysp.d.ts → types-7wjInVMW.d.ts} +1 -1
- package/dist/{types-Bnp8rvJn.d.cts → types-DEEpBL9H.d.cts} +1 -1
- package/dist/ui.cjs +1 -2
- package/dist/ui.d.cts +32 -85
- package/dist/ui.d.ts +32 -85
- package/dist/ui.js +1 -2
- package/dist/{variableDetector-CMhJtM96.d.cts → variableDetector-B4oQJa2e.d.cts} +33 -2
- package/dist/{variableDetector-BaDeXz7D.d.ts → variableDetector-BXJaTkiB.d.ts} +33 -2
- package/package.json +2 -1
- package/dist/FindReplaceDialog-AWQXKEUQ.js.map +0 -1
- package/dist/FindReplaceDialog-I4SZDSVP.cjs +0 -2
- package/dist/FindReplaceDialog-I4SZDSVP.cjs.map +0 -1
- package/dist/FootnotePropertiesDialog-73VT2ZVZ.cjs.map +0 -1
- package/dist/FootnotePropertiesDialog-ZM3EF3EF.js.map +0 -1
- package/dist/HyperlinkDialog-BA25XUT5.js.map +0 -1
- package/dist/HyperlinkDialog-V63LPOT2.cjs +0 -2
- package/dist/HyperlinkDialog-V63LPOT2.cjs.map +0 -1
- package/dist/ImagePositionDialog-AIAMKPFK.js.map +0 -1
- package/dist/ImagePositionDialog-KMK7ROV2.cjs.map +0 -1
- package/dist/ImagePropertiesDialog-ERFCUVCW.js.map +0 -1
- package/dist/ImagePropertiesDialog-USMMRK6X.cjs.map +0 -1
- package/dist/TablePropertiesDialog-72CIUAZT.cjs.map +0 -1
- package/dist/TablePropertiesDialog-EMUEVYB3.js.map +0 -1
- package/dist/chunk-2CHPKB5A.cjs +0 -112
- package/dist/chunk-2CHPKB5A.cjs.map +0 -1
- package/dist/chunk-2QOEHCBX.js.map +0 -1
- package/dist/chunk-4QT5LPBA.cjs.map +0 -1
- package/dist/chunk-5DYSI4O4.cjs +0 -60
- package/dist/chunk-5DYSI4O4.cjs.map +0 -1
- package/dist/chunk-5FJXHXFV.cjs +0 -2
- package/dist/chunk-5FJXHXFV.cjs.map +0 -1
- package/dist/chunk-6FEWNF6B.js +0 -4
- package/dist/chunk-6FEWNF6B.js.map +0 -1
- package/dist/chunk-6LF5HZCV.js +0 -10
- package/dist/chunk-6LF5HZCV.js.map +0 -1
- package/dist/chunk-7JSPKVOW.js.map +0 -1
- package/dist/chunk-C33XDRDJ.cjs +0 -28
- package/dist/chunk-C33XDRDJ.cjs.map +0 -1
- package/dist/chunk-CV5WFE7K.js.map +0 -1
- package/dist/chunk-CXJRNISO.js +0 -2
- package/dist/chunk-CXJRNISO.js.map +0 -1
- package/dist/chunk-DJAEBZ33.cjs.map +0 -1
- package/dist/chunk-DP6Q75ZD.js +0 -28
- package/dist/chunk-DP6Q75ZD.js.map +0 -1
- package/dist/chunk-FDANI5P4.cjs.map +0 -1
- package/dist/chunk-FGVGZLBL.js.map +0 -1
- package/dist/chunk-GJ4GKSDU.cjs +0 -2
- package/dist/chunk-GJ4GKSDU.cjs.map +0 -1
- package/dist/chunk-GWBTKVFD.cjs.map +0 -1
- package/dist/chunk-JOYPFQW2.js.map +0 -1
- package/dist/chunk-L54YNLSE.js +0 -2
- package/dist/chunk-L54YNLSE.js.map +0 -1
- package/dist/chunk-LPGMLJMO.js +0 -259
- package/dist/chunk-LPGMLJMO.js.map +0 -1
- package/dist/chunk-M2T6XKT5.js.map +0 -1
- package/dist/chunk-OHG7ROFC.js +0 -11
- package/dist/chunk-OHG7ROFC.js.map +0 -1
- package/dist/chunk-PANKMCFX.cjs +0 -4
- package/dist/chunk-PANKMCFX.cjs.map +0 -1
- package/dist/chunk-Q6HUGWO6.js.map +0 -1
- package/dist/chunk-QDV75OJ4.js +0 -112
- package/dist/chunk-QDV75OJ4.js.map +0 -1
- package/dist/chunk-QEBO3EQP.cjs.map +0 -1
- package/dist/chunk-QVIZ775M.cjs +0 -259
- package/dist/chunk-QVIZ775M.cjs.map +0 -1
- package/dist/chunk-RMUMR42R.cjs +0 -10
- package/dist/chunk-RMUMR42R.cjs.map +0 -1
- package/dist/chunk-S26DZVRQ.cjs.map +0 -1
- package/dist/chunk-T2HQYRA7.cjs.map +0 -1
- package/dist/chunk-ULXNEG66.js +0 -60
- package/dist/chunk-ULXNEG66.js.map +0 -1
- package/dist/chunk-WD2HTKRR.cjs.map +0 -1
- package/dist/chunk-XZNOV52K.cjs.map +0 -1
- package/dist/chunk-Y6VCTLCJ.js.map +0 -1
- package/dist/core-plugins-reexport.cjs.map +0 -1
- package/dist/core-plugins-reexport.js.map +0 -1
- package/dist/core-reexport.cjs.map +0 -1
- package/dist/core-reexport.js.map +0 -1
- package/dist/executor-K5RXUTTR.js +0 -2
- package/dist/executor-K5RXUTTR.js.map +0 -1
- package/dist/executor-XIPIU3H4.cjs +0 -2
- package/dist/executor-XIPIU3H4.cjs.map +0 -1
- package/dist/headless-reexport.cjs.map +0 -1
- package/dist/headless-reexport.js.map +0 -1
- package/dist/index.cjs.map +0 -1
- package/dist/index.css.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/mcp-reexport.cjs.map +0 -1
- package/dist/mcp-reexport.js.map +0 -1
- package/dist/processTemplate-G37IM66O.js.map +0 -1
- package/dist/processTemplate-RFBGVH7T.cjs +0 -2
- package/dist/processTemplate-RFBGVH7T.cjs.map +0 -1
- package/dist/react.cjs.map +0 -1
- package/dist/react.css.map +0 -1
- package/dist/react.js.map +0 -1
- package/dist/selectionRects-6DU7HN7E.js +0 -2
- package/dist/selectionRects-6DU7HN7E.js.map +0 -1
- package/dist/selectionRects-YZSC24ZP.cjs +0 -2
- package/dist/selectionRects-YZSC24ZP.cjs.map +0 -1
- package/dist/ui.cjs.map +0 -1
- package/dist/ui.js.map +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { D as Document, d as DocumentBody, a as Paragraph } from './agentApi-
|
|
1
|
+
import { D as Document, d as DocumentBody, a as Paragraph } from './agentApi-DfsWRyrP.cjs';
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
4
|
* DOCX Repacker - Repack modified document into valid DOCX
|
|
@@ -51,6 +51,15 @@ interface RepackOptions {
|
|
|
51
51
|
* @throws Error if document has no original buffer for round-trip
|
|
52
52
|
*/
|
|
53
53
|
declare function repackDocx(doc: Document, options?: RepackOptions): Promise<ArrayBuffer>;
|
|
54
|
+
/**
|
|
55
|
+
* Update multiple files in a DOCX buffer
|
|
56
|
+
*
|
|
57
|
+
* @param originalBuffer - Original DOCX as ArrayBuffer
|
|
58
|
+
* @param updates - Map of path -> content for files to update
|
|
59
|
+
* @param options - Optional repack options
|
|
60
|
+
* @returns Promise resolving to DOCX as ArrayBuffer
|
|
61
|
+
*/
|
|
62
|
+
declare function updateMultipleFiles(originalBuffer: ArrayBuffer, updates: Map<string, string | ArrayBuffer>, options?: RepackOptions): Promise<ArrayBuffer>;
|
|
54
63
|
/**
|
|
55
64
|
* Create a new DOCX from a Document (without requiring original buffer)
|
|
56
65
|
*
|
|
@@ -59,6 +68,28 @@ declare function repackDocx(doc: Document, options?: RepackOptions): Promise<Arr
|
|
|
59
68
|
*/
|
|
60
69
|
declare function createDocx(doc: Document): Promise<ArrayBuffer>;
|
|
61
70
|
|
|
71
|
+
interface PatchValidationResult {
|
|
72
|
+
safe: boolean;
|
|
73
|
+
reason?: string;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Validate that a selective patch can be safely applied.
|
|
77
|
+
*
|
|
78
|
+
* Checks:
|
|
79
|
+
* - All changed paraIds exist in original XML (exactly once)
|
|
80
|
+
* - All changed paraIds exist in serialized XML (exactly once)
|
|
81
|
+
* - Paragraph count matches between original and serialized
|
|
82
|
+
*/
|
|
83
|
+
declare function validatePatchSafety(originalXml: string, serializedXml: string, changedIds: Set<string>): PatchValidationResult;
|
|
84
|
+
/**
|
|
85
|
+
* Build a patched document.xml by splicing new paragraph XML into
|
|
86
|
+
* the original at the correct offsets. Only changed paragraphs
|
|
87
|
+
* are replaced; everything else is preserved byte-for-byte.
|
|
88
|
+
*
|
|
89
|
+
* Returns null if any step fails.
|
|
90
|
+
*/
|
|
91
|
+
declare function buildPatchedDocumentXml(originalXml: string, serializedXml: string, changedIds: Set<string>): string | null;
|
|
92
|
+
|
|
62
93
|
/**
|
|
63
94
|
* Variable Detector Utility
|
|
64
95
|
*
|
|
@@ -170,4 +201,4 @@ declare function removeVariables(text: string, placeholder?: string): string;
|
|
|
170
201
|
*/
|
|
171
202
|
declare function documentHasVariables(doc: Document): boolean;
|
|
172
203
|
|
|
173
|
-
export { type VariableDetectionResult as V, type VariableOccurrence as a,
|
|
204
|
+
export { type VariableDetectionResult as V, type VariableOccurrence as a, buildPatchedDocumentXml as b, createDocx as c, detectVariables as d, detectVariablesDetailed as e, detectVariablesInBody as f, detectVariablesInParagraph as g, documentHasVariables as h, extractVariablesFromText as i, formatVariable as j, hasTemplateVariables as k, isValidVariableName as l, repackDocx as m, replaceVariables as n, parseVariable as p, removeVariables as r, sanitizeVariableName as s, updateMultipleFiles as u, validatePatchSafety as v };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { D as Document, d as DocumentBody, a as Paragraph } from './agentApi-
|
|
1
|
+
import { D as Document, d as DocumentBody, a as Paragraph } from './agentApi-DfsWRyrP.js';
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
4
|
* DOCX Repacker - Repack modified document into valid DOCX
|
|
@@ -51,6 +51,15 @@ interface RepackOptions {
|
|
|
51
51
|
* @throws Error if document has no original buffer for round-trip
|
|
52
52
|
*/
|
|
53
53
|
declare function repackDocx(doc: Document, options?: RepackOptions): Promise<ArrayBuffer>;
|
|
54
|
+
/**
|
|
55
|
+
* Update multiple files in a DOCX buffer
|
|
56
|
+
*
|
|
57
|
+
* @param originalBuffer - Original DOCX as ArrayBuffer
|
|
58
|
+
* @param updates - Map of path -> content for files to update
|
|
59
|
+
* @param options - Optional repack options
|
|
60
|
+
* @returns Promise resolving to DOCX as ArrayBuffer
|
|
61
|
+
*/
|
|
62
|
+
declare function updateMultipleFiles(originalBuffer: ArrayBuffer, updates: Map<string, string | ArrayBuffer>, options?: RepackOptions): Promise<ArrayBuffer>;
|
|
54
63
|
/**
|
|
55
64
|
* Create a new DOCX from a Document (without requiring original buffer)
|
|
56
65
|
*
|
|
@@ -59,6 +68,28 @@ declare function repackDocx(doc: Document, options?: RepackOptions): Promise<Arr
|
|
|
59
68
|
*/
|
|
60
69
|
declare function createDocx(doc: Document): Promise<ArrayBuffer>;
|
|
61
70
|
|
|
71
|
+
interface PatchValidationResult {
|
|
72
|
+
safe: boolean;
|
|
73
|
+
reason?: string;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Validate that a selective patch can be safely applied.
|
|
77
|
+
*
|
|
78
|
+
* Checks:
|
|
79
|
+
* - All changed paraIds exist in original XML (exactly once)
|
|
80
|
+
* - All changed paraIds exist in serialized XML (exactly once)
|
|
81
|
+
* - Paragraph count matches between original and serialized
|
|
82
|
+
*/
|
|
83
|
+
declare function validatePatchSafety(originalXml: string, serializedXml: string, changedIds: Set<string>): PatchValidationResult;
|
|
84
|
+
/**
|
|
85
|
+
* Build a patched document.xml by splicing new paragraph XML into
|
|
86
|
+
* the original at the correct offsets. Only changed paragraphs
|
|
87
|
+
* are replaced; everything else is preserved byte-for-byte.
|
|
88
|
+
*
|
|
89
|
+
* Returns null if any step fails.
|
|
90
|
+
*/
|
|
91
|
+
declare function buildPatchedDocumentXml(originalXml: string, serializedXml: string, changedIds: Set<string>): string | null;
|
|
92
|
+
|
|
62
93
|
/**
|
|
63
94
|
* Variable Detector Utility
|
|
64
95
|
*
|
|
@@ -170,4 +201,4 @@ declare function removeVariables(text: string, placeholder?: string): string;
|
|
|
170
201
|
*/
|
|
171
202
|
declare function documentHasVariables(doc: Document): boolean;
|
|
172
203
|
|
|
173
|
-
export { type VariableDetectionResult as V, type VariableOccurrence as a,
|
|
204
|
+
export { type VariableDetectionResult as V, type VariableOccurrence as a, buildPatchedDocumentXml as b, createDocx as c, detectVariables as d, detectVariablesDetailed as e, detectVariablesInBody as f, detectVariablesInParagraph as g, documentHasVariables as h, extractVariablesFromText as i, formatVariable as j, hasTemplateVariables as k, isValidVariableName as l, repackDocx as m, replaceVariables as n, parseVariable as p, removeVariables as r, sanitizeVariableName as s, updateMultipleFiles as u, validatePatchSafety as v };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@eigenpal/docx-js-editor",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.21",
|
|
4
4
|
"description": "A browser-based DOCX template editor with variable insertion support",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.cjs",
|
|
@@ -75,6 +75,7 @@
|
|
|
75
75
|
"scripts": {
|
|
76
76
|
"build": "tsup && bun run build:css",
|
|
77
77
|
"build:css": "tailwindcss -c ../../tailwind.config.lib.js -i ./src/styles/editor.css -o ./dist/styles.css --minify",
|
|
78
|
+
"prepublishOnly": "sed -e 's|\\./assets/|https://raw.githubusercontent.com/eigenpal/docx-js-editor/main/assets/|g' -e 's|(packages/|(https://github.com/eigenpal/docx-js-editor/tree/main/packages/|g' -e 's|(docs/|(https://github.com/eigenpal/docx-js-editor/blob/main/docs/|g' -e 's|(examples/|(https://github.com/eigenpal/docx-js-editor/tree/main/examples/|g' ../../README.md > README.md",
|
|
78
79
|
"typecheck": "tsc --noEmit"
|
|
79
80
|
},
|
|
80
81
|
"peerDependencies": {
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":"","file":"FindReplaceDialog-AWQXKEUQ.js"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
'use strict';Object.defineProperty(exports,'__esModule',{value:true});var chunkDJAEBZ33_cjs=require('./chunk-DJAEBZ33.cjs');require('./chunk-QEBO3EQP.cjs');Object.defineProperty(exports,"FindReplaceDialog",{enumerable:true,get:function(){return chunkDJAEBZ33_cjs.n}});Object.defineProperty(exports,"createDefaultFindOptions",{enumerable:true,get:function(){return chunkDJAEBZ33_cjs.a}});Object.defineProperty(exports,"createSearchPattern",{enumerable:true,get:function(){return chunkDJAEBZ33_cjs.c}});Object.defineProperty(exports,"default",{enumerable:true,get:function(){return chunkDJAEBZ33_cjs.o}});Object.defineProperty(exports,"escapeRegexString",{enumerable:true,get:function(){return chunkDJAEBZ33_cjs.b}});Object.defineProperty(exports,"findAllMatches",{enumerable:true,get:function(){return chunkDJAEBZ33_cjs.d}});Object.defineProperty(exports,"findInDocument",{enumerable:true,get:function(){return chunkDJAEBZ33_cjs.j}});Object.defineProperty(exports,"findInParagraph",{enumerable:true,get:function(){return chunkDJAEBZ33_cjs.k}});Object.defineProperty(exports,"getDefaultHighlightOptions",{enumerable:true,get:function(){return chunkDJAEBZ33_cjs.i}});Object.defineProperty(exports,"getMatchCountText",{enumerable:true,get:function(){return chunkDJAEBZ33_cjs.g}});Object.defineProperty(exports,"isEmptySearch",{enumerable:true,get:function(){return chunkDJAEBZ33_cjs.h}});Object.defineProperty(exports,"replaceAllInContent",{enumerable:true,get:function(){return chunkDJAEBZ33_cjs.e}});Object.defineProperty(exports,"replaceFirstInContent",{enumerable:true,get:function(){return chunkDJAEBZ33_cjs.f}});Object.defineProperty(exports,"scrollToMatch",{enumerable:true,get:function(){return chunkDJAEBZ33_cjs.l}});Object.defineProperty(exports,"useFindReplace",{enumerable:true,get:function(){return chunkDJAEBZ33_cjs.m}});//# sourceMappingURL=FindReplaceDialog-I4SZDSVP.cjs.map
|
|
2
|
-
//# sourceMappingURL=FindReplaceDialog-I4SZDSVP.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":"","file":"FindReplaceDialog-I4SZDSVP.cjs"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/dialogs/FootnotePropertiesDialog.tsx"],"names":["overlayStyle","dialogStyle","sectionStyle","labelStyle","selectStyle","inputStyle","buttonRowStyle","buttonStyle","primaryButtonStyle","numberFormatOptions","FootnotePropertiesDialog","isOpen","onClose","onApply","footnotePr","endnotePr","fnPosition","setFnPosition","useState","fnNumFmt","setFnNumFmt","fnNumStart","setFnNumStart","fnRestart","setFnRestart","enPosition","setEnPosition","enNumFmt","setEnNumFmt","enNumStart","setEnNumStart","enRestart","setEnRestart","handleApply","useCallback","jsx","jsxs","o"],"mappings":"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","file":"FootnotePropertiesDialog-73VT2ZVZ.cjs","sourcesContent":["/**\n * Footnote & Endnote Properties Dialog\n *\n * Edits position, numbering format, start number, and restart rules.\n */\n\nimport React, { useState, useCallback } from 'react';\nimport type { CSSProperties } from 'react';\nimport type {\n FootnoteProperties,\n EndnoteProperties,\n FootnotePosition,\n EndnotePosition,\n NoteNumberRestart,\n NumberFormat,\n} from '@eigenpal/docx-core/types/document';\n\n// ============================================================================\n// TYPES\n// ============================================================================\n\nexport interface FootnotePropertiesDialogProps {\n isOpen: boolean;\n onClose: () => void;\n onApply: (footnoteProps: FootnoteProperties, endnoteProps: EndnoteProperties) => void;\n footnotePr?: FootnoteProperties;\n endnotePr?: EndnoteProperties;\n}\n\n// ============================================================================\n// STYLES\n// ============================================================================\n\nconst overlayStyle: CSSProperties = {\n position: 'fixed',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n backgroundColor: 'rgba(0, 0, 0, 0.5)',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n zIndex: 10000,\n};\n\nconst dialogStyle: CSSProperties = {\n backgroundColor: 'white',\n borderRadius: 8,\n boxShadow: '0 4px 20px rgba(0, 0, 0, 0.15)',\n padding: 24,\n minWidth: 400,\n maxWidth: 500,\n};\n\nconst sectionStyle: CSSProperties = {\n marginBottom: 16,\n padding: 12,\n border: '1px solid #e0e0e0',\n borderRadius: 4,\n};\n\nconst labelStyle: CSSProperties = {\n display: 'block',\n fontSize: 12,\n color: '#666',\n marginBottom: 4,\n};\n\nconst selectStyle: CSSProperties = {\n width: '100%',\n padding: '4px 8px',\n border: '1px solid #ccc',\n borderRadius: 4,\n fontSize: 13,\n marginBottom: 8,\n};\n\nconst inputStyle: CSSProperties = {\n width: 60,\n padding: '4px 8px',\n border: '1px solid #ccc',\n borderRadius: 4,\n fontSize: 13,\n marginBottom: 8,\n};\n\nconst buttonRowStyle: CSSProperties = {\n display: 'flex',\n justifyContent: 'flex-end',\n gap: 8,\n marginTop: 16,\n};\n\nconst buttonStyle: CSSProperties = {\n padding: '6px 16px',\n border: '1px solid #ccc',\n borderRadius: 4,\n cursor: 'pointer',\n fontSize: 13,\n backgroundColor: 'white',\n};\n\nconst primaryButtonStyle: CSSProperties = {\n ...buttonStyle,\n backgroundColor: '#2563eb',\n color: 'white',\n border: '1px solid #2563eb',\n};\n\n// ============================================================================\n// NUMBER FORMAT OPTIONS\n// ============================================================================\n\nconst numberFormatOptions: { value: NumberFormat; label: string }[] = [\n { value: 'decimal', label: '1, 2, 3, ...' },\n { value: 'lowerRoman', label: 'i, ii, iii, ...' },\n { value: 'upperRoman', label: 'I, II, III, ...' },\n { value: 'lowerLetter', label: 'a, b, c, ...' },\n { value: 'upperLetter', label: 'A, B, C, ...' },\n { value: 'chicago', label: '*, \\u2020, \\u2021, ...' },\n];\n\n// ============================================================================\n// COMPONENT\n// ============================================================================\n\nexport function FootnotePropertiesDialog({\n isOpen,\n onClose,\n onApply,\n footnotePr,\n endnotePr,\n}: FootnotePropertiesDialogProps): React.ReactElement | null {\n const [fnPosition, setFnPosition] = useState<FootnotePosition>(\n footnotePr?.position ?? 'pageBottom'\n );\n const [fnNumFmt, setFnNumFmt] = useState<NumberFormat>(footnotePr?.numFmt ?? 'decimal');\n const [fnNumStart, setFnNumStart] = useState<number>(footnotePr?.numStart ?? 1);\n const [fnRestart, setFnRestart] = useState<NoteNumberRestart>(\n footnotePr?.numRestart ?? 'continuous'\n );\n\n const [enPosition, setEnPosition] = useState<EndnotePosition>(endnotePr?.position ?? 'docEnd');\n const [enNumFmt, setEnNumFmt] = useState<NumberFormat>(endnotePr?.numFmt ?? 'lowerRoman');\n const [enNumStart, setEnNumStart] = useState<number>(endnotePr?.numStart ?? 1);\n const [enRestart, setEnRestart] = useState<NoteNumberRestart>(\n endnotePr?.numRestart ?? 'continuous'\n );\n\n const handleApply = useCallback(() => {\n onApply(\n { position: fnPosition, numFmt: fnNumFmt, numStart: fnNumStart, numRestart: fnRestart },\n { position: enPosition, numFmt: enNumFmt, numStart: enNumStart, numRestart: enRestart }\n );\n onClose();\n }, [\n fnPosition,\n fnNumFmt,\n fnNumStart,\n fnRestart,\n enPosition,\n enNumFmt,\n enNumStart,\n enRestart,\n onApply,\n onClose,\n ]);\n\n if (!isOpen) return null;\n\n return (\n <div style={overlayStyle} onClick={onClose}>\n <div style={dialogStyle} onClick={(e) => e.stopPropagation()}>\n <h3 style={{ margin: '0 0 16px', fontSize: 16 }}>Footnote & Endnote Properties</h3>\n\n {/* Footnote section */}\n <div style={sectionStyle}>\n <h4 style={{ margin: '0 0 8px', fontSize: 14 }}>Footnotes</h4>\n\n <label style={labelStyle}>Position</label>\n <select\n style={selectStyle}\n value={fnPosition}\n onChange={(e) => setFnPosition(e.target.value as FootnotePosition)}\n >\n <option value=\"pageBottom\">Bottom of page</option>\n <option value=\"beneathText\">Below text</option>\n </select>\n\n <label style={labelStyle}>Number format</label>\n <select\n style={selectStyle}\n value={fnNumFmt}\n onChange={(e) => setFnNumFmt(e.target.value as NumberFormat)}\n >\n {numberFormatOptions.map((o) => (\n <option key={o.value} value={o.value}>\n {o.label}\n </option>\n ))}\n </select>\n\n <div style={{ display: 'flex', gap: 12, alignItems: 'center' }}>\n <div>\n <label style={labelStyle}>Start at</label>\n <input\n type=\"number\"\n min={1}\n style={inputStyle}\n value={fnNumStart}\n onChange={(e) => setFnNumStart(parseInt(e.target.value, 10) || 1)}\n />\n </div>\n <div style={{ flex: 1 }}>\n <label style={labelStyle}>Numbering</label>\n <select\n style={selectStyle}\n value={fnRestart}\n onChange={(e) => setFnRestart(e.target.value as NoteNumberRestart)}\n >\n <option value=\"continuous\">Continuous</option>\n <option value=\"eachSect\">Restart each section</option>\n <option value=\"eachPage\">Restart each page</option>\n </select>\n </div>\n </div>\n </div>\n\n {/* Endnote section */}\n <div style={sectionStyle}>\n <h4 style={{ margin: '0 0 8px', fontSize: 14 }}>Endnotes</h4>\n\n <label style={labelStyle}>Position</label>\n <select\n style={selectStyle}\n value={enPosition}\n onChange={(e) => setEnPosition(e.target.value as EndnotePosition)}\n >\n <option value=\"docEnd\">End of document</option>\n <option value=\"sectEnd\">End of section</option>\n </select>\n\n <label style={labelStyle}>Number format</label>\n <select\n style={selectStyle}\n value={enNumFmt}\n onChange={(e) => setEnNumFmt(e.target.value as NumberFormat)}\n >\n {numberFormatOptions.map((o) => (\n <option key={o.value} value={o.value}>\n {o.label}\n </option>\n ))}\n </select>\n\n <div style={{ display: 'flex', gap: 12, alignItems: 'center' }}>\n <div>\n <label style={labelStyle}>Start at</label>\n <input\n type=\"number\"\n min={1}\n style={inputStyle}\n value={enNumStart}\n onChange={(e) => setEnNumStart(parseInt(e.target.value, 10) || 1)}\n />\n </div>\n <div style={{ flex: 1 }}>\n <label style={labelStyle}>Numbering</label>\n <select\n style={selectStyle}\n value={enRestart}\n onChange={(e) => setEnRestart(e.target.value as NoteNumberRestart)}\n >\n <option value=\"continuous\">Continuous</option>\n <option value=\"eachSect\">Restart each section</option>\n </select>\n </div>\n </div>\n </div>\n\n <div style={buttonRowStyle}>\n <button style={buttonStyle} onClick={onClose}>\n Cancel\n </button>\n <button style={primaryButtonStyle} onClick={handleApply}>\n Apply\n </button>\n </div>\n </div>\n </div>\n );\n}\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/dialogs/FootnotePropertiesDialog.tsx"],"names":["overlayStyle","dialogStyle","sectionStyle","labelStyle","selectStyle","inputStyle","buttonRowStyle","buttonStyle","primaryButtonStyle","numberFormatOptions","FootnotePropertiesDialog","isOpen","onClose","onApply","footnotePr","endnotePr","fnPosition","setFnPosition","useState","fnNumFmt","setFnNumFmt","fnNumStart","setFnNumStart","fnRestart","setFnRestart","enPosition","setEnPosition","enNumFmt","setEnNumFmt","enNumStart","setEnNumStart","enRestart","setEnRestart","handleApply","useCallback","jsx","jsxs","o"],"mappings":"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","file":"FootnotePropertiesDialog-ZM3EF3EF.js","sourcesContent":["/**\n * Footnote & Endnote Properties Dialog\n *\n * Edits position, numbering format, start number, and restart rules.\n */\n\nimport React, { useState, useCallback } from 'react';\nimport type { CSSProperties } from 'react';\nimport type {\n FootnoteProperties,\n EndnoteProperties,\n FootnotePosition,\n EndnotePosition,\n NoteNumberRestart,\n NumberFormat,\n} from '@eigenpal/docx-core/types/document';\n\n// ============================================================================\n// TYPES\n// ============================================================================\n\nexport interface FootnotePropertiesDialogProps {\n isOpen: boolean;\n onClose: () => void;\n onApply: (footnoteProps: FootnoteProperties, endnoteProps: EndnoteProperties) => void;\n footnotePr?: FootnoteProperties;\n endnotePr?: EndnoteProperties;\n}\n\n// ============================================================================\n// STYLES\n// ============================================================================\n\nconst overlayStyle: CSSProperties = {\n position: 'fixed',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n backgroundColor: 'rgba(0, 0, 0, 0.5)',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n zIndex: 10000,\n};\n\nconst dialogStyle: CSSProperties = {\n backgroundColor: 'white',\n borderRadius: 8,\n boxShadow: '0 4px 20px rgba(0, 0, 0, 0.15)',\n padding: 24,\n minWidth: 400,\n maxWidth: 500,\n};\n\nconst sectionStyle: CSSProperties = {\n marginBottom: 16,\n padding: 12,\n border: '1px solid #e0e0e0',\n borderRadius: 4,\n};\n\nconst labelStyle: CSSProperties = {\n display: 'block',\n fontSize: 12,\n color: '#666',\n marginBottom: 4,\n};\n\nconst selectStyle: CSSProperties = {\n width: '100%',\n padding: '4px 8px',\n border: '1px solid #ccc',\n borderRadius: 4,\n fontSize: 13,\n marginBottom: 8,\n};\n\nconst inputStyle: CSSProperties = {\n width: 60,\n padding: '4px 8px',\n border: '1px solid #ccc',\n borderRadius: 4,\n fontSize: 13,\n marginBottom: 8,\n};\n\nconst buttonRowStyle: CSSProperties = {\n display: 'flex',\n justifyContent: 'flex-end',\n gap: 8,\n marginTop: 16,\n};\n\nconst buttonStyle: CSSProperties = {\n padding: '6px 16px',\n border: '1px solid #ccc',\n borderRadius: 4,\n cursor: 'pointer',\n fontSize: 13,\n backgroundColor: 'white',\n};\n\nconst primaryButtonStyle: CSSProperties = {\n ...buttonStyle,\n backgroundColor: '#2563eb',\n color: 'white',\n border: '1px solid #2563eb',\n};\n\n// ============================================================================\n// NUMBER FORMAT OPTIONS\n// ============================================================================\n\nconst numberFormatOptions: { value: NumberFormat; label: string }[] = [\n { value: 'decimal', label: '1, 2, 3, ...' },\n { value: 'lowerRoman', label: 'i, ii, iii, ...' },\n { value: 'upperRoman', label: 'I, II, III, ...' },\n { value: 'lowerLetter', label: 'a, b, c, ...' },\n { value: 'upperLetter', label: 'A, B, C, ...' },\n { value: 'chicago', label: '*, \\u2020, \\u2021, ...' },\n];\n\n// ============================================================================\n// COMPONENT\n// ============================================================================\n\nexport function FootnotePropertiesDialog({\n isOpen,\n onClose,\n onApply,\n footnotePr,\n endnotePr,\n}: FootnotePropertiesDialogProps): React.ReactElement | null {\n const [fnPosition, setFnPosition] = useState<FootnotePosition>(\n footnotePr?.position ?? 'pageBottom'\n );\n const [fnNumFmt, setFnNumFmt] = useState<NumberFormat>(footnotePr?.numFmt ?? 'decimal');\n const [fnNumStart, setFnNumStart] = useState<number>(footnotePr?.numStart ?? 1);\n const [fnRestart, setFnRestart] = useState<NoteNumberRestart>(\n footnotePr?.numRestart ?? 'continuous'\n );\n\n const [enPosition, setEnPosition] = useState<EndnotePosition>(endnotePr?.position ?? 'docEnd');\n const [enNumFmt, setEnNumFmt] = useState<NumberFormat>(endnotePr?.numFmt ?? 'lowerRoman');\n const [enNumStart, setEnNumStart] = useState<number>(endnotePr?.numStart ?? 1);\n const [enRestart, setEnRestart] = useState<NoteNumberRestart>(\n endnotePr?.numRestart ?? 'continuous'\n );\n\n const handleApply = useCallback(() => {\n onApply(\n { position: fnPosition, numFmt: fnNumFmt, numStart: fnNumStart, numRestart: fnRestart },\n { position: enPosition, numFmt: enNumFmt, numStart: enNumStart, numRestart: enRestart }\n );\n onClose();\n }, [\n fnPosition,\n fnNumFmt,\n fnNumStart,\n fnRestart,\n enPosition,\n enNumFmt,\n enNumStart,\n enRestart,\n onApply,\n onClose,\n ]);\n\n if (!isOpen) return null;\n\n return (\n <div style={overlayStyle} onClick={onClose}>\n <div style={dialogStyle} onClick={(e) => e.stopPropagation()}>\n <h3 style={{ margin: '0 0 16px', fontSize: 16 }}>Footnote & Endnote Properties</h3>\n\n {/* Footnote section */}\n <div style={sectionStyle}>\n <h4 style={{ margin: '0 0 8px', fontSize: 14 }}>Footnotes</h4>\n\n <label style={labelStyle}>Position</label>\n <select\n style={selectStyle}\n value={fnPosition}\n onChange={(e) => setFnPosition(e.target.value as FootnotePosition)}\n >\n <option value=\"pageBottom\">Bottom of page</option>\n <option value=\"beneathText\">Below text</option>\n </select>\n\n <label style={labelStyle}>Number format</label>\n <select\n style={selectStyle}\n value={fnNumFmt}\n onChange={(e) => setFnNumFmt(e.target.value as NumberFormat)}\n >\n {numberFormatOptions.map((o) => (\n <option key={o.value} value={o.value}>\n {o.label}\n </option>\n ))}\n </select>\n\n <div style={{ display: 'flex', gap: 12, alignItems: 'center' }}>\n <div>\n <label style={labelStyle}>Start at</label>\n <input\n type=\"number\"\n min={1}\n style={inputStyle}\n value={fnNumStart}\n onChange={(e) => setFnNumStart(parseInt(e.target.value, 10) || 1)}\n />\n </div>\n <div style={{ flex: 1 }}>\n <label style={labelStyle}>Numbering</label>\n <select\n style={selectStyle}\n value={fnRestart}\n onChange={(e) => setFnRestart(e.target.value as NoteNumberRestart)}\n >\n <option value=\"continuous\">Continuous</option>\n <option value=\"eachSect\">Restart each section</option>\n <option value=\"eachPage\">Restart each page</option>\n </select>\n </div>\n </div>\n </div>\n\n {/* Endnote section */}\n <div style={sectionStyle}>\n <h4 style={{ margin: '0 0 8px', fontSize: 14 }}>Endnotes</h4>\n\n <label style={labelStyle}>Position</label>\n <select\n style={selectStyle}\n value={enPosition}\n onChange={(e) => setEnPosition(e.target.value as EndnotePosition)}\n >\n <option value=\"docEnd\">End of document</option>\n <option value=\"sectEnd\">End of section</option>\n </select>\n\n <label style={labelStyle}>Number format</label>\n <select\n style={selectStyle}\n value={enNumFmt}\n onChange={(e) => setEnNumFmt(e.target.value as NumberFormat)}\n >\n {numberFormatOptions.map((o) => (\n <option key={o.value} value={o.value}>\n {o.label}\n </option>\n ))}\n </select>\n\n <div style={{ display: 'flex', gap: 12, alignItems: 'center' }}>\n <div>\n <label style={labelStyle}>Start at</label>\n <input\n type=\"number\"\n min={1}\n style={inputStyle}\n value={enNumStart}\n onChange={(e) => setEnNumStart(parseInt(e.target.value, 10) || 1)}\n />\n </div>\n <div style={{ flex: 1 }}>\n <label style={labelStyle}>Numbering</label>\n <select\n style={selectStyle}\n value={enRestart}\n onChange={(e) => setEnRestart(e.target.value as NoteNumberRestart)}\n >\n <option value=\"continuous\">Continuous</option>\n <option value=\"eachSect\">Restart each section</option>\n </select>\n </div>\n </div>\n </div>\n\n <div style={buttonRowStyle}>\n <button style={buttonStyle} onClick={onClose}>\n Cancel\n </button>\n <button style={primaryButtonStyle} onClick={handleApply}>\n Apply\n </button>\n </div>\n </div>\n </div>\n );\n}\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":"","file":"HyperlinkDialog-BA25XUT5.js"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
'use strict';Object.defineProperty(exports,'__esModule',{value:true});var chunkS26DZVRQ_cjs=require('./chunk-S26DZVRQ.cjs');require('./chunk-QEBO3EQP.cjs');Object.defineProperty(exports,"HyperlinkDialog",{enumerable:true,get:function(){return chunkS26DZVRQ_cjs.d}});Object.defineProperty(exports,"createBookmarkLinkData",{enumerable:true,get:function(){return chunkS26DZVRQ_cjs.f}});Object.defineProperty(exports,"createHyperlinkData",{enumerable:true,get:function(){return chunkS26DZVRQ_cjs.e}});Object.defineProperty(exports,"default",{enumerable:true,get:function(){return chunkS26DZVRQ_cjs.n}});Object.defineProperty(exports,"emailToMailto",{enumerable:true,get:function(){return chunkS26DZVRQ_cjs.j}});Object.defineProperty(exports,"extractBookmarksForDialog",{enumerable:true,get:function(){return chunkS26DZVRQ_cjs.l}});Object.defineProperty(exports,"getDisplayText",{enumerable:true,get:function(){return chunkS26DZVRQ_cjs.i}});Object.defineProperty(exports,"getUrlType",{enumerable:true,get:function(){return chunkS26DZVRQ_cjs.c}});Object.defineProperty(exports,"isBookmarkHyperlinkData",{enumerable:true,get:function(){return chunkS26DZVRQ_cjs.h}});Object.defineProperty(exports,"isExternalHyperlinkData",{enumerable:true,get:function(){return chunkS26DZVRQ_cjs.g}});Object.defineProperty(exports,"isValidUrl",{enumerable:true,get:function(){return chunkS26DZVRQ_cjs.a}});Object.defineProperty(exports,"normalizeUrl",{enumerable:true,get:function(){return chunkS26DZVRQ_cjs.b}});Object.defineProperty(exports,"phoneToTel",{enumerable:true,get:function(){return chunkS26DZVRQ_cjs.k}});Object.defineProperty(exports,"useHyperlinkDialog",{enumerable:true,get:function(){return chunkS26DZVRQ_cjs.m}});//# sourceMappingURL=HyperlinkDialog-V63LPOT2.cjs.map
|
|
2
|
-
//# sourceMappingURL=HyperlinkDialog-V63LPOT2.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":"","file":"HyperlinkDialog-V63LPOT2.cjs"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/dialogs/ImagePositionDialog.tsx"],"names":["overlayStyle","dialogStyle","headerStyle","bodyStyle","sectionStyle","sectionLabelStyle","rowStyle","labelStyle","inputStyle","selectStyle","footerStyle","btnStyle","ImagePositionDialog","isOpen","onClose","onApply","currentData","hMode","setHMode","useState","hAlign","setHAlign","hRelativeTo","setHRelativeTo","hOffset","setHOffset","vMode","setVMode","vAlign","setVAlign","vRelativeTo","setVRelativeTo","vOffset","setVOffset","distTop","setDistTop","distBottom","setDistBottom","distLeft","setDistLeft","distRight","setDistRight","useEffect","h","v","handleApply","useCallback","data","handleKeyDown","jsx","jsxs"],"mappings":"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","file":"ImagePositionDialog-AIAMKPFK.js","sourcesContent":["/**\n * Image Position Dialog\n *\n * Modal for editing image positioning settings:\n * - Horizontal: alignment or offset, relative to page/column/margin/paragraph\n * - Vertical: alignment or offset, relative to page/margin/paragraph/line\n * - Distance from text (top/bottom/left/right)\n */\n\nimport React, { useState, useCallback, useEffect } from 'react';\nimport type { CSSProperties } from 'react';\n\n// ============================================================================\n// TYPES\n// ============================================================================\n\nexport interface ImagePositionData {\n horizontal?: {\n relativeTo?: string;\n posOffset?: number;\n align?: string;\n };\n vertical?: {\n relativeTo?: string;\n posOffset?: number;\n align?: string;\n };\n distTop?: number;\n distBottom?: number;\n distLeft?: number;\n distRight?: number;\n}\n\nexport interface ImagePositionDialogProps {\n isOpen: boolean;\n onClose: () => void;\n onApply: (data: ImagePositionData) => void;\n currentData?: ImagePositionData;\n}\n\n// ============================================================================\n// STYLES\n// ============================================================================\n\nconst overlayStyle: CSSProperties = {\n position: 'fixed',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n backgroundColor: 'rgba(0, 0, 0, 0.5)',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n zIndex: 10000,\n};\n\nconst dialogStyle: CSSProperties = {\n backgroundColor: 'white',\n borderRadius: 8,\n boxShadow: '0 4px 20px rgba(0, 0, 0, 0.15)',\n minWidth: 400,\n maxWidth: 480,\n width: '100%',\n margin: 20,\n};\n\nconst headerStyle: CSSProperties = {\n padding: '16px 20px 12px',\n borderBottom: '1px solid var(--doc-border)',\n fontSize: 16,\n fontWeight: 600,\n};\n\nconst bodyStyle: CSSProperties = {\n padding: '16px 20px',\n display: 'flex',\n flexDirection: 'column',\n gap: 16,\n};\n\nconst sectionStyle: CSSProperties = {\n display: 'flex',\n flexDirection: 'column',\n gap: 8,\n};\n\nconst sectionLabelStyle: CSSProperties = {\n fontSize: 13,\n fontWeight: 600,\n color: 'var(--doc-text)',\n};\n\nconst rowStyle: CSSProperties = {\n display: 'flex',\n alignItems: 'center',\n gap: 8,\n};\n\nconst labelStyle: CSSProperties = {\n width: 75,\n fontSize: 12,\n color: 'var(--doc-text-muted)',\n};\n\nconst inputStyle: CSSProperties = {\n flex: 1,\n padding: '4px 6px',\n border: '1px solid var(--doc-border)',\n borderRadius: 4,\n fontSize: 12,\n};\n\nconst selectStyle: CSSProperties = {\n ...inputStyle,\n};\n\nconst footerStyle: CSSProperties = {\n padding: '12px 20px 16px',\n borderTop: '1px solid var(--doc-border)',\n display: 'flex',\n justifyContent: 'flex-end',\n gap: 8,\n};\n\nconst btnStyle: CSSProperties = {\n padding: '6px 16px',\n fontSize: 13,\n border: '1px solid var(--doc-border)',\n borderRadius: 4,\n cursor: 'pointer',\n};\n\n// ============================================================================\n// COMPONENT\n// ============================================================================\n\nexport function ImagePositionDialog({\n isOpen,\n onClose,\n onApply,\n currentData,\n}: ImagePositionDialogProps): React.ReactElement | null {\n const [hMode, setHMode] = useState<'align' | 'offset'>('align');\n const [hAlign, setHAlign] = useState('center');\n const [hRelativeTo, setHRelativeTo] = useState('column');\n const [hOffset, setHOffset] = useState(0);\n\n const [vMode, setVMode] = useState<'align' | 'offset'>('align');\n const [vAlign, setVAlign] = useState('top');\n const [vRelativeTo, setVRelativeTo] = useState('paragraph');\n const [vOffset, setVOffset] = useState(0);\n\n const [distTop, setDistTop] = useState(0);\n const [distBottom, setDistBottom] = useState(0);\n const [distLeft, setDistLeft] = useState(0);\n const [distRight, setDistRight] = useState(0);\n\n useEffect(() => {\n if (!isOpen) return;\n const h = currentData?.horizontal;\n const v = currentData?.vertical;\n if (h?.align) {\n setHMode('align');\n setHAlign(h.align);\n } else if (h?.posOffset != null) {\n setHMode('offset');\n setHOffset(h.posOffset);\n }\n if (h?.relativeTo) setHRelativeTo(h.relativeTo);\n\n if (v?.align) {\n setVMode('align');\n setVAlign(v.align);\n } else if (v?.posOffset != null) {\n setVMode('offset');\n setVOffset(v.posOffset);\n }\n if (v?.relativeTo) setVRelativeTo(v.relativeTo);\n\n setDistTop(currentData?.distTop ?? 0);\n setDistBottom(currentData?.distBottom ?? 0);\n setDistLeft(currentData?.distLeft ?? 0);\n setDistRight(currentData?.distRight ?? 0);\n }, [isOpen, currentData]);\n\n const handleApply = useCallback(() => {\n const data: ImagePositionData = {};\n data.horizontal = {\n relativeTo: hRelativeTo,\n ...(hMode === 'align' ? { align: hAlign } : { posOffset: hOffset }),\n };\n data.vertical = {\n relativeTo: vRelativeTo,\n ...(vMode === 'align' ? { align: vAlign } : { posOffset: vOffset }),\n };\n data.distTop = distTop;\n data.distBottom = distBottom;\n data.distLeft = distLeft;\n data.distRight = distRight;\n onApply(data);\n onClose();\n }, [\n hMode,\n hAlign,\n hRelativeTo,\n hOffset,\n vMode,\n vAlign,\n vRelativeTo,\n vOffset,\n distTop,\n distBottom,\n distLeft,\n distRight,\n onApply,\n onClose,\n ]);\n\n const handleKeyDown = useCallback(\n (e: React.KeyboardEvent) => {\n if (e.key === 'Escape') onClose();\n if (e.key === 'Enter') handleApply();\n },\n [onClose, handleApply]\n );\n\n if (!isOpen) return null;\n\n return (\n <div style={overlayStyle} onClick={onClose} onKeyDown={handleKeyDown}>\n <div\n style={dialogStyle}\n onClick={(e) => e.stopPropagation()}\n role=\"dialog\"\n aria-label=\"Image position\"\n >\n <div style={headerStyle}>Image Position</div>\n\n <div style={bodyStyle}>\n {/* Horizontal positioning */}\n <div style={sectionStyle}>\n <div style={sectionLabelStyle}>Horizontal</div>\n <div style={rowStyle}>\n <label style={labelStyle}>Position</label>\n <select\n style={selectStyle}\n value={hMode}\n onChange={(e) => setHMode(e.target.value as 'align' | 'offset')}\n >\n <option value=\"align\">Alignment</option>\n <option value=\"offset\">Offset</option>\n </select>\n </div>\n {hMode === 'align' ? (\n <div style={rowStyle}>\n <label style={labelStyle}>Align</label>\n <select\n style={selectStyle}\n value={hAlign}\n onChange={(e) => setHAlign(e.target.value)}\n >\n <option value=\"left\">Left</option>\n <option value=\"center\">Center</option>\n <option value=\"right\">Right</option>\n </select>\n </div>\n ) : (\n <div style={rowStyle}>\n <label style={labelStyle}>Offset (px)</label>\n <input\n type=\"number\"\n style={inputStyle}\n value={hOffset}\n onChange={(e) => setHOffset(Number(e.target.value) || 0)}\n />\n </div>\n )}\n <div style={rowStyle}>\n <label style={labelStyle}>Relative to</label>\n <select\n style={selectStyle}\n value={hRelativeTo}\n onChange={(e) => setHRelativeTo(e.target.value)}\n >\n <option value=\"page\">Page</option>\n <option value=\"column\">Column</option>\n <option value=\"margin\">Margin</option>\n <option value=\"character\">Character</option>\n </select>\n </div>\n </div>\n\n {/* Vertical positioning */}\n <div style={sectionStyle}>\n <div style={sectionLabelStyle}>Vertical</div>\n <div style={rowStyle}>\n <label style={labelStyle}>Position</label>\n <select\n style={selectStyle}\n value={vMode}\n onChange={(e) => setVMode(e.target.value as 'align' | 'offset')}\n >\n <option value=\"align\">Alignment</option>\n <option value=\"offset\">Offset</option>\n </select>\n </div>\n {vMode === 'align' ? (\n <div style={rowStyle}>\n <label style={labelStyle}>Align</label>\n <select\n style={selectStyle}\n value={vAlign}\n onChange={(e) => setVAlign(e.target.value)}\n >\n <option value=\"top\">Top</option>\n <option value=\"center\">Center</option>\n <option value=\"bottom\">Bottom</option>\n </select>\n </div>\n ) : (\n <div style={rowStyle}>\n <label style={labelStyle}>Offset (px)</label>\n <input\n type=\"number\"\n style={inputStyle}\n value={vOffset}\n onChange={(e) => setVOffset(Number(e.target.value) || 0)}\n />\n </div>\n )}\n <div style={rowStyle}>\n <label style={labelStyle}>Relative to</label>\n <select\n style={selectStyle}\n value={vRelativeTo}\n onChange={(e) => setVRelativeTo(e.target.value)}\n >\n <option value=\"page\">Page</option>\n <option value=\"margin\">Margin</option>\n <option value=\"paragraph\">Paragraph</option>\n <option value=\"line\">Line</option>\n </select>\n </div>\n </div>\n\n {/* Distance from text */}\n <div style={sectionStyle}>\n <div style={sectionLabelStyle}>Distance from text (px)</div>\n <div style={{ display: 'grid', gridTemplateColumns: '1fr 1fr', gap: 8 }}>\n <div style={rowStyle}>\n <label style={{ ...labelStyle, width: 45 }}>Top</label>\n <input\n type=\"number\"\n style={inputStyle}\n min={0}\n value={distTop}\n onChange={(e) => setDistTop(Number(e.target.value) || 0)}\n />\n </div>\n <div style={rowStyle}>\n <label style={{ ...labelStyle, width: 45 }}>Bottom</label>\n <input\n type=\"number\"\n style={inputStyle}\n min={0}\n value={distBottom}\n onChange={(e) => setDistBottom(Number(e.target.value) || 0)}\n />\n </div>\n <div style={rowStyle}>\n <label style={{ ...labelStyle, width: 45 }}>Left</label>\n <input\n type=\"number\"\n style={inputStyle}\n min={0}\n value={distLeft}\n onChange={(e) => setDistLeft(Number(e.target.value) || 0)}\n />\n </div>\n <div style={rowStyle}>\n <label style={{ ...labelStyle, width: 45 }}>Right</label>\n <input\n type=\"number\"\n style={inputStyle}\n min={0}\n value={distRight}\n onChange={(e) => setDistRight(Number(e.target.value) || 0)}\n />\n </div>\n </div>\n </div>\n </div>\n\n <div style={footerStyle}>\n <button type=\"button\" style={btnStyle} onClick={onClose}>\n Cancel\n </button>\n <button\n type=\"button\"\n style={{\n ...btnStyle,\n backgroundColor: 'var(--doc-primary)',\n color: 'white',\n borderColor: 'var(--doc-primary)',\n }}\n onClick={handleApply}\n >\n Apply\n </button>\n </div>\n </div>\n </div>\n );\n}\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/dialogs/ImagePositionDialog.tsx"],"names":["overlayStyle","dialogStyle","headerStyle","bodyStyle","sectionStyle","sectionLabelStyle","rowStyle","labelStyle","inputStyle","selectStyle","footerStyle","btnStyle","ImagePositionDialog","isOpen","onClose","onApply","currentData","hMode","setHMode","useState","hAlign","setHAlign","hRelativeTo","setHRelativeTo","hOffset","setHOffset","vMode","setVMode","vAlign","setVAlign","vRelativeTo","setVRelativeTo","vOffset","setVOffset","distTop","setDistTop","distBottom","setDistBottom","distLeft","setDistLeft","distRight","setDistRight","useEffect","h","v","handleApply","useCallback","data","handleKeyDown","jsx","jsxs"],"mappings":"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","file":"ImagePositionDialog-KMK7ROV2.cjs","sourcesContent":["/**\n * Image Position Dialog\n *\n * Modal for editing image positioning settings:\n * - Horizontal: alignment or offset, relative to page/column/margin/paragraph\n * - Vertical: alignment or offset, relative to page/margin/paragraph/line\n * - Distance from text (top/bottom/left/right)\n */\n\nimport React, { useState, useCallback, useEffect } from 'react';\nimport type { CSSProperties } from 'react';\n\n// ============================================================================\n// TYPES\n// ============================================================================\n\nexport interface ImagePositionData {\n horizontal?: {\n relativeTo?: string;\n posOffset?: number;\n align?: string;\n };\n vertical?: {\n relativeTo?: string;\n posOffset?: number;\n align?: string;\n };\n distTop?: number;\n distBottom?: number;\n distLeft?: number;\n distRight?: number;\n}\n\nexport interface ImagePositionDialogProps {\n isOpen: boolean;\n onClose: () => void;\n onApply: (data: ImagePositionData) => void;\n currentData?: ImagePositionData;\n}\n\n// ============================================================================\n// STYLES\n// ============================================================================\n\nconst overlayStyle: CSSProperties = {\n position: 'fixed',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n backgroundColor: 'rgba(0, 0, 0, 0.5)',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n zIndex: 10000,\n};\n\nconst dialogStyle: CSSProperties = {\n backgroundColor: 'white',\n borderRadius: 8,\n boxShadow: '0 4px 20px rgba(0, 0, 0, 0.15)',\n minWidth: 400,\n maxWidth: 480,\n width: '100%',\n margin: 20,\n};\n\nconst headerStyle: CSSProperties = {\n padding: '16px 20px 12px',\n borderBottom: '1px solid var(--doc-border)',\n fontSize: 16,\n fontWeight: 600,\n};\n\nconst bodyStyle: CSSProperties = {\n padding: '16px 20px',\n display: 'flex',\n flexDirection: 'column',\n gap: 16,\n};\n\nconst sectionStyle: CSSProperties = {\n display: 'flex',\n flexDirection: 'column',\n gap: 8,\n};\n\nconst sectionLabelStyle: CSSProperties = {\n fontSize: 13,\n fontWeight: 600,\n color: 'var(--doc-text)',\n};\n\nconst rowStyle: CSSProperties = {\n display: 'flex',\n alignItems: 'center',\n gap: 8,\n};\n\nconst labelStyle: CSSProperties = {\n width: 75,\n fontSize: 12,\n color: 'var(--doc-text-muted)',\n};\n\nconst inputStyle: CSSProperties = {\n flex: 1,\n padding: '4px 6px',\n border: '1px solid var(--doc-border)',\n borderRadius: 4,\n fontSize: 12,\n};\n\nconst selectStyle: CSSProperties = {\n ...inputStyle,\n};\n\nconst footerStyle: CSSProperties = {\n padding: '12px 20px 16px',\n borderTop: '1px solid var(--doc-border)',\n display: 'flex',\n justifyContent: 'flex-end',\n gap: 8,\n};\n\nconst btnStyle: CSSProperties = {\n padding: '6px 16px',\n fontSize: 13,\n border: '1px solid var(--doc-border)',\n borderRadius: 4,\n cursor: 'pointer',\n};\n\n// ============================================================================\n// COMPONENT\n// ============================================================================\n\nexport function ImagePositionDialog({\n isOpen,\n onClose,\n onApply,\n currentData,\n}: ImagePositionDialogProps): React.ReactElement | null {\n const [hMode, setHMode] = useState<'align' | 'offset'>('align');\n const [hAlign, setHAlign] = useState('center');\n const [hRelativeTo, setHRelativeTo] = useState('column');\n const [hOffset, setHOffset] = useState(0);\n\n const [vMode, setVMode] = useState<'align' | 'offset'>('align');\n const [vAlign, setVAlign] = useState('top');\n const [vRelativeTo, setVRelativeTo] = useState('paragraph');\n const [vOffset, setVOffset] = useState(0);\n\n const [distTop, setDistTop] = useState(0);\n const [distBottom, setDistBottom] = useState(0);\n const [distLeft, setDistLeft] = useState(0);\n const [distRight, setDistRight] = useState(0);\n\n useEffect(() => {\n if (!isOpen) return;\n const h = currentData?.horizontal;\n const v = currentData?.vertical;\n if (h?.align) {\n setHMode('align');\n setHAlign(h.align);\n } else if (h?.posOffset != null) {\n setHMode('offset');\n setHOffset(h.posOffset);\n }\n if (h?.relativeTo) setHRelativeTo(h.relativeTo);\n\n if (v?.align) {\n setVMode('align');\n setVAlign(v.align);\n } else if (v?.posOffset != null) {\n setVMode('offset');\n setVOffset(v.posOffset);\n }\n if (v?.relativeTo) setVRelativeTo(v.relativeTo);\n\n setDistTop(currentData?.distTop ?? 0);\n setDistBottom(currentData?.distBottom ?? 0);\n setDistLeft(currentData?.distLeft ?? 0);\n setDistRight(currentData?.distRight ?? 0);\n }, [isOpen, currentData]);\n\n const handleApply = useCallback(() => {\n const data: ImagePositionData = {};\n data.horizontal = {\n relativeTo: hRelativeTo,\n ...(hMode === 'align' ? { align: hAlign } : { posOffset: hOffset }),\n };\n data.vertical = {\n relativeTo: vRelativeTo,\n ...(vMode === 'align' ? { align: vAlign } : { posOffset: vOffset }),\n };\n data.distTop = distTop;\n data.distBottom = distBottom;\n data.distLeft = distLeft;\n data.distRight = distRight;\n onApply(data);\n onClose();\n }, [\n hMode,\n hAlign,\n hRelativeTo,\n hOffset,\n vMode,\n vAlign,\n vRelativeTo,\n vOffset,\n distTop,\n distBottom,\n distLeft,\n distRight,\n onApply,\n onClose,\n ]);\n\n const handleKeyDown = useCallback(\n (e: React.KeyboardEvent) => {\n if (e.key === 'Escape') onClose();\n if (e.key === 'Enter') handleApply();\n },\n [onClose, handleApply]\n );\n\n if (!isOpen) return null;\n\n return (\n <div style={overlayStyle} onClick={onClose} onKeyDown={handleKeyDown}>\n <div\n style={dialogStyle}\n onClick={(e) => e.stopPropagation()}\n role=\"dialog\"\n aria-label=\"Image position\"\n >\n <div style={headerStyle}>Image Position</div>\n\n <div style={bodyStyle}>\n {/* Horizontal positioning */}\n <div style={sectionStyle}>\n <div style={sectionLabelStyle}>Horizontal</div>\n <div style={rowStyle}>\n <label style={labelStyle}>Position</label>\n <select\n style={selectStyle}\n value={hMode}\n onChange={(e) => setHMode(e.target.value as 'align' | 'offset')}\n >\n <option value=\"align\">Alignment</option>\n <option value=\"offset\">Offset</option>\n </select>\n </div>\n {hMode === 'align' ? (\n <div style={rowStyle}>\n <label style={labelStyle}>Align</label>\n <select\n style={selectStyle}\n value={hAlign}\n onChange={(e) => setHAlign(e.target.value)}\n >\n <option value=\"left\">Left</option>\n <option value=\"center\">Center</option>\n <option value=\"right\">Right</option>\n </select>\n </div>\n ) : (\n <div style={rowStyle}>\n <label style={labelStyle}>Offset (px)</label>\n <input\n type=\"number\"\n style={inputStyle}\n value={hOffset}\n onChange={(e) => setHOffset(Number(e.target.value) || 0)}\n />\n </div>\n )}\n <div style={rowStyle}>\n <label style={labelStyle}>Relative to</label>\n <select\n style={selectStyle}\n value={hRelativeTo}\n onChange={(e) => setHRelativeTo(e.target.value)}\n >\n <option value=\"page\">Page</option>\n <option value=\"column\">Column</option>\n <option value=\"margin\">Margin</option>\n <option value=\"character\">Character</option>\n </select>\n </div>\n </div>\n\n {/* Vertical positioning */}\n <div style={sectionStyle}>\n <div style={sectionLabelStyle}>Vertical</div>\n <div style={rowStyle}>\n <label style={labelStyle}>Position</label>\n <select\n style={selectStyle}\n value={vMode}\n onChange={(e) => setVMode(e.target.value as 'align' | 'offset')}\n >\n <option value=\"align\">Alignment</option>\n <option value=\"offset\">Offset</option>\n </select>\n </div>\n {vMode === 'align' ? (\n <div style={rowStyle}>\n <label style={labelStyle}>Align</label>\n <select\n style={selectStyle}\n value={vAlign}\n onChange={(e) => setVAlign(e.target.value)}\n >\n <option value=\"top\">Top</option>\n <option value=\"center\">Center</option>\n <option value=\"bottom\">Bottom</option>\n </select>\n </div>\n ) : (\n <div style={rowStyle}>\n <label style={labelStyle}>Offset (px)</label>\n <input\n type=\"number\"\n style={inputStyle}\n value={vOffset}\n onChange={(e) => setVOffset(Number(e.target.value) || 0)}\n />\n </div>\n )}\n <div style={rowStyle}>\n <label style={labelStyle}>Relative to</label>\n <select\n style={selectStyle}\n value={vRelativeTo}\n onChange={(e) => setVRelativeTo(e.target.value)}\n >\n <option value=\"page\">Page</option>\n <option value=\"margin\">Margin</option>\n <option value=\"paragraph\">Paragraph</option>\n <option value=\"line\">Line</option>\n </select>\n </div>\n </div>\n\n {/* Distance from text */}\n <div style={sectionStyle}>\n <div style={sectionLabelStyle}>Distance from text (px)</div>\n <div style={{ display: 'grid', gridTemplateColumns: '1fr 1fr', gap: 8 }}>\n <div style={rowStyle}>\n <label style={{ ...labelStyle, width: 45 }}>Top</label>\n <input\n type=\"number\"\n style={inputStyle}\n min={0}\n value={distTop}\n onChange={(e) => setDistTop(Number(e.target.value) || 0)}\n />\n </div>\n <div style={rowStyle}>\n <label style={{ ...labelStyle, width: 45 }}>Bottom</label>\n <input\n type=\"number\"\n style={inputStyle}\n min={0}\n value={distBottom}\n onChange={(e) => setDistBottom(Number(e.target.value) || 0)}\n />\n </div>\n <div style={rowStyle}>\n <label style={{ ...labelStyle, width: 45 }}>Left</label>\n <input\n type=\"number\"\n style={inputStyle}\n min={0}\n value={distLeft}\n onChange={(e) => setDistLeft(Number(e.target.value) || 0)}\n />\n </div>\n <div style={rowStyle}>\n <label style={{ ...labelStyle, width: 45 }}>Right</label>\n <input\n type=\"number\"\n style={inputStyle}\n min={0}\n value={distRight}\n onChange={(e) => setDistRight(Number(e.target.value) || 0)}\n />\n </div>\n </div>\n </div>\n </div>\n\n <div style={footerStyle}>\n <button type=\"button\" style={btnStyle} onClick={onClose}>\n Cancel\n </button>\n <button\n type=\"button\"\n style={{\n ...btnStyle,\n backgroundColor: 'var(--doc-primary)',\n color: 'white',\n borderColor: 'var(--doc-primary)',\n }}\n onClick={handleApply}\n >\n Apply\n </button>\n </div>\n </div>\n </div>\n );\n}\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/dialogs/ImagePropertiesDialog.tsx"],"names":["overlayStyle","dialogStyle","headerStyle","bodyStyle","sectionStyle","sectionLabelStyle","rowStyle","labelStyle","inputStyle","selectStyle","textareaStyle","footerStyle","btnStyle","ImagePropertiesDialog","isOpen","onClose","onApply","currentData","alt","setAlt","useState","borderWidth","setBorderWidth","borderColor","setBorderColor","borderStyle","setBorderStyle","useEffect","handleApply","useCallback","handleKeyDown","e","jsx","jsxs"],"mappings":"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","file":"ImagePropertiesDialog-ERFCUVCW.js","sourcesContent":["/**\n * Image Properties Dialog\n *\n * Modal for editing image properties:\n * - Alt text for accessibility\n * - Border/outline style, color, and width\n */\n\nimport React, { useState, useCallback, useEffect } from 'react';\nimport type { CSSProperties } from 'react';\n\n// ============================================================================\n// TYPES\n// ============================================================================\n\nexport interface ImagePropertiesData {\n alt?: string;\n borderWidth?: number;\n borderColor?: string;\n borderStyle?: string;\n}\n\nexport interface ImagePropertiesDialogProps {\n isOpen: boolean;\n onClose: () => void;\n onApply: (data: ImagePropertiesData) => void;\n currentData?: ImagePropertiesData;\n}\n\n// ============================================================================\n// STYLES\n// ============================================================================\n\nconst overlayStyle: CSSProperties = {\n position: 'fixed',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n backgroundColor: 'rgba(0, 0, 0, 0.5)',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n zIndex: 10000,\n};\n\nconst dialogStyle: CSSProperties = {\n backgroundColor: 'white',\n borderRadius: 8,\n boxShadow: '0 4px 20px rgba(0, 0, 0, 0.15)',\n minWidth: 380,\n maxWidth: 440,\n width: '100%',\n margin: 20,\n};\n\nconst headerStyle: CSSProperties = {\n padding: '16px 20px 12px',\n borderBottom: '1px solid var(--doc-border)',\n fontSize: 16,\n fontWeight: 600,\n};\n\nconst bodyStyle: CSSProperties = {\n padding: '16px 20px',\n display: 'flex',\n flexDirection: 'column',\n gap: 16,\n};\n\nconst sectionStyle: CSSProperties = {\n display: 'flex',\n flexDirection: 'column',\n gap: 8,\n};\n\nconst sectionLabelStyle: CSSProperties = {\n fontSize: 13,\n fontWeight: 600,\n color: 'var(--doc-text)',\n};\n\nconst rowStyle: CSSProperties = {\n display: 'flex',\n alignItems: 'center',\n gap: 8,\n};\n\nconst labelStyle: CSSProperties = {\n width: 60,\n fontSize: 12,\n color: 'var(--doc-text-muted)',\n};\n\nconst inputStyle: CSSProperties = {\n flex: 1,\n padding: '4px 6px',\n border: '1px solid var(--doc-border)',\n borderRadius: 4,\n fontSize: 12,\n};\n\nconst selectStyle: CSSProperties = {\n ...inputStyle,\n};\n\nconst textareaStyle: CSSProperties = {\n ...inputStyle,\n minHeight: 60,\n resize: 'vertical' as const,\n fontFamily: 'inherit',\n};\n\nconst footerStyle: CSSProperties = {\n padding: '12px 20px 16px',\n borderTop: '1px solid var(--doc-border)',\n display: 'flex',\n justifyContent: 'flex-end',\n gap: 8,\n};\n\nconst btnStyle: CSSProperties = {\n padding: '6px 16px',\n fontSize: 13,\n border: '1px solid var(--doc-border)',\n borderRadius: 4,\n cursor: 'pointer',\n};\n\n// ============================================================================\n// COMPONENT\n// ============================================================================\n\nexport function ImagePropertiesDialog({\n isOpen,\n onClose,\n onApply,\n currentData,\n}: ImagePropertiesDialogProps): React.ReactElement | null {\n const [alt, setAlt] = useState('');\n const [borderWidth, setBorderWidth] = useState(0);\n const [borderColor, setBorderColor] = useState('#000000');\n const [borderStyle, setBorderStyle] = useState('solid');\n\n useEffect(() => {\n if (!isOpen) return;\n setAlt(currentData?.alt ?? '');\n setBorderWidth(currentData?.borderWidth ?? 0);\n setBorderColor(currentData?.borderColor ?? '#000000');\n setBorderStyle(currentData?.borderStyle ?? 'solid');\n }, [isOpen, currentData]);\n\n const handleApply = useCallback(() => {\n onApply({\n alt: alt || undefined,\n borderWidth: borderWidth > 0 ? borderWidth : undefined,\n borderColor: borderWidth > 0 ? borderColor : undefined,\n borderStyle: borderWidth > 0 ? borderStyle : undefined,\n });\n onClose();\n }, [alt, borderWidth, borderColor, borderStyle, onApply, onClose]);\n\n const handleKeyDown = useCallback(\n (e: React.KeyboardEvent) => {\n if (e.key === 'Escape') onClose();\n if (e.key === 'Enter' && !e.shiftKey) handleApply();\n },\n [onClose, handleApply]\n );\n\n if (!isOpen) return null;\n\n return (\n <div style={overlayStyle} onClick={onClose} onKeyDown={handleKeyDown}>\n <div\n style={dialogStyle}\n onClick={(e) => e.stopPropagation()}\n role=\"dialog\"\n aria-label=\"Image properties\"\n >\n <div style={headerStyle}>Image Properties</div>\n\n <div style={bodyStyle}>\n {/* Alt Text */}\n <div style={sectionStyle}>\n <div style={sectionLabelStyle}>Alt Text</div>\n <textarea\n style={textareaStyle}\n value={alt}\n onChange={(e) => setAlt(e.target.value)}\n placeholder=\"Describe this image for accessibility...\"\n />\n </div>\n\n {/* Border / Outline */}\n <div style={sectionStyle}>\n <div style={sectionLabelStyle}>Border</div>\n <div style={rowStyle}>\n <label style={labelStyle}>Width</label>\n <input\n type=\"number\"\n style={{ ...inputStyle, maxWidth: 80 }}\n min={0}\n max={20}\n step={0.5}\n value={borderWidth}\n onChange={(e) => setBorderWidth(Number(e.target.value) || 0)}\n />\n <span style={{ fontSize: 12, color: 'var(--doc-text-muted)' }}>px</span>\n </div>\n <div style={rowStyle}>\n <label style={labelStyle}>Style</label>\n <select\n style={selectStyle}\n value={borderStyle}\n onChange={(e) => setBorderStyle(e.target.value)}\n >\n <option value=\"solid\">Solid</option>\n <option value=\"dashed\">Dashed</option>\n <option value=\"dotted\">Dotted</option>\n <option value=\"double\">Double</option>\n <option value=\"groove\">Groove</option>\n <option value=\"ridge\">Ridge</option>\n <option value=\"inset\">Inset</option>\n <option value=\"outset\">Outset</option>\n </select>\n </div>\n <div style={rowStyle}>\n <label style={labelStyle}>Color</label>\n <input\n type=\"color\"\n value={borderColor}\n onChange={(e) => setBorderColor(e.target.value)}\n style={{\n width: 32,\n height: 24,\n padding: 0,\n border: '1px solid var(--doc-border)',\n borderRadius: 4,\n cursor: 'pointer',\n }}\n />\n <input\n type=\"text\"\n style={{ ...inputStyle, maxWidth: 90 }}\n value={borderColor}\n onChange={(e) => setBorderColor(e.target.value)}\n />\n </div>\n {borderWidth > 0 && (\n <div\n style={{\n marginTop: 4,\n padding: 8,\n border: `${borderWidth}px ${borderStyle} ${borderColor}`,\n borderRadius: 4,\n fontSize: 11,\n color: 'var(--doc-text-muted)',\n textAlign: 'center',\n }}\n >\n Preview\n </div>\n )}\n </div>\n </div>\n\n <div style={footerStyle}>\n <button type=\"button\" style={btnStyle} onClick={onClose}>\n Cancel\n </button>\n <button\n type=\"button\"\n style={{\n ...btnStyle,\n backgroundColor: 'var(--doc-primary)',\n color: 'white',\n borderColor: 'var(--doc-primary)',\n }}\n onClick={handleApply}\n >\n Apply\n </button>\n </div>\n </div>\n </div>\n );\n}\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/dialogs/ImagePropertiesDialog.tsx"],"names":["overlayStyle","dialogStyle","headerStyle","bodyStyle","sectionStyle","sectionLabelStyle","rowStyle","labelStyle","inputStyle","selectStyle","textareaStyle","footerStyle","btnStyle","ImagePropertiesDialog","isOpen","onClose","onApply","currentData","alt","setAlt","useState","borderWidth","setBorderWidth","borderColor","setBorderColor","borderStyle","setBorderStyle","useEffect","handleApply","useCallback","handleKeyDown","e","jsx","jsxs"],"mappings":"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","file":"ImagePropertiesDialog-USMMRK6X.cjs","sourcesContent":["/**\n * Image Properties Dialog\n *\n * Modal for editing image properties:\n * - Alt text for accessibility\n * - Border/outline style, color, and width\n */\n\nimport React, { useState, useCallback, useEffect } from 'react';\nimport type { CSSProperties } from 'react';\n\n// ============================================================================\n// TYPES\n// ============================================================================\n\nexport interface ImagePropertiesData {\n alt?: string;\n borderWidth?: number;\n borderColor?: string;\n borderStyle?: string;\n}\n\nexport interface ImagePropertiesDialogProps {\n isOpen: boolean;\n onClose: () => void;\n onApply: (data: ImagePropertiesData) => void;\n currentData?: ImagePropertiesData;\n}\n\n// ============================================================================\n// STYLES\n// ============================================================================\n\nconst overlayStyle: CSSProperties = {\n position: 'fixed',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n backgroundColor: 'rgba(0, 0, 0, 0.5)',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n zIndex: 10000,\n};\n\nconst dialogStyle: CSSProperties = {\n backgroundColor: 'white',\n borderRadius: 8,\n boxShadow: '0 4px 20px rgba(0, 0, 0, 0.15)',\n minWidth: 380,\n maxWidth: 440,\n width: '100%',\n margin: 20,\n};\n\nconst headerStyle: CSSProperties = {\n padding: '16px 20px 12px',\n borderBottom: '1px solid var(--doc-border)',\n fontSize: 16,\n fontWeight: 600,\n};\n\nconst bodyStyle: CSSProperties = {\n padding: '16px 20px',\n display: 'flex',\n flexDirection: 'column',\n gap: 16,\n};\n\nconst sectionStyle: CSSProperties = {\n display: 'flex',\n flexDirection: 'column',\n gap: 8,\n};\n\nconst sectionLabelStyle: CSSProperties = {\n fontSize: 13,\n fontWeight: 600,\n color: 'var(--doc-text)',\n};\n\nconst rowStyle: CSSProperties = {\n display: 'flex',\n alignItems: 'center',\n gap: 8,\n};\n\nconst labelStyle: CSSProperties = {\n width: 60,\n fontSize: 12,\n color: 'var(--doc-text-muted)',\n};\n\nconst inputStyle: CSSProperties = {\n flex: 1,\n padding: '4px 6px',\n border: '1px solid var(--doc-border)',\n borderRadius: 4,\n fontSize: 12,\n};\n\nconst selectStyle: CSSProperties = {\n ...inputStyle,\n};\n\nconst textareaStyle: CSSProperties = {\n ...inputStyle,\n minHeight: 60,\n resize: 'vertical' as const,\n fontFamily: 'inherit',\n};\n\nconst footerStyle: CSSProperties = {\n padding: '12px 20px 16px',\n borderTop: '1px solid var(--doc-border)',\n display: 'flex',\n justifyContent: 'flex-end',\n gap: 8,\n};\n\nconst btnStyle: CSSProperties = {\n padding: '6px 16px',\n fontSize: 13,\n border: '1px solid var(--doc-border)',\n borderRadius: 4,\n cursor: 'pointer',\n};\n\n// ============================================================================\n// COMPONENT\n// ============================================================================\n\nexport function ImagePropertiesDialog({\n isOpen,\n onClose,\n onApply,\n currentData,\n}: ImagePropertiesDialogProps): React.ReactElement | null {\n const [alt, setAlt] = useState('');\n const [borderWidth, setBorderWidth] = useState(0);\n const [borderColor, setBorderColor] = useState('#000000');\n const [borderStyle, setBorderStyle] = useState('solid');\n\n useEffect(() => {\n if (!isOpen) return;\n setAlt(currentData?.alt ?? '');\n setBorderWidth(currentData?.borderWidth ?? 0);\n setBorderColor(currentData?.borderColor ?? '#000000');\n setBorderStyle(currentData?.borderStyle ?? 'solid');\n }, [isOpen, currentData]);\n\n const handleApply = useCallback(() => {\n onApply({\n alt: alt || undefined,\n borderWidth: borderWidth > 0 ? borderWidth : undefined,\n borderColor: borderWidth > 0 ? borderColor : undefined,\n borderStyle: borderWidth > 0 ? borderStyle : undefined,\n });\n onClose();\n }, [alt, borderWidth, borderColor, borderStyle, onApply, onClose]);\n\n const handleKeyDown = useCallback(\n (e: React.KeyboardEvent) => {\n if (e.key === 'Escape') onClose();\n if (e.key === 'Enter' && !e.shiftKey) handleApply();\n },\n [onClose, handleApply]\n );\n\n if (!isOpen) return null;\n\n return (\n <div style={overlayStyle} onClick={onClose} onKeyDown={handleKeyDown}>\n <div\n style={dialogStyle}\n onClick={(e) => e.stopPropagation()}\n role=\"dialog\"\n aria-label=\"Image properties\"\n >\n <div style={headerStyle}>Image Properties</div>\n\n <div style={bodyStyle}>\n {/* Alt Text */}\n <div style={sectionStyle}>\n <div style={sectionLabelStyle}>Alt Text</div>\n <textarea\n style={textareaStyle}\n value={alt}\n onChange={(e) => setAlt(e.target.value)}\n placeholder=\"Describe this image for accessibility...\"\n />\n </div>\n\n {/* Border / Outline */}\n <div style={sectionStyle}>\n <div style={sectionLabelStyle}>Border</div>\n <div style={rowStyle}>\n <label style={labelStyle}>Width</label>\n <input\n type=\"number\"\n style={{ ...inputStyle, maxWidth: 80 }}\n min={0}\n max={20}\n step={0.5}\n value={borderWidth}\n onChange={(e) => setBorderWidth(Number(e.target.value) || 0)}\n />\n <span style={{ fontSize: 12, color: 'var(--doc-text-muted)' }}>px</span>\n </div>\n <div style={rowStyle}>\n <label style={labelStyle}>Style</label>\n <select\n style={selectStyle}\n value={borderStyle}\n onChange={(e) => setBorderStyle(e.target.value)}\n >\n <option value=\"solid\">Solid</option>\n <option value=\"dashed\">Dashed</option>\n <option value=\"dotted\">Dotted</option>\n <option value=\"double\">Double</option>\n <option value=\"groove\">Groove</option>\n <option value=\"ridge\">Ridge</option>\n <option value=\"inset\">Inset</option>\n <option value=\"outset\">Outset</option>\n </select>\n </div>\n <div style={rowStyle}>\n <label style={labelStyle}>Color</label>\n <input\n type=\"color\"\n value={borderColor}\n onChange={(e) => setBorderColor(e.target.value)}\n style={{\n width: 32,\n height: 24,\n padding: 0,\n border: '1px solid var(--doc-border)',\n borderRadius: 4,\n cursor: 'pointer',\n }}\n />\n <input\n type=\"text\"\n style={{ ...inputStyle, maxWidth: 90 }}\n value={borderColor}\n onChange={(e) => setBorderColor(e.target.value)}\n />\n </div>\n {borderWidth > 0 && (\n <div\n style={{\n marginTop: 4,\n padding: 8,\n border: `${borderWidth}px ${borderStyle} ${borderColor}`,\n borderRadius: 4,\n fontSize: 11,\n color: 'var(--doc-text-muted)',\n textAlign: 'center',\n }}\n >\n Preview\n </div>\n )}\n </div>\n </div>\n\n <div style={footerStyle}>\n <button type=\"button\" style={btnStyle} onClick={onClose}>\n Cancel\n </button>\n <button\n type=\"button\"\n style={{\n ...btnStyle,\n backgroundColor: 'var(--doc-primary)',\n color: 'white',\n borderColor: 'var(--doc-primary)',\n }}\n onClick={handleApply}\n >\n Apply\n </button>\n </div>\n </div>\n </div>\n );\n}\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/dialogs/TablePropertiesDialog.tsx"],"names":["overlayStyle","dialogStyle","headerStyle","bodyStyle","rowStyle","labelStyle","inputStyle","selectStyle","footerStyle","btnStyle","TablePropertiesDialog","isOpen","onClose","onApply","currentProps","width","setWidth","useState","widthType","setWidthType","justification","setJustification","useEffect","handleApply","useCallback","props","handleKeyDown","e","jsx","jsxs"],"mappings":"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","file":"TablePropertiesDialog-72CIUAZT.cjs","sourcesContent":["/**\n * Table Properties Dialog\n *\n * Modal for editing table-level settings:\n * - Preferred width (twips or percentage)\n * - Alignment (left, center, right)\n */\n\nimport React, { useState, useCallback, useEffect } from 'react';\nimport type { CSSProperties } from 'react';\n\n// ============================================================================\n// TYPES\n// ============================================================================\n\nexport interface TableProperties {\n width?: number | null;\n widthType?: string | null;\n justification?: 'left' | 'center' | 'right' | null;\n}\n\nexport interface TablePropertiesDialogProps {\n isOpen: boolean;\n onClose: () => void;\n onApply: (props: TableProperties) => void;\n currentProps?: {\n width?: number;\n widthType?: string;\n justification?: string;\n };\n}\n\n// ============================================================================\n// STYLES\n// ============================================================================\n\nconst overlayStyle: CSSProperties = {\n position: 'fixed',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n backgroundColor: 'rgba(0, 0, 0, 0.5)',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n zIndex: 10000,\n};\n\nconst dialogStyle: CSSProperties = {\n backgroundColor: 'white',\n borderRadius: 8,\n boxShadow: '0 4px 20px rgba(0, 0, 0, 0.15)',\n minWidth: 360,\n maxWidth: 440,\n width: '100%',\n margin: 20,\n};\n\nconst headerStyle: CSSProperties = {\n padding: '16px 20px 12px',\n borderBottom: '1px solid var(--doc-border)',\n fontSize: 16,\n fontWeight: 600,\n};\n\nconst bodyStyle: CSSProperties = {\n padding: '16px 20px',\n display: 'flex',\n flexDirection: 'column',\n gap: 12,\n};\n\nconst rowStyle: CSSProperties = {\n display: 'flex',\n alignItems: 'center',\n gap: 12,\n};\n\nconst labelStyle: CSSProperties = {\n width: 80,\n fontSize: 13,\n color: 'var(--doc-text-muted)',\n};\n\nconst inputStyle: CSSProperties = {\n flex: 1,\n padding: '6px 8px',\n border: '1px solid var(--doc-border)',\n borderRadius: 4,\n fontSize: 13,\n};\n\nconst selectStyle: CSSProperties = {\n ...inputStyle,\n};\n\nconst footerStyle: CSSProperties = {\n padding: '12px 20px 16px',\n borderTop: '1px solid var(--doc-border)',\n display: 'flex',\n justifyContent: 'flex-end',\n gap: 8,\n};\n\nconst btnStyle: CSSProperties = {\n padding: '6px 16px',\n fontSize: 13,\n border: '1px solid var(--doc-border)',\n borderRadius: 4,\n cursor: 'pointer',\n};\n\n// ============================================================================\n// COMPONENT\n// ============================================================================\n\nexport function TablePropertiesDialog({\n isOpen,\n onClose,\n onApply,\n currentProps,\n}: TablePropertiesDialogProps): React.ReactElement | null {\n const [width, setWidth] = useState<number>(currentProps?.width || 0);\n const [widthType, setWidthType] = useState<string>(currentProps?.widthType || 'auto');\n const [justification, setJustification] = useState<string>(currentProps?.justification || 'left');\n\n useEffect(() => {\n if (isOpen) {\n setWidth(currentProps?.width || 0);\n setWidthType(currentProps?.widthType || 'auto');\n setJustification(currentProps?.justification || 'left');\n }\n }, [isOpen, currentProps]);\n\n const handleApply = useCallback(() => {\n const props: TableProperties = {};\n if (widthType === 'auto') {\n props.width = null;\n props.widthType = 'auto';\n } else {\n props.width = width;\n props.widthType = widthType;\n }\n props.justification = justification as 'left' | 'center' | 'right';\n onApply(props);\n onClose();\n }, [width, widthType, justification, onApply, onClose]);\n\n const handleKeyDown = useCallback(\n (e: React.KeyboardEvent) => {\n if (e.key === 'Escape') onClose();\n if (e.key === 'Enter') handleApply();\n },\n [onClose, handleApply]\n );\n\n if (!isOpen) return null;\n\n return (\n <div style={overlayStyle} onClick={onClose} onKeyDown={handleKeyDown}>\n <div\n style={dialogStyle}\n onClick={(e) => e.stopPropagation()}\n role=\"dialog\"\n aria-label=\"Table properties\"\n >\n <div style={headerStyle}>Table Properties</div>\n\n <div style={bodyStyle}>\n {/* Width type */}\n <div style={rowStyle}>\n <label style={labelStyle}>Width type</label>\n <select\n style={selectStyle}\n value={widthType}\n onChange={(e) => setWidthType(e.target.value)}\n >\n <option value=\"auto\">Auto</option>\n <option value=\"dxa\">Fixed (twips)</option>\n <option value=\"pct\">Percentage</option>\n </select>\n </div>\n\n {/* Width value */}\n {widthType !== 'auto' && (\n <div style={rowStyle}>\n <label style={labelStyle}>Width</label>\n <input\n type=\"number\"\n style={inputStyle}\n min={0}\n step={widthType === 'pct' ? 5 : 100}\n value={width}\n onChange={(e) => setWidth(Number(e.target.value) || 0)}\n />\n <span style={{ fontSize: 11, color: 'var(--doc-text-muted)' }}>\n {widthType === 'pct' ? '(50ths of %)' : 'tw'}\n </span>\n </div>\n )}\n\n {/* Alignment */}\n <div style={rowStyle}>\n <label style={labelStyle}>Alignment</label>\n <select\n style={selectStyle}\n value={justification}\n onChange={(e) => setJustification(e.target.value)}\n >\n <option value=\"left\">Left</option>\n <option value=\"center\">Center</option>\n <option value=\"right\">Right</option>\n </select>\n </div>\n </div>\n\n <div style={footerStyle}>\n <button type=\"button\" style={btnStyle} onClick={onClose}>\n Cancel\n </button>\n <button\n type=\"button\"\n style={{\n ...btnStyle,\n backgroundColor: 'var(--doc-primary)',\n color: 'white',\n borderColor: 'var(--doc-primary)',\n }}\n onClick={handleApply}\n >\n Apply\n </button>\n </div>\n </div>\n </div>\n );\n}\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/dialogs/TablePropertiesDialog.tsx"],"names":["overlayStyle","dialogStyle","headerStyle","bodyStyle","rowStyle","labelStyle","inputStyle","selectStyle","footerStyle","btnStyle","TablePropertiesDialog","isOpen","onClose","onApply","currentProps","width","setWidth","useState","widthType","setWidthType","justification","setJustification","useEffect","handleApply","useCallback","props","handleKeyDown","e","jsx","jsxs"],"mappings":"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","file":"TablePropertiesDialog-EMUEVYB3.js","sourcesContent":["/**\n * Table Properties Dialog\n *\n * Modal for editing table-level settings:\n * - Preferred width (twips or percentage)\n * - Alignment (left, center, right)\n */\n\nimport React, { useState, useCallback, useEffect } from 'react';\nimport type { CSSProperties } from 'react';\n\n// ============================================================================\n// TYPES\n// ============================================================================\n\nexport interface TableProperties {\n width?: number | null;\n widthType?: string | null;\n justification?: 'left' | 'center' | 'right' | null;\n}\n\nexport interface TablePropertiesDialogProps {\n isOpen: boolean;\n onClose: () => void;\n onApply: (props: TableProperties) => void;\n currentProps?: {\n width?: number;\n widthType?: string;\n justification?: string;\n };\n}\n\n// ============================================================================\n// STYLES\n// ============================================================================\n\nconst overlayStyle: CSSProperties = {\n position: 'fixed',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n backgroundColor: 'rgba(0, 0, 0, 0.5)',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n zIndex: 10000,\n};\n\nconst dialogStyle: CSSProperties = {\n backgroundColor: 'white',\n borderRadius: 8,\n boxShadow: '0 4px 20px rgba(0, 0, 0, 0.15)',\n minWidth: 360,\n maxWidth: 440,\n width: '100%',\n margin: 20,\n};\n\nconst headerStyle: CSSProperties = {\n padding: '16px 20px 12px',\n borderBottom: '1px solid var(--doc-border)',\n fontSize: 16,\n fontWeight: 600,\n};\n\nconst bodyStyle: CSSProperties = {\n padding: '16px 20px',\n display: 'flex',\n flexDirection: 'column',\n gap: 12,\n};\n\nconst rowStyle: CSSProperties = {\n display: 'flex',\n alignItems: 'center',\n gap: 12,\n};\n\nconst labelStyle: CSSProperties = {\n width: 80,\n fontSize: 13,\n color: 'var(--doc-text-muted)',\n};\n\nconst inputStyle: CSSProperties = {\n flex: 1,\n padding: '6px 8px',\n border: '1px solid var(--doc-border)',\n borderRadius: 4,\n fontSize: 13,\n};\n\nconst selectStyle: CSSProperties = {\n ...inputStyle,\n};\n\nconst footerStyle: CSSProperties = {\n padding: '12px 20px 16px',\n borderTop: '1px solid var(--doc-border)',\n display: 'flex',\n justifyContent: 'flex-end',\n gap: 8,\n};\n\nconst btnStyle: CSSProperties = {\n padding: '6px 16px',\n fontSize: 13,\n border: '1px solid var(--doc-border)',\n borderRadius: 4,\n cursor: 'pointer',\n};\n\n// ============================================================================\n// COMPONENT\n// ============================================================================\n\nexport function TablePropertiesDialog({\n isOpen,\n onClose,\n onApply,\n currentProps,\n}: TablePropertiesDialogProps): React.ReactElement | null {\n const [width, setWidth] = useState<number>(currentProps?.width || 0);\n const [widthType, setWidthType] = useState<string>(currentProps?.widthType || 'auto');\n const [justification, setJustification] = useState<string>(currentProps?.justification || 'left');\n\n useEffect(() => {\n if (isOpen) {\n setWidth(currentProps?.width || 0);\n setWidthType(currentProps?.widthType || 'auto');\n setJustification(currentProps?.justification || 'left');\n }\n }, [isOpen, currentProps]);\n\n const handleApply = useCallback(() => {\n const props: TableProperties = {};\n if (widthType === 'auto') {\n props.width = null;\n props.widthType = 'auto';\n } else {\n props.width = width;\n props.widthType = widthType;\n }\n props.justification = justification as 'left' | 'center' | 'right';\n onApply(props);\n onClose();\n }, [width, widthType, justification, onApply, onClose]);\n\n const handleKeyDown = useCallback(\n (e: React.KeyboardEvent) => {\n if (e.key === 'Escape') onClose();\n if (e.key === 'Enter') handleApply();\n },\n [onClose, handleApply]\n );\n\n if (!isOpen) return null;\n\n return (\n <div style={overlayStyle} onClick={onClose} onKeyDown={handleKeyDown}>\n <div\n style={dialogStyle}\n onClick={(e) => e.stopPropagation()}\n role=\"dialog\"\n aria-label=\"Table properties\"\n >\n <div style={headerStyle}>Table Properties</div>\n\n <div style={bodyStyle}>\n {/* Width type */}\n <div style={rowStyle}>\n <label style={labelStyle}>Width type</label>\n <select\n style={selectStyle}\n value={widthType}\n onChange={(e) => setWidthType(e.target.value)}\n >\n <option value=\"auto\">Auto</option>\n <option value=\"dxa\">Fixed (twips)</option>\n <option value=\"pct\">Percentage</option>\n </select>\n </div>\n\n {/* Width value */}\n {widthType !== 'auto' && (\n <div style={rowStyle}>\n <label style={labelStyle}>Width</label>\n <input\n type=\"number\"\n style={inputStyle}\n min={0}\n step={widthType === 'pct' ? 5 : 100}\n value={width}\n onChange={(e) => setWidth(Number(e.target.value) || 0)}\n />\n <span style={{ fontSize: 11, color: 'var(--doc-text-muted)' }}>\n {widthType === 'pct' ? '(50ths of %)' : 'tw'}\n </span>\n </div>\n )}\n\n {/* Alignment */}\n <div style={rowStyle}>\n <label style={labelStyle}>Alignment</label>\n <select\n style={selectStyle}\n value={justification}\n onChange={(e) => setJustification(e.target.value)}\n >\n <option value=\"left\">Left</option>\n <option value=\"center\">Center</option>\n <option value=\"right\">Right</option>\n </select>\n </div>\n </div>\n\n <div style={footerStyle}>\n <button type=\"button\" style={btnStyle} onClick={onClose}>\n Cancel\n </button>\n <button\n type=\"button\"\n style={{\n ...btnStyle,\n backgroundColor: 'var(--doc-primary)',\n color: 'white',\n borderColor: 'var(--doc-primary)',\n }}\n onClick={handleApply}\n >\n Apply\n </button>\n </div>\n </div>\n </div>\n );\n}\n"]}
|