@ng-forge/dynamic-forms 1.1.0 → 1.2.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/fesm2022/{ng-forge-dynamic-forms-array-field.component-CvjDqYyq.mjs → ng-forge-dynamic-forms-array-field.component-B5t7W5fo.mjs} +2 -2
- package/fesm2022/{ng-forge-dynamic-forms-array-field.component-CvjDqYyq.mjs.map → ng-forge-dynamic-forms-array-field.component-B5t7W5fo.mjs.map} +1 -1
- package/fesm2022/{ng-forge-dynamic-forms-bootstrap-derivation-orchestrator-CcoUnroD.mjs → ng-forge-dynamic-forms-bootstrap-derivation-orchestrator-D_DGkAXj.mjs} +2 -2
- package/fesm2022/{ng-forge-dynamic-forms-bootstrap-derivation-orchestrator-CcoUnroD.mjs.map → ng-forge-dynamic-forms-bootstrap-derivation-orchestrator-D_DGkAXj.mjs.map} +1 -1
- package/fesm2022/{ng-forge-dynamic-forms-container-field.component-DZfVWjiM.mjs → ng-forge-dynamic-forms-container-field.component-CrWGMLMJ.mjs} +2 -2
- package/fesm2022/{ng-forge-dynamic-forms-container-field.component-DZfVWjiM.mjs.map → ng-forge-dynamic-forms-container-field.component-CrWGMLMJ.mjs.map} +1 -1
- package/fesm2022/{ng-forge-dynamic-forms-group-field.component-CPFgu3pM.mjs → ng-forge-dynamic-forms-group-field.component-Ds_k0Tkn.mjs} +2 -2
- package/fesm2022/{ng-forge-dynamic-forms-group-field.component-CPFgu3pM.mjs.map → ng-forge-dynamic-forms-group-field.component-Ds_k0Tkn.mjs.map} +1 -1
- package/fesm2022/ng-forge-dynamic-forms-integration.mjs +6 -2
- package/fesm2022/ng-forge-dynamic-forms-integration.mjs.map +1 -1
- package/fesm2022/ng-forge-dynamic-forms-internal.mjs +168 -33
- package/fesm2022/ng-forge-dynamic-forms-internal.mjs.map +1 -1
- package/fesm2022/{ng-forge-dynamic-forms-ng-forge-dynamic-forms-Du3V5AOb.mjs → ng-forge-dynamic-forms-ng-forge-dynamic-forms-DtnrCyH2.mjs} +150 -306
- package/fesm2022/ng-forge-dynamic-forms-ng-forge-dynamic-forms-DtnrCyH2.mjs.map +1 -0
- package/fesm2022/{ng-forge-dynamic-forms-page-field.component-amWhCdHL.mjs → ng-forge-dynamic-forms-page-field.component-PWJ-9bnw.mjs} +47 -9
- package/fesm2022/ng-forge-dynamic-forms-page-field.component-PWJ-9bnw.mjs.map +1 -0
- package/fesm2022/ng-forge-dynamic-forms.mjs +1 -1
- package/package.json +2 -2
- package/types/ng-forge-dynamic-forms-integration.d.ts +8 -2
- package/types/ng-forge-dynamic-forms-internal.d.ts +63 -11
- package/types/ng-forge-dynamic-forms.d.ts +124 -24
- package/fesm2022/ng-forge-dynamic-forms-ng-forge-dynamic-forms-Du3V5AOb.mjs.map +0 -1
- package/fesm2022/ng-forge-dynamic-forms-page-field.component-amWhCdHL.mjs.map +0 -1
|
@@ -295,7 +295,11 @@ function hasTargetProperty(config) {
|
|
|
295
295
|
}
|
|
296
296
|
|
|
297
297
|
const FORM_VALUE_ACCESS_PATTERN = /\bformValue\s*(?:\.|\[)/;
|
|
298
|
-
const
|
|
298
|
+
const ID_START = String.raw `[\p{ID_Start}$_]`;
|
|
299
|
+
const ID_PART = String.raw `[\p{ID_Continue}$]`;
|
|
300
|
+
const DOTTED_PATH = String.raw `${ID_START}${ID_PART}*(?:\.${ID_START}${ID_PART}*)*`;
|
|
301
|
+
const BRACKET_KEY = String.raw `[\p{ID_Continue}$.\-]+`;
|
|
302
|
+
const FORM_VALUE_PATTERN = new RegExp(String.raw `\bformValue\s*(?:\.(${DOTTED_PATH})|\[\s*'(${BRACKET_KEY})'\s*\]|\[\s*"(${BRACKET_KEY})"\s*\])`, 'gu');
|
|
299
303
|
function isCrossFieldExpression(expr, context) {
|
|
300
304
|
if (expr === undefined || typeof expr === 'boolean' || isFormStateCondition(expr)) {
|
|
301
305
|
return false;
|
|
@@ -392,15 +396,6 @@ function hasCrossFieldWhenCondition(config, context) {
|
|
|
392
396
|
}
|
|
393
397
|
return isCrossFieldExpression(config.when, context);
|
|
394
398
|
}
|
|
395
|
-
function requiresTreeValidation(config) {
|
|
396
|
-
if (isResourceBasedValidator(config)) {
|
|
397
|
-
return false;
|
|
398
|
-
}
|
|
399
|
-
if (config.type === 'custom') {
|
|
400
|
-
return isCrossFieldValidator(config);
|
|
401
|
-
}
|
|
402
|
-
return isCrossFieldBuiltInValidator(config);
|
|
403
|
-
}
|
|
404
399
|
function isCrossFieldStateLogic(config, context) {
|
|
405
400
|
return isCrossFieldExpression(config.condition, context);
|
|
406
401
|
}
|
|
@@ -585,6 +580,8 @@ class ExpressionParserError extends DynamicFormError {
|
|
|
585
580
|
}
|
|
586
581
|
}
|
|
587
582
|
|
|
583
|
+
const IDENTIFIER_START = /[\p{ID_Start}$_]/u;
|
|
584
|
+
const IDENTIFIER_PART = /[\p{ID_Continue}$]/u;
|
|
588
585
|
class Tokenizer {
|
|
589
586
|
position = 0;
|
|
590
587
|
expression;
|
|
@@ -617,7 +614,7 @@ class Tokenizer {
|
|
|
617
614
|
if (/[0-9]/.test(char)) {
|
|
618
615
|
return this.readNumber();
|
|
619
616
|
}
|
|
620
|
-
if (
|
|
617
|
+
if (IDENTIFIER_START.test(this.codePointAt(this.position))) {
|
|
621
618
|
return this.readIdentifierOrKeyword();
|
|
622
619
|
}
|
|
623
620
|
return this.readOperatorOrPunctuation();
|
|
@@ -676,12 +673,20 @@ class Tokenizer {
|
|
|
676
673
|
readIdentifierOrKeyword() {
|
|
677
674
|
const start = this.position;
|
|
678
675
|
let value = '';
|
|
679
|
-
while (this.position < this.expression.length
|
|
680
|
-
|
|
681
|
-
|
|
676
|
+
while (this.position < this.expression.length) {
|
|
677
|
+
const char = this.codePointAt(this.position);
|
|
678
|
+
if (!IDENTIFIER_PART.test(char)) {
|
|
679
|
+
break;
|
|
680
|
+
}
|
|
681
|
+
value += char;
|
|
682
|
+
this.position += char.length;
|
|
682
683
|
}
|
|
683
684
|
const type = this.getKeywordType(value);
|
|
684
685
|
return { type, value, position: start };
|
|
686
|
+
}
|
|
687
|
+
codePointAt(position) {
|
|
688
|
+
const codePoint = this.expression.codePointAt(position);
|
|
689
|
+
return codePoint === undefined ? '' : String.fromCodePoint(codePoint);
|
|
685
690
|
}
|
|
686
691
|
getKeywordType(value) {
|
|
687
692
|
switch (value) {
|
|
@@ -1570,6 +1575,51 @@ function safeReadPathKeys(fieldContext) {
|
|
|
1570
1575
|
return untracked(() => fieldContext.pathKeys());
|
|
1571
1576
|
}
|
|
1572
1577
|
|
|
1578
|
+
function createFieldValueProxy(getRootForm, getRootFormValue) {
|
|
1579
|
+
const readField = (key) => {
|
|
1580
|
+
const root = getRootForm();
|
|
1581
|
+
const accessor = root?.[key];
|
|
1582
|
+
if (typeof accessor === 'function') {
|
|
1583
|
+
const state = untracked(() => accessor());
|
|
1584
|
+
const valueSig = state && state.value;
|
|
1585
|
+
if (typeof valueSig === 'function') {
|
|
1586
|
+
return { hit: true, value: valueSig() };
|
|
1587
|
+
}
|
|
1588
|
+
}
|
|
1589
|
+
return { hit: false, value: undefined };
|
|
1590
|
+
};
|
|
1591
|
+
return new Proxy({}, {
|
|
1592
|
+
get(_target, prop) {
|
|
1593
|
+
if (typeof prop === 'symbol')
|
|
1594
|
+
return undefined;
|
|
1595
|
+
const { hit, value } = readField(prop);
|
|
1596
|
+
return hit ? value : getRootFormValue()[prop];
|
|
1597
|
+
},
|
|
1598
|
+
has(_target, prop) {
|
|
1599
|
+
if (typeof prop === 'symbol')
|
|
1600
|
+
return false;
|
|
1601
|
+
const root = getRootForm();
|
|
1602
|
+
if (root && prop in root)
|
|
1603
|
+
return true;
|
|
1604
|
+
return prop in getRootFormValue();
|
|
1605
|
+
},
|
|
1606
|
+
ownKeys() {
|
|
1607
|
+
return Reflect.ownKeys(getRootFormValue());
|
|
1608
|
+
},
|
|
1609
|
+
getOwnPropertyDescriptor(_target, prop) {
|
|
1610
|
+
if (typeof prop === 'symbol')
|
|
1611
|
+
return undefined;
|
|
1612
|
+
const whole = getRootFormValue();
|
|
1613
|
+
if (!(prop in whole))
|
|
1614
|
+
return undefined;
|
|
1615
|
+
const { hit, value } = readField(prop);
|
|
1616
|
+
return { value: hit ? value : whole[prop], enumerable: true, configurable: true, writable: false };
|
|
1617
|
+
},
|
|
1618
|
+
set() {
|
|
1619
|
+
return false; },
|
|
1620
|
+
});
|
|
1621
|
+
}
|
|
1622
|
+
|
|
1573
1623
|
function isChildFieldContext(context) {
|
|
1574
1624
|
return 'key' in context && isSignal(context.key);
|
|
1575
1625
|
}
|
|
@@ -1580,6 +1630,17 @@ function extractFieldState(fieldContext) {
|
|
|
1580
1630
|
return fieldContext.state;
|
|
1581
1631
|
});
|
|
1582
1632
|
}
|
|
1633
|
+
function navigateArrayItemTree(root, arrayKey, index) {
|
|
1634
|
+
let node = root;
|
|
1635
|
+
for (const segment of arrayKey.split('.')) {
|
|
1636
|
+
if (node == null)
|
|
1637
|
+
return undefined;
|
|
1638
|
+
node = node[segment];
|
|
1639
|
+
}
|
|
1640
|
+
if (node == null)
|
|
1641
|
+
return undefined;
|
|
1642
|
+
return node[index];
|
|
1643
|
+
}
|
|
1583
1644
|
function detectArrayScope(pathKeys) {
|
|
1584
1645
|
if (pathKeys.length < 3)
|
|
1585
1646
|
return undefined;
|
|
@@ -1693,6 +1754,65 @@ class FieldContextRegistryService {
|
|
|
1693
1754
|
return formFieldStateGetter();
|
|
1694
1755
|
},
|
|
1695
1756
|
};
|
|
1757
|
+
}
|
|
1758
|
+
buildReactiveArrayScopedContext(arrayScope, fieldValue, customFunctions, fieldContext) {
|
|
1759
|
+
const { arrayKey, index, localKey } = arrayScope;
|
|
1760
|
+
const rootFormSignal = this.rootFormRegistry.rootForm;
|
|
1761
|
+
const resolveExternalData = () => this.resolveExternalData();
|
|
1762
|
+
const fieldStateGetter = fieldContext ? () => readFieldStateInfo(extractFieldState(fieldContext), true) : () => undefined;
|
|
1763
|
+
const formFieldStateGetter = () => createFormFieldStateMap(rootFormSignal(), true);
|
|
1764
|
+
const hasValidItem = untracked(() => {
|
|
1765
|
+
const arrayData = getNestedValue(this.rootFormRegistry.formValue(), arrayKey);
|
|
1766
|
+
if (!Array.isArray(arrayData) || index < 0 || index >= arrayData.length)
|
|
1767
|
+
return false;
|
|
1768
|
+
const item = arrayData[index];
|
|
1769
|
+
return item != null && typeof item === 'object';
|
|
1770
|
+
});
|
|
1771
|
+
const rootFormValueProxy = createFieldValueProxy(() => rootFormSignal(), () => this.rootFormRegistry.formValue());
|
|
1772
|
+
if (!hasValidItem) {
|
|
1773
|
+
return {
|
|
1774
|
+
fieldValue,
|
|
1775
|
+
formValue: rootFormValueProxy,
|
|
1776
|
+
fieldPath: localKey,
|
|
1777
|
+
customFunctions: customFunctions || {},
|
|
1778
|
+
logger: this.logger,
|
|
1779
|
+
deprecationTracker: this.deprecationTracker ?? undefined,
|
|
1780
|
+
get externalData() {
|
|
1781
|
+
return resolveExternalData();
|
|
1782
|
+
},
|
|
1783
|
+
get fieldState() {
|
|
1784
|
+
return fieldStateGetter();
|
|
1785
|
+
},
|
|
1786
|
+
get formFieldState() {
|
|
1787
|
+
return formFieldStateGetter();
|
|
1788
|
+
},
|
|
1789
|
+
};
|
|
1790
|
+
}
|
|
1791
|
+
const itemFormValueProxy = createFieldValueProxy(() => navigateArrayItemTree(rootFormSignal(), arrayKey, index), () => {
|
|
1792
|
+
const arrayData = getNestedValue(this.rootFormRegistry.formValue(), arrayKey);
|
|
1793
|
+
const item = Array.isArray(arrayData) ? arrayData[index] : undefined;
|
|
1794
|
+
return item != null && typeof item === 'object' ? item : {};
|
|
1795
|
+
});
|
|
1796
|
+
return {
|
|
1797
|
+
fieldValue,
|
|
1798
|
+
formValue: itemFormValueProxy,
|
|
1799
|
+
rootFormValue: rootFormValueProxy,
|
|
1800
|
+
arrayIndex: index,
|
|
1801
|
+
arrayPath: arrayKey,
|
|
1802
|
+
fieldPath: `${arrayKey}.${index}.${localKey}`,
|
|
1803
|
+
customFunctions: customFunctions || {},
|
|
1804
|
+
logger: this.logger,
|
|
1805
|
+
deprecationTracker: this.deprecationTracker ?? undefined,
|
|
1806
|
+
get externalData() {
|
|
1807
|
+
return resolveExternalData();
|
|
1808
|
+
},
|
|
1809
|
+
get fieldState() {
|
|
1810
|
+
return fieldStateGetter();
|
|
1811
|
+
},
|
|
1812
|
+
get formFieldState() {
|
|
1813
|
+
return formFieldStateGetter();
|
|
1814
|
+
},
|
|
1815
|
+
};
|
|
1696
1816
|
}
|
|
1697
1817
|
resolveExternalData() {
|
|
1698
1818
|
const externalDataSignal = this.externalDataSignal;
|
|
@@ -1702,29 +1822,48 @@ class FieldContextRegistryService {
|
|
|
1702
1822
|
if (!externalDataRecord) {
|
|
1703
1823
|
return undefined;
|
|
1704
1824
|
}
|
|
1705
|
-
const
|
|
1706
|
-
|
|
1825
|
+
const readKey = (key) => {
|
|
1826
|
+
const value = externalDataRecord[key];
|
|
1707
1827
|
if (!isSignal(value)) {
|
|
1708
1828
|
throw new DynamicFormError(`externalData["${key}"] must be a Signal. Got: ${typeof value}. Wrap it with signal(yourValue).`);
|
|
1709
1829
|
}
|
|
1710
|
-
|
|
1711
|
-
}
|
|
1712
|
-
return
|
|
1830
|
+
return value();
|
|
1831
|
+
};
|
|
1832
|
+
return new Proxy({}, {
|
|
1833
|
+
get(_target, prop) {
|
|
1834
|
+
if (typeof prop === 'symbol' || !(prop in externalDataRecord))
|
|
1835
|
+
return undefined;
|
|
1836
|
+
return readKey(prop);
|
|
1837
|
+
},
|
|
1838
|
+
has(_target, prop) {
|
|
1839
|
+
return typeof prop === 'string' && prop in externalDataRecord;
|
|
1840
|
+
},
|
|
1841
|
+
ownKeys() {
|
|
1842
|
+
return Reflect.ownKeys(externalDataRecord);
|
|
1843
|
+
},
|
|
1844
|
+
getOwnPropertyDescriptor(_target, prop) {
|
|
1845
|
+
if (typeof prop !== 'string' || !(prop in externalDataRecord))
|
|
1846
|
+
return undefined;
|
|
1847
|
+
return { value: readKey(prop), enumerable: true, configurable: true, writable: false };
|
|
1848
|
+
},
|
|
1849
|
+
set() {
|
|
1850
|
+
return false; },
|
|
1851
|
+
});
|
|
1713
1852
|
}
|
|
1714
1853
|
createReactiveEvaluationContext(fieldContext, customFunctions) {
|
|
1715
1854
|
const fieldValue = fieldContext.value();
|
|
1716
|
-
const rootFormValue = this.rootFormRegistry.formValue();
|
|
1717
1855
|
const pathKeys = safeReadPathKeys(fieldContext);
|
|
1718
1856
|
const arrayScope = detectArrayScope(pathKeys);
|
|
1719
1857
|
if (arrayScope) {
|
|
1720
|
-
return this.
|
|
1858
|
+
return this.buildReactiveArrayScopedContext(arrayScope, fieldValue, customFunctions, fieldContext);
|
|
1721
1859
|
}
|
|
1722
1860
|
const localKey = this.extractFieldPath(fieldContext);
|
|
1723
1861
|
const rootFormSignal = this.rootFormRegistry.rootForm;
|
|
1724
1862
|
const resolveExternalData = () => this.resolveExternalData();
|
|
1863
|
+
const formValueProxy = createFieldValueProxy(() => rootFormSignal(), () => this.rootFormRegistry.formValue());
|
|
1725
1864
|
return {
|
|
1726
1865
|
fieldValue,
|
|
1727
|
-
formValue:
|
|
1866
|
+
formValue: formValueProxy,
|
|
1728
1867
|
fieldPath: localKey,
|
|
1729
1868
|
customFunctions: customFunctions || {},
|
|
1730
1869
|
logger: this.logger,
|
|
@@ -1741,15 +1880,15 @@ class FieldContextRegistryService {
|
|
|
1741
1880
|
};
|
|
1742
1881
|
}
|
|
1743
1882
|
createDisplayOnlyContext(fieldPath, customFunctions, arrayScope) {
|
|
1744
|
-
const rootFormValue = this.rootFormRegistry.formValue();
|
|
1745
1883
|
if (arrayScope) {
|
|
1746
|
-
return this.
|
|
1884
|
+
return this.buildReactiveArrayScopedContext(arrayScope, undefined, customFunctions);
|
|
1747
1885
|
}
|
|
1748
1886
|
const rootFormSignal = this.rootFormRegistry.rootForm;
|
|
1749
1887
|
const resolveExternalData = () => this.resolveExternalData();
|
|
1888
|
+
const formValueProxy = createFieldValueProxy(() => rootFormSignal(), () => this.rootFormRegistry.formValue());
|
|
1750
1889
|
return {
|
|
1751
1890
|
fieldValue: undefined,
|
|
1752
|
-
formValue:
|
|
1891
|
+
formValue: formValueProxy,
|
|
1753
1892
|
fieldPath,
|
|
1754
1893
|
customFunctions: customFunctions || {},
|
|
1755
1894
|
logger: this.logger,
|
|
@@ -2570,9 +2709,9 @@ function createDynamicValueFunction(expression) {
|
|
|
2570
2709
|
return cached;
|
|
2571
2710
|
}
|
|
2572
2711
|
const fn = (ctx) => {
|
|
2573
|
-
|
|
2712
|
+
const evaluationContext = fieldContextRegistry.createReactiveEvaluationContext(ctx);
|
|
2574
2713
|
try {
|
|
2575
|
-
|
|
2714
|
+
return (ExpressionParser.evaluate(expression, evaluationContext) ?? undefined);
|
|
2576
2715
|
}
|
|
2577
2716
|
catch (error) {
|
|
2578
2717
|
logger.error('Error evaluating dynamic expression:', expression, error);
|
|
@@ -2636,9 +2775,6 @@ function createConditionalLogic(when) {
|
|
|
2636
2775
|
}
|
|
2637
2776
|
function applyValidator(config, fieldPath) {
|
|
2638
2777
|
const path = fieldPath;
|
|
2639
|
-
if (requiresTreeValidation(config)) {
|
|
2640
|
-
return;
|
|
2641
|
-
}
|
|
2642
2778
|
switch (config.type) {
|
|
2643
2779
|
case 'required':
|
|
2644
2780
|
required(path, config.when ? { when: createConditionalLogic(config.when) } : undefined);
|
|
@@ -2742,7 +2878,7 @@ function createExpressionValidator(config) {
|
|
|
2742
2878
|
const functionRegistry = inject(FunctionRegistryService);
|
|
2743
2879
|
return (ctx) => {
|
|
2744
2880
|
try {
|
|
2745
|
-
|
|
2881
|
+
const evaluationContext = fieldContextRegistry.createReactiveEvaluationContext(ctx, functionRegistry.getCustomFunctions());
|
|
2746
2882
|
const result = ExpressionParser.evaluate(expression, evaluationContext);
|
|
2747
2883
|
if (result) {
|
|
2748
2884
|
return null;
|
|
@@ -3079,7 +3215,6 @@ function applyHiddenLogic(inputs, fieldDef, rootFormRegistry, evaluationContext)
|
|
|
3079
3215
|
form: rootForm,
|
|
3080
3216
|
fieldLogic: fieldDef.logic,
|
|
3081
3217
|
explicitValue: fieldDef.hidden,
|
|
3082
|
-
formValue: rootFormRegistry.formValue(),
|
|
3083
3218
|
evaluationContext,
|
|
3084
3219
|
});
|
|
3085
3220
|
}
|
|
@@ -3688,5 +3823,5 @@ function createWarningTracker() {
|
|
|
3688
3823
|
|
|
3689
3824
|
|
|
3690
3825
|
|
|
3691
|
-
export { ADDON_ACTION_HANDLERS, ADDON_ACTION_REGISTRY, ADDON_TYPE_COMPONENT_CACHE, ADDON_TYPE_DEFINITIONS, ADDON_TYPE_REGISTRY, ARRAY_CONTEXT, AsyncConditionFunctionCacheService, ComponentInitializedEvent, DEFAULT_PROPS, DEFAULT_VALIDATION_MESSAGES, DEFAULT_WRAPPERS, DEPRECATION_WARNING_TRACKER, DF_FIELD_TEMPLATES, DfAddonSlot, DynamicFormError, DynamicFormLogger, DynamicTextPipe, DynamicValueFunctionCacheService, EMIT_FORM_VALUE_ON_EVENTS, EXTERNAL_DATA, EventBus, ExpressionParser, ExpressionParserError, FIELD_REGISTRY, FIELD_SIGNAL_CONTEXT, FORM_ID_PREFIX, FORM_OPTIONS, FieldContextRegistryService, FunctionRegistryService, GROUP_CONTEXT, HTTP_CONDITION_CACHE, HttpConditionCache, HttpConditionFunctionCacheService, INITIALIZATION_TIMEOUT_MS, LogicFunctionCacheService, NoopLogger, READONLY_FIELD_TREE_CACHE, RootFormRegistryService, TokenType, WRAPPER_AUTO_ASSOCIATIONS, WRAPPER_COMPONENT_CACHE, WRAPPER_REGISTRY, applyMetaToElement, applyValidator, applyValidators, arrayFieldMapper, assertNever, baseFieldMapper, buildBaseInputs, buildClassName, compareValues, containerFieldMapper, createAddonActionRegistry, createDebouncedLogicFunction, createDefaultDerivationLogConfig, createDynamicValueFunction, createFormFieldStateMap, createFormStateLogicFunction, createInitializationTracker, createLogicFunction, createWarningTracker, deepMergeDefaults, derivedFromDeferred, detectFormMode, dynamicTextToObservable, evaluateCondition, evaluateNonFieldDisabled, evaluateNonFieldHidden, extractExpressionDependencies, extractStringDependencies, getArrayLength, getChangedKeys, getFieldValueHandling, getGridClassString, getNestedValue, groupFieldMapper, hasChildFields, hasCrossFieldWhenCondition, hasFormValue, hasNestedProperty, hasTargetProperty, injectAddonTypeRegistry, injectFieldSignalContext, injectFieldsSupportingAddons, injectNonFieldEvaluationContext, interpolateParams, isArrayField, isCheckedField, isContainerField, isCrossFieldBuiltInValidator, isCrossFieldExpression, isCrossFieldSchema, isCrossFieldStateLogic, isCrossFieldValidator, isDerivationLogicConfig, isDisplayOnlyField, isEqual, isFieldBoundContext, isFormStateCondition, isFunctionHttpValidator, isGenericContainerField, isGroupField, isHiddenField, isLeafField, isNonPagedForm, isPageField, isPagedForm, isResourceBasedValidator, isRowField, isSimplifiedArrayField, isStateLogicConfig, isValidNonPagedForm, isValidPagedForm, isValueBearingField, isValueField, isWrapperTypeDefinition, keyBy, mapValues, memoize, normalizeFieldsArray, omit, pageFieldMapper, readFieldStateInfo,
|
|
3826
|
+
export { ADDON_ACTION_HANDLERS, ADDON_ACTION_REGISTRY, ADDON_TYPE_COMPONENT_CACHE, ADDON_TYPE_DEFINITIONS, ADDON_TYPE_REGISTRY, ARRAY_CONTEXT, AsyncConditionFunctionCacheService, ComponentInitializedEvent, DEFAULT_PROPS, DEFAULT_VALIDATION_MESSAGES, DEFAULT_WRAPPERS, DEPRECATION_WARNING_TRACKER, DF_FIELD_TEMPLATES, DfAddonSlot, DynamicFormError, DynamicFormLogger, DynamicTextPipe, DynamicValueFunctionCacheService, EMIT_FORM_VALUE_ON_EVENTS, EXTERNAL_DATA, EventBus, ExpressionParser, ExpressionParserError, FIELD_REGISTRY, FIELD_SIGNAL_CONTEXT, FORM_ID_PREFIX, FORM_OPTIONS, FieldContextRegistryService, FunctionRegistryService, GROUP_CONTEXT, HTTP_CONDITION_CACHE, HttpConditionCache, HttpConditionFunctionCacheService, INITIALIZATION_TIMEOUT_MS, LogicFunctionCacheService, NoopLogger, READONLY_FIELD_TREE_CACHE, RootFormRegistryService, TokenType, WRAPPER_AUTO_ASSOCIATIONS, WRAPPER_COMPONENT_CACHE, WRAPPER_REGISTRY, applyMetaToElement, applyValidator, applyValidators, arrayFieldMapper, assertNever, baseFieldMapper, buildBaseInputs, buildClassName, compareValues, containerFieldMapper, createAddonActionRegistry, createDebouncedLogicFunction, createDefaultDerivationLogConfig, createDynamicValueFunction, createFieldValueProxy, createFormFieldStateMap, createFormStateLogicFunction, createInitializationTracker, createLogicFunction, createWarningTracker, deepMergeDefaults, derivedFromDeferred, detectFormMode, dynamicTextToObservable, evaluateCondition, evaluateNonFieldDisabled, evaluateNonFieldHidden, extractExpressionDependencies, extractStringDependencies, getArrayLength, getChangedKeys, getFieldValueHandling, getGridClassString, getNestedValue, groupFieldMapper, hasChildFields, hasCrossFieldWhenCondition, hasFormValue, hasNestedProperty, hasTargetProperty, injectAddonTypeRegistry, injectFieldSignalContext, injectFieldsSupportingAddons, injectNonFieldEvaluationContext, interpolateParams, isArrayField, isCheckedField, isContainerField, isCrossFieldBuiltInValidator, isCrossFieldExpression, isCrossFieldSchema, isCrossFieldStateLogic, isCrossFieldValidator, isDerivationLogicConfig, isDisplayOnlyField, isEqual, isFieldBoundContext, isFormStateCondition, isFunctionHttpValidator, isGenericContainerField, isGroupField, isHiddenField, isLeafField, isNonPagedForm, isPageField, isPagedForm, isResourceBasedValidator, isRowField, isSimplifiedArrayField, isStateLogicConfig, isValidNonPagedForm, isValidPagedForm, isValueBearingField, isValueField, isWrapperTypeDefinition, keyBy, mapValues, memoize, normalizeFieldsArray, omit, pageFieldMapper, readFieldStateInfo, resolveDynamicValue, resolveHttpRequest, resolveNextButtonDisabled, resolveNonFieldDisabled, resolveNonFieldHidden, resolveSubmitButtonDisabled, resolveTokens, rowFieldMapper, runPresetAction, setupInitializationTracking, shouldLog, textFieldMapper, toReadonlyFieldTree, toReadonlyFieldTreeCached, validatePageNesting, withPreviousValue, writeToFieldValue };
|
|
3692
3827
|
//# sourceMappingURL=ng-forge-dynamic-forms-internal.mjs.map
|