@cniot/mdd-editor 0.3.9 → 0.3.10
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/README.MD +4 -0
- package/build/index.cjs.js +101 -24
- package/build/index.es.js +347 -6
- package/build/style.css +1 -1
- package/package.json +1 -1
- package/src/ai/LocalAIDrawer.jsx +425 -3
package/build/index.es.js
CHANGED
|
@@ -30440,7 +30440,11 @@ function getPageCode(schemaJson = {}, pageMeta = {}) {
|
|
|
30440
30440
|
const MIN_BRIDGE_VERSION = "0.1.4";
|
|
30441
30441
|
const START_COMMAND = `npm i -g @cniot/mdd-ai-bridge
|
|
30442
30442
|
mdd-ai-bridge`;
|
|
30443
|
+
const DEFAULT_MAIN_PROJECT_PATH = "/Users/caoruiqi/Documents/code/owtb/tms-mach36";
|
|
30444
|
+
const MAIN_PROJECT_PATH_STORAGE_KEY = "mdd-local-ai-i18n-main-project-path";
|
|
30443
30445
|
const trimEndSlash = (value = "") => value.replace(/\/+$/, "");
|
|
30446
|
+
const hasChineseText = (value = "") => /[\u4e00-\u9fff]/.test(String(value));
|
|
30447
|
+
const hasLetterText = (value = "") => /[a-zA-Z]/.test(String(value));
|
|
30444
30448
|
const parseSchema = (value) => {
|
|
30445
30449
|
if (!value)
|
|
30446
30450
|
return null;
|
|
@@ -30708,6 +30712,166 @@ const collectLinkedPageReferences = ({ schemaJson, scriptInfo, rootCode, extraSo
|
|
|
30708
30712
|
);
|
|
30709
30713
|
return mergeL4References([...schemaReferences, ...scriptReferences, ...extraReferences], rootCode);
|
|
30710
30714
|
};
|
|
30715
|
+
const I18N_SCHEMA_FIELDS = /* @__PURE__ */ new Set([
|
|
30716
|
+
"label",
|
|
30717
|
+
"tooltip",
|
|
30718
|
+
"title",
|
|
30719
|
+
"placeholder",
|
|
30720
|
+
"children",
|
|
30721
|
+
"text",
|
|
30722
|
+
"submitText",
|
|
30723
|
+
"resetText",
|
|
30724
|
+
"cancelText",
|
|
30725
|
+
"secondConfirmTitle",
|
|
30726
|
+
"secondConfirmContent",
|
|
30727
|
+
"emptyText",
|
|
30728
|
+
"moreText"
|
|
30729
|
+
]);
|
|
30730
|
+
const createI18nSchemaCandidates = (value, path = "$", candidates = []) => {
|
|
30731
|
+
if (Array.isArray(value)) {
|
|
30732
|
+
value.forEach((item, index2) => createI18nSchemaCandidates(item, `${path}[${index2}]`, candidates));
|
|
30733
|
+
return candidates;
|
|
30734
|
+
}
|
|
30735
|
+
if (!value || typeof value !== "object")
|
|
30736
|
+
return candidates;
|
|
30737
|
+
Object.keys(value).forEach((key) => {
|
|
30738
|
+
const nextPath = `${path}.${key}`;
|
|
30739
|
+
const item = value[key];
|
|
30740
|
+
if (typeof item === "string" && I18N_SCHEMA_FIELDS.has(key) && (hasChineseText(item) || hasLetterText(item))) {
|
|
30741
|
+
candidates.push({
|
|
30742
|
+
path: nextPath,
|
|
30743
|
+
field: key,
|
|
30744
|
+
text: item
|
|
30745
|
+
});
|
|
30746
|
+
}
|
|
30747
|
+
createI18nSchemaCandidates(item, nextPath, candidates);
|
|
30748
|
+
});
|
|
30749
|
+
return candidates;
|
|
30750
|
+
};
|
|
30751
|
+
const createScriptI18nPreview = (script = "") => {
|
|
30752
|
+
const seen = /* @__PURE__ */ new Set();
|
|
30753
|
+
const stringLikePattern = /(['"`])(?:(?!\1).)*[\u4e00-\u9fffA-Za-z](?:(?!\1).)*\1/;
|
|
30754
|
+
return String(script).split("\n").map((line, index2) => ({
|
|
30755
|
+
lineNumber: index2 + 1,
|
|
30756
|
+
line: line.trim()
|
|
30757
|
+
})).filter((item) => stringLikePattern.test(item.line)).filter((item) => hasChineseText(item.line) || hasLetterText(item.line)).filter((item) => {
|
|
30758
|
+
const key = item.line;
|
|
30759
|
+
if (seen.has(key))
|
|
30760
|
+
return false;
|
|
30761
|
+
seen.add(key);
|
|
30762
|
+
return true;
|
|
30763
|
+
}).slice(0, 40);
|
|
30764
|
+
};
|
|
30765
|
+
const formatI18nCandidateList = (items = []) => {
|
|
30766
|
+
if (!items.length)
|
|
30767
|
+
return "- \u6682\u672A\u5728\u7F16\u8F91\u5668\u5F53\u524D schema \u4E2D\u9884\u626B\u5230 label/tooltip \u7B49\u6587\u6848\uFF0C\u8BF7\u4ECD\u7136\u5B8C\u6574\u68C0\u67E5 mdd.schema.json\u3002";
|
|
30768
|
+
return items.slice(0, 80).map((item) => `- ${item.path} (${item.field}): ${item.text}`).join("\n");
|
|
30769
|
+
};
|
|
30770
|
+
const formatScriptPreviewList = (items = []) => {
|
|
30771
|
+
if (!items.length)
|
|
30772
|
+
return "- \u6682\u672A\u5728\u7F16\u8F91\u5668\u5F53\u524D script \u4E2D\u9884\u626B\u5230\u660E\u663E\u6587\u6848\u884C\uFF0C\u8BF7\u4ECD\u7136\u5B8C\u6574\u68C0\u67E5 mdd.script.jsx\u3002";
|
|
30773
|
+
return items.map((item) => `- L${item.lineNumber}: ${item.line}`).join("\n");
|
|
30774
|
+
};
|
|
30775
|
+
const formatLinkedI18nWorkspaceList = ({ linkedPages = {}, syncLinkedPages = false }) => {
|
|
30776
|
+
if (!syncLinkedPages) {
|
|
30777
|
+
return "\u672C\u6B21\u672A\u5F00\u542F\u9012\u5F52\u5B50\u9875\u9762\uFF0C\u53EA\u5904\u7406\u5F53\u524D L4 \u9875\u9762\u3002";
|
|
30778
|
+
}
|
|
30779
|
+
const pages = (linkedPages == null ? void 0 : linkedPages.pages) || [];
|
|
30780
|
+
const failed = (linkedPages == null ? void 0 : linkedPages.failed) || [];
|
|
30781
|
+
const syncedText = pages.length ? pages.map((page) => `- ${page.name || "\u672A\u547D\u540D\u9875\u9762"} (${page.code})\uFF1A${page.dir}`).join("\n") : "- \u672A\u53D1\u73B0\u5DF2\u540C\u6B65\u7684\u5173\u8054\u5B50\u9875\u9762\u3002";
|
|
30782
|
+
const failedText = failed.length ? `
|
|
30783
|
+
|
|
30784
|
+
\u9012\u5F52\u626B\u63CF\u4E2D\u6709\u4EE5\u4E0B\u5173\u8054\u9875\u9762\u672A\u80FD\u540C\u6B65\uFF0C\u8BF7\u4E0D\u8981\u4FEE\u6539\u8FD9\u4E9B\u9875\u9762\uFF0C\u6700\u540E\u62A5\u544A\u7ED9\u7528\u6237\uFF1A
|
|
30785
|
+
${failed.map((page) => `- ${page.name || "\u672A\u547D\u540D\u9875\u9762"} (${page.code})\uFF1A${page.reason || "\u672A\u80FD\u81EA\u52A8\u540C\u6B65"}`).join("\n")}` : "";
|
|
30786
|
+
return `\u672C\u6B21\u5DF2\u5F00\u542F\u9012\u5F52\u5B50\u9875\u9762\uFF0C\u8BF7\u540C\u65F6\u5904\u7406\u5F53\u524D\u9875\u9762\u548C\u4EE5\u4E0B\u5DF2\u540C\u6B65\u7684\u5173\u8054 L4 \u9875\u9762\u3002\u6BCF\u4E2A\u9875\u9762\u76EE\u5F55\u90FD\u5305\u542B mdd.schema.json \u548C mdd.script.jsx\uFF1A
|
|
30787
|
+
${syncedText}${failedText}`;
|
|
30788
|
+
};
|
|
30789
|
+
const buildL4I18nPrompt = ({
|
|
30790
|
+
pageCode,
|
|
30791
|
+
workspacePath,
|
|
30792
|
+
mainProjectPath,
|
|
30793
|
+
schemaJson,
|
|
30794
|
+
scriptInfo,
|
|
30795
|
+
linkedPages,
|
|
30796
|
+
syncLinkedPages
|
|
30797
|
+
}) => {
|
|
30798
|
+
const normalizedProjectPath = trimEndSlash(mainProjectPath || "");
|
|
30799
|
+
const schemaCandidates = createI18nSchemaCandidates(schemaJson);
|
|
30800
|
+
const scriptPreview = createScriptI18nPreview(scriptInfo);
|
|
30801
|
+
const linkedWorkspaceText = formatLinkedI18nWorkspaceList({
|
|
30802
|
+
linkedPages,
|
|
30803
|
+
syncLinkedPages
|
|
30804
|
+
});
|
|
30805
|
+
return `\u4F60\u73B0\u5728\u8981\u4E3A\u4E00\u4E2A MDD L4 \u9875\u9762\u505A\u591A\u8BED\u8A00\u540C\u6B65\u3002\u8BF7\u76F4\u63A5\u4FEE\u6539\u672C\u5730\u6587\u4EF6\uFF0C\u4E0D\u8981\u53EA\u7ED9\u5EFA\u8BAE\u3002
|
|
30806
|
+
|
|
30807
|
+
\u5F53\u524D L4 \u9875\u9762\uFF1A
|
|
30808
|
+
- \u9875\u9762 Code\uFF1A${pageCode}
|
|
30809
|
+
- L4 \u5DE5\u4F5C\u533A\uFF1A${workspacePath}
|
|
30810
|
+
- Schema \u6587\u4EF6\uFF1A${workspacePath}/mdd.schema.json
|
|
30811
|
+
- Script \u6587\u4EF6\uFF1A${workspacePath}/mdd.script.jsx
|
|
30812
|
+
|
|
30813
|
+
\u9012\u5F52\u5B50\u9875\u9762\uFF1A
|
|
30814
|
+
${linkedWorkspaceText}
|
|
30815
|
+
|
|
30816
|
+
\u4E3B\u5DE5\u7A0B\uFF1A
|
|
30817
|
+
- \u5DE5\u7A0B\u6839\u76EE\u5F55\uFF1A${normalizedProjectPath}
|
|
30818
|
+
- \u82F1\u6587\u8BCD\u6761\uFF1A${normalizedProjectPath}/src/i18n/strings/en-US.json
|
|
30819
|
+
- \u8D8A\u5357\u8BED\u8BCD\u6761\uFF1A${normalizedProjectPath}/src/i18n/strings/vi-VN.json
|
|
30820
|
+
|
|
30821
|
+
\u76EE\u6807\uFF1A
|
|
30822
|
+
1. \u626B\u63CF\u5F53\u524D L4 \u9875\u9762${syncLinkedPages ? "\u4EE5\u53CA\u4E0A\u9762\u5217\u51FA\u7684\u6240\u6709\u5DF2\u540C\u6B65\u5173\u8054\u5B50 L4 \u9875\u9762" : ""}\u7684 mdd.schema.json\uFF0C\u5904\u7406\u6240\u6709\u9762\u5411\u7528\u6237\u5C55\u793A\u7684\u6587\u6848\uFF0C\u4E0D\u9650\u4E2D\u6587\uFF1B\u82F1\u6587 UI \u6587\u6848\u4E5F\u5FC5\u987B\u5904\u7406\u3002\u91CD\u70B9\u5305\u62EC label\u3001tooltip\uFF0C\u4E5F\u5305\u62EC title\u3001placeholder\u3001children\u3001text\u3001submitText\u3001resetText\u3001cancelText\u3001secondConfirmTitle\u3001secondConfirmContent \u7B49\u540C\u7C7B\u5B57\u6BB5\u3002
|
|
30823
|
+
2. \u82F1\u6587 label/tooltip \u4E5F\u5C5E\u4E8E\u9700\u8981\u540C\u6B65\u7684\u6587\u6848\uFF0C\u4F8B\u5982 ResourceId\u3001ResourceName\u3001Status\u3001id\u3001edit template\u3001enable\u3001disable\u3001edit\u3001Add template \u7B49\uFF0C\u90FD\u8981\u4F5C\u4E3A i18n key \u53BB\u68C0\u67E5 en-US.json \u548C vi-VN.json\u3002
|
|
30824
|
+
3. \u626B\u63CF\u5F53\u524D L4 \u9875\u9762${syncLinkedPages ? "\u4EE5\u53CA\u4E0A\u9762\u5217\u51FA\u7684\u6240\u6709\u5DF2\u540C\u6B65\u5173\u8054\u5B50 L4 \u9875\u9762" : ""}\u7684 mdd.script.jsx\uFF0C\u627E\u51FA JSX\u3001\u5F39\u7A97\u3001\u6309\u94AE\u3001\u6D88\u606F\u63D0\u793A\u3001\u8868\u683C\u5217\u3001\u9009\u9879\u3001\u9519\u8BEF\u63D0\u793A\u7B49\u7528\u6237\u53EF\u89C1\u786C\u7F16\u7801\u6587\u6848\u3002\u4E2D\u6587\u3001\u82F1\u6587\u3001\u82F1\u6587\u77ED\u8BED\u3001\u6570\u5B57/\u82F1\u6587\u6DF7\u5408\u77ED\u8BED\u90FD\u7B97\u7528\u6237\u53EF\u89C1\u6587\u6848\u3002
|
|
30825
|
+
4. \u5BF9 mdd.script.jsx \u4E2D\u672A\u56FD\u9645\u5316\u7684\u7528\u6237\u53EF\u89C1\u786C\u7F16\u7801\u6587\u6848\uFF0C\u5F15\u5165\u5E76\u4F7F\u7528 $i18n \u5305\u88F9\u3002\u82E5\u6587\u4EF6\u8FD8\u6CA1\u6709 import\uFF0C\u8BF7\u6DFB\u52A0\uFF1A
|
|
30826
|
+
import $i18n from '@src/i18n';
|
|
30827
|
+
\u4F7F\u7528\u65B9\u5F0F\u4E3A $i18n.get('\u6587\u6848 key')\u3002\u4E0D\u8981\u5904\u7406\u6CE8\u91CA\u3001\u65E5\u5FD7\u3001\u63A5\u53E3\u5B57\u6BB5\u540D\u3001\u5BF9\u8C61 key\u3001\u8DEF\u5F84\u3001\u57CB\u70B9 code\u3001\u975E\u7528\u6237\u53EF\u89C1\u6587\u672C\u3002
|
|
30828
|
+
5. mdd.schema.json \u4E2D\u7684 label/tooltip \u7B49 key \u901A\u5E38\u7531 MDD \u6E32\u67D3\u5F15\u64CE\u81EA\u52A8 i18n.tr \u5904\u7406\uFF0C\u539F\u5219\u4E0A\u4FDD\u7559 schema \u539F\u59CB\u6587\u6848 key\uFF0C\u4E0D\u8981\u4E3A\u4E86\u56FD\u9645\u5316\u968F\u610F\u6539 schema \u7ED3\u6784\uFF1B\u53EA\u9700\u8981\u4E3A\u8FD9\u4E9B key \u8865\u9F50\u4E3B\u5DE5\u7A0B\u7FFB\u8BD1\u8BCD\u6761\u3002
|
|
30829
|
+
6. \u5C06\u6240\u6709\u9700\u8981\u7FFB\u8BD1\u7684\u6587\u6848 key \u53BB\u91CD\u540E\uFF0C\u540C\u6B65\u5230\u4E3B\u5DE5\u7A0B\u7684 en-US.json \u548C vi-VN.json\uFF1A
|
|
30830
|
+
- JSON \u662F\u6241\u5E73 key/value \u683C\u5F0F\uFF0Ckey \u4FDD\u6301\u539F\u6587\uFF0C\u4E0D\u7BA1\u539F\u6587\u662F\u4E2D\u6587\u8FD8\u662F\u82F1\u6587\u3002
|
|
30831
|
+
- \u5982\u679C key \u5DF2\u5B58\u5728\uFF0C\u5FC5\u987B\u8DF3\u8FC7\uFF0C\u4E0D\u8986\u76D6\u5DF2\u6709\u7FFB\u8BD1\u3002
|
|
30832
|
+
- \u5982\u679C key \u4E0D\u5B58\u5728\uFF0C\u4E24\u4E2A\u6587\u4EF6\u90FD\u8981\u65B0\u589E\u3002
|
|
30833
|
+
- \u5BF9\u82F1\u6587 key\uFF1Aen-US.json \u7684 value \u53EF\u4EE5\u4F7F\u7528\u66F4\u89C4\u8303\u7684\u82F1\u6587\u5C55\u793A\u6587\u6848\uFF0C\u4F8B\u5982 ResourceId \u53EF\u5199\u4E3A Resource ID\u3001enable \u53EF\u5199\u4E3A Enable\uFF1Bvi-VN.json \u7684 value \u5FC5\u987B\u7FFB\u8BD1\u6210\u8D8A\u5357\u8BED\u3002
|
|
30834
|
+
- \u5BF9\u4E2D\u6587 key\uFF1Aen-US.json \u7FFB\u8BD1\u6210\u82F1\u6587\uFF0Cvi-VN.json \u7FFB\u8BD1\u6210\u8D8A\u5357\u8BED\u3002
|
|
30835
|
+
- \u4FDD\u6301 JSON \u5408\u6CD5\u3001\u683C\u5F0F\u7A33\u5B9A\uFF0C\u5C3D\u91CF\u7EF4\u6301\u539F\u6587\u4EF6\u7F29\u8FDB\u548C\u6392\u5E8F\u98CE\u683C\u3002
|
|
30836
|
+
7. i18n JSON \u6587\u4EF6\u53EF\u80FD\u975E\u5E38\u5927\uFF0C\u4E0D\u8981\u7528 cat\u3001sed \u5927\u6BB5\u6253\u5370\u6216\u628A\u5B8C\u6574\u6587\u4EF6\u8BFB\u8FDB\u5BF9\u8BDD\u4E0A\u4E0B\u6587\u3002\u8BF7\u4F18\u5148\u7528\u811A\u672C\u7CBE\u786E\u67E5\u91CD\u548C\u589E\u91CF\u5199\u5165\uFF0C\u4F8B\u5982\uFF1A
|
|
30837
|
+
node - <<'NODE'
|
|
30838
|
+
const fs = require('fs');
|
|
30839
|
+
const files = [
|
|
30840
|
+
'${normalizedProjectPath}/src/i18n/strings/en-US.json',
|
|
30841
|
+
'${normalizedProjectPath}/src/i18n/strings/vi-VN.json',
|
|
30842
|
+
];
|
|
30843
|
+
const keys = [
|
|
30844
|
+
// \u5728\u8FD9\u91CC\u586B\u5165\u4ECE L4 \u9875\u9762\u6536\u96C6\u5E76\u53BB\u91CD\u540E\u7684\u5019\u9009 key
|
|
30845
|
+
];
|
|
30846
|
+
for (const file of files) {
|
|
30847
|
+
const json = JSON.parse(fs.readFileSync(file, 'utf8'));
|
|
30848
|
+
const missing = keys.filter((key) => !Object.prototype.hasOwnProperty.call(json, key));
|
|
30849
|
+
console.log(file, 'missing:', missing);
|
|
30850
|
+
}
|
|
30851
|
+
NODE
|
|
30852
|
+
\u5982\u679C\u9700\u8981\u5199\u5165\uFF0C\u4E5F\u8BF7\u7528\u7C7B\u4F3C\u811A\u672C\u8BFB\u53D6 JSON \u5BF9\u8C61\u3001\u53EA\u7ED9 missing key \u8D4B\u503C\u3001\u518D JSON.stringify(data, null, 2) \u5199\u56DE\uFF1B\u5199\u5165\u524D\u540E\u53EA\u8F93\u51FA\u65B0\u589E\u6570\u91CF\u548C\u65B0\u589E key \u5217\u8868\uFF0C\u4E0D\u8981\u8F93\u51FA\u5B8C\u6574 JSON\u3002
|
|
30853
|
+
8. \u7FFB\u8BD1\u8981\u6C42\uFF1A
|
|
30854
|
+
- \u82F1\u6587\u4F7F\u7528\u7B80\u6D01\u51C6\u786E\u7684\u540E\u53F0/\u7269\u6D41\u7CFB\u7EDF UI \u6587\u6848\uFF0C\u6309\u94AE\u77ED\u8BED\u9996\u5B57\u6BCD\u5927\u5199\u5373\u53EF\uFF0C\u4E0D\u8981\u673A\u68B0\u76F4\u8BD1\u3002
|
|
30855
|
+
- \u8D8A\u5357\u8BED\u4F7F\u7528\u81EA\u7136\u7684\u8D8A\u5357\u8BED\u4E1A\u52A1\u7CFB\u7EDF\u6587\u6848\uFF0C\u4FDD\u7559\u53D8\u91CF\u5360\u4F4D\u7B26\u3001\u6570\u5B57\u3001\u6807\u70B9\u548C\u4E13\u6709\u540D\u8BCD\u3002
|
|
30856
|
+
- \u5E26 {0}\u3001{name}\u3001\${value}\u3001%s \u7B49\u5360\u4F4D\u7B26\u7684\u6587\u6848\uFF0C\u7FFB\u8BD1\u540E\u5FC5\u987B\u5B8C\u6574\u4FDD\u7559\u5360\u4F4D\u7B26\u3002
|
|
30857
|
+
9. \u5B8C\u6210\u540E\u8BF7\u81EA\u68C0\uFF1A
|
|
30858
|
+
- \u6240\u6709\u88AB\u5904\u7406\u9875\u9762\u7684 mdd.schema.json \u90FD\u662F\u5408\u6CD5 JSON\u3002
|
|
30859
|
+
- en-US.json\u3001vi-VN.json \u662F\u5408\u6CD5 JSON\u3002
|
|
30860
|
+
- \u6240\u6709\u88AB\u5904\u7406\u9875\u9762\u7684 mdd.script.jsx \u90FD\u6CA1\u6709\u7834\u574F React/JSX \u8BED\u6CD5\u3002
|
|
30861
|
+
- \u6CA1\u6709\u91CD\u590D key\uFF0C\u6CA1\u6709\u8986\u76D6\u5DF2\u6709 key\u3002
|
|
30862
|
+
|
|
30863
|
+
\u7F16\u8F91\u5668\u9884\u626B\u5230\u7684\u5F53\u524D\u9875\u9762 schema \u5019\u9009\u6587\u6848\u5982\u4E0B\uFF0C\u5305\u542B\u4E2D\u6587\u548C\u82F1\u6587\uFF1B\u8BF7\u4EE5\u5B9E\u9645\u6587\u4EF6\u4E3A\u51C6\u518D\u5B8C\u6574\u8865\u5145\uFF0C\u4E0D\u8981\u56E0\u4E3A\u6587\u6848\u662F\u82F1\u6587\u5C31\u8DF3\u8FC7\uFF1A
|
|
30864
|
+
${formatI18nCandidateList(schemaCandidates)}
|
|
30865
|
+
|
|
30866
|
+
\u7F16\u8F91\u5668\u9884\u626B\u5230\u7684\u5F53\u524D\u9875\u9762 script \u5019\u9009\u884C\u5982\u4E0B\uFF0C\u8BF7\u4EE5\u5B9E\u9645\u6587\u4EF6\u4E3A\u51C6\u8BC6\u522B\u771F\u6B63\u7684\u7528\u6237\u53EF\u89C1\u6587\u6848\uFF0C\u4E0D\u8981\u56E0\u4E3A\u6587\u6848\u662F\u82F1\u6587\u5C31\u8DF3\u8FC7\uFF1A
|
|
30867
|
+
${formatScriptPreviewList(scriptPreview)}
|
|
30868
|
+
|
|
30869
|
+
\u8BF7\u73B0\u5728\u5F00\u59CB\u4FEE\u6539\u8FD9\u4E9B\u6587\u4EF6\uFF0C\u5E76\u5728\u6700\u540E\u8F93\u51FA\uFF1A
|
|
30870
|
+
- \u6BCF\u4E2A L4 \u9875\u9762\u5206\u522B\u5305\u88F9\u4E86\u54EA\u4E9B\u6587\u6848
|
|
30871
|
+
- en-US.json \u65B0\u589E\u4E86\u591A\u5C11\u6761
|
|
30872
|
+
- vi-VN.json \u65B0\u589E\u4E86\u591A\u5C11\u6761
|
|
30873
|
+
- \u662F\u5426\u6709\u8DF3\u8FC7\u7684\u5DF2\u5B58\u5728 key`;
|
|
30874
|
+
};
|
|
30711
30875
|
const createLinkedPageExtraSources = (data = {}, prefix = "payload") => {
|
|
30712
30876
|
const sourceFields = [
|
|
30713
30877
|
"schemaInfo",
|
|
@@ -30849,6 +31013,9 @@ const normalizeLinkedPagePayload = (reference, pageData) => {
|
|
|
30849
31013
|
};
|
|
30850
31014
|
};
|
|
30851
31015
|
const buildLinkedPagePayload = async (payload, config2) => {
|
|
31016
|
+
if (!(config2 == null ? void 0 : config2.syncLinkedPages)) {
|
|
31017
|
+
return payload;
|
|
31018
|
+
}
|
|
30852
31019
|
const rootSchemaJson = parseSchema(payload.schemaInfo) || {};
|
|
30853
31020
|
const resolver = getLinkedPageResolver(config2);
|
|
30854
31021
|
let rootPageData = null;
|
|
@@ -31000,7 +31167,7 @@ const createLinkedPullSummary = (res) => {
|
|
|
31000
31167
|
return `\u68C0\u6D4B\u5230\u5173\u8054 L4 \u9875\u9762\u4E5F\u5B58\u5728\u672C\u5730\u4FEE\u6539\uFF1A${codes}\u3002\u5F53\u524D\u53EA\u540C\u6B65\u4E86\u5F53\u524D\u9875\u9762\uFF0C\u8BF7\u5206\u522B\u6253\u5F00\u8FD9\u4E9B L4 \u9875\u9762\u6267\u884C\u201C\u540C\u6B65\u672C\u5730\u4FEE\u6539\u201D\u5E76\u4FDD\u5B58\u3002`;
|
|
31001
31168
|
};
|
|
31002
31169
|
function LocalAIDrawer(props) {
|
|
31003
|
-
var _a2, _b2, _c2, _d, _e, _f, _g, _h, _i;
|
|
31170
|
+
var _a2, _b2, _c2, _d, _e, _f, _g, _h, _i, _j, _k;
|
|
31004
31171
|
const { schema, scriptInfo, pageMeta = {}, bridgeConfig, onApply } = props;
|
|
31005
31172
|
const config2 = React$1.useMemo(() => normalizeBridgeConfig(bridgeConfig), [bridgeConfig]);
|
|
31006
31173
|
const [baseURL, setBaseURL] = React$1.useState(config2.baseURL || DEFAULT_BRIDGE_URL);
|
|
@@ -31011,6 +31178,16 @@ function LocalAIDrawer(props) {
|
|
|
31011
31178
|
const [lastSummary, setLastSummary] = React$1.useState("");
|
|
31012
31179
|
const [pullError, setPullError] = React$1.useState(null);
|
|
31013
31180
|
const [lastDiffSummary, setLastDiffSummary] = React$1.useState(null);
|
|
31181
|
+
const [syncLinkedPages, setSyncLinkedPages] = React$1.useState(false);
|
|
31182
|
+
const [i18nDialogVisible, setI18nDialogVisible] = React$1.useState(false);
|
|
31183
|
+
const [i18nMainProjectPath, setI18nMainProjectPath] = React$1.useState(() => {
|
|
31184
|
+
var _a3;
|
|
31185
|
+
if (typeof window === "undefined")
|
|
31186
|
+
return DEFAULT_MAIN_PROJECT_PATH;
|
|
31187
|
+
return ((_a3 = window.localStorage) == null ? void 0 : _a3.getItem(MAIN_PROJECT_PATH_STORAGE_KEY)) || DEFAULT_MAIN_PROJECT_PATH;
|
|
31188
|
+
});
|
|
31189
|
+
const [i18nPrompt, setI18nPrompt] = React$1.useState("");
|
|
31190
|
+
const [i18nWorkspaceInfo, setI18nWorkspaceInfo] = React$1.useState(null);
|
|
31014
31191
|
const schemaJson = ((_a2 = schema == null ? void 0 : schema.getAllJSON) == null ? void 0 : _a2.call(schema)) || {};
|
|
31015
31192
|
const pageCode = getPageCode(schemaJson, pageMeta);
|
|
31016
31193
|
const getPayload = React$1.useCallback(() => {
|
|
@@ -31070,6 +31247,27 @@ function LocalAIDrawer(props) {
|
|
|
31070
31247
|
\u6211\u7684\u9700\u6C42\u662F\uFF1A`,
|
|
31071
31248
|
[expectedWorkspacePath, pageCode]
|
|
31072
31249
|
);
|
|
31250
|
+
const currentI18nPrompt = React$1.useMemo(
|
|
31251
|
+
() => buildL4I18nPrompt({
|
|
31252
|
+
pageCode,
|
|
31253
|
+
workspacePath: (i18nWorkspaceInfo == null ? void 0 : i18nWorkspaceInfo.dir) || workspacePath || expectedWorkspacePath,
|
|
31254
|
+
mainProjectPath: i18nMainProjectPath,
|
|
31255
|
+
schemaJson,
|
|
31256
|
+
scriptInfo: (scriptInfo == null ? void 0 : scriptInfo.script) || "",
|
|
31257
|
+
linkedPages: i18nWorkspaceInfo == null ? void 0 : i18nWorkspaceInfo.linkedPages,
|
|
31258
|
+
syncLinkedPages
|
|
31259
|
+
}),
|
|
31260
|
+
[
|
|
31261
|
+
expectedWorkspacePath,
|
|
31262
|
+
i18nMainProjectPath,
|
|
31263
|
+
i18nWorkspaceInfo,
|
|
31264
|
+
pageCode,
|
|
31265
|
+
schemaJson,
|
|
31266
|
+
scriptInfo,
|
|
31267
|
+
syncLinkedPages,
|
|
31268
|
+
workspacePath
|
|
31269
|
+
]
|
|
31270
|
+
);
|
|
31073
31271
|
const handleCopy = React$1.useCallback(async (text, successText) => {
|
|
31074
31272
|
try {
|
|
31075
31273
|
await copyText(text);
|
|
@@ -31104,7 +31302,10 @@ function LocalAIDrawer(props) {
|
|
|
31104
31302
|
setPullError(null);
|
|
31105
31303
|
setLastDiffSummary(null);
|
|
31106
31304
|
try {
|
|
31107
|
-
const payload = await buildLinkedPagePayload(getPayload(),
|
|
31305
|
+
const payload = await buildLinkedPagePayload(getPayload(), {
|
|
31306
|
+
...config2,
|
|
31307
|
+
syncLinkedPages
|
|
31308
|
+
});
|
|
31108
31309
|
const res = await pushPage(baseURL, pageCode, payload);
|
|
31109
31310
|
setWorkspacePath((res == null ? void 0 : res.dir) || "");
|
|
31110
31311
|
setBridgeInfo((prev) => {
|
|
@@ -31116,7 +31317,7 @@ function LocalAIDrawer(props) {
|
|
|
31116
31317
|
});
|
|
31117
31318
|
setStatus("\u5DF2\u540C\u6B65\u5230\u672C\u5730");
|
|
31118
31319
|
setLastSummary(createLinkedPushSummary(res, pageCode));
|
|
31119
|
-
if (((_a3 = res == null ? void 0 : res.linkedPages) == null ? void 0 : _a3.totalReferences) > 0) {
|
|
31320
|
+
if (syncLinkedPages && ((_a3 = res == null ? void 0 : res.linkedPages) == null ? void 0 : _a3.totalReferences) > 0) {
|
|
31120
31321
|
CnMessage.success(
|
|
31121
31322
|
`\u5DF2\u53D1\u9001\u5230\u672C\u5730 AI \u5DE5\u4F5C\u533A\uFF0C\u626B\u63CF\u5230\u76F4\u63A5\u5B50 L4 \u9875\u9762 ${res.linkedPages.directCount || 0} \u4E2A\uFF0C\u9012\u5F52\u5171 ${res.linkedPages.totalReferences} \u4E2A`
|
|
31122
31323
|
);
|
|
@@ -31129,6 +31330,68 @@ function LocalAIDrawer(props) {
|
|
|
31129
31330
|
setLoadingAction("");
|
|
31130
31331
|
}
|
|
31131
31332
|
};
|
|
31333
|
+
const ensureCurrentWorkspace = async () => {
|
|
31334
|
+
const statusRes = await getPageStatus(baseURL, pageCode);
|
|
31335
|
+
if ((statusRes == null ? void 0 : statusRes.exists) && !syncLinkedPages) {
|
|
31336
|
+
return {
|
|
31337
|
+
...statusRes,
|
|
31338
|
+
created: false,
|
|
31339
|
+
recursiveSynced: false
|
|
31340
|
+
};
|
|
31341
|
+
}
|
|
31342
|
+
const payload = await buildLinkedPagePayload(getPayload(), {
|
|
31343
|
+
...config2,
|
|
31344
|
+
syncLinkedPages
|
|
31345
|
+
});
|
|
31346
|
+
const pushRes = await pushPage(baseURL, pageCode, payload);
|
|
31347
|
+
return {
|
|
31348
|
+
...pushRes || {},
|
|
31349
|
+
exists: true,
|
|
31350
|
+
created: !(statusRes == null ? void 0 : statusRes.exists),
|
|
31351
|
+
recursiveSynced: syncLinkedPages,
|
|
31352
|
+
dir: pushRes == null ? void 0 : pushRes.dir
|
|
31353
|
+
};
|
|
31354
|
+
};
|
|
31355
|
+
const handleI18nConfirm = async () => {
|
|
31356
|
+
var _a3;
|
|
31357
|
+
const mainProjectPath = trimEndSlash(i18nMainProjectPath || "");
|
|
31358
|
+
if (!mainProjectPath || !mainProjectPath.startsWith("/")) {
|
|
31359
|
+
CnMessage.error("\u8BF7\u8F93\u5165\u4E3B\u5DE5\u7A0B\u672C\u5730\u7EDD\u5BF9\u8DEF\u5F84");
|
|
31360
|
+
return;
|
|
31361
|
+
}
|
|
31362
|
+
setLoadingAction("i18n");
|
|
31363
|
+
try {
|
|
31364
|
+
if (typeof window !== "undefined") {
|
|
31365
|
+
(_a3 = window.localStorage) == null ? void 0 : _a3.setItem(MAIN_PROJECT_PATH_STORAGE_KEY, mainProjectPath);
|
|
31366
|
+
}
|
|
31367
|
+
const workspaceInfo = await ensureCurrentWorkspace();
|
|
31368
|
+
setWorkspacePath((workspaceInfo == null ? void 0 : workspaceInfo.dir) || workspacePath);
|
|
31369
|
+
setI18nWorkspaceInfo(workspaceInfo);
|
|
31370
|
+
const prompt = buildL4I18nPrompt({
|
|
31371
|
+
pageCode,
|
|
31372
|
+
workspacePath: (workspaceInfo == null ? void 0 : workspaceInfo.dir) || workspacePath || expectedWorkspacePath,
|
|
31373
|
+
mainProjectPath,
|
|
31374
|
+
schemaJson,
|
|
31375
|
+
scriptInfo: (scriptInfo == null ? void 0 : scriptInfo.script) || "",
|
|
31376
|
+
linkedPages: workspaceInfo == null ? void 0 : workspaceInfo.linkedPages,
|
|
31377
|
+
syncLinkedPages
|
|
31378
|
+
});
|
|
31379
|
+
setI18nPrompt(prompt);
|
|
31380
|
+
setLastSummary(
|
|
31381
|
+
(workspaceInfo == null ? void 0 : workspaceInfo.recursiveSynced) ? `\u5DF2\u6309\u9012\u5F52\u6A21\u5F0F\u540C\u6B65\u5F53\u524D L4 \u9875\u9762\u548C\u5173\u8054\u5B50\u9875\u9762\uFF0C\u8BF7\u590D\u5236\u591A\u8BED\u8A00\u63D0\u793A\u8BCD\u4EA4\u7ED9\u672C\u5730 AI \u6267\u884C` : (workspaceInfo == null ? void 0 : workspaceInfo.created) ? "\u5DF2\u5148\u628A\u5F53\u524D L4 \u9875\u9762\u540C\u6B65\u5230\u672C\u5730\u5DE5\u4F5C\u533A\uFF0C\u8BF7\u590D\u5236\u591A\u8BED\u8A00\u63D0\u793A\u8BCD\u4EA4\u7ED9\u672C\u5730 AI \u6267\u884C" : "\u5F53\u524D L4 \u9875\u9762\u672C\u5730\u5DE5\u4F5C\u533A\u5DF2\u5B58\u5728\uFF0C\u8BF7\u590D\u5236\u591A\u8BED\u8A00\u63D0\u793A\u8BCD\u4EA4\u7ED9\u672C\u5730 AI \u6267\u884C"
|
|
31382
|
+
);
|
|
31383
|
+
CnMessage.success(
|
|
31384
|
+
(workspaceInfo == null ? void 0 : workspaceInfo.recursiveSynced) ? "\u5DF2\u9012\u5F52\u540C\u6B65 L4 \u5DE5\u4F5C\u533A\u5E76\u751F\u6210\u63D0\u793A\u8BCD" : (workspaceInfo == null ? void 0 : workspaceInfo.created) ? "\u5DF2\u540C\u6B65\u5F53\u524D L4 \u5DE5\u4F5C\u533A\u5E76\u751F\u6210\u63D0\u793A\u8BCD" : "\u5DF2\u751F\u6210 L4 \u591A\u8BED\u8A00\u63D0\u793A\u8BCD"
|
|
31385
|
+
);
|
|
31386
|
+
} catch (e) {
|
|
31387
|
+
CnMessage.error(e.message || "\u751F\u6210 L4 \u591A\u8BED\u8A00\u63D0\u793A\u8BCD\u5931\u8D25");
|
|
31388
|
+
} finally {
|
|
31389
|
+
setLoadingAction("");
|
|
31390
|
+
}
|
|
31391
|
+
};
|
|
31392
|
+
const handleCopyI18nPrompt = React$1.useCallback(() => {
|
|
31393
|
+
handleCopy(i18nPrompt || currentI18nPrompt, "\u5DF2\u590D\u5236 L4 \u591A\u8BED\u8A00\u63D0\u793A\u8BCD");
|
|
31394
|
+
}, [currentI18nPrompt, handleCopy, i18nPrompt]);
|
|
31132
31395
|
const handlePull = async () => {
|
|
31133
31396
|
setLoadingAction("pull");
|
|
31134
31397
|
setPullError(null);
|
|
@@ -31296,7 +31559,24 @@ function LocalAIDrawer(props) {
|
|
|
31296
31559
|
}, "\u6253\u5F00\u76EE\u5F55"), /* @__PURE__ */ React$1.createElement(CnButton, {
|
|
31297
31560
|
loading: loadingAction === "rollback",
|
|
31298
31561
|
onClick: handleRollback
|
|
31299
|
-
}, "\u56DE\u6EDA\u4E0A\u6B21\u66F4\u6539")
|
|
31562
|
+
}, "\u56DE\u6EDA\u4E0A\u6B21\u66F4\u6539"), /* @__PURE__ */ React$1.createElement(CnButton, {
|
|
31563
|
+
loading: loadingAction === "i18n",
|
|
31564
|
+
onClick: () => setI18nDialogVisible(true)
|
|
31565
|
+
}, "\u540C\u6B65L4\u591A\u8BED\u8A00")), /* @__PURE__ */ React$1.createElement("div", {
|
|
31566
|
+
className: "mdd-local-ai-sync-options"
|
|
31567
|
+
}, /* @__PURE__ */ React$1.createElement("button", {
|
|
31568
|
+
type: "button",
|
|
31569
|
+
className: `mdd-local-ai-switch${syncLinkedPages ? " is-checked" : ""}`,
|
|
31570
|
+
role: "switch",
|
|
31571
|
+
"aria-checked": syncLinkedPages,
|
|
31572
|
+
onClick: () => setSyncLinkedPages((value) => !value)
|
|
31573
|
+
}, /* @__PURE__ */ React$1.createElement("span", {
|
|
31574
|
+
className: "mdd-local-ai-switch-track"
|
|
31575
|
+
}, /* @__PURE__ */ React$1.createElement("span", {
|
|
31576
|
+
className: "mdd-local-ai-switch-handle"
|
|
31577
|
+
})), /* @__PURE__ */ React$1.createElement("span", {
|
|
31578
|
+
className: "mdd-local-ai-switch-text"
|
|
31579
|
+
}, /* @__PURE__ */ React$1.createElement("strong", null, "\u9012\u5F52\u540C\u6B65\u5B50\u9875\u9762"), /* @__PURE__ */ React$1.createElement("span", null, syncLinkedPages ? "\u5DF2\u5F00\u542F\uFF0C\u4F1A\u626B\u63CF\u5E76\u540C\u6B65\u5173\u8054 L4 \u9875\u9762" : "\u5DF2\u5173\u95ED\uFF0C\u53EA\u540C\u6B65\u5F53\u524D\u9875\u9762")))), /* @__PURE__ */ React$1.createElement("div", {
|
|
31300
31580
|
className: "mdd-local-ai-action-notice"
|
|
31301
31581
|
}, "\u201C\u540C\u6B65\u672C\u5730\u4FEE\u6539\u201D\u53EA\u4F1A\u540C\u6B65\u5F53\u524D\u9875\u9762\u7684\u672C\u5730\u53D8\u66F4\uFF1B\u5982\u679C\u5173\u8054\u5B50 L4 \u9875\u9762\u4E5F\u5728\u672C\u5730\u6539\u8FC7\uFF0C\u8BF7\u6253\u5F00\u5BF9\u5E94\u5B50\u9875\u9762\u7684 L4 \u5730\u5740\uFF0C\u5206\u522B\u6267\u884C\u201C\u540C\u6B65\u672C\u5730\u4FEE\u6539\u201D\u5E76\u5728\u9875\u9762\u4E0A\u70B9\u51FB\u4FDD\u5B58\u3002")), /* @__PURE__ */ React$1.createElement("div", {
|
|
31302
31582
|
className: "mdd-local-ai-section"
|
|
@@ -31387,7 +31667,68 @@ function LocalAIDrawer(props) {
|
|
|
31387
31667
|
className: "mdd-local-ai-title"
|
|
31388
31668
|
}, "\u4F7F\u7528\u65B9\u5F0F"), /* @__PURE__ */ React$1.createElement("div", {
|
|
31389
31669
|
className: "mdd-local-ai-tips"
|
|
31390
|
-
}, /* @__PURE__ */ React$1.createElement("div", null, "1. \u9996\u6B21\u4F7F\u7528\u5148\u5168\u5C40\u5B89\u88C5\uFF1Anpm i -g @cniot/mdd-ai-bridge\u3002"), /* @__PURE__ */ React$1.createElement("div", null, "2. \u5B89\u88C5\u540E\u5728\u4EFB\u610F\u76EE\u5F55\u8FD0\u884C\uFF1Amdd-ai-bridge\u3002\u4E5F\u53EF\u4EE5\u76F4\u63A5\u8FD0\u884C\uFF1Anpx @cniot/mdd-ai-bridge\u3002"), /* @__PURE__ */ React$1.createElement("div", null, "3. \u70B9\u51FB\u201C\u53D1\u9001\u5230\u672C\u5730 AI\u201D\uFF0C\u5F53\u524D\u9875\u9762\u4F1A\u5199\u5165\u672C\u5730\u5DE5\u4F5C\u533A\u3002"), /* @__PURE__ */ React$1.createElement("div", null, "4. \u7528 Cursor\u3001Qoder\u3001Codex CLI \u7B49\u5DE5\u5177\u6253\u5F00\u76EE\u5F55\u5E76\u4FEE\u6539\u6587\u4EF6\u3002"), /* @__PURE__ */ React$1.createElement("div", null, "5. \u70B9\u51FB\u201C\u540C\u6B65\u672C\u5730\u4FEE\u6539\u201D\uFF0C\u786E\u8BA4\u9884\u89C8\u540E\u7EE7\u7EED\u4F7F\u7528\u539F\u4FDD\u5B58\u6309\u94AE\u3002"), /* @__PURE__ */ React$1.createElement("div", null, "\u7EBF\u4E0A HTTP \u9875\u9762\u4F1A\u81EA\u52A8\u6253\u5F00\u672C\u5730 Bridge relay \u7A97\u53E3\uFF0C\u8BF7\u5141\u8BB8\u6D4F\u89C8\u5668\u5F39\u7A97\u3002"), /* @__PURE__ */ React$1.createElement("div", null, "\u672C\u5730\u5DE5\u4F5C\u533A\u9ED8\u8BA4\u5728 ~/.mdd-ai-workspace\u3002")))
|
|
31670
|
+
}, /* @__PURE__ */ React$1.createElement("div", null, "1. \u9996\u6B21\u4F7F\u7528\u5148\u5168\u5C40\u5B89\u88C5\uFF1Anpm i -g @cniot/mdd-ai-bridge\u3002"), /* @__PURE__ */ React$1.createElement("div", null, "2. \u5B89\u88C5\u540E\u5728\u4EFB\u610F\u76EE\u5F55\u8FD0\u884C\uFF1Amdd-ai-bridge\u3002\u4E5F\u53EF\u4EE5\u76F4\u63A5\u8FD0\u884C\uFF1Anpx @cniot/mdd-ai-bridge\u3002"), /* @__PURE__ */ React$1.createElement("div", null, "3. \u70B9\u51FB\u201C\u53D1\u9001\u5230\u672C\u5730 AI\u201D\uFF0C\u5F53\u524D\u9875\u9762\u4F1A\u5199\u5165\u672C\u5730\u5DE5\u4F5C\u533A\u3002"), /* @__PURE__ */ React$1.createElement("div", null, "4. \u7528 Cursor\u3001Qoder\u3001Codex CLI \u7B49\u5DE5\u5177\u6253\u5F00\u76EE\u5F55\u5E76\u4FEE\u6539\u6587\u4EF6\u3002"), /* @__PURE__ */ React$1.createElement("div", null, "5. \u70B9\u51FB\u201C\u540C\u6B65\u672C\u5730\u4FEE\u6539\u201D\uFF0C\u786E\u8BA4\u9884\u89C8\u540E\u7EE7\u7EED\u4F7F\u7528\u539F\u4FDD\u5B58\u6309\u94AE\u3002"), /* @__PURE__ */ React$1.createElement("div", null, "\u7EBF\u4E0A HTTP \u9875\u9762\u4F1A\u81EA\u52A8\u6253\u5F00\u672C\u5730 Bridge relay \u7A97\u53E3\uFF0C\u8BF7\u5141\u8BB8\u6D4F\u89C8\u5668\u5F39\u7A97\u3002"), /* @__PURE__ */ React$1.createElement("div", null, "\u672C\u5730\u5DE5\u4F5C\u533A\u9ED8\u8BA4\u5728 ~/.mdd-ai-workspace\u3002"))), /* @__PURE__ */ React$1.createElement(Dialog, {
|
|
31671
|
+
v2: true,
|
|
31672
|
+
centered: true,
|
|
31673
|
+
visible: i18nDialogVisible,
|
|
31674
|
+
title: "\u540C\u6B65 L4 \u591A\u8BED\u8A00",
|
|
31675
|
+
width: "960px",
|
|
31676
|
+
footer: false,
|
|
31677
|
+
onClose: () => setI18nDialogVisible(false),
|
|
31678
|
+
onCancel: () => setI18nDialogVisible(false)
|
|
31679
|
+
}, /* @__PURE__ */ React$1.createElement("div", {
|
|
31680
|
+
className: "mdd-local-ai-i18n-dialog"
|
|
31681
|
+
}, /* @__PURE__ */ React$1.createElement("div", {
|
|
31682
|
+
className: "mdd-local-ai-i18n-hero"
|
|
31683
|
+
}, /* @__PURE__ */ React$1.createElement("div", null, /* @__PURE__ */ React$1.createElement("div", {
|
|
31684
|
+
className: "mdd-local-ai-i18n-kicker"
|
|
31685
|
+
}, "Local AI i18n task"), /* @__PURE__ */ React$1.createElement("div", {
|
|
31686
|
+
className: "mdd-local-ai-i18n-title"
|
|
31687
|
+
}, "\u751F\u6210\u672C\u5730 AI \u591A\u8BED\u8A00\u4EFB\u52A1"), /* @__PURE__ */ React$1.createElement("div", {
|
|
31688
|
+
className: "mdd-local-ai-i18n-desc"
|
|
31689
|
+
}, syncLinkedPages ? "\u5DF2\u5F00\u542F\u9012\u5F52\u5B50\u9875\u9762\uFF0C\u4F1A\u5148\u540C\u6B65\u5F53\u524D\u9875\u9762\u548C\u5173\u8054 L4 \u9875\u9762\uFF0C\u518D\u751F\u6210\u591A\u9875\u9762\u591A\u8BED\u8A00\u63D0\u793A\u8BCD\u3002" : "\u5148\u786E\u8BA4\u5F53\u524D L4 \u5DE5\u4F5C\u533A\u5DF2\u540C\u6B65\uFF0C\u518D\u8BA9\u672C\u5730 AI \u8865\u9F50\u4E3B\u5DE5\u7A0B\u82F1\u6587\u548C\u8D8A\u5357\u8BED\u8BCD\u6761\u3002"), /* @__PURE__ */ React$1.createElement("div", {
|
|
31690
|
+
className: "mdd-local-ai-i18n-langs"
|
|
31691
|
+
}, /* @__PURE__ */ React$1.createElement("span", null, "English"), /* @__PURE__ */ React$1.createElement("span", null, "Ti\u1EBFng Vi\u1EC7t"), syncLinkedPages ? /* @__PURE__ */ React$1.createElement("span", null, "\u9012\u5F52 L4") : null)), /* @__PURE__ */ React$1.createElement("span", {
|
|
31692
|
+
className: "mdd-local-ai-i18n-code"
|
|
31693
|
+
}, pageCode)), /* @__PURE__ */ React$1.createElement("div", {
|
|
31694
|
+
className: "mdd-local-ai-i18n-card"
|
|
31695
|
+
}, /* @__PURE__ */ React$1.createElement("div", {
|
|
31696
|
+
className: "mdd-local-ai-i18n-field"
|
|
31697
|
+
}, /* @__PURE__ */ React$1.createElement("div", {
|
|
31698
|
+
className: "mdd-local-ai-i18n-field-head"
|
|
31699
|
+
}, /* @__PURE__ */ React$1.createElement("label", null, "\u4E3B\u5DE5\u7A0B tms-mach36 \u672C\u5730\u7EDD\u5BF9\u8DEF\u5F84"), /* @__PURE__ */ React$1.createElement("span", null, "\u7528\u4E8E\u5B9A\u4F4D src/i18n/strings")), /* @__PURE__ */ React$1.createElement(Input$1, {
|
|
31700
|
+
value: i18nMainProjectPath,
|
|
31701
|
+
onChange: setI18nMainProjectPath,
|
|
31702
|
+
placeholder: DEFAULT_MAIN_PROJECT_PATH,
|
|
31703
|
+
className: "mdd-local-ai-i18n-input"
|
|
31704
|
+
}))), /* @__PURE__ */ React$1.createElement("div", {
|
|
31705
|
+
className: "mdd-local-ai-i18n-paths"
|
|
31706
|
+
}, /* @__PURE__ */ React$1.createElement("div", null, /* @__PURE__ */ React$1.createElement("span", null, "L4 \u5DE5\u4F5C\u533A"), /* @__PURE__ */ React$1.createElement("strong", null, (i18nWorkspaceInfo == null ? void 0 : i18nWorkspaceInfo.dir) || workspacePath || expectedWorkspacePath)), /* @__PURE__ */ React$1.createElement("div", null, /* @__PURE__ */ React$1.createElement("span", null, "\u82F1\u6587\u8BCD\u6761"), /* @__PURE__ */ React$1.createElement("strong", null, `${trimEndSlash(i18nMainProjectPath || DEFAULT_MAIN_PROJECT_PATH)}/src/i18n/strings/en-US.json`)), /* @__PURE__ */ React$1.createElement("div", null, /* @__PURE__ */ React$1.createElement("span", null, "\u8D8A\u5357\u8BED\u8BCD\u6761"), /* @__PURE__ */ React$1.createElement("strong", null, `${trimEndSlash(i18nMainProjectPath || DEFAULT_MAIN_PROJECT_PATH)}/src/i18n/strings/vi-VN.json`))), i18nWorkspaceInfo ? /* @__PURE__ */ React$1.createElement("div", {
|
|
31707
|
+
className: `mdd-local-ai-i18n-state${i18nWorkspaceInfo.created ? " is-created" : ""}`
|
|
31708
|
+
}, i18nWorkspaceInfo.recursiveSynced ? `\u5DF2\u6309\u9012\u5F52\u6A21\u5F0F\u540C\u6B65\u5F53\u524D\u9875\u9762\u548C ${((_j = i18nWorkspaceInfo.linkedPages) == null ? void 0 : _j.syncedCount) || 0} \u4E2A\u5173\u8054 L4 \u9875\u9762${((_k = i18nWorkspaceInfo.linkedPages) == null ? void 0 : _k.failedCount) ? `\uFF0C\u53E6\u6709 ${i18nWorkspaceInfo.linkedPages.failedCount} \u4E2A\u5173\u8054\u9875\u9762\u9700\u8981\u5904\u7406` : ""}\u3002` : i18nWorkspaceInfo.created ? "\u5F53\u524D L4 \u9875\u9762\u6B64\u524D\u672A\u540C\u6B65\uFF0C\u5DF2\u5148\u53D1\u9001\u5230\u672C\u5730 AI \u5DE5\u4F5C\u533A\u3002" : "\u5F53\u524D L4 \u9875\u9762\u672C\u5730\u5DE5\u4F5C\u533A\u5DF2\u5B58\u5728\uFF0C\u8BF7\u6253\u5F00\u8BE5\u76EE\u5F55\u8BA9\u672C\u5730 AI \u6267\u884C\u63D0\u793A\u8BCD\u3002") : /* @__PURE__ */ React$1.createElement("div", {
|
|
31709
|
+
className: "mdd-local-ai-i18n-checklist"
|
|
31710
|
+
}, /* @__PURE__ */ React$1.createElement("div", null, "\u68C0\u67E5\u5F53\u524D L4 \u5DE5\u4F5C\u533A\u662F\u5426\u5B58\u5728"), /* @__PURE__ */ React$1.createElement("div", null, syncLinkedPages ? "\u9012\u5F52\u540C\u6B65\u5F53\u524D\u9875\u9762\u548C\u5173\u8054 L4 \u9875\u9762" : "\u672A\u540C\u6B65\u65F6\u81EA\u52A8\u53D1\u9001\u5F53\u524D\u9875\u9762\u5230\u672C\u5730 AI"), /* @__PURE__ */ React$1.createElement("div", null, syncLinkedPages ? "\u751F\u6210\u8986\u76D6\u7236\u5B50\u9875\u9762\u7684\u63D0\u793A\u8BCD\u5E76\u53BB\u91CD\u540C\u6B65\u8BCD\u6761" : "\u751F\u6210\u63D0\u793A\u8BCD\u5E76\u8981\u6C42\u672C\u5730 AI \u53BB\u91CD\u5199\u5165 en-US.json \u548C vi-VN.json")), i18nPrompt ? /* @__PURE__ */ React$1.createElement("div", {
|
|
31711
|
+
className: "mdd-local-ai-i18n-prompt"
|
|
31712
|
+
}, /* @__PURE__ */ React$1.createElement("div", {
|
|
31713
|
+
className: "mdd-local-ai-i18n-prompt-head"
|
|
31714
|
+
}, /* @__PURE__ */ React$1.createElement("span", null, "\u7ED9\u672C\u5730 AI \u7684\u63D0\u793A\u8BCD"), /* @__PURE__ */ React$1.createElement(CnButton, {
|
|
31715
|
+
size: "small",
|
|
31716
|
+
onClick: handleCopyI18nPrompt
|
|
31717
|
+
}, "\u590D\u5236\u63D0\u793A\u8BCD")), /* @__PURE__ */ React$1.createElement("pre", null, i18nPrompt)) : null, /* @__PURE__ */ React$1.createElement("div", {
|
|
31718
|
+
className: "mdd-local-ai-i18n-footer"
|
|
31719
|
+
}, /* @__PURE__ */ React$1.createElement(CnButton, {
|
|
31720
|
+
onClick: () => setI18nDialogVisible(false)
|
|
31721
|
+
}, "\u53D6\u6D88"), /* @__PURE__ */ React$1.createElement(CnButton, {
|
|
31722
|
+
loading: loadingAction === "open",
|
|
31723
|
+
onClick: handleOpen
|
|
31724
|
+
}, "\u6253\u5F00 L4 \u5DE5\u4F5C\u533A"), /* @__PURE__ */ React$1.createElement(CnButton, {
|
|
31725
|
+
type: "primary",
|
|
31726
|
+
loading: loadingAction === "i18n",
|
|
31727
|
+
onClick: handleI18nConfirm
|
|
31728
|
+
}, i18nPrompt ? "\u91CD\u65B0\u751F\u6210\u63D0\u793A\u8BCD" : "\u786E\u5B9A\u5E76\u751F\u6210\u63D0\u793A\u8BCD"), i18nPrompt ? /* @__PURE__ */ React$1.createElement(CnButton, {
|
|
31729
|
+
type: "primary",
|
|
31730
|
+
onClick: handleCopyI18nPrompt
|
|
31731
|
+
}, "\u590D\u5236\u63D0\u793A\u8BCD") : null))));
|
|
31391
31732
|
}
|
|
31392
31733
|
var index = "";
|
|
31393
31734
|
const isDebug = ((_b = (_a = window == null ? void 0 : window.location) == null ? void 0 : _a.search) == null ? void 0 : _b.indexOf("debug")) >= 0 || ((_c = window.localStorage) == null ? void 0 : _c.__l4_location_search_debug__) === "true";
|
|
@@ -31926,7 +32267,7 @@ function getDefaultIndexStyle() {
|
|
|
31926
32267
|
`;
|
|
31927
32268
|
}
|
|
31928
32269
|
const name = "@cniot/mdd-editor";
|
|
31929
|
-
const version = "0.3.
|
|
32270
|
+
const version = "0.3.10";
|
|
31930
32271
|
const description = "\u6A21\u578B\u9A71\u52A8\u7F16\u8F91\u5668";
|
|
31931
32272
|
const scripts = {
|
|
31932
32273
|
build: "vite build"
|