@pdfme/schemas 6.0.3-dev.0 → 6.0.4-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 (116) hide show
  1. package/dist/barcodes/constants.d.ts +4 -0
  2. package/dist/barcodes/helper.d.ts +21 -0
  3. package/dist/barcodes/index.d.ts +4 -0
  4. package/dist/barcodes/pdfRender.d.ts +3 -0
  5. package/dist/barcodes/propPanel.d.ts +3 -0
  6. package/{src/barcodes/types.ts → dist/barcodes/types.d.ts} +5 -7
  7. package/dist/barcodes/uiRender.d.ts +3 -0
  8. package/dist/builtins-CgaZ0UX3.js +613 -0
  9. package/dist/builtins-CgaZ0UX3.js.map +1 -0
  10. package/dist/builtins.d.ts +4 -0
  11. package/dist/builtins.js +2 -0
  12. package/dist/checkbox/index.d.ts +6 -0
  13. package/dist/constants.d.ts +2 -0
  14. package/dist/date/date.d.ts +2 -0
  15. package/dist/date/dateTime.d.ts +2 -0
  16. package/dist/date/helper.d.ts +20 -0
  17. package/dist/date/time.d.ts +2 -0
  18. package/dist/date/types.d.ts +17 -0
  19. package/dist/dynamicTemplate-D_DHR3-X.js +1128 -0
  20. package/dist/dynamicTemplate-D_DHR3-X.js.map +1 -0
  21. package/dist/graphics/image.d.ts +5 -0
  22. package/dist/graphics/imagehelper.d.ts +4 -0
  23. package/dist/graphics/signature.d.ts +4 -0
  24. package/dist/graphics/svg.d.ts +4 -0
  25. package/{src/index.ts → dist/index.d.ts} +1 -22
  26. package/dist/index.js +5383 -0
  27. package/dist/index.js.map +1 -0
  28. package/dist/multiVariableText/helper.d.ts +3 -0
  29. package/dist/multiVariableText/index.d.ts +4 -0
  30. package/dist/multiVariableText/pdfRender.d.ts +3 -0
  31. package/dist/multiVariableText/propPanel.d.ts +3 -0
  32. package/{src/multiVariableText/types.ts → dist/multiVariableText/types.d.ts} +2 -3
  33. package/dist/multiVariableText/uiRender.d.ts +3 -0
  34. package/dist/multiVariableText/variables.d.ts +10 -0
  35. package/dist/radioGroup/index.d.ts +7 -0
  36. package/dist/sanitize.d.ts +1 -0
  37. package/dist/select/index.d.ts +7 -0
  38. package/dist/shapes/line.d.ts +6 -0
  39. package/dist/shapes/rectAndEllipse.d.ts +11 -0
  40. package/dist/tables/cell.d.ts +4 -0
  41. package/dist/tables/classes.d.ts +69 -0
  42. package/dist/tables/dynamicTemplate.d.ts +7 -0
  43. package/dist/tables/helper.d.ts +265 -0
  44. package/dist/tables/index.d.ts +4 -0
  45. package/dist/tables/pdfRender.d.ts +3 -0
  46. package/dist/tables/propPanel.d.ts +3 -0
  47. package/dist/tables/tableHelper.d.ts +10 -0
  48. package/dist/tables/types.d.ts +88 -0
  49. package/dist/tables/uiRender.d.ts +3 -0
  50. package/dist/tables.js +2 -0
  51. package/dist/text/constants.d.ts +23 -0
  52. package/dist/text/extraFormatter.d.ts +25 -0
  53. package/dist/text/helper.d.ts +40 -0
  54. package/dist/text/icons/index.d.ts +9 -0
  55. package/dist/text/index.d.ts +4 -0
  56. package/dist/text/pdfRender.d.ts +3 -0
  57. package/dist/text/propPanel.d.ts +3 -0
  58. package/dist/text/types.d.ts +28 -0
  59. package/dist/text/uiRender.d.ts +11 -0
  60. package/dist/utils.d.ts +40 -0
  61. package/dist/utils.js +215 -0
  62. package/dist/utils.js.map +1 -0
  63. package/package.json +5 -1
  64. package/src/barcodes/constants.ts +0 -20
  65. package/src/barcodes/helper.ts +0 -187
  66. package/src/barcodes/index.ts +0 -23
  67. package/src/barcodes/pdfRender.ts +0 -37
  68. package/src/barcodes/propPanel.ts +0 -249
  69. package/src/barcodes/uiRender.ts +0 -94
  70. package/src/builtins.ts +0 -8
  71. package/src/checkbox/index.ts +0 -70
  72. package/src/constants.ts +0 -2
  73. package/src/date/date.ts +0 -9
  74. package/src/date/dateTime.ts +0 -9
  75. package/src/date/helper.ts +0 -544
  76. package/src/date/time.ts +0 -9
  77. package/src/date/types.ts +0 -19
  78. package/src/graphics/image.ts +0 -201
  79. package/src/graphics/imagehelper.ts +0 -156
  80. package/src/graphics/signature.ts +0 -136
  81. package/src/graphics/svg.ts +0 -121
  82. package/src/multiVariableText/helper.ts +0 -65
  83. package/src/multiVariableText/index.ts +0 -16
  84. package/src/multiVariableText/pdfRender.ts +0 -21
  85. package/src/multiVariableText/propPanel.ts +0 -169
  86. package/src/multiVariableText/uiRender.ts +0 -157
  87. package/src/multiVariableText/variables.ts +0 -63
  88. package/src/radioGroup/index.ts +0 -115
  89. package/src/sanitize.ts +0 -50
  90. package/src/select/index.ts +0 -205
  91. package/src/shapes/line.ts +0 -94
  92. package/src/shapes/rectAndEllipse.ts +0 -152
  93. package/src/tables/cell.ts +0 -152
  94. package/src/tables/classes.ts +0 -402
  95. package/src/tables/dynamicTemplate.ts +0 -88
  96. package/src/tables/helper.ts +0 -216
  97. package/src/tables/index.ts +0 -15
  98. package/src/tables/pdfRender.ts +0 -144
  99. package/src/tables/propPanel.ts +0 -111
  100. package/src/tables/tableHelper.ts +0 -289
  101. package/src/tables/types.ts +0 -87
  102. package/src/tables/uiRender.ts +0 -436
  103. package/src/text/constants.ts +0 -104
  104. package/src/text/extraFormatter.ts +0 -83
  105. package/src/text/helper.ts +0 -573
  106. package/src/text/icons/index.ts +0 -30
  107. package/src/text/index.ts +0 -16
  108. package/src/text/pdfRender.ts +0 -240
  109. package/src/text/propPanel.ts +0 -184
  110. package/src/text/types.ts +0 -30
  111. package/src/text/uiRender.ts +0 -292
  112. package/src/utils.ts +0 -354
  113. package/tsconfig.build.json +0 -14
  114. package/tsconfig.json +0 -16
  115. package/vite.config.mts +0 -51
  116. /package/{src/tables.ts → dist/tables.d.ts} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":[],"sources":["../src/multiVariableText/helper.ts","../src/multiVariableText/pdfRender.ts","../src/multiVariableText/variables.ts","../src/multiVariableText/propPanel.ts","../src/multiVariableText/uiRender.ts","../src/multiVariableText/index.ts","../src/graphics/imagehelper.ts","../src/graphics/image.ts","../src/graphics/signature.ts","../src/sanitize.ts","../src/graphics/svg.ts","../src/barcodes/constants.ts","../src/barcodes/helper.ts","../src/barcodes/pdfRender.ts","../src/barcodes/propPanel.ts","../src/barcodes/uiRender.ts","../src/barcodes/index.ts","../src/shapes/line.ts","../src/shapes/rectAndEllipse.ts","../src/tables/cell.ts","../src/tables/pdfRender.ts","../src/tables/uiRender.ts","../src/tables/propPanel.ts","../src/tables/index.ts","../../../node_modules/air-datepicker/locale/ar.js","../../../node_modules/air-datepicker/locale/bg.js","../../../node_modules/air-datepicker/locale/ca.js","../../../node_modules/air-datepicker/locale/cs.js","../../../node_modules/air-datepicker/locale/da.js","../../../node_modules/air-datepicker/locale/de.js","../../../node_modules/air-datepicker/locale/el.js","../../../node_modules/air-datepicker/locale/en.js","../../../node_modules/air-datepicker/locale/es.js","../../../node_modules/air-datepicker/locale/eu.js","../../../node_modules/air-datepicker/locale/fi.js","../../../node_modules/air-datepicker/locale/fr.js","../../../node_modules/air-datepicker/locale/hr.js","../../../node_modules/air-datepicker/locale/hu.js","../../../node_modules/air-datepicker/locale/id.js","../../../node_modules/air-datepicker/locale/it.js","../../../node_modules/air-datepicker/locale/ja.js","../../../node_modules/air-datepicker/locale/ko.js","../../../node_modules/air-datepicker/locale/nb.js","../../../node_modules/air-datepicker/locale/nl.js","../../../node_modules/air-datepicker/locale/th.js","../../../node_modules/air-datepicker/locale/pl.js","../../../node_modules/air-datepicker/locale/pt-BR.js","../../../node_modules/air-datepicker/locale/pt.js","../../../node_modules/air-datepicker/locale/ro.js","../../../node_modules/air-datepicker/locale/ru.js","../../../node_modules/air-datepicker/locale/si.js","../../../node_modules/air-datepicker/locale/sk.js","../../../node_modules/air-datepicker/locale/sl.js","../../../node_modules/air-datepicker/locale/sv.js","../../../node_modules/air-datepicker/locale/tr.js","../../../node_modules/air-datepicker/locale/uk.js","../../../node_modules/air-datepicker/locale/zh.js","../src/date/helper.ts","../src/date/dateTime.ts","../src/date/date.ts","../src/date/time.ts","../src/select/index.ts","../src/radioGroup/index.ts","../src/checkbox/index.ts"],"sourcesContent":["import { MultiVariableTextSchema } from './types.js';\n\nexport const substituteVariables = (\n text: string,\n variablesIn: string | Record<string, string>,\n): string => {\n if (!text) {\n return '';\n }\n\n let substitutedText = text;\n\n if (variablesIn) {\n let variables: Record<string, string>;\n try {\n variables =\n typeof variablesIn === 'string'\n ? (JSON.parse(variablesIn || '{}') as Record<string, string>)\n : variablesIn;\n } catch {\n throw new SyntaxError(`[@pdfme/schemas] MVT: invalid JSON string '${variablesIn as string}'`);\n }\n\n Object.keys(variables).forEach((variableName) => {\n // handle special characters in variable name\n const variableForRegex = variableName.replace(/[/\\-\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n const regex = new RegExp('\\\\{' + variableForRegex + '\\\\}', 'g');\n substitutedText = substitutedText.replace(regex, variables[variableName]);\n });\n }\n\n // Remove any variables that were not substituted from inputs\n substitutedText = substitutedText.replace(/{[^{}]+}/g, '');\n\n return substitutedText;\n};\n\nexport const validateVariables = (value: string, schema: MultiVariableTextSchema): boolean => {\n if (schema.variables.length === 0) {\n return true;\n }\n\n let values;\n try {\n values = value ? (JSON.parse(value) as Record<string, string>) : {};\n } catch {\n throw new SyntaxError(\n `[@pdfme/generator] invalid JSON string '${value}' for variables in field ${schema.name}`,\n );\n }\n\n for (const variable of schema.variables) {\n if (!values[variable]) {\n if (schema.required) {\n throw new Error(\n `[@pdfme/generator] variable ${variable} is missing for field ${schema.name}`,\n );\n }\n // If not required, then simply don't render this field if an input is missing\n return false;\n }\n }\n\n return true;\n};\n","import { PDFRenderProps } from '@pdfme/common';\nimport { MultiVariableTextSchema } from './types.js';\nimport { pdfRender as parentPdfRender } from '../text/pdfRender.js';\nimport { substituteVariables, validateVariables } from './helper.js';\n\nexport const pdfRender = async (arg: PDFRenderProps<MultiVariableTextSchema>) => {\n const { value, schema, ...rest } = arg;\n\n if (!validateVariables(value, schema)) {\n // Don't render if a required variable is missing\n return;\n }\n\n const renderArgs = {\n value: substituteVariables(schema.text || '', value),\n schema,\n ...rest,\n };\n\n await parentPdfRender(renderArgs);\n};\n","export type VariableMatch = {\n name: string;\n startIndex: number;\n endIndex: number;\n};\n\nexport type VariableIndices = Map<number, string>;\n\nexport const visitVariables = (\n content: string,\n visitor: (match: VariableMatch) => void,\n): void => {\n let startIndex = -1;\n\n for (let i = 0; i < content.length; i++) {\n const char = content[i];\n\n if (char === '{') {\n // Restart from the latest opener so malformed input behaves like /{([^{}]+)}/g\n // without requiring backtracking.\n startIndex = i;\n continue;\n }\n\n if (char === '}' && startIndex !== -1) {\n const name = content.slice(startIndex + 1, i);\n if (name.length > 0) {\n visitor({ name, startIndex, endIndex: i });\n }\n startIndex = -1;\n }\n }\n};\n\nexport const getVariableIndices = (content: string): VariableIndices => {\n const indices: VariableIndices = new Map();\n\n visitVariables(content, ({ name, startIndex }) => {\n indices.set(startIndex, name);\n });\n\n return indices;\n};\n\nexport const countUniqueVariableNames = (content: string): number => {\n const variableNames = new Set<string>();\n\n visitVariables(content, ({ name }) => {\n variableNames.add(name);\n });\n\n return variableNames.size;\n};\n\nexport const getVariableNames = (content: string): string[] => {\n const variableNames: string[] = [];\n\n visitVariables(content, ({ name }) => {\n variableNames.push(name);\n });\n\n return variableNames;\n};\n","import { propPanel as parentPropPanel } from '../text/propPanel.js';\nimport { PropPanel, PropPanelWidgetProps } from '@pdfme/common';\nimport { MultiVariableTextSchema } from './types.js';\nimport { getVariableNames } from './variables.js';\n\nconst mapDynamicVariables = (props: PropPanelWidgetProps) => {\n const { rootElement, changeSchemas, activeSchema, i18n, options } = props;\n\n const mvtSchema = activeSchema as unknown as MultiVariableTextSchema;\n const text = mvtSchema.text || '';\n let variables: Record<string, string> = {};\n try {\n const parsed = JSON.parse(mvtSchema.content || '{}');\n if (parsed && typeof parsed === 'object' && !Array.isArray(parsed)) {\n variables = parsed as Record<string, string>;\n }\n } catch {\n // content is not valid JSON (e.g. a plain string value) — start fresh\n }\n const variablesChanged = updateVariablesFromText(text, variables);\n const varNames = Object.keys(variables);\n\n if (variablesChanged) {\n changeSchemas([\n { key: 'content', value: JSON.stringify(variables), schemaId: activeSchema.id },\n { key: 'variables', value: varNames, schemaId: activeSchema.id },\n { key: 'readOnly', value: varNames.length === 0, schemaId: activeSchema.id },\n ]);\n }\n\n const placeholderRowEl = document\n .getElementById('placeholder-dynamic-var')\n ?.closest('.ant-form-item') as HTMLElement;\n if (!placeholderRowEl) {\n throw new Error('Failed to find Ant form placeholder row to create dynamic variables inputs.');\n }\n placeholderRowEl.style.display = 'none';\n\n // The wrapping form element has a display:flex which limits the width of the form fields, removing.\n (rootElement.parentElement as HTMLElement).style.display = 'block';\n\n if (varNames.length > 0) {\n for (let variableName of varNames) {\n const varRow = placeholderRowEl.cloneNode(true) as HTMLElement;\n\n const textarea = varRow.querySelector('textarea') as HTMLTextAreaElement;\n textarea.id = 'dynamic-var-' + variableName;\n textarea.value = variables[variableName];\n textarea.addEventListener('change', (e: Event) => {\n if (variableName in variables) {\n variables[variableName] = (e.target as HTMLTextAreaElement).value;\n changeSchemas([\n { key: 'content', value: JSON.stringify(variables), schemaId: activeSchema.id },\n ]);\n }\n });\n\n const label = varRow.querySelector('label') as HTMLLabelElement;\n label.innerText = variableName;\n\n varRow.style.display = 'block';\n rootElement.appendChild(varRow);\n }\n } else {\n const para = document.createElement('p');\n // Extract color value to avoid unsafe property access\n const colorValue = options?.theme?.token?.colorPrimary || '#168fe3';\n const isValidColor =\n /^#[0-9A-F]{6}$/i.test(colorValue) ||\n /^(rgb|hsl)a?\\(\\s*([+-]?\\d+%?\\s*,\\s*){2,3}[+-]?\\d+%?\\s*\\)$/i.test(colorValue);\n const safeColorValue = isValidColor ? colorValue : '#168fe3';\n\n const typingInstructions = i18n('schemas.mvt.typingInstructions');\n const sampleField = i18n('schemas.mvt.sampleField');\n para.appendChild(document.createTextNode(typingInstructions + ' '));\n const codeEl = document.createElement('code');\n codeEl.style.color = safeColorValue;\n codeEl.style.fontWeight = 'bold';\n codeEl.textContent = `{${sampleField}}`;\n para.appendChild(codeEl);\n rootElement.appendChild(para);\n }\n};\n\nexport const propPanel: PropPanel<MultiVariableTextSchema> = {\n schema: (propPanelProps: Omit<PropPanelWidgetProps, 'rootElement'>) => {\n if (typeof parentPropPanel.schema !== 'function') {\n throw new Error('Oops, is text schema no longer a function?');\n }\n // Safely call schema function with proper type handling\n const parentSchema =\n typeof parentPropPanel.schema === 'function' ? parentPropPanel.schema(propPanelProps) : {};\n return {\n ...parentSchema,\n '-------': { type: 'void', widget: 'Divider' },\n dynamicVarContainer: {\n title: 'Variables Sample Data',\n type: 'string',\n widget: 'Card',\n span: 24,\n properties: {\n dynamicVariables: {\n type: 'object',\n widget: 'mapDynamicVariables',\n bind: false,\n span: 24,\n },\n placeholderDynamicVar: {\n title: 'Placeholder Dynamic Variable',\n type: 'string',\n format: 'textarea',\n props: {\n id: 'placeholder-dynamic-var',\n autoSize: {\n minRows: 2,\n maxRows: 5,\n },\n },\n span: 24,\n },\n },\n },\n };\n },\n widgets: { ...parentPropPanel.widgets, mapDynamicVariables },\n defaultSchema: {\n ...parentPropPanel.defaultSchema,\n readOnly: false,\n type: 'multiVariableText',\n text: 'Add text here using {} for variables ',\n width: 50,\n height: 15,\n content: '{}',\n variables: [],\n },\n};\n\nconst updateVariablesFromText = (text: string, variables: Record<string, string>): boolean => {\n const matches = getVariableNames(text);\n let changed = false;\n\n if (matches.length > 0) {\n const uniqueMatches = new Set(matches);\n\n // Add any new variables\n for (const variableName of uniqueMatches) {\n if (!(variableName in variables)) {\n // NOTE: We upper case the variable name as the default value\n variables[variableName] = variableName.toUpperCase();\n changed = true;\n }\n }\n // Remove any that no longer exist\n Object.keys(variables).forEach((variableName) => {\n if (!uniqueMatches.has(variableName)) {\n delete variables[variableName];\n changed = true;\n }\n });\n } else {\n // No matches at all, so clear all variables\n Object.keys(variables).forEach((variableName) => {\n delete variables[variableName];\n changed = true;\n });\n }\n\n return changed;\n};\n","import { getDefaultFont, UIRenderProps } from '@pdfme/common';\nimport { MultiVariableTextSchema } from './types.js';\nimport {\n uiRender as parentUiRender,\n buildStyledTextContainer,\n makeElementPlainTextContentEditable,\n} from '../text/uiRender.js';\nimport { isEditable } from '../utils.js';\nimport { getFontKitFont } from '../text/helper.js';\nimport { substituteVariables } from './helper.js';\nimport { countUniqueVariableNames, getVariableIndices } from './variables.js';\n\nexport const uiRender = async (arg: UIRenderProps<MultiVariableTextSchema>) => {\n const { value, schema, rootElement, mode, onChange, ...rest } = arg;\n\n let text = schema.text;\n let numVariables = schema.variables.length;\n\n if (mode === 'form' && numVariables > 0) {\n await formUiRender(arg);\n return;\n }\n\n await parentUiRender({\n value: isEditable(mode, schema) ? text : substituteVariables(text, value),\n schema,\n mode: mode === 'form' ? 'viewer' : mode, // if no variables for form it's just a viewer\n rootElement,\n onChange: (arg: { key: string; value: unknown } | { key: string; value: unknown }[]) => {\n if (!Array.isArray(arg)) {\n if (onChange) {\n onChange({ key: 'text', value: arg.value });\n }\n } else {\n throw new Error('onChange is not an array, the parent text plugin has changed...');\n }\n },\n ...rest,\n });\n\n const textBlock = rootElement.querySelector('#text-' + String(schema.id)) as HTMLDivElement;\n if (!textBlock) {\n throw new Error('Text block not found. Ensure the text block has an id of \"text-\" + schema.id');\n }\n\n if (mode === 'designer') {\n textBlock.addEventListener('keyup', (event: KeyboardEvent) => {\n text = textBlock.textContent || '';\n if (keyPressShouldBeChecked(event)) {\n const newNumVariables = countUniqueVariableNames(text);\n if (numVariables !== newNumVariables) {\n // If variables were modified during this keypress, we trigger a change\n if (onChange) {\n onChange({ key: 'text', value: text });\n }\n numVariables = newNumVariables;\n }\n }\n });\n }\n};\n\nconst formUiRender = async (arg: UIRenderProps<MultiVariableTextSchema>) => {\n const { value, schema, rootElement, onChange, stopEditing, theme, _cache, options } = arg;\n const rawText = schema.text;\n\n if (rootElement.parentElement) {\n // remove the outline for the whole schema, we'll apply outlines on each individual variable field instead\n rootElement.parentElement.style.outline = '';\n }\n\n let variables: Record<string, string> = {};\n if (value) {\n try {\n const parsed = JSON.parse(value);\n if (parsed && typeof parsed === 'object' && !Array.isArray(parsed)) {\n variables = parsed as Record<string, string>;\n }\n } catch {\n // value is not valid JSON — use empty variables\n }\n }\n const variableIndices = getVariableIndices(rawText);\n const substitutedText = substituteVariables(rawText, variables);\n const font = options?.font || getDefaultFont();\n const fontKitFont = await getFontKitFont(\n schema.fontName,\n font,\n _cache as Map<string, import('fontkit').Font>,\n );\n\n const textBlock = buildStyledTextContainer(arg, fontKitFont, substitutedText);\n\n // Construct content-editable spans for each variable within the string\n let inVarString = false;\n\n for (let i = 0; i < rawText.length; i++) {\n const variableName = variableIndices.get(i);\n\n if (variableName) {\n inVarString = true;\n let span = document.createElement('span');\n span.style.outline = `${theme.colorPrimary} dashed 1px`;\n makeElementPlainTextContentEditable(span);\n span.textContent = variables[variableName];\n span.addEventListener('blur', (e: Event) => {\n const newValue = (e.target as HTMLSpanElement).textContent || '';\n if (newValue !== variables[variableName]) {\n variables[variableName] = newValue;\n if (onChange) onChange({ key: 'content', value: JSON.stringify(variables) });\n if (stopEditing) stopEditing();\n }\n });\n textBlock.appendChild(span);\n } else if (inVarString) {\n if (rawText[i] === '}') {\n inVarString = false;\n }\n } else {\n let span = document.createElement('span');\n span.style.letterSpacing = rawText.length === i + 1 ? '0' : 'inherit';\n span.textContent = rawText[i];\n textBlock.appendChild(span);\n }\n }\n};\n\n/**\n * An optimisation to try to minimise jank while typing.\n * Only check whether variables were modified based on certain key presses.\n * Regex would otherwise be performed on every key press (which isn't terrible, but this code helps).\n */\nconst keyPressShouldBeChecked = (event: KeyboardEvent) => {\n if (\n event.key === 'ArrowUp' ||\n event.key === 'ArrowDown' ||\n event.key === 'ArrowLeft' ||\n event.key === 'ArrowRight'\n ) {\n return false;\n }\n\n const selection = window.getSelection();\n const contenteditable = event.target as HTMLDivElement;\n\n const isCursorAtEnd = selection?.focusOffset === contenteditable?.textContent?.length;\n if (isCursorAtEnd) {\n return event.key === '}' || event.key === 'Backspace' || event.key === 'Delete';\n }\n\n const isCursorAtStart = selection?.anchorOffset === 0;\n if (isCursorAtStart) {\n return event.key === '{' || event.key === 'Backspace' || event.key === 'Delete';\n }\n\n return true;\n};\n","import type { Plugin } from '@pdfme/common';\nimport { pdfRender } from './pdfRender.js';\nimport { propPanel } from './propPanel.js';\nimport { uiRender } from './uiRender.js';\nimport type { MultiVariableTextSchema } from './types.js';\nimport { Type } from 'lucide';\nimport { createSvgStr } from '../utils.js';\n\nconst schema: Plugin<MultiVariableTextSchema> = {\n pdf: pdfRender,\n ui: uiRender,\n propPanel,\n icon: createSvgStr(Type),\n uninterruptedEditMode: true,\n};\nexport default schema;\n","// ref: https://github.com/image-size/image-size ----------------------------\n// The following code is adapted from the image-size code. Unnecessary formats and dependencies on Node have been removed.\nimport { Buffer } from 'buffer';\n\ntype IImage = {\n validate: (input: Uint8Array) => boolean;\n calculate: (input: Uint8Array) => { width: number; height: number } | undefined;\n};\n\nconst decoder = new TextDecoder();\nconst toUTF8String = (input: Uint8Array, start = 0, end = input.length) =>\n decoder.decode(input.slice(start, end));\n\nconst toHexString = (input: Uint8Array, start = 0, end = input.length) =>\n input.slice(start, end).reduce((memo, i) => memo + ('0' + i.toString(16)).slice(-2), '');\n\nconst readUInt16BE = (input: Uint8Array, offset = 0) => input[offset] * 2 ** 8 + input[offset + 1];\n\nconst readUInt32BE = (input: Uint8Array, offset = 0) =>\n input[offset] * 2 ** 24 +\n input[offset + 1] * 2 ** 16 +\n input[offset + 2] * 2 ** 8 +\n input[offset + 3];\n\nconst extractSize = (input: Uint8Array, index: number) => {\n return {\n height: readUInt16BE(input, index),\n width: readUInt16BE(input, index + 2),\n };\n};\n\nconst validateInput = (input: Uint8Array, index: number): void => {\n // index should be within buffer limits\n if (index > input.length) {\n throw new TypeError('Corrupt JPG, exceeded buffer limits');\n }\n // Every JPEG block must begin with a 0xFF\n if (input[index] !== 0xff) {\n throw new TypeError('Invalid JPG, marker table corrupted');\n }\n};\n\nconst JPG: IImage = {\n validate: (input) => toHexString(input, 0, 2) === 'ffd8',\n\n calculate(input) {\n // Skip 4 chars, they are for signature\n input = input.slice(4);\n\n let next: number;\n while (input.length) {\n // read length of the next block\n const i = readUInt16BE(input, 0);\n\n // ensure correct format\n validateInput(input, i);\n\n // 0xFFC0 is baseline standard(SOF)\n // 0xFFC1 is baseline optimized(SOF)\n // 0xFFC2 is progressive(SOF2)\n next = input[i + 1];\n if (next === 0xc0 || next === 0xc1 || next === 0xc2) {\n const size = extractSize(input, i + 5);\n\n return size;\n }\n\n // move to the next block\n input = input.slice(i + 2);\n }\n\n throw new TypeError('Invalid JPG, no size found');\n },\n};\n\nconst pngSignature = 'PNG\\r\\n\\x1a\\n';\nconst pngImageHeaderChunkName = 'IHDR';\n\n// Used to detect \"fried\" png's: http://www.jongware.com/pngdefry.html\nconst pngFriedChunkName = 'CgBI';\n\nconst PNG: IImage = {\n validate(input) {\n if (pngSignature === toUTF8String(input, 1, 8)) {\n let chunkName = toUTF8String(input, 12, 16);\n if (chunkName === pngFriedChunkName) {\n chunkName = toUTF8String(input, 28, 32);\n }\n if (chunkName !== pngImageHeaderChunkName) {\n throw new TypeError('Invalid PNG');\n }\n return true;\n }\n return false;\n },\n\n calculate(input) {\n if (toUTF8String(input, 12, 16) === pngFriedChunkName) {\n return {\n height: readUInt32BE(input, 36),\n width: readUInt32BE(input, 32),\n };\n }\n return {\n height: readUInt32BE(input, 20),\n width: readUInt32BE(input, 16),\n };\n },\n};\n\nconst typeHandlers = {\n jpg: JPG,\n png: PNG,\n};\n\ntype imageType = keyof typeof typeHandlers;\n\nfunction detector(input: Uint8Array): imageType | undefined {\n const firstBytes: { [byte: number]: imageType } = {\n 0x89: 'png',\n 0xff: 'jpg',\n };\n const byte = input[0];\n if (byte in firstBytes) {\n const type = firstBytes[byte];\n if (type && typeHandlers[type].validate(input)) {\n return type;\n }\n }\n\n const keys = Object.keys(typeHandlers) as imageType[];\n return keys.find((key: imageType) => typeHandlers[key].validate(input));\n}\n\nexport const getImageDimension = (value: string): { height: number; width: number } => {\n const dataUriPrefix = ';base64,';\n const idx = value.indexOf(dataUriPrefix);\n const imgBase64 = value.substring(idx + dataUriPrefix.length, value.length);\n return imageSize(Buffer.from(imgBase64, 'base64'));\n};\n\nconst imageSize = (imgBuffer: Buffer): { height: number; width: number } => {\n const type = detector(imgBuffer);\n\n if (typeof type !== 'undefined' && type in typeHandlers) {\n const size = typeHandlers[type].calculate(imgBuffer);\n if (size !== undefined) {\n return size;\n }\n }\n\n throw new TypeError(\n '[@pdfme/schemas/images] Unsupported file type: ' + (type === undefined ? 'undefined' : type),\n );\n};\n// ----------------------------\n","import type { PDFImage } from '@pdfme/pdf-lib';\nimport type { Plugin } from '@pdfme/common';\nimport type { Schema } from '@pdfme/common';\nimport type * as CSS from 'csstype';\nimport { px2mm } from '@pdfme/common';\nimport { Image } from 'lucide';\nimport {\n convertForPdfLayoutProps,\n addAlphaToHex,\n isEditable,\n readFile,\n createSvgStr,\n} from '../utils.js';\nimport { DEFAULT_OPACITY } from '../constants.js';\nimport { getImageDimension } from './imagehelper.js';\n\nconst getCacheKey = (schema: Schema, input: string) => `${schema.type}${input}`;\nconst fullSize = { width: '100%', height: '100%' };\nconst defaultValue =\n 'data:image/png;base64,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';\n\ntype ImageSchema = Schema;\n\nconst imageSchema: Plugin<ImageSchema> = {\n pdf: async (arg) => {\n const { value, schema, pdfDoc, page, _cache } = arg;\n if (!value) return;\n\n const inputImageCacheKey = getCacheKey(schema, value);\n let image = _cache.get(inputImageCacheKey) as PDFImage;\n if (!image) {\n const isPng = value.startsWith('data:image/png;');\n image = await (isPng ? pdfDoc.embedPng(value) : pdfDoc.embedJpg(value));\n _cache.set(inputImageCacheKey, image);\n }\n\n const _schema = { ...schema, position: { ...schema.position } };\n const dimension = getImageDimension(value);\n const imageWidth = px2mm(dimension.width);\n const imageHeight = px2mm(dimension.height);\n const boxWidth = _schema.width;\n const boxHeight = _schema.height;\n\n const imageRatio = imageWidth / imageHeight;\n const boxRatio = boxWidth / boxHeight;\n\n if (imageRatio > boxRatio) {\n _schema.width = boxWidth;\n _schema.height = boxWidth / imageRatio;\n _schema.position.y += (boxHeight - _schema.height) / 2;\n } else {\n _schema.width = boxHeight * imageRatio;\n _schema.height = boxHeight;\n _schema.position.x += (boxWidth - _schema.width) / 2;\n }\n\n const pageHeight = page.getHeight();\n const lProps = convertForPdfLayoutProps({ schema: _schema, pageHeight });\n const { width, height, rotate, position, opacity } = lProps;\n const { x, y } = position;\n\n const drawOptions = { x, y, rotate, width, height, opacity };\n page.drawImage(image, drawOptions);\n },\n ui: (arg) => {\n const {\n value,\n rootElement,\n mode,\n onChange,\n stopEditing,\n tabIndex,\n placeholder,\n theme,\n schema,\n } = arg;\n const editable = isEditable(mode, schema);\n const isDefault = value === defaultValue;\n\n const container = document.createElement('div');\n const backgroundStyle = placeholder ? `url(${placeholder})` : 'none';\n const containerStyle: CSS.Properties = {\n ...fullSize,\n backgroundImage: value ? 'none' : backgroundStyle,\n backgroundSize: `contain`,\n backgroundRepeat: 'no-repeat',\n backgroundPosition: 'center',\n };\n Object.assign(container.style, containerStyle);\n container.addEventListener('click', (e) => {\n if (editable) {\n e.stopPropagation();\n }\n });\n rootElement.appendChild(container);\n\n // image tag\n if (value) {\n const img = document.createElement('img');\n const imgStyle: CSS.Properties = {\n height: '100%',\n width: '100%',\n borderRadius: 0,\n objectFit: 'contain',\n };\n Object.assign(img.style, imgStyle);\n img.src = value;\n container.appendChild(img);\n }\n\n // remove button\n if (value && !isDefault && editable) {\n const button = document.createElement('button');\n button.textContent = 'x';\n const buttonStyle: CSS.Properties = {\n position: 'absolute',\n top: 0,\n left: 0,\n zIndex: 1,\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n color: '#333',\n background: '#f2f2f2',\n borderRadius: '2px',\n border: '1px solid #767676',\n cursor: 'pointer',\n height: '24px',\n width: '24px',\n };\n Object.assign(button.style, buttonStyle);\n button.addEventListener('click', () => {\n if (onChange) onChange({ key: 'content', value: '' });\n });\n container.appendChild(button);\n }\n\n // file input\n if ((!value || isDefault) && editable) {\n const label = document.createElement('label');\n const labelStyle: CSS.Properties = {\n ...fullSize,\n display: editable ? 'flex' : 'none',\n position: 'absolute',\n top: 0,\n backgroundColor: editable || value ? addAlphaToHex(theme.colorPrimaryBg, 30) : 'none',\n cursor: 'pointer',\n };\n Object.assign(label.style, labelStyle);\n container.appendChild(label);\n const input = document.createElement('input');\n const inputStyle: CSS.Properties = {\n ...fullSize,\n position: 'absolute',\n top: '50%',\n left: '50%',\n width: '180px',\n height: '30px',\n marginLeft: '-90px',\n marginTop: '-15px',\n };\n Object.assign(input.style, inputStyle);\n input.tabIndex = tabIndex || 0;\n input.type = 'file';\n input.accept = 'image/jpeg, image/png';\n input.addEventListener('change', (event: Event) => {\n const target = event.target;\n const files = target instanceof HTMLInputElement ? target.files : null;\n readFile(files)\n .then((result) => {\n if (onChange) onChange({ key: 'content', value: result as string });\n })\n .catch((error) => {\n console.error('Error reading file:', error);\n });\n });\n input.addEventListener('blur', () => {\n if (stopEditing) stopEditing();\n });\n label.appendChild(input);\n }\n },\n propPanel: {\n schema: {},\n defaultSchema: {\n name: '',\n type: 'image',\n content: defaultValue,\n position: { x: 0, y: 0 },\n width: 40,\n height: 40,\n // If the value of \"rotate\" is set to undefined or not set at all, rotation will be disabled in the UI.\n // Check this document: https://pdfme.com//docs/custom-schemas#learning-how-to-create-from-pdfmeschemas-code\n rotate: 0,\n opacity: DEFAULT_OPACITY,\n },\n },\n icon: createSvgStr(Image),\n};\n\nexport default imageSchema;\n","import type { Plugin, Schema } from '@pdfme/common';\nimport { ZOOM } from '@pdfme/common';\nimport image from './image.js';\n\ntype SignatureSchema = Schema;\n\nconst createLoadErrorBadge = (message: string) => {\n const badge = document.createElement('div');\n badge.setAttribute('role', 'alert');\n badge.textContent = message;\n badge.style.position = 'absolute';\n badge.style.left = '4px';\n badge.style.right = '4px';\n badge.style.bottom = '4px';\n badge.style.zIndex = '2';\n badge.style.padding = '4px 6px';\n badge.style.borderRadius = '4px';\n badge.style.background = 'rgba(176, 0, 32, 0.92)';\n badge.style.color = '#ffffff';\n badge.style.fontSize = '11px';\n badge.style.lineHeight = '1.25';\n badge.style.pointerEvents = 'none';\n return badge;\n};\n\nconst getEffectiveScale = (element: HTMLElement | null) => {\n let scale = 1;\n while (element && element !== document.body) {\n const style = window.getComputedStyle(element);\n const transform = style.transform;\n if (transform && transform !== 'none') {\n const localScale = parseFloat(transform.match(/matrix\\((.+)\\)/)?.[1].split(', ')[3] || '1');\n scale *= localScale;\n }\n element = element.parentElement;\n }\n return scale;\n};\n\nconst signature: Plugin<SignatureSchema> = {\n ui: async (arg) => {\n const { schema, value, onChange, rootElement, mode, i18n } = arg;\n const { default: SignaturePad } = await import('signature_pad');\n\n const canvas = document.createElement('canvas');\n canvas.width = schema.width * ZOOM;\n canvas.height = schema.height * ZOOM;\n\n const context = canvas.getContext('2d');\n if (context) {\n const resetScale = 1 / getEffectiveScale(rootElement);\n context.scale(resetScale, resetScale);\n\n const signaturePad = new SignaturePad(canvas);\n const loadErrorMessage =\n i18n('signature.invalidData') || 'Saved signature could not be loaded.';\n let loadErrorBadge: HTMLDivElement | null = null;\n const clearLoadError = () => {\n loadErrorBadge?.remove();\n loadErrorBadge = null;\n };\n const showLoadError = () => {\n if (loadErrorBadge) {\n return;\n }\n loadErrorBadge = createLoadErrorBadge(loadErrorMessage);\n rootElement.appendChild(loadErrorBadge);\n };\n const handleEndStroke = () => {\n clearLoadError();\n const data = signaturePad.toDataURL('image/png');\n if (onChange && data) {\n onChange({ key: 'content', value: data });\n }\n };\n\n try {\n if (value) {\n signaturePad.fromDataURL(value, { ratio: resetScale });\n } else {\n signaturePad.clear();\n }\n } catch (error) {\n signaturePad.clear();\n showLoadError();\n console.error('[@pdfme/schemas] Failed to restore saved signature data.', error);\n }\n\n if (mode === 'viewer' || (mode === 'form' && schema.readOnly)) {\n signaturePad.off();\n } else {\n signaturePad.on();\n const clearButton = document.createElement('button');\n const handleClear = () => {\n clearLoadError();\n if (onChange) {\n onChange({ key: 'content', value: '' });\n }\n };\n const cleanup = () => {\n clearLoadError();\n signaturePad.off();\n signaturePad.removeEventListener('endStroke', handleEndStroke);\n clearButton.removeEventListener('click', handleClear);\n clearButton.remove();\n rootElement.removeEventListener('beforeRemove', cleanup);\n };\n\n rootElement.addEventListener('beforeRemove', cleanup);\n clearButton.type = 'button';\n clearButton.style.position = 'absolute';\n clearButton.style.zIndex = '1';\n clearButton.textContent = i18n('signature.clear') || 'x';\n clearButton.addEventListener('click', handleClear);\n rootElement.appendChild(clearButton);\n signaturePad.addEventListener('endStroke', handleEndStroke);\n }\n }\n\n rootElement.appendChild(canvas);\n },\n pdf: image.pdf,\n propPanel: {\n schema: {},\n defaultSchema: {\n name: '',\n type: 'signature',\n content: '',\n position: { x: 0, y: 0 },\n width: 62.5,\n height: 37.5,\n },\n },\n};\n\nexport default signature;\n","import DOMPurify from 'dompurify';\n\nexport const sanitizeSVG = (svgString: string): string => {\n return DOMPurify.sanitize(svgString, {\n USE_PROFILES: { svg: true, svgFilters: true },\n FORBID_TAGS: [\n 'script',\n 'foreignObject',\n 'use',\n 'embed',\n 'iframe',\n 'object',\n 'link',\n 'style',\n 'animate',\n 'animateMotion',\n 'animateTransform',\n 'set',\n ],\n FORBID_ATTR: [\n 'onload',\n 'onerror',\n 'onclick',\n 'onmouseover',\n 'onmouseout',\n 'onmousedown',\n 'onmouseup',\n 'onfocus',\n 'onblur',\n 'onchange',\n 'onsubmit',\n 'onreset',\n 'onselect',\n 'onabort',\n 'oninput',\n 'onkeydown',\n 'onkeypress',\n 'onkeyup',\n 'onbegin',\n 'onend',\n 'onrepeat',\n 'href',\n 'xlink:href',\n 'src',\n 'action',\n 'formaction',\n ],\n KEEP_CONTENT: false,\n });\n};\n","import { Plugin, Schema } from '@pdfme/common';\nimport {\n convertForPdfLayoutProps,\n isEditable,\n addAlphaToHex,\n createErrorElm,\n createSvgStr,\n} from '../utils.js';\nimport { sanitizeSVG } from '../sanitize.js';\nimport { Route } from 'lucide';\n\nconst isValidSVG = (svgString: string): boolean => {\n try {\n // Basic validation checks that work in both Node.js and browser\n if (!svgString || typeof svgString !== 'string') {\n return false;\n }\n\n // Check for basic SVG structure\n if (!svgString.includes('<svg') || !svgString.includes('</svg>')) {\n return false;\n }\n\n // Additional browser-specific validation if DOMParser is available\n if (typeof DOMParser !== 'undefined') {\n const parser = new DOMParser();\n const doc = parser.parseFromString(svgString, 'image/svg+xml');\n const parserError = doc.querySelector('parsererror');\n if (parserError !== null) {\n return false;\n }\n }\n\n return true;\n } catch {\n return false;\n }\n};\n\nconst defaultValue = `<svg viewBox=\"0 0 488 600\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\">\n <g transform=\"matrix(1,0,0,1,-56,0)\" fill=\"#000000\" stroke=\"none\">\n <path d=\"M228.667,0L56,172.667L56.267,345.334L56.667,518L59.733,527.334C65.867,545.467 72.933,557.067 86,570.134C96.133,580.4 100,583.2 110.667,588.4C134.533,600.134 120,599.334 300,599.334C480,599.334 465.467,600.134 489.334,588.4C500,583.2 503.867,580.4 514,570.134C527.334,556.8 534.534,544.8 540.267,526.667L543.334,516.667L543.334,83.333L540.267,73.333C534.534,55.2 527.334,43.2 514,29.867C503.867,19.6 500,16.8 489.334,11.6C465.734,0 475.467,0.8 344.667,0.267L228.667,0ZM466.4,41.6C483.334,48.933 496.267,61.867 502.934,78.4L506,86L506,514L502.934,521.734C496,538.934 480.267,553.867 463.334,559.334C455.6,561.867 450.8,562 300,562C149.2,562 144.4,561.867 136.667,559.334C119.733,553.867 104,538.934 97.067,521.734L94,514L93.6,351.067L93.333,188.133L149.067,187.733L204.667,187.333L213.6,182.933C224.8,177.467 235.867,165.867 240.267,155.067C243.333,147.467 243.333,146.4 243.733,92.267L244.133,37.2L458,38L466.4,41.6ZM195.067,304C175.6,306.8 164,320.667 165.6,339.467C166,343.6 167.6,348.667 169.733,352.4C174.4,360.267 185.2,365.734 201.867,368.534C208.4,369.734 215.067,371.467 216.8,372.667C224,377.334 221.467,389.067 212.533,392C205.6,394.4 193.733,392.934 185.6,388.8C173.333,382.534 164,385.334 164,395.2C164,400.934 170.133,406.667 180.267,410.134C190.933,413.867 217.067,413.734 225.467,409.867C238.933,403.6 246.667,390 244.8,375.6C242.667,359.734 232.8,351.334 212.267,347.867C193.6,344.8 189.333,342.4 189.333,334.533C189.333,324.267 201.867,320.933 218.267,326.667C228.667,330.267 232.533,330.133 235.867,325.867C242.133,318 237.6,310.667 224.267,306.8C213.333,303.6 204.267,302.8 195.067,304ZM386,304.133C377.6,305.333 374,306.8 367.334,311.6C355.734,320.133 351.2,336.4 352.4,365.334C353.2,385.334 356,394.4 364.134,402.534C372.267,410.667 381.734,413.734 396.667,413.067C406.8,412.667 409.734,412 415.734,408.667C429.2,401.334 434.534,390.934 435.6,370.667C436.4,353.734 436,353.067 420.934,352.267C401.867,351.334 396,353.467 396,361.867C396,367.867 399.467,370.667 407.067,370.667C413.2,370.667 413.334,370.667 413.334,374.934C413.334,394 386.267,400.534 378.534,383.467C374.934,375.334 374.934,341.867 378.534,333.733C382,326.4 387.467,323.467 396.8,324.267C403.067,324.8 404.667,325.6 410.534,331.067C414.267,334.533 418.4,337.333 419.867,337.333C427.334,337.333 433.334,330.267 431.334,323.733C427.2,310.133 406.4,301.2 386,304.133ZM258.4,308C255.067,311.467 254.533,312.8 255.2,316.4C257.067,326.667 285.333,405.867 288.133,408.8C289.733,410.534 293.067,412.267 295.333,412.8C303.867,414.4 310.667,407.867 314.4,394.667C315.067,392.134 321.2,374.134 327.867,354.8C334.8,334.533 340,317.467 340,314.533C340,303.733 325.067,299.867 319.867,309.467C318.533,312.133 309.467,340.933 302.667,364C301.067,369.467 299.333,374.4 298.8,375.067C298.267,375.6 292.933,360.8 286.933,342C275.333,306 274.133,304 266.267,304C263.867,304 261.067,305.467 258.4,308Z\" style=\"fill-rule:nonzero;\"/>\n </g>\n</svg>`;\n\nexport type SVGSchema = Schema;\n\nconst svgSchema: Plugin<SVGSchema> = {\n ui: (arg) => {\n const { rootElement, value, mode, onChange, theme, schema } = arg;\n const container = document.createElement(isEditable(mode, schema) ? 'textarea' : 'div');\n container.style.width = '100%';\n container.style.height = '100%';\n container.style.boxSizing = 'border-box';\n if (isEditable(mode, schema)) {\n const textarea = container as HTMLTextAreaElement;\n textarea.value = value;\n textarea.style.position = 'absolute';\n textarea.style.backgroundColor = addAlphaToHex(theme.colorPrimaryBg, 30);\n\n if (isValidSVG(value)) {\n const sanitizedValue = sanitizeSVG(value);\n const svgElement = new DOMParser().parseFromString(sanitizedValue, 'image/svg+xml')\n .childNodes[0];\n if (svgElement instanceof SVGElement) {\n svgElement.setAttribute('width', '100%');\n svgElement.setAttribute('height', '100%');\n svgElement.style.position = 'absolute';\n rootElement.appendChild(svgElement);\n }\n } else if (value) {\n const errorElm = createErrorElm();\n errorElm.style.position = 'absolute';\n rootElement.appendChild(errorElm);\n }\n\n textarea.addEventListener('change', (e: Event) => {\n const newValue = (e.target as HTMLTextAreaElement).value;\n if (onChange) onChange({ key: 'content', value: newValue });\n });\n rootElement.appendChild(container);\n textarea.setSelectionRange(value.length, value.length);\n textarea.focus();\n } else {\n if (!value) return;\n if (!isValidSVG(value)) {\n rootElement.appendChild(createErrorElm());\n return;\n }\n container.innerHTML = sanitizeSVG(value);\n const svgElement = container.childNodes[0];\n if (svgElement instanceof SVGElement) {\n svgElement.setAttribute('width', '100%');\n svgElement.setAttribute('height', '100%');\n rootElement.appendChild(container);\n }\n }\n },\n pdf: async (arg) => {\n const { page, schema, value } = arg;\n if (!value || !isValidSVG(value)) return;\n const pageHeight = page.getHeight();\n const { width, height, position } = convertForPdfLayoutProps({ schema, pageHeight });\n const { x, y } = position;\n await page.drawSvg(value, { x, y: y + height, width, height });\n },\n propPanel: {\n schema: {},\n defaultSchema: {\n name: '',\n type: 'svg',\n content: defaultValue,\n position: { x: 0, y: 0 },\n width: 40,\n height: 50,\n },\n },\n icon: createSvgStr(Route),\n};\n\nexport default svgSchema;\n","export const BARCODE_TYPES = [\n 'qrcode',\n 'japanpost',\n 'ean13',\n 'ean8',\n 'code39',\n 'code128',\n 'nw7',\n 'itf14',\n 'upca',\n 'upce',\n 'gs1datamatrix',\n 'pdf417',\n] as const;\n\nexport const DEFAULT_BARCODE_BG_COLOR = '#ffffff';\n\nexport const DEFAULT_BARCODE_COLOR = '#000000';\n\nexport const DEFAULT_BARCODE_INCLUDETEXT = true;\n","import { b64toUint8Array } from '@pdfme/common';\nimport bwipjs, { RenderOptions } from 'bwip-js';\nimport { Buffer } from 'buffer';\nimport { BARCODE_TYPES, DEFAULT_BARCODE_INCLUDETEXT } from './constants.js';\nimport { BarcodeTypes } from './types.js';\n\n// GTIN-13, GTIN-8, GTIN-12, GTIN-14\nconst validateCheckDigit = (input: string, checkDigitPos: number) => {\n let passCheckDigit = true;\n\n if (input.length === checkDigitPos) {\n const ds = input.slice(0, -1).replace(/[^0-9]/g, '');\n let sum = 0;\n let odd = 1;\n for (let i = ds.length - 1; i > -1; i -= 1) {\n sum += Number(ds[i]) * (odd ? 3 : 1);\n odd ^= 1;\n if (sum > 0xffffffffffff) {\n // ~2^48 at max\n sum %= 10;\n }\n }\n passCheckDigit = String(10 - (sum % 10)).slice(-1) === input.slice(-1);\n }\n\n return passCheckDigit;\n};\nexport const validateBarcodeInput = (type: BarcodeTypes, input: string) => {\n if (!input) return false;\n\n if (!BARCODE_TYPES.includes(type)) return false;\n\n if (type === 'qrcode') {\n // Up to 500 characters\n return input.length < 500;\n }\n if (type === 'japanpost') {\n // For Japan Post: Postal codes must be digits (0-9) only.\n // Address display numbers can use alphanumeric characters (0-9, A-Z) and hyphen (-).\n const regexp = /^(\\d{7})(\\d|[A-Z]|-)+$/;\n return regexp.test(input);\n }\n if (type === 'ean13') {\n // For EAN-13: Valid characters are digits (0-9) only.\n // Either 12 digits (without check digit) or 13 digits (with check digit).\n const regexp = /^\\d{12}$|^\\d{13}$/;\n return regexp.test(input) && validateCheckDigit(input, 13);\n }\n if (type === 'ean8') {\n // For EAN-8: Valid characters are digits (0-9) only.\n // Either 7 digits (without check digit) or 8 digits (with check digit).\n const regexp = /^\\d{7}$|^\\d{8}$/;\n return regexp.test(input) && validateCheckDigit(input, 8);\n }\n if (type === 'code39') {\n // For Code39: Valid characters are digits (0-9), uppercase alphabets (A-Z),\n // symbols (-, ., $, /, +, %), and space.\n const regexp = /^(\\d|[A-Z]|[-.$/+%]|\\s)+$/;\n return regexp.test(input);\n }\n if (type === 'code128') {\n // For Code128: Valid characters are all except Kanji, Hiragana, and Katakana.\n // https://qiita.com/graminume/items/2ac8dd9c32277fa9da64\n return !input.match(\n /([\\u30a0-\\u30ff\\u3040-\\u309f\\u3005-\\u3006\\u30e0-\\u9fcf]|[A-Za-z0-9!"#$%&'()*+,-./:;<=>?@[\]^_`{|}〜 ])+/,\n );\n }\n if (type === 'nw7') {\n // For NW-7: Valid characters are digits (0-9) and symbols (-, ., $, :, /, +).\n // The first and last characters must be one of the alphabets A-D (start/stop codes).\n const regexp = /^[A-Da-d]([0-9.$:/+-])+[A-Da-d]$/;\n return regexp.test(input);\n }\n if (type === 'itf14') {\n // For ITF-14: Valid characters are digits (0-9) only.\n // Either 13 digits (without check digit) or 14 digits (with check digit).\n const regexp = /^\\d{13}$|^\\d{14}$/;\n return regexp.test(input) && validateCheckDigit(input, 14);\n }\n if (type === 'upca') {\n // For UPCA: Valid characters are digits (0-9) only.\n // Either 11 digits (without check digit) or 12 digits (with check digit).\n const regexp = /^\\d{11}$|^\\d{12}$/;\n return regexp.test(input) && validateCheckDigit(input, 12);\n }\n if (type === 'upce') {\n // For UPCE: Valid characters are digits (0-9) only.\n // The first digit (number system character) must be 0.\n // Either 7 digits (without check digit) or 8 digits (with check digit).\n const regexp = /^0(\\d{6}$|\\d{7}$)/;\n return regexp.test(input) && validateCheckDigit(input, 8);\n }\n if (type === 'gs1datamatrix') {\n let ret = false;\n // Find the GTIN application identifier: regex for \"(01)\" and the digits following it until another \"(\".\n const regexp = /\\((01)\\)(\\d*)(\\(|$)/;\n let res = input.match(regexp);\n if (\n res != null &&\n input.length <= 52 && // 52 is the max length of a GS1 DataMatrix barcode before bwip-js throws an error\n res[1] === '01' &&\n (res[2].length === 14 || res[2].length === 8 || res[2].length === 12 || res[2].length === 13)\n ) {\n let gtin = res[2];\n ret = validateCheckDigit(gtin, gtin.length);\n }\n return ret;\n }\n if (type === 'pdf417') {\n // PDF417 can encode a wide range of characters,\n // but considering performance and library limitations, the maximum number of characters is limited (up to 1000 characters here).\n return input.length > 0 && input.length <= 1000;\n }\n\n return false;\n};\n\n/**\n * The bwip.js lib has a different name for nw7 type barcodes\n */\nexport const barCodeType2Bcid = (type: BarcodeTypes) =>\n type === 'nw7' ? 'rationalizedCodabar' : type;\n\n/**\n * Strip hash from the beginning of HTML hex color codes for the bwip.js lib\n */\nexport const mapHexColorForBwipJsLib = (color: string | undefined, fallback?: string) =>\n color ? color.replace('#', '') : fallback ? fallback.replace('#', '') : '000000';\n\nexport const createBarCode = async (arg: {\n type: BarcodeTypes;\n input: string;\n width: number;\n height: number;\n backgroundColor?: string;\n barColor?: string;\n textColor?: string;\n includetext?: boolean;\n}): Promise<Buffer> => {\n const {\n type,\n input,\n width,\n height,\n backgroundColor,\n barColor,\n textColor,\n includetext = DEFAULT_BARCODE_INCLUDETEXT,\n } = arg;\n\n const bcid = barCodeType2Bcid(type);\n const scale = 5;\n const bwipjsArg: RenderOptions = {\n bcid,\n text: input,\n width,\n height,\n scale,\n includetext,\n textxalign: 'center',\n };\n\n if (backgroundColor) bwipjsArg.backgroundcolor = mapHexColorForBwipJsLib(backgroundColor);\n if (barColor) bwipjsArg.barcolor = mapHexColorForBwipJsLib(barColor);\n if (textColor) bwipjsArg.textcolor = mapHexColorForBwipJsLib(textColor);\n\n let res: Buffer;\n\n if (typeof window !== 'undefined') {\n const canvas = document.createElement('canvas');\n // Use a type assertion to safely call toCanvas\n const bwipjsModule = bwipjs as unknown as {\n toCanvas(canvas: HTMLCanvasElement, options: RenderOptions): void;\n };\n bwipjsModule.toCanvas(canvas, bwipjsArg);\n const dataUrl = canvas.toDataURL('image/png');\n res = Buffer.from(b64toUint8Array(dataUrl).buffer);\n } else {\n // Use a type assertion to safely call toBuffer\n const bwipjsModule = bwipjs as unknown as {\n toBuffer(options: RenderOptions): Promise<Buffer>;\n };\n res = await bwipjsModule.toBuffer(bwipjsArg);\n }\n\n return res;\n};\n","import { PDFRenderProps } from '@pdfme/common';\nimport { convertForPdfLayoutProps } from '../utils.js';\nimport type { BarcodeSchema } from './types.js';\nimport { createBarCode, validateBarcodeInput } from './helper.js';\nimport { PDFImage } from '@pdfme/pdf-lib';\n\nconst getBarcodeCacheKey = (schema: BarcodeSchema, value: string) => {\n return `${schema.type}${schema.backgroundColor}${schema.barColor}${schema.textColor}${value}${schema.includetext}`;\n};\n\nexport const pdfRender = async (arg: PDFRenderProps<BarcodeSchema>) => {\n const { value, schema, pdfDoc, page, _cache } = arg;\n if (!validateBarcodeInput(schema.type, value)) return;\n\n const inputBarcodeCacheKey = getBarcodeCacheKey(schema, value);\n let image = _cache.get(inputBarcodeCacheKey) as PDFImage | undefined;\n if (!image) {\n const imageBuf = await createBarCode({\n ...schema,\n type: schema.type,\n input: value,\n });\n image = await pdfDoc.embedPng(imageBuf);\n _cache.set(inputBarcodeCacheKey, image);\n }\n\n const pageHeight = page.getHeight();\n const {\n width,\n height,\n rotate,\n position: { x, y },\n opacity,\n } = convertForPdfLayoutProps({ schema, pageHeight });\n\n page.drawImage(image, { x, y, rotate, width, height, opacity });\n};\n","import type { PropPanel } from '@pdfme/common';\nimport type { BarcodeSchema } from './types.js';\nimport {\n DEFAULT_BARCODE_COLOR,\n DEFAULT_BARCODE_BG_COLOR,\n DEFAULT_BARCODE_INCLUDETEXT,\n} from './constants.js';\nimport { DEFAULT_OPACITY, HEX_COLOR_PATTERN } from '../constants.js';\n\nconst defaultColors = {\n backgroundColor: DEFAULT_BARCODE_BG_COLOR,\n barColor: DEFAULT_BARCODE_COLOR,\n};\nconst defaultTextColors = { textColor: DEFAULT_BARCODE_COLOR };\nconst defaultIncludetext = { includetext: DEFAULT_BARCODE_INCLUDETEXT };\nconst position = { x: 0, y: 0 };\nconst default40x20 = { width: 40, height: 20 };\n\nconst barcodeDefaults: { defaultSchema: BarcodeSchema }[] = [\n {\n defaultSchema: {\n name: '',\n type: 'qrcode',\n content: 'https://pdfme.com/',\n position,\n ...defaultColors,\n width: 30,\n height: 30,\n rotate: 0,\n opacity: DEFAULT_OPACITY,\n },\n },\n {\n defaultSchema: {\n name: '',\n type: 'japanpost',\n content: '6540123789-A-K-Z',\n position,\n ...defaultColors,\n ...defaultTextColors,\n ...defaultIncludetext,\n width: 80,\n height: 7.2,\n rotate: 0,\n opacity: DEFAULT_OPACITY,\n },\n },\n {\n defaultSchema: {\n name: '',\n type: 'ean13',\n content: '2112345678900',\n position,\n ...defaultColors,\n ...defaultTextColors,\n ...defaultIncludetext,\n ...default40x20,\n height: 16,\n rotate: 0,\n opacity: DEFAULT_OPACITY,\n },\n },\n {\n defaultSchema: {\n name: '',\n type: 'ean8',\n content: '02345673',\n position,\n ...defaultColors,\n ...defaultTextColors,\n ...defaultIncludetext,\n ...default40x20,\n rotate: 0,\n opacity: DEFAULT_OPACITY,\n },\n },\n {\n defaultSchema: {\n name: '',\n type: 'code39',\n content: 'THIS IS CODE 39',\n position,\n ...defaultColors,\n ...defaultTextColors,\n ...defaultIncludetext,\n ...default40x20,\n opacity: DEFAULT_OPACITY,\n },\n },\n {\n defaultSchema: {\n name: '',\n type: 'code128',\n content: 'This is Code 128!',\n position,\n ...defaultColors,\n ...defaultTextColors,\n ...defaultIncludetext,\n ...default40x20,\n rotate: 0,\n opacity: DEFAULT_OPACITY,\n },\n },\n {\n defaultSchema: {\n name: '',\n type: 'nw7',\n content: 'A0123456789B',\n position,\n ...defaultColors,\n ...defaultTextColors,\n ...defaultIncludetext,\n ...default40x20,\n rotate: 0,\n opacity: DEFAULT_OPACITY,\n },\n },\n {\n defaultSchema: {\n name: '',\n type: 'itf14',\n content: '04601234567893',\n position,\n ...defaultColors,\n ...defaultTextColors,\n ...defaultIncludetext,\n ...default40x20,\n height: 12,\n rotate: 0,\n opacity: DEFAULT_OPACITY,\n },\n },\n {\n defaultSchema: {\n name: '',\n type: 'upca',\n content: '416000336108',\n position,\n ...defaultColors,\n ...defaultTextColors,\n ...defaultIncludetext,\n ...default40x20,\n height: 16,\n rotate: 0,\n opacity: DEFAULT_OPACITY,\n },\n },\n {\n defaultSchema: {\n name: '',\n type: 'upce',\n content: '00123457',\n position,\n ...defaultColors,\n ...defaultTextColors,\n ...defaultIncludetext,\n ...default40x20,\n rotate: 0,\n opacity: DEFAULT_OPACITY,\n },\n },\n {\n defaultSchema: {\n name: '',\n type: 'gs1datamatrix',\n content: '(01)03453120000011(17)191125(10)ABCD1234',\n position,\n ...defaultColors,\n width: 30,\n height: 30,\n rotate: 0,\n opacity: DEFAULT_OPACITY,\n },\n },\n {\n defaultSchema: {\n name: '',\n type: 'pdf417',\n content: 'This is PDF417!',\n position,\n ...defaultColors,\n width: 40,\n height: 16,\n rotate: 0,\n opacity: DEFAULT_OPACITY,\n },\n },\n];\n\nexport const getPropPanelByBarcodeType = (barcodeType: string): PropPanel<BarcodeSchema> => {\n const barcodeHasText =\n barcodeType !== 'qrcode' && barcodeType !== 'gs1datamatrix' && barcodeType !== 'pdf417';\n\n const defaults = barcodeDefaults.find(({ defaultSchema }) => defaultSchema.type === barcodeType);\n\n if (!defaults)\n throw new Error(`[@pdfme/schemas/barcodes] No default for barcode type ${barcodeType}`);\n\n return {\n schema: ({ i18n }) => ({\n barColor: {\n title: i18n('schemas.barcodes.barColor'),\n type: 'string',\n widget: 'color',\n props: {\n disabledAlpha: true,\n },\n rules: [\n {\n pattern: HEX_COLOR_PATTERN,\n message: i18n('validation.hexColor'),\n },\n ],\n },\n backgroundColor: {\n title: i18n('schemas.bgColor'),\n type: 'string',\n widget: 'color',\n props: {\n disabledAlpha: true,\n },\n rules: [\n {\n pattern: HEX_COLOR_PATTERN,\n message: i18n('validation.hexColor'),\n },\n ],\n },\n ...(barcodeHasText\n ? {\n textColor: {\n title: i18n('schemas.textColor'),\n type: 'string',\n widget: 'color',\n props: {\n disabledAlpha: true,\n },\n },\n includetext: {\n title: i18n('schemas.barcodes.includetext'),\n type: 'boolean',\n widget: 'switch',\n },\n }\n : {}),\n }),\n ...defaults,\n };\n};\n","import type * as CSS from 'csstype';\nimport { UIRenderProps } from '@pdfme/common';\nimport type { BarcodeSchema } from './types.js';\nimport { validateBarcodeInput, createBarCode } from './helper.js';\nimport { addAlphaToHex, isEditable, createErrorElm } from '../utils.js';\n\nconst fullSize = { width: '100%', height: '100%' };\n\nconst blobToDataURL = (blob: Blob): Promise<string> =>\n new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.onloadend = () => resolve(reader.result as string);\n reader.onerror = reject;\n reader.readAsDataURL(blob);\n });\n\nconst createBarcodeImage = async (schema: BarcodeSchema, value: string) => {\n const imageBuf = await createBarCode({\n ...schema,\n input: value,\n });\n const barcodeData = new Blob([new Uint8Array(imageBuf)], { type: 'image/png' });\n const barcodeDataURL = await blobToDataURL(barcodeData);\n return barcodeDataURL;\n};\n\nconst createBarcodeImageElm = async (schema: BarcodeSchema, value: string) => {\n const barcodeDataURL = await createBarcodeImage(schema, value);\n const img = document.createElement('img');\n img.src = barcodeDataURL;\n const imgStyle: CSS.Properties = { ...fullSize, borderRadius: 0 };\n Object.assign(img.style, imgStyle);\n return img;\n};\n\nexport const uiRender = async (arg: UIRenderProps<BarcodeSchema>) => {\n const { value, rootElement, mode, onChange, stopEditing, tabIndex, placeholder, schema, theme } =\n arg;\n\n const container = document.createElement('div');\n const containerStyle: CSS.Properties = {\n ...fullSize,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n fontFamily: \"'Open Sans', sans-serif\",\n };\n Object.assign(container.style, containerStyle);\n rootElement.appendChild(container);\n const editable = isEditable(mode, schema);\n if (editable) {\n const input = document.createElement('input');\n const inputStyle: CSS.Properties = {\n width: '100%',\n position: 'absolute',\n textAlign: 'center',\n fontSize: '12pt',\n fontWeight: 'bold',\n color: theme.colorWhite,\n backgroundColor: editable || value ? addAlphaToHex('#000000', 80) : 'none',\n border: 'none',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n overflow: 'auto',\n };\n Object.assign(input.style, inputStyle);\n input.value = value;\n input.placeholder = placeholder || '';\n input.tabIndex = tabIndex || 0;\n input.addEventListener('change', (e: Event) => {\n if (onChange) onChange({ key: 'content', value: (e.target as HTMLInputElement).value });\n });\n input.addEventListener('blur', () => {\n if (stopEditing) stopEditing();\n });\n container.appendChild(input);\n input.setSelectionRange(value.length, value.length);\n if (mode === 'designer') {\n input.focus();\n }\n }\n\n if (!value) return;\n try {\n if (!validateBarcodeInput(schema.type, value))\n throw new Error('[@pdfme/schemas/barcodes] Invalid barcode input');\n const imgElm = await createBarcodeImageElm(schema, value);\n container.appendChild(imgElm);\n } catch (err) {\n console.error(`[@pdfme/ui] ${String(err)}`);\n container.appendChild(createErrorElm());\n }\n};\n","import { pdfRender } from './pdfRender.js';\nimport { getPropPanelByBarcodeType } from './propPanel.js';\nimport { uiRender } from './uiRender.js';\nimport type { BarcodeSchema, BarcodeTypes } from './types.js';\nimport { BARCODE_TYPES } from './constants.js';\nimport { createSvgStr } from '../utils.js';\nimport { Plugin } from '@pdfme/common';\nimport { QrCode, Barcode } from 'lucide';\n\nconst barcodes = BARCODE_TYPES.reduce(\n (acc, type) =>\n Object.assign(acc, {\n [type]: {\n pdf: pdfRender,\n ui: uiRender,\n propPanel: getPropPanelByBarcodeType(type),\n icon: createSvgStr(type == 'qrcode' ? QrCode : Barcode),\n },\n }),\n {} as Record<BarcodeTypes, Plugin<BarcodeSchema>>,\n);\n\nexport default barcodes;\n","import type { Schema, Plugin } from '@pdfme/common';\nimport {\n rotatePoint,\n convertForPdfLayoutProps,\n hex2PrintingColor,\n createSvgStr,\n} from '../utils.js';\nimport { HEX_COLOR_PATTERN } from '../constants.js';\nimport { Minus } from 'lucide';\n\nconst DEFAULT_LINE_COLOR = '#000000';\nconst HIT_POINT_HEIGHT = 16;\n\ninterface LineSchema extends Schema {\n color: string;\n}\n\nconst lineSchema: Plugin<LineSchema> = {\n pdf: (arg) => {\n const { page, schema, options } = arg;\n if (schema.width === 0 || schema.height === 0 || !schema.color) return;\n const { colorType } = options;\n const pageHeight = page.getHeight();\n const {\n width,\n height,\n rotate,\n position: { x, y },\n opacity,\n } = convertForPdfLayoutProps({ schema, pageHeight, applyRotateTranslate: false });\n const pivot = { x: x + width / 2, y: y + height / 2 };\n page.drawLine({\n start: rotatePoint({ x, y: y + height / 2 }, pivot, rotate.angle),\n end: rotatePoint({ x: x + width, y: y + height / 2 }, pivot, rotate.angle),\n thickness: height,\n color: hex2PrintingColor(schema.color ?? DEFAULT_LINE_COLOR, colorType),\n opacity: opacity,\n });\n },\n ui: (arg) => {\n const { schema, rootElement } = arg;\n Object.assign(rootElement.style, { position: 'relative', overflow: 'visible' });\n\n const baseStyles = {\n position: 'absolute',\n top: '50%',\n left: '0',\n transform: 'translateY(-50%)',\n width: '100%',\n } as const;\n\n const hitArea = document.createElement('div');\n Object.assign(hitArea.style, baseStyles, {\n height: `${HIT_POINT_HEIGHT}px`,\n backgroundColor: 'transparent',\n });\n\n const div = document.createElement('div');\n Object.assign(div.style, baseStyles, {\n height: '100%',\n backgroundColor: schema.color ?? 'transparent',\n pointerEvents: 'none',\n });\n\n rootElement.append(hitArea, div);\n },\n propPanel: {\n schema: ({ i18n }) => ({\n color: {\n title: i18n('schemas.color'),\n type: 'string',\n widget: 'color',\n props: {\n disabledAlpha: true,\n },\n required: true,\n rules: [{ pattern: HEX_COLOR_PATTERN, message: i18n('validation.hexColor') }],\n },\n }),\n defaultSchema: {\n name: '',\n type: 'line',\n position: { x: 0, y: 0 },\n width: 50,\n height: 0.5,\n rotate: 0,\n opacity: 1,\n readOnly: true,\n color: DEFAULT_LINE_COLOR,\n },\n },\n icon: createSvgStr(Minus),\n};\nexport default lineSchema;\n","import { Plugin, Schema, mm2pt } from '@pdfme/common';\nimport { HEX_COLOR_PATTERN } from '../constants.js';\nimport { hex2PrintingColor, convertForPdfLayoutProps, createSvgStr } from '../utils.js';\nimport { toRadians } from '@pdfme/pdf-lib';\nimport { Circle, Square } from 'lucide';\n\ninterface ShapeSchema extends Schema {\n type: 'ellipse' | 'rectangle';\n borderWidth: number;\n borderColor: string;\n color: string;\n radius?: number;\n}\n\nconst shape: Plugin<ShapeSchema> = {\n ui: (arg) => {\n const { schema, rootElement } = arg;\n const div = document.createElement('div');\n div.style.width = '100%';\n div.style.height = '100%';\n div.style.boxSizing = 'border-box';\n if (schema.type === 'ellipse') {\n div.style.borderRadius = '50%';\n } else if (schema.radius && schema.radius > 0) {\n div.style.borderRadius = `${schema.radius}mm`;\n }\n div.style.borderWidth = `${schema.borderWidth ?? 0}mm`;\n div.style.borderStyle = schema.borderWidth && schema.borderColor ? 'solid' : 'none';\n div.style.borderColor = schema.borderColor ?? 'transparent';\n div.style.backgroundColor = schema.color ?? 'transparent';\n\n rootElement.appendChild(div);\n },\n pdf: (arg) => {\n const { schema, page, options } = arg;\n if (!schema.color && !schema.borderColor) return;\n const { colorType } = options;\n const pageHeight = page.getHeight();\n const cArg = { schema, pageHeight };\n const { position, width, height, rotate, opacity } = convertForPdfLayoutProps(cArg);\n const {\n position: { x: x4Ellipse, y: y4Ellipse },\n } = convertForPdfLayoutProps({ ...cArg, applyRotateTranslate: false });\n const borderWidth = schema.borderWidth ? mm2pt(schema.borderWidth) : 0;\n\n const drawOptions = {\n rotate,\n borderWidth,\n borderColor: hex2PrintingColor(schema.borderColor, colorType),\n color: hex2PrintingColor(schema.color, colorType),\n opacity,\n borderOpacity: opacity,\n };\n if (schema.type === 'ellipse') {\n page.drawEllipse({\n x: x4Ellipse + width / 2,\n y: y4Ellipse + height / 2,\n xScale: width / 2 - borderWidth / 2,\n yScale: height / 2 - borderWidth / 2,\n ...drawOptions,\n });\n } else if (schema.type === 'rectangle') {\n const radius = schema.radius ?? 0;\n\n page.drawRectangle({\n x:\n position.x +\n borderWidth * ((1 - Math.sin(toRadians(rotate))) / 2) +\n Math.tan(toRadians(rotate)) * Math.PI ** 2,\n y:\n position.y +\n borderWidth * ((1 + Math.sin(toRadians(rotate))) / 2) +\n Math.tan(toRadians(rotate)) * Math.PI ** 2,\n width: width - borderWidth,\n height: height - borderWidth,\n ...(radius ? { radius: mm2pt(radius) } : {}),\n ...drawOptions,\n });\n }\n },\n propPanel: {\n schema: ({ i18n }) => ({\n borderWidth: {\n title: i18n('schemas.borderWidth'),\n type: 'number',\n widget: 'inputNumber',\n props: { min: 0, step: 1 },\n span: 12,\n },\n borderColor: {\n title: i18n('schemas.borderColor'),\n type: 'string',\n widget: 'color',\n props: {\n disabledAlpha: true,\n },\n rules: [{ pattern: HEX_COLOR_PATTERN, message: i18n('validation.hexColor') }],\n span: 12,\n },\n color: {\n title: i18n('schemas.color'),\n type: 'string',\n widget: 'color',\n props: {\n disabledAlpha: true,\n },\n rules: [{ pattern: HEX_COLOR_PATTERN, message: i18n('validation.hexColor') }],\n },\n radius: {\n title: i18n('schemas.radius'),\n type: 'number',\n widget: 'inputNumber',\n props: { min: 0, step: 1 },\n span: 12,\n },\n }),\n defaultSchema: {\n name: '',\n type: 'rectangle',\n position: { x: 0, y: 0 },\n width: 62.5,\n height: 37.5,\n rotate: 0,\n opacity: 1,\n borderWidth: 1,\n borderColor: '#000000',\n color: '',\n readOnly: true,\n radius: 0,\n },\n },\n};\n\nconst getPropPanelSchema = (type: 'rectangle' | 'ellipse') => ({\n ...shape.propPanel,\n defaultSchema: {\n ...(shape.propPanel.defaultSchema as ShapeSchema),\n type,\n },\n});\n\nexport const rectangle: Plugin<ShapeSchema> = {\n ...shape,\n propPanel: getPropPanelSchema('rectangle'),\n icon: createSvgStr(Square),\n};\n\nexport const ellipse: Plugin<ShapeSchema> = {\n ...shape,\n propPanel: getPropPanelSchema('ellipse'),\n icon: createSvgStr(Circle),\n};\n","import { DEFAULT_FONT_NAME, Plugin, PDFRenderProps, getFallbackFontName } from '@pdfme/common';\nimport { uiRender as textUiRender } from '../text/uiRender.js';\nimport { pdfRender as textPdfRender } from '../text/pdfRender.js';\nimport line from '../shapes/line.js';\nimport { rectangle } from '../shapes/rectAndEllipse.js';\nimport type { CellSchema } from './types.js';\nimport { getCellPropPanelSchema, getDefaultCellStyles } from './helper.js';\nconst linePdfRender = line.pdf;\nconst rectanglePdfRender = rectangle.pdf;\n\nconst renderLine = async (\n arg: PDFRenderProps<CellSchema>,\n schema: CellSchema,\n position: { x: number; y: number },\n width: number,\n height: number,\n) =>\n linePdfRender({\n ...arg,\n schema: { ...schema, type: 'line', position, width, height, color: schema.borderColor },\n });\n\nconst createTextDiv = (schema: CellSchema) => {\n const { borderWidth: bw, width, height, padding: pd } = schema;\n const textDiv = document.createElement('div');\n textDiv.style.position = 'absolute';\n textDiv.style.zIndex = '1';\n textDiv.style.width = `${width - bw.left - bw.right - pd.left - pd.right}mm`;\n textDiv.style.height = `${height - bw.top - bw.bottom - pd.top - pd.bottom}mm`;\n textDiv.style.top = `${bw.top + pd.top}mm`;\n textDiv.style.left = `${bw.left + pd.left}mm`;\n return textDiv;\n};\n\nconst createLineDiv = (\n width: string,\n height: string,\n top: string | null,\n right: string | null,\n bottom: string | null,\n left: string | null,\n borderColor: string,\n) => {\n const div = document.createElement('div');\n div.style.width = width;\n div.style.height = height;\n div.style.position = 'absolute';\n if (top !== null) div.style.top = top;\n if (right !== null) div.style.right = right;\n if (bottom !== null) div.style.bottom = bottom;\n if (left !== null) div.style.left = left;\n div.style.backgroundColor = borderColor;\n return div;\n};\n\nconst cellSchema: Plugin<CellSchema> = {\n pdf: async (arg) => {\n const { schema } = arg;\n const { position, width, height, borderWidth, padding } = schema;\n\n await Promise.all([\n // BACKGROUND\n rectanglePdfRender({\n ...arg,\n schema: {\n ...schema,\n type: 'rectangle',\n width: schema.width,\n height: schema.height,\n borderWidth: 0,\n borderColor: '',\n color: schema.backgroundColor,\n },\n }),\n // TOP\n renderLine(arg, schema, { x: position.x, y: position.y }, width, borderWidth.top),\n // RIGHT\n renderLine(\n arg,\n schema,\n { x: position.x + width - borderWidth.right, y: position.y },\n borderWidth.right,\n height,\n ),\n // BOTTOM\n renderLine(\n arg,\n schema,\n { x: position.x, y: position.y + height - borderWidth.bottom },\n width,\n borderWidth.bottom,\n ),\n // LEFT\n renderLine(arg, schema, { x: position.x, y: position.y }, borderWidth.left, height),\n ]);\n // TEXT\n await textPdfRender({\n ...arg,\n schema: {\n ...schema,\n type: 'text',\n backgroundColor: '',\n position: {\n x: position.x + borderWidth.left + padding.left,\n y: position.y + borderWidth.top + padding.top,\n },\n width: width - borderWidth.left - borderWidth.right - padding.left - padding.right,\n height: height - borderWidth.top - borderWidth.bottom - padding.top - padding.bottom,\n },\n });\n },\n ui: async (arg) => {\n const { schema, rootElement } = arg;\n const { borderWidth, width, height, borderColor, backgroundColor } = schema;\n rootElement.style.backgroundColor = backgroundColor;\n\n const textDiv = createTextDiv(schema);\n await textUiRender({\n ...arg,\n schema: { ...schema, backgroundColor: '' },\n rootElement: textDiv,\n });\n rootElement.appendChild(textDiv);\n\n const lines = [\n createLineDiv(`${width}mm`, `${borderWidth.top}mm`, '0mm', null, null, '0mm', borderColor),\n createLineDiv(`${width}mm`, `${borderWidth.bottom}mm`, null, null, '0mm', '0mm', borderColor),\n createLineDiv(`${borderWidth.left}mm`, `${height}mm`, '0mm', null, null, '0mm', borderColor),\n createLineDiv(`${borderWidth.right}mm`, `${height}mm`, '0mm', '0mm', null, null, borderColor),\n ];\n\n lines.forEach((line) => rootElement.appendChild(line));\n },\n propPanel: {\n schema: ({ options, i18n }) => {\n const font = options.font || { [DEFAULT_FONT_NAME]: { data: '', fallback: true } };\n const fontNames = Object.keys(font);\n const fallbackFontName = getFallbackFontName(font);\n return getCellPropPanelSchema({ i18n, fontNames, fallbackFontName });\n },\n defaultSchema: {\n name: '',\n type: 'cell',\n content: 'Type Something...',\n position: { x: 0, y: 0 },\n width: 50,\n height: 15,\n ...getDefaultCellStyles(),\n },\n },\n};\nexport default cellSchema;\n","import type { TableSchema } from './types.js';\nimport type { PDFRenderProps, Schema, BasePdf, CommonOptions } from '@pdfme/common';\nimport { Cell, Table, Row, Column } from './classes.js';\nimport { rectangle } from '../shapes/rectAndEllipse.js';\nimport cell from './cell.js';\nimport { getBodyWithRange } from './helper.js';\nimport { createSingleTable } from './tableHelper.js';\n\n// Define the CreateTableArgs interface locally since it's not exported from tableHelper.js\ninterface CreateTableArgs {\n schema: Schema;\n basePdf: BasePdf;\n options: CommonOptions;\n _cache: Map<string | number, unknown>;\n}\n\ntype Pos = { x: number; y: number };\n\nconst rectanglePdfRender = rectangle.pdf;\nconst cellPdfRender = cell.pdf;\n\nasync function drawCell(arg: PDFRenderProps<TableSchema>, cell: Cell) {\n await cellPdfRender({\n ...arg,\n value: cell.raw,\n schema: {\n name: '',\n type: 'cell',\n position: { x: cell.x, y: cell.y },\n width: cell.width,\n height: cell.height,\n fontName: cell.styles.fontName,\n alignment: cell.styles.alignment,\n verticalAlignment: cell.styles.verticalAlignment,\n fontSize: cell.styles.fontSize,\n lineHeight: cell.styles.lineHeight,\n characterSpacing: cell.styles.characterSpacing,\n backgroundColor: cell.styles.backgroundColor,\n fontColor: cell.styles.textColor,\n borderColor: cell.styles.lineColor,\n borderWidth: cell.styles.lineWidth,\n padding: cell.styles.cellPadding,\n },\n });\n}\n\nasync function drawRow(\n arg: PDFRenderProps<TableSchema>,\n table: Table,\n row: Row,\n cursor: Pos,\n columns: Column[],\n) {\n cursor.x = table.settings.margin.left;\n for (const column of columns) {\n const cell = row.cells[column.index];\n if (!cell) {\n cursor.x += column.width;\n continue;\n }\n\n cell.x = cursor.x;\n cell.y = cursor.y;\n\n await drawCell(arg, cell);\n\n cursor.x += column.width;\n }\n cursor.y += row.height;\n}\n\nasync function drawTableBorder(\n arg: PDFRenderProps<TableSchema>,\n table: Table,\n startPos: Pos,\n cursor: Pos,\n) {\n const lineWidth = table.settings.tableLineWidth;\n const lineColor = table.settings.tableLineColor;\n if (!lineWidth || !lineColor) return;\n await rectanglePdfRender({\n ...arg,\n schema: {\n name: '',\n type: 'rectangle',\n borderWidth: lineWidth,\n borderColor: lineColor,\n color: '',\n position: { x: startPos.x, y: startPos.y },\n width: table.getWidth(),\n height: cursor.y - startPos.y,\n readOnly: true,\n },\n });\n}\n\nasync function drawTable(arg: PDFRenderProps<TableSchema>, table: Table): Promise<void> {\n const settings = table.settings;\n const startY = settings.startY;\n const margin = settings.margin;\n const cursor = { x: margin.left, y: startY };\n\n const startPos = Object.assign({}, cursor);\n\n if (settings.showHead) {\n for (const row of table.head) {\n await drawRow(arg, table, row, cursor, table.columns);\n }\n }\n\n for (const row of table.body) {\n await drawRow(arg, table, row, cursor, table.columns);\n }\n\n await drawTableBorder(arg, table, startPos, cursor);\n}\n\nexport const pdfRender = async (arg: PDFRenderProps<TableSchema>) => {\n const { value, schema, basePdf, options, _cache } = arg;\n\n const body = getBodyWithRange(\n typeof value !== 'string' ? JSON.stringify(value || '[]') : value,\n schema.__bodyRange,\n );\n\n // Create a properly typed CreateTableArgs object\n const createTableArgs: CreateTableArgs = {\n schema,\n basePdf,\n options,\n _cache,\n };\n\n // Ensure body is properly typed before passing to createSingleTable\n // Ensure body is properly typed as string[][] before passing to createSingleTable\n const typedBody: string[][] = Array.isArray(body)\n ? body.map((row) => (Array.isArray(row) ? row.map((cell) => String(cell)) : []))\n : [];\n const table = await createSingleTable(typedBody, createTableArgs);\n\n // Use the original arg directly since drawTable expects PDFRenderProps<TableSchema>\n // which is the same type as our arg parameter\n await drawTable(arg, table);\n};\n","import type { UIRenderProps, Mode } from '@pdfme/common';\nimport type { TableSchema, CellStyle, Styles } from './types.js';\nimport { px2mm, ZOOM } from '@pdfme/common';\nimport { createSingleTable } from './tableHelper.js';\nimport { getBody, getBodyWithRange } from './helper.js';\nimport cell from './cell.js';\nimport { Row } from './classes.js';\n\nconst buttonSize = 30;\n\nfunction createButton(options: {\n width: number;\n height: number;\n top: string;\n left?: string;\n right?: string;\n text: string;\n onClick: (e: MouseEvent) => void;\n}): HTMLButtonElement {\n const button = document.createElement('button');\n button.style.width = `${options.width}px`;\n button.style.height = `${options.height}px`;\n button.style.position = 'absolute';\n button.style.top = options.top;\n if (options.left !== undefined) {\n button.style.left = options.left;\n }\n if (options.right !== undefined) {\n button.style.right = options.right;\n }\n button.innerText = options.text;\n button.onclick = options.onClick;\n return button;\n}\n\ntype RowType = InstanceType<typeof Row>;\n\nconst cellUiRender = cell.ui;\n\nconst convertToCellStyle = (styles: Styles): CellStyle => ({\n fontName: styles.fontName,\n alignment: styles.alignment,\n verticalAlignment: styles.verticalAlignment,\n fontSize: styles.fontSize,\n lineHeight: styles.lineHeight,\n characterSpacing: styles.characterSpacing,\n backgroundColor: styles.backgroundColor,\n // ---\n fontColor: styles.textColor,\n borderColor: styles.lineColor,\n borderWidth: styles.lineWidth,\n padding: styles.cellPadding,\n});\n\nconst calcResizedHeadWidthPercentages = (arg: {\n currentHeadWidthPercentages: number[];\n currentHeadWidths: number[];\n changedHeadWidth: number;\n changedHeadIndex: number;\n}) => {\n const { currentHeadWidthPercentages, currentHeadWidths, changedHeadWidth, changedHeadIndex } =\n arg;\n const headWidthPercentages = [...currentHeadWidthPercentages];\n const totalWidth = currentHeadWidths.reduce((a, b) => a + b, 0);\n const changedWidthPercentage = (changedHeadWidth / totalWidth) * 100;\n const originalNextWidthPercentage = headWidthPercentages[changedHeadIndex + 1] ?? 0;\n const adjustment = headWidthPercentages[changedHeadIndex] - changedWidthPercentage;\n headWidthPercentages[changedHeadIndex] = changedWidthPercentage;\n if (changedHeadIndex + 1 < headWidthPercentages.length) {\n headWidthPercentages[changedHeadIndex + 1] = originalNextWidthPercentage + adjustment;\n }\n return headWidthPercentages;\n};\n\nconst setBorder = (\n div: HTMLDivElement,\n borderPosition: 'Top' | 'Left' | 'Right' | 'Bottom',\n arg: UIRenderProps<TableSchema>,\n) => {\n div.style[`border${borderPosition}`] = `${String(arg.schema.tableStyles.borderWidth)}mm solid ${\n arg.schema.tableStyles.borderColor\n }`;\n};\n\nconst drawBorder = (\n div: HTMLDivElement,\n row: RowType,\n colIndex: number,\n rowIndex: number,\n rowsLength: number,\n arg: UIRenderProps<TableSchema>,\n) => {\n const isFirstColumn = colIndex === 0;\n const isLastColumn = colIndex === Object.values(row.cells).length - 1;\n const isLastRow = rowIndex === rowsLength - 1;\n\n if (row.section === 'head') {\n setBorder(div, 'Top', arg);\n if (isFirstColumn) setBorder(div, 'Left', arg);\n if (isLastColumn) setBorder(div, 'Right', arg);\n if ((JSON.parse(arg.value || '[]') as string[][]).length === 0) {\n setBorder(div, 'Bottom', arg);\n }\n } else if (row.section === 'body') {\n if (!arg.schema.showHead && rowIndex === 0) {\n setBorder(div, 'Top', arg);\n }\n if (isFirstColumn) setBorder(div, 'Left', arg);\n if (isLastColumn) setBorder(div, 'Right', arg);\n if (isLastRow) setBorder(div, 'Bottom', arg);\n }\n};\n\nconst renderRowUi = (args: {\n rows: RowType[];\n arg: UIRenderProps<TableSchema>;\n editingPosition: { rowIndex: number; colIndex: number };\n onChangeEditingPosition: (position: { rowIndex: number; colIndex: number }) => void;\n offsetY?: number;\n}) => {\n const { rows, arg, onChangeEditingPosition, offsetY = 0, editingPosition } = args;\n const value = JSON.parse(arg.value || '[]') as string[][];\n\n let rowOffsetY = offsetY;\n rows.forEach((row, rowIndex) => {\n const { cells, height, section } = row;\n let colOffsetX = 0;\n Object.values(cells).forEach((cell, colIndex) => {\n const div = document.createElement('div');\n div.style.position = 'absolute';\n div.style.top = `${rowOffsetY}mm`;\n div.style.left = `${colOffsetX}mm`;\n div.style.width = `${cell.width}mm`;\n div.style.height = `${cell.height}mm`;\n div.style.boxSizing = 'border-box';\n\n drawBorder(div, row, colIndex, rowIndex, rows.length, arg);\n\n div.style.cursor =\n arg.mode === 'designer' || (arg.mode === 'form' && section === 'body') ? 'text' : 'default';\n\n div.addEventListener('click', () => {\n if (arg.mode === 'viewer') return;\n onChangeEditingPosition({ rowIndex, colIndex });\n });\n arg.rootElement.appendChild(div);\n const isEditing =\n editingPosition.rowIndex === rowIndex && editingPosition.colIndex === colIndex;\n let mode: Mode = 'viewer';\n if (arg.mode === 'form') {\n mode = section === 'body' && isEditing && !arg.schema.readOnly ? 'designer' : 'viewer';\n } else if (arg.mode === 'designer') {\n mode = isEditing ? 'designer' : 'form';\n }\n\n void cellUiRender({\n ...arg,\n stopEditing: () => {\n if (arg.mode === 'form') {\n resetEditingPosition();\n }\n },\n mode,\n onChange: (v) => {\n if (!arg.onChange) return;\n const newValue = (Array.isArray(v) ? v[0].value : v.value) as string;\n if (section === 'body') {\n const startRange = arg.schema.__bodyRange?.start ?? 0;\n value[rowIndex + startRange][colIndex] = newValue;\n arg.onChange({ key: 'content', value: JSON.stringify(value) });\n } else {\n const newHead = [...arg.schema.head];\n newHead[colIndex] = newValue;\n arg.onChange({ key: 'head', value: newHead });\n }\n },\n value: cell.raw,\n placeholder: '',\n rootElement: div,\n schema: {\n name: '',\n type: 'cell',\n content: cell.raw,\n position: { x: colOffsetX, y: rowOffsetY },\n width: cell.width,\n height: cell.height,\n ...convertToCellStyle(cell.styles),\n },\n });\n colOffsetX += cell.width;\n });\n rowOffsetY += height;\n });\n};\n\nconst headEditingPosition = { rowIndex: -1, colIndex: -1 };\nconst bodyEditingPosition = { rowIndex: -1, colIndex: -1 };\nconst resetEditingPosition = () => {\n headEditingPosition.rowIndex = -1;\n headEditingPosition.colIndex = -1;\n bodyEditingPosition.rowIndex = -1;\n bodyEditingPosition.colIndex = -1;\n};\n\nexport const uiRender = async (arg: UIRenderProps<TableSchema>) => {\n const { rootElement, onChange, schema, value, mode, scale } = arg;\n const body = getBody(value);\n const bodyWidthRange = getBodyWithRange(value, schema.__bodyRange);\n const table = await createSingleTable(bodyWidthRange, arg);\n const showHead = table.settings.showHead;\n\n rootElement.innerHTML = '';\n\n const handleChangeEditingPosition = (\n newPosition: { rowIndex: number; colIndex: number },\n editingPosition: { rowIndex: number; colIndex: number },\n ) => {\n resetEditingPosition();\n editingPosition.rowIndex = newPosition.rowIndex;\n editingPosition.colIndex = newPosition.colIndex;\n void uiRender(arg);\n };\n\n if (showHead) {\n renderRowUi({\n rows: table.head,\n arg,\n editingPosition: headEditingPosition,\n onChangeEditingPosition: (p) => handleChangeEditingPosition(p, headEditingPosition),\n });\n }\n\n const offsetY = showHead ? table.getHeadHeight() : 0;\n renderRowUi({\n rows: table.body,\n arg,\n editingPosition: bodyEditingPosition,\n onChangeEditingPosition: (p) => {\n handleChangeEditingPosition(p, bodyEditingPosition);\n },\n offsetY,\n });\n\n const createAddRowButton = () =>\n createButton({\n width: buttonSize,\n height: buttonSize,\n top: `${table.getHeight()}mm`,\n left: `calc(50% - ${buttonSize / 2}px)`,\n text: '+',\n onClick: () => {\n const newRow = Array(schema.head.length).fill('') as string[];\n if (onChange) onChange({ key: 'content', value: JSON.stringify(body.concat([newRow])) });\n },\n });\n\n const createRemoveRowButtons = () => {\n let offsetY = showHead ? table.getHeadHeight() : 0;\n return table.body.map((row, i) => {\n offsetY = offsetY + row.height;\n const removeRowButton = createButton({\n width: buttonSize,\n height: buttonSize,\n top: `${offsetY - px2mm(buttonSize)}mm`,\n right: `-${buttonSize}px`,\n text: '-',\n onClick: () => {\n const newTableBody = body.filter((_, j) => j !== i + (schema.__bodyRange?.start ?? 0));\n if (onChange) onChange({ key: 'content', value: JSON.stringify(newTableBody) });\n },\n });\n return removeRowButton;\n });\n };\n\n if (mode === 'form' && onChange && !schema.readOnly) {\n if (\n schema.__bodyRange?.end === undefined ||\n schema.__bodyRange.end >= (JSON.parse(value || '[]') as string[][]).length\n ) {\n rootElement.appendChild(createAddRowButton());\n }\n\n createRemoveRowButtons().forEach((button) => rootElement.appendChild(button));\n }\n\n if (mode === 'designer' && onChange) {\n const addColumnButton = createButton({\n width: buttonSize,\n height: buttonSize,\n top: `${(showHead ? table.getHeadHeight() : 0) - px2mm(buttonSize)}mm`,\n right: `-${buttonSize}px`,\n text: '+',\n onClick: (e) => {\n e.preventDefault();\n const newColumnWidthPercentage = 25;\n const totalCurrentWidth = schema.headWidthPercentages.reduce(\n (acc, width) => acc + width,\n 0,\n );\n const scalingRatio = (100 - newColumnWidthPercentage) / totalCurrentWidth;\n const scaledWidths = schema.headWidthPercentages.map((width) => width * scalingRatio);\n onChange([\n { key: 'head', value: schema.head.concat(`Head ${schema.head.length + 1}`) },\n { key: 'headWidthPercentages', value: scaledWidths.concat(newColumnWidthPercentage) },\n {\n key: 'content',\n value: JSON.stringify(bodyWidthRange.map((row, i) => row.concat(`Row ${i + 1}`))),\n },\n ]);\n },\n });\n rootElement.appendChild(addColumnButton);\n\n rootElement.appendChild(createAddRowButton());\n\n createRemoveRowButtons().forEach((button) => rootElement.appendChild(button));\n\n let offsetX = 0;\n table.columns.forEach((column, i, columns) => {\n if (columns.length === 1) return;\n offsetX = offsetX + column.width;\n const removeColumnButton = createButton({\n width: buttonSize,\n height: buttonSize,\n top: `${-buttonSize}px`,\n left: `${offsetX - px2mm(buttonSize)}mm`,\n text: '-',\n onClick: () => {\n const totalWidthMinusRemoved = schema.headWidthPercentages.reduce(\n (sum, width, j) => (j !== i ? sum + width : sum),\n 0,\n );\n\n // TODO Should also remove the deleted columnStyles when deleting\n onChange([\n { key: 'head', value: schema.head.filter((_, j) => j !== i) },\n {\n key: 'headWidthPercentages',\n value: schema.headWidthPercentages\n .filter((_, j) => j !== i)\n .map((width) => (width / totalWidthMinusRemoved) * 100),\n },\n {\n key: 'content',\n value: JSON.stringify(bodyWidthRange.map((row) => row.filter((_, j) => j !== i))),\n },\n ]);\n },\n });\n rootElement.appendChild(removeColumnButton);\n\n if (i === table.columns.length - 1) return;\n\n const dragHandle = document.createElement('div');\n const lineWidth = 5;\n dragHandle.style.width = `${lineWidth}px`;\n dragHandle.style.height = '100%';\n dragHandle.style.backgroundColor = '#eee';\n dragHandle.style.opacity = '0.5';\n dragHandle.style.cursor = 'col-resize';\n dragHandle.style.position = 'absolute';\n dragHandle.style.zIndex = '10';\n dragHandle.style.left = `${offsetX - px2mm(lineWidth) / 2}mm`;\n dragHandle.style.top = '0';\n const setColor = (e: MouseEvent) => {\n const handle = e.target as HTMLDivElement;\n handle.style.backgroundColor = '#2196f3';\n };\n const resetColor = (e: MouseEvent) => {\n const handle = e.target as HTMLDivElement;\n handle.style.backgroundColor = '#eee';\n };\n dragHandle.addEventListener('mouseover', setColor);\n dragHandle.addEventListener('mouseout', resetColor);\n\n const prevColumnLeft = offsetX - column.width;\n const nextColumnRight = offsetX - px2mm(lineWidth) + table.columns[i + 1].width;\n\n dragHandle.addEventListener('mousedown', (e) => {\n resetEditingPosition();\n const handle = e.target as HTMLDivElement;\n dragHandle.removeEventListener('mouseover', setColor);\n dragHandle.removeEventListener('mouseout', resetColor);\n\n const startClientX = e.clientX;\n const startLeft = Number(handle.style.left.replace('mm', ''));\n\n let move = 0;\n const mouseMove = (e: MouseEvent) => {\n const deltaX = e.clientX - startClientX;\n const moveX = deltaX / ZOOM / scale;\n let newLeft = startLeft + moveX;\n\n if (newLeft < prevColumnLeft) {\n newLeft = prevColumnLeft;\n }\n if (newLeft >= nextColumnRight) {\n newLeft = nextColumnRight;\n }\n handle.style.left = `${newLeft}mm`;\n move = newLeft - startLeft;\n };\n rootElement.addEventListener('mousemove', mouseMove);\n\n const commitResize = () => {\n if (move !== 0) {\n const newHeadWidthPercentages = calcResizedHeadWidthPercentages({\n currentHeadWidthPercentages: schema.headWidthPercentages,\n currentHeadWidths: table.columns.map((column) => column.width),\n changedHeadWidth: table.columns[i].width + move,\n changedHeadIndex: i,\n });\n onChange({ key: 'headWidthPercentages', value: newHeadWidthPercentages });\n }\n move = 0;\n dragHandle.addEventListener('mouseover', setColor);\n dragHandle.addEventListener('mouseout', resetColor);\n rootElement.removeEventListener('mousemove', mouseMove);\n rootElement.removeEventListener('mouseup', commitResize);\n };\n rootElement.addEventListener('mouseup', commitResize);\n });\n rootElement.appendChild(dragHandle);\n });\n }\n\n if (mode === 'viewer') {\n resetEditingPosition();\n }\n\n const tableHeight = showHead ? table.getHeight() : table.getBodyHeight();\n if (schema.height !== tableHeight && onChange) {\n onChange({ key: 'height', value: tableHeight });\n }\n};\n","import type { PropPanel } from '@pdfme/common';\nimport type { TableSchema } from './types.js';\nimport { getFallbackFontName, DEFAULT_FONT_NAME } from '@pdfme/common';\nimport {\n getDefaultCellStyles,\n getCellPropPanelSchema,\n getColumnStylesPropPanelSchema,\n} from './helper.js';\nimport { HEX_COLOR_PATTERN } from '../constants.js';\n\nexport const propPanel: PropPanel<TableSchema> = {\n schema: ({ activeSchema, options, i18n }) => {\n // @ts-expect-error Type casting is necessary here as the activeSchema type is generic\n const tableSchema = activeSchema as TableSchema;\n const head = tableSchema.head || [];\n const showHead = tableSchema.showHead || false;\n const font = options.font || { [DEFAULT_FONT_NAME]: { data: '', fallback: true } };\n const fontNames = Object.keys(font);\n const fallbackFontName = getFallbackFontName(font);\n return {\n showHead: {\n title: i18n('schemas.table.showHead'),\n type: 'boolean',\n widget: 'checkbox',\n span: 12,\n },\n repeatHead: {\n title: i18n('schemas.table.repeatHead'),\n type: 'boolean',\n widget: 'checkbox',\n span: 12,\n },\n '-------': { type: 'void', widget: 'Divider' },\n tableStyles: {\n title: i18n('schemas.table.tableStyle'),\n type: 'object',\n widget: 'Card',\n span: 24,\n properties: {\n borderWidth: {\n title: i18n('schemas.borderWidth'),\n type: 'number',\n widget: 'inputNumber',\n props: { min: 0, step: 0.1 },\n step: 1,\n },\n borderColor: {\n title: i18n('schemas.borderColor'),\n type: 'string',\n widget: 'color',\n props: {\n disabledAlpha: true,\n },\n rules: [{ pattern: HEX_COLOR_PATTERN, message: i18n('validation.hexColor') }],\n },\n },\n },\n headStyles: {\n hidden: !showHead,\n title: i18n('schemas.table.headStyle'),\n type: 'object',\n widget: 'Card',\n span: 24,\n properties: getCellPropPanelSchema({ i18n, fallbackFontName, fontNames }),\n },\n bodyStyles: {\n title: i18n('schemas.table.bodyStyle'),\n type: 'object',\n widget: 'Card',\n span: 24,\n properties: getCellPropPanelSchema({ i18n, fallbackFontName, fontNames, isBody: true }),\n },\n columnStyles: {\n title: i18n('schemas.table.columnStyle'),\n type: 'object',\n widget: 'Card',\n span: 24,\n properties: getColumnStylesPropPanelSchema({ head, i18n }),\n },\n };\n },\n defaultSchema: {\n name: '',\n type: 'table',\n position: { x: 0, y: 0 },\n width: 150,\n height: 20,\n content: JSON.stringify([\n ['Alice', 'New York', 'Alice is a freelance web designer and developer'],\n ['Bob', 'Paris', 'Bob is a freelance illustrator and graphic designer'],\n ]),\n showHead: true,\n repeatHead: false,\n head: ['Name', 'City', 'Description'],\n headWidthPercentages: [30, 30, 40],\n tableStyles: {\n borderColor: '#000000',\n borderWidth: 0.3,\n },\n headStyles: Object.assign(getDefaultCellStyles(), {\n fontColor: '#ffffff',\n backgroundColor: '#2980ba',\n borderColor: '',\n borderWidth: { top: 0, right: 0, bottom: 0, left: 0 },\n }),\n bodyStyles: Object.assign(getDefaultCellStyles(), {\n alternateBackgroundColor: '#f5f5f5',\n }),\n columnStyles: {},\n },\n};\n","import type { Plugin } from '@pdfme/common';\nimport type { TableSchema } from './types.js';\nimport { pdfRender } from './pdfRender.js';\nimport { uiRender } from './uiRender.js';\nimport { propPanel } from './propPanel.js';\nimport { Table } from 'lucide';\nimport { createSvgStr } from '../utils.js';\n\nconst tableSchema: Plugin<TableSchema> = {\n pdf: pdfRender,\n ui: uiRender,\n propPanel,\n icon: createSvgStr(Table),\n};\nexport default tableSchema;\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _default = {\n days: ['الأحد', 'الأثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعه', 'السبت'],\n daysShort: ['الأحد', 'الأثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعه', 'السبت'],\n daysMin: ['الأحد', 'الأثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعه', 'السبت'],\n months: ['يناير', 'فبراير', 'مارس', 'أبريل', 'مايو', 'يونيو', 'يوليو', 'أغسطس', 'سبتمبر', 'اكتوبر', 'نوفمبر', 'ديسمبر'],\n monthsShort: ['يناير', 'فبراير', 'مارس', 'أبريل', 'مايو', 'يونيو', 'يوليو', 'أغسطس', 'سبتمبر', 'اكتوبر', 'نوفمبر', 'ديسمبر'],\n today: 'اليوم',\n clear: 'حذف',\n dateFormat: 'dd/MM/yyyy',\n timeFormat: 'hh:mm aa',\n firstDay: 0\n};\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _default = {\n days: [\"Неделя\", \"Понеделник\", \"Вторник\", \"Сряда\", \"Четвъртък\", \"Петък\", \"Събота\"],\n daysShort: [\"Нед\", \"Пон\", \"Вто\", \"Сря\", \"Чет\", \"Пет\", \"Съб\"],\n daysMin: [\"Нд\", \"Пн\", \"Вт\", \"Ср\", \"Чт\", \"Пт\", \"Сб\"],\n months: [\"Януари\", \"Февруари\", \"Март\", \"Април\", \"Май\", \"Юни\", \"Юли\", \"Август\", \"Септември\", \"Октомври\", \"Ноември\", \"Декември\"],\n monthsShort: [\"Яну\", \"Фев\", \"Мар\", \"Апр\", \"Май\", \"Юни\", \"Юли\", \"Авг\", \"Сеп\", \"Окт\", \"Ное\", \"Дек\"],\n today: \"Днес\",\n clear: \"Изчисти\",\n dateFormat: \"dd.MM.yyyy\",\n timeFormat: 'HH:mm',\n firstDay: 1\n};\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _default = {\n days: [\"Diumenge\", \"Dilluns\", \"Dimarts\", \"Dimecres\", \"Dijous\", \"Divendres\", \"Dissabte\"],\n daysShort: [\"Diu\", \"Dil\", \"Dmt\", \"Dmc\", \"Dij\", \"Div\", \"Dis\"],\n daysMin: [\"dg\", \"dl\", \"dt\", \"dc\", \"dj\", \"dv\", \"ds\"],\n months: [\"Gener\", \"Febrer\", \"Març\", \"Abril\", \"Maig\", \"Juny\", \"Juliol\", \"Agost\", \"Setembre\", \"Octubre\", \"Novembre\", \"Desembre\"],\n monthsShort: [\"Gen\", \"Feb\", \"Mar\", \"Abr\", \"Mai\", \"Jun\", \"Jul\", \"Ago\", \"Set\", \"Oct\", \"Nov\", \"Des\"],\n today: \"Avui\",\n clear: 'Neteja',\n dateFormat: 'dd/MM/yyyy',\n timeFormat: 'hh:mm aa',\n firstDay: 1\n};\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _default = {\n days: ['Neděle', 'Pondělí', 'Úterý', 'Středa', 'Čtvrtek', 'Pátek', 'Sobota'],\n daysShort: ['Ne', 'Po', 'Út', 'St', 'Čt', 'Pá', 'So'],\n daysMin: ['Ne', 'Po', 'Út', 'St', 'Čt', 'Pá', 'So'],\n months: ['Leden', 'Únor', 'Březen', 'Duben', 'Květen', 'Červen', 'Červenec', 'Srpen', 'Září', 'Říjen', 'Listopad', 'Prosinec'],\n monthsShort: ['Led', 'Úno', 'Bře', 'Dub', 'Kvě', 'Čvn', 'Čvc', 'Srp', 'Zář', 'Říj', 'Lis', 'Pro'],\n today: 'Dnes',\n clear: 'Vymazat',\n dateFormat: 'dd.MM.yyyy',\n timeFormat: 'HH:mm',\n firstDay: 1\n};\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _default = {\n days: ['Søndag', 'Mandag', 'Tirsdag', 'Onsdag', 'Torsdag', 'Fredag', 'Lørdag'],\n daysShort: ['Søn', 'Man', 'Tir', 'Ons', 'Tor', 'Fre', 'Lør'],\n daysMin: ['Sø', 'Ma', 'Ti', 'On', 'To', 'Fr', 'Lø'],\n months: ['Januar', 'Februar', 'Marts', 'April', 'Maj', 'Juni', 'Juli', 'August', 'September', 'Oktober', 'November', 'December'],\n monthsShort: ['Jan', 'Feb', 'Mar', 'Apr', 'Maj', 'Jun', 'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Dec'],\n today: 'I dag',\n clear: 'Nulstil',\n dateFormat: 'dd/MM/yyyy',\n timeFormat: 'HH:mm',\n firstDay: 1\n};\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _default = {\n days: ['Sonntag', 'Montag', 'Dienstag', 'Mittwoch', 'Donnerstag', 'Freitag', 'Samstag'],\n daysShort: ['Son', 'Mon', 'Die', 'Mit', 'Don', 'Fre', 'Sam'],\n daysMin: ['So', 'Mo', 'Di', 'Mi', 'Do', 'Fr', 'Sa'],\n months: ['Januar', 'Februar', 'März', 'April', 'Mai', 'Juni', 'Juli', 'August', 'September', 'Oktober', 'November', 'Dezember'],\n monthsShort: ['Jan', 'Feb', 'Mär', 'Apr', 'Mai', 'Jun', 'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Dez'],\n today: 'Heute',\n clear: 'Löschen',\n dateFormat: 'dd.MM.yyyy',\n timeFormat: 'HH:mm',\n firstDay: 1\n};\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _default = {\n days: ['Κυριακή', 'Δευτέρα', 'Τρίτη', 'Τετάρτη', 'Πέμπτη', 'Παρασκευή', 'Σάββατο'],\n daysShort: ['Κυρ', 'Δευ', 'Τρί', 'Τετ', 'Πέμ', 'Παρ', 'Σάβ'],\n daysMin: ['Κυ', 'Δε', 'Τρ', 'Τε', 'Πε', 'Πα', 'Σα'],\n months: ['Ιανουάριος', 'Φεβρουάριος', 'Μάρτιος', 'Απρίλιος', 'Μάιος', 'Ιούνιος', 'Ιούλιος', 'Αύγουστος', 'Σεπτέμβριος', 'Οκτώβριος', 'Νοέμβριος', 'Δεκέμβριος'],\n monthsShort: ['Ιαν', 'Φεβ', 'Μαρ', 'Απρ', 'Μάι', 'Ιούν', 'Ιούλ', 'Αύγ', 'Σεπ', 'Οκτ', 'Νοε', 'Δεκ'],\n today: 'Σήμερα',\n clear: 'Καθαρισμός',\n dateFormat: 'dd/MM/yyyy',\n timeFormat: 'hh:mm aa',\n firstDay: 1\n};\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _default = {\n days: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],\n daysShort: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n daysMin: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],\n months: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],\n monthsShort: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n today: 'Today',\n clear: 'Clear',\n dateFormat: 'MM/dd/yyyy',\n timeFormat: 'hh:mm aa',\n firstDay: 0\n};\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _default = {\n days: ['Domingo', 'Lunes', 'Martes', 'Miércoles', 'Jueves', 'Viernes', 'Sábado'],\n daysShort: ['Dom', 'Lun', 'Mar', 'Mie', 'Jue', 'Vie', 'Sab'],\n daysMin: ['Do', 'Lu', 'Ma', 'Mi', 'Ju', 'Vi', 'Sa'],\n months: ['Enero', 'Febrero', 'Marzo', 'Abril', 'Mayo', 'Junio', 'Julio', 'Agosto', 'Septiembre', 'Octubre', 'Noviembre', 'Diciembre'],\n monthsShort: ['Ene', 'Feb', 'Mar', 'Abr', 'May', 'Jun', 'Jul', 'Ago', 'Sep', 'Oct', 'Nov', 'Dic'],\n today: 'Hoy',\n clear: 'Limpiar',\n dateFormat: 'dd/MM/yyyy',\n timeFormat: 'hh:mm aa',\n firstDay: 1\n};\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _default = {\n days: ['Igandea', 'Astelehena', 'Asteartea', 'Asteazkena', 'Osteguna', 'Ostirala', 'Larunbata'],\n daysShort: ['Iga', 'Ast', 'Asr', 'Asz', 'Ost', 'Osr', 'Lar'],\n daysMin: ['Ig', 'As', 'Ar', 'Az', 'Os', 'Or', 'La'],\n months: ['Urtarrila', 'Otsaila', 'Martxoa', 'Apirila', 'Maiatza', 'Ekaina', 'Uztaila', 'Abuztua', 'Iraila', 'Urria', 'Azaroa', 'Abendua'],\n monthsShort: ['Urt', 'Ots', 'Mar', 'Api', 'Mai', 'Eka', 'Uzt', 'Abu', 'Ira', 'Urr', 'Aza', 'Abe'],\n today: 'Gaur',\n clear: 'Garbitu',\n dateFormat: 'dd/MM/yyyy',\n timeFormat: 'hh:mm aa',\n firstDay: 1\n};\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _default = {\n days: ['Sunnuntai', 'Maanantai', 'Tiistai', 'Keskiviikko', 'Torstai', 'Perjantai', 'Lauantai'],\n daysShort: ['Su', 'Ma', 'Ti', 'Ke', 'To', 'Pe', 'La'],\n daysMin: ['Su', 'Ma', 'Ti', 'Ke', 'To', 'Pe', 'La'],\n months: ['Tammikuu', 'Helmikuu', 'Maaliskuu', 'Huhtikuu', 'Toukokuu', 'Kesäkuu', 'Heinäkuu', 'Elokuu', 'Syyskuu', 'Lokakuu', 'Marraskuu', 'Joulukuu'],\n monthsShort: ['Tammi', 'Helmi', 'Maalis', 'Huhti', 'Touko', 'Kesä', 'Heinä', 'Elo', 'Syys', 'Loka', 'Marras', 'Joulu'],\n today: 'Tänään',\n clear: 'Tyhjennä',\n dateFormat: 'dd.MM.yyyy',\n timeFormat: 'HH:mm',\n firstDay: 1\n};\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _default = {\n days: ['Dimanche', 'Lundi', 'Mardi', 'Mercredi', 'Jeudi', 'Vendredi', 'Samedi'],\n daysShort: ['Dim', 'Lun', 'Mar', 'Mer', 'Jeu', 'Ven', 'Sam'],\n daysMin: ['Di', 'Lu', 'Ma', 'Me', 'Je', 'Ve', 'Sa'],\n months: ['Janvier', 'Février', 'Mars', 'Avril', 'Mai', 'Juin', 'Juillet', 'Août', 'Septembre', 'Octobre', 'Novembre', 'Décembre'],\n monthsShort: ['Jan', 'Fév', 'Mars', 'Avr', 'Mai', 'Juin', 'Juil', 'Août', 'Sep', 'Oct', 'Nov', 'Dec'],\n today: \"Aujourd'hui\",\n clear: 'Effacer',\n dateFormat: 'dd/MM/yyyy',\n timeFormat: 'HH:mm',\n firstDay: 1\n};\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _default = {\n days: ['Nedjelja', 'Ponedjeljak', 'Utorak', 'Srijeda', 'Četvrtak', 'Petak', 'Subota'],\n daysShort: ['Ned', 'Pon', 'Uto', 'Sri', 'Čet', 'Pet', 'Sub'],\n daysMin: ['Ne', 'Po', 'Ut', 'Sr', 'Če', 'Pe', 'Su'],\n months: ['Siječanj', 'Veljača', 'Ožujak', 'Travanj', 'Svibanj', 'Lipanj', 'Srpanj', 'Kolovoz', 'Rujan', 'Listopad', 'Studeni', 'Prosinac'],\n monthsShort: ['Sij', 'Velj', 'Ožu', 'Tra', 'Svi', 'Lip', 'Srp', 'Kol', 'Ruj', 'Lis', 'Stu', 'Pro'],\n today: 'Danas',\n clear: 'Očisti',\n dateFormat: 'dd.MM.yyyy',\n timeFormat: 'HH:mm',\n firstDay: 1\n};\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _default = {\n days: ['Vasárnap', 'Hétfő', 'Kedd', 'Szerda', 'Csütörtök', 'Péntek', 'Szombat'],\n daysShort: ['Va', 'Hé', 'Ke', 'Sze', 'Cs', 'Pé', 'Szo'],\n daysMin: ['V', 'H', 'K', 'Sz', 'Cs', 'P', 'Sz'],\n months: ['Január', 'Február', 'Március', 'Április', 'Május', 'Június', 'Július', 'Augusztus', 'Szeptember', 'Október', 'November', 'December'],\n monthsShort: ['Jan', 'Feb', 'Már', 'Ápr', 'Máj', 'Jún', 'Júl', 'Aug', 'Szep', 'Okt', 'Nov', 'Dec'],\n today: 'Ma',\n clear: 'Törlés',\n dateFormat: 'yyyy-MM-dd',\n timeFormat: 'hh:mm aa',\n firstDay: 1\n};\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _default = {\n days: ['Minggu', 'Senin', 'Selasa', 'Rabu', 'Kamis', 'Jumat', 'Sabtu'],\n daysShort: ['Min', 'Sen', 'Sel', 'Rab', 'Kam', 'Jum', 'Sab'],\n daysMin: ['Min', 'Sen', 'Sel', 'Rab', 'Kam', 'Jum', 'Sab'],\n months: ['Januari', 'Februari', 'Maret', 'April', 'Mei', 'Juni', 'Juli', 'Agustus', 'September', 'Oktober', 'November', 'Desember'],\n monthsShort: ['Jan', 'Feb', 'Mar', 'Apr', 'Mei', 'Jun', 'Jul', 'Agt', 'Sep', 'Okt', 'Nov', 'Des'],\n today: 'Hari ini',\n clear: 'Hapus',\n dateFormat: 'dd/MM/yyyy',\n timeFormat: 'hh:mm aa',\n firstDay: 1\n};\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _default = {\n days: ['Domenica', 'Lunedì', 'Martedì', 'Mercoledì', 'Giovedì', 'Venerdì', 'Sabato'],\n daysShort: ['Dom', 'Lun', 'Mar', 'Mer', 'Gio', 'Ven', 'Sab'],\n daysMin: ['Do', 'Lu', 'Ma', 'Me', 'Gi', 'Ve', 'Sa'],\n months: ['Gennaio', 'Febbraio', 'Marzo', 'Aprile', 'Maggio', 'Giugno', 'Luglio', 'Agosto', 'Settembre', 'Ottobre', 'Novembre', 'Dicembre'],\n monthsShort: ['Gen', 'Feb', 'Mar', 'Apr', 'Mag', 'Giu', 'Lug', 'Ago', 'Set', 'Ott', 'Nov', 'Dic'],\n today: 'Oggi',\n clear: 'Cancella',\n dateFormat: 'dd/MM/yyyy',\n timeFormat: 'HH:mm',\n firstDay: 1\n};\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _default = {\n days: ['日曜日', '月曜日', '火曜日', '水曜日', '木曜日', '金曜日', '土曜日'],\n daysShort: ['日', '月', '火', '水', '木', '金', '土'],\n daysMin: ['日', '月', '火', '水', '木', '金', '土'],\n months: ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月'],\n monthsShort: ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月'],\n today: '今日',\n clear: 'クリア',\n dateFormat: 'yyyy/MM/dd',\n timeFormat: 'HH:mm',\n firstDay: 0\n};\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _default = {\n days: ['일요일', '월요일', '화요일', '수요일', '목요일', '금요일', '토요일'],\n daysShort: ['일', '월', '화', '수', '목', '금', '토'],\n daysMin: ['일', '월', '화', '수', '목', '금', '토'],\n months: ['1월', '2월', '3월', '4월', '5월', '6월', '7월', '8월', '9월', '10월', '11월', '12월'],\n monthsShort: ['1월', '2월', '3월', '4월', '5월', '6월', '7월', '8월', '9월', '10월', '11월', '12월'],\n today: '오늘',\n clear: '초기화',\n dateFormat: 'MM/dd/yyyy',\n timeFormat: 'hh:mm aa',\n firstDay: 0\n};\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _default = {\n days: [\"Søndag\", \"Mandag\", \"Tirsdag\", \"Onsdag\", \"Torsdag\", \"Fredag\", \"Lørdag\"],\n daysShort: [\"Søn\", \"Man\", \"Tir\", \"Ons\", \"Tor\", \"Fre\", \"Lør\"],\n daysMin: [\"Sø\", \"Ma\", \"Ti\", \"On\", \"To\", \"Fr\", \"Lø\"],\n months: [\"Januar\", \"Februar\", \"Mars\", \"April\", \"Mai\", \"Juni\", \"Juli\", \"August\", \"September\", \"Oktober\", \"November\", \"Desember\"],\n monthsShort: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"Mai\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Okt\", \"Nov\", \"Des\"],\n today: \"Idag\",\n clear: \"Fjern\",\n dateFormat: \"dd.mm.yyyy\",\n timeFormat: \"HH:mm\",\n firstDay: 1\n};\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _default = {\n days: ['zondag', 'maandag', 'dinsdag', 'woensdag', 'donderdag', 'vrijdag', 'zaterdag'],\n daysShort: ['zo', 'ma', 'di', 'wo', 'do', 'vr', 'za'],\n daysMin: ['zo', 'ma', 'di', 'wo', 'do', 'vr', 'za'],\n months: ['Januari', 'Februari', 'Maart', 'April', 'Mei', 'Juni', 'Juli', 'Augustus', 'September', 'Oktober', 'November', 'December'],\n monthsShort: ['Jan', 'Feb', 'Mrt', 'Apr', 'Mei', 'Jun', 'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Dec'],\n today: 'Vandaag',\n clear: 'Legen',\n dateFormat: 'dd-MM-yyyy',\n timeFormat: 'HH:mm',\n firstDay: 0\n};\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _default = {\n days: ['วันอาทิตย์', 'วันจันทร์', 'วันอังคาร', 'วันพุธ', 'วันพฤหัสบดี', 'วันศุกร์', 'วันเสาร์'],\n daysShort: ['อา.', 'จ.', 'อ.', 'พ.', 'พฤ.', 'ศ.', 'ส.'],\n daysMin: ['อา.', 'จ.', 'อ.', 'พ.', 'พฤ.', 'ศ.', 'ส.'],\n months: ['มกราคม', 'กุมภาพันธ์', 'มีนาคม', 'เมษายน', 'พฤษภาคม', 'มิถุนายน', 'กรกฎาคม', 'สิงหาคม', 'กันยายน', 'ตุลาคม', 'พฤศจิกายน', 'ธันวาคม'],\n monthsShort: ['ม.ค.', 'ก.พ.', 'มี.ค.', 'เม.ย.', 'พ.ค.', 'มิ.ย.', 'ก.ค.', 'ส.ค.', 'ก.ย.', 'ต.ค.', 'พ.ย.', 'ธ.ค.'],\n today: 'วันนี้',\n clear: 'ล้าง',\n dateFormat: 'dd/MM/yyyy',\n timeFormat: 'HH:mm',\n firstDay: 0\n};\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _default = {\n days: ['Niedziela', 'Poniedziałek', 'Wtorek', 'Środa', 'Czwartek', 'Piątek', 'Sobota'],\n daysShort: ['Nie', 'Pon', 'Wto', 'Śro', 'Czw', 'Pią', 'Sob'],\n daysMin: ['Nd', 'Pn', 'Wt', 'Śr', 'Czw', 'Pt', 'So'],\n months: ['Styczeń', 'Luty', 'Marzec', 'Kwiecień', 'Maj', 'Czerwiec', 'Lipiec', 'Sierpień', 'Wrzesień', 'Październik', 'Listopad', 'Grudzień'],\n monthsShort: ['Sty', 'Lut', 'Mar', 'Kwi', 'Maj', 'Cze', 'Lip', 'Sie', 'Wrz', 'Paź', 'Lis', 'Gru'],\n today: 'Dzisiaj',\n clear: 'Wyczyść',\n dateFormat: 'yyyy-MM-dd',\n timeFormat: 'hh:mm:aa',\n firstDay: 1\n};\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _default = {\n days: ['Domingo', 'Segunda', 'Terça', 'Quarta', 'Quinta', 'Sexta', 'Sábado'],\n daysShort: ['Dom', 'Seg', 'Ter', 'Qua', 'Qui', 'Sex', 'Sab'],\n daysMin: ['Do', 'Se', 'Te', 'Qu', 'Qu', 'Se', 'Sa'],\n months: ['Janeiro', 'Fevereiro', 'Março', 'Abril', 'Maio', 'Junho', 'Julho', 'Agosto', 'Setembro', 'Outubro', 'Novembro', 'Dezembro'],\n monthsShort: ['Jan', 'Fev', 'Mar', 'Abr', 'Mai', 'Jun', 'Jul', 'Ago', 'Set', 'Out', 'Nov', 'Dez'],\n today: 'Hoje',\n clear: 'Limpar',\n dateFormat: 'dd/MM/yyyy',\n timeFormat: 'HH:mm',\n firstDay: 0\n};\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _default = {\n days: ['Domingo', 'Segunda', 'Terça', 'Quarta', 'Quinta', 'Sexta', 'Sábado'],\n daysShort: ['Dom', 'Seg', 'Ter', 'Qua', 'Qui', 'Sex', 'Sab'],\n daysMin: ['Do', 'Se', 'Te', 'Qa', 'Qi', 'Sx', 'Sa'],\n months: ['Janeiro', 'Fevereiro', 'Março', 'Abril', 'Maio', 'Junho', 'Julho', 'Agosto', 'Setembro', 'Outubro', 'Novembro', 'Dezembro'],\n monthsShort: ['Jan', 'Fev', 'Mar', 'Abr', 'Mai', 'Jun', 'Jul', 'Ago', 'Set', 'Out', 'Nov', 'Dez'],\n today: 'Hoje',\n clear: 'Limpar',\n dateFormat: 'dd/MM/yyyy',\n timeFormat: 'HH:mm',\n firstDay: 1\n};\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _default = {\n days: ['Duminică', 'Luni', 'Marţi', 'Miercuri', 'Joi', 'Vineri', 'Sâmbătă'],\n daysShort: ['Dum', 'Lun', 'Mar', 'Mie', 'Joi', 'Vin', 'Sâm'],\n daysMin: ['D', 'L', 'Ma', 'Mi', 'J', 'V', 'S'],\n months: ['Ianuarie', 'Februarie', 'Martie', 'Aprilie', 'Mai', 'Iunie', 'Iulie', 'August', 'Septembrie', 'Octombrie', 'Noiembrie', 'Decembrie'],\n monthsShort: ['Ian', 'Feb', 'Mar', 'Apr', 'Mai', 'Iun', 'Iul', 'Aug', 'Sept', 'Oct', 'Nov', 'Dec'],\n today: 'Azi',\n clear: 'Şterge',\n dateFormat: 'dd.MM.yyyy',\n timeFormat: 'HH:mm',\n firstDay: 1\n};\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _default = {\n days: ['Воскресенье', 'Понедельник', 'Вторник', 'Среда', 'Четверг', 'Пятница', 'Суббота'],\n daysShort: ['Вос', 'Пон', 'Вто', 'Сре', 'Чет', 'Пят', 'Суб'],\n daysMin: ['Вс', 'Пн', 'Вт', 'Ср', 'Чт', 'Пт', 'Сб'],\n months: ['Январь', 'Февраль', 'Март', 'Апрель', 'Май', 'Июнь', 'Июль', 'Август', 'Сентябрь', 'Октябрь', 'Ноябрь', 'Декабрь'],\n monthsShort: ['Янв', 'Фев', 'Мар', 'Апр', 'Май', 'Июн', 'Июл', 'Авг', 'Сен', 'Окт', 'Ноя', 'Дек'],\n today: 'Сегодня',\n clear: 'Очистить',\n dateFormat: 'dd.MM.yyyy',\n timeFormat: 'HH:mm',\n firstDay: 1\n};\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _default = {\n days: ['ඉරිදා', 'සදුදා', 'අඟහරැවදා', 'බදාදා', 'බ්‍රහස්‍පතින්‍', 'සිකුරාදා', 'සෙනසුරාදා'],\n daysShort: ['ඉරිදා', 'සදුදා', 'අඟහ', 'බදාදා', 'බ්‍රහස්‍', 'සිකුරා', 'සෙන'],\n daysMin: ['ඉරි', 'සදු', 'අඟ', 'බදා', 'බ්‍රහ', 'සිකු', 'සෙ'],\n months: ['ජනවාරි', 'පෙබරවාරි', 'මාර්තු', 'අප්‍රේල්', 'මැයි', 'ජූනි', 'ජූලි', 'අගෝස්තු', 'සැප්තැම්බර්', 'ඔක්තෝබර්', 'නොවැම්බර්', 'දෙසැම්බර්'],\n monthsShort: ['ජන', 'පෙබ', 'මාර්', 'අප්‍රේල්', 'මැයි', 'ජූනි', 'ජූලි', 'අගෝ', 'සැප්', 'ඔක්', 'නොවැ', 'දෙසැ'],\n today: 'අද',\n clear: 'යලි සකසන්න',\n dateFormat: 'yyyy-mm-dd',\n timeFormat: 'hh:ii aa',\n firstDay: 1\n};\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _default = {\n days: ['Nedeľa', 'Pondelok', 'Utorok', 'Streda', 'Štvrtok', 'Piatok', 'Sobota'],\n daysShort: ['Ned', 'Pon', 'Uto', 'Str', 'Štv', 'Pia', 'Sob'],\n daysMin: ['Ne', 'Po', 'Ut', 'St', 'Št', 'Pi', 'So'],\n months: ['Január', 'Február', 'Marec', 'Apríl', 'Máj', 'Jún', 'Júl', 'August', 'September', 'Október', 'November', 'December'],\n monthsShort: ['Jan', 'Feb', 'Mar', 'Apr', 'Máj', 'Jún', 'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Dec'],\n today: 'Dnes',\n clear: 'Vymazať',\n dateFormat: 'dd.MM.yyyy',\n timeFormat: 'HH:mm',\n firstDay: 1\n};\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _default = {\n days: ['Nedelja', 'Ponedeljek', 'Torek', 'Sreda', 'Četrtek', 'Petek', 'Sobota'],\n daysShort: ['Ned', 'Pon', 'Tor', 'Sre', 'Čet', 'Pet', 'Sob'],\n daysMin: ['Ned', 'Pon', 'Tor', 'Sre', 'Čet', 'Pet', 'Sob'],\n months: ['Januar', 'Februar', 'Marec', 'April', 'Maj', 'Junij', 'Julij', 'Avgust', 'September', 'Oktober', 'November', 'December'],\n monthsShort: ['Jan', 'Feb', 'Mar', 'Apr', 'Maj', 'Jun', 'Jul', 'Avg', 'Sep', 'Okt', 'Nov', 'Dec'],\n today: 'Danes',\n clear: 'Počisti',\n dateFormat: 'dd.mm.yyyy',\n timeFormat: 'hh:ii aa',\n firstDay: 1\n};\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _default = {\n days: ['Söndag', 'Måndag', 'Tisdag', 'Onsdag', 'Torsdag', 'Fredag', 'Lördag'],\n daysShort: ['Sön', 'Mån', 'Tis', 'Ons', 'Tor', 'Fre', 'Lör'],\n daysMin: ['Sö', 'Må', 'Ti', 'On', 'To', 'Fr', 'Lö'],\n months: ['Januari', 'Februari', 'Mars', 'April', 'Maj', 'Juni', 'Juli', 'Augusti', 'September', 'Oktober', 'November', 'December'],\n monthsShort: ['Jan', 'Feb', 'Mar', 'Apr', 'Maj', 'Jun', 'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Dec'],\n today: 'I dag',\n clear: 'Nollställ',\n dateFormat: 'yyyy-MM-dd',\n timeFormat: 'HH:mm',\n firstDay: 1\n};\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _default = {\n days: ['Pazar', 'Pazartesi', 'Salı', 'Çarşamba', 'Perşembe', 'Cuma', 'Cumartesi'],\n daysShort: ['Pzr', 'Pts', 'Sl', 'Çar', 'Per', 'Cum', 'Cts'],\n daysMin: ['Pa', 'Pt', 'Sl', 'Ça', 'Pe', 'Cu', 'Ct'],\n months: ['Ocak', 'Şubat', 'Mart', 'Nisan', 'Mayıs', 'Haziran', 'Temmuz', 'Ağustos', 'Eylül', 'Ekim', 'Kasım', 'Aralık'],\n monthsShort: ['Oca', 'Şbt', 'Mrt', 'Nsn', 'Mys', 'Hzr', 'Tmz', 'Ağt', 'Eyl', 'Ekm', 'Ksm', 'Arl'],\n today: 'Bugün',\n clear: 'Temizle',\n dateFormat: 'dd.MM.yyyy',\n timeFormat: 'hh:mm aa',\n firstDay: 1\n};\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _default = {\n days: ['Неділя', 'Понеділок', 'Вівторок', 'Середа', 'Четвер', 'П’ятниця', 'Субота'],\n daysShort: ['Нед', 'Пнд', 'Вів', 'Срд', 'Чтв', 'Птн', 'Сбт'],\n daysMin: ['Нд', 'Пн', 'Вт', 'Ср', 'Чт', 'Пт', 'Сб'],\n months: ['Січень', 'Лютий', 'Березень', 'Квітень', 'Травень', 'Червень', 'Липень', 'Серпень', 'Вересень', 'Жовтень', 'Листопад', 'Грудень'],\n monthsShort: ['Січ', 'Лют', 'Бер', 'Кві', 'Тра', 'Чер', 'Лип', 'Сер', 'Вер', 'Жов', 'Лис', 'Гру'],\n today: 'Сьогодні',\n clear: 'Очистити',\n dateFormat: 'dd.MM.yyyy',\n timeFormat: 'HH:mm',\n firstDay: 1\n};\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _default = {\n days: ['周日', '周一', '周二', '周三', '周四', '周五', '周六'],\n daysShort: ['日', '一', '二', '三', '四', '五', '六'],\n daysMin: ['日', '一', '二', '三', '四', '五', '六'],\n months: ['一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月'],\n monthsShort: ['一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月'],\n today: '今天',\n clear: '清除',\n dateFormat: 'yyyy-MM-dd',\n timeFormat: 'HH:mm',\n firstDay: 1\n};\nexports.default = _default;","import type * as CSS from 'csstype';\n\nimport AirDatepicker from 'air-datepicker';\nimport type { AirDatepickerLocale, AirDatepickerButton, AirDatepickerDate } from 'air-datepicker';\nimport localeAr from 'air-datepicker/locale/ar';\nimport localeBg from 'air-datepicker/locale/bg';\nimport localeCa from 'air-datepicker/locale/ca';\nimport localeCs from 'air-datepicker/locale/cs';\nimport localeDa from 'air-datepicker/locale/da';\nimport localeDe from 'air-datepicker/locale/de';\nimport localeEl from 'air-datepicker/locale/el';\nimport localeEn from 'air-datepicker/locale/en';\nimport localeEs from 'air-datepicker/locale/es';\nimport localeEu from 'air-datepicker/locale/eu';\nimport localeFi from 'air-datepicker/locale/fi';\nimport localeFr from 'air-datepicker/locale/fr';\nimport localeHr from 'air-datepicker/locale/hr';\nimport localeHu from 'air-datepicker/locale/hu';\nimport localeId from 'air-datepicker/locale/id';\nimport localeIt from 'air-datepicker/locale/it';\nimport localeJa from 'air-datepicker/locale/ja';\nimport localeKo from 'air-datepicker/locale/ko';\nimport localeNb from 'air-datepicker/locale/nb';\nimport localeNl from 'air-datepicker/locale/nl';\nimport localeTh from 'air-datepicker/locale/th';\nimport localePl from 'air-datepicker/locale/pl';\nimport localePtBR from 'air-datepicker/locale/pt-BR';\nimport localePt from 'air-datepicker/locale/pt';\nimport localeRo from 'air-datepicker/locale/ro';\nimport localeRu from 'air-datepicker/locale/ru';\nimport localeSi from 'air-datepicker/locale/si';\nimport localeSk from 'air-datepicker/locale/sk';\nimport localeSl from 'air-datepicker/locale/sl';\nimport localeSv from 'air-datepicker/locale/sv';\nimport localeTr from 'air-datepicker/locale/tr';\nimport localeUk from 'air-datepicker/locale/uk';\nimport localeZh from 'air-datepicker/locale/zh';\n\nimport * as dateFns from 'date-fns/locale';\nimport { format } from 'date-fns';\n\nimport { Plugin, getFallbackFontName, DEFAULT_FONT_NAME, PropPanelSchema } from '@pdfme/common';\nimport text from '../text/index.js';\nimport { DEFAULT_OPACITY, HEX_COLOR_PATTERN } from '../constants.js';\nimport { mapVerticalAlignToFlex } from '../text/uiRender.js';\nimport {\n DEFAULT_FONT_SIZE,\n DEFAULT_ALIGNMENT,\n VERTICAL_ALIGN_MIDDLE,\n DEFAULT_LINE_HEIGHT,\n DEFAULT_CHARACTER_SPACING,\n DEFAULT_FONT_COLOR,\n} from '../text/constants.js';\nimport { DateSchema } from './types.js';\nimport { getExtraFormatterSchema, Formatter } from '../text/extraFormatter.js';\nimport { isEditable } from '../utils.js';\n\ninterface AirDatepickerInstance {\n selectedDates: Date[];\n hide: () => void;\n destroy: () => void;\n show: () => void;\n}\n\ntype PickerType = 'date' | 'time' | 'dateTime';\n\ninterface Locale {\n label: string;\n adLocale: AirDatepickerLocale;\n formatLocale: dateFns.Locale;\n}\n\nconst normalizeAdLocale = (\n locale: AirDatepickerLocale | { default: AirDatepickerLocale },\n): AirDatepickerLocale => {\n // Air Datepicker locales can arrive as either the locale object itself or as an\n // ESM default export shim when bundlers interop with the package's CJS build.\n return 'default' in locale ? locale.default : locale;\n};\n\nconst LOCALE_MAP: Record<string, Locale> = {\n ar: { label: 'Arabic', adLocale: normalizeAdLocale(localeAr), formatLocale: dateFns.ar },\n bg: { label: 'Bulgarian', adLocale: normalizeAdLocale(localeBg), formatLocale: dateFns.bg },\n ca: { label: 'Catalan', adLocale: normalizeAdLocale(localeCa), formatLocale: dateFns.ca },\n cs: { label: 'Czech', adLocale: normalizeAdLocale(localeCs), formatLocale: dateFns.cs },\n da: { label: 'Danish', adLocale: normalizeAdLocale(localeDa), formatLocale: dateFns.da },\n de: { label: 'German', adLocale: normalizeAdLocale(localeDe), formatLocale: dateFns.de },\n el: { label: 'Greek', adLocale: normalizeAdLocale(localeEl), formatLocale: dateFns.el },\n en: { label: 'English', adLocale: normalizeAdLocale(localeEn), formatLocale: dateFns.enUS },\n es: { label: 'Spanish', adLocale: normalizeAdLocale(localeEs), formatLocale: dateFns.es },\n eu: { label: 'Basque', adLocale: normalizeAdLocale(localeEu), formatLocale: dateFns.eu },\n fi: { label: 'Finnish', adLocale: normalizeAdLocale(localeFi), formatLocale: dateFns.fi },\n fr: { label: 'French', adLocale: normalizeAdLocale(localeFr), formatLocale: dateFns.fr },\n hr: { label: 'Croatian', adLocale: normalizeAdLocale(localeHr), formatLocale: dateFns.hr },\n hu: { label: 'Hungarian', adLocale: normalizeAdLocale(localeHu), formatLocale: dateFns.hu },\n id: { label: 'Indonesian', adLocale: normalizeAdLocale(localeId), formatLocale: dateFns.id },\n it: { label: 'Italian', adLocale: normalizeAdLocale(localeIt), formatLocale: dateFns.it },\n ja: { label: 'Japanese', adLocale: normalizeAdLocale(localeJa), formatLocale: dateFns.ja },\n ko: { label: 'Korean', adLocale: normalizeAdLocale(localeKo), formatLocale: dateFns.ko },\n nb: { label: 'Norwegian Bokmål', adLocale: normalizeAdLocale(localeNb), formatLocale: dateFns.nb },\n nl: { label: 'Dutch', adLocale: normalizeAdLocale(localeNl), formatLocale: dateFns.nl },\n pl: { label: 'Polish', adLocale: normalizeAdLocale(localePl), formatLocale: dateFns.pl },\n 'pt-Br': {\n label: 'Portuguese',\n adLocale: normalizeAdLocale(localePtBR),\n formatLocale: dateFns.ptBR,\n },\n pt: { label: 'Portuguese', adLocale: normalizeAdLocale(localePt), formatLocale: dateFns.pt },\n ro: { label: 'Romanian', adLocale: normalizeAdLocale(localeRo), formatLocale: dateFns.ro },\n ru: { label: 'Russian', adLocale: normalizeAdLocale(localeRu), formatLocale: dateFns.ru },\n si: { label: 'Sinhala', adLocale: normalizeAdLocale(localeSi), formatLocale: dateFns.enUS },\n sk: { label: 'Slovak', adLocale: normalizeAdLocale(localeSk), formatLocale: dateFns.sk },\n sl: { label: 'Slovenian', adLocale: normalizeAdLocale(localeSl), formatLocale: dateFns.sl },\n sv: { label: 'Swedish', adLocale: normalizeAdLocale(localeSv), formatLocale: dateFns.sv },\n th: { label: 'Thai', adLocale: normalizeAdLocale(localeTh), formatLocale: dateFns.th },\n tr: { label: 'Turkish', adLocale: normalizeAdLocale(localeTr), formatLocale: dateFns.tr },\n uk: { label: 'Ukrainian', adLocale: normalizeAdLocale(localeUk), formatLocale: dateFns.uk },\n zh: { label: 'Chinese', adLocale: normalizeAdLocale(localeZh), formatLocale: dateFns.zhCN },\n};\n\nexport const getAirDatepickerLocale = (locale: string) => {\n const data = LOCALE_MAP[locale];\n if (!data) {\n throw new Error(`Unsupported locale: ${locale}`);\n }\n return data;\n};\n\nconst airDatepickerCss = `.air-datepicker-cell.-year-.-other-decade-,.air-datepicker-cell.-day-.-other-month-{color:var(--adp-color-other-month)}.air-datepicker-cell.-year-.-other-decade-:hover,.air-datepicker-cell.-day-.-other-month-:hover{color:var(--adp-color-other-month-hover)}.-disabled-.-focus-.air-datepicker-cell.-year-.-other-decade-,.-disabled-.-focus-.air-datepicker-cell.-day-.-other-month-{color:var(--adp-color-other-month)}.-selected-.air-datepicker-cell.-year-.-other-decade-,.-selected-.air-datepicker-cell.-day-.-other-month-{color:#fff;background:var(--adp-background-color-selected-other-month)}.-selected-.-focus-.air-datepicker-cell.-year-.-other-decade-,.-selected-.-focus-.air-datepicker-cell.-day-.-other-month-{background:var(--adp-background-color-selected-other-month-focused)}.-in-range-.air-datepicker-cell.-year-.-other-decade-,.-in-range-.air-datepicker-cell.-day-.-other-month-{background-color:var(--adp-background-color-in-range);color:var(--adp-color)}.-in-range-.-focus-.air-datepicker-cell.-year-.-other-decade-,.-in-range-.-focus-.air-datepicker-cell.-day-.-other-month-{background-color:var(--adp-background-color-in-range-focused)}.air-datepicker-cell.-year-.-other-decade-:empty,.air-datepicker-cell.-day-.-other-month-:empty{background:none;border:none}.air-datepicker-cell{border-radius:var(--adp-cell-border-radius);box-sizing:border-box;cursor:pointer;display:flex;position:relative;align-items:center;justify-content:center;z-index:1}.air-datepicker-cell.-focus-{background:var(--adp-cell-background-color-hover)}.air-datepicker-cell.-current-{color:var(--adp-color-current-date)}.air-datepicker-cell.-current-.-focus-{color:var(--adp-color)}.air-datepicker-cell.-current-.-in-range-{color:var(--adp-color-current-date)}.air-datepicker-cell.-disabled-{cursor:default;color:var(--adp-color-disabled)}.air-datepicker-cell.-disabled-.-focus-{color:var(--adp-color-disabled)}.air-datepicker-cell.-disabled-.-in-range-{color:var(--adp-color-disabled-in-range)}.air-datepicker-cell.-disabled-.-current-.-focus-{color:var(--adp-color-disabled)}.air-datepicker-cell.-in-range-{background:var(--adp-cell-background-color-in-range);border-radius:0}.air-datepicker-cell.-in-range-:hover,.air-datepicker-cell.-in-range-.-focus-{background:var(--adp-cell-background-color-in-range-hover)}.air-datepicker-cell.-range-from-{border:1px solid var(--adp-cell-border-color-in-range);background-color:var(--adp-cell-background-color-in-range);border-radius:var(--adp-cell-border-radius) 0 0 var(--adp-cell-border-radius)}.air-datepicker-cell.-range-to-{border:1px solid var(--adp-cell-border-color-in-range);background-color:var(--adp-cell-background-color-in-range);border-radius:0 var(--adp-cell-border-radius) var(--adp-cell-border-radius) 0}.air-datepicker-cell.-range-to-.-range-from-{border-radius:var(--adp-cell-border-radius)}.air-datepicker-cell.-selected-{color:#fff;border:none;background:var(--adp-cell-background-color-selected)}.air-datepicker-cell.-selected-.-current-{color:#fff;background:var(--adp-cell-background-color-selected)}.air-datepicker-cell.-selected-.-focus-{background:var(--adp-cell-background-color-selected-hover)}\n.air-datepicker-body{transition:all var(--adp-transition-duration) var(--adp-transition-ease)}.air-datepicker-body.-hidden-{display:none}.air-datepicker-body--day-names{display:grid;grid-template-columns:repeat(7, var(--adp-day-cell-width));margin:8px 0 3px}.air-datepicker-body--day-name{color:var(--adp-day-name-color);display:flex;align-items:center;justify-content:center;flex:1;text-align:center;text-transform:uppercase;font-size:.8em}.air-datepicker-body--day-name.-clickable-{cursor:pointer}.air-datepicker-body--day-name.-clickable-:hover{color:var(--adp-day-name-color-hover)}.air-datepicker-body--cells{display:grid}.air-datepicker-body--cells.-days-{grid-template-columns:repeat(7, var(--adp-day-cell-width));grid-auto-rows:var(--adp-day-cell-height)}.air-datepicker-body--cells.-months-{grid-template-columns:repeat(3, 1fr);grid-auto-rows:var(--adp-month-cell-height)}.air-datepicker-body--cells.-years-{grid-template-columns:repeat(4, 1fr);grid-auto-rows:var(--adp-year-cell-height)}\n.air-datepicker-nav{display:flex;justify-content:space-between;border-bottom:1px solid var(--adp-border-color-inner);min-height:var(--adp-nav-height);padding:var(--adp-padding);box-sizing:content-box}.-only-timepicker- .air-datepicker-nav{display:none}.air-datepicker-nav--title,.air-datepicker-nav--action{display:flex;cursor:pointer;align-items:center;justify-content:center}.air-datepicker-nav--action{width:var(--adp-nav-action-size);border-radius:var(--adp-border-radius);-webkit-user-select:none;-moz-user-select:none;user-select:none}.air-datepicker-nav--action:hover{background:var(--adp-background-color-hover)}.air-datepicker-nav--action:active{background:var(--adp-background-color-active)}.air-datepicker-nav--action.-disabled-{visibility:hidden}.air-datepicker-nav--action svg{width:32px;height:32px}.air-datepicker-nav--action path{fill:none;stroke:var(--adp-nav-arrow-color);stroke-width:2px}.air-datepicker-nav--title{border-radius:var(--adp-border-radius);padding:0 8px}.air-datepicker-nav--title i{font-style:normal;color:var(--adp-nav-color-secondary);margin-left:.3em}.air-datepicker-nav--title:hover{background:var(--adp-background-color-hover)}.air-datepicker-nav--title:active{background:var(--adp-background-color-active)}.air-datepicker-nav--title.-disabled-{cursor:default;background:none}\n.air-datepicker-buttons{display:grid;grid-auto-columns:1fr;grid-auto-flow:column}.air-datepicker-button{display:inline-flex;color:var(--adp-btn-color);border-radius:var(--adp-btn-border-radius);cursor:pointer;height:var(--adp-btn-height);border:none;background:rgba(255,255,255,0)}.air-datepicker-button:hover{color:var(--adp-btn-color-hover);background:var(--adp-btn-background-color-hover)}.air-datepicker-button:focus{color:var(--adp-btn-color-hover);background:var(--adp-btn-background-color-hover);outline:none}.air-datepicker-button:active{background:var(--adp-btn-background-color-active)}.air-datepicker-button span{outline:none;display:flex;align-items:center;justify-content:center;width:100%;height:100%}\n.air-datepicker-time{display:grid;grid-template-columns:max-content 1fr;grid-column-gap:12px;align-items:center;position:relative;padding:0 var(--adp-time-padding-inner)}.-only-timepicker- .air-datepicker-time{border-top:none}.air-datepicker-time--current{display:flex;align-items:center;flex:1;font-size:14px;text-align:center}.air-datepicker-time--current-colon{margin:0 2px 3px;line-height:1}.air-datepicker-time--current-hours,.air-datepicker-time--current-minutes{line-height:1;font-size:19px;font-family:\"Century Gothic\",CenturyGothic,AppleGothic,sans-serif;position:relative;z-index:1}.air-datepicker-time--current-hours:after,.air-datepicker-time--current-minutes:after{content:\"\";background:var(--adp-background-color-hover);border-radius:var(--adp-border-radius);position:absolute;left:-2px;top:-3px;right:-2px;bottom:-2px;z-index:-1;opacity:0}.air-datepicker-time--current-hours.-focus-:after,.air-datepicker-time--current-minutes.-focus-:after{opacity:1}.air-datepicker-time--current-ampm{text-transform:uppercase;align-self:flex-end;color:var(--adp-time-day-period-color);margin-left:6px;font-size:11px;margin-bottom:1px}.air-datepicker-time--row{display:flex;align-items:center;font-size:11px;height:17px;background:linear-gradient(to right, var(--adp-time-track-color), var(--adp-time-track-color)) left 50%/100% var(--adp-time-track-height) no-repeat}.air-datepicker-time--row:first-child{margin-bottom:4px}.air-datepicker-time--row input[type=range]{background:none;cursor:pointer;flex:1;height:100%;width:100%;padding:0;margin:0;-webkit-appearance:none}.air-datepicker-time--row input[type=range]::-webkit-slider-thumb{-webkit-appearance:none}.air-datepicker-time--row input[type=range]::-ms-tooltip{display:none}.air-datepicker-time--row input[type=range]:hover::-webkit-slider-thumb{border-color:var(--adp-time-track-color-hover)}.air-datepicker-time--row input[type=range]:hover::-moz-range-thumb{border-color:var(--adp-time-track-color-hover)}.air-datepicker-time--row input[type=range]:hover::-ms-thumb{border-color:var(--adp-time-track-color-hover)}.air-datepicker-time--row input[type=range]:focus{outline:none}.air-datepicker-time--row input[type=range]:focus::-webkit-slider-thumb{background:var(--adp-cell-background-color-selected);border-color:var(--adp-cell-background-color-selected)}.air-datepicker-time--row input[type=range]:focus::-moz-range-thumb{background:var(--adp-cell-background-color-selected);border-color:var(--adp-cell-background-color-selected)}.air-datepicker-time--row input[type=range]:focus::-ms-thumb{background:var(--adp-cell-background-color-selected);border-color:var(--adp-cell-background-color-selected)}.air-datepicker-time--row input[type=range]::-webkit-slider-thumb{box-sizing:border-box;height:12px;width:12px;border-radius:3px;border:1px solid var(--adp-time-track-color);background:#fff;cursor:pointer;-webkit-transition:background var(--adp-transition-duration);transition:background var(--adp-transition-duration)}.air-datepicker-time--row input[type=range]::-moz-range-thumb{box-sizing:border-box;height:12px;width:12px;border-radius:3px;border:1px solid var(--adp-time-track-color);background:#fff;cursor:pointer;-moz-transition:background var(--adp-transition-duration);transition:background var(--adp-transition-duration)}.air-datepicker-time--row input[type=range]::-ms-thumb{box-sizing:border-box;height:12px;width:12px;border-radius:3px;border:1px solid var(--adp-time-track-color);background:#fff;cursor:pointer;-ms-transition:background var(--adp-transition-duration);transition:background var(--adp-transition-duration)}.air-datepicker-time--row input[type=range]::-webkit-slider-thumb{margin-top:calc(var(--adp-time-thumb-size)/2*-1)}.air-datepicker-time--row input[type=range]::-webkit-slider-runnable-track{border:none;height:var(--adp-time-track-height);cursor:pointer;color:rgba(0,0,0,0);background:rgba(0,0,0,0)}.air-datepicker-time--row input[type=range]::-moz-range-track{border:none;height:var(--adp-time-track-height);cursor:pointer;color:rgba(0,0,0,0);background:rgba(0,0,0,0)}.air-datepicker-time--row input[type=range]::-ms-track{border:none;height:var(--adp-time-track-height);cursor:pointer;color:rgba(0,0,0,0);background:rgba(0,0,0,0)}.air-datepicker-time--row input[type=range]::-ms-fill-lower{background:rgba(0,0,0,0)}.air-datepicker-time--row input[type=range]::-ms-fill-upper{background:rgba(0,0,0,0)}\n.air-datepicker{--adp-font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";--adp-font-size: 14px;--adp-width: 246px;--adp-z-index: 100;--adp-padding: 4px;--adp-grid-areas: \"nav\" \"body\" \"timepicker\" \"buttons\";--adp-transition-duration: .3s;--adp-transition-ease: ease-out;--adp-transition-offset: 8px;--adp-background-color: #fff;--adp-background-color-hover: #f0f0f0;--adp-background-color-active: #eaeaea;--adp-background-color-in-range: rgba(92, 196, 239, .1);--adp-background-color-in-range-focused: rgba(92, 196, 239, .2);--adp-background-color-selected-other-month-focused: #8ad5f4;--adp-background-color-selected-other-month: #a2ddf6;--adp-color: #4a4a4a;--adp-color-secondary: #9c9c9c;--adp-accent-color: #4eb5e6;--adp-color-current-date: var(--adp-accent-color);--adp-color-other-month: #dedede;--adp-color-disabled: #aeaeae;--adp-color-disabled-in-range: #939393;--adp-color-other-month-hover: #c5c5c5;--adp-border-color: #dbdbdb;--adp-border-color-inner: #efefef;--adp-border-radius: 4px;--adp-border-color-inline: #d7d7d7;--adp-nav-height: 32px;--adp-nav-arrow-color: var(--adp-color-secondary);--adp-nav-action-size: 32px;--adp-nav-color-secondary: var(--adp-color-secondary);--adp-day-name-color: #ff9a19;--adp-day-name-color-hover: #8ad5f4;--adp-day-cell-width: 1fr;--adp-day-cell-height: 32px;--adp-month-cell-height: 42px;--adp-year-cell-height: 56px;--adp-pointer-size: 10px;--adp-poiner-border-radius: 2px;--adp-pointer-offset: 14px;--adp-cell-border-radius: 4px;--adp-cell-background-color-hover: var(--adp-background-color-hover);--adp-cell-background-color-selected: #5cc4ef;--adp-cell-background-color-selected-hover: #45bced;--adp-cell-background-color-in-range: rgba(92, 196, 239, 0.1);--adp-cell-background-color-in-range-hover: rgba(92, 196, 239, 0.2);--adp-cell-border-color-in-range: var(--adp-cell-background-color-selected);--adp-btn-height: 32px;--adp-btn-color: var(--adp-accent-color);--adp-btn-color-hover: var(--adp-color);--adp-btn-border-radius: var(--adp-border-radius);--adp-btn-background-color-hover: var(--adp-background-color-hover);--adp-btn-background-color-active: var(--adp-background-color-active);--adp-time-track-height: 1px;--adp-time-track-color: #dedede;--adp-time-track-color-hover: #b1b1b1;--adp-time-thumb-size: 12px;--adp-time-padding-inner: 10px;--adp-time-day-period-color: var(--adp-color-secondary);--adp-mobile-font-size: 16px;--adp-mobile-nav-height: 40px;--adp-mobile-width: 320px;--adp-mobile-day-cell-height: 38px;--adp-mobile-month-cell-height: 48px;--adp-mobile-year-cell-height: 64px}.air-datepicker-overlay{--adp-overlay-background-color: rgba(0, 0, 0, .3);--adp-overlay-transition-duration: .3s;--adp-overlay-transition-ease: ease-out;--adp-overlay-z-index: 99}\n.air-datepicker{background:var(--adp-background-color);border:1px solid var(--adp-border-color);box-shadow:0 4px 12px rgba(0,0,0,.15);border-radius:var(--adp-border-radius);box-sizing:content-box;display:grid;grid-template-columns:1fr;grid-template-rows:repeat(4, max-content);grid-template-areas:var(--adp-grid-areas);font-family:var(--adp-font-family),sans-serif;font-size:var(--adp-font-size);color:var(--adp-color);width:var(--adp-width);position:absolute;transition:opacity var(--adp-transition-duration) var(--adp-transition-ease),transform var(--adp-transition-duration) var(--adp-transition-ease);z-index:var(--adp-z-index)}.air-datepicker:not(.-custom-position-){opacity:0}.air-datepicker.-from-top-{transform:translateY(calc(var(--adp-transition-offset) * -1))}.air-datepicker.-from-right-{transform:translateX(var(--adp-transition-offset))}.air-datepicker.-from-bottom-{transform:translateY(var(--adp-transition-offset))}.air-datepicker.-from-left-{transform:translateX(calc(var(--adp-transition-offset) * -1))}.air-datepicker.-active-:not(.-custom-position-){transform:translate(0, 0);opacity:1}.air-datepicker.-active-.-custom-position-{transition:none}.air-datepicker.-inline-{border-color:var(--adp-border-color-inline);box-shadow:none;position:static;left:auto;right:auto;opacity:1;transform:none}.air-datepicker.-inline- .air-datepicker--pointer{display:none}.air-datepicker.-is-mobile-{--adp-font-size: var(--adp-mobile-font-size);--adp-day-cell-height: var(--adp-mobile-day-cell-height);--adp-month-cell-height: var(--adp-mobile-month-cell-height);--adp-year-cell-height: var(--adp-mobile-year-cell-height);--adp-nav-height: var(--adp-mobile-nav-height);--adp-nav-action-size: var(--adp-mobile-nav-height);position:fixed;width:var(--adp-mobile-width);border:none}.air-datepicker.-is-mobile- *{-webkit-tap-highlight-color:rgba(0,0,0,0)}.air-datepicker.-is-mobile- .air-datepicker--pointer{display:none}.air-datepicker.-is-mobile-:not(.-custom-position-){transform:translate(-50%, calc(-50% + var(--adp-transition-offset)))}.air-datepicker.-is-mobile-.-active-:not(.-custom-position-){transform:translate(-50%, -50%)}.air-datepicker.-custom-position-{transition:none}.air-datepicker-global-container{position:absolute;left:0;top:0}.air-datepicker--pointer{--pointer-half-size: calc(var(--adp-pointer-size) / 2);position:absolute;width:var(--adp-pointer-size);height:var(--adp-pointer-size);z-index:-1}.air-datepicker--pointer:after{content:\"\";position:absolute;background:#fff;border-top:1px solid var(--adp-border-color-inline);border-right:1px solid var(--adp-border-color-inline);border-top-right-radius:var(--adp-poiner-border-radius);width:var(--adp-pointer-size);height:var(--adp-pointer-size);box-sizing:border-box}.-top-left- .air-datepicker--pointer,.-top-center- .air-datepicker--pointer,.-top-right- .air-datepicker--pointer,[data-popper-placement^=top] .air-datepicker--pointer{top:calc(100% - var(--pointer-half-size) + 1px)}.-top-left- .air-datepicker--pointer:after,.-top-center- .air-datepicker--pointer:after,.-top-right- .air-datepicker--pointer:after,[data-popper-placement^=top] .air-datepicker--pointer:after{transform:rotate(135deg)}.-right-top- .air-datepicker--pointer,.-right-center- .air-datepicker--pointer,.-right-bottom- .air-datepicker--pointer,[data-popper-placement^=right] .air-datepicker--pointer{right:calc(100% - var(--pointer-half-size) + 1px)}.-right-top- .air-datepicker--pointer:after,.-right-center- .air-datepicker--pointer:after,.-right-bottom- .air-datepicker--pointer:after,[data-popper-placement^=right] .air-datepicker--pointer:after{transform:rotate(225deg)}.-bottom-left- .air-datepicker--pointer,.-bottom-center- .air-datepicker--pointer,.-bottom-right- .air-datepicker--pointer,[data-popper-placement^=bottom] .air-datepicker--pointer{bottom:calc(100% - var(--pointer-half-size) + 1px)}.-bottom-left- .air-datepicker--pointer:after,.-bottom-center- .air-datepicker--pointer:after,.-bottom-right- .air-datepicker--pointer:after,[data-popper-placement^=bottom] .air-datepicker--pointer:after{transform:rotate(315deg)}.-left-top- .air-datepicker--pointer,.-left-center- .air-datepicker--pointer,.-left-bottom- .air-datepicker--pointer,[data-popper-placement^=left] .air-datepicker--pointer{left:calc(100% - var(--pointer-half-size) + 1px)}.-left-top- .air-datepicker--pointer:after,.-left-center- .air-datepicker--pointer:after,.-left-bottom- .air-datepicker--pointer:after,[data-popper-placement^=left] .air-datepicker--pointer:after{transform:rotate(45deg)}.-top-left- .air-datepicker--pointer,.-bottom-left- .air-datepicker--pointer{left:var(--adp-pointer-offset)}.-top-right- .air-datepicker--pointer,.-bottom-right- .air-datepicker--pointer{right:var(--adp-pointer-offset)}.-top-center- .air-datepicker--pointer,.-bottom-center- .air-datepicker--pointer{left:calc(50% - var(--adp-pointer-size)/2)}.-left-top- .air-datepicker--pointer,.-right-top- .air-datepicker--pointer{top:var(--adp-pointer-offset)}.-left-bottom- .air-datepicker--pointer,.-right-bottom- .air-datepicker--pointer{bottom:var(--adp-pointer-offset)}.-left-center- .air-datepicker--pointer,.-right-center- .air-datepicker--pointer{top:calc(50% - var(--adp-pointer-size)/2)}.air-datepicker--navigation{grid-area:nav}.air-datepicker--content{box-sizing:content-box;padding:var(--adp-padding);grid-area:body}.-only-timepicker- .air-datepicker--content{display:none}.air-datepicker--time{grid-area:timepicker}.air-datepicker--buttons{grid-area:buttons}.air-datepicker--buttons,.air-datepicker--time{padding:var(--adp-padding);border-top:1px solid var(--adp-border-color-inner)}.air-datepicker-overlay{position:fixed;background:var(--adp-overlay-background-color);left:0;top:0;width:0;height:0;opacity:0;transition:opacity var(--adp-overlay-transition-duration) var(--adp-overlay-transition-ease),left 0s,height 0s,width 0s;transition-delay:0s,var(--adp-overlay-transition-duration),var(--adp-overlay-transition-duration),var(--adp-overlay-transition-duration);z-index:var(--adp-overlay-z-index)}.air-datepicker-overlay.-active-{opacity:1;width:100%;height:100%;transition:opacity var(--adp-overlay-transition-duration) var(--adp-overlay-transition-ease),height 0s,width 0s}`;\n\nconst injectStyles = (css: string) => {\n if (typeof document !== 'undefined') {\n const styleElementId = 'pdfme-air-datepicker-styles';\n if (!document.getElementById(styleElementId)) {\n const style = document.createElement('style');\n style.id = styleElementId;\n style.type = 'text/css';\n style.appendChild(document.createTextNode(css));\n document.head.appendChild(style);\n }\n }\n};\n\nconst strDateToDate = (strDate: string, type: PickerType): Date => {\n if (!strDate.trim()) {\n return new Date();\n }\n\n if (type === 'time') {\n const dateTimePattern = /^\\d{4}\\/\\d{2}\\/\\d{2} \\d{2}:\\d{2}$/;\n if (dateTimePattern.test(strDate)) {\n return new Date(strDate.replace(/\\//g, '-').replace(' ', 'T'));\n }\n return new Date(`2021-01-01T${strDate}`);\n }\n\n return new Date(strDate);\n};\n\nexport const getFormat = (type: PickerType, locale: Locale): string => {\n switch (type) {\n case 'date': {\n return locale.adLocale.dateFormat;\n }\n case 'time': {\n return 'HH:mm';\n }\n case 'dateTime': {\n return `${locale.adLocale.dateFormat} ${locale.adLocale.timeFormat}`;\n }\n }\n};\n\nexport const isValidDateFormat = (\n formatString: string | undefined,\n locale: Locale,\n): formatString is string => {\n if (typeof formatString !== 'string') {\n return false;\n }\n\n const normalizedFormat = formatString.trim();\n if (!normalizedFormat || normalizedFormat === 'undefined') {\n return false;\n }\n\n try {\n format(new Date(0), normalizedFormat, {\n locale: locale.formatLocale,\n });\n return true;\n } catch {\n return false;\n }\n};\n\nexport const getSafeFormat = (\n type: PickerType,\n schema: Pick<DateSchema, 'format'>,\n locale: Locale,\n): string => {\n return isValidDateFormat(schema.format, locale)\n ? schema.format.trim()\n : getFormat(type, locale);\n};\n\nexport const getFmtValue = (\n value: string,\n type: PickerType,\n schema: DateSchema,\n locale: Locale,\n): string => {\n const formatString = getSafeFormat(type, schema, locale);\n\n return value\n ? format(strDateToDate(value, type), formatString, {\n locale: locale.formatLocale,\n })\n : '';\n};\n\nconst getFmtContent = (date: Date | null, type: PickerType) => {\n const fmt = (() => {\n switch (type) {\n case 'date': {\n return 'yyyy/MM/dd';\n }\n case 'time': {\n return 'HH:mm';\n }\n case 'dateTime': {\n return 'yyyy/MM/dd HH:mm';\n }\n }\n })();\n return date ? format(date, fmt) : '';\n};\n\nexport const getPlugin = ({ type, icon }: { type: PickerType; icon: string }) => {\n const defaultLocale = 'en';\n const defaultFormat = getFormat(type, getAirDatepickerLocale(defaultLocale));\n\n const plugin: Plugin<DateSchema> = {\n ui: async (arg) => {\n const { schema, value, onChange, rootElement, mode, options, i18n } = arg;\n\n const locale = getAirDatepickerLocale(schema.locale || options.lang || defaultLocale);\n const formatString = getSafeFormat(type, schema, locale);\n\n const textElement = document.createElement('div');\n const textElementStyle: CSS.Properties = {\n width: `${schema.width}mm`,\n height: `${schema.height}mm`,\n display: 'flex',\n flexDirection: 'column',\n justifyContent: mapVerticalAlignToFlex(VERTICAL_ALIGN_MIDDLE),\n };\n Object.assign(textElement.style, textElementStyle);\n\n await text.ui({\n ...arg,\n rootElement: textElement,\n mode: 'viewer',\n value: getFmtValue(value, type, schema, locale),\n schema: {\n ...schema,\n verticalAlignment: VERTICAL_ALIGN_MIDDLE,\n lineHeight: DEFAULT_LINE_HEIGHT,\n },\n });\n\n injectStyles(airDatepickerCss);\n\n const beforeRemoveEvent = new Event('beforeRemove');\n rootElement.dispatchEvent(beforeRemoveEvent);\n\n const input = document.createElement('input');\n Object.assign(input.style, { visibility: 'hidden', position: 'absolute' });\n\n const commitChange = (date: Date | null) => {\n if (onChange) {\n onChange({ key: 'content', value: getFmtContent(date, type) });\n }\n };\n\n const adButtons: AirDatepickerButton[] = [\n {\n content: i18n('cancel'),\n onClick: (datepicker) => {\n datepicker.hide();\n },\n },\n {\n content: i18n('clear'),\n onClick: (datepicker) => {\n datepicker.hide();\n commitChange(null);\n },\n },\n ];\n if (type !== 'date') {\n adButtons.push({\n content: i18n('set'),\n onClick: (datepicker) => {\n datepicker.hide();\n const date = datepicker.selectedDates.length ? datepicker.selectedDates[0] : null;\n commitChange(date);\n },\n });\n }\n const airDatepicker = new AirDatepicker(input, {\n locale: locale.adLocale,\n selectedDates: value.trim() ? [strDateToDate(value, type)] : [],\n dateFormat: (date: AirDatepickerDate) =>\n format(date, formatString, { locale: locale.formatLocale }),\n timepicker: type !== 'date',\n onlyTimepicker: type === 'time',\n isMobile: window.innerWidth < 768,\n buttons: adButtons,\n position({ $datepicker, $target, $pointer, done }) {\n $datepicker.style.position = 'fixed';\n const offset = 5;\n const scrollY = window.scrollY;\n const scrollX = window.scrollX;\n\n const targetRect = $target.getBoundingClientRect();\n const dpHeight = $datepicker.offsetHeight;\n const dpWidth = $datepicker.offsetWidth;\n\n const spaceBelow = window.innerHeight - targetRect.bottom;\n const spaceAbove = targetRect.top;\n\n const showAbove = spaceBelow < dpHeight + offset && spaceAbove > dpHeight;\n\n let top = showAbove\n ? targetRect.top + scrollY - dpHeight - offset\n : targetRect.bottom + scrollY + offset;\n\n let left = targetRect.left + scrollX;\n\n if (left + dpWidth > window.innerWidth) {\n left = window.innerWidth - dpWidth - 10;\n }\n\n $datepicker.style.position = 'absolute';\n $datepicker.style.top = `${top}px`;\n $datepicker.style.left = `${left}px`;\n if ($pointer) {\n $pointer.style.display = 'block';\n $pointer.style.position = 'absolute';\n $pointer.style.left = '10px';\n $pointer.style.top = showAbove ? 'calc(100% - 5px)' : '-5px';\n $pointer.style.transform = showAbove ? 'rotate(135deg)' : 'rotate(-45deg)';\n }\n return function completeHide() {\n done();\n };\n },\n onSelect: ({ datepicker }: { datepicker: AirDatepickerInstance }) => {\n if (type === 'date') {\n commitChange(datepicker.selectedDates.length ? datepicker.selectedDates[0] : null);\n datepicker.hide();\n }\n },\n });\n\n rootElement.addEventListener('beforeRemove', () => {\n if (isEditable(mode, schema)) {\n airDatepicker.destroy();\n }\n });\n textElement.addEventListener('click', () => {\n if (isEditable(mode, schema)) {\n airDatepicker.show();\n }\n });\n\n rootElement.appendChild(input);\n rootElement.appendChild(textElement);\n },\n pdf: (arg) => {\n const { schema, value, options } = arg;\n if (!value) return void 0;\n const locale = getAirDatepickerLocale(schema.locale || options.lang || defaultLocale);\n return text.pdf({\n ...arg,\n value: getFmtValue(value, type, schema, locale),\n schema: {\n ...schema,\n verticalAlignment: VERTICAL_ALIGN_MIDDLE,\n lineHeight: DEFAULT_LINE_HEIGHT,\n },\n });\n },\n propPanel: {\n schema: ({ options, i18n, activeSchema, changeSchemas }) => {\n const font = options.font || { [DEFAULT_FONT_NAME]: { data: '', fallback: true } };\n const fontNames = Object.keys(font);\n const fallbackFontName = getFallbackFontName(font);\n const activeDateSchema = activeSchema as { locale?: string; format?: string };\n\n const locale = getAirDatepickerLocale(\n activeDateSchema.locale || options.lang || defaultLocale,\n );\n const defaultFormat = getFormat(type, locale);\n const safeFormat = getSafeFormat(\n type,\n activeDateSchema as Pick<DateSchema, 'format'>,\n locale,\n );\n const schemaChanges = [];\n\n if (activeDateSchema.locale === undefined && activeDateSchema.locale !== options.lang) {\n schemaChanges.push({ schemaId: activeSchema.id, key: 'locale', value: options.lang });\n }\n if (activeDateSchema.format !== safeFormat) {\n schemaChanges.push({ schemaId: activeSchema.id, key: 'format', value: safeFormat });\n }\n if (schemaChanges.length > 0) {\n changeSchemas(schemaChanges);\n }\n\n const formatter = getExtraFormatterSchema(i18n);\n formatter.buttons = formatter.buttons.filter(\n (button) => button.key === Formatter.ALIGNMENT,\n );\n\n const validateDateTimeFormat = (_rule: unknown, formatString: string): boolean =>\n isValidDateFormat(formatString, locale);\n\n const localeOptions = Object.keys(LOCALE_MAP).map((lc) => ({\n label: `${lc} (${LOCALE_MAP[lc].label})`,\n value: lc,\n }));\n\n const dateSchema: Record<string, PropPanelSchema> = {\n format: {\n title: i18n('schemas.date.format'),\n type: 'string',\n default: safeFormat,\n placeholder: defaultFormat,\n rules: [\n {\n validator: validateDateTimeFormat,\n message: i18n('validation.dateTimeFormat'),\n },\n ],\n span: 24,\n },\n fontName: {\n title: i18n('schemas.text.fontName'),\n type: 'string',\n widget: 'select',\n default: fallbackFontName,\n placeholder: fallbackFontName,\n props: { options: fontNames.map((name) => ({ label: name, value: name })) },\n span: 12,\n },\n fontSize: {\n title: i18n('schemas.text.size'),\n type: 'number',\n widget: 'inputNumber',\n span: 6,\n props: { min: 0 },\n },\n characterSpacing: {\n title: i18n('schemas.text.spacing'),\n type: 'number',\n widget: 'inputNumber',\n span: 6,\n props: { min: 0 },\n },\n formatter,\n fontColor: {\n title: i18n('schemas.textColor'),\n type: 'string',\n widget: 'color',\n props: {\n disabledAlpha: true,\n },\n rules: [\n {\n pattern: HEX_COLOR_PATTERN,\n message: i18n('validation.hexColor'),\n },\n ],\n },\n backgroundColor: {\n title: i18n('schemas.bgColor'),\n type: 'string',\n widget: 'color',\n props: {\n disabledAlpha: true,\n },\n rules: [\n {\n pattern: HEX_COLOR_PATTERN,\n message: i18n('validation.hexColor'),\n },\n ],\n },\n locale: {\n title: i18n('schemas.date.locale'),\n type: 'string',\n widget: 'select',\n props: {\n options: localeOptions,\n },\n span: 16,\n },\n };\n\n return dateSchema;\n },\n defaultSchema: {\n name: '',\n format: defaultFormat,\n type,\n content: getFmtContent(new Date(), type),\n position: { x: 0, y: 0 },\n width: 50,\n height: 10,\n rotate: 0,\n alignment: DEFAULT_ALIGNMENT,\n fontSize: DEFAULT_FONT_SIZE,\n characterSpacing: DEFAULT_CHARACTER_SPACING,\n fontColor: DEFAULT_FONT_COLOR,\n fontName: undefined,\n backgroundColor: '',\n locale: undefined,\n opacity: DEFAULT_OPACITY,\n } as DateSchema,\n },\n icon,\n };\n\n return plugin;\n};\n","import { getPlugin } from './helper.js';\nimport { createSvgStr } from '../utils.js';\nimport { CalendarClock } from 'lucide';\n\nconst type = 'dateTime';\n\nconst icon = createSvgStr(CalendarClock);\n\nexport default getPlugin({ type, icon });\n","import { getPlugin } from './helper.js';\nimport { createSvgStr } from '../utils.js';\nimport { Calendar } from 'lucide';\n\nconst type = 'date';\n\nconst icon = createSvgStr(Calendar);\n\nexport default getPlugin({ type, icon });\n","import { getPlugin } from './helper.js';\nimport { createSvgStr } from '../utils.js';\nimport { Clock } from 'lucide';\n\nconst type = 'time';\n\nconst icon = createSvgStr(Clock);\n\nexport default getPlugin({ type, icon });\n","import type * as CSS from 'csstype';\nimport { propPanel as parentPropPanel } from '../text/propPanel.js';\nimport { Plugin, PropPanelWidgetProps, SchemaForUI } from '@pdfme/common';\nimport text from '../text/index.js';\nimport { TextSchema } from '../text/types.js';\nimport { ChevronDown } from 'lucide';\nimport { createSvgStr } from '../utils.js';\n\nconst selectIcon = createSvgStr(ChevronDown);\n\ninterface Select extends TextSchema {\n options: string[];\n}\n\nconst addOptions = (props: PropPanelWidgetProps) => {\n const { rootElement, changeSchemas, activeSchema, i18n } = props;\n\n rootElement.style.width = '100%';\n\n const selectSchema = activeSchema as SchemaForUI & Select;\n const currentOptions = selectSchema.options ? [...selectSchema.options] : [];\n\n const inputStyle = {\n width: '100%',\n padding: '6.25px 11px',\n border: '1px solid #ccc',\n borderRadius: '4px',\n };\n\n const buttonStyle = { border: 'none', borderRadius: '4px', cursor: 'pointer' };\n\n const updateSchemas = () => {\n changeSchemas([\n { key: 'options', value: currentOptions, schemaId: activeSchema.id },\n { key: 'content', value: currentOptions[0] || '', schemaId: activeSchema.id },\n ]);\n };\n\n const formContainer = document.createElement('div');\n Object.assign(formContainer.style, {\n width: '100%',\n display: 'flex',\n alignItems: 'center',\n marginBottom: '10px',\n });\n\n const input = document.createElement('input');\n input.type = 'text';\n input.placeholder = i18n('schemas.select.optionPlaceholder');\n Object.assign(input.style, inputStyle, { marginRight: '10px' });\n\n const addButton = document.createElement('button');\n addButton.textContent = '+';\n Object.assign(addButton.style, buttonStyle, {\n width: '25px',\n height: '25px',\n padding: '4px 8px',\n });\n\n addButton.addEventListener('click', () => {\n const newValue = input.value.trim();\n if (newValue) {\n currentOptions.push(newValue);\n updateSchemas();\n renderOptions();\n input.value = '';\n }\n });\n\n formContainer.appendChild(input);\n formContainer.appendChild(addButton);\n\n const optionsList = document.createElement('ul');\n Object.assign(optionsList.style, { listStyle: 'none', padding: '0' });\n\n const renderOptions = () => {\n optionsList.innerHTML = '';\n currentOptions.forEach((option, index) => {\n const li = document.createElement('li');\n Object.assign(li.style, { display: 'flex', alignItems: 'center', marginBottom: '5px' });\n\n const optionInput = document.createElement('input');\n optionInput.type = 'text';\n optionInput.value = option;\n Object.assign(optionInput.style, inputStyle, { marginRight: '10px' });\n\n optionInput.addEventListener('change', () => {\n currentOptions[index] = optionInput.value;\n updateSchemas();\n });\n\n const removeButton = document.createElement('button');\n removeButton.textContent = 'x';\n Object.assign(removeButton.style, buttonStyle, { padding: '4px 8px' });\n\n removeButton.addEventListener('click', () => {\n currentOptions.splice(index, 1);\n updateSchemas();\n renderOptions();\n });\n\n li.appendChild(optionInput);\n li.appendChild(removeButton);\n optionsList.appendChild(li);\n });\n };\n\n rootElement.appendChild(formContainer);\n rootElement.appendChild(optionsList);\n\n renderOptions();\n};\n\nconst schema: Plugin<Select> = {\n ui: async (arg) => {\n const { schema, value, onChange, rootElement, mode } = arg;\n await text.ui(Object.assign(arg, { mode: 'viewer' }));\n\n if (mode !== 'viewer' && !(mode === 'form' && schema.readOnly)) {\n const buttonWidth = 30;\n const selectButton = document.createElement('button');\n selectButton.innerHTML = selectIcon;\n const selectButtonStyle: CSS.Properties = {\n position: 'absolute',\n zIndex: -1,\n right: `-${buttonWidth}px`,\n top: '0',\n padding: '0',\n margin: '0',\n cursor: 'pointer',\n height: `${buttonWidth}px`,\n width: `${buttonWidth}px`,\n };\n Object.assign(selectButton.style, selectButtonStyle);\n\n rootElement.appendChild(selectButton);\n\n const selectElement = document.createElement('select');\n const selectElementStyle: CSS.Properties = {\n opacity: '0',\n position: 'absolute',\n width: `calc(100% + ${buttonWidth}px)`,\n height: '100%',\n top: '0',\n left: '0',\n appearance: 'initial',\n };\n Object.assign(selectElement.style, selectElementStyle);\n selectElement.value = value;\n\n selectElement.addEventListener('change', (e) => {\n if (onChange && e.target instanceof HTMLSelectElement) {\n if (onChange) onChange({ key: 'content', value: e.target.value });\n }\n });\n\n // Ensure schema.options is an array before mapping\n const options = Array.isArray(schema.options) ? schema.options : [];\n options.forEach((option) => {\n const optionElement = document.createElement('option');\n optionElement.value = option;\n optionElement.textContent = option;\n if (option === value) optionElement.selected = true;\n selectElement.appendChild(optionElement);\n });\n rootElement.appendChild(selectElement);\n }\n },\n pdf: text.pdf,\n propPanel: {\n ...text.propPanel,\n widgets: { ...parentPropPanel.widgets, addOptions },\n schema: (propPanelProps: Omit<PropPanelWidgetProps, 'rootElement'>) => {\n if (typeof parentPropPanel.schema !== 'function') {\n throw Error('Oops, is text schema no longer a function?');\n }\n\n // Safely call the parent schema function with proper type checking\n const parentSchema = parentPropPanel.schema(propPanelProps);\n\n // Create a type-safe return object\n return {\n ...parentSchema,\n '-------': { type: 'void', widget: 'Divider' },\n\n optionsContainer: {\n title: (propPanelProps as PropPanelWidgetProps).i18n('schemas.select.options'),\n type: 'string',\n widget: 'Card',\n span: 24,\n properties: { options: { widget: 'addOptions', span: 24 } },\n },\n };\n },\n defaultSchema: {\n ...(text.propPanel.defaultSchema as TextSchema),\n type: 'select',\n content: 'option1',\n options: ['option1', 'option2'],\n },\n },\n icon: selectIcon,\n};\n\nexport default schema;\n","import { Plugin, Schema } from '@pdfme/common';\nimport { Circle, CircleDot } from 'lucide';\nimport svg from '../graphics/svg.js';\nimport { isEditable, createSvgStr } from '../utils.js';\nimport { HEX_COLOR_PATTERN } from '../constants.js';\n\nconst defaultStroke = 'currentColor';\n\nconst getCheckedIcon = (stroke = defaultStroke) => createSvgStr(CircleDot, { stroke });\nconst getUncheckedIcon = (stroke = defaultStroke) => createSvgStr(Circle, { stroke });\n\ninterface RadioGroup extends Schema {\n group: string;\n color: string;\n}\n\nconst getIcon = ({ value, color }: { value: string; color: string }) =>\n value === 'true' ? getCheckedIcon(color) : getUncheckedIcon(color);\n\nconst eventEmitter = new EventTarget();\n\ninterface RadioButtonState {\n value: string;\n onChange: (arg: { key: string; value: string }) => void;\n}\n\nconst radioButtonStates = new Map<string, RadioButtonState>();\nconst eventListeners = new Map<string, EventListener>();\n\nconst schema: Plugin<RadioGroup> = {\n ui: (arg) => {\n const { schema, value, onChange, rootElement, mode } = arg;\n const container = document.createElement('div');\n container.style.width = '100%';\n container.style.height = '100%';\n\n if (onChange) {\n radioButtonStates.set(schema.name, { value, onChange });\n }\n\n const oldListener = eventListeners.get(schema.name);\n if (oldListener) {\n eventEmitter.removeEventListener(`group-${schema.group}`, oldListener);\n }\n\n const handleGroupEvent = (event: Event) => {\n const customEvent = event as CustomEvent<string>;\n const selectedSchemaName = customEvent.detail;\n if (selectedSchemaName !== schema.name) {\n const radioButtonState = radioButtonStates.get(schema.name);\n if (!radioButtonState) return;\n if (radioButtonState.value === 'true') {\n radioButtonState.onChange({ key: 'content', value: 'false' });\n }\n }\n };\n\n eventListeners.set(schema.name, handleGroupEvent);\n eventEmitter.addEventListener(`group-${schema.group}`, handleGroupEvent);\n\n if (isEditable(mode, schema)) {\n container.addEventListener('click', () => {\n if (value !== 'true' && onChange) {\n onChange({ key: 'content', value: 'true' });\n radioButtonStates.set(schema.name, { value: 'true', onChange });\n eventEmitter.dispatchEvent(\n new CustomEvent(`group-${schema.group}`, { detail: schema.name }),\n );\n }\n });\n }\n\n void svg.ui({\n ...arg,\n rootElement: container,\n mode: 'viewer',\n value: getIcon({ value, color: schema.color }),\n });\n\n rootElement.appendChild(container);\n },\n pdf: (arg) =>\n svg.pdf(Object.assign(arg, { value: getIcon({ value: arg.value, color: arg.schema.color }) })),\n propPanel: {\n schema: ({ i18n }) => ({\n color: {\n title: i18n('schemas.color'),\n type: 'string',\n widget: 'color',\n props: {\n disabledAlpha: true,\n },\n required: true,\n rules: [{ pattern: HEX_COLOR_PATTERN, message: i18n('validation.hexColor') }],\n },\n group: {\n title: i18n('schemas.radioGroup.groupName'),\n type: 'string',\n },\n }),\n defaultSchema: {\n name: '',\n type: 'radioGroup',\n content: 'false',\n position: { x: 0, y: 0 },\n width: 8,\n height: 8,\n group: 'MyGroup',\n color: '#000000',\n },\n },\n icon: getCheckedIcon(),\n};\n\nexport default schema;\n","import { Plugin, Schema } from '@pdfme/common';\nimport svg from '../graphics/svg.js';\nimport { isEditable } from '../utils.js';\nimport { HEX_COLOR_PATTERN } from '../constants.js';\nimport { Square, SquareCheck } from 'lucide';\nimport { createSvgStr } from '../utils.js';\n\nconst defaultStroke = 'currentColor';\n\nconst getCheckedIcon = (stroke = defaultStroke) => createSvgStr(SquareCheck, { stroke });\nconst getUncheckedIcon = (stroke = defaultStroke) => createSvgStr(Square, { stroke });\n\ninterface Checkbox extends Schema {\n color: string;\n}\n\nconst getIcon = ({ value, color }: { value: string; color: string }) =>\n value === 'true' ? getCheckedIcon(color) : getUncheckedIcon(color);\n\nconst schema: Plugin<Checkbox> = {\n ui: (arg) => {\n const { schema, value, onChange, rootElement, mode } = arg;\n const container = document.createElement('div');\n container.style.width = '100%';\n container.style.height = '100%';\n\n if (isEditable(mode, schema)) {\n container.addEventListener('click', () => {\n if (onChange) onChange({ key: 'content', value: value === 'true' ? 'false' : 'true' });\n });\n }\n\n void svg.ui({\n ...arg,\n rootElement: container,\n mode: 'viewer',\n value: getIcon({ value, color: schema.color }),\n });\n\n rootElement.appendChild(container);\n },\n pdf: (arg) =>\n svg.pdf(Object.assign(arg, { value: getIcon({ value: arg.value, color: arg.schema.color }) })),\n propPanel: {\n schema: ({ i18n }) => ({\n color: {\n title: i18n('schemas.color'),\n type: 'string',\n widget: 'color',\n props: {\n disabledAlpha: true,\n },\n required: true,\n rules: [{ pattern: HEX_COLOR_PATTERN, message: i18n('validation.hexColor') }],\n },\n }),\n defaultSchema: {\n name: '',\n type: 'checkbox',\n content: 'false',\n position: { x: 0, y: 0 },\n width: 8,\n height: 8,\n color: '#000000',\n },\n },\n icon: getCheckedIcon(),\n};\n\nexport default schema;\n"],"x_google_ignoreList":[24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56],"mappings":"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"}