weaver-e10-builder 1.1.3 → 1.1.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.
Files changed (177) hide show
  1. package/dist/commands/check.d.ts.map +1 -1
  2. package/dist/commands/check.js +48 -15
  3. package/dist/commands/check.js.map +1 -1
  4. package/dist/commands/designer-common.d.ts +56 -0
  5. package/dist/commands/designer-common.d.ts.map +1 -0
  6. package/dist/commands/designer-common.js +165 -0
  7. package/dist/commands/designer-common.js.map +1 -0
  8. package/dist/commands/designer-setters.d.ts +13 -0
  9. package/dist/commands/designer-setters.d.ts.map +1 -0
  10. package/dist/commands/designer-setters.js +593 -0
  11. package/dist/commands/designer-setters.js.map +1 -0
  12. package/dist/commands/designer.d.ts +17 -0
  13. package/dist/commands/designer.d.ts.map +1 -0
  14. package/dist/commands/designer.js +448 -0
  15. package/dist/commands/designer.js.map +1 -0
  16. package/dist/commands/form-add-detail-table.d.ts.map +1 -1
  17. package/dist/commands/form-add-detail-table.js +59 -0
  18. package/dist/commands/form-add-detail-table.js.map +1 -1
  19. package/dist/commands/form-association.d.ts.map +1 -1
  20. package/dist/commands/form-association.js +3 -2
  21. package/dist/commands/form-association.js.map +1 -1
  22. package/dist/commands/form-button.d.ts.map +1 -1
  23. package/dist/commands/form-button.js +86 -1
  24. package/dist/commands/form-button.js.map +1 -1
  25. package/dist/commands/form-data.d.ts.map +1 -1
  26. package/dist/commands/form-data.js +13 -1
  27. package/dist/commands/form-data.js.map +1 -1
  28. package/dist/commands/form-ebuilder-scope.js +3 -3
  29. package/dist/commands/form-ebuilder-scope.js.map +1 -1
  30. package/dist/commands/form-formula.js +4 -4
  31. package/dist/commands/form-formula.js.map +1 -1
  32. package/dist/commands/form-list-click.d.ts.map +1 -1
  33. package/dist/commands/form-list-click.js +30 -2
  34. package/dist/commands/form-list-click.js.map +1 -1
  35. package/dist/commands/form-list-filter.js +1 -1
  36. package/dist/commands/form-list-filter.js.map +1 -1
  37. package/dist/commands/form-list-hierarchy.d.ts +3 -0
  38. package/dist/commands/form-list-hierarchy.d.ts.map +1 -0
  39. package/dist/commands/form-list-hierarchy.js +133 -0
  40. package/dist/commands/form-list-hierarchy.js.map +1 -0
  41. package/dist/commands/form-list-permission.d.ts.map +1 -1
  42. package/dist/commands/form-list-permission.js +17 -3
  43. package/dist/commands/form-list-permission.js.map +1 -1
  44. package/dist/commands/form-list.d.ts.map +1 -1
  45. package/dist/commands/form-list.js +2 -0
  46. package/dist/commands/form-list.js.map +1 -1
  47. package/dist/commands/form-nlist.d.ts.map +1 -1
  48. package/dist/commands/form-nlist.js +47 -15
  49. package/dist/commands/form-nlist.js.map +1 -1
  50. package/dist/commands/form-option-template.d.ts +3 -0
  51. package/dist/commands/form-option-template.d.ts.map +1 -0
  52. package/dist/commands/form-option-template.js +291 -0
  53. package/dist/commands/form-option-template.js.map +1 -0
  54. package/dist/commands/form-permission.d.ts.map +1 -1
  55. package/dist/commands/form-permission.js +214 -2
  56. package/dist/commands/form-permission.js.map +1 -1
  57. package/dist/commands/form-view.d.ts.map +1 -1
  58. package/dist/commands/form-view.js +23 -1
  59. package/dist/commands/form-view.js.map +1 -1
  60. package/dist/commands/form.d.ts.map +1 -1
  61. package/dist/commands/form.js +259 -59
  62. package/dist/commands/form.js.map +1 -1
  63. package/dist/commands/icon.d.ts.map +1 -1
  64. package/dist/commands/icon.js +9 -13
  65. package/dist/commands/icon.js.map +1 -1
  66. package/dist/commands/menu-permission.d.ts.map +1 -1
  67. package/dist/commands/menu-permission.js +19 -12
  68. package/dist/commands/menu-permission.js.map +1 -1
  69. package/dist/commands/page.d.ts +14 -0
  70. package/dist/commands/page.d.ts.map +1 -0
  71. package/dist/commands/page.js +175 -0
  72. package/dist/commands/page.js.map +1 -0
  73. package/dist/commands/wf-form.js +1 -1
  74. package/dist/commands/wf-form.js.map +1 -1
  75. package/dist/commands/workflow-condition.js +9 -8
  76. package/dist/commands/workflow-condition.js.map +1 -1
  77. package/dist/commands/workflow-node-overtime.d.ts.map +1 -1
  78. package/dist/commands/workflow-node-overtime.js +16 -8
  79. package/dist/commands/workflow-node-overtime.js.map +1 -1
  80. package/dist/commands/workflow-node.d.ts.map +1 -1
  81. package/dist/commands/workflow-node.js +35 -5
  82. package/dist/commands/workflow-node.js.map +1 -1
  83. package/dist/commands/workflow-numbering.d.ts.map +1 -1
  84. package/dist/commands/workflow-numbering.js +63 -30
  85. package/dist/commands/workflow-numbering.js.map +1 -1
  86. package/dist/commands/workflow-operator-sign.d.ts.map +1 -1
  87. package/dist/commands/workflow-operator-sign.js +2 -1
  88. package/dist/commands/workflow-operator-sign.js.map +1 -1
  89. package/dist/commands/workflow.d.ts.map +1 -1
  90. package/dist/commands/workflow.js +78 -38
  91. package/dist/commands/workflow.js.map +1 -1
  92. package/dist/core/client.d.ts +9 -0
  93. package/dist/core/client.d.ts.map +1 -1
  94. package/dist/core/client.js +16 -1
  95. package/dist/core/client.js.map +1 -1
  96. package/dist/index.js +6 -0
  97. package/dist/index.js.map +1 -1
  98. package/dist/services/actionflow/preflight_service.d.ts.map +1 -1
  99. package/dist/services/actionflow/preflight_service.js +40 -17
  100. package/dist/services/actionflow/preflight_service.js.map +1 -1
  101. package/dist/services/actionflow/workflow_compiler.d.ts.map +1 -1
  102. package/dist/services/actionflow/workflow_compiler.js +4 -2
  103. package/dist/services/actionflow/workflow_compiler.js.map +1 -1
  104. package/dist/services/form-button-action.d.ts +17 -0
  105. package/dist/services/form-button-action.d.ts.map +1 -0
  106. package/dist/services/form-button-action.js +111 -0
  107. package/dist/services/form-button-action.js.map +1 -0
  108. package/dist/services/form-create.d.ts +15 -1
  109. package/dist/services/form-create.d.ts.map +1 -1
  110. package/dist/services/form-create.js +40 -5
  111. package/dist/services/form-create.js.map +1 -1
  112. package/dist/services/form-list-stats.d.ts.map +1 -1
  113. package/dist/services/form-list-stats.js +29 -6
  114. package/dist/services/form-list-stats.js.map +1 -1
  115. package/dist/services/form-nlist.d.ts +8 -2
  116. package/dist/services/form-nlist.d.ts.map +1 -1
  117. package/dist/services/form-nlist.js +32 -7
  118. package/dist/services/form-nlist.js.map +1 -1
  119. package/dist/services/form-sub-detail.d.ts +36 -0
  120. package/dist/services/form-sub-detail.d.ts.map +1 -0
  121. package/dist/services/form-sub-detail.js +132 -0
  122. package/dist/services/form-sub-detail.js.map +1 -0
  123. package/dist/services/form-view.d.ts +6 -0
  124. package/dist/services/form-view.d.ts.map +1 -1
  125. package/dist/services/form-view.js +24 -0
  126. package/dist/services/form-view.js.map +1 -1
  127. package/dist/services/workflow-operator.d.ts +9 -0
  128. package/dist/services/workflow-operator.d.ts.map +1 -1
  129. package/dist/services/workflow-operator.js +33 -0
  130. package/dist/services/workflow-operator.js.map +1 -1
  131. package/package.json +1 -1
  132. package/skill-docs/SKILL.md +27 -45
  133. package/skill-docs/assets/factory/chart-dimensions.json +536 -0
  134. package/skill-docs/assets/factory/example-btn-progress-collapse-configured.json +2515 -0
  135. package/skill-docs/assets/factory/example-configured-2.json +13805 -0
  136. package/skill-docs/assets/factory/example-configured.json +6735 -0
  137. package/skill-docs/assets/factory/factory-bar-stack.json +326 -0
  138. package/skill-docs/assets/factory/factory-bar.json +222 -0
  139. package/skill-docs/assets/factory/factory-bubble.json +322 -0
  140. package/skill-docs/assets/factory/factory-calendar.json +325 -0
  141. package/skill-docs/assets/factory/factory-circular.json +320 -0
  142. package/skill-docs/assets/factory/factory-collapse-panel.json +132 -0
  143. package/skill-docs/assets/factory/factory-comment.json +388 -0
  144. package/skill-docs/assets/factory/factory-count-down.json +198 -0
  145. package/skill-docs/assets/factory/factory-digital-panel.json +108 -0
  146. package/skill-docs/assets/factory/factory-eb-button.json +150 -0
  147. package/skill-docs/assets/factory/factory-fast-create.json +62 -0
  148. package/skill-docs/assets/factory/factory-gauge.json +312 -0
  149. package/skill-docs/assets/factory/factory-h-bar-stack.json +328 -0
  150. package/skill-docs/assets/factory/factory-h-bar.json +326 -0
  151. package/skill-docs/assets/factory/factory-line.json +212 -0
  152. package/skill-docs/assets/factory/factory-nav-bar.json +167 -0
  153. package/skill-docs/assets/factory/factory-nav-menu.json +144 -0
  154. package/skill-docs/assets/factory/factory-nav-panel.json +338 -0
  155. package/skill-docs/assets/factory/factory-new-tab.json +163 -0
  156. package/skill-docs/assets/factory/factory-nightingale.json +312 -0
  157. package/skill-docs/assets/factory/factory-nlist.json +112 -0
  158. package/skill-docs/assets/factory/factory-page-header.json +171 -0
  159. package/skill-docs/assets/factory/factory-picture.json +169 -0
  160. package/skill-docs/assets/factory/factory-pie.json +212 -0
  161. package/skill-docs/assets/factory/factory-progress-chart.json +162 -0
  162. package/skill-docs/assets/factory/factory-search-global.json +104 -0
  163. package/skill-docs/assets/factory/factory-slide.json +164 -0
  164. package/skill-docs/assets/factory/factory-treemap.json +322 -0
  165. package/skill-docs/assets/icons.db +0 -0
  166. package/skill-docs/references/coding/guide-page-code.md +21 -1
  167. package/skill-docs/references/coding/ref-compile-rules.md +24 -0
  168. package/skill-docs/references/common/guide-plan-template.md +219 -201
  169. package/skill-docs/references/common/ref-cli-commands.md +366 -320
  170. package/skill-docs/references/ebuilder-designer/guide-designer-components.md +110 -0
  171. package/skill-docs/references/ebuilder-designer/guide-designer-factory.md +460 -0
  172. package/skill-docs/references/ebuilder-designer/guide-designer-version.md +111 -0
  173. package/skill-docs/references/ebuilder-designer/guide-designer.md +287 -0
  174. package/skill-docs/references/form/guide-create-form.md +464 -409
  175. package/skill-docs/references/form/guide-form-button.md +82 -54
  176. package/skill-docs/references/form/guide-form-view.md +299 -284
  177. package/skill-docs/references/workflow/guide-workflow.md +59 -0
