camunda-bpmn-js 5.12.0 → 5.13.0

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 (79) hide show
  1. package/LICENSE +20 -20
  2. package/README.md +88 -88
  3. package/dist/assets/base-modeler.css +5 -5
  4. package/dist/assets/base-navigated-viewer.css +1 -1
  5. package/dist/assets/base-viewer.css +1 -1
  6. package/dist/assets/camunda-cloud-modeler.css +2 -2
  7. package/dist/assets/camunda-platform-modeler.css +1 -1
  8. package/dist/base-modeler.development.js +2072 -540
  9. package/dist/base-modeler.production.min.js +32 -32
  10. package/dist/camunda-cloud-modeler.development.js +2424 -892
  11. package/dist/camunda-cloud-modeler.production.min.js +29 -29
  12. package/dist/camunda-cloud-navigated-viewer.development.js +40 -40
  13. package/dist/camunda-cloud-viewer.development.js +40 -40
  14. package/dist/camunda-platform-modeler.development.js +2517 -985
  15. package/dist/camunda-platform-modeler.production.min.js +29 -29
  16. package/dist/camunda-platform-navigated-viewer.development.js +27 -27
  17. package/dist/camunda-platform-viewer.development.js +27 -27
  18. package/lib/base/Modeler.d.ts +20 -20
  19. package/lib/base/Modeler.js +65 -65
  20. package/lib/base/NavigatedViewer.d.ts +2 -2
  21. package/lib/base/NavigatedViewer.js +2 -2
  22. package/lib/base/Viewer.d.ts +2 -2
  23. package/lib/base/Viewer.js +2 -2
  24. package/lib/camunda-cloud/ElementTemplatesValidator.d.ts +1 -1
  25. package/lib/camunda-cloud/Modeler.d.ts +3 -3
  26. package/lib/camunda-cloud/NavigatedViewer.d.ts +9 -9
  27. package/lib/camunda-cloud/NavigatedViewer.js +36 -36
  28. package/lib/camunda-cloud/Viewer.d.ts +9 -9
  29. package/lib/camunda-cloud/Viewer.js +36 -36
  30. package/lib/camunda-cloud/features/external-resources/ResourceLoader.d.ts +6 -6
  31. package/lib/camunda-cloud/features/external-resources/Resources.d.ts +7 -7
  32. package/lib/camunda-cloud/features/external-resources/cmd/ComposedCommandHandler.d.ts +12 -12
  33. package/lib/camunda-cloud/features/external-resources/cmd/index.d.ts +4 -4
  34. package/lib/camunda-cloud/features/external-resources/handlers/decision/AppendMenuProvider.d.ts +5 -5
  35. package/lib/camunda-cloud/features/external-resources/handlers/decision/CreateMenuProvider.d.ts +5 -5
  36. package/lib/camunda-cloud/features/external-resources/handlers/decision/ReplaceMenuProvider.d.ts +5 -5
  37. package/lib/camunda-cloud/features/external-resources/handlers/decision/createElement.d.ts +13 -13
  38. package/lib/camunda-cloud/features/external-resources/handlers/decision/index.d.ts +8 -8
  39. package/lib/camunda-cloud/features/external-resources/handlers/decision/replaceElement.d.ts +15 -15
  40. package/lib/camunda-cloud/features/external-resources/handlers/decision/searchTerms.d.ts +1 -1
  41. package/lib/camunda-cloud/features/external-resources/handlers/form/AppendMenuProvider.d.ts +5 -5
  42. package/lib/camunda-cloud/features/external-resources/handlers/form/CreateMenuProvider.d.ts +5 -5
  43. package/lib/camunda-cloud/features/external-resources/handlers/form/ReplaceMenuProvider.d.ts +5 -5
  44. package/lib/camunda-cloud/features/external-resources/handlers/form/createElement.d.ts +9 -9
  45. package/lib/camunda-cloud/features/external-resources/handlers/form/index.d.ts +8 -8
  46. package/lib/camunda-cloud/features/external-resources/handlers/form/replaceElement.d.ts +15 -15
  47. package/lib/camunda-cloud/features/external-resources/handlers/form/searchTerms.d.ts +1 -1
  48. package/lib/camunda-cloud/features/external-resources/handlers/process/AppendMenuProvider.d.ts +5 -5
  49. package/lib/camunda-cloud/features/external-resources/handlers/process/CreateMenuProvider.d.ts +5 -5
  50. package/lib/camunda-cloud/features/external-resources/handlers/process/ReplaceMenuProvider.d.ts +5 -5
  51. package/lib/camunda-cloud/features/external-resources/handlers/process/createElement.d.ts +14 -14
  52. package/lib/camunda-cloud/features/external-resources/handlers/process/index.d.ts +8 -8
  53. package/lib/camunda-cloud/features/external-resources/handlers/process/replaceElement.d.ts +16 -16
  54. package/lib/camunda-cloud/features/external-resources/handlers/process/searchTerms.d.ts +1 -1
  55. package/lib/camunda-cloud/features/external-resources/handlers/util/BaseAppendMenuProvider.d.ts +18 -18
  56. package/lib/camunda-cloud/features/external-resources/handlers/util/BaseCreateMenuProvider.d.ts +17 -17
  57. package/lib/camunda-cloud/features/external-resources/handlers/util/BaseReplaceMenuProvider.d.ts +22 -22
  58. package/lib/camunda-cloud/features/external-resources/index.d.ts +23 -23
  59. package/lib/camunda-cloud/features/popup-menu/CamundaDetailsPopupMenuProvider.d.ts +26 -26
  60. package/lib/camunda-cloud/features/popup-menu/CamundaDetailsPopupMenuProvider.js +153 -153
  61. package/lib/camunda-cloud/features/popup-menu/index.d.ts +6 -6
  62. package/lib/camunda-cloud/util/commonModules.d.ts +9 -9
  63. package/lib/camunda-cloud/util/commonModules.js +15 -15
  64. package/lib/camunda-platform/Modeler.d.ts +3 -3
  65. package/lib/camunda-platform/Modeler.js +68 -68
  66. package/lib/camunda-platform/NavigatedViewer.d.ts +9 -9
  67. package/lib/camunda-platform/NavigatedViewer.js +27 -27
  68. package/lib/camunda-platform/Viewer.d.ts +9 -9
  69. package/lib/camunda-platform/Viewer.js +27 -27
  70. package/lib/camunda-platform/util/commonModules.d.ts +9 -9
  71. package/lib/camunda-platform/util/commonModules.js +11 -11
  72. package/lib/util/ExtensionElementsUtil.d.ts +24 -24
  73. package/lib/util/ExtensionElementsUtil.js +68 -68
  74. package/package.json +141 -141
  75. package/styles/base-modeler.css +5 -5
  76. package/styles/base-navigated-viewer.css +1 -1
  77. package/styles/base-viewer.css +1 -1
  78. package/styles/camunda-cloud-modeler.css +2 -2
  79. package/styles/camunda-platform-modeler.css +1 -1
@@ -9277,7 +9277,7 @@
9277
9277
  *
9278
9278
  * @return {Object} the parsed name
9279
9279
  */
