@riverbankcms/sdk 0.4.1 → 0.4.3

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 (116) hide show
  1. package/README.md +73 -0
  2. package/dist/cli/index.js +46 -5
  3. package/dist/cli/index.js.map +1 -1
  4. package/dist/client/client.d.mts +3 -3
  5. package/dist/client/client.d.ts +3 -3
  6. package/dist/client/client.js +90 -170
  7. package/dist/client/client.js.map +1 -1
  8. package/dist/client/client.mjs +90 -170
  9. package/dist/client/client.mjs.map +1 -1
  10. package/dist/client/hooks.d.mts +3 -3
  11. package/dist/client/hooks.d.ts +3 -3
  12. package/dist/client/rendering/client.d.mts +1 -1
  13. package/dist/client/rendering/client.d.ts +1 -1
  14. package/dist/client/rendering/client.js +84 -142
  15. package/dist/client/rendering/client.js.map +1 -1
  16. package/dist/client/rendering/client.mjs +84 -142
  17. package/dist/client/rendering/client.mjs.map +1 -1
  18. package/dist/client/resolver-CYyfzTQ9.d.mts +61 -0
  19. package/dist/client/resolver-CYyfzTQ9.d.ts +61 -0
  20. package/dist/client/usePage--fGlyrgj.d.mts +6439 -0
  21. package/dist/client/usePage-BC8Q2E3t.d.mts +6431 -0
  22. package/dist/client/usePage-CE7X5NcN.d.ts +6439 -0
  23. package/dist/client/usePage-CHEybPMD.d.ts +6429 -0
  24. package/dist/client/usePage-D4fxZbRR.d.mts +6429 -0
  25. package/dist/client/usePage-DpRNZUtP.d.ts +6431 -0
  26. package/dist/server/{Layout-CHG77dhK.d.ts → Layout-CXI_VkhN.d.ts} +1 -1
  27. package/dist/server/{Layout-B_zUr9ci.d.mts → Layout-p6f3TLw9.d.mts} +1 -1
  28. package/dist/server/{chunk-XK2YIISA.mjs → chunk-24F6FTCI.mjs} +2 -2
  29. package/dist/server/{chunk-BUCJWG6G.js → chunk-2SSEBAHC.js} +5 -5
  30. package/dist/server/{chunk-BUCJWG6G.js.map → chunk-2SSEBAHC.js.map} +1 -1
  31. package/dist/server/{chunk-ZIM53VP6.js → chunk-6JBKKV3G.js} +27 -4
  32. package/dist/server/chunk-6JBKKV3G.js.map +1 -0
  33. package/dist/server/{chunk-ZEAJW6T3.mjs → chunk-ES6QDZUX.mjs} +3 -2
  34. package/dist/server/chunk-ES6QDZUX.mjs.map +1 -0
  35. package/dist/server/{chunk-SWPHIUVE.js → chunk-G35R7N7B.js} +3 -2
  36. package/dist/server/chunk-G35R7N7B.js.map +1 -0
  37. package/dist/server/{chunk-BOHTTHY5.mjs → chunk-I6K5REFT.mjs} +27 -4
  38. package/dist/server/chunk-I6K5REFT.mjs.map +1 -0
  39. package/dist/server/{chunk-SFQ7VF3G.mjs → chunk-LCYGQDAB.mjs} +10 -6
  40. package/dist/server/chunk-LCYGQDAB.mjs.map +1 -0
  41. package/dist/server/{chunk-P6CDRJN3.js → chunk-TNYU5EIO.js} +16 -12
  42. package/dist/server/chunk-TNYU5EIO.js.map +1 -0
  43. package/dist/server/{chunk-NKXS4TBK.mjs → chunk-U2NI3TS3.mjs} +87 -169
  44. package/dist/server/chunk-U2NI3TS3.mjs.map +1 -0
  45. package/dist/server/{chunk-IT5ICP43.js → chunk-VHDDXCK6.js} +94 -176
  46. package/dist/server/chunk-VHDDXCK6.js.map +1 -0
  47. package/dist/server/{components-Bo3LPpVb.d.mts → components-C75e4poV.d.mts} +20 -12
  48. package/dist/server/{components-ClFs4PUa.d.ts → components-Dhiemsjd.d.ts} +20 -12
  49. package/dist/server/components.d.mts +5 -5
  50. package/dist/server/components.d.ts +5 -5
  51. package/dist/server/components.js +3 -3
  52. package/dist/server/components.mjs +2 -2
  53. package/dist/server/config-validation.d.mts +2 -2
  54. package/dist/server/config-validation.d.ts +2 -2
  55. package/dist/server/config-validation.js +3 -3
  56. package/dist/server/config-validation.mjs +2 -2
  57. package/dist/server/config.d.mts +3 -3
  58. package/dist/server/config.d.ts +3 -3
  59. package/dist/server/config.js +3 -3
  60. package/dist/server/config.mjs +2 -2
  61. package/dist/server/data.d.mts +2 -2
  62. package/dist/server/data.d.ts +2 -2
  63. package/dist/server/{index-Dj7VKH34.d.mts → index-C6o9LPvq.d.mts} +1 -1
  64. package/dist/server/{index-DbSfrRA0.d.ts → index-CAwBj3-A.d.ts} +1 -1
  65. package/dist/server/index.d.mts +4 -4
  66. package/dist/server/index.d.ts +4 -4
  67. package/dist/server/{loadContent-C_FipaAC.d.mts → loadContent-CdXfuCuE.d.mts} +3 -3
  68. package/dist/server/{loadContent-C2SwqmXy.d.ts → loadContent-CsvQRoxb.d.ts} +3 -3
  69. package/dist/server/{loadPage-naVvoua8.d.ts → loadPage-BA0HiT-6.d.ts} +72 -28
  70. package/dist/server/{loadPage-DUHBXDEW.js → loadPage-DLC7DJZP.js} +3 -3
  71. package/dist/server/{loadPage-DUHBXDEW.js.map → loadPage-DLC7DJZP.js.map} +1 -1
  72. package/dist/server/{loadPage-LYVKY3WZ.mjs → loadPage-GEGN4UAL.mjs} +2 -2
  73. package/dist/server/{loadPage-mavT3Jae.d.mts → loadPage-p3AWwwrd.d.mts} +72 -28
  74. package/dist/server/metadata.d.mts +3 -3
  75. package/dist/server/metadata.d.ts +3 -3
  76. package/dist/server/navigation.d.mts +2 -2
  77. package/dist/server/navigation.d.ts +2 -2
  78. package/dist/server/rendering/server.d.mts +4 -4
  79. package/dist/server/rendering/server.d.ts +4 -4
  80. package/dist/server/rendering/server.js +4 -4
  81. package/dist/server/rendering/server.mjs +3 -3
  82. package/dist/server/rendering.d.mts +7 -7
  83. package/dist/server/rendering.d.ts +7 -7
  84. package/dist/server/rendering.js +5 -5
  85. package/dist/server/rendering.mjs +4 -4
  86. package/dist/server/routing.d.mts +78 -5
  87. package/dist/server/routing.d.ts +78 -5
  88. package/dist/server/routing.js +57 -3
  89. package/dist/server/routing.js.map +1 -1
  90. package/dist/server/routing.mjs +55 -1
  91. package/dist/server/routing.mjs.map +1 -1
  92. package/dist/server/server.d.mts +5 -5
  93. package/dist/server/server.d.ts +5 -5
  94. package/dist/server/server.js +2 -2
  95. package/dist/server/server.mjs +1 -1
  96. package/dist/server/theme-bridge.js +7 -7
  97. package/dist/server/theme-bridge.mjs +1 -1
  98. package/dist/server/{types-BA-J9K8r.d.mts → types-BLf-hE50.d.mts} +19 -6
  99. package/dist/server/{types-5XdVD2J1.d.ts → types-BWQ-TohG.d.ts} +19 -6
  100. package/dist/server/{types-CMqVHYLG.d.ts → types-CL916r6x.d.ts} +23 -1
  101. package/dist/server/{types-BC9eB2KH.d.mts → types-CdhKJrB0.d.mts} +1 -1
  102. package/dist/server/{types-CAnC529E.d.ts → types-Dj8B3QRb.d.ts} +1 -1
  103. package/dist/server/{types-CYfHxUhe.d.mts → types-txWsSxN7.d.mts} +23 -1
  104. package/dist/server/{validation-C7W2Fe0i.d.ts → validation-CoU8uAiu.d.ts} +1 -1
  105. package/dist/server/{validation-hg1sqhrt.d.mts → validation-DzvDwwRo.d.mts} +1 -1
  106. package/package.json +3 -3
  107. package/dist/server/chunk-BOHTTHY5.mjs.map +0 -1
  108. package/dist/server/chunk-IT5ICP43.js.map +0 -1
  109. package/dist/server/chunk-NKXS4TBK.mjs.map +0 -1
  110. package/dist/server/chunk-P6CDRJN3.js.map +0 -1
  111. package/dist/server/chunk-SFQ7VF3G.mjs.map +0 -1
  112. package/dist/server/chunk-SWPHIUVE.js.map +0 -1
  113. package/dist/server/chunk-ZEAJW6T3.mjs.map +0 -1
  114. package/dist/server/chunk-ZIM53VP6.js.map +0 -1
  115. /package/dist/server/{chunk-XK2YIISA.mjs.map → chunk-24F6FTCI.mjs.map} +0 -0
  116. /package/dist/server/{loadPage-LYVKY3WZ.mjs.map → loadPage-GEGN4UAL.mjs.map} +0 -0
