@embedpdf/plugin-form 2.15.0 → 3.0.0-next.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (175) hide show
  1. package/LICENSE +192 -21
  2. package/dist/index.cjs +1416 -2
  3. package/dist/index.cjs.map +1 -1
  4. package/dist/index.d.cts +277 -0
  5. package/dist/index.d.ts +277 -1
  6. package/dist/index.js +1398 -1779
  7. package/dist/index.js.map +1 -1
  8. package/package.json +24 -61
  9. package/dist/lib/actions.d.ts +0 -33
  10. package/dist/lib/form-plugin.d.ts +0 -59
  11. package/dist/lib/handlers/checkbox.handler.d.ts +0 -3
  12. package/dist/lib/handlers/combobox.handler.d.ts +0 -3
  13. package/dist/lib/handlers/index.d.ts +0 -5
  14. package/dist/lib/handlers/listbox.handler.d.ts +0 -3
  15. package/dist/lib/handlers/radio-button.handler.d.ts +0 -3
  16. package/dist/lib/handlers/text-field.handler.d.ts +0 -3
  17. package/dist/lib/index.d.ts +0 -10
  18. package/dist/lib/manifest.d.ts +0 -4
  19. package/dist/lib/reducer.d.ts +0 -6
  20. package/dist/lib/tools.d.ts +0 -457
  21. package/dist/lib/types.d.ts +0 -98
  22. package/dist/preact/adapter.d.ts +0 -13
  23. package/dist/preact/annotation.d.ts +0 -1
  24. package/dist/preact/core.d.ts +0 -1
  25. package/dist/preact/index.cjs +0 -2
  26. package/dist/preact/index.cjs.map +0 -1
  27. package/dist/preact/index.d.ts +0 -1
  28. package/dist/preact/index.js +0 -1359
  29. package/dist/preact/index.js.map +0 -1
  30. package/dist/react/adapter.d.ts +0 -6
  31. package/dist/react/annotation.d.ts +0 -1
  32. package/dist/react/core.d.ts +0 -1
  33. package/dist/react/index.cjs +0 -2
  34. package/dist/react/index.cjs.map +0 -1
  35. package/dist/react/index.d.ts +0 -1
  36. package/dist/react/index.js +0 -1358
  37. package/dist/react/index.js.map +0 -1
  38. package/dist/shared/components/annotations/form-checkbox.d.ts +0 -12
  39. package/dist/shared/components/annotations/form-combobox.d.ts +0 -12
  40. package/dist/shared/components/annotations/form-listbox.d.ts +0 -12
  41. package/dist/shared/components/annotations/form-radio-button.d.ts +0 -12
  42. package/dist/shared/components/annotations/form-text-field.d.ts +0 -12
  43. package/dist/shared/components/fields/checkbox.d.ts +0 -2
  44. package/dist/shared/components/fields/combobox.d.ts +0 -2
  45. package/dist/shared/components/fields/listbox.d.ts +0 -2
  46. package/dist/shared/components/fields/push-button.d.ts +0 -2
  47. package/dist/shared/components/fields/radio-button.d.ts +0 -2
  48. package/dist/shared/components/fields/style.d.ts +0 -6
  49. package/dist/shared/components/fields/text.d.ts +0 -2
  50. package/dist/shared/components/fill-mode/combobox-fill-mode.d.ts +0 -3
  51. package/dist/shared/components/fill-mode/listbox-fill-mode.d.ts +0 -3
  52. package/dist/shared/components/fill-mode/push-button-fill-mode.d.ts +0 -3
  53. package/dist/shared/components/fill-mode/radio-button-fill-mode.d.ts +0 -3
  54. package/dist/shared/components/fill-mode/text-fill-mode.d.ts +0 -3
  55. package/dist/shared/components/fill-mode/toggle-fill-mode.d.ts +0 -3
  56. package/dist/shared/components/form-renderer-registration.d.ts +0 -5
  57. package/dist/shared/components/form-renderers.d.ts +0 -9
  58. package/dist/shared/components/index.d.ts +0 -2
  59. package/dist/shared/components/render-widget.d.ts +0 -12
  60. package/dist/shared/components/types.d.ts +0 -42
  61. package/dist/shared/hooks/index.d.ts +0 -1
  62. package/dist/shared/hooks/use-form-widget-state.d.ts +0 -12
  63. package/dist/shared/hooks/use-form.d.ts +0 -16
  64. package/dist/shared/index.d.ts +0 -4
  65. package/dist/shared-preact/components/annotations/form-checkbox.d.ts +0 -12
  66. package/dist/shared-preact/components/annotations/form-combobox.d.ts +0 -12
  67. package/dist/shared-preact/components/annotations/form-listbox.d.ts +0 -12
  68. package/dist/shared-preact/components/annotations/form-radio-button.d.ts +0 -12
  69. package/dist/shared-preact/components/annotations/form-text-field.d.ts +0 -12
  70. package/dist/shared-preact/components/fields/checkbox.d.ts +0 -2
  71. package/dist/shared-preact/components/fields/combobox.d.ts +0 -2
  72. package/dist/shared-preact/components/fields/listbox.d.ts +0 -2
  73. package/dist/shared-preact/components/fields/push-button.d.ts +0 -2
  74. package/dist/shared-preact/components/fields/radio-button.d.ts +0 -2
  75. package/dist/shared-preact/components/fields/style.d.ts +0 -6
  76. package/dist/shared-preact/components/fields/text.d.ts +0 -2
  77. package/dist/shared-preact/components/fill-mode/combobox-fill-mode.d.ts +0 -3
  78. package/dist/shared-preact/components/fill-mode/listbox-fill-mode.d.ts +0 -3
  79. package/dist/shared-preact/components/fill-mode/push-button-fill-mode.d.ts +0 -3
  80. package/dist/shared-preact/components/fill-mode/radio-button-fill-mode.d.ts +0 -3
  81. package/dist/shared-preact/components/fill-mode/text-fill-mode.d.ts +0 -3
  82. package/dist/shared-preact/components/fill-mode/toggle-fill-mode.d.ts +0 -3
  83. package/dist/shared-preact/components/form-renderer-registration.d.ts +0 -5
  84. package/dist/shared-preact/components/form-renderers.d.ts +0 -9
  85. package/dist/shared-preact/components/index.d.ts +0 -2
  86. package/dist/shared-preact/components/render-widget.d.ts +0 -12
  87. package/dist/shared-preact/components/types.d.ts +0 -42
  88. package/dist/shared-preact/hooks/index.d.ts +0 -1
  89. package/dist/shared-preact/hooks/use-form-widget-state.d.ts +0 -12
  90. package/dist/shared-preact/hooks/use-form.d.ts +0 -16
  91. package/dist/shared-preact/index.d.ts +0 -4
  92. package/dist/shared-react/components/annotations/form-checkbox.d.ts +0 -12
  93. package/dist/shared-react/components/annotations/form-combobox.d.ts +0 -12
  94. package/dist/shared-react/components/annotations/form-listbox.d.ts +0 -12
  95. package/dist/shared-react/components/annotations/form-radio-button.d.ts +0 -12
  96. package/dist/shared-react/components/annotations/form-text-field.d.ts +0 -12
  97. package/dist/shared-react/components/fields/checkbox.d.ts +0 -2
  98. package/dist/shared-react/components/fields/combobox.d.ts +0 -2
  99. package/dist/shared-react/components/fields/listbox.d.ts +0 -2
  100. package/dist/shared-react/components/fields/push-button.d.ts +0 -2
  101. package/dist/shared-react/components/fields/radio-button.d.ts +0 -2
  102. package/dist/shared-react/components/fields/style.d.ts +0 -6
  103. package/dist/shared-react/components/fields/text.d.ts +0 -2
  104. package/dist/shared-react/components/fill-mode/combobox-fill-mode.d.ts +0 -3
  105. package/dist/shared-react/components/fill-mode/listbox-fill-mode.d.ts +0 -3
  106. package/dist/shared-react/components/fill-mode/push-button-fill-mode.d.ts +0 -3
  107. package/dist/shared-react/components/fill-mode/radio-button-fill-mode.d.ts +0 -3
  108. package/dist/shared-react/components/fill-mode/text-fill-mode.d.ts +0 -3
  109. package/dist/shared-react/components/fill-mode/toggle-fill-mode.d.ts +0 -3
  110. package/dist/shared-react/components/form-renderer-registration.d.ts +0 -5
  111. package/dist/shared-react/components/form-renderers.d.ts +0 -9
  112. package/dist/shared-react/components/index.d.ts +0 -2
  113. package/dist/shared-react/components/render-widget.d.ts +0 -12
  114. package/dist/shared-react/components/types.d.ts +0 -42
  115. package/dist/shared-react/hooks/index.d.ts +0 -1
  116. package/dist/shared-react/hooks/use-form-widget-state.d.ts +0 -12
  117. package/dist/shared-react/hooks/use-form.d.ts +0 -16
  118. package/dist/shared-react/index.d.ts +0 -4
  119. package/dist/svelte/components/FormRendererRegistration.svelte.d.ts +0 -18
  120. package/dist/svelte/components/RenderWidget.svelte.d.ts +0 -11
  121. package/dist/svelte/components/annotations/FormCheckbox.svelte.d.ts +0 -5
  122. package/dist/svelte/components/annotations/FormCombobox.svelte.d.ts +0 -5
  123. package/dist/svelte/components/annotations/FormListbox.svelte.d.ts +0 -5
  124. package/dist/svelte/components/annotations/FormRadioButton.svelte.d.ts +0 -5
  125. package/dist/svelte/components/annotations/FormTextField.svelte.d.ts +0 -5
  126. package/dist/svelte/components/fields/ComboboxField.svelte.d.ts +0 -4
  127. package/dist/svelte/components/fields/ListboxField.svelte.d.ts +0 -4
  128. package/dist/svelte/components/fields/TextField.svelte.d.ts +0 -4
  129. package/dist/svelte/components/fill-mode/ComboboxFillMode.svelte.d.ts +0 -5
  130. package/dist/svelte/components/fill-mode/ListboxFillMode.svelte.d.ts +0 -5
  131. package/dist/svelte/components/fill-mode/RadioButtonFillMode.svelte.d.ts +0 -5
  132. package/dist/svelte/components/fill-mode/TextFillMode.svelte.d.ts +0 -5
  133. package/dist/svelte/components/fill-mode/ToggleFillMode.svelte.d.ts +0 -5
  134. package/dist/svelte/components/form-renderers.d.ts +0 -9
  135. package/dist/svelte/components/previews/CheckboxPreview.svelte.d.ts +0 -9
  136. package/dist/svelte/components/previews/ListboxPreview.svelte.d.ts +0 -9
  137. package/dist/svelte/components/previews/RadioButtonPreview.svelte.d.ts +0 -9
  138. package/dist/svelte/components/previews/TextFieldPreview.svelte.d.ts +0 -9
  139. package/dist/svelte/hooks/index.d.ts +0 -2
  140. package/dist/svelte/hooks/use-form-widget-state.svelte.d.ts +0 -12
  141. package/dist/svelte/hooks/use-form.svelte.d.ts +0 -14
  142. package/dist/svelte/index.cjs +0 -2
  143. package/dist/svelte/index.cjs.map +0 -1
  144. package/dist/svelte/index.d.ts +0 -3
  145. package/dist/svelte/index.js +0 -1592
  146. package/dist/svelte/index.js.map +0 -1
  147. package/dist/vue/components/annotations/form-checkbox.vue.d.ts +0 -6
  148. package/dist/vue/components/annotations/form-combobox.vue.d.ts +0 -6
  149. package/dist/vue/components/annotations/form-listbox.vue.d.ts +0 -6
  150. package/dist/vue/components/annotations/form-radio-button.vue.d.ts +0 -6
  151. package/dist/vue/components/annotations/form-text-field.vue.d.ts +0 -6
  152. package/dist/vue/components/fields/combobox-field.vue.d.ts +0 -4
  153. package/dist/vue/components/fields/listbox-field.vue.d.ts +0 -4
  154. package/dist/vue/components/fields/style.d.ts +0 -6
  155. package/dist/vue/components/fields/text-field.vue.d.ts +0 -4
  156. package/dist/vue/components/fill-mode/combobox-fill-mode.vue.d.ts +0 -6
  157. package/dist/vue/components/fill-mode/listbox-fill-mode.vue.d.ts +0 -6
  158. package/dist/vue/components/fill-mode/radio-button-fill-mode.vue.d.ts +0 -6
  159. package/dist/vue/components/fill-mode/text-fill-mode.vue.d.ts +0 -6
  160. package/dist/vue/components/fill-mode/toggle-fill-mode.vue.d.ts +0 -6
  161. package/dist/vue/components/form-renderer-registration.vue.d.ts +0 -13
  162. package/dist/vue/components/form-renderers.d.ts +0 -3
  163. package/dist/vue/components/previews/checkbox-preview.vue.d.ts +0 -10
  164. package/dist/vue/components/previews/listbox-preview.vue.d.ts +0 -10
  165. package/dist/vue/components/previews/radio-button-preview.vue.d.ts +0 -10
  166. package/dist/vue/components/previews/text-field-preview.vue.d.ts +0 -10
  167. package/dist/vue/components/render-widget.vue.d.ts +0 -15
  168. package/dist/vue/hooks/index.d.ts +0 -2
  169. package/dist/vue/hooks/use-form-widget-state.d.ts +0 -12
  170. package/dist/vue/hooks/use-form.d.ts +0 -12
  171. package/dist/vue/index.cjs +0 -2
  172. package/dist/vue/index.cjs.map +0 -1
  173. package/dist/vue/index.d.ts +0 -3
  174. package/dist/vue/index.js +0 -1643
  175. package/dist/vue/index.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sources":["../../src/react/adapter.ts","../../src/shared/components/annotations/form-text-field.tsx","../../src/shared/components/annotations/form-checkbox.tsx","../../src/shared/components/annotations/form-radio-button.tsx","../../src/shared/components/annotations/form-combobox.tsx","../../src/shared/components/annotations/form-listbox.tsx","../../src/shared/hooks/use-form.ts","../../src/shared/hooks/use-form-widget-state.ts","../../src/shared/components/render-widget.tsx","../../src/shared/components/fields/style.ts","../../src/shared/components/fields/text.tsx","../../src/shared/components/fill-mode/text-fill-mode.tsx","../../src/shared/components/fill-mode/toggle-fill-mode.tsx","../../src/shared/components/fill-mode/radio-button-fill-mode.tsx","../../src/shared/components/fields/combobox.tsx","../../src/shared/components/fill-mode/combobox-fill-mode.tsx","../../src/shared/components/fields/listbox.tsx","../../src/shared/components/fill-mode/listbox-fill-mode.tsx","../../src/shared/components/form-renderers.tsx","../../src/shared/components/form-renderer-registration.tsx","../../src/shared/index.ts"],"sourcesContent":["export { Fragment, useEffect, useRef, useCallback, useState, useMemo } from 'react';\nexport type { ReactNode, HTMLAttributes, CSSProperties, FormEvent, MouseEvent } from 'react';\n\n// React-specific select props\nexport const selectProps = (isMultiple: boolean, selectedValues: string[]) => ({\n value: isMultiple ? selectedValues : selectedValues[0] || '',\n});\n\nexport const optionProps = (\n isMultiple: boolean,\n selectedValues: string[],\n optionValue: string,\n) => ({\n // React doesn't need any extra props for options in multi-select\n});\n","import { CSSProperties, MouseEvent, useState } from '@framework';\nimport {\n PdfWidgetAnnoObject,\n PDF_FORM_FIELD_TYPE,\n PDF_FORM_FIELD_FLAG,\n PdfTextWidgetAnnoField,\n standardFontCssProperties,\n} from '@embedpdf/models';\nimport { TrackedAnnotation } from '@embedpdf/plugin-annotation';\n\nexport interface FormTextFieldProps {\n annotation: TrackedAnnotation<PdfWidgetAnnoObject>;\n isSelected: boolean;\n scale: number;\n pageIndex: number;\n onClick?: (e: MouseEvent<Element>) => void;\n style?: CSSProperties;\n}\n\nexport function FormTextField({\n annotation,\n isSelected,\n scale,\n onClick,\n style,\n}: FormTextFieldProps) {\n const [isHovered, setIsHovered] = useState(false);\n const { object } = annotation;\n\n const field = object.field;\n const isTextField = field.type === PDF_FORM_FIELD_TYPE.TEXTFIELD;\n const value = isTextField ? field.value : '';\n\n const isComb =\n isTextField &&\n !!(field.flag & PDF_FORM_FIELD_FLAG.TEXT_COMB) &&\n !!(field as PdfTextWidgetAnnoField).maxLen;\n const isMultiline = isTextField && !!(field.flag & PDF_FORM_FIELD_FLAG.TEXT_MULTIPLINE);\n const maxLen = isTextField ? (field as PdfTextWidgetAnnoField).maxLen : undefined;\n\n const borderWidth = (object.strokeWidth ?? 1) * scale;\n const fontStyle: CSSProperties = {\n fontSize: (object.fontSize ?? 12) * scale,\n ...standardFontCssProperties(object.fontFamily),\n color: object.fontColor ?? '#000000',\n lineHeight: 1.2,\n };\n\n return (\n <div\n onPointerDown={!isSelected ? onClick : undefined}\n onMouseEnter={() => setIsHovered(true)}\n onMouseLeave={() => setIsHovered(false)}\n style={{\n position: 'absolute',\n inset: 0,\n background: object.color ?? 'rgba(255, 255, 255, 0.9)',\n border: `${borderWidth}px solid ${object.strokeColor ?? 'rgba(0, 0, 0, 0.2)'}`,\n outline: isHovered || isSelected ? '1px solid rgba(66, 133, 244, 0.5)' : 'none',\n outlineOffset: -1,\n boxSizing: 'border-box',\n pointerEvents: 'auto',\n cursor: isSelected ? 'move' : 'pointer',\n display: 'flex',\n alignItems: isMultiline ? 'flex-start' : 'center',\n overflow: 'hidden',\n ...(!isComb ? { padding: `${borderWidth}px ${borderWidth}px` } : {}),\n ...style,\n }}\n >\n {isComb && maxLen ? (\n <CombPreview\n value={value ?? ''}\n maxLen={maxLen}\n scale={scale}\n width={object.rect.size.width}\n fontStyle={fontStyle}\n strokeColor={object.strokeColor ?? 'rgba(0, 0, 0, 0.2)'}\n />\n ) : (\n <span\n style={{\n ...fontStyle,\n display: 'block',\n width: '100%',\n whiteSpace: isMultiline ? 'pre-wrap' : 'nowrap',\n wordBreak: isMultiline ? 'break-word' : 'normal',\n overflowWrap: isMultiline ? 'break-word' : 'normal',\n overflow: 'hidden',\n textOverflow: isMultiline ? 'clip' : 'ellipsis',\n }}\n >\n {value}\n </span>\n )}\n </div>\n );\n}\n\nfunction CombPreview({\n value,\n maxLen,\n scale,\n width,\n fontStyle,\n strokeColor,\n}: {\n value: string;\n maxLen: number;\n scale: number;\n width: number;\n fontStyle: CSSProperties;\n strokeColor: string;\n}) {\n const cellWidth = (width * scale) / maxLen;\n const chars = value.split('');\n\n return (\n <div style={{ position: 'relative', width: '100%', height: '100%' }}>\n {Array.from({ length: maxLen }).map((_, i) => (\n <span\n key={i}\n style={{\n position: 'absolute',\n top: 0,\n left: i * cellWidth,\n width: cellWidth,\n height: '100%',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n borderRight: i < maxLen - 1 ? `1px solid ${strokeColor}` : 'none',\n boxSizing: 'border-box',\n ...fontStyle,\n }}\n >\n {chars[i] || ''}\n </span>\n ))}\n </div>\n );\n}\n","import { CSSProperties, MouseEvent, useState } from '@framework';\nimport { PdfWidgetAnnoObject, isWidgetChecked } from '@embedpdf/models';\nimport { TrackedAnnotation } from '@embedpdf/plugin-annotation';\n\nexport interface FormCheckboxProps {\n annotation: TrackedAnnotation<PdfWidgetAnnoObject>;\n isSelected: boolean;\n scale: number;\n pageIndex: number;\n onClick?: (e: MouseEvent<Element>) => void;\n style?: CSSProperties;\n}\n\nexport function FormCheckbox({ annotation, isSelected, scale, onClick, style }: FormCheckboxProps) {\n const [isHovered, setIsHovered] = useState(false);\n const { object } = annotation;\n\n const isChecked = isWidgetChecked(object);\n\n return (\n <div\n onPointerDown={!isSelected ? onClick : undefined}\n onMouseEnter={() => setIsHovered(true)}\n onMouseLeave={() => setIsHovered(false)}\n style={{\n position: 'absolute',\n inset: 0,\n background: object.color ?? '#FFFFFF',\n border: `${(object.strokeWidth ?? 1) * scale}px solid ${object.strokeColor ?? '#000000'}`,\n outline: isHovered || isSelected ? '1px solid rgba(66, 133, 244, 0.5)' : 'none',\n outlineOffset: -1,\n boxSizing: 'border-box',\n pointerEvents: 'auto',\n cursor: isSelected ? 'move' : 'pointer',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n ...style,\n }}\n >\n {isChecked && (\n <svg\n viewBox=\"0 0 100 100\"\n style={{\n width: '100%',\n height: '100%',\n }}\n >\n <path\n d=\"M28 48C27.45 50.21 29.45 63.13 30 67C30.55 69.21 34.58 72 39 72C44.52 71.45 76.55 32.55 76 32C77.1 31.45 76 25 76 25C74.34 22.24 68 25.45 68 26C68 26 43.55 53 43 53C41.34 53 40.55 41.1 40 40C33.37 36.69 29.1 45.79 28 48Z\"\n fill=\"#000000\"\n />\n </svg>\n )}\n </div>\n );\n}\n","import { CSSProperties, MouseEvent, useState } from '@framework';\nimport { PdfWidgetAnnoObject, isWidgetChecked } from '@embedpdf/models';\nimport { TrackedAnnotation } from '@embedpdf/plugin-annotation';\n\nexport interface FormRadioButtonProps {\n annotation: TrackedAnnotation<PdfWidgetAnnoObject>;\n isSelected: boolean;\n scale: number;\n pageIndex: number;\n onClick?: (e: MouseEvent<Element>) => void;\n style?: CSSProperties;\n}\n\nexport function FormRadioButton({\n annotation,\n isSelected,\n scale,\n onClick,\n style,\n}: FormRadioButtonProps) {\n const [isHovered, setIsHovered] = useState(false);\n const { object } = annotation;\n\n const isChecked = isWidgetChecked(object);\n\n return (\n <div\n onPointerDown={!isSelected ? onClick : undefined}\n onMouseEnter={() => setIsHovered(true)}\n onMouseLeave={() => setIsHovered(false)}\n style={{\n position: 'absolute',\n inset: 0,\n background: object.color ?? '#FFFFFF',\n border: `${(object.strokeWidth ?? 1) * scale}px solid ${object.strokeColor ?? '#000000'}`,\n borderRadius: '50%',\n outline: isHovered || isSelected ? '1px solid rgba(66, 133, 244, 0.5)' : 'none',\n outlineOffset: -1,\n boxSizing: 'border-box',\n pointerEvents: 'auto',\n cursor: isSelected ? 'move' : 'pointer',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n ...style,\n }}\n >\n {isChecked && (\n <div\n style={{\n width: '50%',\n height: '50%',\n borderRadius: '50%',\n background: '#000000',\n }}\n />\n )}\n </div>\n );\n}\n","import { CSSProperties, MouseEvent, useState } from '@framework';\nimport {\n PdfWidgetAnnoObject,\n PDF_FORM_FIELD_TYPE,\n standardFontCssProperties,\n} from '@embedpdf/models';\nimport { TrackedAnnotation } from '@embedpdf/plugin-annotation';\n\nexport interface FormComboboxProps {\n annotation: TrackedAnnotation<PdfWidgetAnnoObject>;\n isSelected: boolean;\n scale: number;\n pageIndex: number;\n onClick?: (e: MouseEvent<Element>) => void;\n style?: CSSProperties;\n}\n\nexport function FormCombobox({ annotation, isSelected, scale, onClick, style }: FormComboboxProps) {\n const [isHovered, setIsHovered] = useState(false);\n const { object } = annotation;\n\n const field = object.field;\n const options = field.type === PDF_FORM_FIELD_TYPE.COMBOBOX ? field.options : [];\n const selectedLabel = options.find((o) => o.isSelected)?.label ?? '';\n const borderWidth = (object.strokeWidth ?? 1) * scale;\n const fontSize = (object.fontSize ?? 12) * scale;\n\n return (\n <div\n onPointerDown={!isSelected ? onClick : undefined}\n onMouseEnter={() => setIsHovered(true)}\n onMouseLeave={() => setIsHovered(false)}\n style={{\n position: 'absolute',\n inset: 0,\n background: object.color ?? '#FFFFFF',\n border: `${borderWidth}px solid ${object.strokeColor ?? '#000000'}`,\n outline: isHovered || isSelected ? '1px solid rgba(66, 133, 244, 0.5)' : 'none',\n outlineOffset: -1,\n boxSizing: 'border-box',\n pointerEvents: 'auto',\n cursor: isSelected ? 'move' : 'pointer',\n display: 'flex',\n alignItems: 'center',\n overflow: 'hidden',\n ...style,\n }}\n >\n <span\n style={{\n flex: 1,\n padding: `0 ${4 * scale}px`,\n fontSize,\n ...standardFontCssProperties(object.fontFamily),\n color: object.fontColor ?? '#000000',\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n }}\n >\n {selectedLabel}\n </span>\n <div\n style={{\n width: 13 * scale,\n minWidth: 13 * scale,\n height: '100%',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n borderLeft: `1px solid ${object.strokeColor ?? '#000000'}`,\n }}\n >\n <svg viewBox=\"0 0 10 6\" style={{ width: 8 * scale, height: 5 * scale }} fill=\"currentColor\">\n <path d=\"M0 0 L5 6 L10 0 Z\" />\n </svg>\n </div>\n </div>\n );\n}\n","import { CSSProperties, MouseEvent, useState } from '@framework';\nimport {\n PdfWidgetAnnoObject,\n PDF_FORM_FIELD_TYPE,\n standardFontCssProperties,\n} from '@embedpdf/models';\nimport { TrackedAnnotation } from '@embedpdf/plugin-annotation';\n\nexport interface FormListboxProps {\n annotation: TrackedAnnotation<PdfWidgetAnnoObject>;\n isSelected: boolean;\n scale: number;\n pageIndex: number;\n onClick?: (e: MouseEvent<Element>) => void;\n style?: CSSProperties;\n}\n\nexport function FormListbox({ annotation, isSelected, scale, onClick, style }: FormListboxProps) {\n const [isHovered, setIsHovered] = useState(false);\n const { object } = annotation;\n\n const field = object.field;\n const options = field.type === PDF_FORM_FIELD_TYPE.LISTBOX ? field.options : [];\n const borderWidth = (object.strokeWidth ?? 1) * scale;\n const fontSize = (object.fontSize ?? 12) * scale;\n const lineHeight = fontSize * 1.2;\n\n return (\n <div\n onPointerDown={!isSelected ? onClick : undefined}\n onMouseEnter={() => setIsHovered(true)}\n onMouseLeave={() => setIsHovered(false)}\n style={{\n position: 'absolute',\n inset: 0,\n background: object.color ?? '#FFFFFF',\n border: `${borderWidth}px solid ${object.strokeColor ?? '#000000'}`,\n outline: isHovered || isSelected ? '1px solid rgba(66, 133, 244, 0.5)' : 'none',\n outlineOffset: -1,\n boxSizing: 'border-box',\n pointerEvents: 'auto',\n cursor: isSelected ? 'move' : 'pointer',\n overflow: 'hidden',\n display: 'flex',\n flexDirection: 'column',\n ...style,\n }}\n >\n {options.map((opt, i) => (\n <div\n key={i}\n style={{\n padding: `0 ${4 * scale}px`,\n fontSize,\n lineHeight: `${lineHeight}px`,\n ...standardFontCssProperties(object.fontFamily),\n color: opt.isSelected ? '#FFFFFF' : (object.fontColor ?? '#000000'),\n background: opt.isSelected ? 'rgba(0, 51, 113, 1)' : 'transparent',\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n }}\n >\n {opt.label}\n </div>\n ))}\n </div>\n );\n}\n","import { useCapability, usePlugin } from '@embedpdf/core/@framework';\nimport { useState, useEffect } from '@framework';\nimport { FormPlugin, FormDocumentState, initialDocumentState } from '@embedpdf/plugin-form';\n\nexport const useFormPlugin = () => usePlugin<FormPlugin>(FormPlugin.id);\nexport const useFormCapability = () => useCapability<FormPlugin>(FormPlugin.id);\n\n/**\n * Hook that subscribes to the form plugin's document state for a specific document.\n * Returns selectedFieldId and re-renders when the state changes.\n */\nexport const useFormDocumentState = (documentId: string): FormDocumentState => {\n const { provides } = useFormCapability();\n const [state, setState] = useState<FormDocumentState>(\n provides?.forDocument(documentId)?.getState() ?? { ...initialDocumentState },\n );\n\n useEffect(() => {\n if (!provides) return;\n\n const scope = provides.forDocument(documentId);\n\n // Sync with current state immediately in case it changed between render and effect\n setState(scope.getState());\n\n return scope.onStateChange((newState) => {\n setState(newState);\n });\n }, [provides, documentId]);\n\n return state;\n};\n","import { useCallback, useEffect, useMemo, useState } from '@framework';\nimport { PDF_FORM_FIELD_FLAG, PdfWidgetAnnoField, PdfWidgetAnnoObject } from '@embedpdf/models';\nimport { AnnotationRendererProps } from '@embedpdf/plugin-annotation/@framework';\nimport { useFormCapability } from './use-form';\n\nexport function useFormWidgetState(props: AnnotationRendererProps<PdfWidgetAnnoObject>) {\n const { currentObject: annotation, scale, pageIndex } = props;\n const field = annotation.field;\n const { provides: formProvides } = useFormCapability();\n const [renderKey, setRenderKey] = useState(0);\n\n const isReadOnly = !!(field.flag & PDF_FORM_FIELD_FLAG.READONLY);\n\n const scope = useMemo(\n () => formProvides?.forDocument(props.documentId),\n [formProvides, props.documentId],\n );\n\n useEffect(() => {\n if (!scope) return;\n return scope.onFieldValueChange((event) => {\n if (event.annotationId === annotation.id) {\n setRenderKey((k) => k + 1);\n }\n });\n }, [scope, annotation.id]);\n\n const handleChangeField = useCallback(\n (newField: PdfWidgetAnnoField) => {\n if (!scope) return;\n scope.setFormFieldValues(pageIndex, annotation, newField);\n },\n [scope, pageIndex, annotation],\n );\n\n return { annotation, field, scale, pageIndex, scope, handleChangeField, renderKey, isReadOnly };\n}\n","import { Fragment, HTMLAttributes, CSSProperties, useEffect, useRef, useState } from '@framework';\nimport { ignore, PdfErrorCode, PdfWidgetAnnoObject } from '@embedpdf/models';\n\nimport { useFormCapability } from '../hooks/use-form';\n\ntype RenderWidgetProps = Omit<HTMLAttributes<HTMLImageElement>, 'style'> & {\n pageIndex: number;\n annotation: PdfWidgetAnnoObject;\n scaleFactor?: number;\n dpr?: number;\n renderKey?: number;\n style?: CSSProperties;\n};\n\nexport function RenderWidget({\n pageIndex,\n annotation,\n scaleFactor = 1,\n renderKey = 0,\n style,\n ...props\n}: RenderWidgetProps) {\n const { provides: formProvides } = useFormCapability();\n const [imageUrl, setImageUrl] = useState<string | null>(null);\n const urlRef = useRef<string | null>(null);\n\n const { width, height } = annotation.rect.size;\n\n useEffect(() => {\n if (!formProvides) return;\n\n const task = formProvides.renderWidget({\n pageIndex,\n annotation,\n options: {\n scaleFactor,\n dpr: window.devicePixelRatio,\n },\n });\n\n task.wait((blob) => {\n const url = URL.createObjectURL(blob);\n if (urlRef.current) {\n URL.revokeObjectURL(urlRef.current);\n }\n urlRef.current = url;\n setImageUrl(url);\n }, ignore);\n\n return () => {\n task.abort({\n code: PdfErrorCode.Cancelled,\n message: 'canceled render task',\n });\n };\n }, [pageIndex, scaleFactor, formProvides, annotation.id, width, height, renderKey]);\n\n useEffect(() => {\n return () => {\n if (urlRef.current) {\n URL.revokeObjectURL(urlRef.current);\n urlRef.current = null;\n }\n };\n }, []);\n\n return (\n <Fragment>\n {imageUrl && (\n <img\n src={imageUrl}\n {...props}\n style={{\n width: '100%',\n height: '100%',\n display: 'block',\n ...(style || {}),\n }}\n />\n )}\n </Fragment>\n );\n}\n","import { CSSProperties } from '@framework';\n\nconst baseStyle: CSSProperties = {\n position: 'absolute',\n top: 0,\n left: 0,\n padding: 0,\n margin: 0,\n width: '100%',\n height: '100%',\n};\n\nconst baseInputStyle: CSSProperties = {\n ...baseStyle,\n borderRadius: 0,\n outline: 'none',\n boxSizing: 'border-box',\n};\n\nexport const checkboxStyle: CSSProperties = {\n ...baseStyle,\n borderRadius: 0,\n backgroundColor: 'transparent',\n borderWidth: 0,\n borderStyle: 'none',\n outline: 'none',\n};\n\nexport const inputStyle: CSSProperties = baseInputStyle;\n\nexport const selectStyle: CSSProperties = {\n ...baseInputStyle,\n cursor: 'inherit',\n};\n\nexport const textareaStyle: CSSProperties = {\n ...baseInputStyle,\n resize: 'none',\n lineHeight: 1.14,\n};\n\nexport const buttonStyle: CSSProperties = baseStyle;\n","import { PDF_FORM_FIELD_FLAG, standardFontCssProperties } from '@embedpdf/models';\nimport { CSSProperties, FormEvent, useCallback, useEffect, useMemo, useState } from '@framework';\nimport { useIOSZoomPrevention } from '@embedpdf/plugin-annotation/@framework';\n\nimport { TextFieldProps } from '../types';\nimport { inputStyle, textareaStyle } from './style';\n\nconst combContainerStyle: CSSProperties = {\n position: 'relative',\n width: '100%',\n height: '100%',\n borderRadius: 0,\n boxSizing: 'border-box',\n};\n\nconst combHiddenInputStyle: CSSProperties = {\n position: 'absolute',\n top: 0,\n left: 0,\n width: '100%',\n height: '100%',\n opacity: 0,\n padding: 0,\n margin: 0,\n border: 'none',\n zIndex: 1,\n};\n\nconst combCellStyle: CSSProperties = {\n position: 'absolute',\n top: 0,\n height: '100%',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n pointerEvents: 'none',\n};\n\nconst combCaretStyle: CSSProperties = {\n position: 'absolute',\n top: '15%',\n height: '70%',\n width: 1,\n backgroundColor: 'black',\n pointerEvents: 'none',\n};\n\ninterface CombFieldProps {\n inputRef: (el: HTMLInputElement | null) => void;\n required: boolean;\n disabled: boolean;\n password: boolean;\n name: string;\n value: string;\n maxLen: number;\n cellWidth: number;\n chars: string[];\n caretIndex: number;\n containerStyle: CSSProperties;\n cellFontStyle: CSSProperties;\n onFocus?: () => void;\n onChange: (evt: FormEvent) => void;\n onBlur?: () => void;\n}\n\nfunction CombField(props: CombFieldProps) {\n const {\n inputRef,\n required,\n disabled,\n password,\n name,\n value,\n maxLen,\n cellWidth,\n chars,\n caretIndex,\n containerStyle,\n cellFontStyle,\n onFocus,\n onChange,\n onBlur,\n } = props;\n\n const [caretVisible, setCaretVisible] = useState(true);\n\n useEffect(() => {\n setCaretVisible(true);\n const id = setInterval(() => setCaretVisible((v) => !v), 530);\n return () => clearInterval(id);\n }, [caretIndex]);\n\n const showCaret = caretIndex < maxLen;\n\n return (\n <div style={containerStyle}>\n <input\n ref={inputRef}\n required={required}\n disabled={disabled}\n type={password ? 'password' : 'text'}\n name={name}\n aria-label={name}\n value={value}\n maxLength={maxLen}\n onFocus={onFocus}\n onChange={onChange}\n onBlur={onBlur}\n style={combHiddenInputStyle}\n />\n {Array.from({ length: maxLen }).map((_, i) => (\n <span\n key={i}\n style={{\n ...combCellStyle,\n ...cellFontStyle,\n left: i * cellWidth,\n width: cellWidth,\n }}\n >\n {chars[i] || ''}\n </span>\n ))}\n {showCaret && (\n <span\n style={{\n ...combCaretStyle,\n left: caretIndex * cellWidth + cellWidth / 2,\n opacity: caretVisible ? 1 : 0,\n }}\n />\n )}\n </div>\n );\n}\n\nexport function TextField(props: TextFieldProps) {\n const {\n annotation,\n isEditable,\n onChangeField,\n onFocus,\n onBlur,\n inputRef,\n scale,\n syncExternalValue = true,\n } = props;\n const field = annotation.field;\n\n const { flag } = field;\n const name = field.name;\n const value = field.value;\n\n const [localValue, setLocalValue] = useState(value);\n\n useEffect(() => {\n if (!syncExternalValue) return;\n setLocalValue(value);\n }, [value, syncExternalValue]);\n\n const changeValue = useCallback(\n (evt: FormEvent) => {\n const newValue = (evt.target as HTMLInputElement).value;\n setLocalValue(newValue);\n onChangeField?.({ ...field, value: newValue });\n },\n [onChangeField, field],\n );\n\n const bw = (annotation.strokeWidth ?? 0) * scale;\n const fontCss = standardFontCssProperties(annotation.fontFamily);\n const { adjustedFontPx, wrapperStyle } = useIOSZoomPrevention(annotation.fontSize * scale, true);\n\n const visualStyle: CSSProperties = useMemo(\n () => ({\n backgroundColor: annotation.color ?? 'transparent',\n borderStyle: 'solid',\n borderColor: annotation.strokeColor ?? 'transparent',\n borderWidth: bw,\n color: annotation.fontColor,\n ...fontCss,\n fontSize: adjustedFontPx,\n padding: `${bw}px ${bw}px`,\n }),\n [annotation.color, annotation.strokeColor, annotation.fontColor, adjustedFontPx, bw, fontCss],\n );\n\n const isDisabled = !isEditable || !!(flag & PDF_FORM_FIELD_FLAG.READONLY);\n const isRequired = !!(flag & PDF_FORM_FIELD_FLAG.REQUIRED);\n const isPassword = !!(flag & PDF_FORM_FIELD_FLAG.TEXT_PASSWORD);\n const isMultipleLine = !!(flag & PDF_FORM_FIELD_FLAG.TEXT_MULTIPLINE);\n const isComb = !!(flag & PDF_FORM_FIELD_FLAG.TEXT_COMB);\n const maxLen = field.maxLen;\n\n if (isComb && maxLen) {\n const cellWidth = (annotation.rect.size.width * scale) / maxLen;\n const chars = (localValue || '').split('');\n const caretIndex = chars.length;\n\n const combContainer: CSSProperties = {\n ...combContainerStyle,\n backgroundColor: annotation.color ?? 'transparent',\n borderStyle: 'solid',\n borderColor: annotation.strokeColor ?? 'transparent',\n borderWidth: bw,\n };\n\n const cellFont: CSSProperties = {\n color: annotation.fontColor,\n ...fontCss,\n fontSize: adjustedFontPx,\n };\n\n const combContent = (\n <CombField\n inputRef={inputRef as (el: HTMLInputElement | null) => void}\n required={isRequired}\n disabled={isDisabled}\n password={isPassword}\n name={name}\n value={localValue}\n maxLen={maxLen}\n cellWidth={cellWidth}\n chars={chars}\n caretIndex={caretIndex}\n containerStyle={combContainer}\n cellFontStyle={cellFont}\n onFocus={onFocus}\n onChange={changeValue}\n onBlur={onBlur}\n />\n );\n\n return wrapperStyle ? <div style={wrapperStyle}>{combContent}</div> : combContent;\n }\n\n const inputContent = isMultipleLine ? (\n <textarea\n ref={inputRef as (el: HTMLTextAreaElement | null) => void}\n required={isRequired}\n disabled={isDisabled}\n name={name}\n aria-label={name}\n value={localValue}\n maxLength={maxLen}\n onFocus={onFocus}\n onChange={changeValue}\n onBlur={onBlur}\n style={{ ...textareaStyle, ...visualStyle }}\n />\n ) : (\n <input\n ref={inputRef as (el: HTMLInputElement | null) => void}\n required={isRequired}\n disabled={isDisabled}\n type={isPassword ? 'password' : 'text'}\n name={name}\n aria-label={name}\n value={localValue}\n maxLength={maxLen}\n onFocus={onFocus}\n onChange={changeValue}\n onBlur={onBlur}\n style={{ ...inputStyle, ...visualStyle }}\n />\n );\n\n return wrapperStyle ? <div style={wrapperStyle}>{inputContent}</div> : inputContent;\n}\n","import { useCallback, useEffect, useRef, useState } from '@framework';\nimport { PdfWidgetAnnoObject } from '@embedpdf/models';\nimport { AnnotationRendererProps } from '@embedpdf/plugin-annotation/@framework';\nimport { useFormWidgetState } from '../../hooks/use-form-widget-state';\nimport { useFormDocumentState } from '../../hooks/use-form';\nimport { RenderWidget } from '../render-widget';\nimport { TextField } from '../fields/text';\nimport { TextFieldProps } from '../types';\n\nexport function TextFillMode(props: AnnotationRendererProps<PdfWidgetAnnoObject>) {\n const { annotation, scale, pageIndex, scope, handleChangeField, renderKey, isReadOnly } =\n useFormWidgetState(props);\n const formState = useFormDocumentState(props.documentId);\n const [editing, setEditing] = useState(false);\n const inputRef = useRef<HTMLElement | null>(null);\n\n const isFocused = formState.selectedFieldId === annotation.id;\n\n useEffect(() => {\n if (isFocused && inputRef.current && document.activeElement !== inputRef.current) {\n inputRef.current.focus();\n }\n }, [isFocused]);\n\n const handleFocus = useCallback(() => {\n if (isReadOnly) return;\n scope?.selectField(annotation.id);\n setEditing(true);\n }, [isReadOnly, scope, annotation.id]);\n\n const handleBlur = useCallback(() => {\n setEditing(false);\n if (scope?.getSelectedFieldId() === annotation.id) {\n scope?.deselectField();\n }\n }, [scope, annotation.id]);\n\n const handleInputRef = useCallback((el: HTMLElement | null) => {\n inputRef.current = el;\n }, []);\n\n return (\n <div\n style={{\n width: '100%',\n height: '100%',\n overflow: 'hidden',\n position: 'relative',\n pointerEvents: 'auto',\n outline: 'none',\n }}\n >\n <RenderWidget\n pageIndex={pageIndex}\n annotation={annotation}\n scaleFactor={scale}\n renderKey={renderKey}\n style={{\n position: 'absolute',\n inset: 0,\n pointerEvents: 'none',\n visibility: editing ? 'hidden' : 'visible',\n }}\n />\n <div\n style={{\n position: 'absolute',\n inset: 0,\n zIndex: 1,\n opacity: editing ? 1 : 0,\n }}\n >\n <TextField\n annotation={annotation as TextFieldProps['annotation']}\n scale={scale}\n pageIndex={pageIndex}\n isEditable={true}\n onChangeField={handleChangeField}\n syncExternalValue={!editing}\n onFocus={handleFocus}\n onBlur={handleBlur}\n inputRef={handleInputRef}\n />\n </div>\n </div>\n );\n}\n","import { useCallback, useEffect, useRef } from '@framework';\nimport { PdfWidgetAnnoObject, isWidgetChecked } from '@embedpdf/models';\nimport { AnnotationRendererProps } from '@embedpdf/plugin-annotation/@framework';\nimport { useFormWidgetState } from '../../hooks/use-form-widget-state';\nimport { useFormDocumentState } from '../../hooks/use-form';\nimport { RenderWidget } from '../render-widget';\n\nexport function ToggleFillMode(props: AnnotationRendererProps<PdfWidgetAnnoObject>) {\n const { annotation, field, scale, pageIndex, scope, handleChangeField, renderKey, isReadOnly } =\n useFormWidgetState(props);\n const formState = useFormDocumentState(props.documentId);\n const wrapperRef = useRef<HTMLDivElement>(null);\n\n const isFocused = formState.selectedFieldId === annotation.id;\n\n useEffect(() => {\n if (isFocused && wrapperRef.current && document.activeElement !== wrapperRef.current) {\n wrapperRef.current.focus();\n }\n }, [isFocused]);\n\n const toggle = useCallback(() => {\n if (isReadOnly) return;\n const checked = isWidgetChecked(annotation);\n const newValue = checked ? 'Off' : (annotation.exportValue ?? 'Yes');\n handleChangeField({ ...field, value: newValue });\n }, [isReadOnly, annotation, field, handleChangeField]);\n\n const handleClick = useCallback(() => {\n if (isReadOnly) return;\n scope?.selectField(annotation.id);\n toggle();\n }, [isReadOnly, scope, annotation.id, toggle]);\n\n const handleFocus = useCallback(() => {\n if (isReadOnly) return;\n scope?.selectField(annotation.id);\n }, [isReadOnly, scope, annotation.id]);\n\n const handleBlur = useCallback(() => {\n if (scope?.getSelectedFieldId() === annotation.id) {\n scope?.deselectField();\n }\n }, [scope, annotation.id]);\n\n const handleKeyDown = useCallback(\n (e: { key: string; preventDefault: () => void }) => {\n if (e.key === ' ' || e.key === 'Enter') {\n e.preventDefault();\n toggle();\n }\n },\n [toggle],\n );\n\n return (\n <div\n ref={wrapperRef}\n tabIndex={isReadOnly ? -1 : 0}\n onClick={handleClick}\n onFocus={handleFocus}\n onBlur={handleBlur}\n onKeyDown={handleKeyDown}\n style={{\n width: '100%',\n height: '100%',\n overflow: 'hidden',\n cursor: isReadOnly ? 'default' : 'pointer',\n pointerEvents: 'auto',\n outline: isFocused ? '2px solid rgba(66, 133, 244, 0.8)' : 'none',\n outlineOffset: -2,\n }}\n >\n <RenderWidget\n pageIndex={pageIndex}\n annotation={annotation}\n scaleFactor={scale}\n renderKey={renderKey}\n style={{ pointerEvents: 'none' }}\n />\n </div>\n );\n}\n","import { useCallback, useEffect, useRef } from '@framework';\nimport { PdfWidgetAnnoObject, isWidgetChecked } from '@embedpdf/models';\nimport { AnnotationRendererProps } from '@embedpdf/plugin-annotation/@framework';\nimport { useFormWidgetState } from '../../hooks/use-form-widget-state';\nimport { useFormDocumentState } from '../../hooks/use-form';\nimport { RenderWidget } from '../render-widget';\n\nexport function RadioButtonFillMode(props: AnnotationRendererProps<PdfWidgetAnnoObject>) {\n const { annotation, field, scale, pageIndex, scope, handleChangeField, renderKey, isReadOnly } =\n useFormWidgetState(props);\n const formState = useFormDocumentState(props.documentId);\n const wrapperRef = useRef<HTMLDivElement>(null);\n\n const isFocused = formState.selectedFieldId === annotation.id;\n\n useEffect(() => {\n if (isFocused && wrapperRef.current && document.activeElement !== wrapperRef.current) {\n wrapperRef.current.focus();\n }\n }, [isFocused]);\n\n const selectRadio = useCallback(() => {\n if (isReadOnly) return;\n if (!isWidgetChecked(annotation) && annotation.exportValue) {\n handleChangeField({ ...field, value: annotation.exportValue });\n }\n }, [isReadOnly, annotation, field, handleChangeField]);\n\n const handleClick = useCallback(() => {\n if (isReadOnly) return;\n scope?.selectField(annotation.id);\n selectRadio();\n }, [isReadOnly, scope, annotation.id, selectRadio]);\n\n const handleFocus = useCallback(() => {\n if (isReadOnly) return;\n scope?.selectField(annotation.id);\n }, [isReadOnly, scope, annotation.id]);\n\n const handleBlur = useCallback(() => {\n if (scope?.getSelectedFieldId() === annotation.id) {\n scope?.deselectField();\n }\n }, [scope, annotation.id]);\n\n const handleKeyDown = useCallback(\n (e: { key: string; preventDefault: () => void }) => {\n if (e.key === ' ' || e.key === 'Enter') {\n e.preventDefault();\n selectRadio();\n }\n },\n [selectRadio],\n );\n\n return (\n <div\n ref={wrapperRef}\n tabIndex={isReadOnly ? -1 : 0}\n onClick={handleClick}\n onFocus={handleFocus}\n onBlur={handleBlur}\n onKeyDown={handleKeyDown}\n style={{\n width: '100%',\n height: '100%',\n overflow: 'hidden',\n cursor: isReadOnly ? 'default' : 'pointer',\n pointerEvents: 'auto',\n outline: isFocused ? '2px solid rgba(66, 133, 244, 0.8)' : 'none',\n outlineOffset: -2,\n }}\n >\n <RenderWidget\n pageIndex={pageIndex}\n annotation={annotation}\n scaleFactor={scale}\n renderKey={renderKey}\n style={{ pointerEvents: 'none' }}\n />\n </div>\n );\n}\n","import { PdfWidgetAnnoOption, PDF_FORM_FIELD_FLAG } from '@embedpdf/models';\nimport { FormEvent, useCallback, selectProps, optionProps } from '@framework';\n\nimport { ComboboxFieldProps } from '../types';\nimport { selectStyle } from './style';\n\nexport function ComboboxField(props: ComboboxFieldProps) {\n const { annotation, isEditable, onChangeField, onBlur, inputRef } = props;\n const field = annotation.field;\n\n const { flag, options } = field;\n const name = field.alternateName || field.name;\n\n const isDisabled = !isEditable || !!(flag & PDF_FORM_FIELD_FLAG.READONLY);\n const isRequired = !!(flag & PDF_FORM_FIELD_FLAG.REQUIRED);\n\n const handleChange = useCallback(\n (evt: FormEvent) => {\n const select = evt.target as HTMLSelectElement;\n const updatedOptions = options.map((opt, i) => ({\n ...opt,\n isSelected: i === select.selectedIndex,\n }));\n onChangeField?.({ ...field, options: updatedOptions });\n },\n [onChangeField, field, options],\n );\n\n const selectedTexts = options.filter((opt) => opt.isSelected).map((opt) => opt.label);\n\n return (\n <select\n ref={inputRef as (el: HTMLSelectElement | null) => void}\n required={isRequired}\n disabled={isDisabled}\n name={name}\n aria-label={name}\n {...selectProps(false, selectedTexts)}\n onChange={handleChange}\n onBlur={onBlur}\n style={{ ...selectStyle, opacity: 0 }}\n >\n {options.map((option: PdfWidgetAnnoOption, index) => {\n return (\n <option\n key={index}\n value={option.label}\n {...optionProps(false, selectedTexts, option.label)}\n >\n {option.label}\n </option>\n );\n })}\n </select>\n );\n}\n","import { useCallback, useEffect, useRef } from '@framework';\nimport { PdfWidgetAnnoObject } from '@embedpdf/models';\nimport { AnnotationRendererProps } from '@embedpdf/plugin-annotation/@framework';\nimport { useFormWidgetState } from '../../hooks/use-form-widget-state';\nimport { useFormDocumentState } from '../../hooks/use-form';\nimport { RenderWidget } from '../render-widget';\nimport { ComboboxField } from '../fields/combobox';\nimport { ComboboxFieldProps } from '../types';\n\nexport function ComboboxFillMode(props: AnnotationRendererProps<PdfWidgetAnnoObject>) {\n const { annotation, scale, pageIndex, scope, handleChangeField, renderKey, isReadOnly } =\n useFormWidgetState(props);\n const formState = useFormDocumentState(props.documentId);\n const wrapperRef = useRef<HTMLDivElement>(null);\n const selectElRef = useRef<HTMLElement | null>(null);\n\n const isFocused = formState.selectedFieldId === annotation.id;\n\n useEffect(() => {\n if (isFocused && wrapperRef.current && !wrapperRef.current.contains(document.activeElement)) {\n (selectElRef.current ?? wrapperRef.current).focus();\n }\n }, [isFocused]);\n\n const handleFocus = useCallback(() => {\n scope?.selectField(annotation.id);\n }, [scope, annotation.id]);\n\n const handleBlur = useCallback(() => {\n requestAnimationFrame(() => {\n if (wrapperRef.current?.contains(document.activeElement)) return;\n if (scope?.getSelectedFieldId() === annotation.id) {\n scope?.deselectField();\n }\n });\n }, [scope, annotation.id]);\n\n const selectInputRef = useCallback((el: HTMLElement | null) => {\n selectElRef.current = el;\n }, []);\n\n return (\n <div\n ref={wrapperRef}\n onFocus={handleFocus}\n onBlur={handleBlur}\n style={{\n width: '100%',\n height: '100%',\n overflow: 'hidden',\n cursor: isReadOnly ? 'default' : 'pointer',\n pointerEvents: 'auto',\n outline: isFocused ? '2px solid rgba(66, 133, 244, 0.8)' : 'none',\n outlineOffset: -2,\n }}\n >\n <RenderWidget\n pageIndex={pageIndex}\n annotation={annotation}\n scaleFactor={scale}\n renderKey={renderKey}\n style={{ pointerEvents: 'none' }}\n />\n <ComboboxField\n annotation={annotation as ComboboxFieldProps['annotation']}\n scale={scale}\n pageIndex={pageIndex}\n isEditable={true}\n onChangeField={handleChangeField}\n inputRef={selectInputRef}\n />\n </div>\n );\n}\n","import { PDF_FORM_FIELD_FLAG, standardFontCssProperties } from '@embedpdf/models';\nimport { CSSProperties, useCallback, useMemo } from '@framework';\n\nimport { ListboxFieldProps } from '../types';\n\nexport function ListboxField(props: ListboxFieldProps) {\n const { annotation, isEditable, onChangeField, onBlur, inputRef, scale } = props;\n const field = annotation.field;\n\n const { flag, options } = field;\n const isDisabled = !isEditable || !!(flag & PDF_FORM_FIELD_FLAG.READONLY);\n const isMultipleChoice = !!(flag & PDF_FORM_FIELD_FLAG.CHOICE_MULTL_SELECT);\n\n const bw = (annotation.strokeWidth ?? 0) * scale;\n const fontSize = (annotation.fontSize ?? 12) * scale;\n const lineHeight = fontSize * 1.2;\n const fontCss = standardFontCssProperties(annotation.fontFamily);\n\n const containerStyle: CSSProperties = useMemo(\n () => ({\n position: 'absolute',\n top: 0,\n left: 0,\n width: '100%',\n height: '100%',\n background: annotation.color ?? '#FFFFFF',\n borderStyle: 'solid',\n borderColor: annotation.strokeColor ?? '#000000',\n borderWidth: bw,\n boxSizing: 'border-box',\n overflow: 'auto',\n display: 'flex',\n flexDirection: 'column',\n outline: 'none',\n }),\n [annotation.color, annotation.strokeColor, bw],\n );\n\n const handleOptionClick = useCallback(\n (clickedIndex: number) => {\n if (isDisabled) return;\n const updatedOptions = options.map((opt, i) => ({\n ...opt,\n isSelected: isMultipleChoice\n ? i === clickedIndex\n ? !opt.isSelected\n : opt.isSelected\n : i === clickedIndex,\n }));\n onChangeField?.({ ...field, options: updatedOptions });\n },\n [isDisabled, isMultipleChoice, options, field, onChangeField],\n );\n\n return (\n <div\n ref={inputRef as (el: HTMLDivElement | null) => void}\n onBlur={onBlur}\n style={containerStyle}\n >\n {options.map((opt, i) => (\n <div\n key={i}\n onClick={() => handleOptionClick(i)}\n style={{\n padding: `0 ${4 * scale}px`,\n fontSize,\n lineHeight: `${lineHeight}px`,\n ...fontCss,\n color: opt.isSelected ? '#FFFFFF' : (annotation.fontColor ?? '#000000'),\n background: opt.isSelected ? 'rgba(0, 51, 113, 1)' : 'transparent',\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n cursor: isDisabled ? 'default' : 'pointer',\n }}\n >\n {opt.label}\n </div>\n ))}\n </div>\n );\n}\n","import { useCallback, useEffect, useRef, useState } from '@framework';\nimport { PdfWidgetAnnoObject } from '@embedpdf/models';\nimport { AnnotationRendererProps } from '@embedpdf/plugin-annotation/@framework';\nimport { useFormWidgetState } from '../../hooks/use-form-widget-state';\nimport { useFormDocumentState } from '../../hooks/use-form';\nimport { RenderWidget } from '../render-widget';\nimport { ListboxField } from '../fields/listbox';\nimport { ListboxFieldProps } from '../types';\n\nexport function ListboxFillMode(props: AnnotationRendererProps<PdfWidgetAnnoObject>) {\n const { annotation, scale, pageIndex, scope, handleChangeField, renderKey, isReadOnly } =\n useFormWidgetState(props);\n const formState = useFormDocumentState(props.documentId);\n const [editing, setEditing] = useState(false);\n const wrapperRef = useRef<HTMLDivElement>(null);\n\n const isFocused = formState.selectedFieldId === annotation.id;\n\n useEffect(() => {\n if (isFocused && wrapperRef.current && !wrapperRef.current.contains(document.activeElement)) {\n wrapperRef.current.focus();\n }\n }, [isFocused]);\n\n const handleFocus = useCallback(() => {\n if (isReadOnly) return;\n scope?.selectField(annotation.id);\n setEditing(true);\n }, [isReadOnly, scope, annotation.id]);\n\n const handleBlur = useCallback(() => {\n requestAnimationFrame(() => {\n if (wrapperRef.current?.contains(document.activeElement)) return;\n setEditing(false);\n if (scope?.getSelectedFieldId() === annotation.id) {\n scope?.deselectField();\n }\n });\n }, [scope, annotation.id]);\n\n return (\n <div\n ref={wrapperRef}\n tabIndex={isReadOnly ? -1 : 0}\n onFocus={handleFocus}\n onBlur={handleBlur}\n style={{\n width: '100%',\n height: '100%',\n overflow: 'hidden',\n cursor: isReadOnly ? 'default' : 'pointer',\n pointerEvents: 'auto',\n outline: isFocused && !editing ? '2px solid rgba(66, 133, 244, 0.8)' : 'none',\n outlineOffset: -2,\n }}\n >\n <ListboxField\n annotation={annotation as ListboxFieldProps['annotation']}\n scale={scale}\n pageIndex={pageIndex}\n isEditable={true}\n onChangeField={handleChangeField}\n />\n {!editing && (\n <RenderWidget\n pageIndex={pageIndex}\n annotation={annotation}\n scaleFactor={scale}\n renderKey={renderKey}\n style={{ pointerEvents: 'none' }}\n />\n )}\n </div>\n );\n}\n","import {\n PdfAnnotationSubtype,\n PdfWidgetAnnoObject,\n PDF_FORM_FIELD_TYPE,\n PdfStandardFont,\n Rect,\n} from '@embedpdf/models';\nimport { createRenderer, BoxedAnnotationRenderer } from '@embedpdf/plugin-annotation/@framework';\nimport { FormTextField } from './annotations/form-text-field';\nimport { FormCheckbox } from './annotations/form-checkbox';\nimport { FormRadioButton } from './annotations/form-radio-button';\nimport { FormCombobox } from './annotations/form-combobox';\nimport { FormListbox } from './annotations/form-listbox';\nimport { TextFillMode } from './fill-mode/text-fill-mode';\nimport { ToggleFillMode } from './fill-mode/toggle-fill-mode';\nimport { RadioButtonFillMode } from './fill-mode/radio-button-fill-mode';\nimport { ComboboxFillMode } from './fill-mode/combobox-fill-mode';\nimport { ListboxFillMode } from './fill-mode/listbox-fill-mode';\n\nexport interface WidgetPreviewData {\n rect: Rect;\n fontFamily?: PdfStandardFont;\n fontSize?: number;\n fontColor?: string;\n}\n\nexport const formRenderers: BoxedAnnotationRenderer[] = [\n createRenderer<PdfWidgetAnnoObject, WidgetPreviewData>({\n id: 'formTextField',\n matches: (a): a is PdfWidgetAnnoObject =>\n a.type === PdfAnnotationSubtype.WIDGET && a.field?.type === PDF_FORM_FIELD_TYPE.TEXTFIELD,\n render: ({ annotation, isSelected, scale, pageIndex, onClick }) => (\n <FormTextField\n annotation={annotation}\n isSelected={isSelected}\n scale={scale}\n pageIndex={pageIndex}\n onClick={onClick}\n />\n ),\n renderPreview: ({ bounds, scale }) => (\n <div\n style={{\n position: 'absolute' as const,\n left: 0,\n top: 0,\n width: bounds.size.width * scale,\n height: bounds.size.height * scale,\n border: '1px dashed rgba(66, 133, 244, 0.6)',\n backgroundColor: 'rgba(255, 255, 255, 0.9)',\n boxSizing: 'border-box' as const,\n display: 'flex',\n alignItems: 'center',\n padding: `0 ${2 * scale}px`,\n overflow: 'hidden',\n }}\n />\n ),\n interactionDefaults: { isDraggable: false, isResizable: true, isRotatable: false },\n useAppearanceStream: false,\n renderLocked: (props) => <TextFillMode {...props} />,\n }),\n createRenderer<PdfWidgetAnnoObject, WidgetPreviewData>({\n id: 'formCheckbox',\n matches: (a): a is PdfWidgetAnnoObject =>\n a.type === PdfAnnotationSubtype.WIDGET && a.field?.type === PDF_FORM_FIELD_TYPE.CHECKBOX,\n render: ({ annotation, isSelected, scale, pageIndex, onClick }) => (\n <FormCheckbox\n annotation={annotation}\n isSelected={isSelected}\n scale={scale}\n pageIndex={pageIndex}\n onClick={onClick}\n />\n ),\n renderPreview: ({ bounds, scale }) => (\n <div\n style={{\n position: 'absolute' as const,\n left: 0,\n top: 0,\n width: bounds.size.width * scale,\n height: bounds.size.height * scale,\n border: '1px dashed rgba(66, 133, 244, 0.6)',\n backgroundColor: 'rgba(255, 255, 255, 0.9)',\n boxSizing: 'border-box' as const,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n }}\n />\n ),\n interactionDefaults: { isDraggable: false, isResizable: true, isRotatable: false },\n useAppearanceStream: false,\n renderLocked: (props) => <ToggleFillMode {...props} />,\n }),\n createRenderer<PdfWidgetAnnoObject, WidgetPreviewData>({\n id: 'formRadioButton',\n matches: (a): a is PdfWidgetAnnoObject =>\n a.type === PdfAnnotationSubtype.WIDGET && a.field?.type === PDF_FORM_FIELD_TYPE.RADIOBUTTON,\n render: ({ annotation, isSelected, scale, pageIndex, onClick }) => (\n <FormRadioButton\n annotation={annotation}\n isSelected={isSelected}\n scale={scale}\n pageIndex={pageIndex}\n onClick={onClick}\n />\n ),\n renderPreview: ({ bounds, scale }) => (\n <div\n style={{\n position: 'absolute' as const,\n left: 0,\n top: 0,\n width: bounds.size.width * scale,\n height: bounds.size.height * scale,\n border: '1px dashed rgba(66, 133, 244, 0.6)',\n backgroundColor: 'rgba(255, 255, 255, 0.9)',\n borderRadius: '50%',\n boxSizing: 'border-box' as const,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n }}\n />\n ),\n interactionDefaults: { isDraggable: false, isResizable: true, isRotatable: false },\n useAppearanceStream: false,\n renderLocked: (props) => <RadioButtonFillMode {...props} />,\n }),\n createRenderer<PdfWidgetAnnoObject, WidgetPreviewData>({\n id: 'formCombobox',\n matches: (a): a is PdfWidgetAnnoObject =>\n a.type === PdfAnnotationSubtype.WIDGET && a.field?.type === PDF_FORM_FIELD_TYPE.COMBOBOX,\n render: ({ annotation, isSelected, scale, pageIndex, onClick }) => (\n <FormCombobox\n annotation={annotation}\n isSelected={isSelected}\n scale={scale}\n pageIndex={pageIndex}\n onClick={onClick}\n />\n ),\n renderPreview: ({ bounds, scale }) => (\n <div\n style={{\n position: 'absolute' as const,\n left: 0,\n top: 0,\n width: bounds.size.width * scale,\n height: bounds.size.height * scale,\n border: '1px dashed rgba(66, 133, 244, 0.6)',\n backgroundColor: 'rgba(255, 255, 255, 0.9)',\n boxSizing: 'border-box' as const,\n display: 'flex',\n alignItems: 'center',\n padding: `0 ${2 * scale}px`,\n overflow: 'hidden',\n }}\n />\n ),\n interactionDefaults: { isDraggable: false, isResizable: true, isRotatable: false },\n useAppearanceStream: false,\n renderLocked: (props) => <ComboboxFillMode {...props} />,\n }),\n createRenderer<PdfWidgetAnnoObject, WidgetPreviewData>({\n id: 'formListbox',\n matches: (a): a is PdfWidgetAnnoObject =>\n a.type === PdfAnnotationSubtype.WIDGET && a.field?.type === PDF_FORM_FIELD_TYPE.LISTBOX,\n render: ({ annotation, isSelected, scale, pageIndex, onClick }) => (\n <FormListbox\n annotation={annotation}\n isSelected={isSelected}\n scale={scale}\n pageIndex={pageIndex}\n onClick={onClick}\n />\n ),\n renderPreview: ({ bounds, scale }) => (\n <div\n style={{\n position: 'absolute' as const,\n left: 0,\n top: 0,\n width: bounds.size.width * scale,\n height: bounds.size.height * scale,\n border: '1px dashed rgba(66, 133, 244, 0.6)',\n backgroundColor: 'rgba(255, 255, 255, 0.9)',\n boxSizing: 'border-box' as const,\n display: 'flex',\n flexDirection: 'column' as const,\n overflow: 'hidden',\n }}\n />\n ),\n interactionDefaults: { isDraggable: false, isResizable: true, isRotatable: false },\n useAppearanceStream: false,\n renderLocked: (props) => <ListboxFillMode {...props} />,\n }),\n];\n","import { useRegisterRenderers } from '@embedpdf/plugin-annotation/@framework';\nimport { formRenderers } from './form-renderers';\n\n/**\n * Utility component that registers form field renderers once at app level.\n * Added via addUtility() so it mounts once, not per-page.\n */\nexport function FormRendererRegistration() {\n useRegisterRenderers(formRenderers);\n return null;\n}\n","import { createPluginPackage } from '@embedpdf/core';\nimport { FormPluginPackage as BaseFormPackage } from '@embedpdf/plugin-form';\nimport { FormRendererRegistration } from './components/form-renderer-registration';\n\nexport * from './hooks';\nexport * from './components';\nexport * from '@embedpdf/plugin-form';\n\nexport const FormPluginPackage = createPluginPackage(BaseFormPackage)\n .addUtility(FormRendererRegistration)\n .build();\n"],"names":["BaseFormPackage"],"mappings":"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"}
