@nocobase/app 2.0.0-alpha.5 → 2.0.0-alpha.50

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 (118) hide show
  1. package/dist/client/113.736e29a0.async.js +7 -0
  2. package/dist/client/1145.0351040a.async.js +3 -0
  3. package/dist/client/1161.0b3b5766.async.js +40 -0
  4. package/dist/client/1442.be509f94.async.js +5 -0
  5. package/dist/client/1595.9f992743.async.js +44 -0
  6. package/dist/client/1758.eeeacf43.async.js +5 -0
  7. package/dist/client/1883.6ee256ab.async.js +17 -0
  8. package/dist/client/1905.ff0793ff.async.js +12 -0
  9. package/dist/client/2042.feb4b9ac.async.js +10 -0
  10. package/dist/client/2097.919e4d8a.async.js +14 -0
  11. package/dist/client/{2190.90c718a9.async.js → 2190.4f5395e5.async.js} +1 -1
  12. package/dist/client/2380.900b7a22.async.js +15 -0
  13. package/dist/client/2612.0865e67e.async.js +19 -0
  14. package/dist/client/2775.455c3402.async.js +47 -0
  15. package/dist/client/2936.902710e4.async.js +28 -0
  16. package/dist/client/3357.be95167c.async.js +28 -0
  17. package/dist/client/341.fba65e23.async.js +28 -0
  18. package/dist/client/3451.a9466e73.async.js +24 -0
  19. package/dist/client/4327.68c0f17b.async.js +16 -0
  20. package/dist/client/4351.efe05af2.async.js +15 -0
  21. package/dist/client/4356.d61392c6.async.js +18 -0
  22. package/dist/client/4666.fb83d11a.async.js +9 -0
  23. package/dist/client/4727.0f6df8fb.async.js +1 -0
  24. package/dist/client/4750.ce3051f3.async.js +31 -0
  25. package/dist/client/4926.58238954.async.js +17 -0
  26. package/dist/client/5013.b14730ba.async.js +3 -0
  27. package/dist/client/5501.22d50b3a.async.js +23 -0
  28. package/dist/client/5505.a71c2922.async.js +2 -0
  29. package/dist/client/5662.8c643e63.async.js +26 -0
  30. package/dist/client/5882.abae55ef.async.js +50 -0
  31. package/dist/client/5950.179a885e.async.js +4 -0
  32. package/dist/client/6021.cdefa0d3.async.js +22 -0
  33. package/dist/client/645.ab5af584.async.js +55 -0
  34. package/dist/client/6474.49632e37.async.js +21 -0
  35. package/dist/client/6534.6ea6468b.async.js +33 -0
  36. package/dist/client/6747.de538558.async.js +22 -0
  37. package/dist/client/689.4de33d65.async.js +3 -0
  38. package/dist/client/6920.497d7e80.async.js +59 -0
  39. package/dist/client/6939.d7d780b7.async.js +17 -0
  40. package/dist/client/6996.ae27c9d6.async.js +9 -0
  41. package/dist/client/703.7ad807b0.async.js +17 -0
  42. package/dist/client/7087.5646e199.async.js +6 -0
  43. package/dist/client/7483.546ddcb6.async.js +23 -0
  44. package/dist/client/7534.0d69e071.async.js +34 -0
  45. package/dist/client/7764.a3ae7727.async.js +25 -0
  46. package/dist/client/8183.4c6f7e21.async.js +12 -0
  47. package/dist/client/8408.c0ef773c.async.js +84 -0
  48. package/dist/client/8805.819c4f44.async.js +20 -0
  49. package/dist/client/9017.4ae5c322.async.js +6 -0
  50. package/dist/client/9042.3d21f631.async.js +45 -0
  51. package/dist/client/908.0e8c8a54.async.js +14 -0
  52. package/dist/client/9317.fe6ffa9a.async.js +13 -0
  53. package/dist/client/935.97d45ffa.async.js +27 -0
  54. package/dist/client/95.24aa76c4.async.js +6 -0
  55. package/dist/client/9547.a442df93.async.js +25 -0
  56. package/dist/client/9801.34b13a74.async.js +9 -0
  57. package/dist/client/9844.6f484975.async.js +37 -0
  58. package/dist/client/index.html +1 -1
  59. package/dist/client/index.html.tpl +1 -1
  60. package/dist/client/npm._at_jridgewell.72fd4dd4.async.js +1 -0
  61. package/dist/client/{npm._at_umijs.47085d01.async.js → npm._at_umijs.f64c1387.async.js} +1 -1
  62. package/dist/client/npm.acorn.59eb4103.async.js +11 -0
  63. package/dist/client/npm.antd-mobile.55661292.async.js +2 -0
  64. package/dist/client/npm.babel-runtime.eed49798.async.js +1 -0
  65. package/dist/client/{npm.highlight.js.c1f693ec.async.js → npm.highlight.js.5db864c8.async.js} +2 -2
  66. package/dist/client/{npm.htmlparser2.a2f8d64d.async.js → npm.htmlparser2.ee1fb042.async.js} +1 -1
  67. package/dist/client/npm.liquidjs.7be2e0df.async.js +13 -0
  68. package/dist/client/npm.sucrase.1cb664e8.async.js +135 -0
  69. package/dist/client/{npm.unknown.1838c8f4.chunk.css → npm.unknown.d9b587d9.chunk.css} +26 -1
  70. package/dist/client/npm.vditor.eb5da290.async.js +233 -0
  71. package/dist/client/p__index.40592ced.async.js +2484 -0
  72. package/dist/client/{umi.121d6f3f.js → umi.642fefe0.js} +17 -17
  73. package/lib/config/telemetry.js +1 -0
  74. package/package.json +6 -6
  75. package/src/config/telemetry.ts +1 -0
  76. package/dist/client/1145.4029b0be.async.js +0 -3
  77. package/dist/client/1617.dd671a87.async.js +0 -6
  78. package/dist/client/1833.82373d30.async.js +0 -6
  79. package/dist/client/2134.1d86e440.async.js +0 -5
  80. package/dist/client/2498.be8b1194.async.js +0 -7
  81. package/dist/client/260.5b02a0a5.async.js +0 -4
  82. package/dist/client/2953.2e77d77c.async.js +0 -24
  83. package/dist/client/3170.6147bd19.async.js +0 -24
  84. package/dist/client/3255.e6303833.async.js +0 -10
  85. package/dist/client/3520.81fd6362.async.js +0 -24
  86. package/dist/client/3522.674f2264.async.js +0 -4
  87. package/dist/client/4088.0568ef31.async.js +0 -5
  88. package/dist/client/4205.c3eac46d.async.js +0 -9
  89. package/dist/client/4644.ae01f8a6.async.js +0 -4
  90. package/dist/client/4666.d20ff352.async.js +0 -8
  91. package/dist/client/4840.477401f9.async.js +0 -8
  92. package/dist/client/5068.72e9d750.async.js +0 -5
  93. package/dist/client/5087.468f5500.async.js +0 -6
  94. package/dist/client/5950.b83f8586.async.js +0 -4
  95. package/dist/client/6416.361c93ff.async.js +0 -4
  96. package/dist/client/6472.ac05f778.async.js +0 -7
  97. package/dist/client/6779.47fc1971.async.js +0 -10
  98. package/dist/client/6816.1ff200ac.async.js +0 -5
  99. package/dist/client/6996.836a3f7f.async.js +0 -8
  100. package/dist/client/7463.70ca58ce.async.js +0 -20
  101. package/dist/client/7482.3924bcd9.async.js +0 -1
  102. package/dist/client/7522.1f91be5c.async.js +0 -23
  103. package/dist/client/7596.232a7185.async.js +0 -10
  104. package/dist/client/7688.85d6d7bb.async.js +0 -4
  105. package/dist/client/8106.829fd6b5.async.js +0 -10
  106. package/dist/client/8541.e3110aaa.async.js +0 -8
  107. package/dist/client/9017.28eacc5a.async.js +0 -6
  108. package/dist/client/937.a55819ab.async.js +0 -5
  109. package/dist/client/9462.a7773548.async.js +0 -35
  110. package/dist/client/9489.25ca39a9.async.js +0 -7
  111. package/dist/client/9663.c04b2ad1.async.js +0 -5
  112. package/dist/client/9729.0d7a5c47.async.js +0 -8
  113. package/dist/client/9848.18f8d3db.async.js +0 -4
  114. package/dist/client/npm._at_babel.94b2dd75.async.js +0 -3
  115. package/dist/client/npm.acorn.1f389fab.async.js +0 -6
  116. package/dist/client/npm.antd-mobile.1a8a8320.async.js +0 -2
  117. package/dist/client/npm.async-validator.32d9020f.async.js +0 -12
  118. package/dist/client/p__index.b57f4995.async.js +0 -2316
