@wrrdev/fenix-ui 1.1.13 → 1.1.15

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 (161) hide show
  1. package/README.md +6 -5
  2. package/dist/components/autocomplete/autocomplete.d.ts +11 -5
  3. package/dist/components/autocomplete/autocomplete.d.ts.map +1 -1
  4. package/dist/components/autocomplete/autocomplete.js +18 -2
  5. package/dist/components/autocomplete/autocomplete.js.map +1 -1
  6. package/dist/components/button/button.d.ts +15 -0
  7. package/dist/components/button/button.d.ts.map +1 -1
  8. package/dist/components/button/button.js +20 -1
  9. package/dist/components/button/button.js.map +1 -1
  10. package/dist/components/checkbox/checkbox.d.ts +20 -4
  11. package/dist/components/checkbox/checkbox.d.ts.map +1 -1
  12. package/dist/components/checkbox/checkbox.js +39 -2
  13. package/dist/components/checkbox/checkbox.js.map +1 -1
  14. package/dist/components/datepicker/datepicker.d.ts +16 -2
  15. package/dist/components/datepicker/datepicker.d.ts.map +1 -1
  16. package/dist/components/datepicker/datepicker.js +46 -2
  17. package/dist/components/datepicker/datepicker.js.map +1 -1
  18. package/dist/components/editor/commands.d.ts +27 -0
  19. package/dist/components/editor/commands.d.ts.map +1 -0
  20. package/dist/components/editor/commands.js +235 -0
  21. package/dist/components/editor/commands.js.map +1 -0
  22. package/dist/components/editor/editor.d.ts +83 -0
  23. package/dist/components/editor/editor.d.ts.map +1 -0
  24. package/dist/components/editor/editor.js +1951 -0
  25. package/dist/components/editor/editor.js.map +1 -0
  26. package/dist/components/editor/index.d.ts +12 -0
  27. package/dist/components/editor/index.d.ts.map +1 -0
  28. package/dist/components/editor/index.js +7 -0
  29. package/dist/components/editor/index.js.map +1 -0
  30. package/dist/components/editor/normalize-html.d.ts +33 -0
  31. package/dist/components/editor/normalize-html.d.ts.map +1 -0
  32. package/dist/components/editor/normalize-html.js +316 -0
  33. package/dist/components/editor/normalize-html.js.map +1 -0
  34. package/dist/components/editor/sanitize-html.d.ts +37 -0
  35. package/dist/components/editor/sanitize-html.d.ts.map +1 -0
  36. package/dist/components/editor/sanitize-html.js +247 -0
  37. package/dist/components/editor/sanitize-html.js.map +1 -0
  38. package/dist/components/editor/schema.d.ts +36 -0
  39. package/dist/components/editor/schema.d.ts.map +1 -0
  40. package/dist/components/editor/schema.js +232 -0
  41. package/dist/components/editor/schema.js.map +1 -0
  42. package/dist/components/editor/selection.d.ts +22 -0
  43. package/dist/components/editor/selection.d.ts.map +1 -0
  44. package/dist/components/editor/selection.js +97 -0
  45. package/dist/components/editor/selection.js.map +1 -0
  46. package/dist/components/editor/styles.d.ts +10 -0
  47. package/dist/components/editor/styles.d.ts.map +1 -0
  48. package/dist/components/editor/styles.js +446 -0
  49. package/dist/components/editor/styles.js.map +1 -0
  50. package/dist/components/editor/table-utils.d.ts +33 -0
  51. package/dist/components/editor/table-utils.d.ts.map +1 -0
  52. package/dist/components/editor/table-utils.js +150 -0
  53. package/dist/components/editor/table-utils.js.map +1 -0
  54. package/dist/components/fileupload/fileupload.d.ts +10 -2
  55. package/dist/components/fileupload/fileupload.d.ts.map +1 -1
  56. package/dist/components/fileupload/fileupload.js +17 -2
  57. package/dist/components/fileupload/fileupload.js.map +1 -1
  58. package/dist/components/floatlabel/floatlabel.d.ts +9 -3
  59. package/dist/components/floatlabel/floatlabel.d.ts.map +1 -1
  60. package/dist/components/floatlabel/floatlabel.js +22 -7
  61. package/dist/components/floatlabel/floatlabel.js.map +1 -1
  62. package/dist/components/input/input.d.ts +18 -7
  63. package/dist/components/input/input.d.ts.map +1 -1
  64. package/dist/components/input/input.js +33 -3
  65. package/dist/components/input/input.js.map +1 -1
  66. package/dist/components/knob/knob.d.ts +7 -3
  67. package/dist/components/knob/knob.d.ts.map +1 -1
  68. package/dist/components/knob/knob.js +4 -2
  69. package/dist/components/knob/knob.js.map +1 -1
  70. package/dist/components/multiselect/multiselect.d.ts +13 -3
  71. package/dist/components/multiselect/multiselect.d.ts.map +1 -1
  72. package/dist/components/multiselect/multiselect.js +27 -2
  73. package/dist/components/multiselect/multiselect.js.map +1 -1
  74. package/dist/components/radio/radio.d.ts +27 -4
  75. package/dist/components/radio/radio.d.ts.map +1 -1
  76. package/dist/components/radio/radio.js +67 -8
  77. package/dist/components/radio/radio.js.map +1 -1
  78. package/dist/components/rating/rating.d.ts +8 -4
  79. package/dist/components/rating/rating.d.ts.map +1 -1
  80. package/dist/components/rating/rating.js +5 -2
  81. package/dist/components/rating/rating.js.map +1 -1
  82. package/dist/components/select/select.d.ts +9 -3
  83. package/dist/components/select/select.d.ts.map +1 -1
  84. package/dist/components/select/select.js +11 -2
  85. package/dist/components/select/select.js.map +1 -1
  86. package/dist/components/slider/slider.d.ts +12 -6
  87. package/dist/components/slider/slider.d.ts.map +1 -1
  88. package/dist/components/slider/slider.js +10 -2
  89. package/dist/components/slider/slider.js.map +1 -1
  90. package/dist/components/switch/switch.d.ts +20 -4
  91. package/dist/components/switch/switch.d.ts.map +1 -1
  92. package/dist/components/switch/switch.js +40 -2
  93. package/dist/components/switch/switch.js.map +1 -1
  94. package/dist/components/textarea/textarea.d.ts +12 -5
  95. package/dist/components/textarea/textarea.d.ts.map +1 -1
  96. package/dist/components/textarea/textarea.js +12 -2
  97. package/dist/components/textarea/textarea.js.map +1 -1
  98. package/dist/components/toast/toast.d.ts +27 -15
  99. package/dist/components/toast/toast.d.ts.map +1 -1
  100. package/dist/components/toast/toast.js +205 -32
  101. package/dist/components/toast/toast.js.map +1 -1
  102. package/dist/components/toggle-button-group/toggle-button-group.d.ts +13 -5
  103. package/dist/components/toggle-button-group/toggle-button-group.d.ts.map +1 -1
  104. package/dist/components/toggle-button-group/toggle-button-group.js +19 -2
  105. package/dist/components/toggle-button-group/toggle-button-group.js.map +1 -1
  106. package/dist/core/base.d.ts +7 -0
  107. package/dist/core/base.d.ts.map +1 -1
  108. package/dist/core/base.js +4 -1
  109. package/dist/core/base.js.map +1 -1
  110. package/dist/core/form-element.d.ts +81 -0
  111. package/dist/core/form-element.d.ts.map +1 -0
  112. package/dist/core/form-element.js +129 -0
  113. package/dist/core/form-element.js.map +1 -0
  114. package/dist/core/jsx.d.ts +25 -1
  115. package/dist/core/jsx.d.ts.map +1 -1
  116. package/dist/core/jsx.js.map +1 -1
  117. package/dist/core/presets.d.ts +8 -3
  118. package/dist/core/presets.d.ts.map +1 -1
  119. package/dist/core/presets.js +6 -17
  120. package/dist/core/presets.js.map +1 -1
  121. package/dist/core/types.d.ts +4 -0
  122. package/dist/core/types.d.ts.map +1 -1
  123. package/dist/core/vue.d.ts +3 -1
  124. package/dist/core/vue.d.ts.map +1 -1
  125. package/dist/core/vue.js.map +1 -1
  126. package/dist/docs/app.d.ts.map +1 -1
  127. package/dist/docs/componentes/autocomplete.doc.d.ts.map +1 -1
  128. package/dist/docs/componentes/checkbox.doc.d.ts.map +1 -1
  129. package/dist/docs/componentes/datepicker.doc.d.ts.map +1 -1
  130. package/dist/docs/componentes/editor.doc.d.ts +6 -0
  131. package/dist/docs/componentes/editor.doc.d.ts.map +1 -0
  132. package/dist/docs/componentes/fileupload.doc.d.ts.map +1 -1
  133. package/dist/docs/componentes/index.d.ts.map +1 -1
  134. package/dist/docs/componentes/input.doc.d.ts.map +1 -1
  135. package/dist/docs/componentes/knob.doc.d.ts.map +1 -1
  136. package/dist/docs/componentes/multiselect.doc.d.ts.map +1 -1
  137. package/dist/docs/componentes/rating.doc.d.ts.map +1 -1
  138. package/dist/docs/componentes/select.doc.d.ts.map +1 -1
  139. package/dist/docs/componentes/slider.doc.d.ts.map +1 -1
  140. package/dist/docs/componentes/switch.doc.d.ts.map +1 -1
  141. package/dist/docs/componentes/textarea.doc.d.ts.map +1 -1
  142. package/dist/docs/componentes/toast.doc.d.ts.map +1 -1
  143. package/dist/docs/componentes/toggle-button-group.doc.d.ts.map +1 -1
  144. package/dist/docs/frameworks.d.ts +75 -0
  145. package/dist/docs/frameworks.d.ts.map +1 -0
  146. package/dist/docs/ui/code.d.ts +4 -0
  147. package/dist/docs/ui/code.d.ts.map +1 -1
  148. package/dist/fenix-ui.umd.min.js +786 -254
  149. package/dist/fenix-ui2.esm.js.map +1 -1
  150. package/dist/fenix-ui4.esm.js +4396 -172
  151. package/dist/fenix-ui4.esm.js.map +1 -1
  152. package/dist/fenix-ui5.esm.js +1 -0
  153. package/dist/fenix-ui5.esm.js.map +1 -1
  154. package/dist/index.d.ts +2 -0
  155. package/dist/index.d.ts.map +1 -1
  156. package/dist/index.js +18 -1
  157. package/dist/index.js.map +1 -1
  158. package/dist/plugins/auto-import.d.ts.map +1 -1
  159. package/dist/plugins/auto-import.js +1 -0
  160. package/dist/plugins/auto-import.js.map +1 -1
  161. package/package.json +5 -1
