@nocobase/app 2.0.0-alpha.4 → 2.0.0-alpha.40
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/client/113.736e29a0.async.js +7 -0
- package/dist/client/1145.0351040a.async.js +3 -0
- package/dist/client/1161.0b3b5766.async.js +40 -0
- package/dist/client/1442.be509f94.async.js +5 -0
- package/dist/client/1595.6a6087c3.async.js +44 -0
- package/dist/client/1758.eeeacf43.async.js +5 -0
- package/dist/client/1883.6ee256ab.async.js +17 -0
- package/dist/client/1905.ff0793ff.async.js +12 -0
- package/dist/client/2042.feb4b9ac.async.js +10 -0
- package/dist/client/2097.bb2e7097.async.js +14 -0
- package/dist/client/{2190.90c718a9.async.js → 2190.4f5395e5.async.js} +1 -1
- package/dist/client/2380.900b7a22.async.js +15 -0
- package/dist/client/2612.0865e67e.async.js +19 -0
- package/dist/client/2775.455c3402.async.js +47 -0
- package/dist/client/2936.902710e4.async.js +28 -0
- package/dist/client/3357.be95167c.async.js +28 -0
- package/dist/client/341.fba65e23.async.js +28 -0
- package/dist/client/3451.a9466e73.async.js +24 -0
- package/dist/client/4327.68c0f17b.async.js +16 -0
- package/dist/client/4351.efe05af2.async.js +15 -0
- package/dist/client/4356.feef0eca.async.js +18 -0
- package/dist/client/4666.fb83d11a.async.js +9 -0
- package/dist/client/4727.0f6df8fb.async.js +1 -0
- package/dist/client/4750.b552d2df.async.js +31 -0
- package/dist/client/4926.58238954.async.js +17 -0
- package/dist/client/5013.b14730ba.async.js +3 -0
- package/dist/client/5501.22d50b3a.async.js +23 -0
- package/dist/client/5505.a71c2922.async.js +2 -0
- package/dist/client/5662.8c643e63.async.js +26 -0
- package/dist/client/5882.abae55ef.async.js +50 -0
- package/dist/client/5950.179a885e.async.js +4 -0
- package/dist/client/6021.cdefa0d3.async.js +22 -0
- package/dist/client/645.c19a1f59.async.js +55 -0
- package/dist/client/6474.49632e37.async.js +21 -0
- package/dist/client/6534.6ea6468b.async.js +33 -0
- package/dist/client/6747.de538558.async.js +22 -0
- package/dist/client/689.4de33d65.async.js +3 -0
- package/dist/client/6920.497d7e80.async.js +59 -0
- package/dist/client/6939.d7d780b7.async.js +17 -0
- package/dist/client/6996.ae27c9d6.async.js +9 -0
- package/dist/client/703.f2104ec4.async.js +17 -0
- package/dist/client/7087.5646e199.async.js +6 -0
- package/dist/client/7483.546ddcb6.async.js +23 -0
- package/dist/client/7534.0d69e071.async.js +34 -0
- package/dist/client/8183.4c6f7e21.async.js +12 -0
- package/dist/client/8408.c0ef773c.async.js +84 -0
- package/dist/client/8805.819c4f44.async.js +20 -0
- package/dist/client/9017.4ae5c322.async.js +6 -0
- package/dist/client/9042.3d21f631.async.js +45 -0
- package/dist/client/908.0e8c8a54.async.js +14 -0
- package/dist/client/9317.fe6ffa9a.async.js +13 -0
- package/dist/client/935.97d45ffa.async.js +27 -0
- package/dist/client/95.24aa76c4.async.js +6 -0
- package/dist/client/9547.a442df93.async.js +25 -0
- package/dist/client/9801.34b13a74.async.js +9 -0
- package/dist/client/9844.6f484975.async.js +37 -0
- package/dist/client/index.html +1 -1
- package/dist/client/index.html.tpl +1 -1
- package/dist/client/npm._at_jridgewell.72fd4dd4.async.js +1 -0
- package/dist/client/{npm._at_umijs.47085d01.async.js → npm._at_umijs.f64c1387.async.js} +1 -1
- package/dist/client/npm.acorn.59eb4103.async.js +11 -0
- package/dist/client/npm.antd-mobile.55661292.async.js +2 -0
- package/dist/client/npm.babel-runtime.eed49798.async.js +1 -0
- package/dist/client/{npm.highlight.js.c1f693ec.async.js → npm.highlight.js.5db864c8.async.js} +2 -2
- package/dist/client/{npm.htmlparser2.a2f8d64d.async.js → npm.htmlparser2.ee1fb042.async.js} +1 -1
- package/dist/client/npm.liquidjs.7be2e0df.async.js +13 -0
- package/dist/client/npm.sucrase.1cb664e8.async.js +135 -0
- package/dist/client/{npm.unknown.1838c8f4.chunk.css → npm.unknown.d9b587d9.chunk.css} +26 -1
- package/dist/client/npm.vditor.eb5da290.async.js +233 -0
- package/dist/client/p__index.88104805.async.js +2411 -0
- package/dist/client/{umi.202472df.js → umi.29f402d6.js} +17 -17
- package/lib/config/telemetry.js +1 -0
- package/package.json +6 -6
- package/src/config/telemetry.ts +1 -0
- package/dist/client/1145.4029b0be.async.js +0 -3
- package/dist/client/1617.dd671a87.async.js +0 -6
- package/dist/client/1833.82373d30.async.js +0 -6
- package/dist/client/2134.1d86e440.async.js +0 -5
- package/dist/client/2498.be8b1194.async.js +0 -7
- package/dist/client/260.5b02a0a5.async.js +0 -4
- package/dist/client/2953.2e77d77c.async.js +0 -24
- package/dist/client/3170.6147bd19.async.js +0 -24
- package/dist/client/3255.e6303833.async.js +0 -10
- package/dist/client/3520.81fd6362.async.js +0 -24
- package/dist/client/3522.674f2264.async.js +0 -4
- package/dist/client/4088.0568ef31.async.js +0 -5
- package/dist/client/4205.c3eac46d.async.js +0 -9
- package/dist/client/4644.ae01f8a6.async.js +0 -4
- package/dist/client/4666.d20ff352.async.js +0 -8
- package/dist/client/4840.477401f9.async.js +0 -8
- package/dist/client/5068.72e9d750.async.js +0 -5
- package/dist/client/5087.468f5500.async.js +0 -6
- package/dist/client/5950.b83f8586.async.js +0 -4
- package/dist/client/6416.361c93ff.async.js +0 -4
- package/dist/client/6472.ac05f778.async.js +0 -7
- package/dist/client/6779.47fc1971.async.js +0 -10
- package/dist/client/6816.1ff200ac.async.js +0 -5
- package/dist/client/6996.836a3f7f.async.js +0 -8
- package/dist/client/7463.70ca58ce.async.js +0 -20
- package/dist/client/7482.3924bcd9.async.js +0 -1
- package/dist/client/7522.1f91be5c.async.js +0 -23
- package/dist/client/7596.232a7185.async.js +0 -10
- package/dist/client/7688.85d6d7bb.async.js +0 -4
- package/dist/client/8106.829fd6b5.async.js +0 -10
- package/dist/client/8541.e3110aaa.async.js +0 -8
- package/dist/client/9017.28eacc5a.async.js +0 -6
- package/dist/client/937.a55819ab.async.js +0 -5
- package/dist/client/9462.a7773548.async.js +0 -35
- package/dist/client/9489.25ca39a9.async.js +0 -7
- package/dist/client/9663.c04b2ad1.async.js +0 -5
- package/dist/client/9729.0d7a5c47.async.js +0 -8
- package/dist/client/9848.18f8d3db.async.js +0 -4
- package/dist/client/npm._at_babel.94b2dd75.async.js +0 -3
- package/dist/client/npm.acorn.1f389fab.async.js +0 -6
- package/dist/client/npm.antd-mobile.1a8a8320.async.js +0 -2
- package/dist/client/npm.async-validator.32d9020f.async.js +0 -12
- package/dist/client/p__index.390271c5.async.js +0 -2316
package/lib/config/telemetry.js
CHANGED
|
@@ -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.
|
|
3
|
+
"version": "2.0.0-alpha.40",
|
|
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.
|
|
10
|
-
"@nocobase/preset-nocobase": "2.0.0-alpha.
|
|
11
|
-
"@nocobase/server": "2.0.0-alpha.
|
|
9
|
+
"@nocobase/database": "2.0.0-alpha.40",
|
|
10
|
+
"@nocobase/preset-nocobase": "2.0.0-alpha.40",
|
|
11
|
+
"@nocobase/server": "2.0.0-alpha.40"
|
|
12
12
|
},
|
|
13
13
|
"devDependencies": {
|
|
14
|
-
"@nocobase/client": "2.0.0-alpha.
|
|
14
|
+
"@nocobase/client": "2.0.0-alpha.40"
|
|
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": "
|
|
21
|
+
"gitHead": "dfb9fd33f43e91e676ae7b1f1a595bc38b7c20d2"
|
|
22
22
|
}
|
package/src/config/telemetry.ts
CHANGED
|
@@ -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
|
-
`}}}]);
|