9280
- function parseName$2(name, defaultPrefix) {
9280
+ function parseName$3(name, defaultPrefix) {
9281
9281
  var parts = name.split(/:/),
9282
9282
  localName, prefix;
9283
9283
 
@@ -9413,8 +9413,8 @@
9413
9413
  var nsPrefix = p.ns.prefix;
9414
9414
  var parts = targetPropertyName.split('#');
9415
9415
 
9416
- var name = parseName$2(parts[0], nsPrefix);
9417
- var attrName = parseName$2(parts[1], name.prefix).name;
9416
+ var name = parseName$3(parts[0], nsPrefix);
9417
+ var attrName = parseName$3(parts[1], name.prefix).name;
9418
9418
 
9419
9419
  var redefinedProperty = this.propertiesByName[attrName];
9420
9420
  if (!redefinedProperty) {
@@ -9602,7 +9602,7 @@
9602
9602
  meta: assign$3((type.meta || {}))
9603
9603
  });
9604
9604
 
9605
- var ns = parseName$2(type.name, pkg.prefix),
9605
+ var ns = parseName$3(type.name, pkg.prefix),
9606
9606
  name = ns.name,
9607
9607
  propertiesByName = {};
9608
9608
 
@@ -9610,12 +9610,12 @@
9610
9610
  forEach$3(type.properties, bind$3(function(p) {
9611
9611
 
9612
9612
  // namespace property names
9613
- var propertyNs = parseName$2(p.name, ns.prefix),
9613
+ var propertyNs = parseName$3(p.name, ns.prefix),
9614
9614
  propertyName = propertyNs.name;
9615
9615
 
9616
9616
  // namespace property types
9617
9617
  if (!isBuiltIn$1(p.type)) {
9618
- p.type = parseName$2(p.type, propertyNs.prefix).name;
9618
+ p.type = parseName$3(p.type, propertyNs.prefix).name;
9619
9619
  }
9620
9620
 
9621
9621
  assign$3(p, {
@@ -9634,7 +9634,7 @@
9634
9634
  });
9635
9635
 
9636
9636
  forEach$3(type.extends, bind$3(function(extendsName) {
9637
- var extendsNameNs = parseName$2(extendsName, ns.prefix);
9637
+ var extendsNameNs = parseName$3(extendsName, ns.prefix);
9638
9638
 
9639
9639
  var extended = this.typeMap[extendsNameNs.name];
9640
9640
 
@@ -9672,7 +9672,7 @@
9672
9672
  * @param {Boolean} [trait=false]
9673
9673
  */
9674
9674
  function traverse(cls, trait) {
9675
- var parentNs = parseName$2(cls, isBuiltIn$1(cls) ? '' : nsName.prefix);
9675
+ var parentNs = parseName$3(cls, isBuiltIn$1(cls) ? '' : nsName.prefix);
9676
9676
  self.mapTypes(parentNs, iterator, trait);
9677
9677
  }
9678
9678
 
@@ -9716,7 +9716,7 @@
9716
9716
  */
9717
9717
  Registry$1.prototype.getEffectiveDescriptor = function(name) {
9718
9718
 
9719
- var nsName = parseName$2(name);
9719
+ var nsName = parseName$3(name);
9720
9720
 
9721
9721
  var builder = new DescriptorBuilder$1(nsName);
9722
9722
 
@@ -10048,7 +10048,7 @@
10048
10048
  */
10049
10049
  Moddle$1.prototype.createAny = function(name, nsUri, properties) {
10050
10050
 
10051
- var nameNs = parseName$2(name);
10051
+ var nameNs = parseName$3(name);
10052
10052
 
10053
10053
  var element = {
10054
10054
  $type: name,
@@ -11246,11 +11246,11 @@
11246
11246
  function normalizeTypeName$1(name, nsMap, model) {
11247
11247
 
11248
11248
  // normalize against actual NS
11249
- const nameNs = parseName$2(name, nsMap.xmlns);
11249
+ const nameNs = parseName$3(name, nsMap.xmlns);
11250
11250
 
11251
11251
  const normalizedName = `${ nsMap[nameNs.prefix] || nameNs.prefix }:${ nameNs.localName }`;
11252
11252
 
11253
- const normalizedNameNs = parseName$2(normalizedName);
11253
+ const normalizedNameNs = parseName$3(normalizedName);
11254
11254
 
11255
11255
  // determine actual type name, based on package-defined prefix
11256
11256
  var pkg = model.getPackage(normalizedNameNs.prefix);
@@ -11283,7 +11283,7 @@
11283
11283
  * @param {ElementHandler} options.rootHandler the root handler for parsing a document
11284
11284
  * @param {boolean} [options.lax=false] whether or not to ignore invalid elements
11285
11285
  */
11286
- function Context$2(options) {
11286
+ function Context$3(options) {
11287
11287
 
11288
11288
  /**
11289
11289
  * @property {ElementHandler} rootHandler
@@ -11547,7 +11547,7 @@
11547
11547
  } else if (name === 'xmlns') {
11548
11548
  name = ':' + name;
11549
11549
  } else {
11550
- propNameNs = parseName$2(name, descriptor.ns.prefix);
11550
+ propNameNs = parseName$3(name, descriptor.ns.prefix);
11551
11551
 
11552
11552
  // check whether attribute is defined in a well-known namespace
11553
11553
  // if that is the case we emit a warning to indicate potential misuse
@@ -11572,7 +11572,7 @@
11572
11572
  ElementHandler$1.prototype.getPropertyForNode = function(node) {
11573
11573
 
11574
11574
  var name = node.name;
11575
- var nameNs = parseName$2(name);
11575
+ var nameNs = parseName$3(name);
11576
11576
 
11577
11577
  var type = this.type,
11578
11578
  model = this.model,
@@ -11731,7 +11731,7 @@
11731
11731
  RootElementHandler$1.prototype.createElement = function(node) {
11732
11732
 
11733
11733
  var name = node.name,
11734
- nameNs = parseName$2(name),
11734
+ nameNs = parseName$3(name),
11735
11735
  model = this.model,
11736
11736
  type = this.type,
11737
11737
  pkg = model.getPackage(nameNs.prefix),
@@ -11759,7 +11759,7 @@
11759
11759
  GenericElementHandler$1.prototype.createElement = function(node) {
11760
11760
 
11761
11761
  var name = node.name,
11762
- ns = parseName$2(name),
11762
+ ns = parseName$3(name),
11763
11763
  prefix = ns.prefix,
11764
11764
  uri = node.ns[prefix + '$uri'],
11765
11765
  attributes = node.attributes;
@@ -11862,7 +11862,7 @@
11862
11862
  var model = this.model,
11863
11863
  lax = this.lax;
11864
11864
 
11865
- var context = new Context$2(assign$3({}, options, { rootHandler: rootHandler })),
11865
+ var context = new Context$3(assign$3({}, options, { rootHandler: rootHandler })),
11866
11866
  parser = new Parser$2({ proxy: true }),
11867
11867
  stack = createStack$1();
11868
11868
 
@@ -12488,7 +12488,7 @@
12488
12488
  var ns;
12489
12489
 
12490
12490
  if (isString$2(element)) {
12491
- ns = parseName$2(element);
12491
+ ns = parseName$3(element);
12492
12492
  } else {
12493
12493
  ns = element.ns;
12494
12494
  }
@@ -12540,7 +12540,7 @@
12540
12540
  ElementSerializer$1.prototype.parseNsAttribute = function(element, name, value) {
12541
12541
  var model = element.$model;
12542
12542
 
12543
- var nameNs = parseName$2(name);
12543
+ var nameNs = parseName$3(name);
12544
12544
 
12545
12545
  var ns;
12546
12546
 
@@ -26972,7 +26972,7 @@
26972
26972
  * @typedef { 'top' | 'right' | 'bottom' | 'left' | 'center' | 'middle' } Alignment
26973
26973
  */
26974
26974
 
26975
- function last$1(arr) {
26975
+ function last$2(arr) {
26976
26976
  return arr && arr[arr.length - 1];
26977
26977
  }
26978
26978
 
@@ -27071,7 +27071,7 @@
27071
27071
  alignment[type] = sortedElements[0][axis];
27072
27072
 
27073
27073
  } else if (this._isType(type, [ 'right', 'bottom' ])) {
27074
- lastElement = last$1(sortedElements);
27074
+ lastElement = last$2(sortedElements);
27075
27075
 
27076
27076
  alignment[type] = lastElement[axis] + lastElement[dimension];
27077
27077
 
@@ -27101,7 +27101,7 @@
27101
27101
  });
27102
27102
 
27103
27103
  if (hasSharedCenters) {
27104
- alignment[type] = last$1(centeredElements).center;
27104
+ alignment[type] = last$2(centeredElements).center;
27105
27105
 
27106
27106
  return alignment;
27107
27107
  }
@@ -27112,7 +27112,7 @@
27112
27112
  return element[axis] + element[dimension];
27113
27113
  });
27114
27114
 
27115
- lastElement = last$1(sortedElements);
27115
+ lastElement = last$2(sortedElements);
27116
27116
 
27117
27117
  alignment[type] = getMiddleOrTop(firstElement, lastElement);
27118
27118
  }
@@ -64172,7 +64172,7 @@
64172
64172
  });
64173
64173
 
64174
64174
  keyboard && keyboard.addListener(HIGH_PRIORITY$9, function(e) {
64175
- if (!isSpace$1(e.keyEvent) || self.isActive()) {
64175
+ if (!isSpace$2(e.keyEvent) || self.isActive()) {
64176
64176
  return;
64177
64177
  }
64178
64178
 
@@ -64182,7 +64182,7 @@
64182
64182
  }, 'keyboard.keydown');
64183
64183
 
64184
64184
  keyboard && keyboard.addListener(HIGH_PRIORITY$9, function(e) {
64185
- if (!isSpace$1(e.keyEvent) || !self.isActive()) {
64185
+ if (!isSpace$2(e.keyEvent) || !self.isActive()) {
64186
64186
  return;
64187
64187
  }
64188
64188
 
@@ -64302,7 +64302,7 @@
64302
64302
 
64303
64303
  // helpers //////////
64304
64304
 
64305
- function isSpace$1(keyEvent) {
64305
+ function isSpace$2(keyEvent) {
64306
64306
  return isKey$1('Space', keyEvent);
64307
64307
  }
64308
64308
 
@@ -81748,74 +81748,74 @@
81748
81748
  }
81749
81749
 
81750
81750
  // This file was generated by lezer-generator. You probably shouldn't edit it.
81751
- const propertyIdentifier = 121,
81752
- identifier = 122,
81753
- nameIdentifier = 123,
81754
- insertSemi = 124,
81755
- expression0 = 128,
81756
- ForExpression = 4,
81757
- forExpressionStart = 131,
81758
- ForInExpression = 7,
81759
- Name = 8,
81760
- Identifier = 9,
81761
- AdditionalIdentifier = 10,
81762
- forExpressionBodyStart = 139,
81763
- IfExpression = 19,
81764
- ifExpressionStart = 140,
81765
- QuantifiedExpression = 23,
81766
- quantifiedExpressionStart = 141,
81767
- QuantifiedInExpression = 27,
81768
- PositiveUnaryTest = 37,
81769
- ArithmeticExpression = 41,
81770
- arithmeticPlusStart = 145,
81771
- arithmeticTimesStart = 146,
81772
- arithmeticExpStart = 147,
81773
- arithmeticUnaryStart = 148,
81774
- VariableName = 47,
81775
- PathExpression = 68,
81776
- pathExpressionStart = 154,
81777
- FilterExpression = 70,
81778
- filterExpressionStart = 155,
81779
- FunctionInvocation = 72,
81780
- functionInvocationStart = 156,
81781
- ParameterName = 76,
81782
- nil = 161,
81783
- NumericLiteral = 79,
81784
- StringLiteral = 80,
81785
- BooleanLiteral = 81,
81786
- listStart = 167,
81787
- List = 89,
81788
- FunctionDefinition = 90,
81789
- functionDefinitionStart = 169,
81790
- Context$1 = 97,
81791
- contextStart = 171,
81792
- ContextEntry = 98,
81793
- PropertyName = 100,
81794
- PropertyIdentifier = 101;
81751
+ const propertyIdentifier$1 = 121,
81752
+ identifier$1 = 122,
81753
+ nameIdentifier$1 = 123,
81754
+ insertSemi$1 = 124,
81755
+ expression0$1 = 128,
81756
+ ForExpression$1 = 4,
81757
+ forExpressionStart$1 = 131,
81758
+ ForInExpression$1 = 7,
81759
+ Name$1 = 8,
81760
+ Identifier$1 = 9,
81761
+ AdditionalIdentifier$1 = 10,
81762
+ forExpressionBodyStart$1 = 139,
81763
+ IfExpression$1 = 19,
81764
+ ifExpressionStart$1 = 140,
81765
+ QuantifiedExpression$1 = 23,
81766
+ quantifiedExpressionStart$1 = 141,
81767
+ QuantifiedInExpression$1 = 27,
81768
+ PositiveUnaryTest$1 = 37,
81769
+ ArithmeticExpression$1 = 41,
81770
+ arithmeticPlusStart$1 = 145,
81771
+ arithmeticTimesStart$1 = 146,
81772
+ arithmeticExpStart$1 = 147,
81773
+ arithmeticUnaryStart$1 = 148,
81774
+ VariableName$1 = 47,
81775
+ PathExpression$1 = 68,
81776
+ pathExpressionStart$1 = 154,
81777
+ FilterExpression$1 = 70,
81778
+ filterExpressionStart$1 = 155,
81779
+ FunctionInvocation$1 = 72,
81780
+ functionInvocationStart$1 = 156,
81781
+ ParameterName$1 = 76,
81782
+ nil$1 = 161,
81783
+ NumericLiteral$1 = 79,
81784
+ StringLiteral$1 = 80,
81785
+ BooleanLiteral$1 = 81,
81786
+ listStart$1 = 167,
81787
+ List$1 = 89,
81788
+ FunctionDefinition$1 = 90,
81789
+ functionDefinitionStart$1 = 169,
81790
+ Context$2 = 97,
81791
+ contextStart$1 = 171,
81792
+ ContextEntry$1 = 98,
81793
+ PropertyName$1 = 100,
81794
+ PropertyIdentifier$1 = 101;
81795
81795
 
81796
81796
  /* global console,process */
81797
81797
 
81798
81798
 
81799
81799
  // @ts-expect-error env access
81800
- const LOG_PARSE = typeof process != 'undefined' && process.env && /\bfparse(:dbg)?\b/.test(process.env.LOG);
81800
+ const LOG_PARSE$1 = typeof process != 'undefined' && process.env && /\bfparse(:dbg)?\b/.test(process.env.LOG);
81801
81801
 
81802
81802
  // @ts-expect-error env access
81803
- const LOG_PARSE_DEBUG = typeof process != 'undefined' && process.env && /\bfparse:dbg\b/.test(process.env.LOG);
81803
+ const LOG_PARSE_DEBUG$1 = typeof process != 'undefined' && process.env && /\bfparse:dbg\b/.test(process.env.LOG);
81804
81804
 
81805
81805
  // @ts-expect-error env access
81806
- const LOG_VARS = typeof process != 'undefined' && process.env && /\bcontext\b/.test(process.env.LOG);
81806
+ const LOG_VARS$1 = typeof process != 'undefined' && process.env && /\bcontext\b/.test(process.env.LOG);
81807
81807
 
81808
- const spaceChars = [
81808
+ const spaceChars$1 = [
81809
81809
  9, 11, 12, 32, 133, 160,
81810
81810
  5760, 8192, 8193, 8194, 8195, 8196, 8197, 8198,
81811
81811
  8199, 8200, 8201, 8202, 8232, 8233, 8239, 8287, 12288
81812
81812
  ];
81813
81813
 
81814
- const newlineChars = chars$1('\n\r');
81814
+ const newlineChars$1 = chars$2('\n\r');
81815
81815
 
81816
- const asterix = '*'.charCodeAt(0);
81816
+ const asterix$1 = '*'.charCodeAt(0);
81817
81817
 
81818
- const additionalNameChars = chars$1("'./-+*^");
81818
+ const additionalNameChars$1 = chars$2("'./-+*^");
81819
81819
 
81820
81820
  /**
81821
81821
  * @typedef { VariableContext | any } ContextValue
@@ -81825,7 +81825,7 @@
81825
81825
  * @param { string } str
81826
81826
  * @return { number[] }
81827
81827
  */
81828
- function chars$1(str) {
81828
+ function chars$2(str) {
81829
81829
  return Array.from(str).map(s => s.charCodeAt(0));
81830
81830
  }
81831
81831
 
@@ -81833,7 +81833,7 @@
81833
81833
  * @param { number } ch
81834
81834
  * @return { boolean }
81835
81835
  */
81836
- function isStartChar(ch) {
81836
+ function isStartChar$1(ch) {
81837
81837
  return (
81838
81838
  ch === 63 // ?
81839
81839
  ) || (
@@ -81875,15 +81875,15 @@
81875
81875
  * @param { number } ch
81876
81876
  * @return { boolean }
81877
81877
  */
81878
- function isAdditional(ch) {
81879
- return additionalNameChars.includes(ch);
81878
+ function isAdditional$1(ch) {
81879
+ return additionalNameChars$1.includes(ch);
81880
81880
  }
81881
81881
 
81882
81882
  /**
81883
81883
  * @param { number } ch
81884
81884
  * @return { boolean }
81885
81885
  */
81886
- function isPartChar(ch) {
81886
+ function isPartChar$1(ch) {
81887
81887
  return (
81888
81888
  ch >= 48 && ch <= 57 // 0-9
81889
81889
  ) || (
@@ -81899,11 +81899,11 @@
81899
81899
  * @param { number } ch
81900
81900
  * @return { boolean }
81901
81901
  */
81902
- function isSpace(ch) {
81903
- return spaceChars.includes(ch);
81902
+ function isSpace$1(ch) {
81903
+ return spaceChars$1.includes(ch);
81904
81904
  }
81905
81905
 
81906
- function indent(str, spaces) {
81906
+ function indent$1(str, spaces) {
81907
81907
  return spaces.concat(
81908
81908
  str.split(/\n/g).join('\n' + spaces)
81909
81909
  );
@@ -81915,11 +81915,11 @@
81915
81915
  *
81916
81916
  * @return { { token: string, offset: number } | null }
81917
81917
  */
81918
- function parseAdditionalSymbol(input, offset = 0) {
81918
+ function parseAdditionalSymbol$1(input, offset = 0) {
81919
81919
 
81920
81920
  const next = input.peek(offset);
81921
81921
 
81922
- if (next === asterix && input.peek(offset + 1) === asterix) {
81922
+ if (next === asterix$1 && input.peek(offset + 1) === asterix$1) {
81923
81923
 
81924
81924
  return {
81925
81925
  offset: 2,
@@ -81927,7 +81927,7 @@
81927
81927
  };
81928
81928
  }
81929
81929
 
81930
- if (isAdditional(next)) {
81930
+ if (isAdditional$1(next)) {
81931
81931
  return {
81932
81932
  offset: 1,
81933
81933
  token: String.fromCharCode(next)
@@ -81944,11 +81944,11 @@
81944
81944
  *
81945
81945
  * @return { { token: string, offset: number } | null }
81946
81946
  */
81947
- function parseIdentifier(input, offset = 0, namePart = false) {
81947
+ function parseIdentifier$1(input, offset = 0, namePart = false) {
81948
81948
  for (let inside = false, chars = [], i = 0;; i++) {
81949
81949
  const next = input.peek(offset + i);
81950
81950
 
81951
- if (isStartChar(next) || ((inside || namePart) && isPartChar(next))) {
81951
+ if (isStartChar$1(next) || ((inside || namePart) && isPartChar$1(next))) {
81952
81952
  if (!inside) {
81953
81953
  inside = true;
81954
81954
  }
@@ -81974,12 +81974,12 @@
81974
81974
  *
81975
81975
  * @return { { token: string, offset: number } | null }
81976
81976
  */
81977
- function parseSpaces(input, offset) {
81977
+ function parseSpaces$1(input, offset) {
81978
81978
 
81979
81979
  for (let inside = false, i = 0;; i++) {
81980
81980
  let next = input.peek(offset + i);
81981
81981
 
81982
- if (isSpace(next)) {
81982
+ if (isSpace$1(next)) {
81983
81983
  if (!inside) {
81984
81984
  inside = true;
81985
81985
  }
@@ -82004,7 +82004,7 @@
82004
82004
  *
82005
82005
  * @return { { token: string, offset: number, term: number } | null }
82006
82006
  */
82007
- function parseName$1(input, variables) {
82007
+ function parseName$2(input, variables) {
82008
82008
  const contextKeys = variables.contextKeys();
82009
82009
 
82010
82010
  const start = variables.tokens;
@@ -82015,9 +82015,9 @@
82015
82015
  const maybeSpace = tokens.length > 0;
82016
82016
 
82017
82017
  const match = (
82018
- parseIdentifier(input, i, namePart) ||
82019
- namePart && parseAdditionalSymbol(input, i) ||
82020
- maybeSpace && parseSpaces(input, i)
82018
+ parseIdentifier$1(input, i, namePart) ||
82019
+ namePart && parseAdditionalSymbol$1(input, i) ||
82020
+ maybeSpace && parseSpaces$1(input, i)
82021
82021
  );
82022
82022
 
82023
82023
  // match is required
@@ -82046,7 +82046,7 @@
82046
82046
  nextMatch = {
82047
82047
  token,
82048
82048
  offset: token.length,
82049
- term: nameIdentifier
82049
+ term: nameIdentifier$1
82050
82050
  };
82051
82051
  }
82052
82052
 
@@ -82054,7 +82054,7 @@
82054
82054
  continue;
82055
82055
  }
82056
82056
 
82057
- if (dateTimeIdentifiers.some(el => el === name)) {
82057
+ if (dateTimeIdentifiers$1.some(el => el === name)) {
82058
82058
  const token = tokens[0];
82059
82059
 
82060
82060
  // parse date time identifiers as normal
@@ -82064,11 +82064,11 @@
82064
82064
  nextMatch = {
82065
82065
  token,
82066
82066
  offset: token.length,
82067
- term: identifier
82067
+ term: identifier$1
82068
82068
  };
82069
82069
  }
82070
82070
 
82071
- if (dateTimeIdentifiers.some(el => el.startsWith(name))) {
82071
+ if (dateTimeIdentifiers$1.some(el => el.startsWith(name))) {
82072
82072
  continue;
82073
82073
  }
82074
82074
 
@@ -82077,50 +82077,50 @@
82077
82077
 
82078
82078
  }
82079
82079
 
82080
- const identifiersMap = {
82081
- [ identifier ]: 'identifier',
82082
- [ nameIdentifier ]: 'nameIdentifier'
82080
+ const identifiersMap$1 = {
82081
+ [ identifier$1 ]: 'identifier',
82082
+ [ nameIdentifier$1 ]: 'nameIdentifier'
82083
82083
  };
82084
82084
 
82085
- const identifiers$1 = new ExternalTokenizer((input, stack) => {
82085
+ const identifiers$2 = new ExternalTokenizer((input, stack) => {
82086
82086
 
82087
- LOG_PARSE_DEBUG && console.log('%s: T <identifier | nameIdentifier>', input.pos);
82087
+ LOG_PARSE_DEBUG$1 && console.log('%s: T <identifier | nameIdentifier>', input.pos);
82088
82088
 
82089
- const nameMatch = parseName$1(input, stack.context);
82089
+ const nameMatch = parseName$2(input, stack.context);
82090
82090
 
82091
82091
  const start = stack.context.tokens;
82092
82092
 
82093
- const match = nameMatch || parseIdentifier(input, 0, start.length > 0);
82093
+ const match = nameMatch || parseIdentifier$1(input, 0, start.length > 0);
82094
82094
 
82095
82095
  if (match) {
82096
82096
  input.advance(match.offset);
82097
- input.acceptToken(nameMatch ? nameMatch.term : identifier);
82097
+ input.acceptToken(nameMatch ? nameMatch.term : identifier$1);
82098
82098
 
82099
- LOG_PARSE && console.log('%s: MATCH <%s> <%s>', input.pos, nameMatch ? identifiersMap[nameMatch.term] : 'identifier', match.token);
82099
+ LOG_PARSE$1 && console.log('%s: MATCH <%s> <%s>', input.pos, nameMatch ? identifiersMap$1[nameMatch.term] : 'identifier', match.token);
82100
82100
  }
82101
82101
  }, { contextual: true });
82102
82102
 
82103
82103
 
82104
- const propertyIdentifiers = new ExternalTokenizer((input, stack) => {
82104
+ const propertyIdentifiers$1 = new ExternalTokenizer((input, stack) => {
82105
82105
 
82106
- LOG_PARSE_DEBUG && console.log('%s: T <propertyIdentifier>', input.pos);
82106
+ LOG_PARSE_DEBUG$1 && console.log('%s: T <propertyIdentifier>', input.pos);
82107
82107
 
82108
82108
  const start = stack.context.tokens;
82109
82109
 
82110
- const match = parseIdentifier(input, 0, start.length > 0);
82110
+ const match = parseIdentifier$1(input, 0, start.length > 0);
82111
82111
 
82112
82112
  if (match) {
82113
82113
  input.advance(match.offset);
82114
- input.acceptToken(propertyIdentifier);
82114
+ input.acceptToken(propertyIdentifier$1);
82115
82115
 
82116
- LOG_PARSE && console.log('%s: MATCH <propertyIdentifier> <%s>', input.pos, match.token);
82116
+ LOG_PARSE$1 && console.log('%s: MATCH <propertyIdentifier> <%s>', input.pos, match.token);
82117
82117
  }
82118
82118
  });
82119
82119
 
82120
82120
 
82121
- const insertSemicolon = new ExternalTokenizer((input, stack) => {
82121
+ const insertSemicolon$1 = new ExternalTokenizer((input, stack) => {
82122
82122
 
82123
- LOG_PARSE_DEBUG && console.log('%s: T <insertSemi>', input.pos);
82123
+ LOG_PARSE_DEBUG$1 && console.log('%s: T <insertSemi>', input.pos);
82124
82124
 
82125
82125
  let offset;
82126
82126
  let insert = false;
@@ -82128,11 +82128,11 @@
82128
82128
  for (offset = 0;; offset++) {
82129
82129
  const char = input.peek(offset);
82130
82130
 
82131
- if (spaceChars.includes(char)) {
82131
+ if (spaceChars$1.includes(char)) {
82132
82132
  continue;
82133
82133
  }
82134
82134
 
82135
- if (newlineChars.includes(char)) {
82135
+ if (newlineChars$1.includes(char)) {
82136
82136
  insert = true;
82137
82137
  }
82138
82138
 
@@ -82141,51 +82141,51 @@
82141
82141
 
82142
82142
  if (insert) {
82143
82143
 
82144
- const identifier = parseIdentifier(input, offset + 1);
82145
- const spaces = parseSpaces(input, offset + 1);
82144
+ const identifier = parseIdentifier$1(input, offset + 1);
82145
+ const spaces = parseSpaces$1(input, offset + 1);
82146
82146
 
82147
82147
  if (spaces || identifier && /^(then|else|return|satisfies)$/.test(identifier.token)) {
82148
82148
  return;
82149
82149
  }
82150
82150
 
82151
- LOG_PARSE && console.log('%s: MATCH <insertSemi>', input.pos);
82152
- input.acceptToken(insertSemi);
82151
+ LOG_PARSE$1 && console.log('%s: MATCH <insertSemi>', input.pos);
82152
+ input.acceptToken(insertSemi$1);
82153
82153
  }
82154
82154
  });
82155
82155
 
82156
- const prefixedContextStarts = {
82157
- [ functionInvocationStart ]: 'FunctionInvocation',
82158
- [ filterExpressionStart ]: 'FilterExpression',
82159
- [ pathExpressionStart ]: 'PathExpression'
82156
+ const prefixedContextStarts$1 = {
82157
+ [ functionInvocationStart$1 ]: 'FunctionInvocation',
82158
+ [ filterExpressionStart$1 ]: 'FilterExpression',
82159
+ [ pathExpressionStart$1 ]: 'PathExpression'
82160
82160
  };
82161
82161
 
82162
- const contextStarts = {
82163
- [ contextStart ]: 'Context',
82164
- [ functionDefinitionStart ]: 'FunctionDefinition',
82165
- [ forExpressionStart ]: 'ForExpression',
82166
- [ listStart ]: 'List',
82167
- [ ifExpressionStart ]: 'IfExpression',
82168
- [ quantifiedExpressionStart ]: 'QuantifiedExpression'
82162
+ const contextStarts$1 = {
82163
+ [ contextStart$1 ]: 'Context',
82164
+ [ functionDefinitionStart$1 ]: 'FunctionDefinition',
82165
+ [ forExpressionStart$1 ]: 'ForExpression',
82166
+ [ listStart$1 ]: 'List',
82167
+ [ ifExpressionStart$1 ]: 'IfExpression',
82168
+ [ quantifiedExpressionStart$1 ]: 'QuantifiedExpression'
82169
82169
  };
82170
82170
 
82171
- const contextEnds = {
82172
- [ Context$1 ]: 'Context',
82173
- [ FunctionDefinition ]: 'FunctionDefinition',
82174
- [ ForExpression ]: 'ForExpression',
82175
- [ List ]: 'List',
82176
- [ IfExpression ]: 'IfExpression',
82177
- [ QuantifiedExpression ]: 'QuantifiedExpression',
82178
- [ PathExpression ]: 'PathExpression',
82179
- [ FunctionInvocation ]: 'FunctionInvocation',
82180
- [ FilterExpression ]: 'FilterExpression',
82181
- [ ArithmeticExpression ]: 'ArithmeticExpression'
82171
+ const contextEnds$1 = {
82172
+ [ Context$2 ]: 'Context',
82173
+ [ FunctionDefinition$1 ]: 'FunctionDefinition',
82174
+ [ ForExpression$1 ]: 'ForExpression',
82175
+ [ List$1 ]: 'List',
82176
+ [ IfExpression$1 ]: 'IfExpression',
82177
+ [ QuantifiedExpression$1 ]: 'QuantifiedExpression',
82178
+ [ PathExpression$1 ]: 'PathExpression',
82179
+ [ FunctionInvocation$1 ]: 'FunctionInvocation',
82180
+ [ FilterExpression$1 ]: 'FilterExpression',
82181
+ [ ArithmeticExpression$1 ]: 'ArithmeticExpression'
82182
82182
  };
82183
82183
 
82184
82184
  /**
82185
82185
  * A simple producer that retrievs a value from
82186
82186
  * a given context. Used to lazily take things.
82187
82187
  */
82188
- class ValueProducer {
82188
+ let ValueProducer$1 = class ValueProducer {
82189
82189
 
82190
82190
  /**
82191
82191
  * @param { Function } fn
@@ -82207,22 +82207,22 @@
82207
82207
  return new ValueProducer(fn);
82208
82208
  }
82209
82209
 
82210
- }
82210
+ };
82211
82211
 
82212
- const dateTimeLiterals = {
82212
+ const dateTimeLiterals$1 = {
82213
82213
  'date and time': 1,
82214
82214
  'date': 1,
82215
82215
  'time': 1,
82216
82216
  'duration': 1
82217
82217
  };
82218
82218
 
82219
- const dateTimeIdentifiers = Object.keys(dateTimeLiterals);
82219
+ const dateTimeIdentifiers$1 = Object.keys(dateTimeLiterals$1);
82220
82220
 
82221
82221
 
82222
82222
  /**
82223
82223
  * A basic key-value store to hold context values.
82224
82224
  */
82225
- class VariableContext {
82225
+ let VariableContext$1 = class VariableContext {
82226
82226
 
82227
82227
  /**
82228
82228
  * Creates a new context from a JavaScript object.
@@ -82311,7 +82311,7 @@
82311
82311
  static isAtomic(value) {
82312
82312
  return !value ||
82313
82313
  value instanceof this ||
82314
- value instanceof ValueProducer ||
82314
+ value instanceof ValueProducer$1 ||
82315
82315
  typeof value !== 'object';
82316
82316
  }
82317
82317
 
@@ -82362,7 +82362,7 @@
82362
82362
  static __merge(context, other) {
82363
82363
 
82364
82364
  return reduce(this.__unwrap(other), (merged, value, key) => {
82365
- if (value instanceof ValueProducer) {
82365
+ if (value instanceof ValueProducer$1) {
82366
82366
 
82367
82367
  // keep value producers in tact
82368
82368
  return {
@@ -82384,9 +82384,9 @@
82384
82384
  }, this.__unwrap(context));
82385
82385
  }
82386
82386
 
82387
- }
82387
+ };
82388
82388
 
82389
- class Variables {
82389
+ let Variables$1 = class Variables {
82390
82390
 
82391
82391
  /**
82392
82392
  * @param { {
@@ -82424,7 +82424,7 @@
82424
82424
  parent: this
82425
82425
  });
82426
82426
 
82427
- LOG_VARS && console.log('[%s] enter', childScope.path, childScope.context);
82427
+ LOG_VARS$1 && console.log('[%s] enter', childScope.path, childScope.context);
82428
82428
 
82429
82429
  return childScope;
82430
82430
  }
@@ -82432,19 +82432,19 @@
82432
82432
  exitScope(str) {
82433
82433
 
82434
82434
  if (!this.parent) {
82435
- LOG_VARS && console.log('[%s] NO exit %o\n%s', this.path, this.context, indent(str, ' '));
82435
+ LOG_VARS$1 && console.log('[%s] NO exit %o\n%s', this.path, this.context, indent$1(str, ' '));
82436
82436
 
82437
82437
  return this;
82438
82438
  }
82439
82439
 
82440
- LOG_VARS && console.log('[%s] exit %o\n%s', this.path, this.context, indent(str, ' '));
82440
+ LOG_VARS$1 && console.log('[%s] exit %o\n%s', this.path, this.context, indent$1(str, ' '));
82441
82441
 
82442
82442
  return this.parent.pushChild(this);
82443
82443
  }
82444
82444
 
82445
82445
  token(part) {
82446
82446
 
82447
- LOG_VARS && console.log('[%s] token <%s> + <%s>', this.path, this.tokens.join(' '), part);
82447
+ LOG_VARS$1 && console.log('[%s] token <%s> + <%s>', this.path, this.tokens.join(' '), part);
82448
82448
 
82449
82449
  return this.assign({
82450
82450
  tokens: [ ...this.tokens, part ]
@@ -82453,7 +82453,7 @@
82453
82453
 
82454
82454
  literal(value) {
82455
82455
 
82456
- LOG_VARS && console.log('[%s] literal %o', this.path, value);
82456
+ LOG_VARS$1 && console.log('[%s] literal %o', this.path, value);
82457
82457
 
82458
82458
  return this.pushChild(this.of({
82459
82459
  name: 'Literal',
@@ -82467,7 +82467,7 @@
82467
82467
  * @return {any}
82468
82468
  */
82469
82469
  computedValue() {
82470
- for (let scope = this;;scope = last(scope.children)) {
82470
+ for (let scope = this;;scope = last$1(scope.children)) {
82471
82471
 
82472
82472
  if (!scope) {
82473
82473
  return null;
@@ -82480,7 +82480,7 @@
82480
82480
  }
82481
82481
 
82482
82482
  contextKeys() {
82483
- return this.context.getKeys().map(normalizeContextKey);
82483
+ return this.context.getKeys().map(normalizeContextKey$1);
82484
82484
  }
82485
82485
 
82486
82486
  get path() {
@@ -82495,10 +82495,10 @@
82495
82495
  */
82496
82496
  get(variable) {
82497
82497
 
82498
- const names = [ variable, variable && normalizeContextKey(variable) ];
82498
+ const names = [ variable, variable && normalizeContextKey$1(variable) ];
82499
82499
 
82500
82500
  const contextKey = this.context.getKeys().find(
82501
- key => names.includes(normalizeContextKey(key))
82501
+ key => names.includes(normalizeContextKey$1(key))
82502
82502
  );
82503
82503
 
82504
82504
  if (typeof contextKey === 'undefined') {
@@ -82507,7 +82507,7 @@
82507
82507
 
82508
82508
  const val = this.context.get(contextKey);
82509
82509
 
82510
- if (val instanceof ValueProducer) {
82510
+ if (val instanceof ValueProducer$1) {
82511
82511
  return val.get(this);
82512
82512
  } else {
82513
82513
  return val;
@@ -82530,7 +82530,7 @@
82530
82530
  raw: variable
82531
82531
  });
82532
82532
 
82533
- LOG_VARS && console.log('[%s] resolve name <%s=%s>', variableScope.path, variable, this.get(variable));
82533
+ LOG_VARS$1 && console.log('[%s] resolve name <%s=%s>', variableScope.path, variable, this.get(variable));
82534
82534
 
82535
82535
  return parentScope.pushChild(variableScope);
82536
82536
  }
@@ -82572,7 +82572,7 @@
82572
82572
 
82573
82573
  const variableName = this.tokens.join(' ');
82574
82574
 
82575
- LOG_VARS && console.log('[%s] declareName <%s>', this.path, variableName);
82575
+ LOG_VARS$1 && console.log('[%s] declareName <%s>', this.path, variableName);
82576
82576
 
82577
82577
  return this.assign({
82578
82578
  tokens: []
@@ -82587,12 +82587,12 @@
82587
82587
  define(name, value) {
82588
82588
 
82589
82589
  if (typeof name !== 'string') {
82590
- LOG_VARS && console.log('[%s] no define <%s=%s>', this.path, name, value);
82590
+ LOG_VARS$1 && console.log('[%s] no define <%s=%s>', this.path, name, value);
82591
82591
 
82592
82592
  return this;
82593
82593
  }
82594
82594
 
82595
- LOG_VARS && console.log('[%s] define <%s=%s>', this.path, name, value);
82595
+ LOG_VARS$1 && console.log('[%s] define <%s=%s>', this.path, name, value);
82596
82596
 
82597
82597
  const context = this.context.set(name, value);
82598
82598
 
@@ -82672,14 +82672,14 @@
82672
82672
  });
82673
82673
  }
82674
82674
 
82675
- }
82675
+ };
82676
82676
 
82677
82677
  /**
82678
82678
  * @param { string } name
82679
82679
  *
82680
82680
  * @return { string } normalizedName
82681
82681
  */
82682
- function normalizeContextKey(name) {
82682
+ function normalizeContextKey$1(name) {
82683
82683
  return name.replace(/\s*([./\-'+]|\*\*?)\s*/g, ' $1 ').replace(/\s{2,}/g, ' ').trim();
82684
82684
  }
82685
82685
 
@@ -82691,7 +82691,7 @@
82691
82691
  * @param { string } code
82692
82692
  * @return { Variables }
82693
82693
  */
82694
- function wrap(variables, scopeName, code) {
82694
+ function wrap$1(variables, scopeName, code) {
82695
82695
 
82696
82696
  const parts = variables.children.filter(c => c.name !== scopeName);
82697
82697
  const children = variables.children.filter(c => c.name === scopeName);
@@ -82718,9 +82718,9 @@
82718
82718
  *
82719
82719
  * @return { ContextTracker<Variables> }
82720
82720
  */
82721
- function trackVariables(context = {}, Context = VariableContext) {
82721
+ function trackVariables$1(context = {}, Context = VariableContext$1) {
82722
82722
 
82723
- const start = Variables.of({
82723
+ const start = Variables$1.of({
82724
82724
  context: Context.of(context)
82725
82725
  });
82726
82726
 
@@ -82728,7 +82728,7 @@
82728
82728
  start,
82729
82729
  reduce(variables, term, stack, input) {
82730
82730
 
82731
- if (term === IfExpression) {
82731
+ if (term === IfExpression$1) {
82732
82732
  const [ thenPart, elsePart ] = variables.children.slice(-2);
82733
82733
 
82734
82734
  variables = variables.assign({
@@ -82739,7 +82739,7 @@
82739
82739
  });
82740
82740
  }
82741
82741
 
82742
- if (term === List) {
82742
+ if (term === List$1) {
82743
82743
  variables = variables.assign({
82744
82744
  value: Context.of(
82745
82745
  ...variables.children.map(
@@ -82749,7 +82749,7 @@
82749
82749
  });
82750
82750
  }
82751
82751
 
82752
- if (term === FilterExpression) {
82752
+ if (term === FilterExpression$1) {
82753
82753
  const [ sourcePart, _ ] = variables.children.slice(-2);
82754
82754
 
82755
82755
  variables = variables.assign({
@@ -82757,7 +82757,7 @@
82757
82757
  });
82758
82758
  }
82759
82759
 
82760
- if (term === FunctionInvocation) {
82760
+ if (term === FunctionInvocation$1) {
82761
82761
 
82762
82762
  const [
82763
82763
  name,
@@ -82766,17 +82766,17 @@
82766
82766
 
82767
82767
  // preserve type information through `get value(context, key)` utility
82768
82768
  if (name?.raw === 'get value') {
82769
- variables = getContextValue(variables, args);
82769
+ variables = getContextValue$1(variables, args);
82770
82770
  }
82771
82771
  }
82772
82772
 
82773
- const start = contextStarts[term];
82773
+ const start = contextStarts$1[term];
82774
82774
 
82775
82775
  if (start) {
82776
82776
  return variables.enterScope(start);
82777
82777
  }
82778
82778
 
82779
- const prefixedStart = prefixedContextStarts[term];
82779
+ const prefixedStart = prefixedContextStarts$1[term];
82780
82780
 
82781
82781
  // pull <expression> into new <prefixedStart> context
82782
82782
  if (prefixedStart) {
@@ -82787,15 +82787,15 @@
82787
82787
  } = variables;
82788
82788
 
82789
82789
  const children = currentChildren.slice(0, -1);
82790
- const lastChild = last(currentChildren);
82790
+ const lastChild = last$1(currentChildren);
82791
82791
 
82792
82792
  let newContext = null;
82793
82793
 
82794
- if (term === pathExpressionStart) {
82794
+ if (term === pathExpressionStart$1) {
82795
82795
  newContext = Context.of(lastChild?.computedValue());
82796
82796
  }
82797
82797
 
82798
- if (term === filterExpressionStart) {
82798
+ if (term === filterExpressionStart$1) {
82799
82799
  newContext = Context.of(
82800
82800
  currentContext,
82801
82801
  lastChild?.computedValue()
@@ -82812,19 +82812,19 @@
82812
82812
  // @ts-expect-error internal method
82813
82813
  const code = input.read(input.pos, stack.pos);
82814
82814
 
82815
- const end = contextEnds[term];
82815
+ const end = contextEnds$1[term];
82816
82816
 
82817
82817
  if (end) {
82818
82818
  return variables.exitScope(code);
82819
82819
  }
82820
82820
 
82821
- if (term === ContextEntry) {
82821
+ if (term === ContextEntry$1) {
82822
82822
  const parts = variables.children.filter(c => c.name !== 'ContextEntry');
82823
82823
 
82824
82824
  const name = parts[0];
82825
- const value = last(parts);
82825
+ const value = last$1(parts);
82826
82826
 
82827
- return wrap(variables, 'ContextEntry', code).assign(
82827
+ return wrap$1(variables, 'ContextEntry', code).assign(
82828
82828
  {
82829
82829
  value: Context
82830
82830
  .of(variables.value)
@@ -82834,27 +82834,27 @@
82834
82834
  }
82835
82835
 
82836
82836
  if (
82837
- term === ForInExpression ||
82838
- term === QuantifiedInExpression
82837
+ term === ForInExpression$1 ||
82838
+ term === QuantifiedInExpression$1
82839
82839
  ) {
82840
- return wrap(variables, 'InExpression', code);
82840
+ return wrap$1(variables, 'InExpression', code);
82841
82841
  }
82842
82842
 
82843
82843
  // define <partial> within ForExpression body
82844
- if (term === forExpressionBodyStart) {
82844
+ if (term === forExpressionBodyStart$1) {
82845
82845
 
82846
82846
  return variables.define(
82847
82847
  'partial',
82848
- ValueProducer.of(variables => {
82849
- return last(variables.children)?.computedValue();
82848
+ ValueProducer$1.of(variables => {
82849
+ return last$1(variables.children)?.computedValue();
82850
82850
  })
82851
82851
  );
82852
82852
  }
82853
82853
 
82854
82854
  if (
82855
- term === ParameterName
82855
+ term === ParameterName$1
82856
82856
  ) {
82857
- const name = last(variables.children).computedValue();
82857
+ const name = last$1(variables.children).computedValue();
82858
82858
 
82859
82859
  // TODO: attach type information
82860
82860
  return variables.define(name, 1);
@@ -82862,71 +82862,71 @@
82862
82862
 
82863
82863
  // pull <expression> into ArithmeticExpression child
82864
82864
  if (
82865
- term === arithmeticPlusStart ||
82866
- term === arithmeticTimesStart ||
82867
- term === arithmeticExpStart
82865
+ term === arithmeticPlusStart$1 ||
82866
+ term === arithmeticTimesStart$1 ||
82867
+ term === arithmeticExpStart$1
82868
82868
  ) {
82869
82869
  const children = variables.children.slice(0, -1);
82870
- const lastChild = last(variables.children);
82870
+ const lastChild = last$1(variables.children);
82871
82871
 
82872
82872
  return variables.assign({
82873
82873
  children
82874
82874
  }).enterScope('ArithmeticExpression').pushChild(lastChild);
82875
82875
  }
82876
82876
 
82877
- if (term === arithmeticUnaryStart) {
82877
+ if (term === arithmeticUnaryStart$1) {
82878
82878
  return variables.enterScope('ArithmeticExpression');
82879
82879
  }
82880
82880
 
82881
82881
  if (
82882
- term === Identifier ||
82883
- term === AdditionalIdentifier ||
82884
- term === PropertyIdentifier
82882
+ term === Identifier$1 ||
82883
+ term === AdditionalIdentifier$1 ||
82884
+ term === PropertyIdentifier$1
82885
82885
  ) {
82886
82886
  return variables.token(code);
82887
82887
  }
82888
82888
 
82889
82889
  if (
82890
- term === StringLiteral
82890
+ term === StringLiteral$1
82891
82891
  ) {
82892
82892
  return variables.literal(code.replace(/^"|"$/g, ''));
82893
82893
  }
82894
82894
 
82895
- if (term === BooleanLiteral) {
82895
+ if (term === BooleanLiteral$1) {
82896
82896
  return variables.literal(code === 'true' ? true : false);
82897
82897
  }
82898
82898
 
82899
- if (term === NumericLiteral) {
82899
+ if (term === NumericLiteral$1) {
82900
82900
  return variables.literal(parseFloat(code));
82901
82901
  }
82902
82902
 
82903
- if (term === nil) {
82903
+ if (term === nil$1) {
82904
82904
  return variables.literal(null);
82905
82905
  }
82906
82906
 
82907
82907
  if (
82908
- term === VariableName
82908
+ term === VariableName$1
82909
82909
  ) {
82910
82910
  return variables.resolveName();
82911
82911
  }
82912
82912
 
82913
82913
  if (
82914
- term === Name ||
82915
- term === PropertyName
82914
+ term === Name$1 ||
82915
+ term === PropertyName$1
82916
82916
  ) {
82917
82917
  return variables.declareName();
82918
82918
  }
82919
82919
 
82920
82920
  if (
82921
- term === expression0 ||
82922
- term === PositiveUnaryTest
82921
+ term === expression0$1 ||
82922
+ term === PositiveUnaryTest$1
82923
82923
  ) {
82924
82924
  if (variables.tokens.length > 0) {
82925
82925
  throw new Error('uncleared name');
82926
82926
  }
82927
82927
  }
82928
82928
 
82929
- if (term === expression0) {
82929
+ if (term === expression0$1) {
82930
82930
 
82931
82931
  let parent = variables;
82932
82932
 
@@ -82942,12 +82942,12 @@
82942
82942
  });
82943
82943
  }
82944
82944
 
82945
- const variableTracker = trackVariables({});
82945
+ const variableTracker$1 = trackVariables$1({});
82946
82946
 
82947
82947
 
82948
82948
  // helpers //////////////
82949
82949
 
82950
- function getContextValue(variables, args) {
82950
+ function getContextValue$1(variables, args) {
82951
82951
 
82952
82952
  if (!args.length) {
82953
82953
  return variables.assign({
@@ -82956,7 +82956,7 @@
82956
82956
  }
82957
82957
 
82958
82958
  if (args[0].name === 'Name') {
82959
- args = extractNamedArgs(args, [ 'm', 'key' ]);
82959
+ args = extractNamedArgs$1(args, [ 'm', 'key' ]);
82960
82960
  }
82961
82961
 
82962
82962
  if (args.length !== 2) {
@@ -82982,13 +82982,13 @@
82982
82982
  }
82983
82983
 
82984
82984
  return variables.assign({
82985
- value: [ normalizeContextKey(keyValue), keyValue ].reduce((value, keyValue) => {
82985
+ value: [ normalizeContextKey$1(keyValue), keyValue ].reduce((value, keyValue) => {
82986
82986
  return contextValue.get(keyValue) || value;
82987
82987
  }, null)
82988
82988
  });
82989
82989
  }
82990
82990
 
82991
- function extractNamedArgs(args, argNames) {
82991
+ function extractNamedArgs$1(args, argNames) {
82992
82992
 
82993
82993
  const context = {};
82994
82994
 
@@ -83001,11 +83001,11 @@
83001
83001
  return argNames.map(name => context[name]);
83002
83002
  }
83003
83003
 
83004
- function last(arr) {
83004
+ function last$1(arr) {
83005
83005
  return arr[arr.length - 1];
83006
83006
  }
83007
83007
 
83008
- const feelHighlighting = styleTags({
83008
+ const feelHighlighting$1 = styleTags({
83009
83009
  StringLiteral: tags.string,
83010
83010
  NumericLiteral: tags.number,
83011
83011
  BooleanLiteral: tags.bool,
@@ -83038,29 +83038,29 @@
83038
83038
  });
83039
83039
 
83040
83040
  // This file was generated by lezer-generator. You probably shouldn't edit it.
83041
- const spec_identifier = {__proto__:null,for:10, in:32, return:36, if:40, then:42, else:44, some:48, every:50, satisfies:56, or:60, and:64, between:72, instance:86, of:89, days:101, time:103, duration:105, years:107, months:109, date:111, list:117, context:123, function:130, null:156, true:330, false:330, "?":170, external:186, not:211};
83042
- const parser$2 = LRParser.deserialize({
83041
+ const spec_identifier$1 = {__proto__:null,for:10, in:32, return:36, if:40, then:42, else:44, some:48, every:50, satisfies:56, or:60, and:64, between:72, instance:86, of:89, days:101, time:103, duration:105, years:107, months:109, date:111, list:117, context:123, function:130, null:156, true:330, false:330, "?":170, external:186, not:211};
83042
+ const parser$3 = LRParser.deserialize({
83043
83043
  version: 14,
83044
83044
  states: "C|O`QYOOO`QYOOO$sQYOOOOQU'#Ce'#CeO$}QYO'#C`O&WQYO'#FQOOQQ'#Ff'#FfO&bQYO'#FfO`QYO'#DVOOQU'#En'#EnO(UQ^O'#D]OOQU'#D^'#D^OOQU'#D]'#D]OOQO'#Fn'#FnO*RQWO'#DvOOQQ'#D}'#D}OOQQ'#EO'#EOOOQQ'#EP'#EPO*WOWO'#ESO*RQWO'#EQOOQQ'#EQ'#EQOOQQ'#Ft'#FtOOQQ'#Fr'#FrOOQQ'#Fy'#FyOOQQ'#EU'#EUO`QYO'#EWOOQQ'#FS'#FSO*]Q^O'#FSO,SQYO'#EXO,ZQWO'#EYOOQP'#F}'#F}O,`QXO'#EaOOQQ'#Fz'#FzOOQQ'#FR'#FRQOQWOOOOQQ'#FT'#FTOOQQ'#F^'#F^O`QYO'#CoOOQQ'#F_'#F_O$}QYO'#CsO,kQYO'#DwOOQQ'#Fs'#FsO,pQYO'#EROOQO'#ER'#ERO`QYO'#EVO`QYO'#EUOOQO'#F{'#F{Q,xQWOOO,}QYO'#DRO-tQWO'#FbOOQO'#DT'#DTO.PQYO'#FfO.WQWOOO.}QYO'#CdO/[QYO'#FVOOQQ'#Cc'#CcO/aQYO'#FUOOQQ'#Cb'#CbO/iQYO,58zO`QYO,59iOOQQ'#Fc'#FcOOQQ'#Fd'#FdOOQQ'#Fe'#FeO`QYO,59qO`QYO,59qO`QYO,59qOOQQ'#Fl'#FlO/nQYO,5:^OOQQ'#Fm'#FmO`QYO,5:`O`QYO,59eO`QYO,59gO`QYO,59iO1jQYO,59iO1qQYO,59rOOQQ,5:i,5:iO1vQYO,59qOOQU-E8l-E8lO3jQYO'#FoOOQQ,5:b,5:bOOQQ,5:n,5:nOOQQ,5:l,5:lO3qQYO,5:rOOQQ,5;n,5;nO3{QYO,5:qO4YQWO,5:sO4_QYO,5:tOOQP'#Ee'#EeO5UQXO'#EdOOQO'#Ec'#EcO5]QWO'#EbO5bQWO'#GOO5jQWO,5:{O5oQYO,59ZO/[QYO'#FaOOQQ'#Cw'#CwO5vQYO'#F`OOQQ'#Cv'#CvO6OQYO,59_O6TQYO,5:cO6YQYO,5:mO3tQYO,5:qO6_QYO,5:pO`QYO'#EwQ,xQWOOO`QYO'#EmO7UQWO,5;|O`QYOOOOQR'#Cf'#CfOOQQ'#Ej'#EjO8OQYO,59OO`QYO,5;qOOQQ'#FY'#FYO$}QYO'#EkO8`QYO,5;pO`QYO1G.fOOQQ'#F]'#F]O9VQYO1G/TO;|QYO1G/]O<WQYO1G/]O<bQYO1G/]OOQQ1G/x1G/xO>UQYO1G/zO>]QYO1G/PO?fQYO1G/RO@oQYO1G/TO`QYO1G/TOOQQ1G/T1G/TOAVQYO1G/^OAtQ^O'#CdOCWQYO'#FqOOQO'#Dz'#DzOCbQWO'#DyOCgQWO'#FpOOQO'#Dx'#DxOOQO'#D{'#D{OCoQWO,5<ZOOQQ1G0^1G0^O`QYO1G0]O`QYO'#EsOCtQWO,5<]OOQQ1G0_1G0_ODPQWO'#E[OD[QWO'#F|OOQO'#EZ'#EZODdQWO1G0`OOQP'#Eu'#EuODiQXO,5;OO`QYO,5:|ODpQXO'#EvODxQWO,5<jOOQQ1G0g1G0gO`QYO1G.uO`QYO,5;{O$}QYO'#ElOEQQYO,5;zO`QYO1G.yOEYQYO1G/}OOQO1G0X1G0XOOQO,5;c,5;cOOQO-E8u-E8uOOQO,5;X,5;XOOQO-E8k-E8kOE_QWOOOOQQ-E8h-E8hOEdQYO'#CmOOQQ1G1]1G1]OOQQ,5;V,5;VOOQQ-E8i-E8iOEqQYO7+$QOOQQ7+%f7+%fO`QYO7+$oOFhQYO,5:rOFuQWO7+$oOFzQYO'#D[OOQQ'#DZ'#DZOHnQYO'#D_OHsQYO'#D_OHxQYO'#D_OH}Q`O'#DgOISQ`O'#DjOIXQ`O'#DnOOQQ7+$x7+$xO`QYO,5:eO$}QYO'#ErOI^QWO,5<[OOQQ1G1u1G1uOJdQYO7+%wOJqQYO,5;_OOQO-E8q-E8qOAVQYO,5:vO$}QYO'#EtOKOQWO,5<hOKWQYO7+%zOOQP-E8s-E8sOK_QYO1G0hOOQO,5;b,5;bOOQO-E8t-E8tOKiQYO7+$aOKpQYO1G1gOOQQ,5;W,5;WOOQQ-E8j-E8jOKzQYO7+$eOOQO7+%i7+%iO`QYO,59XOLqQYO<<HZOOQQ<<HZ<<HZO/nQYO'#EoOMzQYO,59vO! nQYO,59yO! sQYO,59yO! xQYO,59yO! }QYO,5:RO$}QYO,5:UO!!lQbO,5:YO!!sQYO1G0POOQO,5;^,5;^OOQO-E8p-E8pO!!}QYO<<IcOOQQ<<Ic<<IcOOQO1G0b1G0bOOQO,5;`,5;`OOQO-E8r-E8rO!%|QYO'#E^OOQQ<<If<<IfO`QYO<<IfO`QYO<<G{O!&sQYO1G.sOOQQ,5;Z,5;ZOOQQ-E8m-E8mO!&}QYO1G/eOOQQ1G/e1G/eO!'SQbO'#D]O!'eQ`O'#D[O!'pQ`O1G/mO!'uQWO'#DmO!'zQ`O'#FhOOQO'#Dl'#DlO!(SQ`O1G/pOOQO'#Dq'#DqO!(XQ`O'#FjOOQO'#Dp'#DpO!(aQ`O1G/tOOQQAN?QAN?QO!(fQYOAN=gOOQQ7+%P7+%PO!)]Q`O,59vOOQQ7+%X7+%XO! }QYO,5:XO$}QYO'#EpO!)hQ`O,5<SOOQQ7+%[7+%[O! }QYO'#EqO!)pQ`O,5<UO!)xQ`O7+%`OOQO1G/s1G/sOOQO,5;[,5;[OOQO-E8n-E8nOOQO,5;],5;]OOQO-E8o-E8oOAVQYO<<HzOOQQAN>fAN>fO/nQYO'#EoO! }QYO<<HzO!)}Q`O7+%`O!*SQ`O1G/tO!!lQbO,5:YO!*XQ`O'#Dn",
83045
83045
  stateData: "!*h~O#rOS#sOSPOSQOS~OTsOZVO[UOdtOhvOivOr}Os}OviO!T{O!U{O!VxO!XzO!c!OO!g|O!igO!pyO!wjO#SnO#nRO#oRO$ZZO$i_O$j`O$kaO$lbO~OTsO[UOdtOhvOivOr}Os}OviO!T{O!U{O!VxO!XzO!c!OO!g|O!igO!pyO!wjO#SnO#nRO#oRO$ZZO$i_O$j`O$kaO$lbO~OZ!TO#]!UO~P#SO#nRO#oRO~OZ!^O[!^O]!_O^!_O_!`O`!kOn!hOp!iOr!]Os!]Ot!jO{!lO!i!fO#z!dOv$bX~O#l#tX$s#tX~P%VO$i!mOT$YXZ$YX[$YXd$YXh$YXi$YXr$YXs$YXv$YX!T$YX!U$YX!V$YX!X$YX!c$YX!g$YX!i$YX!p$YX!w$YX#S$YX#n$YX#o$YX$Z$YX$j$YX$k$YX$l$YX~O#nRO#oROZ!PX[!PX]!PX^!PX_!PX`!PXn!PXp!PXr!PXs!PXt!PXv!PX{!PX!i!PX#l!PX#p!PX#z!PX$s!PX$O!PXx!PX#}!PX!g!PXe!PXb!PX#R!PXf!PXl!PX~Ov!pO~O$j`O~O#p!uOZ#vX[#vX]#vX^#vX_#vX`#vXn#vXp#vXr#vXs#vXt#vXv#vX{#vX!i#vX#l#vX#z#vX$s#vX$O#vXx#vX#}#vX!g#vXe#vXb#vX#R#vXf#vXl#vX~O!g$eP~P`Ov!xO~O#m!yO$j`O#R$rP~Op#VO~Op#WOv!uX~O$s#ZO~O#luX$OuX$suXxuX#}uX!guXeuXbuX#RuXfuXluX~P%VO$O#]O#l$UXx$UX~O#l#[X~P&bOv#_O~OZ#`O[#`O]#`O^#`O_#`O#nRO#oRO#z#`O#{#`O$]WX~O`WXxWX$OWX~P.]O`#dO~O$O#eOb#xX~Ob#hO~O#nRO#oRO$ZZO~OTsOZVO[UOdtOhvOivOr}Os}O!T{O!U{O!VxO!XzO!c!OO!g|O!igO!pyO!wjO#SnO#nRO#oRO$ZZO$i_O$j`O$kaO$lbO~Ov#rO~P/yO|#tO~O{!lO!i!fO#z!dOZya[ya]ya^ya_ya`yanyapyaryasyatyav$bX#lya$sya$Oyaxya#}ya!gyaeyabya#Ryafyalya~Ox$eP~P`Ox#}O#}$OO~P%VO#}$OO$O$PO!g$eX~P%VO!g$RO~O#nRO#oROx$pP~OZ#`O[#`O]#`O^#`O_#`O#m!yO#z#`O#{#`O~O$]#WX~P4jO$]$YO~O$O$ZO#R$rX~O#R$]O~Oe$^O~P%VO$O$`Ol$SX~Ol$bO~O!W$cO~O!T$dO~O#l!xa$s!xa$O!xax!xa#}!xa!g!xae!xab!xa#R!xaf!xal!xa~P%VO$O#]O#l$Uax$Ua~OZ#`O[#`O]#`O^#`O_#`O#nRO#oRO#z#`O#{#`O~O`Wa$]WaxWa$OWa~P7aO$O#eOb#xa~OZ!^O[!^O]!_O^!_O_!`O{!lO!i!fO#z!dOv$bX~O`qinqipqirqisqitqi#lqi$sqi$Oqixqi#}qi!gqieqibqi#Rqifqilqi~P8hO_!`O{!lO!i!fO#z!dOZyi[yi`yinyipyiryisyityiv$bX#lyi$syi$Oyixyi#}yi!gyieyibyi#Ryifyilyi~O]!_O^!_O~P:`O]yi^yi~P:`O{!lO!i!fO#z!dOZyi[yi]yi^yi_yi`yinyipyiryisyityiv$bX#lyi$syi$Oyixyi#}yi!gyieyibyi#Ryifyilyi~O!g$pO~P%VO`!kOp!iOr!]Os!]Ot!jOnmi#lmi$smi$Omixmi#}mi!gmiemibmi#Rmifmilmi~P8hO`!kOr!]Os!]Ot!jOnoipoi#loi$soi$Ooixoi#}oi!goieoiboi#Roifoiloi~P8hO`!kOn!hOp$qOr!]Os!]Ot!jO~P8hO!S$vO!V$wO!X$xO![$yO!_$zO!c${O#nRO#oRO$ZZO~OZ#bX[#bX]#bX^#bX_#bX`#bXn#bXp#bXr#bXs#bXt#bXv#bXx#bX{#bX!i#bX#n#bX#o#bX#p#bX#z#bX$O#bX~P.]O$O$POx$eX~P%VO$]$}O~O$O%OOx$dX~Ox%QO~O$O$PO!g$eax$ea~O$]%UOx#OX$O#OX~O$O%VOx$pX~Ox%XO~O$]#Wa~P4jO#m!yO$j`O~O$O$ZO#R$ra~O$O$`Ol$Sa~O!U%cO~OxrO~O#}%dObaX$OaX~P%VO#lSq$sSq$OSqxSq#}Sq!gSqeSqbSq#RSqfSqlSq~P%VOx#}O#}$OO$OuX~P%VOx%fO~O#z%gOZ!OX[!OX]!OX^!OX_!OX`!OXn!OXp!OXr!OXs!OXt!OXv!OX{!OX!i!OX#l!OX$s!OX$O!OXx!OX#}!OX!g!OXe!OXb!OX#R!OXf!OXl!OX~Op%iO~Op%jO~Op%kO~O!]%lO~O!]%mO~O!]%nO~O$O%OOx$da~OZ!^O[!^O]!_O^!_O_!`O`!kOn!hOp!iOr!]Os!]Ot!jO{!lO#z!dOv$bX~Ox%sO!g%sO!i%rO~PIfO!g#ga$O#gax#ga~P%VO$O%VOx$pa~O#P%yO~P`O#R#Ui$O#Ui~P%VOf%zO~P%VOl$Ti$O$Ti~P%VO#lgq$sgq$Ogqxgq#}gq!ggqegqbgq#Rgqfgqlgq~P%VO`qynqypqyrqysqytqy#lqy$sqy$Oqyxqy#}qy!gqyeqybqy#Rqyfqylqy~P8hO#z%gOZ!Oa[!Oa]!Oa^!Oa_!Oa`!Oan!Oap!Oar!Oas!Oat!Oav!Oa{!Oa!i!Oa#l!Oa$s!Oa$O!Oax!Oa#}!Oa!g!Oae!Oab!Oa#R!Oaf!Oal!Oa~O!T&OO~O!W&OO~O!T&PO~O!S$vO!V$wO!X$xO![$yO!_$zO!c&uO#nRO#oRO$ZZO~O!Y$^P~P! }Ox!mi$O!mi~P%VOT$aXZ$aX[$aX]!yy^!yy_!yy`!yyd$aXh$aXi$aXn!yyp!yyr$aXs$aXt!yyv$aX{!yy!T$aX!U$aX!V$aX!X$aX!c$aX!g$aX!i$aX!p$aX!w$aX#S$aX#l!yy#n$aX#o$aX#z!yy$Z$aX$i$aX$j$aX$k$aX$l$aX$s!yy$O!yyx!yy#}!yye!yyb!yy#R!yyf!yyl!yy~O#l#QX$s#QX$O#QXx#QX#}#QX!g#QXe#QXb#QX#R#QXf#QXl#QX~P%VObai$Oai~P%VO!U&_O~O#nRO#oRO!Y!PX#z!PX$O!PX~O#z&pO!Y!OX$O!OX~O!Y&aO~O$]&bO~O$O&cO!Y$[X~O!Y&eO~O$O&fO!Y$^X~O!Y&hO~O#lc!R$sc!R$Oc!Rxc!R#}c!R!gc!Rec!Rbc!R#Rc!Rfc!Rlc!R~P%VO#z&pO!Y!Oa$O!Oa~O$O&cO!Y$[a~O$O&fO!Y$^a~O$_&nO~O$_&qO~O!Y&rO~O!]&tO~O$Z~QP_^$i]#z~",
83046
83046
  goto: "E|$sPPPP$tP%m%p%v&Y'sPPPPPP'|P$tPPP$tPP(P(SP$tP$tP$tPPP(YP(eP$t$tPP(n)T)`*m)TPPPPPPP)TPP)TP+r+u)TP+{,R$tP$tP$t,Y-R-U-[-RP-d.]-d-d/]0UP$t0}$t1v1v2o2rP2xPP1v3O3U/X3YPP3bP3e3l3r3x4O5Z5e5k5q5w6O6U6[6bPPPPPPPP6h6q8x9q:j:mPP:qPP:w:z;s<l<o<s<x=g>V>vP?oP?rP?v@iA[BTBZB^$tBdBdPPPPC]8xDUD}EQEy!mjOPQWilu|}!]!a!b!c!g!h!i!j!k!p#Z#]#_#c#g#r$O$P$Y$^$_$b$q$}%X%d%y%zR![SQ!YSR$m#eS!WS#eS#Qw$`W#w!p!x%O%VT&T%m&c#WXOPQWYilu|}!]!a!b!c!e!g!h!i!j!k#Z#]#_#c#g#r#t$O$P$Y$^$_$b$q$}%U%X%d%g%l%n%y%z&Q&b&f&n&p&q&tb!VSw!x#e$`%O%V%m&cU#a!V#b#uR#u!pU#a!V#b#uT$W!z$XR$l#cR#UwQ#SwR%`$`U!RQ#_#rQ#s!kR$g#]QrQQ$i#_R$s#rQ$|#tQ%t%UQ&S%lU&X%n&f&tQ&i&bT&o&n&qc$u#t%U%l%n&b&f&n&q&t!lkOPQWilu|}!]!a!b!c!g!h!i!j!k!p#Z#]#_#c#g#r$O$P$Y$^$_$b$q$}%X%d%y%zQ#m!eU$t#t%U&nS%|%g&p]&R%l%n&b&f&q&t#V[OPQWilu|}!]!a!b!c!e!g!h!i!j!k!p#Z#]#_#c#g#r#t$O$P$Y$^$_$b$q$}%U%X%d%g%l%n%y%z&b&f&n&p&q&tR&W%mQ&U%mR&j&cQ&[%nR&s&tS&Y%n&tR&l&f!m]OPQWilu|}!]!a!b!c!g!h!i!j!k!p#Z#]#_#c#g#r$O$P$Y$^$_$b$q$}%X%d%y%zR#|!pQ#y!pR%p%OS#x!p%OT$S!x%V!meOPQWilu|}!]!a!b!c!g!h!i!j!k!p#Z#]#_#c#g#r$O$P$Y$^$_$b$q$}%X%d%y%z!leOPQWilu|}!]!a!b!c!g!h!i!j!k!p#Z#]#_#c#g#r$O$P$Y$^$_$b$q$}%X%d%y%zQ!rbT!{o$Z!mcOPQWilu|}!]!a!b!c!g!h!i!j!k!p#Z#]#_#c#g#r$O$P$Y$^$_$b$q$}%X%d%y%z!mdOPQWilu|}!]!a!b!c!g!h!i!j!k!p#Z#]#_#c#g#r$O$P$Y$^$_$b$q$}%X%d%y%z!mhOPQWilu|}!]!a!b!c!g!h!i!j!k!p#Z#]#_#c#g#r$O$P$Y$^$_$b$q$}%X%d%y%z!mpOPQWilu|}!]!a!b!c!g!h!i!j!k!p#Z#]#_#c#g#r$O$P$Y$^$_$b$q$}%X%d%y%zR$V!xQ$T!xR%u%VQ%x%XR&]%yQ!}oR%[$ZT!|o$ZS!zo$ZT$W!z$XRrQS#b!V#uR$j#bQ#f!YR$n#fQ$a#SR%a$aQ#^!RR$h#^!vYOPQWilu|}!]!a!b!c!e!g!h!i!j!k!p#Z#]#_#c#g#r#t$O$P$Y$^$_$b$q$}%U%X%d%g%y%z&nS!oY&Q_&Q%l%n&b&f&p&q&tQ%h$tS%}%h&`R&`&RQ&d&UR&k&dQ&g&YR&m&gQ%P#yR%q%PS$Q!v#vR%T$QQ%W$TR%v%WQ$X!zR%Y$XQ$[!}R%]$[Q#[!PR$f#[QrOQ!PPR$e#ZUTOP#ZW!QQ!k#]#_Q!nWQ!tiQ!vlQ#PuQ#X|Q#Y}Q#i!]Q#j!aQ#k!bQ#l!cQ#n!gQ#o!hQ#p!iQ#q!jQ#v!pQ$k#cQ$o#gQ$r#rQ%R$OQ%S$PQ%Z$YQ%^$^Q%_$_Q%b$bQ%e$qQ%o$}S%w%X%yQ%{%dR&^%z!mqOPQWilu|}!]!a!b!c!g!h!i!j!k!p#Z#]#_#c#g#r$O$P$Y$^$_$b$q$}%X%d%y%z!mSOPQWilu|}!]!a!b!c!g!h!i!j!k!p#Z#]#_#c#g#r$O$P$Y$^$_$b$q$}%X%d%y%zR!ZST!XS#eQ#c!WR$_#QR#g![!muOPQWilu|}!]!a!b!c!g!h!i!j!k!p#Z#]#_#c#g#r$O$P$Y$^$_$b$q$}%X%d%y%z!mwOPQWilu|}!]!a!b!c!g!h!i!j!k!p#Z#]#_#c#g#r$O$P$Y$^$_$b$q$}%X%d%y%zR#TwT#Rw$`V!SQ#_#r!X!aT!Q!t!v#P#X#Y#i#n#o#p#q#v$k$o$r%R%S%Z%^%_%b%e%o%w%{&^!Z!bT!Q!t!v#P#X#Y#i#j#n#o#p#q#v$k$o$r%R%S%Z%^%_%b%e%o%w%{&^!]!cT!Q!t!v#P#X#Y#i#j#k#n#o#p#q#v$k$o$r%R%S%Z%^%_%b%e%o%w%{&^!mWOPQWilu|}!]!a!b!c!g!h!i!j!k!p#Z#]#_#c#g#r$O$P$Y$^$_$b$q$}%X%d%y%zR&V%mT&Z%n&t!a!eT!Q!n!t!v#P#X#Y#i#j#k#l#n#o#p#q#v$k$o$r%R%S%Z%^%_%b%e%o%w%{&^!a!gT!Q!n!t!v#P#X#Y#i#j#k#l#n#o#p#q#v$k$o$r%R%S%Z%^%_%b%e%o%w%{&^!m^OPQWilu|}!]!a!b!c!g!h!i!j!k!p#Z#]#_#c#g#r$O$P$Y$^$_$b$q$}%X%d%y%zQ!q^R!scR#z!pQ!wlR#{!p!mfOPQWilu|}!]!a!b!c!g!h!i!j!k!p#Z#]#_#c#g#r$O$P$Y$^$_$b$q$}%X%d%y%z!mlOPQWilu|}!]!a!b!c!g!h!i!j!k!p#Z#]#_#c#g#r$O$P$Y$^$_$b$q$}%X%d%y%z!mmOPQWilu|}!]!a!b!c!g!h!i!j!k!p#Z#]#_#c#g#r$O$P$Y$^$_$b$q$}%X%d%y%zR$U!x!moOPQWilu|}!]!a!b!c!g!h!i!j!k!p#Z#]#_#c#g#r$O$P$Y$^$_$b$q$}%X%d%y%zR#Oo",
83047
83047
  nodeNames: "⚠ LineComment BlockComment Expression ForExpression for InExpressions InExpression Name Identifier Identifier ArithOp ArithOp ArithOp ArithOp ArithOp in IterationContext return IfExpression if then else QuantifiedExpression some every InExpressions InExpression satisfies Disjunction or Conjunction and Comparison CompareOp CompareOp between PositiveUnaryTest ( PositiveUnaryTests ) ArithmeticExpression InstanceOfExpression instance of Type QualifiedName VariableName BacktickIdentifier SpecialType days time duration years months date > ListType list < ContextType context ContextEntryTypes ContextEntryType FunctionType function ArgumentTypes ArgumentType PathExpression ] FilterExpression [ FunctionInvocation SpecialFunctionName NamedParameters NamedParameter ParameterName PositionalParameters null NumericLiteral StringLiteral BooleanLiteral DateTimeLiteral DateTimeConstructor AtLiteral ? SimplePositiveUnaryTest Interval ParenthesizedExpression List FunctionDefinition FormalParameters FormalParameter external FunctionBody } { Context ContextEntry Key Name Identifier Expressions UnaryTests Wildcard not",
83048
83048
  maxTerm: 173,
83049
- context: variableTracker,
83049
+ context: variableTracker$1,
83050
83050
  nodeProps: [
83051
83051
  ["group", -17,4,19,23,29,31,33,41,42,68,70,72,85,86,88,89,90,97,"Expr",47,"Expr Expr",-5,78,79,80,81,82,"Expr Literal"],
83052
83052
  ["closedBy", 38,")",71,"]",96,"}"],
83053
83053
  ["openedBy", 40,"(",69,"[",95,"{"]
83054
83054
  ],
83055
- propSources: [feelHighlighting],
83055
+ propSources: [feelHighlighting$1],
83056
83056
  skippedNodes: [0,1,2],
83057
83057
  repeatNodeCount: 14,
83058
83058
  tokenData: ".Z~RvXY#iYZ$^Z[#i]^$^pq#iqr$crs$nwx&fxy&kyz&pz{&u{|'S|}'X}!O'^!O!P'k!P!Q(u!Q![*p![!]+X!]!^+^!^!_+c!_!`$i!`!a+r!b!c+|!}#O,R#P#Q,W#Q#R&}#S#T,]#o#p.P#q#r.U$f$g#i#BY#BZ#i$IS$I_#i$I|$I}$^$I}$JO$^$JT$JU#i$KV$KW#i&FU&FV#i?HT?HU#i~#nY#r~XY#iZ[#ipq#i$f$g#i#BY#BZ#i$IS$I_#i$JT$JU#i$KV$KW#i&FU&FV#i?HT?HU#i~$cO#s~~$fP!_!`$i~$nOr~~$sW$j~OY$nZr$nrs%]s#O$n#O#P%b#P;'S$n;'S;=`&`<%lO$n~%bO$j~~%eRO;'S$n;'S;=`%n;=`O$n~%sX$j~OY$nZr$nrs%]s#O$n#O#P%b#P;'S$n;'S;=`&`;=`<%l$n<%lO$n~&cP;=`<%l$n~&kO#{~~&pOv~~&uOx~~&zP^~z{&}~'SO_~~'XO[~~'^O$O~R'cPZP!`!a'fQ'kO$_Q~'pQ#z~!O!P'v!Q!['{~'{O#}~~(QR$i~!Q!['{!g!h(Z#X#Y(Z~(^R{|(g}!O(g!Q![(m~(jP!Q![(m~(rP$i~!Q![(m~(zQ]~z{)Q!P!Q*X~)TTOz)Qz{)d{;'S)Q;'S;=`*R<%lO)Q~)gVOz)Qz{)d{!P)Q!P!Q)|!Q;'S)Q;'S;=`*R<%lO)Q~*ROQ~~*UP;=`<%l)Q~*^SP~OY*XZ;'S*X;'S;=`*j<%lO*X~*mP;=`<%l*X~*uS$i~!O!P+R!Q![*p!g!h(Z#X#Y(Z~+UP!Q!['{~+^O$]~~+cO$s~R+jP!]QsP!_!`+mP+rOsPR+yP!YQsP!_!`+m~,RO$l~~,WO!i~~,]O!g~~,`WOY,]Z#O,]#O#P,x#P#S,]#S#T-t#T;'S,];'S;=`-y<%lO,]~,{RO;'S,];'S;=`-U;=`O,]~-XXOY,]Z#O,]#O#P,x#P#S,]#S#T-t#T;'S,];'S;=`-y;=`<%l,]<%lO,]~-yO$Z~~-|P;=`<%l,]~.UO#S~~.ZO#R~",
83059
- tokenizers: [propertyIdentifiers, identifiers$1, insertSemicolon, 0, 1],
83059
+ tokenizers: [propertyIdentifiers$1, identifiers$2, insertSemicolon$1, 0, 1],
83060
83060
  topRules: {"Expression":[0,3],"Expressions":[1,102],"UnaryTests":[2,103]},
83061
83061
  dialects: {camunda: 2544},
83062
83062
  dynamicPrecedences: {"31":-1,"68":1,"72":-1,"74":-1},
83063
- specialized: [{term: 122, get: (value) => spec_identifier[value] || -1}],
83063
+ specialized: [{term: 122, get: (value) => spec_identifier$1[value] || -1}],
83064
83064
  tokenPrec: 2546
83065
83065
  });
83066
83066
 
@@ -83310,11 +83310,11 @@
83310
83310
  if (name in context) {
83311
83311
  return context[name];
83312
83312
  }
83313
- const normalizedName = normalizeContextKey(name);
83313
+ const normalizedName = normalizeContextKey$1(name);
83314
83314
  if (normalizedName in context) {
83315
83315
  return context[normalizedName];
83316
83316
  }
83317
- const entry = Object.entries(context).find(([key]) => normalizedName === normalizeContextKey(key));
83317
+ const entry = Object.entries(context).find(([key]) => normalizedName === normalizeContextKey$1(key));
83318
83318
  if (entry) {
83319
83319
  return entry[1];
83320
83320
  }
@@ -84140,15 +84140,15 @@
84140
84140
  }
84141
84141
 
84142
84142
  function parseExpression(expression, context = {}) {
84143
- return parser$2.configure({
84143
+ return parser$3.configure({
84144
84144
  top: 'Expression',
84145
- contextTracker: trackVariables(context)
84145
+ contextTracker: trackVariables$1(context)
84146
84146
  }).parse(expression);
84147
84147
  }
84148
84148
  function parseUnaryTests(expression, context = {}) {
84149
- return parser$2.configure({
84149
+ return parser$3.configure({
84150
84150
  top: 'UnaryTests',
84151
- contextTracker: trackVariables(context)
84151
+ contextTracker: trackVariables$1(context)
84152
84152
  }).parse(expression);
84153
84153
  }
84154
84154
 
@@ -84717,7 +84717,7 @@
84717
84717
  }
84718
84718
  return equals$1(test, value);
84719
84719
  }
84720
- const chars = Array.from('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ');
84720
+ const chars$1 = Array.from('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ');
84721
84721
  function isTyped(type, values) {
84722
84722
  return (values.some(e => getType$2(e) === type) &&
84723
84723
  values.every(e => e === null || getType$2(e) === type));
@@ -84836,16 +84836,16 @@
84836
84836
  return (value) => value === null ? null : tests.every(t => t(conversion(value)));
84837
84837
  }
84838
84838
  function createStringRange(start, end, startIncluded = true, endIncluded = true) {
84839
- if (start !== null && !chars.includes(start)) {
84839
+ if (start !== null && !chars$1.includes(start)) {
84840
84840
  throw new Error('illegal range start: ' + start);
84841
84841
  }
84842
- if (end !== null && !chars.includes(end)) {
84842
+ if (end !== null && !chars$1.includes(end)) {
84843
84843
  throw new Error('illegal range end: ' + end);
84844
84844
  }
84845
84845
  let values;
84846
84846
  if (start !== null && end !== null) {
84847
- let startIdx = chars.indexOf(start);
84848
- let endIdx = chars.indexOf(end);
84847
+ let startIdx = chars$1.indexOf(start);
84848
+ let endIdx = chars$1.indexOf(end);
84849
84849
  const direction = startIdx > endIdx ? -1 : 1;
84850
84850
  if (startIncluded === false) {
84851
84851
  startIdx += direction;
@@ -84853,7 +84853,7 @@
84853
84853
  if (endIncluded === false) {
84854
84854
  endIdx -= direction;
84855
84855
  }
84856
- values = chars.slice(startIdx, endIdx + 1);
84856
+ values = chars$1.slice(startIdx, endIdx + 1);
84857
84857
  }
84858
84858
  const map = values ? valuesMap(values) : noopMap();
84859
84859
  const includes = values ? valuesIncludes(values) : anyIncludes(start, end, startIncluded, endIncluded);
@@ -106113,7 +106113,7 @@
106113
106113
  Paragraph: tags.content
106114
106114
  });
106115
106115
  /// The default CommonMark parser.
106116
- const parser$1 = new MarkdownParser(new NodeSet(nodeTypes).extend(markdownHighlighting), Object.keys(DefaultBlockParsers).map(n => DefaultBlockParsers[n]), Object.keys(DefaultBlockParsers).map(n => DefaultLeafBlocks[n]), Object.keys(DefaultBlockParsers), DefaultEndLeaf, DefaultSkipMarkup, Object.keys(DefaultInline).map(n => DefaultInline[n]), Object.keys(DefaultInline), []);
106116
+ const parser$2 = new MarkdownParser(new NodeSet(nodeTypes).extend(markdownHighlighting), Object.keys(DefaultBlockParsers).map(n => DefaultBlockParsers[n]), Object.keys(DefaultBlockParsers).map(n => DefaultLeafBlocks[n]), Object.keys(DefaultBlockParsers), DefaultEndLeaf, DefaultSkipMarkup, Object.keys(DefaultInline).map(n => DefaultInline[n]), Object.keys(DefaultInline), []);
106117
106117
  /// Extension providing
106118
106118
  /// [Pandoc-style](https://pandoc.org/MANUAL.html#superscripts-and-subscripts)
106119
106119
  /// superscript using `^` markers.
@@ -106142,7 +106142,7 @@
106142
106142
  * @param {Tree} syntaxTree
106143
106143
  * @returns {LintMessage[]} array of syntax errors
106144
106144
  */
106145
- function lintSyntax(syntaxTree) {
106145
+ function lintSyntax$1(syntaxTree) {
106146
106146
 
106147
106147
  const lintMessages = [];
106148
106148
 
@@ -106155,7 +106155,7 @@
106155
106155
  }
106156
106156
 
106157
106157
  const parent = node.parent;
106158
- const next = getNextNode(node);
106158
+ const next = getNextNode$1(node);
106159
106159
 
106160
106160
  const message = {
106161
106161
  from: node.from,
@@ -106181,12 +106181,12 @@
106181
106181
  return lintMessages;
106182
106182
  }
106183
106183
 
106184
- function getNextNode(node) {
106184
+ function getNextNode$1(node) {
106185
106185
  if (!node) {
106186
106186
  return null;
106187
106187
  }
106188
106188
 
106189
- return node.nextSibling || getNextNode(node.parent);
106189
+ return node.nextSibling || getNextNode$1(node.parent);
106190
106190
  }
106191
106191
 
106192
106192
  /**
@@ -106196,9 +106196,9 @@
106196
106196
  * @property {(from: number, to: number, content: string) => void} updateContent
106197
106197
  */
106198
106198
 
106199
- const RULE_NAME = 'first-item';
106199
+ const RULE_NAME$1 = 'first-item';
106200
106200
 
106201
- var firstItem = {
106201
+ var firstItem$1 = {
106202
106202
  create(/** @type {Context} */ context) {
106203
106203
  return {
106204
106204
  enter(node) {
@@ -106208,7 +106208,7 @@
106208
106208
 
106209
106209
  const content = context.readContent(node.from, node.to);
106210
106210
 
106211
- if (zeroIndexPattern().test(content)) {
106211
+ if (zeroIndexPattern$1().test(content)) {
106212
106212
  const {
106213
106213
  from,
106214
106214
  to
@@ -106219,12 +106219,12 @@
106219
106219
  to,
106220
106220
  message: 'First item is accessed via [1]',
106221
106221
  severity: 'warning',
106222
- type: RULE_NAME,
106222
+ type: RULE_NAME$1,
106223
106223
  actions: [
106224
106224
  {
106225
106225
  name: 'fix',
106226
106226
  apply(_, start = from, end = to) {
106227
- context.updateContent(start, end, content.replace(zeroIndexPattern(), '[1]'));
106227
+ context.updateContent(start, end, content.replace(zeroIndexPattern$1(), '[1]'));
106228
106228
  }
106229
106229
  }
106230
106230
  ]
@@ -106235,7 +106235,7 @@
106235
106235
  }
106236
106236
  };
106237
106237
 
106238
- function zeroIndexPattern() {
106238
+ function zeroIndexPattern$1() {
106239
106239
  return /\[\s*0\s*\]$/;
106240
106240
  }
106241
106241
 
@@ -106245,8 +106245,8 @@
106245
106245
  * @typedef {import('./index').LintAllContext} LintAllContext
106246
106246
  */
106247
106247
 
106248
- const RULES = [
106249
- firstItem
106248
+ const RULES$1 = [
106249
+ firstItem$1
106250
106250
  ];
106251
106251
 
106252
106252
  /**
@@ -106255,7 +106255,7 @@
106255
106255
  * @param {LintAllContext} context
106256
106256
  * @returns {LintMessage[]} array of syntax errors
106257
106257
  */
106258
- function lintRules(context) {
106258
+ function lintRules$1(context) {
106259
106259
  const {
106260
106260
  readContent,
106261
106261
  syntaxTree,
@@ -106272,7 +106272,7 @@
106272
106272
  updateContent
106273
106273
  };
106274
106274
 
106275
- const rules = RULES.map(rule => rule.create(ruleContext));
106275
+ const rules = RULES$1.map(rule => rule.create(ruleContext));
106276
106276
 
106277
106277
  syntaxTree.iterate({
106278
106278
  enter: ref => {
@@ -106308,11 +106308,11 @@
106308
106308
  * @param {LintAllContext} context
106309
106309
  * @returns {LintMessage[]} array of all lint messages
106310
106310
  */
106311
- function lintAll$1(context) {
106311
+ function lintAll$2(context) {
106312
106312
 
106313
106313
  const lintMessages = [
106314
- ...lintSyntax(context.syntaxTree),
106315
- ...lintRules(context)
106314
+ ...lintSyntax$1(context.syntaxTree),
106315
+ ...lintRules$1(context)
106316
106316
  ];
106317
106317
 
106318
106318
  return lintMessages;
@@ -106323,7 +106323,7 @@
106323
106323
  *
106324
106324
  * @returns {import('@codemirror/lint').LintSource} CodeMirror linting source
106325
106325
  */
106326
- const cmFeelLinter = () => editorView => {
106326
+ const cmFeelLinter$1 = () => editorView => {
106327
106327
 
106328
106328
  // don't lint if the Editor is empty
106329
106329
  if (editorView.state.doc.length === 0) {
@@ -106332,7 +106332,7 @@
106332
106332
 
106333
106333
  const tree = syntaxTree(editorView.state);
106334
106334
 
106335
- const messages = lintAll$1({
106335
+ const messages = lintAll$2({
106336
106336
  syntaxTree: tree,
106337
106337
  readContent: (from, to) => editorView.state.sliceDoc(from, to),
106338
106338
  updateContent: (from, to, content) => editorView.dispatch({
@@ -106812,7 +106812,7 @@
106812
106812
  });
106813
106813
 
106814
106814
  // This file was generated by lezer-generator. You probably shouldn't edit it.
106815
- const parser = LRParser.deserialize({
106815
+ const parser$1 = LRParser.deserialize({
106816
106816
  version: 14,
106817
106817
  states: "$bOQOaOOOfOXO'#CbOOO`'#Cm'#CmOqOWO'#CcOvOWO'#CfOOO`'#Cp'#CpOOO`'#Ci'#CiO{OaO'#ClO!jOSOOQOOOOOO!oOPO,58{O!tOXO,58|OOO`,58|,58|O!|OQO,58}O#ROQO,59QOOO`-E6g-E6gOOO`1G.g1G.gO#WOPO1G.gOOO`1G.h1G.hO#]OaO1G.iO#qOaO1G.lOOO`7+$R7+$RO$VOPO7+$TO$_OPO7+$WOOO`<<Go<<GoOOO`<<Gr<<Gr",
106818
106818
  stateData: "$g~ORUO_WObPOeROgSO^`P~OQYO_ZOc[O~OQ]O~OQ^O~ORUObPOeROgSO^`XW`XX`XZ`X[`X~OPXO~Oc`O~OQaOcbO~OfcO~OfdO~OceO~ORUObPOeROgSOW`PX`P~ORUObPOeROgSOZ`P[`P~OWhOXhO~OZiO[iO~O",
@@ -106881,7 +106881,7 @@
106881
106881
  sanitizer
106882
106882
  } = options;
106883
106883
 
106884
- const parseTree = parser.parse(templateString);
106884
+ const parseTree = parser$1.parse(templateString);
106885
106885
 
106886
106886
  const simpleTreeRoot = buildSimpleTree(parseTree, templateString);
106887
106887
 
@@ -107052,12 +107052,12 @@
107052
107052
  };
107053
107053
 
107054
107054
  function createMixedLanguage(hostLanguage = null) {
107055
- const _mixedParser = parser.configure({
107055
+ const _mixedParser = parser$1.configure({
107056
107056
 
107057
107057
  wrap: parseMixed(node => {
107058
107058
 
107059
107059
  if (node.name == 'Feel' || node.name == 'FeelBlock') {
107060
- return { parser: parser$2 };
107060
+ return { parser: parser$3 };
107061
107061
  }
107062
107062
 
107063
107063
  if (hostLanguage && node.name == 'SimpleTextBlock') {
@@ -107112,7 +107112,7 @@
107112
107112
  * @param {Tree} syntaxTree
107113
107113
  * @returns {LintMessage[]} array of all lint messages
107114
107114
  */
107115
- function lintAll(syntaxTree) {
107115
+ function lintAll$1(syntaxTree) {
107116
107116
 
107117
107117
  const lintMessages = [
107118
107118
 
@@ -107130,7 +107130,7 @@
107130
107130
  * @returns {Source} CodeMirror linting source
107131
107131
  */
107132
107132
  function cmFeelersLinter() {
107133
- const lintFeel = cmFeelLinter();
107133
+ const lintFeel = cmFeelLinter$1();
107134
107134
  return editorView => {
107135
107135
 
107136
107136
  const feelMessages = lintFeel(editorView);
@@ -107142,7 +107142,7 @@
107142
107142
 
107143
107143
  const tree = syntaxTree(editorView.state);
107144
107144
 
107145
- const feelersMessages = lintAll(tree);
107145
+ const feelersMessages = lintAll$1(tree);
107146
107146
 
107147
107147
  return [
107148
107148
  ...feelMessages,
@@ -107236,7 +107236,7 @@
107236
107236
  const _getHostLanguageParser = (hostLanguage) => {
107237
107237
  switch (hostLanguage) {
107238
107238
  case 'markdown':
107239
- return parser$1;
107239
+ return parser$2;
107240
107240
  default:
107241
107241
  return null;
107242
107242
  }
@@ -107334,6 +107334,1538 @@
107334
107334
  return this._cmEditor.state.selection;
107335
107335
  };
107336
107336
 
107337
+ // This file was generated by lezer-generator. You probably shouldn't edit it.
107338
+ const propertyIdentifier = 121,
107339
+ identifier = 122,
107340
+ nameIdentifier = 123,
107341
+ insertSemi = 124,
107342
+ expression0 = 128,
107343
+ ForExpression = 4,
107344
+ forExpressionStart = 131,
107345
+ ForInExpression = 7,
107346
+ Name = 8,
107347
+ Identifier = 9,
107348
+ AdditionalIdentifier = 10,
107349
+ forExpressionBodyStart = 139,
107350
+ IfExpression = 19,
107351
+ ifExpressionStart = 140,
107352
+ QuantifiedExpression = 23,
107353
+ quantifiedExpressionStart = 141,
107354
+ QuantifiedInExpression = 27,
107355
+ PositiveUnaryTest = 37,
107356
+ ArithmeticExpression = 41,
107357
+ arithmeticPlusStart = 145,
107358
+ arithmeticTimesStart = 146,
107359
+ arithmeticExpStart = 147,
107360
+ arithmeticUnaryStart = 148,
107361
+ VariableName = 47,
107362
+ PathExpression = 68,
107363
+ pathExpressionStart = 154,
107364
+ FilterExpression = 70,
107365
+ filterExpressionStart = 155,
107366
+ FunctionInvocation = 72,
107367
+ functionInvocationStart = 156,
107368
+ ParameterName = 76,
107369
+ nil = 161,
107370
+ NumericLiteral = 79,
107371
+ StringLiteral = 80,
107372
+ BooleanLiteral = 81,
107373
+ listStart = 168,
107374
+ List = 89,
107375
+ FunctionDefinition = 90,
107376
+ functionDefinitionStart = 170,
107377
+ Context$1 = 97,
107378
+ contextStart = 172,
107379
+ ContextEntry = 98,
107380
+ PropertyName = 100,
107381
+ PropertyIdentifier = 101;
107382
+
107383
+ /* global console,process */
107384
+
107385
+
107386
+ // @ts-expect-error env access
107387
+ const LOG_PARSE = typeof process != 'undefined' && process.env && /\bfparse(:dbg)?\b/.test(process.env.LOG);
107388
+
107389
+ // @ts-expect-error env access
107390
+ const LOG_PARSE_DEBUG = typeof process != 'undefined' && process.env && /\bfparse:dbg\b/.test(process.env.LOG);
107391
+
107392
+ // @ts-expect-error env access
107393
+ const LOG_VARS = typeof process != 'undefined' && process.env && /\bcontext\b/.test(process.env.LOG);
107394
+
107395
+ const spaceChars = [
107396
+ 9, 11, 12, 32, 133, 160,
107397
+ 5760, 8192, 8193, 8194, 8195, 8196, 8197, 8198,
107398
+ 8199, 8200, 8201, 8202, 8232, 8233, 8239, 8287, 12288
107399
+ ];
107400
+
107401
+ const newlineChars = chars('\n\r');
107402
+
107403
+ const asterix = '*'.charCodeAt(0);
107404
+
107405
+ const additionalNameChars = chars("'./-+*^");
107406
+
107407
+ /**
107408
+ * @typedef { VariableContext | any } ContextValue
107409
+ */
107410
+
107411
+ /**
107412
+ * @param { string } str
107413
+ * @return { number[] }
107414
+ */
107415
+ function chars(str) {
107416
+ return Array.from(str).map(s => s.charCodeAt(0));
107417
+ }
107418
+
107419
+ /**
107420
+ * @param { number } ch
107421
+ * @return { boolean }
107422
+ */
107423
+ function isStartChar(ch) {
107424
+ return (
107425
+ ch === 63 // ?
107426
+ ) || (
107427
+ ch >= 65 && ch <= 90 // A-Z
107428
+ ) || (
107429
+ ch === 95 // _
107430
+ ) || (
107431
+ ch >= 97 && ch <= 122 // a-z
107432
+ ) || (
107433
+ ch >= 0xC0 && ch <= 0xD6
107434
+ ) || (
107435
+ ch >= 0xD8 && ch <= 0xF6
107436
+ ) || (
107437
+ ch >= 0xF8 && ch <= 0x2FF
107438
+ ) || (
107439
+ ch >= 0x370 && ch <= 0x37D
107440
+ ) || (
107441
+ ch >= 0x37F && ch <= 0x1FFF
107442
+ ) || (
107443
+ ch >= 0x200C && ch <= 0x200D
107444
+ ) || (
107445
+ ch >= 0x2070 && ch <= 0x218F
107446
+ ) || (
107447
+ ch >= 0x2C00 && ch <= 0x2FEF
107448
+ ) || (
107449
+ ch >= 0x3001 && ch <= 0xD7FF
107450
+ ) || (
107451
+ ch >= 0xF900 && ch <= 0xFDCF
107452
+ ) || (
107453
+ ch >= 0xFDF0 && ch <= 0xFFFD
107454
+ ) || (
107455
+ ch >= 0xD800 && ch <= 0xDBFF // upper surrogate
107456
+ ) || (
107457
+ ch >= 0xDC00 && ch <= 0xDFFF // lower surrogate
107458
+ );
107459
+ }
107460
+
107461
+ /**
107462
+ * @param { number } ch
107463
+ * @return { boolean }
107464
+ */
107465
+ function isAdditional(ch) {
107466
+ return additionalNameChars.includes(ch);
107467
+ }
107468
+
107469
+ /**
107470
+ * @param { number } ch
107471
+ * @return { boolean }
107472
+ */
107473
+ function isPartChar(ch) {
107474
+ return (
107475
+ ch >= 48 && ch <= 57 // 0-9
107476
+ ) || (
107477
+ ch === 0xB7
107478
+ ) || (
107479
+ ch >= 0x0300 && ch <= 0x036F
107480
+ ) || (
107481
+ ch >= 0x203F && ch <= 0x2040
107482
+ );
107483
+ }
107484
+
107485
+ /**
107486
+ * @param { number } ch
107487
+ * @return { boolean }
107488
+ */
107489
+ function isSpace(ch) {
107490
+ return spaceChars.includes(ch);
107491
+ }
107492
+
107493
+ function indent(str, spaces) {
107494
+ return spaces.concat(
107495
+ str.split(/\n/g).join('\n' + spaces)
107496
+ );
107497
+ }
107498
+
107499
+ /**
107500
+ * @param { import('@lezer/lr').InputStream } input
107501
+ * @param { number } [offset]
107502
+ *
107503
+ * @return { { token: string, offset: number } | null }
107504
+ */
107505
+ function parseAdditionalSymbol(input, offset = 0) {
107506
+
107507
+ const next = input.peek(offset);
107508
+
107509
+ if (next === asterix && input.peek(offset + 1) === asterix) {
107510
+
107511
+ return {
107512
+ offset: 2,
107513
+ token: '**'
107514
+ };
107515
+ }
107516
+
107517
+ if (isAdditional(next)) {
107518
+ return {
107519
+ offset: 1,
107520
+ token: String.fromCharCode(next)
107521
+ };
107522
+ }
107523
+
107524
+ return null;
107525
+ }
107526
+
107527
+ /**
107528
+ * @param { import('@lezer/lr').InputStream } input
107529
+ * @param { number } [offset]
107530
+ * @param { boolean } [namePart]
107531
+ *
107532
+ * @return { { token: string, offset: number } | null }
107533
+ */
107534
+ function parseIdentifier(input, offset = 0, namePart = false) {
107535
+ for (let inside = false, chars = [], i = 0;; i++) {
107536
+ const next = input.peek(offset + i);
107537
+
107538
+ if (isStartChar(next) || ((inside || namePart) && isPartChar(next))) {
107539
+ if (!inside) {
107540
+ inside = true;
107541
+ }
107542
+
107543
+ chars.push(next);
107544
+ } else {
107545
+
107546
+ if (chars.length) {
107547
+ return {
107548
+ token: String.fromCharCode(...chars),
107549
+ offset: i
107550
+ };
107551
+ }
107552
+
107553
+ return null;
107554
+ }
107555
+ }
107556
+ }
107557
+
107558
+ /**
107559
+ * @param { import('@lezer/lr').InputStream } input
107560
+ * @param { number } offset
107561
+ *
107562
+ * @return { { token: string, offset: number } | null }
107563
+ */
107564
+ function parseSpaces(input, offset) {
107565
+
107566
+ for (let inside = false, i = 0;; i++) {
107567
+ let next = input.peek(offset + i);
107568
+
107569
+ if (isSpace(next)) {
107570
+ if (!inside) {
107571
+ inside = true;
107572
+ }
107573
+ } else {
107574
+ if (inside) {
107575
+ return {
107576
+ token: ' ',
107577
+ offset: i
107578
+ };
107579
+ }
107580
+
107581
+ return null;
107582
+ }
107583
+ }
107584
+ }
107585
+
107586
+ /**
107587
+ * Parse a name from the input and return the first match, if any.
107588
+ *
107589
+ * @param { import('@lezer/lr').InputStream } input
107590
+ * @param { Variables } variables
107591
+ *
107592
+ * @return { { token: string, offset: number, term: number } | null }
107593
+ */
107594
+ function parseName$1(input, variables) {
107595
+ const contextKeys = variables.contextKeys();
107596
+
107597
+ const start = variables.tokens;
107598
+
107599
+ for (let i = 0, tokens = [], nextMatch = null;;) {
107600
+
107601
+ const namePart = (start.length + tokens.length) > 0;
107602
+ const maybeSpace = tokens.length > 0;
107603
+
107604
+ const match = (
107605
+ parseIdentifier(input, i, namePart) ||
107606
+ namePart && parseAdditionalSymbol(input, i) ||
107607
+ maybeSpace && parseSpaces(input, i)
107608
+ );
107609
+
107610
+ // match is required
107611
+ if (!match) {
107612
+ return nextMatch;
107613
+ }
107614
+
107615
+ const {
107616
+ token,
107617
+ offset
107618
+ } = match;
107619
+
107620
+ i += offset;
107621
+
107622
+ if (token === ' ') {
107623
+ continue;
107624
+ }
107625
+
107626
+ tokens = [ ...tokens, token ];
107627
+
107628
+ const name = [ ...start, ...tokens ].join(' ');
107629
+
107630
+ if (contextKeys.some(el => el === name)) {
107631
+ const token = tokens[0];
107632
+
107633
+ nextMatch = {
107634
+ token,
107635
+ offset: token.length,
107636
+ term: nameIdentifier
107637
+ };
107638
+ }
107639
+
107640
+ if (contextKeys.some(el => el.startsWith(name))) {
107641
+ continue;
107642
+ }
107643
+
107644
+ if (dateTimeIdentifiers.some(el => el === name)) {
107645
+ const token = tokens[0];
107646
+
107647
+ // parse date time identifiers as normal
107648
+ // identifiers to allow specialization to kick in
107649
+ //
107650
+ // cf. https://github.com/nikku/lezer-feel/issues/8
107651
+ nextMatch = {
107652
+ token,
107653
+ offset: token.length,
107654
+ term: identifier
107655
+ };
107656
+ }
107657
+
107658
+ if (dateTimeIdentifiers.some(el => el.startsWith(name))) {
107659
+ continue;
107660
+ }
107661
+
107662
+ return nextMatch;
107663
+ }
107664
+
107665
+ }
107666
+
107667
+ const identifiersMap = {
107668
+ [ identifier ]: 'identifier',
107669
+ [ nameIdentifier ]: 'nameIdentifier'
107670
+ };
107671
+
107672
+ const identifiers$1 = new ExternalTokenizer((input, stack) => {
107673
+
107674
+ LOG_PARSE_DEBUG && console.log('%s: T <identifier | nameIdentifier>', input.pos);
107675
+
107676
+ const nameMatch = parseName$1(input, stack.context);
107677
+
107678
+ const start = stack.context.tokens;
107679
+
107680
+ const match = nameMatch || parseIdentifier(input, 0, start.length > 0);
107681
+
107682
+ if (match) {
107683
+ input.advance(match.offset);
107684
+ input.acceptToken(nameMatch ? nameMatch.term : identifier);
107685
+
107686
+ LOG_PARSE && console.log('%s: MATCH <%s> <%s>', input.pos, nameMatch ? identifiersMap[nameMatch.term] : 'identifier', match.token);
107687
+ }
107688
+ }, { contextual: true });
107689
+
107690
+
107691
+ const propertyIdentifiers = new ExternalTokenizer((input, stack) => {
107692
+
107693
+ LOG_PARSE_DEBUG && console.log('%s: T <propertyIdentifier>', input.pos);
107694
+
107695
+ const start = stack.context.tokens;
107696
+
107697
+ const match = parseIdentifier(input, 0, start.length > 0);
107698
+
107699
+ if (match) {
107700
+ input.advance(match.offset);
107701
+ input.acceptToken(propertyIdentifier);
107702
+
107703
+ LOG_PARSE && console.log('%s: MATCH <propertyIdentifier> <%s>', input.pos, match.token);
107704
+ }
107705
+ });
107706
+
107707
+
107708
+ const insertSemicolon = new ExternalTokenizer((input, stack) => {
107709
+
107710
+ LOG_PARSE_DEBUG && console.log('%s: T <insertSemi>', input.pos);
107711
+
107712
+ let offset;
107713
+ let insert = false;
107714
+
107715
+ for (offset = 0;; offset++) {
107716
+ const char = input.peek(offset);
107717
+
107718
+ if (spaceChars.includes(char)) {
107719
+ continue;
107720
+ }
107721
+
107722
+ if (newlineChars.includes(char)) {
107723
+ insert = true;
107724
+ }
107725
+
107726
+ break;
107727
+ }
107728
+
107729
+ if (insert) {
107730
+
107731
+ const identifier = parseIdentifier(input, offset + 1);
107732
+ const spaces = parseSpaces(input, offset + 1);
107733
+
107734
+ if (spaces || identifier && /^(then|else|return|satisfies)$/.test(identifier.token)) {
107735
+ return;
107736
+ }
107737
+
107738
+ LOG_PARSE && console.log('%s: MATCH <insertSemi>', input.pos);
107739
+ input.acceptToken(insertSemi);
107740
+ }
107741
+ });
107742
+
107743
+ const prefixedContextStarts = {
107744
+ [ functionInvocationStart ]: 'FunctionInvocation',
107745
+ [ filterExpressionStart ]: 'FilterExpression',
107746
+ [ pathExpressionStart ]: 'PathExpression'
107747
+ };
107748
+
107749
+ const contextStarts = {
107750
+ [ contextStart ]: 'Context',
107751
+ [ functionDefinitionStart ]: 'FunctionDefinition',
107752
+ [ forExpressionStart ]: 'ForExpression',
107753
+ [ listStart ]: 'List',
107754
+ [ ifExpressionStart ]: 'IfExpression',
107755
+ [ quantifiedExpressionStart ]: 'QuantifiedExpression'
107756
+ };
107757
+
107758
+ const contextEnds = {
107759
+ [ Context$1 ]: 'Context',
107760
+ [ FunctionDefinition ]: 'FunctionDefinition',
107761
+ [ ForExpression ]: 'ForExpression',
107762
+ [ List ]: 'List',
107763
+ [ IfExpression ]: 'IfExpression',
107764
+ [ QuantifiedExpression ]: 'QuantifiedExpression',
107765
+ [ PathExpression ]: 'PathExpression',
107766
+ [ FunctionInvocation ]: 'FunctionInvocation',
107767
+ [ FilterExpression ]: 'FilterExpression',
107768
+ [ ArithmeticExpression ]: 'ArithmeticExpression'
107769
+ };
107770
+
107771
+ /**
107772
+ * A simple producer that retrievs a value from
107773
+ * a given context. Used to lazily take things.
107774
+ */
107775
+ class ValueProducer {
107776
+
107777
+ /**
107778
+ * @param { Function } fn
107779
+ */
107780
+ constructor(fn) {
107781
+ this.fn = fn;
107782
+ }
107783
+
107784
+ get(variables) {
107785
+ return this.fn(variables);
107786
+ }
107787
+
107788
+ /**
107789
+ * @param { Function } fn
107790
+ *
107791
+ * @return { ValueProducer }
107792
+ */
107793
+ static of(fn) {
107794
+ return new ValueProducer(fn);
107795
+ }
107796
+
107797
+ }
107798
+
107799
+ const dateTimeLiterals = {
107800
+ 'date and time': 1,
107801
+ 'date': 1,
107802
+ 'time': 1,
107803
+ 'duration': 1
107804
+ };
107805
+
107806
+ const dateTimeIdentifiers = Object.keys(dateTimeLiterals);
107807
+
107808
+
107809
+ /**
107810
+ * A basic key-value store to hold context values.
107811
+ */
107812
+ class VariableContext {
107813
+
107814
+ /**
107815
+ * Creates a new context from a JavaScript object.
107816
+ *
107817
+ * @param {any} [value]
107818
+ */
107819
+ constructor(value = {}) {
107820
+
107821
+ /**
107822
+ * @protected
107823
+ */
107824
+ this.value = value;
107825
+ }
107826
+
107827
+ /**
107828
+ * Return all defined keys of the context.
107829
+ *
107830
+ * @returns {Array<string>} the keys of the context
107831
+ */
107832
+ getKeys() {
107833
+ return Object.keys(this.value);
107834
+ }
107835
+
107836
+ /**
107837
+ * Returns the value of the given key.
107838
+ *
107839
+ * If the value represents a context itself, it should be wrapped in a
107840
+ * context class.
107841
+ *
107842
+ * @param {String} key
107843
+ * @returns {VariableContext|ValueProducer|null}
107844
+ */
107845
+ get(key) {
107846
+ const result = this.value[key];
107847
+
107848
+ const constructor = /** @type { typeof VariableContext } */ (this.constructor);
107849
+
107850
+ if (constructor.isAtomic(result)) {
107851
+ return result;
107852
+ }
107853
+
107854
+ return constructor.of(result);
107855
+ }
107856
+
107857
+ /**
107858
+ * Creates a new context with the given key added.
107859
+ *
107860
+ * @param {String} key
107861
+ * @param {any} value
107862
+ *
107863
+ * @returns {VariableContext} new context with the given key added
107864
+ */
107865
+ set(key, value) {
107866
+
107867
+ const constructor = /** @type { typeof VariableContext } */ (this.constructor);
107868
+
107869
+ return constructor.of({
107870
+ ...this.value,
107871
+ [key]: value
107872
+ });
107873
+ }
107874
+
107875
+ /**
107876
+ * Non-destructively merge another context into this one,
107877
+ * and return the result.
107878
+ *
107879
+ * @param {ContextValue} other
107880
+ *
107881
+ * @return {VariableContext}
107882
+ */
107883
+ merge(other) {
107884
+ const constructor = /** @type { typeof VariableContext } */ (this.constructor);
107885
+
107886
+ return new constructor(
107887
+ constructor.__merge(this.value, other)
107888
+ );
107889
+ }
107890
+
107891
+ /**
107892
+ * Wether the given value is atomic. Non-atomic values need to be wrapped in a
107893
+ * context Class.
107894
+ *
107895
+ * @param {any} value
107896
+ * @returns {Boolean}
107897
+ */
107898
+ static isAtomic(value) {
107899
+ return !value ||
107900
+ value instanceof this ||
107901
+ value instanceof ValueProducer ||
107902
+ typeof value !== 'object';
107903
+ }
107904
+
107905
+ /**
107906
+ * Takes any number of Contexts and merges them into a single context.
107907
+ *
107908
+ * @param { ...VariableContext } contexts
107909
+ * @returns { VariableContext }
107910
+ */
107911
+ static of(...contexts) {
107912
+ return contexts.reduce((context, otherContext) => {
107913
+ return context.merge(otherContext);
107914
+ }, new this({}));
107915
+ }
107916
+
107917
+ /**
107918
+ * Returns the raw representation of the given context.
107919
+ *
107920
+ * @param {VariableContext | any} context
107921
+ *
107922
+ * @return {any}
107923
+ */
107924
+ static __unwrap(context) {
107925
+ if (!context) {
107926
+ return {};
107927
+ }
107928
+
107929
+ if (context instanceof this) {
107930
+ return context.value;
107931
+ }
107932
+
107933
+ if (typeof context !== 'object') {
107934
+ return {};
107935
+ }
107936
+
107937
+ return { ...context };
107938
+ }
107939
+
107940
+ /**
107941
+ * Non-destructively merges two contexts (or their values)
107942
+ * with each other, returning the result.
107943
+ *
107944
+ * @param {ContextValue} context
107945
+ * @param {ContextValue} other
107946
+ *
107947
+ * @return {any}
107948
+ */
107949
+ static __merge(context, other) {
107950
+
107951
+ return reduce(this.__unwrap(other), (merged, value, key) => {
107952
+ if (value instanceof ValueProducer) {
107953
+
107954
+ // keep value producers in tact
107955
+ return {
107956
+ ...merged,
107957
+ [key]: value
107958
+ };
107959
+ }
107960
+
107961
+ value = this.__unwrap(value);
107962
+
107963
+ if (has$3(merged, key)) {
107964
+ value = this.__merge(this.__unwrap(merged[key]), value);
107965
+ }
107966
+
107967
+ return {
107968
+ ...merged,
107969
+ [key]: value
107970
+ };
107971
+ }, this.__unwrap(context));
107972
+ }
107973
+
107974
+ }
107975
+
107976
+ class Variables {
107977
+
107978
+ /**
107979
+ * @param { {
107980
+ * name?: string,
107981
+ * tokens?: string[],
107982
+ * children?: Variables[],
107983
+ * parent: Variables | null
107984
+ * context: VariableContext,
107985
+ * value?: any,
107986
+ * raw?: any
107987
+ * } } options
107988
+ */
107989
+ constructor({
107990
+ name = 'Expressions',
107991
+ tokens = [],
107992
+ children = [],
107993
+ parent = null,
107994
+ context,
107995
+ value,
107996
+ raw
107997
+ }) {
107998
+ this.name = name;
107999
+ this.tokens = tokens;
108000
+ this.children = children;
108001
+ this.parent = parent;
108002
+ this.context = context;
108003
+ this.value = value;
108004
+ this.raw = raw;
108005
+ }
108006
+
108007
+ enterScope(name) {
108008
+
108009
+ const childScope = this.of({
108010
+ name,
108011
+ parent: this
108012
+ });
108013
+
108014
+ LOG_VARS && console.log('[%s] enter', childScope.path, childScope.context);
108015
+
108016
+ return childScope;
108017
+ }
108018
+
108019
+ exitScope(str) {
108020
+
108021
+ if (!this.parent) {
108022
+ LOG_VARS && console.log('[%s] NO exit %o\n%s', this.path, this.context, indent(str, ' '));
108023
+
108024
+ return this;
108025
+ }
108026
+
108027
+ LOG_VARS && console.log('[%s] exit %o\n%s', this.path, this.context, indent(str, ' '));
108028
+
108029
+ return this.parent.pushChild(this);
108030
+ }
108031
+
108032
+ token(part) {
108033
+
108034
+ LOG_VARS && console.log('[%s] token <%s> + <%s>', this.path, this.tokens.join(' '), part);
108035
+
108036
+ return this.assign({
108037
+ tokens: [ ...this.tokens, part ]
108038
+ });
108039
+ }
108040
+
108041
+ literal(value) {
108042
+
108043
+ LOG_VARS && console.log('[%s] literal %o', this.path, value);
108044
+
108045
+ return this.pushChild(this.of({
108046
+ name: 'Literal',
108047
+ value
108048
+ }));
108049
+ }
108050
+
108051
+ /**
108052
+ * Return computed scope value
108053
+ *
108054
+ * @return {any}
108055
+ */
108056
+ computedValue() {
108057
+ for (let scope = this;;scope = last(scope.children)) {
108058
+
108059
+ if (!scope) {
108060
+ return null;
108061
+ }
108062
+
108063
+ if (scope.value) {
108064
+ return scope.value;
108065
+ }
108066
+ }
108067
+ }
108068
+
108069
+ contextKeys() {
108070
+ return this.context.getKeys().map(normalizeContextKey);
108071
+ }
108072
+
108073
+ get path() {
108074
+ return this.parent?.path?.concat(' > ', this.name) || this.name;
108075
+ }
108076
+
108077
+ /**
108078
+ * Return value of variable.
108079
+ *
108080
+ * @param { string } variable
108081
+ * @return { any } value
108082
+ */
108083
+ get(variable) {
108084
+
108085
+ const names = [ variable, variable && normalizeContextKey(variable) ];
108086
+
108087
+ const contextKey = this.context.getKeys().find(
108088
+ key => names.includes(normalizeContextKey(key))
108089
+ );
108090
+
108091
+ if (typeof contextKey === 'undefined') {
108092
+ return undefined;
108093
+ }
108094
+
108095
+ const val = this.context.get(contextKey);
108096
+
108097
+ if (val instanceof ValueProducer) {
108098
+ return val.get(this);
108099
+ } else {
108100
+ return val;
108101
+ }
108102
+ }
108103
+
108104
+ resolveName() {
108105
+
108106
+ const variable = this.tokens.join(' ');
108107
+ const tokens = [];
108108
+
108109
+ const parentScope = this.assign({
108110
+ tokens
108111
+ });
108112
+
108113
+ const variableScope = this.of({
108114
+ name: 'VariableName',
108115
+ parent: parentScope,
108116
+ value: this.get(variable),
108117
+ raw: variable
108118
+ });
108119
+
108120
+ LOG_VARS && console.log('[%s] resolve name <%s=%s>', variableScope.path, variable, this.get(variable));
108121
+
108122
+ return parentScope.pushChild(variableScope);
108123
+ }
108124
+
108125
+ pushChild(child) {
108126
+
108127
+ if (!child) {
108128
+ return this;
108129
+ }
108130
+
108131
+ const parent = this.assign({
108132
+ children: [ ...this.children, child ]
108133
+ });
108134
+
108135
+ child.parent = parent;
108136
+
108137
+ return parent;
108138
+ }
108139
+
108140
+ pushChildren(children) {
108141
+
108142
+ /**
108143
+ * @type {Variables}
108144
+ */
108145
+ let parent = this;
108146
+
108147
+ for (const child of children) {
108148
+ parent = parent.pushChild(child);
108149
+ }
108150
+
108151
+ return parent;
108152
+ }
108153
+
108154
+ declareName() {
108155
+
108156
+ if (this.tokens.length === 0) {
108157
+ throw Error('no tokens to declare name');
108158
+ }
108159
+
108160
+ const variableName = this.tokens.join(' ');
108161
+
108162
+ LOG_VARS && console.log('[%s] declareName <%s>', this.path, variableName);
108163
+
108164
+ return this.assign({
108165
+ tokens: []
108166
+ }).pushChild(
108167
+ this.of({
108168
+ name: 'Name',
108169
+ value: variableName
108170
+ })
108171
+ );
108172
+ }
108173
+
108174
+ define(name, value) {
108175
+
108176
+ if (typeof name !== 'string') {
108177
+ LOG_VARS && console.log('[%s] no define <%s=%s>', this.path, name, value);
108178
+
108179
+ return this;
108180
+ }
108181
+
108182
+ LOG_VARS && console.log('[%s] define <%s=%s>', this.path, name, value);
108183
+
108184
+ const context = this.context.set(name, value);
108185
+
108186
+ return this.assign({
108187
+ context
108188
+ });
108189
+ }
108190
+
108191
+ /**
108192
+ * @param { Record<string, any> } [options]
108193
+ *
108194
+ * @return { Variables }
108195
+ */
108196
+ assign(options = {}) {
108197
+
108198
+ return Variables.of({
108199
+ ...this,
108200
+ ...options
108201
+ });
108202
+ }
108203
+
108204
+ /**
108205
+ * @param { Record<string, any> } [options]
108206
+ *
108207
+ * @return { Variables }
108208
+ */
108209
+ of(options = {}) {
108210
+
108211
+ const defaultOptions = {
108212
+ context: this.context,
108213
+ parent: this.parent
108214
+ };
108215
+
108216
+ return Variables.of({
108217
+ ...defaultOptions,
108218
+ ...options
108219
+ });
108220
+ }
108221
+
108222
+ /**
108223
+ * @param { {
108224
+ * name?: string,
108225
+ * tokens?: string[],
108226
+ * children?: Variables[],
108227
+ * parent?: Variables | null
108228
+ * context: VariableContext,
108229
+ * value?: any,
108230
+ * raw?: any
108231
+ * } } options
108232
+ *
108233
+ * @return {Variables}
108234
+ */
108235
+ static of(options) {
108236
+
108237
+ const {
108238
+ name,
108239
+ tokens = [],
108240
+ children = [],
108241
+ parent = null,
108242
+ context,
108243
+ value,
108244
+ raw
108245
+ } = options;
108246
+
108247
+ if (!context) {
108248
+ throw new Error('must provide <context>');
108249
+ }
108250
+
108251
+ return new Variables({
108252
+ name,
108253
+ tokens: [ ...tokens ],
108254
+ children: [ ...children ],
108255
+ context,
108256
+ parent,
108257
+ value,
108258
+ raw
108259
+ });
108260
+ }
108261
+
108262
+ }
108263
+
108264
+ /**
108265
+ * @param { string } name
108266
+ *
108267
+ * @return { string } normalizedName
108268
+ */
108269
+ function normalizeContextKey(name) {
108270
+ return name.replace(/\s*([./\-'+]|\*\*?)\s*/g, ' $1 ').replace(/\s{2,}/g, ' ').trim();
108271
+ }
108272
+
108273
+ /**
108274
+ * Wrap children of variables under the given named child.
108275
+ *
108276
+ * @param { Variables } variables
108277
+ * @param { string } scopeName
108278
+ * @param { string } code
108279
+ * @return { Variables }
108280
+ */
108281
+ function wrap(variables, scopeName, code) {
108282
+
108283
+ const parts = variables.children.filter(c => c.name !== scopeName);
108284
+ const children = variables.children.filter(c => c.name === scopeName);
108285
+
108286
+ const namePart = parts[0];
108287
+ const valuePart = parts[Math.max(1, parts.length - 1)];
108288
+
108289
+ const name = namePart?.computedValue();
108290
+ const value = valuePart?.computedValue() || null;
108291
+
108292
+ return variables
108293
+ .assign({
108294
+ children
108295
+ })
108296
+ .enterScope(scopeName)
108297
+ .pushChildren(parts)
108298
+ .exitScope(code)
108299
+ .define(name, value);
108300
+ }
108301
+
108302
+ /**
108303
+ * @param { ContextValue } [context]
108304
+ * @param { typeof VariableContext } [Context]
108305
+ *
108306
+ * @return { ContextTracker<Variables> }
108307
+ */
108308
+ function trackVariables(context = {}, Context = VariableContext) {
108309
+
108310
+ const start = Variables.of({
108311
+ context: Context.of(context)
108312
+ });
108313
+
108314
+ return new ContextTracker({
108315
+ start,
108316
+ reduce(variables, term, stack, input) {
108317
+
108318
+ if (term === IfExpression) {
108319
+ const [ thenPart, elsePart ] = variables.children.slice(-2);
108320
+
108321
+ variables = variables.assign({
108322
+ value: Context.of(
108323
+ thenPart?.computedValue(),
108324
+ elsePart?.computedValue()
108325
+ )
108326
+ });
108327
+ }
108328
+
108329
+ if (term === List) {
108330
+ variables = variables.assign({
108331
+ value: Context.of(
108332
+ ...variables.children.map(
108333
+ c => c?.computedValue()
108334
+ )
108335
+ )
108336
+ });
108337
+ }
108338
+
108339
+ if (term === FilterExpression) {
108340
+ const [ sourcePart, _ ] = variables.children.slice(-2);
108341
+
108342
+ variables = variables.assign({
108343
+ value: sourcePart?.computedValue()
108344
+ });
108345
+ }
108346
+
108347
+ if (term === FunctionInvocation) {
108348
+
108349
+ const [
108350
+ name,
108351
+ ...args
108352
+ ] = variables.children;
108353
+
108354
+ // preserve type information through `get value(context, key)` utility
108355
+ if (name?.raw === 'get value') {
108356
+ variables = getContextValue(variables, args);
108357
+ }
108358
+ }
108359
+
108360
+ const start = contextStarts[term];
108361
+
108362
+ if (start) {
108363
+ return variables.enterScope(start);
108364
+ }
108365
+
108366
+ const prefixedStart = prefixedContextStarts[term];
108367
+
108368
+ // pull <expression> into new <prefixedStart> context
108369
+ if (prefixedStart) {
108370
+
108371
+ const {
108372
+ children: currentChildren,
108373
+ context: currentContext,
108374
+ } = variables;
108375
+
108376
+ const children = currentChildren.slice(0, -1);
108377
+ const lastChild = last(currentChildren);
108378
+
108379
+ let newContext = null;
108380
+
108381
+ if (term === pathExpressionStart) {
108382
+ newContext = Context.of(lastChild?.computedValue());
108383
+ }
108384
+
108385
+ if (term === filterExpressionStart) {
108386
+ newContext = Context.of(
108387
+ currentContext,
108388
+ lastChild?.computedValue()
108389
+ ).set('item', lastChild?.computedValue());
108390
+ }
108391
+
108392
+ return variables
108393
+ .assign({ children })
108394
+ .enterScope(prefixedStart)
108395
+ .pushChild(lastChild)
108396
+ .assign({ context: newContext || currentContext });
108397
+ }
108398
+
108399
+ // @ts-expect-error internal method
108400
+ const code = input.read(input.pos, stack.pos);
108401
+
108402
+ const end = contextEnds[term];
108403
+
108404
+ if (end) {
108405
+ return variables.exitScope(code);
108406
+ }
108407
+
108408
+ if (term === ContextEntry) {
108409
+ const parts = variables.children.filter(c => c.name !== 'ContextEntry');
108410
+
108411
+ const name = parts[0];
108412
+ const value = last(parts);
108413
+
108414
+ return wrap(variables, 'ContextEntry', code).assign(
108415
+ {
108416
+ value: Context
108417
+ .of(variables.value)
108418
+ .set(name?.computedValue(), value?.computedValue())
108419
+ }
108420
+ );
108421
+ }
108422
+
108423
+ if (
108424
+ term === ForInExpression ||
108425
+ term === QuantifiedInExpression
108426
+ ) {
108427
+ return wrap(variables, 'InExpression', code);
108428
+ }
108429
+
108430
+ // define <partial> within ForExpression body
108431
+ if (term === forExpressionBodyStart) {
108432
+
108433
+ return variables.define(
108434
+ 'partial',
108435
+ ValueProducer.of(variables => {
108436
+ return last(variables.children)?.computedValue();
108437
+ })
108438
+ );
108439
+ }
108440
+
108441
+ if (
108442
+ term === ParameterName
108443
+ ) {
108444
+ const name = last(variables.children).computedValue();
108445
+
108446
+ // TODO: attach type information
108447
+ return variables.define(name, 1);
108448
+ }
108449
+
108450
+ // pull <expression> into ArithmeticExpression child
108451
+ if (
108452
+ term === arithmeticPlusStart ||
108453
+ term === arithmeticTimesStart ||
108454
+ term === arithmeticExpStart
108455
+ ) {
108456
+ const children = variables.children.slice(0, -1);
108457
+ const lastChild = last(variables.children);
108458
+
108459
+ return variables.assign({
108460
+ children
108461
+ }).enterScope('ArithmeticExpression').pushChild(lastChild);
108462
+ }
108463
+
108464
+ if (term === arithmeticUnaryStart) {
108465
+ return variables.enterScope('ArithmeticExpression');
108466
+ }
108467
+
108468
+ if (
108469
+ term === Identifier ||
108470
+ term === AdditionalIdentifier ||
108471
+ term === PropertyIdentifier
108472
+ ) {
108473
+ return variables.token(code);
108474
+ }
108475
+
108476
+ if (
108477
+ term === StringLiteral
108478
+ ) {
108479
+ return variables.literal(code.replace(/^"|"$/g, ''));
108480
+ }
108481
+
108482
+ if (term === BooleanLiteral) {
108483
+ return variables.literal(code === 'true' ? true : false);
108484
+ }
108485
+
108486
+ if (term === NumericLiteral) {
108487
+ return variables.literal(parseFloat(code));
108488
+ }
108489
+
108490
+ if (term === nil) {
108491
+ return variables.literal(null);
108492
+ }
108493
+
108494
+ if (
108495
+ term === VariableName
108496
+ ) {
108497
+ return variables.resolveName();
108498
+ }
108499
+
108500
+ if (
108501
+ term === Name ||
108502
+ term === PropertyName
108503
+ ) {
108504
+ return variables.declareName();
108505
+ }
108506
+
108507
+ if (
108508
+ term === expression0 ||
108509
+ term === PositiveUnaryTest
108510
+ ) {
108511
+ if (variables.tokens.length > 0) {
108512
+ throw new Error('uncleared name');
108513
+ }
108514
+ }
108515
+
108516
+ if (term === expression0) {
108517
+
108518
+ let parent = variables;
108519
+
108520
+ while (parent.parent) {
108521
+ parent = parent.exitScope(code);
108522
+ }
108523
+
108524
+ return parent;
108525
+ }
108526
+
108527
+ return variables;
108528
+ }
108529
+ });
108530
+ }
108531
+
108532
+ const variableTracker = trackVariables({});
108533
+
108534
+
108535
+ // helpers //////////////
108536
+
108537
+ function getContextValue(variables, args) {
108538
+
108539
+ if (!args.length) {
108540
+ return variables.assign({
108541
+ value: null
108542
+ });
108543
+ }
108544
+
108545
+ if (args[0].name === 'Name') {
108546
+ args = extractNamedArgs(args, [ 'm', 'key' ]);
108547
+ }
108548
+
108549
+ if (args.length !== 2) {
108550
+ return variables.assign({
108551
+ value: null
108552
+ });
108553
+ }
108554
+
108555
+ const [
108556
+ context,
108557
+ key
108558
+ ] = args;
108559
+
108560
+ const keyValue = key?.computedValue();
108561
+ const contextValue = context?.computedValue();
108562
+
108563
+ if (
108564
+ (!contextValue || typeof contextValue !== 'object') || typeof keyValue !== 'string'
108565
+ ) {
108566
+ return variables.assign({
108567
+ value: null
108568
+ });
108569
+ }
108570
+
108571
+ return variables.assign({
108572
+ value: [ normalizeContextKey(keyValue), keyValue ].reduce((value, keyValue) => {
108573
+ return contextValue.get(keyValue) || value;
108574
+ }, null)
108575
+ });
108576
+ }
108577
+
108578
+ function extractNamedArgs(args, argNames) {
108579
+
108580
+ const context = {};
108581
+
108582
+ for (let i = 0; i < args.length; i += 2) {
108583
+ const [ name, value ] = args.slice(i, i + 2);
108584
+
108585
+ context[name.value] = value;
108586
+ }
108587
+
108588
+ return argNames.map(name => context[name]);
108589
+ }
108590
+
108591
+ function last(arr) {
108592
+ return arr[arr.length - 1];
108593
+ }
108594
+
108595
+ const feelHighlighting = styleTags({
108596
+ StringLiteral: tags.string,
108597
+ NumericLiteral: tags.number,
108598
+ BooleanLiteral: tags.bool,
108599
+ 'AtLiteral!': tags.special(tags.string),
108600
+ CompareOp: tags.compareOperator,
108601
+ ArithOp: tags.arithmeticOperator,
108602
+ 'for if then else some every satisfies between return': tags.controlKeyword,
108603
+ 'in instance of and or': tags.operatorKeyword,
108604
+ function: tags.definitionKeyword,
108605
+ as: tags.keyword,
108606
+ 'Type/...': tags.typeName,
108607
+ Wildcard: tags.special(tags.variableName),
108608
+ null: tags.null,
108609
+ LineComment: tags.lineComment,
108610
+ BlockComment: tags.blockComment,
108611
+ 'VariableName! "?"': tags.variableName,
108612
+ 'DateTimeConstructor! SpecialFunctionName!': tags.function(tags.special(tags.variableName)),
108613
+ 'List Interval': tags.list,
108614
+ Context: tags.definition(tags.literal),
108615
+ 'Name!': tags.definition(tags.variableName),
108616
+ 'Key/Name! ContextEntryType/Name!': tags.definition(tags.propertyName),
108617
+ 'PathExpression/VariableName!': tags.function(tags.propertyName),
108618
+ 'FormalParameter/ParameterName!': tags.function(tags.definition(tags.variableName)),
108619
+ '( )': tags.paren,
108620
+ '[ ]': tags.squareBracket,
108621
+ '{ }': tags.brace,
108622
+ '.': tags.derefOperator,
108623
+ ', ;': tags.separator,
108624
+ '..': tags.punctuation
108625
+ });
108626
+
108627
+ // This file was generated by lezer-generator. You probably shouldn't edit it.
108628
+ const spec_identifier = {__proto__:null,for:10, in:32, return:36, if:40, then:42, else:44, some:48, every:50, satisfies:56, or:60, and:64, between:72, instance:86, of:89, days:101, time:103, duration:105, years:107, months:109, date:111, list:117, context:123, function:130, null:156, true:332, false:332, "?":170, external:186, not:211};
108629
+ const parser = LRParser.deserialize({
108630
+ version: 14,
108631
+ states: "C|O`QYOOO`QYOOO$yQYOOOOQU'#Ce'#CeO%TQYO'#C`O&^QYO'#FQOOQQ'#Ff'#FfO&hQYO'#FfO`QYO'#DVOOQU'#En'#EnO(_Q^O'#D]OOQU'#D^'#D^OOQU'#D]'#D]OOQO'#Fn'#FnO*[QWO'#DvOOQQ'#D}'#D}OOQQ'#EO'#EOOOQQ'#EP'#EPO*aOWO'#ESO*[QWO'#EQOOQQ'#EQ'#EQOOQQ'#Ft'#FtOOQQ'#Fr'#FrOOQQ'#Fz'#FzOOQQ'#EU'#EUO`QYO'#EWOOQQ'#FS'#FSO*iQ^O'#FSO,`QYO'#EXO,gQWO'#EYOOQP'#GO'#GOO,lQXO'#EaOOQQ'#F{'#F{OOQQ'#FR'#FRQOQWOOOOQQ'#FT'#FTOOQQ'#F^'#F^O`QYO'#CoOOQQ'#F_'#F_O%TQYO'#CsO,zQYO'#DwOOQQ'#Fs'#FsO-PQYO'#EROOQO'#ER'#ERO`QYO'#EVO`QYO'#EUOOQO'#F|'#F|Q-XQWOOO-^QYO'#DRO.TQWO'#FbOOQO'#DT'#DTO.`QYO'#FfO.gQWOOO/^QYO'#CdO/kQYO'#FVOOQQ'#Cc'#CcO/pQYO'#FUOOQQ'#Cb'#CbO/xQYO,58zO`QYO,59iOOQQ'#Fc'#FcOOQQ'#Fd'#FdOOQQ'#Fe'#FeO`QYO,59qO`QYO,59qO`QYO,59qOOQQ'#Fl'#FlO/}QYO,5:^OOQQ'#Fm'#FmO`QYO,5:`O`QYO,59eO`QYO,59gO`QYO,59iO1|QYO,59iO2TQYO,59rOOQQ,5:i,5:iO2YQYO,59qOOQU-E8l-E8lO3|QYO'#FoOOQQ,5:b,5:bOOQQ,5:n,5:nOOQQ,5:l,5:lO4TQYO,5:rOOQQ,5;n,5;nO4_QYO,5:qO4lQWO,5:sO4qQYO,5:tOOQP'#Ee'#EeO5hQXO'#EdOOQO'#Ec'#EcO5oQWO'#EbO5tQWO'#GPO5|QWO,5:{O6RQYO,59ZO/kQYO'#FaOOQQ'#Cw'#CwO6YQYO'#F`OOQQ'#Cv'#CvO6bQYO,59_O6gQYO,5:cO6lQYO,5:mO4WQYO,5:qO6qQYO,5:pO`QYO'#EwQ-XQWOOO`QYO'#EmO7hQWO,5;|O`QYOOOOQR'#Cf'#CfOOQQ'#Ej'#EjO8bQYO,59OO`QYO,5;qOOQQ'#FY'#FYO%TQYO'#EkO8rQYO,5;pO`QYO1G.fOOQQ'#F]'#F]O9iQYO1G/TO<`QYO1G/]O<jQYO1G/]O<tQYO1G/]OOQQ1G/x1G/xO>hQYO1G/zO>oQYO1G/PO?xQYO1G/ROARQYO1G/TO`QYO1G/TOOQQ1G/T1G/TOAiQYO1G/^OBWQ^O'#CdOCjQYO'#FqOOQO'#Dz'#DzOCtQWO'#DyOCyQWO'#FpOOQO'#Dx'#DxOOQO'#D{'#D{ODRQWO,5<ZOOQQ1G0^1G0^O`QYO1G0]O`QYO'#EsODWQWO,5<]OOQQ1G0_1G0_ODcQWO'#E[ODnQWO'#F}OOQO'#EZ'#EZODvQWO1G0`OOQP'#Eu'#EuOD{QXO,5;OO`QYO,5:|OESQXO'#EvOE_QWO,5<kOOQQ1G0g1G0gO`QYO1G.uO`QYO,5;{O%TQYO'#ElOEgQYO,5;zO`QYO1G.yOEoQYO1G/}OOQO1G0X1G0XOOQO,5;c,5;cOOQO-E8u-E8uOOQO,5;X,5;XOOQO-E8k-E8kOEtQWOOOOQQ-E8h-E8hOEyQYO'#CmOOQQ1G1]1G1]OOQQ,5;V,5;VOOQQ-E8i-E8iOFWQYO7+$QOOQQ7+%f7+%fO`QYO7+$oOF}QYO,5:rOG[QWO7+$oOGaQYO'#D[OOQQ'#DZ'#DZOITQYO'#D_OIYQYO'#D_OI_QYO'#D_OIdQ`O'#DgOIiQ`O'#DjOInQ`O'#DnOOQQ7+$x7+$xO`QYO,5:eO%TQYO'#ErOIsQWO,5<[OOQQ1G1u1G1uOJyQYO7+%wOKWQYO,5;_OOQO-E8q-E8qOAiQYO,5:vO%TQYO'#EtOKeQWO,5<iOKmQYO7+%zOOQP-E8s-E8sOKtQYO1G0hOOQO,5;b,5;bOOQO-E8t-E8tOLOQYO7+$aOLVQYO1G1gOOQQ,5;W,5;WOOQQ-E8j-E8jOLaQYO7+$eOOQO7+%i7+%iO`QYO,59XOMWQYO<<HZOOQQ<<HZ<<HZO/}QYO'#EoONaQYO,59vO!!TQYO,59yO!!YQYO,59yO!!_QYO,59yO!!dQYO,5:RO%TQYO,5:UO!#RQbO,5:YO!#YQYO1G0POOQO,5;^,5;^OOQO-E8p-E8pO!#dQYO<<IcOOQQ<<Ic<<IcOOQO1G0b1G0bOOQO,5;`,5;`OOQO-E8r-E8rO!&fQYO'#E^OOQQ<<If<<IfO`QYO<<IfO`QYO<<G{O!']QYO1G.sOOQQ,5;Z,5;ZOOQQ-E8m-E8mO!'gQYO1G/eOOQQ1G/e1G/eO!'lQbO'#D]O!'}Q`O'#D[O!(YQ`O1G/mO!(_QWO'#DmO!(dQ`O'#FhOOQO'#Dl'#DlO!(lQ`O1G/pOOQO'#Dq'#DqO!(qQ`O'#FjOOQO'#Dp'#DpO!(yQ`O1G/tOOQQAN?QAN?QO!)OQYOAN=gOOQQ7+%P7+%PO!)uQ`O,59vOOQQ7+%X7+%XO!!dQYO,5:XO%TQYO'#EpO!*QQ`O,5<SOOQQ7+%[7+%[O!!dQYO'#EqO!*YQ`O,5<UO!*bQ`O7+%`OOQO1G/s1G/sOOQO,5;[,5;[OOQO-E8n-E8nOOQO,5;],5;]OOQO-E8o-E8oOAiQYO<<HzOOQQAN>fAN>fO/}QYO'#EoO!!dQYO<<HzO!*gQ`O7+%`O!*lQ`O1G/tO!#RQbO,5:YO!*qQ`O'#Dn",
108632
+ stateData: "!+U~O#rOS#sOSPOSQOS~OTsOZVO[UOdtOhvOivOr}Os}OviO!T{O!U{O!VxO!XzO!c!OO!g|O!igO!pyO!wjO#SnO#nRO#oRO$ZZO$i_O$j`O$k`O$laO$mbO~OTsO[UOdtOhvOivOr}Os}OviO!T{O!U{O!VxO!XzO!c!OO!g|O!igO!pyO!wjO#SnO#nRO#oRO$ZZO$i_O$j`O$k`O$laO$mbO~OZ!TO#]!UO~P#VO#nRO#oRO~OZ!^O[!^O]!_O^!_O_!`O`!kOn!hOp!iOr!]Os!]Ot!jO{!lO!i!fO#z!dOv$bX~O#l#tX$t#tX~P%]O$i!mOT$YXZ$YX[$YXd$YXh$YXi$YXr$YXs$YXv$YX!T$YX!U$YX!V$YX!X$YX!c$YX!g$YX!i$YX!p$YX!w$YX#S$YX#n$YX#o$YX$Z$YX$j$YX$k$YX$l$YX$m$YX~O#nRO#oROZ!PX[!PX]!PX^!PX_!PX`!PXn!PXp!PXr!PXs!PXt!PXv!PX{!PX!i!PX#l!PX#p!PX#z!PX$t!PX$O!PXx!PX#}!PX!g!PXe!PXb!PX#R!PXf!PXl!PX~Ov!pO~O$j`O$k`O~O#p!uOZ#vX[#vX]#vX^#vX_#vX`#vXn#vXp#vXr#vXs#vXt#vXv#vX{#vX!i#vX#l#vX#z#vX$t#vX$O#vXx#vX#}#vX!g#vXe#vXb#vX#R#vXf#vXl#vX~O!g$eP~P`Ov!xO~O#m!yO$j`O$k`O#R$sP~Op#VO~Op#WOv!uX~O$t#ZO~O#luX$OuX$tuXxuX#}uX!guXeuXbuX#RuXfuXluX~P%]O$O#]O#l$UXx$UX~O#l#[X~P&hOv#_O~OZ#`O[#`O]#`O^#`O_#`O#nRO#oRO#z#`O#{#`O$]WX~O`WXxWX$OWX~P.lO`#dO~O$O#eOb#xX~Ob#hO~O#nRO#oRO$ZZO~OTsOZVO[UOdtOhvOivOr}Os}O!T{O!U{O!VxO!XzO!c!OO!g|O!igO!pyO!wjO#SnO#nRO#oRO$ZZO$i_O$j`O$k`O$laO$mbO~Ov#rO~P0YO|#tO~O{!lO!i!fO#z!dOZya[ya]ya^ya_ya`yanyapyaryasyatyav$bX#lya$tya$Oyaxya#}ya!gyaeyabya#Ryafyalya~Ox$eP~P`Ox#}O#}$OO~P%]O#}$OO$O$PO!g$eX~P%]O!g$RO~O#nRO#oROx$qP~OZ#`O[#`O]#`O^#`O_#`O#m!yO#z#`O#{#`O~O$]#WX~P4|O$]$YO~O$O$ZO#R$sX~O#R$]O~Oe$^O~P%]O$O$`Ol$SX~Ol$bO~O!W$cO~O!T$dO~O#l!xa$t!xa$O!xax!xa#}!xa!g!xae!xab!xa#R!xaf!xal!xa~P%]O$O#]O#l$Uax$Ua~OZ#`O[#`O]#`O^#`O_#`O#nRO#oRO#z#`O#{#`O~O`Wa$]WaxWa$OWa~P7sO$O#eOb#xa~OZ!^O[!^O]!_O^!_O_!`O{!lO!i!fO#z!dOv$bX~O`qinqipqirqisqitqi#lqi$tqi$Oqixqi#}qi!gqieqibqi#Rqifqilqi~P8zO_!`O{!lO!i!fO#z!dOZyi[yi`yinyipyiryisyityiv$bX#lyi$tyi$Oyixyi#}yi!gyieyibyi#Ryifyilyi~O]!_O^!_O~P:rO]yi^yi~P:rO{!lO!i!fO#z!dOZyi[yi]yi^yi_yi`yinyipyiryisyityiv$bX#lyi$tyi$Oyixyi#}yi!gyieyibyi#Ryifyilyi~O!g$pO~P%]O`!kOp!iOr!]Os!]Ot!jOnmi#lmi$tmi$Omixmi#}mi!gmiemibmi#Rmifmilmi~P8zO`!kOr!]Os!]Ot!jOnoipoi#loi$toi$Ooixoi#}oi!goieoiboi#Roifoiloi~P8zO`!kOn!hOp$qOr!]Os!]Ot!jO~P8zO!S$vO!V$wO!X$xO![$yO!_$zO!c${O#nRO#oRO$ZZO~OZ#bX[#bX]#bX^#bX_#bX`#bXn#bXp#bXr#bXs#bXt#bXv#bXx#bX{#bX!i#bX#n#bX#o#bX#p#bX#z#bX$O#bX~P.lO$O$POx$eX~P%]O$]$}O~O$O%OOx$dX~Ox%QO~O$O$PO!g$eax$ea~O$]%UOx#OX$O#OX~O$O%VOx$qX~Ox%XO~O$]#Wa~P4|O#m!yO$j`O$k`O~O$O$ZO#R$sa~O$O$`Ol$Sa~O!U%cO~OxrO~O#}%dObaX$OaX~P%]O#lSq$tSq$OSqxSq#}Sq!gSqeSqbSq#RSqfSqlSq~P%]Ox#}O#}$OO$OuX~P%]Ox%fO~O#z%gOZ!OX[!OX]!OX^!OX_!OX`!OXn!OXp!OXr!OXs!OXt!OXv!OX{!OX!i!OX#l!OX$t!OX$O!OXx!OX#}!OX!g!OXe!OXb!OX#R!OXf!OXl!OX~Op%iO~Op%jO~Op%kO~O!]%lO~O!]%mO~O!]%nO~O$O%OOx$da~OZ!^O[!^O]!_O^!_O_!`O`!kOn!hOp!iOr!]Os!]Ot!jO{!lO#z!dOv$bX~Ox%sO!g%sO!i%rO~PI{O!g#ga$O#gax#ga~P%]O$O%VOx$qa~O#P%yO~P`O#R#Ui$O#Ui~P%]Of%zO~P%]Ol$Ti$O$Ti~P%]O#lgq$tgq$Ogqxgq#}gq!ggqegqbgq#Rgqfgqlgq~P%]O`qynqypqyrqysqytqy#lqy$tqy$Oqyxqy#}qy!gqyeqybqy#Rqyfqylqy~P8zO#z%gOZ!Oa[!Oa]!Oa^!Oa_!Oa`!Oan!Oap!Oar!Oas!Oat!Oav!Oa{!Oa!i!Oa#l!Oa$t!Oa$O!Oax!Oa#}!Oa!g!Oae!Oab!Oa#R!Oaf!Oal!Oa~O!T&OO~O!W&OO~O!T&PO~O!S$vO!V$wO!X$xO![$yO!_$zO!c&uO#nRO#oRO$ZZO~O!Y$^P~P!!dOx!mi$O!mi~P%]OT$aXZ$aX[$aX]!yy^!yy_!yy`!yyd$aXh$aXi$aXn!yyp!yyr$aXs$aXt!yyv$aX{!yy!T$aX!U$aX!V$aX!X$aX!c$aX!g$aX!i$aX!p$aX!w$aX#S$aX#l!yy#n$aX#o$aX#z!yy$Z$aX$i$aX$j$aX$k$aX$l$aX$m$aX$t!yy$O!yyx!yy#}!yye!yyb!yy#R!yyf!yyl!yy~O#l#QX$t#QX$O#QXx#QX#}#QX!g#QXe#QXb#QX#R#QXf#QXl#QX~P%]Obai$Oai~P%]O!U&_O~O#nRO#oRO!Y!PX#z!PX$O!PX~O#z&pO!Y!OX$O!OX~O!Y&aO~O$]&bO~O$O&cO!Y$[X~O!Y&eO~O$O&fO!Y$^X~O!Y&hO~O#lc!R$tc!R$Oc!Rxc!R#}c!R!gc!Rec!Rbc!R#Rc!Rfc!Rlc!R~P%]O#z&pO!Y!Oa$O!Oa~O$O&cO!Y$[a~O$O&fO!Y$^a~O$_&nO~O$_&qO~O!Y&rO~O!]&tO~O$Z$j~$j$k_^$i#zQP]Q~",
108633
+ goto: "E}$tPPPP$uP%n%q%w&Z'tPPPPPP'}P$uPPP$uPP(Q(TP$uP$uP$uPPP(ZP(fP$u$uPP(o)U)a*n)UPPPPPPP)UPP)UP+s+v)UP+|,S$uP$uP$u,Z-S-V-]-SP-e.^-e-e/^0VP$u1O$u1w1w2p2sP2yPP1w3P3V/Y3ZPP3cP3f3m3s3y4P5[5f5l5r5x6P6V6]6cPPPPPPPP6i6r8y9r:k:nPP:rPP:x:{;t<m<p<t<y=h>W>wP?pP?sP?w@jA]BUB[B_$uBeBePPPPPC^8yDVEOEREz!mjOPQWilu|}!]!a!b!c!g!h!i!j!k!p#Z#]#_#c#g#r$O$P$Y$^$_$b$q$}%X%d%y%zR![SQ!YSR$m#eS!WS#eS#Qw$`W#w!p!x%O%VT&T%m&c#WXOPQWYilu|}!]!a!b!c!e!g!h!i!j!k#Z#]#_#c#g#r#t$O$P$Y$^$_$b$q$}%U%X%d%g%l%n%y%z&Q&b&f&n&p&q&tb!VSw!x#e$`%O%V%m&cU#a!V#b#uR#u!pU#a!V#b#uT$W!z$XR$l#cR#UwQ#SwR%`$`U!RQ#_#rQ#s!kR$g#]QrQQ$i#_R$s#rQ$|#tQ%t%UQ&S%lU&X%n&f&tQ&i&bT&o&n&qc$u#t%U%l%n&b&f&n&q&t!lkOPQWilu|}!]!a!b!c!g!h!i!j!k!p#Z#]#_#c#g#r$O$P$Y$^$_$b$q$}%X%d%y%zQ#m!eU$t#t%U&nS%|%g&p]&R%l%n&b&f&q&t#V[OPQWilu|}!]!a!b!c!e!g!h!i!j!k!p#Z#]#_#c#g#r#t$O$P$Y$^$_$b$q$}%U%X%d%g%l%n%y%z&b&f&n&p&q&tR&W%mQ&U%mR&j&cQ&[%nR&s&tS&Y%n&tR&l&f!m]OPQWilu|}!]!a!b!c!g!h!i!j!k!p#Z#]#_#c#g#r$O$P$Y$^$_$b$q$}%X%d%y%zR#|!pQ#y!pR%p%OS#x!p%OT$S!x%V!meOPQWilu|}!]!a!b!c!g!h!i!j!k!p#Z#]#_#c#g#r$O$P$Y$^$_$b$q$}%X%d%y%z!leOPQWilu|}!]!a!b!c!g!h!i!j!k!p#Z#]#_#c#g#r$O$P$Y$^$_$b$q$}%X%d%y%zQ!rbT!{o$Z!mcOPQWilu|}!]!a!b!c!g!h!i!j!k!p#Z#]#_#c#g#r$O$P$Y$^$_$b$q$}%X%d%y%z!mdOPQWilu|}!]!a!b!c!g!h!i!j!k!p#Z#]#_#c#g#r$O$P$Y$^$_$b$q$}%X%d%y%z!mhOPQWilu|}!]!a!b!c!g!h!i!j!k!p#Z#]#_#c#g#r$O$P$Y$^$_$b$q$}%X%d%y%z!mpOPQWilu|}!]!a!b!c!g!h!i!j!k!p#Z#]#_#c#g#r$O$P$Y$^$_$b$q$}%X%d%y%zR$V!xQ$T!xR%u%VQ%x%XR&]%yQ!}oR%[$ZT!|o$ZS!zo$ZT$W!z$XRrQS#b!V#uR$j#bQ#f!YR$n#fQ$a#SR%a$aQ#^!RR$h#^!vYOPQWilu|}!]!a!b!c!e!g!h!i!j!k!p#Z#]#_#c#g#r#t$O$P$Y$^$_$b$q$}%U%X%d%g%y%z&nS!oY&Q_&Q%l%n&b&f&p&q&tQ%h$tS%}%h&`R&`&RQ&d&UR&k&dQ&g&YR&m&gQ%P#yR%q%PS$Q!v#vR%T$QQ%W$TR%v%WQ$X!zR%Y$XQ$[!}R%]$[Q#[!PR$f#[QrOQ!PPR$e#ZUTOP#ZW!QQ!k#]#_Q!nWQ!tiQ!vlQ#PuQ#X|Q#Y}Q#i!]Q#j!aQ#k!bQ#l!cQ#n!gQ#o!hQ#p!iQ#q!jQ#v!pQ$k#cQ$o#gQ$r#rQ%R$OQ%S$PQ%Z$YQ%^$^Q%_$_Q%b$bQ%e$qQ%o$}S%w%X%yQ%{%dR&^%z!mqOPQWilu|}!]!a!b!c!g!h!i!j!k!p#Z#]#_#c#g#r$O$P$Y$^$_$b$q$}%X%d%y%z!mSOPQWilu|}!]!a!b!c!g!h!i!j!k!p#Z#]#_#c#g#r$O$P$Y$^$_$b$q$}%X%d%y%zR!ZST!XS#eQ#c!WR$_#QR#g![!muOPQWilu|}!]!a!b!c!g!h!i!j!k!p#Z#]#_#c#g#r$O$P$Y$^$_$b$q$}%X%d%y%z!mwOPQWilu|}!]!a!b!c!g!h!i!j!k!p#Z#]#_#c#g#r$O$P$Y$^$_$b$q$}%X%d%y%zR#TwT#Rw$`V!SQ#_#r!X!aT!Q!t!v#P#X#Y#i#n#o#p#q#v$k$o$r%R%S%Z%^%_%b%e%o%w%{&^!Z!bT!Q!t!v#P#X#Y#i#j#n#o#p#q#v$k$o$r%R%S%Z%^%_%b%e%o%w%{&^!]!cT!Q!t!v#P#X#Y#i#j#k#n#o#p#q#v$k$o$r%R%S%Z%^%_%b%e%o%w%{&^!mWOPQWilu|}!]!a!b!c!g!h!i!j!k!p#Z#]#_#c#g#r$O$P$Y$^$_$b$q$}%X%d%y%zR&V%mT&Z%n&t!a!eT!Q!n!t!v#P#X#Y#i#j#k#l#n#o#p#q#v$k$o$r%R%S%Z%^%_%b%e%o%w%{&^!a!gT!Q!n!t!v#P#X#Y#i#j#k#l#n#o#p#q#v$k$o$r%R%S%Z%^%_%b%e%o%w%{&^!m^OPQWilu|}!]!a!b!c!g!h!i!j!k!p#Z#]#_#c#g#r$O$P$Y$^$_$b$q$}%X%d%y%zQ!q^R!scR#z!pQ!wlR#{!p!mfOPQWilu|}!]!a!b!c!g!h!i!j!k!p#Z#]#_#c#g#r$O$P$Y$^$_$b$q$}%X%d%y%z!mlOPQWilu|}!]!a!b!c!g!h!i!j!k!p#Z#]#_#c#g#r$O$P$Y$^$_$b$q$}%X%d%y%z!mmOPQWilu|}!]!a!b!c!g!h!i!j!k!p#Z#]#_#c#g#r$O$P$Y$^$_$b$q$}%X%d%y%zR$U!x!moOPQWilu|}!]!a!b!c!g!h!i!j!k!p#Z#]#_#c#g#r$O$P$Y$^$_$b$q$}%X%d%y%zR#Oo",
108634
+ nodeNames: "⚠ LineComment BlockComment Expression ForExpression for InExpressions InExpression Name Identifier Identifier ArithOp ArithOp ArithOp ArithOp ArithOp in IterationContext return IfExpression if then else QuantifiedExpression some every InExpressions InExpression satisfies Disjunction or Conjunction and Comparison CompareOp CompareOp between PositiveUnaryTest ( PositiveUnaryTests ) ArithmeticExpression InstanceOfExpression instance of Type QualifiedName VariableName BacktickIdentifier SpecialType days time duration years months date > ListType list < ContextType context ContextEntryTypes ContextEntryType FunctionType function ArgumentTypes ArgumentType PathExpression ] FilterExpression [ FunctionInvocation SpecialFunctionName NamedParameters NamedParameter ParameterName PositionalParameters null NumericLiteral StringLiteral BooleanLiteral DateTimeLiteral DateTimeConstructor AtLiteral ? SimplePositiveUnaryTest Interval ParenthesizedExpression List FunctionDefinition FormalParameters FormalParameter external FunctionBody } { Context ContextEntry Key Name Identifier Expressions UnaryTests Wildcard not",
108635
+ maxTerm: 174,
108636
+ context: variableTracker,
108637
+ nodeProps: [
108638
+ ["group", -17,4,19,23,29,31,33,41,42,68,70,72,85,86,88,89,90,97,"Expr",47,"Expr Expr",-5,78,79,80,81,82,"Expr Literal"],
108639
+ ["closedBy", 38,")",71,"]",96,"}"],
108640
+ ["openedBy", 40,"(",69,"[",95,"{"]
108641
+ ],
108642
+ propSources: [feelHighlighting],
108643
+ skippedNodes: [0,1,2],
108644
+ repeatNodeCount: 14,
108645
+ tokenData: "2t~RvXY#iYZ$^Z[#i]^$^pq#iqr$crs$nwx*[xy*ayz*fz{*k{|*x|}*}}!O+S!O!P+a!P!Q,k!Q![.f![!].}!]!^/S!^!_/X!_!`$i!`!a/h!b!c/r!}#O/w#P#Q/|#Q#R*s#S#T0R#o#p2j#q#r2o$f$g#i#BY#BZ#i$IS$I_#i$I|$I}$^$I}$JO$^$JT$JU#i$KV$KW#i&FU&FV#i?HT?HU#i~#nY#r~XY#iZ[#ipq#i$f$g#i#BY#BZ#i$IS$I_#i$JT$JU#i$KV$KW#i&FU&FV#i?HT?HU#i~$cO#s~~$fP!_!`$i~$nOr~~$qXOY$nYZ%^Zr$nrs'us#O$n#O#P'|#P;'S$n;'S;=`)c<%lO$n~%aVOr%^rs%vs#O%^#O#P%{#P;'S%^;'S;=`'S<%lO%^~%{O$j~~&OWOr%^rs&hs#O%^#O#P%{#P;'S%^;'S;=`'Y;=`<%l%^<%lO%^~&mV$j~Or%^rs%vs#O%^#O#P%{#P;'S%^;'S;=`'S<%lO%^~'VP;=`<%l%^~']WOr%^rs%vs#O%^#O#P%{#P;'S%^;'S;=`'S;=`<%l%^<%lO%^~'|O$j~$k~~(PYOY$nYZ$nZr$nrs(os#O$n#O#P'|#P;'S$n;'S;=`)i;=`<%l$n<%lO$n~(vX$j~$k~OY$nYZ%^Zr$nrs'us#O$n#O#P'|#P;'S$n;'S;=`)c<%lO$n~)fP;=`<%l$n~)lYOY$nYZ%^Zr$nrs'us#O$n#O#P'|#P;'S$n;'S;=`)c;=`<%l$n<%lO$n~*aO#{~~*fOv~~*kOx~~*pP^~z{*s~*xO_~~*}O[~~+SO$O~R+XPZP!`!a+[Q+aO$_Q~+fQ#z~!O!P+l!Q![+q~+qO#}~~+vR$i~!Q![+q!g!h,P#X#Y,P~,SR{|,]}!O,]!Q![,c~,`P!Q![,c~,hP$i~!Q![,c~,pQ]~z{,v!P!Q-}~,yTOz,vz{-Y{;'S,v;'S;=`-w<%lO,v~-]VOz,vz{-Y{!P,v!P!Q-r!Q;'S,v;'S;=`-w<%lO,v~-wOQ~~-zP;=`<%l,v~.SSP~OY-}Z;'S-};'S;=`.`<%lO-}~.cP;=`<%l-}~.kS$i~!O!P.w!Q![.f!g!h,P#X#Y,P~.zP!Q![+q~/SO$]~~/XO$t~R/`P!]QsP!_!`/cP/hOsPR/oP!YQsP!_!`/c~/wO$m~~/|O!i~~0RO!g~~0UVO#O0R#O#P0k#P#S0R#S#T1r#T;'S0R;'S;=`1w<%lO0R~0nWO#O0R#O#P0k#P#S0R#S#T1W#T;'S0R;'S;=`1};=`<%l0R<%lO0R~1]V$Z~O#O0R#O#P0k#P#S0R#S#T1r#T;'S0R;'S;=`1w<%lO0R~1wO$Z~~1zP;=`<%l0R~2QWO#O0R#O#P0k#P#S0R#S#T1r#T;'S0R;'S;=`1w;=`<%l0R<%lO0R~2oO#S~~2tO#R~",
108646
+ tokenizers: [propertyIdentifiers, identifiers$1, insertSemicolon, 0, 1],
108647
+ topRules: {"Expression":[0,3],"Expressions":[1,102],"UnaryTests":[2,103]},
108648
+ dialects: {camunda: 2568},
108649
+ dynamicPrecedences: {"31":-1,"68":1,"72":-1,"74":-1},
108650
+ specialized: [{term: 122, get: (value) => spec_identifier[value] || -1}],
108651
+ tokenPrec: 2571
108652
+ });
108653
+
108654
+ /**
108655
+ * @typedef {import('@lezer/common').Tree} Tree
108656
+ * @typedef {import('@codemirror/lint').Diagnostic} LintMessage
108657
+ */
108658
+
108659
+ /**
108660
+ * Create an array of syntax errors in the given tree.
108661
+ *
108662
+ * @param {Tree} syntaxTree
108663
+ * @returns {LintMessage[]} array of syntax errors
108664
+ */
108665
+ function lintSyntax(syntaxTree) {
108666
+
108667
+ const lintMessages = [];
108668
+
108669
+ syntaxTree.iterate({
108670
+ enter: ref => {
108671
+ const node = ref.node;
108672
+
108673
+ if (!node.type.isError) {
108674
+ return;
108675
+ }
108676
+
108677
+ const parent = node.parent;
108678
+ const next = getNextNode(node);
108679
+
108680
+ const message = {
108681
+ from: node.from,
108682
+ to: node.to,
108683
+ severity: 'error',
108684
+ type: 'Syntax Error'
108685
+ };
108686
+
108687
+ if (node.from !== node.to) {
108688
+ message.message = `Unrecognized token in <${parent.name}>`;
108689
+ } else if (next) {
108690
+ message.message = `Unrecognized token <${next.name}> in <${parent.name}>`;
108691
+ message.to = next.to;
108692
+ } else {
108693
+ const before = parent.enterUnfinishedNodesBefore(node.to);
108694
+ message.message = `Incomplete <${ (before || parent).name }>`;
108695
+ }
108696
+
108697
+ lintMessages.push(message);
108698
+ }
108699
+ });
108700
+
108701
+ return lintMessages;
108702
+ }
108703
+
108704
+ function getNextNode(node) {
108705
+ if (!node) {
108706
+ return null;
108707
+ }
108708
+
108709
+ return node.nextSibling || getNextNode(node.parent);
108710
+ }
108711
+
108712
+ /**
108713
+ * @typedef {object} Context
108714
+ * @property {function} report
108715
+ * @property {(from: number, to: number) => string} readContent
108716
+ * @property {(from: number, to: number, content: string) => void} updateContent
108717
+ */
108718
+
108719
+ const RULE_NAME = 'first-item';
108720
+
108721
+ var firstItem = {
108722
+ create(/** @type {Context} */ context) {
108723
+ return {
108724
+ enter(node) {
108725
+ if (node.name !== 'FilterExpression') {
108726
+ return;
108727
+ }
108728
+
108729
+ const content = context.readContent(node.from, node.to);
108730
+
108731
+ if (zeroIndexPattern().test(content)) {
108732
+ const {
108733
+ from,
108734
+ to
108735
+ } = node;
108736
+
108737
+ context.report({
108738
+ from,
108739
+ to,
108740
+ message: 'First item is accessed via [1]',
108741
+ severity: 'warning',
108742
+ type: RULE_NAME,
108743
+ actions: [
108744
+ {
108745
+ name: 'fix',
108746
+ apply(_, start = from, end = to) {
108747
+ context.updateContent(start, end, content.replace(zeroIndexPattern(), '[1]'));
108748
+ }
108749
+ }
108750
+ ]
108751
+ });
108752
+ }
108753
+ }
108754
+ };
108755
+ }
108756
+ };
108757
+
108758
+ function zeroIndexPattern() {
108759
+ return /\[\s*0\s*\]$/;
108760
+ }
108761
+
108762
+ /**
108763
+ * @typedef {import('@lezer/common').Tree} Tree
108764
+ * @typedef {import('@codemirror/lint').Diagnostic} LintMessage
108765
+ * @typedef {import('./index').LintAllContext} LintAllContext
108766
+ */
108767
+
108768
+ const RULES = [
108769
+ firstItem
108770
+ ];
108771
+
108772
+ /**
108773
+ * Create an array of messages reported from rules in the given tree.
108774
+ *
108775
+ * @param {LintAllContext} context
108776
+ * @returns {LintMessage[]} array of syntax errors
108777
+ */
108778
+ function lintRules(context) {
108779
+ const {
108780
+ readContent,
108781
+ syntaxTree,
108782
+ updateContent
108783
+ } = context;
108784
+
108785
+ const lintMessages = [];
108786
+
108787
+ const ruleContext = {
108788
+ readContent,
108789
+ report: message => {
108790
+ lintMessages.push(message);
108791
+ },
108792
+ updateContent
108793
+ };
108794
+
108795
+ const rules = RULES.map(rule => rule.create(ruleContext));
108796
+
108797
+ syntaxTree.iterate({
108798
+ enter: ref => {
108799
+ for (const rule of rules) {
108800
+ rule.enter && rule.enter(ref);
108801
+ }
108802
+ },
108803
+ leave: ref => {
108804
+ for (const rule of rules) {
108805
+ rule.leave && rule.leave(ref);
108806
+ }
108807
+ }
108808
+ });
108809
+
108810
+ return lintMessages;
108811
+ }
108812
+
108813
+ /**
108814
+ * @typedef {import('@lezer/common').Tree} Tree
108815
+ * @typedef {import('@codemirror/lint').Diagnostic} LintMessage
108816
+ */
108817
+
108818
+ /**
108819
+ * @typedef {object} LintAllContext
108820
+ * @property {Tree} syntaxTree
108821
+ * @property {(from: number, to: number) => string} readContent
108822
+ * @property {(from: number, to: number, content: string) => void} updateContent
108823
+ */
108824
+
108825
+ /**
108826
+ * Generates lint messages for the given context.
108827
+ *
108828
+ * @param {LintAllContext} context
108829
+ * @returns {LintMessage[]} array of all lint messages
108830
+ */
108831
+ function lintAll(context) {
108832
+
108833
+ const lintMessages = [
108834
+ ...lintSyntax(context.syntaxTree),
108835
+ ...lintRules(context)
108836
+ ];
108837
+
108838
+ return lintMessages;
108839
+ }
108840
+
108841
+ /**
108842
+ * CodeMirror extension that provides linting for FEEL expressions.
108843
+ *
108844
+ * @returns {import('@codemirror/lint').LintSource} CodeMirror linting source
108845
+ */
108846
+ const cmFeelLinter = () => editorView => {
108847
+
108848
+ // don't lint if the Editor is empty
108849
+ if (editorView.state.doc.length === 0) {
108850
+ return [];
108851
+ }
108852
+
108853
+ const tree = syntaxTree(editorView.state);
108854
+
108855
+ const messages = lintAll({
108856
+ syntaxTree: tree,
108857
+ readContent: (from, to) => editorView.state.sliceDoc(from, to),
108858
+ updateContent: (from, to, content) => editorView.dispatch({
108859
+ changes: { from, to, insert: content }
108860
+ })
108861
+ });
108862
+
108863
+ return messages.map(message => ({
108864
+ ...message,
108865
+ source: message.type
108866
+ }));
108867
+ };
108868
+
107337
108869
  /**
107338
108870
  * A collection of FEEL-related [snippets](#autocomplete.snippet).
107339
108871
  */
@@ -107525,7 +109057,7 @@
107525
109057
  * extended with highlighting and indentation information.
107526
109058
  */
107527
109059
  const feelLanguage = LRLanguage.define({
107528
- parser: parser$2.configure({
109060
+ parser: parser.configure({
107529
109061
  props: [indentNodeProp.add({
107530
109062
  'Context': delimitedIndent({
107531
109063
  closing: '}'
@@ -117617,16 +119149,16 @@
117617
119149
  parserDialect: 'camunda'
117618
119150
  };
117619
119151
 
117620
- /**
117621
- * @param {Object} props
117622
- * @param {djs.model.Base|Array<djs.model.Base>} [props.element]
117623
- * @param {Injector} props.injector
117624
- * @param { (djs.model.Base) => Array<PropertiesProvider> } props.getProviders
117625
- * @param {Object} props.layoutConfig
117626
- * @param {Object} props.descriptionConfig
117627
- * @param {Object} props.tooltipConfig
117628
- * @param {HTMLElement} props.feelPopupContainer
117629
- * @param {Function} props.getFeelPopupLinks
119152
+ /**
119153
+ * @param {Object} props
119154
+ * @param {djs.model.Base|Array<djs.model.Base>} [props.element]
119155
+ * @param {Injector} props.injector
119156
+ * @param { (djs.model.Base) => Array<PropertiesProvider> } props.getProviders
119157
+ * @param {Object} props.layoutConfig
119158
+ * @param {Object} props.descriptionConfig
119159
+ * @param {Object} props.tooltipConfig
119160
+ * @param {HTMLElement} props.feelPopupContainer
119161
+ * @param {Function} props.getFeelPopupLinks
117630
119162
  */
117631
119163
  function BpmnPropertiesPanel(props) {
117632
119164
  const {
@@ -117648,8 +119180,8 @@
117648
119180
  });
117649
119181
  const selectedElement = state.selectedElement;
117650
119182
 
117651
- /**
117652
- * @param {djs.model.Base | Array<djs.model.Base>} element
119183
+ /**
119184
+ * @param {djs.model.Base | Array<djs.model.Base>} element
117653
119185
  */
117654
119186
  const _update = element => {
117655
119187
  if (!element) {
@@ -117837,10 +119369,10 @@
117837
119369
 
117838
119370
  const DEFAULT_PRIORITY$1 = 1000;
117839
119371
 
117840
- /**
117841
- * @typedef { import('@bpmn-io/properties-panel').GroupDefinition } GroupDefinition
117842
- * @typedef { import('@bpmn-io/properties-panel').ListGroupDefinition } ListGroupDefinition
117843
- * @typedef { { getGroups: (ModdleElement) => (Array{GroupDefinition|ListGroupDefinition}) => Array{GroupDefinition|ListGroupDefinition}) } PropertiesProvider
119372
+ /**
119373
+ * @typedef { import('@bpmn-io/properties-panel').GroupDefinition } GroupDefinition
119374
+ * @typedef { import('@bpmn-io/properties-panel').ListGroupDefinition } ListGroupDefinition
119375
+ * @typedef { { getGroups: (ModdleElement) => (Array{GroupDefinition|ListGroupDefinition}) => Array{GroupDefinition|ListGroupDefinition}) } PropertiesProvider
117844
119376
  */
117845
119377
 
117846
119378
  class BpmnPropertiesPanelRenderer {
@@ -117879,10 +119411,10 @@
117879
119411
  });
117880
119412
  }
117881
119413
 
117882
- /**
117883
- * Attach the properties panel to a parent node.
117884
- *
117885
- * @param {HTMLElement} container
119414
+ /**
119415
+ * Attach the properties panel to a parent node.
119416
+ *
119417
+ * @param {HTMLElement} container
117886
119418
  */
117887
119419
  attachTo(container) {
117888
119420
  if (!container) {
@@ -117907,8 +119439,8 @@
117907
119439
  this._eventBus.fire('propertiesPanel.attach');
117908
119440
  }
117909
119441
 
117910
- /**
117911
- * Detach the properties panel from its parent node.
119442
+ /**
119443
+ * Detach the properties panel from its parent node.
117912
119444
  */
117913
119445
  detach() {
117914
119446
  const parentNode = this._container.parentNode;
@@ -117918,11 +119450,11 @@
117918
119450
  }
117919
119451
  }
117920
119452
 
117921
- /**
117922
- * Register a new properties provider to the properties panel.
117923
- *
117924
- * @param {Number} [priority]
117925
- * @param {PropertiesProvider} provider
119453
+ /**
119454
+ * Register a new properties provider to the properties panel.
119455
+ *
119456
+ * @param {Number} [priority]
119457
+ * @param {PropertiesProvider} provider
117926
119458
  */
117927
119459
  registerProvider(priority, provider) {
117928
119460
  if (!provider) {
@@ -117939,9 +119471,9 @@
117939
119471
  this._eventBus.fire('propertiesPanel.providersChanged');
117940
119472
  }
117941
119473
 
117942
- /**
117943
- * Updates the layout of the properties panel.
117944
- * @param {Object} layout
119474
+ /**
119475
+ * Updates the layout of the properties panel.
119476
+ * @param {Object} layout
117945
119477
  */
117946
119478
  setLayout(layout) {
117947
119479
  this._eventBus.fire('propertiesPanel.setLayout', {
@@ -117991,12 +119523,12 @@
117991
119523
  return element && element.isImplicit;
117992
119524
  }
117993
119525
 
117994
- /**
117995
- * Setup keyboard bindings (undo, redo) on the given container.
117996
- *
117997
- * @param {Element} container
117998
- * @param {EventBus} eventBus
117999
- * @param {CommandStack} commandStack
119526
+ /**
119527
+ * Setup keyboard bindings (undo, redo) on the given container.
119528
+ *
119529
+ * @param {Element} container
119530
+ * @param {EventBus} eventBus
119531
+ * @param {CommandStack} commandStack
118000
119532
  */
118001
119533
  function setupKeyboard(container, eventBus, commandStack) {
118002
119534
  function cancel(event) {
@@ -118021,14 +119553,14 @@
118021
119553
  });
118022
119554
  }
118023
119555
 
118024
- /**
118025
- * A handler that combines and executes multiple commands.
118026
- *
118027
- * All updates are bundled on the command stack and executed in one step.
118028
- * This also makes it possible to revert the changes in one step.
118029
- *
118030
- * Example use case: remove the camunda:formKey attribute and in addition
118031
- * add all form fields needed for the camunda:formData property.
119556
+ /**
119557
+ * A handler that combines and executes multiple commands.
119558
+ *
119559
+ * All updates are bundled on the command stack and executed in one step.
119560
+ * This also makes it possible to revert the changes in one step.
119561
+ *
119562
+ * Example use case: remove the camunda:formKey attribute and in addition
119563
+ * add all form fields needed for the camunda:formData property.
118032
119564
  */
118033
119565
  let MultiCommandHandler$1 = class MultiCommandHandler {
118034
119566
  constructor(commandStack) {
@@ -118064,15 +119596,15 @@
118064
119596
  propertiesPanel: ['type', BpmnPropertiesPanelRenderer]
118065
119597
  };
118066
119598
 
118067
- /**
118068
- * Create a new element and (optionally) set its parent.
118069
- *
118070
- * @param {string} type
118071
- * @param {Object} properties
118072
- * @param {import('bpmn-js/lib/model/Types').ModdleElement} parent
118073
- * @param {import('bpmn-js/lib/features/modeling/BpmnFactory').default} bpmnFactory
118074
- *
118075
- * @returns {import('bpmn-js/lib/model/Types').ModdleElement}
119599
+ /**
119600
+ * Create a new element and (optionally) set its parent.
119601
+ *
119602
+ * @param {string} type
119603
+ * @param {Object} properties
119604
+ * @param {import('bpmn-js/lib/model/Types').ModdleElement} parent
119605
+ * @param {import('bpmn-js/lib/features/modeling/BpmnFactory').default} bpmnFactory
119606
+ *
119607
+ * @returns {import('bpmn-js/lib/model/Types').ModdleElement}
118076
119608
  */
118077
119609
  function createElement$6(type, properties, parent, bpmnFactory) {
118078
119610
  const element = bpmnFactory.create(type, properties);
@@ -118082,8 +119614,8 @@
118082
119614
  return element;
118083
119615
  }
118084
119616
 
118085
- /**
118086
- * generate a semantic id with given prefix
119617
+ /**
119618
+ * generate a semantic id with given prefix
118087
119619
  */
118088
119620
  function nextId$1(prefix) {
118089
119621
  const ids = new Ids$1([32, 32, 1]);
@@ -118109,32 +119641,32 @@
118109
119641
  return elements.find(element => element.id === id);
118110
119642
  }
118111
119643
 
118112
- /**
118113
- * createOrUpdateFormalExpression - upserts a specific formal expression
118114
- *
118115
- * If the value is falsy, the formal expression is removed.
118116
- *
118117
- * @param {djs.model.Base} element
118118
- * @param {ModdleElement} moddleElement
118119
- * @param {string} propertyName
118120
- * @param {string} newValue
118121
- * @param {BpmnFactory} bpmnFactory
118122
- * @param {CommandStack} commandStack
119644
+ /**
119645
+ * createOrUpdateFormalExpression - upserts a specific formal expression
119646
+ *
119647
+ * If the value is falsy, the formal expression is removed.
119648
+ *
119649
+ * @param {djs.model.Base} element
119650
+ * @param {ModdleElement} moddleElement
119651
+ * @param {string} propertyName
119652
+ * @param {string} newValue
119653
+ * @param {BpmnFactory} bpmnFactory
119654
+ * @param {CommandStack} commandStack
118123
119655
  */
118124
119656
  function createOrUpdateFormalExpression(element, moddleElement, propertyName, newValue, bpmnFactory, commandStack) {
118125
119657
  return commandStack.execute('element.updateModdleProperties', createOrUpdateFormalExpressionCommand(element, moddleElement, propertyName, newValue, bpmnFactory));
118126
119658
  }
118127
119659
 
118128
- /**
118129
- * createOrUpdateFormalExpressionCommand - creates a command to upsert a specific formal expression
118130
- *
118131
- * If the value is falsy, the formal expression is removed.
118132
- *
118133
- * @param {djs.model.Base} element
118134
- * @param {ModdleElement} moddleElement
118135
- * @param {string} propertyName
118136
- * @param {string} newValue
118137
- * @param {BpmnFactory} bpmnFactory
119660
+ /**
119661
+ * createOrUpdateFormalExpressionCommand - creates a command to upsert a specific formal expression
119662
+ *
119663
+ * If the value is falsy, the formal expression is removed.
119664
+ *
119665
+ * @param {djs.model.Base} element
119666
+ * @param {ModdleElement} moddleElement
119667
+ * @param {string} propertyName
119668
+ * @param {string} newValue
119669
+ * @param {BpmnFactory} bpmnFactory
118138
119670
  */
118139
119671
  function createOrUpdateFormalExpressionCommand(element, moddleElement, propertyName, newValue, bpmnFactory) {
118140
119672
  const expressionProps = {};
@@ -118170,12 +119702,12 @@
118170
119702
  };
118171
119703
  }
118172
119704
 
118173
- /**
118174
- * @typedef { import('@bpmn-io/properties-panel').EntryDefinition } Entry
119705
+ /**
119706
+ * @typedef { import('@bpmn-io/properties-panel').EntryDefinition } Entry
118175
119707
  */
118176
119708
 
118177
- /**
118178
- * @returns {Array<Entry>} entries
119709
+ /**
119710
+ * @returns {Array<Entry>} entries
118179
119711
  */
118180
119712
  function AdHocCompletionProps$1(props) {
118181
119713
  const {
@@ -118337,12 +119869,12 @@
118337
119869
  return compensateEventDefinition && compensateEventDefinition.get('activityRef');
118338
119870
  }
118339
119871
 
118340
- /**
118341
- * @typedef { import('@bpmn-io/properties-panel').EntryDefinition } Entry
119872
+ /**
119873
+ * @typedef { import('@bpmn-io/properties-panel').EntryDefinition } Entry
118342
119874
  */
118343
119875
 
118344
- /**
118345
- * @returns {Array<Entry>} entries
119876
+ /**
119877
+ * @returns {Array<Entry>} entries
118346
119878
  */
118347
119879
  function CompensationProps(props) {
118348
119880
  const {
@@ -118452,12 +119984,12 @@
118452
119984
  return getFlowElements(element, 'bpmn:BoundaryEvent');
118453
119985
  }
118454
119986
 
118455
- /**
118456
- * Checks whether an Activity is attaching a CompensateEvent of the parent container.
118457
- *
118458
- * @param {ModdleElement} activity
118459
- * @param {Array<ModdleElement>} boundaryEvents
118460
- * @returns {Boolean}
119987
+ /**
119988
+ * Checks whether an Activity is attaching a CompensateEvent of the parent container.
119989
+ *
119990
+ * @param {ModdleElement} activity
119991
+ * @param {Array<ModdleElement>} boundaryEvents
119992
+ * @returns {Boolean}
118461
119993
  */
118462
119994
  function hasCompensationEventAttached(activity, boundaryEvents) {
118463
119995
  const {
@@ -118472,15 +120004,15 @@
118472
120004
  });
118473
120005
  }
118474
120006
 
118475
- /**
118476
- * Checks whether an Activity can be compensated. That's the case when it is
118477
- * a) a CallActivity
118478
- * b) a SubProcess, when it is not event based and not a compensation
118479
- * c) any other Activity, when it is attaching a CompensateEvent of the parent container
118480
- *
118481
- * @param {ModdleElement} activity
118482
- * @param {Array<ModdleElement>} boundaryEvents
118483
- * @returns {Boolean}
120007
+ /**
120008
+ * Checks whether an Activity can be compensated. That's the case when it is
120009
+ * a) a CallActivity
120010
+ * b) a SubProcess, when it is not event based and not a compensation
120011
+ * c) any other Activity, when it is attaching a CompensateEvent of the parent container
120012
+ *
120013
+ * @param {ModdleElement} activity
120014
+ * @param {Array<ModdleElement>} boundaryEvents
120015
+ * @returns {Boolean}
118484
120016
  */
118485
120017
  function canBeCompensated(activity, boundaryEvents) {
118486
120018
  return is$4(activity, 'bpmn:CallActivity') || is$4(activity, 'bpmn:SubProcess') && !activity.triggeredByEvent && !activity.isForCompensation || hasCompensationEventAttached(activity, boundaryEvents);
@@ -118493,11 +120025,11 @@
118493
120025
  });
118494
120026
  }
118495
120027
 
118496
- /**
118497
- * Retrieves all possible activities to reference for a Compensation.
118498
- *
118499
- * @param {djs.model.Base} element
118500
- * @returns {Array<ModdleElement>}
120028
+ /**
120029
+ * Retrieves all possible activities to reference for a Compensation.
120030
+ *
120031
+ * @param {djs.model.Base} element
120032
+ * @returns {Array<ModdleElement>}
118501
120033
  */
118502
120034
  function findActivityRefs(element) {
118503
120035
  const businessObject = getBusinessObject$2(element);
@@ -118517,13 +120049,13 @@
118517
120049
  return activities;
118518
120050
  }
118519
120051
 
118520
- /**
118521
- * Retrieves an option label in the form
118522
- * a) with name: "my Task (id=Task_1)"
118523
- * b) without name: "(id=Task_1)"
118524
- *
118525
- * @param {ModdleElement} activity
118526
- * @returns {String}
120052
+ /**
120053
+ * Retrieves an option label in the form
120054
+ * a) with name: "my Task (id=Task_1)"
120055
+ * b) without name: "(id=Task_1)"
120056
+ *
120057
+ * @param {ModdleElement} activity
120058
+ * @returns {String}
118527
120059
  */
118528
120060
  function createOptionLabel(activity) {
118529
120061
  const {
@@ -118538,12 +120070,12 @@
118538
120070
 
118539
120071
  const DOCUMENTATION_TEXT_FORMAT = 'text/plain';
118540
120072
 
118541
- /**
118542
- * @typedef { import('@bpmn-io/properties-panel').EntryDefinition } Entry
120073
+ /**
120074
+ * @typedef { import('@bpmn-io/properties-panel').EntryDefinition } Entry
118543
120075
  */
118544
120076
 
118545
- /**
118546
- * @returns {Array<Entry>} entries
120077
+ /**
120078
+ * @returns {Array<Entry>} entries
118547
120079
  */
118548
120080
  function DocumentationProps(props) {
118549
120081
  const {
@@ -118614,12 +120146,12 @@
118614
120146
  });
118615
120147
  }
118616
120148
 
118617
- /**
118618
- * Retrieves a documentation element from a given moddle element.
118619
- *
118620
- * @param {ModdleElement} businessObject
118621
- *
118622
- * @returns {ModdleElement} documentation element inside the given moddle element.
120149
+ /**
120150
+ * Retrieves a documentation element from a given moddle element.
120151
+ *
120152
+ * @param {ModdleElement} businessObject
120153
+ *
120154
+ * @returns {ModdleElement} documentation element inside the given moddle element.
118623
120155
  */
118624
120156
  function getDocumentation(businessObject) {
118625
120157
  return function () {
@@ -118628,10 +120160,10 @@
118628
120160
  };
118629
120161
  }
118630
120162
 
118631
- /**
118632
- * Sets a documentation element for a given moddle element.
118633
- *
118634
- * @param {ModdleElement} businessObject
120163
+ /**
120164
+ * Sets a documentation element for a given moddle element.
120165
+ *
120166
+ * @param {ModdleElement} businessObject
118635
120167
  */
118636
120168
  function setDocumentation(element, businessObject, bpmnFactory, commandStack) {
118637
120169
  return function (value) {
@@ -118677,12 +120209,12 @@
118677
120209
  const EMPTY_OPTION$4 = '';
118678
120210
  const CREATE_NEW_OPTION$4 = 'create-new';
118679
120211
 
118680
- /**
118681
- * @typedef { import('@bpmn-io/properties-panel').EntryDefinition } Entry
120212
+ /**
120213
+ * @typedef { import('@bpmn-io/properties-panel').EntryDefinition } Entry
118682
120214
  */
118683
120215
 
118684
- /**
118685
- * @returns {Array<Entry>} entries
120216
+ /**
120217
+ * @returns {Array<Entry>} entries
118686
120218
  */
118687
120219
  function ErrorProps$2(props) {
118688
120220
  const {
@@ -118858,12 +120390,12 @@
118858
120390
 
118859
120391
  const CREATE_NEW_OPTION$3 = 'create-new';
118860
120392
 
118861
- /**
118862
- * @typedef { import('@bpmn-io/properties-panel').EntryDefinition } Entry
120393
+ /**
120394
+ * @typedef { import('@bpmn-io/properties-panel').EntryDefinition } Entry
118863
120395
  */
118864
120396
 
118865
- /**
118866
- * @returns {Array<Entry>} entries
120397
+ /**
120398
+ * @returns {Array<Entry>} entries
118867
120399
  */
118868
120400
  function EscalationProps$2(props) {
118869
120401
  const {
@@ -119036,12 +120568,12 @@
119036
120568
  return sortBy(elements, e => (e.name || '').toLowerCase());
119037
120569
  }
119038
120570
 
119039
- /**
119040
- * @typedef { import('@bpmn-io/properties-panel').EntryDefinition } Entry
120571
+ /**
120572
+ * @typedef { import('@bpmn-io/properties-panel').EntryDefinition } Entry
119041
120573
  */
119042
120574
 
119043
- /**
119044
- * @returns {Array<Entry>} entries
120575
+ /**
120576
+ * @returns {Array<Entry>} entries
119045
120577
  */
119046
120578
  function ExecutableProps(props) {
119047
120579
  const {
@@ -119112,14 +120644,14 @@
119112
120644
  // for ID validation as per BPMN Schema (QName - Namespace)
119113
120645
  const ID_REGEX = /^[a-z_][\w-.]*$/i;
119114
120646
 
119115
- /**
119116
- * checks whether the id value is valid
119117
- *
119118
- * @param {ModdleElement} element
119119
- * @param {String} idValue
119120
- * @param {Function} translate
119121
- *
119122
- * @return {String} error message
120647
+ /**
120648
+ * checks whether the id value is valid
120649
+ *
120650
+ * @param {ModdleElement} element
120651
+ * @param {String} idValue
120652
+ * @param {Function} translate
120653
+ *
120654
+ * @return {String} error message
119123
120655
  */
119124
120656
  function isIdValid(element, idValue, translate) {
119125
120657
  const assigned = element.$model.ids.assigned(idValue);
@@ -119147,12 +120679,12 @@
119147
120679
  return SPACE_REGEX.test(value);
119148
120680
  }
119149
120681
 
119150
- /**
119151
- * @typedef { import('@bpmn-io/properties-panel').EntryDefinition } Entry
120682
+ /**
120683
+ * @typedef { import('@bpmn-io/properties-panel').EntryDefinition } Entry
119152
120684
  */
119153
120685
 
119154
- /**
119155
- * @returns {Array<Entry>} entries
120686
+ /**
120687
+ * @returns {Array<Entry>} entries
119156
120688
  */
119157
120689
  function IdProps$1() {
119158
120690
  return [{
@@ -119194,12 +120726,12 @@
119194
120726
  });
119195
120727
  }
119196
120728
 
119197
- /**
119198
- * @typedef { import('@bpmn-io/properties-panel').EntryDefinition } Entry
120729
+ /**
120730
+ * @typedef { import('@bpmn-io/properties-panel').EntryDefinition } Entry
119199
120731
  */
119200
120732
 
119201
- /**
119202
- * @returns {Array<Entry>} entries
120733
+ /**
120734
+ * @returns {Array<Entry>} entries
119203
120735
  */
119204
120736
  function LinkProps(props) {
119205
120737
  const {
@@ -119247,12 +120779,12 @@
119247
120779
  const EMPTY_OPTION$3 = '';
119248
120780
  const CREATE_NEW_OPTION$2 = 'create-new';
119249
120781
 
119250
- /**
119251
- * @typedef { import('@bpmn-io/properties-panel').EntryDefinition } Entry
120782
+ /**
120783
+ * @typedef { import('@bpmn-io/properties-panel').EntryDefinition } Entry
119252
120784
  */
119253
120785
 
119254
- /**
119255
- * @returns {Array<Entry>} entries
120786
+ /**
120787
+ * @returns {Array<Entry>} entries
119256
120788
  */
119257
120789
  function MessageProps$1(props) {
119258
120790
  const {
@@ -119395,12 +120927,12 @@
119395
120927
  return sortBy(elements, e => (e.name || '').toLowerCase());
119396
120928
  }
119397
120929
 
119398
- /**
119399
- * @typedef { import('@bpmn-io/properties-panel').EntryDefinition } Entry
120930
+ /**
120931
+ * @typedef { import('@bpmn-io/properties-panel').EntryDefinition } Entry
119400
120932
  */
119401
120933
 
119402
- /**
119403
- * @returns {Array<Entry>} entries
120934
+ /**
120935
+ * @returns {Array<Entry>} entries
119404
120936
  */
119405
120937
  function MultiInstanceProps$2(props) {
119406
120938
  const {
@@ -119471,45 +121003,45 @@
119471
121003
 
119472
121004
  // generic ///////////////////////////
119473
121005
 
119474
- /**
119475
- * isMultiInstanceSupported - check whether given element supports MultiInstanceLoopCharacteristics.
119476
- *
119477
- * @param {djs.model.Base} element
119478
- * @return {boolean}
121006
+ /**
121007
+ * isMultiInstanceSupported - check whether given element supports MultiInstanceLoopCharacteristics.
121008
+ *
121009
+ * @param {djs.model.Base} element
121010
+ * @return {boolean}
119479
121011
  */
119480
121012
  function isMultiInstanceSupported$1(element) {
119481
121013
  const loopCharacteristics = getLoopCharacteristics$2(element);
119482
121014
  return !!loopCharacteristics && is$4(loopCharacteristics, 'bpmn:MultiInstanceLoopCharacteristics');
119483
121015
  }
119484
121016
 
119485
- /**
119486
- * getBody - get the body of a given expression.
119487
- *
119488
- * @param {ModdleElement<bpmn:FormalExpression>} expression
119489
- * @return {string} the body (value) of the expression
121017
+ /**
121018
+ * getBody - get the body of a given expression.
121019
+ *
121020
+ * @param {ModdleElement<bpmn:FormalExpression>} expression
121021
+ * @return {string} the body (value) of the expression
119490
121022
  */
119491
121023
  function getBody(expression) {
119492
121024
  return expression && expression.get('body');
119493
121025
  }
119494
121026
 
119495
- /**
119496
- * getProperty - get a property value of the loop characteristics.
119497
- *
119498
- * @param {djs.model.Base} element
119499
- * @param {string} propertyName
119500
- *
119501
- * @return {any} the property value
121027
+ /**
121028
+ * getProperty - get a property value of the loop characteristics.
121029
+ *
121030
+ * @param {djs.model.Base} element
121031
+ * @param {string} propertyName
121032
+ *
121033
+ * @return {any} the property value
119502
121034
  */
119503
121035
  function getProperty$3(element, propertyName) {
119504
121036
  const loopCharacteristics = getLoopCharacteristics$2(element);
119505
121037
  return loopCharacteristics && loopCharacteristics.get(propertyName);
119506
121038
  }
119507
121039
 
119508
- /**
119509
- * getLoopCharacteristics - get loopCharacteristics of a given element.
119510
- *
119511
- * @param {djs.model.Base} element
119512
- * @return {ModdleElement<bpmn:MultiInstanceLoopCharacteristics> | undefined}
121040
+ /**
121041
+ * getLoopCharacteristics - get loopCharacteristics of a given element.
121042
+ *
121043
+ * @param {djs.model.Base} element
121044
+ * @return {ModdleElement<bpmn:MultiInstanceLoopCharacteristics> | undefined}
119513
121045
  */
119514
121046
  function getLoopCharacteristics$2(element) {
119515
121047
  const bo = getBusinessObject$2(element);
@@ -119518,23 +121050,23 @@
119518
121050
 
119519
121051
  // loopCardinality
119520
121052
 
119521
- /**
119522
- * getLoopCardinality - get the loop cardinality of the loop characteristics.
119523
- *
119524
- * @param {djs.model.Base} element
119525
- *
119526
- * @return {ModdleElement<bpmn:FormalExpression>} an expression representing the loop cardinality
121053
+ /**
121054
+ * getLoopCardinality - get the loop cardinality of the loop characteristics.
121055
+ *
121056
+ * @param {djs.model.Base} element
121057
+ *
121058
+ * @return {ModdleElement<bpmn:FormalExpression>} an expression representing the loop cardinality
119527
121059
  */
119528
121060
  function getLoopCardinality(element) {
119529
121061
  return getProperty$3(element, 'loopCardinality');
119530
121062
  }
119531
121063
 
119532
- /**
119533
- * getLoopCardinalityValue - get the loop cardinality value of the loop characteristics.
119534
- *
119535
- * @param {djs.model.Base} element
119536
- *
119537
- * @return {string} the loop cardinality value
121064
+ /**
121065
+ * getLoopCardinalityValue - get the loop cardinality value of the loop characteristics.
121066
+ *
121067
+ * @param {djs.model.Base} element
121068
+ *
121069
+ * @return {string} the loop cardinality value
119538
121070
  */
119539
121071
  function getLoopCardinalityValue(element) {
119540
121072
  const loopCardinality = getLoopCardinality(element);
@@ -119543,35 +121075,35 @@
119543
121075
 
119544
121076
  // completionCondition /////////////////////
119545
121077
 
119546
- /**
119547
- * getCompletionCondition - get the completion condition of the loop characteristics.
119548
- *
119549
- * @param {djs.model.Base} element
119550
- *
119551
- * @return {ModdleElement<bpmn:FormalExpression>} an expression representing the completion condition
121078
+ /**
121079
+ * getCompletionCondition - get the completion condition of the loop characteristics.
121080
+ *
121081
+ * @param {djs.model.Base} element
121082
+ *
121083
+ * @return {ModdleElement<bpmn:FormalExpression>} an expression representing the completion condition
119552
121084
  */
119553
121085
  function getCompletionCondition$1(element) {
119554
121086
  return getProperty$3(element, 'completionCondition');
119555
121087
  }
119556
121088
 
119557
- /**
119558
- * getCompletionConditionValue - get the completion condition value of the loop characteristics.
119559
- *
119560
- * @param {djs.model.Base} element
119561
- *
119562
- * @return {string} the completion condition value
121089
+ /**
121090
+ * getCompletionConditionValue - get the completion condition value of the loop characteristics.
121091
+ *
121092
+ * @param {djs.model.Base} element
121093
+ *
121094
+ * @return {string} the completion condition value
119563
121095
  */
119564
121096
  function getCompletionConditionValue(element) {
119565
121097
  const completionCondition = getCompletionCondition$1(element);
119566
121098
  return getBody(completionCondition);
119567
121099
  }
119568
121100
 
119569
- /**
119570
- * @typedef { import('@bpmn-io/properties-panel').EntryDefinition } Entry
121101
+ /**
121102
+ * @typedef { import('@bpmn-io/properties-panel').EntryDefinition } Entry
119571
121103
  */
119572
121104
 
119573
- /**
119574
- * @returns {Array<Entry>} entries
121105
+ /**
121106
+ * @returns {Array<Entry>} entries
119575
121107
  */
119576
121108
  function NameProps(props) {
119577
121109
  const {
@@ -119675,12 +121207,12 @@
119675
121207
  return categoryValue;
119676
121208
  }
119677
121209
 
119678
- /**
119679
- * @typedef { import('@bpmn-io/properties-panel').EntryDefinition } Entry
121210
+ /**
121211
+ * @typedef { import('@bpmn-io/properties-panel').EntryDefinition } Entry
119680
121212
  */
119681
121213
 
119682
- /**
119683
- * @returns {Array<Entry>} entries
121214
+ /**
121215
+ * @returns {Array<Entry>} entries
119684
121216
  */
119685
121217
  function ProcessProps$1(props) {
119686
121218
  const {
@@ -119771,15 +121303,15 @@
119771
121303
  return is$4(element, 'bpmn:Participant') && element.businessObject.get('processRef');
119772
121304
  }
119773
121305
 
119774
- /**
119775
- * @typedef { import('@bpmn-io/properties-panel').EntryDefinition } Entry
121306
+ /**
121307
+ * @typedef { import('@bpmn-io/properties-panel').EntryDefinition } Entry
119776
121308
  */
119777
121309
 
119778
121310
  const EMPTY_OPTION$2 = '';
119779
121311
  const CREATE_NEW_OPTION$1 = 'create-new';
119780
121312
 
119781
- /**
119782
- * @returns {Entry[]}
121313
+ /**
121314
+ * @returns {Entry[]}
119783
121315
  */
119784
121316
  function SignalProps$1(props) {
119785
121317
  const {
@@ -119929,12 +121461,12 @@
119929
121461
  return isAny$1(element, ['bpmn:StartEvent', 'bpmn:IntermediateCatchEvent', 'bpmn:BoundaryEvent']) && !!getTimerEventDefinition$1(element);
119930
121462
  }
119931
121463
 
119932
- /**
119933
- * Get the timer definition type for a given timer event definition.
119934
- *
119935
- * @param {ModdleElement<bpmn:TimerEventDefinition>} timer
119936
- *
119937
- * @return {string|undefined} the timer definition type
121464
+ /**
121465
+ * Get the timer definition type for a given timer event definition.
121466
+ *
121467
+ * @param {ModdleElement<bpmn:TimerEventDefinition>} timer
121468
+ *
121469
+ * @return {string|undefined} the timer definition type
119938
121470
  */
119939
121471
  function getTimerDefinitionType(timer) {
119940
121472
  if (!timer) {
@@ -120017,12 +121549,12 @@
120017
121549
  return entries;
120018
121550
  }
120019
121551
 
120020
- /**
120021
- * TimerEventDefinitionType - Generic select entry allowing to select a specific
120022
- * timerEventDefintionType. To be used together with timerEventDefinitionValue.
120023
- *
120024
- * @param {type} props
120025
- * @return {SelectEntry}
121552
+ /**
121553
+ * TimerEventDefinitionType - Generic select entry allowing to select a specific
121554
+ * timerEventDefintionType. To be used together with timerEventDefinitionValue.
121555
+ *
121556
+ * @param {type} props
121557
+ * @return {SelectEntry}
120026
121558
  */
120027
121559
  function TimerEventDefinitionType$2(props) {
120028
121560
  const {
@@ -120090,13 +121622,13 @@
120090
121622
  });
120091
121623
  }
120092
121624
 
120093
- /**
120094
- * TimerEventDefinitionValue - Generic textField entry allowing to specify the
120095
- * timerEventDefintionValue based on the set timerEventDefintionType. To be used
120096
- * together with timerEventDefinitionType.
120097
- *
120098
- * @param {type} props
120099
- * @return {TextFieldEntry}
121625
+ /**
121626
+ * TimerEventDefinitionValue - Generic textField entry allowing to specify the
121627
+ * timerEventDefintionValue based on the set timerEventDefintionType. To be used
121628
+ * together with timerEventDefinitionType.
121629
+ *
121630
+ * @param {type} props
121631
+ * @return {TextFieldEntry}
120100
121632
  */
120101
121633
  function TimerEventDefinitionValue$2(props) {
120102
121634
  const {
@@ -120396,12 +121928,12 @@
120396
121928
  bpmnPropertiesProvider: ['type', BpmnPropertiesProvider]
120397
121929
  };
120398
121930
 
120399
- /**
120400
- * Get extension elements of business object. Optionally filter by type.
120401
- *
120402
- * @param {ModdleElement} businessObject
120403
- * @param {string} [type=undefined]
120404
- * @returns {Array<ModdleElement>}
121931
+ /**
121932
+ * Get extension elements of business object. Optionally filter by type.
121933
+ *
121934
+ * @param {ModdleElement} businessObject
121935
+ * @param {string} [type=undefined]
121936
+ * @returns {Array<ModdleElement>}
120405
121937
  */
120406
121938
  function getExtensionElementsList$2(businessObject, type = undefined) {
120407
121939
  const extensionElements = businessObject.get('extensionElements');
@@ -120418,13 +121950,13 @@
120418
121950
  return values;
120419
121951
  }
120420
121952
 
120421
- /**
120422
- * Add one or more extension elements. Create bpmn:ExtensionElements if it doesn't exist.
120423
- *
120424
- * @param {ModdleElement} element
120425
- * @param {ModdleElement} businessObject
120426
- * @param {ModdleElement|Array<ModdleElement>} extensionElementsToAdd
120427
- * @param {CommandStack} commandStack
121953
+ /**
121954
+ * Add one or more extension elements. Create bpmn:ExtensionElements if it doesn't exist.
121955
+ *
121956
+ * @param {ModdleElement} element
121957
+ * @param {ModdleElement} businessObject
121958
+ * @param {ModdleElement|Array<ModdleElement>} extensionElementsToAdd
121959
+ * @param {CommandStack} commandStack
120428
121960
  */
120429
121961
  function addExtensionElements(element, businessObject, extensionElementToAdd, bpmnFactory, commandStack) {
120430
121962
  const commands = [];
@@ -120462,13 +121994,13 @@
120462
121994
  commandStack.execute('properties-panel.multi-command-executor', commands);
120463
121995
  }
120464
121996
 
120465
- /**
120466
- * Remove one or more extension elements. Remove bpmn:ExtensionElements afterwards if it's empty.
120467
- *
120468
- * @param {ModdleElement} element
120469
- * @param {ModdleElement} businessObject
120470
- * @param {ModdleElement|Array<ModdleElement>} extensionElementsToRemove
120471
- * @param {CommandStack} commandStack
121997
+ /**
121998
+ * Remove one or more extension elements. Remove bpmn:ExtensionElements afterwards if it's empty.
121999
+ *
122000
+ * @param {ModdleElement} element
122001
+ * @param {ModdleElement} businessObject
122002
+ * @param {ModdleElement|Array<ModdleElement>} extensionElementsToRemove
122003
+ * @param {CommandStack} commandStack
120472
122004
  */
120473
122005
  function removeExtensionElements$1(element, businessObject, extensionElementsToRemove, commandStack) {
120474
122006
  if (!isArray$6(extensionElementsToRemove)) {
@@ -120656,12 +122188,12 @@
120656
122188
  return extensions[0];
120657
122189
  }
120658
122190
 
120659
- /**
120660
- * @typedef { import('@bpmn-io/properties-panel').EntryDefinition } Entry
122191
+ /**
122192
+ * @typedef { import('@bpmn-io/properties-panel').EntryDefinition } Entry
120661
122193
  */
120662
122194
 
120663
- /**
120664
- * @returns {Array<Entry>} entries
122195
+ /**
122196
+ * @returns {Array<Entry>} entries
120665
122197
  */
120666
122198
  function AdHocCompletionProps(props) {
120667
122199
  const {
@@ -121033,24 +122565,24 @@
121033
122565
  return is$4(element, 'bpmn:UserTask') || isZeebeServiceTask(element);
121034
122566
  }
121035
122567
 
121036
- /**
121037
- * Get first zeebe:TaskHeaders element for a specific element.
121038
- *
121039
- * @param {ModdleElement} element
121040
- *
121041
- * @return {ModdleElement} a zeebe:TaskHeader element
122568
+ /**
122569
+ * Get first zeebe:TaskHeaders element for a specific element.
122570
+ *
122571
+ * @param {ModdleElement} element
122572
+ *
122573
+ * @return {ModdleElement} a zeebe:TaskHeader element
121042
122574
  */
121043
122575
  function getTaskHeaders$1$1(element) {
121044
122576
  const businessObject = getBusinessObject$2(element);
121045
122577
  return getExtensionElementsList$2(businessObject, 'zeebe:TaskHeaders')[0];
121046
122578
  }
121047
122579
 
121048
- /**
121049
- * Retrieve all zeebe:Header elements for a specific element.
121050
- *
121051
- * @param {ModdleElement} element
121052
- *
121053
- * @return {Array<ModdleElement>} a list of zeebe:Header elements
122580
+ /**
122581
+ * Retrieve all zeebe:Header elements for a specific element.
122582
+ *
122583
+ * @param {ModdleElement} element
122584
+ *
122585
+ * @return {Array<ModdleElement>} a list of zeebe:Header elements
121054
122586
  */
121055
122587
  function getHeaders(element) {
121056
122588
  const taskHeaders = getTaskHeaders$1$1(element);
@@ -121091,10 +122623,10 @@
121091
122623
  return DEFAULT_IMPLEMENTATION_OPTION$1;
121092
122624
  };
121093
122625
 
121094
- /**
121095
- * Set value by either creating a zeebe:calledDecision or a zeebe:taskDefintion
121096
- * extension element. Note that they must not exist both at the same time, however
121097
- * this will be ensured by a bpmn-js behavior (and not by the propPanel).
122626
+ /**
122627
+ * Set value by either creating a zeebe:calledDecision or a zeebe:taskDefintion
122628
+ * extension element. Note that they must not exist both at the same time, however
122629
+ * this will be ensured by a bpmn-js behavior (and not by the propPanel).
121098
122630
  */
121099
122631
  const setValue = value => {
121100
122632
  let extensionElement, extensionElementType;
@@ -121645,12 +123177,12 @@
121645
123177
  return isAny$1(element, CONDITIONAL_SOURCES$1);
121646
123178
  }
121647
123179
 
121648
- /**
121649
- * getConditionExpression - get the body value of a condition expression for a given element
121650
- *
121651
- * @param {ModdleElement} element
121652
- *
121653
- * @return {string|undefined}
123180
+ /**
123181
+ * getConditionExpression - get the body value of a condition expression for a given element
123182
+ *
123183
+ * @param {ModdleElement} element
123184
+ *
123185
+ * @return {string|undefined}
121654
123186
  */
121655
123187
  function getConditionExpression$1(element) {
121656
123188
  const businessObject = getBusinessObject$2(element);
@@ -121706,12 +123238,12 @@
121706
123238
  });
121707
123239
  }
121708
123240
 
121709
- /**
121710
- * @typedef { import('@bpmn-io/properties-panel').EntryDefinition } Entry
123241
+ /**
123242
+ * @typedef { import('@bpmn-io/properties-panel').EntryDefinition } Entry
121711
123243
  */
121712
123244
 
121713
- /**
121714
- * @returns {Array<Entry>} entries
123245
+ /**
123246
+ * @returns {Array<Entry>} entries
121715
123247
  */
121716
123248
  function EscalationProps$1(props) {
121717
123249
  const {
@@ -122351,24 +123883,24 @@
122351
123883
 
122352
123884
  // helpers /////////////
122353
123885
 
122354
- /**
122355
- * @typedef { { cmd: string, context: Object } } Command
122356
- * @typedef {Command[]} Commands
122357
- *
122358
- * @typedef {import('diagram-js/lib/model/Types').Element} Element
122359
- * @typedef {import('bpmn-js/lib/model/Types').ModdleElement} ModdleElement
122360
- *
122361
- * @param {import('didi').Injector} Injector
123886
+ /**
123887
+ * @typedef { { cmd: string, context: Object } } Command
123888
+ * @typedef {Command[]} Commands
123889
+ *
123890
+ * @typedef {import('diagram-js/lib/model/Types').Element} Element
123891
+ * @typedef {import('bpmn-js/lib/model/Types').ModdleElement} ModdleElement
123892
+ *
123893
+ * @param {import('didi').Injector} Injector
122362
123894
  */
122363
123895
 
122364
- /**
122365
- * @param {Injector} injector
122366
- * @param {Element} element
122367
- *
122368
- * @returns { {
122369
- * commands: Commands,
122370
- * extensionElements: ModdleElement
122371
- * } }
123896
+ /**
123897
+ * @param {Injector} injector
123898
+ * @param {Element} element
123899
+ *
123900
+ * @returns { {
123901
+ * commands: Commands,
123902
+ * extensionElements: ModdleElement
123903
+ * } }
122372
123904
  */
122373
123905
  function getOrCreateExtensionElements(injector, element, moddleElement) {
122374
123906
  const businessObject = moddleElement || getBusinessObject$2(element);
@@ -122391,14 +123923,14 @@
122391
123923
  };
122392
123924
  }
122393
123925
 
122394
- /**
122395
- * @param {Injector} injector
122396
- * @param {Element} element
122397
- *
122398
- * @returns { {
122399
- * commands: Commands,
122400
- * formDefinition: ModdleElement
122401
- * } }
123926
+ /**
123927
+ * @param {Injector} injector
123928
+ * @param {Element} element
123929
+ *
123930
+ * @returns { {
123931
+ * commands: Commands,
123932
+ * formDefinition: ModdleElement
123933
+ * } }
122402
123934
  */
122403
123935
  function getOrCreateFormDefintition(injector, element) {
122404
123936
  let formDefinition = getFormDefinition$2(element);
@@ -122421,15 +123953,15 @@
122421
123953
  };
122422
123954
  }
122423
123955
 
122424
- /**
122425
- * @param {Injector} injector
122426
- * @param {Element} element
122427
- *
122428
- * @returns { {
122429
- * commands: Commands,
122430
- * formDefinition: ModdleElement,
122431
- * userTaskForm: ModdleElement
122432
- * } }
123956
+ /**
123957
+ * @param {Injector} injector
123958
+ * @param {Element} element
123959
+ *
123960
+ * @returns { {
123961
+ * commands: Commands,
123962
+ * formDefinition: ModdleElement,
123963
+ * userTaskForm: ModdleElement
123964
+ * } }
122433
123965
  */
122434
123966
  function getOrCreateUserTaskForm(injector, element) {
122435
123967
  let userTaskForm = getUserTaskForm$1(element);
@@ -122506,8 +124038,8 @@
122506
124038
  function removeFormDefinition(injector, element) {
122507
124039
  const formDefinition = getFormDefinition$2(element);
122508
124040
 
122509
- /**
122510
- * @type {import('bpmn-js/lib/features/modeling/Modeling').default}
124041
+ /**
124042
+ * @type {import('bpmn-js/lib/features/modeling/Modeling').default}
122511
124043
  */
122512
124044
  const modeling = injector.get('modeling');
122513
124045
  if (formDefinition) {
@@ -122519,36 +124051,36 @@
122519
124051
  }
122520
124052
  }
122521
124053
 
122522
- /**
122523
- * @param {Injector} injector
122524
- * @param {Object} properties
122525
- * @param {ModdleElement} parent
122526
- *
122527
- * @returns {ModdleElement}
124054
+ /**
124055
+ * @param {Injector} injector
124056
+ * @param {Object} properties
124057
+ * @param {ModdleElement} parent
124058
+ *
124059
+ * @returns {ModdleElement}
122528
124060
  */
122529
124061
  function createFormDefinition$2(injector, properties, parent) {
122530
124062
  const bpmnFactory = injector.get('bpmnFactory');
122531
124063
  return createElement$6('zeebe:FormDefinition', properties, parent, bpmnFactory);
122532
124064
  }
122533
124065
 
122534
- /**
122535
- * @param {Injector} injector
122536
- * @param {Object} properties
122537
- * @param {ModdleElement} parent
122538
- *
122539
- * @returns {ModdleElement}
124066
+ /**
124067
+ * @param {Injector} injector
124068
+ * @param {Object} properties
124069
+ * @param {ModdleElement} parent
124070
+ *
124071
+ * @returns {ModdleElement}
122540
124072
  */
122541
124073
  function createUserTaskForm(injector, properties, parent) {
122542
124074
  const bpmnFactory = injector.get('bpmnFactory');
122543
124075
  return createElement$6('zeebe:UserTaskForm', properties, parent, bpmnFactory);
122544
124076
  }
122545
124077
 
122546
- /**
122547
- * @param {Element} element
122548
- * @param {ModdleElement} moddleElement
122549
- * @param {Object} properties
122550
- *
122551
- * @returns {Command}
124078
+ /**
124079
+ * @param {Element} element
124080
+ * @param {ModdleElement} moddleElement
124081
+ * @param {Object} properties
124082
+ *
124083
+ * @returns {Command}
122552
124084
  */
122553
124085
  function createUpdateModdlePropertiesCommand(element, moddleElement, properties) {
122554
124086
  return {
@@ -122893,11 +124425,11 @@
122893
124425
 
122894
124426
  // helper //////////////////////////
122895
124427
 
122896
- /**
122897
- * Check whether the propagateAllParentVariables attribute is set on an element.
122898
- * @param {Object} element
122899
- *
122900
- * @returns {boolean}
124428
+ /**
124429
+ * Check whether the propagateAllParentVariables attribute is set on an element.
124430
+ * @param {Object} element
124431
+ *
124432
+ * @returns {boolean}
122901
124433
  */
122902
124434
  function isPropagateAllParentVariables(element) {
122903
124435
  if (!is$4(element, 'bpmn:CallActivity')) {
@@ -122998,37 +124530,37 @@
122998
124530
  return ioMapping && ioMapping.get(prop) || [];
122999
124531
  }
123000
124532
 
123001
- /**
123002
- * Get a ioMapping from the business object
123003
- *
123004
- * @param {djs.model.Base} element
123005
- *
123006
- * @return {ModdleElement} the ioMapping object
124533
+ /**
124534
+ * Get a ioMapping from the business object
124535
+ *
124536
+ * @param {djs.model.Base} element
124537
+ *
124538
+ * @return {ModdleElement} the ioMapping object
123007
124539
  */
123008
124540
  function getIoMapping$1(element) {
123009
124541
  const bo = getBusinessObject$2(element);
123010
124542
  return (getElements$1(bo, 'zeebe:IoMapping') || [])[0];
123011
124543
  }
123012
124544
 
123013
- /**
123014
- * Return all input parameters existing in the business object, and
123015
- * an empty array if none exist.
123016
- *
123017
- * @param {djs.model.Base} element
123018
- *
123019
- * @return {Array} a list of input parameter objects
124545
+ /**
124546
+ * Return all input parameters existing in the business object, and
124547
+ * an empty array if none exist.
124548
+ *
124549
+ * @param {djs.model.Base} element
124550
+ *
124551
+ * @return {Array} a list of input parameter objects
123020
124552
  */
123021
124553
  function getInputParameters$1(element) {
123022
124554
  return getParameters$1.apply(this, [element, 'inputParameters']);
123023
124555
  }
123024
124556
 
123025
- /**
123026
- * Return all output parameters existing in the business object, and
123027
- * an empty array if none exist.
123028
- *
123029
- * @param {djs.model.Base} element
123030
- *
123031
- * @return {Array} a list of output parameter objects
124557
+ /**
124558
+ * Return all output parameters existing in the business object, and
124559
+ * an empty array if none exist.
124560
+ *
124561
+ * @param {djs.model.Base} element
124562
+ *
124563
+ * @return {Array} a list of output parameter objects
123032
124564
  */
123033
124565
  function getOutputParameters$1(element) {
123034
124566
  return getParameters$1.apply(this, [element, 'outputParameters']);
@@ -123802,11 +125334,11 @@
123802
125334
 
123803
125335
  // helper //////////////////////////
123804
125336
 
123805
- /**
123806
- * Determine default value for propagateAllChildVariables attribute
123807
- * @param {Object} element representing a bpmn:CallActivity
123808
- *
123809
- * @returns {boolean}
125337
+ /**
125338
+ * Determine default value for propagateAllChildVariables attribute
125339
+ * @param {Object} element representing a bpmn:CallActivity
125340
+ *
125341
+ * @returns {boolean}
123810
125342
  */
123811
125343
  function determinePropAllChildVariablesDefault(element) {
123812
125344
  const outputParameters = getOutputParameters$1(element);
@@ -123815,12 +125347,12 @@
123815
125347
  }
123816
125348
  }
123817
125349
 
123818
- /**
123819
- * Check whether the propagateAllChildVariables attribute is set on an element.
123820
- * Note that a default logic will be determine if it is not explicitly set.
123821
- * @param {Object} element
123822
- *
123823
- * @returns {boolean}
125350
+ /**
125351
+ * Check whether the propagateAllChildVariables attribute is set on an element.
125352
+ * Note that a default logic will be determine if it is not explicitly set.
125353
+ * @param {Object} element
125354
+ *
125355
+ * @returns {boolean}
123824
125356
  */
123825
125357
  function isPropagateAllChildVariables(element) {
123826
125358
  if (!is$4(element, 'bpmn:CallActivity')) {
@@ -124110,10 +125642,10 @@
124110
125642
  return DEFAULT_IMPLEMENTATION_OPTION;
124111
125643
  };
124112
125644
 
124113
- /**
124114
- * Set value by either creating a zeebe:script or a zeebe:taskDefintion
124115
- * extension element. Note that they must not exist both at the same time, however
124116
- * this will be ensured by a bpmn-js behavior (and not by the propPanel).
125645
+ /**
125646
+ * Set value by either creating a zeebe:script or a zeebe:taskDefintion
125647
+ * extension element. Note that they must not exist both at the same time, however
125648
+ * this will be ensured by a bpmn-js behavior (and not by the propPanel).
124117
125649
  */
124118
125650
  const setValue = value => {
124119
125651
  let extensionElement, extensionElementType;
@@ -124405,8 +125937,8 @@
124405
125937
  return getExtensionElementsList$2(businessObject, 'zeebe:Script')[0];
124406
125938
  }
124407
125939
 
124408
- /**
124409
- * @returns {Entry[]}
125940
+ /**
125941
+ * @returns {Entry[]}
124410
125942
  */
124411
125943
  function SignalProps(props) {
124412
125944
  const {
@@ -125145,13 +126677,13 @@
125145
126677
  return getExtensionElementsList$2(businessObject, 'zeebe:TaskSchedule')[0];
125146
126678
  }
125147
126679
 
125148
- /**
125149
- * Check whether a given timer expression type is supported for a given element.
125150
- *
125151
- * @param {string} type
125152
- * @param {Element|ModdleElement} element
125153
- *
125154
- * @return {boolean}
126680
+ /**
126681
+ * Check whether a given timer expression type is supported for a given element.
126682
+ *
126683
+ * @param {string} type
126684
+ * @param {Element|ModdleElement} element
126685
+ *
126686
+ * @return {boolean}
125155
126687
  */
125156
126688
  function isTimerExpressionTypeSupported$1(type, element) {
125157
126689
  const businessObject = getBusinessObject$2(element);
@@ -125244,12 +126776,12 @@
125244
126776
  return options;
125245
126777
  }
125246
126778
 
125247
- /**
125248
- * TimerEventDefinitionType - Generic select entry allowing to select a specific
125249
- * timerEventDefintionType. To be used together with timerEventDefinitionValue.
125250
- *
125251
- * @param {type} props
125252
- * @return {SelectEntry}
126779
+ /**
126780
+ * TimerEventDefinitionType - Generic select entry allowing to select a specific
126781
+ * timerEventDefintionType. To be used together with timerEventDefinitionValue.
126782
+ *
126783
+ * @param {type} props
126784
+ * @return {SelectEntry}
125253
126785
  */
125254
126786
  function TimerEventDefinitionType$1(props) {
125255
126787
  const {
@@ -125307,16 +126839,16 @@
125307
126839
  });
125308
126840
  }
125309
126841
 
125310
- /**
125311
- * TimerEventDefinitionValue - Generic textField entry allowing to specify the
125312
- * timerEventDefintionValue based on the set timerEventDefintionType. To be used
125313
- * together with timerEventDefinitionType.
125314
- *
125315
- * @param {object} props
125316
- * @param {ModdleElement} props.element
125317
- * @param {'timeCycle'|'timeDate'|'timeDuration'} props.timerEventDefinitionType?
125318
- * @param {string} props.label?
125319
- * @return {TextFieldEntry}
126842
+ /**
126843
+ * TimerEventDefinitionValue - Generic textField entry allowing to specify the
126844
+ * timerEventDefintionValue based on the set timerEventDefintionType. To be used
126845
+ * together with timerEventDefinitionType.
126846
+ *
126847
+ * @param {object} props
126848
+ * @param {ModdleElement} props.element
126849
+ * @param {'timeCycle'|'timeDate'|'timeDuration'} props.timerEventDefinitionType?
126850
+ * @param {string} props.label?
126851
+ * @return {TextFieldEntry}
125320
126852
  */
125321
126853
  function TimerEventDefinitionValue$1(props) {
125322
126854
  const {
@@ -125485,10 +127017,10 @@
125485
127017
  return JOB_WORKER_IMPLEMENTATION_OPTION;
125486
127018
  };
125487
127019
 
125488
- /**
125489
- * Set value by either creating or removing zeebe:userTask extension element.
125490
- * Note that they must not exist both at the same time, however this
125491
- * will be ensured by a camunda-bpmn-js behavior (and not by the propPanel).
127020
+ /**
127021
+ * Set value by either creating or removing zeebe:userTask extension element.
127022
+ * Note that they must not exist both at the same time, however this
127023
+ * will be ensured by a camunda-bpmn-js behavior (and not by the propPanel).
125492
127024
  */
125493
127025
  const setValue = value => {
125494
127026
  if (value === ZEEBE_USER_TASK_IMPLEMENTATION_OPTION) {
@@ -126763,54 +128295,54 @@
126763
128295
  }
126764
128296
  };
126765
128297
 
126766
- /**
126767
- * @typedef {import('bpmn-js/lib/BaseViewer').BaseViewerOptions} BaseViewerOptions
126768
- *
126769
- * @typedef {import('didi').ModuleDeclaration} ModuleDeclaration
126770
- */
126771
-
126772
- /**
126773
- *
126774
- * @param {BaseViewerOptions} options
126775
- */
126776
- function Modeler$1(options = {}) {
126777
- Modeler$2.call(this, options);
126778
- }
126779
-
126780
- e$7(Modeler$1, Modeler$2);
126781
-
126782
- /**
126783
- * @param { {
126784
- * disableAdjustOrigin?: boolean;
126785
- * disableGrid?: boolean;
126786
- * } } [options]
126787
- *
126788
- * @returns {ModuleDeclaration[]}
126789
- */
126790
- Modeler$1.prototype.getModules = function(options = {}) {
126791
- const modules = Modeler$2.prototype.getModules.call(this, options);
126792
-
126793
- return [
126794
- ...modules,
126795
- options.disableAdjustOrigin
126796
- ? diagramOriginModule
126797
- : alignToOriginModule,
126798
- options.disableGrid
126799
- ? {}
126800
- : index$5
126801
- ];
126802
- };
126803
-
126804
- Modeler$1.prototype._extensionModules = [
126805
- index$6,
126806
- ExecutableFixModule,
126807
- index$3$1,
126808
- index$2$1
126809
- ];
126810
-
126811
- Modeler$1.prototype._modules = [].concat(
126812
- Modeler$2.prototype._modules,
126813
- Modeler$1.prototype._extensionModules
128298
+ /**
128299
+ * @typedef {import('bpmn-js/lib/BaseViewer').BaseViewerOptions} BaseViewerOptions
128300
+ *
128301
+ * @typedef {import('didi').ModuleDeclaration} ModuleDeclaration
128302
+ */
128303
+
128304
+ /**
128305
+ *
128306
+ * @param {BaseViewerOptions} options
128307
+ */
128308
+ function Modeler$1(options = {}) {
128309
+ Modeler$2.call(this, options);
128310
+ }
128311
+
128312
+ e$7(Modeler$1, Modeler$2);
128313
+
128314
+ /**
128315
+ * @param { {
128316
+ * disableAdjustOrigin?: boolean;
128317
+ * disableGrid?: boolean;
128318
+ * } } [options]
128319
+ *
128320
+ * @returns {ModuleDeclaration[]}
128321
+ */
128322
+ Modeler$1.prototype.getModules = function(options = {}) {
128323
+ const modules = Modeler$2.prototype.getModules.call(this, options);
128324
+
128325
+ return [
128326
+ ...modules,
128327
+ options.disableAdjustOrigin
128328
+ ? diagramOriginModule
128329
+ : alignToOriginModule,
128330
+ options.disableGrid
128331
+ ? {}
128332
+ : index$5
128333
+ ];
128334
+ };
128335
+
128336
+ Modeler$1.prototype._extensionModules = [
128337
+ index$6,
128338
+ ExecutableFixModule,
128339
+ index$3$1,
128340
+ index$2$1
128341
+ ];
128342
+
128343
+ Modeler$1.prototype._modules = [].concat(
128344
+ Modeler$2.prototype._modules,
128345
+ Modeler$1.prototype._extensionModules
126814
128346
  );
126815
128347
 
126816
128348
  /**
@@ -142676,7 +144208,7 @@
142676
144208
  return newVariable;
142677
144209
  }
142678
144210
 
142679
- class EntriesContext extends VariableContext {
144211
+ class EntriesContext extends VariableContext$1 {
142680
144212
  constructor(value = { entries: {} }) {
142681
144213
  super(value);
142682
144214
 
@@ -142880,7 +144412,7 @@
142880
144412
  * @returns {EntriesContext}
142881
144413
  */
142882
144414
  function getResultContext(expression, variables = {}) {
142883
- const contextTracker = trackVariables(variables, EntriesContext);
144415
+ const contextTracker = trackVariables$1(variables, EntriesContext);
142884
144416
 
142885
144417
  // This is a hack to get the latest variables from the context tracker
142886
144418
  // lezer does not automatically annotate the parse tree with the context
@@ -142895,7 +144427,7 @@
142895
144427
  }
142896
144428
  });
142897
144429
 
142898
- const contextualParser = parser$2.configure({
144430
+ const contextualParser = parser$3.configure({
142899
144431
  contextTracker: customContextTracker
142900
144432
  });
142901
144433
 
@@ -157237,7 +158769,7 @@
157237
158769
  */
157238
158770
  _extractExpressionsWithDepth(template) {
157239
158771
  // build simplified feelers syntax tree
157240
- const parseTree = parser.parse(template);
158772
+ const parseTree = parser$1.parse(template);
157241
158773
  const tree = buildSimpleTree(parseTree, template);
157242
158774
  return function _traverse(n, depth = 0) {
157243
158775
  if (['Feel', 'FeelBlock'].includes(n.name)) {
@@ -164583,17 +166115,17 @@
164583
166115
  types: types
164584
166116
  };
164585
166117
 
164586
- const commonModules = [
164587
- iconRendererModule
164588
- ];
164589
-
164590
- /**
164591
- * @type { {
164592
- * zeebe: any
164593
- * } }
164594
- */
164595
- const commonModdleExtensions = {
164596
- zeebe: zeebeModdle
166118
+ const commonModules = [
166119
+ iconRendererModule
166120
+ ];
166121
+
166122
+ /**
166123
+ * @type { {
166124
+ * zeebe: any
166125
+ * } }
166126
+ */
166127
+ const commonModdleExtensions = {
166128
+ zeebe: zeebeModdle
164597
166129
  };
164598
166130
 
164599
166131
  /**
@@ -168826,158 +170358,158 @@
168826
170358
  ]
168827
170359
  };
168828
170360
 
168829
- /**
168830
- * @typedef { import('diagram-js/lib/features/popup-menu/PopupMenu').default } PopupMenu
168831
- * @typedef { import('diagram-js/lib/model').Element } Element
168832
- * @typedef { import('diagram-js/lib/features/popup-menu/PopupMenuProvider').PopupMenuEntries } PopupMenuEntries
168833
- */
168834
-
168835
-
168836
- const LOW_PRIORITY = 250;
168837
-
168838
- const ANNOTATIONS = [
168839
- {
168840
- entries: [
168841
- 'replace-with-call-activity',
168842
- 'append-call-activity',
168843
- 'create-call-activity'
168844
- ],
168845
- search: 'child process'
168846
- },
168847
- {
168848
- entries: [
168849
- 'replace-with-receive-task',
168850
- 'append-receive-task',
168851
- 'create-receive-task'
168852
- ],
168853
- search: 'message'
168854
- },
168855
- {
168856
- entries: [
168857
- 'replace-with-rule-task',
168858
- 'append-rule-task',
168859
- 'create-rule-task'
168860
- ],
168861
- search: 'dmn decision'
168862
- },
168863
- {
168864
- entries: [
168865
- 'replace-with-service-task',
168866
- 'append-service-task',
168867
- 'create-service-task',
168868
- ],
168869
- search: [ 'job worker', 'job worker' ] // double mention to increase ranking in search result
168870
- },
168871
- {
168872
- entries: [
168873
- 'replace-with-script-task',
168874
- 'append-script-task',
168875
- 'create-script-task',
168876
- 'replace-with-send-task',
168877
- 'append-send-task',
168878
- 'create-send-task',
168879
- 'replace-with-message-intermediate-throw',
168880
- 'append-message-intermediate-throw',
168881
- 'create-message-intermediate-throw',
168882
- 'replace-with-message-end',
168883
- 'append-message-end',
168884
- 'create-message-end'
168885
- ],
168886
- search: 'job worker'
168887
- },
168888
- {
168889
- entries: [
168890
- 'replace-with-user-task',
168891
- 'append-user-task',
168892
- 'create-user-task'
168893
- ],
168894
- search: 'form human'
168895
- }
168896
- ];
168897
-
168898
- const ANNOTATIONS_KEYED = reduce(ANNOTATIONS, (annotationsKeyed, annotation) => {
168899
-
168900
- const { entries, search } = annotation;
168901
-
168902
- for (const entry of entries) {
168903
- if (annotationsKeyed[entry]) {
168904
- annotationsKeyed[entry].search += ' ' + search;
168905
- } else {
168906
- annotationsKeyed[entry] = { search };
168907
- }
168908
- }
168909
-
168910
- return annotationsKeyed;
168911
- }, {});
168912
-
168913
-
168914
- /**
168915
- * @param { PopupMenu } popupMenu
168916
- *
168917
- * @implements PopupMenuProvider
168918
- */
168919
- function CamundaDetailsPopupMenuProvider(popupMenu) {
168920
-
168921
- this._popupMenu = popupMenu;
168922
-
168923
- this.register();
168924
- }
168925
-
168926
- CamundaDetailsPopupMenuProvider.$inject = [ 'popupMenu' ];
168927
-
168928
-
168929
- /**
168930
- * Register create menu provider in the popup menu
168931
- */
168932
- CamundaDetailsPopupMenuProvider.prototype.register = function() {
168933
-
168934
- // plug-into create-append-anything <create> menu
168935
- this._popupMenu.registerProvider('bpmn-create', LOW_PRIORITY, this);
168936
-
168937
- // plug-into create-append-anything <append> menu
168938
- this._popupMenu.registerProvider('bpmn-append', LOW_PRIORITY, this);
168939
-
168940
- // plug-into <replace> menu
168941
- this._popupMenu.registerProvider('bpmn-replace', LOW_PRIORITY, this);
168942
- };
168943
-
168944
-
168945
- /**
168946
- * Returns the create options as menu entries
168947
- *
168948
- * @param { Element } _element
168949
- */
168950
- CamundaDetailsPopupMenuProvider.prototype.getPopupMenuEntries = function(_element) {
168951
-
168952
- /**
168953
- * @param { PopupMenuEntries } existingEntries
168954
- *
168955
- * @return { PopupMenuEntries }
168956
- */
168957
- return (existingEntries) => {
168958
-
168959
- return Object.entries(existingEntries).reduce((entries, [ name, entry ]) => {
168960
-
168961
- entries[name] = this._annotateEntry(name, entry);
168962
-
168963
- return entries;
168964
- }, { });
168965
- };
168966
-
168967
- };
168968
-
168969
- CamundaDetailsPopupMenuProvider.prototype._annotateEntry = function(name, entry) {
168970
-
168971
- const annotation = ANNOTATIONS_KEYED[name];
168972
-
168973
- if (annotation) {
168974
- return {
168975
- ...entry,
168976
- search: entry.search ? `${ entry.search } ${ annotation.search }` : annotation.search
168977
- };
168978
- }
168979
-
168980
- return entry;
170361
+ /**
170362
+ * @typedef { import('diagram-js/lib/features/popup-menu/PopupMenu').default } PopupMenu
170363
+ * @typedef { import('diagram-js/lib/model').Element } Element
170364
+ * @typedef { import('diagram-js/lib/features/popup-menu/PopupMenuProvider').PopupMenuEntries } PopupMenuEntries
170365
+ */
170366
+
170367
+
170368
+ const LOW_PRIORITY = 250;
170369
+
170370
+ const ANNOTATIONS = [
170371
+ {
170372
+ entries: [
170373
+ 'replace-with-call-activity',
170374
+ 'append-call-activity',
170375
+ 'create-call-activity'
170376
+ ],
170377
+ search: 'child process'
170378
+ },
170379
+ {
170380
+ entries: [
170381
+ 'replace-with-receive-task',
170382
+ 'append-receive-task',
170383
+ 'create-receive-task'
170384
+ ],
170385
+ search: 'message'
170386
+ },
170387
+ {
170388
+ entries: [
170389
+ 'replace-with-rule-task',
170390
+ 'append-rule-task',
170391
+ 'create-rule-task'
170392
+ ],
170393
+ search: 'dmn decision'
170394
+ },
170395
+ {
170396
+ entries: [
170397
+ 'replace-with-service-task',
170398
+ 'append-service-task',
170399
+ 'create-service-task',
170400
+ ],
170401
+ search: [ 'job worker', 'job worker' ] // double mention to increase ranking in search result
170402
+ },
170403
+ {
170404
+ entries: [
170405
+ 'replace-with-script-task',
170406
+ 'append-script-task',
170407
+ 'create-script-task',
170408
+ 'replace-with-send-task',
170409
+ 'append-send-task',
170410
+ 'create-send-task',
170411
+ 'replace-with-message-intermediate-throw',
170412
+ 'append-message-intermediate-throw',
170413
+ 'create-message-intermediate-throw',
170414
+ 'replace-with-message-end',
170415
+ 'append-message-end',
170416
+ 'create-message-end'
170417
+ ],
170418
+ search: 'job worker'
170419
+ },
170420
+ {
170421
+ entries: [
170422
+ 'replace-with-user-task',
170423
+ 'append-user-task',
170424
+ 'create-user-task'
170425
+ ],
170426
+ search: 'form human'
170427
+ }
170428
+ ];
170429
+
170430
+ const ANNOTATIONS_KEYED = reduce(ANNOTATIONS, (annotationsKeyed, annotation) => {
170431
+
170432
+ const { entries, search } = annotation;
170433
+
170434
+ for (const entry of entries) {
170435
+ if (annotationsKeyed[entry]) {
170436
+ annotationsKeyed[entry].search += ' ' + search;
170437
+ } else {
170438
+ annotationsKeyed[entry] = { search };
170439
+ }
170440
+ }
170441
+
170442
+ return annotationsKeyed;
170443
+ }, {});
170444
+
170445
+
170446
+ /**
170447
+ * @param { PopupMenu } popupMenu
170448
+ *
170449
+ * @implements PopupMenuProvider
170450
+ */
170451
+ function CamundaDetailsPopupMenuProvider(popupMenu) {
170452
+
170453
+ this._popupMenu = popupMenu;
170454
+
170455
+ this.register();
170456
+ }
170457
+
170458
+ CamundaDetailsPopupMenuProvider.$inject = [ 'popupMenu' ];
170459
+
170460
+
170461
+ /**
170462
+ * Register create menu provider in the popup menu
170463
+ */
170464
+ CamundaDetailsPopupMenuProvider.prototype.register = function() {
170465
+
170466
+ // plug-into create-append-anything <create> menu
170467
+ this._popupMenu.registerProvider('bpmn-create', LOW_PRIORITY, this);
170468
+
170469
+ // plug-into create-append-anything <append> menu
170470
+ this._popupMenu.registerProvider('bpmn-append', LOW_PRIORITY, this);
170471
+
170472
+ // plug-into <replace> menu
170473
+ this._popupMenu.registerProvider('bpmn-replace', LOW_PRIORITY, this);
170474
+ };
170475
+
170476
+
170477
+ /**
170478
+ * Returns the create options as menu entries
170479
+ *
170480
+ * @param { Element } _element
170481
+ */
170482
+ CamundaDetailsPopupMenuProvider.prototype.getPopupMenuEntries = function(_element) {
170483
+
170484
+ /**
170485
+ * @param { PopupMenuEntries } existingEntries
170486
+ *
170487
+ * @return { PopupMenuEntries }
170488
+ */
170489
+ return (existingEntries) => {
170490
+
170491
+ return Object.entries(existingEntries).reduce((entries, [ name, entry ]) => {
170492
+
170493
+ entries[name] = this._annotateEntry(name, entry);
170494
+
170495
+ return entries;
170496
+ }, { });
170497
+ };
170498
+
170499
+ };
170500
+
170501
+ CamundaDetailsPopupMenuProvider.prototype._annotateEntry = function(name, entry) {
170502
+
170503
+ const annotation = ANNOTATIONS_KEYED[name];
170504
+
170505
+ if (annotation) {
170506
+ return {
170507
+ ...entry,
170508
+ search: entry.search ? `${ entry.search } ${ annotation.search }` : annotation.search
170509
+ };
170510
+ }
170511
+
170512
+ return entry;
168981
170513
  };
168982
170514
 
168983
170515
  var camundaDetailsPopupMenuModule = {