@aster-editor/core 0.4.2 → 0.5.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.
Files changed (94) hide show
  1. package/README.md +191 -92
  2. package/dist/api/commands.d.ts +8 -1
  3. package/dist/api/commands.d.ts.map +1 -1
  4. package/dist/api/commands.js +3 -0
  5. package/dist/api/commands.js.map +1 -1
  6. package/dist/api/index.d.ts +2 -0
  7. package/dist/api/index.d.ts.map +1 -1
  8. package/dist/api/index.js +1 -0
  9. package/dist/api/index.js.map +1 -1
  10. package/dist/api/layout.d.ts +181 -0
  11. package/dist/api/layout.d.ts.map +1 -0
  12. package/dist/api/layout.js +28 -0
  13. package/dist/api/layout.js.map +1 -0
  14. package/dist/api/options.d.ts +6 -0
  15. package/dist/api/options.d.ts.map +1 -1
  16. package/dist/commands/layout.d.ts +40 -0
  17. package/dist/commands/layout.d.ts.map +1 -0
  18. package/dist/commands/layout.js +262 -0
  19. package/dist/commands/layout.js.map +1 -0
  20. package/dist/commands/standard.d.ts +4 -3
  21. package/dist/commands/standard.d.ts.map +1 -1
  22. package/dist/commands/standard.js +7 -3
  23. package/dist/commands/standard.js.map +1 -1
  24. package/dist/editor/aster-editor.d.ts +16 -1
  25. package/dist/editor/aster-editor.d.ts.map +1 -1
  26. package/dist/editor/aster-editor.js +41 -1
  27. package/dist/editor/aster-editor.js.map +1 -1
  28. package/dist/extensions/aster-extensions.d.ts +3 -0
  29. package/dist/extensions/aster-extensions.d.ts.map +1 -1
  30. package/dist/extensions/aster-extensions.js +24 -5
  31. package/dist/extensions/aster-extensions.js.map +1 -1
  32. package/dist/extensions/header-footer-sanitize.d.ts +22 -0
  33. package/dist/extensions/header-footer-sanitize.d.ts.map +1 -0
  34. package/dist/extensions/header-footer-sanitize.js +226 -0
  35. package/dist/extensions/header-footer-sanitize.js.map +1 -0
  36. package/dist/extensions/layout-css.d.ts +88 -0
  37. package/dist/extensions/layout-css.d.ts.map +1 -0
  38. package/dist/extensions/layout-css.js +297 -0
  39. package/dist/extensions/layout-css.js.map +1 -0
  40. package/dist/extensions/list-layout.d.ts +23 -0
  41. package/dist/extensions/list-layout.d.ts.map +1 -0
  42. package/dist/extensions/list-layout.js +65 -0
  43. package/dist/extensions/list-layout.js.map +1 -0
  44. package/dist/extensions/page-break.d.ts +8 -0
  45. package/dist/extensions/page-break.d.ts.map +1 -0
  46. package/dist/extensions/page-break.js +20 -0
  47. package/dist/extensions/page-break.js.map +1 -0
  48. package/dist/extensions/page-view.d.ts +68 -0
  49. package/dist/extensions/page-view.d.ts.map +1 -0
  50. package/dist/extensions/page-view.js +189 -0
  51. package/dist/extensions/page-view.js.map +1 -0
  52. package/dist/extensions/pagination-controller.d.ts +110 -0
  53. package/dist/extensions/pagination-controller.d.ts.map +1 -0
  54. package/dist/extensions/pagination-controller.js +295 -0
  55. package/dist/extensions/pagination-controller.js.map +1 -0
  56. package/dist/extensions/pagination-layout.d.ts +54 -0
  57. package/dist/extensions/pagination-layout.d.ts.map +1 -0
  58. package/dist/extensions/pagination-layout.js +109 -0
  59. package/dist/extensions/pagination-layout.js.map +1 -0
  60. package/dist/extensions/pagination-measure.d.ts +42 -0
  61. package/dist/extensions/pagination-measure.d.ts.map +1 -0
  62. package/dist/extensions/pagination-measure.js +108 -0
  63. package/dist/extensions/pagination-measure.js.map +1 -0
  64. package/dist/extensions/pagination.d.ts +36 -0
  65. package/dist/extensions/pagination.d.ts.map +1 -0
  66. package/dist/extensions/pagination.js +69 -0
  67. package/dist/extensions/pagination.js.map +1 -0
  68. package/dist/extensions/paragraph-layout.d.ts +62 -0
  69. package/dist/extensions/paragraph-layout.d.ts.map +1 -0
  70. package/dist/extensions/paragraph-layout.js +227 -0
  71. package/dist/extensions/paragraph-layout.js.map +1 -0
  72. package/dist/extensions/run-layout.d.ts +79 -0
  73. package/dist/extensions/run-layout.d.ts.map +1 -0
  74. package/dist/extensions/run-layout.js +302 -0
  75. package/dist/extensions/run-layout.js.map +1 -0
  76. package/dist/extensions/table-layout.d.ts +85 -0
  77. package/dist/extensions/table-layout.d.ts.map +1 -0
  78. package/dist/extensions/table-layout.js +314 -0
  79. package/dist/extensions/table-layout.js.map +1 -0
  80. package/dist/html/serialize-html.d.ts +42 -0
  81. package/dist/html/serialize-html.d.ts.map +1 -0
  82. package/dist/html/serialize-html.js +159 -0
  83. package/dist/html/serialize-html.js.map +1 -0
  84. package/dist/i18n/en.d.ts.map +1 -1
  85. package/dist/i18n/en.js +8 -0
  86. package/dist/i18n/en.js.map +1 -1
  87. package/dist/i18n/fr.d.ts.map +1 -1
  88. package/dist/i18n/fr.js +8 -0
  89. package/dist/i18n/fr.js.map +1 -1
  90. package/dist/index.d.ts +11 -0
  91. package/dist/index.d.ts.map +1 -1
  92. package/dist/index.js +13 -0
  93. package/dist/index.js.map +1 -1
  94. package/package.json +2 -1
