vobi_document 1.1.2 → 1.1.3

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 (35) hide show
  1. package/dist/blocks.cjs +25 -25
  2. package/dist/blocks.d.cts +2 -2
  3. package/dist/blocks.d.ts +2 -2
  4. package/dist/blocks.js +1 -1
  5. package/dist/{chunk-OJZJJEJX.js → chunk-7QF2U74X.js} +10 -5
  6. package/dist/chunk-7QF2U74X.js.map +1 -0
  7. package/dist/{chunk-KALUNX3C.cjs → chunk-CJFNHGYH.cjs} +14 -14
  8. package/dist/{chunk-KALUNX3C.cjs.map → chunk-CJFNHGYH.cjs.map} +1 -1
  9. package/dist/{chunk-A427FKMP.cjs → chunk-GWSTB65K.cjs} +16 -16
  10. package/dist/{chunk-A427FKMP.cjs.map → chunk-GWSTB65K.cjs.map} +1 -1
  11. package/dist/{chunk-SFKH6QYD.cjs → chunk-HANC7MNV.cjs} +8 -8
  12. package/dist/{chunk-SFKH6QYD.cjs.map → chunk-HANC7MNV.cjs.map} +1 -1
  13. package/dist/{chunk-RZOR3HOA.cjs → chunk-KQDH7LRX.cjs} +10 -5
  14. package/dist/chunk-KQDH7LRX.cjs.map +1 -0
  15. package/dist/{chunk-QEWDIL2H.js → chunk-OUSXJTQ5.js} +3 -3
  16. package/dist/{chunk-QEWDIL2H.js.map → chunk-OUSXJTQ5.js.map} +1 -1
  17. package/dist/{chunk-BEG6KN5X.js → chunk-QBNPQGAL.js} +3 -3
  18. package/dist/{chunk-BEG6KN5X.js.map → chunk-QBNPQGAL.js.map} +1 -1
  19. package/dist/{chunk-2VZW2MGO.cjs → chunk-S3FCX5TC.cjs} +3 -3
  20. package/dist/{chunk-2VZW2MGO.cjs.map → chunk-S3FCX5TC.cjs.map} +1 -1
  21. package/dist/{chunk-QRVQXVZC.js → chunk-XHKS4BTC.js} +3 -3
  22. package/dist/{chunk-QRVQXVZC.js.map → chunk-XHKS4BTC.js.map} +1 -1
  23. package/dist/{chunk-QU6XF6OQ.js → chunk-Z3SAVLTS.js} +3 -3
  24. package/dist/{chunk-QU6XF6OQ.js.map → chunk-Z3SAVLTS.js.map} +1 -1
  25. package/dist/editor.cjs +14 -14
  26. package/dist/editor.js +2 -2
  27. package/dist/index.cjs +83 -83
  28. package/dist/index.js +6 -6
  29. package/dist/print.cjs +17 -17
  30. package/dist/print.js +3 -3
  31. package/dist/render.cjs +18 -18
  32. package/dist/render.js +3 -3
  33. package/package.json +1 -1
  34. package/dist/chunk-OJZJJEJX.js.map +0 -1
  35. package/dist/chunk-RZOR3HOA.cjs.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/editor/dictionary.ts","../src/editor/modifierStateShim.ts","../src/editor/editorApi.ts","../src/editor/EditorApiBridge.tsx","../src/editor/headerApi.ts","../src/editor/puckStore.ts","../src/schema/theme.ts","../src/surface/resolveTheme.ts","../node_modules/.pnpm/react-colorful@5.7.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/react-colorful/src/hooks/useEventCallback.ts","../node_modules/.pnpm/react-colorful@5.7.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/react-colorful/src/utils/clamp.ts","../node_modules/.pnpm/react-colorful@5.7.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/react-colorful/src/components/common/Interactive.tsx","../node_modules/.pnpm/react-colorful@5.7.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/react-colorful/src/utils/format.ts","../node_modules/.pnpm/react-colorful@5.7.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/react-colorful/src/components/common/Pointer.tsx","../node_modules/.pnpm/react-colorful@5.7.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/react-colorful/src/utils/round.ts","../node_modules/.pnpm/react-colorful@5.7.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/react-colorful/src/utils/convert.ts","../node_modules/.pnpm/react-colorful@5.7.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/react-colorful/src/components/common/Hue.tsx","../node_modules/.pnpm/react-colorful@5.7.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/react-colorful/src/components/common/Saturation.tsx","../node_modules/.pnpm/react-colorful@5.7.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/react-colorful/src/utils/compare.ts","../node_modules/.pnpm/react-colorful@5.7.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/react-colorful/src/hooks/useColorManipulation.ts","../node_modules/.pnpm/react-colorful@5.7.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/react-colorful/src/hooks/useIsomorphicLayoutEffect.ts","../node_modules/.pnpm/react-colorful@5.7.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/react-colorful/src/utils/nonce.ts","../node_modules/.pnpm/react-colorful@5.7.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/react-colorful/src/hooks/useStyleSheet.ts","../node_modules/.pnpm/react-colorful@5.7.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/react-colorful/src/components/common/ColorPicker.tsx","../node_modules/.pnpm/react-colorful@5.7.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/react-colorful/src/components/HexColorPicker.tsx","../src/editor/colorPicker/color.ts","../src/editor/colorPicker/ColorPickerPanel.styles.ts","../src/editor/colorPicker/ColorPickerPanel.tsx","../src/editor/colorPicker/ColorPicker.styles.ts","../src/editor/colorPicker/ColorPicker.tsx","../src/editor/settings/DocumentSettingsModal.styles.ts","../src/editor/settings/ColorField.tsx","../src/editor/settings/VisualTab.tsx","../src/editor/settings/DocumentSettingsModal.tsx","../src/variables/useVariableResolution.ts","../src/editor/DocumentEditor.tsx","../src/editor/useDocumentAutosave.ts"],"names":["useGetPuck","useEffect","createElement","Fragment","createUsePuck","z","DEFAULT_DOCUMENT_COLORS","DEFAULT_PAGE_MARGINS","useEventCallback","handler","callbackRef","useRef","fn","value","current","clamp","number","min","max","isTouch","event","getParentWindow","node","ownerDocument","defaultView","self","getRelativePosition","touchId","rect","getBoundingClientRect","pointer","touches","i","length","identifier","left","pageX","pageXOffset","width","top","pageY","pageYOffset","height","preventDefaultMove","preventDefault","Interactive","React","memo","o","onMove","onKey","onEnd","rest","container","onMoveCallback","onKeyCallback","onEndCallback","hasTouch","useMemo","handleMove","buttons","toggleDocumentEvents","handleMoveEnd","state","touch","parentWindow","toggleEvent","addEventListener","removeEventListener","e","nativeEvent","el","changedTouches","focus","keyCode","which","handleMoveStart","handleKeyDown","handleKeyUp","onTouchStart","onMouseDown","className","ref","onKeyDown","onKeyUp","tabIndex","role","formatClassName","names","filter","Boolean","join","Pointer","r","color","nodeClassName","style","backgroundColor","round","digits","base","Math","pow","hexToHsva","hex","rgbaToHsva","hexToRgba","substring","parseInt","g","b","a","hsvaToHex","hsva","rgbaToHex","hsvaToRgba","hsvaToHsla","s","v","hh","h","l","hsvaToHslString","floor","c","d","module","format","toString","alphaHex","delta","Hue","hue","onChange","onChangeEnd","interaction","offset","aria-label","aria-valuenow","aria-valuemax","aria-valuemin","Saturation","containerStyle","aria-valuetext","equalColorObjects","first","second","prop","equalHex","toLowerCase","useColorManipulation","colorModel","onChangeCallback","onChangeEndCallback","useState","toHsva","updateHsva","cache","isDirty","equal","newHsva","newColor","fromHsva","handleChange","useCallback","params","Object","assign","commitChange","useIsomorphicLayoutEffect","window","useLayoutEffect","getNonce","nonce","__webpack_nonce__","styleElementMap","Map","useStyleSheet","nodeRef","parentDocument","document","has","styleElement","innerHTML","set","setAttribute","head","appendChild","ColorPicker","n","defaultColor","HexColorPicker","props","styled","jsx","jsxs","Panel","DOCUMENT_FONTS","formatResolvedValues","EMPTY","useDocumentFont","buildConfig","extractBindingKeys","blocksPlugin","outlinePlugin","fieldsPlugin","DrawerCard","DrawerItemIcon","BlockIcon","DrawerHint","ActionBar","DocumentThemeProvider","CatalogProvider","ResolvedProvider","EditorShell","Puck"],"mappings":"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","file":"chunk-KALUNX3C.cjs","sourcesContent":["import type { Dictionary } from '@puckeditor/core';\n\n/**\n * UI do Puck em PT-BR (chaves de `defaultDictionary` do 0.23+).\n * As interpolações (`{title}`, `{count}`, `{index}`, `{type}`, `{zoom}`, `{label}`) precisam ser preservadas.\n * Chaves em minúscula no original são rótulos internos — mantidas em minúscula.\n */\nexport const ptBrDictionary: Dictionary = {\n 'header-publish': 'Publicar',\n 'header-undo': 'desfazer',\n 'header-redo': 'refazer',\n 'header-toggle-leftsidebar': 'Alternar barra lateral esquerda',\n 'header-toggle-rightsidebar': 'Alternar barra lateral direita',\n 'header-toggle-menubar': 'Alternar barra de menu',\n 'action-selectparent': 'Selecionar bloco pai',\n 'action-duplicate': 'Duplicar',\n 'action-delete': 'Excluir',\n 'label-page': 'Página',\n 'label-component': 'Bloco',\n 'outline-empty': 'Nenhum item',\n 'outline-item-collapse': 'Recolher',\n 'outline-item-expand': 'Expandir',\n 'outline-header-title': 'Estrutura',\n 'outline-header-collapseall': 'Recolher tudo',\n 'outline-item-duplicate': 'Duplicar',\n 'outline-item-delete': 'Excluir',\n 'drawer-category-collapse': 'Recolher {title}',\n 'drawer-category-expand': 'Expandir {title}',\n 'drawer-category-other': 'Outros',\n 'canvas-noconfig': 'Sem configuração para {type}',\n 'field-readonly': 'Somente leitura',\n 'field-arrayitem-summary': 'Item #{index}',\n 'field-arrayitem-duplicate': 'Duplicar',\n 'field-arrayitem-delete': 'Excluir',\n 'field-external-selectdata': 'Selecionar dados',\n 'field-external-search': 'Buscar',\n 'field-external-togglefilters': 'Alternar filtros',\n 'field-external-item': 'Item externo',\n 'field-external-result-singular': '{count} resultado',\n 'field-external-result-plural': '{count} resultados',\n 'field-richtext-bold': 'Negrito',\n 'field-richtext-italic': 'Itálico',\n 'field-richtext-underline': 'Sublinhado',\n 'field-richtext-strikethrough': 'Riscado',\n 'field-richtext-blockquote': 'Citação',\n 'field-richtext-code-inline': 'Código em linha',\n 'field-richtext-code-block': 'Bloco de código',\n 'field-richtext-list-bullet': 'Lista com marcadores',\n 'field-richtext-list-ordered': 'Lista numerada',\n 'field-richtext-horizontalrule': 'Linha horizontal',\n 'field-richtext-align-left': 'Alinhar à esquerda',\n 'field-richtext-align-center': 'Centralizar',\n 'field-richtext-align-right': 'Alinhar à direita',\n 'field-richtext-align-justify': 'Justificar',\n 'field-richtext-select': 'Selecionar',\n 'field-richtext-headingselect-1': 'Título 1',\n 'field-richtext-headingselect-2': 'Título 2',\n 'field-richtext-headingselect-3': 'Título 3',\n 'field-richtext-headingselect-4': 'Título 4',\n 'field-richtext-headingselect-5': 'Título 5',\n 'field-richtext-headingselect-6': 'Título 6',\n 'field-richtext-alignselect-left': 'Esquerda',\n 'field-richtext-alignselect-center': 'Centro',\n 'field-richtext-alignselect-right': 'Direita',\n 'field-richtext-alignselect-justify': 'Justificado',\n 'field-richtext-listselect-bullet': 'Lista com marcadores',\n 'field-richtext-listselect-ordered': 'Lista numerada',\n 'viewport-zoom-in': 'Aumentar zoom',\n 'viewport-zoom-out': 'Diminuir zoom',\n 'viewport-zoom-auto': '{zoom}% (automático)',\n 'viewport-toggle-menu': 'Alternar menu de visualização',\n 'viewport-switch': 'Mudar para a visualização {label}',\n 'viewport-switch-default': 'Mudar visualização',\n 'plugin-blocks': 'Blocos',\n 'plugin-outline': 'Estrutura',\n 'plugin-fields': 'Campos',\n 'plugin-components': 'Componentes',\n 'layout-maximize': 'maximizar',\n 'layout-minimize': 'minimizar',\n 'loader-loading': 'carregando'\n};\n","const INSTALLED = '__dgModifierStateShim';\n\n/**\n * O Puck escuta keydown/keyup no `document` (monitorHotkeys) e chama\n * `e.getModifierState('AltGraph')` sem checar o tipo do evento. Extensão de navegador, gerenciador\n * de senha ou IME que dispara `new Event('keydown')` em vez de `KeyboardEvent` — comum no Linux —\n * derruba a árvore com `e.getModifierState is not a function`.\n *\n * O fallback vive em `Event.prototype`: `KeyboardEvent`/`MouseEvent` têm implementação própria e\n * seguem intactos; evento sem informação de modificador passa a responder `false`, que é a resposta\n * correta. Fica no protótipo (e não num listener de captura) porque evento disparado direto no\n * `document` chega em AT_TARGET, onde a ordem de registro decidiria quem roda primeiro.\n */\nexport function installModifierStateShim(): void {\n if (typeof Event === 'undefined') return;\n\n const proto = Event.prototype as unknown as Record<string, unknown>;\n if (proto[INSTALLED]) return;\n\n Object.defineProperty(Event.prototype, 'getModifierState', {\n value: () => false,\n configurable: true,\n writable: true\n });\n proto[INSTALLED] = true;\n}\n","import type { MutableRefObject } from 'react';\nimport type { Data, PuckAction } from '@puckeditor/core';\n\nexport type DataUpdater = Data | ((previous: Data) => Data);\n\n/** Handle imperativo que a lib preenche para o host mutar o documento sem remontar o editor. */\nexport type DocumentEditorApi = {\n /**\n * Substitui o `data` do editor no lugar (sem remount). Dispara o `onChange` do host uma vez\n * com o novo `data` (a menos que ele seja deep-equal ao anterior — ver docs/theme.md).\n */\n setData: (data: DataUpdater) => void;\n};\n\nexport type DocumentEditorApiRef =\n | MutableRefObject<DocumentEditorApi | null>\n | ((api: DocumentEditorApi | null) => void);\n\nexport const createEditorApi = (dispatch: (action: PuckAction) => void): DocumentEditorApi => ({\n setData: updater =>\n dispatch({\n type: 'setData',\n data: typeof updater === 'function' ? updater : () => updater\n })\n});\n\nexport const assignEditorApiRef = (ref: DocumentEditorApiRef | undefined, api: DocumentEditorApi | null) => {\n if (!ref) return;\n if (typeof ref === 'function') ref(api);\n // eslint-disable-next-line no-param-reassign\n else ref.current = api;\n};\n","import { Fragment, createElement, useEffect, type ReactNode } from 'react';\nimport { useGetPuck } from '@puckeditor/core';\nimport { assignEditorApiRef, createEditorApi, type DocumentEditorApiRef } from './editorApi';\n\nexport type EditorApiBridgeProps = {\n apiRef?: DocumentEditorApiRef;\n children?: ReactNode;\n};\n\n/** Roda dentro da árvore do Puck (override `puck`) e registra a API imperativa no `apiRef` do host. */\nexport function EditorApiBridge({ apiRef, children }: EditorApiBridgeProps) {\n const getPuck = useGetPuck();\n useEffect(() => {\n assignEditorApiRef(\n apiRef,\n createEditorApi(action => getPuck().dispatch(action))\n );\n return () => assignEditorApiRef(apiRef, null);\n }, [apiRef, getPuck]);\n return createElement(Fragment, null, children);\n}\n","import type { Theme } from '../schema/theme';\n\nexport type DocumentHeaderApi = {\n undo: () => void;\n redo: () => void;\n canUndo: boolean;\n canRedo: boolean;\n openSettings: () => void;\n openPreview: () => void;\n theme: Theme;\n};\n\nexport type PuckHistory = {\n back: () => void;\n forward: () => void;\n hasPast: boolean;\n hasFuture: boolean;\n};\n\nexport type HeaderApiExtras = {\n openSettings: () => void;\n openPreview: () => void;\n theme: Theme;\n};\n\nexport function headerApiFromHistory(history: PuckHistory, extras: HeaderApiExtras): DocumentHeaderApi {\n return {\n undo: () => history.back(),\n redo: () => history.forward(),\n canUndo: history.hasPast,\n canRedo: history.hasFuture,\n openSettings: extras.openSettings,\n openPreview: extras.openPreview,\n theme: extras.theme\n };\n}\n","import { createUsePuck, type Config, type PuckApi } from '@puckeditor/core';\n\n/** Estado exposto pelo `usePuckState` / `useGetPuck`. */\nexport type PuckState = PuckApi<Config>;\n\n/**\n * Hook do Puck **com seletor**. Use sempre este, nunca `usePuck()` avulso: sem seletor\n * o componente assina o app state inteiro e re-renderiza a cada tecla digitada no canvas\n * (o próprio Puck emite um warning nesse caso).\n *\n * Duas regras:\n * - A comparação é `Object.is` — selecione primitivos ou referências estáveis\n * (`selectedItem`, `appState.data.content`), nunca um objeto montado no seletor.\n * - Getters (`getSelectorForId`, `getItemById`, `dispatch`…) são recriados a cada mudança\n * de estado. O que só é lido dentro de callback vai por `useGetPuck()`, que não assina nada.\n */\nexport const usePuckState: <T>(selector: (state: PuckState) => T) => T = createUsePuck();\n","import { z } from 'zod';\nimport type { PageFormat, PageMargins } from '../surface/surface';\n\nexport type CoverFields = {\n title?: string;\n subtitle?: string;\n date?: string;\n preparedFor?: string;\n presentedBy?: string;\n imageUrl?: string;\n};\n\nexport type HeaderInfoFlags = {\n companyName?: boolean;\n cnpj?: boolean;\n phone?: boolean;\n email?: boolean;\n address?: boolean;\n};\n\nexport type HeaderConfig = {\n enabled: boolean;\n background: string;\n color: string;\n logoPosition: 'left' | 'right';\n info?: HeaderInfoFlags;\n};\n\nexport type FooterInfoFlags = {\n email?: boolean;\n phone?: boolean;\n instagram?: boolean;\n twitter?: boolean;\n address?: boolean;\n site?: boolean;\n facebook?: boolean;\n linkedin?: boolean;\n};\n\nexport type FooterConfig = {\n enabled: boolean;\n pageNumber: boolean;\n background: string;\n color: string;\n alignment: 'left' | 'center' | 'right';\n info?: FooterInfoFlags;\n};\n\n/** Identidade visual do documento; numa versão publicada é congelada no snapshot. */\nexport type Theme = {\n documentFont?: string;\n page?: {\n format: PageFormat;\n orientation: 'portrait' | 'landscape';\n margins?: PageMargins;\n };\n colors?: {\n brand?: string;\n text?: string;\n background?: string;\n };\n logo?: {\n key?: string;\n url?: string;\n };\n header?: HeaderConfig;\n footer?: FooterConfig;\n watermark?: {\n text?: string;\n imageKey?: string;\n opacity?: number;\n };\n};\n\ntype Schema<T> = z.ZodType<T, z.ZodTypeDef, unknown>;\n\nexport const pageFormatSchema: Schema<PageFormat> = z.enum(['A4', 'A5', 'A3', 'Letter', 'Legal']);\n\nconst marginsSchema = z\n .object({\n top: z.number(),\n right: z.number(),\n bottom: z.number(),\n left: z.number()\n })\n .partial();\n\nexport const coverFieldsSchema: Schema<CoverFields> = z\n .object({\n title: z.string().optional(),\n subtitle: z.string().optional(),\n date: z.string().optional(),\n preparedFor: z.string().optional(),\n presentedBy: z.string().optional(),\n imageUrl: z.string().optional()\n })\n .strict();\n\nexport const headerConfigSchema: Schema<HeaderConfig> = z\n .object({\n enabled: z.boolean().default(false),\n background: z.string().default('#FFFFFF'),\n color: z.string().default('#3F4759'),\n logoPosition: z.enum(['left', 'right']).default('right'),\n info: z\n .object({\n companyName: z.boolean(),\n cnpj: z.boolean(),\n phone: z.boolean(),\n email: z.boolean(),\n address: z.boolean()\n })\n .partial()\n .strict()\n .optional()\n })\n .strict();\n\nexport const footerConfigSchema: Schema<FooterConfig> = z\n .object({\n enabled: z.boolean().default(false),\n pageNumber: z.boolean().default(true),\n background: z.string().default('#FFFFFF'),\n color: z.string().default('#3F4759'),\n alignment: z.enum(['left', 'center', 'right']).default('center'),\n info: z\n .object({\n email: z.boolean(),\n phone: z.boolean(),\n instagram: z.boolean(),\n twitter: z.boolean(),\n address: z.boolean(),\n site: z.boolean(),\n facebook: z.boolean(),\n linkedin: z.boolean()\n })\n .partial()\n .strict()\n .optional()\n })\n .strict();\n\nexport const themeSchema: Schema<Theme> = z\n .object({\n documentFont: z.string().optional(),\n page: z\n .object({\n format: pageFormatSchema.default('A4'),\n orientation: z.enum(['portrait', 'landscape']).default('portrait'),\n margins: marginsSchema.optional()\n })\n .strict()\n .optional(),\n colors: z\n .object({\n brand: z.string(),\n text: z.string(),\n background: z.string()\n })\n .partial()\n .strict()\n .optional(),\n logo: z\n .object({\n key: z.string().optional(),\n url: z.string().optional()\n })\n .strict()\n .optional(),\n header: headerConfigSchema.optional(),\n footer: footerConfigSchema.optional(),\n watermark: z\n .object({\n text: z.string().optional(),\n imageKey: z.string().optional(),\n opacity: z.number().min(0).max(1).optional()\n })\n .strict()\n .optional()\n })\n .strict();\n","import {\n footerConfigSchema,\n headerConfigSchema,\n type FooterConfig,\n type HeaderConfig,\n type Theme\n} from '../schema/theme';\nimport { DEFAULT_DOCUMENT_COLORS, DEFAULT_PAGE_MARGINS } from './surface';\n\nexport const DEFAULT_DOCUMENT_FONT_ID = 'inter';\n\nexport const DEFAULT_HEADER_CONFIG: HeaderConfig = headerConfigSchema.parse({});\nexport const DEFAULT_FOOTER_CONFIG: FooterConfig = footerConfigSchema.parse({});\n\n/**\n * Tema com todos os defaults materializados. O host grava o resultado no documento em vez\n * de um tema parcial — assim o documento não muda de cara quando um default da lib mudar.\n * Merge raso e sem `parse`: tema legado com chave desconhecida é preservado, nunca lança.\n */\nexport function resolveTheme(theme: Theme = {}): Theme {\n return {\n ...theme,\n documentFont: theme.documentFont ?? DEFAULT_DOCUMENT_FONT_ID,\n colors: { ...DEFAULT_DOCUMENT_COLORS, ...theme.colors },\n page: {\n format: 'A4',\n orientation: 'portrait',\n ...theme.page,\n margins: { ...DEFAULT_PAGE_MARGINS, ...theme.page?.margins }\n },\n header: { ...DEFAULT_HEADER_CONFIG, ...theme.header },\n footer: { ...DEFAULT_FOOTER_CONFIG, ...theme.footer }\n };\n}\n","import { useRef } from \"react\";\n\n// Saves incoming handler to the ref in order to avoid \"useCallback hell\"\nexport function useEventCallback<T>(handler?: (value: T) => void): (value: T) => void {\n const callbackRef = useRef(handler);\n const fn = useRef((value: T) => {\n callbackRef.current && callbackRef.current(value);\n });\n callbackRef.current = handler;\n\n return fn.current;\n}\n","// Clamps a value between an upper and lower bound.\n// We use ternary operators because it makes the minified code\n// 2 times shorter then `Math.min(Math.max(a,b),c)`\nexport const clamp = (number: number, min = 0, max = 1): number => {\n return number > max ? max : number < min ? min : number;\n};\n","import React, { useRef, useMemo, useEffect } from \"react\";\n\nimport { useEventCallback } from \"../../hooks/useEventCallback\";\nimport { clamp } from \"../../utils/clamp\";\n\nexport interface Interaction {\n left: number;\n top: number;\n}\n\n// Check if an event was triggered by touch\nconst isTouch = (event: MouseEvent | TouchEvent): event is TouchEvent => \"touches\" in event;\n\n// Finds a proper touch point by its identifier\nconst getTouchPoint = (touches: TouchList, touchId: null | number): Touch => {\n for (let i = 0; i < touches.length; i++) {\n if (touches[i].identifier === touchId) return touches[i];\n }\n return touches[0];\n};\n\n// Finds the proper window object to fix iframe embedding issues\nconst getParentWindow = (node?: HTMLDivElement | null): Window => {\n return (node && node.ownerDocument.defaultView) || self;\n};\n\n// Returns a relative position of the pointer inside the node's bounding box\nconst getRelativePosition = (\n node: HTMLDivElement,\n event: MouseEvent | TouchEvent,\n touchId: null | number\n): Interaction => {\n const rect = node.getBoundingClientRect();\n\n // Get user's pointer position from `touches` array if it's a `TouchEvent`\n const pointer = isTouch(event) ? getTouchPoint(event.touches, touchId) : (event as MouseEvent);\n\n return {\n left: clamp((pointer.pageX - (rect.left + getParentWindow(node).pageXOffset)) / rect.width),\n top: clamp((pointer.pageY - (rect.top + getParentWindow(node).pageYOffset)) / rect.height),\n };\n};\n\n// Browsers introduced an intervention, making touch events passive by default.\n// This workaround removes `preventDefault` call from the touch handlers.\n// https://github.com/facebook/react/issues/19651\nconst preventDefaultMove = (event: MouseEvent | TouchEvent): void => {\n !isTouch(event) && event.preventDefault();\n};\n\n// Prevent mobile browsers from handling mouse events (conflicting with touch ones).\n// If we detected a touch interaction before, we prefer reacting to touch events only.\nconst isInvalid = (event: MouseEvent | TouchEvent, hasTouch: boolean): boolean => {\n return hasTouch && !isTouch(event);\n};\n\ninterface Props {\n onMove: (interaction: Interaction) => void;\n onKey: (offset: Interaction) => void;\n onEnd?: () => void;\n children: React.ReactNode;\n}\n\nconst InteractiveBase = ({ onMove, onKey, onEnd, ...rest }: Props) => {\n const container = useRef<HTMLDivElement>(null);\n const onMoveCallback = useEventCallback<Interaction>(onMove);\n const onKeyCallback = useEventCallback<Interaction>(onKey);\n const onEndCallback = useEventCallback<void>(onEnd);\n const touchId = useRef<null | number>(null);\n const hasTouch = useRef(false);\n\n const [handleMoveStart, handleKeyDown, handleKeyUp, toggleDocumentEvents] = useMemo(() => {\n const handleMoveStart = ({ nativeEvent }: React.MouseEvent | React.TouchEvent) => {\n const el = container.current;\n if (!el) return;\n\n // Prevent text selection\n preventDefaultMove(nativeEvent);\n\n if (isInvalid(nativeEvent, hasTouch.current) || !el) return;\n\n if (isTouch(nativeEvent)) {\n hasTouch.current = true;\n const changedTouches = nativeEvent.changedTouches || [];\n if (changedTouches.length) touchId.current = changedTouches[0].identifier;\n }\n\n el.focus();\n onMoveCallback(getRelativePosition(el, nativeEvent, touchId.current));\n toggleDocumentEvents(true);\n };\n\n const handleMove = (event: MouseEvent | TouchEvent) => {\n // Prevent text selection\n preventDefaultMove(event);\n\n // If user moves the pointer outside of the window or iframe bounds and release it there,\n // `mouseup`/`touchend` won't be fired. In order to stop the picker from following the cursor\n // after the user has moved the mouse/finger back to the document, we check `event.buttons`\n // and `event.touches`. It allows us to detect that the user is just moving his pointer\n // without pressing it down\n const isDown = isTouch(event) ? event.touches.length > 0 : event.buttons > 0;\n\n if (isDown && container.current) {\n onMoveCallback(getRelativePosition(container.current, event, touchId.current));\n } else {\n toggleDocumentEvents(false);\n onEndCallback();\n }\n };\n\n const handleMoveEnd = () => {\n toggleDocumentEvents(false);\n onEndCallback();\n };\n\n const handleKeyDown = (event: React.KeyboardEvent) => {\n const keyCode = event.which || event.keyCode;\n\n // Ignore all keys except arrow ones\n if (keyCode < 37 || keyCode > 40) return;\n // Do not scroll page by arrow keys when document is focused on the element\n event.preventDefault();\n // Send relative offset to the parent component.\n // We use codes (37←, 38↑, 39→, 40↓) instead of keys ('ArrowRight', 'ArrowDown', etc)\n // to reduce the size of the library\n onKeyCallback({\n left: keyCode === 39 ? 0.05 : keyCode === 37 ? -0.05 : 0,\n top: keyCode === 40 ? 0.05 : keyCode === 38 ? -0.05 : 0,\n });\n };\n\n const handleKeyUp = (event: React.KeyboardEvent) => {\n const keyCode = event.which || event.keyCode;\n if (keyCode >= 37 && keyCode <= 40) onEndCallback();\n };\n\n function toggleDocumentEvents(state?: boolean) {\n const touch = hasTouch.current;\n const el = container.current;\n const parentWindow = getParentWindow(el);\n\n // Add or remove additional pointer event listeners\n const toggleEvent = state ? parentWindow.addEventListener : parentWindow.removeEventListener;\n toggleEvent(touch ? \"touchmove\" : \"mousemove\", handleMove);\n toggleEvent(touch ? \"touchend\" : \"mouseup\", handleMoveEnd);\n }\n\n return [handleMoveStart, handleKeyDown, handleKeyUp, toggleDocumentEvents];\n }, [onKeyCallback, onMoveCallback, onEndCallback]);\n\n // Remove window event listeners before unmounting\n useEffect(() => toggleDocumentEvents, [toggleDocumentEvents]);\n\n return (\n <div\n {...rest}\n onTouchStart={handleMoveStart}\n onMouseDown={handleMoveStart}\n className=\"react-colorful__interactive\"\n ref={container}\n onKeyDown={handleKeyDown}\n onKeyUp={handleKeyUp}\n tabIndex={0}\n role=\"slider\"\n />\n );\n};\n\nexport const Interactive = React.memo(InteractiveBase);\n","export const formatClassName = (names: unknown[]): string => names.filter(Boolean).join(\" \");\n","import React from \"react\";\nimport { formatClassName } from \"../../utils/format\";\n\ninterface Props {\n className?: string;\n top?: number;\n left: number;\n color: string;\n}\n\nexport const Pointer = ({ className, color, left, top = 0.5 }: Props): React.ReactElement => {\n const nodeClassName = formatClassName([\"react-colorful__pointer\", className]);\n\n const style = {\n top: `${top * 100}%`,\n left: `${left * 100}%`,\n };\n\n return (\n <div className={nodeClassName} style={style}>\n <div className=\"react-colorful__pointer-fill\" style={{ backgroundColor: color }} />\n </div>\n );\n};\n","export const round = (number: number, digits = 0, base = Math.pow(10, digits)): number => {\n return Math.round(base * number) / base;\n};\n","import { round } from \"./round\";\nimport { RgbaColor, RgbColor, HslaColor, HslColor, HsvaColor, HsvColor } from \"../types\";\n\n/**\n * Valid CSS <angle> units.\n * https://developer.mozilla.org/en-US/docs/Web/CSS/angle\n */\nconst angleUnits: Record<string, number> = {\n grad: 360 / 400,\n turn: 360,\n rad: 360 / (Math.PI * 2),\n};\n\nexport const hexToHsva = (hex: string): HsvaColor => rgbaToHsva(hexToRgba(hex));\n\nexport const hexToRgba = (hex: string): RgbaColor => {\n if (hex[0] === \"#\") hex = hex.substring(1);\n\n if (hex.length < 6) {\n return {\n r: parseInt(hex[0] + hex[0], 16),\n g: parseInt(hex[1] + hex[1], 16),\n b: parseInt(hex[2] + hex[2], 16),\n a: hex.length === 4 ? round(parseInt(hex[3] + hex[3], 16) / 255, 2) : 1,\n };\n }\n\n return {\n r: parseInt(hex.substring(0, 2), 16),\n g: parseInt(hex.substring(2, 4), 16),\n b: parseInt(hex.substring(4, 6), 16),\n a: hex.length === 8 ? round(parseInt(hex.substring(6, 8), 16) / 255, 2) : 1,\n };\n};\n\nexport const parseHue = (value: string, unit = \"deg\"): number => {\n return Number(value) * (angleUnits[unit] || 1);\n};\n\nexport const hslaStringToHsva = (hslString: string): HsvaColor => {\n const matcher = /hsla?\\(?\\s*(-?\\d*\\.?\\d+)(deg|rad|grad|turn)?[,\\s]+(-?\\d*\\.?\\d+)%?[,\\s]+(-?\\d*\\.?\\d+)%?,?\\s*[/\\s]*(-?\\d*\\.?\\d+)?(%)?\\s*\\)?/i;\n const match = matcher.exec(hslString);\n\n if (!match) return { h: 0, s: 0, v: 0, a: 1 };\n\n return hslaToHsva({\n h: parseHue(match[1], match[2]),\n s: Number(match[3]),\n l: Number(match[4]),\n a: match[5] === undefined ? 1 : Number(match[5]) / (match[6] ? 100 : 1),\n });\n};\n\nexport const hslStringToHsva = hslaStringToHsva;\n\nexport const hslaToHsva = ({ h, s, l, a }: HslaColor): HsvaColor => {\n s *= (l < 50 ? l : 100 - l) / 100;\n\n return {\n h: h,\n s: s > 0 ? ((2 * s) / (l + s)) * 100 : 0,\n v: l + s,\n a,\n };\n};\n\nexport const hsvaToHex = (hsva: HsvaColor): string => rgbaToHex(hsvaToRgba(hsva));\n\nexport const hsvaToHsla = ({ h, s, v, a }: HsvaColor): HslaColor => {\n const hh = ((200 - s) * v) / 100;\n\n return {\n h: round(h),\n s: round(hh > 0 && hh < 200 ? ((s * v) / 100 / (hh <= 100 ? hh : 200 - hh)) * 100 : 0),\n l: round(hh / 2),\n a: round(a, 2),\n };\n};\n\nexport const hsvaToHslString = (hsva: HsvaColor): string => {\n const { h, s, l } = hsvaToHsla(hsva);\n return `hsl(${h}, ${s}%, ${l}%)`;\n};\n\nexport const hsvaToHsvString = (hsva: HsvaColor): string => {\n const { h, s, v } = roundHsva(hsva);\n return `hsv(${h}, ${s}%, ${v}%)`;\n};\n\nexport const hsvaToHsvaString = (hsva: HsvaColor): string => {\n const { h, s, v, a } = roundHsva(hsva);\n return `hsva(${h}, ${s}%, ${v}%, ${a})`;\n};\n\nexport const hsvaToHslaString = (hsva: HsvaColor): string => {\n const { h, s, l, a } = hsvaToHsla(hsva);\n return `hsla(${h}, ${s}%, ${l}%, ${a})`;\n};\n\nexport const hsvaToRgba = ({ h, s, v, a }: HsvaColor): RgbaColor => {\n h = (h / 360) * 6;\n s = s / 100;\n v = v / 100;\n\n const hh = Math.floor(h),\n b = v * (1 - s),\n c = v * (1 - (h - hh) * s),\n d = v * (1 - (1 - h + hh) * s),\n module = hh % 6;\n\n return {\n r: round([v, c, b, b, d, v][module] * 255),\n g: round([d, v, v, c, b, b][module] * 255),\n b: round([b, b, d, v, v, c][module] * 255),\n a: round(a, 2),\n };\n};\n\nexport const hsvaToRgbString = (hsva: HsvaColor): string => {\n const { r, g, b } = hsvaToRgba(hsva);\n return `rgb(${r}, ${g}, ${b})`;\n};\n\nexport const hsvaToRgbaString = (hsva: HsvaColor): string => {\n const { r, g, b, a } = hsvaToRgba(hsva);\n return `rgba(${r}, ${g}, ${b}, ${a})`;\n};\n\nexport const hsvaStringToHsva = (hsvString: string): HsvaColor => {\n const matcher = /hsva?\\(?\\s*(-?\\d*\\.?\\d+)(deg|rad|grad|turn)?[,\\s]+(-?\\d*\\.?\\d+)%?[,\\s]+(-?\\d*\\.?\\d+)%?,?\\s*[/\\s]*(-?\\d*\\.?\\d+)?(%)?\\s*\\)?/i;\n const match = matcher.exec(hsvString);\n\n if (!match) return { h: 0, s: 0, v: 0, a: 1 };\n\n return roundHsva({\n h: parseHue(match[1], match[2]),\n s: Number(match[3]),\n v: Number(match[4]),\n a: match[5] === undefined ? 1 : Number(match[5]) / (match[6] ? 100 : 1),\n });\n};\n\nexport const hsvStringToHsva = hsvaStringToHsva;\n\nexport const rgbaStringToHsva = (rgbaString: string): HsvaColor => {\n const matcher = /rgba?\\(?\\s*(-?\\d*\\.?\\d+)(%)?[,\\s]+(-?\\d*\\.?\\d+)(%)?[,\\s]+(-?\\d*\\.?\\d+)(%)?,?\\s*[/\\s]*(-?\\d*\\.?\\d+)?(%)?\\s*\\)?/i;\n const match = matcher.exec(rgbaString);\n\n if (!match) return { h: 0, s: 0, v: 0, a: 1 };\n\n return rgbaToHsva({\n r: Number(match[1]) / (match[2] ? 100 / 255 : 1),\n g: Number(match[3]) / (match[4] ? 100 / 255 : 1),\n b: Number(match[5]) / (match[6] ? 100 / 255 : 1),\n a: match[7] === undefined ? 1 : Number(match[7]) / (match[8] ? 100 : 1),\n });\n};\n\nexport const rgbStringToHsva = rgbaStringToHsva;\n\nconst format = (number: number) => {\n const hex = number.toString(16);\n return hex.length < 2 ? \"0\" + hex : hex;\n};\n\nexport const rgbaToHex = ({ r, g, b, a }: RgbaColor): string => {\n const alphaHex = a < 1 ? format(round(a * 255)) : \"\";\n return \"#\" + format(r) + format(g) + format(b) + alphaHex;\n};\n\nexport const rgbaToHsva = ({ r, g, b, a }: RgbaColor): HsvaColor => {\n const max = Math.max(r, g, b);\n const delta = max - Math.min(r, g, b);\n\n // prettier-ignore\n const hh = delta\n ? max === r\n ? (g - b) / delta\n : max === g\n ? 2 + (b - r) / delta\n : 4 + (r - g) / delta\n : 0;\n\n return {\n h: round(60 * (hh < 0 ? hh + 6 : hh)),\n s: round(max ? (delta / max) * 100 : 0),\n v: round((max / 255) * 100),\n a,\n };\n};\n\nexport const roundHsva = (hsva: HsvaColor): HsvaColor => ({\n h: round(hsva.h),\n s: round(hsva.s),\n v: round(hsva.v),\n a: round(hsva.a, 2),\n});\n\nexport const rgbaToRgb = ({ r, g, b }: RgbaColor): RgbColor => ({ r, g, b });\n\nexport const hslaToHsl = ({ h, s, l }: HslaColor): HslColor => ({ h, s, l });\n\nexport const hsvaToHsv = (hsva: HsvaColor): HsvColor => {\n const { h, s, v } = roundHsva(hsva);\n return { h, s, v };\n};\n","import React from \"react\";\n\nimport { Interactive, Interaction } from \"./Interactive\";\nimport { Pointer } from \"./Pointer\";\n\nimport { hsvaToHslString } from \"../../utils/convert\";\nimport { formatClassName } from \"../../utils/format\";\nimport { clamp } from \"../../utils/clamp\";\nimport { round } from \"../../utils/round\";\n\ninterface Props {\n className?: string;\n hue: number;\n onChange: (newHue: { h: number }) => void;\n onChangeEnd?: () => void;\n}\n\nconst HueBase = ({ className, hue, onChange, onChangeEnd }: Props) => {\n const handleMove = (interaction: Interaction) => {\n onChange({ h: 360 * interaction.left });\n };\n\n const handleKey = (offset: Interaction) => {\n // Hue measured in degrees of the color circle ranging from 0 to 360\n onChange({\n h: clamp(hue + offset.left * 360, 0, 360),\n });\n };\n\n const nodeClassName = formatClassName([\"react-colorful__hue\", className]);\n\n return (\n <div className={nodeClassName}>\n <Interactive\n onMove={handleMove}\n onKey={handleKey}\n onEnd={onChangeEnd}\n aria-label=\"Hue\"\n aria-valuenow={round(hue)}\n aria-valuemax=\"360\"\n aria-valuemin=\"0\"\n >\n <Pointer\n className=\"react-colorful__hue-pointer\"\n left={hue / 360}\n color={hsvaToHslString({ h: hue, s: 100, v: 100, a: 1 })}\n />\n </Interactive>\n </div>\n );\n};\n\nexport const Hue = React.memo(HueBase);\n","import React from \"react\";\nimport { Interactive, Interaction } from \"./Interactive\";\nimport { Pointer } from \"./Pointer\";\nimport { HsvaColor } from \"../../types\";\nimport { hsvaToHslString } from \"../../utils/convert\";\nimport { clamp } from \"../../utils/clamp\";\nimport { round } from \"../../utils/round\";\n\ninterface Props {\n hsva: HsvaColor;\n onChange: (newColor: { s: number; v: number }) => void;\n onChangeEnd?: () => void;\n}\n\nconst SaturationBase = ({ hsva, onChange, onChangeEnd }: Props) => {\n const handleMove = (interaction: Interaction) => {\n onChange({\n s: interaction.left * 100,\n v: 100 - interaction.top * 100,\n });\n };\n\n const handleKey = (offset: Interaction) => {\n // Saturation and brightness always fit into [0, 100] range\n onChange({\n s: clamp(hsva.s + offset.left * 100, 0, 100),\n v: clamp(hsva.v - offset.top * 100, 0, 100),\n });\n };\n\n const containerStyle = {\n backgroundColor: hsvaToHslString({ h: hsva.h, s: 100, v: 100, a: 1 }),\n };\n\n return (\n <div className=\"react-colorful__saturation\" style={containerStyle}>\n <Interactive\n onMove={handleMove}\n onKey={handleKey}\n onEnd={onChangeEnd}\n aria-label=\"Color\"\n aria-valuetext={`Saturation ${round(hsva.s)}%, Brightness ${round(hsva.v)}%`}\n >\n <Pointer\n className=\"react-colorful__saturation-pointer\"\n top={1 - hsva.v / 100}\n left={hsva.s / 100}\n color={hsvaToHslString(hsva)}\n />\n </Interactive>\n </div>\n );\n};\n\nexport const Saturation = React.memo(SaturationBase);\n","import { hexToRgba } from \"./convert\";\nimport { ObjectColor } from \"../types\";\n\nexport const equalColorObjects = (first: ObjectColor, second: ObjectColor): boolean => {\n if (first === second) return true;\n\n for (const prop in first) {\n // The following allows for a type-safe calling of this function (first & second have to be HSL, HSV, or RGB)\n // with type-unsafe iterating over object keys. TS does not allow this without an index (`[key: string]: number`)\n // on an object to define how iteration is normally done. To ensure extra keys are not allowed on our types,\n // we must cast our object to unknown (as RGB demands `r` be a key, while `Record<string, x>` does not care if\n // there is or not), and then as a type TS can iterate over.\n if (\n ((first as unknown) as Record<string, number>)[prop] !==\n ((second as unknown) as Record<string, number>)[prop]\n )\n return false;\n }\n\n return true;\n};\n\nexport const equalColorString = (first: string, second: string): boolean => {\n return first.replace(/\\s/g, \"\") === second.replace(/\\s/g, \"\");\n};\n\nexport const equalHex = (first: string, second: string): boolean => {\n if (first.toLowerCase() === second.toLowerCase()) return true;\n\n // To compare colors like `#FFF` and `ffffff` we convert them into RGB objects\n return equalColorObjects(hexToRgba(first), hexToRgba(second));\n};\n","import { useState, useEffect, useCallback, useRef } from \"react\";\nimport { ColorModel, AnyColor, HsvaColor } from \"../types\";\nimport { equalColorObjects } from \"../utils/compare\";\nimport { useEventCallback } from \"./useEventCallback\";\n\nexport function useColorManipulation<T extends AnyColor>(\n colorModel: ColorModel<T>,\n color: T,\n onChange?: (color: T) => void,\n onChangeEnd?: (color: T) => void\n): [HsvaColor, (color: Partial<HsvaColor>) => void, () => void] {\n // Save onChange callback in the ref for avoiding \"useCallback hell\"\n const onChangeCallback = useEventCallback<T>(onChange);\n const onChangeEndCallback = useEventCallback<T>(onChangeEnd);\n\n // No matter which color model is used (HEX, RGB(A) or HSL(A)),\n // all internal calculations are based on HSVA model\n const [hsva, updateHsva] = useState<HsvaColor>(() => colorModel.toHsva(color));\n\n // By using this ref we're able to prevent extra updates\n // and the effects recursion during the color conversion\n const cache = useRef({ color, hsva });\n const isDirty = useRef(false);\n\n // Update local HSVA-value if `color` property value is changed,\n // but only if that's not the same color that we just sent to the parent\n useEffect(() => {\n if (!colorModel.equal(color, cache.current.color)) {\n const newHsva = colorModel.toHsva(color);\n cache.current = { hsva: newHsva, color };\n updateHsva(newHsva);\n isDirty.current = false;\n }\n }, [color, colorModel]);\n\n // Trigger `onChange` callback only if an updated color is different from cached one;\n // save the new color to the ref to prevent unnecessary updates\n useEffect(() => {\n let newColor;\n if (\n !equalColorObjects(hsva, cache.current.hsva) &&\n !colorModel.equal((newColor = colorModel.fromHsva(hsva)), cache.current.color)\n ) {\n cache.current = { hsva, color: newColor };\n onChangeCallback(newColor);\n isDirty.current = true;\n }\n }, [hsva, colorModel, onChangeCallback]);\n\n // Merge the current HSVA color object with updated params.\n // For example, when a child component sends `h` or `s` only\n const handleChange = useCallback((params: Partial<HsvaColor>) => {\n updateHsva((current) => Object.assign({}, current, params));\n }, []);\n\n const commitChange = useCallback(() => {\n if (isDirty.current) {\n isDirty.current = false;\n onChangeEndCallback(cache.current.color);\n }\n }, [onChangeEndCallback]);\n\n return [hsva, handleChange, commitChange];\n}\n","import { useLayoutEffect, useEffect } from \"react\";\n\n// React currently throws a warning when using useLayoutEffect on the server.\n// To get around it, we can conditionally useEffect on the server (no-op) and\n// useLayoutEffect in the browser.\nexport const useIsomorphicLayoutEffect =\n typeof window !== \"undefined\" ? useLayoutEffect : useEffect;\n","declare const __webpack_nonce__: string | undefined;\nlet nonce: string | undefined;\n\n/**\n * Returns a nonce hash included by Webpack or the one defined manually by developer.\n * https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/nonce\n * https://webpack.js.org/guides/csp/\n */\nexport const getNonce = (): string | undefined => {\n if (nonce) return nonce;\n if (typeof __webpack_nonce__ !== \"undefined\") return __webpack_nonce__;\n return undefined;\n};\n\n/**\n * Signs the style tag with a base64-encoded string (nonce) to conforms to Content Security Policies.\n * This function has to be invoked before any picker is rendered if you aren't using Webpack for CSP.\n */\nexport const setNonce = (hash: string): void => {\n nonce = hash;\n};\n","import { RefObject } from \"react\";\n\nimport { useIsomorphicLayoutEffect } from \"./useIsomorphicLayoutEffect\";\nimport { getNonce } from \"../utils/nonce\";\n\n// Bundler is configured to load this as a processed minified CSS-string\nimport styles from \"../css/styles.css\";\n\nconst styleElementMap: Map<Document, HTMLStyleElement> = new Map();\n\n/**\n * Injects CSS code into the document's <head>\n */\nexport const useStyleSheet = (nodeRef: RefObject<HTMLDivElement>): void => {\n useIsomorphicLayoutEffect(() => {\n const parentDocument = nodeRef.current ? nodeRef.current.ownerDocument : document;\n\n if (typeof parentDocument !== \"undefined\" && !styleElementMap.has(parentDocument)) {\n const styleElement = parentDocument.createElement(\"style\");\n styleElement.innerHTML = styles;\n styleElementMap.set(parentDocument, styleElement);\n\n // Conform to CSP rules by setting `nonce` attribute to the inline styles\n const nonce = getNonce();\n if (nonce) styleElement.setAttribute(\"nonce\", nonce);\n\n parentDocument.head.appendChild(styleElement);\n }\n }, []);\n};\n","import React, { useRef } from \"react\";\n\nimport { Hue } from \"./Hue\";\nimport { Saturation } from \"./Saturation\";\n\nimport { ColorModel, ColorPickerBaseProps, AnyColor } from \"../../types\";\nimport { useColorManipulation } from \"../../hooks/useColorManipulation\";\nimport { useStyleSheet } from \"../../hooks/useStyleSheet\";\nimport { formatClassName } from \"../../utils/format\";\n\ninterface Props<T extends AnyColor> extends Partial<ColorPickerBaseProps<T>> {\n colorModel: ColorModel<T>;\n}\n\nexport const ColorPicker = <T extends AnyColor>({\n className,\n colorModel,\n color = colorModel.defaultColor,\n onChange,\n onChangeEnd,\n ...rest\n}: Props<T>): React.ReactElement => {\n const nodeRef = useRef<HTMLDivElement>(null);\n useStyleSheet(nodeRef);\n\n const [hsva, updateHsva, commitChange] = useColorManipulation<T>(\n colorModel,\n color,\n onChange,\n onChangeEnd\n );\n\n const nodeClassName = formatClassName([\"react-colorful\", className]);\n\n return (\n <div {...rest} ref={nodeRef} className={nodeClassName}>\n <Saturation hsva={hsva} onChange={updateHsva} onChangeEnd={commitChange} />\n <Hue\n hue={hsva.h}\n onChange={updateHsva}\n onChangeEnd={commitChange}\n className=\"react-colorful__last-control\"\n />\n </div>\n );\n};\n","import React from \"react\";\n\nimport { ColorPicker } from \"./common/ColorPicker\";\nimport { ColorModel, ColorPickerBaseProps } from \"../types\";\nimport { equalHex } from \"../utils/compare\";\nimport { hexToHsva, hsvaToHex } from \"../utils/convert\";\n\nconst colorModel: ColorModel<string> = {\n defaultColor: \"000\",\n toHsva: hexToHsva,\n fromHsva: ({ h, s, v }) => hsvaToHex({ h, s, v, a: 1 }),\n equal: equalHex,\n};\n\nexport const HexColorPicker = (\n props: Partial<ColorPickerBaseProps<string>>\n): React.ReactElement => <ColorPicker {...props} colorModel={colorModel} />;\n","export const HEX_RE = /^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$/;\n\n// <input type=\"color\"> e o draft interno só trabalham com #rrggbb.\nexport function normalizeHex(input: string): string | null {\n const withHash = input.startsWith('#') ? input : `#${input}`;\n if (!HEX_RE.test(withHash)) return null;\n if (withHash.length === 7) return withHash.toUpperCase();\n const [r, g, b] = withHash.slice(1);\n return `#${r}${r}${g}${g}${b}${b}`.toUpperCase();\n}\n\nexport function hexToRgb(hex: string): { r: number; g: number; b: number } {\n const full = normalizeHex(hex) ?? '#000000';\n return {\n r: parseInt(full.slice(1, 3), 16),\n g: parseInt(full.slice(3, 5), 16),\n b: parseInt(full.slice(5, 7), 16)\n };\n}\n\nexport function rgbToHex(r: number, g: number, b: number): string {\n const channel = (value: number) =>\n Math.max(0, Math.min(255, Math.round(value)))\n .toString(16)\n .padStart(2, '0');\n return `#${channel(r)}${channel(g)}${channel(b)}`.toUpperCase();\n}\n","import styled from 'styled-components';\n\nexport const Panel = styled.div`\n width: 100%;\n\n .react-colorful {\n width: 100%;\n height: 160px;\n }\n\n .react-colorful__saturation {\n border-radius: 8px;\n border-bottom: none;\n }\n\n .react-colorful__hue {\n height: 10px;\n margin-top: 10px;\n border-radius: 5px;\n }\n\n .react-colorful__pointer {\n width: 18px;\n height: 18px;\n border: 3px solid #fff;\n }\n\n .react-colorful__hue-pointer {\n width: 14px;\n height: 14px;\n }\n`;\n\nexport const Fields = styled.div`\n display: grid;\n grid-template-columns: 1.8fr 1fr 1fr 1fr;\n gap: 6px;\n margin-top: 12px;\n`;\n\nexport const FieldColumn = styled.label`\n display: flex;\n flex-direction: column;\n gap: 4px;\n font-size: 11px;\n font-weight: 600;\n color: #3f4759;\n`;\n\nexport const FieldInput = styled.input`\n width: 100%;\n padding: 6px 4px;\n border: 1px solid #e5e7eb;\n border-radius: 6px;\n font-size: 12px;\n text-align: center;\n color: #3f4759;\n`;\n","import { useEffect, useRef, useState } from 'react';\nimport { HexColorPicker } from 'react-colorful';\nimport { hexToRgb, normalizeHex, rgbToHex } from './color';\nimport { FieldColumn, FieldInput, Fields, Panel } from './ColorPickerPanel.styles';\n\nexport type ColorPickerPanelProps = {\n /** Cor inicial (#rrggbb). */\n value: string;\n /** Chamado com debounce a cada ajuste (arraste, hex, RGB). */\n onChange: (hex: string) => void;\n debounceMs?: number;\n};\n\ntype Channel = 'r' | 'g' | 'b';\n\nconst CHANNELS: { key: Channel; label: string }[] = [\n { key: 'r', label: 'R' },\n { key: 'g', label: 'G' },\n { key: 'b', label: 'B' }\n];\n\n/** Picker avançado (react-colorful): saturação + matiz e campos Hex/RGB, aplicação ao vivo. */\nexport function ColorPickerPanel({ value, onChange, debounceMs = 300 }: ColorPickerPanelProps) {\n const [draft, setDraft] = useState(() => normalizeHex(value) ?? '#000000');\n const [hexText, setHexText] = useState(draft);\n const timer = useRef<ReturnType<typeof setTimeout>>();\n const pending = useRef<string | null>(null);\n const onChangeRef = useRef(onChange);\n onChangeRef.current = onChange;\n\n useEffect(() => setHexText(draft), [draft]);\n\n useEffect(\n () => () => {\n clearTimeout(timer.current);\n if (pending.current !== null) onChangeRef.current(pending.current);\n },\n []\n );\n\n const apply = (hex: string) => {\n setDraft(hex);\n pending.current = hex;\n clearTimeout(timer.current);\n timer.current = setTimeout(() => {\n pending.current = null;\n onChangeRef.current(hex);\n }, debounceMs);\n };\n\n const rgb = hexToRgb(draft);\n\n const onChannelChange = (channel: Channel, raw: string) => {\n const parsed = raw === '' ? 0 : parseInt(raw, 10);\n if (Number.isNaN(parsed)) return;\n const next = { ...rgb, [channel]: parsed };\n apply(rgbToHex(next.r, next.g, next.b));\n };\n\n return (\n <Panel>\n <HexColorPicker color={draft} onChange={next => apply(next.toUpperCase())} />\n <Fields>\n <FieldColumn>\n Hex\n <FieldInput\n aria-label=\"Hex\"\n value={hexText}\n onChange={e => {\n setHexText(e.target.value);\n const normalized = normalizeHex(e.target.value);\n if (normalized) apply(normalized);\n }}\n onBlur={() => setHexText(draft)}\n />\n </FieldColumn>\n {CHANNELS.map(({ key, label }) => (\n <FieldColumn key={key}>\n {label}\n <FieldInput\n aria-label={label}\n inputMode=\"numeric\"\n value={rgb[key]}\n onChange={e => onChannelChange(key, e.target.value)}\n />\n </FieldColumn>\n ))}\n </Fields>\n </Panel>\n );\n}\n","import styled from 'styled-components';\n\nexport const Wrapper = styled.div`\n position: relative;\n display: inline-flex;\n`;\n\nexport const SwatchTrigger = styled.button<{ $color: string; $size: number }>`\n width: ${props => props.$size}px;\n height: ${props => props.$size}px;\n padding: 0;\n border: 1px solid #e5e7eb;\n border-radius: 6px;\n cursor: pointer;\n background: ${props => props.$color};\n`;\n\nexport const Popover = styled.div`\n position: absolute;\n top: calc(100% + 8px);\n right: 0;\n width: 216px;\n padding: 12px;\n background: #fff;\n border: 1px solid #e5e7eb;\n border-radius: 10px;\n box-shadow: 0 8px 24px rgba(15, 23, 42, 0.14);\n z-index: 1200;\n display: flex;\n flex-direction: column;\n gap: 12px;\n`;\n\nexport const PresetGrid = styled.div`\n display: grid;\n grid-template-columns: repeat(6, 1fr);\n gap: 6px;\n`;\n\nexport const PresetSwatch = styled.button<{ $color: string }>`\n position: relative;\n width: 100%;\n aspect-ratio: 1;\n padding: 0;\n border: 1px solid rgba(15, 23, 42, 0.12);\n border-radius: 7px;\n cursor: pointer;\n background: ${props => props.$color};\n color: #fff;\n display: flex;\n align-items: center;\n justify-content: center;\n\n &:hover {\n transform: scale(1.08);\n }\n`;\n\nexport const CurrentRow = styled.div`\n display: flex;\n align-items: center;\n gap: 8px;\n`;\n\nexport const CurrentSwatch = styled.button<{ $color: string }>`\n width: 28px;\n height: 28px;\n flex-shrink: 0;\n padding: 0;\n border: 1px solid #e5e7eb;\n border-radius: 6px;\n cursor: pointer;\n background: ${props => props.$color};\n`;\n\nexport const HexField = styled.input`\n flex: 1;\n min-width: 0;\n padding: 6px 8px;\n border: 1px solid #e5e7eb;\n border-radius: 6px;\n font-size: 13px;\n color: #3f4759;\n`;\n\nexport const InheritAction = styled.button`\n display: inline-flex;\n align-items: center;\n gap: 6px;\n align-self: flex-start;\n padding: 0;\n border: none;\n background: none;\n font-size: 13px;\n font-weight: 500;\n color: #1a56db;\n cursor: pointer;\n\n &:hover {\n text-decoration: underline;\n }\n`;\n","import { useEffect, useRef, useState } from 'react';\nimport { ColorPickerPanel } from './ColorPickerPanel';\nimport { hexToRgb, normalizeHex } from './color';\nimport {\n CurrentRow,\n CurrentSwatch,\n HexField,\n InheritAction,\n Popover,\n PresetGrid,\n PresetSwatch,\n SwatchTrigger,\n Wrapper\n} from './ColorPicker.styles';\n\nexport const DEFAULT_COLOR_PRESETS = [\n '#000000',\n '#434A5B',\n '#A9B0C5',\n '#FFFFFF',\n '#7D2A55',\n '#9B3FD6',\n '#D63F94',\n '#D63C31',\n '#F5820B',\n '#DFA71E',\n '#54390B',\n '#57AB32',\n '#25541B',\n '#2AA48D',\n '#7DA8F7',\n '#2563EB',\n '#152C61',\n '#6B7280'\n];\n\nconst checkColor = (hex: string) => {\n const { r, g, b } = hexToRgb(hex);\n return 0.299 * r + 0.587 * g + 0.114 * b > 186 ? '#1F2937' : '#FFFFFF';\n};\n\nfunction CheckIcon() {\n return (\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 16 16\" fill=\"none\" aria-hidden>\n <path\n d=\"M3 8.5 6.5 12 13 4.5\"\n stroke=\"currentColor\"\n strokeWidth=\"2.4\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n );\n}\n\nfunction InheritIcon() {\n return (\n <svg width=\"13\" height=\"13\" viewBox=\"0 0 16 16\" fill=\"none\" aria-hidden>\n <path\n d=\"M13.5 8a5.5 5.5 0 1 1-1.61-3.89M13.5 2.5v2.75h-2.75\"\n stroke=\"currentColor\"\n strokeWidth=\"1.6\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n );\n}\n\nexport type ColorPickerProps = {\n /** Cor escolhida (#rrggbb). `undefined` = herdando (mostra `fallback`). */\n value?: string;\n /** Cor efetiva exibida quando não há `value` (ex: brand do tema). */\n fallback?: string;\n presets?: string[];\n /** `undefined` no argumento = herdar/limpar. */\n onChange: (hex?: string) => void;\n /** Quando presente, exibe a ação de herdar (ex: \"Herdar do tema\"). */\n inheritLabel?: string;\n ariaLabel?: string;\n /** Lado do swatch em px. */\n size?: number;\n};\n\n/**\n * Seletor de cor unificado do gerador: swatch → popover com paleta, cor atual +\n * hex e picker avançado (react-colorful) embutido. Usado nos blocos e no modal\n * de configurações do documento.\n */\nexport function ColorPicker({\n value,\n fallback,\n presets = DEFAULT_COLOR_PRESETS,\n onChange,\n inheritLabel,\n ariaLabel,\n size = 28\n}: ColorPickerProps) {\n const [open, setOpen] = useState(false);\n const [advanced, setAdvanced] = useState(false);\n const [hexDraft, setHexDraft] = useState<string | null>(null);\n const wrapperRef = useRef<HTMLDivElement>(null);\n\n const effective = value ?? fallback ?? '#000000';\n\n if (presets.length % 6 !== 0) {\n // eslint-disable-next-line no-console\n console.warn(`[vobi-document] paleta com ${presets.length} cores não fecha linhas de 6 (docs/theme.md).`);\n }\n\n useEffect(() => {\n if (!open) return undefined;\n const close = (event: PointerEvent) => {\n const el = wrapperRef.current;\n if (el && !el.contains(event.target as Node)) {\n setOpen(false);\n setAdvanced(false);\n }\n };\n document.addEventListener('pointerdown', close);\n return () => document.removeEventListener('pointerdown', close);\n }, [open]);\n\n const commit = (hex?: string) => {\n setHexDraft(null);\n onChange(hex);\n };\n\n return (\n <Wrapper ref={wrapperRef}>\n <SwatchTrigger\n type=\"button\"\n aria-label={ariaLabel}\n $color={effective}\n $size={size}\n onClick={() => setOpen(prev => !prev)}\n />\n {open ? (\n <Popover>\n <PresetGrid>\n {presets.map(preset => (\n <PresetSwatch\n key={preset}\n type=\"button\"\n aria-label={preset}\n $color={preset}\n style={{ color: checkColor(preset) }}\n onClick={() => commit(preset)}\n >\n {value?.toUpperCase() === preset.toUpperCase() ? <CheckIcon /> : null}\n </PresetSwatch>\n ))}\n </PresetGrid>\n <CurrentRow>\n <CurrentSwatch\n type=\"button\"\n aria-label=\"Cor personalizada\"\n $color={effective}\n onClick={() => setAdvanced(prev => !prev)}\n />\n <HexField\n aria-label=\"Cor (hex)\"\n value={hexDraft ?? effective.toUpperCase()}\n onChange={e => {\n const next = e.target.value;\n const normalized = normalizeHex(next);\n if (normalized) {\n commit(normalized);\n return;\n }\n setHexDraft(next);\n }}\n onBlur={() => setHexDraft(null)}\n />\n </CurrentRow>\n {advanced ? <ColorPickerPanel value={effective} onChange={next => commit(next)} /> : null}\n {inheritLabel ? (\n <InheritAction\n type=\"button\"\n onClick={() => {\n commit(undefined);\n setOpen(false);\n }}\n >\n <InheritIcon />\n {inheritLabel}\n </InheritAction>\n ) : null}\n </Popover>\n ) : null}\n </Wrapper>\n );\n}\n","import styled from 'styled-components';\n\nexport const Backdrop = styled.div`\n position: fixed;\n inset: 0;\n background: rgba(15, 23, 42, 0.45);\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 1000;\n`;\n\nexport const Dialog = styled.div`\n width: 560px;\n max-width: calc(100vw - 32px);\n max-height: calc(100vh - 64px);\n background: #fff;\n border-radius: 12px;\n overflow: hidden;\n display: flex;\n flex-direction: column;\n font-family:\n 'Inter',\n -apple-system,\n sans-serif;\n`;\n\nexport const Head = styled.div`\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 20px 24px;\n border-bottom: 1px solid #eef0f3;\n font-size: 18px;\n font-weight: 600;\n color: #1f2937;\n`;\n\nexport const CloseButton = styled.button`\n border: none;\n background: none;\n cursor: pointer;\n font-size: 20px;\n color: #6b7280;\n line-height: 1;\n`;\n\nexport const Panel = styled.div`\n flex: 1;\n padding: 24px 28px;\n overflow: auto;\n`;\n\nexport const SectionTitle = styled.h3`\n margin: 0 0 16px;\n font-size: 15px;\n font-weight: 600;\n color: #1f2937;\n`;\n\nexport const ColorRow = styled.label`\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 12px;\n padding: 10px 0;\n font-size: 14px;\n color: #3f4759;\n`;\n\nexport const ColorControls = styled.div`\n position: relative;\n display: flex;\n align-items: center;\n gap: 10px;\n`;\n\nexport const HexInput = styled.input`\n width: 96px;\n padding: 6px 8px;\n border: 1px solid #e5e7eb;\n border-radius: 6px;\n font-size: 13px;\n text-align: right;\n color: #6b7280;\n`;\n\nexport const SwatchButton = styled.button<{ $color: string }>`\n width: 36px;\n height: 36px;\n padding: 0;\n border: 1px solid #e5e7eb;\n border-radius: 6px;\n cursor: pointer;\n background: ${props => props.$color};\n`;\n\nexport const Field = styled.div`\n margin-top: 24px;\n`;\n\nexport const FieldLabel = styled.label`\n display: block;\n margin-bottom: 8px;\n font-size: 14px;\n font-weight: 600;\n color: #1f2937;\n`;\n\nexport const Select = styled.select`\n width: 100%;\n padding: 10px 12px;\n border: 1px solid #e5e7eb;\n border-radius: 8px;\n font-size: 14px;\n color: #3f4759;\n background: #fff;\n`;\n\nexport const LogoBox = styled.div`\n margin-top: 12px;\n width: 160px;\n height: 160px;\n border: 1px solid #e5e7eb;\n border-radius: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: #f5f7fa;\n overflow: hidden;\n position: relative;\n`;\n\nexport const LogoImg = styled.img`\n max-width: 100%;\n max-height: 100%;\n`;\n\nexport const UploadLabel = styled.label`\n display: inline-flex;\n align-items: center;\n gap: 6px;\n margin-top: 12px;\n padding: 8px 14px;\n border-radius: 6px;\n background: #1a56db;\n color: #fff;\n font-size: 13px;\n font-weight: 500;\n cursor: pointer;\n`;\n\nexport const HiddenFile = styled.input`\n display: none;\n`;\n\nexport const Placeholder = styled.div`\n color: #9aa3af;\n font-size: 14px;\n`;\n","import { ColorPicker } from '../colorPicker/ColorPicker';\nimport { ColorControls, ColorRow } from './DocumentSettingsModal.styles';\n\nexport type ColorFieldProps = { label: string; value: string; onCommit: (value: string) => void };\n\nexport function ColorField({ label, value, onCommit }: ColorFieldProps) {\n return (\n <ColorRow as=\"div\">\n <span>{label}</span>\n <ColorControls>\n <ColorPicker\n value={value}\n ariaLabel={`${label} (seletor)`}\n onChange={next => {\n if (next) onCommit(next);\n }}\n />\n </ColorControls>\n </ColorRow>\n );\n}\n","import { DOCUMENT_FONTS } from '../../surface/fonts';\nimport { DEFAULT_DOCUMENT_COLORS } from '../../surface/surface';\nimport { DEFAULT_DOCUMENT_FONT_ID } from '../../surface/resolveTheme';\nimport type { Theme } from '../../schema/theme';\nimport { ColorField } from './ColorField';\nimport {\n Field,\n FieldLabel,\n HiddenFile,\n LogoBox,\n LogoImg,\n Placeholder,\n SectionTitle,\n Select,\n UploadLabel\n} from './DocumentSettingsModal.styles';\n\nconst COLOR_FIELDS: { key: 'brand' | 'text' | 'background'; label: string }[] = [\n { key: 'brand', label: 'Cor de marca' },\n { key: 'text', label: 'Texto' },\n { key: 'background', label: 'Fundo' }\n];\n\nexport type VisualTabProps = {\n theme: Theme;\n onPatch: (next: Partial<Theme>) => void;\n onLogoUpload?: (file: File) => Promise<{ key?: string; url?: string }>;\n};\n\nexport function VisualTab({ theme, onPatch, onLogoUpload }: VisualTabProps) {\n const colors = { ...DEFAULT_DOCUMENT_COLORS, ...theme.colors };\n\n const setColor = (key: 'brand' | 'text' | 'background', value: string) =>\n onPatch({ colors: { ...theme.colors, [key]: value } });\n\n const handleLogo = async (file: File | undefined) => {\n if (!file || !onLogoUpload) return;\n const result = await onLogoUpload(file);\n onPatch({ logo: result });\n };\n\n return (\n <>\n <SectionTitle>Cores</SectionTitle>\n {COLOR_FIELDS.map(field => (\n <ColorField\n key={field.key}\n label={field.label}\n value={colors[field.key]}\n onCommit={next => setColor(field.key, next)}\n />\n ))}\n\n <Field>\n <FieldLabel htmlFor=\"docgen-font\">Fonte</FieldLabel>\n <Select\n id=\"docgen-font\"\n aria-label=\"Fonte\"\n value={theme.documentFont ?? DEFAULT_DOCUMENT_FONT_ID}\n onChange={e => onPatch({ documentFont: e.target.value })}\n >\n {DOCUMENT_FONTS.map(font => (\n <option key={font.id} value={font.id}>\n {font.label}\n </option>\n ))}\n </Select>\n </Field>\n\n <Field>\n <FieldLabel as=\"span\">Logo</FieldLabel>\n <LogoBox>\n {theme.logo?.url ? <LogoImg src={theme.logo.url} alt=\"Logo\" /> : <Placeholder>Sem logo</Placeholder>}\n </LogoBox>\n <UploadLabel>\n Alterar\n <HiddenFile\n type=\"file\"\n accept=\"image/*\"\n aria-label=\"Alterar logo\"\n onChange={e => handleLogo(e.target.files?.[0])}\n />\n </UploadLabel>\n </Field>\n </>\n );\n}\n","import type { Theme } from '../../schema/theme';\nimport { VisualTab } from './VisualTab';\nimport { Backdrop, CloseButton, Dialog, Head, Panel } from './DocumentSettingsModal.styles';\n\nexport type DocumentSettingsModalProps = {\n open: boolean;\n onClose: () => void;\n theme: Theme;\n onThemeChange: (theme: Theme) => void;\n onLogoUpload?: (file: File) => Promise<{ key?: string; url?: string }>;\n};\n\n/**\n * Modal padrão de configurações do documento (aba Visual: cores, fonte, logo).\n * Hosts que precisam de mais abas ou do próprio design system substituem via\n * `renderSettings` no DocumentEditor.\n */\nexport function DocumentSettingsModal({\n open,\n onClose,\n theme,\n onThemeChange,\n onLogoUpload\n}: DocumentSettingsModalProps) {\n if (!open) return null;\n\n const patch = (next: Partial<Theme>) => onThemeChange({ ...theme, ...next });\n\n return (\n <Backdrop role=\"dialog\" aria-modal=\"true\" aria-label=\"Configurações do documento\">\n <Dialog>\n <Head>\n <span>Configurações do documento</span>\n <CloseButton type=\"button\" aria-label=\"Fechar\" onClick={onClose}>\n ×\n </CloseButton>\n </Head>\n <Panel>\n <VisualTab theme={theme} onPatch={patch} onLogoUpload={onLogoUpload} />\n </Panel>\n </Dialog>\n </Backdrop>\n );\n}\n","import { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { formatResolvedValues } from './resolve';\nimport type { ResolvedVariables, VariableContext, VariableDef, VariableResolver } from './types';\n\nexport type UseVariableResolutionOptions = {\n catalog?: VariableDef[];\n resolver?: VariableResolver;\n ctx?: VariableContext;\n keys?: string[];\n};\n\nexport type UseVariableResolutionResult = {\n resolved: ResolvedVariables;\n ensureResolved: (keys: string[]) => Promise<void>;\n};\n\ntype State = { ctxHash: string; raw: Record<string, unknown>; attempted: string[] };\n\nconst EMPTY: ResolvedVariables = {};\nconst EMPTY_RAW: Record<string, unknown> = {};\n\nconst defsFor = (keys: string[], catalog: VariableDef[]): VariableDef[] => {\n const byKey = new Map(catalog.map(def => [def.key, def]));\n return keys.map(key => byKey.get(key) ?? { key, label: key, type: 'string' as const, model: 'outros' });\n};\n\nexport function useVariableResolution({\n catalog = [],\n resolver,\n ctx = {},\n keys = []\n}: UseVariableResolutionOptions): UseVariableResolutionResult {\n const keysHash = useMemo(() => [...keys].sort().join('|'), [keys]);\n const ctxHash = useMemo(() => JSON.stringify(ctx), [ctx]);\n\n const [state, setState] = useState<State>({ ctxHash, raw: EMPTY_RAW, attempted: [] });\n\n const catalogRef = useRef(catalog);\n catalogRef.current = catalog;\n const resolverRef = useRef(resolver);\n resolverRef.current = resolver;\n const ctxRef = useRef(ctx);\n ctxRef.current = ctx;\n const ctxHashRef = useRef(ctxHash);\n ctxHashRef.current = ctxHash;\n const keysRef = useRef(keys);\n keysRef.current = keys;\n const stateRef = useRef(state);\n stateRef.current = state;\n\n const resolved = useMemo(\n () => (state.ctxHash === ctxHash ? formatResolvedValues(defsFor(state.attempted, catalog), state.raw) : EMPTY),\n [state, ctxHash, catalog]\n );\n\n const missingFor = (list: string[], forCtx: string): string[] => {\n const attempted = new Set(stateRef.current.ctxHash === forCtx ? stateRef.current.attempted : []);\n return list.filter(key => !attempted.has(key));\n };\n\n const merge = (forCtx: string, list: string[], next: Record<string, unknown>): void =>\n setState(prev => {\n const stale = prev.ctxHash !== forCtx;\n return {\n ctxHash: forCtx,\n raw: { ...(stale ? EMPTY_RAW : prev.raw), ...next },\n attempted: [...new Set([...(stale ? [] : prev.attempted), ...list])]\n };\n });\n\n /** `null` = não dá para buscar agora; as keys não entram em `attempted` e serão tentadas de novo. */\n const fetchKeys = useCallback((list: string[]): Promise<Record<string, unknown> | null> => {\n const currentResolver = resolverRef.current;\n if (!currentResolver || list.length === 0) return Promise.resolve(null);\n return currentResolver(list, ctxRef.current);\n }, []);\n\n useEffect(() => {\n const forCtx = ctxHash;\n const missing = missingFor(keysRef.current, forCtx);\n if (!missing.length) return undefined;\n\n let active = true;\n fetchKeys(missing).then(next => {\n if (active && next) merge(forCtx, missing, next);\n });\n return () => {\n active = false;\n };\n }, [keysHash, ctxHash, fetchKeys, resolver]);\n\n const ensureResolved = useCallback(\n (list: string[]): Promise<void> => {\n const forCtx = ctxHashRef.current;\n const missing = missingFor(list, forCtx);\n if (!missing.length) return Promise.resolve();\n return fetchKeys(missing).then(next => {\n if (next) merge(forCtx, missing, next);\n });\n },\n [fetchKeys]\n );\n\n return { resolved, ensureResolved };\n}\n","import { Fragment, type ReactNode, createElement, useMemo, useRef, useState } from 'react';\nimport {\n ActionBar,\n type ComponentData,\n type Data,\n type Dictionary,\n type IframeConfig,\n type Metadata,\n Puck,\n blocksPlugin,\n fieldsPlugin,\n outlinePlugin,\n useGetPuck\n} from '@puckeditor/core';\nimport { buildConfig } from '../core/buildConfig';\nimport type { Registry } from '../blocks/types';\nimport { DrawerCard, DrawerHint, DrawerItemIcon, EditorShell } from '../surface/surface';\nimport { DocumentThemeProvider } from '../surface/themeContext';\nimport { useDocumentFont } from '../surface/useDocumentFont';\nimport { BlockIcon } from './blockIcons';\nimport { ptBrDictionary } from './dictionary';\nimport { installModifierStateShim } from './modifierStateShim';\nimport { EditorApiBridge } from './EditorApiBridge';\nimport type { DocumentEditorApiRef } from './editorApi';\nimport { headerApiFromHistory, type DocumentHeaderApi } from './headerApi';\nimport { usePuckState } from './puckStore';\nimport { DocumentSettingsModal } from './settings/DocumentSettingsModal';\nimport type { Theme } from '../schema/theme';\nimport { CatalogProvider, type Translator } from '../variables/catalogContext';\nimport { ResolvedProvider } from '../variables/resolvedContext';\nimport { extractBindingKeys } from '../variables/bindings';\nimport { useVariableResolution } from '../variables/useVariableResolution';\nimport type { UnresolvedDisplay, VariableContext, VariableDef, VariableResolver } from '../variables/types';\n\nexport type DisabledBlock = { key: string; reason?: string };\n\ntype ActionBarProps = { label?: string; children: ReactNode; parentAction: ReactNode };\n\nexport type SettingsRenderProps = {\n open: boolean;\n onClose: () => void;\n theme: Theme;\n onThemeChange: (theme: Theme) => void;\n onLogoUpload?: (file: File) => Promise<{ key?: string; url?: string }>;\n};\n\nexport type DocumentEditorProps = {\n registry: Registry;\n data?: Partial<Data>;\n onChange?: (data: Data) => void;\n onPublish?: (data: Data) => void;\n iframe?: IframeConfig;\n disabledBlocks?: DisabledBlock[];\n theme?: Theme;\n onThemeChange?: (theme: Theme) => void;\n onLogoUpload?: (file: File) => Promise<{ key?: string; url?: string }>;\n renderSettings?: (settings: SettingsRenderProps) => ReactNode;\n renderHeader?: (api: DocumentHeaderApi) => ReactNode;\n /** Ações extras na action bar do bloco selecionado. Recebe o item; devolva `ActionBar.Action`s. */\n renderBlockActions?: (item: ComponentData | null) => ReactNode;\n /** A lib preenche com `{ setData }` para o host mutar o documento sem remontar o editor. */\n apiRef?: DocumentEditorApiRef;\n catalog?: VariableDef[];\n translator?: Translator;\n resolver?: VariableResolver;\n ctx?: VariableContext;\n unresolvedDisplay?: UnresolvedDisplay;\n /** Dados do host visíveis a todo bloco como `puck.metadata` (ex.: `{ isTemplate: true }`). */\n metadata?: Metadata;\n /** Strings da UI do Puck. Default: PT-BR (`ptBrDictionary`). */\n dictionary?: Dictionary;\n patchModifierState?: boolean;\n};\n\nconst EMPTY = { content: [], root: {} } as Data;\n\nexport function DocumentEditor({\n registry,\n data,\n onChange,\n onPublish,\n iframe = { enabled: false },\n theme = {},\n onThemeChange,\n onLogoUpload,\n renderSettings,\n renderHeader,\n renderBlockActions,\n catalog = [],\n translator = {},\n resolver,\n ctx = {},\n unresolvedDisplay = 'placeholder',\n metadata,\n dictionary = ptBrDictionary,\n patchModifierState = true,\n disabledBlocks = [],\n apiRef\n}: DocumentEditorProps) {\n if (patchModifierState) installModifierStateShim();\n\n const [settingsOpen, setSettingsOpen] = useState(false);\n\n useDocumentFont(theme.documentFont);\n\n const disabledByKey = useMemo(\n () => Object.fromEntries(disabledBlocks.map(block => [block.key, block.reason ?? ''])),\n [disabledBlocks.map(block => `${block.key}:${block.reason ?? ''}`).join('|')]\n );\n\n const baseConfig = useMemo(() => buildConfig(registry), [registry]);\n\n const config = useMemo(() => {\n const disabledKeys = Object.keys(disabledByKey);\n if (!disabledKeys.length) return baseConfig;\n const components = { ...baseConfig.components };\n disabledKeys.forEach(key => {\n if (!components[key]) return;\n components[key] = {\n ...components[key],\n permissions: { ...components[key].permissions, insert: false }\n };\n });\n return { ...baseConfig, components };\n }, [baseConfig, disabledByKey]);\n\n // Identidades instáveis do host lidas via ref — ver docs/architecture.md.\n const themeRef = useRef(theme);\n themeRef.current = theme;\n const renderHeaderRef = useRef(renderHeader);\n renderHeaderRef.current = renderHeader;\n const apiRefRef = useRef(apiRef);\n apiRefRef.current = apiRef;\n const renderBlockActionsRef = useRef(renderBlockActions);\n renderBlockActionsRef.current = renderBlockActions;\n\n const usedKeys = useMemo(() => extractBindingKeys(data), [data]);\n const { resolved, ensureResolved } = useVariableResolution({ catalog, resolver, ctx, keys: usedKeys });\n\n /** Ícone e label de cada bloco do registry — usados no card do palette. */\n const blockByKey = useMemo(() => {\n const map: Record<string, { icon?: ReactNode; label?: string }> = {};\n registry.forEach(block => {\n map[block.key] = { icon: block.icon, label: block.label };\n });\n return map;\n }, [registry]);\n\n const plugins = useMemo(\n () => [\n { ...blocksPlugin(), label: 'Blocos' },\n { ...outlinePlugin(), label: 'Estrutura' },\n { ...fieldsPlugin(), label: 'Campos' }\n ],\n []\n );\n\n const overrides = useMemo(() => {\n const base = {\n // eslint-disable-next-line react/no-unstable-nested-components, react/no-unused-prop-types\n drawerItem: ({ name }: { name: string }) => {\n const card = (\n <DrawerCard $disabled={name in disabledByKey}>\n <DrawerItemIcon>{blockByKey[name]?.icon ?? <BlockIcon />}</DrawerItemIcon>\n <span>{blockByKey[name]?.label ?? name}</span>\n </DrawerCard>\n );\n if (!(name in disabledByKey)) return card;\n return <DrawerHint data-hint={disabledByKey[name] || undefined}>{card}</DrawerHint>;\n }\n };\n\n const withBridge = apiRefRef.current\n ? {\n ...base,\n // eslint-disable-next-line react/no-unstable-nested-components, react/no-unused-prop-types\n puck: ({ children }: { children: ReactNode }) =>\n createElement(EditorApiBridge, { apiRef: apiRefRef.current }, children)\n }\n : base;\n\n // eslint-disable-next-line react/no-unstable-nested-components\n function BlockActionBar({ label, children, parentAction }: ActionBarProps) {\n const selectedItem = usePuckState(state => state.selectedItem);\n const extra = renderBlockActionsRef.current?.(selectedItem ?? null);\n return (\n <ActionBar>\n <ActionBar.Group>\n {parentAction}\n {label ? <ActionBar.Label label={label} /> : null}\n </ActionBar.Group>\n {extra ? <ActionBar.Group>{extra}</ActionBar.Group> : null}\n <ActionBar.Group>{children}</ActionBar.Group>\n </ActionBar>\n );\n }\n\n const withActions = renderBlockActionsRef.current ? { ...withBridge, actionBar: BlockActionBar } : withBridge;\n\n if (!renderHeaderRef.current) return withActions;\n\n // eslint-disable-next-line react/no-unstable-nested-components\n function Header() {\n const getPuck = useGetPuck();\n const hasPast = usePuckState(state => state.history.hasPast);\n const hasFuture = usePuckState(state => state.history.hasFuture);\n\n const api = headerApiFromHistory(\n {\n hasPast,\n hasFuture,\n back: () => getPuck().history.back(),\n forward: () => getPuck().history.forward()\n },\n {\n openSettings: () => setSettingsOpen(true),\n openPreview: () =>\n getPuck().dispatch({\n type: 'setUi',\n ui: prev => ({ previewMode: prev.previewMode === 'edit' ? 'interactive' : 'edit' })\n }),\n theme: themeRef.current\n }\n );\n return createElement(Fragment, null, renderHeaderRef.current?.(api));\n }\n\n return { ...withActions, header: Header };\n }, [blockByKey, disabledByKey, Boolean(renderHeader), Boolean(apiRef), Boolean(renderBlockActions)]);\n\n return (\n <DocumentThemeProvider theme={theme}>\n <CatalogProvider catalog={catalog} translator={translator}>\n <ResolvedProvider resolved={resolved} ensureResolved={ensureResolved} unresolvedDisplay={unresolvedDisplay}>\n <EditorShell>\n <Puck\n config={config}\n data={{ ...EMPTY, ...data }}\n onChange={onChange}\n onPublish={onPublish}\n iframe={iframe}\n overrides={overrides}\n plugins={plugins}\n metadata={metadata}\n dictionary={dictionary}\n />\n </EditorShell>\n {renderSettings ? (\n renderSettings({\n open: settingsOpen,\n onClose: () => setSettingsOpen(false),\n theme,\n onThemeChange: onThemeChange ?? (() => undefined),\n onLogoUpload\n })\n ) : (\n <DocumentSettingsModal\n open={settingsOpen}\n onClose={() => setSettingsOpen(false)}\n theme={theme}\n onThemeChange={onThemeChange ?? (() => undefined)}\n onLogoUpload={onLogoUpload}\n />\n )}\n </ResolvedProvider>\n </CatalogProvider>\n </DocumentThemeProvider>\n );\n}\n","import { useCallback, useEffect, useRef, useState } from 'react';\n\nexport type SaveStatus = 'saving' | 'saved' | 'error';\n\nexport type UseDocumentAutosaveOptions<T> = {\n doc: T;\n save: (doc: T) => Promise<void>;\n delay?: number;\n initialSavedAt?: Date | null;\n enabled?: boolean;\n};\n\nexport type UseDocumentAutosaveResult = {\n status: SaveStatus;\n lastSavedAt: Date | null;\n /** Salva o snapshot mais recente AGORA, aguardando qualquer save feito antes. */\n flushNow: () => Promise<void>;\n};\n\n/**\n * Autosave com debounce por conteúdo e fila de saves — `flushNow()` só resolve\n * com o snapshot mais recente persistido. Semântica completa: docs/autosave.md.\n */\nexport function useDocumentAutosave<T>({\n doc,\n save,\n delay = 3000,\n initialSavedAt = null,\n enabled = true\n}: UseDocumentAutosaveOptions<T>): UseDocumentAutosaveResult {\n const [status, setStatus] = useState<SaveStatus>('saved');\n const [lastSavedAt, setLastSavedAt] = useState<Date | null>(initialSavedAt);\n\n const lastSaved = useRef<string | null>(null);\n const timer = useRef<ReturnType<typeof setTimeout>>();\n const inFlight = useRef(false);\n const tail = useRef<Promise<void>>(Promise.resolve());\n const latest = useRef(doc);\n latest.current = doc;\n const enabledRef = useRef(enabled);\n enabledRef.current = enabled;\n\n const saveRef = useRef(save);\n saveRef.current = save;\n\n const flush = useCallback((): Promise<void> => {\n if (!enabledRef.current) return Promise.resolve();\n const run = async (): Promise<void> => {\n inFlight.current = true;\n try {\n const snapshot = JSON.stringify(latest.current);\n if (snapshot === lastSaved.current) return;\n\n setStatus('saving');\n await saveRef.current(latest.current);\n lastSaved.current = snapshot;\n setStatus('saved');\n setLastSavedAt(new Date());\n } catch {\n setStatus('error');\n clearTimeout(timer.current);\n timer.current = setTimeout(flush, delay);\n } finally {\n inFlight.current = false;\n }\n };\n\n // Ocioso: roda já (síncrono até o await). Em voo: encadeia no fim da fila.\n const chained = inFlight.current ? tail.current.then(run) : run();\n tail.current = chained;\n return chained;\n }, [delay]);\n\n useEffect(() => {\n if (!enabled || lastSaved.current === null) {\n lastSaved.current = JSON.stringify(doc);\n return undefined;\n }\n clearTimeout(timer.current);\n timer.current = setTimeout(flush, delay);\n return () => clearTimeout(timer.current);\n }, [doc, delay, flush, enabled]);\n\n return { status, lastSavedAt, flushNow: flush };\n}\n"]}
1
+ {"version":3,"sources":["../src/editor/dictionary.ts","../src/editor/modifierStateShim.ts","../src/editor/editorApi.ts","../src/editor/EditorApiBridge.tsx","../src/editor/headerApi.ts","../src/editor/puckStore.ts","../src/schema/theme.ts","../src/surface/resolveTheme.ts","../node_modules/.pnpm/react-colorful@5.7.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/react-colorful/src/hooks/useEventCallback.ts","../node_modules/.pnpm/react-colorful@5.7.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/react-colorful/src/utils/clamp.ts","../node_modules/.pnpm/react-colorful@5.7.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/react-colorful/src/components/common/Interactive.tsx","../node_modules/.pnpm/react-colorful@5.7.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/react-colorful/src/utils/format.ts","../node_modules/.pnpm/react-colorful@5.7.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/react-colorful/src/components/common/Pointer.tsx","../node_modules/.pnpm/react-colorful@5.7.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/react-colorful/src/utils/round.ts","../node_modules/.pnpm/react-colorful@5.7.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/react-colorful/src/utils/convert.ts","../node_modules/.pnpm/react-colorful@5.7.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/react-colorful/src/components/common/Hue.tsx","../node_modules/.pnpm/react-colorful@5.7.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/react-colorful/src/components/common/Saturation.tsx","../node_modules/.pnpm/react-colorful@5.7.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/react-colorful/src/utils/compare.ts","../node_modules/.pnpm/react-colorful@5.7.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/react-colorful/src/hooks/useColorManipulation.ts","../node_modules/.pnpm/react-colorful@5.7.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/react-colorful/src/hooks/useIsomorphicLayoutEffect.ts","../node_modules/.pnpm/react-colorful@5.7.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/react-colorful/src/utils/nonce.ts","../node_modules/.pnpm/react-colorful@5.7.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/react-colorful/src/hooks/useStyleSheet.ts","../node_modules/.pnpm/react-colorful@5.7.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/react-colorful/src/components/common/ColorPicker.tsx","../node_modules/.pnpm/react-colorful@5.7.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/react-colorful/src/components/HexColorPicker.tsx","../src/editor/colorPicker/color.ts","../src/editor/colorPicker/ColorPickerPanel.styles.ts","../src/editor/colorPicker/ColorPickerPanel.tsx","../src/editor/colorPicker/ColorPicker.styles.ts","../src/editor/colorPicker/ColorPicker.tsx","../src/editor/settings/DocumentSettingsModal.styles.ts","../src/editor/settings/ColorField.tsx","../src/editor/settings/VisualTab.tsx","../src/editor/settings/DocumentSettingsModal.tsx","../src/variables/useVariableResolution.ts","../src/editor/DocumentEditor.tsx","../src/editor/useDocumentAutosave.ts"],"names":["useGetPuck","useEffect","createElement","Fragment","createUsePuck","z","DEFAULT_DOCUMENT_COLORS","DEFAULT_PAGE_MARGINS","useEventCallback","handler","callbackRef","useRef","fn","value","current","clamp","number","min","max","isTouch","event","getParentWindow","node","ownerDocument","defaultView","self","getRelativePosition","touchId","rect","getBoundingClientRect","pointer","touches","i","length","identifier","left","pageX","pageXOffset","width","top","pageY","pageYOffset","height","preventDefaultMove","preventDefault","Interactive","React","memo","o","onMove","onKey","onEnd","rest","container","onMoveCallback","onKeyCallback","onEndCallback","hasTouch","useMemo","handleMove","buttons","toggleDocumentEvents","handleMoveEnd","state","touch","parentWindow","toggleEvent","addEventListener","removeEventListener","e","nativeEvent","el","changedTouches","focus","keyCode","which","handleMoveStart","handleKeyDown","handleKeyUp","onTouchStart","onMouseDown","className","ref","onKeyDown","onKeyUp","tabIndex","role","formatClassName","names","filter","Boolean","join","Pointer","r","color","nodeClassName","style","backgroundColor","round","digits","base","Math","pow","hexToHsva","hex","rgbaToHsva","hexToRgba","substring","parseInt","g","b","a","hsvaToHex","hsva","rgbaToHex","hsvaToRgba","hsvaToHsla","s","v","hh","h","l","hsvaToHslString","floor","c","d","module","format","toString","alphaHex","delta","Hue","hue","onChange","onChangeEnd","interaction","offset","aria-label","aria-valuenow","aria-valuemax","aria-valuemin","Saturation","containerStyle","aria-valuetext","equalColorObjects","first","second","prop","equalHex","toLowerCase","useColorManipulation","colorModel","onChangeCallback","onChangeEndCallback","useState","toHsva","updateHsva","cache","isDirty","equal","newHsva","newColor","fromHsva","handleChange","useCallback","params","Object","assign","commitChange","useIsomorphicLayoutEffect","window","useLayoutEffect","getNonce","nonce","__webpack_nonce__","styleElementMap","Map","useStyleSheet","nodeRef","parentDocument","document","has","styleElement","innerHTML","set","setAttribute","head","appendChild","ColorPicker","n","defaultColor","HexColorPicker","props","styled","jsx","jsxs","Panel","DOCUMENT_FONTS","formatResolvedValues","EMPTY","useDocumentFont","buildConfig","extractBindingKeys","blocksPlugin","outlinePlugin","fieldsPlugin","DrawerCard","DrawerItemIcon","BlockIcon","DrawerHint","ActionBar","DocumentThemeProvider","CatalogProvider","ResolvedProvider","EditorShell","Puck"],"mappings":"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","file":"chunk-CJFNHGYH.cjs","sourcesContent":["import type { Dictionary } from '@puckeditor/core';\n\n/**\n * UI do Puck em PT-BR (chaves de `defaultDictionary` do 0.23+).\n * As interpolações (`{title}`, `{count}`, `{index}`, `{type}`, `{zoom}`, `{label}`) precisam ser preservadas.\n * Chaves em minúscula no original são rótulos internos — mantidas em minúscula.\n */\nexport const ptBrDictionary: Dictionary = {\n 'header-publish': 'Publicar',\n 'header-undo': 'desfazer',\n 'header-redo': 'refazer',\n 'header-toggle-leftsidebar': 'Alternar barra lateral esquerda',\n 'header-toggle-rightsidebar': 'Alternar barra lateral direita',\n 'header-toggle-menubar': 'Alternar barra de menu',\n 'action-selectparent': 'Selecionar bloco pai',\n 'action-duplicate': 'Duplicar',\n 'action-delete': 'Excluir',\n 'label-page': 'Página',\n 'label-component': 'Bloco',\n 'outline-empty': 'Nenhum item',\n 'outline-item-collapse': 'Recolher',\n 'outline-item-expand': 'Expandir',\n 'outline-header-title': 'Estrutura',\n 'outline-header-collapseall': 'Recolher tudo',\n 'outline-item-duplicate': 'Duplicar',\n 'outline-item-delete': 'Excluir',\n 'drawer-category-collapse': 'Recolher {title}',\n 'drawer-category-expand': 'Expandir {title}',\n 'drawer-category-other': 'Outros',\n 'canvas-noconfig': 'Sem configuração para {type}',\n 'field-readonly': 'Somente leitura',\n 'field-arrayitem-summary': 'Item #{index}',\n 'field-arrayitem-duplicate': 'Duplicar',\n 'field-arrayitem-delete': 'Excluir',\n 'field-external-selectdata': 'Selecionar dados',\n 'field-external-search': 'Buscar',\n 'field-external-togglefilters': 'Alternar filtros',\n 'field-external-item': 'Item externo',\n 'field-external-result-singular': '{count} resultado',\n 'field-external-result-plural': '{count} resultados',\n 'field-richtext-bold': 'Negrito',\n 'field-richtext-italic': 'Itálico',\n 'field-richtext-underline': 'Sublinhado',\n 'field-richtext-strikethrough': 'Riscado',\n 'field-richtext-blockquote': 'Citação',\n 'field-richtext-code-inline': 'Código em linha',\n 'field-richtext-code-block': 'Bloco de código',\n 'field-richtext-list-bullet': 'Lista com marcadores',\n 'field-richtext-list-ordered': 'Lista numerada',\n 'field-richtext-horizontalrule': 'Linha horizontal',\n 'field-richtext-align-left': 'Alinhar à esquerda',\n 'field-richtext-align-center': 'Centralizar',\n 'field-richtext-align-right': 'Alinhar à direita',\n 'field-richtext-align-justify': 'Justificar',\n 'field-richtext-select': 'Selecionar',\n 'field-richtext-headingselect-1': 'Título 1',\n 'field-richtext-headingselect-2': 'Título 2',\n 'field-richtext-headingselect-3': 'Título 3',\n 'field-richtext-headingselect-4': 'Título 4',\n 'field-richtext-headingselect-5': 'Título 5',\n 'field-richtext-headingselect-6': 'Título 6',\n 'field-richtext-alignselect-left': 'Esquerda',\n 'field-richtext-alignselect-center': 'Centro',\n 'field-richtext-alignselect-right': 'Direita',\n 'field-richtext-alignselect-justify': 'Justificado',\n 'field-richtext-listselect-bullet': 'Lista com marcadores',\n 'field-richtext-listselect-ordered': 'Lista numerada',\n 'viewport-zoom-in': 'Aumentar zoom',\n 'viewport-zoom-out': 'Diminuir zoom',\n 'viewport-zoom-auto': '{zoom}% (automático)',\n 'viewport-toggle-menu': 'Alternar menu de visualização',\n 'viewport-switch': 'Mudar para a visualização {label}',\n 'viewport-switch-default': 'Mudar visualização',\n 'plugin-blocks': 'Blocos',\n 'plugin-outline': 'Estrutura',\n 'plugin-fields': 'Campos',\n 'plugin-components': 'Componentes',\n 'layout-maximize': 'maximizar',\n 'layout-minimize': 'minimizar',\n 'loader-loading': 'carregando'\n};\n","const INSTALLED = '__dgModifierStateShim';\n\n/**\n * O Puck escuta keydown/keyup no `document` (monitorHotkeys) e chama\n * `e.getModifierState('AltGraph')` sem checar o tipo do evento. Extensão de navegador, gerenciador\n * de senha ou IME que dispara `new Event('keydown')` em vez de `KeyboardEvent` — comum no Linux —\n * derruba a árvore com `e.getModifierState is not a function`.\n *\n * O fallback vive em `Event.prototype`: `KeyboardEvent`/`MouseEvent` têm implementação própria e\n * seguem intactos; evento sem informação de modificador passa a responder `false`, que é a resposta\n * correta. Fica no protótipo (e não num listener de captura) porque evento disparado direto no\n * `document` chega em AT_TARGET, onde a ordem de registro decidiria quem roda primeiro.\n */\nexport function installModifierStateShim(): void {\n if (typeof Event === 'undefined') return;\n\n const proto = Event.prototype as unknown as Record<string, unknown>;\n if (proto[INSTALLED]) return;\n\n Object.defineProperty(Event.prototype, 'getModifierState', {\n value: () => false,\n configurable: true,\n writable: true\n });\n proto[INSTALLED] = true;\n}\n","import type { MutableRefObject } from 'react';\nimport type { Data, PuckAction } from '@puckeditor/core';\n\nexport type DataUpdater = Data | ((previous: Data) => Data);\n\n/** Handle imperativo que a lib preenche para o host mutar o documento sem remontar o editor. */\nexport type DocumentEditorApi = {\n /**\n * Substitui o `data` do editor no lugar (sem remount). Dispara o `onChange` do host uma vez\n * com o novo `data` (a menos que ele seja deep-equal ao anterior — ver docs/theme.md).\n */\n setData: (data: DataUpdater) => void;\n};\n\nexport type DocumentEditorApiRef =\n | MutableRefObject<DocumentEditorApi | null>\n | ((api: DocumentEditorApi | null) => void);\n\nexport const createEditorApi = (dispatch: (action: PuckAction) => void): DocumentEditorApi => ({\n setData: updater =>\n dispatch({\n type: 'setData',\n data: typeof updater === 'function' ? updater : () => updater\n })\n});\n\nexport const assignEditorApiRef = (ref: DocumentEditorApiRef | undefined, api: DocumentEditorApi | null) => {\n if (!ref) return;\n if (typeof ref === 'function') ref(api);\n // eslint-disable-next-line no-param-reassign\n else ref.current = api;\n};\n","import { Fragment, createElement, useEffect, type ReactNode } from 'react';\nimport { useGetPuck } from '@puckeditor/core';\nimport { assignEditorApiRef, createEditorApi, type DocumentEditorApiRef } from './editorApi';\n\nexport type EditorApiBridgeProps = {\n apiRef?: DocumentEditorApiRef;\n children?: ReactNode;\n};\n\n/** Roda dentro da árvore do Puck (override `puck`) e registra a API imperativa no `apiRef` do host. */\nexport function EditorApiBridge({ apiRef, children }: EditorApiBridgeProps) {\n const getPuck = useGetPuck();\n useEffect(() => {\n assignEditorApiRef(\n apiRef,\n createEditorApi(action => getPuck().dispatch(action))\n );\n return () => assignEditorApiRef(apiRef, null);\n }, [apiRef, getPuck]);\n return createElement(Fragment, null, children);\n}\n","import type { Theme } from '../schema/theme';\n\nexport type DocumentHeaderApi = {\n undo: () => void;\n redo: () => void;\n canUndo: boolean;\n canRedo: boolean;\n openSettings: () => void;\n openPreview: () => void;\n theme: Theme;\n};\n\nexport type PuckHistory = {\n back: () => void;\n forward: () => void;\n hasPast: boolean;\n hasFuture: boolean;\n};\n\nexport type HeaderApiExtras = {\n openSettings: () => void;\n openPreview: () => void;\n theme: Theme;\n};\n\nexport function headerApiFromHistory(history: PuckHistory, extras: HeaderApiExtras): DocumentHeaderApi {\n return {\n undo: () => history.back(),\n redo: () => history.forward(),\n canUndo: history.hasPast,\n canRedo: history.hasFuture,\n openSettings: extras.openSettings,\n openPreview: extras.openPreview,\n theme: extras.theme\n };\n}\n","import { createUsePuck, type Config, type PuckApi } from '@puckeditor/core';\n\n/** Estado exposto pelo `usePuckState` / `useGetPuck`. */\nexport type PuckState = PuckApi<Config>;\n\n/**\n * Hook do Puck **com seletor**. Use sempre este, nunca `usePuck()` avulso: sem seletor\n * o componente assina o app state inteiro e re-renderiza a cada tecla digitada no canvas\n * (o próprio Puck emite um warning nesse caso).\n *\n * Duas regras:\n * - A comparação é `Object.is` — selecione primitivos ou referências estáveis\n * (`selectedItem`, `appState.data.content`), nunca um objeto montado no seletor.\n * - Getters (`getSelectorForId`, `getItemById`, `dispatch`…) são recriados a cada mudança\n * de estado. O que só é lido dentro de callback vai por `useGetPuck()`, que não assina nada.\n */\nexport const usePuckState: <T>(selector: (state: PuckState) => T) => T = createUsePuck();\n","import { z } from 'zod';\nimport type { PageFormat, PageMargins } from '../surface/surface';\n\nexport type CoverFields = {\n title?: string;\n subtitle?: string;\n date?: string;\n preparedFor?: string;\n presentedBy?: string;\n imageUrl?: string;\n};\n\nexport type HeaderInfoFlags = {\n companyName?: boolean;\n cnpj?: boolean;\n phone?: boolean;\n email?: boolean;\n address?: boolean;\n};\n\nexport type HeaderConfig = {\n enabled: boolean;\n background: string;\n color: string;\n logoPosition: 'left' | 'right';\n info?: HeaderInfoFlags;\n};\n\nexport type FooterInfoFlags = {\n email?: boolean;\n phone?: boolean;\n instagram?: boolean;\n twitter?: boolean;\n address?: boolean;\n site?: boolean;\n facebook?: boolean;\n linkedin?: boolean;\n};\n\nexport type FooterConfig = {\n enabled: boolean;\n pageNumber: boolean;\n background: string;\n color: string;\n alignment: 'left' | 'center' | 'right';\n info?: FooterInfoFlags;\n};\n\n/** Identidade visual do documento; numa versão publicada é congelada no snapshot. */\nexport type Theme = {\n documentFont?: string;\n page?: {\n format: PageFormat;\n orientation: 'portrait' | 'landscape';\n margins?: PageMargins;\n };\n colors?: {\n brand?: string;\n text?: string;\n background?: string;\n };\n logo?: {\n key?: string;\n url?: string;\n };\n header?: HeaderConfig;\n footer?: FooterConfig;\n watermark?: {\n text?: string;\n imageKey?: string;\n opacity?: number;\n };\n};\n\ntype Schema<T> = z.ZodType<T, z.ZodTypeDef, unknown>;\n\nexport const pageFormatSchema: Schema<PageFormat> = z.enum(['A4', 'A5', 'A3', 'Letter', 'Legal']);\n\nconst marginsSchema = z\n .object({\n top: z.number(),\n right: z.number(),\n bottom: z.number(),\n left: z.number()\n })\n .partial();\n\nexport const coverFieldsSchema: Schema<CoverFields> = z\n .object({\n title: z.string().optional(),\n subtitle: z.string().optional(),\n date: z.string().optional(),\n preparedFor: z.string().optional(),\n presentedBy: z.string().optional(),\n imageUrl: z.string().optional()\n })\n .strict();\n\nexport const headerConfigSchema: Schema<HeaderConfig> = z\n .object({\n enabled: z.boolean().default(false),\n background: z.string().default('#FFFFFF'),\n color: z.string().default('#3F4759'),\n logoPosition: z.enum(['left', 'right']).default('right'),\n info: z\n .object({\n companyName: z.boolean(),\n cnpj: z.boolean(),\n phone: z.boolean(),\n email: z.boolean(),\n address: z.boolean()\n })\n .partial()\n .strict()\n .optional()\n })\n .strict();\n\nexport const footerConfigSchema: Schema<FooterConfig> = z\n .object({\n enabled: z.boolean().default(false),\n pageNumber: z.boolean().default(true),\n background: z.string().default('#FFFFFF'),\n color: z.string().default('#3F4759'),\n alignment: z.enum(['left', 'center', 'right']).default('center'),\n info: z\n .object({\n email: z.boolean(),\n phone: z.boolean(),\n instagram: z.boolean(),\n twitter: z.boolean(),\n address: z.boolean(),\n site: z.boolean(),\n facebook: z.boolean(),\n linkedin: z.boolean()\n })\n .partial()\n .strict()\n .optional()\n })\n .strict();\n\nexport const themeSchema: Schema<Theme> = z\n .object({\n documentFont: z.string().optional(),\n page: z\n .object({\n format: pageFormatSchema.default('A4'),\n orientation: z.enum(['portrait', 'landscape']).default('portrait'),\n margins: marginsSchema.optional()\n })\n .strict()\n .optional(),\n colors: z\n .object({\n brand: z.string(),\n text: z.string(),\n background: z.string()\n })\n .partial()\n .strict()\n .optional(),\n logo: z\n .object({\n key: z.string().optional(),\n url: z.string().optional()\n })\n .strict()\n .optional(),\n header: headerConfigSchema.optional(),\n footer: footerConfigSchema.optional(),\n watermark: z\n .object({\n text: z.string().optional(),\n imageKey: z.string().optional(),\n opacity: z.number().min(0).max(1).optional()\n })\n .strict()\n .optional()\n })\n .strict();\n","import {\n footerConfigSchema,\n headerConfigSchema,\n type FooterConfig,\n type HeaderConfig,\n type Theme\n} from '../schema/theme';\nimport { DEFAULT_DOCUMENT_COLORS, DEFAULT_PAGE_MARGINS } from './surface';\n\nexport const DEFAULT_DOCUMENT_FONT_ID = 'inter';\n\nexport const DEFAULT_HEADER_CONFIG: HeaderConfig = headerConfigSchema.parse({});\nexport const DEFAULT_FOOTER_CONFIG: FooterConfig = footerConfigSchema.parse({});\n\n/**\n * Tema com todos os defaults materializados. O host grava o resultado no documento em vez\n * de um tema parcial — assim o documento não muda de cara quando um default da lib mudar.\n * Merge raso e sem `parse`: tema legado com chave desconhecida é preservado, nunca lança.\n */\nexport function resolveTheme(theme: Theme = {}): Theme {\n return {\n ...theme,\n documentFont: theme.documentFont ?? DEFAULT_DOCUMENT_FONT_ID,\n colors: { ...DEFAULT_DOCUMENT_COLORS, ...theme.colors },\n page: {\n format: 'A4',\n orientation: 'portrait',\n ...theme.page,\n margins: { ...DEFAULT_PAGE_MARGINS, ...theme.page?.margins }\n },\n header: { ...DEFAULT_HEADER_CONFIG, ...theme.header },\n footer: { ...DEFAULT_FOOTER_CONFIG, ...theme.footer }\n };\n}\n","import { useRef } from \"react\";\n\n// Saves incoming handler to the ref in order to avoid \"useCallback hell\"\nexport function useEventCallback<T>(handler?: (value: T) => void): (value: T) => void {\n const callbackRef = useRef(handler);\n const fn = useRef((value: T) => {\n callbackRef.current && callbackRef.current(value);\n });\n callbackRef.current = handler;\n\n return fn.current;\n}\n","// Clamps a value between an upper and lower bound.\n// We use ternary operators because it makes the minified code\n// 2 times shorter then `Math.min(Math.max(a,b),c)`\nexport const clamp = (number: number, min = 0, max = 1): number => {\n return number > max ? max : number < min ? min : number;\n};\n","import React, { useRef, useMemo, useEffect } from \"react\";\n\nimport { useEventCallback } from \"../../hooks/useEventCallback\";\nimport { clamp } from \"../../utils/clamp\";\n\nexport interface Interaction {\n left: number;\n top: number;\n}\n\n// Check if an event was triggered by touch\nconst isTouch = (event: MouseEvent | TouchEvent): event is TouchEvent => \"touches\" in event;\n\n// Finds a proper touch point by its identifier\nconst getTouchPoint = (touches: TouchList, touchId: null | number): Touch => {\n for (let i = 0; i < touches.length; i++) {\n if (touches[i].identifier === touchId) return touches[i];\n }\n return touches[0];\n};\n\n// Finds the proper window object to fix iframe embedding issues\nconst getParentWindow = (node?: HTMLDivElement | null): Window => {\n return (node && node.ownerDocument.defaultView) || self;\n};\n\n// Returns a relative position of the pointer inside the node's bounding box\nconst getRelativePosition = (\n node: HTMLDivElement,\n event: MouseEvent | TouchEvent,\n touchId: null | number\n): Interaction => {\n const rect = node.getBoundingClientRect();\n\n // Get user's pointer position from `touches` array if it's a `TouchEvent`\n const pointer = isTouch(event) ? getTouchPoint(event.touches, touchId) : (event as MouseEvent);\n\n return {\n left: clamp((pointer.pageX - (rect.left + getParentWindow(node).pageXOffset)) / rect.width),\n top: clamp((pointer.pageY - (rect.top + getParentWindow(node).pageYOffset)) / rect.height),\n };\n};\n\n// Browsers introduced an intervention, making touch events passive by default.\n// This workaround removes `preventDefault` call from the touch handlers.\n// https://github.com/facebook/react/issues/19651\nconst preventDefaultMove = (event: MouseEvent | TouchEvent): void => {\n !isTouch(event) && event.preventDefault();\n};\n\n// Prevent mobile browsers from handling mouse events (conflicting with touch ones).\n// If we detected a touch interaction before, we prefer reacting to touch events only.\nconst isInvalid = (event: MouseEvent | TouchEvent, hasTouch: boolean): boolean => {\n return hasTouch && !isTouch(event);\n};\n\ninterface Props {\n onMove: (interaction: Interaction) => void;\n onKey: (offset: Interaction) => void;\n onEnd?: () => void;\n children: React.ReactNode;\n}\n\nconst InteractiveBase = ({ onMove, onKey, onEnd, ...rest }: Props) => {\n const container = useRef<HTMLDivElement>(null);\n const onMoveCallback = useEventCallback<Interaction>(onMove);\n const onKeyCallback = useEventCallback<Interaction>(onKey);\n const onEndCallback = useEventCallback<void>(onEnd);\n const touchId = useRef<null | number>(null);\n const hasTouch = useRef(false);\n\n const [handleMoveStart, handleKeyDown, handleKeyUp, toggleDocumentEvents] = useMemo(() => {\n const handleMoveStart = ({ nativeEvent }: React.MouseEvent | React.TouchEvent) => {\n const el = container.current;\n if (!el) return;\n\n // Prevent text selection\n preventDefaultMove(nativeEvent);\n\n if (isInvalid(nativeEvent, hasTouch.current) || !el) return;\n\n if (isTouch(nativeEvent)) {\n hasTouch.current = true;\n const changedTouches = nativeEvent.changedTouches || [];\n if (changedTouches.length) touchId.current = changedTouches[0].identifier;\n }\n\n el.focus();\n onMoveCallback(getRelativePosition(el, nativeEvent, touchId.current));\n toggleDocumentEvents(true);\n };\n\n const handleMove = (event: MouseEvent | TouchEvent) => {\n // Prevent text selection\n preventDefaultMove(event);\n\n // If user moves the pointer outside of the window or iframe bounds and release it there,\n // `mouseup`/`touchend` won't be fired. In order to stop the picker from following the cursor\n // after the user has moved the mouse/finger back to the document, we check `event.buttons`\n // and `event.touches`. It allows us to detect that the user is just moving his pointer\n // without pressing it down\n const isDown = isTouch(event) ? event.touches.length > 0 : event.buttons > 0;\n\n if (isDown && container.current) {\n onMoveCallback(getRelativePosition(container.current, event, touchId.current));\n } else {\n toggleDocumentEvents(false);\n onEndCallback();\n }\n };\n\n const handleMoveEnd = () => {\n toggleDocumentEvents(false);\n onEndCallback();\n };\n\n const handleKeyDown = (event: React.KeyboardEvent) => {\n const keyCode = event.which || event.keyCode;\n\n // Ignore all keys except arrow ones\n if (keyCode < 37 || keyCode > 40) return;\n // Do not scroll page by arrow keys when document is focused on the element\n event.preventDefault();\n // Send relative offset to the parent component.\n // We use codes (37←, 38↑, 39→, 40↓) instead of keys ('ArrowRight', 'ArrowDown', etc)\n // to reduce the size of the library\n onKeyCallback({\n left: keyCode === 39 ? 0.05 : keyCode === 37 ? -0.05 : 0,\n top: keyCode === 40 ? 0.05 : keyCode === 38 ? -0.05 : 0,\n });\n };\n\n const handleKeyUp = (event: React.KeyboardEvent) => {\n const keyCode = event.which || event.keyCode;\n if (keyCode >= 37 && keyCode <= 40) onEndCallback();\n };\n\n function toggleDocumentEvents(state?: boolean) {\n const touch = hasTouch.current;\n const el = container.current;\n const parentWindow = getParentWindow(el);\n\n // Add or remove additional pointer event listeners\n const toggleEvent = state ? parentWindow.addEventListener : parentWindow.removeEventListener;\n toggleEvent(touch ? \"touchmove\" : \"mousemove\", handleMove);\n toggleEvent(touch ? \"touchend\" : \"mouseup\", handleMoveEnd);\n }\n\n return [handleMoveStart, handleKeyDown, handleKeyUp, toggleDocumentEvents];\n }, [onKeyCallback, onMoveCallback, onEndCallback]);\n\n // Remove window event listeners before unmounting\n useEffect(() => toggleDocumentEvents, [toggleDocumentEvents]);\n\n return (\n <div\n {...rest}\n onTouchStart={handleMoveStart}\n onMouseDown={handleMoveStart}\n className=\"react-colorful__interactive\"\n ref={container}\n onKeyDown={handleKeyDown}\n onKeyUp={handleKeyUp}\n tabIndex={0}\n role=\"slider\"\n />\n );\n};\n\nexport const Interactive = React.memo(InteractiveBase);\n","export const formatClassName = (names: unknown[]): string => names.filter(Boolean).join(\" \");\n","import React from \"react\";\nimport { formatClassName } from \"../../utils/format\";\n\ninterface Props {\n className?: string;\n top?: number;\n left: number;\n color: string;\n}\n\nexport const Pointer = ({ className, color, left, top = 0.5 }: Props): React.ReactElement => {\n const nodeClassName = formatClassName([\"react-colorful__pointer\", className]);\n\n const style = {\n top: `${top * 100}%`,\n left: `${left * 100}%`,\n };\n\n return (\n <div className={nodeClassName} style={style}>\n <div className=\"react-colorful__pointer-fill\" style={{ backgroundColor: color }} />\n </div>\n );\n};\n","export const round = (number: number, digits = 0, base = Math.pow(10, digits)): number => {\n return Math.round(base * number) / base;\n};\n","import { round } from \"./round\";\nimport { RgbaColor, RgbColor, HslaColor, HslColor, HsvaColor, HsvColor } from \"../types\";\n\n/**\n * Valid CSS <angle> units.\n * https://developer.mozilla.org/en-US/docs/Web/CSS/angle\n */\nconst angleUnits: Record<string, number> = {\n grad: 360 / 400,\n turn: 360,\n rad: 360 / (Math.PI * 2),\n};\n\nexport const hexToHsva = (hex: string): HsvaColor => rgbaToHsva(hexToRgba(hex));\n\nexport const hexToRgba = (hex: string): RgbaColor => {\n if (hex[0] === \"#\") hex = hex.substring(1);\n\n if (hex.length < 6) {\n return {\n r: parseInt(hex[0] + hex[0], 16),\n g: parseInt(hex[1] + hex[1], 16),\n b: parseInt(hex[2] + hex[2], 16),\n a: hex.length === 4 ? round(parseInt(hex[3] + hex[3], 16) / 255, 2) : 1,\n };\n }\n\n return {\n r: parseInt(hex.substring(0, 2), 16),\n g: parseInt(hex.substring(2, 4), 16),\n b: parseInt(hex.substring(4, 6), 16),\n a: hex.length === 8 ? round(parseInt(hex.substring(6, 8), 16) / 255, 2) : 1,\n };\n};\n\nexport const parseHue = (value: string, unit = \"deg\"): number => {\n return Number(value) * (angleUnits[unit] || 1);\n};\n\nexport const hslaStringToHsva = (hslString: string): HsvaColor => {\n const matcher = /hsla?\\(?\\s*(-?\\d*\\.?\\d+)(deg|rad|grad|turn)?[,\\s]+(-?\\d*\\.?\\d+)%?[,\\s]+(-?\\d*\\.?\\d+)%?,?\\s*[/\\s]*(-?\\d*\\.?\\d+)?(%)?\\s*\\)?/i;\n const match = matcher.exec(hslString);\n\n if (!match) return { h: 0, s: 0, v: 0, a: 1 };\n\n return hslaToHsva({\n h: parseHue(match[1], match[2]),\n s: Number(match[3]),\n l: Number(match[4]),\n a: match[5] === undefined ? 1 : Number(match[5]) / (match[6] ? 100 : 1),\n });\n};\n\nexport const hslStringToHsva = hslaStringToHsva;\n\nexport const hslaToHsva = ({ h, s, l, a }: HslaColor): HsvaColor => {\n s *= (l < 50 ? l : 100 - l) / 100;\n\n return {\n h: h,\n s: s > 0 ? ((2 * s) / (l + s)) * 100 : 0,\n v: l + s,\n a,\n };\n};\n\nexport const hsvaToHex = (hsva: HsvaColor): string => rgbaToHex(hsvaToRgba(hsva));\n\nexport const hsvaToHsla = ({ h, s, v, a }: HsvaColor): HslaColor => {\n const hh = ((200 - s) * v) / 100;\n\n return {\n h: round(h),\n s: round(hh > 0 && hh < 200 ? ((s * v) / 100 / (hh <= 100 ? hh : 200 - hh)) * 100 : 0),\n l: round(hh / 2),\n a: round(a, 2),\n };\n};\n\nexport const hsvaToHslString = (hsva: HsvaColor): string => {\n const { h, s, l } = hsvaToHsla(hsva);\n return `hsl(${h}, ${s}%, ${l}%)`;\n};\n\nexport const hsvaToHsvString = (hsva: HsvaColor): string => {\n const { h, s, v } = roundHsva(hsva);\n return `hsv(${h}, ${s}%, ${v}%)`;\n};\n\nexport const hsvaToHsvaString = (hsva: HsvaColor): string => {\n const { h, s, v, a } = roundHsva(hsva);\n return `hsva(${h}, ${s}%, ${v}%, ${a})`;\n};\n\nexport const hsvaToHslaString = (hsva: HsvaColor): string => {\n const { h, s, l, a } = hsvaToHsla(hsva);\n return `hsla(${h}, ${s}%, ${l}%, ${a})`;\n};\n\nexport const hsvaToRgba = ({ h, s, v, a }: HsvaColor): RgbaColor => {\n h = (h / 360) * 6;\n s = s / 100;\n v = v / 100;\n\n const hh = Math.floor(h),\n b = v * (1 - s),\n c = v * (1 - (h - hh) * s),\n d = v * (1 - (1 - h + hh) * s),\n module = hh % 6;\n\n return {\n r: round([v, c, b, b, d, v][module] * 255),\n g: round([d, v, v, c, b, b][module] * 255),\n b: round([b, b, d, v, v, c][module] * 255),\n a: round(a, 2),\n };\n};\n\nexport const hsvaToRgbString = (hsva: HsvaColor): string => {\n const { r, g, b } = hsvaToRgba(hsva);\n return `rgb(${r}, ${g}, ${b})`;\n};\n\nexport const hsvaToRgbaString = (hsva: HsvaColor): string => {\n const { r, g, b, a } = hsvaToRgba(hsva);\n return `rgba(${r}, ${g}, ${b}, ${a})`;\n};\n\nexport const hsvaStringToHsva = (hsvString: string): HsvaColor => {\n const matcher = /hsva?\\(?\\s*(-?\\d*\\.?\\d+)(deg|rad|grad|turn)?[,\\s]+(-?\\d*\\.?\\d+)%?[,\\s]+(-?\\d*\\.?\\d+)%?,?\\s*[/\\s]*(-?\\d*\\.?\\d+)?(%)?\\s*\\)?/i;\n const match = matcher.exec(hsvString);\n\n if (!match) return { h: 0, s: 0, v: 0, a: 1 };\n\n return roundHsva({\n h: parseHue(match[1], match[2]),\n s: Number(match[3]),\n v: Number(match[4]),\n a: match[5] === undefined ? 1 : Number(match[5]) / (match[6] ? 100 : 1),\n });\n};\n\nexport const hsvStringToHsva = hsvaStringToHsva;\n\nexport const rgbaStringToHsva = (rgbaString: string): HsvaColor => {\n const matcher = /rgba?\\(?\\s*(-?\\d*\\.?\\d+)(%)?[,\\s]+(-?\\d*\\.?\\d+)(%)?[,\\s]+(-?\\d*\\.?\\d+)(%)?,?\\s*[/\\s]*(-?\\d*\\.?\\d+)?(%)?\\s*\\)?/i;\n const match = matcher.exec(rgbaString);\n\n if (!match) return { h: 0, s: 0, v: 0, a: 1 };\n\n return rgbaToHsva({\n r: Number(match[1]) / (match[2] ? 100 / 255 : 1),\n g: Number(match[3]) / (match[4] ? 100 / 255 : 1),\n b: Number(match[5]) / (match[6] ? 100 / 255 : 1),\n a: match[7] === undefined ? 1 : Number(match[7]) / (match[8] ? 100 : 1),\n });\n};\n\nexport const rgbStringToHsva = rgbaStringToHsva;\n\nconst format = (number: number) => {\n const hex = number.toString(16);\n return hex.length < 2 ? \"0\" + hex : hex;\n};\n\nexport const rgbaToHex = ({ r, g, b, a }: RgbaColor): string => {\n const alphaHex = a < 1 ? format(round(a * 255)) : \"\";\n return \"#\" + format(r) + format(g) + format(b) + alphaHex;\n};\n\nexport const rgbaToHsva = ({ r, g, b, a }: RgbaColor): HsvaColor => {\n const max = Math.max(r, g, b);\n const delta = max - Math.min(r, g, b);\n\n // prettier-ignore\n const hh = delta\n ? max === r\n ? (g - b) / delta\n : max === g\n ? 2 + (b - r) / delta\n : 4 + (r - g) / delta\n : 0;\n\n return {\n h: round(60 * (hh < 0 ? hh + 6 : hh)),\n s: round(max ? (delta / max) * 100 : 0),\n v: round((max / 255) * 100),\n a,\n };\n};\n\nexport const roundHsva = (hsva: HsvaColor): HsvaColor => ({\n h: round(hsva.h),\n s: round(hsva.s),\n v: round(hsva.v),\n a: round(hsva.a, 2),\n});\n\nexport const rgbaToRgb = ({ r, g, b }: RgbaColor): RgbColor => ({ r, g, b });\n\nexport const hslaToHsl = ({ h, s, l }: HslaColor): HslColor => ({ h, s, l });\n\nexport const hsvaToHsv = (hsva: HsvaColor): HsvColor => {\n const { h, s, v } = roundHsva(hsva);\n return { h, s, v };\n};\n","import React from \"react\";\n\nimport { Interactive, Interaction } from \"./Interactive\";\nimport { Pointer } from \"./Pointer\";\n\nimport { hsvaToHslString } from \"../../utils/convert\";\nimport { formatClassName } from \"../../utils/format\";\nimport { clamp } from \"../../utils/clamp\";\nimport { round } from \"../../utils/round\";\n\ninterface Props {\n className?: string;\n hue: number;\n onChange: (newHue: { h: number }) => void;\n onChangeEnd?: () => void;\n}\n\nconst HueBase = ({ className, hue, onChange, onChangeEnd }: Props) => {\n const handleMove = (interaction: Interaction) => {\n onChange({ h: 360 * interaction.left });\n };\n\n const handleKey = (offset: Interaction) => {\n // Hue measured in degrees of the color circle ranging from 0 to 360\n onChange({\n h: clamp(hue + offset.left * 360, 0, 360),\n });\n };\n\n const nodeClassName = formatClassName([\"react-colorful__hue\", className]);\n\n return (\n <div className={nodeClassName}>\n <Interactive\n onMove={handleMove}\n onKey={handleKey}\n onEnd={onChangeEnd}\n aria-label=\"Hue\"\n aria-valuenow={round(hue)}\n aria-valuemax=\"360\"\n aria-valuemin=\"0\"\n >\n <Pointer\n className=\"react-colorful__hue-pointer\"\n left={hue / 360}\n color={hsvaToHslString({ h: hue, s: 100, v: 100, a: 1 })}\n />\n </Interactive>\n </div>\n );\n};\n\nexport const Hue = React.memo(HueBase);\n","import React from \"react\";\nimport { Interactive, Interaction } from \"./Interactive\";\nimport { Pointer } from \"./Pointer\";\nimport { HsvaColor } from \"../../types\";\nimport { hsvaToHslString } from \"../../utils/convert\";\nimport { clamp } from \"../../utils/clamp\";\nimport { round } from \"../../utils/round\";\n\ninterface Props {\n hsva: HsvaColor;\n onChange: (newColor: { s: number; v: number }) => void;\n onChangeEnd?: () => void;\n}\n\nconst SaturationBase = ({ hsva, onChange, onChangeEnd }: Props) => {\n const handleMove = (interaction: Interaction) => {\n onChange({\n s: interaction.left * 100,\n v: 100 - interaction.top * 100,\n });\n };\n\n const handleKey = (offset: Interaction) => {\n // Saturation and brightness always fit into [0, 100] range\n onChange({\n s: clamp(hsva.s + offset.left * 100, 0, 100),\n v: clamp(hsva.v - offset.top * 100, 0, 100),\n });\n };\n\n const containerStyle = {\n backgroundColor: hsvaToHslString({ h: hsva.h, s: 100, v: 100, a: 1 }),\n };\n\n return (\n <div className=\"react-colorful__saturation\" style={containerStyle}>\n <Interactive\n onMove={handleMove}\n onKey={handleKey}\n onEnd={onChangeEnd}\n aria-label=\"Color\"\n aria-valuetext={`Saturation ${round(hsva.s)}%, Brightness ${round(hsva.v)}%`}\n >\n <Pointer\n className=\"react-colorful__saturation-pointer\"\n top={1 - hsva.v / 100}\n left={hsva.s / 100}\n color={hsvaToHslString(hsva)}\n />\n </Interactive>\n </div>\n );\n};\n\nexport const Saturation = React.memo(SaturationBase);\n","import { hexToRgba } from \"./convert\";\nimport { ObjectColor } from \"../types\";\n\nexport const equalColorObjects = (first: ObjectColor, second: ObjectColor): boolean => {\n if (first === second) return true;\n\n for (const prop in first) {\n // The following allows for a type-safe calling of this function (first & second have to be HSL, HSV, or RGB)\n // with type-unsafe iterating over object keys. TS does not allow this without an index (`[key: string]: number`)\n // on an object to define how iteration is normally done. To ensure extra keys are not allowed on our types,\n // we must cast our object to unknown (as RGB demands `r` be a key, while `Record<string, x>` does not care if\n // there is or not), and then as a type TS can iterate over.\n if (\n ((first as unknown) as Record<string, number>)[prop] !==\n ((second as unknown) as Record<string, number>)[prop]\n )\n return false;\n }\n\n return true;\n};\n\nexport const equalColorString = (first: string, second: string): boolean => {\n return first.replace(/\\s/g, \"\") === second.replace(/\\s/g, \"\");\n};\n\nexport const equalHex = (first: string, second: string): boolean => {\n if (first.toLowerCase() === second.toLowerCase()) return true;\n\n // To compare colors like `#FFF` and `ffffff` we convert them into RGB objects\n return equalColorObjects(hexToRgba(first), hexToRgba(second));\n};\n","import { useState, useEffect, useCallback, useRef } from \"react\";\nimport { ColorModel, AnyColor, HsvaColor } from \"../types\";\nimport { equalColorObjects } from \"../utils/compare\";\nimport { useEventCallback } from \"./useEventCallback\";\n\nexport function useColorManipulation<T extends AnyColor>(\n colorModel: ColorModel<T>,\n color: T,\n onChange?: (color: T) => void,\n onChangeEnd?: (color: T) => void\n): [HsvaColor, (color: Partial<HsvaColor>) => void, () => void] {\n // Save onChange callback in the ref for avoiding \"useCallback hell\"\n const onChangeCallback = useEventCallback<T>(onChange);\n const onChangeEndCallback = useEventCallback<T>(onChangeEnd);\n\n // No matter which color model is used (HEX, RGB(A) or HSL(A)),\n // all internal calculations are based on HSVA model\n const [hsva, updateHsva] = useState<HsvaColor>(() => colorModel.toHsva(color));\n\n // By using this ref we're able to prevent extra updates\n // and the effects recursion during the color conversion\n const cache = useRef({ color, hsva });\n const isDirty = useRef(false);\n\n // Update local HSVA-value if `color` property value is changed,\n // but only if that's not the same color that we just sent to the parent\n useEffect(() => {\n if (!colorModel.equal(color, cache.current.color)) {\n const newHsva = colorModel.toHsva(color);\n cache.current = { hsva: newHsva, color };\n updateHsva(newHsva);\n isDirty.current = false;\n }\n }, [color, colorModel]);\n\n // Trigger `onChange` callback only if an updated color is different from cached one;\n // save the new color to the ref to prevent unnecessary updates\n useEffect(() => {\n let newColor;\n if (\n !equalColorObjects(hsva, cache.current.hsva) &&\n !colorModel.equal((newColor = colorModel.fromHsva(hsva)), cache.current.color)\n ) {\n cache.current = { hsva, color: newColor };\n onChangeCallback(newColor);\n isDirty.current = true;\n }\n }, [hsva, colorModel, onChangeCallback]);\n\n // Merge the current HSVA color object with updated params.\n // For example, when a child component sends `h` or `s` only\n const handleChange = useCallback((params: Partial<HsvaColor>) => {\n updateHsva((current) => Object.assign({}, current, params));\n }, []);\n\n const commitChange = useCallback(() => {\n if (isDirty.current) {\n isDirty.current = false;\n onChangeEndCallback(cache.current.color);\n }\n }, [onChangeEndCallback]);\n\n return [hsva, handleChange, commitChange];\n}\n","import { useLayoutEffect, useEffect } from \"react\";\n\n// React currently throws a warning when using useLayoutEffect on the server.\n// To get around it, we can conditionally useEffect on the server (no-op) and\n// useLayoutEffect in the browser.\nexport const useIsomorphicLayoutEffect =\n typeof window !== \"undefined\" ? useLayoutEffect : useEffect;\n","declare const __webpack_nonce__: string | undefined;\nlet nonce: string | undefined;\n\n/**\n * Returns a nonce hash included by Webpack or the one defined manually by developer.\n * https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/nonce\n * https://webpack.js.org/guides/csp/\n */\nexport const getNonce = (): string | undefined => {\n if (nonce) return nonce;\n if (typeof __webpack_nonce__ !== \"undefined\") return __webpack_nonce__;\n return undefined;\n};\n\n/**\n * Signs the style tag with a base64-encoded string (nonce) to conforms to Content Security Policies.\n * This function has to be invoked before any picker is rendered if you aren't using Webpack for CSP.\n */\nexport const setNonce = (hash: string): void => {\n nonce = hash;\n};\n","import { RefObject } from \"react\";\n\nimport { useIsomorphicLayoutEffect } from \"./useIsomorphicLayoutEffect\";\nimport { getNonce } from \"../utils/nonce\";\n\n// Bundler is configured to load this as a processed minified CSS-string\nimport styles from \"../css/styles.css\";\n\nconst styleElementMap: Map<Document, HTMLStyleElement> = new Map();\n\n/**\n * Injects CSS code into the document's <head>\n */\nexport const useStyleSheet = (nodeRef: RefObject<HTMLDivElement>): void => {\n useIsomorphicLayoutEffect(() => {\n const parentDocument = nodeRef.current ? nodeRef.current.ownerDocument : document;\n\n if (typeof parentDocument !== \"undefined\" && !styleElementMap.has(parentDocument)) {\n const styleElement = parentDocument.createElement(\"style\");\n styleElement.innerHTML = styles;\n styleElementMap.set(parentDocument, styleElement);\n\n // Conform to CSP rules by setting `nonce` attribute to the inline styles\n const nonce = getNonce();\n if (nonce) styleElement.setAttribute(\"nonce\", nonce);\n\n parentDocument.head.appendChild(styleElement);\n }\n }, []);\n};\n","import React, { useRef } from \"react\";\n\nimport { Hue } from \"./Hue\";\nimport { Saturation } from \"./Saturation\";\n\nimport { ColorModel, ColorPickerBaseProps, AnyColor } from \"../../types\";\nimport { useColorManipulation } from \"../../hooks/useColorManipulation\";\nimport { useStyleSheet } from \"../../hooks/useStyleSheet\";\nimport { formatClassName } from \"../../utils/format\";\n\ninterface Props<T extends AnyColor> extends Partial<ColorPickerBaseProps<T>> {\n colorModel: ColorModel<T>;\n}\n\nexport const ColorPicker = <T extends AnyColor>({\n className,\n colorModel,\n color = colorModel.defaultColor,\n onChange,\n onChangeEnd,\n ...rest\n}: Props<T>): React.ReactElement => {\n const nodeRef = useRef<HTMLDivElement>(null);\n useStyleSheet(nodeRef);\n\n const [hsva, updateHsva, commitChange] = useColorManipulation<T>(\n colorModel,\n color,\n onChange,\n onChangeEnd\n );\n\n const nodeClassName = formatClassName([\"react-colorful\", className]);\n\n return (\n <div {...rest} ref={nodeRef} className={nodeClassName}>\n <Saturation hsva={hsva} onChange={updateHsva} onChangeEnd={commitChange} />\n <Hue\n hue={hsva.h}\n onChange={updateHsva}\n onChangeEnd={commitChange}\n className=\"react-colorful__last-control\"\n />\n </div>\n );\n};\n","import React from \"react\";\n\nimport { ColorPicker } from \"./common/ColorPicker\";\nimport { ColorModel, ColorPickerBaseProps } from \"../types\";\nimport { equalHex } from \"../utils/compare\";\nimport { hexToHsva, hsvaToHex } from \"../utils/convert\";\n\nconst colorModel: ColorModel<string> = {\n defaultColor: \"000\",\n toHsva: hexToHsva,\n fromHsva: ({ h, s, v }) => hsvaToHex({ h, s, v, a: 1 }),\n equal: equalHex,\n};\n\nexport const HexColorPicker = (\n props: Partial<ColorPickerBaseProps<string>>\n): React.ReactElement => <ColorPicker {...props} colorModel={colorModel} />;\n","export const HEX_RE = /^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$/;\n\n// <input type=\"color\"> e o draft interno só trabalham com #rrggbb.\nexport function normalizeHex(input: string): string | null {\n const withHash = input.startsWith('#') ? input : `#${input}`;\n if (!HEX_RE.test(withHash)) return null;\n if (withHash.length === 7) return withHash.toUpperCase();\n const [r, g, b] = withHash.slice(1);\n return `#${r}${r}${g}${g}${b}${b}`.toUpperCase();\n}\n\nexport function hexToRgb(hex: string): { r: number; g: number; b: number } {\n const full = normalizeHex(hex) ?? '#000000';\n return {\n r: parseInt(full.slice(1, 3), 16),\n g: parseInt(full.slice(3, 5), 16),\n b: parseInt(full.slice(5, 7), 16)\n };\n}\n\nexport function rgbToHex(r: number, g: number, b: number): string {\n const channel = (value: number) =>\n Math.max(0, Math.min(255, Math.round(value)))\n .toString(16)\n .padStart(2, '0');\n return `#${channel(r)}${channel(g)}${channel(b)}`.toUpperCase();\n}\n","import styled from 'styled-components';\n\nexport const Panel = styled.div`\n width: 100%;\n\n .react-colorful {\n width: 100%;\n height: 160px;\n }\n\n .react-colorful__saturation {\n border-radius: 8px;\n border-bottom: none;\n }\n\n .react-colorful__hue {\n height: 10px;\n margin-top: 10px;\n border-radius: 5px;\n }\n\n .react-colorful__pointer {\n width: 18px;\n height: 18px;\n border: 3px solid #fff;\n }\n\n .react-colorful__hue-pointer {\n width: 14px;\n height: 14px;\n }\n`;\n\nexport const Fields = styled.div`\n display: grid;\n grid-template-columns: 1.8fr 1fr 1fr 1fr;\n gap: 6px;\n margin-top: 12px;\n`;\n\nexport const FieldColumn = styled.label`\n display: flex;\n flex-direction: column;\n gap: 4px;\n font-size: 11px;\n font-weight: 600;\n color: #3f4759;\n`;\n\nexport const FieldInput = styled.input`\n width: 100%;\n padding: 6px 4px;\n border: 1px solid #e5e7eb;\n border-radius: 6px;\n font-size: 12px;\n text-align: center;\n color: #3f4759;\n`;\n","import { useEffect, useRef, useState } from 'react';\nimport { HexColorPicker } from 'react-colorful';\nimport { hexToRgb, normalizeHex, rgbToHex } from './color';\nimport { FieldColumn, FieldInput, Fields, Panel } from './ColorPickerPanel.styles';\n\nexport type ColorPickerPanelProps = {\n /** Cor inicial (#rrggbb). */\n value: string;\n /** Chamado com debounce a cada ajuste (arraste, hex, RGB). */\n onChange: (hex: string) => void;\n debounceMs?: number;\n};\n\ntype Channel = 'r' | 'g' | 'b';\n\nconst CHANNELS: { key: Channel; label: string }[] = [\n { key: 'r', label: 'R' },\n { key: 'g', label: 'G' },\n { key: 'b', label: 'B' }\n];\n\n/** Picker avançado (react-colorful): saturação + matiz e campos Hex/RGB, aplicação ao vivo. */\nexport function ColorPickerPanel({ value, onChange, debounceMs = 300 }: ColorPickerPanelProps) {\n const [draft, setDraft] = useState(() => normalizeHex(value) ?? '#000000');\n const [hexText, setHexText] = useState(draft);\n const timer = useRef<ReturnType<typeof setTimeout>>();\n const pending = useRef<string | null>(null);\n const onChangeRef = useRef(onChange);\n onChangeRef.current = onChange;\n\n useEffect(() => setHexText(draft), [draft]);\n\n useEffect(\n () => () => {\n clearTimeout(timer.current);\n if (pending.current !== null) onChangeRef.current(pending.current);\n },\n []\n );\n\n const apply = (hex: string) => {\n setDraft(hex);\n pending.current = hex;\n clearTimeout(timer.current);\n timer.current = setTimeout(() => {\n pending.current = null;\n onChangeRef.current(hex);\n }, debounceMs);\n };\n\n const rgb = hexToRgb(draft);\n\n const onChannelChange = (channel: Channel, raw: string) => {\n const parsed = raw === '' ? 0 : parseInt(raw, 10);\n if (Number.isNaN(parsed)) return;\n const next = { ...rgb, [channel]: parsed };\n apply(rgbToHex(next.r, next.g, next.b));\n };\n\n return (\n <Panel>\n <HexColorPicker color={draft} onChange={next => apply(next.toUpperCase())} />\n <Fields>\n <FieldColumn>\n Hex\n <FieldInput\n aria-label=\"Hex\"\n value={hexText}\n onChange={e => {\n setHexText(e.target.value);\n const normalized = normalizeHex(e.target.value);\n if (normalized) apply(normalized);\n }}\n onBlur={() => setHexText(draft)}\n />\n </FieldColumn>\n {CHANNELS.map(({ key, label }) => (\n <FieldColumn key={key}>\n {label}\n <FieldInput\n aria-label={label}\n inputMode=\"numeric\"\n value={rgb[key]}\n onChange={e => onChannelChange(key, e.target.value)}\n />\n </FieldColumn>\n ))}\n </Fields>\n </Panel>\n );\n}\n","import styled from 'styled-components';\n\nexport const Wrapper = styled.div`\n position: relative;\n display: inline-flex;\n`;\n\nexport const SwatchTrigger = styled.button<{ $color: string; $size: number }>`\n width: ${props => props.$size}px;\n height: ${props => props.$size}px;\n padding: 0;\n border: 1px solid #e5e7eb;\n border-radius: 6px;\n cursor: pointer;\n background: ${props => props.$color};\n`;\n\nexport const Popover = styled.div`\n position: absolute;\n top: calc(100% + 8px);\n right: 0;\n width: 216px;\n padding: 12px;\n background: #fff;\n border: 1px solid #e5e7eb;\n border-radius: 10px;\n box-shadow: 0 8px 24px rgba(15, 23, 42, 0.14);\n z-index: 1200;\n display: flex;\n flex-direction: column;\n gap: 12px;\n`;\n\nexport const PresetGrid = styled.div`\n display: grid;\n grid-template-columns: repeat(6, 1fr);\n gap: 6px;\n`;\n\nexport const PresetSwatch = styled.button<{ $color: string }>`\n position: relative;\n width: 100%;\n aspect-ratio: 1;\n padding: 0;\n border: 1px solid rgba(15, 23, 42, 0.12);\n border-radius: 7px;\n cursor: pointer;\n background: ${props => props.$color};\n color: #fff;\n display: flex;\n align-items: center;\n justify-content: center;\n\n &:hover {\n transform: scale(1.08);\n }\n`;\n\nexport const CurrentRow = styled.div`\n display: flex;\n align-items: center;\n gap: 8px;\n`;\n\nexport const CurrentSwatch = styled.button<{ $color: string }>`\n width: 28px;\n height: 28px;\n flex-shrink: 0;\n padding: 0;\n border: 1px solid #e5e7eb;\n border-radius: 6px;\n cursor: pointer;\n background: ${props => props.$color};\n`;\n\nexport const HexField = styled.input`\n flex: 1;\n min-width: 0;\n padding: 6px 8px;\n border: 1px solid #e5e7eb;\n border-radius: 6px;\n font-size: 13px;\n color: #3f4759;\n`;\n\nexport const InheritAction = styled.button`\n display: inline-flex;\n align-items: center;\n gap: 6px;\n align-self: flex-start;\n padding: 0;\n border: none;\n background: none;\n font-size: 13px;\n font-weight: 500;\n color: #1a56db;\n cursor: pointer;\n\n &:hover {\n text-decoration: underline;\n }\n`;\n","import { useEffect, useRef, useState } from 'react';\nimport { ColorPickerPanel } from './ColorPickerPanel';\nimport { hexToRgb, normalizeHex } from './color';\nimport {\n CurrentRow,\n CurrentSwatch,\n HexField,\n InheritAction,\n Popover,\n PresetGrid,\n PresetSwatch,\n SwatchTrigger,\n Wrapper\n} from './ColorPicker.styles';\n\nexport const DEFAULT_COLOR_PRESETS = [\n '#000000',\n '#434A5B',\n '#A9B0C5',\n '#FFFFFF',\n '#7D2A55',\n '#9B3FD6',\n '#D63F94',\n '#D63C31',\n '#F5820B',\n '#DFA71E',\n '#54390B',\n '#57AB32',\n '#25541B',\n '#2AA48D',\n '#7DA8F7',\n '#2563EB',\n '#152C61',\n '#6B7280'\n];\n\nconst checkColor = (hex: string) => {\n const { r, g, b } = hexToRgb(hex);\n return 0.299 * r + 0.587 * g + 0.114 * b > 186 ? '#1F2937' : '#FFFFFF';\n};\n\nfunction CheckIcon() {\n return (\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 16 16\" fill=\"none\" aria-hidden>\n <path\n d=\"M3 8.5 6.5 12 13 4.5\"\n stroke=\"currentColor\"\n strokeWidth=\"2.4\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n );\n}\n\nfunction InheritIcon() {\n return (\n <svg width=\"13\" height=\"13\" viewBox=\"0 0 16 16\" fill=\"none\" aria-hidden>\n <path\n d=\"M13.5 8a5.5 5.5 0 1 1-1.61-3.89M13.5 2.5v2.75h-2.75\"\n stroke=\"currentColor\"\n strokeWidth=\"1.6\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n );\n}\n\nexport type ColorPickerProps = {\n /** Cor escolhida (#rrggbb). `undefined` = herdando (mostra `fallback`). */\n value?: string;\n /** Cor efetiva exibida quando não há `value` (ex: brand do tema). */\n fallback?: string;\n presets?: string[];\n /** `undefined` no argumento = herdar/limpar. */\n onChange: (hex?: string) => void;\n /** Quando presente, exibe a ação de herdar (ex: \"Herdar do tema\"). */\n inheritLabel?: string;\n ariaLabel?: string;\n /** Lado do swatch em px. */\n size?: number;\n};\n\n/**\n * Seletor de cor unificado do gerador: swatch → popover com paleta, cor atual +\n * hex e picker avançado (react-colorful) embutido. Usado nos blocos e no modal\n * de configurações do documento.\n */\nexport function ColorPicker({\n value,\n fallback,\n presets = DEFAULT_COLOR_PRESETS,\n onChange,\n inheritLabel,\n ariaLabel,\n size = 28\n}: ColorPickerProps) {\n const [open, setOpen] = useState(false);\n const [advanced, setAdvanced] = useState(false);\n const [hexDraft, setHexDraft] = useState<string | null>(null);\n const wrapperRef = useRef<HTMLDivElement>(null);\n\n const effective = value ?? fallback ?? '#000000';\n\n if (presets.length % 6 !== 0) {\n // eslint-disable-next-line no-console\n console.warn(`[vobi-document] paleta com ${presets.length} cores não fecha linhas de 6 (docs/theme.md).`);\n }\n\n useEffect(() => {\n if (!open) return undefined;\n const close = (event: PointerEvent) => {\n const el = wrapperRef.current;\n if (el && !el.contains(event.target as Node)) {\n setOpen(false);\n setAdvanced(false);\n }\n };\n document.addEventListener('pointerdown', close);\n return () => document.removeEventListener('pointerdown', close);\n }, [open]);\n\n const commit = (hex?: string) => {\n setHexDraft(null);\n onChange(hex);\n };\n\n return (\n <Wrapper ref={wrapperRef}>\n <SwatchTrigger\n type=\"button\"\n aria-label={ariaLabel}\n $color={effective}\n $size={size}\n onClick={() => setOpen(prev => !prev)}\n />\n {open ? (\n <Popover>\n <PresetGrid>\n {presets.map(preset => (\n <PresetSwatch\n key={preset}\n type=\"button\"\n aria-label={preset}\n $color={preset}\n style={{ color: checkColor(preset) }}\n onClick={() => commit(preset)}\n >\n {value?.toUpperCase() === preset.toUpperCase() ? <CheckIcon /> : null}\n </PresetSwatch>\n ))}\n </PresetGrid>\n <CurrentRow>\n <CurrentSwatch\n type=\"button\"\n aria-label=\"Cor personalizada\"\n $color={effective}\n onClick={() => setAdvanced(prev => !prev)}\n />\n <HexField\n aria-label=\"Cor (hex)\"\n value={hexDraft ?? effective.toUpperCase()}\n onChange={e => {\n const next = e.target.value;\n const normalized = normalizeHex(next);\n if (normalized) {\n commit(normalized);\n return;\n }\n setHexDraft(next);\n }}\n onBlur={() => setHexDraft(null)}\n />\n </CurrentRow>\n {advanced ? <ColorPickerPanel value={effective} onChange={next => commit(next)} /> : null}\n {inheritLabel ? (\n <InheritAction\n type=\"button\"\n onClick={() => {\n commit(undefined);\n setOpen(false);\n }}\n >\n <InheritIcon />\n {inheritLabel}\n </InheritAction>\n ) : null}\n </Popover>\n ) : null}\n </Wrapper>\n );\n}\n","import styled from 'styled-components';\n\nexport const Backdrop = styled.div`\n position: fixed;\n inset: 0;\n background: rgba(15, 23, 42, 0.45);\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 1000;\n`;\n\nexport const Dialog = styled.div`\n width: 560px;\n max-width: calc(100vw - 32px);\n max-height: calc(100vh - 64px);\n background: #fff;\n border-radius: 12px;\n overflow: hidden;\n display: flex;\n flex-direction: column;\n font-family:\n 'Inter',\n -apple-system,\n sans-serif;\n`;\n\nexport const Head = styled.div`\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 20px 24px;\n border-bottom: 1px solid #eef0f3;\n font-size: 18px;\n font-weight: 600;\n color: #1f2937;\n`;\n\nexport const CloseButton = styled.button`\n border: none;\n background: none;\n cursor: pointer;\n font-size: 20px;\n color: #6b7280;\n line-height: 1;\n`;\n\nexport const Panel = styled.div`\n flex: 1;\n padding: 24px 28px;\n overflow: auto;\n`;\n\nexport const SectionTitle = styled.h3`\n margin: 0 0 16px;\n font-size: 15px;\n font-weight: 600;\n color: #1f2937;\n`;\n\nexport const ColorRow = styled.label`\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 12px;\n padding: 10px 0;\n font-size: 14px;\n color: #3f4759;\n`;\n\nexport const ColorControls = styled.div`\n position: relative;\n display: flex;\n align-items: center;\n gap: 10px;\n`;\n\nexport const HexInput = styled.input`\n width: 96px;\n padding: 6px 8px;\n border: 1px solid #e5e7eb;\n border-radius: 6px;\n font-size: 13px;\n text-align: right;\n color: #6b7280;\n`;\n\nexport const SwatchButton = styled.button<{ $color: string }>`\n width: 36px;\n height: 36px;\n padding: 0;\n border: 1px solid #e5e7eb;\n border-radius: 6px;\n cursor: pointer;\n background: ${props => props.$color};\n`;\n\nexport const Field = styled.div`\n margin-top: 24px;\n`;\n\nexport const FieldLabel = styled.label`\n display: block;\n margin-bottom: 8px;\n font-size: 14px;\n font-weight: 600;\n color: #1f2937;\n`;\n\nexport const Select = styled.select`\n width: 100%;\n padding: 10px 12px;\n border: 1px solid #e5e7eb;\n border-radius: 8px;\n font-size: 14px;\n color: #3f4759;\n background: #fff;\n`;\n\nexport const LogoBox = styled.div`\n margin-top: 12px;\n width: 160px;\n height: 160px;\n border: 1px solid #e5e7eb;\n border-radius: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: #f5f7fa;\n overflow: hidden;\n position: relative;\n`;\n\nexport const LogoImg = styled.img`\n max-width: 100%;\n max-height: 100%;\n`;\n\nexport const UploadLabel = styled.label`\n display: inline-flex;\n align-items: center;\n gap: 6px;\n margin-top: 12px;\n padding: 8px 14px;\n border-radius: 6px;\n background: #1a56db;\n color: #fff;\n font-size: 13px;\n font-weight: 500;\n cursor: pointer;\n`;\n\nexport const HiddenFile = styled.input`\n display: none;\n`;\n\nexport const Placeholder = styled.div`\n color: #9aa3af;\n font-size: 14px;\n`;\n","import { ColorPicker } from '../colorPicker/ColorPicker';\nimport { ColorControls, ColorRow } from './DocumentSettingsModal.styles';\n\nexport type ColorFieldProps = { label: string; value: string; onCommit: (value: string) => void };\n\nexport function ColorField({ label, value, onCommit }: ColorFieldProps) {\n return (\n <ColorRow as=\"div\">\n <span>{label}</span>\n <ColorControls>\n <ColorPicker\n value={value}\n ariaLabel={`${label} (seletor)`}\n onChange={next => {\n if (next) onCommit(next);\n }}\n />\n </ColorControls>\n </ColorRow>\n );\n}\n","import { DOCUMENT_FONTS } from '../../surface/fonts';\nimport { DEFAULT_DOCUMENT_COLORS } from '../../surface/surface';\nimport { DEFAULT_DOCUMENT_FONT_ID } from '../../surface/resolveTheme';\nimport type { Theme } from '../../schema/theme';\nimport { ColorField } from './ColorField';\nimport {\n Field,\n FieldLabel,\n HiddenFile,\n LogoBox,\n LogoImg,\n Placeholder,\n SectionTitle,\n Select,\n UploadLabel\n} from './DocumentSettingsModal.styles';\n\nconst COLOR_FIELDS: { key: 'brand' | 'text' | 'background'; label: string }[] = [\n { key: 'brand', label: 'Cor de marca' },\n { key: 'text', label: 'Texto' },\n { key: 'background', label: 'Fundo' }\n];\n\nexport type VisualTabProps = {\n theme: Theme;\n onPatch: (next: Partial<Theme>) => void;\n onLogoUpload?: (file: File) => Promise<{ key?: string; url?: string }>;\n};\n\nexport function VisualTab({ theme, onPatch, onLogoUpload }: VisualTabProps) {\n const colors = { ...DEFAULT_DOCUMENT_COLORS, ...theme.colors };\n\n const setColor = (key: 'brand' | 'text' | 'background', value: string) =>\n onPatch({ colors: { ...theme.colors, [key]: value } });\n\n const handleLogo = async (file: File | undefined) => {\n if (!file || !onLogoUpload) return;\n const result = await onLogoUpload(file);\n onPatch({ logo: result });\n };\n\n return (\n <>\n <SectionTitle>Cores</SectionTitle>\n {COLOR_FIELDS.map(field => (\n <ColorField\n key={field.key}\n label={field.label}\n value={colors[field.key]}\n onCommit={next => setColor(field.key, next)}\n />\n ))}\n\n <Field>\n <FieldLabel htmlFor=\"docgen-font\">Fonte</FieldLabel>\n <Select\n id=\"docgen-font\"\n aria-label=\"Fonte\"\n value={theme.documentFont ?? DEFAULT_DOCUMENT_FONT_ID}\n onChange={e => onPatch({ documentFont: e.target.value })}\n >\n {DOCUMENT_FONTS.map(font => (\n <option key={font.id} value={font.id}>\n {font.label}\n </option>\n ))}\n </Select>\n </Field>\n\n <Field>\n <FieldLabel as=\"span\">Logo</FieldLabel>\n <LogoBox>\n {theme.logo?.url ? <LogoImg src={theme.logo.url} alt=\"Logo\" /> : <Placeholder>Sem logo</Placeholder>}\n </LogoBox>\n <UploadLabel>\n Alterar\n <HiddenFile\n type=\"file\"\n accept=\"image/*\"\n aria-label=\"Alterar logo\"\n onChange={e => handleLogo(e.target.files?.[0])}\n />\n </UploadLabel>\n </Field>\n </>\n );\n}\n","import type { Theme } from '../../schema/theme';\nimport { VisualTab } from './VisualTab';\nimport { Backdrop, CloseButton, Dialog, Head, Panel } from './DocumentSettingsModal.styles';\n\nexport type DocumentSettingsModalProps = {\n open: boolean;\n onClose: () => void;\n theme: Theme;\n onThemeChange: (theme: Theme) => void;\n onLogoUpload?: (file: File) => Promise<{ key?: string; url?: string }>;\n};\n\n/**\n * Modal padrão de configurações do documento (aba Visual: cores, fonte, logo).\n * Hosts que precisam de mais abas ou do próprio design system substituem via\n * `renderSettings` no DocumentEditor.\n */\nexport function DocumentSettingsModal({\n open,\n onClose,\n theme,\n onThemeChange,\n onLogoUpload\n}: DocumentSettingsModalProps) {\n if (!open) return null;\n\n const patch = (next: Partial<Theme>) => onThemeChange({ ...theme, ...next });\n\n return (\n <Backdrop role=\"dialog\" aria-modal=\"true\" aria-label=\"Configurações do documento\">\n <Dialog>\n <Head>\n <span>Configurações do documento</span>\n <CloseButton type=\"button\" aria-label=\"Fechar\" onClick={onClose}>\n ×\n </CloseButton>\n </Head>\n <Panel>\n <VisualTab theme={theme} onPatch={patch} onLogoUpload={onLogoUpload} />\n </Panel>\n </Dialog>\n </Backdrop>\n );\n}\n","import { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { formatResolvedValues } from './resolve';\nimport type { ResolvedVariables, VariableContext, VariableDef, VariableResolver } from './types';\n\nexport type UseVariableResolutionOptions = {\n catalog?: VariableDef[];\n resolver?: VariableResolver;\n ctx?: VariableContext;\n keys?: string[];\n};\n\nexport type UseVariableResolutionResult = {\n resolved: ResolvedVariables;\n ensureResolved: (keys: string[]) => Promise<void>;\n};\n\ntype State = { ctxHash: string; raw: Record<string, unknown>; attempted: string[] };\n\nconst EMPTY: ResolvedVariables = {};\nconst EMPTY_RAW: Record<string, unknown> = {};\n\nconst defsFor = (keys: string[], catalog: VariableDef[]): VariableDef[] => {\n const byKey = new Map(catalog.map(def => [def.key, def]));\n return keys.map(key => byKey.get(key) ?? { key, label: key, type: 'string' as const, model: 'outros' });\n};\n\nexport function useVariableResolution({\n catalog = [],\n resolver,\n ctx = {},\n keys = []\n}: UseVariableResolutionOptions): UseVariableResolutionResult {\n const keysHash = useMemo(() => [...keys].sort().join('|'), [keys]);\n const ctxHash = useMemo(() => JSON.stringify(ctx), [ctx]);\n\n const [state, setState] = useState<State>({ ctxHash, raw: EMPTY_RAW, attempted: [] });\n\n const catalogRef = useRef(catalog);\n catalogRef.current = catalog;\n const resolverRef = useRef(resolver);\n resolverRef.current = resolver;\n const ctxRef = useRef(ctx);\n ctxRef.current = ctx;\n const ctxHashRef = useRef(ctxHash);\n ctxHashRef.current = ctxHash;\n const keysRef = useRef(keys);\n keysRef.current = keys;\n const stateRef = useRef(state);\n stateRef.current = state;\n\n const resolved = useMemo(\n () => (state.ctxHash === ctxHash ? formatResolvedValues(defsFor(state.attempted, catalog), state.raw) : EMPTY),\n [state, ctxHash, catalog]\n );\n\n const missingFor = (list: string[], forCtx: string): string[] => {\n const attempted = new Set(stateRef.current.ctxHash === forCtx ? stateRef.current.attempted : []);\n return list.filter(key => !attempted.has(key));\n };\n\n const merge = (forCtx: string, list: string[], next: Record<string, unknown>): void =>\n setState(prev => {\n const stale = prev.ctxHash !== forCtx;\n return {\n ctxHash: forCtx,\n raw: { ...(stale ? EMPTY_RAW : prev.raw), ...next },\n attempted: [...new Set([...(stale ? [] : prev.attempted), ...list])]\n };\n });\n\n /** `null` = não dá para buscar agora; as keys não entram em `attempted` e serão tentadas de novo. */\n const fetchKeys = useCallback((list: string[]): Promise<Record<string, unknown> | null> => {\n const currentResolver = resolverRef.current;\n if (!currentResolver || list.length === 0) return Promise.resolve(null);\n return currentResolver(list, ctxRef.current);\n }, []);\n\n useEffect(() => {\n const forCtx = ctxHash;\n const missing = missingFor(keysRef.current, forCtx);\n if (!missing.length) return undefined;\n\n let active = true;\n fetchKeys(missing).then(next => {\n if (active && next) merge(forCtx, missing, next);\n });\n return () => {\n active = false;\n };\n }, [keysHash, ctxHash, fetchKeys, resolver]);\n\n const ensureResolved = useCallback(\n (list: string[]): Promise<void> => {\n const forCtx = ctxHashRef.current;\n const missing = missingFor(list, forCtx);\n if (!missing.length) return Promise.resolve();\n return fetchKeys(missing).then(next => {\n if (next) merge(forCtx, missing, next);\n });\n },\n [fetchKeys]\n );\n\n return { resolved, ensureResolved };\n}\n","import { Fragment, type ReactNode, createElement, useMemo, useRef, useState } from 'react';\nimport {\n ActionBar,\n type ComponentData,\n type Data,\n type Dictionary,\n type IframeConfig,\n type Metadata,\n Puck,\n blocksPlugin,\n fieldsPlugin,\n outlinePlugin,\n useGetPuck\n} from '@puckeditor/core';\nimport { buildConfig } from '../core/buildConfig';\nimport type { Registry } from '../blocks/types';\nimport { DrawerCard, DrawerHint, DrawerItemIcon, EditorShell } from '../surface/surface';\nimport { DocumentThemeProvider } from '../surface/themeContext';\nimport { useDocumentFont } from '../surface/useDocumentFont';\nimport { BlockIcon } from './blockIcons';\nimport { ptBrDictionary } from './dictionary';\nimport { installModifierStateShim } from './modifierStateShim';\nimport { EditorApiBridge } from './EditorApiBridge';\nimport type { DocumentEditorApiRef } from './editorApi';\nimport { headerApiFromHistory, type DocumentHeaderApi } from './headerApi';\nimport { usePuckState } from './puckStore';\nimport { DocumentSettingsModal } from './settings/DocumentSettingsModal';\nimport type { Theme } from '../schema/theme';\nimport { CatalogProvider, type Translator } from '../variables/catalogContext';\nimport { ResolvedProvider } from '../variables/resolvedContext';\nimport { extractBindingKeys } from '../variables/bindings';\nimport { useVariableResolution } from '../variables/useVariableResolution';\nimport type { UnresolvedDisplay, VariableContext, VariableDef, VariableResolver } from '../variables/types';\n\nexport type DisabledBlock = { key: string; reason?: string };\n\ntype ActionBarProps = { label?: string; children: ReactNode; parentAction: ReactNode };\n\nexport type SettingsRenderProps = {\n open: boolean;\n onClose: () => void;\n theme: Theme;\n onThemeChange: (theme: Theme) => void;\n onLogoUpload?: (file: File) => Promise<{ key?: string; url?: string }>;\n};\n\nexport type DocumentEditorProps = {\n registry: Registry;\n data?: Partial<Data>;\n onChange?: (data: Data) => void;\n onPublish?: (data: Data) => void;\n iframe?: IframeConfig;\n disabledBlocks?: DisabledBlock[];\n theme?: Theme;\n onThemeChange?: (theme: Theme) => void;\n onLogoUpload?: (file: File) => Promise<{ key?: string; url?: string }>;\n renderSettings?: (settings: SettingsRenderProps) => ReactNode;\n renderHeader?: (api: DocumentHeaderApi) => ReactNode;\n /** Ações extras na action bar do bloco selecionado. Recebe o item; devolva `ActionBar.Action`s. */\n renderBlockActions?: (item: ComponentData | null) => ReactNode;\n /** A lib preenche com `{ setData }` para o host mutar o documento sem remontar o editor. */\n apiRef?: DocumentEditorApiRef;\n catalog?: VariableDef[];\n translator?: Translator;\n resolver?: VariableResolver;\n ctx?: VariableContext;\n unresolvedDisplay?: UnresolvedDisplay;\n /** Dados do host visíveis a todo bloco como `puck.metadata` (ex.: `{ isTemplate: true }`). */\n metadata?: Metadata;\n /** Strings da UI do Puck. Default: PT-BR (`ptBrDictionary`). */\n dictionary?: Dictionary;\n patchModifierState?: boolean;\n};\n\nconst EMPTY = { content: [], root: {} } as Data;\n\nexport function DocumentEditor({\n registry,\n data,\n onChange,\n onPublish,\n iframe = { enabled: false },\n theme = {},\n onThemeChange,\n onLogoUpload,\n renderSettings,\n renderHeader,\n renderBlockActions,\n catalog = [],\n translator = {},\n resolver,\n ctx = {},\n unresolvedDisplay = 'placeholder',\n metadata,\n dictionary = ptBrDictionary,\n patchModifierState = true,\n disabledBlocks = [],\n apiRef\n}: DocumentEditorProps) {\n if (patchModifierState) installModifierStateShim();\n\n const [settingsOpen, setSettingsOpen] = useState(false);\n\n useDocumentFont(theme.documentFont);\n\n const disabledByKey = useMemo(\n () => Object.fromEntries(disabledBlocks.map(block => [block.key, block.reason ?? ''])),\n [disabledBlocks.map(block => `${block.key}:${block.reason ?? ''}`).join('|')]\n );\n\n const baseConfig = useMemo(() => buildConfig(registry), [registry]);\n\n const config = useMemo(() => {\n const disabledKeys = Object.keys(disabledByKey);\n if (!disabledKeys.length) return baseConfig;\n const components = { ...baseConfig.components };\n disabledKeys.forEach(key => {\n if (!components[key]) return;\n components[key] = {\n ...components[key],\n permissions: { ...components[key].permissions, insert: false }\n };\n });\n return { ...baseConfig, components };\n }, [baseConfig, disabledByKey]);\n\n // Identidades instáveis do host lidas via ref — ver docs/architecture.md.\n const themeRef = useRef(theme);\n themeRef.current = theme;\n const renderHeaderRef = useRef(renderHeader);\n renderHeaderRef.current = renderHeader;\n const apiRefRef = useRef(apiRef);\n apiRefRef.current = apiRef;\n const renderBlockActionsRef = useRef(renderBlockActions);\n renderBlockActionsRef.current = renderBlockActions;\n\n const usedKeys = useMemo(() => extractBindingKeys(data), [data]);\n const { resolved, ensureResolved } = useVariableResolution({ catalog, resolver, ctx, keys: usedKeys });\n\n /** Ícone e label de cada bloco do registry — usados no card do palette. */\n const blockByKey = useMemo(() => {\n const map: Record<string, { icon?: ReactNode; label?: string }> = {};\n registry.forEach(block => {\n map[block.key] = { icon: block.icon, label: block.label };\n });\n return map;\n }, [registry]);\n\n const plugins = useMemo(\n () => [\n { ...blocksPlugin(), label: 'Blocos' },\n { ...outlinePlugin(), label: 'Estrutura' },\n { ...fieldsPlugin(), label: 'Campos' }\n ],\n []\n );\n\n const overrides = useMemo(() => {\n const base = {\n // eslint-disable-next-line react/no-unstable-nested-components, react/no-unused-prop-types\n drawerItem: ({ name }: { name: string }) => {\n const card = (\n <DrawerCard $disabled={name in disabledByKey}>\n <DrawerItemIcon>{blockByKey[name]?.icon ?? <BlockIcon />}</DrawerItemIcon>\n <span>{blockByKey[name]?.label ?? name}</span>\n </DrawerCard>\n );\n if (!(name in disabledByKey)) return card;\n return <DrawerHint data-hint={disabledByKey[name] || undefined}>{card}</DrawerHint>;\n }\n };\n\n const withBridge = apiRefRef.current\n ? {\n ...base,\n // eslint-disable-next-line react/no-unstable-nested-components, react/no-unused-prop-types\n puck: ({ children }: { children: ReactNode }) =>\n createElement(EditorApiBridge, { apiRef: apiRefRef.current }, children)\n }\n : base;\n\n // eslint-disable-next-line react/no-unstable-nested-components\n function BlockActionBar({ label, children, parentAction }: ActionBarProps) {\n const selectedItem = usePuckState(state => state.selectedItem);\n const extra = renderBlockActionsRef.current?.(selectedItem ?? null);\n return (\n <ActionBar>\n <ActionBar.Group>\n {parentAction}\n {label ? <ActionBar.Label label={label} /> : null}\n </ActionBar.Group>\n {extra ? <ActionBar.Group>{extra}</ActionBar.Group> : null}\n <ActionBar.Group>{children}</ActionBar.Group>\n </ActionBar>\n );\n }\n\n const withActions = renderBlockActionsRef.current ? { ...withBridge, actionBar: BlockActionBar } : withBridge;\n\n if (!renderHeaderRef.current) return withActions;\n\n // eslint-disable-next-line react/no-unstable-nested-components\n function Header() {\n const getPuck = useGetPuck();\n const hasPast = usePuckState(state => state.history.hasPast);\n const hasFuture = usePuckState(state => state.history.hasFuture);\n\n const api = headerApiFromHistory(\n {\n hasPast,\n hasFuture,\n back: () => getPuck().history.back(),\n forward: () => getPuck().history.forward()\n },\n {\n openSettings: () => setSettingsOpen(true),\n openPreview: () =>\n getPuck().dispatch({\n type: 'setUi',\n ui: prev => ({ previewMode: prev.previewMode === 'edit' ? 'interactive' : 'edit' })\n }),\n theme: themeRef.current\n }\n );\n return createElement(Fragment, null, renderHeaderRef.current?.(api));\n }\n\n return { ...withActions, header: Header };\n }, [blockByKey, disabledByKey, Boolean(renderHeader), Boolean(apiRef), Boolean(renderBlockActions)]);\n\n return (\n <DocumentThemeProvider theme={theme}>\n <CatalogProvider catalog={catalog} translator={translator}>\n <ResolvedProvider resolved={resolved} ensureResolved={ensureResolved} unresolvedDisplay={unresolvedDisplay}>\n <EditorShell>\n <Puck\n config={config}\n data={{ ...EMPTY, ...data }}\n onChange={onChange}\n onPublish={onPublish}\n iframe={iframe}\n overrides={overrides}\n plugins={plugins}\n metadata={metadata}\n dictionary={dictionary}\n />\n </EditorShell>\n {renderSettings ? (\n renderSettings({\n open: settingsOpen,\n onClose: () => setSettingsOpen(false),\n theme,\n onThemeChange: onThemeChange ?? (() => undefined),\n onLogoUpload\n })\n ) : (\n <DocumentSettingsModal\n open={settingsOpen}\n onClose={() => setSettingsOpen(false)}\n theme={theme}\n onThemeChange={onThemeChange ?? (() => undefined)}\n onLogoUpload={onLogoUpload}\n />\n )}\n </ResolvedProvider>\n </CatalogProvider>\n </DocumentThemeProvider>\n );\n}\n","import { useCallback, useEffect, useRef, useState } from 'react';\n\nexport type SaveStatus = 'saving' | 'saved' | 'error';\n\nexport type UseDocumentAutosaveOptions<T> = {\n doc: T;\n save: (doc: T) => Promise<void>;\n delay?: number;\n initialSavedAt?: Date | null;\n enabled?: boolean;\n};\n\nexport type UseDocumentAutosaveResult = {\n status: SaveStatus;\n lastSavedAt: Date | null;\n /** Salva o snapshot mais recente AGORA, aguardando qualquer save feito antes. */\n flushNow: () => Promise<void>;\n};\n\n/**\n * Autosave com debounce por conteúdo e fila de saves — `flushNow()` só resolve\n * com o snapshot mais recente persistido. Semântica completa: docs/autosave.md.\n */\nexport function useDocumentAutosave<T>({\n doc,\n save,\n delay = 3000,\n initialSavedAt = null,\n enabled = true\n}: UseDocumentAutosaveOptions<T>): UseDocumentAutosaveResult {\n const [status, setStatus] = useState<SaveStatus>('saved');\n const [lastSavedAt, setLastSavedAt] = useState<Date | null>(initialSavedAt);\n\n const lastSaved = useRef<string | null>(null);\n const timer = useRef<ReturnType<typeof setTimeout>>();\n const inFlight = useRef(false);\n const tail = useRef<Promise<void>>(Promise.resolve());\n const latest = useRef(doc);\n latest.current = doc;\n const enabledRef = useRef(enabled);\n enabledRef.current = enabled;\n\n const saveRef = useRef(save);\n saveRef.current = save;\n\n const flush = useCallback((): Promise<void> => {\n if (!enabledRef.current) return Promise.resolve();\n const run = async (): Promise<void> => {\n inFlight.current = true;\n try {\n const snapshot = JSON.stringify(latest.current);\n if (snapshot === lastSaved.current) return;\n\n setStatus('saving');\n await saveRef.current(latest.current);\n lastSaved.current = snapshot;\n setStatus('saved');\n setLastSavedAt(new Date());\n } catch {\n setStatus('error');\n clearTimeout(timer.current);\n timer.current = setTimeout(flush, delay);\n } finally {\n inFlight.current = false;\n }\n };\n\n // Ocioso: roda já (síncrono até o await). Em voo: encadeia no fim da fila.\n const chained = inFlight.current ? tail.current.then(run) : run();\n tail.current = chained;\n return chained;\n }, [delay]);\n\n useEffect(() => {\n if (!enabled || lastSaved.current === null) {\n lastSaved.current = JSON.stringify(doc);\n return undefined;\n }\n clearTimeout(timer.current);\n timer.current = setTimeout(flush, delay);\n return () => clearTimeout(timer.current);\n }, [doc, delay, flush, enabled]);\n\n return { status, lastSavedAt, flushNow: flush };\n}\n"]}