@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.
- package/README.md +191 -92
- package/dist/api/commands.d.ts +8 -1
- package/dist/api/commands.d.ts.map +1 -1
- package/dist/api/commands.js +3 -0
- package/dist/api/commands.js.map +1 -1
- package/dist/api/index.d.ts +2 -0
- package/dist/api/index.d.ts.map +1 -1
- package/dist/api/index.js +1 -0
- package/dist/api/index.js.map +1 -1
- package/dist/api/layout.d.ts +181 -0
- package/dist/api/layout.d.ts.map +1 -0
- package/dist/api/layout.js +28 -0
- package/dist/api/layout.js.map +1 -0
- package/dist/api/options.d.ts +6 -0
- package/dist/api/options.d.ts.map +1 -1
- package/dist/commands/layout.d.ts +40 -0
- package/dist/commands/layout.d.ts.map +1 -0
- package/dist/commands/layout.js +262 -0
- package/dist/commands/layout.js.map +1 -0
- package/dist/commands/standard.d.ts +4 -3
- package/dist/commands/standard.d.ts.map +1 -1
- package/dist/commands/standard.js +7 -3
- package/dist/commands/standard.js.map +1 -1
- package/dist/editor/aster-editor.d.ts +16 -1
- package/dist/editor/aster-editor.d.ts.map +1 -1
- package/dist/editor/aster-editor.js +41 -1
- package/dist/editor/aster-editor.js.map +1 -1
- package/dist/extensions/aster-extensions.d.ts +3 -0
- package/dist/extensions/aster-extensions.d.ts.map +1 -1
- package/dist/extensions/aster-extensions.js +24 -5
- package/dist/extensions/aster-extensions.js.map +1 -1
- package/dist/extensions/header-footer-sanitize.d.ts +22 -0
- package/dist/extensions/header-footer-sanitize.d.ts.map +1 -0
- package/dist/extensions/header-footer-sanitize.js +226 -0
- package/dist/extensions/header-footer-sanitize.js.map +1 -0
- package/dist/extensions/layout-css.d.ts +88 -0
- package/dist/extensions/layout-css.d.ts.map +1 -0
- package/dist/extensions/layout-css.js +297 -0
- package/dist/extensions/layout-css.js.map +1 -0
- package/dist/extensions/list-layout.d.ts +23 -0
- package/dist/extensions/list-layout.d.ts.map +1 -0
- package/dist/extensions/list-layout.js +65 -0
- package/dist/extensions/list-layout.js.map +1 -0
- package/dist/extensions/page-break.d.ts +8 -0
- package/dist/extensions/page-break.d.ts.map +1 -0
- package/dist/extensions/page-break.js +20 -0
- package/dist/extensions/page-break.js.map +1 -0
- package/dist/extensions/page-view.d.ts +68 -0
- package/dist/extensions/page-view.d.ts.map +1 -0
- package/dist/extensions/page-view.js +189 -0
- package/dist/extensions/page-view.js.map +1 -0
- package/dist/extensions/pagination-controller.d.ts +110 -0
- package/dist/extensions/pagination-controller.d.ts.map +1 -0
- package/dist/extensions/pagination-controller.js +295 -0
- package/dist/extensions/pagination-controller.js.map +1 -0
- package/dist/extensions/pagination-layout.d.ts +54 -0
- package/dist/extensions/pagination-layout.d.ts.map +1 -0
- package/dist/extensions/pagination-layout.js +109 -0
- package/dist/extensions/pagination-layout.js.map +1 -0
- package/dist/extensions/pagination-measure.d.ts +42 -0
- package/dist/extensions/pagination-measure.d.ts.map +1 -0
- package/dist/extensions/pagination-measure.js +108 -0
- package/dist/extensions/pagination-measure.js.map +1 -0
- package/dist/extensions/pagination.d.ts +36 -0
- package/dist/extensions/pagination.d.ts.map +1 -0
- package/dist/extensions/pagination.js +69 -0
- package/dist/extensions/pagination.js.map +1 -0
- package/dist/extensions/paragraph-layout.d.ts +62 -0
- package/dist/extensions/paragraph-layout.d.ts.map +1 -0
- package/dist/extensions/paragraph-layout.js +227 -0
- package/dist/extensions/paragraph-layout.js.map +1 -0
- package/dist/extensions/run-layout.d.ts +79 -0
- package/dist/extensions/run-layout.d.ts.map +1 -0
- package/dist/extensions/run-layout.js +302 -0
- package/dist/extensions/run-layout.js.map +1 -0
- package/dist/extensions/table-layout.d.ts +85 -0
- package/dist/extensions/table-layout.d.ts.map +1 -0
- package/dist/extensions/table-layout.js +314 -0
- package/dist/extensions/table-layout.js.map +1 -0
- package/dist/html/serialize-html.d.ts +42 -0
- package/dist/html/serialize-html.d.ts.map +1 -0
- package/dist/html/serialize-html.js +159 -0
- package/dist/html/serialize-html.js.map +1 -0
- package/dist/i18n/en.d.ts.map +1 -1
- package/dist/i18n/en.js +8 -0
- package/dist/i18n/en.js.map +1 -1
- package/dist/i18n/fr.d.ts.map +1 -1
- package/dist/i18n/fr.js +8 -0
- package/dist/i18n/fr.js.map +1 -1
- package/dist/index.d.ts +11 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +13 -0
- package/dist/index.js.map +1 -1
- 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"}
|
package/dist/api/options.d.ts
CHANGED
|
@@ -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
|
|
11
|
-
* core). Les liens et images sont fabriqués par éditeur
|
|
12
|
-
* politique et de son hook d'upload ; le reste est partagé
|
|
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;
|
|
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
|
|
16
|
-
* core). Les liens et images sont fabriqués par éditeur
|
|
17
|
-
* politique et de son hook d'upload ; le reste est partagé
|
|
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
|
|
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"}
|