@pdfme/schemas 5.3.5 → 5.3.7-dev.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.
Files changed (110) hide show
  1. package/dist/node/__tests__/barcode.test.js +332 -0
  2. package/dist/node/__tests__/barcode.test.js.map +1 -0
  3. package/dist/node/__tests__/multiVariableText.test.js +96 -0
  4. package/dist/node/__tests__/multiVariableText.test.js.map +1 -0
  5. package/dist/node/__tests__/text.test.js +409 -0
  6. package/dist/node/__tests__/text.test.js.map +1 -0
  7. package/dist/node/__tests__/utils.test.js +132 -0
  8. package/dist/node/__tests__/utils.test.js.map +1 -0
  9. package/dist/node/src/barcodes/constants.js +20 -0
  10. package/dist/node/src/barcodes/constants.js.map +1 -0
  11. package/dist/node/src/barcodes/helper.js +145 -0
  12. package/dist/node/src/barcodes/helper.js.map +1 -0
  13. package/dist/node/src/barcodes/index.js +18 -0
  14. package/dist/node/src/barcodes/index.js.map +1 -0
  15. package/dist/node/src/barcodes/pdfRender.js +25 -0
  16. package/dist/node/src/barcodes/pdfRender.js.map +1 -0
  17. package/dist/node/src/barcodes/propPanel.js +228 -0
  18. package/dist/node/src/barcodes/propPanel.js.map +1 -0
  19. package/dist/node/src/barcodes/types.js +3 -0
  20. package/dist/node/src/barcodes/types.js.map +1 -0
  21. package/dist/node/src/barcodes/uiRender.js +89 -0
  22. package/dist/node/src/barcodes/uiRender.js.map +1 -0
  23. package/dist/node/src/checkbox/index.js +61 -0
  24. package/dist/node/src/checkbox/index.js.map +1 -0
  25. package/dist/node/src/constants.js +6 -0
  26. package/dist/node/src/constants.js.map +1 -0
  27. package/dist/node/src/date/date.js +9 -0
  28. package/dist/node/src/date/date.js.map +1 -0
  29. package/dist/node/src/date/dateTime.js +9 -0
  30. package/dist/node/src/date/dateTime.js.map +1 -0
  31. package/dist/node/src/date/helper.js +420 -0
  32. package/dist/node/src/date/helper.js.map +1 -0
  33. package/dist/node/src/date/time.js +9 -0
  34. package/dist/node/src/date/time.js.map +1 -0
  35. package/dist/node/src/date/types.js +3 -0
  36. package/dist/node/src/date/types.js.map +1 -0
  37. package/dist/node/src/graphics/cacheKey.js +6 -0
  38. package/dist/node/src/graphics/cacheKey.js.map +1 -0
  39. package/dist/node/src/graphics/image.js +167 -0
  40. package/dist/node/src/graphics/image.js.map +1 -0
  41. package/dist/node/src/graphics/imagehelper.js +124 -0
  42. package/dist/node/src/graphics/imagehelper.js.map +1 -0
  43. package/dist/node/src/graphics/svg.js +85 -0
  44. package/dist/node/src/graphics/svg.js.map +1 -0
  45. package/dist/node/src/index.js +38 -0
  46. package/dist/node/src/index.js.map +1 -0
  47. package/dist/node/src/multiVariableText/helper.js +46 -0
  48. package/dist/node/src/multiVariableText/helper.js.map +1 -0
  49. package/dist/node/src/multiVariableText/index.js +16 -0
  50. package/dist/node/src/multiVariableText/index.js.map +1 -0
  51. package/dist/node/src/multiVariableText/pdfRender.js +20 -0
  52. package/dist/node/src/multiVariableText/pdfRender.js.map +1 -0
  53. package/dist/node/src/multiVariableText/propPanel.js +130 -0
  54. package/dist/node/src/multiVariableText/propPanel.js.map +1 -0
  55. package/dist/node/src/multiVariableText/types.js +3 -0
  56. package/dist/node/src/multiVariableText/types.js.map +1 -0
  57. package/dist/node/src/multiVariableText/uiRender.js +138 -0
  58. package/dist/node/src/multiVariableText/uiRender.js.map +1 -0
  59. package/dist/node/src/radioGroup/index.js +93 -0
  60. package/dist/node/src/radioGroup/index.js.map +1 -0
  61. package/dist/node/src/select/index.js +164 -0
  62. package/dist/node/src/select/index.js.map +1 -0
  63. package/dist/node/src/shapes/line.js +60 -0
  64. package/dist/node/src/shapes/line.js.map +1 -0
  65. package/dist/node/src/shapes/rectAndEllipse.js +122 -0
  66. package/dist/node/src/shapes/rectAndEllipse.js.map +1 -0
  67. package/dist/node/src/tables/cell.js +126 -0
  68. package/dist/node/src/tables/cell.js.map +1 -0
  69. package/dist/node/src/tables/classes.js +467 -0
  70. package/dist/node/src/tables/classes.js.map +1 -0
  71. package/dist/node/src/tables/dynamicTemplate.js +17 -0
  72. package/dist/node/src/tables/dynamicTemplate.js.map +1 -0
  73. package/dist/node/src/tables/helper.js +189 -0
  74. package/dist/node/src/tables/helper.js.map +1 -0
  75. package/dist/node/src/tables/index.js +15 -0
  76. package/dist/node/src/tables/index.js.map +1 -0
  77. package/dist/node/src/tables/pdfRender.js +95 -0
  78. package/dist/node/src/tables/pdfRender.js.map +1 -0
  79. package/dist/node/src/tables/propPanel.js +101 -0
  80. package/dist/node/src/tables/propPanel.js.map +1 -0
  81. package/dist/node/src/tables/tableHelper.js +196 -0
  82. package/dist/node/src/tables/tableHelper.js.map +1 -0
  83. package/dist/node/src/tables/types.js +3 -0
  84. package/dist/node/src/tables/types.js.map +1 -0
  85. package/dist/node/src/tables/uiRender.js +367 -0
  86. package/dist/node/src/tables/uiRender.js.map +1 -0
  87. package/dist/node/src/text/constants.js +97 -0
  88. package/dist/node/src/text/constants.js.map +1 -0
  89. package/dist/node/src/text/extraFormatter.js +48 -0
  90. package/dist/node/src/text/extraFormatter.js.map +1 -0
  91. package/dist/node/src/text/helper.js +472 -0
  92. package/dist/node/src/text/helper.js.map +1 -0
  93. package/dist/node/src/text/icons/index.js +16 -0
  94. package/dist/node/src/text/icons/index.js.map +1 -0
  95. package/dist/node/src/text/index.js +15 -0
  96. package/dist/node/src/text/index.js.map +1 -0
  97. package/dist/node/src/text/pdfRender.js +156 -0
  98. package/dist/node/src/text/pdfRender.js.map +1 -0
  99. package/dist/node/src/text/propPanel.js +161 -0
  100. package/dist/node/src/text/propPanel.js.map +1 -0
  101. package/dist/node/src/text/types.js +3 -0
  102. package/dist/node/src/text/types.js.map +1 -0
  103. package/dist/node/src/text/uiRender.js +223 -0
  104. package/dist/node/src/text/uiRender.js.map +1 -0
  105. package/dist/node/src/utils.js +190 -0
  106. package/dist/node/src/utils.js.map +1 -0
  107. package/package.json +11 -4
  108. package/tsconfig.cjs.json +1 -1
  109. package/tsconfig.esm.json +1 -1
  110. package/tsconfig.node.json +10 -0