@@ -0,0 +1,181 @@
1
+ /**
2
+ * Contrat de mise en page (session 3). Partagé par `core` (attributs de paragraphe,
3
+ * marques de run, vue page), `word` (lecture et écriture `.docx`) et `angular`.
4
+ *
5
+ * Principe : tout ce qui vient de Word et que l'éditeur sait représenter devient un
6
+ * attribut ProseMirror sérialisé en `style` inline normalisé ou en `data-docx-*` ; tout ce
7
+ * qu'il ne sait pas représenter reste dans le gabarit `.docx` (hors corps) ou est signalé.
8
+ *
9
+ * Unités : millimètres pour la page, points typographiques (pt) pour le texte et les
10
+ * paragraphes, nombre sans unité pour un interligne multiple. Jamais de twips ni d'EMU
11
+ * hors du paquet `word`.
12
+ */
13
+ /** Formats de page nommés, dimensions ISO et US usuelles. */
14
+ export type PageSizeName = 'A3' | 'A4' | 'A5' | 'Letter' | 'Legal';
15
+ /** Format libre en millimètres, quand le document n'utilise pas un format nommé. */
16
+ export interface PageDimensions {
17
+ readonly widthMm: number;
18
+ readonly heightMm: number;
19
+ }
20
+ export type PageOrientation = 'portrait' | 'landscape';
21
+ /** Marges en millimètres ; `headerMm` / `footerMm` = distance du bord à l'en-tête / au pied. */
22
+ export interface PageMargins {
23
+ readonly topMm?: number;
24
+ readonly rightMm?: number;
25
+ readonly bottomMm?: number;
26
+ readonly leftMm?: number;
27
+ readonly headerMm?: number;
28
+ readonly footerMm?: number;
29
+ }
30
+ export interface PageSetup {
31
+ /** `A4` par défaut. */
32
+ readonly size?: PageSizeName | PageDimensions;
33
+ /** `portrait` par défaut. */
34
+ readonly orientation?: PageOrientation;
35
+ readonly margins?: PageMargins;
36
+ }
37
+ /** Un en-tête ou un pied : fragment HTML stylé (mêmes règles que le corps). */
38
+ export interface HeaderFooterContent {
39
+ readonly html: string;
40
+ }
41
+ /**
42
+ * Jeu d'en-têtes ou de pieds d'une section : `default` sur toutes les pages, `first` sur
43
+ * la première si `DocumentLayout.titlePage` est vrai, `even` sur les pages paires si le
44
+ * document distingue pages paires et impaires.
45
+ */
46
+ export interface HeaderFooterSet {
47
+ readonly default?: HeaderFooterContent;
48
+ readonly first?: HeaderFooterContent;
49
+ readonly even?: HeaderFooterContent;
50
+ }
51
+ /** Police par défaut du document (style `Normal` résolu). */
52
+ export interface DefaultFont {
53
+ readonly family?: string;
54
+ readonly sizePt?: number;
55
+ }
56
+ /**
57
+ * Mise en page d'un document : ce que l'import `.docx` lit dans la dernière section et
58
+ * ce que l'export réécrit (export neuf) ou conserve (export dans le gabarit). Tous les
59
+ * champs sont optionnels : un objet vide = les défauts d'Aster (A4 portrait, 25,4 mm).
60
+ */
61
+ export interface DocumentLayout {
62
+ readonly page?: PageSetup;
63
+ /** Nombre de colonnes de texte, 1 par défaut. Conservé, non affiché par la vue page. */
64
+ readonly columns?: number;
65
+ readonly defaultFont?: DefaultFont;
66
+ /** Langue BCP 47 du document, ex. `fr-FR`. */
67
+ readonly lang?: string;
68
+ readonly headers?: HeaderFooterSet;
69
+ readonly footers?: HeaderFooterSet;
70
+ /** Première page différente (en-tête et pied `first`). */
71
+ readonly titlePage?: boolean;
72
+ }
73
+ /** Côtés d'une bordure de paragraphe ; `between` sépare deux paragraphes bordés consécutifs. */
74
+ export type BorderSide = 'top' | 'right' | 'bottom' | 'left' | 'between';
75
+ export type BorderStyle = 'solid' | 'dashed' | 'dotted' | 'double';
76
+ export interface BlockBorder {
77
+ readonly side: BorderSide;
78
+ readonly style: BorderStyle;
79
+ /** Épaisseur en points. */
80
+ readonly widthPt: number;
81
+ /** Couleur CSS (`#rrggbb`). */
82
+ readonly color: string;
83
+ }
84
+ /**
85
+ * Attributs de mise en page d'un paragraphe ou d'un titre. `null` ou absent = hérité du
86
+ * style de l'éditeur. Sérialisation HTML figée, dans cet ordre, uniquement pour les
87
+ * valeurs présentes :
88
+ *
89
+ * `<p style="line-height: 1.15; margin-top: 6pt; margin-bottom: 6pt; margin-left: 36pt;
90
+ * margin-right: 0pt; text-indent: 18pt; border-bottom: 1pt solid #000000;
91
+ * background-color: #eeeeee" data-docx-style="Normal" data-keep-next data-page-break-before>`
92
+ *
93
+ * `lineHeight` (multiple, sans unité) et `lineHeightPt` (exact, en pt) sont exclusifs :
94
+ * `lineHeightPt` l'emporte et se sérialise en `line-height: 14pt`. Un retrait négatif de
95
+ * première ligne (`indentFirstLinePt < 0`) est un retrait suspendu. `setHTML(getHTML())`
96
+ * doit conserver chaque attribut à l'identique.
97
+ */
98
+ export interface ParagraphLayoutAttrs {
99
+ readonly lineHeight?: number | null;
100
+ readonly lineHeightPt?: number | null;
101
+ readonly spacingBeforePt?: number | null;
102
+ readonly spacingAfterPt?: number | null;
103
+ readonly indentLeftPt?: number | null;
104
+ readonly indentRightPt?: number | null;
105
+ readonly indentFirstLinePt?: number | null;
106
+ readonly borders?: readonly BlockBorder[] | null;
107
+ /** Fond du paragraphe, couleur CSS. */
108
+ readonly shading?: string | null;
109
+ readonly keepWithNext?: boolean | null;
110
+ readonly pageBreakBefore?: boolean | null;
111
+ /**
112
+ * Identifiant du style Word d'origine (`Heading1`, `Normal`, style personnalisé), posé
113
+ * par l'import et relu par l'export dans le gabarit, qui ne réécrit en propriétés
114
+ * directes que ce qui diffère du style. Jamais interprété par l'éditeur.
115
+ */
116
+ readonly docxStyle?: string | null;
117
+ }
118
+ /** Noms des attributs de `ParagraphLayoutAttrs`, dans l'ordre de sérialisation. */
119
+ export declare const PARAGRAPH_LAYOUT_ATTR_NAMES: readonly ["lineHeight", "lineHeightPt", "spacingBeforePt", "spacingAfterPt", "indentLeftPt", "indentRightPt", "indentFirstLinePt", "borders", "shading", "keepWithNext", "pageBreakBefore", "docxStyle"];
120
+ export type ParagraphLayoutAttrName = (typeof PARAGRAPH_LAYOUT_ATTR_NAMES)[number];
121
+ /**
122
+ * Attributs de run portés par la marque `textStyle` en plus de ceux de Tiptap (`fontFamily`,
123
+ * `fontSize`, `color`, `backgroundColor`). Sérialisés dans le `style` du `<span>` :
124
+ * `letter-spacing: 1pt`, `text-transform: uppercase`, `font-variant: small-caps`.
125
+ * Le nom du style de caractère Word va dans `data-docx-run-style`.
126
+ */
127
+ export interface RunLayoutAttrs {
128
+ readonly letterSpacingPt?: number | null;
129
+ readonly caps?: 'all' | 'small' | null;
130
+ readonly docxRunStyle?: string | null;
131
+ }
132
+ /** Styles de trait des marques `underline` et `strike` : `style="text-decoration-style: …"`. */
133
+ export type DecorationStyle = 'solid' | 'double' | 'dotted' | 'dashed' | 'wavy';
134
+ /** Formats de numérotation d'une liste ordonnée, valeurs de l'attribut HTML `type`. */
135
+ export type OrderedListType = '1' | 'a' | 'A' | 'i' | 'I';
136
+ /**
137
+ * Attributs des listes. `<ol type="a" start="3" data-docx-num-id="5">`,
138
+ * `<ul data-bullet="–" data-docx-num-id="7">`. `docxNumId` relie la liste à la définition
139
+ * de numérotation du gabarit pour l'export, jamais interprété par l'éditeur.
140
+ */
141
+ export interface ListLayoutAttrs {
142
+ readonly type?: OrderedListType | null;
143
+ readonly start?: number | null;
144
+ readonly bullet?: string | null;
145
+ readonly docxNumId?: string | null;
146
+ }
147
+ /** Alignement vertical du contenu d'une cellule. */
148
+ export type CellVerticalAlign = 'top' | 'middle' | 'bottom';
149
+ /**
150
+ * Attributs de tableau et de cellule, sérialisés en `style` :
151
+ * table : `width: 100%` ou `width: 450pt`, `border-collapse` implicite, `data-docx-style` ;
152
+ * cellule : `border-top: 0.5pt solid #000000` (un par côté), `background-color: #rrggbb`,
153
+ * `vertical-align: middle`, `padding: 2pt 4pt`. `colwidth` reste celui de Tiptap.
154
+ */
155
+ export interface TableLayoutAttrs {
156
+ readonly width?: string | null;
157
+ readonly borders?: readonly BlockBorder[] | null;
158
+ readonly docxStyle?: string | null;
159
+ }
160
+ export interface CellLayoutAttrs {
161
+ readonly borders?: readonly BlockBorder[] | null;
162
+ readonly shading?: string | null;
163
+ readonly verticalAlign?: CellVerticalAlign | null;
164
+ /** Marges internes en points : `top right bottom left`. */
165
+ readonly paddingPt?: readonly [number, number, number, number] | null;
166
+ }
167
+ /**
168
+ * Vue page : l'hôte de l'éditeur rend une feuille aux dimensions et marges de
169
+ * `layout.page`, avec les en-têtes et pieds `default` en lecture seule au-dessus et
170
+ * au-dessous du corps. La pagination est **approximative** : des coupures visuelles sont
171
+ * posées là où la hauteur utile de la page est dépassée (blocs insécables, sauts de page
172
+ * explicites respectés), sans garantie d'exactitude avec Word.
173
+ */
174
+ export interface PageViewOptions {
175
+ readonly layout?: DocumentLayout;
176
+ /** Afficher les en-têtes et pieds, vrai par défaut. */
177
+ readonly showHeadersFooters?: boolean;
178
+ /** Pagination approximative (coupures visuelles, numéros de page), vrai par défaut. */
179
+ readonly pagination?: boolean;
180
+ }
181
+ //# sourceMappingURL=layout.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"layout.d.ts","sourceRoot":"","sources":["../../src/api/layout.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Contrat de mise en page (session 3). Partagé par `core` (attributs de paragraphe,
3
+ * marques de run, vue page), `word` (lecture et écriture `.docx`) et `angular`.
4
+ *
5
+ * Principe : tout ce qui vient de Word et que l'éditeur sait représenter devient un
6
+ * attribut ProseMirror sérialisé en `style` inline normalisé ou en `data-docx-*` ; tout ce
7
+ * qu'il ne sait pas représenter reste dans le gabarit `.docx` (hors corps) ou est signalé.
8
+ *
9
+ * Unités : millimètres pour la page, points typographiques (pt) pour le texte et les
10
+ * paragraphes, nombre sans unité pour un interligne multiple. Jamais de twips ni d'EMU
11
+ * hors du paquet `word`.
12
+ */
13
+ /** Noms des attributs de `ParagraphLayoutAttrs`, dans l'ordre de sérialisation. */
14
+ export const PARAGRAPH_LAYOUT_ATTR_NAMES = [
15
+ 'lineHeight',
16
+ 'lineHeightPt',
17
+ 'spacingBeforePt',
18
+ 'spacingAfterPt',
19
+ 'indentLeftPt',
20
+ 'indentRightPt',
21
+ 'indentFirstLinePt',
22
+ 'borders',
23
+ 'shading',
24
+ 'keepWithNext',
25
+ 'pageBreakBefore',
26
+ 'docxStyle',
27
+ ];
28
+ //# sourceMappingURL=layout.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"layout.js","sourceRoot":"","sources":["../../src/api/layout.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAwHH,mFAAmF;AACnF,MAAM,CAAC,MAAM,2BAA2B,GAAG;IACzC,YAAY;IACZ,cAAc;IACd,iBAAiB;IACjB,gBAAgB;IAChB,cAAc;IACd,eAAe;IACf,mBAAmB;IACnB,SAAS;IACT,SAAS;IACT,cAAc;IACd,iBAAiB;IACjB,WAAW;CACH,CAAC"}
@@ -2,6 +2,7 @@ import type { AnyExtension } from '@tiptap/core';
2
2
  import type { AsterCommand } from './commands';
