@cbm-common/cbm-types 0.0.365 → 0.0.367
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/lib/components/document-editor/clipboard/document-editor-node-ids.d.ts +2 -0
- package/lib/components/document-editor/clipboard/document-editor-paste.d.ts +3 -0
- package/lib/components/document-editor/document-editor.d.ts +421 -0
- package/lib/components/document-editor/find/document-editor-search.d.ts +23 -0
- package/lib/components/document-editor/find/find-panel/document-editor-find-panel.d.ts +45 -0
- package/lib/components/document-editor/format/document-editor-commands.d.ts +38 -0
- package/lib/components/document-editor/format/document-editor-defaults.d.ts +14 -0
- package/lib/components/document-editor/format/document-editor-format-state.d.ts +62 -0
- package/lib/components/document-editor/format/document-editor-format.d.ts +2 -0
- package/lib/components/document-editor/format/document-editor-typography.d.ts +26 -0
- package/lib/components/document-editor/i18n/document-editor-i18n.d.ts +2 -0
- package/lib/components/document-editor/lists/document-editor-list.d.ts +12 -0
- package/lib/components/document-editor/lists/list-panel/document-editor-list-panel.d.ts +55 -0
- package/lib/components/document-editor/nodes/document-editor-node-attributes.d.ts +16 -0
- package/lib/components/document-editor/nodes/document-editor-node-types.d.ts +83 -0
- package/lib/components/document-editor/nodes/document-editor-node.d.ts +24 -0
- package/lib/components/document-editor/nodes/node-panel/document-editor-node-panel.d.ts +34 -0
- package/lib/components/document-editor/page/document-editor-page-nodes.d.ts +18 -0
- package/lib/components/document-editor/page/document-editor-pages.d.ts +40 -0
- package/lib/components/document-editor/page/document-editor-region-guard.d.ts +2 -0
- package/lib/components/document-editor/public-api.d.ts +48 -0
- package/lib/components/document-editor/ribbon/color-menu/document-editor-color-menu.d.ts +34 -0
- package/lib/components/document-editor/ribbon/link-menu/document-editor-link-menu.d.ts +19 -0
- package/lib/components/document-editor/ribbon/spinner/document-editor-spinner.d.ts +51 -0
- package/lib/components/document-editor/ribbon/symbol-menu/document-editor-symbol-menu.d.ts +10 -0
- package/lib/components/document-editor/tables/borders/border-menu/document-editor-border-menu.d.ts +20 -0
- package/lib/components/document-editor/tables/borders/border-style-picker/document-editor-border-style-picker.d.ts +13 -0
- package/lib/components/document-editor/tables/borders/border-weight-picker/document-editor-border-weight-picker.d.ts +16 -0
- package/lib/components/document-editor/tables/borders/document-editor-table-border-painter.d.ts +14 -0
- package/lib/components/document-editor/tables/borders/document-editor-table-borders.d.ts +52 -0
- package/lib/components/document-editor/tables/document-editor-table-select.d.ts +14 -0
- package/lib/components/document-editor/tables/document-editor-table-selection.d.ts +47 -0
- package/lib/components/document-editor/tables/document-editor-table.d.ts +2 -0
- package/lib/components/document-editor/tables/handles/document-editor-table-handles-commands.d.ts +46 -0
- package/lib/components/document-editor/tables/handles/document-editor-table-handles-dom.d.ts +23 -0
- package/lib/components/document-editor/tables/handles/document-editor-table-handles-geometry.d.ts +104 -0
- package/lib/components/document-editor/tables/handles/document-editor-table-handles.d.ts +14 -0
- package/lib/components/document-editor/tables/layout/alignment-grid/document-editor-alignment-grid.d.ts +32 -0
- package/lib/components/document-editor/tables/layout/cell-margins-menu/document-editor-cell-margins-menu.d.ts +50 -0
- package/lib/components/document-editor/tables/layout/document-editor-table-layout.d.ts +92 -0
- package/lib/components/document-editor/tables/styles/document-editor-table-design-extension.d.ts +2 -0
- package/lib/components/document-editor/tables/styles/document-editor-table-design-state.d.ts +23 -0
- package/lib/components/document-editor/tables/styles/document-editor-table-design.d.ts +39 -0
- package/lib/components/document-editor/tables/styles/document-editor-table-styles.d.ts +114 -0
- package/lib/components/document-editor/tables/styles/style-gallery/document-editor-table-style-gallery.d.ts +65 -0
- package/lib/components/document-editor/tables/table-dialog/document-editor-table-dialog.d.ts +54 -0
- package/lib/components/document-editor/tables/table-grid-menu/document-editor-table-grid-menu.d.ts +31 -0
- package/lib/components/document-editor/variables/document-editor-sample-data.d.ts +4 -0
- package/lib/components/document-editor/variables/document-editor-schema.d.ts +87 -0
- package/lib/components/document-editor/variables/document-editor-template.d.ts +9 -0
- package/lib/components/document-editor/variables/variables-panel/document-editor-variables-panel.d.ts +39 -0
- package/lib/components/document-editor/word-import/document-editor-word-flatten.d.ts +7 -0
- package/lib/components/document-editor/word-import/document-editor-word-float.d.ts +23 -0
- package/lib/components/document-editor/word-import/document-editor-word-format.d.ts +17 -0
- package/lib/components/document-editor/word-import/document-editor-word-images.d.ts +24 -0
- package/lib/components/document-editor/word-import/document-editor-word-import.d.ts +20 -0
- package/lib/components/document-editor/word-import/document-editor-word-page.d.ts +57 -0
- package/lib/components/document-editor/word-import/document-editor-word-styles.d.ts +143 -0
- package/lib/domain/models/billing.domain.model.d.ts +10 -0
- package/lib/domain/repositories/billing.domain.repository.d.ts +2 -0
- package/lib/infrastructure/repositories/billing.infrastructure.repository.d.ts +2 -0
- package/lib/infrastructure/services/billing.infrastructure.service.d.ts +3 -0
- package/package.json +1 -1
- package/public-api.d.ts +3 -0
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { Node as ProseMirrorNode } from '@tiptap/pm/model';
|
|
2
|
+
import { Selection } from '@tiptap/pm/state';
|
|
3
|
+
import { TableMap } from '@tiptap/pm/tables';
|
|
4
|
+
export interface TableCellInfo {
|
|
5
|
+
/** Posición del nodo de la celda en el documento. */
|
|
6
|
+
position: number;
|
|
7
|
+
node: ProseMirrorNode;
|
|
8
|
+
/** Primera fila y columna que ocupa (0 es la primera) y cuántas abarca. */
|
|
9
|
+
row: number;
|
|
10
|
+
column: number;
|
|
11
|
+
rowSpan: number;
|
|
12
|
+
colSpan: number;
|
|
13
|
+
}
|
|
14
|
+
export interface TableContext {
|
|
15
|
+
/** Posición del nodo de la tabla en el documento. */
|
|
16
|
+
tablePosition: number;
|
|
17
|
+
table: ProseMirrorNode;
|
|
18
|
+
map: TableMap;
|
|
19
|
+
/** Todas las celdas de la tabla, en orden de documento. */
|
|
20
|
+
cells: TableCellInfo[];
|
|
21
|
+
/** Las celdas seleccionadas o, con el cursor suelto, la celda donde está. Vacío si el cursor no está en una celda. */
|
|
22
|
+
selected: TableCellInfo[];
|
|
23
|
+
}
|
|
24
|
+
/** Un estado del editor (`editor.state`) o una transacción: cualquier cosa con `selection`. */
|
|
25
|
+
interface SelectionHolder {
|
|
26
|
+
selection: Selection;
|
|
27
|
+
}
|
|
28
|
+
export declare const isCellNode: (node: ProseMirrorNode) => boolean;
|
|
29
|
+
/**
|
|
30
|
+
* Mapa y celdas (en orden de documento, con su lugar en la cuadrícula) de la tabla que empieza en `tablePosition`, o
|
|
31
|
+
* `null` si está a medio armar (sin filas completas no tiene mapa).
|
|
32
|
+
*/
|
|
33
|
+
export declare function describeTable(tablePosition: number, table: ProseMirrorNode): {
|
|
34
|
+
map: TableMap;
|
|
35
|
+
cells: TableCellInfo[];
|
|
36
|
+
} | null;
|
|
37
|
+
/**
|
|
38
|
+
* Tabla más interna alrededor de la selección con sus celdas (ver `TableContext`), o `null` si la selección no está
|
|
39
|
+
* en una tabla. Con una selección de celdas la tabla es la de esas celdas.
|
|
40
|
+
*/
|
|
41
|
+
export declare function findTableContext({ selection }: SelectionHolder): TableContext | null;
|
|
42
|
+
/**
|
|
43
|
+
* Reescribe un estilo en línea con la API de estilos del navegador (entiende los atajos `border`, `background`…).
|
|
44
|
+
* `edit` cambia el `CSSStyleDeclaration`; devuelve el estilo nuevo, o `null` si queda vacío.
|
|
45
|
+
*/
|
|
46
|
+
export declare function editInlineStyle(current: unknown, edit: (style: CSSStyleDeclaration) => void): string | null;
|
|
47
|
+
export {};
|
package/lib/components/document-editor/tables/handles/document-editor-table-handles-commands.d.ts
ADDED
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import type { Editor } from '@tiptap/core';
|
|
2
|
+
import { type FloatPlacement, type TableMeasures } from './document-editor-table-handles-geometry';
|
|
3
|
+
/**
|
|
4
|
+
* Selecciona la tabla entera (todas sus celdas) y devuelve el foco a la hoja, como el asa de mover de Word: la cinta
|
|
5
|
+
* muestra entonces las herramientas de tabla y el sombreado, los bordes… alcanzan a todas las celdas. Si la librería
|
|
6
|
+
* no pudiera hacerlo, selecciona el nodo de la tabla.
|
|
7
|
+
*/
|
|
8
|
+
export declare function selectTable(editor: Editor, tablePosition: number): boolean;
|
|
9
|
+
/** Dónde queda una tabla flotante: el lado y la distancia al borde de ese lado (ver `floatPlacement`). */
|
|
10
|
+
export type TableFloatPlacement = FloatPlacement;
|
|
11
|
+
export interface TableMove {
|
|
12
|
+
/** Posición del nodo de la tabla. */
|
|
13
|
+
tablePosition: number;
|
|
14
|
+
/** Delante de qué hijo de su contenedor queda (el número de hijos es "al final"), contando la tabla que se mueve. */
|
|
15
|
+
index: number;
|
|
16
|
+
/** Lado y distancia nuevos de una tabla con ajuste de texto; `null` si va en línea. */
|
|
17
|
+
float: TableFloatPlacement | null;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Mueve la tabla delante del hijo `index` de su contenedor (el documento, o la celda donde está anidada) en un solo
|
|
21
|
+
* paso. Una tabla con ajuste de texto cambia además de lado y de distancia al borde (`move.float`). Deja una línea
|
|
22
|
+
* vacía entre la tabla y un bloque que no sea un texto, y la tabla seleccionada. Si el resultado no fuera válido
|
|
23
|
+
* (el hueco no admite una tabla) no cambia nada. Devuelve si hizo algo o ya estaba así.
|
|
24
|
+
*/
|
|
25
|
+
export declare function moveTable(editor: Editor, move: TableMove): boolean;
|
|
26
|
+
export interface TableResize {
|
|
27
|
+
/** Posición del nodo de la tabla. */
|
|
28
|
+
tablePosition: number;
|
|
29
|
+
/** Medidas de la tabla antes del cambio (px CSS de la hoja): lo que se escala. */
|
|
30
|
+
measures: TableMeasures;
|
|
31
|
+
/** Ancho nuevo de la tabla (px CSS); `null` si no cambia. */
|
|
32
|
+
width: number | null;
|
|
33
|
+
/** Alto nuevo de la tabla (px CSS); `null` si no cambia. */
|
|
34
|
+
height: number | null;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Cambia el tamaño de la tabla en un solo paso. El ancho escala el de cada columna (`colwidth` de cada celda, mínimo
|
|
38
|
+
* 10 px) y la tabla queda con un ancho fijo en píxeles, la suma de las columnas. El alto escala el de cada fila: se
|
|
39
|
+
* guarda como `height` en puntos en las celdas de la fila (una fila no baja de lo que pide su contenido). Devuelve
|
|
40
|
+
* si cambió algo.
|
|
41
|
+
*/
|
|
42
|
+
export declare function resizeTable(editor: Editor, resize: TableResize): boolean;
|
|
43
|
+
/** Inserta una fila delante de la fila `index` de la tabla (el número de filas la agrega al final). */
|
|
44
|
+
export declare function insertTableRow(editor: Editor, tablePosition: number, index: number): boolean;
|
|
45
|
+
/** Inserta una columna delante de la columna `index` de la tabla (el número de columnas la agrega al final). */
|
|
46
|
+
export declare function insertTableColumn(editor: Editor, tablePosition: number, index: number): boolean;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/** Atributo que identifica cada asa que atiende la capa: `move`, `resize` o `insert`. */
|
|
2
|
+
export declare const HANDLE_ATTRIBUTE = "data-table-handle";
|
|
3
|
+
export interface TableHandleElements {
|
|
4
|
+
/** Capa `.document-editor__table-handles`: contiene todo lo demás y no recibe el puntero. */
|
|
5
|
+
layer: HTMLElement;
|
|
6
|
+
/** Asa de mover, arriba a la izquierda de la tabla. */
|
|
7
|
+
move: HTMLButtonElement;
|
|
8
|
+
/** Asa de cambiar el tamaño, abajo a la derecha. */
|
|
9
|
+
resize: HTMLElement;
|
|
10
|
+
/** Botón redondo "+" entre dos filas o dos columnas. */
|
|
11
|
+
marker: HTMLButtonElement;
|
|
12
|
+
/** Línea que marca por dónde se inserta la fila o la columna. */
|
|
13
|
+
guide: HTMLElement;
|
|
14
|
+
/** Línea de inserción al arrastrar la tabla entre bloques. */
|
|
15
|
+
dropLine: HTMLElement;
|
|
16
|
+
/** Contorno de la tabla al arrastrarla o al cambiar su tamaño. */
|
|
17
|
+
ghost: HTMLElement;
|
|
18
|
+
}
|
|
19
|
+
export declare function createHandleElements(): TableHandleElements;
|
|
20
|
+
/** Coloca un elemento de la capa (px de la capa); con tamaño, también lo dimensiona. */
|
|
21
|
+
export declare function placeElement(element: HTMLElement, left: number, top: number, width?: number, height?: number): void;
|
|
22
|
+
/** Texto del marcador "+" según lo que inserta. */
|
|
23
|
+
export declare function describeMarker(marker: HTMLButtonElement, kind: 'row' | 'column'): void;
|
package/lib/components/document-editor/tables/handles/document-editor-table-handles-geometry.d.ts
ADDED
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import { type Node as ProseMirrorNode } from '@tiptap/pm/model';
|
|
2
|
+
import type { EditorView } from '@tiptap/pm/view';
|
|
3
|
+
export declare const TABLE_NODE_NAME = "table";
|
|
4
|
+
/** Clase del contenedor que dibuja cada tabla (lo crea `TableView`, ver `document-editor-table.ts`). */
|
|
5
|
+
export declare const TABLE_WRAPPER_CLASS = "tableWrapper";
|
|
6
|
+
/** Ancho mínimo de una columna (px CSS): el mismo que `document-editor-table.ts` fija a la librería. */
|
|
7
|
+
export declare const MIN_COLUMN_WIDTH = 10;
|
|
8
|
+
export interface Box {
|
|
9
|
+
left: number;
|
|
10
|
+
top: number;
|
|
11
|
+
right: number;
|
|
12
|
+
bottom: number;
|
|
13
|
+
}
|
|
14
|
+
export interface Point {
|
|
15
|
+
x: number;
|
|
16
|
+
y: number;
|
|
17
|
+
}
|
|
18
|
+
/** Posición en pantalla del origen de la capa (cambia al desplazar el contenedor). */
|
|
19
|
+
export type LayerOrigin = Point;
|
|
20
|
+
export declare function readLayerOrigin(container: HTMLElement): LayerOrigin;
|
|
21
|
+
export declare function toLayerBox(rect: Box, origin: LayerOrigin): Box;
|
|
22
|
+
/** Zoom de la hoja (1 = 100 %): lo que separa los píxeles de pantalla de los CSS de la hoja. */
|
|
23
|
+
export declare function readSheetZoom(sheet: HTMLElement): number;
|
|
24
|
+
export interface TableEntry {
|
|
25
|
+
/** Posición del nodo de la tabla en el documento. */
|
|
26
|
+
position: number;
|
|
27
|
+
node: ProseMirrorNode;
|
|
28
|
+
/** Contenedor (`.tableWrapper`) que dibuja la tabla en la vista. */
|
|
29
|
+
wrapper: HTMLElement;
|
|
30
|
+
table: HTMLElement;
|
|
31
|
+
/** Tabla dentro del encabezado o del pie de página: no lleva asas. */
|
|
32
|
+
inRegion: boolean;
|
|
33
|
+
}
|
|
34
|
+
/** Todas las tablas del documento (también las anidadas en celdas) que la vista ya dibujó. */
|
|
35
|
+
export declare function collectTables(view: EditorView): TableEntry[];
|
|
36
|
+
/** Líneas de la cuadrícula de una tabla en la capa: una más que columnas (x) y que filas (y). */
|
|
37
|
+
export interface TableGrid {
|
|
38
|
+
columnEdges: number[];
|
|
39
|
+
rowEdges: number[];
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Líneas de la cuadrícula de la tabla, medidas con sus celdas: una celda que abarca varias columnas o filas aporta
|
|
43
|
+
* sus bordes a las líneas de los extremos. `null` si la tabla está mal formada.
|
|
44
|
+
*/
|
|
45
|
+
export declare function readTableGrid(view: EditorView, entry: TableEntry, box: Box, origin: LayerOrigin): TableGrid | null;
|
|
46
|
+
export interface BoundaryHit {
|
|
47
|
+
kind: 'row' | 'column';
|
|
48
|
+
/** Fila o columna delante de la que se inserta (el número de filas o de columnas es "al final"). */
|
|
49
|
+
index: number;
|
|
50
|
+
/** Línea de la cuadrícula en la capa: `y` para una fila, `x` para una columna. */
|
|
51
|
+
edge: number;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Línea entre dos filas (puntero a la izquierda de la tabla) o entre dos columnas (puntero encima) más cercana al
|
|
55
|
+
* puntero. La primera línea (el borde de la tabla) no se ofrece: ahí está el asa de mover.
|
|
56
|
+
*/
|
|
57
|
+
export declare function findBoundary(point: Point, box: Box, grid: TableGrid): BoundaryHit | null;
|
|
58
|
+
/** Medidas de una tabla en píxeles CSS de la hoja (lo que el cambio de tamaño escala). */
|
|
59
|
+
export interface TableMeasures {
|
|
60
|
+
width: number;
|
|
61
|
+
height: number;
|
|
62
|
+
/** Ancho de cada columna de la cuadrícula. */
|
|
63
|
+
columnWidths: number[];
|
|
64
|
+
/** Alto de cada fila. */
|
|
65
|
+
rowHeights: number[];
|
|
66
|
+
}
|
|
67
|
+
/** Medidas actuales de la tabla (px CSS de la hoja), o `null` si está mal formada o no se dibujó. */
|
|
68
|
+
export declare function measureTable(view: EditorView, entry: TableEntry, zoom: number): TableMeasures | null;
|
|
69
|
+
/** Hueco entre dos hijos de un contenedor donde puede quedar la tabla. */
|
|
70
|
+
export interface DropTarget {
|
|
71
|
+
/** Delante de qué hijo del contenedor queda (el número de hijos es "al final"), contando la tabla que se mueve. */
|
|
72
|
+
index: number;
|
|
73
|
+
/** Altura de la línea de inserción en la capa. */
|
|
74
|
+
y: number;
|
|
75
|
+
/** Ancho útil del contenedor en la capa: por donde va la línea y dentro de lo que flota una tabla con ajuste. */
|
|
76
|
+
span: {
|
|
77
|
+
left: number;
|
|
78
|
+
right: number;
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
/** Ancho útil (sin borde ni relleno) del contenedor de la tabla, en pantalla. */
|
|
82
|
+
export declare function readParentSpan(view: EditorView, entry: TableEntry, zoom: number): {
|
|
83
|
+
left: number;
|
|
84
|
+
right: number;
|
|
85
|
+
};
|
|
86
|
+
/**
|
|
87
|
+
* Hueco entre los hermanos de la tabla (los hijos de su contenedor) más cercano a la altura del puntero. Antes del
|
|
88
|
+
* encabezado y después del pie de página no se puede soltar. `null` si no hay ninguno válido.
|
|
89
|
+
*/
|
|
90
|
+
export declare function findDropTarget(view: EditorView, entry: TableEntry, pointerY: number, origin: LayerOrigin, zoom: number): DropTarget | null;
|
|
91
|
+
export interface FloatPlacement {
|
|
92
|
+
/** Lado hacia el que flota: la mitad del contenedor en la que queda el centro de la tabla. */
|
|
93
|
+
side: 'left' | 'right';
|
|
94
|
+
/** Distancia (pt) entre la tabla y el borde del contenedor del lado hacia el que flota. */
|
|
95
|
+
distance: number;
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Lado y distancia al borde de una tabla flotante que se suelta con su esquina superior izquierda en `tableLeft` (capa).
|
|
99
|
+
* `tableWidth` y `span` son de la capa; el zoom pasa la distancia a los píxeles CSS de la hoja.
|
|
100
|
+
*/
|
|
101
|
+
export declare function floatPlacement(tableLeft: number, tableWidth: number, span: {
|
|
102
|
+
left: number;
|
|
103
|
+
right: number;
|
|
104
|
+
}, zoom: number): FloatPlacement;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { Extension } from '@tiptap/core';
|
|
2
|
+
export interface DocumentTableHandlesOptions {
|
|
3
|
+
/**
|
|
4
|
+
* Selector del contenedor con desplazamiento donde se montan las asas. Se busca desde el DOM de la hoja hacia
|
|
5
|
+
* arriba; por defecto el lienzo de la librería (`.ate-content`).
|
|
6
|
+
*/
|
|
7
|
+
containerSelector: string;
|
|
8
|
+
/**
|
|
9
|
+
* Dice si las asas se ofrecen ahora (por defecto siempre). Se consulta en cada dibujo y no vuelve a crear el editor al
|
|
10
|
+
* cambiar: el componente lo apaga con `showTools` en `false`, que deja solo el lienzo.
|
|
11
|
+
*/
|
|
12
|
+
isEnabled: () => boolean;
|
|
13
|
+
}
|
|
14
|
+
export declare const DocumentTableHandles: Extension<DocumentTableHandlesOptions, any>;
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { ElementRef } from '@angular/core';
|
|
2
|
+
import type { DocumentCellAlignment, DocumentCellAlignmentChoice } from '../document-editor-table-layout';
|
|
3
|
+
/** Posición de la cuadrícula: la alineación que aplica y su nombre para el `title` y el `aria-label`. */
|
|
4
|
+
interface AlignmentOption extends DocumentCellAlignmentChoice {
|
|
5
|
+
label: string;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Cuadrícula de 3 × 3 botones con la alineación de las celdas (la de Word en el grupo "Alineación" de la pestaña Disposición
|
|
9
|
+
* de tabla): cada botón dibuja un bloque de texto en la posición que aplica. Se pone directamente en la cinta; no se abre ni se
|
|
10
|
+
* cierra, solo avisa la posición elegida. Ningún botón toma el foco al pulsarlo, así el editor conserva la selección; con el
|
|
11
|
+
* teclado las flechas, Inicio y Fin mueven el foco dentro de la cuadrícula (una sola posición es tabulable).
|
|
12
|
+
*/
|
|
13
|
+
export declare class DocumentEditorAlignmentGrid {
|
|
14
|
+
private readonly host;
|
|
15
|
+
constructor(host: ElementRef<HTMLElement>);
|
|
16
|
+
/** Alineación de las celdas seleccionadas; su posición se marca como activa. `null` fuera de una tabla. */
|
|
17
|
+
current: import("@angular/core").InputSignal<DocumentCellAlignment | null>;
|
|
18
|
+
picked: import("@angular/core").OutputEmitterRef<DocumentCellAlignmentChoice>;
|
|
19
|
+
readonly options: readonly AlignmentOption[];
|
|
20
|
+
/** Posición con el foco del teclado; `null` cuando el foco está fuera de la cuadrícula. */
|
|
21
|
+
private readonly focused;
|
|
22
|
+
/** Posición que corresponde a la alineación actual; -1 si las celdas no coinciden en alguno de los ejes. */
|
|
23
|
+
activeIndex: import("@angular/core").Signal<number>;
|
|
24
|
+
/** Posición que recibe el foco con Tab (tabulación itinerante): la del teclado, si no la activa y, si no, la primera. */
|
|
25
|
+
tabbableIndex: import("@angular/core").Signal<number>;
|
|
26
|
+
pick(option: AlignmentOption): void;
|
|
27
|
+
focusCell(index: number): void;
|
|
28
|
+
onFocusOut(event: FocusEvent): void;
|
|
29
|
+
/** Flechas, Inicio y Fin mueven el foco sin salir de la cuadrícula. */
|
|
30
|
+
onKeydown(event: KeyboardEvent): void;
|
|
31
|
+
}
|
|
32
|
+
export {};
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { type DocumentSpinnerCommit } from '../../../ribbon/spinner/document-editor-spinner';
|
|
2
|
+
import { type DocumentCellMarginScope, type DocumentCellMargins } from '../document-editor-table-layout';
|
|
3
|
+
/** Lo que se aplica al aceptar el menú: los márgenes (cm) y dónde se aplican. */
|
|
4
|
+
export interface DocumentCellMarginsRequest {
|
|
5
|
+
margins: DocumentCellMargins;
|
|
6
|
+
scope: DocumentCellMarginScope;
|
|
7
|
+
}
|
|
8
|
+
type MarginSide = keyof DocumentCellMargins;
|
|
9
|
+
/**
|
|
10
|
+
* Contenido del menú "Márgenes de celda" de `document-editor` (el "Opciones de celda" de Word): los cuatro márgenes internos
|
|
11
|
+
* de las celdas, en cm, y si se aplican a las celdas seleccionadas o a toda la tabla. Se dibuja dentro de un `popover` del
|
|
12
|
+
* editor: no se abre ni se cierra solo, solo avisa lo elegido al aceptar (quien lo usa lo aplica y cierra el menú). Los
|
|
13
|
+
* campos se editan en un borrador: nada cambia en el documento hasta pulsar "Aceptar" (o Enter en un campo).
|
|
14
|
+
*/
|
|
15
|
+
export declare class DocumentEditorCellMarginsMenu {
|
|
16
|
+
/** Márgenes (cm) de las celdas seleccionadas; `null` si no declaran márgenes propios (el menú parte de los de Word). */
|
|
17
|
+
margins: import("@angular/core").InputSignal<DocumentCellMargins | null>;
|
|
18
|
+
applied: import("@angular/core").OutputEmitterRef<DocumentCellMarginsRequest>;
|
|
19
|
+
private readonly spinners;
|
|
20
|
+
private readonly menuId;
|
|
21
|
+
readonly titleId: string;
|
|
22
|
+
readonly scopeId: string;
|
|
23
|
+
readonly maxMargin = 5;
|
|
24
|
+
readonly fields: readonly {
|
|
25
|
+
side: MarginSide;
|
|
26
|
+
label: string;
|
|
27
|
+
icon: string;
|
|
28
|
+
}[];
|
|
29
|
+
/** Márgenes que muestran los campos (cm): los de la selección más lo que se escribió y confirmó en ellos. */
|
|
30
|
+
draft: import("@angular/core").WritableSignal<DocumentCellMargins>;
|
|
31
|
+
/** "Aplicar a toda la tabla". */
|
|
32
|
+
applyToTable: import("@angular/core").WritableSignal<boolean>;
|
|
33
|
+
private readonly current;
|
|
34
|
+
private readonly _syncDraftEffect;
|
|
35
|
+
onCommitted(side: MarginSide, { value, returnFocus }: DocumentSpinnerCommit): void;
|
|
36
|
+
onScopeChange(event: Event): void;
|
|
37
|
+
/** Vuelve el borrador a los márgenes por defecto de Word (no cambia el documento hasta aceptar). */
|
|
38
|
+
resetDefaults(): void;
|
|
39
|
+
/**
|
|
40
|
+
* Descarta lo que se editó sin aceptar: los campos vuelven a mostrar los márgenes de la selección y el ámbito, a las
|
|
41
|
+
* celdas seleccionadas. Quien abre y cierra el menú lo llama en cada cambio (`beforetoggle`): sin esto, lo escrito y
|
|
42
|
+
* confirmado en un campo se vería al volver a abrirlo aunque no se hubiera aplicado.
|
|
43
|
+
*/
|
|
44
|
+
reset(): void;
|
|
45
|
+
private showDraft;
|
|
46
|
+
/** "Aceptar". */
|
|
47
|
+
apply(): void;
|
|
48
|
+
private emitApplied;
|
|
49
|
+
}
|
|
50
|
+
export {};
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import type { Editor } from '@tiptap/core';
|
|
2
|
+
import type { Node as ProseMirrorNode } from '@tiptap/pm/model';
|
|
3
|
+
import type { EditorState } from '@tiptap/pm/state';
|
|
4
|
+
import type { EditorView } from '@tiptap/pm/view';
|
|
5
|
+
import { type DocumentTableWidthMode } from '../../format/document-editor-commands';
|
|
6
|
+
/** Cómo se reparte el ancho de la tabla (el "Autoajustar" de Word); los mismos valores que "Insertar tabla…". */
|
|
7
|
+
export type DocumentTableAutofit = DocumentTableWidthMode;
|
|
8
|
+
export type DocumentCellVerticalAlign = 'top' | 'middle' | 'bottom';
|
|
9
|
+
export type DocumentCellHorizontalAlign = 'left' | 'center' | 'right';
|
|
10
|
+
export type DocumentCellTextDirection = 'horizontal' | 'rotate90' | 'rotate270';
|
|
11
|
+
/** Dónde se aplican los márgenes de celda: a las celdas seleccionadas o a todas las de la tabla. */
|
|
12
|
+
export type DocumentCellMarginScope = 'selection' | 'table';
|
|
13
|
+
/** Alineación elegida en la cuadrícula de 9 posiciones. */
|
|
14
|
+
export interface DocumentCellAlignmentChoice {
|
|
15
|
+
vertical: DocumentCellVerticalAlign;
|
|
16
|
+
horizontal: DocumentCellHorizontalAlign;
|
|
17
|
+
}
|
|
18
|
+
/** Alineación de las celdas seleccionadas; un eje es `null` si las celdas no coinciden en él (o, el horizontal, si es "justificado"). */
|
|
19
|
+
export interface DocumentCellAlignment {
|
|
20
|
+
vertical: DocumentCellVerticalAlign | null;
|
|
21
|
+
horizontal: DocumentCellHorizontalAlign | null;
|
|
22
|
+
}
|
|
23
|
+
/** Márgenes internos de una celda, en cm. */
|
|
24
|
+
export interface DocumentCellMargins {
|
|
25
|
+
top: number;
|
|
26
|
+
right: number;
|
|
27
|
+
bottom: number;
|
|
28
|
+
left: number;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Disposición de la tabla donde está la selección. Es un objeto aparte del estado de la cinta (`DocumentFormatState`):
|
|
32
|
+
* éste se compara campo a campo con `===` y un objeto nuevo en cada transacción la redibujaría siempre. Se compara con
|
|
33
|
+
* `sameTableLayoutState`.
|
|
34
|
+
*/
|
|
35
|
+
export interface DocumentTableLayoutState {
|
|
36
|
+
/** Alto (cm) de las filas que toca la selección; `null` si no declaran uno (alto automático) o no coinciden. */
|
|
37
|
+
rowHeightCm: number | null;
|
|
38
|
+
/** Ancho (cm) de las columnas que toca la selección; `null` si no se conoce o no coinciden. */
|
|
39
|
+
columnWidthCm: number | null;
|
|
40
|
+
alignment: DocumentCellAlignment | null;
|
|
41
|
+
textDirection: DocumentCellTextDirection | null;
|
|
42
|
+
/** Márgenes (cm) de las celdas seleccionadas; `null` si no declaran márgenes propios o no coinciden. */
|
|
43
|
+
margins: DocumentCellMargins | null;
|
|
44
|
+
/** Autoajuste de la tabla; `null` fuera de una tabla. */
|
|
45
|
+
autofit: DocumentTableAutofit | null;
|
|
46
|
+
}
|
|
47
|
+
export declare const EMPTY_TABLE_LAYOUT_STATE: DocumentTableLayoutState;
|
|
48
|
+
/** Márgenes por defecto de una celda de Word: 0 arriba y abajo, 0,19 cm a los lados. */
|
|
49
|
+
export declare const DEFAULT_CELL_MARGINS_CM: DocumentCellMargins;
|
|
50
|
+
/** Opciones del menú "Autoajustar" de la cinta (texto e icono de Material Symbols). */
|
|
51
|
+
export declare const DOCUMENT_TABLE_AUTOFIT_MODES: readonly {
|
|
52
|
+
value: DocumentTableAutofit;
|
|
53
|
+
label: string;
|
|
54
|
+
hint: string;
|
|
55
|
+
icon: string;
|
|
56
|
+
}[];
|
|
57
|
+
/** Opciones de "Dirección del texto" (el botón de la cinta las recorre en este orden con `nextTextDirection`). */
|
|
58
|
+
export declare const DOCUMENT_CELL_TEXT_DIRECTIONS: readonly {
|
|
59
|
+
value: DocumentCellTextDirection;
|
|
60
|
+
label: string;
|
|
61
|
+
icon: string;
|
|
62
|
+
}[];
|
|
63
|
+
export declare function sameMargins(a: DocumentCellMargins | null, b: DocumentCellMargins | null): boolean;
|
|
64
|
+
/** Igualdad de dos disposiciones, para el `equal` de la señal que las guarda (ver `DocumentTableLayoutState`). */
|
|
65
|
+
export declare function sameTableLayoutState(a: DocumentTableLayoutState, b: DocumentTableLayoutState): boolean;
|
|
66
|
+
/** Siguiente dirección del texto al pulsar el botón: horizontal → 90° → 270° → horizontal (con celdas distintas, 90°). */
|
|
67
|
+
export declare function nextTextDirection(current: DocumentCellTextDirection | null): DocumentCellTextDirection;
|
|
68
|
+
/**
|
|
69
|
+
* Quita de las `<col>` de la vista de una tabla el `width` de las columnas que ya no tienen `colwidth`. La vista de la
|
|
70
|
+
* librería (`TableView`) solo escribe el ancho de una columna con ancho y, cuando deja de tenerlo, escribe el mínimo pero no
|
|
71
|
+
* borra el ancho anterior: la tabla seguiría dibujándose con las columnas de antes (al pasar a "Autoajustar al contenido" o
|
|
72
|
+
* al deshacer un cambio de ancho). `wrapper` es el contenedor de la vista de la tabla (`view.nodeDOM(posición)`) y `table`
|
|
73
|
+
* su nodo. Solo cambia el DOM de la vista: el documento y el HTML guardado no se tocan. La llaman los comandos de este
|
|
74
|
+
* archivo y debería llamarla también `syncTableStyle` (`document-editor-table.ts`) en cada cambio del documento, para cubrir
|
|
75
|
+
* deshacer y rehacer.
|
|
76
|
+
*/
|
|
77
|
+
export declare function removeStaleColumnWidths(wrapper: HTMLElement, table: ProseMirrorNode): void;
|
|
78
|
+
export declare function setTableAutofit(editor: Editor, mode: DocumentTableAutofit, focus?: boolean): void;
|
|
79
|
+
export declare function setColumnWidth(editor: Editor, centimeters: number, focus?: boolean): void;
|
|
80
|
+
export declare function distributeColumns(editor: Editor, focus?: boolean): void;
|
|
81
|
+
export declare function setRowHeight(editor: Editor, centimeters: number, focus?: boolean): void;
|
|
82
|
+
export declare function distributeRows(editor: Editor, focus?: boolean): void;
|
|
83
|
+
export declare function setCellAlignment(editor: Editor, vertical: DocumentCellVerticalAlign, horizontal: DocumentCellHorizontalAlign, focus?: boolean): void;
|
|
84
|
+
export declare function setCellTextDirection(editor: Editor, direction: DocumentCellTextDirection, focus?: boolean): void;
|
|
85
|
+
export declare function setCellMargins(editor: Editor, margins: DocumentCellMargins, scope?: DocumentCellMarginScope, focus?: boolean): void;
|
|
86
|
+
/**
|
|
87
|
+
* Disposición de la tabla donde está la selección (ver `DocumentTableLayoutState`). Corre en cada cambio de selección, así
|
|
88
|
+
* que solo lee estilos en línea; recorre las celdas de la tabla, por lo que conviene llamarla solo con el cursor en una tabla.
|
|
89
|
+
* Con `view` (la del mismo documento) se mide además el ancho con que se dibujan las columnas que no declaran uno: eso lee el
|
|
90
|
+
* DOM y puede forzar un reflujo, úsese solo mientras se ve la pestaña de la tabla.
|
|
91
|
+
*/
|
|
92
|
+
export declare function readTableLayoutState(state: EditorState, view?: EditorView): DocumentTableLayoutState;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { Node as ProseMirrorNode } from '@tiptap/pm/model';
|
|
2
|
+
import type { Selection } from '@tiptap/pm/state';
|
|
3
|
+
import { type TableLook } from './document-editor-table-styles';
|
|
4
|
+
export interface TableDesignState {
|
|
5
|
+
/** Código del estilo aplicado (ver `DOCUMENT_TABLE_STYLES`); `null` si la tabla no tiene o el cursor no está en una. */
|
|
6
|
+
tableStyle: string | null;
|
|
7
|
+
/** Opciones de estilo; todas apagadas si la tabla no tiene estilo o el cursor no está en una tabla. */
|
|
8
|
+
look: TableLook;
|
|
9
|
+
}
|
|
10
|
+
/** Estado fuera de una tabla (o de una tabla sin estilo). */
|
|
11
|
+
export declare const EMPTY_TABLE_DESIGN_STATE: TableDesignState;
|
|
12
|
+
/**
|
|
13
|
+
* Tabla más interna alrededor de la selección: la del cursor o, con celdas seleccionadas, la de esas celdas.
|
|
14
|
+
* Se lee el nodo por nombre, nunca con `instanceof` (la aplicación y la librería cargan copias distintas de
|
|
15
|
+
* ProseMirror).
|
|
16
|
+
*/
|
|
17
|
+
export declare function findInnermostTable({ $from }: Selection): ProseMirrorNode | null;
|
|
18
|
+
/** Estilo y opciones que guarda una tabla en sus atributos. */
|
|
19
|
+
export declare function readTableDesign(table: ProseMirrorNode): TableDesignState;
|
|
20
|
+
/** Estilo de tabla y opciones de estilo de la tabla del cursor (la más interna), o el estado vacío fuera de una tabla. */
|
|
21
|
+
export declare function readTableDesignState({ selection }: {
|
|
22
|
+
selection: Selection;
|
|
23
|
+
}): TableDesignState;
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import type { Editor } from '@tiptap/core';
|
|
2
|
+
import type { EditorState, Transaction } from '@tiptap/pm/state';
|
|
3
|
+
import { type TableLook, type TableLookFlag } from './document-editor-table-styles';
|
|
4
|
+
/**
|
|
5
|
+
* Aplica el estilo `styleId` (un código de `DOCUMENT_TABLE_STYLES`) a la tabla más interna alrededor de la selección,
|
|
6
|
+
* dentro de la transacción `tr` (para encadenarlo con otros pasos). `null` quita el estilo: las celdas quedan sin
|
|
7
|
+
* bordes ni relleno y se quitan los atributos `tableStyle` y `tableLook`. Un código que no está en el catálogo no hace
|
|
8
|
+
* nada. Sin `look` se conservan las opciones de la tabla (o, si no tenía estilo, las de Word: encabezado y filas con
|
|
9
|
+
* bandas). Pisa el formato propio de las celdas. Si nada cambia no agrega pasos a la transacción.
|
|
10
|
+
*/
|
|
11
|
+
export declare function applyTableStyleToTransaction(tr: Transaction, styleId: string | null, look?: TableLook): void;
|
|
12
|
+
/**
|
|
13
|
+
* Aplica un estilo de tabla (ver `applyTableStyleToTransaction`) a la tabla donde está el cursor, en un solo paso al
|
|
14
|
+
* deshacer. `null` es "Sin estilo".
|
|
15
|
+
*/
|
|
16
|
+
export declare function applyTableStyle(editor: Editor, styleId: string | null, look?: TableLook): void;
|
|
17
|
+
/**
|
|
18
|
+
* Activa o desactiva una opción de estilo de tabla (fila de encabezado, filas con bandas…) y vuelve a aplicar el
|
|
19
|
+
* estilo de la tabla con las opciones nuevas. Una opción solo se ve a través de un estilo: si la tabla no tiene
|
|
20
|
+
* estilo (o tiene uno que ya no existe) no se puede cambiar y no hace nada (la cinta deshabilita las casillas). Solo
|
|
21
|
+
* se reescriben las celdas que todavía llevan el formato del estilo: lo puesto a mano en otras se conserva.
|
|
22
|
+
*/
|
|
23
|
+
export declare function setTableLookOption(editor: Editor, flag: TableLookFlag, enabled: boolean): void;
|
|
24
|
+
/**
|
|
25
|
+
* Vuelve a aplicar a la tabla del cursor su propio estilo y opciones en todas sus celdas (es lo que hace "Volver a
|
|
26
|
+
* aplicar el estilo": quita el sombreado y los bordes puestos a mano). Sin estilo no hace nada. Las filas y columnas
|
|
27
|
+
* nuevas no lo necesitan: el estilo se mantiene solo (ver `restyleResizedTables`).
|
|
28
|
+
*/
|
|
29
|
+
export declare function refreshTableStyle(editor: Editor): void;
|
|
30
|
+
/**
|
|
31
|
+
* Mantiene el estilo de las tablas cuando cambia su número de filas o de columnas: cada fila o columna que se agrega
|
|
32
|
+
* o se quita, sea desde la cinta, los "+" de las asas, Tab en la última celda, los menús de la librería o al deshacer,
|
|
33
|
+
* corre las bandas y los bordes del estilo, y las celdas nuevas nacen con el formato de una vecina (la de un
|
|
34
|
+
* encabezado, por ejemplo). Es el `appendTransaction` de `documentTableDesign` (ver
|
|
35
|
+
* `document-editor-table-design-extension.ts`): la transacción que devuelve va en el mismo paso al deshacer.
|
|
36
|
+
* Solo se reescriben las celdas nuevas y las que todavía llevan el formato del estilo antes del cambio (el sombreado y
|
|
37
|
+
* los bordes puestos a mano en otras se conservan). Una tabla sin estilo (o con uno que ya no existe) no se toca.
|
|
38
|
+
*/
|
|
39
|
+
export declare function restyleResizedTables(transactions: readonly Transaction[], oldState: EditorState, newState: EditorState): Transaction | null;
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
/** Atributos HTML con los que la tabla guarda el código de su estilo y sus opciones (ver `document-editor-table-design-extension.ts`). */
|
|
2
|
+
export declare const TABLE_STYLE_ATTRIBUTE = "data-table-style";
|
|
3
|
+
export declare const TABLE_LOOK_ATTRIBUTE = "data-table-look";
|
|
4
|
+
/** Las seis opciones de estilo de tabla de Word ("Fila de encabezado", "Filas con bandas"…). */
|
|
5
|
+
export type TableLookFlag = 'headerRow' | 'totalRow' | 'bandedRows' | 'firstColumn' | 'lastColumn' | 'bandedColumns';
|
|
6
|
+
export interface TableLook {
|
|
7
|
+
readonly headerRow: boolean;
|
|
8
|
+
readonly totalRow: boolean;
|
|
9
|
+
readonly bandedRows: boolean;
|
|
10
|
+
readonly firstColumn: boolean;
|
|
11
|
+
readonly lastColumn: boolean;
|
|
12
|
+
readonly bandedColumns: boolean;
|
|
13
|
+
}
|
|
14
|
+
/** Opciones en el orden de Word, con su texto para la cinta. */
|
|
15
|
+
export declare const TABLE_LOOK_OPTIONS: readonly {
|
|
16
|
+
flag: TableLookFlag;
|
|
17
|
+
label: string;
|
|
18
|
+
}[];
|
|
19
|
+
/** Todas las opciones apagadas: lo que tiene una tabla sin estilo. */
|
|
20
|
+
export declare const NO_TABLE_LOOK: TableLook;
|
|
21
|
+
/** Opciones con las que se aplica un estilo a una tabla que no tenía: las de Word (encabezado y filas con bandas). */
|
|
22
|
+
export declare const DEFAULT_TABLE_LOOK: TableLook;
|
|
23
|
+
/** Lee el atributo `tableLook` (`hr,br`); lo que falta o no se entiende cuenta como apagado. */
|
|
24
|
+
export declare function parseTableLook(value: unknown): TableLook;
|
|
25
|
+
/** Escribe las opciones activas como lista de códigos, siempre en el mismo orden (`hr,br,fc`); sin ninguna, vacío. */
|
|
26
|
+
export declare function serializeTableLook(look: TableLook): string;
|
|
27
|
+
/** Borde de una orilla de celda: grosor en puntos y color `#RRGGBB`. Sin borde se usa `null`. */
|
|
28
|
+
export interface TableBorderSpec {
|
|
29
|
+
width: number;
|
|
30
|
+
color: string;
|
|
31
|
+
}
|
|
32
|
+
/** Contorno de la tabla: sus cuatro orillas exteriores. */
|
|
33
|
+
export interface TableOutline {
|
|
34
|
+
top: TableBorderSpec | null;
|
|
35
|
+
right: TableBorderSpec | null;
|
|
36
|
+
bottom: TableBorderSpec | null;
|
|
37
|
+
left: TableBorderSpec | null;
|
|
38
|
+
}
|
|
39
|
+
/** Formato que una parte de la tabla (encabezado, totales, primera o última columna) suma al de la tabla. */
|
|
40
|
+
export interface TableStylePart {
|
|
41
|
+
/** Relleno `#RRGGBB`. */
|
|
42
|
+
fill?: string;
|
|
43
|
+
/** Color del texto `#RRGGBB`. */
|
|
44
|
+
color?: string;
|
|
45
|
+
bold?: boolean;
|
|
46
|
+
}
|
|
47
|
+
export interface TableStylePreset {
|
|
48
|
+
/** Código interno; es lo que se guarda en el atributo `tableStyle` de la tabla. */
|
|
49
|
+
id: string;
|
|
50
|
+
label: string;
|
|
51
|
+
outline: TableOutline;
|
|
52
|
+
/** Líneas entre filas y entre columnas. */
|
|
53
|
+
insideH: TableBorderSpec | null;
|
|
54
|
+
insideV: TableBorderSpec | null;
|
|
55
|
+
/** Línea bajo la fila de encabezado y sobre la fila de totales; sin ella (`undefined`) valen las de `insideH`. */
|
|
56
|
+
headerBottom?: TableBorderSpec | null;
|
|
57
|
+
totalTop?: TableBorderSpec | null;
|
|
58
|
+
/** Relleno de las bandas (filas y columnas alternas, empezando por la primera tras el encabezado); `null`: sin. */
|
|
59
|
+
band: string | null;
|
|
60
|
+
header: TableStylePart;
|
|
61
|
+
total: TableStylePart;
|
|
62
|
+
firstColumn: TableStylePart;
|
|
63
|
+
lastColumn: TableStylePart;
|
|
64
|
+
}
|
|
65
|
+
export declare const DOCUMENT_TABLE_STYLES: readonly TableStylePreset[];
|
|
66
|
+
/** Estilo del catálogo con ese código, o `null` si no existe (o no hay código). */
|
|
67
|
+
export declare function findTableStylePreset(id: string | null | undefined): TableStylePreset | null;
|
|
68
|
+
/** Dónde está una celda en la cuadrícula de la tabla (0 es la primera fila y columna) y cuántas abarca. */
|
|
69
|
+
export interface TableCellPosition {
|
|
70
|
+
row: number;
|
|
71
|
+
column: number;
|
|
72
|
+
rowSpan: number;
|
|
73
|
+
colSpan: number;
|
|
74
|
+
}
|
|
75
|
+
export interface TableGridSize {
|
|
76
|
+
rows: number;
|
|
77
|
+
columns: number;
|
|
78
|
+
}
|
|
79
|
+
/** Formato que un estilo da a una celda: lo único que el estilo escribe en ella. */
|
|
80
|
+
export interface ResolvedTableCellStyle {
|
|
81
|
+
top: TableBorderSpec | null;
|
|
82
|
+
right: TableBorderSpec | null;
|
|
83
|
+
bottom: TableBorderSpec | null;
|
|
84
|
+
left: TableBorderSpec | null;
|
|
85
|
+
/** Relleno `#RRGGBB`; `null` sin relleno. */
|
|
86
|
+
background: string | null;
|
|
87
|
+
/** Color del texto `#RRGGBB`; `null` el automático. */
|
|
88
|
+
color: string | null;
|
|
89
|
+
bold: boolean;
|
|
90
|
+
}
|
|
91
|
+
/** Declaración CSS de un borde (`0.5pt solid #000000`) o `none`. */
|
|
92
|
+
export declare function tableBorderToCss(border: TableBorderSpec | null): string;
|
|
93
|
+
/**
|
|
94
|
+
* Cómo queda una celda con `preset` y las opciones `look`. Las capas se aplican de menor a mayor prioridad, como las
|
|
95
|
+
* partes condicionales de un estilo de Word: tabla entera, columnas con bandas, filas con bandas, primera columna,
|
|
96
|
+
* última columna, fila de encabezado y fila de totales. Las bandas de filas cuentan desde la primera fila después
|
|
97
|
+
* del encabezado, y las de columnas desde la primera después de la primera columna; la primera, la última columna y
|
|
98
|
+
* las filas de encabezado y de totales no llevan banda.
|
|
99
|
+
* Los bordes salen de la orilla de la tabla donde está cada lado de la celda, así las dos celdas que comparten una
|
|
100
|
+
* orilla (aunque estén combinadas) dibujan el mismo borde.
|
|
101
|
+
*/
|
|
102
|
+
export declare function resolveTableCellStyle(preset: TableStylePreset, look: TableLook, cell: TableCellPosition, grid: TableGridSize): ResolvedTableCellStyle;
|
|
103
|
+
/** Filas y columnas de la tabla pequeña que dibuja la miniatura de la galería. */
|
|
104
|
+
export declare const TABLE_STYLE_PREVIEW_ROWS = 4;
|
|
105
|
+
export declare const TABLE_STYLE_PREVIEW_COLUMNS = 5;
|
|
106
|
+
/** Formato de cada celda de una tabla de muestra (4 × 5) con `preset` y `look`, para dibujar la miniatura. */
|
|
107
|
+
export declare function buildTableStylePreview(preset: TableStylePreset, look: TableLook): ResolvedTableCellStyle[][];
|
|
108
|
+
/** Contraste mínimo (WCAG, texto grande) entre el color de una letra y el relleno de su celda para dejarla como está. */
|
|
109
|
+
export declare const MIN_TEXT_CONTRAST = 3;
|
|
110
|
+
/**
|
|
111
|
+
* Contraste (de 1 a 21) entre el color de una letra y un relleno, ambos `#RGB`, `#RRGGBB` o `rgb(…)`; `null` si alguno no
|
|
112
|
+
* se entiende (en ese caso no se puede decir que la letra no se lea).
|
|
113
|
+
*/
|
|
114
|
+
export declare function contrastRatio(foreground: string, background: string): number | null;
|