@apia/execution-react 4.0.19 → 4.0.24
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/index.d.ts +1 -10
- package/dist/index.js +9 -36
- package/dist/index.js.map +1 -1
- package/package.json +7 -6
package/dist/index.d.ts
CHANGED
|
@@ -3,7 +3,7 @@ import { FC } from 'react';
|
|
|
3
3
|
import { CustomComponent } from '@apia/execution';
|
|
4
4
|
|
|
5
5
|
declare abstract class AbstractCustomComponent {
|
|
6
|
-
|
|
6
|
+
protected handler: CustomComponent;
|
|
7
7
|
private intermediateStrings;
|
|
8
8
|
private intermediatesIndexed;
|
|
9
9
|
constructor();
|
|
@@ -135,15 +135,6 @@ declare abstract class AbstractCustomComponent {
|
|
|
135
135
|
* Custom component methods
|
|
136
136
|
*/
|
|
137
137
|
protected get isLoading(): Readonly<Readonly<boolean>>;
|
|
138
|
-
protected getAdditional<T>(): T;
|
|
139
|
-
protected fireEvent(evtName: string): void;
|
|
140
|
-
protected getProperty(prpName: string): any;
|
|
141
|
-
protected getStringValue(attName: string): string;
|
|
142
|
-
protected getValue(attName: string, index?: number): any;
|
|
143
|
-
protected setValue(attName: string, value: any, index: number): void;
|
|
144
|
-
protected setStringValue(attName: string, value: string): void;
|
|
145
|
-
protected setProperty(prpName: string, value: any): void;
|
|
146
|
-
protected sendMessage(payload: any): void;
|
|
147
138
|
}
|
|
148
139
|
|
|
149
140
|
type CusCmpConstructor = {
|
package/dist/index.js
CHANGED
|
@@ -61,7 +61,7 @@ var __publicField = (obj, key, value) => {
|
|
|
61
61
|
};
|
|
62
62
|
class AbstractCustomComponent {
|
|
63
63
|
constructor() {
|
|
64
|
-
__publicField(this, "
|
|
64
|
+
__publicField(this, "handler", {});
|
|
65
65
|
__publicField(this, "intermediateStrings", {});
|
|
66
66
|
__publicField(this, "intermediatesIndexed", {});
|
|
67
67
|
__publicField(this, "Renderer", () => {
|
|
@@ -72,8 +72,8 @@ class AbstractCustomComponent {
|
|
|
72
72
|
{
|
|
73
73
|
ref: (el) => {
|
|
74
74
|
if (el) {
|
|
75
|
-
this.
|
|
76
|
-
this.
|
|
75
|
+
this.handler.form.markFieldAsRendered(
|
|
76
|
+
this.handler.definition.id
|
|
77
77
|
);
|
|
78
78
|
}
|
|
79
79
|
}
|
|
@@ -87,7 +87,7 @@ class AbstractCustomComponent {
|
|
|
87
87
|
});
|
|
88
88
|
}
|
|
89
89
|
setCustomComponent(cc) {
|
|
90
|
-
this.
|
|
90
|
+
this.handler = cc;
|
|
91
91
|
this.init();
|
|
92
92
|
}
|
|
93
93
|
/**
|
|
@@ -110,7 +110,7 @@ class AbstractCustomComponent {
|
|
|
110
110
|
/>
|
|
111
111
|
*/
|
|
112
112
|
getIntermediateString(attName) {
|
|
113
|
-
return this.intermediateStrings[attName] ?? this.
|
|
113
|
+
return this.intermediateStrings[attName] ?? this.handler?.getStringValue(attName);
|
|
114
114
|
}
|
|
115
115
|
/**
|
|
116
116
|
* The intermediate values are used to hold attribute values while they are being edited.
|
|
@@ -132,7 +132,7 @@ class AbstractCustomComponent {
|
|
|
132
132
|
/>
|
|
133
133
|
*/
|
|
134
134
|
getIntermediate(attName, index) {
|
|
135
|
-
return this.intermediatesIndexed[attName]?.[index] ?? this.
|
|
135
|
+
return this.intermediatesIndexed[attName]?.[index] ?? this.handler?.getValue(attName, index);
|
|
136
136
|
}
|
|
137
137
|
/**
|
|
138
138
|
* The intermediate values are used to hold attribute values while they are being edited.
|
|
@@ -203,7 +203,7 @@ class AbstractCustomComponent {
|
|
|
203
203
|
/>
|
|
204
204
|
*/
|
|
205
205
|
async confirmIntermediateString(attName, value) {
|
|
206
|
-
await this.
|
|
206
|
+
await this.handler.setStringValue(attName, value);
|
|
207
207
|
delete this.intermediateStrings[attName];
|
|
208
208
|
}
|
|
209
209
|
/**
|
|
@@ -226,41 +226,14 @@ class AbstractCustomComponent {
|
|
|
226
226
|
/>
|
|
227
227
|
*/
|
|
228
228
|
async confirmValue(attName, value, index) {
|
|
229
|
-
await this.
|
|
229
|
+
await this.handler?.setValue(attName, value, index);
|
|
230
230
|
delete this.intermediatesIndexed[attName];
|
|
231
231
|
}
|
|
232
232
|
/**
|
|
233
233
|
* Custom component methods
|
|
234
234
|
*/
|
|
235
235
|
get isLoading() {
|
|
236
|
-
return this.
|
|
237
|
-
}
|
|
238
|
-
getAdditional() {
|
|
239
|
-
return this.customComponent.getAdditional();
|
|
240
|
-
}
|
|
241
|
-
fireEvent(evtName) {
|
|
242
|
-
this.customComponent.fireEvent(evtName);
|
|
243
|
-
}
|
|
244
|
-
getProperty(prpName) {
|
|
245
|
-
return this.customComponent.getProperty(prpName);
|
|
246
|
-
}
|
|
247
|
-
getStringValue(attName) {
|
|
248
|
-
return this.customComponent.getStringValue(attName);
|
|
249
|
-
}
|
|
250
|
-
getValue(attName, index = 0) {
|
|
251
|
-
return this.customComponent.getValue(attName, index) || 0;
|
|
252
|
-
}
|
|
253
|
-
setValue(attName, value, index) {
|
|
254
|
-
this.customComponent.setValue(attName, value, index);
|
|
255
|
-
}
|
|
256
|
-
setStringValue(attName, value) {
|
|
257
|
-
this.customComponent.setStringValue(attName, value);
|
|
258
|
-
}
|
|
259
|
-
setProperty(prpName, value) {
|
|
260
|
-
this.customComponent.setProperty(prpName, value);
|
|
261
|
-
}
|
|
262
|
-
sendMessage(payload) {
|
|
263
|
-
this.customComponent.sendMessage(payload);
|
|
236
|
+
return this.handler.state.isLoading;
|
|
264
237
|
}
|
|
265
238
|
}
|
|
266
239
|
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/plugins/PluginLoader.ts","../src/plugins/Plugin.ts","../src/customComponents/AbstractCustomComponent.tsx"],"sourcesContent":["import { Mutex, StatefulEmitter } from '@apia/util';\r\nimport { AbstractCustomComponent } from '../customComponents/AbstractCustomComponent';\r\n\r\nfunction loadComponent(cmpName: string) {\r\n const newScript = document.createElement('script');\r\n newScript.src = `${(window as any).CONTEXT}/react/customComponents/${cmpName}/index.js`;\r\n newScript.defer = true;\r\n\r\n document.head.append(newScript);\r\n}\r\n\r\nconst m = new Mutex();\r\n\r\nexport type CusCmpConstructor = { new (): AbstractCustomComponent };\r\n\r\nexport class PluginLoader {\r\n private requested = new Set<string>();\r\n private emitter = new StatefulEmitter<{\r\n [key: string]: CusCmpConstructor;\r\n }>();\r\n\r\n public static async getInstance() {\r\n await m.runExclusive(async () => {\r\n if (!(window as any).loader) {\r\n (window as any).loader = new PluginLoader();\r\n }\r\n });\r\n\r\n return (window as any).loader as PluginLoader;\r\n }\r\n\r\n public dispatchCustomComponent(name: string, component: CusCmpConstructor) {\r\n this.emitter.emit(name, component);\r\n }\r\n\r\n public getCustomComponent(name: string) {\r\n m.runExclusive(async () => {\r\n if (!this.requested.has(name)) {\r\n this.requested.add(name);\r\n loadComponent(name);\r\n }\r\n });\r\n\r\n return () =>\r\n new Promise<CusCmpConstructor>((resolve) => {\r\n this.emitter.once(name, (component) => {\r\n resolve(component);\r\n });\r\n });\r\n }\r\n}\r\n","import { CusCmpConstructor, PluginLoader } from './PluginLoader';\r\n\r\nexport class Plugin {\r\n constructor(name: string, fc: CusCmpConstructor) {\r\n PluginLoader.getInstance().then((c) => c.dispatchCustomComponent(name, fc));\r\n }\r\n}\r\n","import { CustomComponent } from '@apia/execution';\r\nimport { Box } from '@apia/theme';\r\nimport { makeObservable, observable } from 'mobx';\r\nimport { FC } from 'react';\r\n\r\nexport abstract class AbstractCustomComponent {\r\n private customComponent: CustomComponent | null = null;\r\n private intermediateStrings: Record<string, any> = {};\r\n private intermediatesIndexed: Record<string, Record<number, any>> = {};\r\n\r\n constructor() {\r\n makeObservable<\r\n AbstractCustomComponent,\r\n 'intermediateStrings' | 'intermediatesIndexed'\r\n >(this, {\r\n intermediatesIndexed: observable,\r\n intermediateStrings: observable,\r\n });\r\n }\r\n\r\n public setCustomComponent(cc: CustomComponent) {\r\n this.customComponent = cc;\r\n this.init();\r\n }\r\n\r\n /**\r\n * The intermediate values are used to hold attribute values while they are being edited.\r\n *\r\n * The setIntermediate... methods hold the values in local variables until the confirmIntermediate...\r\n * methods are called.\r\n * \r\n * @example\r\n * \r\n * <Input\r\n value={this.getIntermediateString('name')}\r\n disabled={cc.state.isLoading}\r\n onChange={(ev) => {\r\n this.setIntermediateStringValue('name', ev.target.value);\r\n }}\r\n onBlur={(ev) => {\r\n this.confirmIntermediateString('name', ev.target.value);\r\n }}\r\n />\r\n */\r\n protected getIntermediateString(attName: string) {\r\n return (\r\n this.intermediateStrings[attName] ??\r\n this.customComponent?.getStringValue(attName)\r\n );\r\n }\r\n\r\n /**\r\n * The intermediate values are used to hold attribute values while they are being edited.\r\n *\r\n * The setIntermediate... methods hold the values in local variables until the confirmIntermediate...\r\n * methods are called.\r\n * \r\n * @example\r\n * \r\n * <Input\r\n value={this.getIntermediateString('name')}\r\n disabled={cc.state.isLoading}\r\n onChange={(ev) => {\r\n this.setIntermediateStringValue('name', ev.target.value);\r\n }}\r\n onBlur={(ev) => {\r\n this.confirmIntermediateString('name', ev.target.value);\r\n }}\r\n />\r\n */\r\n protected getIntermediate(attName: string, index: number) {\r\n return (\r\n this.intermediatesIndexed[attName]?.[index] ??\r\n this.customComponent?.getValue(attName, index)\r\n );\r\n }\r\n\r\n /**\r\n * The intermediate values are used to hold attribute values while they are being edited.\r\n *\r\n * The setIntermediate... methods hold the values in local variables until the confirmIntermediate...\r\n * methods are called.\r\n * \r\n * @example\r\n * \r\n * <Input\r\n value={this.getIntermediateString('name')}\r\n disabled={cc.state.isLoading}\r\n onChange={(ev) => {\r\n this.setIntermediateStringValue('name', ev.target.value);\r\n }}\r\n onBlur={(ev) => {\r\n this.confirmIntermediateString('name', ev.target.value);\r\n }}\r\n />\r\n */\r\n protected setIntermediateStringValue(attName: string, value: string) {\r\n delete this.intermediatesIndexed[attName];\r\n this.intermediateStrings[attName] = value;\r\n }\r\n\r\n /**\r\n * The intermediate values are used to hold attribute values while they are being edited.\r\n *\r\n * The setIntermediate... methods hold the values in local variables until the confirmIntermediate...\r\n * methods are called.\r\n * \r\n * @example\r\n * \r\n * <Input\r\n value={this.getIntermediateString('name')}\r\n disabled={cc.state.isLoading}\r\n onChange={(ev) => {\r\n this.setIntermediateStringValue('name', ev.target.value);\r\n }}\r\n onBlur={(ev) => {\r\n this.confirmIntermediateString('name', ev.target.value);\r\n }}\r\n />\r\n */\r\n protected setIntermediateValue(attName: string, value: any, index: number) {\r\n delete this.intermediateStrings[attName];\r\n if (!this.intermediatesIndexed[attName]) {\r\n this.intermediatesIndexed[attName] = {};\r\n }\r\n this.intermediatesIndexed[attName][index] = value;\r\n }\r\n\r\n /**\r\n * The intermediate values are used to hold attribute values while they are being edited.\r\n *\r\n * The setIntermediate... methods hold the values in local variables until the confirmIntermediate...\r\n * methods are called.\r\n * \r\n * @example\r\n * \r\n * <Input\r\n value={this.getIntermediateString('name')}\r\n disabled={cc.state.isLoading}\r\n onChange={(ev) => {\r\n this.setIntermediateStringValue('name', ev.target.value);\r\n }}\r\n onBlur={(ev) => {\r\n this.confirmIntermediateString('name', ev.target.value);\r\n }}\r\n />\r\n */\r\n protected async confirmIntermediateString(attName: string, value: string) {\r\n await this.customComponent!.setStringValue(attName, value);\r\n delete this.intermediateStrings[attName];\r\n }\r\n\r\n /**\r\n * The intermediate values are used to hold attribute values while they are being edited.\r\n *\r\n * The setIntermediate... methods hold the values in local variables until the confirmIntermediate...\r\n * methods are called.\r\n * \r\n * @example\r\n * \r\n * <Input\r\n value={this.getIntermediateString('name')}\r\n disabled={cc.state.isLoading}\r\n onChange={(ev) => {\r\n this.setIntermediateStringValue('name', ev.target.value);\r\n }}\r\n onBlur={(ev) => {\r\n this.confirmIntermediateString('name', ev.target.value);\r\n }}\r\n />\r\n */\r\n protected async confirmValue(attName: string, value: any, index: number) {\r\n await this.customComponent?.setValue(attName, value, index);\r\n delete this.intermediatesIndexed[attName];\r\n }\r\n\r\n protected abstract Component: FC;\r\n\r\n protected abstract init(): unknown;\r\n\r\n public Renderer = () => {\r\n return (\r\n <>\r\n <this.Component />\r\n <Box\r\n ref={(el) => {\r\n if (el) {\r\n this.customComponent!.form.markFieldAsRendered(\r\n this.customComponent!.definition.id,\r\n );\r\n }\r\n }}\r\n />\r\n </>\r\n );\r\n };\r\n\r\n /**\r\n * Custom component methods\r\n */\r\n\r\n protected get isLoading() {\r\n return this.customComponent!.state.isLoading;\r\n }\r\n\r\n protected getAdditional<T>() {\r\n return this.customComponent!.getAdditional() as T; // There is a critical error on rollup that breaks the compilation when used DeepReadonly<T>\r\n }\r\n\r\n protected fireEvent(evtName: string) {\r\n this.customComponent!.fireEvent(evtName);\r\n }\r\n\r\n protected getProperty(prpName: string) {\r\n return this.customComponent!.getProperty(prpName);\r\n }\r\n\r\n protected getStringValue(attName: string) {\r\n return this.customComponent!.getStringValue(attName);\r\n }\r\n\r\n protected getValue(attName: string, index: number = 0) {\r\n return this.customComponent!.getValue(attName, index) || 0;\r\n }\r\n\r\n protected setValue(attName: string, value: any, index: number) {\r\n this.customComponent!.setValue(attName, value, index);\r\n }\r\n\r\n protected setStringValue(attName: string, value: string) {\r\n this.customComponent!.setStringValue(attName, value);\r\n }\r\n\r\n protected setProperty(prpName: string, value: any) {\r\n this.customComponent!.setProperty(prpName, value);\r\n }\r\n\r\n protected sendMessage(payload: any) {\r\n this.customComponent!.sendMessage(payload);\r\n }\r\n}\r\n"],"names":["__publicField"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/plugins/PluginLoader.ts","../src/plugins/Plugin.ts","../src/customComponents/AbstractCustomComponent.tsx"],"sourcesContent":["import { Mutex, StatefulEmitter } from '@apia/util';\r\nimport { AbstractCustomComponent } from '../customComponents/AbstractCustomComponent';\r\n\r\nfunction loadComponent(cmpName: string) {\r\n const newScript = document.createElement('script');\r\n newScript.src = `${(window as any).CONTEXT}/react/customComponents/${cmpName}/index.js`;\r\n newScript.defer = true;\r\n\r\n document.head.append(newScript);\r\n}\r\n\r\nconst m = new Mutex();\r\n\r\nexport type CusCmpConstructor = { new (): AbstractCustomComponent };\r\n\r\nexport class PluginLoader {\r\n private requested = new Set<string>();\r\n private emitter = new StatefulEmitter<{\r\n [key: string]: CusCmpConstructor;\r\n }>();\r\n\r\n public static async getInstance() {\r\n await m.runExclusive(async () => {\r\n if (!(window as any).loader) {\r\n (window as any).loader = new PluginLoader();\r\n }\r\n });\r\n\r\n return (window as any).loader as PluginLoader;\r\n }\r\n\r\n public dispatchCustomComponent(name: string, component: CusCmpConstructor) {\r\n this.emitter.emit(name, component);\r\n }\r\n\r\n public getCustomComponent(name: string) {\r\n m.runExclusive(async () => {\r\n if (!this.requested.has(name)) {\r\n this.requested.add(name);\r\n loadComponent(name);\r\n }\r\n });\r\n\r\n return () =>\r\n new Promise<CusCmpConstructor>((resolve) => {\r\n this.emitter.once(name, (component) => {\r\n resolve(component);\r\n });\r\n });\r\n }\r\n}\r\n","import { CusCmpConstructor, PluginLoader } from './PluginLoader';\r\n\r\nexport class Plugin {\r\n constructor(name: string, fc: CusCmpConstructor) {\r\n PluginLoader.getInstance().then((c) => c.dispatchCustomComponent(name, fc));\r\n }\r\n}\r\n","import { CustomComponent } from '@apia/execution';\r\nimport { Box } from '@apia/theme';\r\nimport { makeObservable, observable } from 'mobx';\r\nimport { FC } from 'react';\r\n\r\nexport abstract class AbstractCustomComponent {\r\n protected handler: CustomComponent = {} as any;\r\n private intermediateStrings: Record<string, any> = {};\r\n private intermediatesIndexed: Record<string, Record<number, any>> = {};\r\n\r\n constructor() {\r\n makeObservable<\r\n AbstractCustomComponent,\r\n 'intermediateStrings' | 'intermediatesIndexed'\r\n >(this, {\r\n intermediatesIndexed: observable,\r\n intermediateStrings: observable,\r\n });\r\n }\r\n\r\n public setCustomComponent(cc: CustomComponent) {\r\n this.handler = cc;\r\n this.init();\r\n }\r\n\r\n /**\r\n * The intermediate values are used to hold attribute values while they are being edited.\r\n *\r\n * The setIntermediate... methods hold the values in local variables until the confirmIntermediate...\r\n * methods are called.\r\n * \r\n * @example\r\n * \r\n * <Input\r\n value={this.getIntermediateString('name')}\r\n disabled={cc.state.isLoading}\r\n onChange={(ev) => {\r\n this.setIntermediateStringValue('name', ev.target.value);\r\n }}\r\n onBlur={(ev) => {\r\n this.confirmIntermediateString('name', ev.target.value);\r\n }}\r\n />\r\n */\r\n protected getIntermediateString(attName: string) {\r\n return (\r\n this.intermediateStrings[attName] ?? this.handler?.getStringValue(attName)\r\n );\r\n }\r\n\r\n /**\r\n * The intermediate values are used to hold attribute values while they are being edited.\r\n *\r\n * The setIntermediate... methods hold the values in local variables until the confirmIntermediate...\r\n * methods are called.\r\n * \r\n * @example\r\n * \r\n * <Input\r\n value={this.getIntermediateString('name')}\r\n disabled={cc.state.isLoading}\r\n onChange={(ev) => {\r\n this.setIntermediateStringValue('name', ev.target.value);\r\n }}\r\n onBlur={(ev) => {\r\n this.confirmIntermediateString('name', ev.target.value);\r\n }}\r\n />\r\n */\r\n protected getIntermediate(attName: string, index: number) {\r\n return (\r\n this.intermediatesIndexed[attName]?.[index] ??\r\n this.handler?.getValue(attName, index)\r\n );\r\n }\r\n\r\n /**\r\n * The intermediate values are used to hold attribute values while they are being edited.\r\n *\r\n * The setIntermediate... methods hold the values in local variables until the confirmIntermediate...\r\n * methods are called.\r\n * \r\n * @example\r\n * \r\n * <Input\r\n value={this.getIntermediateString('name')}\r\n disabled={cc.state.isLoading}\r\n onChange={(ev) => {\r\n this.setIntermediateStringValue('name', ev.target.value);\r\n }}\r\n onBlur={(ev) => {\r\n this.confirmIntermediateString('name', ev.target.value);\r\n }}\r\n />\r\n */\r\n protected setIntermediateStringValue(attName: string, value: string) {\r\n delete this.intermediatesIndexed[attName];\r\n this.intermediateStrings[attName] = value;\r\n }\r\n\r\n /**\r\n * The intermediate values are used to hold attribute values while they are being edited.\r\n *\r\n * The setIntermediate... methods hold the values in local variables until the confirmIntermediate...\r\n * methods are called.\r\n * \r\n * @example\r\n * \r\n * <Input\r\n value={this.getIntermediateString('name')}\r\n disabled={cc.state.isLoading}\r\n onChange={(ev) => {\r\n this.setIntermediateStringValue('name', ev.target.value);\r\n }}\r\n onBlur={(ev) => {\r\n this.confirmIntermediateString('name', ev.target.value);\r\n }}\r\n />\r\n */\r\n protected setIntermediateValue(attName: string, value: any, index: number) {\r\n delete this.intermediateStrings[attName];\r\n if (!this.intermediatesIndexed[attName]) {\r\n this.intermediatesIndexed[attName] = {};\r\n }\r\n this.intermediatesIndexed[attName][index] = value;\r\n }\r\n\r\n /**\r\n * The intermediate values are used to hold attribute values while they are being edited.\r\n *\r\n * The setIntermediate... methods hold the values in local variables until the confirmIntermediate...\r\n * methods are called.\r\n * \r\n * @example\r\n * \r\n * <Input\r\n value={this.getIntermediateString('name')}\r\n disabled={cc.state.isLoading}\r\n onChange={(ev) => {\r\n this.setIntermediateStringValue('name', ev.target.value);\r\n }}\r\n onBlur={(ev) => {\r\n this.confirmIntermediateString('name', ev.target.value);\r\n }}\r\n />\r\n */\r\n protected async confirmIntermediateString(attName: string, value: string) {\r\n await this.handler!.setStringValue(attName, value);\r\n delete this.intermediateStrings[attName];\r\n }\r\n\r\n /**\r\n * The intermediate values are used to hold attribute values while they are being edited.\r\n *\r\n * The setIntermediate... methods hold the values in local variables until the confirmIntermediate...\r\n * methods are called.\r\n * \r\n * @example\r\n * \r\n * <Input\r\n value={this.getIntermediateString('name')}\r\n disabled={cc.state.isLoading}\r\n onChange={(ev) => {\r\n this.setIntermediateStringValue('name', ev.target.value);\r\n }}\r\n onBlur={(ev) => {\r\n this.confirmIntermediateString('name', ev.target.value);\r\n }}\r\n />\r\n */\r\n protected async confirmValue(attName: string, value: any, index: number) {\r\n await this.handler?.setValue(attName, value, index);\r\n delete this.intermediatesIndexed[attName];\r\n }\r\n\r\n protected abstract Component: FC;\r\n\r\n protected abstract init(): unknown;\r\n\r\n public Renderer = () => {\r\n return (\r\n <>\r\n <this.Component />\r\n <Box\r\n ref={(el: any) => {\r\n if (el) {\r\n this.handler!.form.markFieldAsRendered(\r\n this.handler!.definition.id,\r\n );\r\n }\r\n }}\r\n />\r\n </>\r\n );\r\n };\r\n\r\n /**\r\n * Custom component methods\r\n */\r\n\r\n protected get isLoading() {\r\n return this.handler!.state.isLoading;\r\n }\r\n}\r\n"],"names":["__publicField"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@apia/execution-react",
|
|
3
|
-
"version": "4.0.
|
|
3
|
+
"version": "4.0.24",
|
|
4
4
|
"sideEffects": false,
|
|
5
5
|
"author": "Alexis Leite <alexisleite@live.com>",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -11,8 +11,8 @@
|
|
|
11
11
|
"libDev": "rollup --config ../../config/rollup.common.mjs --environment MODE:development,ENTRY:index.ts",
|
|
12
12
|
"libBuild": "rollup --config ../../config/rollup.common.mjs --environment MODE:production,ENTRY:index.ts",
|
|
13
13
|
"libWatch": "rollup --watch --config ../../config/rollup.common.mjs --environment MODE:development,ENTRY:index.ts,WATCH:true",
|
|
14
|
-
"
|
|
15
|
-
"
|
|
14
|
+
"libWatchForExecution": "rollup --watch --config ../../config/rollup.common.mjs --environment MODE:development,ENTRY:index.ts,WATCH:true,DEV_SERVER_MODULE:execution",
|
|
15
|
+
"libWatchForDashboards": "rollup --watch --config ../../config/rollup.common.mjs --environment MODE:development,ENTRY:index.ts,WATCH:true,DEV_SERVER_MODULE:dashboards"
|
|
16
16
|
},
|
|
17
17
|
"devDependencies": {
|
|
18
18
|
"@types/react": "^18.2.43",
|
|
@@ -29,9 +29,10 @@
|
|
|
29
29
|
"access": "public",
|
|
30
30
|
"registry": "https://registry.npmjs.org/"
|
|
31
31
|
},
|
|
32
|
-
"gitHead": "
|
|
32
|
+
"gitHead": "0c34ed891f366be27e3fb8d291b6c7c9d90eb201",
|
|
33
33
|
"dependencies": {
|
|
34
|
-
"@apia/execution": "^4.0.
|
|
35
|
-
"@apia/
|
|
34
|
+
"@apia/execution": "^4.0.24",
|
|
35
|
+
"@apia/theme": "^4.0.24",
|
|
36
|
+
"@apia/util": "^4.0.24"
|
|
36
37
|
}
|
|
37
38
|
}
|