3
3
  import type { AsterDocument } from './document';
4
4
  import type { AsterLocale } from './i18n';
5
+ import type { PageViewOptions } from './layout';
5
6
  import type { PasteTransformer } from './paste';
6
7
  import type { VariableSource } from './variables';
7
8
  /** Politique de sécurité et de comportement des liens. */
@@ -43,6 +44,11 @@ export interface AsterOptions {
43
44
  linkPolicy?: LinkPolicy;
44
45
  /** Variables de document (champs de fusion) : déclarations, valeurs, résolveur. */
45
46
  variables?: VariableSource;
47
+ /**
48
+ * Vue page : feuille aux dimensions et marges de `layout.page`, en-têtes et pieds
49
+ * affichés en lecture seule. `true` = A4 portrait par défaut. Pagination approximative, désactivable par `pagination: false`.
50
+ */
51
+ pageView?: boolean | PageViewOptions;
46
52
  /**
47
53
  * Désactive des commandes standard par identifiant. Utile pour une toolbar réduite
48
54
  * qui veut aussi bloquer le raccourci clavier correspondant.
@@ -1 +1 @@
1
- {"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../../src/api/options.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAC1C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAChD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAElD,0DAA0D;AAC1D,MAAM,WAAW,UAAU;IACzB,oFAAoF;IACpF,gBAAgB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,wCAAwC;IACxC,aAAa,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC;IACnC,gEAAgE;IAChE,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,uEAAuE;IACvE,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;;GAGG;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;AAE5D,wEAAwE;AACxE,MAAM,WAAW,YAAY;IAC3B,wFAAwF;IACxF,OAAO,EAAE,WAAW,CAAC;IACrB,8CAA8C;IAC9C,OAAO,CAAC,EAAE,MAAM,GAAG,aAAa,CAAC;IACjC,gDAAgD;IAChD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,wCAAwC;IACxC,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,kCAAkC;IAClC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,wEAAwE;IACxE,UAAU,CAAC,EAAE,SAAS,YAAY,EAAE,CAAC;IACrC,gDAAgD;IAChD,QAAQ,CAAC,EAAE,SAAS,YAAY,EAAE,CAAC;IACnC,8DAA8D;IAC9D,iBAAiB,CAAC,EAAE,SAAS,gBAAgB,EAAE,CAAC;IAChD,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,mFAAmF;IACnF,SAAS,CAAC,EAAE,cAAc,CAAC;IAC3B;;;OAGG;IACH,gBAAgB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACtC"}
1
+ {"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../../src/api/options.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAC1C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAChD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAChD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAElD,0DAA0D;AAC1D,MAAM,WAAW,UAAU;IACzB,oFAAoF;IACpF,gBAAgB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,wCAAwC;IACxC,aAAa,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC;IACnC,gEAAgE;IAChE,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,uEAAuE;IACvE,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;;GAGG;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;AAE5D,wEAAwE;AACxE,MAAM,WAAW,YAAY;IAC3B,wFAAwF;IACxF,OAAO,EAAE,WAAW,CAAC;IACrB,8CAA8C;IAC9C,OAAO,CAAC,EAAE,MAAM,GAAG,aAAa,CAAC;IACjC,gDAAgD;IAChD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,wCAAwC;IACxC,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,kCAAkC;IAClC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,wEAAwE;IACxE,UAAU,CAAC,EAAE,SAAS,YAAY,EAAE,CAAC;IACrC,gDAAgD;IAChD,QAAQ,CAAC,EAAE,SAAS,YAAY,EAAE,CAAC;IACnC,8DAA8D;IAC9D,iBAAiB,CAAC,EAAE,SAAS,gBAAgB,EAAE,CAAC;IAChD,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,mFAAmF;IACnF,SAAS,CAAC,EAAE,cAAc,CAAC;IAC3B;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,GAAG,eAAe,CAAC;IACrC;;;OAGG;IACH,gBAAgB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACtC"}
@@ -0,0 +1,40 @@
1
+ import { type AsterCommand, type AsterEditor } from '../api';
2
+ import { type RunCaps } from '../extensions/run-layout';
3
+ /** Arguments de `text.setLetterSpacing` : espacement en points, `null` pour retirer. */
4
+ export interface SetLetterSpacingArgs {
5
+ pt: number | null;
6
+ }
7
+ /** Arguments de `text.setCaps` : `all` (majuscules) ou `small` (petites capitales). */
8
+ export interface SetCapsArgs {
9
+ caps: RunCaps;
10
+ }
11
+ /** Identifiants des commandes de run de mise en page, enregistrées en plus de `STANDARD_COMMAND_IDS`. */
12
+ export declare const TEXT_LAYOUT_COMMAND_IDS: readonly ["text.setLetterSpacing", "text.setCaps", "text.unsetCaps"];
13
+ export type TextLayoutCommandId = (typeof TEXT_LAYOUT_COMMAND_IDS)[number];
14
+ /** Vrai si la sélection touche au moins un paragraphe ou un titre. */
15
+ export declare function hasLayoutBlockInSelection(editor: AsterEditor): boolean;
16
+ /**
17
+ * Commandes standard de mise en page des paragraphes.
18
+ *
19
+ * - `paragraph.setLayout` fusionne les attributs donnés dans chaque paragraphe et titre de
20
+ * la sélection ; `null` efface un attribut, un attribut absent est laissé tel quel, une
21
+ * valeur invalide est ignorée (et `run` rend `false` s'il ne reste rien de valide).
22
+ * Les valeurs sont normalisées (nombres arrondis, couleurs `#rrggbb`, bordures filtrées).
23
+ * - `paragraph.unsetLayout` efface les attributs nommés dans `attrs`, ou tous sans argument.
24
+ *
25
+ * `canRun` est vrai dès que la sélection contient un bloc de texte éditable (la lecture
26
+ * seule est filtrée par le registre). Pas de raccourci : ce sont des commandes de menu.
27
+ */
28
+ export declare const PARAGRAPH_LAYOUT_COMMANDS: readonly AsterCommand[];
29
+ /**
30
+ * Commandes additives (hors `STANDARD_COMMAND_IDS`, comme `search.*`) des marques de run
31
+ * de mise en page, portées par `textStyle` :
32
+ *
33
+ * - `text.setLetterSpacing { pt }` : espacement des caractères en points, `null` le retire ;
34
+ * - `text.setCaps { caps }` : `all` (majuscules) ou `small` (petites capitales) ;
35
+ * - `text.unsetCaps` : retire la casse forcée.
36
+ *
37
+ * Une marque `textStyle` vidée de tout attribut est retirée (`removeEmptyTextStyle`).
38
+ */
39
+ export declare const TEXT_LAYOUT_COMMANDS: readonly AsterCommand[];
40
+ //# sourceMappingURL=layout.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"layout.d.ts","sourceRoot":"","sources":["../../src/commands/layout.ts"],"names":[],"mappings":"AAEA,OAAO,EAEL,KAAK,YAAY,EACjB,KAAK,WAAW,EAEjB,MAAM,QAAQ,CAAC;AAMhB,OAAO,EAAU,KAAK,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAGhE,wFAAwF;AACxF,MAAM,WAAW,oBAAoB;IACnC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;CACnB;AAED,uFAAuF;AACvF,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,OAAO,CAAC;CACf;AAED,yGAAyG;AACzG,eAAO,MAAM,uBAAuB,sEAI1B,CAAC;AAEX,MAAM,MAAM,mBAAmB,GAAG,CAAC,OAAO,uBAAuB,CAAC,CAAC,MAAM,CAAC,CAAC;AAyC3E,sEAAsE;AACtE,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAQtE;AAsFD;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,yBAAyB,EAAE,SAAS,YAAY,EAqC5D,CAAC;AAsBF;;;;;;;;;GASG;AACH,eAAO,MAAM,oBAAoB,EAAE,SAAS,YAAY,EA6DvD,CAAC"}
@@ -0,0 +1,262 @@
1
+ import { PARAGRAPH_LAYOUT_ATTR_NAMES, } from '../api';
2
+ import { isLayoutNumber } from '../extensions/layout-css';
3
+ import { PARAGRAPH_LAYOUT_TYPES, normalizeParagraphLayoutValue, } from '../extensions/paragraph-layout';
4
+ import { isCaps } from '../extensions/run-layout';
5
+ import { defineStandardCommand, iconIdFor } from './define';
6
+ /** Identifiants des commandes de run de mise en page, enregistrées en plus de `STANDARD_COMMAND_IDS`. */
7
+ export const TEXT_LAYOUT_COMMAND_IDS = [
8
+ 'text.setLetterSpacing',
9
+ 'text.setCaps',
10
+ 'text.unsetCaps',
11
+ ];
12
+ const LAYOUT_TYPES = PARAGRAPH_LAYOUT_TYPES;
13
+ /**
14
+ * Parcourt chaque paragraphe et titre de la sélection, **plage par plage** : une
15
+ * `CellSelection` (prosemirror-tables) n'a pour `from`/`to` que la cellule d'ancrage et
16
+ * porte les autres cellules dans `selection.ranges` ; ne lire que `from`/`to` n'appliquerait
17
+ * la commande qu'à une cellule sur quatre. Les plages peuvent se recouvrir (sélection de
18
+ * texte simple : une seule plage ; cellules fusionnées) : chaque bloc n'est visité qu'une
19
+ * fois, par position. Renvoyer `false` depuis `visit` arrête le parcours.
20
+ */
21
+ function forEachLayoutBlock(doc, selection, visit) {
22
+ const seen = new Set();
23
+ let stopped = false;
24
+ for (const { $from, $to } of selection.ranges) {
25
+ if (stopped) {
26
+ return;
27
+ }
28
+ doc.nodesBetween($from.pos, $to.pos, (node, pos) => {
29
+ if (stopped) {
30
+ return false;
31
+ }
32
+ if (!LAYOUT_TYPES.includes(node.type.name)) {
33
+ return true;
34
+ }
35
+ if (!seen.has(pos)) {
36
+ seen.add(pos);
37
+ if (visit(node, pos) === false) {
38
+ stopped = true;
39
+ }
40
+ }
41
+ return false;
42
+ });
43
+ }
44
+ }
45
+ /** Vrai si la sélection touche au moins un paragraphe ou un titre. */
46
+ export function hasLayoutBlockInSelection(editor) {
47
+ const { selection, doc } = editor.tiptap.state;
48
+ let found = false;
49
+ forEachLayoutBlock(doc, selection, () => {
50
+ found = true;
51
+ return false;
52
+ });
53
+ return found;
54
+ }
55
+ /**
56
+ * Applique `update` à chaque paragraphe et titre de la sélection (cellules et items de
57
+ * liste compris). `update` reçoit les attributs courants et rend les nouveaux ; un
58
+ * résultat identique n'écrit rien. Retourne vrai si au moins un bloc a changé.
59
+ */
60
+ function updateLayoutBlocks(tr, update) {
61
+ const targets = [];
62
+ forEachLayoutBlock(tr.doc, tr.selection, (node, pos) => {
63
+ const attrs = update({ ...node.attrs });
64
+ if (!sameAttrs(node.attrs, attrs)) {
65
+ targets.push({ pos, attrs });
66
+ }
67
+ return true;
68
+ });
69
+ // `setNodeMarkup` ne change pas les tailles : les positions restent valides.
70
+ for (const { pos, attrs } of targets) {
71
+ tr.setNodeMarkup(pos, undefined, attrs);
72
+ }
73
+ return targets.length > 0;
74
+ }
75
+ /** Égalité superficielle de deux jeux d'attributs (les bordures sont comparées en JSON). */
76
+ function sameAttrs(a, b) {
77
+ const keys = new Set([...Object.keys(a), ...Object.keys(b)]);
78
+ for (const key of keys) {
79
+ if (JSON.stringify(a[key] ?? null) !== JSON.stringify(b[key] ?? null)) {
80
+ return false;
81
+ }
82
+ }
83
+ return true;
84
+ }
85
+ /**
86
+ * Ne garde des arguments que les attributs du contrat, normalisés. Une valeur invalide
87
+ * (`normalizeParagraphLayoutValue` → `undefined`) est **ignorée**, pas transformée en
88
+ * effacement : seul `null` efface.
89
+ */
90
+ function layoutChanges(args) {
91
+ const changes = {};
92
+ if (typeof args !== 'object' || args === null) {
93
+ return changes;
94
+ }
95
+ const source = args;
96
+ for (const name of PARAGRAPH_LAYOUT_ATTR_NAMES) {
97
+ if (name in source) {
98
+ const value = normalizeParagraphLayoutValue(name, source[name]);
99
+ if (value !== undefined) {
100
+ changes[name] = value;
101
+ }
102
+ }
103
+ }
104
+ return changes;
105
+ }
106
+ /**
107
+ * Vrai si les arguments de `setLayout` sont acceptables pour `canRun` : aucun argument
108
+ * (la toolbar sonde la commande avec `{}` ou rien), ou au moins une valeur valide. Des
109
+ * arguments non vides sans aucune valeur valide (`{ lineHeight: 'abc' }`) sont refusés.
110
+ */
111
+ function hasUsableLayoutArgs(args) {
112
+ if (typeof args !== 'object' || args === null || Object.keys(args).length === 0) {
113
+ return true;
114
+ }
115
+ return Object.keys(layoutChanges(args)).length > 0;
116
+ }
117
+ /** Noms d'attributs à effacer d'après les arguments de `unsetLayout` : tous par défaut. */
118
+ function unsetNames(args) {
119
+ if (typeof args !== 'object' || args === null) {
120
+ return PARAGRAPH_LAYOUT_ATTR_NAMES;
121
+ }
122
+ const requested = args['attrs'];
123
+ if (!Array.isArray(requested)) {
124
+ return PARAGRAPH_LAYOUT_ATTR_NAMES;
125
+ }
126
+ const known = PARAGRAPH_LAYOUT_ATTR_NAMES;
127
+ return requested.filter((name) => typeof name === 'string' && known.includes(name));
128
+ }
129
+ /**
130
+ * Commandes standard de mise en page des paragraphes.
131
+ *
132
+ * - `paragraph.setLayout` fusionne les attributs donnés dans chaque paragraphe et titre de
133
+ * la sélection ; `null` efface un attribut, un attribut absent est laissé tel quel, une
134
+ * valeur invalide est ignorée (et `run` rend `false` s'il ne reste rien de valide).
135
+ * Les valeurs sont normalisées (nombres arrondis, couleurs `#rrggbb`, bordures filtrées).
136
+ * - `paragraph.unsetLayout` efface les attributs nommés dans `attrs`, ou tous sans argument.
137
+ *
138
+ * `canRun` est vrai dès que la sélection contient un bloc de texte éditable (la lecture
139
+ * seule est filtrée par le registre). Pas de raccourci : ce sont des commandes de menu.
140
+ */
141
+ export const PARAGRAPH_LAYOUT_COMMANDS = [
142
+ defineStandardCommand('paragraph.setLayout', {
143
+ run: (editor, args) => {
144
+ const changes = layoutChanges(args);
145
+ if (Object.keys(changes).length === 0) {
146
+ return false;
147
+ }
148
+ return editor.tiptap
149
+ .chain()
150
+ .focus()
151
+ .command(({ tr }) => updateLayoutBlocks(tr, (attrs) => ({ ...attrs, ...changes })))
152
+ .run();
153
+ },
154
+ canRun: (editor, args) => hasUsableLayoutArgs(args) && hasLayoutBlockInSelection(editor),
155
+ }),
156
+ defineStandardCommand('paragraph.unsetLayout', {
157
+ run: (editor, args) => {
158
+ const names = unsetNames(args);
159
+ if (names.length === 0) {
160
+ return false;
161
+ }
162
+ return editor.tiptap
163
+ .chain()
164
+ .focus()
165
+ .command(({ tr }) => updateLayoutBlocks(tr, (attrs) => {
166
+ const next = { ...attrs };
167
+ for (const name of names) {
168
+ next[name] = null;
169
+ }
170
+ return next;
171
+ }))
172
+ .run();
173
+ },
174
+ canRun: (editor) => hasLayoutBlockInSelection(editor),
175
+ }),
176
+ ];
177
+ /** Lecture tolérante des arguments : la toolbar peut appeler `run` sans arguments. */
178
+ function readArgs(args) {
179
+ return typeof args === 'object' && args !== null ? args : {};
180
+ }
181
+ function defineTextLayoutCommand(id, spec) {
182
+ const command = {
183
+ id,
184
+ labelKey: `command.${id}`,
185
+ icon: iconIdFor(id),
186
+ run: spec.run,
187
+ };
188
+ if (spec.canRun)
189
+ command.canRun = spec.canRun;
190
+ if (spec.isActive)
191
+ command.isActive = spec.isActive;
192
+ return command;
193
+ }
194
+ /**
195
+ * Commandes additives (hors `STANDARD_COMMAND_IDS`, comme `search.*`) des marques de run
196
+ * de mise en page, portées par `textStyle` :
197
+ *
198
+ * - `text.setLetterSpacing { pt }` : espacement des caractères en points, `null` le retire ;
199
+ * - `text.setCaps { caps }` : `all` (majuscules) ou `small` (petites capitales) ;
200
+ * - `text.unsetCaps` : retire la casse forcée.
201
+ *
202
+ * Une marque `textStyle` vidée de tout attribut est retirée (`removeEmptyTextStyle`).
203
+ */
204
+ export const TEXT_LAYOUT_COMMANDS = [
205
+ defineTextLayoutCommand('text.setLetterSpacing', {
206
+ run: (editor, args) => {
207
+ const pt = readArgs(args)['pt'];
208
+ if (pt === null) {
209
+ return editor.tiptap
210
+ .chain()
211
+ .focus()
212
+ .setMark('textStyle', { letterSpacingPt: null })
213
+ .removeEmptyTextStyle()
214
+ .run();
215
+ }
216
+ // Borné comme tout nombre de mise en page : `1e307` donnerait `Infinitypt`.
217
+ if (!isLayoutNumber(pt)) {
218
+ return false;
219
+ }
220
+ return editor.tiptap.chain().focus().setMark('textStyle', { letterSpacingPt: pt }).run();
221
+ },
222
+ canRun: (editor, args) => {
223
+ const pt = readArgs(args)['pt'];
224
+ return ((pt === null || isLayoutNumber(pt)) &&
225
+ editor.tiptap.can().setMark('textStyle', { letterSpacingPt: pt }));
226
+ },
227
+ isActive: (editor, args) => {
228
+ const pt = readArgs(args)['pt'];
229
+ return typeof pt === 'number'
230
+ ? editor.tiptap.isActive('textStyle', { letterSpacingPt: pt })
231
+ : false;
232
+ },
233
+ }),
234
+ defineTextLayoutCommand('text.setCaps', {
235
+ run: (editor, args) => {
236
+ const caps = readArgs(args)['caps'];
237
+ if (!isCaps(caps)) {
238
+ return false;
239
+ }
240
+ return editor.tiptap.chain().focus().setMark('textStyle', { caps }).run();
241
+ },
242
+ canRun: (editor, args) => isCaps(readArgs(args)['caps']) && editor.tiptap.can().setMark('textStyle', {}),
243
+ isActive: (editor, args) => {
244
+ const caps = readArgs(args)['caps'];
245
+ return isCaps(caps) ? editor.tiptap.isActive('textStyle', { caps }) : false;
246
+ },
247
+ }),
248
+ defineTextLayoutCommand('text.unsetCaps', {
249
+ run: (editor) => editor.tiptap
250
+ .chain()
251
+ .focus()
252
+ .setMark('textStyle', { caps: null })
253
+ .removeEmptyTextStyle()
254
+ .run(),
255
+ canRun: (editor) => editor.tiptap.can().setMark('textStyle', { caps: null }),
256
+ isActive: (editor) => {
257
+ const caps = editor.tiptap.getAttributes('textStyle')['caps'];
258
+ return isCaps(caps);
259
+ },
260
+ }),
261
+ ];
262
+ //# sourceMappingURL=layout.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"layout.js","sourceRoot":"","sources":["../../src/commands/layout.ts"],"names":[],"mappings":"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"}
@@ -7,9 +7,10 @@ export interface StandardCommandsContext {
7
7
  }
8
8
  /**
9
9
  * Toutes les commandes de `STANDARD_COMMAND_IDS`, dans l'ordre du contrat, suivies
10
- * des commandes supplémentaires `search.*` (hors contrat figé, mais fournies par le
11
- * core). Les liens et images sont fabriqués par éditeur puisqu'ils dépendent de sa
12
- * politique et de son hook d'upload ; le reste est partagé et sans état.
10
+ * des commandes supplémentaires `search.*`, `formatPainter.*` et `text.*` (hors contrat
11
+ * figé, mais fournies par le core). Les liens et images sont fabriqués par éditeur
12
+ * puisqu'ils dépendent de sa politique et de son hook d'upload ; le reste est partagé
13
+ * et sans état.
13
14
  */
14
15
  export declare function createStandardCommands(context: StandardCommandsContext): AsterCommand[];
15
16
  //# sourceMappingURL=standard.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"standard.d.ts","sourceRoot":"","sources":["../../src/commands/standard.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAC1D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAcpE,0EAA0E;AAC1E,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,UAAU,EAAE,kBAAkB,CAAC;IACxC,QAAQ,CAAC,MAAM,EAAE,aAAa,GAAG,SAAS,CAAC;CAC5C;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,uBAAuB,GAAG,YAAY,EAAE,CAevF"}
1
+ {"version":3,"file":"standard.d.ts","sourceRoot":"","sources":["../../src/commands/standard.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAC1D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAepE,0EAA0E;AAC1E,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,UAAU,EAAE,kBAAkB,CAAC;IACxC,QAAQ,CAAC,MAAM,EAAE,aAAa,GAAG,SAAS,CAAC;CAC5C;AAED;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,uBAAuB,GAAG,YAAY,EAAE,CAiBvF"}
@@ -3,6 +3,7 @@ import { BLOCK_COMMANDS } from './blocks';
3
3
  import { FORMAT_PAINTER_COMMANDS } from './format-painter';
4
4
  import { HISTORY_COMMANDS } from './history';
5
5
  import { createImageCommands } from './images';
6
+ import { PARAGRAPH_LAYOUT_COMMANDS, TEXT_LAYOUT_COMMANDS } from './layout';
6
7
  import { createLinkCommands } from './links';
7
8
  import { LIST_COMMANDS } from './lists';
8
9
  import { MARK_COMMANDS } from './marks';
@@ -12,9 +13,10 @@ import { TEXT_STYLE_COMMANDS } from './text-style';
12
13
  import { VARIABLE_COMMANDS } from './variables';
13
14
  /**
14
15
  * Toutes les commandes de `STANDARD_COMMAND_IDS`, dans l'ordre du contrat, suivies
15
- * des commandes supplémentaires `search.*` (hors contrat figé, mais fournies par le
16
- * core). Les liens et images sont fabriqués par éditeur puisqu'ils dépendent de sa
17
- * politique et de son hook d'upload ; le reste est partagé et sans état.
16
+ * des commandes supplémentaires `search.*`, `formatPainter.*` et `text.*` (hors contrat
17
+ * figé, mais fournies par le core). Les liens et images sont fabriqués par éditeur
18
+ * puisqu'ils dépendent de sa politique et de son hook d'upload ; le reste est partagé
19
+ * et sans état.
18
20
  */
19
21
  export function createStandardCommands(context) {
20
22
  return [
@@ -27,9 +29,11 @@ export function createStandardCommands(context) {
27
29
  ...TABLE_COMMANDS,
28
30
  ...TEXT_STYLE_COMMANDS,
29
31
  ...VARIABLE_COMMANDS,
32
+ ...PARAGRAPH_LAYOUT_COMMANDS,
30
33
  ...HISTORY_COMMANDS,
31
34
  ...SEARCH_COMMANDS,
32
35
  ...FORMAT_PAINTER_COMMANDS,
36
+ ...TEXT_LAYOUT_COMMANDS,
33
37
  ];
34
38
  }
35
39
  //# sourceMappingURL=standard.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"standard.js","sourceRoot":"","sources":["../../src/commands/standard.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAC/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAQhD;;;;;GAKG;AACH,MAAM,UAAU,sBAAsB,CAAC,OAAgC;IACrE,OAAO;QACL,GAAG,aAAa;QAChB,GAAG,cAAc;QACjB,GAAG,aAAa;QAChB,GAAG,kBAAkB;QACrB,GAAG,kBAAkB,CAAC,OAAO,CAAC,UAAU,CAAC;QACzC,GAAG,mBAAmB,CAAC,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,MAAM,CAAC;QAC1D,GAAG,cAAc;QACjB,GAAG,mBAAmB;QACtB,GAAG,iBAAiB;QACpB,GAAG,gBAAgB;QACnB,GAAG,eAAe;QAClB,GAAG,uBAAuB;KAC3B,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"standard.js","sourceRoot":"","sources":["../../src/commands/standard.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAC/C,OAAO,EAAE,yBAAyB,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAC3E,OAAO,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAQhD;;;;;;GAMG;AACH,MAAM,UAAU,sBAAsB,CAAC,OAAgC;IACrE,OAAO;QACL,GAAG,aAAa;QAChB,GAAG,cAAc;QACjB,GAAG,aAAa;QAChB,GAAG,kBAAkB;QACrB,GAAG,kBAAkB,CAAC,OAAO,CAAC,UAAU,CAAC;QACzC,GAAG,mBAAmB,CAAC,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,MAAM,CAAC;QAC1D,GAAG,cAAc;QACjB,GAAG,mBAAmB;QACtB,GAAG,iBAAiB;QACpB,GAAG,yBAAyB;QAC5B,GAAG,gBAAgB;QACnB,GAAG,eAAe;QAClB,GAAG,uBAAuB;QAC1B,GAAG,oBAAoB;KACxB,CAAC;AACJ,CAAC"}