@uniformdev/canvas 19.38.2 → 19.38.3-alpha.78

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
@@ -283,9 +283,10 @@ __export(src_exports, {
283
283
  ATTRIBUTE_PARAMETER_TYPE: () => ATTRIBUTE_PARAMETER_TYPE,
284
284
  ATTRIBUTE_PARAMETER_VALUE: () => ATTRIBUTE_PARAMETER_VALUE,
285
285
  ATTRIBUTE_PLACEHOLDER: () => ATTRIBUTE_PLACEHOLDER,
286
- ApiClientError: () => import_api8.ApiClientError,
286
+ ApiClientError: () => import_api9.ApiClientError,
287
287
  BatchEntry: () => BatchEntry,
288
288
  CANVAS_DRAFT_STATE: () => CANVAS_DRAFT_STATE,
289
+ CANVAS_EDITOR_STATE: () => CANVAS_EDITOR_STATE,
289
290
  CANVAS_ENRICHMENT_TAG_PARAM: () => CANVAS_ENRICHMENT_TAG_PARAM,
290
291
  CANVAS_INTENT_TAG_PARAM: () => CANVAS_INTENT_TAG_PARAM,
291
292
  CANVAS_LOCALE_TAG_PARAM: () => CANVAS_LOCALE_TAG_PARAM,
@@ -302,6 +303,7 @@ __export(src_exports, {
302
303
  CanvasClientError: () => CanvasClientError,
303
304
  CategoryClient: () => CategoryClient,
304
305
  ChildEnhancerBuilder: () => ChildEnhancerBuilder,
306
+ ContentClient: () => ContentClient,
305
307
  DataSourceClient: () => DataSourceClient,
306
308
  DataTypeClient: () => DataTypeClient,
307
309
  EDGE_CACHE_DISABLED: () => EDGE_CACHE_DISABLED,
@@ -315,13 +317,16 @@ __export(src_exports, {
315
317
  EnhancerBuilder: () => EnhancerBuilder,
316
318
  IN_CONTEXT_EDITOR_COMPONENT_END_ROLE: () => IN_CONTEXT_EDITOR_COMPONENT_END_ROLE,
317
319
  IN_CONTEXT_EDITOR_COMPONENT_START_ROLE: () => IN_CONTEXT_EDITOR_COMPONENT_START_ROLE,
320
+ IN_CONTEXT_EDITOR_CONFIG_CHECK_QUERY_STRING_PARAM: () => IN_CONTEXT_EDITOR_CONFIG_CHECK_QUERY_STRING_PARAM,
318
321
  IN_CONTEXT_EDITOR_EMBED_SCRIPT_ID: () => IN_CONTEXT_EDITOR_EMBED_SCRIPT_ID,
322
+ IN_CONTEXT_EDITOR_PLAYGROUND_QUERY_STRING_PARAM: () => IN_CONTEXT_EDITOR_PLAYGROUND_QUERY_STRING_PARAM,
319
323
  IN_CONTEXT_EDITOR_QUERY_STRING_PARAM: () => IN_CONTEXT_EDITOR_QUERY_STRING_PARAM,
320
324
  IS_RENDERED_BY_UNIFORM_ATTRIBUTE: () => IS_RENDERED_BY_UNIFORM_ATTRIBUTE,
321
325
  PLACEHOLDER_ID: () => PLACEHOLDER_ID,
322
326
  RouteClient: () => RouteClient,
323
327
  UncachedCanvasClient: () => UncachedCanvasClient,
324
328
  UncachedCategoryClient: () => UncachedCategoryClient,
329
+ UncachedContentClient: () => UncachedContentClient,
325
330
  UniqueBatchEntries: () => UniqueBatchEntries,
326
331
  bindVariables: () => bindVariables,
327
332
  bindVariablesToObject: () => bindVariablesToObject,
@@ -331,6 +336,7 @@ __export(src_exports, {
331
336
  createEventBus: () => createEventBus,
332
337
  createLimitPolicy: () => createLimitPolicy,
333
338
  createUniformApiEnhancer: () => createUniformApiEnhancer,
339
+ createVariableReference: () => createVariableReference,
334
340
  enhance: () => enhance,
335
341
  extractLocales: () => extractLocales,
336
342
  generateHash: () => generateHash,
@@ -356,6 +362,7 @@ __export(src_exports, {
356
362
  mapSlotToPersonalizedVariations: () => mapSlotToPersonalizedVariations,
357
363
  mapSlotToTestVariations: () => mapSlotToTestVariations,
358
364
  nullLimitPolicy: () => nullLimitPolicy,
365
+ parseVariableExpression: () => parseVariableExpression,
359
366
  subscribeToComposition: () => subscribeToComposition,
360
367
  unstable_CompositionRelationshipClient: () => unstable_CompositionRelationshipClient,
361
368
  walkComponentTree: () => walkComponentTree
@@ -773,11 +780,84 @@ var unstable_CompositionRelationshipClient = class extends import_api4.ApiClient
773
780
  }
774
781
  };
775
782
 
776
- // src/DataSourceClient.ts
783
+ // src/ContentClient.ts
777
784
  var import_api5 = require("@uniformdev/context/api");
785
+ var _contentTypesUrl, _entriesUrl;
786
+ var _ContentClient = class _ContentClient extends import_api5.ApiClient {
787
+ constructor(options) {
788
+ var _a;
789
+ super(options);
790
+ this.edgeApiHost = (_a = options.edgeApiHost) != null ? _a : "https://uniform.global";
791
+ }
792
+ getContentTypes(options) {
793
+ const { projectId } = this.options;
794
+ const fetchUri = this.createUrl(__privateGet(_ContentClient, _contentTypesUrl), { ...options, projectId });
795
+ return this.apiClient(fetchUri);
796
+ }
797
+ getEntries(options) {
798
+ const { projectId } = this.options;
799
+ const { skipDataResolution, ...params } = options;
800
+ const fetchUri = skipDataResolution ? this.createUrl(__privateGet(_ContentClient, _entriesUrl), { ...params, projectId }) : this.createUrl(__privateGet(_ContentClient, _entriesUrl), this.getEdgeOptions(params), this.edgeApiHost);
801
+ return this.apiClient(fetchUri);
802
+ }
803
+ async upsertContentType(body) {
804
+ const fetchUri = this.createUrl(__privateGet(_ContentClient, _contentTypesUrl));
805
+ await this.apiClient(fetchUri, {
806
+ method: "PUT",
807
+ body: JSON.stringify({ ...body, projectId: this.options.projectId }),
808
+ expectNoContent: true
809
+ });
810
+ }
811
+ async upsertEntry(body) {
812
+ const fetchUri = this.createUrl(__privateGet(_ContentClient, _entriesUrl));
813
+ await this.apiClient(fetchUri, {
814
+ method: "PUT",
815
+ body: JSON.stringify({ ...body, projectId: this.options.projectId }),
816
+ expectNoContent: true
817
+ });
818
+ }
819
+ async deleteContentType(body) {
820
+ const fetchUri = this.createUrl(__privateGet(_ContentClient, _contentTypesUrl));
821
+ await this.apiClient(fetchUri, {
822
+ method: "DELETE",
823
+ body: JSON.stringify({ ...body, projectId: this.options.projectId }),
824
+ expectNoContent: true
825
+ });
826
+ }
827
+ async deleteEntry(body) {
828
+ const fetchUri = this.createUrl(__privateGet(_ContentClient, _entriesUrl));
829
+ await this.apiClient(fetchUri, {
830
+ method: "DELETE",
831
+ body: JSON.stringify({ ...body, projectId: this.options.projectId }),
832
+ expectNoContent: true
833
+ });
834
+ }
835
+ getEdgeOptions(options) {
836
+ const { projectId } = this.options;
837
+ const { skipDataResolution, ...params } = options;
838
+ return {
839
+ projectId,
840
+ ...params,
841
+ diagnostics: (options == null ? void 0 : options.diagnostics) ? "true" : void 0
842
+ };
843
+ }
844
+ };
845
+ _contentTypesUrl = new WeakMap();
846
+ _entriesUrl = new WeakMap();
847
+ __privateAdd(_ContentClient, _contentTypesUrl, "/api/v1/content-types");
848
+ __privateAdd(_ContentClient, _entriesUrl, "/api/v1/entries");
849
+ var ContentClient = _ContentClient;
850
+ var UncachedContentClient = class extends ContentClient {
851
+ constructor(options) {
852
+ super({ ...options, bypassCache: true });
853
+ }
854
+ };
855
+
856
+ // src/DataSourceClient.ts
857
+ var import_api6 = require("@uniformdev/context/api");
778
858
  var dataSourceUrl = "/api/v1/data-source";
779
859
  var dataSourcesUrl = "/api/v1/data-sources";
780
- var DataSourceClient = class extends import_api5.ApiClient {
860
+ var DataSourceClient = class extends import_api6.ApiClient {
781
861
  constructor(options) {
782
862
  super(options);
783
863
  }
@@ -814,9 +894,9 @@ var DataSourceClient = class extends import_api5.ApiClient {
814
894
  };
815
895
 
816
896
  // src/DataTypeClient.ts
817
- var import_api6 = require("@uniformdev/context/api");
897
+ var import_api7 = require("@uniformdev/context/api");
818
898
  var _url;
819
- var _DataTypeClient = class _DataTypeClient extends import_api6.ApiClient {
899
+ var _DataTypeClient = class _DataTypeClient extends import_api7.ApiClient {
820
900
  constructor(options) {
821
901
  super(options);
822
902
  }
@@ -1339,10 +1419,13 @@ var CANVAS_TEST_SLOT = "test";
1339
1419
  var CANVAS_LOCALIZATION_SLOT = "localized";
1340
1420
  var CANVAS_DRAFT_STATE = 0;
1341
1421
  var CANVAS_PUBLISHED_STATE = 64;
1422
+ var CANVAS_EDITOR_STATE = 63;
1342
1423
  var CANVAS_PERSONALIZATION_PARAM = "$pzCrit";
1343
1424
  var CANVAS_TEST_VARIANT_PARAM = "$tstVrnt";
1344
1425
  var CANVAS_ENRICHMENT_TAG_PARAM = "$enr";
1345
1426
  var IN_CONTEXT_EDITOR_QUERY_STRING_PARAM = "is_incontext_editing_mode";
1427
+ var IN_CONTEXT_EDITOR_PLAYGROUND_QUERY_STRING_PARAM = "is_incontext_editing_playground";
1428
+ var IN_CONTEXT_EDITOR_CONFIG_CHECK_QUERY_STRING_PARAM = "is_config_check";
1346
1429
  var IN_CONTEXT_EDITOR_COMPONENT_START_ROLE = "uniform-component-start";
1347
1430
  var IN_CONTEXT_EDITOR_COMPONENT_END_ROLE = "uniform-component-end";
1348
1431
  var IN_CONTEXT_EDITOR_EMBED_SCRIPT_ID = "uniform-canvas-preview-script";
@@ -1609,6 +1692,12 @@ var createCanvasChannel = ({
1609
1692
  };
1610
1693
  postMessage(message);
1611
1694
  };
1695
+ const editorStateUpdated = () => {
1696
+ const message = {
1697
+ type: "editor-state-updated"
1698
+ };
1699
+ postMessage(message);
1700
+ };
1612
1701
  const messageEventListener = (event) => {
1613
1702
  if (typeof event.data !== "string") {
1614
1703
  return;
@@ -1650,7 +1739,8 @@ var createCanvasChannel = ({
1650
1739
  updatePreviewSettings,
1651
1740
  updateContextualEditingStateInternal,
1652
1741
  selectParameter,
1653
- reportRenderedCompositions
1742
+ reportRenderedCompositions,
1743
+ editorStateUpdated
1654
1744
  };
1655
1745
  };
1656
1746
 
@@ -1733,9 +1823,9 @@ function subscribeToComposition({
1733
1823
  }
1734
1824
 
1735
1825
  // src/RouteClient.ts
1736
- var import_api7 = require("@uniformdev/context/api");
1826
+ var import_api8 = require("@uniformdev/context/api");
1737
1827
  var ROUTE_URL = "/api/v1/route";
1738
- var RouteClient = class extends import_api7.ApiClient {
1828
+ var RouteClient = class extends import_api8.ApiClient {
1739
1829
  constructor(options) {
1740
1830
  var _a;
1741
1831
  if (!options.limitPolicy) {
@@ -1752,80 +1842,6 @@ var RouteClient = class extends import_api7.ApiClient {
1752
1842
  }
1753
1843
  };
1754
1844
 
1755
- // src/utils/bindVariables.ts
1756
- function bindVariables({
1757
- variables,
1758
- value,
1759
- errorPrefix = "Variable",
1760
- handleBinding
1761
- }) {
1762
- let boundCount = 0;
1763
- const errors = [];
1764
- const defaultHandleBinding = (variableName, variables2, errors2) => {
1765
- const variableValue = variables2[variableName];
1766
- if (variableValue === void 0) {
1767
- errors2.push(`${errorPrefix} "${variableName}" is not defined`);
1768
- return "";
1769
- }
1770
- return variableValue;
1771
- };
1772
- const result = value.replace(/(?<!\\)\${([^}]+)}/g, (_match, variableName) => {
1773
- const variableValue = (handleBinding != null ? handleBinding : defaultHandleBinding)(variableName, variables, errors);
1774
- boundCount++;
1775
- return variableValue;
1776
- });
1777
- return { result, boundCount, errors: errors.length > 0 ? errors : void 0 };
1778
- }
1779
-
1780
- // src/utils/bindVariablesToObject.ts
1781
- var import_immer = require("immer");
1782
- function bindVariablesToObject(options) {
1783
- return bindVariablesToObjectRecursive(options);
1784
- }
1785
- function bindVariablesToObjectRecursive({
1786
- value,
1787
- recursivePath,
1788
- ...bindVariablesOptions
1789
- }) {
1790
- let boundCount = 0;
1791
- const errors = [];
1792
- if (typeof value === "string") {
1793
- return bindVariables({ ...bindVariablesOptions, value });
1794
- }
1795
- if (typeof value !== "object" || value === null) {
1796
- return { boundCount: 0, result: value };
1797
- }
1798
- const result = (0, import_immer.produce)(value, (draft) => {
1799
- Object.entries(draft).forEach(([property, oldValue]) => {
1800
- const currentObjectPath = recursivePath ? `${recursivePath}.${property}` : property;
1801
- if (typeof oldValue === "string") {
1802
- const bindResult = bindVariables({ ...bindVariablesOptions, value: oldValue });
1803
- if (oldValue !== bindResult.result || bindResult.errors) {
1804
- boundCount += bindResult.boundCount;
1805
- draft[property] = bindResult.result;
1806
- if (bindResult.errors) {
1807
- errors.push(...bindResult.errors.map((e) => `${currentObjectPath}: ${e}`));
1808
- }
1809
- }
1810
- return;
1811
- }
1812
- const childBind = bindVariablesToObjectRecursive({
1813
- ...bindVariablesOptions,
1814
- value: oldValue,
1815
- recursivePath: currentObjectPath
1816
- });
1817
- if (childBind.boundCount || childBind.errors) {
1818
- boundCount += childBind.boundCount;
1819
- draft[property] = childBind.result;
1820
- if (childBind.errors) {
1821
- errors.push(...childBind.errors.map((e) => `${currentObjectPath}: ${e}`));
1822
- }
1823
- }
1824
- });
1825
- });
1826
- return { boundCount, result, errors: errors.length > 0 ? errors : void 0 };
1827
- }
1828
-
1829
1845
  // src/utils/createApiEnhancer.ts
1830
1846
  var createUniformApiEnhancer = ({ apiUrl }) => {
1831
1847
  return async (message) => {
@@ -1915,9 +1931,183 @@ function mapSlotToTestVariations(slot) {
1915
1931
  });
1916
1932
  }
1917
1933
 
1934
+ // src/utils/variables/parseVariableExpression.ts
1935
+ var escapeCharacter = "\\";
1936
+ var variablePrefix = "${";
1937
+ var variableSuffix = "}";
1938
+ function parseVariableExpression(serialized, onToken) {
1939
+ let bufferStartIndex = 0;
1940
+ let bufferEndIndex = 0;
1941
+ let tokenCount = 0;
1942
+ const handleToken = (token, type) => {
1943
+ tokenCount++;
1944
+ return onToken == null ? void 0 : onToken(token, type);
1945
+ };
1946
+ let state = "text";
1947
+ for (let index = 0; index < serialized.length; index++) {
1948
+ const char = serialized[index];
1949
+ if (bufferStartIndex > bufferEndIndex) {
1950
+ bufferEndIndex = bufferStartIndex;
1951
+ }
1952
+ if (char === variablePrefix[0] && serialized[index + 1] === variablePrefix[1]) {
1953
+ if (serialized[index - 1] === escapeCharacter) {
1954
+ bufferEndIndex -= escapeCharacter.length;
1955
+ if (handleToken(serialized.substring(bufferStartIndex, bufferEndIndex), "text") === false) {
1956
+ return tokenCount;
1957
+ }
1958
+ bufferStartIndex = index;
1959
+ bufferEndIndex = index + 1;
1960
+ continue;
1961
+ }
1962
+ state = "variable";
1963
+ if (bufferEndIndex > bufferStartIndex) {
1964
+ if (handleToken(serialized.substring(bufferStartIndex, bufferEndIndex), "text") === false) {
1965
+ return tokenCount;
1966
+ }
1967
+ bufferStartIndex = bufferEndIndex;
1968
+ }
1969
+ index += variablePrefix.length - 1;
1970
+ bufferStartIndex += variablePrefix.length;
1971
+ continue;
1972
+ }
1973
+ if (char === variableSuffix && state === "variable") {
1974
+ state = "text";
1975
+ if (bufferEndIndex > bufferStartIndex) {
1976
+ if (handleToken(serialized.substring(bufferStartIndex, bufferEndIndex), "variable") === false) {
1977
+ return tokenCount;
1978
+ }
1979
+ bufferStartIndex = bufferEndIndex + variableSuffix.length;
1980
+ }
1981
+ continue;
1982
+ }
1983
+ bufferEndIndex++;
1984
+ }
1985
+ if (bufferEndIndex > bufferStartIndex) {
1986
+ if (state === "variable") {
1987
+ state = "text";
1988
+ bufferStartIndex -= variablePrefix.length;
1989
+ }
1990
+ handleToken(serialized.substring(bufferStartIndex), state);
1991
+ }
1992
+ return tokenCount;
1993
+ }
1994
+
1995
+ // src/utils/variables/bindVariables.ts
1996
+ function bindVariables({
1997
+ variables,
1998
+ value,
1999
+ errorPrefix = "Variable",
2000
+ handleBinding
2001
+ }) {
2002
+ let boundCount = 0;
2003
+ let tokenCount = 0;
2004
+ const errors = [];
2005
+ const defaultHandleBinding = (variableName, variables2, errors2) => {
2006
+ const variableValue = variables2[variableName];
2007
+ if (variableValue === void 0) {
2008
+ errors2.push(`${errorPrefix} "${variableName}" is not defined`);
2009
+ return "";
2010
+ }
2011
+ return variableValue;
2012
+ };
2013
+ const result = [];
2014
+ parseVariableExpression(value, (token, tokenType) => {
2015
+ tokenCount++;
2016
+ if (tokenType === "text") {
2017
+ result.push(token);
2018
+ return;
2019
+ }
2020
+ const variableValue = (handleBinding != null ? handleBinding : defaultHandleBinding)(token, variables, errors);
2021
+ boundCount++;
2022
+ result.push(variableValue);
2023
+ });
2024
+ return {
2025
+ result: tokenCount === 1 ? result[0] : result.join(""),
2026
+ boundCount,
2027
+ errors: errors.length > 0 ? errors : void 0
2028
+ };
2029
+ }
2030
+
2031
+ // src/utils/variables/bindVariablesToObject.ts
2032
+ var import_immer = require("immer");
2033
+
2034
+ // src/utils/variables/createVariableReference.ts
2035
+ function createVariableReference(variableName) {
2036
+ return `\${${variableName}}`;
2037
+ }
2038
+
2039
+ // src/utils/variables/bindVariablesToObject.ts
2040
+ function bindVariablesToObject(options) {
2041
+ return bindVariablesToObjectRecursive(options);
2042
+ }
2043
+ function bindVariablesToObjectRecursive({
2044
+ value,
2045
+ recursivePath,
2046
+ ...bindVariablesOptions
2047
+ }) {
2048
+ let boundCount = 0;
2049
+ const errors = [];
2050
+ if (typeof value === "string") {
2051
+ return bindVariables({ ...bindVariablesOptions, value });
2052
+ }
2053
+ if (typeof value !== "object" || value === null) {
2054
+ return { boundCount: 0, result: value };
2055
+ }
2056
+ const richTextNodeResult = handleRichTextNodeBinding(value, bindVariablesOptions);
2057
+ if (richTextNodeResult !== void 0) {
2058
+ return richTextNodeResult;
2059
+ }
2060
+ const result = (0, import_immer.produce)(value, (draft) => {
2061
+ Object.entries(draft).forEach(([property, oldValue]) => {
2062
+ const currentObjectPath = recursivePath ? `${recursivePath}.${property}` : property;
2063
+ if (typeof oldValue === "string") {
2064
+ const bindResult = bindVariables({ ...bindVariablesOptions, value: oldValue });
2065
+ if (oldValue !== bindResult.result || bindResult.errors) {
2066
+ boundCount += bindResult.boundCount;
2067
+ draft[property] = bindResult.result;
2068
+ if (bindResult.errors) {
2069
+ errors.push(...bindResult.errors.map((e) => `${currentObjectPath}: ${e}`));
2070
+ }
2071
+ }
2072
+ return;
2073
+ }
2074
+ const childBind = bindVariablesToObjectRecursive({
2075
+ ...bindVariablesOptions,
2076
+ value: oldValue,
2077
+ recursivePath: currentObjectPath
2078
+ });
2079
+ if (childBind.boundCount || childBind.errors) {
2080
+ boundCount += childBind.boundCount;
2081
+ draft[property] = childBind.result;
2082
+ if (childBind.errors) {
2083
+ errors.push(...childBind.errors);
2084
+ }
2085
+ }
2086
+ });
2087
+ });
2088
+ return { boundCount, result, errors: errors.length > 0 ? errors : void 0 };
2089
+ }
2090
+ function handleRichTextNodeBinding(object, options) {
2091
+ if ("type" in object && object.type === "variable" && "reference" in object && typeof object.reference === "string" && "version" in object && object.version === 1) {
2092
+ const value = createVariableReference(object.reference);
2093
+ const bindResult = bindVariables({ ...options, value });
2094
+ const bindResultAsTextNode = {
2095
+ detail: 0,
2096
+ format: 0,
2097
+ mode: "normal",
2098
+ style: "",
2099
+ text: bindResult.result,
2100
+ type: "text",
2101
+ version: 1
2102
+ };
2103
+ return { ...bindResult, result: bindResultAsTextNode };
2104
+ }
2105
+ return void 0;
2106
+ }
2107
+
1918
2108
  // src/index.ts
1919
- var import_api8 = require("@uniformdev/context/api");
1920
- var CanvasClientError = import_api8.ApiClientError;
2109
+ var import_api9 = require("@uniformdev/context/api");
2110
+ var CanvasClientError = import_api9.ApiClientError;
1921
2111
  // Annotate the CommonJS export names for ESM import in node:
1922
2112
  0 && (module.exports = {
1923
2113
  ATTRIBUTE_COMPONENT_ID,
@@ -1929,6 +2119,7 @@ var CanvasClientError = import_api8.ApiClientError;
1929
2119
  ApiClientError,
1930
2120
  BatchEntry,
1931
2121
  CANVAS_DRAFT_STATE,
2122
+ CANVAS_EDITOR_STATE,
1932
2123
  CANVAS_ENRICHMENT_TAG_PARAM,
1933
2124
  CANVAS_INTENT_TAG_PARAM,
1934
2125
  CANVAS_LOCALE_TAG_PARAM,
@@ -1945,6 +2136,7 @@ var CanvasClientError = import_api8.ApiClientError;
1945
2136
  CanvasClientError,
1946
2137
  CategoryClient,
1947
2138
  ChildEnhancerBuilder,
2139
+ ContentClient,
1948
2140
  DataSourceClient,
1949
2141
  DataTypeClient,
1950
2142
  EDGE_CACHE_DISABLED,
@@ -1958,13 +2150,16 @@ var CanvasClientError = import_api8.ApiClientError;
1958
2150
  EnhancerBuilder,
1959
2151
  IN_CONTEXT_EDITOR_COMPONENT_END_ROLE,
1960
2152
  IN_CONTEXT_EDITOR_COMPONENT_START_ROLE,
2153
+ IN_CONTEXT_EDITOR_CONFIG_CHECK_QUERY_STRING_PARAM,
1961
2154
  IN_CONTEXT_EDITOR_EMBED_SCRIPT_ID,
2155
+ IN_CONTEXT_EDITOR_PLAYGROUND_QUERY_STRING_PARAM,
1962
2156
  IN_CONTEXT_EDITOR_QUERY_STRING_PARAM,
1963
2157
  IS_RENDERED_BY_UNIFORM_ATTRIBUTE,
1964
2158
  PLACEHOLDER_ID,
1965
2159
  RouteClient,
1966
2160
  UncachedCanvasClient,
1967
2161
  UncachedCategoryClient,
2162
+ UncachedContentClient,
1968
2163
  UniqueBatchEntries,
1969
2164
  bindVariables,
1970
2165
  bindVariablesToObject,
@@ -1974,6 +2169,7 @@ var CanvasClientError = import_api8.ApiClientError;
1974
2169
  createEventBus,
1975
2170
  createLimitPolicy,
1976
2171
  createUniformApiEnhancer,
2172
+ createVariableReference,
1977
2173
  enhance,
1978
2174
  extractLocales,
1979
2175
  generateHash,
@@ -1999,6 +2195,7 @@ var CanvasClientError = import_api8.ApiClientError;
1999
2195
  mapSlotToPersonalizedVariations,
2000
2196
  mapSlotToTestVariations,
2001
2197
  nullLimitPolicy,
2198
+ parseVariableExpression,
2002
2199
  subscribeToComposition,
2003
2200
  unstable_CompositionRelationshipClient,
2004
2201
  walkComponentTree