@acorex/platform 21.0.0-next.1 → 21.0.0-next.2
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/auth/index.d.ts +238 -92
- package/common/index.d.ts +42 -606
- package/core/index.d.ts +432 -574
- package/fesm2022/acorex-platform-auth.mjs +200 -153
- package/fesm2022/acorex-platform-auth.mjs.map +1 -1
- package/fesm2022/acorex-platform-common.mjs +112 -1009
- package/fesm2022/acorex-platform-common.mjs.map +1 -1
- package/fesm2022/acorex-platform-core.mjs +416 -694
- package/fesm2022/acorex-platform-core.mjs.map +1 -1
- package/fesm2022/acorex-platform-domain.mjs +11 -54
- package/fesm2022/acorex-platform-domain.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-builder.mjs +272 -414
- package/fesm2022/acorex-platform-layout-builder.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-components.mjs +3105 -2064
- package/fesm2022/acorex-platform-layout-components.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-designer.mjs +7 -7
- package/fesm2022/acorex-platform-layout-designer.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-entity.mjs +648 -756
- package/fesm2022/acorex-platform-layout-entity.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-views.mjs +4 -4
- package/fesm2022/acorex-platform-layout-views.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-widget-core.mjs +174 -248
- package/fesm2022/acorex-platform-layout-widget-core.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-widgets-extra-properties-schema-widget-edit.component-fhhZOWul.mjs +50 -0
- package/fesm2022/acorex-platform-layout-widgets-extra-properties-schema-widget-edit.component-fhhZOWul.mjs.map +1 -0
- package/fesm2022/acorex-platform-layout-widgets-extra-properties-schema-widget-view.component-C3Qbs0fz.mjs +42 -0
- package/fesm2022/acorex-platform-layout-widgets-extra-properties-schema-widget-view.component-C3Qbs0fz.mjs.map +1 -0
- package/fesm2022/acorex-platform-layout-widgets-extra-properties-values-widget-edit.component-CngQBUlN.mjs +55 -0
- package/fesm2022/acorex-platform-layout-widgets-extra-properties-values-widget-edit.component-CngQBUlN.mjs.map +1 -0
- package/fesm2022/acorex-platform-layout-widgets-extra-properties-values-widget-view.component-DSNo9e4W.mjs +50 -0
- package/fesm2022/acorex-platform-layout-widgets-extra-properties-values-widget-view.component-DSNo9e4W.mjs.map +1 -0
- package/fesm2022/acorex-platform-layout-widgets-extra-properties-widget-edit.component-CL0CwEHX.mjs +48 -0
- package/fesm2022/acorex-platform-layout-widgets-extra-properties-widget-edit.component-CL0CwEHX.mjs.map +1 -0
- package/fesm2022/acorex-platform-layout-widgets-extra-properties-widget-view.component-B6Fi0xTw.mjs +42 -0
- package/fesm2022/acorex-platform-layout-widgets-extra-properties-widget-view.component-B6Fi0xTw.mjs.map +1 -0
- package/fesm2022/{acorex-platform-layout-widgets-file-list-popup.component-CxrsI6Hn.mjs → acorex-platform-layout-widgets-file-list-popup.component-D0y-9nE5.mjs} +2 -2
- package/fesm2022/acorex-platform-layout-widgets-file-list-popup.component-D0y-9nE5.mjs.map +1 -0
- package/fesm2022/{acorex-platform-layout-widgets-tabular-data-edit-popup.component-Ck7-wpT2.mjs → acorex-platform-layout-widgets-tabular-data-edit-popup.component-m8rHZP8L.mjs} +2 -2
- package/fesm2022/acorex-platform-layout-widgets-tabular-data-edit-popup.component-m8rHZP8L.mjs.map +1 -0
- package/fesm2022/acorex-platform-layout-widgets.mjs +974 -2994
- package/fesm2022/acorex-platform-layout-widgets.mjs.map +1 -1
- package/fesm2022/{acorex-platform-themes-default-entity-master-create-view.component-VIGuU5M4.mjs → acorex-platform-themes-default-entity-master-create-view.component-mARj77Mr.mjs} +5 -26
- package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-mARj77Mr.mjs.map +1 -0
- package/fesm2022/{acorex-platform-themes-default-entity-master-list-view.component-DyDa_hyd.mjs → acorex-platform-themes-default-entity-master-list-view.component-Cym8pq0v.mjs} +5 -4
- package/fesm2022/acorex-platform-themes-default-entity-master-list-view.component-Cym8pq0v.mjs.map +1 -0
- package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-BTA6h7Xd.mjs +101 -0
- package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-BTA6h7Xd.mjs.map +1 -0
- package/fesm2022/{acorex-platform-themes-default-entity-master-single-view.component-eMBby9k4.mjs → acorex-platform-themes-default-entity-master-single-view.component-B_P0a5KW.mjs} +3 -3
- package/fesm2022/acorex-platform-themes-default-entity-master-single-view.component-B_P0a5KW.mjs.map +1 -0
- package/fesm2022/acorex-platform-themes-default.mjs +30 -166
- package/fesm2022/acorex-platform-themes-default.mjs.map +1 -1
- package/fesm2022/acorex-platform-themes-shared.mjs +27 -27
- package/fesm2022/acorex-platform-themes-shared.mjs.map +1 -1
- package/layout/builder/index.d.ts +1 -4
- package/layout/components/index.d.ts +327 -405
- package/layout/designer/index.d.ts +3 -3
- package/layout/entity/index.d.ts +108 -163
- package/layout/widget-core/index.d.ts +49 -39
- package/layout/widgets/index.d.ts +54 -368
- package/package.json +5 -5
- package/themes/default/index.d.ts +2 -15
- package/themes/shared/index.d.ts +10 -10
- package/fesm2022/acorex-platform-layout-widgets-file-list-popup.component-CxrsI6Hn.mjs.map +0 -1
- package/fesm2022/acorex-platform-layout-widgets-tabular-data-edit-popup.component-Ck7-wpT2.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-VIGuU5M4.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-default-entity-master-list-view.component-DyDa_hyd.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-Ua3ZA5hk.mjs +0 -101
- package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-Ua3ZA5hk.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-default-entity-master-single-view.component-eMBby9k4.mjs.map +0 -1
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { computed, signal, Injectable, InjectionToken, inject, ElementRef, effect, untracked, Injector, ChangeDetectorRef, ViewChild, Input, ChangeDetectionStrategy, Component, EventEmitter, Output, input, output, ViewContainerRef, Directive, Optional, Inject, NgModule } from '@angular/core';
|
|
2
|
+
import { computed, signal, Injectable, InjectionToken, inject, ElementRef, effect, untracked, Injector, ChangeDetectorRef, ViewChild, Input, ChangeDetectionStrategy, Component, EventEmitter, Output, input, output, ViewContainerRef, Directive, Optional, Inject, NgModule, createComponent } from '@angular/core';
|
|
3
3
|
import { convertArrayToDataSource, AXDataSource } from '@acorex/cdk/common';
|
|
4
|
-
import { setSmart, AXPDataSourceDefinitionProviderService, extractValue,
|
|
5
|
-
import { cloneDeep, isEqual,
|
|
4
|
+
import { setSmart, AXPDataSourceDefinitionProviderService, extractValue, getSmart, AXPExpressionEvaluatorService } from '@acorex/platform/core';
|
|
5
|
+
import { cloneDeep, isEqual, get, set, merge, isNil, isUndefined, isObjectLike, sum, isEmpty, isString } from 'lodash-es';
|
|
6
6
|
import { Subject, BehaviorSubject, filter } from 'rxjs';
|
|
7
7
|
import { signalStore, withState, withComputed, withMethods, patchState } from '@ngrx/signals';
|
|
8
8
|
import * as i1$1 from '@acorex/components/skeleton';
|
|
@@ -125,10 +125,6 @@ withMethods((store) => ({
|
|
|
125
125
|
getValue(path) {
|
|
126
126
|
return get(store.data(), path);
|
|
127
127
|
},
|
|
128
|
-
// Check if a path exists in the context
|
|
129
|
-
hasValue(path) {
|
|
130
|
-
return has(store.data(), path);
|
|
131
|
-
},
|
|
132
128
|
})));
|
|
133
129
|
|
|
134
130
|
var AXPPageStatus;
|
|
@@ -332,6 +328,8 @@ const AXPWidgetsCatalog = {
|
|
|
332
328
|
advancedGridItem: 'advanced-grid-item-layout',
|
|
333
329
|
grid: 'grid-layout',
|
|
334
330
|
gridItem: 'grid-item-layout',
|
|
331
|
+
// gridRow: 'grid-row-layout',
|
|
332
|
+
widgetSelector: 'widget-selector',
|
|
335
333
|
template: 'template',
|
|
336
334
|
templateDesigner: 'template-designer',
|
|
337
335
|
cronJob: 'cron-job',
|
|
@@ -393,9 +391,8 @@ const AXPWidgetsCatalog = {
|
|
|
393
391
|
editorJs: 'editor-js-editor',
|
|
394
392
|
documentUploader: 'document-uploader',
|
|
395
393
|
signatureList: 'signature-list',
|
|
394
|
+
status: 'status-widget',
|
|
396
395
|
stepWizard: 'step-wizard',
|
|
397
|
-
progressBar: 'progress-bar-editor',
|
|
398
|
-
rate: 'rate-picker-editor'
|
|
399
396
|
};
|
|
400
397
|
|
|
401
398
|
function cloneProperty(property, values) {
|
|
@@ -599,8 +596,7 @@ class AXPValueWidgetComponent extends AXPLayoutBaseWidgetComponent {
|
|
|
599
596
|
this._isValueWidget = this.config.properties?.some((c) => c.name == 'path') ?? false;
|
|
600
597
|
if (this.isValueWidget()) {
|
|
601
598
|
this.detectFullPath();
|
|
602
|
-
|
|
603
|
-
if (!isNil(this.defaultValue) && this.fullPath() && !this.contextService.hasValue(this.fullPath())) {
|
|
599
|
+
if (!isNil(this.defaultValue) && isNil(this.getValue())) {
|
|
604
600
|
this.setValue(this.defaultValue);
|
|
605
601
|
}
|
|
606
602
|
}
|
|
@@ -1216,14 +1212,8 @@ class AXPWidgetColumnRendererComponent extends AXDataTableColumnComponent {
|
|
|
1216
1212
|
super(...arguments);
|
|
1217
1213
|
this.widgetRegistery = inject(AXPWidgetRegistryService);
|
|
1218
1214
|
this.grid = inject(AXBaseDataTable);
|
|
1219
|
-
this.expressionEvaluator = inject(AXPExpressionEvaluatorService);
|
|
1220
1215
|
this.mergedOptions = signal({}, ...(ngDevMode ? [{ debugName: "mergedOptions" }] : []));
|
|
1221
1216
|
this.loadingRow = signal(null, ...(ngDevMode ? [{ debugName: "loadingRow" }] : []));
|
|
1222
|
-
this.rowInjectorsCache = new Map();
|
|
1223
|
-
this.hasExpressions = false;
|
|
1224
|
-
this.pendingEvaluations = new Set();
|
|
1225
|
-
this.changeDetectionScheduled = false;
|
|
1226
|
-
this.MAX_CACHE_SIZE = 1000; // Limit cache size to prevent memory leaks
|
|
1227
1217
|
this.injector = inject(Injector);
|
|
1228
1218
|
this.cdr = inject(ChangeDetectorRef);
|
|
1229
1219
|
}
|
|
@@ -1269,8 +1259,6 @@ class AXPWidgetColumnRendererComponent extends AXDataTableColumnComponent {
|
|
|
1269
1259
|
}, {});
|
|
1270
1260
|
//
|
|
1271
1261
|
this.mergedOptions.set(merge(props, this.node.options) || {});
|
|
1272
|
-
// Check if options contain expressions (performance optimization)
|
|
1273
|
-
this.hasExpressions = this.checkForExpressions(this.mergedOptions());
|
|
1274
1262
|
const tokenValue = {
|
|
1275
1263
|
path: this.node.path,
|
|
1276
1264
|
options: this.mergedOptions(),
|
|
@@ -1288,164 +1276,12 @@ class AXPWidgetColumnRendererComponent extends AXDataTableColumnComponent {
|
|
|
1288
1276
|
this.allowResizing = this.mergedOptions().allowResizing || true;
|
|
1289
1277
|
this.cdr.detectChanges();
|
|
1290
1278
|
}
|
|
1291
|
-
//#region ---- Performance Optimization Methods ----
|
|
1292
|
-
/**
|
|
1293
|
-
* Check if options contain any expressions that need evaluation
|
|
1294
|
-
*/
|
|
1295
|
-
checkForExpressions(obj) {
|
|
1296
|
-
if (typeof obj === 'string') {
|
|
1297
|
-
return this.expressionEvaluator.isExpression(obj);
|
|
1298
|
-
}
|
|
1299
|
-
if (Array.isArray(obj)) {
|
|
1300
|
-
return obj.some((item) => this.checkForExpressions(item));
|
|
1301
|
-
}
|
|
1302
|
-
if (obj && typeof obj === 'object') {
|
|
1303
|
-
return Object.values(obj).some((value) => this.checkForExpressions(value));
|
|
1304
|
-
}
|
|
1305
|
-
return false;
|
|
1306
|
-
}
|
|
1307
|
-
/**
|
|
1308
|
-
* Get cache key for row data - optimized to avoid JSON.stringify when possible
|
|
1309
|
-
*/
|
|
1310
|
-
getCacheKey(data) {
|
|
1311
|
-
if (data?.id) {
|
|
1312
|
-
return `row-${data.id}`;
|
|
1313
|
-
}
|
|
1314
|
-
// Use a hash of key properties instead of full JSON.stringify
|
|
1315
|
-
// This is much faster for large objects
|
|
1316
|
-
const keyProps = ['id', 'code', 'name', 'title'];
|
|
1317
|
-
const keyValues = keyProps.map((prop) => data?.[prop]).filter((v) => v != null);
|
|
1318
|
-
if (keyValues.length > 0) {
|
|
1319
|
-
return `row-${keyValues.join('-')}`;
|
|
1320
|
-
}
|
|
1321
|
-
// Fallback to JSON.stringify only if no key properties exist
|
|
1322
|
-
// But limit the stringified size to prevent performance issues
|
|
1323
|
-
try {
|
|
1324
|
-
const str = JSON.stringify(data);
|
|
1325
|
-
return str.length > 1000 ? `row-${str.substring(0, 1000)}` : `row-${str}`;
|
|
1326
|
-
}
|
|
1327
|
-
catch {
|
|
1328
|
-
// If JSON.stringify fails, use a simple hash
|
|
1329
|
-
return `row-${Object.keys(data || {}).length}`;
|
|
1330
|
-
}
|
|
1331
|
-
}
|
|
1332
|
-
/**
|
|
1333
|
-
* Schedule change detection (debounced to batch multiple updates)
|
|
1334
|
-
*/
|
|
1335
|
-
scheduleChangeDetection() {
|
|
1336
|
-
if (this.changeDetectionScheduled) {
|
|
1337
|
-
return;
|
|
1338
|
-
}
|
|
1339
|
-
this.changeDetectionScheduled = true;
|
|
1340
|
-
// Use requestAnimationFrame for better performance
|
|
1341
|
-
requestAnimationFrame(() => {
|
|
1342
|
-
this.cdr.detectChanges();
|
|
1343
|
-
this.changeDetectionScheduled = false;
|
|
1344
|
-
});
|
|
1345
|
-
}
|
|
1346
|
-
/**
|
|
1347
|
-
* Limit cache size using simple FIFO eviction
|
|
1348
|
-
*/
|
|
1349
|
-
evictCacheIfNeeded() {
|
|
1350
|
-
if (this.rowInjectorsCache.size >= this.MAX_CACHE_SIZE) {
|
|
1351
|
-
// Remove oldest entries (first 25% of cache)
|
|
1352
|
-
const entriesToRemove = Math.floor(this.MAX_CACHE_SIZE * 0.25);
|
|
1353
|
-
const keysToRemove = Array.from(this.rowInjectorsCache.keys()).slice(0, entriesToRemove);
|
|
1354
|
-
keysToRemove.forEach((key) => this.rowInjectorsCache.delete(key));
|
|
1355
|
-
}
|
|
1356
|
-
}
|
|
1357
|
-
//#endregion
|
|
1358
1279
|
getInputs(data) {
|
|
1359
1280
|
return {
|
|
1360
|
-
rawValue:
|
|
1281
|
+
rawValue: getSmart(data, this.node.path),
|
|
1361
1282
|
rowData: data,
|
|
1362
1283
|
};
|
|
1363
1284
|
}
|
|
1364
|
-
getRowInjector(data) {
|
|
1365
|
-
// Optimized cache key generation
|
|
1366
|
-
const cacheKey = this.getCacheKey(data);
|
|
1367
|
-
// Check if we have a cached injector for this row
|
|
1368
|
-
let rowInjector = this.rowInjectorsCache.get(cacheKey);
|
|
1369
|
-
if (!rowInjector) {
|
|
1370
|
-
// If no expressions in options, use original options directly (performance optimization)
|
|
1371
|
-
if (!this.hasExpressions) {
|
|
1372
|
-
const tokenValue = {
|
|
1373
|
-
path: this.node.path,
|
|
1374
|
-
options: this.mergedOptions(),
|
|
1375
|
-
};
|
|
1376
|
-
rowInjector = Injector.create({
|
|
1377
|
-
parent: this.injector,
|
|
1378
|
-
providers: [
|
|
1379
|
-
{
|
|
1380
|
-
provide: AXP_WIDGET_COLUMN_TOKEN,
|
|
1381
|
-
useValue: tokenValue,
|
|
1382
|
-
},
|
|
1383
|
-
],
|
|
1384
|
-
});
|
|
1385
|
-
this.evictCacheIfNeeded();
|
|
1386
|
-
this.rowInjectorsCache.set(cacheKey, rowInjector);
|
|
1387
|
-
return rowInjector;
|
|
1388
|
-
}
|
|
1389
|
-
// Check if evaluation is already pending for this row
|
|
1390
|
-
if (!this.pendingEvaluations.has(cacheKey)) {
|
|
1391
|
-
this.pendingEvaluations.add(cacheKey);
|
|
1392
|
-
// Evaluate expressions in options based on row data
|
|
1393
|
-
const scope = {
|
|
1394
|
-
...(data ?? {}),
|
|
1395
|
-
context: {
|
|
1396
|
-
eval: (path) => {
|
|
1397
|
-
return getSmart(data, path);
|
|
1398
|
-
},
|
|
1399
|
-
},
|
|
1400
|
-
};
|
|
1401
|
-
// Start async evaluation - will update injector when complete
|
|
1402
|
-
this.expressionEvaluator.evaluate(this.mergedOptions(), scope).then((evaluatedOptions) => {
|
|
1403
|
-
// Create injector with evaluated options
|
|
1404
|
-
const tokenValue = {
|
|
1405
|
-
path: this.node.path,
|
|
1406
|
-
options: evaluatedOptions,
|
|
1407
|
-
};
|
|
1408
|
-
const newInjector = Injector.create({
|
|
1409
|
-
parent: this.injector,
|
|
1410
|
-
providers: [
|
|
1411
|
-
{
|
|
1412
|
-
provide: AXP_WIDGET_COLUMN_TOKEN,
|
|
1413
|
-
useValue: tokenValue,
|
|
1414
|
-
},
|
|
1415
|
-
],
|
|
1416
|
-
});
|
|
1417
|
-
// Replace cached injector to force component recreation on next render
|
|
1418
|
-
this.rowInjectorsCache.delete(cacheKey);
|
|
1419
|
-
this.evictCacheIfNeeded();
|
|
1420
|
-
this.rowInjectorsCache.set(cacheKey, newInjector);
|
|
1421
|
-
this.pendingEvaluations.delete(cacheKey);
|
|
1422
|
-
// Schedule batched change detection (performance optimization)
|
|
1423
|
-
this.scheduleChangeDetection();
|
|
1424
|
-
}).catch(() => {
|
|
1425
|
-
// If evaluation fails, keep using the fallback injector
|
|
1426
|
-
this.pendingEvaluations.delete(cacheKey);
|
|
1427
|
-
});
|
|
1428
|
-
}
|
|
1429
|
-
// Create injector with original options as fallback (will be updated when evaluation completes)
|
|
1430
|
-
const tokenValue = {
|
|
1431
|
-
path: this.node.path,
|
|
1432
|
-
options: this.mergedOptions(),
|
|
1433
|
-
};
|
|
1434
|
-
rowInjector = Injector.create({
|
|
1435
|
-
parent: this.injector,
|
|
1436
|
-
providers: [
|
|
1437
|
-
{
|
|
1438
|
-
provide: AXP_WIDGET_COLUMN_TOKEN,
|
|
1439
|
-
useValue: tokenValue,
|
|
1440
|
-
},
|
|
1441
|
-
],
|
|
1442
|
-
});
|
|
1443
|
-
// Cache the initial injector
|
|
1444
|
-
this.evictCacheIfNeeded();
|
|
1445
|
-
this.rowInjectorsCache.set(cacheKey, rowInjector);
|
|
1446
|
-
}
|
|
1447
|
-
return rowInjector;
|
|
1448
|
-
}
|
|
1449
1285
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.12", ngImport: i0, type: AXPWidgetColumnRendererComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
1450
1286
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.12", type: AXPWidgetColumnRendererComponent, isStandalone: false, selector: "axp-widget-column-renderer", inputs: { caption: "caption", customExpandIcon: "customExpandIcon", customCollapseIcon: "customCollapseIcon", customWidth: "customWidth", node: "node", footerTemplate: "footerTemplate", expandHandler: "expandHandler", cellTemplate: "cellTemplate", headerTemplate: "headerTemplate" }, providers: [
|
|
1451
1287
|
AXPWidgetCoreService,
|
|
@@ -1473,9 +1309,9 @@ class AXPWidgetColumnRendererComponent extends AXDataTableColumnComponent {
|
|
|
1473
1309
|
}
|
|
1474
1310
|
</div>
|
|
1475
1311
|
}
|
|
1476
|
-
@if (component && row?.data) {
|
|
1312
|
+
@if (component && widgetInjector && row?.data) {
|
|
1477
1313
|
<ng-container
|
|
1478
|
-
*ngComponentOutlet="component; injector:
|
|
1314
|
+
*ngComponentOutlet="component; injector: widgetInjector; inputs: getInputs(row.data)"
|
|
1479
1315
|
></ng-container>
|
|
1480
1316
|
}
|
|
1481
1317
|
</div>
|
|
@@ -1510,9 +1346,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.12", ngImpo
|
|
|
1510
1346
|
}
|
|
1511
1347
|
</div>
|
|
1512
1348
|
}
|
|
1513
|
-
@if (component && row?.data) {
|
|
1349
|
+
@if (component && widgetInjector && row?.data) {
|
|
1514
1350
|
<ng-container
|
|
1515
|
-
*ngComponentOutlet="component; injector:
|
|
1351
|
+
*ngComponentOutlet="component; injector: widgetInjector; inputs: getInputs(row.data)"
|
|
1516
1352
|
></ng-container>
|
|
1517
1353
|
}
|
|
1518
1354
|
</div>
|
|
@@ -1636,7 +1472,6 @@ class AXPWidgetRendererDirective {
|
|
|
1636
1472
|
this.options = this._options.asReadonly();
|
|
1637
1473
|
this.onOptionsChanged = output();
|
|
1638
1474
|
this.onValueChanged = output();
|
|
1639
|
-
this.onLoad = output();
|
|
1640
1475
|
//#region ---- Public API ----
|
|
1641
1476
|
/**
|
|
1642
1477
|
* Signal that emits the component reference when it's ready
|
|
@@ -1661,7 +1496,6 @@ class AXPWidgetRendererDirective {
|
|
|
1661
1496
|
this.renderTimeoutId = null;
|
|
1662
1497
|
this.hasInitialRender = false;
|
|
1663
1498
|
this.onContextChanged = new Subject();
|
|
1664
|
-
this.onLoadEvent = new Subject();
|
|
1665
1499
|
//#region ---- Performance Optimization Properties ----
|
|
1666
1500
|
this.contextUpdateQueue = new Set();
|
|
1667
1501
|
this.contextUpdateTimeout = null;
|
|
@@ -1680,33 +1514,14 @@ class AXPWidgetRendererDirective {
|
|
|
1680
1514
|
const changed = this.contextService.changeEvent();
|
|
1681
1515
|
// Don't trigger re-render during initial setup
|
|
1682
1516
|
if (!this.hasInitialRender) {
|
|
1683
|
-
|
|
1684
|
-
if (changed.state === 'initiated' && (!changed.path || changed.path === '')) {
|
|
1685
|
-
// Mark that we need to re-evaluate all expressions when initial render completes
|
|
1686
|
-
// This handles the case where context is set before/during widget initialization
|
|
1687
|
-
this.preRenderContextQueue.add('*'); // Use '*' as a marker for full context initialization
|
|
1688
|
-
// console.log(`📝 [${this.node().type}] Buffered initial context set`);
|
|
1689
|
-
}
|
|
1690
|
-
else if (changed.path) {
|
|
1517
|
+
if (changed.path) {
|
|
1691
1518
|
this.preRenderContextQueue.add(changed.path);
|
|
1692
1519
|
// console.log(`📝 [${this.node().type}] Buffered pre-render context change: ${changed.path}`);
|
|
1693
1520
|
}
|
|
1694
1521
|
return;
|
|
1695
1522
|
}
|
|
1696
1523
|
// CRITICAL PERFORMANCE FIX: Only respond to relevant context changes
|
|
1697
|
-
|
|
1698
|
-
if (changed.state === 'initiated' && (!changed.path || changed.path === '')) {
|
|
1699
|
-
// Full context initialization - trigger re-evaluation of all expressions
|
|
1700
|
-
// console.log(`🎯 [${this.node().type}] Initial context set detected - triggering full re-evaluation`);
|
|
1701
|
-
this.clearExpressionCache();
|
|
1702
|
-
if (this.expressionEvaluators.size > 0) {
|
|
1703
|
-
await this.updateOptionsBasedOnContext();
|
|
1704
|
-
this.applyOptions();
|
|
1705
|
-
}
|
|
1706
|
-
await this.updateVisibility();
|
|
1707
|
-
await this.updateValueBasedOnFormula();
|
|
1708
|
-
}
|
|
1709
|
-
else if (changed.path && this.isRelevantContextChange(changed.path)) {
|
|
1524
|
+
if (changed.path && this.isRelevantContextChange(changed.path)) {
|
|
1710
1525
|
// console.log(`🎯 [${this.node().type}] Context change detected: ${changed.path}`);
|
|
1711
1526
|
this.queueContextUpdate(changed.path);
|
|
1712
1527
|
}
|
|
@@ -1864,7 +1679,7 @@ class AXPWidgetRendererDirective {
|
|
|
1864
1679
|
let match;
|
|
1865
1680
|
while ((match = contextEvalRegex.exec(expressionValue)) !== null) {
|
|
1866
1681
|
const evalPath = match[1];
|
|
1867
|
-
// Normalize Id-suffixed segments to dot-id form (e.g., 'typeId' -> 'type.id', '
|
|
1682
|
+
// Normalize Id-suffixed segments to dot-id form (e.g., 'typeId' -> 'type.id', 'party.typeId' -> 'party.type.id')
|
|
1868
1683
|
const normalizePath = (p) => {
|
|
1869
1684
|
if (!p)
|
|
1870
1685
|
return p;
|
|
@@ -2054,7 +1869,6 @@ class AXPWidgetRendererDirective {
|
|
|
2054
1869
|
if (this.componentRef) {
|
|
2055
1870
|
this.componentRef.destroy();
|
|
2056
1871
|
}
|
|
2057
|
-
this.onLoadEvent.complete();
|
|
2058
1872
|
}
|
|
2059
1873
|
async loadComponent() {
|
|
2060
1874
|
if (this.isLoading()) {
|
|
@@ -2102,17 +1916,7 @@ class AXPWidgetRendererDirective {
|
|
|
2102
1916
|
// Register expressions from widget defaults and node options to cover related-entity cases
|
|
2103
1917
|
this.preprocessAndInitialOptions(cloneDeep(widget?.options));
|
|
2104
1918
|
this.preprocessAndInitialOptions(cloneDeep(this.node().options));
|
|
2105
|
-
|
|
2106
|
-
// If context is empty, expressions will be re-evaluated after initial render
|
|
2107
|
-
const contextData = this.contextService.data();
|
|
2108
|
-
const hasContextData = contextData && Object.keys(contextData).length > 0;
|
|
2109
|
-
if (hasContextData) {
|
|
2110
|
-
await this.updateOptionsBasedOnContext();
|
|
2111
|
-
}
|
|
2112
|
-
else {
|
|
2113
|
-
// Context not yet available - expressions will be evaluated after initial render
|
|
2114
|
-
// when context is set (handled by the effect and preRenderContextQueue)
|
|
2115
|
-
}
|
|
1919
|
+
await this.updateOptionsBasedOnContext();
|
|
2116
1920
|
//
|
|
2117
1921
|
this._options.update((val) => ({ ...val, ...this.mergedOptions() }));
|
|
2118
1922
|
// Evaluate default value
|
|
@@ -2176,33 +1980,13 @@ class AXPWidgetRendererDirective {
|
|
|
2176
1980
|
await this.updateVisibility();
|
|
2177
1981
|
// Process any buffered pre-render context changes now that the component is ready
|
|
2178
1982
|
if (this.preRenderContextQueue.size > 0) {
|
|
2179
|
-
//
|
|
2180
|
-
|
|
2181
|
-
|
|
2182
|
-
|
|
2183
|
-
|
|
2184
|
-
|
|
2185
|
-
this.preRenderContextQueue.clear();
|
|
2186
|
-
// Re-evaluate all expressions since context is now available
|
|
2187
|
-
if (this.expressionEvaluators.size > 0) {
|
|
2188
|
-
await this.updateOptionsBasedOnContext();
|
|
2189
|
-
this.applyOptions();
|
|
2190
|
-
}
|
|
2191
|
-
await this.updateVisibility();
|
|
2192
|
-
}
|
|
2193
|
-
else {
|
|
2194
|
-
// console.log(
|
|
2195
|
-
// `🚀 [${this.node().type}] Processing ${this.preRenderContextQueue.size} buffered pre-render changes`,
|
|
2196
|
-
// );
|
|
2197
|
-
this.preRenderContextQueue.forEach((p) => this.contextUpdateQueue.add(p));
|
|
2198
|
-
this.preRenderContextQueue.clear();
|
|
2199
|
-
await this.processBatchedUpdates();
|
|
2200
|
-
}
|
|
1983
|
+
// console.log(
|
|
1984
|
+
// `🚀 [${this.node().type}] Processing ${this.preRenderContextQueue.size} buffered pre-render changes`,
|
|
1985
|
+
// );
|
|
1986
|
+
this.preRenderContextQueue.forEach((p) => this.contextUpdateQueue.add(p));
|
|
1987
|
+
this.preRenderContextQueue.clear();
|
|
1988
|
+
await this.processBatchedUpdates();
|
|
2201
1989
|
}
|
|
2202
|
-
// Emit load event after widget is fully loaded
|
|
2203
|
-
const loadEvent = { sender: this, widget: this.instance };
|
|
2204
|
-
this.onLoadEvent.next(loadEvent);
|
|
2205
|
-
this.onLoad.emit(loadEvent);
|
|
2206
1990
|
}
|
|
2207
1991
|
catch (error) {
|
|
2208
1992
|
// console.error('Error loading component:', error);
|
|
@@ -2474,9 +2258,6 @@ class AXPWidgetRendererDirective {
|
|
|
2474
2258
|
}));
|
|
2475
2259
|
},
|
|
2476
2260
|
from: (event) => get(this.instance.api(), event),
|
|
2477
|
-
load: () => {
|
|
2478
|
-
return this.onLoadEvent.asObservable();
|
|
2479
|
-
},
|
|
2480
2261
|
};
|
|
2481
2262
|
}
|
|
2482
2263
|
getWidgetScope() {
|
|
@@ -2495,10 +2276,6 @@ class AXPWidgetRendererDirective {
|
|
|
2495
2276
|
if (refresh && typeof refresh === 'function') {
|
|
2496
2277
|
refresh.bind(this.instance)();
|
|
2497
2278
|
}
|
|
2498
|
-
else {
|
|
2499
|
-
this.updateOptionsBasedOnContext();
|
|
2500
|
-
this.applyOptions();
|
|
2501
|
-
}
|
|
2502
2279
|
},
|
|
2503
2280
|
output: (name) => {
|
|
2504
2281
|
this.instance.output(name);
|
|
@@ -2587,7 +2364,7 @@ class AXPWidgetRendererDirective {
|
|
|
2587
2364
|
}
|
|
2588
2365
|
}
|
|
2589
2366
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.12", ngImport: i0, type: AXPWidgetRendererDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
2590
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.3.12", type: AXPWidgetRendererDirective, isStandalone: false, selector: "[axp-widget-renderer]", inputs: { parentNode: { classPropertyName: "parentNode", publicName: "parentNode", isSignal: true, isRequired: false, transformFunction: null }, index: { classPropertyName: "index", publicName: "index", isSignal: true, isRequired: false, transformFunction: null }, mode: { classPropertyName: "mode", publicName: "mode", isSignal: true, isRequired: true, transformFunction: null }, node: { classPropertyName: "node", publicName: "node", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { onOptionsChanged: "onOptionsChanged", onValueChanged: "onValueChanged"
|
|
2367
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.3.12", type: AXPWidgetRendererDirective, isStandalone: false, selector: "[axp-widget-renderer]", inputs: { parentNode: { classPropertyName: "parentNode", publicName: "parentNode", isSignal: true, isRequired: false, transformFunction: null }, index: { classPropertyName: "index", publicName: "index", isSignal: true, isRequired: false, transformFunction: null }, mode: { classPropertyName: "mode", publicName: "mode", isSignal: true, isRequired: true, transformFunction: null }, node: { classPropertyName: "node", publicName: "node", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { onOptionsChanged: "onOptionsChanged", onValueChanged: "onValueChanged" }, providers: [
|
|
2591
2368
|
{
|
|
2592
2369
|
provide: AXUnsubscriber,
|
|
2593
2370
|
},
|
|
@@ -2605,7 +2382,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.12", ngImpo
|
|
|
2605
2382
|
],
|
|
2606
2383
|
standalone: false,
|
|
2607
2384
|
}]
|
|
2608
|
-
}], ctorParameters: () => [], propDecorators: { parentNode: [{ type: i0.Input, args: [{ isSignal: true, alias: "parentNode", required: false }] }], index: [{ type: i0.Input, args: [{ isSignal: true, alias: "index", required: false }] }], mode: [{ type: i0.Input, args: [{ isSignal: true, alias: "mode", required: true }] }], node: [{ type: i0.Input, args: [{ isSignal: true, alias: "node", required: true }] }], onOptionsChanged: [{ type: i0.Output, args: ["onOptionsChanged"] }], onValueChanged: [{ type: i0.Output, args: ["onValueChanged"] }]
|
|
2385
|
+
}], ctorParameters: () => [], propDecorators: { parentNode: [{ type: i0.Input, args: [{ isSignal: true, alias: "parentNode", required: false }] }], index: [{ type: i0.Input, args: [{ isSignal: true, alias: "index", required: false }] }], mode: [{ type: i0.Input, args: [{ isSignal: true, alias: "mode", required: true }] }], node: [{ type: i0.Input, args: [{ isSignal: true, alias: "node", required: true }] }], onOptionsChanged: [{ type: i0.Output, args: ["onOptionsChanged"] }], onValueChanged: [{ type: i0.Output, args: ["onValueChanged"] }] } });
|
|
2609
2386
|
|
|
2610
2387
|
const COMPONENTS = [AXPWidgetContainerComponent, AXPWidgetColumnRendererComponent, AXPWidgetRendererDirective];
|
|
2611
2388
|
class AXPWidgetCoreModule {
|
|
@@ -2881,9 +2658,158 @@ var AXPWidgetGroupEnum;
|
|
|
2881
2658
|
AXPWidgetGroupEnum["UtilityWidget"] = "utility-widget";
|
|
2882
2659
|
})(AXPWidgetGroupEnum || (AXPWidgetGroupEnum = {}));
|
|
2883
2660
|
|
|
2661
|
+
class AXPWidgetStandaloneRendererHostComponent {
|
|
2662
|
+
constructor() {
|
|
2663
|
+
this.mode = 'edit';
|
|
2664
|
+
}
|
|
2665
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.12", ngImport: i0, type: AXPWidgetStandaloneRendererHostComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2666
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.12", type: AXPWidgetStandaloneRendererHostComponent, isStandalone: true, selector: "axp-widget-standalone-renderer-host", inputs: { mode: "mode", node: "node", context: "context", functions: "functions" }, ngImport: i0, template: `
|
|
2667
|
+
<axp-widgets-container [context]="context" [functions]="functions">
|
|
2668
|
+
<ng-container axp-widget-renderer [mode]="mode" [node]="node"></ng-container>
|
|
2669
|
+
</axp-widgets-container>
|
|
2670
|
+
`, isInline: true, dependencies: [{ kind: "ngmodule", type: AXPWidgetCoreModule }, { kind: "component", type: AXPWidgetContainerComponent, selector: "axp-widgets-container", inputs: ["context", "functions"], outputs: ["onContextChanged"] }, { kind: "directive", type: AXPWidgetRendererDirective, selector: "[axp-widget-renderer]", inputs: ["parentNode", "index", "mode", "node"], outputs: ["onOptionsChanged", "onValueChanged"], exportAs: ["widgetRenderer"] }] }); }
|
|
2671
|
+
}
|
|
2672
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.12", ngImport: i0, type: AXPWidgetStandaloneRendererHostComponent, decorators: [{
|
|
2673
|
+
type: Component,
|
|
2674
|
+
args: [{
|
|
2675
|
+
selector: 'axp-widget-standalone-renderer-host',
|
|
2676
|
+
template: `
|
|
2677
|
+
<axp-widgets-container [context]="context" [functions]="functions">
|
|
2678
|
+
<ng-container axp-widget-renderer [mode]="mode" [node]="node"></ng-container>
|
|
2679
|
+
</axp-widgets-container>
|
|
2680
|
+
`,
|
|
2681
|
+
standalone: true,
|
|
2682
|
+
imports: [AXPWidgetCoreModule]
|
|
2683
|
+
}]
|
|
2684
|
+
}], propDecorators: { mode: [{
|
|
2685
|
+
type: Input
|
|
2686
|
+
}], node: [{
|
|
2687
|
+
type: Input
|
|
2688
|
+
}], context: [{
|
|
2689
|
+
type: Input
|
|
2690
|
+
}], functions: [{
|
|
2691
|
+
type: Input
|
|
2692
|
+
}] } });
|
|
2693
|
+
|
|
2694
|
+
const LAYOUT_WIDGET_RENDER_ENGINE = new InjectionToken('LAYOUT_WIDGET_RENDER_ENGINE');
|
|
2695
|
+
class WidgetCoreRendererEngine {
|
|
2696
|
+
constructor(appRef, env) {
|
|
2697
|
+
this.appRef = appRef;
|
|
2698
|
+
this.env = env;
|
|
2699
|
+
}
|
|
2700
|
+
render(node, target, context, mode = 'edit') {
|
|
2701
|
+
const compRef = createComponent(AXPWidgetStandaloneRendererHostComponent, { environmentInjector: this.env });
|
|
2702
|
+
compRef.setInput('mode', mode);
|
|
2703
|
+
compRef.setInput('node', node);
|
|
2704
|
+
if (context) {
|
|
2705
|
+
compRef.setInput('context', context);
|
|
2706
|
+
}
|
|
2707
|
+
this.appRef.attachView(compRef.hostView);
|
|
2708
|
+
target.appendChild(compRef.location.nativeElement);
|
|
2709
|
+
return {
|
|
2710
|
+
element: compRef.location.nativeElement,
|
|
2711
|
+
destroy: () => {
|
|
2712
|
+
try {
|
|
2713
|
+
this.appRef.detachView(compRef.hostView);
|
|
2714
|
+
}
|
|
2715
|
+
catch { }
|
|
2716
|
+
compRef.destroy();
|
|
2717
|
+
},
|
|
2718
|
+
};
|
|
2719
|
+
}
|
|
2720
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.12", ngImport: i0, type: WidgetCoreRendererEngine, deps: [{ token: i0.ApplicationRef }, { token: i0.EnvironmentInjector }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
2721
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.12", ngImport: i0, type: WidgetCoreRendererEngine, providedIn: 'root' }); }
|
|
2722
|
+
}
|
|
2723
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.12", ngImport: i0, type: WidgetCoreRendererEngine, decorators: [{
|
|
2724
|
+
type: Injectable,
|
|
2725
|
+
args: [{ providedIn: 'root' }]
|
|
2726
|
+
}], ctorParameters: () => [{ type: i0.ApplicationRef }, { type: i0.EnvironmentInjector }] });
|
|
2727
|
+
class SimpleDomRendererEngine {
|
|
2728
|
+
render(node, target) {
|
|
2729
|
+
const element = this.createElement(node);
|
|
2730
|
+
target.appendChild(element);
|
|
2731
|
+
return {
|
|
2732
|
+
element,
|
|
2733
|
+
destroy: () => {
|
|
2734
|
+
if (element.parentElement) {
|
|
2735
|
+
element.parentElement.removeChild(element);
|
|
2736
|
+
}
|
|
2737
|
+
},
|
|
2738
|
+
};
|
|
2739
|
+
}
|
|
2740
|
+
createElement(node) {
|
|
2741
|
+
const container = document.createElement('div');
|
|
2742
|
+
container.className = `axp-widget axp-widget-${node.type}`;
|
|
2743
|
+
switch (String(node.type)) {
|
|
2744
|
+
case 'text-block-layout':
|
|
2745
|
+
case 'static-text':
|
|
2746
|
+
this.renderText(container, node);
|
|
2747
|
+
break;
|
|
2748
|
+
case 'tag':
|
|
2749
|
+
this.renderTag(container, node);
|
|
2750
|
+
break;
|
|
2751
|
+
case 'text-editor':
|
|
2752
|
+
this.renderTextBox(container, node);
|
|
2753
|
+
break;
|
|
2754
|
+
default:
|
|
2755
|
+
this.renderGeneric(container, node);
|
|
2756
|
+
break;
|
|
2757
|
+
}
|
|
2758
|
+
return container;
|
|
2759
|
+
}
|
|
2760
|
+
renderText(container, node) {
|
|
2761
|
+
const anyNode = node;
|
|
2762
|
+
const content = (anyNode.options && (anyNode.options.content || anyNode.options.label)) || '';
|
|
2763
|
+
container.innerHTML = typeof content === 'string' ? content : String(content);
|
|
2764
|
+
}
|
|
2765
|
+
renderTag(container, node) {
|
|
2766
|
+
const label = node.options?.label || 'Tag';
|
|
2767
|
+
const tone = node.options?.tone || 'primary';
|
|
2768
|
+
container.innerHTML = `<span class="tag tag-${tone}" style="
|
|
2769
|
+
display: inline-block;
|
|
2770
|
+
padding: 4px 12px;
|
|
2771
|
+
border-radius: 12px;
|
|
2772
|
+
font-size: 12px;
|
|
2773
|
+
font-weight: 500;
|
|
2774
|
+
background: ${tone === 'success' ? '#d4edda' : '#cce5ff'};
|
|
2775
|
+
color: ${tone === 'success' ? '#155724' : '#004085'};
|
|
2776
|
+
border: 1px solid ${tone === 'success' ? '#c3e6cb' : '#b8daff'};
|
|
2777
|
+
">${label}</span>`;
|
|
2778
|
+
}
|
|
2779
|
+
renderTextBox(container, node) {
|
|
2780
|
+
const placeholder = node.options?.placeholder || '';
|
|
2781
|
+
const input = document.createElement('input');
|
|
2782
|
+
input.type = 'text';
|
|
2783
|
+
input.placeholder = placeholder;
|
|
2784
|
+
input.style.cssText = `
|
|
2785
|
+
width: 100%;
|
|
2786
|
+
padding: 8px 12px;
|
|
2787
|
+
border: 1px solid #ddd;
|
|
2788
|
+
border-radius: 4px;
|
|
2789
|
+
font-size: 14px;
|
|
2790
|
+
`;
|
|
2791
|
+
container.appendChild(input);
|
|
2792
|
+
}
|
|
2793
|
+
renderGeneric(container, node) {
|
|
2794
|
+
const anyNode = node;
|
|
2795
|
+
if (anyNode.options?.content) {
|
|
2796
|
+
container.innerHTML = anyNode.options.content;
|
|
2797
|
+
}
|
|
2798
|
+
else {
|
|
2799
|
+
container.textContent = `[${String(node.type)}]`;
|
|
2800
|
+
}
|
|
2801
|
+
}
|
|
2802
|
+
}
|
|
2803
|
+
function provideWidgetCoreRenderer() {
|
|
2804
|
+
return [{ provide: LAYOUT_WIDGET_RENDER_ENGINE, useClass: WidgetCoreRendererEngine }];
|
|
2805
|
+
}
|
|
2806
|
+
function provideSimpleDomRenderer() {
|
|
2807
|
+
return [{ provide: LAYOUT_WIDGET_RENDER_ENGINE, useClass: SimpleDomRendererEngine }];
|
|
2808
|
+
}
|
|
2809
|
+
|
|
2884
2810
|
/**
|
|
2885
2811
|
* Generated bundle index. Do not edit.
|
|
2886
2812
|
*/
|
|
2887
2813
|
|
|
2888
|
-
export { AXPBaseWidgetComponent, AXPBlockBaseLayoutWidgetComponent, AXPBoxModelLayoutWidgetComponent, AXPColumnWidgetComponent, AXPDataListWidgetComponent, AXPFlexBaseLayoutWidgetComponent, AXPFlexItemBaseLayoutWidgetComponent, AXPGridBaseLayoutWidgetComponent, AXPGridItemBaseLayoutWidgetComponent, AXPInlineBaseLayoutWidgetComponent, AXPLayoutBaseWidgetComponent, AXPPageStatus, AXPPropertyEditorHelper, AXPTableBaseLayoutWidgetComponent, AXPTableItemBaseLayoutWidgetComponent, AXPTableItemOpsBaseLayoutWidgetComponent, AXPValueWidgetComponent, AXPWidgetColumnRendererComponent, AXPWidgetContainerComponent, AXPWidgetCoreContextChangeEvent, AXPWidgetCoreContextStore, AXPWidgetCoreElement, AXPWidgetCoreModule, AXPWidgetCoreService, AXPWidgetGroupEnum, AXPWidgetRegistryService, AXPWidgetRendererDirective, AXPWidgetStatus, AXPWidgetsCatalog, AXP_WIDGETS_ACTION_CATEGORY, AXP_WIDGETS_ADVANCE_CATEGORY, AXP_WIDGETS_CATEGORIES, AXP_WIDGETS_EDITOR_CATEGORY, AXP_WIDGETS_LAYOUT_CATEGORY, AXP_WIDGET_COLUMN_TOKEN, AXP_WIDGET_TOKEN, cloneProperty, createBooleanProperty, createNumberProperty, createSelectProperty, createStringProperty, findNonEmptyBreakpoints };
|
|
2814
|
+
export { AXPBaseWidgetComponent, AXPBlockBaseLayoutWidgetComponent, AXPBoxModelLayoutWidgetComponent, AXPColumnWidgetComponent, AXPDataListWidgetComponent, AXPFlexBaseLayoutWidgetComponent, AXPFlexItemBaseLayoutWidgetComponent, AXPGridBaseLayoutWidgetComponent, AXPGridItemBaseLayoutWidgetComponent, AXPInlineBaseLayoutWidgetComponent, AXPLayoutBaseWidgetComponent, AXPPageStatus, AXPPropertyEditorHelper, AXPTableBaseLayoutWidgetComponent, AXPTableItemBaseLayoutWidgetComponent, AXPTableItemOpsBaseLayoutWidgetComponent, AXPValueWidgetComponent, AXPWidgetColumnRendererComponent, AXPWidgetContainerComponent, AXPWidgetCoreContextChangeEvent, AXPWidgetCoreContextStore, AXPWidgetCoreElement, AXPWidgetCoreModule, AXPWidgetCoreService, AXPWidgetGroupEnum, AXPWidgetRegistryService, AXPWidgetRendererDirective, AXPWidgetStandaloneRendererHostComponent, AXPWidgetStatus, AXPWidgetsCatalog, AXP_WIDGETS_ACTION_CATEGORY, AXP_WIDGETS_ADVANCE_CATEGORY, AXP_WIDGETS_CATEGORIES, AXP_WIDGETS_EDITOR_CATEGORY, AXP_WIDGETS_LAYOUT_CATEGORY, AXP_WIDGET_COLUMN_TOKEN, AXP_WIDGET_TOKEN, LAYOUT_WIDGET_RENDER_ENGINE, SimpleDomRendererEngine, WidgetCoreRendererEngine, cloneProperty, createBooleanProperty, createNumberProperty, createSelectProperty, createStringProperty, findNonEmptyBreakpoints, provideSimpleDomRenderer, provideWidgetCoreRenderer };
|
|
2889
2815
|
//# sourceMappingURL=acorex-platform-layout-widget-core.mjs.map
|