@uniformdev/canvas 19.178.2-alpha.25 → 19.179.2-alpha.22

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -281,6 +281,7 @@ __export(src_exports, {
281
281
  ATTRIBUTE_PLACEHOLDER: () => ATTRIBUTE_PLACEHOLDER,
282
282
  ApiClientError: () => import_api15.ApiClientError,
283
283
  BatchEntry: () => BatchEntry,
284
+ BlockFormatError: () => BlockFormatError,
284
285
  CANVAS_BLOCK_PARAM_TYPE: () => CANVAS_BLOCK_PARAM_TYPE,
285
286
  CANVAS_DRAFT_STATE: () => CANVAS_DRAFT_STATE,
286
287
  CANVAS_EDITOR_STATE: () => CANVAS_EDITOR_STATE,
@@ -300,6 +301,7 @@ __export(src_exports, {
300
301
  CANVAS_TEST_VARIANT_PARAM: () => CANVAS_TEST_VARIANT_PARAM,
301
302
  CANVAS_VIZ_CONTROL_PARAM: () => CANVAS_VIZ_CONTROL_PARAM,
302
303
  CANVAS_VIZ_DI_RULE: () => CANVAS_VIZ_DI_RULE,
304
+ CANVAS_VIZ_DYNAMIC_TOKEN_RULE: () => CANVAS_VIZ_DYNAMIC_TOKEN_RULE,
303
305
  CANVAS_VIZ_LOCALE_RULE: () => CANVAS_VIZ_LOCALE_RULE,
304
306
  CANVAS_VIZ_QUIRKS_RULE: () => CANVAS_VIZ_QUIRKS_RULE,
305
307
  CanvasClient: () => CanvasClient,
@@ -345,6 +347,7 @@ __export(src_exports, {
345
347
  createBatchEnhancer: () => createBatchEnhancer,
346
348
  createCanvasChannel: () => createCanvasChannel,
347
349
  createDynamicInputVisibilityRule: () => createDynamicInputVisibilityRule,
350
+ createDynamicTokenVisibilityRule: () => createDynamicTokenVisibilityRule,
348
351
  createEventBus: () => createEventBus,
349
352
  createLimitPolicy: () => createLimitPolicy,
350
353
  createLocaleVisibilityRule: () => createLocaleVisibilityRule,
@@ -353,8 +356,10 @@ __export(src_exports, {
353
356
  createVariableReference: () => createVariableReference,
354
357
  enhance: () => enhance,
355
358
  evaluateNodeVisibilityParameter: () => evaluateNodeVisibilityParameter,
359
+ evaluatePropertyCriteria: () => evaluatePropertyCriteria,
356
360
  evaluateVisibilityCriteriaGroup: () => evaluateVisibilityCriteriaGroup,
357
- evaluateWalkTreeVisibility: () => evaluateWalkTreeVisibility,
361
+ evaluateWalkTreeNodeVisibility: () => evaluateWalkTreeNodeVisibility,
362
+ evaluateWalkTreePropertyCriteria: () => evaluateWalkTreePropertyCriteria,
358
363
  extractLocales: () => extractLocales,
359
364
  findParameterInNodeTree: () => findParameterInNodeTree,
360
365
  flattenValues: () => flattenValues,
@@ -370,6 +375,7 @@ __export(src_exports, {
370
375
  getParameterAttributes: () => getParameterAttributes,
371
376
  getPropertiesValue: () => getPropertiesValue,
372
377
  getPropertyValue: () => getPropertyValue,
378
+ hasReferencedVariables: () => hasReferencedVariables,
373
379
  isAddComponentMessage: () => isAddComponentMessage,
374
380
  isAllowedReferrer: () => isAllowedReferrer,
375
381
  isAssetParamValue: () => isAssetParamValue,
@@ -611,14 +617,17 @@ var nullLimitPolicy = async (func) => await func();
611
617
  // src/utils/rewriteFilters.ts
612
618
  var isPlainObject = (obj) => typeof obj === "object" && obj !== null && !Array.isArray(obj);
613
619
  function rewriteFilters(filters) {
614
- return Object.entries(filters != null ? filters : {}).reduce((acc, [key, value]) => {
615
- const lhs = `filters.${key}` + (isPlainObject(value) ? `[${Object.keys(value)[0]}]` : "");
616
- const rhs = isPlainObject(value) ? Object.values(value)[0] : value;
617
- return {
618
- ...acc,
619
- [lhs]: Array.isArray(rhs) ? rhs.map((v) => `${v}`.trim()).join(",") : `${rhs}`.trim()
620
- };
621
- }, {});
620
+ return Object.entries(filters != null ? filters : {}).reduce(
621
+ (acc, [key, value]) => {
622
+ const lhs = `filters.${key}` + (isPlainObject(value) ? `[${Object.keys(value)[0]}]` : "");
623
+ const rhs = isPlainObject(value) ? Object.values(value)[0] : value;
624
+ return {
625
+ ...acc,
626
+ [lhs]: Array.isArray(rhs) ? rhs.map((v) => `${v}`.trim()).join(",") : `${rhs}`.trim()
627
+ };
628
+ },
629
+ {}
630
+ );
622
631
  }
623
632
 
624
633
  // src/CanvasClient.ts
@@ -1403,7 +1412,16 @@ function walkNodeTree(node, visitor, options) {
1403
1412
  const propertyEntries = Object.entries(properties);
1404
1413
  for (let propIndex = propertyEntries.length - 1; propIndex >= 0; propIndex--) {
1405
1414
  const [propKey, propObject] = propertyEntries[propIndex];
1406
- if (!isNestedNodeType(propObject.type)) continue;
1415
+ if (!isNestedNodeType(propObject.type)) {
1416
+ continue;
1417
+ }
1418
+ if (!Array.isArray(propObject.value)) {
1419
+ throw new BlockFormatError(
1420
+ `${getComponentPath(currentQueueEntry.ancestorsAndSelf)}`,
1421
+ propKey,
1422
+ propObject.value
1423
+ );
1424
+ }
1407
1425
  const blocks = (_b = propObject.value) != null ? _b : [];
1408
1426
  for (let blockIndex = blocks.length - 1; blockIndex >= 0; blockIndex--) {
1409
1427
  const enqueueingBlock = blocks[blockIndex];
@@ -1439,6 +1457,17 @@ function getBlockValue(component, parameterName) {
1439
1457
  }
1440
1458
  return [];
1441
1459
  }
1460
+ var BlockFormatError = class _BlockFormatError extends Error {
1461
+ constructor(componentPath, propertyId, blockValue) {
1462
+ super(
1463
+ `${componentPath} has an invalid block property value on ${propertyId}. Block values must be arrays of blocks (BlockValue type), but received ${typeof blockValue}`
1464
+ );
1465
+ this.componentPath = componentPath;
1466
+ this.propertyId = propertyId;
1467
+ this.blockValue = blockValue;
1468
+ Object.setPrototypeOf(this, _BlockFormatError.prototype);
1469
+ }
1470
+ };
1442
1471
 
1443
1472
  // src/enhancement/enhance.ts
1444
1473
  async function enhance({
@@ -1748,6 +1777,86 @@ function findParameterInNodeTree(data, predicate) {
1748
1777
  return results;
1749
1778
  }
1750
1779
 
1780
+ // src/utils/variables/parseVariableExpression.ts
1781
+ var escapeCharacter = "\\";
1782
+ var variablePrefix = "${";
1783
+ var variableSuffix = "}";
1784
+ function parseVariableExpression(serialized, onToken) {
1785
+ let bufferStartIndex = 0;
1786
+ let bufferEndIndex = 0;
1787
+ let tokenCount = 0;
1788
+ const handleToken = (token, type) => {
1789
+ tokenCount++;
1790
+ return onToken == null ? void 0 : onToken(token, type);
1791
+ };
1792
+ let state = "text";
1793
+ for (let index = 0; index < serialized.length; index++) {
1794
+ const char = serialized[index];
1795
+ if (bufferStartIndex > bufferEndIndex) {
1796
+ bufferEndIndex = bufferStartIndex;
1797
+ }
1798
+ if (char === variablePrefix[0] && serialized[index + 1] === variablePrefix[1]) {
1799
+ if (serialized[index - 1] === escapeCharacter) {
1800
+ bufferEndIndex -= escapeCharacter.length;
1801
+ if (handleToken(serialized.substring(bufferStartIndex, bufferEndIndex), "text") === false) {
1802
+ return tokenCount;
1803
+ }
1804
+ bufferStartIndex = index;
1805
+ bufferEndIndex = index + 1;
1806
+ continue;
1807
+ }
1808
+ state = "variable";
1809
+ if (bufferEndIndex > bufferStartIndex) {
1810
+ if (handleToken(serialized.substring(bufferStartIndex, bufferEndIndex), "text") === false) {
1811
+ return tokenCount;
1812
+ }
1813
+ bufferStartIndex = bufferEndIndex;
1814
+ }
1815
+ index += variablePrefix.length - 1;
1816
+ bufferStartIndex += variablePrefix.length;
1817
+ continue;
1818
+ }
1819
+ if (char === variableSuffix && state === "variable") {
1820
+ if (serialized[index - 1] === escapeCharacter) {
1821
+ bufferEndIndex++;
1822
+ continue;
1823
+ }
1824
+ state = "text";
1825
+ if (bufferEndIndex > bufferStartIndex) {
1826
+ const unescapedVariableName = serialized.substring(bufferStartIndex, bufferEndIndex).replace(/\\([${}])/g, "$1");
1827
+ if (handleToken(unescapedVariableName, "variable") === false) {
1828
+ return tokenCount;
1829
+ }
1830
+ bufferStartIndex = bufferEndIndex + variableSuffix.length;
1831
+ }
1832
+ continue;
1833
+ }
1834
+ bufferEndIndex++;
1835
+ }
1836
+ if (bufferEndIndex > bufferStartIndex) {
1837
+ if (state === "variable") {
1838
+ state = "text";
1839
+ bufferStartIndex -= variablePrefix.length;
1840
+ }
1841
+ handleToken(serialized.substring(bufferStartIndex), state);
1842
+ }
1843
+ return tokenCount;
1844
+ }
1845
+
1846
+ // src/utils/variables/hasReferencedVariables.ts
1847
+ function hasReferencedVariables(value) {
1848
+ if (value === void 0) {
1849
+ return 0;
1850
+ }
1851
+ let variableTokenCount = 0;
1852
+ parseVariableExpression(value, (_, tokenType) => {
1853
+ if (tokenType === "variable") {
1854
+ variableTokenCount++;
1855
+ }
1856
+ });
1857
+ return variableTokenCount;
1858
+ }
1859
+
1751
1860
  // src/enhancement/visibility/evaluateVisibilityCriteriaGroup.ts
1752
1861
  function evaluateVisibilityCriteriaGroup(options) {
1753
1862
  const { criteriaGroup, simplifyCriteria } = options;
@@ -1767,12 +1876,18 @@ function evaluateVisibilityCriteriaGroup(options) {
1767
1876
  return hasIndeterminateClauses ? null : !earlyExitResult;
1768
1877
  }
1769
1878
  function evaluateCriterion(clause, rootOptions) {
1879
+ var _a;
1770
1880
  if ("clauses" in clause) {
1771
1881
  return evaluateVisibilityCriteriaGroup({
1772
1882
  ...rootOptions,
1773
1883
  criteriaGroup: clause
1774
1884
  });
1775
1885
  }
1886
+ const lhs = (_a = clause.source) != null ? _a : clause.rule;
1887
+ const rhs = Array.isArray(clause.value) ? clause.value : clause.value !== void 0 ? [clause.value] : void 0;
1888
+ if (hasReferencedVariables(lhs) > 0 || (rhs == null ? void 0 : rhs.some((rhv) => hasReferencedVariables(rhv) > 0))) {
1889
+ return null;
1890
+ }
1776
1891
  const rule = rootOptions.rules[clause.rule];
1777
1892
  if (rule) {
1778
1893
  return rule(clause);
@@ -1798,6 +1913,59 @@ function evaluateNodeVisibilityParameter({
1798
1913
  return result;
1799
1914
  }
1800
1915
 
1916
+ // src/enhancement/visibility/evaluatePropertyCriteria.ts
1917
+ function evaluatePropertyCriteria({
1918
+ baseValue,
1919
+ conditionalValues,
1920
+ keepIndeterminate,
1921
+ ...evaluateGroupOptions
1922
+ }) {
1923
+ let authoritative = true;
1924
+ const result = {
1925
+ currentValue: baseValue,
1926
+ remainingConditionalValues: evaluateGroupOptions.simplifyCriteria && conditionalValues ? [...conditionalValues] : conditionalValues,
1927
+ currentConditionIndex: -1
1928
+ };
1929
+ if (!conditionalValues) {
1930
+ return result;
1931
+ }
1932
+ const conditionIndexesToRemove = [];
1933
+ for (let i = 0; i < conditionalValues.length; i++) {
1934
+ const conditionalVariant = conditionalValues[i];
1935
+ if (result.matched) {
1936
+ conditionIndexesToRemove.push(i);
1937
+ continue;
1938
+ }
1939
+ const evaluationResult = evaluateVisibilityCriteriaGroup({
1940
+ ...evaluateGroupOptions,
1941
+ criteriaGroup: conditionalVariant.when
1942
+ });
1943
+ if (evaluationResult === null) {
1944
+ if (keepIndeterminate) {
1945
+ authoritative = false;
1946
+ } else {
1947
+ conditionIndexesToRemove.push(i);
1948
+ }
1949
+ } else if (evaluationResult === true) {
1950
+ result.matched = conditionalVariant;
1951
+ result.currentValue = conditionalVariant.value;
1952
+ result.currentConditionIndex = i;
1953
+ conditionIndexesToRemove.push(i);
1954
+ } else {
1955
+ conditionIndexesToRemove.push(i);
1956
+ }
1957
+ }
1958
+ if (evaluateGroupOptions.simplifyCriteria) {
1959
+ for (let i = conditionIndexesToRemove.length - 1; i >= 0; i--) {
1960
+ result.remainingConditionalValues.splice(conditionIndexesToRemove[i], 1);
1961
+ }
1962
+ }
1963
+ if (authoritative) {
1964
+ result.remainingConditionalValues = void 0;
1965
+ }
1966
+ return result;
1967
+ }
1968
+
1801
1969
  // src/enhancement/visibility/types.ts
1802
1970
  var CANVAS_VIZ_CONTROL_PARAM = "$viz";
1803
1971
 
@@ -1819,8 +1987,8 @@ function evaluateNodeVisibility({
1819
1987
  return result;
1820
1988
  }
1821
1989
 
1822
- // src/enhancement/visibility/evaluateWalkTreeVisibility.ts
1823
- function evaluateWalkTreeVisibility({
1990
+ // src/enhancement/visibility/evaluateWalkTreeNodeVisibility.ts
1991
+ function evaluateWalkTreeNodeVisibility({
1824
1992
  rules,
1825
1993
  showIndeterminate,
1826
1994
  context
@@ -1837,6 +2005,69 @@ function evaluateWalkTreeVisibility({
1837
2005
  return true;
1838
2006
  }
1839
2007
 
2008
+ // src/enhancement/visibility/evaluateWalkTreePropertyCriteria.ts
2009
+ function evaluateWalkTreePropertyCriteria({
2010
+ rules,
2011
+ node,
2012
+ keepIndeterminate
2013
+ }) {
2014
+ const properties = getPropertiesValue(node);
2015
+ if (!properties) {
2016
+ return;
2017
+ }
2018
+ Object.entries(properties).forEach(([propertyName, property]) => {
2019
+ var _a, _b, _c;
2020
+ if (property.locales || property.localesConditions) {
2021
+ const localesDefined = [
2022
+ ...Object.keys((_a = property.locales) != null ? _a : {}),
2023
+ ...Object.keys((_b = property.localesConditions) != null ? _b : {})
2024
+ ];
2025
+ localesDefined.forEach((locale) => {
2026
+ var _a2, _b2, _c2, _d, _e, _f, _g;
2027
+ const { currentValue, remainingConditionalValues } = evaluatePropertyCriteria({
2028
+ baseValue: (_a2 = property.locales) == null ? void 0 : _a2[locale],
2029
+ conditionalValues: (_b2 = property.localesConditions) == null ? void 0 : _b2[locale],
2030
+ rules,
2031
+ simplifyCriteria: true,
2032
+ keepIndeterminate
2033
+ });
2034
+ if (currentValue === null) {
2035
+ (_c2 = property.locales) == null ? true : delete _c2[locale];
2036
+ if (!Object.keys((_d = property.locales) != null ? _d : {}).length) {
2037
+ delete properties[propertyName];
2038
+ }
2039
+ } else {
2040
+ (_e = property.locales) != null ? _e : property.locales = {};
2041
+ property.locales[locale] = currentValue;
2042
+ }
2043
+ if (!(remainingConditionalValues == null ? void 0 : remainingConditionalValues.length)) {
2044
+ (_f = property.localesConditions) == null ? true : delete _f[locale];
2045
+ } else {
2046
+ (_g = property.localesConditions) != null ? _g : property.localesConditions = {};
2047
+ property.localesConditions[locale] = remainingConditionalValues;
2048
+ }
2049
+ });
2050
+ if (!Object.keys((_c = property.localesConditions) != null ? _c : {}).length) {
2051
+ delete property.localesConditions;
2052
+ }
2053
+ } else {
2054
+ const { currentValue, remainingConditionalValues } = evaluatePropertyCriteria({
2055
+ baseValue: property.value,
2056
+ conditionalValues: property.conditions,
2057
+ rules,
2058
+ simplifyCriteria: true,
2059
+ keepIndeterminate
2060
+ });
2061
+ if (currentValue === null) {
2062
+ delete properties[propertyName];
2063
+ } else {
2064
+ property.value = currentValue;
2065
+ }
2066
+ property.conditions = remainingConditionalValues;
2067
+ }
2068
+ });
2069
+ }
2070
+
1840
2071
  // src/enhancement/visibility/rules/evaluateStringMatch.ts
1841
2072
  var isEvaluator = (criteria, matchValue) => {
1842
2073
  if (Array.isArray(criteria)) {
@@ -1914,6 +2145,32 @@ function createDynamicInputVisibilityRule(dynamicInputs) {
1914
2145
  };
1915
2146
  }
1916
2147
 
2148
+ // src/enhancement/visibility/rules/createDynamicTokenVisibilityRule.ts
2149
+ var dynamicTokenVisibilityOperators = /* @__PURE__ */ new Set([
2150
+ "is",
2151
+ "!is",
2152
+ "has",
2153
+ "!has",
2154
+ "startswith",
2155
+ "!startswith",
2156
+ "endswith",
2157
+ "!endswith",
2158
+ "empty",
2159
+ "!empty"
2160
+ ]);
2161
+ var CANVAS_VIZ_DYNAMIC_TOKEN_RULE = "$dt";
2162
+ function createDynamicTokenVisibilityRule() {
2163
+ return {
2164
+ [CANVAS_VIZ_DYNAMIC_TOKEN_RULE]: (criterion) => {
2165
+ var _a;
2166
+ if (hasReferencedVariables(criterion.source)) {
2167
+ return null;
2168
+ }
2169
+ return evaluateStringMatch(criterion, (_a = criterion.source) != null ? _a : "", dynamicTokenVisibilityOperators);
2170
+ }
2171
+ };
2172
+ }
2173
+
1917
2174
  // src/enhancement/visibility/rules/createLocaleVisibilityRule.ts
1918
2175
  var localeVisibilityOperators = /* @__PURE__ */ new Set(["is", "!is"]);
1919
2176
  var CANVAS_VIZ_LOCALE_RULE = "$locale";
@@ -1981,7 +2238,7 @@ function localize(options) {
1981
2238
  return;
1982
2239
  }
1983
2240
  if (isUsingModernOptions) {
1984
- const result = evaluateWalkTreeVisibility({
2241
+ const result = evaluateWalkTreeNodeVisibility({
1985
2242
  context,
1986
2243
  rules: vizControlLocaleRule,
1987
2244
  showIndeterminate: true
@@ -1989,6 +2246,11 @@ function localize(options) {
1989
2246
  if (!result) {
1990
2247
  return;
1991
2248
  }
2249
+ evaluateWalkTreePropertyCriteria({
2250
+ node: context.node,
2251
+ rules: vizControlLocaleRule,
2252
+ keepIndeterminate: true
2253
+ });
1992
2254
  }
1993
2255
  if (node.type === CANVAS_LOCALIZATION_TYPE) {
1994
2256
  const locales = extractLocales({ component: node });
@@ -2055,13 +2317,16 @@ function localizeProperties(properties, locale) {
2055
2317
  // src/enhancement/UniqueBatchEntries.ts
2056
2318
  var UniqueBatchEntries = class {
2057
2319
  constructor(entries, uniqueKeySelector) {
2058
- this.groups = entries.reduce((acc, task) => {
2059
- var _a;
2060
- const key = uniqueKeySelector(task.args);
2061
- acc[key] = (_a = acc[key]) != null ? _a : [];
2062
- acc[key].push(task);
2063
- return acc;
2064
- }, {});
2320
+ this.groups = entries.reduce(
2321
+ (acc, task) => {
2322
+ var _a;
2323
+ const key = uniqueKeySelector(task.args);
2324
+ acc[key] = (_a = acc[key]) != null ? _a : [];
2325
+ acc[key].push(task);
2326
+ return acc;
2327
+ },
2328
+ {}
2329
+ );
2065
2330
  }
2066
2331
  /** Resolves all entries in a group key with the same result value. */
2067
2332
  resolveKey(key, result) {
@@ -2935,72 +3200,6 @@ var parseComponentPlaceholderId = (id) => {
2935
3200
  return result;
2936
3201
  };
2937
3202
 
2938
- // src/utils/variables/parseVariableExpression.ts
2939
- var escapeCharacter = "\\";
2940
- var variablePrefix = "${";
2941
- var variableSuffix = "}";
2942
- function parseVariableExpression(serialized, onToken) {
2943
- let bufferStartIndex = 0;
2944
- let bufferEndIndex = 0;
2945
- let tokenCount = 0;
2946
- const handleToken = (token, type) => {
2947
- tokenCount++;
2948
- return onToken == null ? void 0 : onToken(token, type);
2949
- };
2950
- let state = "text";
2951
- for (let index = 0; index < serialized.length; index++) {
2952
- const char = serialized[index];
2953
- if (bufferStartIndex > bufferEndIndex) {
2954
- bufferEndIndex = bufferStartIndex;
2955
- }
2956
- if (char === variablePrefix[0] && serialized[index + 1] === variablePrefix[1]) {
2957
- if (serialized[index - 1] === escapeCharacter) {
2958
- bufferEndIndex -= escapeCharacter.length;
2959
- if (handleToken(serialized.substring(bufferStartIndex, bufferEndIndex), "text") === false) {
2960
- return tokenCount;
2961
- }
2962
- bufferStartIndex = index;
2963
- bufferEndIndex = index + 1;
2964
- continue;
2965
- }
2966
- state = "variable";
2967
- if (bufferEndIndex > bufferStartIndex) {
2968
- if (handleToken(serialized.substring(bufferStartIndex, bufferEndIndex), "text") === false) {
2969
- return tokenCount;
2970
- }
2971
- bufferStartIndex = bufferEndIndex;
2972
- }
2973
- index += variablePrefix.length - 1;
2974
- bufferStartIndex += variablePrefix.length;
2975
- continue;
2976
- }
2977
- if (char === variableSuffix && state === "variable") {
2978
- if (serialized[index - 1] === escapeCharacter) {
2979
- bufferEndIndex++;
2980
- continue;
2981
- }
2982
- state = "text";
2983
- if (bufferEndIndex > bufferStartIndex) {
2984
- const unescapedVariableName = serialized.substring(bufferStartIndex, bufferEndIndex).replace(/\\([${}])/g, "$1");
2985
- if (handleToken(unescapedVariableName, "variable") === false) {
2986
- return tokenCount;
2987
- }
2988
- bufferStartIndex = bufferEndIndex + variableSuffix.length;
2989
- }
2990
- continue;
2991
- }
2992
- bufferEndIndex++;
2993
- }
2994
- if (bufferEndIndex > bufferStartIndex) {
2995
- if (state === "variable") {
2996
- state = "text";
2997
- bufferStartIndex -= variablePrefix.length;
2998
- }
2999
- handleToken(serialized.substring(bufferStartIndex), state);
3000
- }
3001
- return tokenCount;
3002
- }
3003
-
3004
3203
  // src/utils/variables/bindVariables.ts
3005
3204
  function bindVariables({
3006
3205
  variables,
@@ -3066,11 +3265,7 @@ function bindVariablesToObjectRecursive({
3066
3265
  if (richTextNodeResult !== void 0) {
3067
3266
  return richTextNodeResult;
3068
3267
  }
3069
- const produceToUse = !(0, import_immer.isDraft)(value) ? import_immer.produce : (produceValue, producer) => {
3070
- producer(produceValue);
3071
- return produceValue;
3072
- };
3073
- const result = produceToUse(value, (draft) => {
3268
+ const result = (0, import_immer.produce)(value, (draft) => {
3074
3269
  Object.entries(draft).forEach(([property, oldValue]) => {
3075
3270
  const currentObjectPath = recursivePath ? `${recursivePath}.${property}` : property;
3076
3271
  if (typeof oldValue === "string") {
@@ -3177,6 +3372,7 @@ var CanvasClientError = import_api15.ApiClientError;
3177
3372
  ATTRIBUTE_PLACEHOLDER,
3178
3373
  ApiClientError,
3179
3374
  BatchEntry,
3375
+ BlockFormatError,
3180
3376
  CANVAS_BLOCK_PARAM_TYPE,
3181
3377
  CANVAS_DRAFT_STATE,
3182
3378
  CANVAS_EDITOR_STATE,
@@ -3196,6 +3392,7 @@ var CanvasClientError = import_api15.ApiClientError;
3196
3392
  CANVAS_TEST_VARIANT_PARAM,
3197
3393
  CANVAS_VIZ_CONTROL_PARAM,
3198
3394
  CANVAS_VIZ_DI_RULE,
3395
+ CANVAS_VIZ_DYNAMIC_TOKEN_RULE,
3199
3396
  CANVAS_VIZ_LOCALE_RULE,
3200
3397
  CANVAS_VIZ_QUIRKS_RULE,
3201
3398
  CanvasClient,
@@ -3241,6 +3438,7 @@ var CanvasClientError = import_api15.ApiClientError;
3241
3438
  createBatchEnhancer,
3242
3439
  createCanvasChannel,
3243
3440
  createDynamicInputVisibilityRule,
3441
+ createDynamicTokenVisibilityRule,
3244
3442
  createEventBus,
3245
3443
  createLimitPolicy,
3246
3444
  createLocaleVisibilityRule,
@@ -3249,8 +3447,10 @@ var CanvasClientError = import_api15.ApiClientError;
3249
3447
  createVariableReference,
3250
3448
  enhance,
3251
3449
  evaluateNodeVisibilityParameter,
3450
+ evaluatePropertyCriteria,
3252
3451
  evaluateVisibilityCriteriaGroup,
3253
- evaluateWalkTreeVisibility,
3452
+ evaluateWalkTreeNodeVisibility,
3453
+ evaluateWalkTreePropertyCriteria,
3254
3454
  extractLocales,
3255
3455
  findParameterInNodeTree,
3256
3456
  flattenValues,
@@ -3266,6 +3466,7 @@ var CanvasClientError = import_api15.ApiClientError;
3266
3466
  getParameterAttributes,
3267
3467
  getPropertiesValue,
3268
3468
  getPropertyValue,
3469
+ hasReferencedVariables,
3269
3470
  isAddComponentMessage,
3270
3471
  isAllowedReferrer,
3271
3472
  isAssetParamValue,