@@ -30,6 +30,7 @@ __export(telemetry_exports, {
30
30
  });
31
31
  module.exports = __toCommonJS(telemetry_exports);
32
32
  const telemetry = {
33
+ serviceName: process.env.TELEMETRY_SERVICE_NAME || "nocobase",
33
34
  enabled: process.env.TELEMETRY_ENABLED === "on",
34
35
  metric: {
35
36
  readerName: process.env.TELEMETRY_METRIC_READER
package/package.json CHANGED
@@ -1,22 +1,22 @@
1
1
  {
2
2
  "name": "@nocobase/app",
3
- "version": "2.0.0-alpha.5",
3
+ "version": "2.0.0-alpha.50",
4
4
  "description": "",
5
5
  "license": "AGPL-3.0",
6
6
  "main": "./lib/index.js",
7
7
  "types": "./lib/index.d.ts",
8
8
  "dependencies": {
9
- "@nocobase/database": "2.0.0-alpha.5",
10
- "@nocobase/preset-nocobase": "2.0.0-alpha.5",
11
- "@nocobase/server": "2.0.0-alpha.5"
9
+ "@nocobase/database": "2.0.0-alpha.50",
10
+ "@nocobase/preset-nocobase": "2.0.0-alpha.50",
11
+ "@nocobase/server": "2.0.0-alpha.50"
12
12
  },
13
13
  "devDependencies": {
14
- "@nocobase/client": "2.0.0-alpha.5"
14
+ "@nocobase/client": "2.0.0-alpha.50"
15
15
  },
16
16
  "repository": {
17
17
  "type": "git",
18
18
  "url": "git+https://github.com/nocobase/nocobase.git",
19
19
  "directory": "packages/core/app"
20
20
  },
21
- "gitHead": "943e035bbec27f9ecfe8ce8857955945f20976f3"
21
+ "gitHead": "a6eb64abf3632e116ad0b295a7f410270a1059d1"
22
22
  }
@@ -10,6 +10,7 @@
10
10
  import { AppTelemetryOptions } from '@nocobase/server';
11
11
 
12
12
  export const telemetry: AppTelemetryOptions = {
13
+ serviceName: process.env.TELEMETRY_SERVICE_NAME || 'nocobase',
13
14
  enabled: process.env.TELEMETRY_ENABLED === 'on',
14
15
  metric: {
15
16
  readerName: process.env.TELEMETRY_METRIC_READER,
@@ -1,3 +0,0 @@
1
- "use strict";(self.webpackChunknocobase=self.webpackChunknocobase||[]).push([[1145],{41145:function(n,s,e){e.r(s);var c={contexts:["*"],prefix:"sn-msg",label:"Message success",description:"Show a success toast message",content:`
2
- ctx.message.success(ctx.t('Operation succeeded'));
3
- `};s.default=c}}]);
@@ -1,6 +0,0 @@
1
- "use strict";(self.webpackChunknocobase=self.webpackChunknocobase||[]).push([[1617],{1421:function(o,n,e){e.r(n),n.default={contexts:["JSFieldRunJSContext","FormJSFieldItemRunJSContext"],prefix:"sn-jsf-color",label:"Color by value",content:`
2
- // Colorize based on numeric sign
3
- const n = Number(ctx.value ?? 0);
4
- const color = Number.isFinite(n) ? (n > 0 ? 'green' : n < 0 ? 'red' : '#999') : '#555';
5
- ctx.element.innerHTML = '<span style=' + JSON.stringify('color:' + color) + '>' + String(ctx.value ?? '') + '</span>';
6
- `}}}]);
@@ -1,6 +0,0 @@
1
- "use strict";(self.webpackChunknocobase=self.webpackChunknocobase||[]).push([[1833],{51833:function(n,e,s){s.r(e),e.default={contexts:["*"],prefix:"sn-sleep",label:"Sleep",description:"Pause execution for a given milliseconds",content:`
2
- const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
3
- const ms = 500;
4
- await sleep(ms);
5
- ctx.message.success(ctx.t('Waited {{ms}} ms', { ms }));
6
- `}}}]);
@@ -1,5 +0,0 @@
1
- "use strict";(self.webpackChunknocobase=self.webpackChunknocobase||[]).push([[2134],{22134:function(s,e,t){t.r(e),e.default={contexts:["*"],prefix:"sn-api-post",label:"POST request template",description:"Basic template to send a POST request via ctx.api",content:`
2
- const res = await ctx.api.request({ url: '/your/api', method: 'post', data: { name: 'NocoBase' } });
3
- ctx.message.success(ctx.t('POST request completed'));
4
- console.log(ctx.t('POST result:'), res);
5
- `}}}]);
@@ -1,7 +0,0 @@
1
- "use strict";(self.webpackChunknocobase=self.webpackChunknocobase||[]).push([[2498],{22498:function(n,e,t){t.r(e),e.default={contexts:["*"],prefix:"sn-try",label:"Try/catch template",description:"Async try/catch template with toast message",content:`
2
- try {
3
- // await some async work
4
- } catch (e) {
5
- ctx.message.error(ctx.t('Operation failed: {{msg}}', { msg: String(e?.message || e) }));
6
- }
7
- `}}}]);
@@ -1,4 +0,0 @@
1
- "use strict";(self.webpackChunknocobase=self.webpackChunknocobase||[]).push([[260],{20260:function(s,o,c){c.r(o);var e={contexts:["*"],prefix:"sn-copy",label:"Copy to clipboard",description:"Copy a string to clipboard and show a success message",content:`
2
- await ctx.copyToClipboard(ctx.t('Text to copy'));
3
- ctx.message.success(ctx.t('Copied to clipboard'));
4
- `};o.default=e}}]);
@@ -1,24 +0,0 @@
1
- "use strict";(self.webpackChunknocobase=self.webpackChunknocobase||[]).push([[2953],{92953:function(d,e,n){n.r(e),e.default={contexts:["*"],prefix:"sn-link-disable",label:"Set disabled",content:`
2
- const targetFieldUid = 'FIELD_UID_OR_NAME';
3
- const disabled = true;
4
-
5
- const items = ctx.model?.subModels?.grid?.subModels?.items;
6
- const candidates: any[] = Array.isArray(items)
7
- ? items
8
- : Array.from(items?.values?.() || items || []);
9
- const fieldModel =
10
- candidates.find((item) => item?.uid === targetFieldUid) ||
11
- candidates.find((item) => item?.props?.name === targetFieldUid);
12
-
13
- if (!fieldModel) {
14
- ctx.message?.warning?.(ctx.t('Field {{name}} not found', { name: targetFieldUid }));
15
- return;
16
- }
17
-
18
- fieldModel.setProps({ disabled });
19
- ctx.message?.success?.(
20
- ctx.t(disabled ? 'Disabled field {{name}}' : 'Enabled field {{name}}', {
21
- name: fieldModel?.props?.label || targetFieldUid,
22
- }),
23
- );
24
- `}}}]);
@@ -1,24 +0,0 @@
1
- "use strict";(self.webpackChunknocobase=self.webpackChunknocobase||[]).push([[3170],{3170:function(i,e,n){n.r(e),e.default={contexts:["*"],prefix:"sn-link-visibility",label:"Toggle visible",content:`
2
- const targetFieldUid = 'FIELD_UID_OR_NAME';
3
- const shouldHide = true;
4
-
5
- const items = ctx.model?.subModels?.grid?.subModels?.items;
6
- const candidates: any[] = Array.isArray(items)
7
- ? items
8
- : Array.from(items?.values?.() || items || []);
9
- const fieldModel =
10
- candidates.find((item) => item?.uid === targetFieldUid) ||
11
- candidates.find((item) => item?.props?.name === targetFieldUid);
12
-
13
- if (!fieldModel) {
14
- ctx.message?.warning?.(ctx.t('Field {{name}} not found', { name: targetFieldUid }));
15
- return;
16
- }
17
-
18
- fieldModel.setProps({ hiddenModel: shouldHide });
19
- ctx.message?.success?.(
20
- ctx.t(shouldHide ? 'Hidden field {{name}}' : 'Shown field {{name}}', {
21
- name: fieldModel?.props?.label || targetFieldUid,
22
- }),
23
- );
24
- `}}}]);
@@ -1,10 +0,0 @@
1
- "use strict";(self.webpackChunknocobase=self.webpackChunknocobase||[]).push([[3255],{43255:function(n,t,e){e.r(t),t.default={contexts:["JSBlockRunJSContext"],prefix:"sn-echarts",label:"Init ECharts",content:`
2
- ctx.element.style.height = '400px';
3
- const echarts = await ctx.requireAsync('https://cdn.jsdelivr.net/npm/echarts@5/dist/echarts.min.js');
4
- if (!echarts) {
5
- ctx.message.error(ctx.t('Failed to load ECharts'));
6
- } else {
7
- const chart = echarts.init(ctx.element);
8
- chart.setOption({ title: { text: ctx.t('ECharts') }, series: [{ type: 'pie', data: [{ value: 1, name: ctx.t('A') }] }] });
9
- }
10
- `}}}]);
@@ -1,24 +0,0 @@
1
- "use strict";(self.webpackChunknocobase=self.webpackChunknocobase||[]).push([[3520],{53520:function(i,e,n){n.r(e),e.default={contexts:["*"],prefix:"sn-link-required",label:"Set required",content:`
2
- const targetFieldUid = 'FIELD_UID_OR_NAME';
3
- const required = true;
4
-
5
- const items = ctx.model?.subModels?.grid?.subModels?.items;
6
- const candidates: any[] = Array.isArray(items)
7
- ? items
8
- : Array.from(items?.values?.() || items || []);
9
- const fieldModel =
10
- candidates.find((item) => item?.uid === targetFieldUid) ||
11
- candidates.find((item) => item?.props?.name === targetFieldUid);
12
-
13
- if (!fieldModel) {
14
- ctx.message?.warning?.(ctx.t('Field {{name}} not found', { name: targetFieldUid }));
15
- return;
16
- }
17
-
18
- fieldModel.setProps({ required });
19
- ctx.message?.success?.(
20
- ctx.t(required ? 'Set field {{name}} as required' : 'Field {{name}} is optional', {
21
- name: fieldModel?.props?.label || targetFieldUid,
22
- }),
23
- );
24
- `}}}]);
@@ -1,4 +0,0 @@
1
- "use strict";(self.webpackChunknocobase=self.webpackChunknocobase||[]).push([[3522],{83522:function(t,c,e){e.r(c);var o={contexts:["*"],prefix:"sn-copy-record",label:"Copy record JSON",description:"Copy current ctx.record JSON to clipboard",content:`
2
- await ctx.copyToClipboard(JSON.stringify(ctx.record ?? {}, null, 2));
3
- ctx.message.success(ctx.t('Record JSON copied to clipboard'));
4
- `};c.default=o}}]);
@@ -1,5 +0,0 @@
1
- "use strict";(self.webpackChunknocobase=self.webpackChunknocobase||[]).push([[4088],{64088:function(a,i,n){n.r(i);var e={contexts:["*"],versions:["*"],prefix:"sn-nav-push",label:"View navigation: push",description:"Navigate within current view (if supported)",content:`
2
- // Push a new sub-view (if navigation is available)
3
- ctx.view?.navigation?.push({ viewUid: 'detail', filterByTk: 1 });
4
- // To go back: ctx.view?.navigation?.back();
5
- `};i.default=e}}]);
@@ -1,9 +0,0 @@
1
- "use strict";(self.webpackChunknocobase=self.webpackChunknocobase||[]).push([[4205],{94205:function(a,e,n){n.r(e),e.default={contexts:["*"],prefix:"sn-require",label:"Load external library",description:"Dynamically load an external JS via RequireJS",content:`
2
- // Load an external library (AMD/RequireJS)
3
- try {
4
- const lib = await ctx.requireAsync('https://cdn.example.com/lib@1.0.0/index.js');
5
- console.log('lib loaded:', lib);
6
- } catch (e) {
7
- ctx.message.error(ctx.t('Failed to load external library: {{msg}}', { msg: String(e?.message || e) }));
8
- }
9
- `}}}]);
@@ -1,4 +0,0 @@
1
- "use strict";(self.webpackChunknocobase=self.webpackChunknocobase||[]).push([[4644],{94644:function(t,e,n){n.r(e),e.default={contexts:["JSFieldRunJSContext","FormJSFieldItemRunJSContext"],prefix:"sn-jsf-value",label:"Render field value",content:`
2
- const v = String(ctx.value ?? '');
3
- ctx.element.innerHTML = \`<span class="nb-js-field-value" style="color:#1890ff;font-weight:600">\${v}</span>\`;
4
- `}}}]);
@@ -1,8 +0,0 @@
1
- "use strict";(self.webpackChunknocobase=self.webpackChunknocobase||[]).push([[4666],{74666:function(p,e,n){n.r(e);var i={contexts:["*"],versions:["*"],prefix:"sn-open-drawer",label:"Open view (drawer)",description:"Open a view in drawer via ctx.openView",content:`
2
- const popupUid = 'your-popup-uid';
3
- await ctx.openView(popupUid, {
4
- mode: 'drawer',
5
- viewUid: 'detail',
6
- inputArgs: { foo: 'bar' },
7
- });
8
- `};e.default=i}}]);
@@ -1,8 +0,0 @@
1
- "use strict";(self.webpackChunknocobase=self.webpackChunknocobase||[]).push([[4840],{24840:function(d,n,e){e.r(n);var t={contexts:["JSBlockRunJSContext"],prefix:"sn-jsb-card",label:"Render card",content:`
2
- ctx.element.innerHTML = \`
3
- <div style="border:1px solid #ddd;border-radius:8px;padding:16px;">
4
- <h3 style="margin:0 0 8px;">\${ctx.t('Title')}</h3>
5
- <div>\${ctx.t('Card content')}</div>
6
- </div>
7
- \`;
8
- `};n.default=t}}]);
@@ -1,5 +0,0 @@
1
- "use strict";(self.webpackChunknocobase=self.webpackChunknocobase||[]).push([[5068],{35068:function(t,n,e){e.r(n),n.default={contexts:["JSFieldRunJSContext","FormJSFieldItemRunJSContext"],prefix:"sn-jsf-num",label:"Format number",content:`
2
- // Format number using locale
3
- const n = Number(ctx.value ?? 0);
4
- ctx.element.innerHTML = String(Number.isFinite(n) ? n.toLocaleString() : ctx.value ?? '');
5
- `}}}]);
@@ -1,6 +0,0 @@
1
- "use strict";(self.webpackChunknocobase=self.webpackChunknocobase||[]).push([[5087],{5087:function(t,e,n){n.r(e),e.default={contexts:["JSBlockRunJSContext"],prefix:"sn-jsb-style",label:"Append style",content:`
2
- // Append styles to container
3
- ctx.element.style.border = '1px dashed #999';
4
- ctx.element.style.padding = '12px';
5
- ctx.element.style.borderRadius = '8px';
6
- `}}}]);
@@ -1,4 +0,0 @@
1
- "use strict";(self.webpackChunknocobase=self.webpackChunknocobase||[]).push([[5950],{45950:function(o,n,e){e.r(n),n.default={contexts:["*"],prefix:"sn-window-open",label:"Open new window",description:"Safely open a new browser window/tab",content:`
2
- // Open a new window/tab
3
- window.open('https://example.com', '_blank');
4
- `}}}]);
@@ -1,4 +0,0 @@
1
- "use strict";(self.webpackChunknocobase=self.webpackChunknocobase||[]).push([[6416],{86416:function(t,e,c){c.r(e),e.default={contexts:["*"],prefix:"sn-log-ctx",label:"Log ctx",description:"Log the whole ctx object to console",content:`
2
- console.log('ctx =>', ctx);
3
- ctx.message?.success?.(ctx.t('ctx printed'));
4
- `}}}]);
@@ -1,7 +0,0 @@
1
- "use strict";(self.webpackChunknocobase=self.webpackChunknocobase||[]).push([[6472],{16472:function(n,e,c){c.r(e),e.default={contexts:["JSRecordActionRunJSContext"],prefix:"sn-act-record-id",label:"Show record id",content:`
2
- if (!ctx.record) {
3
- ctx.message.error(ctx.t('Record not found'));
4
- } else {
5
- ctx.message.success(ctx.t('Record ID: {{id}}', { id: ctx.filterByTk ?? ctx.record?.id }));
6
- }
7
- `}}}]);
@@ -1,10 +0,0 @@
1
- "use strict";(self.webpackChunknocobase=self.webpackChunknocobase||[]).push([[6779],{36779:function(t,n,e){e.r(n),n.default={contexts:["JSBlockRunJSContext"],prefix:"sn-jsb-click",label:"Add click listener",content:`
2
- // Render a button and bind a click handler
3
- ctx.element.innerHTML = \`
4
- <button id="nb-jsb-btn" style="padding:6px 12px">\${ctx.t('Click me')}</button>
5
- \`;
6
- const btn = document.getElementById('nb-jsb-btn');
7
- if (btn) {
8
- btn.addEventListener('click', () => ctx.message.success(ctx.t('Clicked!')));
9
- }
10
- `}}}]);
@@ -1,5 +0,0 @@
1
- "use strict";(self.webpackChunknocobase=self.webpackChunknocobase||[]).push([[6816],{76816:function(e,n,t){t.r(n),n.default={contexts:["JSBlockRunJSContext"],prefix:"sn-jsx-unmount",label:"JSX unmount",content:`
2
- if (ctx.__reactRoot?.unmount) { try { ctx.__reactRoot.unmount(); } catch(_) {} }
3
- ctx.__reactRoot = undefined;
4
- ctx.element.innerHTML = '';
5
- `}}}]);
@@ -1,8 +0,0 @@
1
- "use strict";(self.webpackChunknocobase=self.webpackChunknocobase||[]).push([[6996],{96996:function(o,n,e){e.r(n);var i={contexts:["*"],versions:["*"],prefix:"sn-open-dialog",label:"Open view (dialog)",description:"Open a view in dialog via ctx.openView",content:`
2
- const popupUid = 'your-popup-uid';
3
- await ctx.openView(popupUid, {
4
- mode: 'dialog',
5
- viewUid: 'detail',
6
- inputArgs: { foo: 'bar' },
7
- });
8
- `};n.default=i}}]);
@@ -1,20 +0,0 @@
1
- "use strict";(self.webpackChunknocobase=self.webpackChunknocobase||[]).push([[7463],{17463:function(n,t,e){e.r(t),t.default={contexts:["JSBlockRunJSContext"],prefix:"sn-jsb-react",label:"Render React",content:`
2
- // Render a React element into ctx.element via ReactDOM
3
- const { React, ReactDOM, antd } = ctx;
4
- const { Button } = antd;
5
-
6
- // Unmount previous render to allow repeated runs
7
- if (ctx.__reactRoot?.unmount) {
8
- try { ctx.__reactRoot.unmount(); } catch(_) {}
9
- ctx.__reactRoot = undefined;
10
- }
11
-
12
- const node = React.createElement(
13
- 'div',
14
- { style: { padding: 12 } },
15
- React.createElement(Button, { type: 'primary', onClick: () => ctx.message.success(ctx.t('Clicked!')) }, ctx.t('Click')),
16
- );
17
- const root = ReactDOM.createRoot(ctx.element);
18
- root.render(node);
19
- ctx.__reactRoot = root;
20
- `}}}]);
@@ -1 +0,0 @@
1
- "use strict";(self.webpackChunknocobase=self.webpackChunknocobase||[]).push([[7482],{42370:function(te,E,c){c.d(E,{Z:function(){return N}});function x(f){var l=f+"",A=l.indexOf("...");return A>=0&&(A<l.indexOf(")")||l.indexOf("arguments")>=0)}function N(f,l){l||(l={});var A=l.vargs||x(f),n=[],v=new Map,S,O,G=function(a){return O=setTimeout(function(){if(S){v.delete(a);return}n.splice(a,1)},l.maxAge)},C=l.maxAge>0&&l.maxAge<1/0?G:0,i=l.equals?l.equals:0,w=l.maxArgs,L=l.serializer,m;return f.length===1&&!l.equals&&!A?(m=function(a){L&&(a=L(a));var D;return v.get(a)||(!C||C(a),v.set(a,D=f.call(this,a)),D)},S=1):i?m=function(){for(var a=w||arguments.length,D=n.length,e=-1;++e<D;)if(n[e].length===a){for(var r=-1;++r<a&&i(arguments[r],n[e][r]););if(r===a)return n[e].val}return n[e]=arguments,!C||C(e),arguments.val=f.apply(this,n[e])}:m=function(){for(var a=w||arguments.length,D=n.length,e=-1;++e<D;)if(n[e].length===a){for(var r=-1;++r<a&&arguments[r]===n[e][r];);if(r===a)return n[e].val}return n[e]=arguments,!C||C(e),arguments.val=f.apply(this,n[e])},m.clear=function(){O&&clearTimeout(O),v.clear(),n=[]},m.keys=function(){return S?[...v.keys()]:n.slice()},m.values=function(){return S?[...v.values()]:n.map(a=>a.val)},m}},66940:function(te,E,c){c.d(E,{Z:function(){return le}});var x=c(87462),N=c(97685),f=c(91),l=c(4942),A=c(1413),n=c(71002),v=c(93967),S=c.n(v),O=c(21770),G=c(98423),C=c(42550),i=c(67294),w=c(62874),L=c(8410),m=function(t){return t?{left:t.offsetLeft,right:t.parentElement.clientWidth-t.clientWidth-t.offsetLeft,width:t.clientWidth}:null},a=function(t){return t!==void 0?"".concat(t,"px"):void 0};function D(u){var t=u.prefixCls,b=u.containerRef,I=u.value,p=u.getValueIndex,h=u.motionName,U=u.onMotionStart,F=u.onMotionEnd,y=u.direction,$=i.useRef(null),B=i.useState(I),z=(0,N.Z)(B,2),V=z[0],Q=z[1],j=function(P){var M,d=p(P),Z=(M=b.current)===null||M===void 0?void 0:M.querySelectorAll(".".concat(t,"-item"))[d];return(Z==null?void 0:Z.offsetParent)&&Z},Y=i.useState(null),q=(0,N.Z)(Y,2),R=q[0],W=q[1],ne=i.useState(null),H=(0,N.Z)(ne,2),g=H[0],X=H[1];(0,L.Z)(function(){if(V!==I){var T=j(V),P=j(I),M=m(T),d=m(P);Q(I),W(M),X(d),T&&P?U():F()}},[I]);var J=i.useMemo(function(){return a(y==="rtl"?-(R==null?void 0:R.right):R==null?void 0:R.left)},[y,R]),ae=i.useMemo(function(){return a(y==="rtl"?-(g==null?void 0:g.right):g==null?void 0:g.left)},[y,g]),re=function(){return{transform:"translateX(var(--thumb-start-left))",width:"var(--thumb-start-width)"}},ee=function(){return{transform:"translateX(var(--thumb-active-left))",width:"var(--thumb-active-width)"}},ue=function(){W(null),X(null),F()};return!R||!g?null:i.createElement(w.ZP,{visible:!0,motionName:h,motionAppear:!0,onAppearStart:re,onAppearActive:ee,onVisibleChanged:ue},function(T,P){var M=T.className,d=T.style,Z=(0,A.Z)((0,A.Z)({},d),{},{"--thumb-start-left":J,"--thumb-start-width":a(R==null?void 0:R.width),"--thumb-active-left":ae,"--thumb-active-width":a(g==null?void 0:g.width)}),K={ref:(0,C.sQ)($,P),style:Z,className:S()("".concat(t,"-thumb"),M)};return i.createElement("div",K)})}var e=["prefixCls","direction","options","disabled","defaultValue","value","onChange","className","motionName"];function r(u){if(typeof u.title<"u")return u.title;if((0,n.Z)(u.label)!=="object"){var t;return(t=u.label)===null||t===void 0?void 0:t.toString()}}function s(u){return u.map(function(t){if((0,n.Z)(t)==="object"&&t!==null){var b=r(t);return(0,A.Z)((0,A.Z)({},t),{},{title:b})}return{label:t==null?void 0:t.toString(),title:t==null?void 0:t.toString(),value:t}})}var o=function(t){var b=t.prefixCls,I=t.className,p=t.disabled,h=t.checked,U=t.label,F=t.title,y=t.value,$=t.onChange,B=function(V){p||$(V,y)};return i.createElement("label",{className:S()(I,(0,l.Z)({},"".concat(b,"-item-disabled"),p))},i.createElement("input",{className:"".concat(b,"-item-input"),type:"radio",disabled:p,checked:h,onChange:B}),i.createElement("div",{className:"".concat(b,"-item-label"),title:F,role:"option","aria-selected":h},U))},_=i.forwardRef(function(u,t){var b,I,p=u.prefixCls,h=p===void 0?"rc-segmented":p,U=u.direction,F=u.options,y=F===void 0?[]:F,$=u.disabled,B=u.defaultValue,z=u.value,V=u.onChange,Q=u.className,j=Q===void 0?"":Q,Y=u.motionName,q=Y===void 0?"thumb-motion":Y,R=(0,f.Z)(u,e),W=i.useRef(null),ne=i.useMemo(function(){return(0,C.sQ)(W,t)},[W,t]),H=i.useMemo(function(){return s(y)},[y]),g=(0,O.Z)((b=H[0])===null||b===void 0?void 0:b.value,{value:z,defaultValue:B}),X=(0,N.Z)(g,2),J=X[0],ae=X[1],re=i.useState(!1),ee=(0,N.Z)(re,2),ue=ee[0],T=ee[1],P=function(Z,K){$||(ae(K),V==null||V(K))},M=(0,G.Z)(R,["children"]);return i.createElement("div",(0,x.Z)({role:"listbox","aria-label":"segmented control"},M,{className:S()(h,(I={},(0,l.Z)(I,"".concat(h,"-rtl"),U==="rtl"),(0,l.Z)(I,"".concat(h,"-disabled"),$),I),j),ref:ne}),i.createElement("div",{className:"".concat(h,"-group")},i.createElement(D,{prefixCls:h,value:J,containerRef:W,motionName:"".concat(h,"-").concat(q),direction:U,getValueIndex:function(Z){return H.findIndex(function(K){return K.value===Z})},onMotionStart:function(){T(!0)},onMotionEnd:function(){T(!1)}}),H.map(function(d){return i.createElement(o,(0,x.Z)({},d,{key:d.value,prefixCls:h,className:S()(d.className,"".concat(h,"-item"),(0,l.Z)({},"".concat(h,"-item-selected"),d.value===J&&!ue)),checked:d.value===J,onChange:P,disabled:!!$||!!d.disabled}))})))}),k=_,le=k},54510:function(te,E,c){var x=this&&this.__importDefault||function(n){return n&&n.__esModule?n:{default:n}};Object.defineProperty(E,"__esModule",{value:!0}),E.staged=void 0;const N=x(c(67294));function f(n){return typeof n=="function"?N.default.createElement(l,{stage:n}):n}function l(n){const v=n.stage();return f(v)}function A(n){return function(S,O){const G=n(S,O);return f(G)}}E.staged=A},26059:function(te,E,c){c.d(E,{ZP:function(){return l}});var x;(function(e){e[e.HIGH_SURROGATE_START=55296]="HIGH_SURROGATE_START",e[e.HIGH_SURROGATE_END=56319]="HIGH_SURROGATE_END",e[e.LOW_SURROGATE_START=56320]="LOW_SURROGATE_START",e[e.REGIONAL_INDICATOR_START=127462]="REGIONAL_INDICATOR_START",e[e.REGIONAL_INDICATOR_END=127487]="REGIONAL_INDICATOR_END",e[e.FITZPATRICK_MODIFIER_START=127995]="FITZPATRICK_MODIFIER_START",e[e.FITZPATRICK_MODIFIER_END=127999]="FITZPATRICK_MODIFIER_END",e[e.VARIATION_MODIFIER_START=65024]="VARIATION_MODIFIER_START",e[e.VARIATION_MODIFIER_END=65039]="VARIATION_MODIFIER_END",e[e.DIACRITICAL_MARKS_START=8400]="DIACRITICAL_MARKS_START",e[e.DIACRITICAL_MARKS_END=8447]="DIACRITICAL_MARKS_END",e[e.SUBDIVISION_INDICATOR_START=127988]="SUBDIVISION_INDICATOR_START",e[e.TAGS_START=917504]="TAGS_START",e[e.TAGS_END=917631]="TAGS_END",e[e.ZWJ=8205]="ZWJ"})(x||(x={}));const N=Object.freeze([776,2359,2367,2984,3007,3021,3633,3635,3648,3657,4352,4449,4520]);var f;function l(e){if(typeof e!="string")throw new TypeError("string cannot be undefined or null");const r=[];let s=0,o=0;for(;s<e.length;)o+=A(s+o,e),w(e[s+o])&&o++,G(e[s+o])&&o++,C(e[s+o])&&o++,L(e[s+o])?o++:(r.push(e.substring(s,s+o)),s+=o,o=0);return r}function A(e,r){const s=r[e];if(!n(s)||e===r.length-1)return 1;const o=s+r[e+1];let _=r.substring(e+2,e+5);return v(o)&&v(_)?4:S(o)&&i(_)?r.slice(e).indexOf(String.fromCodePoint(917631))+2:O(_)?4:2}function n(e){return e&&a(e[0].charCodeAt(0),55296,56319)}function v(e){return a(m(e),127462,127487)}function S(e){return a(m(e),127988,127988)}function O(e){return a(m(e),127995,127999)}function G(e){return typeof e=="string"&&a(e.charCodeAt(0),65024,65039)}function C(e){return typeof e=="string"&&a(e.charCodeAt(0),8400,8447)}function i(e){const r=e.codePointAt(0);return typeof e=="string"&&typeof r=="number"&&a(r,917504,917631)}function w(e){return typeof e=="string"&&N.includes(e.charCodeAt(0))}function L(e){return typeof e=="string"&&e.charCodeAt(0)===8205}function m(e){return(e.charCodeAt(0)-55296<<10)+(e.charCodeAt(1)-56320)+65536}function a(e,r,s){return e>=r&&e<=s}function D(e,r,s){const o=l(e);if(r===void 0)return e;if(r>=o.length)return"";const _=o.length-r;let k=r+(s===void 0?_:s);return k>r+_&&(k=void 0),o.slice(r,k).join("")}(function(e){e[e.unit_1=1]="unit_1",e[e.unit_2=2]="unit_2",e[e.unit_4=4]="unit_4"})(f||(f={}))}}]);
@@ -1,23 +0,0 @@
1
- "use strict";(self.webpackChunknocobase=self.webpackChunknocobase||[]).push([[7522],{37522:function(t,e,n){n.r(e),e.default={contexts:["*"],prefix:"sn-link-set",label:"Set field value",content:`
2
- // Update another field in the same form/block
3
- const targetFieldUid = 'FIELD_UID_OR_NAME';
4
- const nextValue = ctx.record?.status ?? ctx.t('Updated value');
5
-
6
- const items = ctx.model?.subModels?.grid?.subModels?.items;
7
- const candidates: any[] = Array.isArray(items)
8
- ? items
9
- : Array.from(items?.values?.() || items || []);
10
- const fieldModel =
11
- candidates.find((item) => item?.uid === targetFieldUid) ||
12
- candidates.find((item) => item?.props?.name === targetFieldUid);
13
-
14
- if (!fieldModel) {
15
- ctx.message?.warning?.(ctx.t('Field {{name}} not found', { name: targetFieldUid }));
16
- return;
17
- }
18
-
19
- fieldModel.setProps({ value: nextValue });
20
- ctx.message?.success?.(
21
- ctx.t('Updated field {{name}}', { name: fieldModel?.props?.label || targetFieldUid }),
22
- );
23
- `}}}]);
@@ -1,10 +0,0 @@
1
- "use strict";(self.webpackChunknocobase=self.webpackChunknocobase||[]).push([[7596],{67596:function(o,t,n){n.r(t),t.default={contexts:["JSBlockRunJSContext"],prefix:"sn-jsx-mount",label:"JSX mount",content:`
2
- // Render JSX (editor does not auto-transform)
3
- const { ReactDOM, antd } = ctx;
4
- const { Button } = antd;
5
-
6
- if (ctx.__reactRoot?.unmount) { try { ctx.__reactRoot.unmount(); } catch(_) {} ctx.__reactRoot = undefined; }
7
- const root = ReactDOM.createRoot(ctx.element);
8
- root.render(<Button type="primary" onClick={() => ctx.message.success(ctx.t('Clicked!'))}>{ctx.t('Button')}</Button>);
9
- ctx.__reactRoot = root;
10
- `}}}]);
@@ -1,4 +0,0 @@
1
- "use strict";(self.webpackChunknocobase=self.webpackChunknocobase||[]).push([[7688],{57688:function(e,n,t){t.r(n),n.default={contexts:["JSRecordActionRunJSContext","JSCollectionActionRunJSContext"],prefix:"sn-act-run",label:"Run action",content:`
2
- await ctx.runAction('someAction', { foo: 'bar' });
3
- ctx.message.success(ctx.t('Action executed'));
4
- `}}}]);
@@ -1,10 +0,0 @@
1
- "use strict";(self.webpackChunknocobase=self.webpackChunknocobase||[]).push([[8106],{68106:function(e,t,n){n.r(t),t.default={contexts:["JSBlockRunJSContext"],prefix:"sn-jsb-button",label:"Render button handler",content:`
2
- const { React, ReactDOM, antd } = ctx;
3
- const { Button } = antd;
4
-
5
- if (ctx.__reactRoot?.unmount) { try { ctx.__reactRoot.unmount(); } catch(_) {} ctx.__reactRoot = undefined; }
6
- const node = React.createElement(Button, { type: 'primary', onClick: () => ctx.message.success(ctx.t('Clicked!')) }, ctx.t('Button'));
7
- const root = ReactDOM.createRoot(ctx.element);
8
- root.render(node);
9
- ctx.__reactRoot = root;
10
- `}}}]);
@@ -1,8 +0,0 @@
1
- "use strict";(self.webpackChunknocobase=self.webpackChunknocobase||[]).push([[8541],{28541:function(t,e,n){n.r(e),e.default={contexts:["JSItemRunJSContext"],prefix:"sn-jsitem-basic",label:"Render form item",content:`
2
- ctx.element.innerHTML = \`
3
- <div style="font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; line-height: 1.6;">
4
- <h3 style="color: #1890ff; margin: 0 0 12px 0; font-size: 18px; font-weight: 600;">\${ctx.t('JS Item')}</h3>
5
- <div style="color:#555">\${ctx.t('This area is rendered by your JavaScript code.')}</div>
6
- </div>
7
- \`;
8
- `}}}]);
@@ -1,6 +0,0 @@
1
- "use strict";(self.webpackChunknocobase=self.webpackChunknocobase||[]).push([[9017],{79017:function(i,n,t){t.r(n),n.default={contexts:["*"],prefix:"sn-notify",label:"Open notification",description:"Open an AntD notification with custom content",content:`
2
- ctx.notification.open({
3
- message: ctx.t('Notification title'),
4
- description: ctx.t('This is a notification description'),
5
- });
6
- `}}}]);
@@ -1,5 +0,0 @@
1
- "use strict";(self.webpackChunknocobase=self.webpackChunknocobase||[]).push([[937],{60937:function(s,e,t){t.r(e),e.default={contexts:["*"],prefix:"sn-api-get",label:"GET request template",description:"Basic template to send a GET request via ctx.api",content:`
2
- const res = await ctx.api.request({ url: '/your/api', method: 'get', params: { page: 1 } });
3
- ctx.message.success(ctx.t('GET request completed'));
4
- console.log(ctx.t('GET result:'), res);
5
- `}}}]);