vanilla-intlayer 8.12.1 → 8.12.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 (103) hide show
  1. package/dist/cjs/client/installIntlayer.cjs +1 -0
  2. package/dist/cjs/client/installIntlayer.cjs.map +1 -1
  3. package/dist/cjs/client/useDictionary.cjs.map +1 -1
  4. package/dist/cjs/client/useDictionaryDynamic.cjs +1 -0
  5. package/dist/cjs/client/useDictionaryDynamic.cjs.map +1 -1
  6. package/dist/cjs/client/useIntlayer.cjs.map +1 -1
  7. package/dist/cjs/client/useLocale.cjs +1 -0
  8. package/dist/cjs/client/useLocale.cjs.map +1 -1
  9. package/dist/cjs/client/useLocaleStorage.cjs +1 -0
  10. package/dist/cjs/client/useLocaleStorage.cjs.map +1 -1
  11. package/dist/cjs/client/useRewriteURL.cjs +1 -0
  12. package/dist/cjs/client/useRewriteURL.cjs.map +1 -1
  13. package/dist/cjs/editor/useEditor.cjs +1 -0
  14. package/dist/cjs/editor/useEditor.cjs.map +1 -1
  15. package/dist/cjs/format/useCompact.cjs +1 -0
  16. package/dist/cjs/format/useCompact.cjs.map +1 -1
  17. package/dist/cjs/format/useCurrency.cjs +1 -0
  18. package/dist/cjs/format/useCurrency.cjs.map +1 -1
  19. package/dist/cjs/format/useDate.cjs +1 -0
  20. package/dist/cjs/format/useDate.cjs.map +1 -1
  21. package/dist/cjs/format/useIntl.cjs +1 -0
  22. package/dist/cjs/format/useIntl.cjs.map +1 -1
  23. package/dist/cjs/format/useList.cjs +1 -0
  24. package/dist/cjs/format/useList.cjs.map +1 -1
  25. package/dist/cjs/format/useNumber.cjs +1 -0
  26. package/dist/cjs/format/useNumber.cjs.map +1 -1
  27. package/dist/cjs/format/usePercentage.cjs +1 -0
  28. package/dist/cjs/format/usePercentage.cjs.map +1 -1
  29. package/dist/cjs/format/useRelativeTime.cjs +1 -0
  30. package/dist/cjs/format/useRelativeTime.cjs.map +1 -1
  31. package/dist/cjs/format/useUnit.cjs +1 -0
  32. package/dist/cjs/format/useUnit.cjs.map +1 -1
  33. package/dist/cjs/getDictionary.cjs +1 -0
  34. package/dist/cjs/getDictionary.cjs.map +1 -1
  35. package/dist/cjs/getIntlayer.cjs +1 -0
  36. package/dist/cjs/getIntlayer.cjs.map +1 -1
  37. package/dist/cjs/html/HTMLRenderer.cjs.map +1 -1
  38. package/dist/cjs/html/installIntlayerHTML.cjs.map +1 -1
  39. package/dist/cjs/markdown/MarkdownRenderer.cjs.map +1 -1
  40. package/dist/cjs/markdown/compiler.cjs +35 -7
  41. package/dist/cjs/markdown/compiler.cjs.map +1 -1
  42. package/dist/cjs/markdown/index.cjs +0 -6
  43. package/dist/cjs/markdown/installIntlayerMarkdown.cjs.map +1 -1
  44. package/dist/cjs/markdown/runtime.cjs.map +1 -1
  45. package/dist/cjs/plugins.cjs.map +1 -1
  46. package/dist/cjs/renderIntlayerNode.cjs.map +1 -1
  47. package/dist/esm/client/installIntlayer.mjs.map +1 -1
  48. package/dist/esm/client/useDictionary.mjs.map +1 -1
  49. package/dist/esm/client/useDictionaryDynamic.mjs.map +1 -1
  50. package/dist/esm/client/useIntlayer.mjs.map +1 -1
  51. package/dist/esm/client/useLocale.mjs.map +1 -1
  52. package/dist/esm/client/useLocaleStorage.mjs.map +1 -1
  53. package/dist/esm/client/useRewriteURL.mjs.map +1 -1
  54. package/dist/esm/editor/useEditor.mjs.map +1 -1
  55. package/dist/esm/format/useCompact.mjs.map +1 -1
  56. package/dist/esm/format/useCurrency.mjs.map +1 -1
  57. package/dist/esm/format/useDate.mjs.map +1 -1
  58. package/dist/esm/format/useIntl.mjs.map +1 -1
  59. package/dist/esm/format/useList.mjs.map +1 -1
  60. package/dist/esm/format/useNumber.mjs.map +1 -1
  61. package/dist/esm/format/usePercentage.mjs.map +1 -1
  62. package/dist/esm/format/useRelativeTime.mjs.map +1 -1
  63. package/dist/esm/format/useUnit.mjs.map +1 -1
  64. package/dist/esm/getDictionary.mjs.map +1 -1
  65. package/dist/esm/getIntlayer.mjs.map +1 -1
  66. package/dist/esm/html/HTMLRenderer.mjs.map +1 -1
  67. package/dist/esm/html/installIntlayerHTML.mjs.map +1 -1
  68. package/dist/esm/markdown/MarkdownRenderer.mjs.map +1 -1
  69. package/dist/esm/markdown/compiler.mjs +36 -4
  70. package/dist/esm/markdown/compiler.mjs.map +1 -1
  71. package/dist/esm/markdown/index.mjs +2 -2
  72. package/dist/esm/markdown/installIntlayerMarkdown.mjs.map +1 -1
  73. package/dist/esm/markdown/runtime.mjs.map +1 -1
  74. package/dist/esm/plugins.mjs.map +1 -1
  75. package/dist/esm/renderIntlayerNode.mjs.map +1 -1
  76. package/dist/types/client/installIntlayer.d.ts.map +1 -1
  77. package/dist/types/client/useDictionary.d.ts.map +1 -1
  78. package/dist/types/client/useIntlayer.d.ts.map +1 -1
  79. package/dist/types/client/useLocale.d.ts.map +1 -1
  80. package/dist/types/client/useLocaleStorage.d.ts +5 -4
  81. package/dist/types/client/useLocaleStorage.d.ts.map +1 -1
  82. package/dist/types/client/useRewriteURL.d.ts.map +1 -1
  83. package/dist/types/editor/useEditor.d.ts.map +1 -1
  84. package/dist/types/format/useCompact.d.ts.map +1 -1
  85. package/dist/types/format/useCurrency.d.ts.map +1 -1
  86. package/dist/types/format/useDate.d.ts.map +1 -1
  87. package/dist/types/format/useIntl.d.ts.map +1 -1
  88. package/dist/types/format/useList.d.ts.map +1 -1
  89. package/dist/types/format/useNumber.d.ts.map +1 -1
  90. package/dist/types/format/usePercentage.d.ts.map +1 -1
  91. package/dist/types/format/useRelativeTime.d.ts.map +1 -1
  92. package/dist/types/format/useUnit.d.ts.map +1 -1
  93. package/dist/types/html/HTMLRenderer.d.ts.map +1 -1
  94. package/dist/types/html/installIntlayerHTML.d.ts.map +1 -1
  95. package/dist/types/html/types.d.ts.map +1 -1
  96. package/dist/types/markdown/MarkdownRenderer.d.ts.map +1 -1
  97. package/dist/types/markdown/compiler.d.ts +40 -4
  98. package/dist/types/markdown/compiler.d.ts.map +1 -1
  99. package/dist/types/markdown/index.d.ts +2 -2
  100. package/dist/types/markdown/installIntlayerMarkdown.d.ts.map +1 -1
  101. package/dist/types/markdown/runtime.d.ts.map +1 -1
  102. package/dist/types/plugins.d.ts.map +1 -1
  103. package/package.json +9 -9
@@ -1,5 +1,5 @@
1
1
  import vanillaRuntime from "./runtime.mjs";
2
- import { RuleType, compileWithOptions, parseMarkdown as parseMarkdown$1, renderMarkdownAst, sanitizer as defaultSanitizer, slugify as defaultSlugify } from "@intlayer/core/markdown";
2
+ import { compileWithOptions, parseMarkdown as parseMarkdown$1, renderMarkdownAst } from "@intlayer/core/markdown";
3
3
 
4
4
  //#region src/markdown/compiler.ts
5
5
  /**
@@ -8,6 +8,24 @@ import { RuleType, compileWithOptions, parseMarkdown as parseMarkdown$1, renderM
8
8
  * Compiles markdown to an HTML string for use with `innerHTML` or the
9
9
  * `renderMarkdown` utility.
10
10
  */
11
+ /**
12
+ * **Step 1 of 2 — parse only.**
13
+ * Converts a raw markdown string into a `ParsedMarkdown` AST without rendering
14
+ * any HTML. Use this when you need to:
15
+ * - Cache the parsed result and render it several times with different options.
16
+ * - Inspect or transform the AST before rendering.
17
+ * - Defer the render step to a later point.
18
+ *
19
+ * @param markdown - The markdown source string.
20
+ * @param options - Options that affect parsing (sanitizer, slugify, …).
21
+ * @returns A `ParsedMarkdown` AST ready to be passed to `compileMarkdown`.
22
+ *
23
+ * @example
24
+ * ```ts
25
+ * const ast = parseMarkdown('# Hello **World**');
26
+ * document.querySelector('#content').innerHTML = compileMarkdown(ast);
27
+ * ```
28
+ */
11
29
  const parseMarkdown = (markdown = "", options = {}) => {
12
30
  const { components, namedCodesToUnicode, sanitizer, slugify, ...compilerOptions } = options;
13
31
  return parseMarkdown$1(markdown, {
@@ -18,6 +36,22 @@ const parseMarkdown = (markdown = "", options = {}) => {
18
36
  slugify
19
37
  }, compilerOptions);
20
38
  };
39
+ /**
40
+ * **Steps 1 + 2 — parse and render in one shot.**
41
+ * Accepts a raw markdown string or a pre-parsed `ParsedMarkdown` AST and
42
+ * returns an HTML string. Insert the result into the DOM via `innerHTML` or
43
+ * the `renderMarkdown` utility.
44
+ *
45
+ * @param input - Markdown string or pre-parsed AST.
46
+ * @param options - Rendering options (custom components, sanitizer, slugify, …).
47
+ * @returns An HTML string representing the rendered markdown.
48
+ *
49
+ * @example
50
+ * ```ts
51
+ * document.querySelector('#content').innerHTML =
52
+ * compileMarkdown('# Hello **World**');
53
+ * ```
54
+ */
21
55
  const compileMarkdown = (input = "", options = {}) => {
22
56
  if (typeof input === "string") return compileWithOptions(input, vanillaRuntime, options);
23
57
  const { components, namedCodesToUnicode, sanitizer, slugify, ...compilerOptions } = options;
@@ -29,9 +63,7 @@ const compileMarkdown = (input = "", options = {}) => {
29
63
  slugify
30
64
  }, compilerOptions);
31
65
  };
32
- const compiler = compileMarkdown;
33
- const compile = compileMarkdown;
34
66
 
35
67
  //#endregion
36
- export { RuleType, compile, compileMarkdown, compiler, parseMarkdown, defaultSanitizer as sanitizer, defaultSlugify as slugify };
68
+ export { compileMarkdown, parseMarkdown };
37
69
  //# sourceMappingURL=compiler.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"compiler.mjs","names":["coreParseMarkdown","coreRenderMarkdownAst"],"sources":["../../../src/markdown/compiler.ts"],"sourcesContent":["/**\n * Vanilla JS adapter for the framework-agnostic markdown processor.\n *\n * Compiles markdown to an HTML string for use with `innerHTML` or the\n * `renderMarkdown` utility.\n */\n\nimport {\n type CompileOptions,\n compileWithOptions,\n parseMarkdown as coreParseMarkdown,\n renderMarkdownAst as coreRenderMarkdownAst,\n sanitizer as defaultSanitizer,\n slugify as defaultSlugify,\n type MarkdownContext,\n type ParsedMarkdown,\n RuleType,\n} from '@intlayer/core/markdown';\nimport { vanillaRuntime } from './runtime';\n\n// Re-export utilities for compatibility\nexport { defaultSanitizer as sanitizer, defaultSlugify as slugify, RuleType };\n\nexport type MarkdownCompilerOptions = CompileOptions;\n\n/**\n * Compile markdown to an HTML string.\n *\n * The resulting string can be inserted into the DOM via `element.innerHTML`\n * or the `renderMarkdown` helper.\n *\n * @example\n * ```ts\n * import { compileMarkdown } from 'vanilla-intlayer/markdown';\n *\n * document.querySelector('#content').innerHTML = compileMarkdown('# Hello **World**');\n * ```\n */\nexport type { ParsedMarkdown };\n\nexport const parseMarkdown = (\n markdown: string = '',\n options: MarkdownCompilerOptions = {}\n): ParsedMarkdown => {\n const {\n components,\n namedCodesToUnicode,\n sanitizer,\n slugify,\n ...compilerOptions\n } = options;\n\n const ctx: MarkdownContext<any> = {\n runtime: vanillaRuntime,\n components,\n namedCodesToUnicode,\n sanitizer: sanitizer as any,\n slugify,\n };\n\n return coreParseMarkdown(markdown, ctx, compilerOptions);\n};\n\nexport const compileMarkdown = (\n input: string | ParsedMarkdown = '',\n options: MarkdownCompilerOptions = {}\n): string => {\n if (typeof input === 'string') {\n return compileWithOptions(input, vanillaRuntime, options) as string;\n }\n\n const {\n components,\n namedCodesToUnicode,\n sanitizer,\n slugify,\n ...compilerOptions\n } = options;\n\n const ctx: MarkdownContext<any> = {\n runtime: vanillaRuntime,\n components,\n namedCodesToUnicode,\n sanitizer: sanitizer as any,\n slugify,\n };\n\n return coreRenderMarkdownAst(input, ctx, compilerOptions) as string;\n};\n\n// Aliases for consistency with other adapters\nexport const compiler = compileMarkdown;\nexport const compile = compileMarkdown;\n"],"mappings":";;;;;;;;;;AAwCA,MAAa,iBACX,WAAmB,IACnB,UAAmC,CAAC,MACjB;CACnB,MAAM,EACJ,YACA,qBACA,WACA,SACA,GAAG,oBACD;CAUJ,OAAOA,gBAAkB,UAAU;EAPjC,SAAS;EACT;EACA;EACW;EACX;CAGmC,GAAG,eAAe;AACzD;AAEA,MAAa,mBACX,QAAiC,IACjC,UAAmC,CAAC,MACzB;CACX,IAAI,OAAO,UAAU,UACnB,OAAO,mBAAmB,OAAO,gBAAgB,OAAO;CAG1D,MAAM,EACJ,YACA,qBACA,WACA,SACA,GAAG,oBACD;CAUJ,OAAOC,kBAAsB,OAAO;EAPlC,SAAS;EACT;EACA;EACW;EACX;CAGoC,GAAG,eAAe;AAC1D;AAGA,MAAa,WAAW;AACxB,MAAa,UAAU"}