@@ -13,6 +13,7 @@ const fenixComponentMap = {
13
13
  "fx-table": "@wrrdev/fenix-ui/table",
14
14
  "fx-floatlabel": "@wrrdev/fenix-ui/floatlabel",
15
15
  "fx-textarea": "@wrrdev/fenix-ui/textarea",
16
+ "fx-editor": "@wrrdev/fenix-ui/editor",
16
17
  "fx-dialog": "@wrrdev/fenix-ui/dialog",
17
18
  "fx-confirmpopup": "@wrrdev/fenix-ui/confirmpopup",
18
19
  "fx-fileupload": "@wrrdev/fenix-ui/fileupload",
@@ -1 +1 @@
1
- {"version":3,"file":"fenix-ui5.esm.js","sources":["../src/plugins/auto-import.ts","../src/plugins/index.ts"],"sourcesContent":["/**\n * Registro de tags → subpaths para o auto-import.\n * Mantido em um módulo próprio (sem depender de DOM) para ser usado\n * também no build do cliente via plugin.\n */\nexport const fenixComponentMap: Record<string, string> = {\n 'fx-button': '@wrrdev/fenix-ui/button',\n 'fx-badge': '@wrrdev/fenix-ui/badge',\n 'fx-spinner': '@wrrdev/fenix-ui/spinner',\n 'fx-select': '@wrrdev/fenix-ui/select',\n 'fx-multiselect': '@wrrdev/fenix-ui/multiselect',\n 'fx-input': '@wrrdev/fenix-ui/input',\n 'fx-switch': '@wrrdev/fenix-ui/switch',\n 'fx-calendar': '@wrrdev/fenix-ui/calendar',\n 'fx-datepicker': '@wrrdev/fenix-ui/datepicker',\n 'fx-checkbox': '@wrrdev/fenix-ui/checkbox',\n 'fx-radio': '@wrrdev/fenix-ui/radio',\n 'fx-table': '@wrrdev/fenix-ui/table',\n 'fx-floatlabel': '@wrrdev/fenix-ui/floatlabel',\n 'fx-textarea': '@wrrdev/fenix-ui/textarea',\n 'fx-dialog': '@wrrdev/fenix-ui/dialog',\n 'fx-confirmpopup': '@wrrdev/fenix-ui/confirmpopup',\n 'fx-fileupload': '@wrrdev/fenix-ui/fileupload',\n 'fx-slider': '@wrrdev/fenix-ui/slider',\n 'fx-chip': '@wrrdev/fenix-ui/chip',\n 'fx-avatar': '@wrrdev/fenix-ui/avatar',\n 'fx-icon': '@wrrdev/fenix-ui/icon',\n 'fx-card': '@wrrdev/fenix-ui/card',\n 'fx-breadcrumb': '@wrrdev/fenix-ui/breadcrumb',\n 'fx-popover': '@wrrdev/fenix-ui/popover',\n 'fx-stepper': '@wrrdev/fenix-ui/stepper',\n 'fx-rating': '@wrrdev/fenix-ui/rating',\n 'fx-menu': '@wrrdev/fenix-ui/menu',\n 'fx-toggle-button-group': '@wrrdev/fenix-ui/toggle-button-group',\n 'fx-empty-state': '@wrrdev/fenix-ui/empty-state',\n 'fx-password-strength': '@wrrdev/fenix-ui/password-strength',\n 'fx-timeline': '@wrrdev/fenix-ui/timeline',\n 'fx-carousel': '@wrrdev/fenix-ui/carousel',\n 'fx-tree': '@wrrdev/fenix-ui/tree',\n 'fx-drawer': '@wrrdev/fenix-ui/drawer',\n 'fx-toast': '@wrrdev/fenix-ui/toast',\n 'fx-tooltip': '@wrrdev/fenix-ui/tooltip',\n 'fx-tabs': '@wrrdev/fenix-ui/tabs',\n 'fx-tab-panel': '@wrrdev/fenix-ui/tabs',\n 'fx-progress': '@wrrdev/fenix-ui/progress',\n 'fx-skeleton': '@wrrdev/fenix-ui/skeleton',\n 'fx-alert': '@wrrdev/fenix-ui/alert',\n 'fx-dropdown': '@wrrdev/fenix-ui/dropdown',\n 'fx-dropdown-item': '@wrrdev/fenix-ui/dropdown',\n 'fx-pagination': '@wrrdev/fenix-ui/pagination',\n 'fx-autocomplete': '@wrrdev/fenix-ui/autocomplete',\n 'fx-knob': '@wrrdev/fenix-ui/knob',\n 'fx-accordion': '@wrrdev/fenix-ui/accordion',\n 'fx-accordion-panel': '@wrrdev/fenix-ui/accordion',\n 'fx-orderlist': '@wrrdev/fenix-ui/orderlist',\n 'fx-picklist': '@wrrdev/fenix-ui/picklist',\n 'fx-column': '@wrrdev/fenix-ui/table',\n // Subtags do <fx-table>: usar uma delas isolada já exige o módulo da tabela.\n 'fx-cell': '@wrrdev/fenix-ui/table',\n 'fx-toolbar': '@wrrdev/fenix-ui/table',\n};\n\nconst TAG_RE = /<(fx-[a-z][a-z-]*)(?=[\\s/>])/g;\n\n/**\n * Detecta o uso da biblioteca de ícones por CLASSE (`class=\"fx-icon fx-icon-home\"`).\n *\n * O prefixo `(?:^|[^</\\w-])` ignora a TAG `<fx-icon…>` / `</fx-icon>`: o\n * componente carrega o @font-face leve por conta própria e não precisa das\n * ~4.300 regras `.fx-icon-<nome>` que o subpath `/icons` injeta. Também ignora\n * nomes compostos (`meu-fx-icon`), `fx-icons`, `fx-iconHome` etc.\n */\nexport const FENIX_ICON_CLASS_RE = /(?:^|[^</\\w-])fx-icon(?:-[a-z0-9_]+)*\\b/;\n\nexport interface AutoImportOptions {\n /** Prefixo do pacote (padrão '@wrrdev/fenix-ui'). */\n packageName?: string;\n /**\n * Em arquivos `.vue`, injeta também `import '@wrrdev/fenix-ui/vue'` junto com\n * o primeiro componente detectado. É a augmentação que habilita o\n * autocomplete/validação dos atributos `fx-*` no Volar/vue-tsc — sem passo\n * manual no `main.ts`. Padrão: `true`.\n */\n vueTypes?: boolean;\n}\n\n/* ------------------------------------------------------------------ */\n/* Injeção em arquivos com markup (SFC Vue/Svelte e HTML) */\n/* ------------------------------------------------------------------ */\n\n/** Bloco `<script>` INLINE (sem `src=`) — é dentro dele que o import entra. */\nconst INLINE_SCRIPT_RE = /<script\\b(?![^>]*\\bsrc=)[^>]*>/i;\n\n/** Arquivo com markup (SFC Vue/Svelte ou HTML) — detectado pelo id ou conteúdo. */\nfunction isMarkup(id: string, code: string): boolean {\n return (\n /\\.(vue|svelte|html?)$/i.test(id) ||\n /^\\s*<(?:template|script|style|!doctype|html)\\b/i.test(code)\n );\n}\n\n/** Quebra de linha do arquivo — preserva o CRLF de projetos Windows. */\nfunction eolOf(code: string): string {\n return code.includes('\\r\\n') ? '\\r\\n' : '\\n';\n}\n\n/**\n * Injeta os imports como primeira linha do bloco `<script>`.\n *\n * Tolerante a CRLF e a conteúdo na mesma linha da tag (`<script setup>const a=1`)\n * — a versão antiga exigia `>\\n` e, no Windows, colava os imports FORA do\n * `<script>`, onde o compilador de SFC os descarta (componente nunca registrado).\n */\nfunction injectIntoScriptBlock(code: string, lines: string[]): string | null {\n const open = INLINE_SCRIPT_RE.exec(code);\n if (!open) return null;\n const at = open.index + open[0].length;\n const br = eolOf(code);\n return `${code.slice(0, at)}${br}${lines.join(br)}${code.slice(at)}`;\n}\n\n/**\n * Cria o bloco `<script>` quando o arquivo não tem nenhum.\n *\n * Um `import` fora de `<script>` é descartado pelo compilador de SFC — este é o\n * único fallback válido para um `.vue`/`.svelte` que só tem `<template>`.\n */\nfunction createScriptBlock(code: string, lines: string[], html: boolean): string {\n const br = eolOf(code);\n const body = `${br}${lines.join(br)}${br}`;\n if (!html) return `<script>${body}</script>${br}${code}`;\n // HTML: `<script type=\"module\">` inline (o Vite transforma) antes do </body>.\n const block = `<script type=\"module\">${body}</script>${br}`;\n const bodyAt = code.search(/<\\/body\\s*>/i);\n if (bodyAt >= 0) return `${code.slice(0, bodyAt)}${block}${code.slice(bodyAt)}`;\n return `${block}${code}`;\n}\n\n/**\n * Injeta `import '<subpath>'` para cada componente fx-* usado no código\n * que ainda não foi importado. Retorna o código transformado ou o original.\n *\n * `id` (caminho do módulo, opcional) habilita os tratamentos de arquivo com\n * markup: injeção dentro do `<script>` e augmentação de tipos do Vue (SFC).\n */\nexport function transformSource(\n code: string,\n options: AutoImportOptions = {},\n id = '',\n): string {\n const pkg = options.packageName ?? '@wrrdev/fenix-ui';\n // Subpaths do mapa são reescritos quando um pacote custom é informado.\n const resolve = (sub: string): string =>\n pkg === '@wrrdev/fenix-ui' ? sub : sub.replace('@wrrdev/fenix-ui', pkg);\n const hasImport = (target: string): boolean =>\n code.includes(`'${target}'`) || code.includes(`\"${target}\"`);\n\n // Componentes usados e ainda não importados explicitamente.\n const needed = new Set<string>();\n for (const m of code.matchAll(TAG_RE)) {\n const sub = fenixComponentMap[m[1]];\n if (!sub) continue;\n const target = resolve(sub);\n if (!hasImport(target)) needed.add(target);\n }\n // Biblioteca de ícones: classes fx-icon / fx-icon-<nome> injetam o subpath /icons.\n const iconsSub = resolve('@wrrdev/fenix-ui/icons');\n if (FENIX_ICON_CLASS_RE.test(code) && !hasImport(iconsSub)) {\n needed.add(iconsSub);\n }\n\n const markup = isMarkup(id, code);\n // Vue (SFC): a augmentação de tipos entra junto do primeiro import injetado.\n const vueSub = resolve('@wrrdev/fenix-ui/vue');\n if (options.vueTypes !== false && /\\.vue$/i.test(id) && needed.size > 0 && !hasImport(vueSub)) {\n needed.add(vueSub);\n }\n if (!needed.size) return code;\n\n const lines = [...needed].map((s) => `import '${s}';`);\n\n // SFC (Vue/Svelte) e HTML: o import precisa ficar DENTRO de um <script>.\n if (markup) {\n const injected = injectIntoScriptBlock(code, lines);\n if (injected) return injected;\n return createScriptBlock(code, lines, /\\.html?$/i.test(id));\n }\n\n // TS/JS: injeta após o último import existente (ou no topo).\n let lastEnd = -1;\n for (const m of code.matchAll(/^[ \\t]*import\\b[^;]*?['\"][^'\"]+['\"];?[^\\S\\n]*$/gm)) {\n lastEnd = Math.max(lastEnd, m.index + m[0].length);\n }\n if (lastEnd === -1) return `${lines.join('\\n')}\\n${code}`;\n return `${code.slice(0, lastEnd)}\\n${lines.join('\\n')}${code.slice(lastEnd)}`;\n}\n\n/** Verifica se o arquivo deve ser transformado. */\nexport function shouldTransform(id: string): boolean {\n return (\n !id.includes('node_modules') &&\n !id.endsWith('.d.ts') &&\n !id.endsWith('.css') &&\n /\\.(ts|js|tsx|jsx|vue|html|svelte)$/.test(id)\n );\n}\n\n","/**\n * Plugin de AUTO-IMPORT para Vite/Rollup.\n *\n * O usuário escreve apenas `<fx-button>`, `<fx-select>` etc. no template/código;\n * este plugin detecta as tags em tempo de build e injeta os imports dos\n * subpaths correspondentes — mantendo o tree-shaking (só entra no bundle\n * o que é usado).\n *\n * Também cuida dos arquivos com markup: em SFC (`.vue`/`.svelte`) e HTML o import é inserido\n * DENTRO do bloco `<script>` (criado quando o SFC só tem `<template>`), e nos arquivos `.vue`\n * injeta junto `import '@wrrdev/fenix-ui/vue'` (augmentação de tipos do Volar/vue-tsc).\n * Desligue os tipos do Vue com `FenixAutoImport({ vueTypes: false })`.\n *\n * Uso no projeto do cliente (vite.config.ts):\n * import { FenixAutoImport } from '@wrrdev/fenix-ui/auto-import';\n * export default { plugins: [FenixAutoImport()] };\n */\nimport {\n transformSource,\n shouldTransform,\n type AutoImportOptions,\n} from './auto-import';\n\nexport interface FenixPlugin {\n name: string;\n enforce: 'pre';\n transform: (\n code: string,\n id: string,\n ) => { code: string; map: null } | undefined;\n}\n\nexport function FenixAutoImport(options: AutoImportOptions = {}): FenixPlugin {\n return {\n name: 'fenix-ui-auto-import',\n enforce: 'pre',\n transform(code, id) {\n if (!shouldTransform(id)) return undefined;\n // `id` permite os tratamentos de arquivo com markup (SFC Vue/Svelte/HTML).\n const result = transformSource(code, options, id);\n if (result === code) return undefined;\n return { code: result, map: null };\n },\n };\n}\n\nexport { transformSource, shouldTransform, fenixComponentMap } from './auto-import';\nexport type { AutoImportOptions } from './auto-import';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fenix-ui5.esm.js","sources":["../src/plugins/auto-import.ts","../src/plugins/index.ts"],"sourcesContent":["/**\n * Registro de tags → subpaths para o auto-import.\n * Mantido em um módulo próprio (sem depender de DOM) para ser usado\n * também no build do cliente via plugin.\n */\nexport const fenixComponentMap: Record<string, string> = {\n 'fx-button': '@wrrdev/fenix-ui/button',\n 'fx-badge': '@wrrdev/fenix-ui/badge',\n 'fx-spinner': '@wrrdev/fenix-ui/spinner',\n 'fx-select': '@wrrdev/fenix-ui/select',\n 'fx-multiselect': '@wrrdev/fenix-ui/multiselect',\n 'fx-input': '@wrrdev/fenix-ui/input',\n 'fx-switch': '@wrrdev/fenix-ui/switch',\n 'fx-calendar': '@wrrdev/fenix-ui/calendar',\n 'fx-datepicker': '@wrrdev/fenix-ui/datepicker',\n 'fx-checkbox': '@wrrdev/fenix-ui/checkbox',\n 'fx-radio': '@wrrdev/fenix-ui/radio',\n 'fx-table': '@wrrdev/fenix-ui/table',\n 'fx-floatlabel': '@wrrdev/fenix-ui/floatlabel',\n 'fx-textarea': '@wrrdev/fenix-ui/textarea',\n 'fx-editor': '@wrrdev/fenix-ui/editor',\n 'fx-dialog': '@wrrdev/fenix-ui/dialog',\n 'fx-confirmpopup': '@wrrdev/fenix-ui/confirmpopup',\n 'fx-fileupload': '@wrrdev/fenix-ui/fileupload',\n 'fx-slider': '@wrrdev/fenix-ui/slider',\n 'fx-chip': '@wrrdev/fenix-ui/chip',\n 'fx-avatar': '@wrrdev/fenix-ui/avatar',\n 'fx-icon': '@wrrdev/fenix-ui/icon',\n 'fx-card': '@wrrdev/fenix-ui/card',\n 'fx-breadcrumb': '@wrrdev/fenix-ui/breadcrumb',\n 'fx-popover': '@wrrdev/fenix-ui/popover',\n 'fx-stepper': '@wrrdev/fenix-ui/stepper',\n 'fx-rating': '@wrrdev/fenix-ui/rating',\n 'fx-menu': '@wrrdev/fenix-ui/menu',\n 'fx-toggle-button-group': '@wrrdev/fenix-ui/toggle-button-group',\n 'fx-empty-state': '@wrrdev/fenix-ui/empty-state',\n 'fx-password-strength': '@wrrdev/fenix-ui/password-strength',\n 'fx-timeline': '@wrrdev/fenix-ui/timeline',\n 'fx-carousel': '@wrrdev/fenix-ui/carousel',\n 'fx-tree': '@wrrdev/fenix-ui/tree',\n 'fx-drawer': '@wrrdev/fenix-ui/drawer',\n 'fx-toast': '@wrrdev/fenix-ui/toast',\n 'fx-tooltip': '@wrrdev/fenix-ui/tooltip',\n 'fx-tabs': '@wrrdev/fenix-ui/tabs',\n 'fx-tab-panel': '@wrrdev/fenix-ui/tabs',\n 'fx-progress': '@wrrdev/fenix-ui/progress',\n 'fx-skeleton': '@wrrdev/fenix-ui/skeleton',\n 'fx-alert': '@wrrdev/fenix-ui/alert',\n 'fx-dropdown': '@wrrdev/fenix-ui/dropdown',\n 'fx-dropdown-item': '@wrrdev/fenix-ui/dropdown',\n 'fx-pagination': '@wrrdev/fenix-ui/pagination',\n 'fx-autocomplete': '@wrrdev/fenix-ui/autocomplete',\n 'fx-knob': '@wrrdev/fenix-ui/knob',\n 'fx-accordion': '@wrrdev/fenix-ui/accordion',\n 'fx-accordion-panel': '@wrrdev/fenix-ui/accordion',\n 'fx-orderlist': '@wrrdev/fenix-ui/orderlist',\n 'fx-picklist': '@wrrdev/fenix-ui/picklist',\n 'fx-column': '@wrrdev/fenix-ui/table',\n // Subtags do <fx-table>: usar uma delas isolada já exige o módulo da tabela.\n 'fx-cell': '@wrrdev/fenix-ui/table',\n 'fx-toolbar': '@wrrdev/fenix-ui/table',\n};\n\nconst TAG_RE = /<(fx-[a-z][a-z-]*)(?=[\\s/>])/g;\n\n/**\n * Detecta o uso da biblioteca de ícones por CLASSE (`class=\"fx-icon fx-icon-home\"`).\n *\n * O prefixo `(?:^|[^</\\w-])` ignora a TAG `<fx-icon…>` / `</fx-icon>`: o\n * componente carrega o @font-face leve por conta própria e não precisa das\n * ~4.300 regras `.fx-icon-<nome>` que o subpath `/icons` injeta. Também ignora\n * nomes compostos (`meu-fx-icon`), `fx-icons`, `fx-iconHome` etc.\n */\nexport const FENIX_ICON_CLASS_RE = /(?:^|[^</\\w-])fx-icon(?:-[a-z0-9_]+)*\\b/;\n\nexport interface AutoImportOptions {\n /** Prefixo do pacote (padrão '@wrrdev/fenix-ui'). */\n packageName?: string;\n /**\n * Em arquivos `.vue`, injeta também `import '@wrrdev/fenix-ui/vue'` junto com\n * o primeiro componente detectado. É a augmentação que habilita o\n * autocomplete/validação dos atributos `fx-*` no Volar/vue-tsc — sem passo\n * manual no `main.ts`. Padrão: `true`.\n */\n vueTypes?: boolean;\n}\n\n/* ------------------------------------------------------------------ */\n/* Injeção em arquivos com markup (SFC Vue/Svelte e HTML) */\n/* ------------------------------------------------------------------ */\n\n/** Bloco `<script>` INLINE (sem `src=`) — é dentro dele que o import entra. */\nconst INLINE_SCRIPT_RE = /<script\\b(?![^>]*\\bsrc=)[^>]*>/i;\n\n/** Arquivo com markup (SFC Vue/Svelte ou HTML) — detectado pelo id ou conteúdo. */\nfunction isMarkup(id: string, code: string): boolean {\n return (\n /\\.(vue|svelte|html?)$/i.test(id) ||\n /^\\s*<(?:template|script|style|!doctype|html)\\b/i.test(code)\n );\n}\n\n/** Quebra de linha do arquivo — preserva o CRLF de projetos Windows. */\nfunction eolOf(code: string): string {\n return code.includes('\\r\\n') ? '\\r\\n' : '\\n';\n}\n\n/**\n * Injeta os imports como primeira linha do bloco `<script>`.\n *\n * Tolerante a CRLF e a conteúdo na mesma linha da tag (`<script setup>const a=1`)\n * — a versão antiga exigia `>\\n` e, no Windows, colava os imports FORA do\n * `<script>`, onde o compilador de SFC os descarta (componente nunca registrado).\n */\nfunction injectIntoScriptBlock(code: string, lines: string[]): string | null {\n const open = INLINE_SCRIPT_RE.exec(code);\n if (!open) return null;\n const at = open.index + open[0].length;\n const br = eolOf(code);\n return `${code.slice(0, at)}${br}${lines.join(br)}${code.slice(at)}`;\n}\n\n/**\n * Cria o bloco `<script>` quando o arquivo não tem nenhum.\n *\n * Um `import` fora de `<script>` é descartado pelo compilador de SFC — este é o\n * único fallback válido para um `.vue`/`.svelte` que só tem `<template>`.\n */\nfunction createScriptBlock(code: string, lines: string[], html: boolean): string {\n const br = eolOf(code);\n const body = `${br}${lines.join(br)}${br}`;\n if (!html) return `<script>${body}</script>${br}${code}`;\n // HTML: `<script type=\"module\">` inline (o Vite transforma) antes do </body>.\n const block = `<script type=\"module\">${body}</script>${br}`;\n const bodyAt = code.search(/<\\/body\\s*>/i);\n if (bodyAt >= 0) return `${code.slice(0, bodyAt)}${block}${code.slice(bodyAt)}`;\n return `${block}${code}`;\n}\n\n/**\n * Injeta `import '<subpath>'` para cada componente fx-* usado no código\n * que ainda não foi importado. Retorna o código transformado ou o original.\n *\n * `id` (caminho do módulo, opcional) habilita os tratamentos de arquivo com\n * markup: injeção dentro do `<script>` e augmentação de tipos do Vue (SFC).\n */\nexport function transformSource(\n code: string,\n options: AutoImportOptions = {},\n id = '',\n): string {\n const pkg = options.packageName ?? '@wrrdev/fenix-ui';\n // Subpaths do mapa são reescritos quando um pacote custom é informado.\n const resolve = (sub: string): string =>\n pkg === '@wrrdev/fenix-ui' ? sub : sub.replace('@wrrdev/fenix-ui', pkg);\n const hasImport = (target: string): boolean =>\n code.includes(`'${target}'`) || code.includes(`\"${target}\"`);\n\n // Componentes usados e ainda não importados explicitamente.\n const needed = new Set<string>();\n for (const m of code.matchAll(TAG_RE)) {\n const sub = fenixComponentMap[m[1]];\n if (!sub) continue;\n const target = resolve(sub);\n if (!hasImport(target)) needed.add(target);\n }\n // Biblioteca de ícones: classes fx-icon / fx-icon-<nome> injetam o subpath /icons.\n const iconsSub = resolve('@wrrdev/fenix-ui/icons');\n if (FENIX_ICON_CLASS_RE.test(code) && !hasImport(iconsSub)) {\n needed.add(iconsSub);\n }\n\n const markup = isMarkup(id, code);\n // Vue (SFC): a augmentação de tipos entra junto do primeiro import injetado.\n const vueSub = resolve('@wrrdev/fenix-ui/vue');\n if (options.vueTypes !== false && /\\.vue$/i.test(id) && needed.size > 0 && !hasImport(vueSub)) {\n needed.add(vueSub);\n }\n if (!needed.size) return code;\n\n const lines = [...needed].map((s) => `import '${s}';`);\n\n // SFC (Vue/Svelte) e HTML: o import precisa ficar DENTRO de um <script>.\n if (markup) {\n const injected = injectIntoScriptBlock(code, lines);\n if (injected) return injected;\n return createScriptBlock(code, lines, /\\.html?$/i.test(id));\n }\n\n // TS/JS: injeta após o último import existente (ou no topo).\n let lastEnd = -1;\n for (const m of code.matchAll(/^[ \\t]*import\\b[^;]*?['\"][^'\"]+['\"];?[^\\S\\n]*$/gm)) {\n lastEnd = Math.max(lastEnd, m.index + m[0].length);\n }\n if (lastEnd === -1) return `${lines.join('\\n')}\\n${code}`;\n return `${code.slice(0, lastEnd)}\\n${lines.join('\\n')}${code.slice(lastEnd)}`;\n}\n\n/** Verifica se o arquivo deve ser transformado. */\nexport function shouldTransform(id: string): boolean {\n return (\n !id.includes('node_modules') &&\n !id.endsWith('.d.ts') &&\n !id.endsWith('.css') &&\n /\\.(ts|js|tsx|jsx|vue|html|svelte)$/.test(id)\n );\n}\n\n","/**\n * Plugin de AUTO-IMPORT para Vite/Rollup.\n *\n * O usuário escreve apenas `<fx-button>`, `<fx-select>` etc. no template/código;\n * este plugin detecta as tags em tempo de build e injeta os imports dos\n * subpaths correspondentes — mantendo o tree-shaking (só entra no bundle\n * o que é usado).\n *\n * Também cuida dos arquivos com markup: em SFC (`.vue`/`.svelte`) e HTML o import é inserido\n * DENTRO do bloco `<script>` (criado quando o SFC só tem `<template>`), e nos arquivos `.vue`\n * injeta junto `import '@wrrdev/fenix-ui/vue'` (augmentação de tipos do Volar/vue-tsc).\n * Desligue os tipos do Vue com `FenixAutoImport({ vueTypes: false })`.\n *\n * Uso no projeto do cliente (vite.config.ts):\n * import { FenixAutoImport } from '@wrrdev/fenix-ui/auto-import';\n * export default { plugins: [FenixAutoImport()] };\n */\nimport {\n transformSource,\n shouldTransform,\n type AutoImportOptions,\n} from './auto-import';\n\nexport interface FenixPlugin {\n name: string;\n enforce: 'pre';\n transform: (\n code: string,\n id: string,\n ) => { code: string; map: null } | undefined;\n}\n\nexport function FenixAutoImport(options: AutoImportOptions = {}): FenixPlugin {\n return {\n name: 'fenix-ui-auto-import',\n enforce: 'pre',\n transform(code, id) {\n if (!shouldTransform(id)) return undefined;\n // `id` permite os tratamentos de arquivo com markup (SFC Vue/Svelte/HTML).\n const result = transformSource(code, options, id);\n if (result === code) return undefined;\n return { code: result, map: null };\n },\n };\n}\n\nexport { transformSource, shouldTransform, fenixComponentMap } from './auto-import';\nexport type { AutoImportOptions } from './auto-import';\n"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -10,6 +10,7 @@ export * from './core/theme';
10
10
  export * from './core/presets';
11
11
  export * from './core/css';
12
12
  export * from './core/base';
13
+ export * from './core/form-element';
13
14
  export * from './core/define';
14
15
  export * from './core/sanitize';
15
16
  export * from './core/types';
@@ -29,6 +30,7 @@ export * from './components/radio';
29
30
  export * from './components/table';
30
31
  export * from './components/floatlabel';
31
32
  export * from './components/textarea';
33
+ export * from './components/editor';
32
34
  export * from './components/dialog';
33
35
  export * from './components/confirmpopup';
34
36
  export * from './components/fileupload';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAGhC,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAG3B,mBAAmB,eAAe,CAAC;AAGnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,0BAA0B,CAAC;AACzC,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,yBAAyB,CAAC;AACxC,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kCAAkC,CAAC;AACjD,cAAc,0BAA0B,CAAC;AACzC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,yBAAyB,CAAC;AACxC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,mBAAmB,CAAC;AAClC,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,qBAAqB,CAAC;AACpC,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAGhC,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAG3B,mBAAmB,eAAe,CAAC;AAGnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,0BAA0B,CAAC;AACzC,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,yBAAyB,CAAC;AACxC,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kCAAkC,CAAC;AACjD,cAAc,0BAA0B,CAAC;AACzC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,yBAAyB,CAAC;AACxC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,mBAAmB,CAAC;AAClC,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC"}
package/dist/index.js CHANGED
@@ -1,8 +1,9 @@
1
1
  import { darkTokens, defaultTokens, lightTokens } from "./core/tokens.js";
2
2
  import { FenixUI, VERSION, applyTokens, configure, deepMerge, resetTheme, setTokens, theme, tokenCssVars } from "./core/theme.js";
3
- import { applyPreset, defineCustomPreset, listPresets, themePresets } from "./core/presets.js";
3
+ import { DEFAULT_PRESET, applyPreset, defineCustomPreset, listPresets, themePresets } from "./core/presets.js";
4
4
  import { css, kebabToCamel } from "./core/css.js";
5
5
  import { FxElement } from "./core/base.js";
6
+ import { FxFormElement } from "./core/form-element.js";
6
7
  import { defineElement } from "./core/define.js";
7
8
  import { esc, sanitizeData, stripTags } from "./core/sanitize.js";
8
9
  import { FX_JSX_TYPES } from "./core/jsx.js";
@@ -20,6 +21,7 @@ import "./components/radio/index.js";
20
21
  import "./components/table/index.js";
21
22
  import "./components/floatlabel/index.js";
22
23
  import "./components/textarea/index.js";
24
+ import "./components/editor/index.js";
23
25
  import "./components/dialog/index.js";
24
26
  import "./components/confirmpopup/index.js";
25
27
  import "./components/fileupload/index.js";
@@ -53,6 +55,7 @@ import "./components/knob/index.js";
53
55
  import "./components/orderlist/index.js";
54
56
  import "./components/picklist/index.js";
55
57
  import "./components/accordion/index.js";
58
+ import { FX_EDITOR_CONTENT_CSS } from "./components/editor/styles.js";
56
59
  import { FenixToast, FxToast } from "./components/toast/toast.js";
57
60
  import { FxAccordion, FxAccordionPanel } from "./components/accordion/accordion.js";
58
61
  import { FxAlert } from "./components/alert/alert.js";
@@ -71,6 +74,7 @@ import { FxDatepicker } from "./components/datepicker/datepicker.js";
71
74
  import { FxDialog } from "./components/dialog/dialog.js";
72
75
  import { FxDrawer } from "./components/drawer/drawer.js";
73
76
  import { FxDropdown, FxDropdownItem } from "./components/dropdown/dropdown.js";
77
+ import { FxEditor } from "./components/editor/editor.js";
74
78
  import { FxEmptyState } from "./components/empty-state/empty-state.js";
75
79
  import { FxFileUpload } from "./components/fileupload/fileupload.js";
76
80
  import { FxFloatlabel } from "./components/floatlabel/floatlabel.js";
@@ -101,7 +105,11 @@ import { FxToggleButtonGroup } from "./components/toggle-button-group/toggle-but
101
105
  import { FxTooltip } from "./components/tooltip/tooltip.js";
102
106
  import { FxTree } from "./components/tree/tree.js";
103
107
  import { defineFxTooltipDirective, destroyFxTooltipDirective } from "./components/tooltip/directive.js";
108
+ import { normalizeForEditor, normalizeForStorage, normalizeHtml } from "./components/editor/normalize-html.js";
109
+ import { sanitizeEmbedUrl, sanitizeHtml, sanitizeLinkUrl, sanitizeMediaUrl } from "./components/editor/sanitize-html.js";
104
110
  export {
111
+ DEFAULT_PRESET,
112
+ FX_EDITOR_CONTENT_CSS,
105
113
  FX_JSX_TYPES,
106
114
  FenixToast,
107
115
  FenixUI,
@@ -124,10 +132,12 @@ export {
124
132
  FxDrawer,
125
133
  FxDropdown,
126
134
  FxDropdownItem,
135
+ FxEditor,
127
136
  FxElement,
128
137
  FxEmptyState,
129
138
  FxFileUpload,
130
139
  FxFloatlabel,
140
+ FxFormElement,
131
141
  FxIcon,
132
142
  FxInput,
133
143
  FxKnob,
@@ -172,8 +182,15 @@ export {
172
182
  kebabToCamel,
173
183
  lightTokens,
174
184
  listPresets,
185
+ normalizeForEditor,
186
+ normalizeForStorage,
187
+ normalizeHtml,
175
188
  resetTheme,
176
189
  sanitizeData,
190
+ sanitizeEmbedUrl,
191
+ sanitizeHtml,
192
+ sanitizeLinkUrl,
193
+ sanitizeMediaUrl,
177
194
  setTokens,
178
195
  stripTags,
179
196
  theme,
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"auto-import.d.ts","sourceRoot":"","sources":["../../src/plugins/auto-import.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAuDpD,CAAC;AAIF;;;;;;;GAOG;AACH,eAAO,MAAM,mBAAmB,QAA4C,CAAC;AAE7E,MAAM,WAAW,iBAAiB;IAChC,qDAAqD;IACrD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAsDD;;;;;;GAMG;AACH,wBAAgB,eAAe,CAC7B,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,iBAAsB,EAC/B,EAAE,SAAK,GACN,MAAM,CA8CR;AAED,mDAAmD;AACnD,wBAAgB,eAAe,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAOnD"}
1
+ {"version":3,"file":"auto-import.d.ts","sourceRoot":"","sources":["../../src/plugins/auto-import.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAwDpD,CAAC;AAIF;;;;;;;GAOG;AACH,eAAO,MAAM,mBAAmB,QAA4C,CAAC;AAE7E,MAAM,WAAW,iBAAiB;IAChC,qDAAqD;IACrD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAsDD;;;;;;GAMG;AACH,wBAAgB,eAAe,CAC7B,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,iBAAsB,EAC/B,EAAE,SAAK,GACN,MAAM,CA8CR;AAED,mDAAmD;AACnD,wBAAgB,eAAe,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAOnD"}
@@ -13,6 +13,7 @@ const fenixComponentMap = {
13
13
  "fx-table": "@wrrdev/fenix-ui/table",
14
14
  "fx-floatlabel": "@wrrdev/fenix-ui/floatlabel",
15
15
  "fx-textarea": "@wrrdev/fenix-ui/textarea",
16
+ "fx-editor": "@wrrdev/fenix-ui/editor",
16
17
  "fx-dialog": "@wrrdev/fenix-ui/dialog",
17
18
  "fx-confirmpopup": "@wrrdev/fenix-ui/confirmpopup",
18
19
  "fx-fileupload": "@wrrdev/fenix-ui/fileupload",
@@ -1 +1 @@
1
- {"version":3,"file":"auto-import.js","sources":["../../src/plugins/auto-import.ts"],"sourcesContent":["/**\n * Registro de tags → subpaths para o auto-import.\n * Mantido em um módulo próprio (sem depender de DOM) para ser usado\n * também no build do cliente via plugin.\n */\nexport const fenixComponentMap: Record<string, string> = {\n 'fx-button': '@wrrdev/fenix-ui/button',\n 'fx-badge': '@wrrdev/fenix-ui/badge',\n 'fx-spinner': '@wrrdev/fenix-ui/spinner',\n 'fx-select': '@wrrdev/fenix-ui/select',\n 'fx-multiselect': '@wrrdev/fenix-ui/multiselect',\n 'fx-input': '@wrrdev/fenix-ui/input',\n 'fx-switch': '@wrrdev/fenix-ui/switch',\n 'fx-calendar': '@wrrdev/fenix-ui/calendar',\n 'fx-datepicker': '@wrrdev/fenix-ui/datepicker',\n 'fx-checkbox': '@wrrdev/fenix-ui/checkbox',\n 'fx-radio': '@wrrdev/fenix-ui/radio',\n 'fx-table': '@wrrdev/fenix-ui/table',\n 'fx-floatlabel': '@wrrdev/fenix-ui/floatlabel',\n 'fx-textarea': '@wrrdev/fenix-ui/textarea',\n 'fx-dialog': '@wrrdev/fenix-ui/dialog',\n 'fx-confirmpopup': '@wrrdev/fenix-ui/confirmpopup',\n 'fx-fileupload': '@wrrdev/fenix-ui/fileupload',\n 'fx-slider': '@wrrdev/fenix-ui/slider',\n 'fx-chip': '@wrrdev/fenix-ui/chip',\n 'fx-avatar': '@wrrdev/fenix-ui/avatar',\n 'fx-icon': '@wrrdev/fenix-ui/icon',\n 'fx-card': '@wrrdev/fenix-ui/card',\n 'fx-breadcrumb': '@wrrdev/fenix-ui/breadcrumb',\n 'fx-popover': '@wrrdev/fenix-ui/popover',\n 'fx-stepper': '@wrrdev/fenix-ui/stepper',\n 'fx-rating': '@wrrdev/fenix-ui/rating',\n 'fx-menu': '@wrrdev/fenix-ui/menu',\n 'fx-toggle-button-group': '@wrrdev/fenix-ui/toggle-button-group',\n 'fx-empty-state': '@wrrdev/fenix-ui/empty-state',\n 'fx-password-strength': '@wrrdev/fenix-ui/password-strength',\n 'fx-timeline': '@wrrdev/fenix-ui/timeline',\n 'fx-carousel': '@wrrdev/fenix-ui/carousel',\n 'fx-tree': '@wrrdev/fenix-ui/tree',\n 'fx-drawer': '@wrrdev/fenix-ui/drawer',\n 'fx-toast': '@wrrdev/fenix-ui/toast',\n 'fx-tooltip': '@wrrdev/fenix-ui/tooltip',\n 'fx-tabs': '@wrrdev/fenix-ui/tabs',\n 'fx-tab-panel': '@wrrdev/fenix-ui/tabs',\n 'fx-progress': '@wrrdev/fenix-ui/progress',\n 'fx-skeleton': '@wrrdev/fenix-ui/skeleton',\n 'fx-alert': '@wrrdev/fenix-ui/alert',\n 'fx-dropdown': '@wrrdev/fenix-ui/dropdown',\n 'fx-dropdown-item': '@wrrdev/fenix-ui/dropdown',\n 'fx-pagination': '@wrrdev/fenix-ui/pagination',\n 'fx-autocomplete': '@wrrdev/fenix-ui/autocomplete',\n 'fx-knob': '@wrrdev/fenix-ui/knob',\n 'fx-accordion': '@wrrdev/fenix-ui/accordion',\n 'fx-accordion-panel': '@wrrdev/fenix-ui/accordion',\n 'fx-orderlist': '@wrrdev/fenix-ui/orderlist',\n 'fx-picklist': '@wrrdev/fenix-ui/picklist',\n 'fx-column': '@wrrdev/fenix-ui/table',\n // Subtags do <fx-table>: usar uma delas isolada já exige o módulo da tabela.\n 'fx-cell': '@wrrdev/fenix-ui/table',\n 'fx-toolbar': '@wrrdev/fenix-ui/table',\n};\n\nconst TAG_RE = /<(fx-[a-z][a-z-]*)(?=[\\s/>])/g;\n\n/**\n * Detecta o uso da biblioteca de ícones por CLASSE (`class=\"fx-icon fx-icon-home\"`).\n *\n * O prefixo `(?:^|[^</\\w-])` ignora a TAG `<fx-icon…>` / `</fx-icon>`: o\n * componente carrega o @font-face leve por conta própria e não precisa das\n * ~4.300 regras `.fx-icon-<nome>` que o subpath `/icons` injeta. Também ignora\n * nomes compostos (`meu-fx-icon`), `fx-icons`, `fx-iconHome` etc.\n */\nexport const FENIX_ICON_CLASS_RE = /(?:^|[^</\\w-])fx-icon(?:-[a-z0-9_]+)*\\b/;\n\nexport interface AutoImportOptions {\n /** Prefixo do pacote (padrão '@wrrdev/fenix-ui'). */\n packageName?: string;\n /**\n * Em arquivos `.vue`, injeta também `import '@wrrdev/fenix-ui/vue'` junto com\n * o primeiro componente detectado. É a augmentação que habilita o\n * autocomplete/validação dos atributos `fx-*` no Volar/vue-tsc — sem passo\n * manual no `main.ts`. Padrão: `true`.\n */\n vueTypes?: boolean;\n}\n\n/* ------------------------------------------------------------------ */\n/* Injeção em arquivos com markup (SFC Vue/Svelte e HTML) */\n/* ------------------------------------------------------------------ */\n\n/** Bloco `<script>` INLINE (sem `src=`) — é dentro dele que o import entra. */\nconst INLINE_SCRIPT_RE = /<script\\b(?![^>]*\\bsrc=)[^>]*>/i;\n\n/** Arquivo com markup (SFC Vue/Svelte ou HTML) — detectado pelo id ou conteúdo. */\nfunction isMarkup(id: string, code: string): boolean {\n return (\n /\\.(vue|svelte|html?)$/i.test(id) ||\n /^\\s*<(?:template|script|style|!doctype|html)\\b/i.test(code)\n );\n}\n\n/** Quebra de linha do arquivo — preserva o CRLF de projetos Windows. */\nfunction eolOf(code: string): string {\n return code.includes('\\r\\n') ? '\\r\\n' : '\\n';\n}\n\n/**\n * Injeta os imports como primeira linha do bloco `<script>`.\n *\n * Tolerante a CRLF e a conteúdo na mesma linha da tag (`<script setup>const a=1`)\n * — a versão antiga exigia `>\\n` e, no Windows, colava os imports FORA do\n * `<script>`, onde o compilador de SFC os descarta (componente nunca registrado).\n */\nfunction injectIntoScriptBlock(code: string, lines: string[]): string | null {\n const open = INLINE_SCRIPT_RE.exec(code);\n if (!open) return null;\n const at = open.index + open[0].length;\n const br = eolOf(code);\n return `${code.slice(0, at)}${br}${lines.join(br)}${code.slice(at)}`;\n}\n\n/**\n * Cria o bloco `<script>` quando o arquivo não tem nenhum.\n *\n * Um `import` fora de `<script>` é descartado pelo compilador de SFC — este é o\n * único fallback válido para um `.vue`/`.svelte` que só tem `<template>`.\n */\nfunction createScriptBlock(code: string, lines: string[], html: boolean): string {\n const br = eolOf(code);\n const body = `${br}${lines.join(br)}${br}`;\n if (!html) return `<script>${body}</script>${br}${code}`;\n // HTML: `<script type=\"module\">` inline (o Vite transforma) antes do </body>.\n const block = `<script type=\"module\">${body}</script>${br}`;\n const bodyAt = code.search(/<\\/body\\s*>/i);\n if (bodyAt >= 0) return `${code.slice(0, bodyAt)}${block}${code.slice(bodyAt)}`;\n return `${block}${code}`;\n}\n\n/**\n * Injeta `import '<subpath>'` para cada componente fx-* usado no código\n * que ainda não foi importado. Retorna o código transformado ou o original.\n *\n * `id` (caminho do módulo, opcional) habilita os tratamentos de arquivo com\n * markup: injeção dentro do `<script>` e augmentação de tipos do Vue (SFC).\n */\nexport function transformSource(\n code: string,\n options: AutoImportOptions = {},\n id = '',\n): string {\n const pkg = options.packageName ?? '@wrrdev/fenix-ui';\n // Subpaths do mapa são reescritos quando um pacote custom é informado.\n const resolve = (sub: string): string =>\n pkg === '@wrrdev/fenix-ui' ? sub : sub.replace('@wrrdev/fenix-ui', pkg);\n const hasImport = (target: string): boolean =>\n code.includes(`'${target}'`) || code.includes(`\"${target}\"`);\n\n // Componentes usados e ainda não importados explicitamente.\n const needed = new Set<string>();\n for (const m of code.matchAll(TAG_RE)) {\n const sub = fenixComponentMap[m[1]];\n if (!sub) continue;\n const target = resolve(sub);\n if (!hasImport(target)) needed.add(target);\n }\n // Biblioteca de ícones: classes fx-icon / fx-icon-<nome> injetam o subpath /icons.\n const iconsSub = resolve('@wrrdev/fenix-ui/icons');\n if (FENIX_ICON_CLASS_RE.test(code) && !hasImport(iconsSub)) {\n needed.add(iconsSub);\n }\n\n const markup = isMarkup(id, code);\n // Vue (SFC): a augmentação de tipos entra junto do primeiro import injetado.\n const vueSub = resolve('@wrrdev/fenix-ui/vue');\n if (options.vueTypes !== false && /\\.vue$/i.test(id) && needed.size > 0 && !hasImport(vueSub)) {\n needed.add(vueSub);\n }\n if (!needed.size) return code;\n\n const lines = [...needed].map((s) => `import '${s}';`);\n\n // SFC (Vue/Svelte) e HTML: o import precisa ficar DENTRO de um <script>.\n if (markup) {\n const injected = injectIntoScriptBlock(code, lines);\n if (injected) return injected;\n return createScriptBlock(code, lines, /\\.html?$/i.test(id));\n }\n\n // TS/JS: injeta após o último import existente (ou no topo).\n let lastEnd = -1;\n for (const m of code.matchAll(/^[ \\t]*import\\b[^;]*?['\"][^'\"]+['\"];?[^\\S\\n]*$/gm)) {\n lastEnd = Math.max(lastEnd, m.index + m[0].length);\n }\n if (lastEnd === -1) return `${lines.join('\\n')}\\n${code}`;\n return `${code.slice(0, lastEnd)}\\n${lines.join('\\n')}${code.slice(lastEnd)}`;\n}\n\n/** Verifica se o arquivo deve ser transformado. */\nexport function shouldTransform(id: string): boolean {\n return (\n !id.includes('node_modules') &&\n !id.endsWith('.d.ts') &&\n !id.endsWith('.css') &&\n /\\.(ts|js|tsx|jsx|vue|html|svelte)$/.test(id)\n );\n}\n\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"auto-import.js","sources":["../../src/plugins/auto-import.ts"],"sourcesContent":["/**\n * Registro de tags → subpaths para o auto-import.\n * Mantido em um módulo próprio (sem depender de DOM) para ser usado\n * também no build do cliente via plugin.\n */\nexport const fenixComponentMap: Record<string, string> = {\n 'fx-button': '@wrrdev/fenix-ui/button',\n 'fx-badge': '@wrrdev/fenix-ui/badge',\n 'fx-spinner': '@wrrdev/fenix-ui/spinner',\n 'fx-select': '@wrrdev/fenix-ui/select',\n 'fx-multiselect': '@wrrdev/fenix-ui/multiselect',\n 'fx-input': '@wrrdev/fenix-ui/input',\n 'fx-switch': '@wrrdev/fenix-ui/switch',\n 'fx-calendar': '@wrrdev/fenix-ui/calendar',\n 'fx-datepicker': '@wrrdev/fenix-ui/datepicker',\n 'fx-checkbox': '@wrrdev/fenix-ui/checkbox',\n 'fx-radio': '@wrrdev/fenix-ui/radio',\n 'fx-table': '@wrrdev/fenix-ui/table',\n 'fx-floatlabel': '@wrrdev/fenix-ui/floatlabel',\n 'fx-textarea': '@wrrdev/fenix-ui/textarea',\n 'fx-editor': '@wrrdev/fenix-ui/editor',\n 'fx-dialog': '@wrrdev/fenix-ui/dialog',\n 'fx-confirmpopup': '@wrrdev/fenix-ui/confirmpopup',\n 'fx-fileupload': '@wrrdev/fenix-ui/fileupload',\n 'fx-slider': '@wrrdev/fenix-ui/slider',\n 'fx-chip': '@wrrdev/fenix-ui/chip',\n 'fx-avatar': '@wrrdev/fenix-ui/avatar',\n 'fx-icon': '@wrrdev/fenix-ui/icon',\n 'fx-card': '@wrrdev/fenix-ui/card',\n 'fx-breadcrumb': '@wrrdev/fenix-ui/breadcrumb',\n 'fx-popover': '@wrrdev/fenix-ui/popover',\n 'fx-stepper': '@wrrdev/fenix-ui/stepper',\n 'fx-rating': '@wrrdev/fenix-ui/rating',\n 'fx-menu': '@wrrdev/fenix-ui/menu',\n 'fx-toggle-button-group': '@wrrdev/fenix-ui/toggle-button-group',\n 'fx-empty-state': '@wrrdev/fenix-ui/empty-state',\n 'fx-password-strength': '@wrrdev/fenix-ui/password-strength',\n 'fx-timeline': '@wrrdev/fenix-ui/timeline',\n 'fx-carousel': '@wrrdev/fenix-ui/carousel',\n 'fx-tree': '@wrrdev/fenix-ui/tree',\n 'fx-drawer': '@wrrdev/fenix-ui/drawer',\n 'fx-toast': '@wrrdev/fenix-ui/toast',\n 'fx-tooltip': '@wrrdev/fenix-ui/tooltip',\n 'fx-tabs': '@wrrdev/fenix-ui/tabs',\n 'fx-tab-panel': '@wrrdev/fenix-ui/tabs',\n 'fx-progress': '@wrrdev/fenix-ui/progress',\n 'fx-skeleton': '@wrrdev/fenix-ui/skeleton',\n 'fx-alert': '@wrrdev/fenix-ui/alert',\n 'fx-dropdown': '@wrrdev/fenix-ui/dropdown',\n 'fx-dropdown-item': '@wrrdev/fenix-ui/dropdown',\n 'fx-pagination': '@wrrdev/fenix-ui/pagination',\n 'fx-autocomplete': '@wrrdev/fenix-ui/autocomplete',\n 'fx-knob': '@wrrdev/fenix-ui/knob',\n 'fx-accordion': '@wrrdev/fenix-ui/accordion',\n 'fx-accordion-panel': '@wrrdev/fenix-ui/accordion',\n 'fx-orderlist': '@wrrdev/fenix-ui/orderlist',\n 'fx-picklist': '@wrrdev/fenix-ui/picklist',\n 'fx-column': '@wrrdev/fenix-ui/table',\n // Subtags do <fx-table>: usar uma delas isolada já exige o módulo da tabela.\n 'fx-cell': '@wrrdev/fenix-ui/table',\n 'fx-toolbar': '@wrrdev/fenix-ui/table',\n};\n\nconst TAG_RE = /<(fx-[a-z][a-z-]*)(?=[\\s/>])/g;\n\n/**\n * Detecta o uso da biblioteca de ícones por CLASSE (`class=\"fx-icon fx-icon-home\"`).\n *\n * O prefixo `(?:^|[^</\\w-])` ignora a TAG `<fx-icon…>` / `</fx-icon>`: o\n * componente carrega o @font-face leve por conta própria e não precisa das\n * ~4.300 regras `.fx-icon-<nome>` que o subpath `/icons` injeta. Também ignora\n * nomes compostos (`meu-fx-icon`), `fx-icons`, `fx-iconHome` etc.\n */\nexport const FENIX_ICON_CLASS_RE = /(?:^|[^</\\w-])fx-icon(?:-[a-z0-9_]+)*\\b/;\n\nexport interface AutoImportOptions {\n /** Prefixo do pacote (padrão '@wrrdev/fenix-ui'). */\n packageName?: string;\n /**\n * Em arquivos `.vue`, injeta também `import '@wrrdev/fenix-ui/vue'` junto com\n * o primeiro componente detectado. É a augmentação que habilita o\n * autocomplete/validação dos atributos `fx-*` no Volar/vue-tsc — sem passo\n * manual no `main.ts`. Padrão: `true`.\n */\n vueTypes?: boolean;\n}\n\n/* ------------------------------------------------------------------ */\n/* Injeção em arquivos com markup (SFC Vue/Svelte e HTML) */\n/* ------------------------------------------------------------------ */\n\n/** Bloco `<script>` INLINE (sem `src=`) — é dentro dele que o import entra. */\nconst INLINE_SCRIPT_RE = /<script\\b(?![^>]*\\bsrc=)[^>]*>/i;\n\n/** Arquivo com markup (SFC Vue/Svelte ou HTML) — detectado pelo id ou conteúdo. */\nfunction isMarkup(id: string, code: string): boolean {\n return (\n /\\.(vue|svelte|html?)$/i.test(id) ||\n /^\\s*<(?:template|script|style|!doctype|html)\\b/i.test(code)\n );\n}\n\n/** Quebra de linha do arquivo — preserva o CRLF de projetos Windows. */\nfunction eolOf(code: string): string {\n return code.includes('\\r\\n') ? '\\r\\n' : '\\n';\n}\n\n/**\n * Injeta os imports como primeira linha do bloco `<script>`.\n *\n * Tolerante a CRLF e a conteúdo na mesma linha da tag (`<script setup>const a=1`)\n * — a versão antiga exigia `>\\n` e, no Windows, colava os imports FORA do\n * `<script>`, onde o compilador de SFC os descarta (componente nunca registrado).\n */\nfunction injectIntoScriptBlock(code: string, lines: string[]): string | null {\n const open = INLINE_SCRIPT_RE.exec(code);\n if (!open) return null;\n const at = open.index + open[0].length;\n const br = eolOf(code);\n return `${code.slice(0, at)}${br}${lines.join(br)}${code.slice(at)}`;\n}\n\n/**\n * Cria o bloco `<script>` quando o arquivo não tem nenhum.\n *\n * Um `import` fora de `<script>` é descartado pelo compilador de SFC — este é o\n * único fallback válido para um `.vue`/`.svelte` que só tem `<template>`.\n */\nfunction createScriptBlock(code: string, lines: string[], html: boolean): string {\n const br = eolOf(code);\n const body = `${br}${lines.join(br)}${br}`;\n if (!html) return `<script>${body}</script>${br}${code}`;\n // HTML: `<script type=\"module\">` inline (o Vite transforma) antes do </body>.\n const block = `<script type=\"module\">${body}</script>${br}`;\n const bodyAt = code.search(/<\\/body\\s*>/i);\n if (bodyAt >= 0) return `${code.slice(0, bodyAt)}${block}${code.slice(bodyAt)}`;\n return `${block}${code}`;\n}\n\n/**\n * Injeta `import '<subpath>'` para cada componente fx-* usado no código\n * que ainda não foi importado. Retorna o código transformado ou o original.\n *\n * `id` (caminho do módulo, opcional) habilita os tratamentos de arquivo com\n * markup: injeção dentro do `<script>` e augmentação de tipos do Vue (SFC).\n */\nexport function transformSource(\n code: string,\n options: AutoImportOptions = {},\n id = '',\n): string {\n const pkg = options.packageName ?? '@wrrdev/fenix-ui';\n // Subpaths do mapa são reescritos quando um pacote custom é informado.\n const resolve = (sub: string): string =>\n pkg === '@wrrdev/fenix-ui' ? sub : sub.replace('@wrrdev/fenix-ui', pkg);\n const hasImport = (target: string): boolean =>\n code.includes(`'${target}'`) || code.includes(`\"${target}\"`);\n\n // Componentes usados e ainda não importados explicitamente.\n const needed = new Set<string>();\n for (const m of code.matchAll(TAG_RE)) {\n const sub = fenixComponentMap[m[1]];\n if (!sub) continue;\n const target = resolve(sub);\n if (!hasImport(target)) needed.add(target);\n }\n // Biblioteca de ícones: classes fx-icon / fx-icon-<nome> injetam o subpath /icons.\n const iconsSub = resolve('@wrrdev/fenix-ui/icons');\n if (FENIX_ICON_CLASS_RE.test(code) && !hasImport(iconsSub)) {\n needed.add(iconsSub);\n }\n\n const markup = isMarkup(id, code);\n // Vue (SFC): a augmentação de tipos entra junto do primeiro import injetado.\n const vueSub = resolve('@wrrdev/fenix-ui/vue');\n if (options.vueTypes !== false && /\\.vue$/i.test(id) && needed.size > 0 && !hasImport(vueSub)) {\n needed.add(vueSub);\n }\n if (!needed.size) return code;\n\n const lines = [...needed].map((s) => `import '${s}';`);\n\n // SFC (Vue/Svelte) e HTML: o import precisa ficar DENTRO de um <script>.\n if (markup) {\n const injected = injectIntoScriptBlock(code, lines);\n if (injected) return injected;\n return createScriptBlock(code, lines, /\\.html?$/i.test(id));\n }\n\n // TS/JS: injeta após o último import existente (ou no topo).\n let lastEnd = -1;\n for (const m of code.matchAll(/^[ \\t]*import\\b[^;]*?['\"][^'\"]+['\"];?[^\\S\\n]*$/gm)) {\n lastEnd = Math.max(lastEnd, m.index + m[0].length);\n }\n if (lastEnd === -1) return `${lines.join('\\n')}\\n${code}`;\n return `${code.slice(0, lastEnd)}\\n${lines.join('\\n')}${code.slice(lastEnd)}`;\n}\n\n/** Verifica se o arquivo deve ser transformado. */\nexport function shouldTransform(id: string): boolean {\n return (\n !id.includes('node_modules') &&\n !id.endsWith('.d.ts') &&\n !id.endsWith('.css') &&\n /\\.(ts|js|tsx|jsx|vue|html|svelte)$/.test(id)\n );\n}\n\n"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wrrdev/fenix-ui",
3
- "version": "1.1.13",
3
+ "version": "1.1.15",
4
4
  "description": "FenixUI Design System Web nativo (Web Components + Shadow DOM + Design Tokens) com tree-shaking por componente.",
5
5
  "type": "module",
6
6
  "license": "ISC",
@@ -121,6 +121,10 @@
121
121
  "types": "./dist/components/textarea/index.d.ts",
122
122
  "import": "./dist/components/textarea/index.js"
123
123
  },
124
+ "./editor": {
125
+ "types": "./dist/components/editor/index.d.ts",
126
+ "import": "./dist/components/editor/index.js"
127
+ },
124
128
  "./dialog": {
125
129
  "types": "./dist/components/dialog/index.d.ts",
126
130
  "import": "./dist/components/dialog/index.js"