svelte-intlayer 8.4.10 → 8.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -6,4 +6,5 @@ export type HTMLContextValue = {
6
6
  renderHTML: (html: string, overrides?: HTMLComponents<'permissive', {}> | RenderHTMLOptions) => string;
7
7
  };
8
8
  export declare const setHTMLContext: (value: HTMLContextValue) => void;
9
+ export { setHTMLContext as setIntlayerHTML };
9
10
  export declare const getHTMLContext: () => HTMLContextValue;
@@ -3,6 +3,7 @@ const INTLAYER_HTML_CONTEXT_KEY = Symbol('intlayer-html-context');
3
3
  export const setHTMLContext = (value) => {
4
4
  setContext(INTLAYER_HTML_CONTEXT_KEY, value);
5
5
  };
6
+ export { setHTMLContext as setIntlayerHTML };
6
7
  export const getHTMLContext = () => {
7
8
  const context = getContext(INTLAYER_HTML_CONTEXT_KEY);
8
9
  return (context || {
@@ -1,7 +1,7 @@
1
- export * from './context';
1
+ import { type RenderHTMLOptions } from './context';
2
+ export { getHTMLContext, type HTMLContext, type RenderHTMLOptions, setHTMLContext, setHTMLContext as setIntlayerHTML, } from './context';
2
3
  export { default as HTMLProvider } from './HTMLProvider.svelte';
3
4
  export { default as HTMLRenderer } from './HTMLRenderer.svelte';
4
- import { type RenderHTMLOptions } from './context';
5
5
  export type RenderHTMLProps = RenderHTMLOptions;
6
6
  export declare const renderHTML: (html: string, options?: RenderHTMLProps) => any;
7
7
  export declare const useHTMLRenderer: (options?: RenderHTMLProps) => (html: string) => string;
@@ -1,8 +1,8 @@
1
- export * from './context';
2
- export { default as HTMLProvider } from './HTMLProvider.svelte';
3
- export { default as HTMLRenderer } from './HTMLRenderer.svelte';
4
1
  import { getHTML } from '@intlayer/core/interpreter';
5
2
  import { getHTMLContext } from './context';
3
+ export { getHTMLContext, setHTMLContext, setHTMLContext as setIntlayerHTML, } from './context';
4
+ export { default as HTMLProvider } from './HTMLProvider.svelte';
5
+ export { default as HTMLRenderer } from './HTMLRenderer.svelte';
6
6
  export const renderHTML = (html, options = {}) => {
7
7
  return getHTML(html, (options.components || {}));
8
8
  };
package/dist/index.d.ts CHANGED
@@ -7,9 +7,4 @@ declare module '@intlayer/core/interpreter' {
7
7
  export * from './client';
8
8
  export * from './getDictionary';
9
9
  export * from './getIntlayer';
10
- export * from './html';
11
- export * from './markdown';
12
10
  export * from './plugins';
13
- import { setHTMLContext } from './html';
14
- import { setMarkdownContext } from './markdown';
15
- export { setHTMLContext as setIntlayerHTML, setMarkdownContext as setIntlayerMarkdown, };
package/dist/index.js CHANGED
@@ -1,9 +1,4 @@
1
1
  export * from './client';
2
2
  export * from './getDictionary';
3
3
  export * from './getIntlayer';
4
- export * from './html';
5
- export * from './markdown';
6
4
  export * from './plugins';
7
- import { setHTMLContext } from './html';
8
- import { setMarkdownContext } from './markdown';
9
- export { setHTMLContext as setIntlayerHTML, setMarkdownContext as setIntlayerMarkdown, };
@@ -5,7 +5,7 @@ import { setMarkdownContext } from './context';
5
5
 
6
6
  export const components: HTMLComponents<'permissive', {}> | undefined =
7
7
  undefined;
8
- export const wrapper: any = undefined;
8
+ export const wrapper: string | import('svelte').ComponentType | undefined = undefined;
9
9
  export const forceBlock: boolean | undefined = undefined;
10
10
  export const forceInline: boolean | undefined = undefined;
11
11
  export const preserveFrontmatter: boolean | undefined = undefined;
@@ -16,8 +16,8 @@ let customRenderMarkdown:
16
16
  markdown: string,
17
17
  options?: any,
18
18
  components?: HTMLComponents<'permissive', {}>,
19
- wrapper?: any
20
- ) => string)
19
+ wrapper?: string | import('svelte').ComponentType
20
+ ) => string | Promise<string>)
21
21
  | undefined;
