@ng-forge/dynamic-forms 1.2.0-next.1 → 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.
Files changed (18) hide show
  1. package/fesm2022/{ng-forge-dynamic-forms-array-field.component-BVnXnaNw.mjs → ng-forge-dynamic-forms-array-field.component-B5t7W5fo.mjs} +2 -2
  2. package/fesm2022/{ng-forge-dynamic-forms-array-field.component-BVnXnaNw.mjs.map → ng-forge-dynamic-forms-array-field.component-B5t7W5fo.mjs.map} +1 -1
  3. package/fesm2022/{ng-forge-dynamic-forms-bootstrap-derivation-orchestrator-CkqvXXs_.mjs → ng-forge-dynamic-forms-bootstrap-derivation-orchestrator-D_DGkAXj.mjs} +2 -2
  4. package/fesm2022/{ng-forge-dynamic-forms-bootstrap-derivation-orchestrator-CkqvXXs_.mjs.map → ng-forge-dynamic-forms-bootstrap-derivation-orchestrator-D_DGkAXj.mjs.map} +1 -1
  5. package/fesm2022/{ng-forge-dynamic-forms-container-field.component-CM1pY9v5.mjs → ng-forge-dynamic-forms-container-field.component-CrWGMLMJ.mjs} +2 -2
  6. package/fesm2022/{ng-forge-dynamic-forms-container-field.component-CM1pY9v5.mjs.map → ng-forge-dynamic-forms-container-field.component-CrWGMLMJ.mjs.map} +1 -1
  7. package/fesm2022/{ng-forge-dynamic-forms-group-field.component-D4JhDffB.mjs → ng-forge-dynamic-forms-group-field.component-Ds_k0Tkn.mjs} +2 -2
  8. package/fesm2022/{ng-forge-dynamic-forms-group-field.component-D4JhDffB.mjs.map → ng-forge-dynamic-forms-group-field.component-Ds_k0Tkn.mjs.map} +1 -1
  9. package/fesm2022/ng-forge-dynamic-forms-integration.mjs.map +1 -1
  10. package/fesm2022/ng-forge-dynamic-forms-internal.mjs +19 -5
  11. package/fesm2022/ng-forge-dynamic-forms-internal.mjs.map +1 -1
  12. package/fesm2022/{ng-forge-dynamic-forms-ng-forge-dynamic-forms-ZiNaCWHl.mjs → ng-forge-dynamic-forms-ng-forge-dynamic-forms-DtnrCyH2.mjs} +12 -12
  13. package/fesm2022/ng-forge-dynamic-forms-ng-forge-dynamic-forms-DtnrCyH2.mjs.map +1 -0
  14. package/fesm2022/{ng-forge-dynamic-forms-page-field.component-Wbz6S8iH.mjs → ng-forge-dynamic-forms-page-field.component-PWJ-9bnw.mjs} +2 -2
  15. package/fesm2022/{ng-forge-dynamic-forms-page-field.component-Wbz6S8iH.mjs.map → ng-forge-dynamic-forms-page-field.component-PWJ-9bnw.mjs.map} +1 -1
  16. package/fesm2022/ng-forge-dynamic-forms.mjs +1 -1
  17. package/package.json +2 -2
  18. package/fesm2022/ng-forge-dynamic-forms-ng-forge-dynamic-forms-ZiNaCWHl.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 FORM_VALUE_PATTERN = /\bformValue\s*(?:\.([\w.]+)|\[\s*'([\w.-]+)'\s*\]|\[\s*"([\w.-]+)"\s*\])/g;
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;
@@ -576,6 +580,8 @@ class ExpressionParserError extends DynamicFormError {
576
580
  }
577
581
  }
578
582
 
583
+ const IDENTIFIER_START = /[\p{ID_Start}$_]/u;
584
+ const IDENTIFIER_PART = /[\p{ID_Continue}$]/u;
579
585
  class Tokenizer {
580
586
  position = 0;
581
587
  expression;
@@ -608,7 +614,7 @@ class Tokenizer {
608
614
  if (/[0-9]/.test(char)) {
609
615
  return this.readNumber();
610
616
  }
611
- if (/[a-zA-Z_$]/.test(char)) {
617
+ if (IDENTIFIER_START.test(this.codePointAt(this.position))) {
612
618
  return this.readIdentifierOrKeyword();
613
619
  }
614
620
  return this.readOperatorOrPunctuation();
@@ -667,12 +673,20 @@ class Tokenizer {
667
673
  readIdentifierOrKeyword() {
668
674
  const start = this.position;
669
675
  let value = '';
670
- while (this.position < this.expression.length && /[a-zA-Z0-9_$]/.test(this.expression[this.position])) {
671
- value += this.expression[this.position];
672
- this.position++;
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;
673
683
  }
674
684
  const type = this.getKeywordType(value);
675
685
  return { type, value, position: start };
686
+ }
687
+ codePointAt(position) {
688
+ const codePoint = this.expression.codePointAt(position);
689
+ return codePoint === undefined ? '' : String.fromCodePoint(codePoint);
676
690
  }
677
691
  getKeywordType(value) {
678
692
  switch (value) {