@weaverse/hydrogen 2.2.0 → 2.2.5

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
@@ -42,12 +42,12 @@ __export(src_exports, {
42
42
  withWeaverse: () => withWeaverse
43
43
  });
44
44
  module.exports = __toCommonJS(src_exports);
45
- var import_react11 = require("@weaverse/react");
45
+ var import_react12 = require("@weaverse/react");
46
46
 
47
47
  // src/WeaverseHydrogenRoot.tsx
48
- var import_react8 = require("@remix-run/react");
49
- var import_react9 = require("@weaverse/react");
50
- var import_react10 = __toESM(require("react"));
48
+ var import_react9 = require("@remix-run/react");
49
+ var import_react10 = require("@weaverse/react");
50
+ var import_react11 = __toESM(require("react"));
51
51
  var import_react_error_boundary = require("react-error-boundary");
52
52
 
53
53
  // src/context.ts
@@ -131,6 +131,7 @@ function useStudio(weaverse) {
131
131
 
132
132
  // src/hooks/use-theme-settings.ts
133
133
  var import_react7 = require("react");
134
+ var import_react8 = require("@weaverse/react");
134
135
  var ThemeSettingsStore = class _ThemeSettingsStore {
135
136
  static settings = null;
136
137
  listeners = [];
@@ -139,13 +140,13 @@ var ThemeSettingsStore = class _ThemeSettingsStore {
139
140
  publicEnv;
140
141
  constructor(data) {
141
142
  let { theme, countries, schema, publicEnv } = data || {};
142
- if (!_ThemeSettingsStore.settings) {
143
- _ThemeSettingsStore.settings = theme || null;
144
- } else {
143
+ if (import_react8.isBrowser && _ThemeSettingsStore.settings) {
145
144
  _ThemeSettingsStore.settings = {
146
145
  ...theme,
147
146
  ..._ThemeSettingsStore.settings
148
147
  };
148
+ } else {
149
+ _ThemeSettingsStore.settings = theme || {};
149
150
  }
150
151
  this.countries = countries;
151
152
  this.schema = schema;
@@ -187,22 +188,22 @@ function useThemeSettings() {
187
188
  }
188
189
 
189
190
  // src/WeaverseHydrogenRoot.tsx
190
- var WeaverseHydrogenRoot = (0, import_react10.memo)(
191
+ var WeaverseHydrogenRoot = (0, import_react11.memo)(
191
192
  ({
192
193
  errorComponent: ErrorComponent = FallbackError,
193
194
  components
194
195
  }) => {
195
- let loaderData = (0, import_react8.useLoaderData)();
196
+ let loaderData = (0, import_react9.useLoaderData)();
196
197
  let data = loaderData?.weaverseData;
197
198
  if (data) {
198
199
  if (data instanceof Promise) {
199
- return /* @__PURE__ */ import_react10.default.createElement(import_react_error_boundary.ErrorBoundary, { fallbackRender: ErrorComponent }, /* @__PURE__ */ import_react10.default.createElement(import_react10.Suspense, null, /* @__PURE__ */ import_react10.default.createElement(import_react8.Await, { resolve: data }, (resolvedData) => {
200
- return /* @__PURE__ */ import_react10.default.createElement(RenderRoot, { data: resolvedData, components });
200
+ return /* @__PURE__ */ import_react11.default.createElement(import_react_error_boundary.ErrorBoundary, { fallbackRender: ErrorComponent }, /* @__PURE__ */ import_react11.default.createElement(import_react11.Suspense, null, /* @__PURE__ */ import_react11.default.createElement(import_react9.Await, { resolve: data }, (resolvedData) => {
201
+ return /* @__PURE__ */ import_react11.default.createElement(RenderRoot, { data: resolvedData, components });
201
202
  })));
202
203
  }
203
- return /* @__PURE__ */ import_react10.default.createElement(RenderRoot, { data, components });
204
+ return /* @__PURE__ */ import_react11.default.createElement(RenderRoot, { data, components });
204
205
  }
205
- return /* @__PURE__ */ import_react10.default.createElement(
206
+ return /* @__PURE__ */ import_react11.default.createElement(
206
207
  ErrorComponent,
207
208
  {
208
209
  error: { message: "No Weaverse data return from route loader!" }
@@ -214,17 +215,17 @@ function RenderRoot(props) {
214
215
  let { data, components } = props;
215
216
  let weaverse = createWeaverseInstance(data, components);
216
217
  useStudio(weaverse);
217
- return /* @__PURE__ */ import_react10.default.createElement(import_react9.WeaverseRoot, { context: weaverse });
218
+ return /* @__PURE__ */ import_react11.default.createElement(import_react10.WeaverseRoot, { context: weaverse });
218
219
  }
219
220
  function withWeaverse(Component) {
220
221
  return (props) => {
221
- let { weaverseTheme } = (0, import_react8.useLoaderData)();
222
- let themeSettingsStore = new ThemeSettingsStore(weaverseTheme);
223
- return /* @__PURE__ */ import_react10.default.createElement(ThemeProvider.Provider, { value: themeSettingsStore }, /* @__PURE__ */ import_react10.default.createElement(Component, { ...props }));
222
+ let loaderData = (0, import_react9.useRouteLoaderData)("root");
223
+ let themeSettingsStore = new ThemeSettingsStore(loaderData?.weaverseTheme);
224
+ return /* @__PURE__ */ import_react11.default.createElement(ThemeProvider.Provider, { value: themeSettingsStore }, /* @__PURE__ */ import_react11.default.createElement(Component, { ...props }));
224
225
  };
225
226
  }
226
227
  function FallbackError({ error }) {
227
- return /* @__PURE__ */ import_react10.default.createElement("div", null, error?.message || "An unexpected error occurred");
228
+ return /* @__PURE__ */ import_react11.default.createElement("div", null, error?.message || "An unexpected error occurred");
228
229
  }
229
230
 
230
231
  // src/weaverse-client.ts
@@ -232,7 +233,7 @@ var import_hydrogen = require("@shopify/hydrogen");
232
233
 
233
234
  // package.json
234
235
  var package_default = {
235
- version: "2.2.0",
236
+ version: "2.2.5",
236
237
  license: "MIT",
237
238
  main: "dist/index.js",
238
239
  typings: "dist/index.d.ts",
@@ -266,12 +267,12 @@ var package_default = {
266
267
  author: "Weaverse Team",
267
268
  dependencies: {
268
269
  "@remix-run/react": "1.19.1",
269
- "@shopify/hydrogen": "2023.7.10",
270
- "@weaverse/react": "2.2.0",
270
+ "@shopify/hydrogen": "2023.7.11",
271
+ "@weaverse/react": "2.2.5",
271
272
  "react-error-boundary": "^4.0.11"
272
273
  },
273
274
  devDependencies: {
274
- "@shopify/remix-oxygen": "^1.1.6"
275
+ "@shopify/remix-oxygen": "^1.1.7"
275
276
  }
276
277
  };
277
278
 
@@ -307,6 +308,1279 @@ function getWeaverseConfigs(request, env) {
307
308
  };
308
309
  }
309
310
 
311
+ // ../../node_modules/prettier/doc.mjs
312
+ var __defProp2 = Object.defineProperty;
313
+ var __export2 = (target, all) => {
314
+ for (var name in all)
315
+ __defProp2(target, name, { get: all[name], enumerable: true });
316
+ };
317
+ var public_exports = {};
318
+ __export2(public_exports, {
319
+ builders: () => builders,
320
+ printer: () => printer,
321
+ utils: () => utils
322
+ });
323
+ var DOC_TYPE_STRING = "string";
324
+ var DOC_TYPE_ARRAY = "array";
325
+ var DOC_TYPE_CURSOR = "cursor";
326
+ var DOC_TYPE_INDENT = "indent";
327
+ var DOC_TYPE_ALIGN = "align";
328
+ var DOC_TYPE_TRIM = "trim";
329
+ var DOC_TYPE_GROUP = "group";
330
+ var DOC_TYPE_FILL = "fill";
331
+ var DOC_TYPE_IF_BREAK = "if-break";
332
+ var DOC_TYPE_INDENT_IF_BREAK = "indent-if-break";
333
+ var DOC_TYPE_LINE_SUFFIX = "line-suffix";
334
+ var DOC_TYPE_LINE_SUFFIX_BOUNDARY = "line-suffix-boundary";
335
+ var DOC_TYPE_LINE = "line";
336
+ var DOC_TYPE_LABEL = "label";
337
+ var DOC_TYPE_BREAK_PARENT = "break-parent";
338
+ var VALID_OBJECT_DOC_TYPES = /* @__PURE__ */ new Set([
339
+ DOC_TYPE_CURSOR,
340
+ DOC_TYPE_INDENT,
341
+ DOC_TYPE_ALIGN,
342
+ DOC_TYPE_TRIM,
343
+ DOC_TYPE_GROUP,
344
+ DOC_TYPE_FILL,
345
+ DOC_TYPE_IF_BREAK,
346
+ DOC_TYPE_INDENT_IF_BREAK,
347
+ DOC_TYPE_LINE_SUFFIX,
348
+ DOC_TYPE_LINE_SUFFIX_BOUNDARY,
349
+ DOC_TYPE_LINE,
350
+ DOC_TYPE_LABEL,
351
+ DOC_TYPE_BREAK_PARENT
352
+ ]);
353
+ function getDocType(doc) {
354
+ if (typeof doc === "string") {
355
+ return DOC_TYPE_STRING;
356
+ }
357
+ if (Array.isArray(doc)) {
358
+ return DOC_TYPE_ARRAY;
359
+ }
360
+ if (!doc) {
361
+ return;
362
+ }
363
+ const { type } = doc;
364
+ if (VALID_OBJECT_DOC_TYPES.has(type)) {
365
+ return type;
366
+ }
367
+ }
368
+ var get_doc_type_default = getDocType;
369
+ var disjunctionListFormat = (list) => new Intl.ListFormat("en-US", { type: "disjunction" }).format(list);
370
+ function getDocErrorMessage(doc) {
371
+ const type = doc === null ? "null" : typeof doc;
372
+ if (type !== "string" && type !== "object") {
373
+ return `Unexpected doc '${type}',
374
+ Expected it to be 'string' or 'object'.`;
375
+ }
376
+ if (get_doc_type_default(doc)) {
377
+ throw new Error("doc is valid.");
378
+ }
379
+ const objectType = Object.prototype.toString.call(doc);
380
+ if (objectType !== "[object Object]") {
381
+ return `Unexpected doc '${objectType}'.`;
382
+ }
383
+ const EXPECTED_TYPE_VALUES = disjunctionListFormat(
384
+ [...VALID_OBJECT_DOC_TYPES].map((type2) => `'${type2}'`)
385
+ );
386
+ return `Unexpected doc.type '${doc.type}'.
387
+ Expected it to be ${EXPECTED_TYPE_VALUES}.`;
388
+ }
389
+ var InvalidDocError = class extends Error {
390
+ name = "InvalidDocError";
391
+ constructor(doc) {
392
+ super(getDocErrorMessage(doc));
393
+ this.doc = doc;
394
+ }
395
+ };
396
+ var invalid_doc_error_default = InvalidDocError;
397
+ var traverseDocOnExitStackMarker = {};
398
+ function traverseDoc(doc, onEnter, onExit, shouldTraverseConditionalGroups) {
399
+ const docsStack = [doc];
400
+ while (docsStack.length > 0) {
401
+ const doc2 = docsStack.pop();
402
+ if (doc2 === traverseDocOnExitStackMarker) {
403
+ onExit(docsStack.pop());
404
+ continue;
405
+ }
406
+ if (onExit) {
407
+ docsStack.push(doc2, traverseDocOnExitStackMarker);
408
+ }
409
+ const docType = get_doc_type_default(doc2);
410
+ if (!docType) {
411
+ throw new invalid_doc_error_default(doc2);
412
+ }
413
+ if ((onEnter == null ? void 0 : onEnter(doc2)) === false) {
414
+ continue;
415
+ }
416
+ switch (docType) {
417
+ case DOC_TYPE_ARRAY:
418
+ case DOC_TYPE_FILL: {
419
+ const parts = docType === DOC_TYPE_ARRAY ? doc2 : doc2.parts;
420
+ for (let ic = parts.length, i = ic - 1; i >= 0; --i) {
421
+ docsStack.push(parts[i]);
422
+ }
423
+ break;
424
+ }
425
+ case DOC_TYPE_IF_BREAK:
426
+ docsStack.push(doc2.flatContents, doc2.breakContents);
427
+ break;
428
+ case DOC_TYPE_GROUP:
429
+ if (shouldTraverseConditionalGroups && doc2.expandedStates) {
430
+ for (let ic = doc2.expandedStates.length, i = ic - 1; i >= 0; --i) {
431
+ docsStack.push(doc2.expandedStates[i]);
432
+ }
433
+ } else {
434
+ docsStack.push(doc2.contents);
435
+ }
436
+ break;
437
+ case DOC_TYPE_ALIGN:
438
+ case DOC_TYPE_INDENT:
439
+ case DOC_TYPE_INDENT_IF_BREAK:
440
+ case DOC_TYPE_LABEL:
441
+ case DOC_TYPE_LINE_SUFFIX:
442
+ docsStack.push(doc2.contents);
443
+ break;
444
+ case DOC_TYPE_STRING:
445
+ case DOC_TYPE_CURSOR:
446
+ case DOC_TYPE_TRIM:
447
+ case DOC_TYPE_LINE_SUFFIX_BOUNDARY:
448
+ case DOC_TYPE_LINE:
449
+ case DOC_TYPE_BREAK_PARENT:
450
+ break;
451
+ default:
452
+ throw new invalid_doc_error_default(doc2);
453
+ }
454
+ }
455
+ }
456
+ var traverse_doc_default = traverseDoc;
457
+ var noop = () => {
458
+ };
459
+ var assertDoc = true ? noop : function(doc) {
460
+ traverse_doc_default(doc, (doc2) => {
461
+ if (checked.has(doc2)) {
462
+ return false;
463
+ }
464
+ if (typeof doc2 !== "string") {
465
+ checked.add(doc2);
466
+ }
467
+ });
468
+ };
469
+ var assertDocArray = true ? noop : function(docs, optional = false) {
470
+ if (optional && !docs) {
471
+ return;
472
+ }
473
+ if (!Array.isArray(docs)) {
474
+ throw new TypeError("Unexpected doc array.");
475
+ }
476
+ for (const doc of docs) {
477
+ assertDoc(doc);
478
+ }
479
+ };
480
+ function indent(contents) {
481
+ assertDoc(contents);
482
+ return { type: DOC_TYPE_INDENT, contents };
483
+ }
484
+ function align(widthOrString, contents) {
485
+ assertDoc(contents);
486
+ return { type: DOC_TYPE_ALIGN, contents, n: widthOrString };
487
+ }
488
+ function group(contents, opts = {}) {
489
+ assertDoc(contents);
490
+ assertDocArray(
491
+ opts.expandedStates,
492
+ /* optional */
493
+ true
494
+ );
495
+ return {
496
+ type: DOC_TYPE_GROUP,
497
+ id: opts.id,
498
+ contents,
499
+ break: Boolean(opts.shouldBreak),
500
+ expandedStates: opts.expandedStates
501
+ };
502
+ }
503
+ function dedentToRoot(contents) {
504
+ return align(Number.NEGATIVE_INFINITY, contents);
505
+ }
506
+ function markAsRoot(contents) {
507
+ return align({ type: "root" }, contents);
508
+ }
509
+ function dedent(contents) {
510
+ return align(-1, contents);
511
+ }
512
+ function conditionalGroup(states, opts) {
513
+ return group(states[0], { ...opts, expandedStates: states });
514
+ }
515
+ function fill(parts) {
516
+ assertDocArray(parts);
517
+ return { type: DOC_TYPE_FILL, parts };
518
+ }
519
+ function ifBreak(breakContents, flatContents = "", opts = {}) {
520
+ assertDoc(breakContents);
521
+ if (flatContents !== "") {
522
+ assertDoc(flatContents);
523
+ }
524
+ return {
525
+ type: DOC_TYPE_IF_BREAK,
526
+ breakContents,
527
+ flatContents,
528
+ groupId: opts.groupId
529
+ };
530
+ }
531
+ function indentIfBreak(contents, opts) {
532
+ assertDoc(contents);
533
+ return {
534
+ type: DOC_TYPE_INDENT_IF_BREAK,
535
+ contents,
536
+ groupId: opts.groupId,
537
+ negate: opts.negate
538
+ };
539
+ }
540
+ function lineSuffix(contents) {
541
+ assertDoc(contents);
542
+ return { type: DOC_TYPE_LINE_SUFFIX, contents };
543
+ }
544
+ var lineSuffixBoundary = { type: DOC_TYPE_LINE_SUFFIX_BOUNDARY };
545
+ var breakParent = { type: DOC_TYPE_BREAK_PARENT };
546
+ var trim = { type: DOC_TYPE_TRIM };
547
+ var hardlineWithoutBreakParent = { type: DOC_TYPE_LINE, hard: true };
548
+ var literallineWithoutBreakParent = {
549
+ type: DOC_TYPE_LINE,
550
+ hard: true,
551
+ literal: true
552
+ };
553
+ var line = { type: DOC_TYPE_LINE };
554
+ var softline = { type: DOC_TYPE_LINE, soft: true };
555
+ var hardline = [hardlineWithoutBreakParent, breakParent];
556
+ var literalline = [literallineWithoutBreakParent, breakParent];
557
+ var cursor = { type: DOC_TYPE_CURSOR };
558
+ function join(separator, docs) {
559
+ assertDoc(separator);
560
+ assertDocArray(docs);
561
+ const parts = [];
562
+ for (let i = 0; i < docs.length; i++) {
563
+ if (i !== 0) {
564
+ parts.push(separator);
565
+ }
566
+ parts.push(docs[i]);
567
+ }
568
+ return parts;
569
+ }
570
+ function addAlignmentToDoc(doc, size, tabWidth) {
571
+ assertDoc(doc);
572
+ let aligned = doc;
573
+ if (size > 0) {
574
+ for (let i = 0; i < Math.floor(size / tabWidth); ++i) {
575
+ aligned = indent(aligned);
576
+ }
577
+ aligned = align(size % tabWidth, aligned);
578
+ aligned = align(Number.NEGATIVE_INFINITY, aligned);
579
+ }
580
+ return aligned;
581
+ }
582
+ function label(label2, contents) {
583
+ assertDoc(contents);
584
+ return label2 ? { type: DOC_TYPE_LABEL, label: label2, contents } : contents;
585
+ }
586
+ var at = (isOptionalObject, object, index) => {
587
+ if (isOptionalObject && (object === void 0 || object === null)) {
588
+ return;
589
+ }
590
+ if (Array.isArray(object) || typeof object === "string") {
591
+ return object[index < 0 ? object.length + index : index];
592
+ }
593
+ return object.at(index);
594
+ };
595
+ var at_default = at;
596
+ var stringReplaceAll = (isOptionalObject, original, pattern, replacement) => {
597
+ if (isOptionalObject && (original === void 0 || original === null)) {
598
+ return;
599
+ }
600
+ if (original.replaceAll) {
601
+ return original.replaceAll(pattern, replacement);
602
+ }
603
+ if (pattern.global) {
604
+ return original.replace(pattern, replacement);
605
+ }
606
+ return original.split(pattern).join(replacement);
607
+ };
608
+ var string_replace_all_default = stringReplaceAll;
609
+ function convertEndOfLineToChars(value) {
610
+ switch (value) {
611
+ case "cr":
612
+ return "\r";
613
+ case "crlf":
614
+ return "\r\n";
615
+ default:
616
+ return "\n";
617
+ }
618
+ }
619
+ var emoji_regex_default = () => {
620
+ return /[#*0-9]\uFE0F?\u20E3|[\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23ED-\u23EF\u23F1\u23F2\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB\u25FC\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692\u2694-\u2697\u2699\u269B\u269C\u26A0\u26A7\u26AA\u26B0\u26B1\u26BD\u26BE\u26C4\u26C8\u26CF\u26D1\u26D3\u26E9\u26F0-\u26F5\u26F7\u26F8\u26FA\u2702\u2708\u2709\u270F\u2712\u2714\u2716\u271D\u2721\u2733\u2734\u2744\u2747\u2757\u2763\u27A1\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B55\u3030\u303D\u3297\u3299]\uFE0F?|[\u261D\u270C\u270D](?:\uFE0F|\uD83C[\uDFFB-\uDFFF])?|[\u270A\u270B](?:\uD83C[\uDFFB-\uDFFF])?|[\u23E9-\u23EC\u23F0\u23F3\u25FD\u2693\u26A1\u26AB\u26C5\u26CE\u26D4\u26EA\u26FD\u2705\u2728\u274C\u274E\u2753-\u2755\u2795-\u2797\u27B0\u27BF\u2B50]|\u26F9(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|\u2764\uFE0F?(?:\u200D(?:\uD83D\uDD25|\uD83E\uDE79))?|\uD83C(?:[\uDC04\uDD70\uDD71\uDD7E\uDD7F\uDE02\uDE37\uDF21\uDF24-\uDF2C\uDF36\uDF7D\uDF96\uDF97\uDF99-\uDF9B\uDF9E\uDF9F\uDFCD\uDFCE\uDFD4-\uDFDF\uDFF5\uDFF7]\uFE0F?|[\uDF85\uDFC2\uDFC7](?:\uD83C[\uDFFB-\uDFFF])?|[\uDFC3\uDFC4\uDFCA](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDFCB\uDFCC](?:\uFE0F|\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDCCF\uDD8E\uDD91-\uDD9A\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF84\uDF86-\uDF93\uDFA0-\uDFC1\uDFC5\uDFC6\uDFC8\uDFC9\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF8-\uDFFF]|\uDDE6\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF]|\uDDE7\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF]|\uDDE8\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF5\uDDF7\uDDFA-\uDDFF]|\uDDE9\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF]|\uDDEA\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA]|\uDDEB\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7]|\uDDEC\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE]|\uDDED\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA]|\uDDEE\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9]|\uDDEF\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5]|\uDDF0\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF]|\uDDF1\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE]|\uDDF2\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF]|\uDDF3\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF]|\uDDF4\uD83C\uDDF2|\uDDF5\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE]|\uDDF6\uD83C\uDDE6|\uDDF7\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC]|\uDDF8\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF]|\uDDF9\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF]|\uDDFA\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF]|\uDDFB\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA]|\uDDFC\uD83C[\uDDEB\uDDF8]|\uDDFD\uD83C\uDDF0|\uDDFE\uD83C[\uDDEA\uDDF9]|\uDDFF\uD83C[\uDDE6\uDDF2\uDDFC]|\uDFF3\uFE0F?(?:\u200D(?:\u26A7\uFE0F?|\uD83C\uDF08))?|\uDFF4(?:\u200D\u2620\uFE0F?|\uDB40\uDC67\uDB40\uDC62\uDB40(?:\uDC65\uDB40\uDC6E\uDB40\uDC67|\uDC73\uDB40\uDC63\uDB40\uDC74|\uDC77\uDB40\uDC6C\uDB40\uDC73)\uDB40\uDC7F)?)|\uD83D(?:[\uDC08\uDC26](?:\u200D\u2B1B)?|[\uDC3F\uDCFD\uDD49\uDD4A\uDD6F\uDD70\uDD73\uDD76-\uDD79\uDD87\uDD8A-\uDD8D\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA\uDECB\uDECD-\uDECF\uDEE0-\uDEE5\uDEE9\uDEF0\uDEF3]\uFE0F?|[\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDC8F\uDC91\uDCAA\uDD7A\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC](?:\uD83C[\uDFFB-\uDFFF])?|[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDD74\uDD90](?:\uFE0F|\uD83C[\uDFFB-\uDFFF])?|[\uDC00-\uDC07\uDC09-\uDC14\uDC16-\uDC25\uDC27-\uDC3A\uDC3C-\uDC3E\uDC40\uDC44\uDC45\uDC51-\uDC65\uDC6A\uDC79-\uDC7B\uDC7D-\uDC80\uDC84\uDC88-\uDC8E\uDC90\uDC92-\uDCA9\uDCAB-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDDA4\uDDFB-\uDE2D\uDE2F-\uDE34\uDE37-\uDE44\uDE48-\uDE4A\uDE80-\uDEA2\uDEA4-\uDEB3\uDEB7-\uDEBF\uDEC1-\uDEC5\uDED0-\uDED2\uDED5-\uDED7\uDEDC-\uDEDF\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB\uDFF0]|\uDC15(?:\u200D\uD83E\uDDBA)?|\uDC3B(?:\u200D\u2744\uFE0F?)?|\uDC41\uFE0F?(?:\u200D\uD83D\uDDE8\uFE0F?)?|\uDC68(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDC68\uDC69]\u200D\uD83D(?:\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?)|[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?)|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFC-\uDFFF])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFD-\uDFFF])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFD\uDFFF])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFE])))?))?|\uDC69(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?[\uDC68\uDC69]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?|\uDC69\u200D\uD83D(?:\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?))|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFC-\uDFFF])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB\uDFFD-\uDFFF])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB-\uDFFD\uDFFF])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB-\uDFFE])))?))?|\uDC6F(?:\u200D[\u2640\u2642]\uFE0F?)?|\uDD75(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|\uDE2E(?:\u200D\uD83D\uDCA8)?|\uDE35(?:\u200D\uD83D\uDCAB)?|\uDE36(?:\u200D\uD83C\uDF2B\uFE0F?)?)|\uD83E(?:[\uDD0C\uDD0F\uDD18-\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5\uDEC3-\uDEC5\uDEF0\uDEF2-\uDEF8](?:\uD83C[\uDFFB-\uDFFF])?|[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDDDE\uDDDF](?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDD0D\uDD0E\uDD10-\uDD17\uDD20-\uDD25\uDD27-\uDD2F\uDD3A\uDD3F-\uDD45\uDD47-\uDD76\uDD78-\uDDB4\uDDB7\uDDBA\uDDBC-\uDDCC\uDDD0\uDDE0-\uDDFF\uDE70-\uDE7C\uDE80-\uDE88\uDE90-\uDEBD\uDEBF-\uDEC2\uDECE-\uDEDB\uDEE0-\uDEE8]|\uDD3C(?:\u200D[\u2640\u2642]\uFE0F?|\uD83C[\uDFFB-\uDFFF])?|\uDDD1(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83E\uDDD1))|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFC-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB\uDFFD-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB-\uDFFD\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB-\uDFFE]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?))?|\uDEF1(?:\uD83C(?:\uDFFB(?:\u200D\uD83E\uDEF2\uD83C[\uDFFC-\uDFFF])?|\uDFFC(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB\uDFFD-\uDFFF])?|\uDFFD(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])?|\uDFFE(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB-\uDFFD\uDFFF])?|\uDFFF(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB-\uDFFE])?))?)/g;
621
+ };
622
+ var eastasianwidth_default = {
623
+ eastAsianWidth(character) {
624
+ var x = character.charCodeAt(0);
625
+ var y = character.length == 2 ? character.charCodeAt(1) : 0;
626
+ var codePoint = x;
627
+ if (55296 <= x && x <= 56319 && 56320 <= y && y <= 57343) {
628
+ x &= 1023;
629
+ y &= 1023;
630
+ codePoint = x << 10 | y;
631
+ codePoint += 65536;
632
+ }
633
+ if (12288 == codePoint || 65281 <= codePoint && codePoint <= 65376 || 65504 <= codePoint && codePoint <= 65510) {
634
+ return "F";
635
+ }
636
+ if (4352 <= codePoint && codePoint <= 4447 || 4515 <= codePoint && codePoint <= 4519 || 4602 <= codePoint && codePoint <= 4607 || 9001 <= codePoint && codePoint <= 9002 || 11904 <= codePoint && codePoint <= 11929 || 11931 <= codePoint && codePoint <= 12019 || 12032 <= codePoint && codePoint <= 12245 || 12272 <= codePoint && codePoint <= 12283 || 12289 <= codePoint && codePoint <= 12350 || 12353 <= codePoint && codePoint <= 12438 || 12441 <= codePoint && codePoint <= 12543 || 12549 <= codePoint && codePoint <= 12589 || 12593 <= codePoint && codePoint <= 12686 || 12688 <= codePoint && codePoint <= 12730 || 12736 <= codePoint && codePoint <= 12771 || 12784 <= codePoint && codePoint <= 12830 || 12832 <= codePoint && codePoint <= 12871 || 12880 <= codePoint && codePoint <= 13054 || 13056 <= codePoint && codePoint <= 19903 || 19968 <= codePoint && codePoint <= 42124 || 42128 <= codePoint && codePoint <= 42182 || 43360 <= codePoint && codePoint <= 43388 || 44032 <= codePoint && codePoint <= 55203 || 55216 <= codePoint && codePoint <= 55238 || 55243 <= codePoint && codePoint <= 55291 || 63744 <= codePoint && codePoint <= 64255 || 65040 <= codePoint && codePoint <= 65049 || 65072 <= codePoint && codePoint <= 65106 || 65108 <= codePoint && codePoint <= 65126 || 65128 <= codePoint && codePoint <= 65131 || 110592 <= codePoint && codePoint <= 110593 || 127488 <= codePoint && codePoint <= 127490 || 127504 <= codePoint && codePoint <= 127546 || 127552 <= codePoint && codePoint <= 127560 || 127568 <= codePoint && codePoint <= 127569 || 131072 <= codePoint && codePoint <= 194367 || 177984 <= codePoint && codePoint <= 196605 || 196608 <= codePoint && codePoint <= 262141) {
637
+ return "W";
638
+ }
639
+ return "N";
640
+ }
641
+ };
642
+ var notAsciiRegex = /[^\x20-\x7F]/;
643
+ function getStringWidth(text) {
644
+ if (!text) {
645
+ return 0;
646
+ }
647
+ if (!notAsciiRegex.test(text)) {
648
+ return text.length;
649
+ }
650
+ text = text.replace(emoji_regex_default(), " ");
651
+ let width = 0;
652
+ for (const character of text) {
653
+ const codePoint = character.codePointAt(0);
654
+ if (codePoint <= 31 || codePoint >= 127 && codePoint <= 159) {
655
+ continue;
656
+ }
657
+ if (codePoint >= 768 && codePoint <= 879) {
658
+ continue;
659
+ }
660
+ const code = eastasianwidth_default.eastAsianWidth(character);
661
+ width += code === "F" || code === "W" ? 2 : 1;
662
+ }
663
+ return width;
664
+ }
665
+ var get_string_width_default = getStringWidth;
666
+ var getDocParts = (doc) => {
667
+ if (Array.isArray(doc)) {
668
+ return doc;
669
+ }
670
+ if (doc.type !== DOC_TYPE_FILL) {
671
+ throw new Error(`Expect doc to be 'array' or '${DOC_TYPE_FILL}'.`);
672
+ }
673
+ return doc.parts;
674
+ };
675
+ function mapDoc(doc, cb) {
676
+ if (typeof doc === "string") {
677
+ return cb(doc);
678
+ }
679
+ const mapped = /* @__PURE__ */ new Map();
680
+ return rec(doc);
681
+ function rec(doc2) {
682
+ if (mapped.has(doc2)) {
683
+ return mapped.get(doc2);
684
+ }
685
+ const result = process2(doc2);
686
+ mapped.set(doc2, result);
687
+ return result;
688
+ }
689
+ function process2(doc2) {
690
+ switch (get_doc_type_default(doc2)) {
691
+ case DOC_TYPE_ARRAY:
692
+ return cb(doc2.map(rec));
693
+ case DOC_TYPE_FILL:
694
+ return cb({
695
+ ...doc2,
696
+ parts: doc2.parts.map(rec)
697
+ });
698
+ case DOC_TYPE_IF_BREAK:
699
+ return cb({
700
+ ...doc2,
701
+ breakContents: rec(doc2.breakContents),
702
+ flatContents: rec(doc2.flatContents)
703
+ });
704
+ case DOC_TYPE_GROUP: {
705
+ let {
706
+ expandedStates,
707
+ contents
708
+ } = doc2;
709
+ if (expandedStates) {
710
+ expandedStates = expandedStates.map(rec);
711
+ contents = expandedStates[0];
712
+ } else {
713
+ contents = rec(contents);
714
+ }
715
+ return cb({
716
+ ...doc2,
717
+ contents,
718
+ expandedStates
719
+ });
720
+ }
721
+ case DOC_TYPE_ALIGN:
722
+ case DOC_TYPE_INDENT:
723
+ case DOC_TYPE_INDENT_IF_BREAK:
724
+ case DOC_TYPE_LABEL:
725
+ case DOC_TYPE_LINE_SUFFIX:
726
+ return cb({
727
+ ...doc2,
728
+ contents: rec(doc2.contents)
729
+ });
730
+ case DOC_TYPE_STRING:
731
+ case DOC_TYPE_CURSOR:
732
+ case DOC_TYPE_TRIM:
733
+ case DOC_TYPE_LINE_SUFFIX_BOUNDARY:
734
+ case DOC_TYPE_LINE:
735
+ case DOC_TYPE_BREAK_PARENT:
736
+ return cb(doc2);
737
+ default:
738
+ throw new invalid_doc_error_default(doc2);
739
+ }
740
+ }
741
+ }
742
+ function findInDoc(doc, fn, defaultValue) {
743
+ let result = defaultValue;
744
+ let shouldSkipFurtherProcessing = false;
745
+ function findInDocOnEnterFn(doc2) {
746
+ if (shouldSkipFurtherProcessing) {
747
+ return false;
748
+ }
749
+ const maybeResult = fn(doc2);
750
+ if (maybeResult !== void 0) {
751
+ shouldSkipFurtherProcessing = true;
752
+ result = maybeResult;
753
+ }
754
+ }
755
+ traverse_doc_default(doc, findInDocOnEnterFn);
756
+ return result;
757
+ }
758
+ function willBreakFn(doc) {
759
+ if (doc.type === DOC_TYPE_GROUP && doc.break) {
760
+ return true;
761
+ }
762
+ if (doc.type === DOC_TYPE_LINE && doc.hard) {
763
+ return true;
764
+ }
765
+ if (doc.type === DOC_TYPE_BREAK_PARENT) {
766
+ return true;
767
+ }
768
+ }
769
+ function willBreak(doc) {
770
+ return findInDoc(doc, willBreakFn, false);
771
+ }
772
+ function breakParentGroup(groupStack) {
773
+ if (groupStack.length > 0) {
774
+ const parentGroup = at_default(
775
+ /* isOptionalObject*/
776
+ false,
777
+ groupStack,
778
+ -1
779
+ );
780
+ if (!parentGroup.expandedStates && !parentGroup.break) {
781
+ parentGroup.break = "propagated";
782
+ }
783
+ }
784
+ return null;
785
+ }
786
+ function propagateBreaks(doc) {
787
+ const alreadyVisitedSet = /* @__PURE__ */ new Set();
788
+ const groupStack = [];
789
+ function propagateBreaksOnEnterFn(doc2) {
790
+ if (doc2.type === DOC_TYPE_BREAK_PARENT) {
791
+ breakParentGroup(groupStack);
792
+ }
793
+ if (doc2.type === DOC_TYPE_GROUP) {
794
+ groupStack.push(doc2);
795
+ if (alreadyVisitedSet.has(doc2)) {
796
+ return false;
797
+ }
798
+ alreadyVisitedSet.add(doc2);
799
+ }
800
+ }
801
+ function propagateBreaksOnExitFn(doc2) {
802
+ if (doc2.type === DOC_TYPE_GROUP) {
803
+ const group2 = groupStack.pop();
804
+ if (group2.break) {
805
+ breakParentGroup(groupStack);
806
+ }
807
+ }
808
+ }
809
+ traverse_doc_default(
810
+ doc,
811
+ propagateBreaksOnEnterFn,
812
+ propagateBreaksOnExitFn,
813
+ /* shouldTraverseConditionalGroups */
814
+ true
815
+ );
816
+ }
817
+ function removeLinesFn(doc) {
818
+ if (doc.type === DOC_TYPE_LINE && !doc.hard) {
819
+ return doc.soft ? "" : " ";
820
+ }
821
+ if (doc.type === DOC_TYPE_IF_BREAK) {
822
+ return doc.flatContents;
823
+ }
824
+ return doc;
825
+ }
826
+ function removeLines(doc) {
827
+ return mapDoc(doc, removeLinesFn);
828
+ }
829
+ function stripTrailingHardlineFromParts(parts) {
830
+ parts = [...parts];
831
+ while (parts.length >= 2 && at_default(
832
+ /* isOptionalObject*/
833
+ false,
834
+ parts,
835
+ -2
836
+ ).type === DOC_TYPE_LINE && at_default(
837
+ /* isOptionalObject*/
838
+ false,
839
+ parts,
840
+ -1
841
+ ).type === DOC_TYPE_BREAK_PARENT) {
842
+ parts.length -= 2;
843
+ }
844
+ if (parts.length > 0) {
845
+ const lastPart = stripTrailingHardlineFromDoc(at_default(
846
+ /* isOptionalObject*/
847
+ false,
848
+ parts,
849
+ -1
850
+ ));
851
+ parts[parts.length - 1] = lastPart;
852
+ }
853
+ return parts;
854
+ }
855
+ function stripTrailingHardlineFromDoc(doc) {
856
+ switch (get_doc_type_default(doc)) {
857
+ case DOC_TYPE_ALIGN:
858
+ case DOC_TYPE_INDENT:
859
+ case DOC_TYPE_INDENT_IF_BREAK:
860
+ case DOC_TYPE_GROUP:
861
+ case DOC_TYPE_LINE_SUFFIX:
862
+ case DOC_TYPE_LABEL: {
863
+ const contents = stripTrailingHardlineFromDoc(doc.contents);
864
+ return {
865
+ ...doc,
866
+ contents
867
+ };
868
+ }
869
+ case DOC_TYPE_IF_BREAK:
870
+ return {
871
+ ...doc,
872
+ breakContents: stripTrailingHardlineFromDoc(doc.breakContents),
873
+ flatContents: stripTrailingHardlineFromDoc(doc.flatContents)
874
+ };
875
+ case DOC_TYPE_FILL:
876
+ return {
877
+ ...doc,
878
+ parts: stripTrailingHardlineFromParts(doc.parts)
879
+ };
880
+ case DOC_TYPE_ARRAY:
881
+ return stripTrailingHardlineFromParts(doc);
882
+ case DOC_TYPE_STRING:
883
+ return doc.replace(/[\n\r]*$/, "");
884
+ case DOC_TYPE_CURSOR:
885
+ case DOC_TYPE_TRIM:
886
+ case DOC_TYPE_LINE_SUFFIX_BOUNDARY:
887
+ case DOC_TYPE_LINE:
888
+ case DOC_TYPE_BREAK_PARENT:
889
+ break;
890
+ default:
891
+ throw new invalid_doc_error_default(doc);
892
+ }
893
+ return doc;
894
+ }
895
+ function stripTrailingHardline(doc) {
896
+ return stripTrailingHardlineFromDoc(cleanDoc(doc));
897
+ }
898
+ function cleanDocFn(doc) {
899
+ switch (get_doc_type_default(doc)) {
900
+ case DOC_TYPE_FILL:
901
+ if (doc.parts.every((part) => part === "")) {
902
+ return "";
903
+ }
904
+ break;
905
+ case DOC_TYPE_GROUP:
906
+ if (!doc.contents && !doc.id && !doc.break && !doc.expandedStates) {
907
+ return "";
908
+ }
909
+ if (doc.contents.type === DOC_TYPE_GROUP && doc.contents.id === doc.id && doc.contents.break === doc.break && doc.contents.expandedStates === doc.expandedStates) {
910
+ return doc.contents;
911
+ }
912
+ break;
913
+ case DOC_TYPE_ALIGN:
914
+ case DOC_TYPE_INDENT:
915
+ case DOC_TYPE_INDENT_IF_BREAK:
916
+ case DOC_TYPE_LINE_SUFFIX:
917
+ if (!doc.contents) {
918
+ return "";
919
+ }
920
+ break;
921
+ case DOC_TYPE_IF_BREAK:
922
+ if (!doc.flatContents && !doc.breakContents) {
923
+ return "";
924
+ }
925
+ break;
926
+ case DOC_TYPE_ARRAY: {
927
+ const parts = [];
928
+ for (const part of doc) {
929
+ if (!part) {
930
+ continue;
931
+ }
932
+ const [currentPart, ...restParts] = Array.isArray(part) ? part : [part];
933
+ if (typeof currentPart === "string" && typeof at_default(
934
+ /* isOptionalObject*/
935
+ false,
936
+ parts,
937
+ -1
938
+ ) === "string") {
939
+ parts[parts.length - 1] += currentPart;
940
+ } else {
941
+ parts.push(currentPart);
942
+ }
943
+ parts.push(...restParts);
944
+ }
945
+ if (parts.length === 0) {
946
+ return "";
947
+ }
948
+ if (parts.length === 1) {
949
+ return parts[0];
950
+ }
951
+ return parts;
952
+ }
953
+ case DOC_TYPE_STRING:
954
+ case DOC_TYPE_CURSOR:
955
+ case DOC_TYPE_TRIM:
956
+ case DOC_TYPE_LINE_SUFFIX_BOUNDARY:
957
+ case DOC_TYPE_LINE:
958
+ case DOC_TYPE_LABEL:
959
+ case DOC_TYPE_BREAK_PARENT:
960
+ break;
961
+ default:
962
+ throw new invalid_doc_error_default(doc);
963
+ }
964
+ return doc;
965
+ }
966
+ function cleanDoc(doc) {
967
+ return mapDoc(doc, (currentDoc) => cleanDocFn(currentDoc));
968
+ }
969
+ function replaceEndOfLine(doc, replacement = literalline) {
970
+ return mapDoc(doc, (currentDoc) => typeof currentDoc === "string" ? join(replacement, currentDoc.split("\n")) : currentDoc);
971
+ }
972
+ function canBreakFn(doc) {
973
+ if (doc.type === DOC_TYPE_LINE) {
974
+ return true;
975
+ }
976
+ }
977
+ function canBreak(doc) {
978
+ return findInDoc(doc, canBreakFn, false);
979
+ }
980
+ var MODE_BREAK = Symbol("MODE_BREAK");
981
+ var MODE_FLAT = Symbol("MODE_FLAT");
982
+ var CURSOR_PLACEHOLDER = Symbol("cursor");
983
+ function rootIndent() {
984
+ return {
985
+ value: "",
986
+ length: 0,
987
+ queue: []
988
+ };
989
+ }
990
+ function makeIndent(ind, options) {
991
+ return generateInd(ind, {
992
+ type: "indent"
993
+ }, options);
994
+ }
995
+ function makeAlign(indent2, widthOrDoc, options) {
996
+ if (widthOrDoc === Number.NEGATIVE_INFINITY) {
997
+ return indent2.root || rootIndent();
998
+ }
999
+ if (widthOrDoc < 0) {
1000
+ return generateInd(indent2, {
1001
+ type: "dedent"
1002
+ }, options);
1003
+ }
1004
+ if (!widthOrDoc) {
1005
+ return indent2;
1006
+ }
1007
+ if (widthOrDoc.type === "root") {
1008
+ return {
1009
+ ...indent2,
1010
+ root: indent2
1011
+ };
1012
+ }
1013
+ const alignType = typeof widthOrDoc === "string" ? "stringAlign" : "numberAlign";
1014
+ return generateInd(indent2, {
1015
+ type: alignType,
1016
+ n: widthOrDoc
1017
+ }, options);
1018
+ }
1019
+ function generateInd(ind, newPart, options) {
1020
+ const queue = newPart.type === "dedent" ? ind.queue.slice(0, -1) : [...ind.queue, newPart];
1021
+ let value = "";
1022
+ let length = 0;
1023
+ let lastTabs = 0;
1024
+ let lastSpaces = 0;
1025
+ for (const part of queue) {
1026
+ switch (part.type) {
1027
+ case "indent":
1028
+ flush();
1029
+ if (options.useTabs) {
1030
+ addTabs(1);
1031
+ } else {
1032
+ addSpaces(options.tabWidth);
1033
+ }
1034
+ break;
1035
+ case "stringAlign":
1036
+ flush();
1037
+ value += part.n;
1038
+ length += part.n.length;
1039
+ break;
1040
+ case "numberAlign":
1041
+ lastTabs += 1;
1042
+ lastSpaces += part.n;
1043
+ break;
1044
+ default:
1045
+ throw new Error(`Unexpected type '${part.type}'`);
1046
+ }
1047
+ }
1048
+ flushSpaces();
1049
+ return {
1050
+ ...ind,
1051
+ value,
1052
+ length,
1053
+ queue
1054
+ };
1055
+ function addTabs(count) {
1056
+ value += " ".repeat(count);
1057
+ length += options.tabWidth * count;
1058
+ }
1059
+ function addSpaces(count) {
1060
+ value += " ".repeat(count);
1061
+ length += count;
1062
+ }
1063
+ function flush() {
1064
+ if (options.useTabs) {
1065
+ flushTabs();
1066
+ } else {
1067
+ flushSpaces();
1068
+ }
1069
+ }
1070
+ function flushTabs() {
1071
+ if (lastTabs > 0) {
1072
+ addTabs(lastTabs);
1073
+ }
1074
+ resetLast();
1075
+ }
1076
+ function flushSpaces() {
1077
+ if (lastSpaces > 0) {
1078
+ addSpaces(lastSpaces);
1079
+ }
1080
+ resetLast();
1081
+ }
1082
+ function resetLast() {
1083
+ lastTabs = 0;
1084
+ lastSpaces = 0;
1085
+ }
1086
+ }
1087
+ function trim2(out) {
1088
+ let trimCount = 0;
1089
+ let cursorCount = 0;
1090
+ let outIndex = out.length;
1091
+ outer:
1092
+ while (outIndex--) {
1093
+ const last = out[outIndex];
1094
+ if (last === CURSOR_PLACEHOLDER) {
1095
+ cursorCount++;
1096
+ continue;
1097
+ }
1098
+ if (false) {
1099
+ throw new Error(`Unexpected value in trim: '${typeof last}'`);
1100
+ }
1101
+ for (let charIndex = last.length - 1; charIndex >= 0; charIndex--) {
1102
+ const char = last[charIndex];
1103
+ if (char === " " || char === " ") {
1104
+ trimCount++;
1105
+ } else {
1106
+ out[outIndex] = last.slice(0, charIndex + 1);
1107
+ break outer;
1108
+ }
1109
+ }
1110
+ }
1111
+ if (trimCount > 0 || cursorCount > 0) {
1112
+ out.length = outIndex + 1;
1113
+ while (cursorCount-- > 0) {
1114
+ out.push(CURSOR_PLACEHOLDER);
1115
+ }
1116
+ }
1117
+ return trimCount;
1118
+ }
1119
+ function fits(next, restCommands, width, hasLineSuffix, groupModeMap, mustBeFlat) {
1120
+ if (width === Number.POSITIVE_INFINITY) {
1121
+ return true;
1122
+ }
1123
+ let restIdx = restCommands.length;
1124
+ const cmds = [next];
1125
+ const out = [];
1126
+ while (width >= 0) {
1127
+ if (cmds.length === 0) {
1128
+ if (restIdx === 0) {
1129
+ return true;
1130
+ }
1131
+ cmds.push(restCommands[--restIdx]);
1132
+ continue;
1133
+ }
1134
+ const {
1135
+ mode,
1136
+ doc
1137
+ } = cmds.pop();
1138
+ switch (get_doc_type_default(doc)) {
1139
+ case DOC_TYPE_STRING:
1140
+ out.push(doc);
1141
+ width -= get_string_width_default(doc);
1142
+ break;
1143
+ case DOC_TYPE_ARRAY:
1144
+ case DOC_TYPE_FILL: {
1145
+ const parts = getDocParts(doc);
1146
+ for (let i = parts.length - 1; i >= 0; i--) {
1147
+ cmds.push({
1148
+ mode,
1149
+ doc: parts[i]
1150
+ });
1151
+ }
1152
+ break;
1153
+ }
1154
+ case DOC_TYPE_INDENT:
1155
+ case DOC_TYPE_ALIGN:
1156
+ case DOC_TYPE_INDENT_IF_BREAK:
1157
+ case DOC_TYPE_LABEL:
1158
+ cmds.push({
1159
+ mode,
1160
+ doc: doc.contents
1161
+ });
1162
+ break;
1163
+ case DOC_TYPE_TRIM:
1164
+ width += trim2(out);
1165
+ break;
1166
+ case DOC_TYPE_GROUP: {
1167
+ if (mustBeFlat && doc.break) {
1168
+ return false;
1169
+ }
1170
+ const groupMode = doc.break ? MODE_BREAK : mode;
1171
+ const contents = doc.expandedStates && groupMode === MODE_BREAK ? at_default(
1172
+ /* isOptionalObject*/
1173
+ false,
1174
+ doc.expandedStates,
1175
+ -1
1176
+ ) : doc.contents;
1177
+ cmds.push({
1178
+ mode: groupMode,
1179
+ doc: contents
1180
+ });
1181
+ break;
1182
+ }
1183
+ case DOC_TYPE_IF_BREAK: {
1184
+ const groupMode = doc.groupId ? groupModeMap[doc.groupId] || MODE_FLAT : mode;
1185
+ const contents = groupMode === MODE_BREAK ? doc.breakContents : doc.flatContents;
1186
+ if (contents) {
1187
+ cmds.push({
1188
+ mode,
1189
+ doc: contents
1190
+ });
1191
+ }
1192
+ break;
1193
+ }
1194
+ case DOC_TYPE_LINE:
1195
+ if (mode === MODE_BREAK || doc.hard) {
1196
+ return true;
1197
+ }
1198
+ if (!doc.soft) {
1199
+ out.push(" ");
1200
+ width--;
1201
+ }
1202
+ break;
1203
+ case DOC_TYPE_LINE_SUFFIX:
1204
+ hasLineSuffix = true;
1205
+ break;
1206
+ case DOC_TYPE_LINE_SUFFIX_BOUNDARY:
1207
+ if (hasLineSuffix) {
1208
+ return false;
1209
+ }
1210
+ break;
1211
+ }
1212
+ }
1213
+ return false;
1214
+ }
1215
+ function printDocToString(doc, options) {
1216
+ const groupModeMap = {};
1217
+ const width = options.printWidth;
1218
+ const newLine = convertEndOfLineToChars(options.endOfLine);
1219
+ let pos = 0;
1220
+ const cmds = [{
1221
+ ind: rootIndent(),
1222
+ mode: MODE_BREAK,
1223
+ doc
1224
+ }];
1225
+ const out = [];
1226
+ let shouldRemeasure = false;
1227
+ const lineSuffix2 = [];
1228
+ let printedCursorCount = 0;
1229
+ propagateBreaks(doc);
1230
+ while (cmds.length > 0) {
1231
+ const {
1232
+ ind,
1233
+ mode,
1234
+ doc: doc2
1235
+ } = cmds.pop();
1236
+ switch (get_doc_type_default(doc2)) {
1237
+ case DOC_TYPE_STRING: {
1238
+ const formatted = newLine !== "\n" ? string_replace_all_default(
1239
+ /* isOptionalObject*/
1240
+ false,
1241
+ doc2,
1242
+ "\n",
1243
+ newLine
1244
+ ) : doc2;
1245
+ out.push(formatted);
1246
+ if (cmds.length > 0) {
1247
+ pos += get_string_width_default(formatted);
1248
+ }
1249
+ break;
1250
+ }
1251
+ case DOC_TYPE_ARRAY:
1252
+ for (let i = doc2.length - 1; i >= 0; i--) {
1253
+ cmds.push({
1254
+ ind,
1255
+ mode,
1256
+ doc: doc2[i]
1257
+ });
1258
+ }
1259
+ break;
1260
+ case DOC_TYPE_CURSOR:
1261
+ if (printedCursorCount >= 2) {
1262
+ throw new Error("There are too many 'cursor' in doc.");
1263
+ }
1264
+ out.push(CURSOR_PLACEHOLDER);
1265
+ printedCursorCount++;
1266
+ break;
1267
+ case DOC_TYPE_INDENT:
1268
+ cmds.push({
1269
+ ind: makeIndent(ind, options),
1270
+ mode,
1271
+ doc: doc2.contents
1272
+ });
1273
+ break;
1274
+ case DOC_TYPE_ALIGN:
1275
+ cmds.push({
1276
+ ind: makeAlign(ind, doc2.n, options),
1277
+ mode,
1278
+ doc: doc2.contents
1279
+ });
1280
+ break;
1281
+ case DOC_TYPE_TRIM:
1282
+ pos -= trim2(out);
1283
+ break;
1284
+ case DOC_TYPE_GROUP:
1285
+ switch (mode) {
1286
+ case MODE_FLAT:
1287
+ if (!shouldRemeasure) {
1288
+ cmds.push({
1289
+ ind,
1290
+ mode: doc2.break ? MODE_BREAK : MODE_FLAT,
1291
+ doc: doc2.contents
1292
+ });
1293
+ break;
1294
+ }
1295
+ case MODE_BREAK: {
1296
+ shouldRemeasure = false;
1297
+ const next = {
1298
+ ind,
1299
+ mode: MODE_FLAT,
1300
+ doc: doc2.contents
1301
+ };
1302
+ const rem = width - pos;
1303
+ const hasLineSuffix = lineSuffix2.length > 0;
1304
+ if (!doc2.break && fits(next, cmds, rem, hasLineSuffix, groupModeMap)) {
1305
+ cmds.push(next);
1306
+ } else {
1307
+ if (doc2.expandedStates) {
1308
+ const mostExpanded = at_default(
1309
+ /* isOptionalObject*/
1310
+ false,
1311
+ doc2.expandedStates,
1312
+ -1
1313
+ );
1314
+ if (doc2.break) {
1315
+ cmds.push({
1316
+ ind,
1317
+ mode: MODE_BREAK,
1318
+ doc: mostExpanded
1319
+ });
1320
+ break;
1321
+ } else {
1322
+ for (let i = 1; i < doc2.expandedStates.length + 1; i++) {
1323
+ if (i >= doc2.expandedStates.length) {
1324
+ cmds.push({
1325
+ ind,
1326
+ mode: MODE_BREAK,
1327
+ doc: mostExpanded
1328
+ });
1329
+ break;
1330
+ } else {
1331
+ const state = doc2.expandedStates[i];
1332
+ const cmd = {
1333
+ ind,
1334
+ mode: MODE_FLAT,
1335
+ doc: state
1336
+ };
1337
+ if (fits(cmd, cmds, rem, hasLineSuffix, groupModeMap)) {
1338
+ cmds.push(cmd);
1339
+ break;
1340
+ }
1341
+ }
1342
+ }
1343
+ }
1344
+ } else {
1345
+ cmds.push({
1346
+ ind,
1347
+ mode: MODE_BREAK,
1348
+ doc: doc2.contents
1349
+ });
1350
+ }
1351
+ }
1352
+ break;
1353
+ }
1354
+ }
1355
+ if (doc2.id) {
1356
+ groupModeMap[doc2.id] = at_default(
1357
+ /* isOptionalObject*/
1358
+ false,
1359
+ cmds,
1360
+ -1
1361
+ ).mode;
1362
+ }
1363
+ break;
1364
+ case DOC_TYPE_FILL: {
1365
+ const rem = width - pos;
1366
+ const {
1367
+ parts
1368
+ } = doc2;
1369
+ if (parts.length === 0) {
1370
+ break;
1371
+ }
1372
+ const [content, whitespace] = parts;
1373
+ const contentFlatCmd = {
1374
+ ind,
1375
+ mode: MODE_FLAT,
1376
+ doc: content
1377
+ };
1378
+ const contentBreakCmd = {
1379
+ ind,
1380
+ mode: MODE_BREAK,
1381
+ doc: content
1382
+ };
1383
+ const contentFits = fits(contentFlatCmd, [], rem, lineSuffix2.length > 0, groupModeMap, true);
1384
+ if (parts.length === 1) {
1385
+ if (contentFits) {
1386
+ cmds.push(contentFlatCmd);
1387
+ } else {
1388
+ cmds.push(contentBreakCmd);
1389
+ }
1390
+ break;
1391
+ }
1392
+ const whitespaceFlatCmd = {
1393
+ ind,
1394
+ mode: MODE_FLAT,
1395
+ doc: whitespace
1396
+ };
1397
+ const whitespaceBreakCmd = {
1398
+ ind,
1399
+ mode: MODE_BREAK,
1400
+ doc: whitespace
1401
+ };
1402
+ if (parts.length === 2) {
1403
+ if (contentFits) {
1404
+ cmds.push(whitespaceFlatCmd, contentFlatCmd);
1405
+ } else {
1406
+ cmds.push(whitespaceBreakCmd, contentBreakCmd);
1407
+ }
1408
+ break;
1409
+ }
1410
+ parts.splice(0, 2);
1411
+ const remainingCmd = {
1412
+ ind,
1413
+ mode,
1414
+ doc: fill(parts)
1415
+ };
1416
+ const secondContent = parts[0];
1417
+ const firstAndSecondContentFlatCmd = {
1418
+ ind,
1419
+ mode: MODE_FLAT,
1420
+ doc: [content, whitespace, secondContent]
1421
+ };
1422
+ const firstAndSecondContentFits = fits(firstAndSecondContentFlatCmd, [], rem, lineSuffix2.length > 0, groupModeMap, true);
1423
+ if (firstAndSecondContentFits) {
1424
+ cmds.push(remainingCmd, whitespaceFlatCmd, contentFlatCmd);
1425
+ } else if (contentFits) {
1426
+ cmds.push(remainingCmd, whitespaceBreakCmd, contentFlatCmd);
1427
+ } else {
1428
+ cmds.push(remainingCmd, whitespaceBreakCmd, contentBreakCmd);
1429
+ }
1430
+ break;
1431
+ }
1432
+ case DOC_TYPE_IF_BREAK:
1433
+ case DOC_TYPE_INDENT_IF_BREAK: {
1434
+ const groupMode = doc2.groupId ? groupModeMap[doc2.groupId] : mode;
1435
+ if (groupMode === MODE_BREAK) {
1436
+ const breakContents = doc2.type === DOC_TYPE_IF_BREAK ? doc2.breakContents : doc2.negate ? doc2.contents : indent(doc2.contents);
1437
+ if (breakContents) {
1438
+ cmds.push({
1439
+ ind,
1440
+ mode,
1441
+ doc: breakContents
1442
+ });
1443
+ }
1444
+ }
1445
+ if (groupMode === MODE_FLAT) {
1446
+ const flatContents = doc2.type === DOC_TYPE_IF_BREAK ? doc2.flatContents : doc2.negate ? indent(doc2.contents) : doc2.contents;
1447
+ if (flatContents) {
1448
+ cmds.push({
1449
+ ind,
1450
+ mode,
1451
+ doc: flatContents
1452
+ });
1453
+ }
1454
+ }
1455
+ break;
1456
+ }
1457
+ case DOC_TYPE_LINE_SUFFIX:
1458
+ lineSuffix2.push({
1459
+ ind,
1460
+ mode,
1461
+ doc: doc2.contents
1462
+ });
1463
+ break;
1464
+ case DOC_TYPE_LINE_SUFFIX_BOUNDARY:
1465
+ if (lineSuffix2.length > 0) {
1466
+ cmds.push({
1467
+ ind,
1468
+ mode,
1469
+ doc: hardlineWithoutBreakParent
1470
+ });
1471
+ }
1472
+ break;
1473
+ case DOC_TYPE_LINE:
1474
+ switch (mode) {
1475
+ case MODE_FLAT:
1476
+ if (!doc2.hard) {
1477
+ if (!doc2.soft) {
1478
+ out.push(" ");
1479
+ pos += 1;
1480
+ }
1481
+ break;
1482
+ } else {
1483
+ shouldRemeasure = true;
1484
+ }
1485
+ case MODE_BREAK:
1486
+ if (lineSuffix2.length > 0) {
1487
+ cmds.push({
1488
+ ind,
1489
+ mode,
1490
+ doc: doc2
1491
+ }, ...lineSuffix2.reverse());
1492
+ lineSuffix2.length = 0;
1493
+ break;
1494
+ }
1495
+ if (doc2.literal) {
1496
+ if (ind.root) {
1497
+ out.push(newLine, ind.root.value);
1498
+ pos = ind.root.length;
1499
+ } else {
1500
+ out.push(newLine);
1501
+ pos = 0;
1502
+ }
1503
+ } else {
1504
+ pos -= trim2(out);
1505
+ out.push(newLine + ind.value);
1506
+ pos = ind.length;
1507
+ }
1508
+ break;
1509
+ }
1510
+ break;
1511
+ case DOC_TYPE_LABEL:
1512
+ cmds.push({
1513
+ ind,
1514
+ mode,
1515
+ doc: doc2.contents
1516
+ });
1517
+ break;
1518
+ case DOC_TYPE_BREAK_PARENT:
1519
+ break;
1520
+ default:
1521
+ throw new invalid_doc_error_default(doc2);
1522
+ }
1523
+ if (cmds.length === 0 && lineSuffix2.length > 0) {
1524
+ cmds.push(...lineSuffix2.reverse());
1525
+ lineSuffix2.length = 0;
1526
+ }
1527
+ }
1528
+ const cursorPlaceholderIndex = out.indexOf(CURSOR_PLACEHOLDER);
1529
+ if (cursorPlaceholderIndex !== -1) {
1530
+ const otherCursorPlaceholderIndex = out.indexOf(CURSOR_PLACEHOLDER, cursorPlaceholderIndex + 1);
1531
+ const beforeCursor = out.slice(0, cursorPlaceholderIndex).join("");
1532
+ const aroundCursor = out.slice(cursorPlaceholderIndex + 1, otherCursorPlaceholderIndex).join("");
1533
+ const afterCursor = out.slice(otherCursorPlaceholderIndex + 1).join("");
1534
+ return {
1535
+ formatted: beforeCursor + aroundCursor + afterCursor,
1536
+ cursorNodeStart: beforeCursor.length,
1537
+ cursorNodeText: aroundCursor
1538
+ };
1539
+ }
1540
+ return {
1541
+ formatted: out.join("")
1542
+ };
1543
+ }
1544
+ var builders = {
1545
+ join,
1546
+ line,
1547
+ softline,
1548
+ hardline,
1549
+ literalline,
1550
+ group,
1551
+ conditionalGroup,
1552
+ fill,
1553
+ lineSuffix,
1554
+ lineSuffixBoundary,
1555
+ cursor,
1556
+ breakParent,
1557
+ ifBreak,
1558
+ trim,
1559
+ indent,
1560
+ indentIfBreak,
1561
+ align,
1562
+ addAlignmentToDoc,
1563
+ markAsRoot,
1564
+ dedentToRoot,
1565
+ dedent,
1566
+ hardlineWithoutBreakParent,
1567
+ literallineWithoutBreakParent,
1568
+ label,
1569
+ // TODO: Remove this in v4
1570
+ concat: (parts) => parts
1571
+ };
1572
+ var printer = { printDocToString };
1573
+ var utils = {
1574
+ willBreak,
1575
+ traverseDoc: traverse_doc_default,
1576
+ findInDoc,
1577
+ mapDoc,
1578
+ removeLines,
1579
+ stripTrailingHardline,
1580
+ replaceEndOfLine,
1581
+ canBreak
1582
+ };
1583
+
310
1584
  // src/weaverse-client.ts
311
1585
  var WeaverseClient = class {
312
1586
  API = "api/public/project";
@@ -381,7 +1655,7 @@ var WeaverseClient = class {
381
1655
  if (isDesignMode) {
382
1656
  res = await fetch(`${weaverseHost}/${API}/${projectId}/configs`, {
383
1657
  method: "POST"
384
- });
1658
+ }).then((res2) => res2.json());
385
1659
  } else {
386
1660
  res = await this.fetchWithCache(
387
1661
  `${weaverseHost}/${API}/${projectId}/configs`,
@@ -389,6 +1663,20 @@ var WeaverseClient = class {
389
1663
  );
390
1664
  }
391
1665
  let data = res || {};
1666
+ if (data?.theme && this.themeSchema?.inspector) {
1667
+ let defaultThemeSchema = {};
1668
+ this.themeSchema.inspector.forEach((group2) => {
1669
+ group2.inputs.forEach((input) => {
1670
+ if (typeof input.name === "string" && input.defaultValue) {
1671
+ defaultThemeSchema[input.name] = input.defaultValue;
1672
+ }
1673
+ });
1674
+ });
1675
+ data.theme = {
1676
+ ...defaultThemeSchema,
1677
+ ...data.theme
1678
+ };
1679
+ }
392
1680
  if (this.configs.isDesignMode) {
393
1681
  data = {
394
1682
  ...data,
@@ -497,7 +1785,7 @@ function getSelectedProductOptions(request) {
497
1785
  }
498
1786
 
499
1787
  // src/index.ts
500
- var WeaverseHydrogen = class extends import_react11.Weaverse {
1788
+ var WeaverseHydrogen = class extends import_react12.Weaverse {
501
1789
  platformType = "shopify-hydrogen";
502
1790
  pageId;
503
1791
  internal;
@@ -524,7 +1812,7 @@ var WeaverseHydrogen = class extends import_react11.Weaverse {
524
1812
  });
525
1813
  }
526
1814
  };
527
- var WeaverseHydrogenItem = class extends import_react11.WeaverseItemStore {
1815
+ var WeaverseHydrogenItem = class extends import_react12.WeaverseItemStore {
528
1816
  constructor(initialData, weaverse) {
529
1817
  super(initialData, weaverse);
530
1818
  let { data, ...rest } = initialData;
@@ -534,7 +1822,7 @@ var WeaverseHydrogenItem = class extends import_react11.WeaverseItemStore {
534
1822
  return super.Element;
535
1823
  }
536
1824
  get data() {
537
- let defaultData = this.Element?.schema?.inspector?.flatMap((group) => group.inputs)?.reduce((a, { defaultValue, name }) => {
1825
+ let defaultData = this.Element?.schema?.inspector?.flatMap((group2) => group2.inputs)?.reduce((a, { defaultValue, name }) => {
538
1826
  if (name && defaultValue !== null && defaultValue !== void 0) {
539
1827
  a[name] = defaultValue;
540
1828
  }