22
22
  export { customRenderMarkdown as renderMarkdown };
23
23
 
@@ -39,7 +39,7 @@ const internalRenderMarkdown = (
39
39
  tagfilter?: boolean;
40
40
  },
41
41
  componentsOverride?: HTMLComponents<'permissive', {}>,
42
- wrapperOverride?: any
42
+ wrapperOverride?: string | import('svelte').ComponentType
43
43
  ) => {
44
44
  if (typeof customRenderMarkdown === 'function') {
45
45
  return customRenderMarkdown(
@@ -56,7 +56,7 @@ const internalRenderMarkdown = (
56
56
  preserveFrontmatter:
57
57
  options?.preserveFrontmatter ?? baseOptions.preserveFrontmatter,
58
58
  tagfilter: options?.tagfilter ?? baseOptions.tagfilter,
59
- wrapper: wrapperOverride || baseOptions.wrapper,
59
+ wrapper: (wrapperOverride || baseOptions.wrapper) as string,
60
60
  forceWrapper: !!(wrapperOverride || baseOptions.wrapper),
61
61
  components: {
62
62
  ...baseOptions.components,
@@ -19,12 +19,12 @@ type $$__sveltets_2_PropsWithChildren<Props, Slots> = Props & (Slots extends {
19
19
  } : {});
20
20
  declare const MarkdownProvider: $$__sveltets_2_IsomorphicComponent<$$__sveltets_2_PropsWithChildren<{
21
21
  components?: HTMLComponents<"permissive", {}> | undefined;
22
- wrapper?: any;
22
+ wrapper?: string | import("svelte").ComponentType | undefined;
23
23
  forceBlock?: boolean | undefined;
24
24
  forceInline?: boolean | undefined;
25
25
  preserveFrontmatter?: boolean | undefined;
26
26
  tagfilter?: boolean | undefined;
27
- renderMarkdown: ((markdown: string, options?: any, components?: HTMLComponents<"permissive", {}>, wrapper?: any) => string) | undefined;
27
+ renderMarkdown: ((markdown: string, options?: any, components?: HTMLComponents<"permissive", {}>, wrapper?: string | import("svelte").ComponentType) => string | Promise<string>) | undefined;
28
28
  }, {
29
29
  default: {};
30
30
  }>, {
@@ -33,7 +33,7 @@ declare const MarkdownProvider: $$__sveltets_2_IsomorphicComponent<$$__sveltets_
33
33
  default: {};
34
34
  }, {
35
35
  components: HTMLComponents<"permissive", {}> | undefined;
36
- wrapper: any;
36
+ wrapper: string | import("svelte").ComponentType | undefined;
37
37
  forceBlock: boolean | undefined;
38
38
  forceInline: boolean | undefined;
39
39
  preserveFrontmatter: boolean | undefined;
@@ -29,4 +29,6 @@ $: htmlContent = context.renderMarkdown(
29
29
  );
30
30
  </script>
31
31
 
32
- {@html htmlContent}
32
+ {#await htmlContent then resolvedHtmlContent}
33
+ {@html resolvedHtmlContent}
34
+ {/await}
@@ -1,3 +1,4 @@
1
+ import { type ComponentType } from 'svelte';
1
2
  import type { HTMLComponents } from '../html/types';
2
3
  export declare const MARKDOWN_CONTEXT_KEY: unique symbol;
3
4
  export type MarkdownProviderOptions = {
@@ -8,11 +9,11 @@ export type MarkdownProviderOptions = {
8
9
  };
9
10
  export type RenderMarkdownOptions = MarkdownProviderOptions & {
10
11
  components?: HTMLComponents<'permissive', {}>;
11
- wrapper?: any;
12
+ wrapper?: string | ComponentType;
12
13
  };
13
14
  export interface MarkdownContext {
14
15
  components?: HTMLComponents<'permissive', {}>;
15
- renderMarkdown: (markdown: string, options?: MarkdownProviderOptions, components?: HTMLComponents<'permissive', {}>, wrapper?: any) => string;
16
+ renderMarkdown: (markdown: string, options?: MarkdownProviderOptions, components?: HTMLComponents<'permissive', {}>, wrapper?: string | ComponentType) => string | Promise<string>;
16
17
  }
17
18
  export declare const getMarkdownContext: () => MarkdownContext;
18
19
  export declare const setMarkdownContext: (context: MarkdownContext) => void;
@@ -5,7 +5,7 @@ export const getMarkdownContext = () => {
5
5
  return (getContext(MARKDOWN_CONTEXT_KEY) || {
6
6
  renderMarkdown: (md, _options, components, wrapper) => compileMarkdown(md, {
7
7
  components,
8
- wrapper,
8
+ wrapper: wrapper,
9
9
  forceWrapper: !!wrapper,
10
10
  }),
11
11
  });
@@ -1,10 +1,9 @@
1
- export * from './compiler';
2
- export * from './context';
1
+ export { compileMarkdown } from './compiler';
2
+ export { getMarkdownContext, type MarkdownContext, type RenderMarkdownOptions, setMarkdownContext, setMarkdownContext as setIntlayerMarkdown, } from './context';
3
+ import { type RenderMarkdownOptions } from './context';
3
4
  export { default as MarkdownMetadataRenderer } from './MarkdownMetadataRenderer.svelte';
4
5
  export { default as MarkdownProvider } from './MarkdownProvider.svelte';
5
6
  export { default as MarkdownRenderer } from './MarkdownRenderer.svelte';
6
- export * from './runtime';
7
- import { type RenderMarkdownOptions } from './context';
8
7
  export type RenderMarkdownProps = RenderMarkdownOptions;
9
- export declare const renderMarkdown: (content: string, options?: RenderMarkdownProps) => string;
10
- export declare const useMarkdownRenderer: (options?: RenderMarkdownProps) => (content: string) => string;
8
+ export declare const renderMarkdown: (markdown?: string, options?: any) => unknown;
9
+ export declare const useMarkdownRenderer: (options?: RenderMarkdownProps) => (content: string) => string | Promise<string>;
@@ -1,14 +1,11 @@
1
- export * from './compiler';
2
- export * from './context';
1
+ export { compileMarkdown } from './compiler';
2
+ export { getMarkdownContext, setMarkdownContext, setMarkdownContext as setIntlayerMarkdown, } from './context';
3
+ import { compileMarkdown } from './compiler';
4
+ import { getMarkdownContext } from './context';
3
5
  export { default as MarkdownMetadataRenderer } from './MarkdownMetadataRenderer.svelte';
4
6
  export { default as MarkdownProvider } from './MarkdownProvider.svelte';
5
7
  export { default as MarkdownRenderer } from './MarkdownRenderer.svelte';
6
- export * from './runtime';
7
- import { compileMarkdown } from './compiler';
8
- import { getMarkdownContext } from './context';
9
- export const renderMarkdown = (content, options = {}) => {
10
- return compileMarkdown(content, options);
11
- };
8
+ export const renderMarkdown = compileMarkdown;
12
9
  export const useMarkdownRenderer = (options = {}) => {
13
10
  const context = getMarkdownContext();
14
11
  return (content) => context.renderMarkdown(content, options);
package/dist/plugins.js CHANGED
@@ -1,6 +1,7 @@
1
1
  import configuration from '@intlayer/config/built';
2
2
  import { conditionPlugin, enumerationPlugin, filePlugin, genderPlugin, getHTML, nestedPlugin, translationPlugin, } from '@intlayer/core/interpreter';
3
3
  import { HTML_TAGS, } from '@intlayer/core/transpiler';
4
+ import { isEnabled } from '@intlayer/editor/isEnabled';
4
5
  import * as NodeTypes from '@intlayer/types/nodeType';
5
6
  import { default as ContentSelector } from './editor/ContentSelector.svelte';
6
7
  import { renderIntlayerNode } from './renderIntlayerNode';
@@ -34,9 +35,7 @@ export const intlayerNodePlugins = {
34
35
  typeof node === 'number',
35
36
  transform: (node, { children, ...rest }) => renderIntlayerNode({
36
37
  value: children ?? node,
37
- component: configuration?.editor.enabled
38
- ? ContentSelector
39
- : (children ?? node),
38
+ component: isEnabled ? ContentSelector : (children ?? node),
40
39
  props: rest,
41
40
  }),
42
41
  };
@@ -128,12 +127,26 @@ export const insertionPlugin = {
128
127
  };
129
128
  },
130
129
  };
131
- return deepTransformNode(children, {
130
+ const result = deepTransformNode(children, {
132
131
  ...props,
133
132
  children,
134
133
  keyPath: newKeyPath,
135
134
  plugins: [insertionStringPlugin, ...(props.plugins ?? [])],
136
135
  });
136
+ if (typeof children === 'object' &&
137
+ children !== null &&
138
+ 'nodeType' in children &&
139
+ [NodeTypes.ENUMERATION, NodeTypes.CONDITION].includes(children.nodeType)) {
140
+ return (values) => (arg) => {
141
+ const func = result;
142
+ const inner = func(arg);
143
+ if (typeof inner === 'function') {
144
+ return inner(values);
145
+ }
146
+ return inner;
147
+ };
148
+ }
149
+ return result;
137
150
  },
138
151
  };
139
152
  /** Markdown string plugin. Replaces string node with a component that render the markdown. */
@@ -151,7 +164,7 @@ export const markdownStringPlugin = {
151
164
  !metadataNode,
152
165
  transform: (metadataNode, props) => renderIntlayerNode({
153
166
  value: metadataNode,
154
- component: configuration?.editor.enabled
167
+ component: isEnabled
155
168
  ? (_MarkdownMetadataWithSelector ?? _MarkdownMetadataRenderer)
156
169
  : _MarkdownMetadataRenderer,
157
170
  props: {
@@ -170,7 +183,7 @@ export const markdownStringPlugin = {
170
183
  const render = (components) => {
171
184
  const nodeResult = renderIntlayerNode({
172
185
  value: node,
173
- component: configuration?.editor.enabled
186
+ component: isEnabled
174
187
  ? (_MarkdownWithSelector ?? _MarkdownRenderer)
175
188
  : _MarkdownRenderer,
176
189
  props: {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "svelte-intlayer",
3
- "version": "8.4.10",
3
+ "version": "8.5.0",
4
4
  "description": "Easily internationalize i18n your Svelte applications with type-safe multilingual content management.",
5
5
  "keywords": [
6
6
  "intlayer",
@@ -44,6 +44,11 @@
44
44
  "svelte": "./dist/markdown/index.js",
45
45
  "default": "./dist/markdown/index.js"
46
46
  },
47
+ "./html": {
48
+ "types": "./dist/html/index.d.ts",
49
+ "svelte": "./dist/html/index.js",
50
+ "default": "./dist/html/index.js"
51
+ },
47
52
  "./package.json": "./package.json"
48
53
  },
49
54
  "main": "dist/index.js",
@@ -72,11 +77,11 @@
72
77
  "typecheck": "tsc --noEmit --project tsconfig.types.json"
73
78
  },
74
79
  "dependencies": {
75
- "@intlayer/api": "8.4.10",
76
- "@intlayer/config": "8.4.10",
77
- "@intlayer/core": "8.4.10",
78
- "@intlayer/editor": "8.4.10",
79
- "@intlayer/types": "8.4.10"
80
+ "@intlayer/api": "8.5.0",
81
+ "@intlayer/config": "8.5.0",
82
+ "@intlayer/core": "8.5.0",
83
+ "@intlayer/editor": "8.5.0",
84
+ "@intlayer/types": "8.5.0"
80
85
  },
81
86
  "devDependencies": {
82
87
  "@sveltejs/adapter-auto": "7.0.1",
@@ -87,7 +92,7 @@
87
92
  "@utils/ts-config-types": "1.0.4",
88
93
  "@utils/tsdown-config": "1.0.4",
89
94
  "rimraf": "6.1.3",
90
- "svelte": "5.53.11",
95
+ "svelte": "5.55.0",
91
96
  "svelte-check": "4.4.5",
92
97
  "tsdown": "0.21.4",
93
98
  "typescript": "6.0.2",