@yurikilian/lex4 1.10.0 → 1.11.0

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.
@@ -1,4 +1,4 @@
1
- export type { DocumentAst, PageFormatAst, MarginsAst, HeaderFooterConfigAst, DocumentMetadataAst, PageAst, ContentAst, BlockNodeAst, Alignment, ParagraphAst, HeadingAst, ListAst, ListItemAst, BlockQuoteAst, InlineNodeAst, TextMarks, TextRunAst, VariableAst, LineBreakAst, VariableDefinitionAst, SaveDocumentRequest, } from './types';
1
+ export type { DocumentAst, PageFormatAst, MarginsAst, HeaderFooterConfigAst, DocumentMetadataAst, PageAst, ContentAst, BlockNodeAst, Alignment, ParagraphAst, HeadingAst, ListAst, ListItemAst, BlockQuoteAst, InlineNodeAst, TextMarks, TextRunAst, VariableAst, LineBreakAst, OptionalSegmentAst, VariableDefinitionAst, SaveDocumentRequest, } from './types';
2
2
  export { AST_VERSION } from './types';
3
3
  export { mapInlineNode, mapInlineNodes, decodeFormatBitmask, extractFontFamily, extractFontSizePt, buildTextMarks, } from './inline-mapper';
4
4
  export { mapBlockNode, mapBlockNodes } from './block-mapper';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ast/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,WAAW,EACX,aAAa,EACb,UAAU,EACV,qBAAqB,EACrB,mBAAmB,EACnB,OAAO,EACP,UAAU,EACV,YAAY,EACZ,SAAS,EACT,YAAY,EACZ,UAAU,EACV,OAAO,EACP,WAAW,EACX,aAAa,EACb,aAAa,EACb,SAAS,EACT,UAAU,EACV,WAAW,EACX,YAAY,EACZ,qBAAqB,EACrB,mBAAmB,GACpB,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAEtC,OAAO,EACL,aAAa,EACb,cAAc,EACd,mBAAmB,EACnB,iBAAiB,EACjB,iBAAiB,EACjB,cAAc,GACf,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC7D,OAAO,EAAE,uBAAuB,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AACnF,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAC5E,YAAY,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ast/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,WAAW,EACX,aAAa,EACb,UAAU,EACV,qBAAqB,EACrB,mBAAmB,EACnB,OAAO,EACP,UAAU,EACV,YAAY,EACZ,SAAS,EACT,YAAY,EACZ,UAAU,EACV,OAAO,EACP,WAAW,EACX,aAAa,EACb,aAAa,EACb,SAAS,EACT,UAAU,EACV,WAAW,EACX,YAAY,EACZ,kBAAkB,EAClB,qBAAqB,EACrB,mBAAmB,GACpB,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAEtC,OAAO,EACL,aAAa,EACb,cAAc,EACd,mBAAmB,EACnB,iBAAiB,EACjB,iBAAiB,EACjB,cAAc,GACf,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC7D,OAAO,EAAE,uBAAuB,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AACnF,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAC5E,YAAY,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC"}
@@ -12,7 +12,13 @@ interface SerializedLineBreak {
12
12
  type: 'linebreak';
13
13
  [key: string]: unknown;
14
14
  }
15
- type SerializedInlineNode = SerializedTextNode | SerializedVariableNode | SerializedLineBreak;
15
+ /** Serialized OptionalSegmentNode shape (inline element with children). */
16
+ interface SerializedOptionalSegment {
17
+ type: 'optional-segment';
18
+ children?: SerializedInlineNode[];
19
+ [key: string]: unknown;
20
+ }
21
+ type SerializedInlineNode = SerializedTextNode | SerializedVariableNode | SerializedLineBreak | SerializedOptionalSegment;
16
22
  /**
17
23
  * Decodes Lexical's format bitmask into named boolean marks.
18
24
  */
