@makeswift/runtime 0.25.4-canary.4 → 0.25.5
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.
- package/dist/cjs/api-handler/handlers/manifest.js +1 -1
- package/dist/cjs/components/builtin/Carousel/Carousel.js +2 -5
- package/dist/cjs/components/builtin/Carousel/Carousel.js.map +1 -1
- package/dist/cjs/controls/control.js +1 -3
- package/dist/cjs/controls/control.js.map +1 -1
- package/dist/cjs/controls/rich-text-v2/rich-text-v2.js +15 -2
- package/dist/cjs/controls/rich-text-v2/rich-text-v2.js.map +1 -1
- package/dist/cjs/controls/rich-text-v2/{translations/merge-translations.js → translation.js} +87 -10
- package/dist/cjs/controls/rich-text-v2/translation.js.map +1 -0
- package/dist/cjs/next/api-handler/config/pages-router.js +1 -1
- package/dist/cjs/next/api-handler/config/pages-router.js.map +1 -1
- package/dist/cjs/runtimes/react/components/page/index.js +13 -3
- package/dist/cjs/runtimes/react/components/page/index.js.map +1 -1
- package/dist/esm/api-handler/handlers/manifest.js +1 -1
- package/dist/esm/components/builtin/Carousel/Carousel.js +1 -4
- package/dist/esm/components/builtin/Carousel/Carousel.js.map +1 -1
- package/dist/esm/controls/control.js +1 -3
- package/dist/esm/controls/control.js.map +1 -1
- package/dist/esm/controls/rich-text-v2/rich-text-v2.js +17 -1
- package/dist/esm/controls/rich-text-v2/rich-text-v2.js.map +1 -1
- package/dist/esm/controls/rich-text-v2/{translations/merge-translations.js → translation.js} +70 -4
- package/dist/esm/controls/rich-text-v2/translation.js.map +1 -0
- package/dist/esm/next/api-handler/config/pages-router.js +1 -1
- package/dist/esm/next/api-handler/config/pages-router.js.map +1 -1
- package/dist/esm/runtimes/react/components/page/index.js +16 -4
- package/dist/esm/runtimes/react/components/page/index.js.map +1 -1
- package/dist/types/client/index.d.ts +11 -11
- package/dist/types/components/builtin/Carousel/Carousel.d.ts.map +1 -1
- package/dist/types/controls/control.d.ts.map +1 -1
- package/dist/types/controls/rich-text-v2/rich-text-v2.d.ts +12 -11
- package/dist/types/controls/rich-text-v2/rich-text-v2.d.ts.map +1 -1
- package/dist/types/controls/rich-text-v2/translation.d.ts +6 -0
- package/dist/types/controls/rich-text-v2/translation.d.ts.map +1 -0
- package/dist/types/runtimes/react/components/page/index.d.ts.map +1 -1
- package/dist/types/slate/BlockPlugin/index.d.ts +13 -1
- package/dist/types/slate/BlockPlugin/index.d.ts.map +1 -1
- package/dist/types/slate/InlinePlugin/index.d.ts +13 -1
- package/dist/types/slate/InlinePlugin/index.d.ts.map +1 -1
- package/dist/types/slate/LinkPlugin/getValue.d.ts.map +1 -1
- package/dist/types/slate/LinkPlugin/index.d.ts.map +1 -1
- package/dist/types/slate/TextAlignPlugin/index.d.ts +13 -1
- package/dist/types/slate/TextAlignPlugin/index.d.ts.map +1 -1
- package/dist/types/slate/TypographyPlugin/getValue.d.ts.map +1 -1
- package/dist/types/slate/TypographyPlugin/index.d.ts.map +1 -1
- package/package.json +47 -46
- package/dist/cjs/controls/rich-text-v2/translations/get-translations.js +0 -96
- package/dist/cjs/controls/rich-text-v2/translations/get-translations.js.map +0 -1
- package/dist/cjs/controls/rich-text-v2/translations/merge-translations.js.map +0 -1
- package/dist/cjs/controls/rich-text-v2/translations/translations-core.js +0 -45
- package/dist/cjs/controls/rich-text-v2/translations/translations-core.js.map +0 -1
- package/dist/cjs/controls/visitors/merge-translations-visitor.js +0 -46
- package/dist/cjs/controls/visitors/merge-translations-visitor.js.map +0 -1
- package/dist/esm/controls/rich-text-v2/translations/get-translations.js +0 -62
- package/dist/esm/controls/rich-text-v2/translations/get-translations.js.map +0 -1
- package/dist/esm/controls/rich-text-v2/translations/merge-translations.js.map +0 -1
- package/dist/esm/controls/rich-text-v2/translations/translations-core.js +0 -19
- package/dist/esm/controls/rich-text-v2/translations/translations-core.js.map +0 -1
- package/dist/esm/controls/visitors/merge-translations-visitor.js +0 -22
- package/dist/esm/controls/visitors/merge-translations-visitor.js.map +0 -1
- package/dist/types/controls/rich-text-v2/translations/get-translations.d.ts +0 -5
- package/dist/types/controls/rich-text-v2/translations/get-translations.d.ts.map +0 -1
- package/dist/types/controls/rich-text-v2/translations/merge-translations.d.ts +0 -5
- package/dist/types/controls/rich-text-v2/translations/merge-translations.d.ts.map +0 -1
- package/dist/types/controls/rich-text-v2/translations/translations-core.d.ts +0 -7
- package/dist/types/controls/rich-text-v2/translations/translations-core.d.ts.map +0 -1
- package/dist/types/controls/visitors/merge-translations-visitor.d.ts +0 -6
- package/dist/types/controls/visitors/merge-translations-visitor.d.ts.map +0 -1
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __defProp = Object.defineProperty;
|
|
3
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
-
var __export = (target, all) => {
|
|
7
|
-
for (var name in all)
|
|
8
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
-
};
|
|
10
|
-
var __copyProps = (to, from, except, desc) => {
|
|
11
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
-
for (let key of __getOwnPropNames(from))
|
|
13
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
-
}
|
|
16
|
-
return to;
|
|
17
|
-
};
|
|
18
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
-
var translations_core_exports = {};
|
|
20
|
-
__export(translations_core_exports, {
|
|
21
|
-
createEditorWithPlugins: () => createEditorWithPlugins,
|
|
22
|
-
pathToString: () => pathToString,
|
|
23
|
-
stringToPath: () => stringToPath
|
|
24
|
-
});
|
|
25
|
-
module.exports = __toCommonJS(translations_core_exports);
|
|
26
|
-
var import_slate = require("slate");
|
|
27
|
-
function createEditorWithPlugins(plugins) {
|
|
28
|
-
return plugins.reduceRight(
|
|
29
|
-
(editor, plugin) => plugin?.withPlugin?.(editor) ?? editor,
|
|
30
|
-
(0, import_slate.createEditor)()
|
|
31
|
-
);
|
|
32
|
-
}
|
|
33
|
-
function pathToString(path) {
|
|
34
|
-
return path.join(":");
|
|
35
|
-
}
|
|
36
|
-
function stringToPath(s) {
|
|
37
|
-
return s.split(":").map((a) => parseInt(a));
|
|
38
|
-
}
|
|
39
|
-
// Annotate the CommonJS export names for ESM import in node:
|
|
40
|
-
0 && (module.exports = {
|
|
41
|
-
createEditorWithPlugins,
|
|
42
|
-
pathToString,
|
|
43
|
-
stringToPath
|
|
44
|
-
});
|
|
45
|
-
//# sourceMappingURL=translations-core.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../src/controls/rich-text-v2/translations/translations-core.ts"],"sourcesContent":["import { createEditor } from 'slate'\nimport { MakeswiftEditor } from '../../../slate'\nimport { RichTextV2Plugin } from '../plugin'\n\nexport function createEditorWithPlugins(plugins: RichTextV2Plugin[]): MakeswiftEditor {\n return plugins.reduceRight(\n (editor, plugin) => plugin?.withPlugin?.(editor) ?? editor,\n createEditor(),\n )\n}\n\nexport function pathToString(path: number[]): string {\n return path.join(':')\n}\n\nexport function stringToPath(s: string): number[] {\n return s.split(':').map(a => parseInt(a))\n}\n\nexport type RichTextTranslationDto = Record<string, string>\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAA6B;AAItB,SAAS,wBAAwB,SAA8C;AACpF,SAAO,QAAQ;AAAA,IACb,CAAC,QAAQ,WAAW,QAAQ,aAAa,MAAM,KAAK;AAAA,QACpD,2BAAa;AAAA,EACf;AACF;AAEO,SAAS,aAAa,MAAwB;AACnD,SAAO,KAAK,KAAK,GAAG;AACtB;AAEO,SAAS,aAAa,GAAqB;AAChD,SAAO,EAAE,MAAM,GAAG,EAAE,IAAI,OAAK,SAAS,CAAC,CAAC;AAC1C;","names":[]}
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __defProp = Object.defineProperty;
|
|
3
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
-
var __export = (target, all) => {
|
|
7
|
-
for (var name in all)
|
|
8
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
-
};
|
|
10
|
-
var __copyProps = (to, from, except, desc) => {
|
|
11
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
-
for (let key of __getOwnPropNames(from))
|
|
13
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
-
}
|
|
16
|
-
return to;
|
|
17
|
-
};
|
|
18
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
-
var merge_translations_visitor_exports = {};
|
|
20
|
-
__export(merge_translations_visitor_exports, {
|
|
21
|
-
ReactMergeTranslationsVisitor: () => ReactMergeTranslationsVisitor
|
|
22
|
-
});
|
|
23
|
-
module.exports = __toCommonJS(merge_translations_visitor_exports);
|
|
24
|
-
var import_controls = require("@makeswift/controls");
|
|
25
|
-
var import_rich_text_v2 = require("../rich-text-v2");
|
|
26
|
-
var import_merge_translations = require("../rich-text-v2/translations/merge-translations");
|
|
27
|
-
class ReactMergeTranslationsVisitor extends import_controls.MergeTranslationsVisitor {
|
|
28
|
-
visitRichTextV2(def, data, translatedData) {
|
|
29
|
-
if (data == null || translatedData == null)
|
|
30
|
-
return data;
|
|
31
|
-
const { descendants, ...rest } = import_rich_text_v2.RichTextV2Definition.normalizeData(data);
|
|
32
|
-
return {
|
|
33
|
-
...rest,
|
|
34
|
-
descendants: (0, import_merge_translations.mergeTranslatedNodes)(
|
|
35
|
-
descendants,
|
|
36
|
-
translatedData,
|
|
37
|
-
def.config.plugins
|
|
38
|
-
)
|
|
39
|
-
};
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
// Annotate the CommonJS export names for ESM import in node:
|
|
43
|
-
0 && (module.exports = {
|
|
44
|
-
ReactMergeTranslationsVisitor
|
|
45
|
-
});
|
|
46
|
-
//# sourceMappingURL=merge-translations-visitor.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/controls/visitors/merge-translations-visitor.ts"],"sourcesContent":["import { Data, DataType, MergeTranslationsVisitor } from '@makeswift/controls'\n\nimport { RichTextV2Definition } from '../rich-text-v2'\nimport { RichTextTranslationDto } from '../rich-text-v2/translations/translations-core'\nimport { mergeTranslatedNodes } from '../rich-text-v2/translations/merge-translations'\n\nexport class ReactMergeTranslationsVisitor extends MergeTranslationsVisitor {\n visitRichTextV2(\n def: RichTextV2Definition,\n data: DataType<RichTextV2Definition> | undefined,\n translatedData: Data,\n ): Data {\n if (data == null || translatedData == null) return data\n\n const { descendants, ...rest } = RichTextV2Definition.normalizeData(data)\n\n return {\n ...rest,\n descendants: mergeTranslatedNodes(\n descendants,\n translatedData as RichTextTranslationDto,\n def.config.plugins,\n ),\n }\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,sBAAyD;AAEzD,0BAAqC;AAErC,gCAAqC;AAE9B,MAAM,sCAAsC,yCAAyB;AAAA,EAC1E,gBACE,KACA,MACA,gBACM;AACN,QAAI,QAAQ,QAAQ,kBAAkB;AAAM,aAAO;AAEnD,UAAM,EAAE,aAAa,GAAG,KAAK,IAAI,yCAAqB,cAAc,IAAI;AAExE,WAAO;AAAA,MACL,GAAG;AAAA,MACH,iBAAa;AAAA,QACX;AAAA,QACA;AAAA,QACA,IAAI,OAAO;AAAA,MACb;AAAA,IACF;AAAA,EACF;AACF;","names":[]}
|
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
import escapeHtml from "escape-html";
|
|
2
|
-
import { Editor, Text } from "slate";
|
|
3
|
-
import { Slate } from "@makeswift/controls";
|
|
4
|
-
import { InlineType } from "../../../slate/types";
|
|
5
|
-
import { createEditorWithPlugins, pathToString } from "./translations-core";
|
|
6
|
-
function getDescendantTranslatableData(descendant, path) {
|
|
7
|
-
if (Text.isText(descendant)) {
|
|
8
|
-
return {};
|
|
9
|
-
}
|
|
10
|
-
if (Slate.isList(descendant) || Slate.isListItem(descendant)) {
|
|
11
|
-
return descendant.children.reduce(
|
|
12
|
-
(acc, d, j) => ({ ...acc, ...getDescendantTranslatableData(d, [...path, j]) }),
|
|
13
|
-
{}
|
|
14
|
-
);
|
|
15
|
-
}
|
|
16
|
-
const text = getInlineOrTextTranslatableData(descendant);
|
|
17
|
-
if (text == null)
|
|
18
|
-
return {};
|
|
19
|
-
return { [pathToString(path)]: text };
|
|
20
|
-
}
|
|
21
|
-
function getInlineOrTextTranslatableData(descendant, path = []) {
|
|
22
|
-
if (Text.isText(descendant)) {
|
|
23
|
-
let string = escapeHtml(descendant.text);
|
|
24
|
-
if (string === "")
|
|
25
|
-
return null;
|
|
26
|
-
if (descendant.typography === void 0)
|
|
27
|
-
return string;
|
|
28
|
-
return `<span key="${pathToString(path)}">${string}</span>`;
|
|
29
|
-
}
|
|
30
|
-
const children = descendant.children.map((child, i) => getInlineOrTextTranslatableData(child, [...path, i])).join("");
|
|
31
|
-
if (children === "")
|
|
32
|
-
return null;
|
|
33
|
-
switch (descendant.type) {
|
|
34
|
-
case InlineType.Link:
|
|
35
|
-
return `<a key="${pathToString(path)}">${children}</a>`;
|
|
36
|
-
case InlineType.SuperScript:
|
|
37
|
-
return `<sup key="${pathToString(path)}">${children}</sup>`;
|
|
38
|
-
case InlineType.SubScript:
|
|
39
|
-
return `<sub key="${pathToString(path)}">${children}</sub>`;
|
|
40
|
-
case InlineType.Code:
|
|
41
|
-
return `<code key="${pathToString(path)}">${children}</code>`;
|
|
42
|
-
default:
|
|
43
|
-
return children;
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
function getTranslatableData(nodes, plugins) {
|
|
47
|
-
const editor = createEditorWithPlugins(plugins);
|
|
48
|
-
editor.children = nodes;
|
|
49
|
-
editor.typographyNormalizationDirection = "up";
|
|
50
|
-
Editor.normalize(editor, { force: true });
|
|
51
|
-
return editor.children.reduce(
|
|
52
|
-
(acc, descendant, i) => ({
|
|
53
|
-
...acc,
|
|
54
|
-
...getDescendantTranslatableData(descendant, [i])
|
|
55
|
-
}),
|
|
56
|
-
{}
|
|
57
|
-
);
|
|
58
|
-
}
|
|
59
|
-
export {
|
|
60
|
-
getTranslatableData
|
|
61
|
-
};
|
|
62
|
-
//# sourceMappingURL=get-translations.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../src/controls/rich-text-v2/translations/get-translations.ts"],"sourcesContent":["import escapeHtml from 'escape-html'\nimport { Descendant, Editor, Text } from 'slate'\n\nimport { type TranslationDto, Slate } from '@makeswift/controls'\n\nimport { RichTextV2Plugin } from '../plugin'\nimport { InlineType } from '../../../slate/types'\nimport { createEditorWithPlugins, pathToString, RichTextTranslationDto } from './translations-core'\n\nfunction getDescendantTranslatableData(descendant: Descendant, path: number[]): TranslationDto {\n if (Text.isText(descendant)) {\n return {}\n }\n\n if (Slate.isList(descendant) || Slate.isListItem(descendant)) {\n return descendant.children.reduce(\n (acc, d, j) => ({ ...acc, ...getDescendantTranslatableData(d, [...path, j]) }),\n {},\n )\n }\n\n const text = getInlineOrTextTranslatableData(descendant)\n if (text == null) return {}\n\n return { [pathToString(path)]: text }\n}\n\nfunction getInlineOrTextTranslatableData(\n descendant: Descendant,\n path: number[] = [],\n): string | null {\n if (Text.isText(descendant)) {\n let string = escapeHtml(descendant.text)\n\n if (string === '') return null\n\n if (descendant.typography === undefined) return string\n\n return `<span key=\"${pathToString(path)}\">${string}</span>`\n }\n\n const children = descendant.children\n .map((child: Descendant, i: number) => getInlineOrTextTranslatableData(child, [...path, i]))\n .join('')\n\n if (children === '') return null\n\n switch (descendant.type) {\n case InlineType.Link:\n return `<a key=\"${pathToString(path)}\">${children}</a>`\n\n case InlineType.SuperScript:\n return `<sup key=\"${pathToString(path)}\">${children}</sup>`\n\n case InlineType.SubScript:\n return `<sub key=\"${pathToString(path)}\">${children}</sub>`\n\n case InlineType.Code:\n return `<code key=\"${pathToString(path)}\">${children}</code>`\n\n default:\n return children\n }\n}\n\nexport function getTranslatableData(\n nodes: Slate.Descendant[],\n plugins: RichTextV2Plugin[],\n): RichTextTranslationDto {\n const editor = createEditorWithPlugins(plugins)\n\n editor.children = nodes\n editor.typographyNormalizationDirection = 'up'\n Editor.normalize(editor, { force: true })\n\n return editor.children.reduce(\n (acc, descendant: Descendant, i) => ({\n ...acc,\n ...getDescendantTranslatableData(descendant, [i]),\n }),\n {},\n )\n}\n"],"mappings":"AAAA,OAAO,gBAAgB;AACvB,SAAqB,QAAQ,YAAY;AAEzC,SAA8B,aAAa;AAG3C,SAAS,kBAAkB;AAC3B,SAAS,yBAAyB,oBAA4C;AAE9E,SAAS,8BAA8B,YAAwB,MAAgC;AAC7F,MAAI,KAAK,OAAO,UAAU,GAAG;AAC3B,WAAO,CAAC;AAAA,EACV;AAEA,MAAI,MAAM,OAAO,UAAU,KAAK,MAAM,WAAW,UAAU,GAAG;AAC5D,WAAO,WAAW,SAAS;AAAA,MACzB,CAAC,KAAK,GAAG,OAAO,EAAE,GAAG,KAAK,GAAG,8BAA8B,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,EAAE;AAAA,MAC5E,CAAC;AAAA,IACH;AAAA,EACF;AAEA,QAAM,OAAO,gCAAgC,UAAU;AACvD,MAAI,QAAQ;AAAM,WAAO,CAAC;AAE1B,SAAO,EAAE,CAAC,aAAa,IAAI,CAAC,GAAG,KAAK;AACtC;AAEA,SAAS,gCACP,YACA,OAAiB,CAAC,GACH;AACf,MAAI,KAAK,OAAO,UAAU,GAAG;AAC3B,QAAI,SAAS,WAAW,WAAW,IAAI;AAEvC,QAAI,WAAW;AAAI,aAAO;AAE1B,QAAI,WAAW,eAAe;AAAW,aAAO;AAEhD,WAAO,cAAc,aAAa,IAAI,CAAC,KAAK,MAAM;AAAA,EACpD;AAEA,QAAM,WAAW,WAAW,SACzB,IAAI,CAAC,OAAmB,MAAc,gCAAgC,OAAO,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,EAC1F,KAAK,EAAE;AAEV,MAAI,aAAa;AAAI,WAAO;AAE5B,UAAQ,WAAW,MAAM;AAAA,IACvB,KAAK,WAAW;AACd,aAAO,WAAW,aAAa,IAAI,CAAC,KAAK,QAAQ;AAAA,IAEnD,KAAK,WAAW;AACd,aAAO,aAAa,aAAa,IAAI,CAAC,KAAK,QAAQ;AAAA,IAErD,KAAK,WAAW;AACd,aAAO,aAAa,aAAa,IAAI,CAAC,KAAK,QAAQ;AAAA,IAErD,KAAK,WAAW;AACd,aAAO,cAAc,aAAa,IAAI,CAAC,KAAK,QAAQ;AAAA,IAEtD;AACE,aAAO;AAAA,EACX;AACF;AAEO,SAAS,oBACd,OACA,SACwB;AACxB,QAAM,SAAS,wBAAwB,OAAO;AAE9C,SAAO,WAAW;AAClB,SAAO,mCAAmC;AAC1C,SAAO,UAAU,QAAQ,EAAE,OAAO,KAAK,CAAC;AAExC,SAAO,OAAO,SAAS;AAAA,IACrB,CAAC,KAAK,YAAwB,OAAO;AAAA,MACnC,GAAG;AAAA,MACH,GAAG,8BAA8B,YAAY,CAAC,CAAC,CAAC;AAAA,IAClD;AAAA,IACA,CAAC;AAAA,EACH;AACF;","names":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../src/controls/rich-text-v2/translations/merge-translations.ts"],"sourcesContent":["import { Descendant, Editor, Element, Node, Text, Transforms } from 'slate'\nimport { jsx } from 'slate-hyperscript'\nimport { parseFragment, DefaultTreeAdapterTypes } from 'parse5'\n\nimport { Slate } from '@makeswift/controls'\n\nimport { RichTextV2Plugin } from '../plugin'\nimport { BlockType, InlineType } from '../../../slate/types'\nimport { createEditorWithPlugins, RichTextTranslationDto, stringToPath } from './translations-core'\n\nfunction deserializeTranslationHtmlString(\n el: DefaultTreeAdapterTypes.ChildNode | DefaultTreeAdapterTypes.DocumentFragment,\n translationKey?: string,\n): Descendant[] {\n if (el.nodeName === '#document-fragment') {\n const children = Array.from(el.childNodes)\n .map(element => deserializeTranslationHtmlString(element))\n .flat()\n\n if (children.length === 0) {\n children.push(jsx('text', {}, ''))\n }\n\n return children\n }\n\n if (el.nodeName === '#text' && 'value' in el) {\n return [jsx('text', { translationKey: translationKey ?? undefined }, el.value)]\n }\n\n if ('namespaceURI' in el) {\n const translationKey = el.attrs.find(a => a.name === 'key')?.value ?? undefined\n const children = Array.from(el.childNodes)\n .map(element => deserializeTranslationHtmlString(element, translationKey))\n .flat()\n\n if (children.length === 0) {\n children.push(jsx('text', {}, ''))\n }\n\n switch (el.nodeName) {\n case 'code':\n return [jsx('element', { type: InlineType.Code, translationKey }, children)]\n\n case 'sub':\n return [jsx('element', { type: InlineType.SubScript, translationKey }, children)]\n\n case 'sup':\n return [jsx('element', { type: InlineType.SuperScript, translationKey }, children)]\n\n case 'a':\n return [jsx('element', { type: InlineType.Link, translationKey }, children)]\n\n default:\n return children\n }\n }\n\n return []\n}\n\nexport function mergeTranslatedNodes(\n nodes: Slate.Descendant[],\n translatedData: RichTextTranslationDto,\n plugins: RichTextV2Plugin[],\n): Slate.Descendant[] {\n const sourceEditor = createEditorWithPlugins(plugins)\n const targetEditor = createEditorWithPlugins(plugins)\n\n sourceEditor.children = nodes\n sourceEditor.typographyNormalizationDirection = 'up'\n Editor.normalize(sourceEditor, { force: true })\n\n Object.entries(translatedData)\n .reverse()\n .forEach(([blockStringPath, htmlString]) => {\n const blockPath = stringToPath(blockStringPath)\n if (blockPath.length === 0) return\n\n const html = parseFragment(htmlString)\n const inlineDescendants = deserializeTranslationHtmlString(html)\n\n targetEditor.children = [{ type: BlockType.Default, children: inlineDescendants }]\n\n targetEditor.typographyNormalizationDirection = 'neutral'\n Editor.normalize(targetEditor, { force: true })\n\n for (const [descendant, absolutePathToTargetNode] of Node.descendants(targetEditor)) {\n if (\n (!Text.isText(descendant) && !Slate.isInline(descendant)) ||\n descendant.translationKey == null ||\n descendant.translationKey === ''\n ) {\n continue\n }\n\n const relativePathToSourceNode = stringToPath(descendant.translationKey)\n\n const absolutePathToSourceNode = [...blockPath, ...relativePathToSourceNode]\n\n const [sourceNode] = Editor.node(sourceEditor, absolutePathToSourceNode)\n\n if (Text.isText(sourceNode) && Text.isText(descendant)) {\n const { translationKey, text, ...rest } = sourceNode\n Transforms.setNodes(targetEditor, rest, { at: absolutePathToTargetNode })\n Transforms.unsetNodes(targetEditor, 'translationKey', { at: absolutePathToTargetNode })\n } else if (Slate.isInline(sourceNode) && Slate.isInline(descendant)) {\n const { translationKey, children, ...rest } = sourceNode\n Transforms.setNodes(targetEditor, rest, { at: absolutePathToTargetNode })\n Transforms.unsetNodes(targetEditor, 'translationKey', { at: absolutePathToTargetNode })\n }\n }\n const translatedChildren = (targetEditor.children.at(0) as Element)?.children\n\n Editor.withoutNormalizing(sourceEditor, () => {\n Array.from(Node.children(sourceEditor, blockPath))\n .reverse()\n .forEach(([_, path]) => {\n Transforms.removeNodes(sourceEditor, { at: path })\n })\n\n Transforms.insertNodes(sourceEditor, translatedChildren, { at: [...blockPath, 0] })\n })\n })\n\n sourceEditor.typographyNormalizationDirection = 'down'\n Editor.normalize(sourceEditor, { force: true })\n\n return sourceEditor.children\n}\n"],"mappings":"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","names":["translationKey"]}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { createEditor } from "slate";
|
|
2
|
-
function createEditorWithPlugins(plugins) {
|
|
3
|
-
return plugins.reduceRight(
|
|
4
|
-
(editor, plugin) => plugin?.withPlugin?.(editor) ?? editor,
|
|
5
|
-
createEditor()
|
|
6
|
-
);
|
|
7
|
-
}
|
|
8
|
-
function pathToString(path) {
|
|
9
|
-
return path.join(":");
|
|
10
|
-
}
|
|
11
|
-
function stringToPath(s) {
|
|
12
|
-
return s.split(":").map((a) => parseInt(a));
|
|
13
|
-
}
|
|
14
|
-
export {
|
|
15
|
-
createEditorWithPlugins,
|
|
16
|
-
pathToString,
|
|
17
|
-
stringToPath
|
|
18
|
-
};
|
|
19
|
-
//# sourceMappingURL=translations-core.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../src/controls/rich-text-v2/translations/translations-core.ts"],"sourcesContent":["import { createEditor } from 'slate'\nimport { MakeswiftEditor } from '../../../slate'\nimport { RichTextV2Plugin } from '../plugin'\n\nexport function createEditorWithPlugins(plugins: RichTextV2Plugin[]): MakeswiftEditor {\n return plugins.reduceRight(\n (editor, plugin) => plugin?.withPlugin?.(editor) ?? editor,\n createEditor(),\n )\n}\n\nexport function pathToString(path: number[]): string {\n return path.join(':')\n}\n\nexport function stringToPath(s: string): number[] {\n return s.split(':').map(a => parseInt(a))\n}\n\nexport type RichTextTranslationDto = Record<string, string>\n"],"mappings":"AAAA,SAAS,oBAAoB;AAItB,SAAS,wBAAwB,SAA8C;AACpF,SAAO,QAAQ;AAAA,IACb,CAAC,QAAQ,WAAW,QAAQ,aAAa,MAAM,KAAK;AAAA,IACpD,aAAa;AAAA,EACf;AACF;AAEO,SAAS,aAAa,MAAwB;AACnD,SAAO,KAAK,KAAK,GAAG;AACtB;AAEO,SAAS,aAAa,GAAqB;AAChD,SAAO,EAAE,MAAM,GAAG,EAAE,IAAI,OAAK,SAAS,CAAC,CAAC;AAC1C;","names":[]}
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import { MergeTranslationsVisitor } from "@makeswift/controls";
|
|
2
|
-
import { RichTextV2Definition } from "../rich-text-v2";
|
|
3
|
-
import { mergeTranslatedNodes } from "../rich-text-v2/translations/merge-translations";
|
|
4
|
-
class ReactMergeTranslationsVisitor extends MergeTranslationsVisitor {
|
|
5
|
-
visitRichTextV2(def, data, translatedData) {
|
|
6
|
-
if (data == null || translatedData == null)
|
|
7
|
-
return data;
|
|
8
|
-
const { descendants, ...rest } = RichTextV2Definition.normalizeData(data);
|
|
9
|
-
return {
|
|
10
|
-
...rest,
|
|
11
|
-
descendants: mergeTranslatedNodes(
|
|
12
|
-
descendants,
|
|
13
|
-
translatedData,
|
|
14
|
-
def.config.plugins
|
|
15
|
-
)
|
|
16
|
-
};
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
export {
|
|
20
|
-
ReactMergeTranslationsVisitor
|
|
21
|
-
};
|
|
22
|
-
//# sourceMappingURL=merge-translations-visitor.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/controls/visitors/merge-translations-visitor.ts"],"sourcesContent":["import { Data, DataType, MergeTranslationsVisitor } from '@makeswift/controls'\n\nimport { RichTextV2Definition } from '../rich-text-v2'\nimport { RichTextTranslationDto } from '../rich-text-v2/translations/translations-core'\nimport { mergeTranslatedNodes } from '../rich-text-v2/translations/merge-translations'\n\nexport class ReactMergeTranslationsVisitor extends MergeTranslationsVisitor {\n visitRichTextV2(\n def: RichTextV2Definition,\n data: DataType<RichTextV2Definition> | undefined,\n translatedData: Data,\n ): Data {\n if (data == null || translatedData == null) return data\n\n const { descendants, ...rest } = RichTextV2Definition.normalizeData(data)\n\n return {\n ...rest,\n descendants: mergeTranslatedNodes(\n descendants,\n translatedData as RichTextTranslationDto,\n def.config.plugins,\n ),\n }\n }\n}\n"],"mappings":"AAAA,SAAyB,gCAAgC;AAEzD,SAAS,4BAA4B;AAErC,SAAS,4BAA4B;AAE9B,MAAM,sCAAsC,yBAAyB;AAAA,EAC1E,gBACE,KACA,MACA,gBACM;AACN,QAAI,QAAQ,QAAQ,kBAAkB;AAAM,aAAO;AAEnD,UAAM,EAAE,aAAa,GAAG,KAAK,IAAI,qBAAqB,cAAc,IAAI;AAExE,WAAO;AAAA,MACL,GAAG;AAAA,MACH,aAAa;AAAA,QACX;AAAA,QACA;AAAA,QACA,IAAI,OAAO;AAAA,MACb;AAAA,IACF;AAAA,EACF;AACF;","names":[]}
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import { Slate } from '@makeswift/controls';
|
|
2
|
-
import { RichTextV2Plugin } from '../plugin';
|
|
3
|
-
import { RichTextTranslationDto } from './translations-core';
|
|
4
|
-
export declare function getTranslatableData(nodes: Slate.Descendant[], plugins: RichTextV2Plugin[]): RichTextTranslationDto;
|
|
5
|
-
//# sourceMappingURL=get-translations.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"get-translations.d.ts","sourceRoot":"","sources":["../../../../../src/controls/rich-text-v2/translations/get-translations.ts"],"names":[],"mappings":"AAGA,OAAO,EAAuB,KAAK,EAAE,MAAM,qBAAqB,CAAA;AAEhE,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAA;AAE5C,OAAO,EAAyC,sBAAsB,EAAE,MAAM,qBAAqB,CAAA;AA0DnG,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,KAAK,CAAC,UAAU,EAAE,EACzB,OAAO,EAAE,gBAAgB,EAAE,GAC1B,sBAAsB,CAcxB"}
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import { Slate } from '@makeswift/controls';
|
|
2
|
-
import { RichTextV2Plugin } from '../plugin';
|
|
3
|
-
import { RichTextTranslationDto } from './translations-core';
|
|
4
|
-
export declare function mergeTranslatedNodes(nodes: Slate.Descendant[], translatedData: RichTextTranslationDto, plugins: RichTextV2Plugin[]): Slate.Descendant[];
|
|
5
|
-
//# sourceMappingURL=merge-translations.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"merge-translations.d.ts","sourceRoot":"","sources":["../../../../../src/controls/rich-text-v2/translations/merge-translations.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAA;AAE3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAA;AAE5C,OAAO,EAA2B,sBAAsB,EAAgB,MAAM,qBAAqB,CAAA;AAqDnG,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,KAAK,CAAC,UAAU,EAAE,EACzB,cAAc,EAAE,sBAAsB,EACtC,OAAO,EAAE,gBAAgB,EAAE,GAC1B,KAAK,CAAC,UAAU,EAAE,CAgEpB"}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import { MakeswiftEditor } from '../../../slate';
|
|
2
|
-
import { RichTextV2Plugin } from '../plugin';
|
|
3
|
-
export declare function createEditorWithPlugins(plugins: RichTextV2Plugin[]): MakeswiftEditor;
|
|
4
|
-
export declare function pathToString(path: number[]): string;
|
|
5
|
-
export declare function stringToPath(s: string): number[];
|
|
6
|
-
export type RichTextTranslationDto = Record<string, string>;
|
|
7
|
-
//# sourceMappingURL=translations-core.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"translations-core.d.ts","sourceRoot":"","sources":["../../../../../src/controls/rich-text-v2/translations/translations-core.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAA;AAE5C,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,gBAAgB,EAAE,GAAG,eAAe,CAKpF;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,CAEnD;AAED,wBAAgB,YAAY,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAEhD;AAED,MAAM,MAAM,sBAAsB,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA"}
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import { Data, DataType, MergeTranslationsVisitor } from '@makeswift/controls';
|
|
2
|
-
import { RichTextV2Definition } from '../rich-text-v2';
|
|
3
|
-
export declare class ReactMergeTranslationsVisitor extends MergeTranslationsVisitor {
|
|
4
|
-
visitRichTextV2(def: RichTextV2Definition, data: DataType<RichTextV2Definition> | undefined, translatedData: Data): Data;
|
|
5
|
-
}
|
|
6
|
-
//# sourceMappingURL=merge-translations-visitor.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"merge-translations-visitor.d.ts","sourceRoot":"","sources":["../../../../src/controls/visitors/merge-translations-visitor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAA;AAE9E,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAA;AAItD,qBAAa,6BAA8B,SAAQ,wBAAwB;IACzE,eAAe,CACb,GAAG,EAAE,oBAAoB,EACzB,IAAI,EAAE,QAAQ,CAAC,oBAAoB,CAAC,GAAG,SAAS,EAChD,cAAc,EAAE,IAAI,GACnB,IAAI;CAcR"}
|