@@ -1,12 +0,0 @@
1
- import { CSSProperties, MouseEvent } from '../../../react/adapter.ts';
2
- import { PdfWidgetAnnoObject } from '@embedpdf/models';
3
- import { TrackedAnnotation } from '@embedpdf/plugin-annotation';
4
- export interface FormCheckboxProps {
5
- annotation: TrackedAnnotation<PdfWidgetAnnoObject>;
6
- isSelected: boolean;
7
- scale: number;
8
- pageIndex: number;
9
- onClick?: (e: MouseEvent<Element>) => void;
10
- style?: CSSProperties;
11
- }
12
- export declare function FormCheckbox({ annotation, isSelected, scale, onClick, style }: FormCheckboxProps): import("react/jsx-runtime").JSX.Element;
@@ -1,12 +0,0 @@
1
- import { CSSProperties, MouseEvent } from '../../../react/adapter.ts';
2
- import { PdfWidgetAnnoObject } from '@embedpdf/models';
3
- import { TrackedAnnotation } from '@embedpdf/plugin-annotation';
4
- export interface FormComboboxProps {
5
- annotation: TrackedAnnotation<PdfWidgetAnnoObject>;
6
- isSelected: boolean;
7
- scale: number;
8
- pageIndex: number;
9
- onClick?: (e: MouseEvent<Element>) => void;
10
- style?: CSSProperties;
11
- }
12
- export declare function FormCombobox({ annotation, isSelected, scale, onClick, style }: FormComboboxProps): import("react/jsx-runtime").JSX.Element;
@@ -1,12 +0,0 @@
1
- import { CSSProperties, MouseEvent } from '../../../react/adapter.ts';
2
- import { PdfWidgetAnnoObject } from '@embedpdf/models';
3
- import { TrackedAnnotation } from '@embedpdf/plugin-annotation';
4
- export interface FormListboxProps {
5
- annotation: TrackedAnnotation<PdfWidgetAnnoObject>;
6
- isSelected: boolean;
7
- scale: number;
8
- pageIndex: number;
9
- onClick?: (e: MouseEvent<Element>) => void;
10
- style?: CSSProperties;
11
- }
12
- export declare function FormListbox({ annotation, isSelected, scale, onClick, style }: FormListboxProps): import("react/jsx-runtime").JSX.Element;
@@ -1,12 +0,0 @@
1
- import { CSSProperties, MouseEvent } from '../../../react/adapter.ts';
2
- import { PdfWidgetAnnoObject } from '@embedpdf/models';
3
- import { TrackedAnnotation } from '@embedpdf/plugin-annotation';
4
- export interface FormRadioButtonProps {
5
- annotation: TrackedAnnotation<PdfWidgetAnnoObject>;
6
- isSelected: boolean;
7
- scale: number;
8
- pageIndex: number;
9
- onClick?: (e: MouseEvent<Element>) => void;
10
- style?: CSSProperties;
11
- }
12
- export declare function FormRadioButton({ annotation, isSelected, scale, onClick, style, }: FormRadioButtonProps): import("react/jsx-runtime").JSX.Element;
@@ -1,12 +0,0 @@
1
- import { CSSProperties, MouseEvent } from '../../../react/adapter.ts';
2
- import { PdfWidgetAnnoObject } from '@embedpdf/models';
3
- import { TrackedAnnotation } from '@embedpdf/plugin-annotation';
4
- export interface FormTextFieldProps {
5
- annotation: TrackedAnnotation<PdfWidgetAnnoObject>;
6
- isSelected: boolean;
7
- scale: number;
8
- pageIndex: number;
9
- onClick?: (e: MouseEvent<Element>) => void;
10
- style?: CSSProperties;
11
- }
12
- export declare function FormTextField({ annotation, isSelected, scale, onClick, style, }: FormTextFieldProps): import("react/jsx-runtime").JSX.Element;
@@ -1,2 +0,0 @@
1
- import { CheckboxFieldProps } from '../types';
2
- export declare function CheckboxField(props: CheckboxFieldProps): import("react/jsx-runtime").JSX.Element;
@@ -1,2 +0,0 @@
1
- import { ComboboxFieldProps } from '../types';
2
- export declare function ComboboxField(props: ComboboxFieldProps): import("react/jsx-runtime").JSX.Element;
@@ -1,2 +0,0 @@
1
- import { ListboxFieldProps } from '../types';
2
- export declare function ListboxField(props: ListboxFieldProps): import("react/jsx-runtime").JSX.Element;
@@ -1,2 +0,0 @@
1
- import { PushButtonFieldProps } from '../types';
2
- export declare function PushButtonField(props: PushButtonFieldProps): import("react/jsx-runtime").JSX.Element;
@@ -1,2 +0,0 @@
1
- import { RadioButtonFieldProps } from '../types';
2
- export declare function RadioButtonField(props: RadioButtonFieldProps): import("react/jsx-runtime").JSX.Element;
@@ -1,6 +0,0 @@
1
- import { CSSProperties } from '../../../react/adapter.ts';
2
- export declare const checkboxStyle: CSSProperties;
3
- export declare const inputStyle: CSSProperties;
4
- export declare const selectStyle: CSSProperties;
5
- export declare const textareaStyle: CSSProperties;
6
- export declare const buttonStyle: CSSProperties;
@@ -1,2 +0,0 @@
1
- import { TextFieldProps } from '../types';
2
- export declare function TextField(props: TextFieldProps): import("react/jsx-runtime").JSX.Element;
@@ -1,3 +0,0 @@
1
- import { PdfWidgetAnnoObject } from '@embedpdf/models';
2
- import { AnnotationRendererProps } from '../../../react/annotation.ts';
3
- export declare function ComboboxFillMode(props: AnnotationRendererProps<PdfWidgetAnnoObject>): import("react/jsx-runtime").JSX.Element;
@@ -1,3 +0,0 @@
1
- import { PdfWidgetAnnoObject } from '@embedpdf/models';
2
- import { AnnotationRendererProps } from '../../../react/annotation.ts';
3
- export declare function ListboxFillMode(props: AnnotationRendererProps<PdfWidgetAnnoObject>): import("react/jsx-runtime").JSX.Element;
@@ -1,3 +0,0 @@
1
- import { PdfWidgetAnnoObject } from '@embedpdf/models';
2
- import { AnnotationRendererProps } from '../../../react/annotation.ts';
3
- export declare function PushButtonFillMode(props: AnnotationRendererProps<PdfWidgetAnnoObject>): import("react/jsx-runtime").JSX.Element;
@@ -1,3 +0,0 @@
1
- import { PdfWidgetAnnoObject } from '@embedpdf/models';
2
- import { AnnotationRendererProps } from '../../../react/annotation.ts';
3
- export declare function RadioButtonFillMode(props: AnnotationRendererProps<PdfWidgetAnnoObject>): import("react/jsx-runtime").JSX.Element;
@@ -1,3 +0,0 @@
1
- import { PdfWidgetAnnoObject } from '@embedpdf/models';
2
- import { AnnotationRendererProps } from '../../../react/annotation.ts';
3
- export declare function TextFillMode(props: AnnotationRendererProps<PdfWidgetAnnoObject>): import("react/jsx-runtime").JSX.Element;
@@ -1,3 +0,0 @@
1
- import { PdfWidgetAnnoObject } from '@embedpdf/models';
2
- import { AnnotationRendererProps } from '../../../react/annotation.ts';
3
- export declare function ToggleFillMode(props: AnnotationRendererProps<PdfWidgetAnnoObject>): import("react/jsx-runtime").JSX.Element;
@@ -1,5 +0,0 @@
1
- /**
2
- * Utility component that registers form field renderers once at app level.
3
- * Added via addUtility() so it mounts once, not per-page.
4
- */
5
- export declare function FormRendererRegistration(): null;
@@ -1,9 +0,0 @@
1
- import { PdfStandardFont, Rect } from '@embedpdf/models';
2
- import { BoxedAnnotationRenderer } from '../../react/annotation.ts';
3
- export interface WidgetPreviewData {
4
- rect: Rect;
5
- fontFamily?: PdfStandardFont;
6
- fontSize?: number;
7
- fontColor?: string;
8
- }
9
- export declare const formRenderers: BoxedAnnotationRenderer[];
@@ -1,2 +0,0 @@
1
- export * from './form-renderers';
2
- export * from './form-renderer-registration';
@@ -1,12 +0,0 @@
1
- import { HTMLAttributes, CSSProperties } from '../../react/adapter.ts';
2
- import { PdfWidgetAnnoObject } from '@embedpdf/models';
3
- type RenderWidgetProps = Omit<HTMLAttributes<HTMLImageElement>, 'style'> & {
4
- pageIndex: number;
5
- annotation: PdfWidgetAnnoObject;
6
- scaleFactor?: number;
7
- dpr?: number;
8
- renderKey?: number;
9
- style?: CSSProperties;
10
- };
11
- export declare function RenderWidget({ pageIndex, annotation, scaleFactor, renderKey, style, ...props }: RenderWidgetProps): import("react/jsx-runtime").JSX.Element;
12
- export {};
@@ -1,42 +0,0 @@
1
- import { PdfWidgetAnnoField, PdfWidgetAnnoObject, PdfTextWidgetAnnoField, PdfCheckboxWidgetAnnoField, PdfRadioButtonWidgetAnnoField, PdfComboboxWidgetAnnoField, PdfListboxWidgetAnnoField, PdfPushButtonWidgetAnnoField } from '@embedpdf/models';
2
- export interface FieldProps {
3
- annotation: PdfWidgetAnnoObject;
4
- scale: number;
5
- pageIndex: number;
6
- isEditable: boolean;
7
- onChangeField?: (field: PdfWidgetAnnoField) => void;
8
- onFocus?: () => void;
9
- onBlur?: () => void;
10
- inputRef?: (el: HTMLElement | null) => void;
11
- syncExternalValue?: boolean;
12
- }
13
- export type TextFieldProps = Omit<FieldProps, 'annotation'> & {
14
- annotation: PdfWidgetAnnoObject & {
15
- field: PdfTextWidgetAnnoField;
16
- };
17
- };
18
- export type CheckboxFieldProps = Omit<FieldProps, 'annotation'> & {
19
- annotation: PdfWidgetAnnoObject & {
20
- field: PdfCheckboxWidgetAnnoField;
21
- };
22
- };
23
- export type RadioButtonFieldProps = Omit<FieldProps, 'annotation'> & {
24
- annotation: PdfWidgetAnnoObject & {
25
- field: PdfRadioButtonWidgetAnnoField;
26
- };
27
- };
28
- export type ComboboxFieldProps = Omit<FieldProps, 'annotation'> & {
29
- annotation: PdfWidgetAnnoObject & {
30
- field: PdfComboboxWidgetAnnoField;
31
- };
32
- };
33
- export type ListboxFieldProps = Omit<FieldProps, 'annotation'> & {
34
- annotation: PdfWidgetAnnoObject & {
35
- field: PdfListboxWidgetAnnoField;
36
- };
37
- };
38
- export type PushButtonFieldProps = Omit<FieldProps, 'annotation'> & {
39
- annotation: PdfWidgetAnnoObject & {
40
- field: PdfPushButtonWidgetAnnoField;
41
- };
42
- };
@@ -1 +0,0 @@
1
- export * from './use-form';
@@ -1,12 +0,0 @@
1
- import { PdfWidgetAnnoField, PdfWidgetAnnoObject } from '@embedpdf/models';
2
- import { AnnotationRendererProps } from '../../react/annotation.ts';
3
- export declare function useFormWidgetState(props: AnnotationRendererProps<PdfWidgetAnnoObject>): {
4
- annotation: PdfWidgetAnnoObject;
5
- field: PdfWidgetAnnoField;
6
- scale: number;
7
- pageIndex: number;
8
- scope: import('..').FormScope | undefined;
9
- handleChangeField: (newField: PdfWidgetAnnoField) => void;
10
- renderKey: number;
11
- isReadOnly: boolean;
12
- };
@@ -1,16 +0,0 @@
1
- import { FormPlugin, FormDocumentState } from '../../index.ts';
2
- export declare const useFormPlugin: () => {
3
- plugin: FormPlugin | null;
4
- isLoading: boolean;
5
- ready: Promise<void>;
6
- };
7
- export declare const useFormCapability: () => {
8
- provides: Readonly<import('../../index.ts').FormCapability> | null;
9
- isLoading: boolean;
10
- ready: Promise<void>;
11
- };
12
- /**
13
- * Hook that subscribes to the form plugin's document state for a specific document.
14
- * Returns selectedFieldId and re-renders when the state changes.
15
- */
16
- export declare const useFormDocumentState: (documentId: string) => FormDocumentState;
@@ -1,4 +0,0 @@
1
- export * from './hooks';
2
- export * from './components';
3
- export * from '../index.ts';
4
- export declare const FormPluginPackage: import('@embedpdf/core').WithAutoMount<import('@embedpdf/core').PluginPackage<import('../index.ts').FormPlugin, import('../index.ts').FormPluginConfig, import('../index.ts').FormState, import('../lib/actions').FormAction>>;
@@ -1,12 +0,0 @@
1
- import { CSSProperties, MouseEvent } from '../../../preact/adapter.ts';
2
- import { PdfWidgetAnnoObject } from '@embedpdf/models';
3
- import { TrackedAnnotation } from '@embedpdf/plugin-annotation';
4
- export interface FormCheckboxProps {
5
- annotation: TrackedAnnotation<PdfWidgetAnnoObject>;
6
- isSelected: boolean;
7
- scale: number;
8
- pageIndex: number;
9
- onClick?: (e: MouseEvent<Element>) => void;
10
- style?: CSSProperties;
11
- }
12
- export declare function FormCheckbox({ annotation, isSelected, scale, onClick, style }: FormCheckboxProps): import("preact").JSX.Element;
@@ -1,12 +0,0 @@
1
- import { CSSProperties, MouseEvent } from '../../../preact/adapter.ts';
2
- import { PdfWidgetAnnoObject } from '@embedpdf/models';
3
- import { TrackedAnnotation } from '@embedpdf/plugin-annotation';
4
- export interface FormComboboxProps {
5
- annotation: TrackedAnnotation<PdfWidgetAnnoObject>;
6
- isSelected: boolean;
7
- scale: number;
8
- pageIndex: number;
9
- onClick?: (e: MouseEvent<Element>) => void;
10
- style?: CSSProperties;
11
- }
12
- export declare function FormCombobox({ annotation, isSelected, scale, onClick, style }: FormComboboxProps): import("preact").JSX.Element;
@@ -1,12 +0,0 @@
1
- import { CSSProperties, MouseEvent } from '../../../preact/adapter.ts';
2
- import { PdfWidgetAnnoObject } from '@embedpdf/models';
3
- import { TrackedAnnotation } from '@embedpdf/plugin-annotation';
4
- export interface FormListboxProps {
5
- annotation: TrackedAnnotation<PdfWidgetAnnoObject>;
6
- isSelected: boolean;
7
- scale: number;
8
- pageIndex: number;
9
- onClick?: (e: MouseEvent<Element>) => void;
10
- style?: CSSProperties;
11
- }
12
- export declare function FormListbox({ annotation, isSelected, scale, onClick, style }: FormListboxProps): import("preact").JSX.Element;
@@ -1,12 +0,0 @@
1
- import { CSSProperties, MouseEvent } from '../../../preact/adapter.ts';
2
- import { PdfWidgetAnnoObject } from '@embedpdf/models';
3
- import { TrackedAnnotation } from '@embedpdf/plugin-annotation';
4
- export interface FormRadioButtonProps {
5
- annotation: TrackedAnnotation<PdfWidgetAnnoObject>;
6
- isSelected: boolean;
7
- scale: number;
8
- pageIndex: number;
9
- onClick?: (e: MouseEvent<Element>) => void;
10
- style?: CSSProperties;
11
- }
12
- export declare function FormRadioButton({ annotation, isSelected, scale, onClick, style, }: FormRadioButtonProps): import("preact").JSX.Element;
@@ -1,12 +0,0 @@
1
- import { CSSProperties, MouseEvent } from '../../../preact/adapter.ts';
2
- import { PdfWidgetAnnoObject } from '@embedpdf/models';
3
- import { TrackedAnnotation } from '@embedpdf/plugin-annotation';
4
- export interface FormTextFieldProps {
5
- annotation: TrackedAnnotation<PdfWidgetAnnoObject>;
6
- isSelected: boolean;
7
- scale: number;
8
- pageIndex: number;
9
- onClick?: (e: MouseEvent<Element>) => void;
10
- style?: CSSProperties;
11
- }
12
- export declare function FormTextField({ annotation, isSelected, scale, onClick, style, }: FormTextFieldProps): import("preact").JSX.Element;
@@ -1,2 +0,0 @@
1
- import { CheckboxFieldProps } from '../types';
2
- export declare function CheckboxField(props: CheckboxFieldProps): import("preact").JSX.Element;
@@ -1,2 +0,0 @@
1
- import { ComboboxFieldProps } from '../types';
2
- export declare function ComboboxField(props: ComboboxFieldProps): import("preact").JSX.Element;
@@ -1,2 +0,0 @@
1
- import { ListboxFieldProps } from '../types';
2
- export declare function ListboxField(props: ListboxFieldProps): import("preact").JSX.Element;
@@ -1,2 +0,0 @@
1
- import { PushButtonFieldProps } from '../types';
2
- export declare function PushButtonField(props: PushButtonFieldProps): import("preact").JSX.Element;
@@ -1,2 +0,0 @@
1
- import { RadioButtonFieldProps } from '../types';
2
- export declare function RadioButtonField(props: RadioButtonFieldProps): import("preact").JSX.Element;
@@ -1,6 +0,0 @@
1
- import { CSSProperties } from '../../../preact/adapter.ts';
2
- export declare const checkboxStyle: CSSProperties;
3
- export declare const inputStyle: CSSProperties;
4
- export declare const selectStyle: CSSProperties;
5
- export declare const textareaStyle: CSSProperties;
6
- export declare const buttonStyle: CSSProperties;
@@ -1,2 +0,0 @@
1
- import { TextFieldProps } from '../types';
2
- export declare function TextField(props: TextFieldProps): import("preact").JSX.Element;
@@ -1,3 +0,0 @@
1
- import { PdfWidgetAnnoObject } from '@embedpdf/models';
2
- import { AnnotationRendererProps } from '../../../preact/annotation.ts';
3
- export declare function ComboboxFillMode(props: AnnotationRendererProps<PdfWidgetAnnoObject>): import("preact").JSX.Element;
@@ -1,3 +0,0 @@
1
- import { PdfWidgetAnnoObject } from '@embedpdf/models';
2
- import { AnnotationRendererProps } from '../../../preact/annotation.ts';
3
- export declare function ListboxFillMode(props: AnnotationRendererProps<PdfWidgetAnnoObject>): import("preact").JSX.Element;
@@ -1,3 +0,0 @@
1
- import { PdfWidgetAnnoObject } from '@embedpdf/models';
2
- import { AnnotationRendererProps } from '../../../preact/annotation.ts';
3
- export declare function PushButtonFillMode(props: AnnotationRendererProps<PdfWidgetAnnoObject>): import("preact").JSX.Element;
@@ -1,3 +0,0 @@
1
- import { PdfWidgetAnnoObject } from '@embedpdf/models';
2
- import { AnnotationRendererProps } from '../../../preact/annotation.ts';
3
- export declare function RadioButtonFillMode(props: AnnotationRendererProps<PdfWidgetAnnoObject>): import("preact").JSX.Element;
@@ -1,3 +0,0 @@
1
- import { PdfWidgetAnnoObject } from '@embedpdf/models';
2
- import { AnnotationRendererProps } from '../../../preact/annotation.ts';
3
- export declare function TextFillMode(props: AnnotationRendererProps<PdfWidgetAnnoObject>): import("preact").JSX.Element;
@@ -1,3 +0,0 @@
1
- import { PdfWidgetAnnoObject } from '@embedpdf/models';
2
- import { AnnotationRendererProps } from '../../../preact/annotation.ts';
3
- export declare function ToggleFillMode(props: AnnotationRendererProps<PdfWidgetAnnoObject>): import("preact").JSX.Element;
@@ -1,5 +0,0 @@
1
- /**
2
- * Utility component that registers form field renderers once at app level.
3
- * Added via addUtility() so it mounts once, not per-page.
4
- */
5
- export declare function FormRendererRegistration(): null;