@@ -1 +1 @@
1
- {"version":3,"file":"check.d.ts","sourceRoot":"","sources":["../../src/commands/check.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAkCpC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA4E5D"}
1
+ {"version":3,"file":"check.d.ts","sourceRoot":"","sources":["../../src/commands/check.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAwCpC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAwG5D"}
@@ -27,6 +27,12 @@ const CHECKS = [
27
27
  '不要自己编 1、2、3 或选项名称,必须是真实的 fieldOptionId 长数字'],
28
28
  ['Employee/Department 字段写入时值取自 ShareBrowser 的 fieldOptionId(长ID)',
29
29
  '用户 ID 也是长数字,不是手机号也不是短序号'],
30
+ ['没有用 JS import CSS(样式靠内联 style 或 build.json codes 登记的独立 .css)',
31
+ 'ecode 无 CSS 模块解析,import \'./x.css\' 样式必丢'],
32
+ ['图片等静态资源统一 `${appRes}/相对路径`,没有在线 loadjs/CDN 或写死的 resources 相对路径',
33
+ '在线资源平台不加载;resources 相对路径发布后 404'],
34
+ ['业务代码全 ESM(import/export),没有 module.exports',
35
+ '平台按模块加载,CommonJS 导出解析不到'],
30
36
  ];
31
37
  export function registerCheckCommands(program) {
32
38
  program.command('check')
@@ -34,10 +40,12 @@ export function registerCheckCommands(program) {
34
40
  .argument('[dir]', '项目目录', process.cwd())
35
41
  .action(async (dir) => {
36
42
  const errors = [];
37
- // Scan pages/ directory for .js files
38
- const pagesDir = join(dir, 'pages');
43
+ // 扫描运行时代码:pages/**、api/** 与根目录 entry.js
39
44
  const jsFiles = [];
40
- if (existsSync(pagesDir)) {
45
+ const collectDir = (relDir) => {
46
+ const absDir = join(dir, relDir);
47
+ if (!existsSync(absDir))
48
+ return;
41
49
  const walk = (d) => {
42
50
  for (const entry of readdirSync(d, { withFileTypes: true })) {
43
51
  const p = join(d, entry.name);
@@ -47,8 +55,13 @@ export function registerCheckCommands(program) {
47
55
  jsFiles.push(p);
48
56
  }
49
57
  };
50
- walk(pagesDir);
51
- }
58
+ walk(absDir);
59
+ };
60
+ collectDir('pages');
61
+ collectDir('api');
62
+ const entryFile = join(dir, 'entry.js');
63
+ if (existsSync(entryFile))
64
+ jsFiles.push(entryFile);
52
65
  for (const fpath of jsFiles) {
53
66
  let content;
54
67
  try {
@@ -59,27 +72,47 @@ export function registerCheckCommands(program) {
59
72
  }
60
73
  const lines = content.split('\n');
61
74
  const rel = relative(dir, fpath);
75
+ const relPosix = rel.replace(/\\/g, '/');
76
+ const isPage = relPosix.startsWith('pages/');
62
77
  for (let i = 0; i < lines.length; i++) {
63
78
  const line = lines[i];
64
79
  const ln = i + 1;
65
- // Short number as Select field value
66
- const m1 = line.match(/(STATUS_\w+|F\.\w*status\w*|F\.\w*type\w*)\s*=\s*'(\d{1,6})'/i);
67
- if (m1) {
68
- errors.push(`${rel}:${ln} Select 字段值 '${m1[2]}' 疑似不是 fieldOptionId — ${m1[1]} = '${m1[2]}'`);
80
+ const trimmed = line.trim();
81
+ const isComment = trimmed.startsWith('//') || trimmed.startsWith('*');
82
+ // Short number as Select field value(仅 pages/ 业务代码)
83
+ if (isPage) {
84
+ const m1 = line.match(/(STATUS_\w+|F\.\w*status\w*|F\.\w*type\w*)\s*=\s*'(\d{1,6})'/i);
85
+ if (m1) {
86
+ errors.push(`${rel}:${ln} Select 字段值 '${m1[2]}' 疑似不是 fieldOptionId — ${m1[1]} = '${m1[2]}'`);
87
+ }
69
88
  }
70
- // Short number in Select field comparison
71
- const m2 = line.match(/(item\[F\.\w+\]|row\[F\.\w+\])\s*===\s*'(\d{1,6})'/);
72
- if (m2) {
73
- errors.push(`${rel}:${ln} Select 字段比较用的是 '${m2[2]}',getSimpleData 返回的是 fieldOptionId 长数字,永远不匹配`);
89
+ // Short number in Select field comparison(仅 pages/ 业务代码)
90
+ if (isPage) {
91
+ const m2 = line.match(/(item\[F\.\w+\]|row\[F\.\w+\])\s*===\s*'(\d{1,6})'/);
92
+ if (m2) {
93
+ errors.push(`${rel}:${ln} Select 字段比较用的是 '${m2[2]}',getSimpleData 返回的是 fieldOptionId 长数字,永远不匹配`);
94
+ }
74
95
  }
75
- // Missing mainTable layer
76
- if (/\.find\(\s*(r|row|d|item)\s*=>\s*\1\.id\b/.test(line) && !line.includes('mainTable')) {
96
+ // Missing mainTable layer(仅 pages/ 业务代码)
97
+ if (isPage && /\.find\(\s*(r|row|d|item)\s*=>\s*\1\.id\b/.test(line) && !line.includes('mainTable')) {
77
98
  errors.push(`${rel}:${ln} 疑似跳过 mainTable 层:应该是 r.mainTable.id.fieldValue,不是 r.id`);
78
99
  }
79
100
  // ?? operator
80
101
  if (/\?\?/.test(line) && !line.split('??')[0].includes('//')) {
81
102
  errors.push(`${rel}:${ln} 用了 ?? 运算符,babel 7.5.5 不支持`);
82
103
  }
104
+ // JS import CSS — ecode 无 CSS 模块解析,样式必丢
105
+ if (!isComment && /import\s+(?:[^'"]+\s+from\s+)?['"][^'"]*\.css['"]/.test(line)) {
106
+ errors.push(`${rel}:${ln} 在 JS 里 import 了 CSS — ecode 无模块解析样式必丢;改内联 style,独立 .css 需在 build.json codes 登记`);
107
+ }
108
+ // CommonJS 导出 — 平台按 ESM 模块加载
109
+ if (!isComment && /module\.exports\b/.test(line)) {
110
+ errors.push(`${rel}:${ln} 用了 module.exports — 平台按 ESM 加载,请改用 export`);
111
+ }
112
+ // 在线资源 loadjs / CDN
113
+ if (!isComment && /loadjs\(\s*['"](?:https?:)?\/\//.test(line)) {
114
+ errors.push(`${rel}:${ln} loadjs 在线资源 — 平台不加载外网,先下载进项目再按 \${appRes} 引用`);
115
+ }
83
116
  }
84
117
  }
85
118
  if (errors.length > 0) {
@@ -1 +1 @@
1
- {"version":3,"file":"check.js","sourceRoot":"","sources":["../../src/commands/check.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"check.js","sourceRoot":"","sources":["../../src/commands/check.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,56 @@
1
+ import type { ApiClient } from '../core/client.js';
2
+ export interface LayoutComp {
3
+ id: string;
4
+ type: string;
5
+ [k: string]: any;
6
+ }
7
+ export interface PageLayout {
8
+ id?: string;
9
+ pageId?: string;
10
+ terminalType?: string;
11
+ comps?: LayoutComp[];
12
+ [k: string]: any;
13
+ }
14
+ /**
15
+ * 字母开头随机 hex id(平台机器 id 硬规则:首位不能是数字,浏览器原生样本首位恒为 a-f)。
16
+ * 首位取 a-f,其余随机 hex;输出总长 = length。
17
+ */
18
+ export declare function genLetterHex(length: number): string;
19
+ /** 32 位无连字符 UUID(前端生成 comp id 的同款形态,首位字母合规)。 */
20
+ export declare function genCompId(): string;
21
+ /** factory 模板目录(icons.db 同款定位:包内 skill-docs → 仓库源码 → 已装 skill)。 */
22
+ export declare function factoryDirs(): string[];
23
+ /** 解析 --template:@路径 / 裸名(factory-<name>.json)/ 任意文件路径。 */
24
+ export declare function resolveTemplateFile(input: string): string;
25
+ /** 读模板文件 → 布局数组(factory 模板是 PC+MOBILE 整布局对)。 */
26
+ export declare function loadTemplateLayouts(input: string): PageLayout[];
27
+ /** 读整页布局(默认含自定义组件;PC+MOBILE 两端都要,save 必须两端)。 */
28
+ export declare function fetchLayouts(client: ApiClient, baseUrl: string, pageId: string, returnCusComp?: boolean): Promise<PageLayout[]>;
29
+ /** 保存布局:整包 LZ 压缩后 POST(Body 为压缩数字串原样,不 JSON 包裹)。 */
30
+ export declare function saveLayouts(client: ApiClient, baseUrl: string, pageId: string, layouts: PageLayout[], pageName?: string, syncOutdate?: boolean): Promise<any>;
31
+ /** 按终端取布局元素(terminal: pc/mobile)。 */
32
+ export declare function pickLayout(layouts: PageLayout[], terminal: string): PageLayout;
33
+ /**
34
+ * 取一对 PC/MOBILE 组件(经 refCompId 互指)。factory 模板每端恰一个 comp,compId 可省;
35
+ * 源页克隆时传 compId(另一端自动按 refCompId 配对)。
36
+ */
37
+ export declare function extractCompPair(layouts: PageLayout[], compId?: string): {
38
+ PC?: LayoutComp;
39
+ MOBILE?: LayoutComp;
40
+ };
41
+ /** 顶层组件追加位置:现有顶层 comps 的最大 y+h。 */
42
+ export declare function nextY(lay: PageLayout): number;
43
+ /**
44
+ * 克隆一对 comp 进目标布局(新 id + refCompId 重连 + layout.i 重指),返回新 comp id 列表。
45
+ * PC 端可覆盖 x/y/w,两端均可覆盖 h;未给坐标时 PC 追加到现有组件下方。
46
+ */
47
+ export declare function clonePairInto(targetLayouts: PageLayout[], pair: {
48
+ PC?: LayoutComp;
49
+ MOBILE?: LayoutComp;
50
+ }, o: {
51
+ x?: number;
52
+ y?: number;
53
+ w?: number;
54
+ h?: number;
55
+ }): string[];
56
+ //# sourceMappingURL=designer-common.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"designer-common.d.ts","sourceRoot":"","sources":["../../src/commands/designer-common.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAKnD,MAAM,WAAW,UAAU;IAAG,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,CAAC,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC;CAAE;AAC3E,MAAM,WAAW,UAAU;IAAG,EAAE,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,UAAU,EAAE,CAAC;IAAC,CAAC,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC;CAAE;AAE5H;;;GAGG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAGnD;AAED,gDAAgD;AAChD,wBAAgB,SAAS,IAAI,MAAM,CAElC;AAED,mEAAmE;AACnE,wBAAgB,WAAW,IAAI,MAAM,EAAE,CAWtC;AAED,2DAA2D;AAC3D,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAWzD;AAED,gDAAgD;AAChD,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,EAAE,CAG/D;AAMD,gDAAgD;AAChD,wBAAsB,YAAY,CAChC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,UAAO,GACvE,OAAO,CAAC,UAAU,EAAE,CAAC,CASvB;AAED,oDAAoD;AACpD,wBAAsB,WAAW,CAC/B,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,EACzE,QAAQ,CAAC,EAAE,MAAM,EAAE,WAAW,UAAQ,GACrC,OAAO,CAAC,GAAG,CAAC,CAUd;AAED,qCAAqC;AACrC,wBAAgB,UAAU,CAAC,OAAO,EAAE,UAAU,EAAE,EAAE,QAAQ,EAAE,MAAM,GAAG,UAAU,CAK9E;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,UAAU,EAAE,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG;IAAE,EAAE,CAAC,EAAE,UAAU,CAAC;IAAC,MAAM,CAAC,EAAE,UAAU,CAAA;CAAE,CAWhH;AAED,mCAAmC;AACnC,wBAAgB,KAAK,CAAC,GAAG,EAAE,UAAU,GAAG,MAAM,CAQ7C;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAC3B,aAAa,EAAE,UAAU,EAAE,EAC3B,IAAI,EAAE;IAAE,EAAE,CAAC,EAAE,UAAU,CAAC;IAAC,MAAM,CAAC,EAAE,UAAU,CAAA;CAAE,EAC9C,CAAC,EAAE;IAAE,CAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,CAAC,EAAE,MAAM,CAAA;CAAE,GACpD,MAAM,EAAE,CA+BV"}
@@ -0,0 +1,165 @@
1
+ /**
2
+ * designer 通用工具 — 布局读写/factory 模板解析/组件克隆(page、designer 命令组共用)。
3
+ *
4
+ * 契约:/api/bs/ebuilder/designer/layout/*(skill references/ebuilder-designer/guide-designer.md)。
5
+ * save 入参铁律:layouts 取自 /layout/list,只构造 comps,其余元数据原样回传;
6
+ * Body = lzwCompress(JSON.stringify(layouts)) 原始数字串(平台 EbuilderCommonUtil.decryptByLZ 解),
7
+ * 不要再 JSON.stringify 包裹。save 必须带 PC+MOBILE 两端,否则整页覆盖丢另一端。
8
+ */
9
+ import { existsSync, readFileSync } from 'fs';
10
+ import { randomBytes, randomInt } from 'crypto';
11
+ import { resolve, dirname } from 'path';
12
+ import { fileURLToPath } from 'url';
13
+ import { homedir } from 'os';
14
+ import { lzwCompress } from '../core/lzw.js';
15
+ const __dirname = dirname(fileURLToPath(import.meta.url));
16
+ /**
17
+ * 字母开头随机 hex id(平台机器 id 硬规则:首位不能是数字,浏览器原生样本首位恒为 a-f)。
18
+ * 首位取 a-f,其余随机 hex;输出总长 = length。
19
+ */
20
+ export function genLetterHex(length) {
21
+ const tail = randomBytes(Math.ceil((length - 1) / 2)).toString('hex').slice(0, length - 1);
22
+ return 'abcdef'[randomInt(6)] + tail;
23
+ }
24
+ /** 32 位无连字符 UUID(前端生成 comp id 的同款形态,首位字母合规)。 */
25
+ export function genCompId() {
26
+ return genLetterHex(32);
27
+ }
28
+ /** factory 模板目录(icons.db 同款定位:包内 skill-docs → 仓库源码 → 已装 skill)。 */
29
+ export function factoryDirs() {
30
+ const home = homedir();
31
+ return [
32
+ // npm 包:dist/commands → packages/cli/skill-docs/assets/factory
33
+ resolve(__dirname, '..', '..', 'skill-docs', 'assets', 'factory'),
34
+ // 仓库源码布局:<repo>/skills/weaver-e10-builder/assets/factory
35
+ resolve(__dirname, '..', '..', '..', '..', 'skills', 'weaver-e10-builder', 'assets', 'factory'),
36
+ // 已装 skill(auth status 会从 skill-docs 同步 assets)
37
+ resolve(home, '.workbuddy', 'skills', 'weaver-e10-builder', 'assets', 'factory'),
38
+ resolve(home, '.claude', 'skills', 'weaver-e10-builder', 'assets', 'factory'),
39
+ ];
40
+ }
41
+ /** 解析 --template:@路径 / 裸名(factory-<name>.json)/ 任意文件路径。 */
42
+ export function resolveTemplateFile(input) {
43
+ const raw = input.startsWith('@') ? input.slice(1) : input;
44
+ if (existsSync(raw))
45
+ return raw;
46
+ const names = [raw, `${raw}.json`, `factory-${raw}.json`];
47
+ for (const dir of factoryDirs()) {
48
+ for (const n of names) {
49
+ const p = resolve(dir, n);
50
+ if (existsSync(p))
51
+ return p;
52
+ }
53
+ }
54
+ throw new Error(`模板不存在: ${input}(内置模板见 e10-cli designer factory list,也可传任意布局 JSON 路径)`);
55
+ }
56
+ /** 读模板文件 → 布局数组(factory 模板是 PC+MOBILE 整布局对)。 */
57
+ export function loadTemplateLayouts(input) {
58
+ const parsed = JSON.parse(readFileSync(resolveTemplateFile(input), 'utf-8'));
59
+ return Array.isArray(parsed) ? parsed : [parsed];
60
+ }
61
+ function designerUrl(baseUrl, path) {
62
+ return `${baseUrl}/api/bs/ebuilder/designer${path}`;
63
+ }
64
+ /** 读整页布局(默认含自定义组件;PC+MOBILE 两端都要,save 必须两端)。 */
65
+ export async function fetchLayouts(client, baseUrl, pageId, returnCusComp = true) {
66
+ const r = await client.get(`${designerUrl(baseUrl, '/layout/list')}?pageId=${pageId}&returnCusComp=${returnCusComp}`, { ebbusinessid: pageId });
67
+ if (r?.code !== 200)
68
+ throw new Error(`读取布局失败: ${r?.msg || '未知错误'}`);
69
+ const layouts = r?.data;
70
+ if (!Array.isArray(layouts) || !layouts.length)
71
+ throw new Error('布局为空(页面可能没有布局数据)');
72
+ return layouts;
73
+ }
74
+ /** 保存布局:整包 LZ 压缩后 POST(Body 为压缩数字串原样,不 JSON 包裹)。 */
75
+ export async function saveLayouts(client, baseUrl, pageId, layouts, pageName, syncOutdate = false) {
76
+ const q = new URLSearchParams({ pageId, isSyncOutDateComps: String(syncOutdate) });
77
+ if (pageName)
78
+ q.set('pageName', pageName);
79
+ const body = lzwCompress(JSON.stringify(layouts));
80
+ const r = await client.post(`${designerUrl(baseUrl, '/layout/save')}?${q.toString()}`, body, {
81
+ 'content-type': 'application/json;charset=UTF-8',
82
+ ebbusinessid: pageId,
83
+ });
84
+ if (r?.code !== 200)
85
+ throw new Error(`保存布局失败: ${r?.msg || '未知错误'}`);
86
+ return r?.data;
87
+ }
88
+ /** 按终端取布局元素(terminal: pc/mobile)。 */
89
+ export function pickLayout(layouts, terminal) {
90
+ const t = terminal.toUpperCase();
91
+ const hit = layouts.find((l) => String(l.terminalType || '').toUpperCase() === t);
92
+ if (!hit)
93
+ throw new Error(`布局中没有 ${t} 端(现有: ${layouts.map((l) => l.terminalType).join('/')})`);
94
+ return hit;
95
+ }
96
+ /**
97
+ * 取一对 PC/MOBILE 组件(经 refCompId 互指)。factory 模板每端恰一个 comp,compId 可省;
98
+ * 源页克隆时传 compId(另一端自动按 refCompId 配对)。
99
+ */
100
+ export function extractCompPair(layouts, compId) {
101
+ const pair = {};
102
+ for (const lay of layouts) {
103
+ const t = String(lay.terminalType || '').toUpperCase();
104
+ if (t !== 'PC' && t !== 'MOBILE')
105
+ continue;
106
+ const comps = lay.comps || [];
107
+ const hit = compId ? comps.find((c) => c.id === compId || c.refCompId === compId) : comps[0];
108
+ if (hit)
109
+ pair[t] = hit;
110
+ }
111
+ if (compId && !pair.PC && !pair.MOBILE)
112
+ throw new Error(`未找到组件 ${compId}`);
113
+ return pair;
114
+ }
115
+ /** 顶层组件追加位置:现有顶层 comps 的最大 y+h。 */
116
+ export function nextY(lay) {
117
+ let y = 0;
118
+ for (const c of lay.comps || []) {
119
+ if (c.config?.flow?.parent)
120
+ continue;
121
+ const l = c.config?.layout || {};
122
+ y = Math.max(y, (Number(l.y) || 0) + (Number(l.h) || 0));
123
+ }
124
+ return y;
125
+ }
126
+ /**
127
+ * 克隆一对 comp 进目标布局(新 id + refCompId 重连 + layout.i 重指),返回新 comp id 列表。
128
+ * PC 端可覆盖 x/y/w,两端均可覆盖 h;未给坐标时 PC 追加到现有组件下方。
129
+ */
130
+ export function clonePairInto(targetLayouts, pair, o) {
131
+ const ids = {};
132
+ for (const k of ['PC', 'MOBILE']) {
133
+ if (pair[k])
134
+ ids[k] = genCompId();
135
+ }
136
+ const added = [];
137
+ for (const lay of targetLayouts) {
138
+ const t = String(lay.terminalType || '').toUpperCase();
139
+ const src = pair[t];
140
+ const newId = ids[t];
141
+ if (!src || !newId)
142
+ continue;
143
+ const comp = JSON.parse(JSON.stringify(src));
144
+ comp.id = newId;
145
+ comp.refCompId = ids[t === 'PC' ? 'MOBILE' : 'PC'] || '';
146
+ comp.pid = '';
147
+ if (comp.config) {
148
+ const layout = { ...(comp.config.layout || {}) };
149
+ layout.i = newId;
150
+ if (t === 'PC') {
151
+ layout.x = o.x ?? layout.x ?? 0;
152
+ layout.y = o.y ?? (comp.config.layout?.y ?? nextY(lay));
153
+ layout.w = o.w ?? layout.w ?? 12;
154
+ }
155
+ if (o.h !== undefined)
156
+ layout.h = o.h;
157
+ comp.config.layout = layout;
158
+ }
159
+ lay.comps = lay.comps || [];
160
+ lay.comps.push(comp);
161
+ added.push(newId);
162
+ }
163
+ return added;
164
+ }
165
+ //# sourceMappingURL=designer-common.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"designer-common.js","sourceRoot":"","sources":["../../src/commands/designer-common.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * designer 组件 setter — 6 类有专属配置入口的组件(chart/digital-panel/list/calendar/slide/nav-panel)。
3
+ *
4
+ * 机制(无原生组件接口,全部落地经 /layout/save):
5
+ * 读布局 → 定位 comp → 改 config(数据绑定结构 = /api/ebuilder/common/ds/fields 返回的字段对象,
6
+ * 补 axisId/shortKey 等图表属性)→ saveLayouts 整包保存。
7
+ *
8
+ * 绑定结构来源:example-configured(-2).json 范例 + ds/fields 实测(字段对象即条目结构)。
9
+ * 坑:每次改完 save ≠ 生效,须回读校验;度量显示名用 --text;图表维度须从字段对象全量填充。
10
+ */
11
+ import { Command } from 'commander';
12
+ export declare function registerDesignerSetterCommands(program: Command): void;
13
+ //# sourceMappingURL=designer-setters.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"designer-setters.d.ts","sourceRoot":"","sources":["../../src/commands/designer-setters.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA2FpC,wBAAgB,8BAA8B,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA+erE"}