@weaverse/hydrogen 2.2.2 → 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.mjs CHANGED
@@ -5,7 +5,7 @@ import {
5
5
  } from "@weaverse/react";
6
6
 
7
7
  // src/WeaverseHydrogenRoot.tsx
8
- import { Await, useLoaderData } from "@remix-run/react";
8
+ import { Await, useLoaderData, useRouteLoaderData } from "@remix-run/react";
9
9
  import { WeaverseRoot } from "@weaverse/react";
10
10
  import React, { memo, Suspense } from "react";
11
11
  import { ErrorBoundary } from "react-error-boundary";
@@ -91,6 +91,7 @@ function useStudio(weaverse) {
91
91
 
92
92
  // src/hooks/use-theme-settings.ts
93
93
  import { useSyncExternalStore } from "react";
94
+ import { isBrowser as isBrowser2 } from "@weaverse/react";
94
95
  var ThemeSettingsStore = class _ThemeSettingsStore {
95
96
  static settings = null;
96
97
  listeners = [];
@@ -99,13 +100,13 @@ var ThemeSettingsStore = class _ThemeSettingsStore {
99
100
  publicEnv;
100
101
  constructor(data) {
101
102
  let { theme, countries, schema, publicEnv } = data || {};
102
- if (!_ThemeSettingsStore.settings) {
103
- _ThemeSettingsStore.settings = theme || {};
104
- } else {
103
+ if (isBrowser2 && _ThemeSettingsStore.settings) {
105
104
  _ThemeSettingsStore.settings = {
106
105
  ...theme,
107
106
  ..._ThemeSettingsStore.settings
108
107
  };
108
+ } else {
109
+ _ThemeSettingsStore.settings = theme || {};
109
110
  }
110
111
  this.countries = countries;
111
112
  this.schema = schema;
@@ -178,8 +179,8 @@ function RenderRoot(props) {
178
179
  }
179
180
  function withWeaverse(Component) {
180
181
  return (props) => {
181
- let { weaverseTheme } = useLoaderData();
182
- let themeSettingsStore = new ThemeSettingsStore(weaverseTheme);
182
+ let loaderData = useRouteLoaderData("root");
183
+ let themeSettingsStore = new ThemeSettingsStore(loaderData?.weaverseTheme);
183
184
  return /* @__PURE__ */ React.createElement(ThemeProvider.Provider, { value: themeSettingsStore }, /* @__PURE__ */ React.createElement(Component, { ...props }));
184
185
  };
185
186
  }
@@ -192,7 +193,7 @@ import { createWithCache } from "@shopify/hydrogen";
192
193
 
193
194
  // package.json
194
195
  var package_default = {
195
- version: "2.2.2",
196
+ version: "2.2.5",
196
197
  license: "MIT",
197
198
  main: "dist/index.js",
198
199
  typings: "dist/index.d.ts",
@@ -226,12 +227,12 @@ var package_default = {
226
227
  author: "Weaverse Team",
227
228
  dependencies: {
228
229
  "@remix-run/react": "1.19.1",
229
- "@shopify/hydrogen": "2023.7.10",
230
- "@weaverse/react": "2.2.2",
230
+ "@shopify/hydrogen": "2023.7.11",
231
+ "@weaverse/react": "2.2.5",
231
232
  "react-error-boundary": "^4.0.11"
232
233
  },
233
234
  devDependencies: {
234
- "@shopify/remix-oxygen": "^1.1.6"
235
+ "@shopify/remix-oxygen": "^1.1.7"
235
236
  }
236
237
  };
237
238
 
@@ -267,6 +268,1279 @@ function getWeaverseConfigs(request, env) {
267
268
  };
268
269
  }
269
270
 
271
+ // ../../node_modules/prettier/doc.mjs
272
+ var __defProp = Object.defineProperty;
273
+ var __export = (target, all) => {
274
+ for (var name in all)
275
+ __defProp(target, name, { get: all[name], enumerable: true });
276
+ };
277
+ var public_exports = {};
278
+ __export(public_exports, {
279
+ builders: () => builders,
280
+ printer: () => printer,
281
+ utils: () => utils
282
+ });
283
+ var DOC_TYPE_STRING = "string";
284
+ var DOC_TYPE_ARRAY = "array";
285
+ var DOC_TYPE_CURSOR = "cursor";
286
+ var DOC_TYPE_INDENT = "indent";
287
+ var DOC_TYPE_ALIGN = "align";
288
+ var DOC_TYPE_TRIM = "trim";
289
+ var DOC_TYPE_GROUP = "group";
290
+ var DOC_TYPE_FILL = "fill";
291
+ var DOC_TYPE_IF_BREAK = "if-break";
292
+ var DOC_TYPE_INDENT_IF_BREAK = "indent-if-break";
293
+ var DOC_TYPE_LINE_SUFFIX = "line-suffix";
294
+ var DOC_TYPE_LINE_SUFFIX_BOUNDARY = "line-suffix-boundary";
295
+ var DOC_TYPE_LINE = "line";
296
+ var DOC_TYPE_LABEL = "label";
297
+ var DOC_TYPE_BREAK_PARENT = "break-parent";
298
+ var VALID_OBJECT_DOC_TYPES = /* @__PURE__ */ new Set([
299
+ DOC_TYPE_CURSOR,
300
+ DOC_TYPE_INDENT,
301
+ DOC_TYPE_ALIGN,
302
+ DOC_TYPE_TRIM,
303
+ DOC_TYPE_GROUP,
304
+ DOC_TYPE_FILL,
305
+ DOC_TYPE_IF_BREAK,
306
+ DOC_TYPE_INDENT_IF_BREAK,
307
+ DOC_TYPE_LINE_SUFFIX,
308
+ DOC_TYPE_LINE_SUFFIX_BOUNDARY,
309
+ DOC_TYPE_LINE,
310
+ DOC_TYPE_LABEL,
311
+ DOC_TYPE_BREAK_PARENT
312
+ ]);
313
+ function getDocType(doc) {
314
+ if (typeof doc === "string") {
315
+ return DOC_TYPE_STRING;
316
+ }
317
+ if (Array.isArray(doc)) {
318
+ return DOC_TYPE_ARRAY;
319
+ }
320
+ if (!doc) {
321
+ return;
322
+ }
323
+ const { type } = doc;
324
+ if (VALID_OBJECT_DOC_TYPES.has(type)) {
325
+ return type;
326
+ }
327
+ }
328
+ var get_doc_type_default = getDocType;
329
+ var disjunctionListFormat = (list) => new Intl.ListFormat("en-US", { type: "disjunction" }).format(list);
330
+ function getDocErrorMessage(doc) {
331
+ const type = doc === null ? "null" : typeof doc;
332
+ if (type !== "string" && type !== "object") {
333
+ return `Unexpected doc '${type}',
334
+ Expected it to be 'string' or 'object'.`;
335
+ }
336
+ if (get_doc_type_default(doc)) {
337
+ throw new Error("doc is valid.");
338
+ }
339
+ const objectType = Object.prototype.toString.call(doc);
340
+ if (objectType !== "[object Object]") {
341
+ return `Unexpected doc '${objectType}'.`;
342
+ }
343
+ const EXPECTED_TYPE_VALUES = disjunctionListFormat(
344
+ [...VALID_OBJECT_DOC_TYPES].map((type2) => `'${type2}'`)
345
+ );
346
+ return `Unexpected doc.type '${doc.type}'.
347
+ Expected it to be ${EXPECTED_TYPE_VALUES}.`;
348
+ }
349
+ var InvalidDocError = class extends Error {
350
+ name = "InvalidDocError";
351
+ constructor(doc) {
352
+ super(getDocErrorMessage(doc));
353
+ this.doc = doc;
354
+ }
355
+ };
356
+ var invalid_doc_error_default = InvalidDocError;
357
+ var traverseDocOnExitStackMarker = {};
358
+ function traverseDoc(doc, onEnter, onExit, shouldTraverseConditionalGroups) {
359
+ const docsStack = [doc];
360
+ while (docsStack.length > 0) {
361
+ const doc2 = docsStack.pop();
362
+ if (doc2 === traverseDocOnExitStackMarker) {
363
+ onExit(docsStack.pop());
364
+ continue;
365
+ }
366
+ if (onExit) {
367
+ docsStack.push(doc2, traverseDocOnExitStackMarker);
368
+ }
369
+ const docType = get_doc_type_default(doc2);
370
+ if (!docType) {
371
+ throw new invalid_doc_error_default(doc2);
372
+ }
373
+ if ((onEnter == null ? void 0 : onEnter(doc2)) === false) {
374
+ continue;
375
+ }
376
+ switch (docType) {
377
+ case DOC_TYPE_ARRAY:
378
+ case DOC_TYPE_FILL: {
379
+ const parts = docType === DOC_TYPE_ARRAY ? doc2 : doc2.parts;
380
+ for (let ic = parts.length, i = ic - 1; i >= 0; --i) {
381
+ docsStack.push(parts[i]);
382
+ }
383
+ break;
384
+ }
385
+ case DOC_TYPE_IF_BREAK:
386
+ docsStack.push(doc2.flatContents, doc2.breakContents);
387
+ break;
388
+ case DOC_TYPE_GROUP:
389
+ if (shouldTraverseConditionalGroups && doc2.expandedStates) {
390
+ for (let ic = doc2.expandedStates.length, i = ic - 1; i >= 0; --i) {
391
+ docsStack.push(doc2.expandedStates[i]);
392
+ }
393
+ } else {
394
+ docsStack.push(doc2.contents);
395
+ }
396
+ break;
397
+ case DOC_TYPE_ALIGN:
398
+ case DOC_TYPE_INDENT:
399
+ case DOC_TYPE_INDENT_IF_BREAK:
400
+ case DOC_TYPE_LABEL:
401
+ case DOC_TYPE_LINE_SUFFIX:
402
+ docsStack.push(doc2.contents);
403
+ break;
404
+ case DOC_TYPE_STRING:
405
+ case DOC_TYPE_CURSOR:
406
+ case DOC_TYPE_TRIM:
407
+ case DOC_TYPE_LINE_SUFFIX_BOUNDARY:
408
+ case DOC_TYPE_LINE:
409
+ case DOC_TYPE_BREAK_PARENT:
410
+ break;
411
+ default:
412
+ throw new invalid_doc_error_default(doc2);
413
+ }
414
+ }
415
+ }
416
+ var traverse_doc_default = traverseDoc;
417
+ var noop = () => {
418
+ };
419
+ var assertDoc = true ? noop : function(doc) {
420
+ traverse_doc_default(doc, (doc2) => {
421
+ if (checked.has(doc2)) {
422
+ return false;
423
+ }
424
+ if (typeof doc2 !== "string") {
425
+ checked.add(doc2);
426
+ }
427
+ });
428
+ };
429
+ var assertDocArray = true ? noop : function(docs, optional = false) {
430
+ if (optional && !docs) {
431
+ return;
432
+ }
433
+ if (!Array.isArray(docs)) {
434
+ throw new TypeError("Unexpected doc array.");
435
+ }
436
+ for (const doc of docs) {
437
+ assertDoc(doc);
438
+ }
439
+ };
440
+ function indent(contents) {
441
+ assertDoc(contents);
442
+ return { type: DOC_TYPE_INDENT, contents };
443
+ }
444
+ function align(widthOrString, contents) {
445
+ assertDoc(contents);
446
+ return { type: DOC_TYPE_ALIGN, contents, n: widthOrString };
447
+ }
448
+ function group(contents, opts = {}) {
449
+ assertDoc(contents);
450
+ assertDocArray(
451
+ opts.expandedStates,
452
+ /* optional */
453
+ true
454
+ );
455
+ return {
456
+ type: DOC_TYPE_GROUP,
457
+ id: opts.id,
458
+ contents,
459
+ break: Boolean(opts.shouldBreak),
460
+ expandedStates: opts.expandedStates
461
+ };
462
+ }
463
+ function dedentToRoot(contents) {
464
+ return align(Number.NEGATIVE_INFINITY, contents);
465
+ }
466
+ function markAsRoot(contents) {
467
+ return align({ type: "root" }, contents);
468
+ }
469
+ function dedent(contents) {
470
+ return align(-1, contents);
471
+ }
472
+ function conditionalGroup(states, opts) {
473
+ return group(states[0], { ...opts, expandedStates: states });
474
+ }
475
+ function fill(parts) {
476
+ assertDocArray(parts);
477
+ return { type: DOC_TYPE_FILL, parts };
478
+ }
479
+ function ifBreak(breakContents, flatContents = "", opts = {}) {
480
+ assertDoc(breakContents);
481
+ if (flatContents !== "") {
482
+ assertDoc(flatContents);
483
+ }
484
+ return {
485
+ type: DOC_TYPE_IF_BREAK,
486
+ breakContents,
487
+ flatContents,
488
+ groupId: opts.groupId
489
+ };
490
+ }
491
+ function indentIfBreak(contents, opts) {
492
+ assertDoc(contents);
493
+ return {
494
+ type: DOC_TYPE_INDENT_IF_BREAK,
495
+ contents,
496
+ groupId: opts.groupId,
497
+ negate: opts.negate
498
+ };
499
+ }
500
+ function lineSuffix(contents) {
501
+ assertDoc(contents);
502
+ return { type: DOC_TYPE_LINE_SUFFIX, contents };
503
+ }
504
+ var lineSuffixBoundary = { type: DOC_TYPE_LINE_SUFFIX_BOUNDARY };
505
+ var breakParent = { type: DOC_TYPE_BREAK_PARENT };
506
+ var trim = { type: DOC_TYPE_TRIM };
507
+ var hardlineWithoutBreakParent = { type: DOC_TYPE_LINE, hard: true };
508
+ var literallineWithoutBreakParent = {
509
+ type: DOC_TYPE_LINE,
510
+ hard: true,
511
+ literal: true
512
+ };
513
+ var line = { type: DOC_TYPE_LINE };
514
+ var softline = { type: DOC_TYPE_LINE, soft: true };
515
+ var hardline = [hardlineWithoutBreakParent, breakParent];
516
+ var literalline = [literallineWithoutBreakParent, breakParent];
517
+ var cursor = { type: DOC_TYPE_CURSOR };
518
+ function join(separator, docs) {
519
+ assertDoc(separator);
520
+ assertDocArray(docs);
521
+ const parts = [];
522
+ for (let i = 0; i < docs.length; i++) {
523
+ if (i !== 0) {
524
+ parts.push(separator);
525
+ }
526
+ parts.push(docs[i]);
527
+ }
528
+ return parts;
529
+ }
530
+ function addAlignmentToDoc(doc, size, tabWidth) {
531
+ assertDoc(doc);
532
+ let aligned = doc;
533
+ if (size > 0) {
534
+ for (let i = 0; i < Math.floor(size / tabWidth); ++i) {
535
+ aligned = indent(aligned);
536
+ }
537
+ aligned = align(size % tabWidth, aligned);
538
+ aligned = align(Number.NEGATIVE_INFINITY, aligned);
539
+ }
540
+ return aligned;
541
+ }
542
+ function label(label2, contents) {
543
+ assertDoc(contents);
544
+ return label2 ? { type: DOC_TYPE_LABEL, label: label2, contents } : contents;
545
+ }
546
+ var at = (isOptionalObject, object, index) => {
547
+ if (isOptionalObject && (object === void 0 || object === null)) {
548
+ return;
549
+ }
550
+ if (Array.isArray(object) || typeof object === "string") {
551
+ return object[index < 0 ? object.length + index : index];
552
+ }
553
+ return object.at(index);
554
+ };
555
+ var at_default = at;
556
+ var stringReplaceAll = (isOptionalObject, original, pattern, replacement) => {
557
+ if (isOptionalObject && (original === void 0 || original === null)) {
558
+ return;
559
+ }
560
+ if (original.replaceAll) {
561
+ return original.replaceAll(pattern, replacement);
562
+ }
563
+ if (pattern.global) {
564
+ return original.replace(pattern, replacement);
565
+ }
566
+ return original.split(pattern).join(replacement);
567
+ };
568
+ var string_replace_all_default = stringReplaceAll;
569
+ function convertEndOfLineToChars(value) {
570
+ switch (value) {
571
+ case "cr":
572
+ return "\r";
573
+ case "crlf":
574
+ return "\r\n";
575
+ default:
576
+ return "\n";
577
+ }
578
+ }
579
+ var emoji_regex_default = () => {
580
+ 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;
581
+ };
582
+ var eastasianwidth_default = {
583
+ eastAsianWidth(character) {
584
+ var x = character.charCodeAt(0);
585
+ var y = character.length == 2 ? character.charCodeAt(1) : 0;
586
+ var codePoint = x;
587
+ if (55296 <= x && x <= 56319 && 56320 <= y && y <= 57343) {
588
+ x &= 1023;
589
+ y &= 1023;
590
+ codePoint = x << 10 | y;
591
+ codePoint += 65536;
592
+ }
593
+ if (12288 == codePoint || 65281 <= codePoint && codePoint <= 65376 || 65504 <= codePoint && codePoint <= 65510) {
594
+ return "F";
595
+ }
596
+ 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) {
597
+ return "W";
598
+ }
599
+ return "N";
600
+ }
601
+ };
602
+ var notAsciiRegex = /[^\x20-\x7F]/;
603
+ function getStringWidth(text) {
604
+ if (!text) {
605
+ return 0;
606
+ }
607
+ if (!notAsciiRegex.test(text)) {
608
+ return text.length;
609
+ }
610
+ text = text.replace(emoji_regex_default(), " ");
611
+ let width = 0;
612
+ for (const character of text) {
613
+ const codePoint = character.codePointAt(0);
614
+ if (codePoint <= 31 || codePoint >= 127 && codePoint <= 159) {
615
+ continue;
616
+ }
617
+ if (codePoint >= 768 && codePoint <= 879) {
618
+ continue;
619
+ }
620
+ const code = eastasianwidth_default.eastAsianWidth(character);
621
+ width += code === "F" || code === "W" ? 2 : 1;
622
+ }
623
+ return width;
624
+ }
625
+ var get_string_width_default = getStringWidth;
626
+ var getDocParts = (doc) => {
627
+ if (Array.isArray(doc)) {
628
+ return doc;
629
+ }
630
+ if (doc.type !== DOC_TYPE_FILL) {
631
+ throw new Error(`Expect doc to be 'array' or '${DOC_TYPE_FILL}'.`);
632
+ }
633
+ return doc.parts;
634
+ };
635
+ function mapDoc(doc, cb) {
636
+ if (typeof doc === "string") {
637
+ return cb(doc);
638
+ }
639
+ const mapped = /* @__PURE__ */ new Map();
640
+ return rec(doc);
641
+ function rec(doc2) {
642
+ if (mapped.has(doc2)) {
643
+ return mapped.get(doc2);
644
+ }
645
+ const result = process2(doc2);
646
+ mapped.set(doc2, result);
647
+ return result;
648
+ }
649
+ function process2(doc2) {
650
+ switch (get_doc_type_default(doc2)) {
651
+ case DOC_TYPE_ARRAY:
652
+ return cb(doc2.map(rec));
653
+ case DOC_TYPE_FILL:
654
+ return cb({
655
+ ...doc2,
656
+ parts: doc2.parts.map(rec)
657
+ });
658
+ case DOC_TYPE_IF_BREAK:
659
+ return cb({
660
+ ...doc2,
661
+ breakContents: rec(doc2.breakContents),
662
+ flatContents: rec(doc2.flatContents)
663
+ });
664
+ case DOC_TYPE_GROUP: {
665
+ let {
666
+ expandedStates,
667
+ contents
668
+ } = doc2;
669
+ if (expandedStates) {
670
+ expandedStates = expandedStates.map(rec);
671
+ contents = expandedStates[0];
672
+ } else {
673
+ contents = rec(contents);
674
+ }
675
+ return cb({
676
+ ...doc2,
677
+ contents,
678
+ expandedStates
679
+ });
680
+ }
681
+ case DOC_TYPE_ALIGN:
682
+ case DOC_TYPE_INDENT:
683
+ case DOC_TYPE_INDENT_IF_BREAK:
684
+ case DOC_TYPE_LABEL:
685
+ case DOC_TYPE_LINE_SUFFIX:
686
+ return cb({
687
+ ...doc2,
688
+ contents: rec(doc2.contents)
689
+ });
690
+ case DOC_TYPE_STRING:
691
+ case DOC_TYPE_CURSOR:
692
+ case DOC_TYPE_TRIM:
693
+ case DOC_TYPE_LINE_SUFFIX_BOUNDARY:
694
+ case DOC_TYPE_LINE:
695
+ case DOC_TYPE_BREAK_PARENT:
696
+ return cb(doc2);
697
+ default:
698
+ throw new invalid_doc_error_default(doc2);
699
+ }
700
+ }
701
+ }
702
+ function findInDoc(doc, fn, defaultValue) {
703
+ let result = defaultValue;
704
+ let shouldSkipFurtherProcessing = false;
705
+ function findInDocOnEnterFn(doc2) {
706
+ if (shouldSkipFurtherProcessing) {
707
+ return false;
708
+ }
709
+ const maybeResult = fn(doc2);
710
+ if (maybeResult !== void 0) {
711
+ shouldSkipFurtherProcessing = true;
712
+ result = maybeResult;
713
+ }
714
+ }
715
+ traverse_doc_default(doc, findInDocOnEnterFn);
716
+ return result;
717
+ }
718
+ function willBreakFn(doc) {
719
+ if (doc.type === DOC_TYPE_GROUP && doc.break) {
720
+ return true;
721
+ }
722
+ if (doc.type === DOC_TYPE_LINE && doc.hard) {
723
+ return true;
724
+ }
725
+ if (doc.type === DOC_TYPE_BREAK_PARENT) {
726
+ return true;
727
+ }
728
+ }
729
+ function willBreak(doc) {
730
+ return findInDoc(doc, willBreakFn, false);
731
+ }
732
+ function breakParentGroup(groupStack) {
733
+ if (groupStack.length > 0) {
734
+ const parentGroup = at_default(
735
+ /* isOptionalObject*/
736
+ false,
737
+ groupStack,
738
+ -1
739
+ );
740
+ if (!parentGroup.expandedStates && !parentGroup.break) {
741
+ parentGroup.break = "propagated";
742
+ }
743
+ }
744
+ return null;
745
+ }
746
+ function propagateBreaks(doc) {
747
+ const alreadyVisitedSet = /* @__PURE__ */ new Set();
748
+ const groupStack = [];
749
+ function propagateBreaksOnEnterFn(doc2) {
750
+ if (doc2.type === DOC_TYPE_BREAK_PARENT) {
751
+ breakParentGroup(groupStack);
752
+ }
753
+ if (doc2.type === DOC_TYPE_GROUP) {
754
+ groupStack.push(doc2);
755
+ if (alreadyVisitedSet.has(doc2)) {
756
+ return false;
757
+ }
758
+ alreadyVisitedSet.add(doc2);
759
+ }
760
+ }
761
+ function propagateBreaksOnExitFn(doc2) {
762
+ if (doc2.type === DOC_TYPE_GROUP) {
763
+ const group2 = groupStack.pop();
764
+ if (group2.break) {
765
+ breakParentGroup(groupStack);
766
+ }
767
+ }
768
+ }
769
+ traverse_doc_default(
770
+ doc,
771
+ propagateBreaksOnEnterFn,
772
+ propagateBreaksOnExitFn,
773
+ /* shouldTraverseConditionalGroups */
774
+ true
775
+ );
776
+ }
777
+ function removeLinesFn(doc) {
778
+ if (doc.type === DOC_TYPE_LINE && !doc.hard) {
779
+ return doc.soft ? "" : " ";
780
+ }
781
+ if (doc.type === DOC_TYPE_IF_BREAK) {
782
+ return doc.flatContents;
783
+ }
784
+ return doc;
785
+ }
786
+ function removeLines(doc) {
787
+ return mapDoc(doc, removeLinesFn);
788
+ }
789
+ function stripTrailingHardlineFromParts(parts) {
790
+ parts = [...parts];
791
+ while (parts.length >= 2 && at_default(
792
+ /* isOptionalObject*/
793
+ false,
794
+ parts,
795
+ -2
796
+ ).type === DOC_TYPE_LINE && at_default(
797
+ /* isOptionalObject*/
798
+ false,
799
+ parts,
800
+ -1
801
+ ).type === DOC_TYPE_BREAK_PARENT) {
802
+ parts.length -= 2;
803
+ }
804
+ if (parts.length > 0) {
805
+ const lastPart = stripTrailingHardlineFromDoc(at_default(
806
+ /* isOptionalObject*/
807
+ false,
808
+ parts,
809
+ -1
810
+ ));
811
+ parts[parts.length - 1] = lastPart;
812
+ }
813
+ return parts;
814
+ }
815
+ function stripTrailingHardlineFromDoc(doc) {
816
+ switch (get_doc_type_default(doc)) {
817
+ case DOC_TYPE_ALIGN:
818
+ case DOC_TYPE_INDENT:
819
+ case DOC_TYPE_INDENT_IF_BREAK:
820
+ case DOC_TYPE_GROUP:
821
+ case DOC_TYPE_LINE_SUFFIX:
822
+ case DOC_TYPE_LABEL: {
823
+ const contents = stripTrailingHardlineFromDoc(doc.contents);
824
+ return {
825
+ ...doc,
826
+ contents
827
+ };
828
+ }
829
+ case DOC_TYPE_IF_BREAK:
830
+ return {
831
+ ...doc,
832
+ breakContents: stripTrailingHardlineFromDoc(doc.breakContents),
833
+ flatContents: stripTrailingHardlineFromDoc(doc.flatContents)
834
+ };
835
+ case DOC_TYPE_FILL:
836
+ return {
837
+ ...doc,
838
+ parts: stripTrailingHardlineFromParts(doc.parts)
839
+ };
840
+ case DOC_TYPE_ARRAY:
841
+ return stripTrailingHardlineFromParts(doc);
842
+ case DOC_TYPE_STRING:
843
+ return doc.replace(/[\n\r]*$/, "");
844
+ case DOC_TYPE_CURSOR:
845
+ case DOC_TYPE_TRIM:
846
+ case DOC_TYPE_LINE_SUFFIX_BOUNDARY:
847
+ case DOC_TYPE_LINE:
848
+ case DOC_TYPE_BREAK_PARENT:
849
+ break;
850
+ default:
851
+ throw new invalid_doc_error_default(doc);
852
+ }
853
+ return doc;
854
+ }
855
+ function stripTrailingHardline(doc) {
856
+ return stripTrailingHardlineFromDoc(cleanDoc(doc));
857
+ }
858
+ function cleanDocFn(doc) {
859
+ switch (get_doc_type_default(doc)) {
860
+ case DOC_TYPE_FILL:
861
+ if (doc.parts.every((part) => part === "")) {
862
+ return "";
863
+ }
864
+ break;
865
+ case DOC_TYPE_GROUP:
866
+ if (!doc.contents && !doc.id && !doc.break && !doc.expandedStates) {
867
+ return "";
868
+ }
869
+ if (doc.contents.type === DOC_TYPE_GROUP && doc.contents.id === doc.id && doc.contents.break === doc.break && doc.contents.expandedStates === doc.expandedStates) {
870
+ return doc.contents;
871
+ }
872
+ break;
873
+ case DOC_TYPE_ALIGN:
874
+ case DOC_TYPE_INDENT:
875
+ case DOC_TYPE_INDENT_IF_BREAK:
876
+ case DOC_TYPE_LINE_SUFFIX:
877
+ if (!doc.contents) {
878
+ return "";
879
+ }
880
+ break;
881
+ case DOC_TYPE_IF_BREAK:
882
+ if (!doc.flatContents && !doc.breakContents) {
883
+ return "";
884
+ }
885
+ break;
886
+ case DOC_TYPE_ARRAY: {
887
+ const parts = [];
888
+ for (const part of doc) {
889
+ if (!part) {
890
+ continue;
891
+ }
892
+ const [currentPart, ...restParts] = Array.isArray(part) ? part : [part];
893
+ if (typeof currentPart === "string" && typeof at_default(
894
+ /* isOptionalObject*/
895
+ false,
896
+ parts,
897
+ -1
898
+ ) === "string") {
899
+ parts[parts.length - 1] += currentPart;
900
+ } else {
901
+ parts.push(currentPart);
902
+ }
903
+ parts.push(...restParts);
904
+ }
905
+ if (parts.length === 0) {
906
+ return "";
907
+ }
908
+ if (parts.length === 1) {
909
+ return parts[0];
910
+ }
911
+ return parts;
912
+ }
913
+ case DOC_TYPE_STRING:
914
+ case DOC_TYPE_CURSOR:
915
+ case DOC_TYPE_TRIM:
916
+ case DOC_TYPE_LINE_SUFFIX_BOUNDARY:
917
+ case DOC_TYPE_LINE:
918
+ case DOC_TYPE_LABEL:
919
+ case DOC_TYPE_BREAK_PARENT:
920
+ break;
921
+ default:
922
+ throw new invalid_doc_error_default(doc);
923
+ }
924
+ return doc;
925
+ }
926
+ function cleanDoc(doc) {
927
+ return mapDoc(doc, (currentDoc) => cleanDocFn(currentDoc));
928
+ }
929
+ function replaceEndOfLine(doc, replacement = literalline) {
930
+ return mapDoc(doc, (currentDoc) => typeof currentDoc === "string" ? join(replacement, currentDoc.split("\n")) : currentDoc);
931
+ }
932
+ function canBreakFn(doc) {
933
+ if (doc.type === DOC_TYPE_LINE) {
934
+ return true;
935
+ }
936
+ }
937
+ function canBreak(doc) {
938
+ return findInDoc(doc, canBreakFn, false);
939
+ }
940
+ var MODE_BREAK = Symbol("MODE_BREAK");
941
+ var MODE_FLAT = Symbol("MODE_FLAT");
942
+ var CURSOR_PLACEHOLDER = Symbol("cursor");
943
+ function rootIndent() {
944
+ return {
945
+ value: "",
946
+ length: 0,
947
+ queue: []
948
+ };
949
+ }
950
+ function makeIndent(ind, options) {
951
+ return generateInd(ind, {
952
+ type: "indent"
953
+ }, options);
954
+ }
955
+ function makeAlign(indent2, widthOrDoc, options) {
956
+ if (widthOrDoc === Number.NEGATIVE_INFINITY) {
957
+ return indent2.root || rootIndent();
958
+ }
959
+ if (widthOrDoc < 0) {
960
+ return generateInd(indent2, {
961
+ type: "dedent"
962
+ }, options);
963
+ }
964
+ if (!widthOrDoc) {
965
+ return indent2;
966
+ }
967
+ if (widthOrDoc.type === "root") {
968
+ return {
969
+ ...indent2,
970
+ root: indent2
971
+ };
972
+ }
973
+ const alignType = typeof widthOrDoc === "string" ? "stringAlign" : "numberAlign";
974
+ return generateInd(indent2, {
975
+ type: alignType,
976
+ n: widthOrDoc
977
+ }, options);
978
+ }
979
+ function generateInd(ind, newPart, options) {
980
+ const queue = newPart.type === "dedent" ? ind.queue.slice(0, -1) : [...ind.queue, newPart];
981
+ let value = "";
982
+ let length = 0;
983
+ let lastTabs = 0;
984
+ let lastSpaces = 0;
985
+ for (const part of queue) {
986
+ switch (part.type) {
987
+ case "indent":
988
+ flush();
989
+ if (options.useTabs) {
990
+ addTabs(1);
991
+ } else {
992
+ addSpaces(options.tabWidth);
993
+ }
994
+ break;
995
+ case "stringAlign":
996
+ flush();
997
+ value += part.n;
998
+ length += part.n.length;
999
+ break;
1000
+ case "numberAlign":
1001
+ lastTabs += 1;
1002
+ lastSpaces += part.n;
1003
+ break;
1004
+ default:
1005
+ throw new Error(`Unexpected type '${part.type}'`);
1006
+ }
1007
+ }
1008
+ flushSpaces();
1009
+ return {
1010
+ ...ind,
1011
+ value,
1012
+ length,
1013
+ queue
1014
+ };
1015
+ function addTabs(count) {
1016
+ value += " ".repeat(count);
1017
+ length += options.tabWidth * count;
1018
+ }
1019
+ function addSpaces(count) {
1020
+ value += " ".repeat(count);
1021
+ length += count;
1022
+ }
1023
+ function flush() {
1024
+ if (options.useTabs) {
1025
+ flushTabs();
1026
+ } else {
1027
+ flushSpaces();
1028
+ }
1029
+ }
1030
+ function flushTabs() {
1031
+ if (lastTabs > 0) {
1032
+ addTabs(lastTabs);
1033
+ }
1034
+ resetLast();
1035
+ }
1036
+ function flushSpaces() {
1037
+ if (lastSpaces > 0) {
1038
+ addSpaces(lastSpaces);
1039
+ }
1040
+ resetLast();
1041
+ }
1042
+ function resetLast() {
1043
+ lastTabs = 0;
1044
+ lastSpaces = 0;
1045
+ }
1046
+ }
1047
+ function trim2(out) {
1048
+ let trimCount = 0;
1049
+ let cursorCount = 0;
1050
+ let outIndex = out.length;
1051
+ outer:
1052
+ while (outIndex--) {
1053
+ const last = out[outIndex];
1054
+ if (last === CURSOR_PLACEHOLDER) {
1055
+ cursorCount++;
1056
+ continue;
1057
+ }
1058
+ if (false) {
1059
+ throw new Error(`Unexpected value in trim: '${typeof last}'`);
1060
+ }
1061
+ for (let charIndex = last.length - 1; charIndex >= 0; charIndex--) {
1062
+ const char = last[charIndex];
1063
+ if (char === " " || char === " ") {
1064
+ trimCount++;
1065
+ } else {
1066
+ out[outIndex] = last.slice(0, charIndex + 1);
1067
+ break outer;
1068
+ }
1069
+ }
1070
+ }
1071
+ if (trimCount > 0 || cursorCount > 0) {
1072
+ out.length = outIndex + 1;
1073
+ while (cursorCount-- > 0) {
1074
+ out.push(CURSOR_PLACEHOLDER);
1075
+ }
1076
+ }
1077
+ return trimCount;
1078
+ }
1079
+ function fits(next, restCommands, width, hasLineSuffix, groupModeMap, mustBeFlat) {
1080
+ if (width === Number.POSITIVE_INFINITY) {
1081
+ return true;
1082
+ }
1083
+ let restIdx = restCommands.length;
1084
+ const cmds = [next];
1085
+ const out = [];
1086
+ while (width >= 0) {
1087
+ if (cmds.length === 0) {
1088
+ if (restIdx === 0) {
1089
+ return true;
1090
+ }
1091
+ cmds.push(restCommands[--restIdx]);
1092
+ continue;
1093
+ }
1094
+ const {
1095
+ mode,
1096
+ doc
1097
+ } = cmds.pop();
1098
+ switch (get_doc_type_default(doc)) {
1099
+ case DOC_TYPE_STRING:
1100
+ out.push(doc);
1101
+ width -= get_string_width_default(doc);
1102
+ break;
1103
+ case DOC_TYPE_ARRAY:
1104
+ case DOC_TYPE_FILL: {
1105
+ const parts = getDocParts(doc);
1106
+ for (let i = parts.length - 1; i >= 0; i--) {
1107
+ cmds.push({
1108
+ mode,
1109
+ doc: parts[i]
1110
+ });
1111
+ }
1112
+ break;
1113
+ }
1114
+ case DOC_TYPE_INDENT:
1115
+ case DOC_TYPE_ALIGN:
1116
+ case DOC_TYPE_INDENT_IF_BREAK:
1117
+ case DOC_TYPE_LABEL:
1118
+ cmds.push({
1119
+ mode,
1120
+ doc: doc.contents
1121
+ });
1122
+ break;
1123
+ case DOC_TYPE_TRIM:
1124
+ width += trim2(out);
1125
+ break;
1126
+ case DOC_TYPE_GROUP: {
1127
+ if (mustBeFlat && doc.break) {
1128
+ return false;
1129
+ }
1130
+ const groupMode = doc.break ? MODE_BREAK : mode;
1131
+ const contents = doc.expandedStates && groupMode === MODE_BREAK ? at_default(
1132
+ /* isOptionalObject*/
1133
+ false,
1134
+ doc.expandedStates,
1135
+ -1
1136
+ ) : doc.contents;
1137
+ cmds.push({
1138
+ mode: groupMode,
1139
+ doc: contents
1140
+ });
1141
+ break;
1142
+ }
1143
+ case DOC_TYPE_IF_BREAK: {
1144
+ const groupMode = doc.groupId ? groupModeMap[doc.groupId] || MODE_FLAT : mode;
1145
+ const contents = groupMode === MODE_BREAK ? doc.breakContents : doc.flatContents;
1146
+ if (contents) {
1147
+ cmds.push({
1148
+ mode,
1149
+ doc: contents
1150
+ });
1151
+ }
1152
+ break;
1153
+ }
1154
+ case DOC_TYPE_LINE:
1155
+ if (mode === MODE_BREAK || doc.hard) {
1156
+ return true;
1157
+ }
1158
+ if (!doc.soft) {
1159
+ out.push(" ");
1160
+ width--;
1161
+ }
1162
+ break;
1163
+ case DOC_TYPE_LINE_SUFFIX:
1164
+ hasLineSuffix = true;
1165
+ break;
1166
+ case DOC_TYPE_LINE_SUFFIX_BOUNDARY:
1167
+ if (hasLineSuffix) {
1168
+ return false;
1169
+ }
1170
+ break;
1171
+ }
1172
+ }
1173
+ return false;
1174
+ }
1175
+ function printDocToString(doc, options) {
1176
+ const groupModeMap = {};
1177
+ const width = options.printWidth;
1178
+ const newLine = convertEndOfLineToChars(options.endOfLine);
1179
+ let pos = 0;
1180
+ const cmds = [{
1181
+ ind: rootIndent(),
1182
+ mode: MODE_BREAK,
1183
+ doc
1184
+ }];
1185
+ const out = [];
1186
+ let shouldRemeasure = false;
1187
+ const lineSuffix2 = [];
1188
+ let printedCursorCount = 0;
1189
+ propagateBreaks(doc);
1190
+ while (cmds.length > 0) {
1191
+ const {
1192
+ ind,
1193
+ mode,
1194
+ doc: doc2
1195
+ } = cmds.pop();
1196
+ switch (get_doc_type_default(doc2)) {
1197
+ case DOC_TYPE_STRING: {
1198
+ const formatted = newLine !== "\n" ? string_replace_all_default(
1199
+ /* isOptionalObject*/
1200
+ false,
1201
+ doc2,
1202
+ "\n",
1203
+ newLine
1204
+ ) : doc2;
1205
+ out.push(formatted);
1206
+ if (cmds.length > 0) {
1207
+ pos += get_string_width_default(formatted);
1208
+ }
1209
+ break;
1210
+ }
1211
+ case DOC_TYPE_ARRAY:
1212
+ for (let i = doc2.length - 1; i >= 0; i--) {
1213
+ cmds.push({
1214
+ ind,
1215
+ mode,
1216
+ doc: doc2[i]
1217
+ });
1218
+ }
1219
+ break;
1220
+ case DOC_TYPE_CURSOR:
1221
+ if (printedCursorCount >= 2) {
1222
+ throw new Error("There are too many 'cursor' in doc.");
1223
+ }
1224
+ out.push(CURSOR_PLACEHOLDER);
1225
+ printedCursorCount++;
1226
+ break;
1227
+ case DOC_TYPE_INDENT:
1228
+ cmds.push({
1229
+ ind: makeIndent(ind, options),
1230
+ mode,
1231
+ doc: doc2.contents
1232
+ });
1233
+ break;
1234
+ case DOC_TYPE_ALIGN:
1235
+ cmds.push({
1236
+ ind: makeAlign(ind, doc2.n, options),
1237
+ mode,
1238
+ doc: doc2.contents
1239
+ });
1240
+ break;
1241
+ case DOC_TYPE_TRIM:
1242
+ pos -= trim2(out);
1243
+ break;
1244
+ case DOC_TYPE_GROUP:
1245
+ switch (mode) {
1246
+ case MODE_FLAT:
1247
+ if (!shouldRemeasure) {
1248
+ cmds.push({
1249
+ ind,
1250
+ mode: doc2.break ? MODE_BREAK : MODE_FLAT,
1251
+ doc: doc2.contents
1252
+ });
1253
+ break;
1254
+ }
1255
+ case MODE_BREAK: {
1256
+ shouldRemeasure = false;
1257
+ const next = {
1258
+ ind,
1259
+ mode: MODE_FLAT,
1260
+ doc: doc2.contents
1261
+ };
1262
+ const rem = width - pos;
1263
+ const hasLineSuffix = lineSuffix2.length > 0;
1264
+ if (!doc2.break && fits(next, cmds, rem, hasLineSuffix, groupModeMap)) {
1265
+ cmds.push(next);
1266
+ } else {
1267
+ if (doc2.expandedStates) {
1268
+ const mostExpanded = at_default(
1269
+ /* isOptionalObject*/
1270
+ false,
1271
+ doc2.expandedStates,
1272
+ -1
1273
+ );
1274
+ if (doc2.break) {
1275
+ cmds.push({
1276
+ ind,
1277
+ mode: MODE_BREAK,
1278
+ doc: mostExpanded
1279
+ });
1280
+ break;
1281
+ } else {
1282
+ for (let i = 1; i < doc2.expandedStates.length + 1; i++) {
1283
+ if (i >= doc2.expandedStates.length) {
1284
+ cmds.push({
1285
+ ind,
1286
+ mode: MODE_BREAK,
1287
+ doc: mostExpanded
1288
+ });
1289
+ break;
1290
+ } else {
1291
+ const state = doc2.expandedStates[i];
1292
+ const cmd = {
1293
+ ind,
1294
+ mode: MODE_FLAT,
1295
+ doc: state
1296
+ };
1297
+ if (fits(cmd, cmds, rem, hasLineSuffix, groupModeMap)) {
1298
+ cmds.push(cmd);
1299
+ break;
1300
+ }
1301
+ }
1302
+ }
1303
+ }
1304
+ } else {
1305
+ cmds.push({
1306
+ ind,
1307
+ mode: MODE_BREAK,
1308
+ doc: doc2.contents
1309
+ });
1310
+ }
1311
+ }
1312
+ break;
1313
+ }
1314
+ }
1315
+ if (doc2.id) {
1316
+ groupModeMap[doc2.id] = at_default(
1317
+ /* isOptionalObject*/
1318
+ false,
1319
+ cmds,
1320
+ -1
1321
+ ).mode;
1322
+ }
1323
+ break;
1324
+ case DOC_TYPE_FILL: {
1325
+ const rem = width - pos;
1326
+ const {
1327
+ parts
1328
+ } = doc2;
1329
+ if (parts.length === 0) {
1330
+ break;
1331
+ }
1332
+ const [content, whitespace] = parts;
1333
+ const contentFlatCmd = {
1334
+ ind,
1335
+ mode: MODE_FLAT,
1336
+ doc: content
1337
+ };
1338
+ const contentBreakCmd = {
1339
+ ind,
1340
+ mode: MODE_BREAK,
1341
+ doc: content
1342
+ };
1343
+ const contentFits = fits(contentFlatCmd, [], rem, lineSuffix2.length > 0, groupModeMap, true);
1344
+ if (parts.length === 1) {
1345
+ if (contentFits) {
1346
+ cmds.push(contentFlatCmd);
1347
+ } else {
1348
+ cmds.push(contentBreakCmd);
1349
+ }
1350
+ break;
1351
+ }
1352
+ const whitespaceFlatCmd = {
1353
+ ind,
1354
+ mode: MODE_FLAT,
1355
+ doc: whitespace
1356
+ };
1357
+ const whitespaceBreakCmd = {
1358
+ ind,
1359
+ mode: MODE_BREAK,
1360
+ doc: whitespace
1361
+ };
1362
+ if (parts.length === 2) {
1363
+ if (contentFits) {
1364
+ cmds.push(whitespaceFlatCmd, contentFlatCmd);
1365
+ } else {
1366
+ cmds.push(whitespaceBreakCmd, contentBreakCmd);
1367
+ }
1368
+ break;
1369
+ }
1370
+ parts.splice(0, 2);
1371
+ const remainingCmd = {
1372
+ ind,
1373
+ mode,
1374
+ doc: fill(parts)
1375
+ };
1376
+ const secondContent = parts[0];
1377
+ const firstAndSecondContentFlatCmd = {
1378
+ ind,
1379
+ mode: MODE_FLAT,
1380
+ doc: [content, whitespace, secondContent]
1381
+ };
1382
+ const firstAndSecondContentFits = fits(firstAndSecondContentFlatCmd, [], rem, lineSuffix2.length > 0, groupModeMap, true);
1383
+ if (firstAndSecondContentFits) {
1384
+ cmds.push(remainingCmd, whitespaceFlatCmd, contentFlatCmd);
1385
+ } else if (contentFits) {
1386
+ cmds.push(remainingCmd, whitespaceBreakCmd, contentFlatCmd);
1387
+ } else {
1388
+ cmds.push(remainingCmd, whitespaceBreakCmd, contentBreakCmd);
1389
+ }
1390
+ break;
1391
+ }
1392
+ case DOC_TYPE_IF_BREAK:
1393
+ case DOC_TYPE_INDENT_IF_BREAK: {
1394
+ const groupMode = doc2.groupId ? groupModeMap[doc2.groupId] : mode;
1395
+ if (groupMode === MODE_BREAK) {
1396
+ const breakContents = doc2.type === DOC_TYPE_IF_BREAK ? doc2.breakContents : doc2.negate ? doc2.contents : indent(doc2.contents);
1397
+ if (breakContents) {
1398
+ cmds.push({
1399
+ ind,
1400
+ mode,
1401
+ doc: breakContents
1402
+ });
1403
+ }
1404
+ }
1405
+ if (groupMode === MODE_FLAT) {
1406
+ const flatContents = doc2.type === DOC_TYPE_IF_BREAK ? doc2.flatContents : doc2.negate ? indent(doc2.contents) : doc2.contents;
1407
+ if (flatContents) {
1408
+ cmds.push({
1409
+ ind,
1410
+ mode,
1411
+ doc: flatContents
1412
+ });
1413
+ }
1414
+ }
1415
+ break;
1416
+ }
1417
+ case DOC_TYPE_LINE_SUFFIX:
1418
+ lineSuffix2.push({
1419
+ ind,
1420
+ mode,
1421
+ doc: doc2.contents
1422
+ });
1423
+ break;
1424
+ case DOC_TYPE_LINE_SUFFIX_BOUNDARY:
1425
+ if (lineSuffix2.length > 0) {
1426
+ cmds.push({
1427
+ ind,
1428
+ mode,
1429
+ doc: hardlineWithoutBreakParent
1430
+ });
1431
+ }
1432
+ break;
1433
+ case DOC_TYPE_LINE:
1434
+ switch (mode) {
1435
+ case MODE_FLAT:
1436
+ if (!doc2.hard) {
1437
+ if (!doc2.soft) {
1438
+ out.push(" ");
1439
+ pos += 1;
1440
+ }
1441
+ break;
1442
+ } else {
1443
+ shouldRemeasure = true;
1444
+ }
1445
+ case MODE_BREAK:
1446
+ if (lineSuffix2.length > 0) {
1447
+ cmds.push({
1448
+ ind,
1449
+ mode,
1450
+ doc: doc2
1451
+ }, ...lineSuffix2.reverse());
1452
+ lineSuffix2.length = 0;
1453
+ break;
1454
+ }
1455
+ if (doc2.literal) {
1456
+ if (ind.root) {
1457
+ out.push(newLine, ind.root.value);
1458
+ pos = ind.root.length;
1459
+ } else {
1460
+ out.push(newLine);
1461
+ pos = 0;
1462
+ }
1463
+ } else {
1464
+ pos -= trim2(out);
1465
+ out.push(newLine + ind.value);
1466
+ pos = ind.length;
1467
+ }
1468
+ break;
1469
+ }
1470
+ break;
1471
+ case DOC_TYPE_LABEL:
1472
+ cmds.push({
1473
+ ind,
1474
+ mode,
1475
+ doc: doc2.contents
1476
+ });
1477
+ break;
1478
+ case DOC_TYPE_BREAK_PARENT:
1479
+ break;
1480
+ default:
1481
+ throw new invalid_doc_error_default(doc2);
1482
+ }
1483
+ if (cmds.length === 0 && lineSuffix2.length > 0) {
1484
+ cmds.push(...lineSuffix2.reverse());
1485
+ lineSuffix2.length = 0;
1486
+ }
1487
+ }
1488
+ const cursorPlaceholderIndex = out.indexOf(CURSOR_PLACEHOLDER);
1489
+ if (cursorPlaceholderIndex !== -1) {
1490
+ const otherCursorPlaceholderIndex = out.indexOf(CURSOR_PLACEHOLDER, cursorPlaceholderIndex + 1);
1491
+ const beforeCursor = out.slice(0, cursorPlaceholderIndex).join("");
1492
+ const aroundCursor = out.slice(cursorPlaceholderIndex + 1, otherCursorPlaceholderIndex).join("");
1493
+ const afterCursor = out.slice(otherCursorPlaceholderIndex + 1).join("");
1494
+ return {
1495
+ formatted: beforeCursor + aroundCursor + afterCursor,
1496
+ cursorNodeStart: beforeCursor.length,
1497
+ cursorNodeText: aroundCursor
1498
+ };
1499
+ }
1500
+ return {
1501
+ formatted: out.join("")
1502
+ };
1503
+ }
1504
+ var builders = {
1505
+ join,
1506
+ line,
1507
+ softline,
1508
+ hardline,
1509
+ literalline,
1510
+ group,
1511
+ conditionalGroup,
1512
+ fill,
1513
+ lineSuffix,
1514
+ lineSuffixBoundary,
1515
+ cursor,
1516
+ breakParent,
1517
+ ifBreak,
1518
+ trim,
1519
+ indent,
1520
+ indentIfBreak,
1521
+ align,
1522
+ addAlignmentToDoc,
1523
+ markAsRoot,
1524
+ dedentToRoot,
1525
+ dedent,
1526
+ hardlineWithoutBreakParent,
1527
+ literallineWithoutBreakParent,
1528
+ label,
1529
+ // TODO: Remove this in v4
1530
+ concat: (parts) => parts
1531
+ };
1532
+ var printer = { printDocToString };
1533
+ var utils = {
1534
+ willBreak,
1535
+ traverseDoc: traverse_doc_default,
1536
+ findInDoc,
1537
+ mapDoc,
1538
+ removeLines,
1539
+ stripTrailingHardline,
1540
+ replaceEndOfLine,
1541
+ canBreak
1542
+ };
1543
+
270
1544
  // src/weaverse-client.ts
271
1545
  var WeaverseClient = class {
272
1546
  API = "api/public/project";
@@ -341,7 +1615,7 @@ var WeaverseClient = class {
341
1615
  if (isDesignMode) {
342
1616
  res = await fetch(`${weaverseHost}/${API}/${projectId}/configs`, {
343
1617
  method: "POST"
344
- });
1618
+ }).then((res2) => res2.json());
345
1619
  } else {
346
1620
  res = await this.fetchWithCache(
347
1621
  `${weaverseHost}/${API}/${projectId}/configs`,
@@ -349,6 +1623,20 @@ var WeaverseClient = class {
349
1623
  );
350
1624
  }
351
1625
  let data = res || {};
1626
+ if (data?.theme && this.themeSchema?.inspector) {
1627
+ let defaultThemeSchema = {};
1628
+ this.themeSchema.inspector.forEach((group2) => {
1629
+ group2.inputs.forEach((input) => {
1630
+ if (typeof input.name === "string" && input.defaultValue) {
1631
+ defaultThemeSchema[input.name] = input.defaultValue;
1632
+ }
1633
+ });
1634
+ });
1635
+ data.theme = {
1636
+ ...defaultThemeSchema,
1637
+ ...data.theme
1638
+ };
1639
+ }
352
1640
  if (this.configs.isDesignMode) {
353
1641
  data = {
354
1642
  ...data,
@@ -494,7 +1782,7 @@ var WeaverseHydrogenItem = class extends WeaverseItemStore {
494
1782
  return super.Element;
495
1783
  }
496
1784
  get data() {
497
- let defaultData = this.Element?.schema?.inspector?.flatMap((group) => group.inputs)?.reduce((a, { defaultValue, name }) => {
1785
+ let defaultData = this.Element?.schema?.inspector?.flatMap((group2) => group2.inputs)?.reduce((a, { defaultValue, name }) => {
498
1786
  if (name && defaultValue !== null && defaultValue !== void 0) {
499
1787
  a[name] = defaultValue;
500
1788
  }