1
+ {"version":3,"file":"compiler.mjs","names":["coreParseMarkdown","coreRenderMarkdownAst"],"sources":["../../../src/markdown/compiler.ts"],"sourcesContent":["/**\n * Vanilla JS adapter for the framework-agnostic markdown processor.\n *\n * Compiles markdown to an HTML string for use with `innerHTML` or the\n * `renderMarkdown` utility.\n */\n\nimport {\n type CompileOptions,\n compileWithOptions,\n parseMarkdown as coreParseMarkdown,\n renderMarkdownAst as coreRenderMarkdownAst,\n type MarkdownContext,\n type ParsedMarkdown,\n} from '@intlayer/core/markdown';\nimport { vanillaRuntime } from './runtime';\n\n/**\n * Options accepted by `compileMarkdown` and `parseMarkdown` to customise\n * rendering behaviour (custom components, sanitizer, slugify, rule hooks, …).\n */\nexport type MarkdownCompilerOptions = CompileOptions;\n\n/**\n * Intermediate AST produced by `parseMarkdown`.\n * Pass this to `compileMarkdown` to skip re-parsing when the same content is\n * rendered multiple times.\n */\nexport type { ParsedMarkdown };\n\n/**\n * **Step 1 of 2 parse only.**\n * Converts a raw markdown string into a `ParsedMarkdown` AST without rendering\n * any HTML. Use this when you need to:\n * - Cache the parsed result and render it several times with different options.\n * - Inspect or transform the AST before rendering.\n * - Defer the render step to a later point.\n *\n * @param markdown - The markdown source string.\n * @param options - Options that affect parsing (sanitizer, slugify, …).\n * @returns A `ParsedMarkdown` AST ready to be passed to `compileMarkdown`.\n *\n * @example\n * ```ts\n * const ast = parseMarkdown('# Hello **World**');\n * document.querySelector('#content').innerHTML = compileMarkdown(ast);\n * ```\n */\nexport const parseMarkdown = (\n markdown: string = '',\n options: MarkdownCompilerOptions = {}\n): ParsedMarkdown => {\n const {\n components,\n namedCodesToUnicode,\n sanitizer,\n slugify,\n ...compilerOptions\n } = options;\n\n const ctx: MarkdownContext<any> = {\n runtime: vanillaRuntime,\n components,\n namedCodesToUnicode,\n sanitizer: sanitizer as any,\n slugify,\n };\n\n return coreParseMarkdown(markdown, ctx, compilerOptions);\n};\n\n/**\n * **Steps 1 + 2 — parse and render in one shot.**\n * Accepts a raw markdown string or a pre-parsed `ParsedMarkdown` AST and\n * returns an HTML string. Insert the result into the DOM via `innerHTML` or\n * the `renderMarkdown` utility.\n *\n * @param input - Markdown string or pre-parsed AST.\n * @param options - Rendering options (custom components, sanitizer, slugify, …).\n * @returns An HTML string representing the rendered markdown.\n *\n * @example\n * ```ts\n * document.querySelector('#content').innerHTML =\n * compileMarkdown('# Hello **World**');\n * ```\n */\nexport const compileMarkdown = (\n input: string | ParsedMarkdown = '',\n options: MarkdownCompilerOptions = {}\n): string => {\n if (typeof input === 'string') {\n return compileWithOptions(input, vanillaRuntime, options) as string;\n }\n\n const {\n components,\n namedCodesToUnicode,\n sanitizer,\n slugify,\n ...compilerOptions\n } = options;\n\n const ctx: MarkdownContext<any> = {\n runtime: vanillaRuntime,\n components,\n namedCodesToUnicode,\n sanitizer: sanitizer as any,\n slugify,\n };\n\n return coreRenderMarkdownAst(input, ctx, compilerOptions) as string;\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgDA,MAAa,iBACX,WAAmB,IACnB,UAAmC,EAAE,KAClB;CACnB,MAAM,EACJ,YACA,qBACA,WACA,SACA,GAAG,oBACD;AAUJ,QAAOA,gBAAkB,UAAU;EAPjC,SAAS;EACT;EACA;EACW;EACX;EAGoC,EAAE,gBAAgB;;;;;;;;;;;;;;;;;;AAmB1D,MAAa,mBACX,QAAiC,IACjC,UAAmC,EAAE,KAC1B;AACX,KAAI,OAAO,UAAU,SACnB,QAAO,mBAAmB,OAAO,gBAAgB,QAAQ;CAG3D,MAAM,EACJ,YACA,qBACA,WACA,SACA,GAAG,oBACD;AAUJ,QAAOC,kBAAsB,OAAO;EAPlC,SAAS;EACT;EACA;EACW;EACX;EAGqC,EAAE,gBAAgB"}
@@ -1,5 +1,5 @@
1
- import { RuleType, compile, compileMarkdown, compiler, parseMarkdown, sanitizer as defaultSanitizer, slugify as defaultSlugify } from "./compiler.mjs";
1
+ import { compileMarkdown, parseMarkdown } from "./compiler.mjs";
2
2
  import { installIntlayerMarkdown, installIntlayerMarkdownDynamic, useMarkdown } from "./installIntlayerMarkdown.mjs";
3
3
  import { renderMarkdown, useMarkdownRenderer } from "./MarkdownRenderer.mjs";
4
4
 
5
- export { RuleType, compile, compileMarkdown, compiler, installIntlayerMarkdown, installIntlayerMarkdownDynamic, parseMarkdown, renderMarkdown, defaultSanitizer as sanitizer, defaultSlugify as slugify, useMarkdown, useMarkdownRenderer };
5
+ export { compileMarkdown, installIntlayerMarkdown, installIntlayerMarkdownDynamic, parseMarkdown, renderMarkdown, useMarkdown, useMarkdownRenderer };
@@ -1 +1 @@
1
- {"version":3,"file":"installIntlayerMarkdown.mjs","names":[],"sources":["../../../src/markdown/installIntlayerMarkdown.ts"],"sourcesContent":["import type { HTMLComponents } from '../html/types';\nimport {\n compileMarkdown,\n type MarkdownCompilerOptions,\n type ParsedMarkdown,\n} from './compiler';\n\nexport type MarkdownProviderOptions = {\n /** Forces the compiler to always output content with a block-level wrapper. */\n forceBlock?: boolean;\n /** Forces the compiler to always output content with an inline wrapper. */\n forceInline?: boolean;\n /** Whether to preserve frontmatter in the markdown content. */\n preserveFrontmatter?: boolean;\n /** Whether to use the GitHub Tag Filter. */\n tagfilter?: boolean;\n};\n\nexport type RenderMarkdownOptions = MarkdownProviderOptions & {\n components?: HTMLComponents<'permissive', {}>;\n wrapper?: string;\n};\n\nexport type RenderMarkdownFunction = (\n markdown: string | ParsedMarkdown,\n options?: MarkdownProviderOptions,\n components?: HTMLComponents<'permissive', {}>,\n wrapper?: string\n) => string | Promise<string>;\n\n/**\n * Singleton instance\n */\nlet instance: IntlayerMarkdownProvider | null = null;\n\nexport type IntlayerMarkdownProvider = {\n components?: HTMLComponents<'permissive', {}>;\n renderMarkdown: RenderMarkdownFunction;\n};\n\nexport type IntlayerMarkdownPluginOptions = MarkdownProviderOptions & {\n components?: HTMLComponents<'permissive', {}>;\n wrapper?: string;\n renderMarkdown?: RenderMarkdownFunction;\n};\n\n/**\n * Create and return a single IntlayerMarkdownProvider instance.\n */\nexport const createIntlayerMarkdownClient = (\n renderMarkdown: RenderMarkdownFunction,\n components?: HTMLComponents<'permissive', {}>\n): IntlayerMarkdownProvider => {\n if (instance) return instance;\n\n instance = { components, renderMarkdown };\n return instance;\n};\n\n/**\n * Install the Intlayer Markdown provider for your vanilla JS application.\n *\n * @example\n * ```ts\n * import { installIntlayerMarkdown } from 'vanilla-intlayer/markdown';\n *\n * installIntlayerMarkdown({ forceBlock: true });\n * ```\n */\nexport const installIntlayerMarkdown = (\n pluginOptions?: IntlayerMarkdownPluginOptions | RenderMarkdownFunction\n): IntlayerMarkdownProvider => {\n let renderMarkdown: RenderMarkdownFunction;\n let providerComponents: HTMLComponents<'permissive', {}> | undefined;\n\n if (typeof pluginOptions === 'function') {\n renderMarkdown = pluginOptions;\n } else {\n const {\n components,\n wrapper,\n forceBlock,\n forceInline,\n preserveFrontmatter,\n tagfilter,\n renderMarkdown: customRender,\n } = pluginOptions ?? {};\n\n providerComponents = components;\n\n if (customRender) {\n renderMarkdown = customRender;\n } else {\n const internalOptions: MarkdownCompilerOptions = {\n forceBlock,\n forceInline,\n preserveFrontmatter,\n tagfilter,\n };\n\n renderMarkdown = (\n markdown,\n options,\n _componentsOverride,\n _wrapperOverride\n ) =>\n compileMarkdown(markdown, {\n ...internalOptions,\n forceBlock: options?.forceBlock ?? internalOptions.forceBlock,\n forceInline: options?.forceInline ?? internalOptions.forceInline,\n preserveFrontmatter:\n options?.preserveFrontmatter ?? internalOptions.preserveFrontmatter,\n tagfilter: options?.tagfilter ?? internalOptions.tagfilter,\n });\n }\n }\n\n return createIntlayerMarkdownClient(renderMarkdown, providerComponents);\n};\n\n/**\n * Access the installed IntlayerMarkdownProvider.\n * Returns a fallback renderer that compiles with default options if no\n * provider has been installed.\n */\nexport const useMarkdown = (): IntlayerMarkdownProvider => {\n if (instance) return instance;\n\n return {\n renderMarkdown: (markdown) =>\n compileMarkdown(markdown as string | ParsedMarkdown),\n };\n};\n\n/**\n * Asynchronously install a markdown renderer whose implementation is loaded\n * via a dynamic `import()`.\n *\n * Use this to keep the markdown compiler out of the initial bundle — the\n * loader is only called the first time this function is executed.\n *\n * The returned promise resolves once the provider is ready. Any calls to\n * `useMarkdown()` before the promise resolves will use the fallback\n * (raw-string) renderer.\n *\n * @param loader - A zero-argument async function that resolves to either a\n * `RenderMarkdownFunction` or an `IntlayerMarkdownPluginOptions` object.\n *\n * @example\n * ```ts\n * // Load a custom markdown renderer (e.g. marked) only when needed\n * await installIntlayerMarkdownDynamic(async () => {\n * const { marked } = await import('marked');\n * return (markdown) => marked(markdown) as string;\n * });\n * ```\n */\nexport const installIntlayerMarkdownDynamic = async (\n loader: () => Promise<IntlayerMarkdownPluginOptions | RenderMarkdownFunction>\n): Promise<IntlayerMarkdownProvider> => {\n if (instance) return instance;\n const pluginOptions = await loader();\n return installIntlayerMarkdown(pluginOptions);\n};\n"],"mappings":";;;;;;AAiCA,IAAI,WAA4C;;;;AAgBhD,MAAa,gCACX,gBACA,eAC6B;CAC7B,IAAI,UAAU,OAAO;CAErB,WAAW;EAAE;EAAY;CAAe;CACxC,OAAO;AACT;;;;;;;;;;;AAYA,MAAa,2BACX,kBAC6B;CAC7B,IAAI;CACJ,IAAI;CAEJ,IAAI,OAAO,kBAAkB,YAC3B,iBAAiB;MACZ;EACL,MAAM,EACJ,YACA,SACA,YACA,aACA,qBACA,WACA,gBAAgB,iBACd,iBAAiB,CAAC;EAEtB,qBAAqB;EAErB,IAAI,cACF,iBAAiB;OACZ;GACL,MAAM,kBAA2C;IAC/C;IACA;IACA;IACA;GACF;GAEA,kBACE,UACA,SACA,qBACA,qBAEA,gBAAgB,UAAU;IACxB,GAAG;IACH,YAAY,SAAS,cAAc,gBAAgB;IACnD,aAAa,SAAS,eAAe,gBAAgB;IACrD,qBACE,SAAS,uBAAuB,gBAAgB;IAClD,WAAW,SAAS,aAAa,gBAAgB;GACnD,CAAC;EACL;CACF;CAEA,OAAO,6BAA6B,gBAAgB,kBAAkB;AACxE;;;;;;AAOA,MAAa,oBAA8C;CACzD,IAAI,UAAU,OAAO;CAErB,OAAO,EACL,iBAAiB,aACf,gBAAgB,QAAmC,EACvD;AACF;;;;;;;;;;;;;;;;;;;;;;;;AAyBA,MAAa,iCAAiC,OAC5C,WACsC;CACtC,IAAI,UAAU,OAAO;CAErB,OAAO,wBAAwB,MADH,OAAO,CACS;AAC9C"}
1
+ {"version":3,"file":"installIntlayerMarkdown.mjs","names":[],"sources":["../../../src/markdown/installIntlayerMarkdown.ts"],"sourcesContent":["import type { HTMLComponents } from '../html/types';\nimport {\n compileMarkdown,\n type MarkdownCompilerOptions,\n type ParsedMarkdown,\n} from './compiler';\n\nexport type MarkdownProviderOptions = {\n /** Forces the compiler to always output content with a block-level wrapper. */\n forceBlock?: boolean;\n /** Forces the compiler to always output content with an inline wrapper. */\n forceInline?: boolean;\n /** Whether to preserve frontmatter in the markdown content. */\n preserveFrontmatter?: boolean;\n /** Whether to use the GitHub Tag Filter. */\n tagfilter?: boolean;\n};\n\nexport type RenderMarkdownOptions = MarkdownProviderOptions & {\n components?: HTMLComponents<'permissive', {}>;\n wrapper?: string;\n};\n\nexport type RenderMarkdownFunction = (\n markdown: string | ParsedMarkdown,\n options?: MarkdownProviderOptions,\n components?: HTMLComponents<'permissive', {}>,\n wrapper?: string\n) => string | Promise<string>;\n\n/**\n * Singleton instance\n */\nlet instance: IntlayerMarkdownProvider | null = null;\n\nexport type IntlayerMarkdownProvider = {\n components?: HTMLComponents<'permissive', {}>;\n renderMarkdown: RenderMarkdownFunction;\n};\n\nexport type IntlayerMarkdownPluginOptions = MarkdownProviderOptions & {\n components?: HTMLComponents<'permissive', {}>;\n wrapper?: string;\n renderMarkdown?: RenderMarkdownFunction;\n};\n\n/**\n * Create and return a single IntlayerMarkdownProvider instance.\n */\nexport const createIntlayerMarkdownClient = (\n renderMarkdown: RenderMarkdownFunction,\n components?: HTMLComponents<'permissive', {}>\n): IntlayerMarkdownProvider => {\n if (instance) return instance;\n\n instance = { components, renderMarkdown };\n return instance;\n};\n\n/**\n * Install the Intlayer Markdown provider for your vanilla JS application.\n *\n * @example\n * ```ts\n * import { installIntlayerMarkdown } from 'vanilla-intlayer/markdown';\n *\n * installIntlayerMarkdown({ forceBlock: true });\n * ```\n */\nexport const installIntlayerMarkdown = (\n pluginOptions?: IntlayerMarkdownPluginOptions | RenderMarkdownFunction\n): IntlayerMarkdownProvider => {\n let renderMarkdown: RenderMarkdownFunction;\n let providerComponents: HTMLComponents<'permissive', {}> | undefined;\n\n if (typeof pluginOptions === 'function') {\n renderMarkdown = pluginOptions;\n } else {\n const {\n components,\n wrapper,\n forceBlock,\n forceInline,\n preserveFrontmatter,\n tagfilter,\n renderMarkdown: customRender,\n } = pluginOptions ?? {};\n\n providerComponents = components;\n\n if (customRender) {\n renderMarkdown = customRender;\n } else {\n const internalOptions: MarkdownCompilerOptions = {\n forceBlock,\n forceInline,\n preserveFrontmatter,\n tagfilter,\n };\n\n renderMarkdown = (\n markdown,\n options,\n _componentsOverride,\n _wrapperOverride\n ) =>\n compileMarkdown(markdown, {\n ...internalOptions,\n forceBlock: options?.forceBlock ?? internalOptions.forceBlock,\n forceInline: options?.forceInline ?? internalOptions.forceInline,\n preserveFrontmatter:\n options?.preserveFrontmatter ?? internalOptions.preserveFrontmatter,\n tagfilter: options?.tagfilter ?? internalOptions.tagfilter,\n });\n }\n }\n\n return createIntlayerMarkdownClient(renderMarkdown, providerComponents);\n};\n\n/**\n * Access the installed IntlayerMarkdownProvider.\n * Returns a fallback renderer that compiles with default options if no\n * provider has been installed.\n */\nexport const useMarkdown = (): IntlayerMarkdownProvider => {\n if (instance) return instance;\n\n return {\n renderMarkdown: (markdown) =>\n compileMarkdown(markdown as string | ParsedMarkdown),\n };\n};\n\n/**\n * Asynchronously install a markdown renderer whose implementation is loaded\n * via a dynamic `import()`.\n *\n * Use this to keep the markdown compiler out of the initial bundle — the\n * loader is only called the first time this function is executed.\n *\n * The returned promise resolves once the provider is ready. Any calls to\n * `useMarkdown()` before the promise resolves will use the fallback\n * (raw-string) renderer.\n *\n * @param loader - A zero-argument async function that resolves to either a\n * `RenderMarkdownFunction` or an `IntlayerMarkdownPluginOptions` object.\n *\n * @example\n * ```ts\n * // Load a custom markdown renderer (e.g. marked) only when needed\n * await installIntlayerMarkdownDynamic(async () => {\n * const { marked } = await import('marked');\n * return (markdown) => marked(markdown) as string;\n * });\n * ```\n */\nexport const installIntlayerMarkdownDynamic = async (\n loader: () => Promise<IntlayerMarkdownPluginOptions | RenderMarkdownFunction>\n): Promise<IntlayerMarkdownProvider> => {\n if (instance) return instance;\n const pluginOptions = await loader();\n return installIntlayerMarkdown(pluginOptions);\n};\n"],"mappings":";;;;;;AAiCA,IAAI,WAA4C;;;;AAgBhD,MAAa,gCACX,gBACA,eAC6B;AAC7B,KAAI,SAAU,QAAO;AAErB,YAAW;EAAE;EAAY;EAAgB;AACzC,QAAO;;;;;;;;;;;;AAaT,MAAa,2BACX,kBAC6B;CAC7B,IAAI;CACJ,IAAI;AAEJ,KAAI,OAAO,kBAAkB,WAC3B,kBAAiB;MACZ;EACL,MAAM,EACJ,YACA,SACA,YACA,aACA,qBACA,WACA,gBAAgB,iBACd,iBAAiB,EAAE;AAEvB,uBAAqB;AAErB,MAAI,aACF,kBAAiB;OACZ;GACL,MAAM,kBAA2C;IAC/C;IACA;IACA;IACA;IACD;AAED,qBACE,UACA,SACA,qBACA,qBAEA,gBAAgB,UAAU;IACxB,GAAG;IACH,YAAY,SAAS,cAAc,gBAAgB;IACnD,aAAa,SAAS,eAAe,gBAAgB;IACrD,qBACE,SAAS,uBAAuB,gBAAgB;IAClD,WAAW,SAAS,aAAa,gBAAgB;IAClD,CAAC;;;AAIR,QAAO,6BAA6B,gBAAgB,mBAAmB;;;;;;;AAQzE,MAAa,oBAA8C;AACzD,KAAI,SAAU,QAAO;AAErB,QAAO,EACL,iBAAiB,aACf,gBAAgB,SAAoC,EACvD;;;;;;;;;;;;;;;;;;;;;;;;;AA0BH,MAAa,iCAAiC,OAC5C,WACsC;AACtC,KAAI,SAAU,QAAO;AAErB,QAAO,wBAAwB,MADH,QAAQ,CACS"}
@@ -1 +1 @@
1
- {"version":3,"file":"runtime.mjs","names":[],"sources":["../../../src/markdown/runtime.ts"],"sourcesContent":["/**\n * Vanilla JS adapter for the framework-agnostic markdown processor.\n *\n * Builds HTML strings which can be inserted into the DOM via `innerHTML`\n * or the `renderMarkdown` utility.\n */\n\nimport type { HTMLTag, MarkdownRuntime } from '@intlayer/core/markdown';\n\nconst SELF_CLOSING_TAGS = new Set([\n 'area',\n 'base',\n 'br',\n 'col',\n 'embed',\n 'hr',\n 'img',\n 'input',\n 'link',\n 'meta',\n 'param',\n 'source',\n 'track',\n 'wbr',\n]);\n\nconst buildPropsString = (props: Record<string, any> | null): string => {\n if (!props) return '';\n\n return Object.entries(props)\n .filter(([, v]) => v !== undefined && v !== null)\n .map(([k, v]) => {\n if (typeof v === 'boolean') return v ? k : '';\n if (k === '_innerHTML') return ''; // handled separately\n return `${k}=\"${String(v).replace(/&/g, '&amp;').replace(/\"/g, '&quot;')}\"`;\n })\n .filter(Boolean)\n .join(' ');\n};\n\nconst VANILLA_FRAGMENT = '__vanilla_fragment__';\n\n/**\n * Vanilla-specific MarkdownRuntime that produces HTML strings.\n */\nexport const vanillaRuntime: MarkdownRuntime = {\n createElement: (\n type: any,\n props: Record<string, any> | null,\n ...children: any[]\n ): string => {\n const childStr = children.flat(Infinity).join('');\n\n if (type === VANILLA_FRAGMENT) return childStr;\n\n if (typeof type === 'string') {\n const propsStr = buildPropsString(props);\n const propsWithSpace = propsStr ? ` ${propsStr}` : '';\n const innerHTML = props?._innerHTML;\n\n if (SELF_CLOSING_TAGS.has(type)) {\n return `<${type}${propsWithSpace}>`;\n }\n\n if (innerHTML !== undefined) {\n return `<${type}${propsWithSpace}>${innerHTML}</${type}>`;\n }\n\n return `<${type}${propsWithSpace}>${childStr}</${type}>`;\n }\n\n // Function component override — returns a string\n if (typeof type === 'function') {\n try {\n const result = type({ ...props, children: childStr });\n return typeof result === 'string' ? result : childStr;\n } catch {\n return childStr;\n }\n }\n\n return childStr;\n },\n\n cloneElement: (\n element: unknown,\n _props: Record<string, any>,\n ..._children: any[]\n ): string => {\n return typeof element === 'string' ? element : String(element ?? '');\n },\n\n Fragment: VANILLA_FRAGMENT as any,\n\n /**\n * Normalize props to standard HTML attribute names.\n */\n normalizeProps: (\n _tag: HTMLTag,\n props: Record<string, any>\n ): Record<string, any> => {\n const normalized: Record<string, any> = {};\n\n for (const [key, value] of Object.entries(props)) {\n if (key === 'className') {\n normalized.class = value;\n } else if (key === 'htmlFor') {\n normalized.for = value;\n } else if (key === 'dangerouslySetInnerHTML' && value?.__html) {\n normalized._innerHTML = value.__html;\n } else {\n normalized[key] = value;\n }\n }\n\n return normalized;\n },\n};\n\n/**\n * Creates a vanilla runtime with a custom createElement for advanced use cases.\n */\nexport const createVanillaRuntime = (\n options: {\n onCreateElement?: (\n type: any,\n props: Record<string, any> | null,\n children: any[]\n ) => string;\n } = {}\n): MarkdownRuntime => {\n const { onCreateElement } = options;\n\n if (onCreateElement) {\n return {\n ...vanillaRuntime,\n createElement: (\n type: any,\n props: Record<string, any> | null,\n ...children: any[]\n ): string => onCreateElement(type, props, children),\n };\n }\n\n return vanillaRuntime;\n};\n\nexport default vanillaRuntime;\n"],"mappings":";AASA,MAAM,oBAAoB,IAAI,IAAI;CAChC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACF,CAAC;AAED,MAAM,oBAAoB,UAA8C;CACtE,IAAI,CAAC,OAAO,OAAO;CAEnB,OAAO,OAAO,QAAQ,KAAK,EACxB,QAAQ,GAAG,OAAO,MAAM,UAAa,MAAM,IAAI,EAC/C,KAAK,CAAC,GAAG,OAAO;EACf,IAAI,OAAO,MAAM,WAAW,OAAO,IAAI,IAAI;EAC3C,IAAI,MAAM,cAAc,OAAO;EAC/B,OAAO,GAAG,EAAE,IAAI,OAAO,CAAC,EAAE,QAAQ,MAAM,OAAO,EAAE,QAAQ,MAAM,QAAQ,EAAE;CAC3E,CAAC,EACA,OAAO,OAAO,EACd,KAAK,GAAG;AACb;AAEA,MAAM,mBAAmB;;;;AAKzB,MAAa,iBAAkC;CAC7C,gBACE,MACA,OACA,GAAG,aACQ;EACX,MAAM,WAAW,SAAS,KAAK,QAAQ,EAAE,KAAK,EAAE;EAEhD,IAAI,SAAS,kBAAkB,OAAO;EAEtC,IAAI,OAAO,SAAS,UAAU;GAC5B,MAAM,WAAW,iBAAiB,KAAK;GACvC,MAAM,iBAAiB,WAAW,IAAI,aAAa;GACnD,MAAM,YAAY,OAAO;GAEzB,IAAI,kBAAkB,IAAI,IAAI,GAC5B,OAAO,IAAI,OAAO,eAAe;GAGnC,IAAI,cAAc,QAChB,OAAO,IAAI,OAAO,eAAe,GAAG,UAAU,IAAI,KAAK;GAGzD,OAAO,IAAI,OAAO,eAAe,GAAG,SAAS,IAAI,KAAK;EACxD;EAGA,IAAI,OAAO,SAAS,YAClB,IAAI;GACF,MAAM,SAAS,KAAK;IAAE,GAAG;IAAO,UAAU;GAAS,CAAC;GACpD,OAAO,OAAO,WAAW,WAAW,SAAS;EAC/C,QAAQ;GACN,OAAO;EACT;EAGF,OAAO;CACT;CAEA,eACE,SACA,QACA,GAAG,cACQ;EACX,OAAO,OAAO,YAAY,WAAW,UAAU,OAAO,WAAW,EAAE;CACrE;CAEA,UAAU;;;;CAKV,iBACE,MACA,UACwB;EACxB,MAAM,aAAkC,CAAC;EAEzC,KAAK,MAAM,CAAC,KAAK,UAAU,OAAO,QAAQ,KAAK,GAC7C,IAAI,QAAQ,aACV,WAAW,QAAQ;OACd,IAAI,QAAQ,WACjB,WAAW,MAAM;OACZ,IAAI,QAAQ,6BAA6B,OAAO,QACrD,WAAW,aAAa,MAAM;OAE9B,WAAW,OAAO;EAItB,OAAO;CACT;AACF;;;;AAKA,MAAa,wBACX,UAMI,CAAC,MACe;CACpB,MAAM,EAAE,oBAAoB;CAE5B,IAAI,iBACF,OAAO;EACL,GAAG;EACH,gBACE,MACA,OACA,GAAG,aACQ,gBAAgB,MAAM,OAAO,QAAQ;CACpD;CAGF,OAAO;AACT"}
1
+ {"version":3,"file":"runtime.mjs","names":[],"sources":["../../../src/markdown/runtime.ts"],"sourcesContent":["/**\n * Vanilla JS adapter for the framework-agnostic markdown processor.\n *\n * Builds HTML strings which can be inserted into the DOM via `innerHTML`\n * or the `renderMarkdown` utility.\n */\n\nimport type { HTMLTag, MarkdownRuntime } from '@intlayer/core/markdown';\n\nconst SELF_CLOSING_TAGS = new Set([\n 'area',\n 'base',\n 'br',\n 'col',\n 'embed',\n 'hr',\n 'img',\n 'input',\n 'link',\n 'meta',\n 'param',\n 'source',\n 'track',\n 'wbr',\n]);\n\nconst buildPropsString = (props: Record<string, any> | null): string => {\n if (!props) return '';\n\n return Object.entries(props)\n .filter(([, v]) => v !== undefined && v !== null)\n .map(([k, v]) => {\n if (typeof v === 'boolean') return v ? k : '';\n if (k === '_innerHTML') return ''; // handled separately\n return `${k}=\"${String(v).replace(/&/g, '&amp;').replace(/\"/g, '&quot;')}\"`;\n })\n .filter(Boolean)\n .join(' ');\n};\n\nconst VANILLA_FRAGMENT = '__vanilla_fragment__';\n\n/**\n * Vanilla-specific MarkdownRuntime that produces HTML strings.\n */\nexport const vanillaRuntime: MarkdownRuntime = {\n createElement: (\n type: any,\n props: Record<string, any> | null,\n ...children: any[]\n ): string => {\n const childStr = children.flat(Infinity).join('');\n\n if (type === VANILLA_FRAGMENT) return childStr;\n\n if (typeof type === 'string') {\n const propsStr = buildPropsString(props);\n const propsWithSpace = propsStr ? ` ${propsStr}` : '';\n const innerHTML = props?._innerHTML;\n\n if (SELF_CLOSING_TAGS.has(type)) {\n return `<${type}${propsWithSpace}>`;\n }\n\n if (innerHTML !== undefined) {\n return `<${type}${propsWithSpace}>${innerHTML}</${type}>`;\n }\n\n return `<${type}${propsWithSpace}>${childStr}</${type}>`;\n }\n\n // Function component override — returns a string\n if (typeof type === 'function') {\n try {\n const result = type({ ...props, children: childStr });\n return typeof result === 'string' ? result : childStr;\n } catch {\n return childStr;\n }\n }\n\n return childStr;\n },\n\n cloneElement: (\n element: unknown,\n _props: Record<string, any>,\n ..._children: any[]\n ): string => {\n return typeof element === 'string' ? element : String(element ?? '');\n },\n\n Fragment: VANILLA_FRAGMENT as any,\n\n /**\n * Normalize props to standard HTML attribute names.\n */\n normalizeProps: (\n _tag: HTMLTag,\n props: Record<string, any>\n ): Record<string, any> => {\n const normalized: Record<string, any> = {};\n\n for (const [key, value] of Object.entries(props)) {\n if (key === 'className') {\n normalized.class = value;\n } else if (key === 'htmlFor') {\n normalized.for = value;\n } else if (key === 'dangerouslySetInnerHTML' && value?.__html) {\n normalized._innerHTML = value.__html;\n } else {\n normalized[key] = value;\n }\n }\n\n return normalized;\n },\n};\n\n/**\n * Creates a vanilla runtime with a custom createElement for advanced use cases.\n */\nexport const createVanillaRuntime = (\n options: {\n onCreateElement?: (\n type: any,\n props: Record<string, any> | null,\n children: any[]\n ) => string;\n } = {}\n): MarkdownRuntime => {\n const { onCreateElement } = options;\n\n if (onCreateElement) {\n return {\n ...vanillaRuntime,\n createElement: (\n type: any,\n props: Record<string, any> | null,\n ...children: any[]\n ): string => onCreateElement(type, props, children),\n };\n }\n\n return vanillaRuntime;\n};\n\nexport default vanillaRuntime;\n"],"mappings":";AASA,MAAM,oBAAoB,IAAI,IAAI;CAChC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACD,CAAC;AAEF,MAAM,oBAAoB,UAA8C;AACtE,KAAI,CAAC,MAAO,QAAO;AAEnB,QAAO,OAAO,QAAQ,MAAM,CACzB,QAAQ,GAAG,OAAO,MAAM,UAAa,MAAM,KAAK,CAChD,KAAK,CAAC,GAAG,OAAO;AACf,MAAI,OAAO,MAAM,UAAW,QAAO,IAAI,IAAI;AAC3C,MAAI,MAAM,aAAc,QAAO;AAC/B,SAAO,GAAG,EAAE,IAAI,OAAO,EAAE,CAAC,QAAQ,MAAM,QAAQ,CAAC,QAAQ,MAAM,SAAS,CAAC;GACzE,CACD,OAAO,QAAQ,CACf,KAAK,IAAI;;AAGd,MAAM,mBAAmB;;;;AAKzB,MAAa,iBAAkC;CAC7C,gBACE,MACA,OACA,GAAG,aACQ;EACX,MAAM,WAAW,SAAS,KAAK,SAAS,CAAC,KAAK,GAAG;AAEjD,MAAI,SAAS,iBAAkB,QAAO;AAEtC,MAAI,OAAO,SAAS,UAAU;GAC5B,MAAM,WAAW,iBAAiB,MAAM;GACxC,MAAM,iBAAiB,WAAW,IAAI,aAAa;GACnD,MAAM,YAAY,OAAO;AAEzB,OAAI,kBAAkB,IAAI,KAAK,CAC7B,QAAO,IAAI,OAAO,eAAe;AAGnC,OAAI,cAAc,OAChB,QAAO,IAAI,OAAO,eAAe,GAAG,UAAU,IAAI,KAAK;AAGzD,UAAO,IAAI,OAAO,eAAe,GAAG,SAAS,IAAI,KAAK;;AAIxD,MAAI,OAAO,SAAS,WAClB,KAAI;GACF,MAAM,SAAS,KAAK;IAAE,GAAG;IAAO,UAAU;IAAU,CAAC;AACrD,UAAO,OAAO,WAAW,WAAW,SAAS;UACvC;AACN,UAAO;;AAIX,SAAO;;CAGT,eACE,SACA,QACA,GAAG,cACQ;AACX,SAAO,OAAO,YAAY,WAAW,UAAU,OAAO,WAAW,GAAG;;CAGtE,UAAU;;;;CAKV,iBACE,MACA,UACwB;EACxB,MAAM,aAAkC,EAAE;AAE1C,OAAK,MAAM,CAAC,KAAK,UAAU,OAAO,QAAQ,MAAM,CAC9C,KAAI,QAAQ,YACV,YAAW,QAAQ;WACV,QAAQ,UACjB,YAAW,MAAM;WACR,QAAQ,6BAA6B,OAAO,OACrD,YAAW,aAAa,MAAM;MAE9B,YAAW,OAAO;AAItB,SAAO;;CAEV;;;;AAKD,MAAa,wBACX,UAMI,EAAE,KACc;CACpB,MAAM,EAAE,oBAAoB;AAE5B,KAAI,gBACF,QAAO;EACL,GAAG;EACH,gBACE,MACA,OACA,GAAG,aACQ,gBAAgB,MAAM,OAAO,SAAS;EACpD;AAGH,QAAO"}
@@ -1 +1 @@
1
- {"version":3,"file":"plugins.mjs","names":[],"sources":["../../src/plugins.ts"],"sourcesContent":["import { editor, internationalization } from '@intlayer/config/built';\nimport {\n conditionPlugin,\n type DeepTransformContent as DeepTransformContentCore,\n enumerationPlugin,\n fallbackPlugin,\n filePlugin,\n genderPlugin,\n getHTML,\n type IInterpreterPluginState as IInterpreterPluginStateCore,\n nestedPlugin,\n type Plugins,\n pluralPlugin,\n splitInsertionTemplate,\n translationPlugin,\n} from '@intlayer/core/interpreter';\nimport {\n compileWithOptions,\n getMarkdownMetadata,\n} from '@intlayer/core/markdown';\nimport type {\n HTMLContent,\n InsertionContent,\n MarkdownContent,\n} from '@intlayer/core/transpiler';\nimport type { KeyPath } from '@intlayer/types/keyPath';\nimport type {\n DeclaredLocales,\n LocalesValues,\n} from '@intlayer/types/module_augmentation';\nimport type { NodeType } from '@intlayer/types/nodeType';\nimport * as NodeTypes from '@intlayer/types/nodeType';\nimport type { HTMLComponents } from './html/types';\nimport {\n type IntlayerNode as IntlayerNodeCore,\n renderIntlayerNode,\n} from './renderIntlayerNode';\n\n/** ---------------------------------------------\n * INTLAYER NODE PLUGIN\n * --------------------------------------------- */\n\nexport type IntlayerNodeCond<T> = T extends number | string\n ? IntlayerNode<T>\n : never;\n\nexport type IntlayerNode<T, P = {}> = IntlayerNodeCore<T> & P;\n\nconst escapeHtmlAttr = (str: string): string =>\n str.replace(/&/g, '&amp;').replace(/\"/g, '&quot;');\n\nconst escapeHtmlText = (str: string): string =>\n str.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;');\n\nexport const intlayerNodePlugins: Plugins = {\n id: 'intlayer-node-plugin',\n canHandle: (node) =>\n typeof node === 'bigint' ||\n typeof node === 'string' ||\n typeof node === 'number',\n transform: (_node, { children, keyPath, dictionaryKey, ...rest }) => {\n if (process.env['INTLAYER_EDITOR_ENABLED'] !== 'false' && editor.enabled) {\n const rawStr = String(children ?? '');\n const keyPathJson = JSON.stringify(keyPath ?? []);\n const dictKey = String(dictionaryKey ?? '');\n\n /**\n * In editor mode, string coercion returns the wrapper HTML so that\n * `element.innerHTML = content.title` automatically inserts the\n * `<intlayer-content-selector-wrapper>` into the DOM.\n */\n const htmlStr = `<intlayer-content-selector-wrapper key-path=\"${escapeHtmlAttr(keyPathJson)}\" dictionary-key=\"${escapeHtmlAttr(dictKey)}\">${escapeHtmlText(rawStr)}</intlayer-content-selector-wrapper>`;\n\n return renderIntlayerNode({\n ...rest,\n value: children as string,\n children: htmlStr,\n keyPath,\n dictionaryKey,\n additionalProps: {\n toElement: (): HTMLElement => {\n const wrapper = document.createElement(\n 'intlayer-content-selector-wrapper'\n );\n wrapper.setAttribute('key-path', keyPathJson);\n wrapper.setAttribute('dictionary-key', dictKey);\n wrapper.textContent = rawStr;\n return wrapper;\n },\n },\n });\n }\n\n return renderIntlayerNode({\n ...rest,\n value: children as string,\n children,\n });\n },\n};\n\n/** ---------------------------------------------\n * INSERTION PLUGIN\n * --------------------------------------------- */\n\nexport type InsertionCond<T, _S, L extends LocalesValues> = T extends {\n nodeType: NodeType | string;\n [NodeTypes.INSERTION]: infer I;\n fields: readonly (infer F)[];\n}\n ? <V extends { [K in Extract<F, string>]: string | number }>(\n values: V\n ) => I extends string ? IntlayerNode<string> : DeepTransformContent<I, L>\n : never;\n\nexport const insertionPlugin: Plugins =\n process.env['INTLAYER_NODE_TYPE_INSERTION'] === 'false'\n ? fallbackPlugin\n : {\n id: 'insertion-plugin',\n canHandle: (node) =>\n typeof node === 'object' && node?.nodeType === NodeTypes.INSERTION,\n transform: (node: InsertionContent, props, deepTransformNode) => {\n const newKeyPath: KeyPath[] = [\n ...props.keyPath,\n { type: NodeTypes.INSERTION },\n ];\n\n const children = node[NodeTypes.INSERTION];\n\n const insertionStringPlugin: Plugins = {\n id: 'insertion-string-plugin',\n canHandle: (node) => typeof node === 'string',\n transform: (node: string, subProps, deepTransformNode) => {\n const transformedResult = deepTransformNode(node, {\n ...subProps,\n children: node,\n plugins: (props.plugins ?? ([] as Plugins[])).filter(\n (plugin) => plugin.id !== 'intlayer-node-plugin'\n ),\n });\n\n return (\n values: {\n [K in InsertionContent['fields'][number]]: string | number;\n }\n ) => {\n const result = splitInsertionTemplate(\n transformedResult,\n values\n );\n const resultStr = result.isSimple\n ? (result.parts as string)\n : (result.parts as string[]).join('');\n\n return deepTransformNode(resultStr, {\n ...subProps,\n plugins: props.plugins,\n children: resultStr,\n });\n };\n },\n };\n\n const transformed = deepTransformNode(children, {\n ...props,\n children,\n keyPath: newKeyPath,\n plugins: [insertionStringPlugin, ...(props.plugins ?? [])],\n });\n\n if (\n typeof children === 'object' &&\n children !== null &&\n 'nodeType' in children &&\n (\n [NodeTypes.ENUMERATION, NodeTypes.CONDITION] as NodeType[]\n ).includes(children.nodeType as NodeType)\n ) {\n return (values: any) => (arg: any) => {\n const inner = (transformed as (a: any) => any)(arg);\n return typeof inner === 'function' ? inner(values) : inner;\n };\n }\n\n return transformed;\n },\n };\n\n/** ---------------------------------------------\n * MARKDOWN PLUGIN\n * --------------------------------------------- */\n\nconst vanillaRuntime = {\n createElement: (tag: string, props: any, ...children: any[]) => {\n const attrs = Object.entries(props || {})\n .filter(\n ([key]) => key !== 'children' && key !== 'key' && key !== '_innerHTML'\n )\n .map(([key, value]) => `${key}=\"${value}\"`)\n .join(' ');\n const innerHTML = props?._innerHTML;\n const childrenStr =\n innerHTML !== undefined ? innerHTML : children.flat(Infinity).join('');\n return `<${tag}${attrs ? ` ${attrs}` : ''}>${childrenStr}</${tag}>`;\n },\n normalizeProps: (_tag: string, props: Record<string, any>) => {\n const normalized: Record<string, any> = {};\n for (const [key, value] of Object.entries(props)) {\n if (key === 'className') {\n normalized.class = value;\n } else if (key === 'htmlFor') {\n normalized.for = value;\n } else if (key === 'dangerouslySetInnerHTML' && (value as any)?.__html) {\n normalized._innerHTML = (value as any).__html;\n } else {\n normalized[key] = value;\n }\n }\n return normalized;\n },\n};\n\nexport type MarkdownStringCond<T> = T extends string\n ? IntlayerNode<\n string,\n {\n metadata: DeepTransformContent<string>;\n /** Returns the rendered markdown; render with .use(). */\n use: (components?: HTMLComponents<'permissive', {}>) => string;\n }\n >\n : never;\n\nexport const markdownStringPlugin: Plugins =\n process.env['INTLAYER_NODE_TYPE_MARKDOWN'] === 'false'\n ? fallbackPlugin\n : {\n id: 'markdown-string-plugin',\n canHandle: (node) => typeof node === 'string',\n transform: (node: string, props, deepTransformNode) => {\n const { plugins: _plugins, ...rest } = props;\n const metadata = getMarkdownMetadata(node) ?? {};\n\n const metadataPlugins: Plugins = {\n id: 'markdown-metadata-plugin',\n canHandle: (metadataNode) =>\n typeof metadataNode === 'string' ||\n typeof metadataNode === 'number' ||\n typeof metadataNode === 'boolean' ||\n !metadataNode,\n transform: (metadataNode, subProps) =>\n renderIntlayerNode({\n ...subProps,\n value: metadataNode,\n children: node,\n }),\n };\n\n const metadataNodes = deepTransformNode(metadata, {\n plugins: [metadataPlugins],\n dictionaryKey: rest.dictionaryKey,\n keyPath: [],\n });\n\n const compile = (components: any = {}) =>\n compileWithOptions(\n node,\n {\n ...vanillaRuntime,\n createElement: (tag: any, props: any, ...children: any[]) => {\n const override = components[tag];\n if (typeof override === 'function') {\n return override({ ...props, children: children.join('') });\n }\n return vanillaRuntime.createElement(tag, props, ...children);\n },\n },\n {}\n ) as any;\n\n const value = compile();\n let children = node;\n\n if (\n process.env['INTLAYER_EDITOR_ENABLED'] !== 'false' &&\n editor.enabled\n ) {\n const keyPathJson = JSON.stringify(props.keyPath ?? []);\n const dictKey = String(props.dictionaryKey ?? '');\n children = `<intlayer-content-selector-wrapper key-path=\"${escapeHtmlAttr(keyPathJson)}\" dictionary-key=\"${escapeHtmlAttr(dictKey)}\">${escapeHtmlText(value)}</intlayer-content-selector-wrapper>`;\n }\n\n return renderIntlayerNode({\n ...props,\n value,\n children,\n additionalProps: {\n metadata: metadataNodes,\n use: (components?: any) => compile(components),\n },\n }) as any;\n },\n };\n\nexport type MarkdownCond<T> = T extends {\n nodeType: NodeType | string;\n [NodeTypes.MARKDOWN]: infer M;\n metadata?: infer U;\n tags?: infer U;\n}\n ? {\n use: (components?: HTMLComponents<'permissive', U>) => IntlayerNode<M>;\n metadata: DeepTransformContent<U>;\n }\n : never;\n\nexport const markdownPlugin: Plugins =\n process.env['INTLAYER_NODE_TYPE_MARKDOWN'] === 'false'\n ? fallbackPlugin\n : {\n id: 'markdown-plugin',\n canHandle: (node) =>\n typeof node === 'object' && node?.nodeType === NodeTypes.MARKDOWN,\n transform: (node: MarkdownContent, props, deepTransformNode) => {\n const newKeyPath: KeyPath[] = [\n ...props.keyPath,\n { type: NodeTypes.MARKDOWN },\n ];\n const children = node[NodeTypes.MARKDOWN];\n\n return deepTransformNode(children, {\n ...props,\n children,\n keyPath: newKeyPath,\n plugins: [markdownStringPlugin, ...(props.plugins ?? [])],\n });\n },\n };\n\n/** ---------------------------------------------\n * HTML PLUGIN\n * --------------------------------------------- */\n\nexport type HTMLPluginCond<T> = T extends {\n nodeType: NodeType | string;\n [NodeTypes.HTML]: infer I;\n tags?: infer U;\n}\n ? {\n use: (components?: HTMLComponents<'permissive', U>) => IntlayerNode<I>;\n }\n : never;\n\nexport const htmlPlugin: Plugins =\n process.env['INTLAYER_NODE_TYPE_HTML'] === 'false'\n ? fallbackPlugin\n : {\n id: 'html-plugin',\n canHandle: (node) =>\n typeof node === 'object' && node?.nodeType === NodeTypes.HTML,\n transform: (node: HTMLContent<string>, props) => {\n const htmlStr = node[NodeTypes.HTML];\n\n const use = (components: Record<string, any> = {}) => {\n const wrappedComponents = new Proxy(components, {\n get(target, prop) {\n if (typeof prop === 'string' && prop in target) {\n const Component = target[prop];\n return (props: any) => {\n const children = Array.isArray(props.children)\n ? props.children.join('')\n : props.children;\n return Component({ ...props, children });\n };\n }\n if (typeof prop === 'string' && /^[a-z][a-z0-9]*$/.test(prop)) {\n return (props: any) => {\n const attrs = Object.entries(props)\n .filter(([key]) => key !== 'children' && key !== 'key')\n .map(([key, value]) => `${key}=\"${value}\"`)\n .join(' ');\n const children = Array.isArray(props.children)\n ? props.children.join('')\n : props.children;\n return `<${prop}${attrs ? ` ${attrs}` : ''}>${children}</${prop}>`;\n };\n }\n return undefined;\n },\n });\n\n const result = getHTML(htmlStr, wrappedComponents as any);\n return Array.isArray(result) ? result.join('') : result;\n };\n\n const value = use();\n let children = htmlStr;\n\n if (\n process.env['INTLAYER_EDITOR_ENABLED'] !== 'false' &&\n editor.enabled\n ) {\n const keyPathJson = JSON.stringify(props.keyPath ?? []);\n const dictKey = String(props.dictionaryKey ?? '');\n children = `<intlayer-content-selector-wrapper key-path=\"${escapeHtmlAttr(keyPathJson)}\" dictionary-key=\"${escapeHtmlAttr(dictKey)}\">${escapeHtmlText(value)}</intlayer-content-selector-wrapper>`;\n }\n\n return renderIntlayerNode({\n ...props,\n value,\n children,\n additionalProps: {\n use: (components?: any) => use(components),\n },\n });\n },\n };\n\n/** ---------------------------------------------\n * PLUGINS RESULT\n * --------------------------------------------- */\n\nexport interface IInterpreterPluginVanilla<T, S, L extends LocalesValues> {\n vanillaIntlayerNode: IntlayerNodeCond<T>;\n vanillaInsertion: InsertionCond<T, S, L>;\n vanillaMarkdown: MarkdownCond<T>;\n vanillaHtml: HTMLPluginCond<T>;\n}\n\n/**\n * Insert this type as param of `DeepTransformContent` to avoid `intlayer` package pollution.\n *\n * Otherwise the `vanilla-intlayer` plugins will override the types of `intlayer` functions.\n * Use `getIntlayer` from `vanilla-intlayer` (not from `intlayer`) to get properly typed\n * `IntlayerNode` wrappers with `.value` access on string/number content.\n */\nexport type IInterpreterPluginState = Omit<\n IInterpreterPluginStateCore,\n 'insertion'\n> & {\n vanillaIntlayerNode: true;\n vanillaInsertion: true;\n vanillaMarkdown: true;\n vanillaHtml: true;\n};\n\nexport type DeepTransformContent<\n T,\n L extends LocalesValues = DeclaredLocales,\n> = DeepTransformContentCore<T, IInterpreterPluginState, L>;\n\nconst pluginsCache = new Map<string, Plugins[]>();\n\n/**\n * Get the plugins array for Vanilla content transformation.\n * This function is used by both getIntlayer and getDictionary to ensure consistent plugin configuration.\n */\nexport const getPlugins = (\n locale?: LocalesValues,\n fallback = true\n): Plugins[] => {\n const currentLocale = locale ?? internationalization.defaultLocale;\n const cacheKey = `${currentLocale}_${fallback}`;\n\n if (pluginsCache.has(cacheKey)) {\n return pluginsCache.get(cacheKey)!;\n }\n\n const plugins = [\n translationPlugin(\n locale ?? internationalization.defaultLocale,\n fallback ? internationalization.defaultLocale : undefined\n ),\n enumerationPlugin,\n pluralPlugin(locale ?? internationalization.defaultLocale),\n conditionPlugin,\n nestedPlugin(locale ?? internationalization.defaultLocale),\n filePlugin,\n genderPlugin,\n intlayerNodePlugins,\n insertionPlugin,\n markdownPlugin,\n htmlPlugin,\n ] as Plugins[];\n\n pluginsCache.set(cacheKey, plugins);\n\n return plugins;\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"plugins.mjs","names":[],"sources":["../../src/plugins.ts"],"sourcesContent":["import { editor, internationalization } from '@intlayer/config/built';\nimport {\n conditionPlugin,\n type DeepTransformContent as DeepTransformContentCore,\n enumerationPlugin,\n fallbackPlugin,\n filePlugin,\n genderPlugin,\n getHTML,\n type IInterpreterPluginState as IInterpreterPluginStateCore,\n nestedPlugin,\n type Plugins,\n pluralPlugin,\n splitInsertionTemplate,\n translationPlugin,\n} from '@intlayer/core/interpreter';\nimport {\n compileWithOptions,\n getMarkdownMetadata,\n} from '@intlayer/core/markdown';\nimport type {\n HTMLContent,\n InsertionContent,\n MarkdownContent,\n} from '@intlayer/core/transpiler';\nimport type { KeyPath } from '@intlayer/types/keyPath';\nimport type {\n DeclaredLocales,\n LocalesValues,\n} from '@intlayer/types/module_augmentation';\nimport type { NodeType } from '@intlayer/types/nodeType';\nimport * as NodeTypes from '@intlayer/types/nodeType';\nimport type { HTMLComponents } from './html/types';\nimport {\n type IntlayerNode as IntlayerNodeCore,\n renderIntlayerNode,\n} from './renderIntlayerNode';\n\n/** ---------------------------------------------\n * INTLAYER NODE PLUGIN\n * --------------------------------------------- */\n\nexport type IntlayerNodeCond<T> = T extends number | string\n ? IntlayerNode<T>\n : never;\n\nexport type IntlayerNode<T, P = {}> = IntlayerNodeCore<T> & P;\n\nconst escapeHtmlAttr = (str: string): string =>\n str.replace(/&/g, '&amp;').replace(/\"/g, '&quot;');\n\nconst escapeHtmlText = (str: string): string =>\n str.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;');\n\nexport const intlayerNodePlugins: Plugins = {\n id: 'intlayer-node-plugin',\n canHandle: (node) =>\n typeof node === 'bigint' ||\n typeof node === 'string' ||\n typeof node === 'number',\n transform: (_node, { children, keyPath, dictionaryKey, ...rest }) => {\n if (process.env['INTLAYER_EDITOR_ENABLED'] !== 'false' && editor.enabled) {\n const rawStr = String(children ?? '');\n const keyPathJson = JSON.stringify(keyPath ?? []);\n const dictKey = String(dictionaryKey ?? '');\n\n /**\n * In editor mode, string coercion returns the wrapper HTML so that\n * `element.innerHTML = content.title` automatically inserts the\n * `<intlayer-content-selector-wrapper>` into the DOM.\n */\n const htmlStr = `<intlayer-content-selector-wrapper key-path=\"${escapeHtmlAttr(keyPathJson)}\" dictionary-key=\"${escapeHtmlAttr(dictKey)}\">${escapeHtmlText(rawStr)}</intlayer-content-selector-wrapper>`;\n\n return renderIntlayerNode({\n ...rest,\n value: children as string,\n children: htmlStr,\n keyPath,\n dictionaryKey,\n additionalProps: {\n toElement: (): HTMLElement => {\n const wrapper = document.createElement(\n 'intlayer-content-selector-wrapper'\n );\n wrapper.setAttribute('key-path', keyPathJson);\n wrapper.setAttribute('dictionary-key', dictKey);\n wrapper.textContent = rawStr;\n return wrapper;\n },\n },\n });\n }\n\n return renderIntlayerNode({\n ...rest,\n value: children as string,\n children,\n });\n },\n};\n\n/** ---------------------------------------------\n * INSERTION PLUGIN\n * --------------------------------------------- */\n\nexport type InsertionCond<T, _S, L extends LocalesValues> = T extends {\n nodeType: NodeType | string;\n [NodeTypes.INSERTION]: infer I;\n fields: readonly (infer F)[];\n}\n ? <V extends { [K in Extract<F, string>]: string | number }>(\n values: V\n ) => I extends string ? IntlayerNode<string> : DeepTransformContent<I, L>\n : never;\n\nexport const insertionPlugin: Plugins =\n process.env['INTLAYER_NODE_TYPE_INSERTION'] === 'false'\n ? fallbackPlugin\n : {\n id: 'insertion-plugin',\n canHandle: (node) =>\n typeof node === 'object' && node?.nodeType === NodeTypes.INSERTION,\n transform: (node: InsertionContent, props, deepTransformNode) => {\n const newKeyPath: KeyPath[] = [\n ...props.keyPath,\n { type: NodeTypes.INSERTION },\n ];\n\n const children = node[NodeTypes.INSERTION];\n\n const insertionStringPlugin: Plugins = {\n id: 'insertion-string-plugin',\n canHandle: (node) => typeof node === 'string',\n transform: (node: string, subProps, deepTransformNode) => {\n const transformedResult = deepTransformNode(node, {\n ...subProps,\n children: node,\n plugins: (props.plugins ?? ([] as Plugins[])).filter(\n (plugin) => plugin.id !== 'intlayer-node-plugin'\n ),\n });\n\n return (\n values: {\n [K in InsertionContent['fields'][number]]: string | number;\n }\n ) => {\n const result = splitInsertionTemplate(\n transformedResult,\n values\n );\n const resultStr = result.isSimple\n ? (result.parts as string)\n : (result.parts as string[]).join('');\n\n return deepTransformNode(resultStr, {\n ...subProps,\n plugins: props.plugins,\n children: resultStr,\n });\n };\n },\n };\n\n const transformed = deepTransformNode(children, {\n ...props,\n children,\n keyPath: newKeyPath,\n plugins: [insertionStringPlugin, ...(props.plugins ?? [])],\n });\n\n if (\n typeof children === 'object' &&\n children !== null &&\n 'nodeType' in children &&\n (\n [NodeTypes.ENUMERATION, NodeTypes.CONDITION] as NodeType[]\n ).includes(children.nodeType as NodeType)\n ) {\n return (values: any) => (arg: any) => {\n const inner = (transformed as (a: any) => any)(arg);\n return typeof inner === 'function' ? inner(values) : inner;\n };\n }\n\n return transformed;\n },\n };\n\n/** ---------------------------------------------\n * MARKDOWN PLUGIN\n * --------------------------------------------- */\n\nconst vanillaRuntime = {\n createElement: (tag: string, props: any, ...children: any[]) => {\n const attrs = Object.entries(props || {})\n .filter(\n ([key]) => key !== 'children' && key !== 'key' && key !== '_innerHTML'\n )\n .map(([key, value]) => `${key}=\"${value}\"`)\n .join(' ');\n const innerHTML = props?._innerHTML;\n const childrenStr =\n innerHTML !== undefined ? innerHTML : children.flat(Infinity).join('');\n return `<${tag}${attrs ? ` ${attrs}` : ''}>${childrenStr}</${tag}>`;\n },\n normalizeProps: (_tag: string, props: Record<string, any>) => {\n const normalized: Record<string, any> = {};\n for (const [key, value] of Object.entries(props)) {\n if (key === 'className') {\n normalized.class = value;\n } else if (key === 'htmlFor') {\n normalized.for = value;\n } else if (key === 'dangerouslySetInnerHTML' && (value as any)?.__html) {\n normalized._innerHTML = (value as any).__html;\n } else {\n normalized[key] = value;\n }\n }\n return normalized;\n },\n};\n\nexport type MarkdownStringCond<T> = T extends string\n ? IntlayerNode<\n string,\n {\n metadata: DeepTransformContent<string>;\n /** Returns the rendered markdown; render with .use(). */\n use: (components?: HTMLComponents<'permissive', {}>) => string;\n }\n >\n : never;\n\nexport const markdownStringPlugin: Plugins =\n process.env['INTLAYER_NODE_TYPE_MARKDOWN'] === 'false'\n ? fallbackPlugin\n : {\n id: 'markdown-string-plugin',\n canHandle: (node) => typeof node === 'string',\n transform: (node: string, props, deepTransformNode) => {\n const { plugins: _plugins, ...rest } = props;\n const metadata = getMarkdownMetadata(node) ?? {};\n\n const metadataPlugins: Plugins = {\n id: 'markdown-metadata-plugin',\n canHandle: (metadataNode) =>\n typeof metadataNode === 'string' ||\n typeof metadataNode === 'number' ||\n typeof metadataNode === 'boolean' ||\n !metadataNode,\n transform: (metadataNode, subProps) =>\n renderIntlayerNode({\n ...subProps,\n value: metadataNode,\n children: node,\n }),\n };\n\n const metadataNodes = deepTransformNode(metadata, {\n plugins: [metadataPlugins],\n dictionaryKey: rest.dictionaryKey,\n keyPath: [],\n });\n\n const compile = (components: any = {}) =>\n compileWithOptions(\n node,\n {\n ...vanillaRuntime,\n createElement: (tag: any, props: any, ...children: any[]) => {\n const override = components[tag];\n if (typeof override === 'function') {\n return override({ ...props, children: children.join('') });\n }\n return vanillaRuntime.createElement(tag, props, ...children);\n },\n },\n {}\n ) as any;\n\n const value = compile();\n let children = node;\n\n if (\n process.env['INTLAYER_EDITOR_ENABLED'] !== 'false' &&\n editor.enabled\n ) {\n const keyPathJson = JSON.stringify(props.keyPath ?? []);\n const dictKey = String(props.dictionaryKey ?? '');\n children = `<intlayer-content-selector-wrapper key-path=\"${escapeHtmlAttr(keyPathJson)}\" dictionary-key=\"${escapeHtmlAttr(dictKey)}\">${escapeHtmlText(value)}</intlayer-content-selector-wrapper>`;\n }\n\n return renderIntlayerNode({\n ...props,\n value,\n children,\n additionalProps: {\n metadata: metadataNodes,\n use: (components?: any) => compile(components),\n },\n }) as any;\n },\n };\n\nexport type MarkdownCond<T> = T extends {\n nodeType: NodeType | string;\n [NodeTypes.MARKDOWN]: infer M;\n metadata?: infer U;\n tags?: infer U;\n}\n ? {\n use: (components?: HTMLComponents<'permissive', U>) => IntlayerNode<M>;\n metadata: DeepTransformContent<U>;\n }\n : never;\n\nexport const markdownPlugin: Plugins =\n process.env['INTLAYER_NODE_TYPE_MARKDOWN'] === 'false'\n ? fallbackPlugin\n : {\n id: 'markdown-plugin',\n canHandle: (node) =>\n typeof node === 'object' && node?.nodeType === NodeTypes.MARKDOWN,\n transform: (node: MarkdownContent, props, deepTransformNode) => {\n const newKeyPath: KeyPath[] = [\n ...props.keyPath,\n { type: NodeTypes.MARKDOWN },\n ];\n const children = node[NodeTypes.MARKDOWN];\n\n return deepTransformNode(children, {\n ...props,\n children,\n keyPath: newKeyPath,\n plugins: [markdownStringPlugin, ...(props.plugins ?? [])],\n });\n },\n };\n\n/** ---------------------------------------------\n * HTML PLUGIN\n * --------------------------------------------- */\n\nexport type HTMLPluginCond<T> = T extends {\n nodeType: NodeType | string;\n [NodeTypes.HTML]: infer I;\n tags?: infer U;\n}\n ? {\n use: (components?: HTMLComponents<'permissive', U>) => IntlayerNode<I>;\n }\n : never;\n\nexport const htmlPlugin: Plugins =\n process.env['INTLAYER_NODE_TYPE_HTML'] === 'false'\n ? fallbackPlugin\n : {\n id: 'html-plugin',\n canHandle: (node) =>\n typeof node === 'object' && node?.nodeType === NodeTypes.HTML,\n transform: (node: HTMLContent<string>, props) => {\n const htmlStr = node[NodeTypes.HTML];\n\n const use = (components: Record<string, any> = {}) => {\n const wrappedComponents = new Proxy(components, {\n get(target, prop) {\n if (typeof prop === 'string' && prop in target) {\n const Component = target[prop];\n return (props: any) => {\n const children = Array.isArray(props.children)\n ? props.children.join('')\n : props.children;\n return Component({ ...props, children });\n };\n }\n if (typeof prop === 'string' && /^[a-z][a-z0-9]*$/.test(prop)) {\n return (props: any) => {\n const attrs = Object.entries(props)\n .filter(([key]) => key !== 'children' && key !== 'key')\n .map(([key, value]) => `${key}=\"${value}\"`)\n .join(' ');\n const children = Array.isArray(props.children)\n ? props.children.join('')\n : props.children;\n return `<${prop}${attrs ? ` ${attrs}` : ''}>${children}</${prop}>`;\n };\n }\n return undefined;\n },\n });\n\n const result = getHTML(htmlStr, wrappedComponents as any);\n return Array.isArray(result) ? result.join('') : result;\n };\n\n const value = use();\n let children = htmlStr;\n\n if (\n process.env['INTLAYER_EDITOR_ENABLED'] !== 'false' &&\n editor.enabled\n ) {\n const keyPathJson = JSON.stringify(props.keyPath ?? []);\n const dictKey = String(props.dictionaryKey ?? '');\n children = `<intlayer-content-selector-wrapper key-path=\"${escapeHtmlAttr(keyPathJson)}\" dictionary-key=\"${escapeHtmlAttr(dictKey)}\">${escapeHtmlText(value)}</intlayer-content-selector-wrapper>`;\n }\n\n return renderIntlayerNode({\n ...props,\n value,\n children,\n additionalProps: {\n use: (components?: any) => use(components),\n },\n });\n },\n };\n\n/** ---------------------------------------------\n * PLUGINS RESULT\n * --------------------------------------------- */\n\nexport interface IInterpreterPluginVanilla<T, S, L extends LocalesValues> {\n vanillaIntlayerNode: IntlayerNodeCond<T>;\n vanillaInsertion: InsertionCond<T, S, L>;\n vanillaMarkdown: MarkdownCond<T>;\n vanillaHtml: HTMLPluginCond<T>;\n}\n\n/**\n * Insert this type as param of `DeepTransformContent` to avoid `intlayer` package pollution.\n *\n * Otherwise the `vanilla-intlayer` plugins will override the types of `intlayer` functions.\n * Use `getIntlayer` from `vanilla-intlayer` (not from `intlayer`) to get properly typed\n * `IntlayerNode` wrappers with `.value` access on string/number content.\n */\nexport type IInterpreterPluginState = Omit<\n IInterpreterPluginStateCore,\n 'insertion'\n> & {\n vanillaIntlayerNode: true;\n vanillaInsertion: true;\n vanillaMarkdown: true;\n vanillaHtml: true;\n};\n\nexport type DeepTransformContent<\n T,\n L extends LocalesValues = DeclaredLocales,\n> = DeepTransformContentCore<T, IInterpreterPluginState, L>;\n\nconst pluginsCache = new Map<string, Plugins[]>();\n\n/**\n * Get the plugins array for Vanilla content transformation.\n * This function is used by both getIntlayer and getDictionary to ensure consistent plugin configuration.\n */\nexport const getPlugins = (\n locale?: LocalesValues,\n fallback = true\n): Plugins[] => {\n const currentLocale = locale ?? internationalization.defaultLocale;\n const cacheKey = `${currentLocale}_${fallback}`;\n\n if (pluginsCache.has(cacheKey)) {\n return pluginsCache.get(cacheKey)!;\n }\n\n const plugins = [\n translationPlugin(\n locale ?? internationalization.defaultLocale,\n fallback ? internationalization.defaultLocale : undefined\n ),\n enumerationPlugin,\n pluralPlugin(locale ?? internationalization.defaultLocale),\n conditionPlugin,\n nestedPlugin(locale ?? internationalization.defaultLocale),\n filePlugin,\n genderPlugin,\n intlayerNodePlugins,\n insertionPlugin,\n markdownPlugin,\n htmlPlugin,\n ] as Plugins[];\n\n pluginsCache.set(cacheKey, plugins);\n\n return plugins;\n};\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"renderIntlayerNode.mjs","names":[],"sources":["../../src/renderIntlayerNode.ts"],"sourcesContent":["import type { ResolvedEditor } from '@intlayer/types/module_augmentation';\n\nexport type IntlayerNode<T = string> = ResolvedEditor<\n T & {\n raw: T;\n value: T;\n toString: () => string;\n valueOf: () => T;\n toJSON: () => T;\n __update: (next: IntlayerNode<T>) => void;\n },\n {\n raw: T;\n value: T;\n toString: () => string;\n valueOf: () => T;\n toJSON: () => T;\n __update: (next: IntlayerNode<T>) => void;\n }\n> &\n T;\n\nexport const renderIntlayerNode = <\n T, // Broadened to support arrays, numbers, objects, etc.\n>({\n value,\n children,\n additionalProps = {},\n}: {\n value: T;\n children?: any;\n additionalProps?: Record<string, unknown>;\n [key: string]: unknown;\n}): IntlayerNode<T> => {\n let _value = value;\n\n // When children is a string that differs from value, it acts as a display\n // override (e.g. editor HTML wrapper). Otherwise toString/toPrimitive reflect\n // the live _value so that __update propagates.\n const displayOverride =\n typeof children === 'string' && children !== String(value ?? '')\n ? children\n : null;\n\n const node = {\n toString: () => displayOverride ?? String(_value ?? ''),\n valueOf: () => _value,\n [Symbol.toPrimitive]: () => displayOverride ?? _value,\n toJSON: () => _value,\n\n get raw() {\n return _value;\n },\n set raw(value: T) {\n _value = value;\n },\n\n get value() {\n return _value;\n },\n\n __update(next: any) {\n _value = next?.raw ?? next?.value ?? next;\n },\n\n ...additionalProps,\n };\n\n // Delegate native methods from the underlying value (any type) to node.\n if (_value !== null && _value !== undefined) {\n const valObj = Object(_value); // Safely boxes primitives (e.g., 50 -> Number object)\n const proto = Object.getPrototypeOf(valObj);\n for (const prop of Object.getOwnPropertyNames(proto)) {\n if (prop === 'constructor' || prop in node) continue;\n const valProp = valObj[prop]; // read from instance so length/index values are correct\n if (typeof valProp === 'function') {\n Object.defineProperty(node, prop, {\n value: valProp.bind(_value),\n writable: true,\n configurable: true,\n });\n }\n }\n }\n\n return node as unknown as IntlayerNode<T>;\n};\n"],"mappings":";AAsBA,MAAa,sBAEX,EACA,OACA,UACA,kBAAkB,CAAC,QAME;CACrB,IAAI,SAAS;CAKb,MAAM,kBACJ,OAAO,aAAa,YAAY,aAAa,OAAO,SAAS,EAAE,IAC3D,WACA;CAEN,MAAM,OAAO;EACX,gBAAgB,mBAAmB,OAAO,UAAU,EAAE;EACtD,eAAe;GACd,OAAO,oBAAoB,mBAAmB;EAC/C,cAAc;EAEd,IAAI,MAAM;GACR,OAAO;EACT;EACA,IAAI,IAAI,OAAU;GAChB,SAAS;EACX;EAEA,IAAI,QAAQ;GACV,OAAO;EACT;EAEA,SAAS,MAAW;GAClB,SAAS,MAAM,OAAO,MAAM,SAAS;EACvC;EAEA,GAAG;CACL;CAGA,IAAI,WAAW,QAAQ,WAAW,QAAW;EAC3C,MAAM,SAAS,OAAO,MAAM;EAC5B,MAAM,QAAQ,OAAO,eAAe,MAAM;EAC1C,KAAK,MAAM,QAAQ,OAAO,oBAAoB,KAAK,GAAG;GACpD,IAAI,SAAS,iBAAiB,QAAQ,MAAM;GAC5C,MAAM,UAAU,OAAO;GACvB,IAAI,OAAO,YAAY,YACrB,OAAO,eAAe,MAAM,MAAM;IAChC,OAAO,QAAQ,KAAK,MAAM;IAC1B,UAAU;IACV,cAAc;GAChB,CAAC;EAEL;CACF;CAEA,OAAO;AACT"}
1
+ {"version":3,"file":"renderIntlayerNode.mjs","names":[],"sources":["../../src/renderIntlayerNode.ts"],"sourcesContent":["import type { ResolvedEditor } from '@intlayer/types/module_augmentation';\n\nexport type IntlayerNode<T = string> = ResolvedEditor<\n T & {\n raw: T;\n value: T;\n toString: () => string;\n valueOf: () => T;\n toJSON: () => T;\n __update: (next: IntlayerNode<T>) => void;\n },\n {\n raw: T;\n value: T;\n toString: () => string;\n valueOf: () => T;\n toJSON: () => T;\n __update: (next: IntlayerNode<T>) => void;\n }\n> &\n T;\n\nexport const renderIntlayerNode = <\n T, // Broadened to support arrays, numbers, objects, etc.\n>({\n value,\n children,\n additionalProps = {},\n}: {\n value: T;\n children?: any;\n additionalProps?: Record<string, unknown>;\n [key: string]: unknown;\n}): IntlayerNode<T> => {\n let _value = value;\n\n // When children is a string that differs from value, it acts as a display\n // override (e.g. editor HTML wrapper). Otherwise toString/toPrimitive reflect\n // the live _value so that __update propagates.\n const displayOverride =\n typeof children === 'string' && children !== String(value ?? '')\n ? children\n : null;\n\n const node = {\n toString: () => displayOverride ?? String(_value ?? ''),\n valueOf: () => _value,\n [Symbol.toPrimitive]: () => displayOverride ?? _value,\n toJSON: () => _value,\n\n get raw() {\n return _value;\n },\n set raw(value: T) {\n _value = value;\n },\n\n get value() {\n return _value;\n },\n\n __update(next: any) {\n _value = next?.raw ?? next?.value ?? next;\n },\n\n ...additionalProps,\n };\n\n // Delegate native methods from the underlying value (any type) to node.\n if (_value !== null && _value !== undefined) {\n const valObj = Object(_value); // Safely boxes primitives (e.g., 50 -> Number object)\n const proto = Object.getPrototypeOf(valObj);\n for (const prop of Object.getOwnPropertyNames(proto)) {\n if (prop === 'constructor' || prop in node) continue;\n const valProp = valObj[prop]; // read from instance so length/index values are correct\n if (typeof valProp === 'function') {\n Object.defineProperty(node, prop, {\n value: valProp.bind(_value),\n writable: true,\n configurable: true,\n });\n }\n }\n }\n\n return node as unknown as IntlayerNode<T>;\n};\n"],"mappings":";AAsBA,MAAa,sBAEX,EACA,OACA,UACA,kBAAkB,EAAE,OAMC;CACrB,IAAI,SAAS;CAKb,MAAM,kBACJ,OAAO,aAAa,YAAY,aAAa,OAAO,SAAS,GAAG,GAC5D,WACA;CAEN,MAAM,OAAO;EACX,gBAAgB,mBAAmB,OAAO,UAAU,GAAG;EACvD,eAAe;GACd,OAAO,oBAAoB,mBAAmB;EAC/C,cAAc;EAEd,IAAI,MAAM;AACR,UAAO;;EAET,IAAI,IAAI,OAAU;AAChB,YAAS;;EAGX,IAAI,QAAQ;AACV,UAAO;;EAGT,SAAS,MAAW;AAClB,YAAS,MAAM,OAAO,MAAM,SAAS;;EAGvC,GAAG;EACJ;AAGD,KAAI,WAAW,QAAQ,WAAW,QAAW;EAC3C,MAAM,SAAS,OAAO,OAAO;EAC7B,MAAM,QAAQ,OAAO,eAAe,OAAO;AAC3C,OAAK,MAAM,QAAQ,OAAO,oBAAoB,MAAM,EAAE;AACpD,OAAI,SAAS,iBAAiB,QAAQ,KAAM;GAC5C,MAAM,UAAU,OAAO;AACvB,OAAI,OAAO,YAAY,WACrB,QAAO,eAAe,MAAM,MAAM;IAChC,OAAO,QAAQ,KAAK,OAAO;IAC3B,UAAU;IACV,cAAc;IACf,CAAC;;;AAKR,QAAO"}
@@ -1 +1 @@
1
- {"version":3,"file":"installIntlayer.d.ts","names":[],"sources":["../../../src/client/installIntlayer.ts"],"mappings":";;;KAKK,cAAA,IAAkB,MAAqB,EAAb,aAAa;AAAA,cAE/B,cAAA;EAAA,QACH,OAAA;EAAA,QACA,UAAA;EACR,eAAA;cAEY,MAAA,GAAS,aAAA,EAAe,eAAA;EAAA,IAUhC,MAAA,CAAA,GAAU,aAAA;EAId,SAAA,CAAU,SAAA,EAAW,aAAA;EAOrB,SAAA,CAAU,QAAA,EAAU,cAAA;;;;;EAWpB,MAAA,CAAA;AAAA;;;;cAeW,oBAAA,GACX,MAAA,GAAS,aAAA,EACT,eAAA,eACC,cAKF;;;;cAKY,iBAAA,QAAwB,cAKpC;;;;;;;;;;;AAjCO;AAeR;;;;;;;;;AAQC;AAKD;;;;AAKC;AA+BD;;;cAAa,eAAA;EAAmB,MAAA;EAAA;AAAA;EAI9B,MAAA,GAAS,aAAA;EACT,eAAA;AAAA,MACO,cAAA"}
1
+ {"version":3,"file":"installIntlayer.d.ts","names":[],"sources":["../../../src/client/installIntlayer.ts"],"mappings":";;;KAKK,cAAA,IAAkB,MAAA,EAAQ,aAAA;AAAA,cAElB,cAAA;EAAA,QACH,OAAA;EAAA,QACA,UAAA;EACR,eAAA;cAEY,MAAA,GAAS,aAAA,EAAe,eAAA;EAAA,IAUhC,MAAA,CAAA,GAAU,aAAA;EAId,SAAA,CAAU,SAAA,EAAW,aAAA;EAOrB,SAAA,CAAU,QAAA,EAAU,cAAA;;;;;EAWpB,MAAA,CAAA;AAAA;;;;cAeW,oBAAA,GACX,MAAA,GAAS,aAAA,EACT,eAAA,eACC,cAAA;;;;cAUU,iBAAA,QAAwB,cAAA;;;;;;;;;;;;AAbrC;;;;;;;;;;AAaA;;;;;AAoCA;;;cAAa,eAAA;EAAmB,MAAA;EAAA;AAAA;EAI9B,MAAA,GAAS,aAAA;EACT,eAAA;AAAA,MACO,cAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"useDictionary.d.ts","names":[],"sources":["../../../src/client/useDictionary.ts"],"mappings":";;;;;KASY,YAAA,MAAkB,CAAA;;AAA9B;;;;;;;;;;EAYE,QAAA,GACE,QAAA,aAAqB,UAAA,YAAsB,aAAA,EACzC,OAAA,EAAS,oBAAA,CAAqB,CAAA,aAAc,CAAA,eAE3C,YAAA,CAAa,CAAA;AAAA;;;;;;;;;;;;;;;;;AAAC;AA0CrB;;;;;;;;;;;;;;;;;;;;;;cAAa,aAAA,mBACK,UAAA,kBACA,aAAA,GAAgB,eAAA,EAEhC,UAAA,EAAY,CAAA,EACZ,MAAA,GAAS,CAAA,KACR,YAAA,CAAa,oBAAA,CAAqB,CAAA,aAAc,CAAA"}
1
+ {"version":3,"file":"useDictionary.d.ts","names":[],"sources":["../../../src/client/useDictionary.ts"],"mappings":";;;;;KASY,YAAA,MAAkB,CAAA;;AAA9B;;;;;;;;;;EAYE,QAAA,GACE,QAAA,aAAqB,UAAA,YAAsB,aAAA,EACzC,OAAA,EAAS,oBAAA,CAAqB,CAAA,aAAc,CAAA,eAE3C,YAAA,CAAa,CAAA;AAAA;;;;;;;;;;;;;;;;;;AA0CpB;;;;;;;;;;;;;;;;;;;;;;cAAa,aAAA,mBACK,UAAA,kBACA,aAAA,GAAgB,eAAA,EAEhC,UAAA,EAAY,CAAA,EACZ,MAAA,GAAS,CAAA,KACR,YAAA,CAAa,oBAAA,CAAqB,CAAA,aAAc,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"useIntlayer.d.ts","names":[],"sources":["../../../src/client/useIntlayer.ts"],"mappings":";;;;;;;AAuDA;;;;;;;;;;;;;;;;;;;;;;;AAGgE;;;;;;;;;;;;;;;;;;;;cAHnD,WAAA,mBAA+B,cAAA,EAC1C,GAAA,EAAK,CAAA,EACL,MAAA,GAAS,aAAA,KACR,YAAA,CAAa,oBAAA,CAAqB,yBAAA,CAA0B,CAAA"}
1
+ {"version":3,"file":"useIntlayer.d.ts","names":[],"sources":["../../../src/client/useIntlayer.ts"],"mappings":";;;;;;;AAuDA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAAa,WAAA,mBAA+B,cAAA,EAC1C,GAAA,EAAK,CAAA,EACL,MAAA,GAAS,aAAA,KACR,YAAA,CAAa,oBAAA,CAAqB,yBAAA,CAA0B,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"useLocale.d.ts","names":[],"sources":["../../../src/client/useLocale.ts"],"mappings":";;;KAQY,cAAA;EACV,eAAA;EACA,cAAA,IAAkB,MAAA,EAAQ,eAAe;AAAA;AAAA,KAG/B,eAAA;EACV,MAAA,EAAQ,eAAA;EACR,aAAA,EAAe,eAAA;EACf,gBAAA,EAAkB,eAAA;EAClB,SAAA,GAAY,MAAA,EAAQ,aAAA;EACpB,SAAA,GAAY,QAAA,GAAW,MAAA,EAAQ,aAAA;AAAA;AARU;AAG3C;;;;;;;;;;;;;;;;;;;;;;;;AAKuD;AA8BvD;AAtC2C,cAsC9B,SAAA,GAAa,KAAA,GAAO,cAAA,KAAsB,eA4BtD"}
1
+ {"version":3,"file":"useLocale.d.ts","names":[],"sources":["../../../src/client/useLocale.ts"],"mappings":";;;KAQY,cAAA;EACV,eAAA;EACA,cAAA,IAAkB,MAAA,EAAQ,eAAA;AAAA;AAAA,KAGhB,eAAA;EACV,MAAA,EAAQ,eAAA;EACR,aAAA,EAAe,eAAA;EACf,gBAAA,EAAkB,eAAA;EAClB,SAAA,GAAY,MAAA,EAAQ,aAAA;EACpB,SAAA,GAAY,QAAA,GAAW,MAAA,EAAQ,aAAA;AAAA;;AALjC;;;;;;;;;;;;;;;;;;;;;;;;;AAmCA;cAAa,SAAA,GAAa,KAAA,GAAO,cAAA,KAAsB,eAAA"}
@@ -1,14 +1,15 @@
1
1
  import { LocalesValues } from "@intlayer/types/module_augmentation";
2
+ import * as _$intlayer from "intlayer";
2
3
 
3
4
  //#region src/client/useLocaleStorage.d.ts
4
5
  /**
5
6
  * Get the current locale from storage (cookie or localStorage).
6
7
  */
7
- declare const localeInStorage: import("intlayer").Locale;
8
+ declare const localeInStorage: _$intlayer.Locale;
8
9
  /**
9
10
  * @deprecated Use localeInStorage instead.
10
11
  */
11
- declare const localeCookie: import("intlayer").Locale;
12
+ declare const localeCookie: _$intlayer.Locale;
12
13
  /**
13
14
  * Persist the locale to storage (cookie and/or localStorage).
14
15
  */
@@ -21,14 +22,14 @@ declare const setLocaleCookie: (locale: LocalesValues, isCookieEnabled: boolean)
21
22
  * Returns the current locale from storage and a setter.
22
23
  */
23
24
  declare const useLocaleStorage: (isCookieEnabled?: boolean) => {
24
- localeStorage: import("intlayer").Locale;
25
+ localeStorage: _$intlayer.Locale;
25
26
  setLocaleStorage: (locale: LocalesValues) => void;
26
27
  };
27
28
  /**
28
29
  * @deprecated Use useLocaleStorage instead.
29
30
  */
30
31
  declare const useLocaleCookie: (isCookieEnabled?: boolean) => {
31
- localeStorage: import("intlayer").Locale;
32
+ localeStorage: _$intlayer.Locale;
32
33
  setLocaleStorage: (locale: LocalesValues) => void;
33
34
  };
34
35
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"useLocaleStorage.d.ts","names":[],"sources":["../../../src/client/useLocaleStorage.ts"],"mappings":";;;;;AAWA;cAAa,eAAA,qBAAe,MAAmD;;;AAAA;cAKlE,YAAA,qBAAY,MAAkB;;;;cAK9B,kBAAA,GACX,MAAA,EAAQ,aAAa,EACrB,eAAA;AAFF;;;AAAA,cAYa,eAAA,GAAe,MAAA,EAXlB,aAAa,EAAA,eAAA;;;;cAgBV,gBAAA,GAAoB,eAAA;;6BAUhC,aAAA;AAAA;;;;cAKY,eAAA,GAAe,eAAA;;6BAAmB,aAAA;AAAA"}
1
+ {"version":3,"file":"useLocaleStorage.d.ts","names":[],"sources":["../../../src/client/useLocaleStorage.ts"],"mappings":";;;;;;;cAWa,eAAA,EAAkE,UAAA,CAAnD,MAAA;;;;cAKf,YAAA,EAA8B,UAAA,CAAlB,MAAA;AAAzB;;;AAAA,cAKa,kBAAA,GACX,MAAA,EAAQ,aAAA,EACR,eAAA;;AAFF;;cAYa,eAAA,GAAe,MAAA,EAXlB,aAAA,EAAa,eAAA;;;;cAgBV,gBAAA,GAAoB,eAAA;iBAUhC,UAAA,CAAA,MAAA;6BAAA,aAAA;AAAA;;;;cAKY,eAAA,GAAe,eAAA;iBAAmB,UAAA,CAAA,MAAA;6BAAA,aAAA;AAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"useRewriteURL.d.ts","names":[],"sources":["../../../src/client/useRewriteURL.ts"],"mappings":";;AA8CA;;;;AASC;;;;;;;;;;;;;;;;;cATY,aAAA"}
1
+ {"version":3,"file":"useRewriteURL.d.ts","names":[],"sources":["../../../src/client/useRewriteURL.ts"],"mappings":";;AA8CA;;;;;;;;;;;;;;;;;;;;;cAAa,aAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"useEditor.d.ts","names":[],"sources":["../../../src/editor/useEditor.ts"],"mappings":";;AAwBA;;;;AA0BC;;;;;;;;;;;;;cA1BY,SAAA"}
1
+ {"version":3,"file":"useEditor.d.ts","names":[],"sources":["../../../src/editor/useEditor.ts"],"mappings":";;AAwBA;;;;;;;;;;;;;;;;;cAAa,SAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"useCompact.d.ts","names":[],"sources":["../../../src/format/useCompact.ts"],"mappings":";;;cAGa,UAAA,YAGA,IAAA,EAAM,UAAU,QAAQ,OAAA"}
1
+ {"version":3,"file":"useCompact.d.ts","names":[],"sources":["../../../src/format/useCompact.ts"],"mappings":";;;cAGa,UAAA,YAGA,IAAA,EAAM,UAAA,QAAkB,OAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"useCurrency.d.ts","names":[],"sources":["../../../src/format/useCurrency.ts"],"mappings":";;;cAGa,WAAA,YAGA,IAAA,EAAM,UAAU,QAAQ,QAAA"}
1
+ {"version":3,"file":"useCurrency.d.ts","names":[],"sources":["../../../src/format/useCurrency.ts"],"mappings":";;;cAGa,WAAA,YAGA,IAAA,EAAM,UAAA,QAAkB,QAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"useDate.d.ts","names":[],"sources":["../../../src/format/useDate.ts"],"mappings":";;;;;AAMA;cAAa,OAAA,YAGA,IAAA,EAAM,UAAU,QAAQ,IAAA"}
1
+ {"version":3,"file":"useDate.d.ts","names":[],"sources":["../../../src/format/useDate.ts"],"mappings":";;;;;AAMA;cAAa,OAAA,YAGA,IAAA,EAAM,UAAA,QAAkB,IAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"useIntl.d.ts","names":[],"sources":["../../../src/format/useIntl.ts"],"mappings":";;;;;;AA6BA;;;;;;;;;;;;;;;;;AAImD;;;;;;cAJtC,OAAA,GACX,MAAA,GAAS,aAAA;EAET,IAAA,EAAM,WAAA;EACN,SAAA,GAAY,QAAA,GAAW,IAAA,EAAM,WAAA;AAAA"}
1
+ {"version":3,"file":"useIntl.d.ts","names":[],"sources":["../../../src/format/useIntl.ts"],"mappings":";;;;;;AA6BA;;;;;;;;;;;;;;;;;;;;;;;cAAa,OAAA,GACX,MAAA,GAAS,aAAA;EAET,IAAA,EAAM,WAAA;EACN,SAAA,GAAY,QAAA,GAAW,IAAA,EAAM,WAAA;AAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"useList.d.ts","names":[],"sources":["../../../src/format/useList.ts"],"mappings":";;;cAGa,OAAA,YAGA,IAAA,EAAM,UAAU,QAAQ,IAAA"}
1
+ {"version":3,"file":"useList.d.ts","names":[],"sources":["../../../src/format/useList.ts"],"mappings":";;;cAGa,OAAA,YAGA,IAAA,EAAM,UAAA,QAAkB,IAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"useNumber.d.ts","names":[],"sources":["../../../src/format/useNumber.ts"],"mappings":";;;;;AAMA;cAAa,SAAA,YAGA,IAAA,EAAM,UAAU,QAAQ,MAAA"}
1
+ {"version":3,"file":"useNumber.d.ts","names":[],"sources":["../../../src/format/useNumber.ts"],"mappings":";;;;;AAMA;cAAa,SAAA,YAGA,IAAA,EAAM,UAAA,QAAkB,MAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"usePercentage.d.ts","names":[],"sources":["../../../src/format/usePercentage.ts"],"mappings":";;;cAGa,aAAA,YAGA,IAAA,EAAM,UAAU,QAAQ,UAAA"}
1
+ {"version":3,"file":"usePercentage.d.ts","names":[],"sources":["../../../src/format/usePercentage.ts"],"mappings":";;;cAGa,aAAA,YAGA,IAAA,EAAM,UAAA,QAAkB,UAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"useRelativeTime.d.ts","names":[],"sources":["../../../src/format/useRelativeTime.ts"],"mappings":";;;cAGa,eAAA,YAGA,IAAA,EAAM,UAAU,QAAQ,YAAA"}
1
+ {"version":3,"file":"useRelativeTime.d.ts","names":[],"sources":["../../../src/format/useRelativeTime.ts"],"mappings":";;;cAGa,eAAA,YAGA,IAAA,EAAM,UAAA,QAAkB,YAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"useUnit.d.ts","names":[],"sources":["../../../src/format/useUnit.ts"],"mappings":";;;cAGa,OAAA,YAGA,IAAA,EAAM,UAAU,QAAQ,KAAA"}
1
+ {"version":3,"file":"useUnit.d.ts","names":[],"sources":["../../../src/format/useUnit.ts"],"mappings":";;;cAGa,OAAA,YAGA,IAAA,EAAM,UAAA,QAAkB,KAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"HTMLRenderer.d.ts","names":[],"sources":["../../../src/html/HTMLRenderer.ts"],"mappings":";;;KAGY,eAAA;EACV,UAAA,GAAa,cAAc;AAAA;;;;AAAA;cAOhB,UAAA,GACX,OAAA,UACA,MAAA,GAAQ,eAAoB;;;;;cAOjB,eAAA;EAAmB;AAAA,IAE7B,eAAoB,OAAK,OAAA"}
1
+ {"version":3,"file":"HTMLRenderer.d.ts","names":[],"sources":["../../../src/html/HTMLRenderer.ts"],"mappings":";;;KAGY,eAAA;EACV,UAAA,GAAa,cAAA;AAAA;;;;;cAOF,UAAA,GACX,OAAA,UACA,MAAA,GAAQ,eAAA;;;;;cAOG,eAAA;EAAmB;AAAA,IAE7B,eAAA,OAAyB,OAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"installIntlayerHTML.d.ts","names":[],"sources":["../../../src/html/installIntlayerHTML.ts"],"mappings":";;;KAEY,iBAAA;EACV,UAAA,GAAa,cAAc;AAAA;AAAA,KAGjB,kBAAA,IACV,IAAA,UACA,SAAA,GAAY,cAAA,qBAAmC,iBAAiB;AAAA,KAQtD,oBAAA;EACV,UAAA,EAAY,kBAAkB;AAAA;AAAA,KAGpB,yBAAA;EACV,UAAA,GAAa,cAAA;EACb,UAAA,GAAa,kBAAkB;AAAA;;;;cAMpB,wBAAA,GACX,UAAA,EAAY,kBAAA,KACX,oBAIF;;AA1BiE;AAQlE;;;;AACgC;AAGhC;;;;;;;cA8Ba,mBAAA,GACX,aAAA,GAAgB,yBAAA,GAA4B,kBAAA,KAC3C,oBAAA;;AA9B8B;AAMjC;;;cAmEa,OAAA,QAAc,oBAG1B;;;;;AAhEA;AAgBD;;;;;;;;;;;;;AAsCC;AAOD;;;;AAGC;cA0BY,0BAAA,GACX,MAAA,QAAc,OAAA,CAAQ,yBAAA,GAA4B,kBAAA,MACjD,OAAA,CAAQ,oBAAA"}
1
+ {"version":3,"file":"installIntlayerHTML.d.ts","names":[],"sources":["../../../src/html/installIntlayerHTML.ts"],"mappings":";;;KAEY,iBAAA;EACV,UAAA,GAAa,cAAA;AAAA;AAAA,KAGH,kBAAA,IACV,IAAA,UACA,SAAA,GAAY,cAAA,qBAAmC,iBAAA;AAAA,KAQrC,oBAAA;EACV,UAAA,EAAY,kBAAA;AAAA;AAAA,KAGF,yBAAA;EACV,UAAA,GAAa,cAAA;EACb,UAAA,GAAa,kBAAA;AAAA;;;;cAMF,wBAAA,GACX,UAAA,EAAY,kBAAA,KACX,oBAAA;;;AAdH;;;;;AAIA;;;;;;;cA8Ba,mBAAA,GACX,aAAA,GAAgB,yBAAA,GAA4B,kBAAA,KAC3C,oBAAA;;;AAxBH;;;cAmEa,OAAA,QAAc,oBAAA;;;;;;AA7C3B;;;;;;;;;;;;;;AA6CA;;;;;cA6Ba,0BAAA,GACX,MAAA,QAAc,OAAA,CAAQ,yBAAA,GAA4B,kBAAA,MACjD,OAAA,CAAQ,oBAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","names":[],"sources":["../../../src/html/types.ts"],"mappings":";;;;;AAA8D;KAKzD,eAAA,UAAyB,KAAA,qBAE1B,KAAA,kBACE,KAAA;;;;;KAOD,YAAA,GAAe,MAAM;EACxB,QAAQ;AAAA;;;;KAML,oBAAA,YAAgC,KAAA,EAAO,CAAA,GAAI,YAAY;AAdjD;AAAA;;AAAA,KAmBN,iBAAA,kCAAmD,UAAA,8BAEtC,CAAA,GAAI,oBAAA,CAAqB,eAAA,CAAgB,CAAA,CAAE,CAAA,sBAG3C,CAAA,IAAK,oBAAA,CAAqB,eAAA,CAAgB,CAAA,CAAE,CAAA;;;;KAMzD,kBAAA,cACG,OAAA,OAAc,YAAA,QAAoB,CAAA,KAAM,oBAAA;;AAjBY;AAAA;KAuBhD,iBAAA;;;;;KAUA,cAAA,cACG,iBAAA,yBAEX,IAAA,oBACA,iBAAA,CAAkB,CAAA,UAClB,IAAA,uBACE,iBAAA,CAAkB,CAAA,UAAW,kBAAA,CAAmB,CAAA,IAChD,IAAA,wBACE,iBAAA,CAAkB,CAAA,WAChB,kBAAA,CAAmB,CAAA;EAAA,CAChB,GAAA,WAAc,oBAAA;AAAA,IAEnB,iBAAA,CAAkB,CAAA,WAAY,kBAAA,CAAmB,CAAA"}
1
+ {"version":3,"file":"types.d.ts","names":[],"sources":["../../../src/html/types.ts"],"mappings":";;;;;AAA8D;KAKzD,eAAA,UAAyB,KAAA,qBAE1B,KAAA,kBACE,KAAA;;;;;KAOD,YAAA,GAAe,MAAA;EAClB,QAAA;AAAA;;;;KAMG,oBAAA,YAAgC,KAAA,EAAO,CAAA,GAAI,YAAA;;AAdrC;;KAmBN,iBAAA,kCAAmD,UAAA,8BAEtC,CAAA,GAAI,oBAAA,CAAqB,eAAA,CAAgB,CAAA,CAAE,CAAA,sBAG3C,CAAA,IAAK,oBAAA,CAAqB,eAAA,CAAgB,CAAA,CAAE,CAAA;;;;KAMzD,kBAAA,cACG,OAAA,OAAc,YAAA,QAAoB,CAAA,KAAM,oBAAA;;;AAjBY;KAuBhD,iBAAA;;;;;KAUA,cAAA,cACG,iBAAA,yBAEX,IAAA,oBACA,iBAAA,CAAkB,CAAA,UAClB,IAAA,uBACE,iBAAA,CAAkB,CAAA,UAAW,kBAAA,CAAmB,CAAA,IAChD,IAAA,wBACE,iBAAA,CAAkB,CAAA,WAChB,kBAAA,CAAmB,CAAA;EAAA,CAChB,GAAA,WAAc,oBAAA;AAAA,IAEnB,iBAAA,CAAkB,CAAA,WAAY,kBAAA,CAAmB,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"MarkdownRenderer.d.ts","names":[],"sources":["../../../src/markdown/MarkdownRenderer.ts"],"mappings":";;;;;KAYY,mBAAA,GAAsB,uBAAA;EAChC,UAAA,GAAa,cAAc;EAC3B,OAAA;AAAA;;;;;;;;AAAO;AAaT;;cAAa,cAAA,GACX,OAAA,WAAkB,cAAA;EAClB,UAAA;EAAA,WAAA;EAAA,mBAAA;EAAA;AAAA,IAKG,mBAAA;;;;;cAeQ,mBAAA,GACX,KAAA,GAAO,mBAAA,OACJ,OAAA,WAAkB,cAAA,cAA4B,OAAA"}
1
+ {"version":3,"file":"MarkdownRenderer.d.ts","names":[],"sources":["../../../src/markdown/MarkdownRenderer.ts"],"mappings":";;;;;KAYY,mBAAA,GAAsB,uBAAA;EAChC,UAAA,GAAa,cAAA;EACb,OAAA;AAAA;;;;;;;;;AAaF;;cAAa,cAAA,GACX,OAAA,WAAkB,cAAA;EAClB,UAAA;EAAA,WAAA;EAAA,mBAAA;EAAA;AAAA,IAKG,mBAAA;;;;;cAeQ,mBAAA,GACX,KAAA,GAAO,mBAAA,OACJ,OAAA,WAAkB,cAAA,cAA4B,OAAA"}
@@ -1,11 +1,47 @@
1
- import { CompileOptions, ParsedMarkdown, RuleType, sanitizer as defaultSanitizer, slugify as defaultSlugify } from "@intlayer/core/markdown";
1
+ import { CompileOptions, ParsedMarkdown } from "@intlayer/core/markdown";
2
2
 
3
3
  //#region src/markdown/compiler.d.ts
4
+ /**
5
+ * Options accepted by `compileMarkdown` and `parseMarkdown` to customise
6
+ * rendering behaviour (custom components, sanitizer, slugify, rule hooks, …).
7
+ */
4
8
  type MarkdownCompilerOptions = CompileOptions;
9
+ /**
10
+ * **Step 1 of 2 — parse only.**
11
+ * Converts a raw markdown string into a `ParsedMarkdown` AST without rendering
12
+ * any HTML. Use this when you need to:
13
+ * - Cache the parsed result and render it several times with different options.
14
+ * - Inspect or transform the AST before rendering.
15
+ * - Defer the render step to a later point.
16
+ *
17
+ * @param markdown - The markdown source string.
18
+ * @param options - Options that affect parsing (sanitizer, slugify, …).
19
+ * @returns A `ParsedMarkdown` AST ready to be passed to `compileMarkdown`.
20
+ *
21
+ * @example
22
+ * ```ts
23
+ * const ast = parseMarkdown('# Hello **World**');
24
+ * document.querySelector('#content').innerHTML = compileMarkdown(ast);
25
+ * ```
26
+ */
5
27
  declare const parseMarkdown: (markdown?: string, options?: MarkdownCompilerOptions) => ParsedMarkdown;
28
+ /**
29
+ * **Steps 1 + 2 — parse and render in one shot.**
30
+ * Accepts a raw markdown string or a pre-parsed `ParsedMarkdown` AST and
31
+ * returns an HTML string. Insert the result into the DOM via `innerHTML` or
32
+ * the `renderMarkdown` utility.
33
+ *
34
+ * @param input - Markdown string or pre-parsed AST.
35
+ * @param options - Rendering options (custom components, sanitizer, slugify, …).
36
+ * @returns An HTML string representing the rendered markdown.
37
+ *
38
+ * @example
39
+ * ```ts
40
+ * document.querySelector('#content').innerHTML =
41
+ * compileMarkdown('# Hello **World**');
42
+ * ```
43
+ */
6
44
  declare const compileMarkdown: (input?: string | ParsedMarkdown, options?: MarkdownCompilerOptions) => string;
7
- declare const compiler: (input?: string | ParsedMarkdown, options?: MarkdownCompilerOptions) => string;
8
- declare const compile: (input?: string | ParsedMarkdown, options?: MarkdownCompilerOptions) => string;
9
45
  //#endregion
10
- export { MarkdownCompilerOptions, type ParsedMarkdown, RuleType, compile, compileMarkdown, compiler, parseMarkdown, defaultSanitizer as sanitizer, defaultSlugify as slugify };
46
+ export { MarkdownCompilerOptions, type ParsedMarkdown, compileMarkdown, parseMarkdown };
11
47
  //# sourceMappingURL=compiler.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"compiler.d.ts","names":[],"sources":["../../../src/markdown/compiler.ts"],"mappings":";;;KAuBY,uBAAA,GAA0B,cAAc;AAAA,cAiBvC,aAAA,GACX,QAAA,WACA,OAAA,GAAS,uBAAA,KACR,cAkBF;AAAA,cAEY,eAAA,GACX,KAAA,YAAgB,cAAA,EAChB,OAAA,GAAS,uBAA4B;AAAA,cA0B1B,QAAA,GAAQ,KAAA,YA3BH,cAAA,EAAc,OAAA,GACrB,uBAAuB;AAAA,cA2BrB,OAAA,GAAO,KAAA,YA5BF,cAAA,EAAc,OAAA,GACrB,uBAAuB"}
1
+ {"version":3,"file":"compiler.d.ts","names":[],"sources":["../../../src/markdown/compiler.ts"],"mappings":";;;;AAgDA;;;KA3BY,uBAAA,GAA0B,cAAA;AAkEtC;;;;;;;;;;;;;;;;;;AAAA,cAvCa,aAAA,GACX,QAAA,WACA,OAAA,GAAS,uBAAA,KACR,cAAA;;;;;;;;;;;;;;;;;cAoCU,eAAA,GACX,KAAA,YAAgB,cAAA,EAChB,OAAA,GAAS,uBAAA"}
@@ -1,4 +1,4 @@
1
- import { MarkdownCompilerOptions, ParsedMarkdown, RuleType, compile, compileMarkdown, compiler, parseMarkdown, sanitizer as defaultSanitizer, slugify as defaultSlugify } from "./compiler.js";
1
+ import { MarkdownCompilerOptions, ParsedMarkdown, compileMarkdown, parseMarkdown } from "./compiler.js";
2
2
  import { IntlayerMarkdownPluginOptions, IntlayerMarkdownProvider, MarkdownProviderOptions, RenderMarkdownFunction, installIntlayerMarkdown, installIntlayerMarkdownDynamic, useMarkdown } from "./installIntlayerMarkdown.js";
3
3
  import { RenderMarkdownProps, renderMarkdown, useMarkdownRenderer } from "./MarkdownRenderer.js";
4
- export { type IntlayerMarkdownPluginOptions, type IntlayerMarkdownProvider, MarkdownCompilerOptions, type MarkdownProviderOptions, type ParsedMarkdown, type RenderMarkdownFunction, type RenderMarkdownProps, RuleType, compile, compileMarkdown, compiler, installIntlayerMarkdown, installIntlayerMarkdownDynamic, parseMarkdown, renderMarkdown, defaultSanitizer as sanitizer, defaultSlugify as slugify, useMarkdown, useMarkdownRenderer };
4
+ export { type IntlayerMarkdownPluginOptions, type IntlayerMarkdownProvider, type MarkdownCompilerOptions, type MarkdownProviderOptions, type ParsedMarkdown, type RenderMarkdownFunction, type RenderMarkdownProps, compileMarkdown, installIntlayerMarkdown, installIntlayerMarkdownDynamic, parseMarkdown, renderMarkdown, useMarkdown, useMarkdownRenderer };
@@ -1 +1 @@
1
- {"version":3,"file":"installIntlayerMarkdown.d.ts","names":[],"sources":["../../../src/markdown/installIntlayerMarkdown.ts"],"mappings":";;;;KAOY,uBAAA;iFAEV,UAAA,YAFiC;EAIjC,WAAA,YAJiC;EAMjC,mBAAA,YAFA;EAIA,SAAA;AAAA;AAAA,KAGU,qBAAA,GAAwB,uBAAA;EAClC,UAAA,GAAa,cAAc;EAC3B,OAAA;AAAA;AAAA,KAGU,sBAAA,IACV,QAAA,WAAmB,cAAA,EACnB,OAAA,GAAU,uBAAA,EACV,UAAA,GAAa,cAAA,oBACb,OAAA,uBACY,OAAA;AAAA,KAOF,wBAAA;EACV,UAAA,GAAa,cAAA;EACb,cAAA,EAAgB,sBAAsB;AAAA;AAAA,KAG5B,6BAAA,GAAgC,uBAAA;EAC1C,UAAA,GAAa,cAAA;EACb,OAAA;EACA,cAAA,GAAiB,sBAAA;AAAA;;;;cAMN,4BAAA,GACX,cAAA,EAAgB,sBAAA,EAChB,UAAA,GAAa,cAAA,uBACZ,wBAAA;;;;;;;;;;;cAiBU,uBAAA,GACX,aAAA,GAAgB,6BAAA,GAAgC,sBAAA,KAC/C,wBAAA;;AA3CkB;AAOrB;;;cA0Fa,WAAA,QAAkB,wBAO9B;;;;;;AA/FuC;AAGxC;;;;;;;;;;;;;;;AAGyC;AAMzC;cA4Ga,8BAAA,GACX,MAAA,QAAc,OAAA,CAAQ,6BAAA,GAAgC,sBAAA,MACrD,OAAA,CAAQ,wBAAA"}
1
+ {"version":3,"file":"installIntlayerMarkdown.d.ts","names":[],"sources":["../../../src/markdown/installIntlayerMarkdown.ts"],"mappings":";;;;KAOY,uBAAA;iFAEV,UAAA,YAFiC;EAIjC,WAAA,YAJiC;EAMjC,mBAAA,YAFA;EAIA,SAAA;AAAA;AAAA,KAGU,qBAAA,GAAwB,uBAAA;EAClC,UAAA,GAAa,cAAA;EACb,OAAA;AAAA;AAAA,KAGU,sBAAA,IACV,QAAA,WAAmB,cAAA,EACnB,OAAA,GAAU,uBAAA,EACV,UAAA,GAAa,cAAA,oBACb,OAAA,uBACY,OAAA;AAAA,KAOF,wBAAA;EACV,UAAA,GAAa,cAAA;EACb,cAAA,EAAgB,sBAAA;AAAA;AAAA,KAGN,6BAAA,GAAgC,uBAAA;EAC1C,UAAA,GAAa,cAAA;EACb,OAAA;EACA,cAAA,GAAiB,sBAAA;AAAA;;;;cAMN,4BAAA,GACX,cAAA,EAAgB,sBAAA,EAChB,UAAA,GAAa,cAAA,uBACZ,wBAAA;;;;;;;;;;;cAiBU,uBAAA,GACX,aAAA,GAAgB,6BAAA,GAAgC,sBAAA,KAC/C,wBAAA;;;AApCH;;;cA0Fa,WAAA,QAAkB,wBAAA;;;;;;;AArF/B;;;;;;;;;;;;;;;;AASA;cA4Ga,8BAAA,GACX,MAAA,QAAc,OAAA,CAAQ,6BAAA,GAAgC,sBAAA,MACrD,OAAA,CAAQ,wBAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"runtime.d.ts","names":[],"sources":["../../../src/markdown/runtime.ts"],"mappings":";;;AAqHC;AAKD;;AALC,cAxEY,cAAA,EAAgB,eAwE5B;;;;cAKY,oBAAA,GACX,OAAA;EACE,eAAA,IACE,IAAA,OACA,KAAA,EAAO,MAAA,sBACP,QAAA;AAAA,MAGH,eAeF"}
1
+ {"version":3,"file":"runtime.d.ts","names":[],"sources":["../../../src/markdown/runtime.ts"],"mappings":";;;;AA0HA;;cA7Ea,cAAA,EAAgB,eAAA;;;;cA6EhB,oBAAA,GACX,OAAA;EACE,eAAA,IACE,IAAA,OACA,KAAA,EAAO,MAAA,sBACP,QAAA;AAAA,MAGH,eAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"plugins.d.ts","names":[],"sources":["../../src/plugins.ts"],"mappings":";;;;;;;;;;AA0CA;KAAY,gBAAA,MAAsB,CAAA,2BAC9B,YAAA,CAAa,CAAA;AAAA,KAGL,YAAA,cAA0B,cAAA,CAAiB,CAAA,IAAK,CAAA;AAAA,cAQ/C,mBAAA,EAAqB,OA6CjC;;;;KAMW,aAAA,kBAA+B,aAAA,IAAiB,CAAA;EAC1D,QAAA,EAAU,QAAA;EAAA,CACT,SAAA,CAAU,SAAA;EACX,MAAA;AAAA,uBAEqB,OAAA,CAAQ,CAAA,+BACzB,MAAA,EAAQ,CAAA,KACL,CAAA,kBAAmB,YAAA,WAAuB,oBAAA,CAAqB,CAAA,EAAG,CAAA;AAAA,cAG9D,eAAA,EAAiB,OAwEvB;AAAA,KAoCK,kBAAA,MAAwB,CAAA,kBAChC,YAAA;EAGI,QAAA,EAAU,oBAAA,UArLqC;EAuL/C,GAAA,GAAM,UAAA,GAAa,cAAA;AAAA;AAAA,cAKd,oBAAA,EAAsB,OAqE5B;AAAA,KAEK,YAAA,MAAkB,CAAA;EAC5B,QAAA,EAAU,QAAA;EAAA,CACT,SAAA,CAAU,QAAA;EACX,QAAA;EACA,IAAA;AAAA;EAGI,GAAA,GAAM,UAAA,GAAa,cAAA,eAA6B,CAAA,MAAO,YAAA,CAAa,CAAA;EACpE,QAAA,EAAU,oBAAA,CAAqB,CAAA;AAAA;AAAA,cAIxB,cAAA,EAAgB,OAqBtB;;;AA/ON;KAqPW,cAAA,MAAoB,CAAA;EAC9B,QAAA,EAAU,QAAA;EAAA,CACT,SAAA,CAAU,IAAA;EACX,IAAA;AAAA;EAGI,GAAA,GAAM,UAAA,GAAa,cAAA,eAA6B,CAAA,MAAO,YAAA,CAAa,CAAA;AAAA;AAAA,cAI7D,UAAA,EAAY,OA+DlB;;;;UAMU,yBAAA,iBAA0C,aAAA;EACzD,mBAAA,EAAqB,gBAAA,CAAiB,CAAA;EACtC,gBAAA,EAAkB,aAAA,CAAc,CAAA,EAAG,CAAA,EAAG,CAAA;EACtC,eAAA,EAAiB,YAAA,CAAa,CAAA;EAC9B,WAAA,EAAa,cAAA,CAAe,CAAA;AAAA;;;;;;;;KAUlB,uBAAA,GAA0B,IAAI,CACxC,yBAAA;EAGA,mBAAA;EACA,gBAAA;EACA,eAAA;EACA,WAAA;AAAA;AAAA,KAGU,oBAAA,cAEA,aAAA,GAAgB,eAAA,IACxB,sBAAA,CAAyB,CAAA,EAAG,uBAAA,EAAyB,CAAA;;;;;cAQ5C,UAAA,GACX,MAAA,GAAS,aAAA,EACT,QAAA,eACC,OAAO"}
1
+ {"version":3,"file":"plugins.d.ts","names":[],"sources":["../../src/plugins.ts"],"mappings":";;;;;;;;;;AA0CA;KAAY,gBAAA,MAAsB,CAAA,2BAC9B,YAAA,CAAa,CAAA;AAAA,KAGL,YAAA,cAA0B,cAAA,CAAiB,CAAA,IAAK,CAAA;AAAA,cAQ/C,mBAAA,EAAqB,OAAA;;;;KAmDtB,aAAA,kBAA+B,aAAA,IAAiB,CAAA;EAC1D,QAAA,EAAU,QAAA;EAAA,CACT,SAAA,CAAU,SAAA;EACX,MAAA;AAAA,uBAEqB,OAAA,CAAQ,CAAA,+BACzB,MAAA,EAAQ,CAAA,KACL,CAAA,kBAAmB,YAAA,WAAuB,oBAAA,CAAqB,CAAA,EAAG,CAAA;AAAA,cAG9D,eAAA,EAAiB,OAAA;AAAA,KA4GlB,kBAAA,MAAwB,CAAA,kBAChC,YAAA;EAGI,QAAA,EAAU,oBAAA,UArLqC;EAuL/C,GAAA,GAAM,UAAA,GAAa,cAAA;AAAA;AAAA,cAKd,oBAAA,EAAsB,OAAA;AAAA,KAuEvB,YAAA,MAAkB,CAAA;EAC5B,QAAA,EAAU,QAAA;EAAA,CACT,SAAA,CAAU,QAAA;EACX,QAAA;EACA,IAAA;AAAA;EAGI,GAAA,GAAM,UAAA,GAAa,cAAA,eAA6B,CAAA,MAAO,YAAA,CAAa,CAAA;EACpE,QAAA,EAAU,oBAAA,CAAqB,CAAA;AAAA;AAAA,cAIxB,cAAA,EAAgB,OAAA;;;;KA2BjB,cAAA,MAAoB,CAAA;EAC9B,QAAA,EAAU,QAAA;EAAA,CACT,SAAA,CAAU,IAAA;EACX,IAAA;AAAA;EAGI,GAAA,GAAM,UAAA,GAAa,cAAA,eAA6B,CAAA,MAAO,YAAA,CAAa,CAAA;AAAA;AAAA,cAI7D,UAAA,EAAY,OAAA;;;;UAqER,yBAAA,iBAA0C,aAAA;EACzD,mBAAA,EAAqB,gBAAA,CAAiB,CAAA;EACtC,gBAAA,EAAkB,aAAA,CAAc,CAAA,EAAG,CAAA,EAAG,CAAA;EACtC,eAAA,EAAiB,YAAA,CAAa,CAAA;EAC9B,WAAA,EAAa,cAAA,CAAe,CAAA;AAAA;;;;;;;;KAUlB,uBAAA,GAA0B,IAAA,CACpC,yBAAA;EAGA,mBAAA;EACA,gBAAA;EACA,eAAA;EACA,WAAA;AAAA;AAAA,KAGU,oBAAA,cAEA,aAAA,GAAgB,eAAA,IACxB,sBAAA,CAAyB,CAAA,EAAG,uBAAA,EAAyB,CAAA;;;;;cAQ5C,UAAA,GACX,MAAA,GAAS,aAAA,EACT,QAAA,eACC,OAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vanilla-intlayer",
3
- "version": "8.12.1",
3
+ "version": "8.12.3",
4
4
  "private": false,
5
5
  "description": "Easily internationalize i18n your Vanilla JS, HTML, and PHP applications with type-safe multilingual content management.",
6
6
  "keywords": [
@@ -101,24 +101,24 @@
101
101
  "typecheck": "tsc --noEmit --project tsconfig.types.json"
102
102
  },
103
103
  "dependencies": {
104
- "@intlayer/api": "8.12.1",
105
- "@intlayer/config": "8.12.1",
106
- "@intlayer/core": "8.12.1",
107
- "@intlayer/editor": "8.12.1",
108
- "@intlayer/types": "8.12.1"
104
+ "@intlayer/api": "8.12.3",
105
+ "@intlayer/config": "8.12.3",
106
+ "@intlayer/core": "8.12.3",
107
+ "@intlayer/editor": "8.12.3",
108
+ "@intlayer/types": "8.12.3"
109
109
  },
110
110
  "devDependencies": {
111
- "@types/node": "25.9.1",
111
+ "@types/node": "25.9.2",
112
112
  "@utils/ts-config": "1.0.4",
113
113
  "@utils/ts-config-types": "1.0.4",
114
114
  "@utils/tsdown-config": "1.0.4",
115
115
  "rimraf": "6.1.3",
116
- "tsdown": "0.22.1",
116
+ "tsdown": "0.21.10",
117
117
  "typescript": "6.0.3",
118
118
  "vitest": "4.1.8"
119
119
  },
120
120
  "peerDependencies": {
121
- "intlayer": "8.12.1"
121
+ "intlayer": "8.12.3"
122
122
  },
123
123
  "peerDependenciesMeta": {
124
124
  "intlayer": {