@@ -1 +1 @@
1
- {"version":3,"file":"inline-mapper.d.ts","sourceRoot":"","sources":["../../src/ast/inline-mapper.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAyC,MAAM,SAAS,CAAC;AAC/F,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AAYzE,qEAAqE;AACrE,UAAU,kBAAkB;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,UAAU,mBAAmB;IAC3B,IAAI,EAAE,WAAW,CAAC;IAClB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,KAAK,oBAAoB,GAAG,kBAAkB,GAAG,sBAAsB,GAAG,mBAAmB,CAAC;AAE9F;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,QAAQ,GAAG,WAAW,GAAG,eAAe,CAAC,CAOtH;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAEnE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAEnE;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,CAYpF;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,oBAAoB,GAAG,aAAa,CAYvE;AAwBD;;GAEG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,oBAAoB,EAAE,GAAG,aAAa,EAAE,CAE7E"}
1
+ {"version":3,"file":"inline-mapper.d.ts","sourceRoot":"","sources":["../../src/ast/inline-mapper.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAA6D,MAAM,SAAS,CAAC;AACnH,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AAYzE,qEAAqE;AACrE,UAAU,kBAAkB;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,UAAU,mBAAmB;IAC3B,IAAI,EAAE,WAAW,CAAC;IAClB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,2EAA2E;AAC3E,UAAU,yBAAyB;IACjC,IAAI,EAAE,kBAAkB,CAAC;IACzB,QAAQ,CAAC,EAAE,oBAAoB,EAAE,CAAC;IAClC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,KAAK,oBAAoB,GACrB,kBAAkB,GAClB,sBAAsB,GACtB,mBAAmB,GACnB,yBAAyB,CAAC;AAE9B;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,QAAQ,GAAG,WAAW,GAAG,eAAe,CAAC,CAOtH;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAEnE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAEnE;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,CAYpF;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,oBAAoB,GAAG,aAAa,CAcvE;AA+BD;;GAEG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,oBAAoB,EAAE,GAAG,aAAa,EAAE,CAE7E"}
@@ -74,7 +74,7 @@ export interface BlockQuoteAst {
74
74
  type: 'blockquote';
75
75
  children: InlineNodeAst[];
76
76
  }
77
- export type InlineNodeAst = TextRunAst | VariableAst | LineBreakAst;
77
+ export type InlineNodeAst = TextRunAst | VariableAst | LineBreakAst | OptionalSegmentAst;
78
78
  export interface TextMarks {
79
79
  bold?: boolean;
80
80
  italic?: boolean;
@@ -96,6 +96,14 @@ export interface VariableAst {
96
96
  export interface LineBreakAst {
97
97
  type: 'linebreak';
98
98
  }
99
+ /**
100
+ * Conditional inline fragment: dropped entirely at generation time
101
+ * when any variable inside it resolves to an empty value.
102
+ */
103
+ export interface OptionalSegmentAst {
104
+ type: 'optional-segment';
105
+ children: InlineNodeAst[];
106
+ }
99
107
  export interface VariableDefinitionAst {
100
108
  key: string;
101
109
  label: string;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/ast/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,eAAO,MAAM,WAAW,EAAG,OAAgB,CAAC;AAM5C,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,OAAO,WAAW,CAAC;IAC5B,IAAI,EAAE,aAAa,CAAC;IACpB,YAAY,EAAE,qBAAqB,CAAC;IACpC,KAAK,EAAE,OAAO,EAAE,CAAC;IACjB,QAAQ,EAAE,mBAAmB,CAAC;CAC/B;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,IAAI,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,UAAU,CAAC;CACrB;AAED,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,OAAO,CAAC;IACjB,eAAe,EAAE,MAAM,GAAG,QAAQ,GAAG,QAAQ,GAAG,MAAM,CAAC;IACvD,aAAa,EAAE,UAAU,GAAG,IAAI,CAAC;IACjC,aAAa,EAAE,UAAU,GAAG,IAAI,CAAC;CAClC;AAED,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC;CAClD;AAMD,MAAM,WAAW,OAAO;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,YAAY,EAAE,CAAC;IACrB,MAAM,EAAE,UAAU,GAAG,IAAI,CAAC;IAC1B,MAAM,EAAE,UAAU,GAAG,IAAI,CAAC;CAC3B;AAMD,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,YAAY,EAAE,CAAC;CACxB;AAMD,MAAM,MAAM,YAAY,GACpB,YAAY,GACZ,UAAU,GACV,OAAO,GACP,aAAa,CAAC;AAElB,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,QAAQ,GAAG,OAAO,GAAG,SAAS,CAAC;AAEhE,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,WAAW,CAAC;IAClB,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,aAAa,EAAE,CAAC;CAC3B;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,SAAS,CAAC;IAChB,KAAK,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC7B,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,QAAQ,EAAE,aAAa,EAAE,CAAC;CAC3B;AAED,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,SAAS,GAAG,eAAe,GAAG,WAAW,CAAC;IACpD,KAAK,EAAE,WAAW,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,WAAW,CAAC;IAClB,QAAQ,EAAE,aAAa,EAAE,CAAC;IAC1B,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,YAAY,CAAC;IACnB,QAAQ,EAAE,aAAa,EAAE,CAAC;CAC3B;AAMD,MAAM,MAAM,aAAa,GACrB,UAAU,GACV,WAAW,GACX,YAAY,CAAC;AAEjB,MAAM,WAAW,SAAS;IACxB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,SAAS,CAAC;CACnB;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,UAAU,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,SAAS,CAAC;CACnB;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,WAAW,CAAC;CACnB;AAMD,MAAM,WAAW,qBAAqB;IACpC,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAAG,MAAM,GAAG,SAAS,CAAC;IACrD,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAMD,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,WAAW,CAAC;IACtB,YAAY,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;IAC9B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACnC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/ast/types.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"toolbar-style-snapshot.d.ts","sourceRoot":"","sources":["../../src/context/toolbar-style-snapshot.ts"],"names":[],"mappings":"AAAA,OAAO,EAQL,KAAK,aAAa,EAClB,KAAK,WAAW,EAEjB,MAAM,SAAS,CAAC;AAIjB,OAAO,KAAK,EAAqB,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAmIrF,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,aAAa,EACrB,WAAW,GAAE,WAAqC,GACjD,oBAAoB,CAyDtB"}
1
+ {"version":3,"file":"toolbar-style-snapshot.d.ts","sourceRoot":"","sources":["../../src/context/toolbar-style-snapshot.ts"],"names":[],"mappings":"AAAA,OAAO,EAQL,KAAK,aAAa,EAClB,KAAK,WAAW,EAEjB,MAAM,SAAS,CAAC;AAIjB,OAAO,KAAK,EAAqB,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAoIrF,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,aAAa,EACrB,WAAW,GAAE,WAAqC,GACjD,oBAAoB,CA+DtB"}
@@ -15,6 +15,8 @@ export interface ToolbarStyleSnapshot {
15
15
  isUnderline: boolean;
16
16
  isStrikethrough: boolean;
17
17
  hasSelectedVariable: boolean;
18
+ hasTextSelection: boolean;
19
+ insideOptionalSegment: boolean;
18
20
  }
19
21
  export declare const DEFAULT_TOOLBAR_STYLE_SNAPSHOT: ToolbarStyleSnapshot;
20
22
  export interface ToolbarStyleStoreState extends ToolbarStyleSnapshot {
@@ -1 +1 @@
1
- {"version":3,"file":"toolbar-style-store.d.ts","sourceRoot":"","sources":["../../src/context/toolbar-style-store.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA4C,MAAM,OAAO,CAAC;AACjE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAEjD,OAAO,EAAe,KAAK,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC7D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAGjE,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG,QAAQ,GAAG,QAAQ,GAAG,OAAO,CAAC;AAEvE,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE,SAAS,CAAC;IACrB,UAAU,EAAE,UAAU,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,iBAAiB,CAAC;IAC7B,UAAU,EAAE,iBAAiB,CAAC;IAC9B,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,OAAO,CAAC;IAClB,WAAW,EAAE,OAAO,CAAC;IACrB,eAAe,EAAE,OAAO,CAAC;IACzB,mBAAmB,EAAE,OAAO,CAAC;CAC9B;AAED,eAAO,MAAM,8BAA8B,EAAE,oBAW5C,CAAC;AAEF,MAAM,WAAW,sBAAuB,SAAQ,oBAAoB;IAClE,WAAW,EAAE,CAAC,QAAQ,EAAE,oBAAoB,KAAK,IAAI,CAAC;IACtD,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB;AAED,wBAAgB,uBAAuB,CACrC,eAAe,GAAE,oBAAqD,GACrE,QAAQ,CAAC,sBAAsB,CAAC,CAMlC;AAID,eAAO,MAAM,yBAAyB,EAAE,KAAK,CAAC,EAAE,CAAC;IAAE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAAE,CAY7E,CAAC;AAEF,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,sBAAsB,KAAK,CAAC,GAAG,CAAC,CAMzF;AAED,wBAAgB,uBAAuB,IAAI,QAAQ,CAAC,sBAAsB,CAAC,CAM1E"}
1
+ {"version":3,"file":"toolbar-style-store.d.ts","sourceRoot":"","sources":["../../src/context/toolbar-style-store.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA4C,MAAM,OAAO,CAAC;AACjE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAEjD,OAAO,EAAe,KAAK,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC7D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAGjE,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG,QAAQ,GAAG,QAAQ,GAAG,OAAO,CAAC;AAEvE,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE,SAAS,CAAC;IACrB,UAAU,EAAE,UAAU,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,iBAAiB,CAAC;IAC7B,UAAU,EAAE,iBAAiB,CAAC;IAC9B,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,OAAO,CAAC;IAClB,WAAW,EAAE,OAAO,CAAC;IACrB,eAAe,EAAE,OAAO,CAAC;IACzB,mBAAmB,EAAE,OAAO,CAAC;IAC7B,gBAAgB,EAAE,OAAO,CAAC;IAC1B,qBAAqB,EAAE,OAAO,CAAC;CAChC;AAED,eAAO,MAAM,8BAA8B,EAAE,oBAa5C,CAAC;AAEF,MAAM,WAAW,sBAAuB,SAAQ,oBAAoB;IAClE,WAAW,EAAE,CAAC,QAAQ,EAAE,oBAAoB,KAAK,IAAI,CAAC;IACtD,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB;AAED,wBAAgB,uBAAuB,CACrC,eAAe,GAAE,oBAAqD,GACrE,QAAQ,CAAC,sBAAsB,CAAC,CAMlC;AAID,eAAO,MAAM,yBAAyB,EAAE,KAAK,CAAC,EAAE,CAAC;IAAE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAAE,CAY7E,CAAC;AAEF,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,sBAAsB,KAAK,CAAC,GAAG,CAAC,CAMzF;AAED,wBAAgB,uBAAuB,IAAI,QAAQ,CAAC,sBAAsB,CAAC,CAM1E"}
@@ -1 +1 @@
1
- {"version":3,"file":"variables-extension.d.ts","sourceRoot":"","sources":["../../src/extensions/variables-extension.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAoB,MAAM,SAAS,CAAC;AAC/D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAO7D,OAAO,QAAQ,wBAAwB,CAAC;IACtC,UAAU,gBAAgB;QACxB,cAAc,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;QACtC,gBAAgB,EAAE,CAAC,OAAO,EAAE,kBAAkB,EAAE,KAAK,IAAI,CAAC;QAC1D,oBAAoB,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;QAC9C,mBAAmB,EAAE,MAAM,IAAI,CAAC;KACjC;CACF;AAOD,UAAU,kBAAkB;IAC1B,SAAS,EAAE,OAAO,CAAC;IACnB,YAAY,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;CACvC;AAOD,wBAAgB,qBAAqB,IAAI,kBAAkB,CAE1D;AA2ED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,kBAAkB,CAAC,WAAW,GAAE,kBAAkB,EAAO,GAAG,aAAa,CA2CxF"}
1
+ {"version":3,"file":"variables-extension.d.ts","sourceRoot":"","sources":["../../src/extensions/variables-extension.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAoB,MAAM,SAAS,CAAC;AAC/D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAY7D,OAAO,QAAQ,wBAAwB,CAAC;IACtC,UAAU,gBAAgB;QACxB,cAAc,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;QACtC,gBAAgB,EAAE,CAAC,OAAO,EAAE,kBAAkB,EAAE,KAAK,IAAI,CAAC;QAC1D,oBAAoB,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;QAC9C,mBAAmB,EAAE,MAAM,IAAI,CAAC;KACjC;CACF;AAOD,UAAU,kBAAkB;IAC1B,SAAS,EAAE,OAAO,CAAC;IACnB,YAAY,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;CACvC;AAOD,wBAAgB,qBAAqB,IAAI,kBAAkB,CAE1D;AAgID;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,kBAAkB,CAAC,WAAW,GAAE,kBAAkB,EAAO,GAAG,aAAa,CA4CxF"}
@@ -1 +1 @@
1
- {"version":3,"file":"defaults.d.ts","sourceRoot":"","sources":["../../src/i18n/defaults.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAEhD,eAAO,MAAM,oBAAoB,EAAE,gBAyJlC,CAAC"}
1
+ {"version":3,"file":"defaults.d.ts","sourceRoot":"","sources":["../../src/i18n/defaults.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAEhD,eAAO,MAAM,oBAAoB,EAAE,gBA4JlC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"pt-BR.d.ts","sourceRoot":"","sources":["../../src/i18n/pt-BR.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAEhD,eAAO,MAAM,kBAAkB,EAAE,gBAyJhC,CAAC"}
1
+ {"version":3,"file":"pt-BR.d.ts","sourceRoot":"","sources":["../../src/i18n/pt-BR.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAEhD,eAAO,MAAM,kBAAkB,EAAE,gBA4JhC,CAAC"}
@@ -69,6 +69,7 @@ export interface Lex4Translations {
69
69
  /** Use {{value}} for the selected block label */
70
70
  blockTypeChanged: string;
71
71
  insertedDocumentContent: string;
72
+ optionalSegmentToggled: string;
72
73
  };
73
74
  };
74
75
  variables: {
@@ -92,6 +93,8 @@ export interface Lex4Translations {
92
93
  createVariableCancel: string;
93
94
  createVariableMissingFields: string;
94
95
  createVariableDuplicateKey: string;
96
+ optionalSegmentToggle: string;
97
+ optionalSegmentTooltip: string;
95
98
  };
96
99
  header: {
97
100
  placeholder: string;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/i18n/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE;QACP,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;QACf,SAAS,EAAE,MAAM,CAAC;QAClB,aAAa,EAAE,MAAM,CAAC;QACtB,SAAS,EAAE,MAAM,CAAC;QAClB,WAAW,EAAE,MAAM,CAAC;QACpB,UAAU,EAAE,MAAM,CAAC;QACnB,OAAO,EAAE,MAAM,CAAC;QAChB,YAAY,EAAE,MAAM,CAAC;QACrB,UAAU,EAAE,MAAM,CAAC;QACnB,cAAc,EAAE,MAAM,CAAC;QACvB,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE,MAAM,CAAC;QAClB,QAAQ,EAAE,MAAM,CAAC;QACjB,QAAQ,EAAE,MAAM,CAAC;QACjB,QAAQ,EAAE,MAAM,CAAC;QACjB,QAAQ,EAAE,MAAM,CAAC;QACjB,QAAQ,EAAE,MAAM,CAAC;QACjB,QAAQ,EAAE,MAAM,CAAC;QACjB,WAAW,EAAE,MAAM,CAAC;QACpB,YAAY,EAAE,MAAM,CAAC;KACtB,CAAC;IAEF,OAAO,EAAE;QACP,KAAK,EAAE,MAAM,CAAC;QACd,QAAQ,EAAE,MAAM,CAAC;QACjB,KAAK,EAAE,MAAM,CAAC;QACd,YAAY,EAAE,MAAM,CAAC;QACrB,OAAO,EAAE;YACP,qBAAqB,EAAE,MAAM,CAAC;YAC9B,sBAAsB,EAAE,MAAM,CAAC;YAC/B,iBAAiB,EAAE,MAAM,CAAC;YAC1B,iBAAiB,EAAE,MAAM,CAAC;YAC1B,aAAa,EAAE,MAAM,CAAC;YACtB,aAAa,EAAE,MAAM,CAAC;YACtB,iBAAiB,EAAE,MAAM,CAAC;YAC1B,iBAAiB,EAAE,MAAM,CAAC;YAC1B,sCAAsC;YACtC,cAAc,EAAE,MAAM,CAAC;YACvB,WAAW,EAAE,MAAM,CAAC;YACpB,aAAa,EAAE,MAAM,CAAC;YACtB,gBAAgB,EAAE,MAAM,CAAC;YACzB,oBAAoB,EAAE,MAAM,CAAC;YAC7B,WAAW,EAAE,MAAM,CAAC;YACpB,aAAa,EAAE,MAAM,CAAC;YACtB,YAAY,EAAE,MAAM,CAAC;YACrB,aAAa,EAAE,MAAM,CAAC;YACtB,oBAAoB,EAAE,MAAM,CAAC;YAC7B,kBAAkB,EAAE,MAAM,CAAC;YAC3B,sBAAsB,EAAE,MAAM,CAAC;YAC/B,eAAe,EAAE,MAAM,CAAC;YACxB,gBAAgB,EAAE,MAAM,CAAC;YACzB,sCAAsC;YACtC,WAAW,EAAE,MAAM,CAAC;YACpB,iCAAiC;YACjC,eAAe,EAAE,MAAM,CAAC;YACxB,iDAAiD;YACjD,gBAAgB,EAAE,MAAM,CAAC;YACzB,uBAAuB,EAAE,MAAM,CAAC;SACjC,CAAC;KACH,CAAC;IAEF,SAAS,EAAE;QACT,KAAK,EAAE,MAAM,CAAC;QACd,0DAA0D;QAC1D,SAAS,EAAE,MAAM,CAAC;QAClB,gBAAgB,EAAE,MAAM,CAAC;QACzB,iBAAiB,EAAE,MAAM,CAAC;QAC1B,gBAAgB,EAAE,MAAM,CAAC;QACzB,uCAAuC;QACvC,cAAc,EAAE,MAAM,CAAC;QACvB,SAAS,EAAE,MAAM,CAAC;QAClB,UAAU,EAAE,MAAM,CAAC;QACnB,WAAW,EAAE,MAAM,CAAC;QACpB,mBAAmB,EAAE,MAAM,CAAC;QAC5B,mBAAmB,EAAE,MAAM,CAAC;QAC5B,iBAAiB,EAAE,MAAM,CAAC;QAC1B,mBAAmB,EAAE,MAAM,CAAC;QAC5B,kBAAkB,EAAE,MAAM,CAAC;QAC3B,kBAAkB,EAAE,MAAM,CAAC;QAC3B,oBAAoB,EAAE,MAAM,CAAC;QAC7B,2BAA2B,EAAE,MAAM,CAAC;QACpC,0BAA0B,EAAE,MAAM,CAAC;KACpC,CAAC;IAEF,MAAM,EAAE;QACN,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;IAEF,MAAM,EAAE;QACN,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;IAEF,IAAI,EAAE;QACJ,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;IAEF,kEAAkE;IAClE,WAAW,EAAE;QACX,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;IAEF,0CAA0C;IAC1C,OAAO,EAAE;QACP,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,EAAE,MAAM,CAAC;QACjB,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,EAAE,MAAM,CAAC;QACjB,OAAO,EAAE,MAAM,CAAC;QAChB,uCAAuC;QACvC,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;IAEF,YAAY,EAAE;QACZ,KAAK,EAAE,MAAM,CAAC;QACd,aAAa,EAAE,MAAM,CAAC;QACtB,WAAW,EAAE,MAAM,CAAC;QACpB,gBAAgB,EAAE;YAChB,IAAI,EAAE,MAAM,CAAC;YACb,MAAM,EAAE,MAAM,CAAC;YACf,MAAM,EAAE,MAAM,CAAC;YACf,IAAI,EAAE,MAAM,CAAC;SACd,CAAC;QACF,aAAa,EAAE,MAAM,CAAC;QACtB,aAAa,EAAE,MAAM,CAAC;QACtB,cAAc,EAAE,MAAM,CAAC;QACvB,aAAa,EAAE,MAAM,CAAC;QACtB,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;IAEF,OAAO,EAAE;QACP,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;IAEF,8FAA8F;IAC9F,aAAa,EAAE;QACb,SAAS,EAAE,MAAM,CAAC;QAClB,aAAa,EAAE,MAAM,CAAC;QACtB,iBAAiB,EAAE,MAAM,CAAC;QAC1B,eAAe,EAAE,MAAM,CAAC;QACxB,cAAc,EAAE,MAAM,CAAC;QACvB,aAAa,EAAE,MAAM,CAAC;QACtB,kBAAkB,EAAE,MAAM,CAAC;QAC3B,UAAU,EAAE,MAAM,CAAC;QACnB,YAAY,EAAE,MAAM,CAAC;QACrB,YAAY,EAAE,MAAM,CAAC;QACrB,mBAAmB,EAAE,MAAM,CAAC;QAC5B,aAAa,EAAE,MAAM,CAAC;QACtB,aAAa,EAAE,MAAM,CAAC;QACtB,SAAS,EAAE,MAAM,CAAC;QAClB,WAAW,EAAE,MAAM,CAAC;QACpB,cAAc,EAAE,MAAM,CAAC;QACvB,eAAe,EAAE,MAAM,CAAC;KACzB,CAAC;CACH"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/i18n/types.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -10,10 +10,12 @@ export { useHeaderFooter } from './hooks/use-header-footer';
10
10
  export type { Lex4Extension, ExtensionContext } from './extensions';
11
11
  export { astExtension } from './extensions';
12
12
  export { variablesExtension } from './extensions';
13
- export type { DocumentAst, PageAst, ContentAst, BlockNodeAst, InlineNodeAst, TextRunAst, TextMarks, VariableAst, LineBreakAst, ParagraphAst, HeadingAst, ListAst, ListItemAst, BlockQuoteAst, SaveDocumentRequest, VariableDefinitionAst, PayloadOptions, } from './ast';
13
+ export type { DocumentAst, PageAst, ContentAst, BlockNodeAst, InlineNodeAst, TextRunAst, TextMarks, VariableAst, LineBreakAst, OptionalSegmentAst, ParagraphAst, HeadingAst, ListAst, ListItemAst, BlockQuoteAst, SaveDocumentRequest, VariableDefinitionAst, PayloadOptions, } from './ast';
14
14
  export { AST_VERSION, serializeDocument, buildSavePayload, serializeDocumentJson } from './ast';
15
15
  export type { VariableDefinition, VariableContextValue } from './variables';
16
16
  export { VariableNode, $createVariableNode, $isVariableNode, INSERT_VARIABLE_COMMAND } from './variables';
17
+ export type { SerializedOptionalSegmentNode } from './variables';
18
+ export { OptionalSegmentNode, $createOptionalSegmentNode, $isOptionalSegmentNode, TOGGLE_OPTIONAL_SEGMENT_COMMAND, } from './variables';
17
19
  export type { Lex4Translations } from './i18n';
18
20
  export { DEFAULT_TRANSLATIONS, PT_BR_TRANSLATIONS } from './i18n';
19
21
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,YAAY,EACV,eAAe,EACf,iBAAiB,EACjB,wBAAwB,GACzB,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,YAAY,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAChE,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAExE,OAAO,EACL,WAAW,EACX,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AACtE,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAG5D,YAAY,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AACpE,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAGlD,YAAY,EACV,WAAW,EACX,OAAO,EACP,UAAU,EACV,YAAY,EACZ,aAAa,EACb,UAAU,EACV,SAAS,EACT,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,UAAU,EACV,OAAO,EACP,WAAW,EACX,aAAa,EACb,mBAAmB,EACnB,qBAAqB,EACrB,cAAc,GACf,MAAM,OAAO,CAAC;AACf,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,OAAO,CAAC;AAGhG,YAAY,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAC5E,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,eAAe,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AAG1G,YAAY,EAAE,gBAAgB,EAAE,MAAM,QAAQ,CAAC;AAC/C,OAAO,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,QAAQ,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,YAAY,EACV,eAAe,EACf,iBAAiB,EACjB,wBAAwB,GACzB,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,YAAY,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAChE,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAExE,OAAO,EACL,WAAW,EACX,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AACtE,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAG5D,YAAY,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AACpE,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAGlD,YAAY,EACV,WAAW,EACX,OAAO,EACP,UAAU,EACV,YAAY,EACZ,aAAa,EACb,UAAU,EACV,SAAS,EACT,WAAW,EACX,YAAY,EACZ,kBAAkB,EAClB,YAAY,EACZ,UAAU,EACV,OAAO,EACP,WAAW,EACX,aAAa,EACb,mBAAmB,EACnB,qBAAqB,EACrB,cAAc,GACf,MAAM,OAAO,CAAC;AACf,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,OAAO,CAAC;AAGhG,YAAY,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAC5E,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,eAAe,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AAC1G,YAAY,EAAE,6BAA6B,EAAE,MAAM,aAAa,CAAC;AACjE,OAAO,EACL,mBAAmB,EACnB,0BAA0B,EAC1B,sBAAsB,EACtB,+BAA+B,GAChC,MAAM,aAAa,CAAC;AAGrB,YAAY,EAAE,gBAAgB,EAAE,MAAM,QAAQ,CAAC;AAC/C,OAAO,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,QAAQ,CAAC"}
@@ -520,7 +520,8 @@ const DEFAULT_TRANSLATIONS = {
520
520
  fontChanged: "Font changed to {{value}}",
521
521
  fontSizeChanged: "Font size changed to {{value}}pt",
522
522
  blockTypeChanged: "Block type changed to {{value}}",
523
- insertedDocumentContent: "Inserted document content"
523
+ insertedDocumentContent: "Inserted document content",
524
+ optionalSegmentToggled: "Optional section toggled"
524
525
  }
525
526
  },
526
527
  variables: {
@@ -541,7 +542,9 @@ const DEFAULT_TRANSLATIONS = {
541
542
  createVariableSave: "Add variable",
542
543
  createVariableCancel: "Cancel",
543
544
  createVariableMissingFields: "Label and key are required.",
544
- createVariableDuplicateKey: "Variable {{key}} already exists."
545
+ createVariableDuplicateKey: "Variable {{key}} already exists.",
546
+ optionalSegmentToggle: "Optional section",
547
+ optionalSegmentTooltip: "Optional section — appears only when all fields have a value"
545
548
  },
546
549
  header: {
547
550
  placeholder: "Header"
@@ -664,7 +667,8 @@ const PT_BR_TRANSLATIONS = {
664
667
  fontChanged: "Fonte alterada para {{value}}",
665
668
  fontSizeChanged: "Tamanho da fonte alterado para {{value}}pt",
666
669
  blockTypeChanged: "Tipo de bloco alterado para {{value}}",
667
- insertedDocumentContent: "Conteúdo do documento inserido"
670
+ insertedDocumentContent: "Conteúdo do documento inserido",
671
+ optionalSegmentToggled: "Seção opcional alternada"
668
672
  }
669
673
  },
670
674
  variables: {
@@ -685,7 +689,9 @@ const PT_BR_TRANSLATIONS = {
685
689
  createVariableSave: "Adicionar variável",
686
690
  createVariableCancel: "Cancelar",
687
691
  createVariableMissingFields: "Rótulo e chave são obrigatórios.",
688
- createVariableDuplicateKey: "A variável {{key}} já existe."
692
+ createVariableDuplicateKey: "A variável {{key}} já existe.",
693
+ optionalSegmentToggle: "Seção opcional",
694
+ optionalSegmentTooltip: "Seção opcional — aparece apenas quando todos os campos têm valor"
689
695
  },
690
696
  header: {
691
697
  placeholder: "Cabeçalho"
@@ -863,7 +869,9 @@ const DEFAULT_TOOLBAR_STYLE_SNAPSHOT = {
863
869
  isItalic: false,
864
870
  isUnderline: false,
865
871
  isStrikethrough: false,
866
- hasSelectedVariable: false
872
+ hasSelectedVariable: false,
873
+ hasTextSelection: false,
874
+ insideOptionalSegment: false
867
875
  };
868
876
  function createToolbarStyleStore(initialSnapshot = DEFAULT_TOOLBAR_STYLE_SNAPSHOT) {
869
877
  return createStore((set) => ({
@@ -1579,33 +1587,33 @@ const createLucideIcon = (iconName, iconNode) => {
1579
1587
  * This source code is licensed under the ISC license.
1580
1588
  * See the LICENSE file in the root directory of this source tree.
1581
1589
  */
1582
- const __iconNode$r = [
1590
+ const __iconNode$s = [
1583
1591
  ["path", { d: "m15 16 2.536-7.328a1.02 1.02 1 0 1 1.928 0L22 16", key: "xik6mr" }],
1584
1592
  ["path", { d: "M15.697 14h5.606", key: "1stdlc" }],
1585
1593
  ["path", { d: "m2 16 4.039-9.69a.5.5 0 0 1 .923 0L11 16", key: "d5nyq2" }],
1586
1594
  ["path", { d: "M3.304 13h6.392", key: "1q3zxz" }]
1587
1595
  ];
1588
- const ALargeSmall = createLucideIcon("a-large-small", __iconNode$r);
1596
+ const ALargeSmall = createLucideIcon("a-large-small", __iconNode$s);
1589
1597
  /**
1590
1598
  * @license lucide-react v1.8.0 - ISC
1591
1599
  *
1592
1600
  * This source code is licensed under the ISC license.
1593
1601
  * See the LICENSE file in the root directory of this source tree.
1594
1602
  */
1595
- const __iconNode$q = [
1603
+ const __iconNode$r = [
1596
1604
  [
1597
1605
  "path",
1598
1606
  { d: "M6 12h9a4 4 0 0 1 0 8H7a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1h7a4 4 0 0 1 0 8", key: "mg9rjx" }
1599
1607
  ]
1600
1608
  ];
1601
- const Bold = createLucideIcon("bold", __iconNode$q);
1609
+ const Bold = createLucideIcon("bold", __iconNode$r);
1602
1610
  /**
1603
1611
  * @license lucide-react v1.8.0 - ISC
1604
1612
  *
1605
1613
  * This source code is licensed under the ISC license.
1606
1614
  * See the LICENSE file in the root directory of this source tree.
1607
1615
  */
1608
- const __iconNode$p = [
1616
+ const __iconNode$q = [
1609
1617
  [
1610
1618
  "path",
1611
1619
  { d: "M8 3H7a2 2 0 0 0-2 2v5a2 2 0 0 1-2 2 2 2 0 0 1 2 2v5c0 1.1.9 2 2 2h1", key: "ezmyqa" }
@@ -1618,7 +1626,18 @@ const __iconNode$p = [
1618
1626
  }
1619
1627
  ]
1620
1628
  ];
1621
- const Braces = createLucideIcon("braces", __iconNode$p);
1629
+ const Braces = createLucideIcon("braces", __iconNode$q);
1630
+ /**
1631
+ * @license lucide-react v1.8.0 - ISC
1632
+ *
1633
+ * This source code is licensed under the ISC license.
1634
+ * See the LICENSE file in the root directory of this source tree.
1635
+ */
1636
+ const __iconNode$p = [
1637
+ ["path", { d: "M16 3h3a1 1 0 0 1 1 1v16a1 1 0 0 1-1 1h-3", key: "1kt8lf" }],
1638
+ ["path", { d: "M8 21H5a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h3", key: "gduv9" }]
1639
+ ];
1640
+ const Brackets = createLucideIcon("brackets", __iconNode$p);
1622
1641
  /**
1623
1642
  * @license lucide-react v1.8.0 - ISC
1624
1643
  *
@@ -2748,7 +2767,7 @@ function VariableChip({
2748
2767
  className,
2749
2768
  "data-testid": `variable-chip-${variableKey}`,
2750
2769
  "data-variable-group": group,
2751
- title: variableKey,
2770
+ title: label,
2752
2771
  style,
2753
2772
  onMouseDown: handleMouseDown,
2754
2773
  onMouseUp: handleMouseUp,
@@ -3409,6 +3428,154 @@ const CanvasControls = () => {
3409
3428
  )
3410
3429
  ] });
3411
3430
  };
3431
+ class OptionalSegmentNode extends lexical.ElementNode {
3432
+ static getType() {
3433
+ return "optional-segment";
3434
+ }
3435
+ static clone(node) {
3436
+ return new OptionalSegmentNode(node.__key);
3437
+ }
3438
+ constructor(key) {
3439
+ super(key);
3440
+ }
3441
+ // -- Serialization --
3442
+ static importJSON(serializedNode) {
3443
+ const node = $createOptionalSegmentNode();
3444
+ node.setFormat(serializedNode.format);
3445
+ node.setIndent(serializedNode.indent);
3446
+ node.setDirection(serializedNode.direction);
3447
+ return node;
3448
+ }
3449
+ exportJSON() {
3450
+ return {
3451
+ ...super.exportJSON(),
3452
+ type: "optional-segment",
3453
+ version: 1
3454
+ };
3455
+ }
3456
+ // -- DOM --
3457
+ createDOM() {
3458
+ const span = document.createElement("span");
3459
+ span.className = "lex4-optional-segment";
3460
+ span.setAttribute("data-lex4-optional-segment", "true");
3461
+ span.setAttribute("data-testid", "optional-segment");
3462
+ return span;
3463
+ }
3464
+ updateDOM() {
3465
+ return false;
3466
+ }
3467
+ exportDOM() {
3468
+ const span = document.createElement("span");
3469
+ span.setAttribute("data-lex4-optional-segment", "true");
3470
+ return { element: span };
3471
+ }
3472
+ static importDOM() {
3473
+ return null;
3474
+ }
3475
+ // -- Behavior --
3476
+ isInline() {
3477
+ return true;
3478
+ }
3479
+ canBeEmpty() {
3480
+ return false;
3481
+ }
3482
+ canInsertTextBefore() {
3483
+ return false;
3484
+ }
3485
+ canInsertTextAfter() {
3486
+ return false;
3487
+ }
3488
+ insertNewAfter(_, restoreSelection = true) {
3489
+ const segment = $createOptionalSegmentNode();
3490
+ this.insertAfter(segment, restoreSelection);
3491
+ return segment;
3492
+ }
3493
+ extractWithChild(_child, selection2, _destination) {
3494
+ if (!lexical.$isRangeSelection(selection2)) {
3495
+ return false;
3496
+ }
3497
+ const anchorNode = selection2.anchor.getNode();
3498
+ const focusNode = selection2.focus.getNode();
3499
+ return this.isParentOf(anchorNode) && this.isParentOf(focusNode) && selection2.getTextContent().length > 0;
3500
+ }
3501
+ }
3502
+ function $createOptionalSegmentNode() {
3503
+ return lexical.$applyNodeReplacement(new OptionalSegmentNode());
3504
+ }
3505
+ function $isOptionalSegmentNode(node) {
3506
+ return node instanceof OptionalSegmentNode;
3507
+ }
3508
+ const TOGGLE_OPTIONAL_SEGMENT_COMMAND = lexical.createCommand(
3509
+ "TOGGLE_OPTIONAL_SEGMENT"
3510
+ );
3511
+ function $getAncestorOptionalSegment(node) {
3512
+ let current = node;
3513
+ while (current !== null) {
3514
+ if ($isOptionalSegmentNode(current)) {
3515
+ return current;
3516
+ }
3517
+ current = typeof current.getParent === "function" ? current.getParent() : null;
3518
+ }
3519
+ return null;
3520
+ }
3521
+ function $unwrapOptionalSegment(segment) {
3522
+ for (const child of segment.getChildren()) {
3523
+ segment.insertBefore(child);
3524
+ }
3525
+ segment.remove();
3526
+ }
3527
+ function containsOptionalSegment(node) {
3528
+ if ($isOptionalSegmentNode(node)) {
3529
+ return true;
3530
+ }
3531
+ if (lexical.$isElementNode(node)) {
3532
+ return node.getChildren().some(containsOptionalSegment);
3533
+ }
3534
+ return false;
3535
+ }
3536
+ function $toggleOptionalSegment() {
3537
+ const selection2 = lexical.$getSelection();
3538
+ if (!lexical.$isRangeSelection(selection2)) {
3539
+ return false;
3540
+ }
3541
+ const anchorSegment = $getAncestorOptionalSegment(selection2.anchor.getNode());
3542
+ const focusSegment = $getAncestorOptionalSegment(selection2.focus.getNode());
3543
+ if (anchorSegment !== null || focusSegment !== null) {
3544
+ if (anchorSegment !== null && focusSegment !== null && anchorSegment !== focusSegment) {
3545
+ return false;
3546
+ }
3547
+ $unwrapOptionalSegment(anchorSegment ?? focusSegment);
3548
+ return true;
3549
+ }
3550
+ if (selection2.isCollapsed()) {
3551
+ return false;
3552
+ }
3553
+ const anchorTop = selection2.anchor.getNode().getTopLevelElement();
3554
+ const focusTop = selection2.focus.getNode().getTopLevelElement();
3555
+ if (anchorTop === null || anchorTop !== focusTop) {
3556
+ return false;
3557
+ }
3558
+ const extracted = selection2.extract();
3559
+ const inlineNodes = extracted.filter((node) => {
3560
+ if (lexical.$isElementNode(node) && !node.isInline()) {
3561
+ return false;
3562
+ }
3563
+ return !node.getParents().some((parent) => extracted.includes(parent));
3564
+ });
3565
+ if (inlineNodes.length === 0) {
3566
+ return false;
3567
+ }
3568
+ if (inlineNodes.some(containsOptionalSegment)) {
3569
+ return false;
3570
+ }
3571
+ const segment = $createOptionalSegmentNode();
3572
+ inlineNodes[0].insertBefore(segment);
3573
+ for (const node of inlineNodes) {
3574
+ segment.append(node);
3575
+ }
3576
+ segment.selectEnd();
3577
+ return true;
3578
+ }
3412
3579
  const FORMAT_MASKS = {
3413
3580
  bold: 1,
3414
3581
  italic: 2,
@@ -3502,6 +3669,7 @@ function hasInlineFormat(node, format) {
3502
3669
  function readToolbarStyleSnapshot(editor, editorState = editor.getEditorState()) {
3503
3670
  let snapshot = DEFAULT_TOOLBAR_STYLE_SNAPSHOT;
3504
3671
  editorState.read(() => {
3672
+ var _a;
3505
3673
  const currentSelection = lexical.$getSelection();
3506
3674
  const selection2 = lexical.$isNodeSelection(currentSelection) || lexical.$isRangeSelection(currentSelection) ? currentSelection : lexical.$createRangeSelectionFromDom(window.getSelection(), editor) ?? currentSelection;
3507
3675
  if (lexical.$isNodeSelection(selection2)) {
@@ -3521,7 +3689,9 @@ function readToolbarStyleSnapshot(editor, editorState = editor.getEditorState())
3521
3689
  isItalic: variableNodes.every((node) => (node.getFormat() & FORMAT_MASKS.italic) !== 0),
3522
3690
  isUnderline: variableNodes.every((node) => (node.getFormat() & FORMAT_MASKS.underline) !== 0),
3523
3691
  isStrikethrough: variableNodes.every((node) => (node.getFormat() & FORMAT_MASKS.strikethrough) !== 0),
3524
- hasSelectedVariable: true
3692
+ hasSelectedVariable: true,
3693
+ hasTextSelection: false,
3694
+ insideOptionalSegment: $getAncestorOptionalSegment(firstVariableNode) !== null
3525
3695
  };
3526
3696
  return;
3527
3697
  }
@@ -3542,7 +3712,9 @@ function readToolbarStyleSnapshot(editor, editorState = editor.getEditorState())
3542
3712
  isItalic: selection2.hasFormat("italic") || isCollapsed && hasInlineFormat(inlineStyleTarget, "italic"),
3543
3713
  isUnderline: selection2.hasFormat("underline") || isCollapsed && hasInlineFormat(inlineStyleTarget, "underline"),
3544
3714
  isStrikethrough: selection2.hasFormat("strikethrough") || isCollapsed && hasInlineFormat(inlineStyleTarget, "strikethrough"),
3545
- hasSelectedVariable: false
3715
+ hasSelectedVariable: false,
3716
+ hasTextSelection: !isCollapsed,
3717
+ insideOptionalSegment: $getAncestorOptionalSegment(anchorNode) !== null || $getAncestorOptionalSegment(((_a = selection2.focus) == null ? void 0 : _a.getNode()) ?? null) !== null
3546
3718
  };
3547
3719
  });
3548
3720
  return snapshot;
@@ -5800,6 +5972,8 @@ function mapInlineNode(node) {
5800
5972
  return mapVariableNode(node);
5801
5973
  case "linebreak":
5802
5974
  return mapLineBreak();
5975
+ case "optional-segment":
5976
+ return mapOptionalSegment(node);
5803
5977
  default:
5804
5978
  return { type: "text", text: "" };
5805
5979
  }
@@ -5823,6 +5997,12 @@ function mapVariableNode(node) {
5823
5997
  function mapLineBreak() {
5824
5998
  return { type: "linebreak" };
5825
5999
  }
6000
+ function mapOptionalSegment(node) {
6001
+ return {
6002
+ type: "optional-segment",
6003
+ children: mapInlineNodes(node.children ?? [])
6004
+ };
6005
+ }
5826
6006
  function mapInlineNodes(nodes) {
5827
6007
  return nodes.map(mapInlineNode);
5828
6008
  }
@@ -6078,6 +6258,11 @@ function buildLexicalNode(serializedNode) {
6078
6258
  typeof serializedNode.format === "number" ? serializedNode.format : 0,
6079
6259
  typeof serializedNode.style === "string" ? serializedNode.style : ""
6080
6260
  );
6261
+ case "optional-segment": {
6262
+ const node = $createOptionalSegmentNode();
6263
+ appendChildren(node, serializedNode.children);
6264
+ return node;
6265
+ }
6081
6266
  default:
6082
6267
  return null;
6083
6268
  }
@@ -6559,6 +6744,42 @@ const VariablePlugin = () => {
6559
6744
  }, [editor]);
6560
6745
  return null;
6561
6746
  };
6747
+ const OptionalSegmentPlugin = () => {
6748
+ const [editor] = LexicalComposerContext.useLexicalComposerContext();
6749
+ const t = useTranslations();
6750
+ React.useEffect(() => {
6751
+ return editor.registerCommand(
6752
+ TOGGLE_OPTIONAL_SEGMENT_COMMAND,
6753
+ () => {
6754
+ let handled = false;
6755
+ editor.update(() => {
6756
+ handled = $toggleOptionalSegment();
6757
+ });
6758
+ return handled;
6759
+ },
6760
+ lexical.COMMAND_PRIORITY_EDITOR
6761
+ );
6762
+ }, [editor]);
6763
+ React.useEffect(() => {
6764
+ return editor.registerMutationListener(
6765
+ OptionalSegmentNode,
6766
+ (mutations) => {
6767
+ editor.getEditorState().read(() => {
6768
+ for (const [key, mutation] of mutations) {
6769
+ if (mutation === "created" || mutation === "updated") {
6770
+ const element = editor.getElementByKey(key);
6771
+ if (element) {
6772
+ element.title = t.variables.optionalSegmentTooltip;
6773
+ }
6774
+ }
6775
+ }
6776
+ });
6777
+ },
6778
+ { skipInitialization: false }
6779
+ );
6780
+ }, [editor, t.variables.optionalSegmentTooltip]);
6781
+ return null;
6782
+ };
6562
6783
  const VariablePanel = ({ open, onClose }) => {
6563
6784
  const { definitions, refreshDefinitions } = useVariables();
6564
6785
  const { activeEditor, runHistoryAction } = useDocument();
@@ -6852,6 +7073,48 @@ const VariableToolbarToggle = () => {
6852
7073
  }
6853
7074
  );
6854
7075
  };
7076
+ const OptionalSegmentToolbarButton = () => {
7077
+ const { activeEditor, runHistoryAction } = useDocument();
7078
+ const toolbarConfig = useToolbarConfig();
7079
+ const t = useTranslations();
7080
+ const hasTextSelection = useToolbarStyleStore((state) => state.hasTextSelection);
7081
+ const insideOptionalSegment = useToolbarStyleStore((state) => state.insideOptionalSegment);
7082
+ if (!toolbarConfig.variables.visible) {
7083
+ return null;
7084
+ }
7085
+ if (!hasTextSelection && !insideOptionalSegment) {
7086
+ return null;
7087
+ }
7088
+ const handleClick = () => {
7089
+ if (!activeEditor) {
7090
+ return;
7091
+ }
7092
+ runHistoryAction(
7093
+ {
7094
+ label: t.history.actions.optionalSegmentToggled,
7095
+ source: "toolbar",
7096
+ region: "document"
7097
+ },
7098
+ () => {
7099
+ activeEditor.dispatchCommand(TOGGLE_OPTIONAL_SEGMENT_COMMAND, void 0);
7100
+ }
7101
+ );
7102
+ };
7103
+ return /* @__PURE__ */ jsxRuntime.jsx(
7104
+ "button",
7105
+ {
7106
+ type: "button",
7107
+ title: t.variables.optionalSegmentToggle,
7108
+ "aria-label": t.variables.optionalSegmentToggle,
7109
+ "aria-pressed": insideOptionalSegment,
7110
+ onMouseDown: (e) => e.preventDefault(),
7111
+ onClick: handleClick,
7112
+ className: `lex4-toolbar-btn${insideOptionalSegment ? " active" : ""}`,
7113
+ "data-testid": "btn-optional-segment",
7114
+ children: /* @__PURE__ */ jsxRuntime.jsx(Brackets, { size: 15 })
7115
+ }
7116
+ );
7117
+ };
6855
7118
  const VariablePanelWithState = () => {
6856
7119
  const { panelOpen, setPanelOpen } = useVariablePanelState();
6857
7120
  return /* @__PURE__ */ jsxRuntime.jsx(VariablePanel, { open: panelOpen, onClose: () => setPanelOpen(false) });
@@ -6879,8 +7142,9 @@ function variablesExtension(definitions = []) {
6879
7142
  };
6880
7143
  return {
6881
7144
  name: "variables",
6882
- nodes: [VariableNode],
6883
- bodyPlugins: [VariablePlugin],
7145
+ nodes: [VariableNode, OptionalSegmentNode],
7146
+ bodyPlugins: [VariablePlugin, OptionalSegmentPlugin],
7147
+ toolbarItems: [OptionalSegmentToolbarButton],
6884
7148
  toolbarEndItems: [VariableToolbarToggle],
6885
7149
  sidePanel: VariablePanelWithState,
6886
7150
  provider: ProviderWrapper,
@@ -6906,7 +7170,9 @@ function variablesExtension(definitions = []) {
6906
7170
  })
6907
7171
  };
6908
7172
  }
7173
+ exports.$createOptionalSegmentNode = $createOptionalSegmentNode;
6909
7174
  exports.$createVariableNode = $createVariableNode;
7175
+ exports.$isOptionalSegmentNode = $isOptionalSegmentNode;
6910
7176
  exports.$isVariableNode = $isVariableNode;
6911
7177
  exports.A4_HEIGHT_MM = A4_HEIGHT_MM;
6912
7178
  exports.A4_HEIGHT_PX = A4_HEIGHT_PX;
@@ -6918,7 +7184,9 @@ exports.INSERT_VARIABLE_COMMAND = INSERT_VARIABLE_COMMAND;
6918
7184
  exports.Lex4Editor = Lex4Editor;
6919
7185
  exports.MAX_FOOTER_HEIGHT_PX = MAX_FOOTER_HEIGHT_PX;
6920
7186
  exports.MAX_HEADER_HEIGHT_PX = MAX_HEADER_HEIGHT_PX;
7187
+ exports.OptionalSegmentNode = OptionalSegmentNode;
6921
7188
  exports.PT_BR_TRANSLATIONS = PT_BR_TRANSLATIONS;
7189
+ exports.TOGGLE_OPTIONAL_SEGMENT_COMMAND = TOGGLE_OPTIONAL_SEGMENT_COMMAND;
6922
7190
  exports.VariableNode = VariableNode;
6923
7191
  exports.astExtension = astExtension;
6924
7192
  exports.buildSavePayload = buildSavePayload;