vobi_document 1.1.0 → 1.1.1
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/dist/blocks.cjs +33 -25
- package/dist/blocks.d.cts +14 -1
- package/dist/blocks.d.ts +14 -1
- package/dist/blocks.js +3 -3
- package/dist/{chunk-U56KVTK5.cjs → chunk-26DSIOEY.cjs} +8 -8
- package/dist/{chunk-U56KVTK5.cjs.map → chunk-26DSIOEY.cjs.map} +1 -1
- package/dist/{chunk-X2BLERM5.cjs → chunk-3FTKM37U.cjs} +24 -16
- package/dist/chunk-3FTKM37U.cjs.map +1 -0
- package/dist/{chunk-2EBYURIX.js → chunk-CZB7F2LA.js} +3 -3
- package/dist/{chunk-2EBYURIX.js.map → chunk-CZB7F2LA.js.map} +1 -1
- package/dist/{chunk-AQ5FAAP6.cjs → chunk-GR76U6FP.cjs} +37 -11
- package/dist/chunk-GR76U6FP.cjs.map +1 -0
- package/dist/{chunk-KUB3TYG2.cjs → chunk-I22MGPXO.cjs} +22 -7
- package/dist/chunk-I22MGPXO.cjs.map +1 -0
- package/dist/{chunk-HMTCQOEV.js → chunk-JYSA6IM5.js} +22 -14
- package/dist/chunk-JYSA6IM5.js.map +1 -0
- package/dist/{chunk-6GRYRVU5.js → chunk-M6FQVH76.js} +4 -4
- package/dist/{chunk-6GRYRVU5.js.map → chunk-M6FQVH76.js.map} +1 -1
- package/dist/{chunk-JEVWEGSE.js → chunk-MUSSJOOA.js} +21 -7
- package/dist/chunk-MUSSJOOA.js.map +1 -0
- package/dist/{chunk-ABIEQHS2.js → chunk-N3IDPT3B.js} +31 -8
- package/dist/chunk-N3IDPT3B.js.map +1 -0
- package/dist/{chunk-IUDN2CGP.js → chunk-OJZJJEJX.js} +73 -32
- package/dist/chunk-OJZJJEJX.js.map +1 -0
- package/dist/{chunk-ZXWOZZXO.cjs → chunk-QJ5W5EED.cjs} +4 -4
- package/dist/{chunk-ZXWOZZXO.cjs.map → chunk-QJ5W5EED.cjs.map} +1 -1
- package/dist/{chunk-NDHTMYPA.cjs → chunk-RO3Y2MSU.cjs} +7 -7
- package/dist/{chunk-NDHTMYPA.cjs.map → chunk-RO3Y2MSU.cjs.map} +1 -1
- package/dist/{chunk-MHTTFNK2.cjs → chunk-RZOR3HOA.cjs} +80 -37
- package/dist/chunk-RZOR3HOA.cjs.map +1 -0
- package/dist/{chunk-M2TPAU2F.js → chunk-SOIYSSU3.js} +32 -3
- package/dist/chunk-SOIYSSU3.js.map +1 -0
- package/dist/{chunk-IRFFN74K.cjs → chunk-SP5LCPDG.cjs} +32 -2
- package/dist/chunk-SP5LCPDG.cjs.map +1 -0
- package/dist/{chunk-KCZKC3OG.js → chunk-W52ULJCW.js} +3 -3
- package/dist/{chunk-KCZKC3OG.js.map → chunk-W52ULJCW.js.map} +1 -1
- package/dist/editor.cjs +15 -15
- package/dist/editor.js +3 -3
- package/dist/index.cjs +114 -90
- package/dist/index.d.cts +2 -2
- package/dist/index.d.ts +2 -2
- package/dist/index.js +11 -11
- package/dist/print.cjs +13 -13
- package/dist/print.js +4 -4
- package/dist/render.cjs +19 -19
- package/dist/render.js +4 -4
- package/dist/variables.cjs +41 -25
- package/dist/variables.d.cts +34 -2
- package/dist/variables.d.ts +34 -2
- package/dist/variables.js +4 -4
- package/package.json +1 -1
- package/dist/chunk-ABIEQHS2.js.map +0 -1
- package/dist/chunk-AQ5FAAP6.cjs.map +0 -1
- package/dist/chunk-HMTCQOEV.js.map +0 -1
- package/dist/chunk-IRFFN74K.cjs.map +0 -1
- package/dist/chunk-IUDN2CGP.js.map +0 -1
- package/dist/chunk-JEVWEGSE.js.map +0 -1
- package/dist/chunk-KUB3TYG2.cjs.map +0 -1
- package/dist/chunk-M2TPAU2F.js.map +0 -1
- package/dist/chunk-MHTTFNK2.cjs.map +0 -1
- package/dist/chunk-X2BLERM5.cjs.map +0 -1
package/dist/render.cjs
CHANGED
|
@@ -1,72 +1,72 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
4
|
-
var
|
|
3
|
+
var chunk26DSIOEY_cjs = require('./chunk-26DSIOEY.cjs');
|
|
4
|
+
var chunkRO3Y2MSU_cjs = require('./chunk-RO3Y2MSU.cjs');
|
|
5
5
|
require('./chunk-ERKU5FDV.cjs');
|
|
6
|
-
require('./chunk-
|
|
7
|
-
require('./chunk-
|
|
6
|
+
require('./chunk-QJ5W5EED.cjs');
|
|
7
|
+
require('./chunk-SP5LCPDG.cjs');
|
|
8
8
|
|
|
9
9
|
|
|
10
10
|
|
|
11
11
|
Object.defineProperty(exports, "CoverEditable", {
|
|
12
12
|
enumerable: true,
|
|
13
|
-
get: function () { return
|
|
13
|
+
get: function () { return chunk26DSIOEY_cjs.CoverEditable; }
|
|
14
14
|
});
|
|
15
15
|
Object.defineProperty(exports, "CoverTemplateStatic", {
|
|
16
16
|
enumerable: true,
|
|
17
|
-
get: function () { return
|
|
17
|
+
get: function () { return chunk26DSIOEY_cjs.CoverTemplateStatic; }
|
|
18
18
|
});
|
|
19
19
|
Object.defineProperty(exports, "COMPANY_INFO_ICONS", {
|
|
20
20
|
enumerable: true,
|
|
21
|
-
get: function () { return
|
|
21
|
+
get: function () { return chunkRO3Y2MSU_cjs.COMPANY_INFO_ICONS; }
|
|
22
22
|
});
|
|
23
23
|
Object.defineProperty(exports, "COVER_TEMPLATE_IDS", {
|
|
24
24
|
enumerable: true,
|
|
25
|
-
get: function () { return
|
|
25
|
+
get: function () { return chunkRO3Y2MSU_cjs.COVER_TEMPLATE_IDS; }
|
|
26
26
|
});
|
|
27
27
|
Object.defineProperty(exports, "CoverPage", {
|
|
28
28
|
enumerable: true,
|
|
29
|
-
get: function () { return
|
|
29
|
+
get: function () { return chunkRO3Y2MSU_cjs.CoverPage; }
|
|
30
30
|
});
|
|
31
31
|
Object.defineProperty(exports, "DG_ERROR", {
|
|
32
32
|
enumerable: true,
|
|
33
|
-
get: function () { return
|
|
33
|
+
get: function () { return chunkRO3Y2MSU_cjs.DG_ERROR; }
|
|
34
34
|
});
|
|
35
35
|
Object.defineProperty(exports, "DG_MESSAGE_SOURCE", {
|
|
36
36
|
enumerable: true,
|
|
37
|
-
get: function () { return
|
|
37
|
+
get: function () { return chunkRO3Y2MSU_cjs.DG_MESSAGE_SOURCE; }
|
|
38
38
|
});
|
|
39
39
|
Object.defineProperty(exports, "DG_READY", {
|
|
40
40
|
enumerable: true,
|
|
41
|
-
get: function () { return
|
|
41
|
+
get: function () { return chunkRO3Y2MSU_cjs.DG_READY; }
|
|
42
42
|
});
|
|
43
43
|
Object.defineProperty(exports, "DocumentRenderer", {
|
|
44
44
|
enumerable: true,
|
|
45
|
-
get: function () { return
|
|
45
|
+
get: function () { return chunkRO3Y2MSU_cjs.DocumentRenderer; }
|
|
46
46
|
});
|
|
47
47
|
Object.defineProperty(exports, "FOOTER_INFO_ORDER", {
|
|
48
48
|
enumerable: true,
|
|
49
|
-
get: function () { return
|
|
49
|
+
get: function () { return chunkRO3Y2MSU_cjs.FOOTER_INFO_ORDER; }
|
|
50
50
|
});
|
|
51
51
|
Object.defineProperty(exports, "FooterBar", {
|
|
52
52
|
enumerable: true,
|
|
53
|
-
get: function () { return
|
|
53
|
+
get: function () { return chunkRO3Y2MSU_cjs.FooterBar; }
|
|
54
54
|
});
|
|
55
55
|
Object.defineProperty(exports, "HEADER_INFO_ORDER", {
|
|
56
56
|
enumerable: true,
|
|
57
|
-
get: function () { return
|
|
57
|
+
get: function () { return chunkRO3Y2MSU_cjs.HEADER_INFO_ORDER; }
|
|
58
58
|
});
|
|
59
59
|
Object.defineProperty(exports, "HeaderBar", {
|
|
60
60
|
enumerable: true,
|
|
61
|
-
get: function () { return
|
|
61
|
+
get: function () { return chunkRO3Y2MSU_cjs.HeaderBar; }
|
|
62
62
|
});
|
|
63
63
|
Object.defineProperty(exports, "resolveCoverAccent", {
|
|
64
64
|
enumerable: true,
|
|
65
|
-
get: function () { return
|
|
65
|
+
get: function () { return chunkRO3Y2MSU_cjs.resolveCoverAccent; }
|
|
66
66
|
});
|
|
67
67
|
Object.defineProperty(exports, "resolveCoverColors", {
|
|
68
68
|
enumerable: true,
|
|
69
|
-
get: function () { return
|
|
69
|
+
get: function () { return chunkRO3Y2MSU_cjs.resolveCoverColors; }
|
|
70
70
|
});
|
|
71
71
|
//# sourceMappingURL=render.cjs.map
|
|
72
72
|
//# sourceMappingURL=render.cjs.map
|
package/dist/render.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
export { CoverEditable, CoverTemplateStatic } from './chunk-
|
|
2
|
-
export { COMPANY_INFO_ICONS, COVER_TEMPLATE_IDS, CoverPage, DG_ERROR, DG_MESSAGE_SOURCE, DG_READY, DocumentRenderer, FOOTER_INFO_ORDER, FooterBar, HEADER_INFO_ORDER, HeaderBar, resolveCoverAccent, resolveCoverColors } from './chunk-
|
|
1
|
+
export { CoverEditable, CoverTemplateStatic } from './chunk-W52ULJCW.js';
|
|
2
|
+
export { COMPANY_INFO_ICONS, COVER_TEMPLATE_IDS, CoverPage, DG_ERROR, DG_MESSAGE_SOURCE, DG_READY, DocumentRenderer, FOOTER_INFO_ORDER, FooterBar, HEADER_INFO_ORDER, HeaderBar, resolveCoverAccent, resolveCoverColors } from './chunk-M6FQVH76.js';
|
|
3
3
|
import './chunk-PLQNNXS2.js';
|
|
4
|
-
import './chunk-
|
|
5
|
-
import './chunk-
|
|
4
|
+
import './chunk-CZB7F2LA.js';
|
|
5
|
+
import './chunk-SOIYSSU3.js';
|
|
6
6
|
//# sourceMappingURL=render.js.map
|
|
7
7
|
//# sourceMappingURL=render.js.map
|
package/dist/variables.cjs
CHANGED
|
@@ -1,95 +1,111 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
4
|
-
var
|
|
5
|
-
var
|
|
6
|
-
var
|
|
3
|
+
var chunkGR76U6FP_cjs = require('./chunk-GR76U6FP.cjs');
|
|
4
|
+
var chunkI22MGPXO_cjs = require('./chunk-I22MGPXO.cjs');
|
|
5
|
+
var chunkQJ5W5EED_cjs = require('./chunk-QJ5W5EED.cjs');
|
|
6
|
+
var chunkSP5LCPDG_cjs = require('./chunk-SP5LCPDG.cjs');
|
|
7
7
|
|
|
8
8
|
|
|
9
9
|
|
|
10
|
+
Object.defineProperty(exports, "VARIABLE_MENU_MAX_HEIGHT", {
|
|
11
|
+
enumerable: true,
|
|
12
|
+
get: function () { return chunkGR76U6FP_cjs.VARIABLE_MENU_MAX_HEIGHT; }
|
|
13
|
+
});
|
|
14
|
+
Object.defineProperty(exports, "VARIABLE_MENU_WIDTH", {
|
|
15
|
+
enumerable: true,
|
|
16
|
+
get: function () { return chunkGR76U6FP_cjs.VARIABLE_MENU_WIDTH; }
|
|
17
|
+
});
|
|
10
18
|
Object.defineProperty(exports, "VariableMenu", {
|
|
11
19
|
enumerable: true,
|
|
12
|
-
get: function () { return
|
|
20
|
+
get: function () { return chunkGR76U6FP_cjs.VariableMenu; }
|
|
21
|
+
});
|
|
22
|
+
Object.defineProperty(exports, "placeVariableMenu", {
|
|
23
|
+
enumerable: true,
|
|
24
|
+
get: function () { return chunkGR76U6FP_cjs.placeVariableMenu; }
|
|
13
25
|
});
|
|
14
26
|
Object.defineProperty(exports, "variableCatalogSchema", {
|
|
15
27
|
enumerable: true,
|
|
16
|
-
get: function () { return
|
|
28
|
+
get: function () { return chunkGR76U6FP_cjs.variableCatalogSchema; }
|
|
17
29
|
});
|
|
18
30
|
Object.defineProperty(exports, "variableDefSchema", {
|
|
19
31
|
enumerable: true,
|
|
20
|
-
get: function () { return
|
|
32
|
+
get: function () { return chunkGR76U6FP_cjs.variableDefSchema; }
|
|
21
33
|
});
|
|
22
34
|
Object.defineProperty(exports, "variableTypeSchema", {
|
|
23
35
|
enumerable: true,
|
|
24
|
-
get: function () { return
|
|
36
|
+
get: function () { return chunkGR76U6FP_cjs.variableTypeSchema; }
|
|
25
37
|
});
|
|
26
38
|
Object.defineProperty(exports, "CHIP_CLASS", {
|
|
27
39
|
enumerable: true,
|
|
28
|
-
get: function () { return
|
|
40
|
+
get: function () { return chunkI22MGPXO_cjs.CHIP_CLASS; }
|
|
41
|
+
});
|
|
42
|
+
Object.defineProperty(exports, "EMPTY_CHIP_CLASS", {
|
|
43
|
+
enumerable: true,
|
|
44
|
+
get: function () { return chunkI22MGPXO_cjs.EMPTY_CHIP_CLASS; }
|
|
29
45
|
});
|
|
30
46
|
Object.defineProperty(exports, "INVALID_CHIP_CLASS", {
|
|
31
47
|
enumerable: true,
|
|
32
|
-
get: function () { return
|
|
48
|
+
get: function () { return chunkI22MGPXO_cjs.INVALID_CHIP_CLASS; }
|
|
33
49
|
});
|
|
34
50
|
Object.defineProperty(exports, "NOT_INFORMED_LABEL", {
|
|
35
51
|
enumerable: true,
|
|
36
|
-
get: function () { return
|
|
52
|
+
get: function () { return chunkI22MGPXO_cjs.NOT_INFORMED_LABEL; }
|
|
37
53
|
});
|
|
38
54
|
Object.defineProperty(exports, "buildVariableChipHtml", {
|
|
39
55
|
enumerable: true,
|
|
40
|
-
get: function () { return
|
|
56
|
+
get: function () { return chunkI22MGPXO_cjs.buildVariableChipHtml; }
|
|
41
57
|
});
|
|
42
58
|
Object.defineProperty(exports, "collectVariableIssues", {
|
|
43
59
|
enumerable: true,
|
|
44
|
-
get: function () { return
|
|
60
|
+
get: function () { return chunkI22MGPXO_cjs.collectVariableIssues; }
|
|
45
61
|
});
|
|
46
62
|
Object.defineProperty(exports, "resolveVariableHtml", {
|
|
47
63
|
enumerable: true,
|
|
48
|
-
get: function () { return
|
|
64
|
+
get: function () { return chunkI22MGPXO_cjs.resolveVariableHtml; }
|
|
49
65
|
});
|
|
50
66
|
Object.defineProperty(exports, "formatResolvedValues", {
|
|
51
67
|
enumerable: true,
|
|
52
|
-
get: function () { return
|
|
68
|
+
get: function () { return chunkQJ5W5EED_cjs.formatResolvedValues; }
|
|
53
69
|
});
|
|
54
70
|
Object.defineProperty(exports, "formatValue", {
|
|
55
71
|
enumerable: true,
|
|
56
|
-
get: function () { return
|
|
72
|
+
get: function () { return chunkQJ5W5EED_cjs.formatValue; }
|
|
57
73
|
});
|
|
58
74
|
Object.defineProperty(exports, "resolveDocumentVariables", {
|
|
59
75
|
enumerable: true,
|
|
60
|
-
get: function () { return
|
|
76
|
+
get: function () { return chunkQJ5W5EED_cjs.resolveDocumentVariables; }
|
|
61
77
|
});
|
|
62
78
|
Object.defineProperty(exports, "CatalogProvider", {
|
|
63
79
|
enumerable: true,
|
|
64
|
-
get: function () { return
|
|
80
|
+
get: function () { return chunkSP5LCPDG_cjs.CatalogProvider; }
|
|
65
81
|
});
|
|
66
82
|
Object.defineProperty(exports, "ResolvedProvider", {
|
|
67
83
|
enumerable: true,
|
|
68
|
-
get: function () { return
|
|
84
|
+
get: function () { return chunkSP5LCPDG_cjs.ResolvedProvider; }
|
|
69
85
|
});
|
|
70
86
|
Object.defineProperty(exports, "extractBindingKeys", {
|
|
71
87
|
enumerable: true,
|
|
72
|
-
get: function () { return
|
|
88
|
+
get: function () { return chunkSP5LCPDG_cjs.extractBindingKeys; }
|
|
73
89
|
});
|
|
74
90
|
Object.defineProperty(exports, "findInvalidBindings", {
|
|
75
91
|
enumerable: true,
|
|
76
|
-
get: function () { return
|
|
92
|
+
get: function () { return chunkSP5LCPDG_cjs.findInvalidBindings; }
|
|
77
93
|
});
|
|
78
94
|
Object.defineProperty(exports, "useCatalog", {
|
|
79
95
|
enumerable: true,
|
|
80
|
-
get: function () { return
|
|
96
|
+
get: function () { return chunkSP5LCPDG_cjs.useCatalog; }
|
|
81
97
|
});
|
|
82
98
|
Object.defineProperty(exports, "useResolvedVariables", {
|
|
83
99
|
enumerable: true,
|
|
84
|
-
get: function () { return
|
|
100
|
+
get: function () { return chunkSP5LCPDG_cjs.useResolvedVariables; }
|
|
85
101
|
});
|
|
86
102
|
Object.defineProperty(exports, "useTranslator", {
|
|
87
103
|
enumerable: true,
|
|
88
|
-
get: function () { return
|
|
104
|
+
get: function () { return chunkSP5LCPDG_cjs.useTranslator; }
|
|
89
105
|
});
|
|
90
106
|
Object.defineProperty(exports, "useUnresolvedDisplay", {
|
|
91
107
|
enumerable: true,
|
|
92
|
-
get: function () { return
|
|
108
|
+
get: function () { return chunkSP5LCPDG_cjs.useUnresolvedDisplay; }
|
|
93
109
|
});
|
|
94
110
|
//# sourceMappingURL=variables.cjs.map
|
|
95
111
|
//# sourceMappingURL=variables.cjs.map
|
package/dist/variables.d.cts
CHANGED
|
@@ -29,12 +29,44 @@ type Props = {
|
|
|
29
29
|
accept?: VariableType[];
|
|
30
30
|
model?: string;
|
|
31
31
|
onPick: (def: VariableDef) => void;
|
|
32
|
+
/** Altura máxima do painel em px. O host reduz quando não há espaço na viewport. */
|
|
33
|
+
maxHeight?: number;
|
|
32
34
|
};
|
|
33
|
-
declare
|
|
35
|
+
declare const VARIABLE_MENU_WIDTH = 260;
|
|
36
|
+
declare const VARIABLE_MENU_MAX_HEIGHT = 320;
|
|
37
|
+
declare function VariableMenu({ accept, model, onPick, maxHeight }: Props): react.JSX.Element;
|
|
38
|
+
|
|
39
|
+
/** Retângulo da âncora em coordenadas de viewport (o que `getBoundingClientRect` devolve). */
|
|
40
|
+
type MenuAnchor = {
|
|
41
|
+
top: number;
|
|
42
|
+
bottom: number;
|
|
43
|
+
left: number;
|
|
44
|
+
};
|
|
45
|
+
type MenuViewport = {
|
|
46
|
+
width: number;
|
|
47
|
+
height: number;
|
|
48
|
+
};
|
|
49
|
+
type MenuPlacement = {
|
|
50
|
+
top: number;
|
|
51
|
+
left: number;
|
|
52
|
+
maxHeight: number;
|
|
53
|
+
placement: 'top' | 'bottom';
|
|
54
|
+
};
|
|
55
|
+
/**
|
|
56
|
+
* Posiciona o menu de variáveis (`position: fixed`) ancorado no cursor: abre para baixo quando cabe,
|
|
57
|
+
* inverte para cima quando não cabe, e encolhe `maxHeight` ao espaço disponível.
|
|
58
|
+
* Sem isso o menu aberto no fim da página fica cortado pela viewport — ver docs/variables.md.
|
|
59
|
+
*/
|
|
60
|
+
declare const placeVariableMenu: (anchor: MenuAnchor, viewport: MenuViewport, options?: {
|
|
61
|
+
width?: number;
|
|
62
|
+
maxHeight?: number;
|
|
63
|
+
minHeight?: number;
|
|
64
|
+
}) => MenuPlacement;
|
|
34
65
|
|
|
35
66
|
declare const NOT_INFORMED_LABEL = "N\u00E3o informado";
|
|
36
67
|
declare const CHIP_CLASS = "dg-var";
|
|
37
68
|
declare const INVALID_CHIP_CLASS = "dg-var--invalid";
|
|
69
|
+
declare const EMPTY_CHIP_CLASS = "dg-var--empty";
|
|
38
70
|
/** Markup canônico do chip de variável — editores de host inserem por aqui. */
|
|
39
71
|
declare const buildVariableChipHtml: (def: {
|
|
40
72
|
key: string;
|
|
@@ -71,4 +103,4 @@ declare function ResolvedProvider({ resolved, ensureResolved, unresolvedDisplay,
|
|
|
71
103
|
declare function useResolvedVariables(): ResolvedVariables;
|
|
72
104
|
declare function useUnresolvedDisplay(): UnresolvedDisplay;
|
|
73
105
|
|
|
74
|
-
export { CHIP_CLASS, INVALID_CHIP_CLASS, NOT_INFORMED_LABEL, ResolvedProvider, ResolvedVariables, UnresolvedDisplay, VariableCatalog, VariableContext, VariableDef, VariableMenu, VariableResolver, VariableType, buildVariableChipHtml, collectVariableIssues, extractBindingKeys, findInvalidBindings, formatResolvedValues, formatValue, resolveDocumentVariables, resolveVariableHtml, useResolvedVariables, useUnresolvedDisplay, variableCatalogSchema, variableDefSchema, variableTypeSchema };
|
|
106
|
+
export { CHIP_CLASS, EMPTY_CHIP_CLASS, INVALID_CHIP_CLASS, type MenuAnchor, type MenuPlacement, type MenuViewport, NOT_INFORMED_LABEL, ResolvedProvider, ResolvedVariables, UnresolvedDisplay, VARIABLE_MENU_MAX_HEIGHT, VARIABLE_MENU_WIDTH, VariableCatalog, VariableContext, VariableDef, VariableMenu, VariableResolver, VariableType, buildVariableChipHtml, collectVariableIssues, extractBindingKeys, findInvalidBindings, formatResolvedValues, formatValue, placeVariableMenu, resolveDocumentVariables, resolveVariableHtml, useResolvedVariables, useUnresolvedDisplay, variableCatalogSchema, variableDefSchema, variableTypeSchema };
|
package/dist/variables.d.ts
CHANGED
|
@@ -29,12 +29,44 @@ type Props = {
|
|
|
29
29
|
accept?: VariableType[];
|
|
30
30
|
model?: string;
|
|
31
31
|
onPick: (def: VariableDef) => void;
|
|
32
|
+
/** Altura máxima do painel em px. O host reduz quando não há espaço na viewport. */
|
|
33
|
+
maxHeight?: number;
|
|
32
34
|
};
|
|
33
|
-
declare
|
|
35
|
+
declare const VARIABLE_MENU_WIDTH = 260;
|
|
36
|
+
declare const VARIABLE_MENU_MAX_HEIGHT = 320;
|
|
37
|
+
declare function VariableMenu({ accept, model, onPick, maxHeight }: Props): react.JSX.Element;
|
|
38
|
+
|
|
39
|
+
/** Retângulo da âncora em coordenadas de viewport (o que `getBoundingClientRect` devolve). */
|
|
40
|
+
type MenuAnchor = {
|
|
41
|
+
top: number;
|
|
42
|
+
bottom: number;
|
|
43
|
+
left: number;
|
|
44
|
+
};
|
|
45
|
+
type MenuViewport = {
|
|
46
|
+
width: number;
|
|
47
|
+
height: number;
|
|
48
|
+
};
|
|
49
|
+
type MenuPlacement = {
|
|
50
|
+
top: number;
|
|
51
|
+
left: number;
|
|
52
|
+
maxHeight: number;
|
|
53
|
+
placement: 'top' | 'bottom';
|
|
54
|
+
};
|
|
55
|
+
/**
|
|
56
|
+
* Posiciona o menu de variáveis (`position: fixed`) ancorado no cursor: abre para baixo quando cabe,
|
|
57
|
+
* inverte para cima quando não cabe, e encolhe `maxHeight` ao espaço disponível.
|
|
58
|
+
* Sem isso o menu aberto no fim da página fica cortado pela viewport — ver docs/variables.md.
|
|
59
|
+
*/
|
|
60
|
+
declare const placeVariableMenu: (anchor: MenuAnchor, viewport: MenuViewport, options?: {
|
|
61
|
+
width?: number;
|
|
62
|
+
maxHeight?: number;
|
|
63
|
+
minHeight?: number;
|
|
64
|
+
}) => MenuPlacement;
|
|
34
65
|
|
|
35
66
|
declare const NOT_INFORMED_LABEL = "N\u00E3o informado";
|
|
36
67
|
declare const CHIP_CLASS = "dg-var";
|
|
37
68
|
declare const INVALID_CHIP_CLASS = "dg-var--invalid";
|
|
69
|
+
declare const EMPTY_CHIP_CLASS = "dg-var--empty";
|
|
38
70
|
/** Markup canônico do chip de variável — editores de host inserem por aqui. */
|
|
39
71
|
declare const buildVariableChipHtml: (def: {
|
|
40
72
|
key: string;
|
|
@@ -71,4 +103,4 @@ declare function ResolvedProvider({ resolved, ensureResolved, unresolvedDisplay,
|
|
|
71
103
|
declare function useResolvedVariables(): ResolvedVariables;
|
|
72
104
|
declare function useUnresolvedDisplay(): UnresolvedDisplay;
|
|
73
105
|
|
|
74
|
-
export { CHIP_CLASS, INVALID_CHIP_CLASS, NOT_INFORMED_LABEL, ResolvedProvider, ResolvedVariables, UnresolvedDisplay, VariableCatalog, VariableContext, VariableDef, VariableMenu, VariableResolver, VariableType, buildVariableChipHtml, collectVariableIssues, extractBindingKeys, findInvalidBindings, formatResolvedValues, formatValue, resolveDocumentVariables, resolveVariableHtml, useResolvedVariables, useUnresolvedDisplay, variableCatalogSchema, variableDefSchema, variableTypeSchema };
|
|
106
|
+
export { CHIP_CLASS, EMPTY_CHIP_CLASS, INVALID_CHIP_CLASS, type MenuAnchor, type MenuPlacement, type MenuViewport, NOT_INFORMED_LABEL, ResolvedProvider, ResolvedVariables, UnresolvedDisplay, VARIABLE_MENU_MAX_HEIGHT, VARIABLE_MENU_WIDTH, VariableCatalog, VariableContext, VariableDef, VariableMenu, VariableResolver, VariableType, buildVariableChipHtml, collectVariableIssues, extractBindingKeys, findInvalidBindings, formatResolvedValues, formatValue, placeVariableMenu, resolveDocumentVariables, resolveVariableHtml, useResolvedVariables, useUnresolvedDisplay, variableCatalogSchema, variableDefSchema, variableTypeSchema };
|
package/dist/variables.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
export { VariableMenu, variableCatalogSchema, variableDefSchema, variableTypeSchema } from './chunk-
|
|
2
|
-
export { CHIP_CLASS, INVALID_CHIP_CLASS, NOT_INFORMED_LABEL, buildVariableChipHtml, collectVariableIssues, resolveVariableHtml } from './chunk-
|
|
3
|
-
export { formatResolvedValues, formatValue, resolveDocumentVariables } from './chunk-
|
|
4
|
-
export { CatalogProvider, ResolvedProvider, extractBindingKeys, findInvalidBindings, useCatalog, useResolvedVariables, useTranslator, useUnresolvedDisplay } from './chunk-
|
|
1
|
+
export { VARIABLE_MENU_MAX_HEIGHT, VARIABLE_MENU_WIDTH, VariableMenu, placeVariableMenu, variableCatalogSchema, variableDefSchema, variableTypeSchema } from './chunk-N3IDPT3B.js';
|
|
2
|
+
export { CHIP_CLASS, EMPTY_CHIP_CLASS, INVALID_CHIP_CLASS, NOT_INFORMED_LABEL, buildVariableChipHtml, collectVariableIssues, resolveVariableHtml } from './chunk-MUSSJOOA.js';
|
|
3
|
+
export { formatResolvedValues, formatValue, resolveDocumentVariables } from './chunk-CZB7F2LA.js';
|
|
4
|
+
export { CatalogProvider, ResolvedProvider, extractBindingKeys, findInvalidBindings, useCatalog, useResolvedVariables, useTranslator, useUnresolvedDisplay } from './chunk-SOIYSSU3.js';
|
|
5
5
|
//# sourceMappingURL=variables.js.map
|
|
6
6
|
//# sourceMappingURL=variables.js.map
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/variables/schema.ts","../src/variables/VariableMenu.tsx"],"names":[],"mappings":"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","file":"chunk-ABIEQHS2.js","sourcesContent":["import { z } from 'zod';\nimport type { VariableCatalog, VariableDef, VariableType } from './types';\n\ntype Schema<T> = z.ZodType<T, z.ZodTypeDef, unknown>;\n\nexport const variableTypeSchema: Schema<VariableType> = z.enum([\n 'string',\n 'number',\n 'date',\n 'currency',\n 'boolean',\n 'document',\n 'phone',\n 'zipcode'\n]);\n\nexport const variableDefSchema: Schema<VariableDef> = z\n .object({\n key: z.string().min(1),\n label: z.string().min(1),\n fullLabel: z.string().optional(),\n type: variableTypeSchema,\n model: z.string().min(1),\n default: z.unknown().optional()\n })\n .strict();\n\nexport const variableCatalogSchema: Schema<VariableCatalog> = z\n .object({\n catalog: z.array(variableDefSchema).default([])\n })\n .strict();\n","import { useEffect, useMemo, useRef, useState } from 'react';\nimport styled from 'styled-components';\nimport { useCatalog, useTranslator } from './catalogContext';\nimport { useEnsureResolved, useResolvedVariables } from './resolvedContext';\nimport type { VariableDef, VariableType } from './types';\n\ntype Props = {\n accept?: VariableType[];\n model?: string;\n onPick: (def: VariableDef) => void;\n};\n\nconst Panel = styled.div`\n width: 260px;\n max-height: 320px;\n overflow: auto;\n background: #fff;\n border: 1px solid #e5e7eb;\n border-radius: 12px;\n box-shadow: 0 12px 32px rgba(17, 24, 39, 0.16);\n padding: 6px;\n`;\n\nconst Search = styled.input`\n width: 100%;\n padding: 9px 10px;\n margin-bottom: 4px;\n border: 1px solid #e5e7eb;\n border-radius: 8px;\n font-size: 13px;\n color: #111827;\n\n &::placeholder {\n color: #9aa3af;\n }\n &:focus {\n outline: none;\n border-color: #1a56db;\n }\n`;\n\nconst GroupLabel = styled.div`\n padding: 10px 10px 4px;\n font-size: 11px;\n font-weight: 700;\n letter-spacing: 0.06em;\n text-transform: uppercase;\n color: #9aa3af;\n`;\n\nconst Option = styled.button`\n display: flex;\n flex-direction: column;\n gap: 1px;\n width: 100%;\n padding: 7px 10px;\n border: none;\n border-radius: 8px;\n background: transparent;\n cursor: pointer;\n text-align: left;\n\n &:hover {\n background: #f3f6fb;\n }\n`;\n\nconst OptionLabel = styled.span`\n color: #1f2937;\n font-size: 13px;\n font-weight: 500;\n`;\n\nconst OptionValue = styled.span`\n color: #9aa3af;\n font-size: 12px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n`;\n\nconst Missing = styled.span`\n color: #e02424;\n font-size: 12px;\n font-style: italic;\n`;\n\nconst Empty = styled.div`\n padding: 14px 10px;\n color: #9aa3af;\n text-align: center;\n font-size: 13px;\n`;\n\nfunction groupBy(defs: VariableDef[]): [string, VariableDef[]][] {\n const map = new Map<string, VariableDef[]>();\n defs.forEach(def => {\n const list = map.get(def.model ?? 'outros') ?? [];\n list.push(def);\n map.set(def.model ?? 'outros', list);\n });\n return [...map.entries()];\n}\n\nexport function VariableMenu({ accept, model, onPick }: Props) {\n const catalog = useCatalog();\n const translator = useTranslator();\n const preview = useResolvedVariables();\n const ensureResolved = useEnsureResolved();\n const [query, setQuery] = useState('');\n const [loading, setLoading] = useState(true);\n const searchRef = useRef<HTMLInputElement>(null);\n const catalogRef = useRef(catalog);\n catalogRef.current = catalog;\n\n useEffect(() => {\n searchRef.current?.focus();\n }, []);\n\n useEffect(() => {\n let active = true;\n ensureResolved(catalogRef.current.map(def => def.key)).finally(() => {\n if (active) setLoading(false);\n });\n return () => {\n active = false;\n };\n }, []);\n\n const options = useMemo(() => {\n const q = query.trim().toLowerCase();\n const matchesQuery = (def: VariableDef) =>\n def.label.toLowerCase().includes(q) || Boolean(def.fullLabel?.toLowerCase().includes(q));\n return catalog.filter(\n def => (!accept || accept.includes(def.type)) && (!model || def.model === model) && (!q || matchesQuery(def))\n );\n }, [catalog, accept, model, query]);\n\n return (\n <Panel>\n <Search ref={searchRef} placeholder=\"Inserir variável\" value={query} onChange={e => setQuery(e.target.value)} />\n {options.length === 0 && <Empty>Nenhuma variável</Empty>}\n {groupBy(options).map(([groupName, defs]) => (\n <div key={groupName}>\n <GroupLabel>{translator[groupName] ?? groupName}</GroupLabel>\n {defs.map(def => {\n const value = preview[def.key];\n return (\n <Option key={def.key} type=\"button\" onMouseDown={e => e.preventDefault()} onClick={() => onPick(def)}>\n <OptionLabel>{def.label}</OptionLabel>\n {value ? <OptionValue>{value}</OptionValue> : null}\n {!value && !loading ? <Missing>Dado não informado</Missing> : null}\n </Option>\n );\n })}\n </div>\n ))}\n </Panel>\n );\n}\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/variables/schema.ts","../src/variables/VariableMenu.tsx"],"names":["z","styled","useCatalog","useTranslator","useResolvedVariables","useEnsureResolved","useState","useRef","useEffect","useMemo","jsx","jsxs"],"mappings":"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","file":"chunk-AQ5FAAP6.cjs","sourcesContent":["import { z } from 'zod';\nimport type { VariableCatalog, VariableDef, VariableType } from './types';\n\ntype Schema<T> = z.ZodType<T, z.ZodTypeDef, unknown>;\n\nexport const variableTypeSchema: Schema<VariableType> = z.enum([\n 'string',\n 'number',\n 'date',\n 'currency',\n 'boolean',\n 'document',\n 'phone',\n 'zipcode'\n]);\n\nexport const variableDefSchema: Schema<VariableDef> = z\n .object({\n key: z.string().min(1),\n label: z.string().min(1),\n fullLabel: z.string().optional(),\n type: variableTypeSchema,\n model: z.string().min(1),\n default: z.unknown().optional()\n })\n .strict();\n\nexport const variableCatalogSchema: Schema<VariableCatalog> = z\n .object({\n catalog: z.array(variableDefSchema).default([])\n })\n .strict();\n","import { useEffect, useMemo, useRef, useState } from 'react';\nimport styled from 'styled-components';\nimport { useCatalog, useTranslator } from './catalogContext';\nimport { useEnsureResolved, useResolvedVariables } from './resolvedContext';\nimport type { VariableDef, VariableType } from './types';\n\ntype Props = {\n accept?: VariableType[];\n model?: string;\n onPick: (def: VariableDef) => void;\n};\n\nconst Panel = styled.div`\n width: 260px;\n max-height: 320px;\n overflow: auto;\n background: #fff;\n border: 1px solid #e5e7eb;\n border-radius: 12px;\n box-shadow: 0 12px 32px rgba(17, 24, 39, 0.16);\n padding: 6px;\n`;\n\nconst Search = styled.input`\n width: 100%;\n padding: 9px 10px;\n margin-bottom: 4px;\n border: 1px solid #e5e7eb;\n border-radius: 8px;\n font-size: 13px;\n color: #111827;\n\n &::placeholder {\n color: #9aa3af;\n }\n &:focus {\n outline: none;\n border-color: #1a56db;\n }\n`;\n\nconst GroupLabel = styled.div`\n padding: 10px 10px 4px;\n font-size: 11px;\n font-weight: 700;\n letter-spacing: 0.06em;\n text-transform: uppercase;\n color: #9aa3af;\n`;\n\nconst Option = styled.button`\n display: flex;\n flex-direction: column;\n gap: 1px;\n width: 100%;\n padding: 7px 10px;\n border: none;\n border-radius: 8px;\n background: transparent;\n cursor: pointer;\n text-align: left;\n\n &:hover {\n background: #f3f6fb;\n }\n`;\n\nconst OptionLabel = styled.span`\n color: #1f2937;\n font-size: 13px;\n font-weight: 500;\n`;\n\nconst OptionValue = styled.span`\n color: #9aa3af;\n font-size: 12px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n`;\n\nconst Missing = styled.span`\n color: #e02424;\n font-size: 12px;\n font-style: italic;\n`;\n\nconst Empty = styled.div`\n padding: 14px 10px;\n color: #9aa3af;\n text-align: center;\n font-size: 13px;\n`;\n\nfunction groupBy(defs: VariableDef[]): [string, VariableDef[]][] {\n const map = new Map<string, VariableDef[]>();\n defs.forEach(def => {\n const list = map.get(def.model ?? 'outros') ?? [];\n list.push(def);\n map.set(def.model ?? 'outros', list);\n });\n return [...map.entries()];\n}\n\nexport function VariableMenu({ accept, model, onPick }: Props) {\n const catalog = useCatalog();\n const translator = useTranslator();\n const preview = useResolvedVariables();\n const ensureResolved = useEnsureResolved();\n const [query, setQuery] = useState('');\n const [loading, setLoading] = useState(true);\n const searchRef = useRef<HTMLInputElement>(null);\n const catalogRef = useRef(catalog);\n catalogRef.current = catalog;\n\n useEffect(() => {\n searchRef.current?.focus();\n }, []);\n\n useEffect(() => {\n let active = true;\n ensureResolved(catalogRef.current.map(def => def.key)).finally(() => {\n if (active) setLoading(false);\n });\n return () => {\n active = false;\n };\n }, []);\n\n const options = useMemo(() => {\n const q = query.trim().toLowerCase();\n const matchesQuery = (def: VariableDef) =>\n def.label.toLowerCase().includes(q) || Boolean(def.fullLabel?.toLowerCase().includes(q));\n return catalog.filter(\n def => (!accept || accept.includes(def.type)) && (!model || def.model === model) && (!q || matchesQuery(def))\n );\n }, [catalog, accept, model, query]);\n\n return (\n <Panel>\n <Search ref={searchRef} placeholder=\"Inserir variável\" value={query} onChange={e => setQuery(e.target.value)} />\n {options.length === 0 && <Empty>Nenhuma variável</Empty>}\n {groupBy(options).map(([groupName, defs]) => (\n <div key={groupName}>\n <GroupLabel>{translator[groupName] ?? groupName}</GroupLabel>\n {defs.map(def => {\n const value = preview[def.key];\n return (\n <Option key={def.key} type=\"button\" onMouseDown={e => e.preventDefault()} onClick={() => onPick(def)}>\n <OptionLabel>{def.label}</OptionLabel>\n {value ? <OptionValue>{value}</OptionValue> : null}\n {!value && !loading ? <Missing>Dado não informado</Missing> : null}\n </Option>\n );\n })}\n </div>\n ))}\n </Panel>\n );\n}\n"]}
|