@@ -57,121 +57,53 @@ function clsx() {
57
57
  }
58
58
  var clsx_default = clsx;
59
59
 
60
- // ../media-core/dist/chunk-JAKU4BKA.mjs
61
- var DEFAULT_BASE_PATH = "/api/img";
62
- var formatNumber = (value) => Number.isInteger(value) ? value.toString() : value.toFixed(6).replace(/0+$/, "").replace(/\.$/, "");
63
- var addParam = (search, key, value) => {
64
- if (value === void 0) return;
65
- switch (key) {
66
- case "fpX":
67
- search.set("fp-x", formatNumber(value));
68
- break;
69
- case "fpY":
70
- search.set("fp-y", formatNumber(value));
71
- break;
72
- case "rect": {
73
- const rect = value;
74
- if (!rect) break;
75
- search.set("rect", rect.map(formatNumber).join(","));
76
- break;
77
- }
78
- case "autoFormat":
79
- if (value) {
80
- search.append("auto", "format");
81
- }
82
- break;
83
- case "invert":
84
- search.set("invert", value ? "true" : "false");
85
- break;
86
- default:
87
- search.set(
88
- key,
89
- typeof value === "number" ? formatNumber(value) : String(value)
90
- );
91
- }
92
- };
93
- var ORDER = [
94
- "w",
95
- "h",
96
- "dpr",
97
- "fit",
98
- "crop",
99
- "fpX",
100
- "fpY",
101
- "rect",
102
- "q",
103
- "fm",
104
- "autoFormat",
105
- "bg",
106
- "flip",
107
- "or",
108
- "pad",
109
- "blur",
110
- "sharp",
111
- "invert",
112
- "sat",
113
- "cs"
114
- ];
115
- var getImageUrl = (asset, params = {}, basePath = DEFAULT_BASE_PATH) => {
116
- const trimmedBase = basePath.endsWith("/") ? basePath.slice(0, Math.max(basePath.length - 1, 0)) : basePath;
117
- const path = `${trimmedBase}/${encodeURIComponent(asset.id)}`;
118
- const searchParams = new URLSearchParams();
119
- ORDER.forEach((key) => {
120
- addParam(searchParams, key, params[key]);
121
- });
122
- const query = searchParams.toString();
123
- return query ? `${path}?${query}` : path;
124
- };
125
-
126
- // ../blocks/src/system/runtime/utils/api-url.ts
127
- function resolveMultiEnvDashboardUrl() {
128
- const env = process.env.RIVERBANK_ENV;
129
- if (!env) return null;
130
- const envKey = `RIVERBANK_${env.toUpperCase()}_DASHBOARD_URL`;
131
- const dashboardUrl = process.env[envKey];
132
- if (dashboardUrl) {
133
- return dashboardUrl.replace(/\/$/, "");
134
- }
135
- return null;
136
- }
137
- function getCmsApiUrl() {
138
- const multiEnvDashboard = resolveMultiEnvDashboardUrl();
139
- if (multiEnvDashboard) {
140
- return `${multiEnvDashboard}/api`;
141
- }
142
- const builderApiUrl = process.env.NEXT_PUBLIC_BUILDER_API_URL;
143
- if (builderApiUrl) {
144
- return builderApiUrl.replace(/\/$/, "");
145
- }
146
- const dashboardUrl = process.env.NEXT_PUBLIC_DASHBOARD_URL;
147
- if (dashboardUrl) {
148
- const base = dashboardUrl.replace(/\/$/, "");
149
- return `${base}/api`;
150
- }
151
- const legacyApiUrl = process.env.NEXT_PUBLIC_CMS_API_URL;
152
- if (legacyApiUrl) {
153
- return legacyApiUrl.replace(/\/$/, "");
154
- }
155
- throw new Error(
156
- "Dashboard URL not configured. Either:\n 1. Set RIVERBANK_ENV with RIVERBANK_LOCAL_DASHBOARD_URL / RIVERBANK_REMOTE_DASHBOARD_URL\n 2. Set NEXT_PUBLIC_BUILDER_API_URL (SDK sites)\n 3. Set NEXT_PUBLIC_DASHBOARD_URL (frontend app)"
157
- );
60
+ // ../media-core/dist/chunk-ZBK775TB.mjs
61
+ function getDirectImageUrl(supabaseUrl, storagePath, storageBucket = "media", options) {
62
+ const baseUrl = supabaseUrl.replace(/\/$/, "");
63
+ const encodedPath = storagePath.split("/").map((segment) => encodeURIComponent(segment)).join("/");
64
+ const isSvg = storagePath.toLowerCase().endsWith(".svg");
65
+ if (options && !isSvg && (options.width || options.height)) {
66
+ const params = new URLSearchParams();
67
+ if (options.width) params.set("width", String(options.width));
68
+ if (options.height) params.set("height", String(options.height));
69
+ if (options.quality) params.set("quality", String(options.quality));
70
+ if (options.resize) params.set("resize", options.resize);
71
+ return `${baseUrl}/storage/v1/render/image/public/${storageBucket}/${encodedPath}?${params.toString()}`;
72
+ }
73
+ return `${baseUrl}/storage/v1/object/public/${storageBucket}/${encodedPath}`;
158
74
  }
159
75
 
160
76
  // ../blocks/src/system/runtime/nodes/media.tsx
161
77
  import { jsx } from "react/jsx-runtime";
78
+ var _contextSupabaseUrl;
79
+ function setContextSupabaseUrl(url) {
80
+ _contextSupabaseUrl = url?.replace(/\/$/, "");
81
+ }
82
+ function getSupabaseUrl() {
83
+ if (_contextSupabaseUrl) {
84
+ return _contextSupabaseUrl;
85
+ }
86
+ const url = process.env.NEXT_PUBLIC_SUPABASE_URL;
87
+ if (!url) {
88
+ throw new Error(
89
+ "NEXT_PUBLIC_SUPABASE_URL is not configured. Set it to your Supabase project URL (e.g., https://xxx.supabase.co)"
90
+ );
91
+ }
92
+ return url.replace(/\/$/, "");
93
+ }
162
94
  var debugMediaNodeLog = (...args) => {
163
95
  if (typeof window !== "undefined" && window.__DEBUG_MEDIA_NODE__) {
164
96
  console.log("[MediaNode]", ...args);
165
97
  }
166
98
  };
167
- var MediaNode = ({ value, className, style, previewKey }) => {
99
+ var MediaNode = ({ value, className, style }) => {
168
100
  if (!value) return null;
169
101
  if (value.type === "video") {
170
102
  const src = value.src;
171
103
  if (!src) return null;
172
104
  return /* @__PURE__ */ jsx("video", { className, style, src, autoPlay: true, muted: true, loop: true, playsInline: true, "aria-label": value.alt ?? "" });
173
105
  }
174
- const imageUrl = resolveImageUrl(value, { previewKey });
106
+ const imageUrl = resolveImageUrl(value);
175
107
  if (!imageUrl) {
176
108
  return /* @__PURE__ */ jsx(
177
109
  "div",
@@ -182,56 +114,36 @@ var MediaNode = ({ value, className, style, previewKey }) => {
182
114
  }
183
115
  );
184
116
  }
185
- const isCrossOrigin = typeof window !== "undefined" && imageUrl.startsWith("http") && !imageUrl.startsWith(window.location.origin);
186
- const isApiRoute = imageUrl.includes("/api/img") || imageUrl.includes("/api/public/img");
187
- const crossOriginMode = isCrossOrigin && isApiRoute ? "use-credentials" : isCrossOrigin ? "anonymous" : void 0;
117
+ const hotspotStyle = value.transform?.hotspot ? { objectPosition: `${value.transform.hotspot.x * 100}% ${value.transform.hotspot.y * 100}%` } : void 0;
188
118
  return /* @__PURE__ */ jsx(
189
119
  "img",
190
120
  {
191
121
  src: imageUrl,
192
122
  alt: value.alt ?? "",
193
123
  className,
194
- style,
195
- loading: "lazy",
196
- crossOrigin: crossOriginMode
124
+ style: mergeStyles(style, hotspotStyle),
125
+ loading: "lazy"
197
126
  }
198
127
  );
199
128
  };
200
- function resolveImageUrl(value, options = {}) {
129
+ function resolveImageUrl(value) {
201
130
  if (value.type !== "image") return void 0;
202
- const params = {};
203
- const rect = value.transform?.rect;
204
- const hotspot = value.transform?.hotspot;
205
- if (rect && Array.isArray(rect) && rect.length === 4) {
206
- params.rect = rect.join(",");
207
- }
208
- if (hotspot && typeof hotspot.x === "number" && typeof hotspot.y === "number") {
209
- const x = clamp(hotspot.x);
210
- const y = clamp(hotspot.y);
211
- params.hotspot = `${x.toFixed(4)},${y.toFixed(4)}`;
212
- }
213
131
  debugMediaNodeLog("resolveImageUrl input", {
214
132
  assetId: value.assetId,
133
+ storagePath: value.storagePath,
215
134
  src: value.src,
216
- type: value.type,
217
- hasPreviewKey: !!options.previewKey
135
+ type: value.type
218
136
  });
219
- if (value.assetId) {
220
- const cmsApiBase = getCmsApiUrl();
221
- const basePath = `${cmsApiBase}/public/img`;
222
- let resolved = getImageUrl({ id: value.assetId }, params, basePath);
223
- if (options.previewKey) {
224
- const separator = resolved.includes("?") ? "&" : "?";
225
- resolved = `${resolved}${separator}preview_key=${encodeURIComponent(options.previewKey)}`;
226
- }
227
- debugMediaNodeLog("resolve:asset-id", {
228
- assetId: value.assetId,
229
- cmsApiBase,
230
- basePath,
231
- resolvedUrl: resolved,
232
- hasPreviewKey: !!options.previewKey
137
+ if (value.storagePath && value.storagePath.length > 0) {
138
+ const supabaseUrl = getSupabaseUrl();
139
+ const bucket = value.storageBucket ?? "media";
140
+ const directUrl = getDirectImageUrl(supabaseUrl, value.storagePath, bucket);
141
+ debugMediaNodeLog("resolve:direct-supabase", {
142
+ storagePath: value.storagePath,
143
+ bucket,
144
+ directUrl
233
145
  });
234
- return resolved;
146
+ return directUrl;
235
147
  }
236
148
  if (typeof value.src === "string" && value.src.length > 0) {
237
149
  debugMediaNodeLog("resolve:explicit-src", { src: value.src });
@@ -240,9 +152,6 @@ function resolveImageUrl(value, options = {}) {
240
152
  debugMediaNodeLog("resolve:fallback-url", { fallbackUrl: value.url ?? null });
241
153
  return value.url ?? void 0;
242
154
  }
243
- function clamp(v, min6 = 0, max6 = 1) {
244
- return Math.min(Math.max(v, min6), max6);
245
- }
246
155
 
247
156
  // ../../node_modules/.pnpm/chroma-js@3.1.2/node_modules/chroma-js/src/utils/limit.js
248
157
  var { min, max } = Math;
@@ -8830,6 +8739,7 @@ function PageRenderer({
8830
8739
  blockOverrides,
8831
8740
  sdkConfig
8832
8741
  }) {
8742
+ setContextSupabaseUrl(dataContext?.supabaseUrl);
8833
8743
  if (!page || page.blocks.length === 0) {
8834
8744
  return /* @__PURE__ */ jsx21("div", { className: "p-6 text-sm", style: textColorStyle("mutedText"), children: "No blocks found." });
8835
8745
  }
@@ -8942,8 +8852,6 @@ var MemoBlockSection = React5.memo(function MemoBlockSection2({
8942
8852
  return wrapBlock && block.id ? /* @__PURE__ */ jsx21(Fragment2, { children: wrapBlock(block.id, rendered) }) : /* @__PURE__ */ jsx21(Fragment2, { children: rendered });
8943
8853
  }
8944
8854
  try {
8945
- const BlockComponent = OverrideComponent ?? getCachedBlockComponent(definition.manifest);
8946
- const pathBase = typeof block.id === "string" && block.id.length > 0 ? `blocks.${block.id}.` : void 0;
8947
8855
  const routes = routeMap ?? dataContext?.routes;
8948
8856
  const hydratedContent = routes ? hydrateManifestLinks(definition.manifest, data, routes) : data;
8949
8857
  const resolved = resolveBlockData({
@@ -8951,35 +8859,45 @@ var MemoBlockSection = React5.memo(function MemoBlockSection2({
8951
8859
  definition,
8952
8860
  dataContext
8953
8861
  });
8954
- const rootContext = {
8955
- $root: {
8956
- siteId: dataContext?.siteId ?? null,
8957
- pageId: dataContext?.pageId ?? null,
8958
- previewStage: dataContext?.previewStage ?? "published",
8959
- ...routes ? { routes } : {},
8960
- // Occurrence and content entry context for template pages
8961
- occurrenceContext: dataContext?.occurrenceContext ?? null,
8962
- contentEntry: dataContext?.contentEntry ?? null
8963
- }
8862
+ const baseProps = {
8863
+ content: hydratedContent,
8864
+ theme: themeTokens,
8865
+ themeConfig,
8866
+ data: resolved,
8867
+ blockId: block.id ?? null,
8868
+ blockKind: block.kind
8964
8869
  };
8965
- const blockBindings = block.bindings ?? void 0;
8966
- const fragmentRegistry2 = getFragmentRegistry();
8967
- const rendered = /* @__PURE__ */ jsx21(
8968
- BlockComponent,
8969
- {
8970
- content: hydratedContent,
8971
- theme: themeTokens,
8972
- themeConfig,
8973
- registry,
8974
- pathBase,
8975
- data: resolved,
8976
- blockId: block.id ?? null,
8977
- blockKind: block.kind,
8978
- blockBindings,
8979
- viewModelOverrides: rootContext,
8980
- fragmentRegistry: fragmentRegistry2
8981
- }
8982
- );
8870
+ let rendered;
8871
+ if (OverrideComponent) {
8872
+ rendered = /* @__PURE__ */ jsx21(OverrideComponent, { ...baseProps });
8873
+ } else {
8874
+ const BlockComponent = getCachedBlockComponent(definition.manifest);
8875
+ const pathBase = typeof block.id === "string" && block.id.length > 0 ? `blocks.${block.id}.` : void 0;
8876
+ const rootContext = {
8877
+ $root: {
8878
+ siteId: dataContext?.siteId ?? null,
8879
+ pageId: dataContext?.pageId ?? null,
8880
+ previewStage: dataContext?.previewStage ?? "published",
8881
+ ...routes ? { routes } : {},
8882
+ // Occurrence and content entry context for template pages
8883
+ occurrenceContext: dataContext?.occurrenceContext ?? null,
8884
+ contentEntry: dataContext?.contentEntry ?? null
8885
+ }
8886
+ };
8887
+ const blockBindings = block.bindings ?? void 0;
8888
+ const fragmentRegistry2 = getFragmentRegistry();
8889
+ rendered = /* @__PURE__ */ jsx21(
8890
+ BlockComponent,
8891
+ {
8892
+ ...baseProps,
8893
+ registry,
8894
+ pathBase,
8895
+ blockBindings,
8896
+ viewModelOverrides: rootContext,
8897
+ fragmentRegistry: fragmentRegistry2
8898
+ }
8899
+ );
8900
+ }
8983
8901
  if (wrapBlock && block.id) {
8984
8902
  return /* @__PURE__ */ jsx21(Fragment2, { children: wrapBlock(block.id, rendered) });
8985
8903
  }
@@ -9623,4 +9541,4 @@ chroma-js/src/utils/contrastAPCA.js:
9623
9541
  * https://readtech.org/ARC/
9624
9542
  *)
9625
9543
  */
9626
- //# sourceMappingURL=chunk-NKXS4TBK.mjs.map
9544
+ //# sourceMappingURL=chunk-U2NI3TS3.mjs.map