@@ -0,0 +1,130 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.propPanel = void 0;
4
+ const propPanel_1 = require("../text/propPanel");
5
+ const mapDynamicVariables = (props) => {
6
+ const { rootElement, changeSchemas, activeSchema, i18n, options } = props;
7
+ const mvtSchema = activeSchema;
8
+ const text = mvtSchema.text || '';
9
+ const variables = JSON.parse(mvtSchema.content) || {};
10
+ const variablesChanged = updateVariablesFromText(text, variables);
11
+ const varNames = Object.keys(variables);
12
+ if (variablesChanged) {
13
+ changeSchemas([
14
+ { key: 'content', value: JSON.stringify(variables), schemaId: activeSchema.id },
15
+ { key: 'variables', value: varNames, schemaId: activeSchema.id }
16
+ ]);
17
+ }
18
+ const placeholderRowEl = document.getElementById('placeholder-dynamic-var')?.closest('.ant-form-item');
19
+ if (!placeholderRowEl) {
20
+ throw new Error('Failed to find Ant form placeholder row to create dynamic variables inputs.');
21
+ }
22
+ placeholderRowEl.style.display = 'none';
23
+ // The wrapping form element has a display:flex which limits the width of the form fields, removing.
24
+ rootElement.parentElement.style.display = 'block';
25
+ if (varNames.length > 0) {
26
+ for (let variableName of varNames) {
27
+ const varRow = placeholderRowEl.cloneNode(true);
28
+ const textarea = varRow.querySelector('textarea');
29
+ textarea.id = 'dynamic-var-' + variableName;
30
+ textarea.value = variables[variableName];
31
+ textarea.addEventListener('change', (e) => {
32
+ variables[variableName] = e.target.value;
33
+ changeSchemas([{ key: 'content', value: JSON.stringify(variables), schemaId: activeSchema.id }]);
34
+ });
35
+ const label = varRow.querySelector('label');
36
+ label.innerText = variableName;
37
+ varRow.style.display = 'block';
38
+ rootElement.appendChild(varRow);
39
+ }
40
+ }
41
+ else {
42
+ const para = document.createElement('p');
43
+ para.innerHTML = i18n('schemas.mvt.typingInstructions')
44
+ + ` <code style="color:${options?.theme?.token?.colorPrimary || "#168fe3"}; font-weight:bold;">{`
45
+ + i18n('schemas.mvt.sampleField')
46
+ + '}</code>';
47
+ rootElement.appendChild(para);
48
+ }
49
+ };
50
+ exports.propPanel = {
51
+ schema: (propPanelProps) => {
52
+ if (typeof propPanel_1.propPanel.schema !== 'function') {
53
+ throw Error('Oops, is text schema no longer a function?');
54
+ }
55
+ return {
56
+ ...propPanel_1.propPanel.schema(propPanelProps),
57
+ '-------': { type: 'void', widget: 'Divider' },
58
+ dynamicVarContainer: {
59
+ title: propPanelProps.i18n('schemas.mvt.variablesSampleData'),
60
+ type: 'string',
61
+ widget: 'Card',
62
+ span: 24,
63
+ properties: {
64
+ dynamicVariables: {
65
+ type: 'object',
66
+ widget: 'mapDynamicVariables',
67
+ bind: false,
68
+ span: 24
69
+ },
70
+ placeholderDynamicVar: {
71
+ title: 'Placeholder Dynamic Variable',
72
+ type: 'string',
73
+ format: 'textarea',
74
+ props: {
75
+ id: 'placeholder-dynamic-var',
76
+ autoSize: {
77
+ minRows: 2,
78
+ maxRows: 5,
79
+ },
80
+ },
81
+ span: 24,
82
+ },
83
+ }
84
+ },
85
+ };
86
+ },
87
+ widgets: { ...propPanel_1.propPanel.widgets, mapDynamicVariables },
88
+ defaultSchema: {
89
+ ...propPanel_1.propPanel.defaultSchema,
90
+ readOnly: false,
91
+ type: 'multiVariableText',
92
+ text: 'Add text here using {} for variables ',
93
+ width: 50,
94
+ height: 15,
95
+ content: '{}',
96
+ variables: [],
97
+ },
98
+ };
99
+ const updateVariablesFromText = (text, variables) => {
100
+ const regex = /\{([^{}]+)}/g;
101
+ const matches = text.match(regex);
102
+ let changed = false;
103
+ if (matches) {
104
+ // Add any new variables
105
+ for (const match of matches) {
106
+ const variableName = match.replace('{', '').replace('}', '');
107
+ if (!(variableName in variables)) {
108
+ // NOTE: We upper case the variable name as the default value
109
+ variables[variableName] = variableName.toUpperCase();
110
+ changed = true;
111
+ }
112
+ }
113
+ // Remove any that no longer exist
114
+ Object.keys(variables).forEach((variableName) => {
115
+ if (!matches.includes('{' + variableName + '}')) {
116
+ delete variables[variableName];
117
+ changed = true;
118
+ }
119
+ });
120
+ }
121
+ else {
122
+ // No matches at all, so clear all variables
123
+ Object.keys(variables).forEach((variableName) => {
124
+ delete variables[variableName];
125
+ changed = true;
126
+ });
127
+ }
128
+ return changed;
129
+ };
130
+ //# sourceMappingURL=propPanel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"propPanel.js","sourceRoot":"","sources":["../../../../src/multiVariableText/propPanel.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/multiVariableText/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,138 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.uiRender = void 0;
4
+ const common_1 = require("@pdfme/common");
5
+ const uiRender_1 = require("../text/uiRender");
6
+ const utils_1 = require("../utils");
7
+ const helper_1 = require("../text/helper");
8
+ const helper_2 = require("./helper");
9
+ const uiRender = async (arg) => {
10
+ const { value, schema, rootElement, mode, onChange, ...rest } = arg;
11
+ let text = schema.text;
12
+ let numVariables = schema.variables.length;
13
+ if (mode === 'form' && numVariables > 0) {
14
+ await formUiRender(arg);
15
+ return;
16
+ }
17
+ await (0, uiRender_1.uiRender)({
18
+ value: (0, utils_1.isEditable)(mode, schema) ? text : (0, helper_2.substituteVariables)(text, value),
19
+ schema,
20
+ mode: mode == 'form' ? 'viewer' : mode,
21
+ rootElement,
22
+ onChange: (arg) => {
23
+ if (!Array.isArray(arg)) {
24
+ const numVariables = countUniqueVariableNames(arg.value);
25
+ onChange && onChange([{ key: 'text', value: arg.value }, { key: 'readOnly', value: numVariables == 0 }]);
26
+ }
27
+ else {
28
+ throw new Error('onChange is not an array, the parent text plugin has changed...');
29
+ }
30
+ },
31
+ ...rest,
32
+ });
33
+ const textBlock = rootElement.querySelector('#text-' + schema.id);
34
+ if (!textBlock) {
35
+ throw new Error('Text block not found. Ensure the text block has an id of "text-" + schema.id');
36
+ }
37
+ if (mode === 'designer') {
38
+ textBlock.addEventListener('keyup', (event) => {
39
+ text = textBlock.textContent || '';
40
+ if (keyPressShouldBeChecked(event)) {
41
+ const newNumVariables = countUniqueVariableNames(text);
42
+ if (numVariables !== newNumVariables) {
43
+ // If variables were modified during this keypress, we trigger a change
44
+ if (onChange) {
45
+ onChange([{ key: 'text', value: text }, { key: 'readOnly', value: newNumVariables == 0 }]);
46
+ }
47
+ numVariables = newNumVariables;
48
+ }
49
+ }
50
+ });
51
+ }
52
+ };
53
+ exports.uiRender = uiRender;
54
+ const formUiRender = async (arg) => {
55
+ const { value, schema, rootElement, onChange, stopEditing, theme, _cache, options, } = arg;
56
+ const rawText = schema.text;
57
+ if (rootElement.parentElement) {
58
+ // remove the outline for the whole schema, we'll apply outlines on each individual variable field instead
59
+ rootElement.parentElement.style.outline = '';
60
+ }
61
+ const variables = JSON.parse(value) || {};
62
+ const variableIndices = getVariableIndices(rawText);
63
+ const substitutedText = (0, helper_2.substituteVariables)(rawText, variables);
64
+ const font = options?.font || (0, common_1.getDefaultFont)();
65
+ const fontKitFont = await (0, helper_1.getFontKitFont)(schema.fontName, font, _cache);
66
+ const textBlock = (0, uiRender_1.buildStyledTextContainer)(arg, fontKitFont, substitutedText);
67
+ // Construct content-editable spans for each variable within the string
68
+ let inVarString = false;
69
+ for (let i = 0; i < rawText.length; i++) {
70
+ if (variableIndices[i]) {
71
+ inVarString = true;
72
+ let span = document.createElement('span');
73
+ span.style.outline = `${theme.colorPrimary} dashed 1px`;
74
+ (0, uiRender_1.makeElementPlainTextContentEditable)(span);
75
+ span.textContent = variables[variableIndices[i]];
76
+ span.addEventListener('blur', (e) => {
77
+ const newValue = e.target.textContent || '';
78
+ if (newValue !== variables[variableIndices[i]]) {
79
+ variables[variableIndices[i]] = newValue;
80
+ onChange && onChange({ key: 'content', value: JSON.stringify(variables) });
81
+ stopEditing && stopEditing();
82
+ }
83
+ });
84
+ textBlock.appendChild(span);
85
+ }
86
+ else if (inVarString) {
87
+ if (rawText[i] === '}') {
88
+ inVarString = false;
89
+ }
90
+ }
91
+ else {
92
+ let span = document.createElement('span');
93
+ span.style.letterSpacing = rawText.length === i + 1 ? '0' : 'inherit';
94
+ span.textContent = rawText[i];
95
+ textBlock.appendChild(span);
96
+ }
97
+ }
98
+ };
99
+ const getVariableIndices = (content) => {
100
+ const regex = /\{([^}]+)}/g;
101
+ const indices = [];
102
+ let match;
103
+ while ((match = regex.exec(content)) !== null) {
104
+ indices[match.index] = match[1];
105
+ }
106
+ return indices;
107
+ };
108
+ const countUniqueVariableNames = (content) => {
109
+ const regex = /\{([^}]+)}/g;
110
+ const uniqueMatchesSet = new Set();
111
+ let match;
112
+ while ((match = regex.exec(content)) !== null) {
113
+ uniqueMatchesSet.add(match[1]);
114
+ }
115
+ return uniqueMatchesSet.size;
116
+ };
117
+ /**
118
+ * An optimisation to try to minimise jank while typing.
119
+ * Only check whether variables were modified based on certain key presses.
120
+ * Regex would otherwise be performed on every key press (which isn't terrible, but this code helps).
121
+ */
122
+ const keyPressShouldBeChecked = (event) => {
123
+ if (event.key == "ArrowUp" || event.key == "ArrowDown" || event.key == "ArrowLeft" || event.key == "ArrowRight") {
124
+ return false;
125
+ }
126
+ const selection = window.getSelection();
127
+ const contenteditable = event.target;
128
+ const isCursorAtEnd = selection?.focusOffset === contenteditable?.textContent?.length;
129
+ if (isCursorAtEnd) {
130
+ return event.key === '}' || event.key === 'Backspace' || event.key === 'Delete';
131
+ }
132
+ const isCursorAtStart = selection?.anchorOffset === 0;
133
+ if (isCursorAtStart) {
134
+ return event.key === '{' || event.key === 'Backspace' || event.key === 'Delete';
135
+ }
136
+ return true;
137
+ };
138
+ //# sourceMappingURL=uiRender.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"uiRender.js","sourceRoot":"","sources":["../../../../src/multiVariableText/uiRender.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,93 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const lucide_1 = require("lucide");
7
+ const svg_1 = __importDefault(require("../graphics/svg"));
8
+ const utils_js_1 = require("../utils.js");
9
+ const constants_js_1 = require("../constants.js");
10
+ const defaultStroke = 'currentColor';
11
+ const getCheckedIcon = (stroke = defaultStroke) => (0, utils_js_1.createSvgStr)(lucide_1.CircleDot, { stroke });
12
+ const getUncheckedIcon = (stroke = defaultStroke) => (0, utils_js_1.createSvgStr)(lucide_1.Circle, { stroke });
13
+ const getIcon = ({ value, color }) => value === 'true' ? getCheckedIcon(color) : getUncheckedIcon(color);
14
+ const eventEmitter = new EventTarget();
15
+ const radioButtonStates = new Map();
16
+ const eventListeners = new Map();
17
+ const schema = {
18
+ ui: (arg) => {
19
+ const { schema, value, onChange, rootElement, mode } = arg;
20
+ const container = document.createElement('div');
21
+ container.style.width = '100%';
22
+ container.style.height = '100%';
23
+ if (onChange) {
24
+ radioButtonStates.set(schema.name, { value, onChange });
25
+ }
26
+ const oldListener = eventListeners.get(schema.name);
27
+ if (oldListener) {
28
+ eventEmitter.removeEventListener(`group-${schema.group}`, oldListener);
29
+ }
30
+ const handleGroupEvent = (event) => {
31
+ const customEvent = event;
32
+ const selectedSchemaName = customEvent.detail;
33
+ if (selectedSchemaName !== schema.name) {
34
+ const radioButtonState = radioButtonStates.get(schema.name);
35
+ if (!radioButtonState)
36
+ return;
37
+ if (radioButtonState.value === 'true') {
38
+ radioButtonState.onChange({ key: 'content', value: 'false' });
39
+ }
40
+ }
41
+ };
42
+ eventListeners.set(schema.name, handleGroupEvent);
43
+ eventEmitter.addEventListener(`group-${schema.group}`, handleGroupEvent);
44
+ if ((0, utils_js_1.isEditable)(mode, schema)) {
45
+ container.addEventListener('click', () => {
46
+ if (value !== 'true' && onChange) {
47
+ onChange({ key: 'content', value: 'true' });
48
+ radioButtonStates.set(schema.name, { value: 'true', onChange });
49
+ eventEmitter.dispatchEvent(new CustomEvent(`group-${schema.group}`, { detail: schema.name }));
50
+ }
51
+ });
52
+ }
53
+ void svg_1.default.ui({
54
+ ...arg,
55
+ rootElement: container,
56
+ mode: 'viewer',
57
+ value: getIcon({ value, color: schema.color }),
58
+ });
59
+ rootElement.appendChild(container);
60
+ },
61
+ pdf: (arg) => svg_1.default.pdf(Object.assign(arg, { value: getIcon({ value: arg.value, color: arg.schema.color }) })),
62
+ propPanel: {
63
+ schema: ({ i18n }) => ({
64
+ color: {
65
+ title: i18n('schemas.color'),
66
+ type: 'string',
67
+ widget: 'color',
68
+ props: {
69
+ disabledAlpha: true
70
+ },
71
+ required: true,
72
+ rules: [{ pattern: constants_js_1.HEX_COLOR_PATTERN, message: i18n('validation.hexColor') }],
73
+ },
74
+ group: {
75
+ title: i18n('schemas.radioGroup.groupName'),
76
+ type: 'string',
77
+ },
78
+ }),
79
+ defaultSchema: {
80
+ name: '',
81
+ type: 'radioGroup',
82
+ content: 'false',
83
+ position: { x: 0, y: 0 },
84
+ width: 8,
85
+ height: 8,
86
+ group: 'MyGroup',
87
+ color: '#000000',
88
+ },
89
+ },
90
+ icon: getCheckedIcon(),
91
+ };
92
+ exports.default = schema;
93
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/radioGroup/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,164 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const propPanel_1 = require("../text/propPanel");
7
+ const text_1 = __importDefault(require("../text"));
8
+ const lucide_1 = require("lucide");
9
+ const utils_js_1 = require("../utils.js");
10
+ const selectIcon = (0, utils_js_1.createSvgStr)(lucide_1.ChevronDown);
11
+ const addOptions = (props) => {
12
+ const { rootElement, changeSchemas, activeSchema, i18n } = props;
13
+ rootElement.style.width = '100%';
14
+ const selectSchema = activeSchema;
15
+ const currentOptions = selectSchema.options ? [...selectSchema.options] : [];
16
+ const inputStyle = {
17
+ width: '100%',
18
+ padding: '6.25px 11px',
19
+ border: '1px solid #ccc',
20
+ borderRadius: '4px',
21
+ };
22
+ const buttonStyle = { border: 'none', borderRadius: '4px', cursor: 'pointer' };
23
+ const updateSchemas = () => {
24
+ changeSchemas([
25
+ { key: 'options', value: currentOptions, schemaId: activeSchema.id },
26
+ { key: 'content', value: currentOptions[0] || '', schemaId: activeSchema.id },
27
+ ]);
28
+ };
29
+ const formContainer = document.createElement('div');
30
+ Object.assign(formContainer.style, {
31
+ width: '100%',
32
+ display: 'flex',
33
+ alignItems: 'center',
34
+ marginBottom: '10px',
35
+ });
36
+ const input = document.createElement('input');
37
+ input.type = 'text';
38
+ input.placeholder = i18n('schemas.select.optionPlaceholder');
39
+ Object.assign(input.style, inputStyle, { marginRight: '10px' });
40
+ const addButton = document.createElement('button');
41
+ addButton.textContent = '+';
42
+ Object.assign(addButton.style, buttonStyle, {
43
+ width: '25px',
44
+ height: '25px',
45
+ padding: '4px 8px',
46
+ });
47
+ addButton.addEventListener('click', () => {
48
+ const newValue = input.value.trim();
49
+ if (newValue) {
50
+ currentOptions.push(newValue);
51
+ updateSchemas();
52
+ renderOptions();
53
+ input.value = '';
54
+ }
55
+ });
56
+ formContainer.appendChild(input);
57
+ formContainer.appendChild(addButton);
58
+ const optionsList = document.createElement('ul');
59
+ Object.assign(optionsList.style, { listStyle: 'none', padding: '0' });
60
+ const renderOptions = () => {
61
+ optionsList.innerHTML = '';
62
+ currentOptions.forEach((option, index) => {
63
+ const li = document.createElement('li');
64
+ Object.assign(li.style, { display: 'flex', alignItems: 'center', marginBottom: '5px' });
65
+ const optionInput = document.createElement('input');
66
+ optionInput.type = 'text';
67
+ optionInput.value = option;
68
+ Object.assign(optionInput.style, inputStyle, { marginRight: '10px' });
69
+ optionInput.addEventListener('change', () => {
70
+ currentOptions[index] = optionInput.value;
71
+ updateSchemas();
72
+ });
73
+ const removeButton = document.createElement('button');
74
+ removeButton.textContent = 'x';
75
+ Object.assign(removeButton.style, buttonStyle, { padding: '4px 8px' });
76
+ removeButton.addEventListener('click', () => {
77
+ currentOptions.splice(index, 1);
78
+ updateSchemas();
79
+ renderOptions();
80
+ });
81
+ li.appendChild(optionInput);
82
+ li.appendChild(removeButton);
83
+ optionsList.appendChild(li);
84
+ });
85
+ };
86
+ rootElement.appendChild(formContainer);
87
+ rootElement.appendChild(optionsList);
88
+ renderOptions();
89
+ };
90
+ const schema = {
91
+ ui: async (arg) => {
92
+ const { schema, value, onChange, rootElement, mode } = arg;
93
+ await text_1.default.ui(Object.assign(arg, { mode: 'viewer' }));
94
+ if (mode !== 'viewer' && !(mode === 'form' && schema.readOnly)) {
95
+ const buttonWidth = 30;
96
+ const selectButton = document.createElement('button');
97
+ selectButton.innerHTML = selectIcon;
98
+ const selectButtonStyle = {
99
+ position: 'absolute',
100
+ zIndex: -1,
101
+ right: `-${buttonWidth}px`,
102
+ top: '0',
103
+ padding: '0',
104
+ margin: '0',
105
+ cursor: 'pointer',
106
+ height: `${buttonWidth}px`,
107
+ width: `${buttonWidth}px`,
108
+ };
109
+ Object.assign(selectButton.style, selectButtonStyle);
110
+ rootElement.appendChild(selectButton);
111
+ const selectElement = document.createElement('select');
112
+ const selectElementStyle = {
113
+ opacity: '0',
114
+ position: 'absolute',
115
+ width: `calc(100% + ${buttonWidth}px)`,
116
+ height: '100%',
117
+ top: '0',
118
+ left: '0',
119
+ appearance: 'initial',
120
+ };
121
+ Object.assign(selectElement.style, selectElementStyle);
122
+ selectElement.value = value;
123
+ selectElement.addEventListener('change', (e) => {
124
+ if (onChange && e.target instanceof HTMLSelectElement) {
125
+ onChange && onChange({ key: 'content', value: e.target.value });
126
+ }
127
+ });
128
+ selectElement.innerHTML = schema.options
129
+ .map((option) => `<option value="${option}" ${option === value ? 'selected' : ''}>${option}</option>`)
130
+ .join('');
131
+ rootElement.appendChild(selectElement);
132
+ }
133
+ },
134
+ pdf: text_1.default.pdf,
135
+ propPanel: {
136
+ ...text_1.default.propPanel,
137
+ widgets: { ...propPanel_1.propPanel.widgets, addOptions },
138
+ schema: (propPanelProps) => {
139
+ if (typeof propPanel_1.propPanel.schema !== 'function') {
140
+ throw Error('Oops, is text schema no longer a function?');
141
+ }
142
+ return {
143
+ ...propPanel_1.propPanel.schema(propPanelProps),
144
+ '-------': { type: 'void', widget: 'Divider' },
145
+ optionsContainer: {
146
+ title: propPanelProps.i18n('schemas.select.options'),
147
+ type: 'string',
148
+ widget: 'Card',
149
+ span: 24,
150
+ properties: { options: { widget: 'addOptions', span: 24 } },
151
+ },
152
+ };
153
+ },
154
+ defaultSchema: {
155
+ ...text_1.default.propPanel.defaultSchema,
156
+ type: 'select',
157
+ content: 'option1',
158
+ options: ['option1', 'option2'],
159
+ },
160
+ },
161
+ icon: selectIcon,
162
+ };
163
+ exports.default = schema;
164
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/select/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,60 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const utils_js_1 = require("../utils.js");
4
+ const constants_js_1 = require("../constants.js");
5
+ const lucide_1 = require("lucide");
6
+ const DEFAULT_LINE_COLOR = '#000000';
7
+ const lineSchema = {
8
+ pdf: (arg) => {
9
+ const { page, schema, options } = arg;
10
+ if (schema.width === 0 || schema.height === 0 || !schema.color)
11
+ return;
12
+ const { colorType } = options;
13
+ const pageHeight = page.getHeight();
14
+ const { width, height, rotate, position: { x, y }, opacity, } = (0, utils_js_1.convertForPdfLayoutProps)({ schema, pageHeight, applyRotateTranslate: false });
15
+ const pivot = { x: x + width / 2, y: y + height / 2 };
16
+ page.drawLine({
17
+ start: (0, utils_js_1.rotatePoint)({ x, y: y + height / 2 }, pivot, rotate.angle),
18
+ end: (0, utils_js_1.rotatePoint)({ x: x + width, y: y + height / 2 }, pivot, rotate.angle),
19
+ thickness: height,
20
+ color: (0, utils_js_1.hex2PrintingColor)(schema.color ?? DEFAULT_LINE_COLOR, colorType),
21
+ opacity: opacity,
22
+ });
23
+ },
24
+ ui: (arg) => {
25
+ const { schema, rootElement } = arg;
26
+ const div = document.createElement('div');
27
+ div.style.backgroundColor = schema.color ?? 'transparent';
28
+ div.style.width = '100%';
29
+ div.style.height = '100%';
30
+ rootElement.appendChild(div);
31
+ },
32
+ propPanel: {
33
+ schema: ({ i18n }) => ({
34
+ color: {
35
+ title: i18n('schemas.color'),
36
+ type: 'string',
37
+ widget: 'color',
38
+ props: {
39
+ disabledAlpha: true
40
+ },
41
+ required: true,
42
+ rules: [{ pattern: constants_js_1.HEX_COLOR_PATTERN, message: i18n('validation.hexColor') }],
43
+ },
44
+ }),
45
+ defaultSchema: {
46
+ name: '',
47
+ type: 'line',
48
+ position: { x: 0, y: 0 },
49
+ width: 50,
50
+ height: 0.5,
51
+ rotate: 0,
52
+ opacity: 1,
53
+ readOnly: true,
54
+ color: DEFAULT_LINE_COLOR,
55
+ },
56
+ },
57
+ icon: (0, utils_js_1.createSvgStr)(lucide_1.Minus),
58
+ };
59
+ exports.default = lineSchema;
60
+ //# sourceMappingURL=line.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"line.js","sourceRoot":"","sources":["../../../../src/shapes/line.ts"],"names":[],"mappings":"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"}