@marimo-team/islands 0.21.2-dev72 → 0.21.2-dev73

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (64) hide show
  1. package/dist/{any-language-editor-BBegsg-m.js → any-language-editor-CSvBdMtG.js} +17 -17
  2. package/dist/{chat-ui-D4ay_SFE.js → chat-ui-CedqKBe3.js} +9 -9
  3. package/dist/{dist-CQ3XmGIH.js → dist--MUqhsBh.js} +1 -1
  4. package/dist/{dist-CYuoqvce.js → dist-8-jPFKws.js} +2 -2
  5. package/dist/{dist-B5thW2rT.js → dist-B6ZvKwIz.js} +1 -1
  6. package/dist/{dist-CSiTW5NO.js → dist-B771Ewvn.js} +3 -3
  7. package/dist/dist-BK8Ch8me.js +5 -0
  8. package/dist/dist-BPlAe3w3.js +6 -0
  9. package/dist/dist-BQnLGf1A.js +8 -0
  10. package/dist/dist-BZRBnAnM.js +5 -0
  11. package/dist/{dist-BrJQDkv_.js → dist-Bc-mOFlk.js} +2 -2
  12. package/dist/{dist-iM9VwH8Z.js → dist-Bg1YGq2b.js} +1 -1
  13. package/dist/{dist-aW74oyUt.js → dist-BjYGwQ65.js} +1 -1
  14. package/dist/dist-BmTKj-5m.js +5 -0
  15. package/dist/{dist-CxczluAk.js → dist-BsyHyGqX.js} +2 -2
  16. package/dist/dist-C1UyhB0b.js +5 -0
  17. package/dist/dist-C1uqqTuH.js +5 -0
  18. package/dist/dist-CCeSY9xv.js +5 -0
  19. package/dist/{dist-1-E4bC9V.js → dist-CEmSeYaL.js} +2 -2
  20. package/dist/{dist-zGOEySUQ.js → dist-CJEfzjG5.js} +4 -4
  21. package/dist/dist-CMWhb0s1.js +5 -0
  22. package/dist/{dist-CKVkWFcB.js → dist-CXsGjNbR.js} +2 -2
  23. package/dist/{dist-DFBjYgbq.js → dist-CpNdP46s.js} +2 -2
  24. package/dist/{dist-Dd9vDQtp.js → dist-CsToCMcA.js} +2 -2
  25. package/dist/{dist-Y9GfSR6_.js → dist-CwP9oyR8.js} +2 -2
  26. package/dist/{dist-C16JG-Ok.js → dist-D2nC1On3.js} +2 -2
  27. package/dist/{dist-XYBhoeSX.js → dist-DEmPLkH9.js} +4 -4
  28. package/dist/{dist-BJvk9DSp.js → dist-DKr1M-ru.js} +1 -1
  29. package/dist/{dist-DbyoYfBn.js → dist-DNSJBJI7.js} +2 -2
  30. package/dist/{dist-uR-o9IVx.js → dist-DSSPn3fP.js} +2 -2
  31. package/dist/dist-DYoFz28E.js +8 -0
  32. package/dist/dist-DeSnQwvL.js +6 -0
  33. package/dist/{dist-D75XqRaT.js → dist-DlacJSaE.js} +2 -2
  34. package/dist/{dist-APyhcmvq.js → dist-DoO66t8e.js} +1 -1
  35. package/dist/{dist-DUg5n_x5.js → dist-DqT0O-4m.js} +5 -5
  36. package/dist/{dist-BYr4a-wE.js → dist-DqweMfpO.js} +1 -1
  37. package/dist/{dist-CGH6Jw-c.js → dist-DvjVNme1.js} +1 -1
  38. package/dist/{dist-C4EV3aDt.js → dist-N1lm7LVK.js} +71 -37
  39. package/dist/{dist-Dk13KZ54.js → dist-QxBlbqgj.js} +3 -3
  40. package/dist/{dist-Cm4SOB1A.js → dist-TuFHGVp2.js} +1 -1
  41. package/dist/dist-e8VqCQ_P.js +5 -0
  42. package/dist/{dist-BLrc9iNb.js → dist-fRW2mZtS.js} +2 -2
  43. package/dist/dist-kGaha3sX.js +8 -0
  44. package/dist/{dist-BFe8Nc_2.js → dist-mpvRA2Bc.js} +3 -3
  45. package/dist/dist-wQD8nhf9.js +8 -0
  46. package/dist/{esm-CCD9xN05.js → esm-B_4hpmV_.js} +22 -22
  47. package/dist/{esm-CxoKu9RN.js → esm-Bcbo0Yvz.js} +3 -3
  48. package/dist/main.js +21 -21
  49. package/dist/{process-output-Cv8vQ4At.js → process-output-Xg5O7mVz.js} +33 -33
  50. package/package.json +1 -1
  51. package/dist/dist-BHGf2Zey.js +0 -5
  52. package/dist/dist-BImOGJZM.js +0 -5
  53. package/dist/dist-BbJfmCHJ.js +0 -5
  54. package/dist/dist-C0v-nFs_.js +0 -8
  55. package/dist/dist-C8N7114Z.js +0 -5
  56. package/dist/dist-C9TDg2aq.js +0 -8
  57. package/dist/dist-CN4RKgNR.js +0 -5
  58. package/dist/dist-CVOkf_3P.js +0 -6
  59. package/dist/dist-Cbkga3s5.js +0 -5
  60. package/dist/dist-D6YTv0Kj.js +0 -5
  61. package/dist/dist-D9vawryf.js +0 -8
  62. package/dist/dist-DasJgTvL.js +0 -6
  63. package/dist/dist-Ui51qXMz.js +0 -8
  64. package/dist/dist-d2msfN-B.js +0 -5
@@ -695,10 +695,10 @@ var SectionIter = class {
695
695
  let E, D;
696
696
  return this.empty ? E = D = w.mapPos(this.from, T) : (E = w.mapPos(this.from, 1), D = w.mapPos(this.to, -1)), E == this.from && D == this.to ? this : new e6(E, D, this.flags);
697
697
  }
698
- extend(e64, w = e64) {
699
- if (e64 <= this.anchor && w >= this.anchor) return EditorSelection.range(e64, w);
700
- let T = Math.abs(e64 - this.anchor) > Math.abs(w - this.anchor) ? e64 : w;
701
- return EditorSelection.range(this.anchor, T);
698
+ extend(e64, w = e64, T = 0) {
699
+ if (e64 <= this.anchor && w >= this.anchor) return EditorSelection.range(e64, w, void 0, void 0, T);
700
+ let E = Math.abs(e64 - this.anchor) > Math.abs(w - this.anchor) ? e64 : w;
701
+ return EditorSelection.range(this.anchor, E, void 0, void 0, T);
702
702
  }
703
703
  eq(e64, w = false) {
704
704
  return this.anchor == e64.anchor && this.head == e64.head && this.goalColumn == e64.goalColumn && (!w || !this.empty || this.assoc == e64.assoc);
@@ -766,9 +766,9 @@ var SectionIter = class {
766
766
  static cursor(e64, w = 0, T, E) {
767
767
  return SelectionRange.create(e64, e64, (w == 0 ? 0 : w < 0 ? 8 : 16) | (T == null ? 7 : Math.min(6, T)) | (E ?? 16777215) << 6);
768
768
  }
769
- static range(e64, w, T, E) {
770
- let D = (T ?? 16777215) << 6 | (E == null ? 7 : Math.min(6, E));
771
- return w < e64 ? SelectionRange.create(w, e64, 48 | D) : SelectionRange.create(e64, w, (w > e64 ? 8 : 0) | D);
769
+ static range(e64, w, T, E, D) {
770
+ let O = (T ?? 16777215) << 6 | (E == null ? 7 : Math.min(6, E));
771
+ return !D && e64 != w && (D = w < e64 ? 1 : -1), w < e64 ? SelectionRange.create(w, e64, 48 | O) : SelectionRange.create(e64, w, (D ? D < 0 ? 8 : 16 : 0) | O);
772
772
  }
773
773
  static normalized(w, T = 0) {
774
774
  let E = w[T];
@@ -2003,7 +2003,7 @@ var WidgetType = class {
2003
2003
  eq(e64) {
2004
2004
  return false;
2005
2005
  }
2006
- updateDOM(e64, w) {
2006
+ updateDOM(e64, w, T) {
2007
2007
  return false;
2008
2008
  }
2009
2009
  compare(e64) {
@@ -3329,7 +3329,7 @@ var TileCache = class {
3329
3329
  O = 1, D = 0;
3330
3330
  }
3331
3331
  let k = E[D];
3332
- if (!this.reused.has(k) && (O == 0 ? k.widget.compare(e64) : k.widget.constructor == e64.constructor && e64.updateDOM(k.dom, this.view))) return E.splice(D, 1), D < this.index[0] && this.index[0]--, k.widget == e64 && k.length == w && (k.flags & 497) == T ? (this.reused.set(k, 1), k) : (this.reused.set(k, 2), new WidgetTile(k.dom, w, e64, k.flags & -498 | T));
3332
+ if (!this.reused.has(k) && (O == 0 ? k.widget.compare(e64) : k.widget.constructor == e64.constructor && e64.updateDOM(k.dom, this.view, k.widget))) return E.splice(D, 1), D < this.index[0] && this.index[0]--, k.widget == e64 && k.length == w && (k.flags & 497) == T ? (this.reused.set(k, 1), k) : (this.reused.set(k, 2), new WidgetTile(k.dom, w, e64, k.flags & -498 | T));
3333
3333
  }
3334
3334
  }
3335
3335
  reuse(e64) {
@@ -3766,7 +3766,7 @@ var BreakWidget = /* @__PURE__ */ new class extends WidgetType {
3766
3766
  } catch (e65) {
3767
3767
  logException(this.view.state, e65, "scroll handler");
3768
3768
  }
3769
- let { range: w } = e64, T = this.coordsAt(w.head, w.empty ? w.assoc : w.head > w.anchor ? -1 : 1), E;
3769
+ let { range: w } = e64, T = this.coordsAt(w.head, w.assoc ?? (w.empty ? 0 : w.head > w.anchor ? -1 : 1)), E;
3770
3770
  if (!T) return;
3771
3771
  !w.empty && (E = this.coordsAt(w.anchor, w.anchor > w.head ? -1 : 1)) && (T = {
3772
3772
  left: Math.min(T.left, E.left),
@@ -3987,17 +3987,22 @@ function byGroup(e64, w, T) {
3987
3987
  function moveVertically(e64, w, T, E) {
3988
3988
  let D = w.head, O = T ? 1 : -1;
3989
3989
  if (D == (T ? e64.state.doc.length : 0)) return EditorSelection.cursor(D, w.assoc);
3990
- let k = w.goalColumn, A, j = e64.contentDOM.getBoundingClientRect(), M = e64.coordsAtPos(D, (w.empty ? w.assoc : 0) || (T ? 1 : -1)), N = e64.documentTop;
3990
+ let k = w.goalColumn, A, j = e64.contentDOM.getBoundingClientRect(), M = e64.coordsAtPos(D, w.assoc || ((w.empty ? T : w.head == w.from) ? 1 : -1)), N = e64.documentTop;
3991
3991
  if (M) k ?? (k = M.left - j.left), A = O < 0 ? M.top : M.bottom;
3992
3992
  else {
3993
3993
  let w2 = e64.viewState.lineBlockAt(D);
3994
3994
  k ?? (k = Math.min(j.right - j.left, e64.defaultCharacterWidth * (D - w2.from))), A = (O < 0 ? w2.top : w2.bottom) + N;
3995
3995
  }
3996
- let P = j.left + k, F = E ?? e64.viewState.heightOracle.textHeight >> 1, I = posAtCoords(e64, {
3997
- x: P,
3998
- y: A + F * O
3999
- }, false, O);
4000
- return EditorSelection.cursor(I.pos, I.assoc, void 0, k);
3996
+ let P = j.left + k, F = e64.viewState.heightOracle.textHeight >> 1, I = E ?? F;
3997
+ for (let w2 = 0; ; w2 += F) {
3998
+ let E2 = A + (I + w2) * O, D2 = posAtCoords(e64, {
3999
+ x: P,
4000
+ y: E2
4001
+ }, false, O);
4002
+ if (T ? E2 > j.bottom : E2 < j.top) return EditorSelection.cursor(D2.pos, D2.assoc);
4003
+ let M2 = e64.coordsAtPos(D2.pos, D2.assoc), N2 = M2 ? (M2.top + M2.bottom) / 2 : 0;
4004
+ if (!M2 || (T ? N2 > A : N2 < A)) return EditorSelection.cursor(D2.pos, D2.assoc, void 0, k);
4005
+ }
4001
4006
  }
4002
4007
  function skipAtomicRanges(e64, w, T) {
4003
4008
  for (; ; ) {
@@ -4098,13 +4103,15 @@ var InlineCoordsScan = class {
4098
4103
  let I = w(F);
4099
4104
  if (I) for (let w2 = 0; w2 < I.length; w2++) {
4100
4105
  let D2 = I[w2], P3 = 0;
4101
- if (D2.bottom < this.y) (!k || k.bottom < D2.bottom) && (k = D2), P3 = 1;
4102
- else if (D2.top > this.y) (!A || A.top > D2.top) && (A = D2), P3 = -1;
4103
- else {
4104
- let e65 = D2.left > this.x ? this.x - D2.left : D2.right < this.x ? this.x - D2.right : 0, w3 = Math.abs(e65);
4105
- w3 < M && (j = F, M = w3, N = D2), e65 && (P3 = e65 < 0 == (this.baseDir == Direction.LTR) ? -1 : 1);
4106
+ if (!(D2.width == 0 && I.length > 1)) {
4107
+ if (D2.bottom < this.y) (!k || k.bottom < D2.bottom) && (k = D2), P3 = 1;
4108
+ else if (D2.top > this.y) (!A || A.top > D2.top) && (A = D2), P3 = -1;
4109
+ else {
4110
+ let e65 = D2.left > this.x ? this.x - D2.left : D2.right < this.x ? this.x - D2.right : 0, w3 = Math.abs(e65);
4111
+ w3 < M && (j = F, M = w3, N = D2), e65 && (P3 = e65 < 0 == (this.baseDir == Direction.LTR) ? -1 : 1);
4112
+ }
4113
+ P3 == -1 && (!O || this.baseDirAt(e64[F], 1)) ? E = F : P3 == 1 && (!O || this.baseDirAt(e64[F + 1], -1)) && (T = F + 1);
4106
4114
  }
4107
- P3 == -1 && (!O || this.baseDirAt(e64[F], 1)) ? E = F : P3 == 1 && (!O || this.baseDirAt(e64[F + 1], -1)) && (T = F + 1);
4108
4115
  }
4109
4116
  }
4110
4117
  if (!N) {
@@ -4220,18 +4227,22 @@ var DOMPoint = class {
4220
4227
  }, DOMChange = class {
4221
4228
  constructor(e64, w, T, E) {
4222
4229
  this.typeOver = E, this.bounds = null, this.text = "", this.domChanged = w > -1;
4223
- let { impreciseHead: D, impreciseAnchor: O } = e64.docView;
4230
+ let { impreciseHead: D, impreciseAnchor: O } = e64.docView, k = e64.state.selection;
4224
4231
  if (e64.state.readOnly && w > -1) this.newSel = null;
4225
4232
  else if (w > -1 && (this.bounds = domBoundsAround(e64.docView.tile, w, T, 0))) {
4226
4233
  let w2 = D || O ? [] : selectionPoints(e64), T2 = new DOMReader(w2, e64);
4227
4234
  T2.readRange(this.bounds.startDOM, this.bounds.endDOM), this.text = T2.text, this.newSel = selectionFromPoints(w2, this.bounds.from);
4228
4235
  } else {
4229
- let w2 = e64.observer.selectionRange, T2 = D && D.node == w2.focusNode && D.offset == w2.focusOffset || !contains(e64.contentDOM, w2.focusNode) ? e64.state.selection.main.head : e64.docView.posFromDOM(w2.focusNode, w2.focusOffset), E2 = O && O.node == w2.anchorNode && O.offset == w2.anchorOffset || !contains(e64.contentDOM, w2.anchorNode) ? e64.state.selection.main.anchor : e64.docView.posFromDOM(w2.anchorNode, w2.anchorOffset), k = e64.viewport;
4230
- if ((browser.ios || browser.chrome) && e64.state.selection.main.empty && T2 != E2 && (k.from > 0 || k.to < e64.state.doc.length)) {
4231
- let w3 = Math.min(T2, E2), D2 = Math.max(T2, E2), O2 = k.from - w3, A = k.to - D2;
4232
- (O2 == 0 || O2 == 1 || w3 == 0) && (A == 0 || A == -1 || D2 == e64.state.doc.length) && (T2 = 0, E2 = e64.state.doc.length);
4236
+ let w2 = e64.observer.selectionRange, T2 = D && D.node == w2.focusNode && D.offset == w2.focusOffset || !contains(e64.contentDOM, w2.focusNode) ? k.main.head : e64.docView.posFromDOM(w2.focusNode, w2.focusOffset), E2 = O && O.node == w2.anchorNode && O.offset == w2.anchorOffset || !contains(e64.contentDOM, w2.anchorNode) ? k.main.anchor : e64.docView.posFromDOM(w2.anchorNode, w2.anchorOffset), A = e64.viewport;
4237
+ if ((browser.ios || browser.chrome) && k.main.empty && T2 != E2 && (A.from > 0 || A.to < e64.state.doc.length)) {
4238
+ let w3 = Math.min(T2, E2), D2 = Math.max(T2, E2), O2 = A.from - w3, k2 = A.to - D2;
4239
+ (O2 == 0 || O2 == 1 || w3 == 0) && (k2 == 0 || k2 == -1 || D2 == e64.state.doc.length) && (T2 = 0, E2 = e64.state.doc.length);
4233
4240
  }
4234
- e64.inputState.composing > -1 && e64.state.selection.ranges.length > 1 ? this.newSel = e64.state.selection.replaceRange(EditorSelection.range(E2, T2)) : this.newSel = EditorSelection.single(E2, T2);
4241
+ if (e64.inputState.composing > -1 && k.ranges.length > 1) this.newSel = k.replaceRange(EditorSelection.range(E2, T2));
4242
+ else if (e64.lineWrapping && E2 == T2 && !(k.main.empty && k.main.head == T2) && e64.inputState.lastTouchTime > Date.now() - 100) {
4243
+ let w3 = e64.coordsAtPos(T2, -1), E3 = 0;
4244
+ w3 && (E3 = e64.inputState.lastTouchY <= w3.bottom ? -1 : 1), this.newSel = EditorSelection.create([EditorSelection.cursor(T2, E3)]);
4245
+ } else this.newSel = EditorSelection.single(E2, T2);
4235
4246
  }
4236
4247
  }
4237
4248
  };
@@ -4404,7 +4415,7 @@ var InputState = class {
4404
4415
  this.lastSelectionOrigin = e64, this.lastSelectionTime = Date.now();
4405
4416
  }
4406
4417
  constructor(e64) {
4407
- this.view = e64, this.lastKeyCode = 0, this.lastKeyTime = 0, this.lastTouchTime = 0, this.lastFocusTime = 0, this.lastScrollTop = 0, this.lastScrollLeft = 0, this.lastWheelEvent = 0, this.pendingIOSKey = void 0, this.tabFocusMode = -1, this.lastSelectionOrigin = null, this.lastSelectionTime = 0, this.lastContextMenu = 0, this.scrollHandlers = [], this.handlers = /* @__PURE__ */ Object.create(null), this.composing = -1, this.compositionFirstChange = null, this.compositionEndedAt = 0, this.compositionPendingKey = false, this.compositionPendingChange = false, this.insertingText = "", this.insertingTextAt = 0, this.mouseSelection = null, this.draggedContent = null, this.handleEvent = this.handleEvent.bind(this), this.notifiedFocused = e64.hasFocus, browser.safari && e64.contentDOM.addEventListener("input", () => null), browser.gecko && firefoxCopyCutHack(e64.contentDOM.ownerDocument);
4418
+ this.view = e64, this.lastKeyCode = 0, this.lastKeyTime = 0, this.lastTouchTime = 0, this.lastTouchX = 0, this.lastTouchY = 0, this.lastFocusTime = 0, this.lastScrollTop = 0, this.lastScrollLeft = 0, this.lastWheelEvent = 0, this.pendingIOSKey = void 0, this.tabFocusMode = -1, this.lastSelectionOrigin = null, this.lastSelectionTime = 0, this.lastContextMenu = 0, this.scrollHandlers = [], this.handlers = /* @__PURE__ */ Object.create(null), this.composing = -1, this.compositionFirstChange = null, this.compositionEndedAt = 0, this.compositionPendingKey = false, this.compositionPendingChange = false, this.insertingText = "", this.insertingTextAt = 0, this.mouseSelection = null, this.draggedContent = null, this.handleEvent = this.handleEvent.bind(this), this.notifiedFocused = e64.hasFocus, browser.safari && e64.contentDOM.addEventListener("input", () => null), browser.gecko && firefoxCopyCutHack(e64.contentDOM.ownerDocument);
4408
4419
  }
4409
4420
  handleEvent(e64) {
4410
4421
  !eventBelongsToEditor(this.view, e64) || this.ignoreDuringComposition(e64) || e64.type == "keydown" && this.keydown(e64) || (this.view.updateState == 0 ? this.runHandlers(e64.type, e64) : Promise.resolve().then(() => this.runHandlers(e64.type, e64)));
@@ -4435,7 +4446,7 @@ var InputState = class {
4435
4446
  if (this.lastKeyCode = e64.keyCode, this.lastKeyTime = Date.now(), e64.keyCode == 9 && this.tabFocusMode > -1 && (!this.tabFocusMode || Date.now() <= this.tabFocusMode)) return true;
4436
4447
  if (this.tabFocusMode > 0 && e64.keyCode != 27 && modifierCodes.indexOf(e64.keyCode) < 0 && (this.tabFocusMode = -1), browser.android && browser.chrome && !e64.synthetic && (e64.keyCode == 13 || e64.keyCode == 8)) return this.view.observer.delayAndroidKey(e64.key, e64.keyCode), true;
4437
4448
  let w;
4438
- return browser.ios && !e64.synthetic && !e64.altKey && !e64.metaKey && ((w = PendingKeys.find((w2) => w2.keyCode == e64.keyCode)) && !e64.ctrlKey || EmacsyPendingKeys.indexOf(e64.key) > -1 && e64.ctrlKey && !e64.shiftKey) ? (this.pendingIOSKey = w || e64, setTimeout(() => this.flushIOSKey(), 250), true) : (e64.keyCode != 229 && this.view.observer.forceFlush(), false);
4449
+ return browser.ios && !e64.synthetic && !e64.altKey && !e64.metaKey && !e64.shiftKey && ((w = PendingKeys.find((w2) => w2.keyCode == e64.keyCode)) && !e64.ctrlKey || EmacsyPendingKeys.indexOf(e64.key) > -1 && e64.ctrlKey) ? (this.pendingIOSKey = w || e64, setTimeout(() => this.flushIOSKey(), 250), true) : (e64.keyCode != 229 && this.view.observer.forceFlush(), false);
4439
4450
  }
4440
4451
  flushIOSKey(e64) {
4441
4452
  let w = this.pendingIOSKey;
@@ -4651,7 +4662,8 @@ observers.scroll = (e64) => {
4651
4662
  }, observers.wheel = observers.mousewheel = (e64) => {
4652
4663
  e64.inputState.lastWheelEvent = Date.now();
4653
4664
  }, handlers.keydown = (e64, w) => (e64.inputState.setSelectionOrigin("select"), w.keyCode == 27 && e64.inputState.tabFocusMode != 0 && (e64.inputState.tabFocusMode = Date.now() + 2e3), false), observers.touchstart = (e64, w) => {
4654
- e64.inputState.lastTouchTime = Date.now(), e64.inputState.setSelectionOrigin("select.pointer");
4665
+ let T = e64.inputState, E = w.targetTouches[0];
4666
+ T.lastTouchTime = Date.now(), E && (T.lastTouchX = E.clientX, T.lastTouchY = E.clientY), T.setSelectionOrigin("select.pointer");
4655
4667
  }, observers.touchmove = (e64) => {
4656
4668
  e64.inputState.setSelectionOrigin("select.pointer");
4657
4669
  }, handlers.mousedown = (e64, w) => {
@@ -4700,9 +4712,9 @@ function basicMouseSelection(e64, w) {
4700
4712
  }, false), j, M = rangeForClick(e64, A.pos, A.assoc, E);
4701
4713
  if (T.pos != A.pos && !O) {
4702
4714
  let w3 = rangeForClick(e64, T.pos, T.assoc, E), D2 = Math.min(w3.from, M.from), O2 = Math.max(w3.to, M.to);
4703
- M = D2 < M.from ? EditorSelection.range(D2, O2) : EditorSelection.range(O2, D2);
4715
+ M = D2 < M.from ? EditorSelection.range(D2, O2, M.assoc) : EditorSelection.range(O2, D2, M.assoc);
4704
4716
  }
4705
- return O ? D.replaceRange(D.main.extend(M.from, M.to)) : k && E == 1 && D.ranges.length > 1 && (j = removeRangeAround(D, A.pos)) ? j : k ? D.addRange(M) : EditorSelection.create([M]);
4717
+ return O ? D.replaceRange(D.main.extend(M.from, M.to, M.assoc)) : k && E == 1 && D.ranges.length > 1 && (j = removeRangeAround(D, A.pos)) ? j : k ? D.addRange(M) : EditorSelection.create([M]);
4706
4718
  }
4707
4719
  };
4708
4720
  }
@@ -5750,6 +5762,21 @@ var baseTheme$1$1 = /* @__PURE__ */ buildTheme("." + baseThemeID, {
5750
5762
  },
5751
5763
  ".cm-cursor": { display: "none" },
5752
5764
  "&dark .cm-cursor": { borderLeftColor: "#ddd" },
5765
+ ".cm-selectionHandle": {
5766
+ backgroundColor: "currentColor",
5767
+ width: "1.5px"
5768
+ },
5769
+ ".cm-selectionHandle-start::before, .cm-selectionHandle-end::before": {
5770
+ content: '""',
5771
+ backgroundColor: "inherit",
5772
+ borderRadius: "50%",
5773
+ width: "8px",
5774
+ height: "8px",
5775
+ position: "absolute",
5776
+ left: "-3.25px"
5777
+ },
5778
+ ".cm-selectionHandle-start::before": { top: "-8px" },
5779
+ ".cm-selectionHandle-end::before": { bottom: "-8px" },
5753
5780
  ".cm-dropCursor": { position: "absolute" },
5754
5781
  "&.cm-focused > .cm-scroller > .cm-cursorLayer .cm-cursor": { display: "block" },
5755
5782
  ".cm-iso": { unicodeBidi: "isolate" },
@@ -6883,7 +6910,8 @@ function layer(e64) {
6883
6910
  var selectionConfig = /* @__PURE__ */ Facet.define({ combine(e64) {
6884
6911
  return combineConfig(e64, {
6885
6912
  cursorBlinkRate: 1200,
6886
- drawRangeCursor: true
6913
+ drawRangeCursor: true,
6914
+ iosSelectionHandles: true
6887
6915
  }, {
6888
6916
  cursorBlinkRate: (e65, w) => Math.min(e65, w),
6889
6917
  drawRangeCursor: (e65, w) => e65 || w
@@ -6907,8 +6935,8 @@ var cursorLayer = /* @__PURE__ */ layer({
6907
6935
  let { state: w } = e64, T = w.facet(selectionConfig), E = [];
6908
6936
  for (let D of w.selection.ranges) {
6909
6937
  let O = D == w.selection.main;
6910
- if (D.empty || T.drawRangeCursor) {
6911
- let w2 = O ? "cm-cursor cm-cursor-primary" : "cm-cursor cm-cursor-secondary", T2 = D.empty ? D : EditorSelection.cursor(D.head, D.head > D.anchor ? -1 : 1);
6938
+ if (D.empty || T.drawRangeCursor && !(O && browser.ios && T.iosSelectionHandles)) {
6939
+ let w2 = O ? "cm-cursor cm-cursor-primary" : "cm-cursor cm-cursor-secondary", T2 = D.empty ? D : EditorSelection.cursor(D.head, D.assoc);
6912
6940
  for (let D2 of RectangleMarker.forRange(e64, w2, T2)) E.push(D2);
6913
6941
  }
6914
6942
  }
@@ -6930,7 +6958,13 @@ function setBlinkRate(e64, w) {
6930
6958
  var selectionLayer = /* @__PURE__ */ layer({
6931
6959
  above: false,
6932
6960
  markers(e64) {
6933
- return e64.state.selection.ranges.map((w) => w.empty ? [] : RectangleMarker.forRange(e64, "cm-selectionBackground", w)).reduce((e65, w) => e65.concat(w));
6961
+ let w = [], { main: T, ranges: E } = e64.state.selection;
6962
+ for (let T2 of E) if (!T2.empty) for (let E2 of RectangleMarker.forRange(e64, "cm-selectionBackground", T2)) w.push(E2);
6963
+ if (browser.ios && !T.empty && e64.state.facet(selectionConfig).iosSelectionHandles) {
6964
+ for (let E2 of RectangleMarker.forRange(e64, "cm-selectionHandle cm-selectionHandle-start", EditorSelection.cursor(T.from, 1))) w.push(E2);
6965
+ for (let E2 of RectangleMarker.forRange(e64, "cm-selectionHandle cm-selectionHandle-end", EditorSelection.cursor(T.to, 1))) w.push(E2);
6966
+ }
6967
+ return w;
6934
6968
  },
6935
6969
  update(e64, w) {
6936
6970
  return e64.docChanged || e64.selectionSet || e64.viewportChanged || configChanged(e64);
@@ -1,6 +1,6 @@
1
- import { B as tags, J as parseMixed, i as LocalTokenGroup, r as LRParser, s as LRLanguage, u as LanguageSupport, z as styleTags } from "./dist-C4EV3aDt.js";
2
- import { n as html } from "./dist-BFe8Nc_2.js";
3
- import { r as javascriptLanguage } from "./dist-BrJQDkv_.js";
1
+ import { B as tags, J as parseMixed, i as LocalTokenGroup, r as LRParser, s as LRLanguage, u as LanguageSupport, z as styleTags } from "./dist-N1lm7LVK.js";
2
+ import { n as html } from "./dist-mpvRA2Bc.js";
3
+ import { r as javascriptLanguage } from "./dist-Bc-mOFlk.js";
4
4
  var parser = /* @__PURE__ */ LRParser.deserialize({
5
5
  version: 14,
6
6
  states: "%pOVOWOOObQPOOOpOSO'#C_OOOO'#Cp'#CpQVOWOOQxQPOOO!TQQOOQ!YQPOOOOOO,58y,58yO!_OSO,58yOOOO-E6n-E6nO!dQQO'#CqQ{QPOOO!iQPOOQ{QPOOO!qQPOOOOOO1G.e1G.eOOQO,59],59]OOQO-E6o-E6oO!yOpO'#CiO#RO`O'#CiQOQPOOO#ZO#tO'#CmO#fO!bO'#CmOOQO,59T,59TO#qOpO,59TO#vO`O,59TOOOO'#Cr'#CrO#{O#tO,59XOOQO,59X,59XOOOO'#Cs'#CsO$WO!bO,59XOOQO1G.o1G.oOOOO-E6p-E6pOOQO1G.s1G.sOOOO-E6q-E6q",
@@ -1,4 +1,4 @@
1
- import { B as tags$1, G as NodeWeakMap, I as syntaxTree, O as indentNodeProp, S as foldInside, V as IterMode, h as continuedIndent, i as LocalTokenGroup, n as ExternalTokenizer, r as LRParser, s as LRLanguage, u as LanguageSupport, w as foldNodeProp, z as styleTags } from "./dist-C4EV3aDt.js";
1
+ import { B as tags$1, G as NodeWeakMap, I as syntaxTree, O as indentNodeProp, S as foldInside, V as IterMode, h as continuedIndent, i as LocalTokenGroup, n as ExternalTokenizer, r as LRParser, s as LRLanguage, u as LanguageSupport, w as foldNodeProp, z as styleTags } from "./dist-N1lm7LVK.js";
2
2
  var descendantOp = 122, Unit = 1, identifier$1 = 123, callee = 124, VariableName = 2, queryIdentifier = 125, queryVariableName = 3, QueryCallee = 4, space = [
3
3
  9,
4
4
  10,
@@ -0,0 +1,5 @@
1
+ import "./dist-N1lm7LVK.js";
2
+ import { n as javaLanguage, t as java } from "./dist-BjYGwQ65.js";
3
+ export {
4
+ java
5
+ };
@@ -1,5 +1,5 @@
1
- import { B as tags, Et as EditorSelection, I as syntaxTree, J as parseMixed, O as indentNodeProp, Z as EditorView, n as ExternalTokenizer, r as LRParser, s as LRLanguage, u as LanguageSupport, v as delimitedIndent, w as foldNodeProp, z as styleTags } from "./dist-C4EV3aDt.js";
2
- import { n as html } from "./dist-BFe8Nc_2.js";
1
+ import { B as tags, Et as EditorSelection, I as syntaxTree, J as parseMixed, O as indentNodeProp, Z as EditorView, n as ExternalTokenizer, r as LRParser, s as LRLanguage, u as LanguageSupport, v as delimitedIndent, w as foldNodeProp, z as styleTags } from "./dist-N1lm7LVK.js";
2
+ import { n as html } from "./dist-mpvRA2Bc.js";
3
3
  var interpolationStart = 1, tagStart = 2, endTagStart = 3, text = 180, endrawTagStart = 4, rawText = 181, endcommentTagStart = 5, commentText = 182, InlineComment = 6;
4
4
  function wordChar(_) {
5
5
  return _ >= 65 && _ <= 90 || _ >= 97 && _ <= 122;
@@ -0,0 +1,8 @@
1
+ import "./dist-N1lm7LVK.js";
2
+ import "./dist-mpvRA2Bc.js";
3
+ import "./dist-TuFHGVp2.js";
4
+ import "./dist-Bc-mOFlk.js";
5
+ import { n as vueLanguage, t as vue } from "./dist-QxBlbqgj.js";
6
+ export {
7
+ vue
8
+ };
@@ -1,6 +1,6 @@
1
- import { B as tags, Et as EditorSelection, I as syntaxTree, J as parseMixed, O as indentNodeProp, Z as EditorView, m as bracketMatchingHandle, n as ExternalTokenizer, r as LRParser, s as LRLanguage, t as ContextTracker, u as LanguageSupport, w as foldNodeProp, z as styleTags } from "./dist-C4EV3aDt.js";
2
- import { r as cssLanguage, t as css } from "./dist-Cm4SOB1A.js";
3
- import { c as typescriptLanguage, i as jsxLanguage, n as javascript, r as javascriptLanguage, s as tsxLanguage } from "./dist-BrJQDkv_.js";
1
+ import { B as tags, Et as EditorSelection, I as syntaxTree, J as parseMixed, O as indentNodeProp, Z as EditorView, m as bracketMatchingHandle, n as ExternalTokenizer, r as LRParser, s as LRLanguage, t as ContextTracker, u as LanguageSupport, w as foldNodeProp, z as styleTags } from "./dist-N1lm7LVK.js";
2
+ import { r as cssLanguage, t as css } from "./dist-TuFHGVp2.js";
3
+ import { c as typescriptLanguage, i as jsxLanguage, n as javascript, r as javascriptLanguage, s as tsxLanguage } from "./dist-Bc-mOFlk.js";
4
4
  var scriptText = 54, StartCloseScriptTag = 1, styleText = 55, StartCloseStyleTag = 2, textareaText = 56, StartCloseTextareaTag = 3, EndTag = 4, SelfClosingEndTag = 5, StartTag = 6, StartScriptTag = 7, StartStyleTag = 8, StartTextareaTag = 9, StartSelfClosingTag = 10, StartCloseTag = 11, NoMatchStartCloseTag = 12, MismatchedStartCloseTag = 13, missingCloseTag = 57, IncompleteCloseTag = 14, commentContent$1 = 58, Element = 20, TagName = 22, Attribute = 23, AttributeName = 24, AttributeValue = 26, UnquotedAttributeValue = 27, ScriptText = 28, StyleText = 31, TextareaText = 34, OpenTag = 36, CloseTag = 37, Dialect_noMatch = 0, Dialect_selfClosing = 1, selfClosers$1 = {
5
5
  area: true,
6
6
  base: true,
@@ -0,0 +1,8 @@
1
+ import "./dist-N1lm7LVK.js";
2
+ import "./dist-mpvRA2Bc.js";
3
+ import "./dist-TuFHGVp2.js";
4
+ import "./dist-Bc-mOFlk.js";
5
+ import { i as jinjaLanguage, n as jinja, r as jinjaCompletionSource, t as closePercentBrace } from "./dist-CpNdP46s.js";
6
+ export {
7
+ jinja
8
+ };
@@ -1,25 +1,25 @@
1
- import { B as tags, Et as EditorSelection, I as syntaxTree, J as parseMixed, O as indentNodeProp, R as Tag, S as foldInside, Z as EditorView, f as StreamLanguage, h as continuedIndent, n as ExternalTokenizer, r as LRParser, s as LRLanguage, t as ContextTracker, u as LanguageSupport, v as delimitedIndent, w as foldNodeProp, z as styleTags } from "./dist-C4EV3aDt.js";
2
- import { f as snippetCompletion, l as ifNotIn, s as completeFromList } from "./dist-BYr4a-wE.js";
3
- import { a as PLSQL, f as sql, l as StandardSQL, t as Cassandra } from "./dist-D75XqRaT.js";
4
- import { a as markdown } from "./dist-CSiTW5NO.js";
5
- import { n as html, r as htmlCompletionSource } from "./dist-BFe8Nc_2.js";
6
- import { r as cssLanguage, t as css } from "./dist-Cm4SOB1A.js";
7
- import { c as typescriptLanguage, n as javascript, r as javascriptLanguage, u as parser$1 } from "./dist-BrJQDkv_.js";
8
- import { r as python } from "./dist-C16JG-Ok.js";
1
+ import { B as tags, Et as EditorSelection, I as syntaxTree, J as parseMixed, O as indentNodeProp, R as Tag, S as foldInside, Z as EditorView, f as StreamLanguage, h as continuedIndent, n as ExternalTokenizer, r as LRParser, s as LRLanguage, t as ContextTracker, u as LanguageSupport, v as delimitedIndent, w as foldNodeProp, z as styleTags } from "./dist-N1lm7LVK.js";
2
+ import { f as snippetCompletion, l as ifNotIn, s as completeFromList } from "./dist-DqweMfpO.js";
3
+ import { a as PLSQL, f as sql, l as StandardSQL, t as Cassandra } from "./dist-DlacJSaE.js";
4
+ import { a as markdown } from "./dist-B771Ewvn.js";
5
+ import { n as html, r as htmlCompletionSource } from "./dist-mpvRA2Bc.js";
6
+ import { r as cssLanguage, t as css } from "./dist-TuFHGVp2.js";
7
+ import { c as typescriptLanguage, n as javascript, r as javascriptLanguage, u as parser$1 } from "./dist-Bc-mOFlk.js";
8
+ import { r as python } from "./dist-D2nC1On3.js";
9
9
  import { t as stex } from "./stex-7yEw16Ww.js";
10
- import { t as cpp } from "./dist-BJvk9DSp.js";
11
- import { t as go } from "./dist-DbyoYfBn.js";
12
- import { t as java } from "./dist-aW74oyUt.js";
13
- import { n as jinja } from "./dist-DFBjYgbq.js";
14
- import { t as json } from "./dist-CGH6Jw-c.js";
15
- import { t as less } from "./dist-CxczluAk.js";
16
- import { n as liquid } from "./dist-BLrc9iNb.js";
17
- import { t as php } from "./dist-1-E4bC9V.js";
18
- import { t as rust } from "./dist-B5thW2rT.js";
19
- import { t as sass } from "./dist-CYuoqvce.js";
20
- import { t as wast } from "./dist-APyhcmvq.js";
21
- import { r as xml } from "./dist-iM9VwH8Z.js";
22
- import { t as yaml } from "./dist-CQ3XmGIH.js";
10
+ import { t as cpp } from "./dist-DKr1M-ru.js";
11
+ import { t as go } from "./dist-DNSJBJI7.js";
12
+ import { t as java } from "./dist-BjYGwQ65.js";
13
+ import { n as jinja } from "./dist-CpNdP46s.js";
14
+ import { t as json } from "./dist-DvjVNme1.js";
15
+ import { t as less } from "./dist-BsyHyGqX.js";
16
+ import { n as liquid } from "./dist-fRW2mZtS.js";
17
+ import { t as php } from "./dist-CEmSeYaL.js";
18
+ import { t as rust } from "./dist-B6ZvKwIz.js";
19
+ import { t as sass } from "./dist-8-jPFKws.js";
20
+ import { t as wast } from "./dist-DoO66t8e.js";
21
+ import { r as xml } from "./dist-Bg1YGq2b.js";
22
+ import { t as yaml } from "./dist--MUqhsBh.js";
23
23
  import { t as apl } from "./apl-99A7dLQe.js";
24
24
  import { t as asciiArmor } from "./asciiarmor-DLEhpFDx.js";
25
25
  import { t as asn1 } from "./asn1-CMrcTsT4.js";
@@ -102,7 +102,7 @@ import { t as xQuery } from "./xquery-D2q16GaM.js";
102
102
  import { t as yacas } from "./yacas-DHGOHnNa.js";
103
103
  import { t as z80 } from "./z80-BPhTmO22.js";
104
104
  import { n as msgenny, r as xu, t as mscgen } from "./mscgen-BkbzgGGI.js";
105
- import { t as vue } from "./dist-Dk13KZ54.js";
105
+ import { t as vue } from "./dist-QxBlbqgj.js";
106
106
  var strContent = 63, strDollarBrace = 64, strEnd = 65, escapeSequence = 66, indStrContent = 67, indStrDollarBrace = 68, indStrEnd = 69, indEscapeSequence = 70, quote = 34, backslack = 92, braceL = 123, dollar = 36, apostrophe = 39, scanString = /* @__PURE__ */ new ExternalTokenizer((y) => {
107
107
  for (let G = false, K = 0; ; K++) {
108
108
  let { next: J } = y;
@@ -6,8 +6,8 @@ import { t as Check } from "./check-B2OoWw2h.js";
6
6
  import { h as Events, y as cn } from "./button-B1ZgJ7Cc.js";
7
7
  import { t as require_jsx_runtime } from "./jsx-runtime-9hcJiI23.js";
8
8
  import { t as Tooltip } from "./tooltip-DnI4CwIS.js";
9
- import { $ as ViewPlugin, A as indentString, At as Prec, B as tags, Bt as combineConfig, C as foldKeymap, Ct as ChangeSet, D as getIndentation, Dt as EditorState, E as getIndentUnit, Et as EditorSelection, F as syntaxHighlighting, Ft as StateField, H as NodeProp, Ht as findClusterBreak, I as syntaxTree, It as Text, Lt as Transaction, Mt as RangeSetBuilder, N as matchBrackets, Ot as Facet, Pt as StateEffect, Rt as codePointAt, St as ChangeDesc, Ut as fromCodePoint, Vt as countColumn, X as Direction, Y as Decoration, Z as EditorView, _t as showDialog, a as HighlightStyle, bt as crelt, ct as highlightActiveLineGutter, dt as keymap, et as WidgetType, ft as lineNumbers, g as defaultHighlightStyle, gt as runScopeHandlers, ht as rectangularSelection, it as getPanel, j as indentUnit, jt as RangeSet, k as indentOnInput, lt as highlightSpecialChars, mt as placeholder, nt as drawSelection, o as IndentContext, p as bracketMatching, pt as logException, rt as dropCursor, st as highlightActiveLine, tt as crosshairCursor, ut as hoverTooltip, vt as showPanel, wt as CharCategory, x as foldGutter, xt as Annotation, zt as codePointSize } from "./dist-C4EV3aDt.js";
10
- import { a as closeBracketsKeymap, c as completionKeymap, i as closeBrackets, r as autocompletion } from "./dist-BYr4a-wE.js";
9
+ import { $ as ViewPlugin, A as indentString, At as Prec, B as tags, Bt as combineConfig, C as foldKeymap, Ct as ChangeSet, D as getIndentation, Dt as EditorState, E as getIndentUnit, Et as EditorSelection, F as syntaxHighlighting, Ft as StateField, H as NodeProp, Ht as findClusterBreak, I as syntaxTree, It as Text, Lt as Transaction, Mt as RangeSetBuilder, N as matchBrackets, Ot as Facet, Pt as StateEffect, Rt as codePointAt, St as ChangeDesc, Ut as fromCodePoint, Vt as countColumn, X as Direction, Y as Decoration, Z as EditorView, _t as showDialog, a as HighlightStyle, bt as crelt, ct as highlightActiveLineGutter, dt as keymap, et as WidgetType, ft as lineNumbers, g as defaultHighlightStyle, gt as runScopeHandlers, ht as rectangularSelection, it as getPanel, j as indentUnit, jt as RangeSet, k as indentOnInput, lt as highlightSpecialChars, mt as placeholder, nt as drawSelection, o as IndentContext, p as bracketMatching, pt as logException, rt as dropCursor, st as highlightActiveLine, tt as crosshairCursor, ut as hoverTooltip, vt as showPanel, wt as CharCategory, x as foldGutter, xt as Annotation, zt as codePointSize } from "./dist-N1lm7LVK.js";
10
+ import { a as closeBracketsKeymap, c as completionKeymap, i as closeBrackets, r as autocompletion } from "./dist-DqweMfpO.js";
11
11
  var import_compiler_runtime = require_compiler_runtime(), import_react = /* @__PURE__ */ __toESM(require_react(), 1), import_jsx_runtime = /* @__PURE__ */ __toESM(require_jsx_runtime(), 1);
12
12
  const CopyClipboardIcon = (e6) => {
13
13
  let x = (0, import_compiler_runtime.c)(14), { value: S, className: k, buttonClassName: j, tooltip: M, toastTitle: N, ariaLabel: P } = e6, [F, I] = (0, import_react.useState)(false), L;
@@ -486,7 +486,7 @@ var cursorMatchingBracket = ({ state: e6, dispatch: x }) => toMatchingBracket(e6
486
486
  function extendSel(e6, x) {
487
487
  let S = updateSel(e6.state.selection, (e7) => {
488
488
  let S2 = x(e7);
489
- return EditorSelection.range(e7.anchor, S2.head, S2.goalColumn, S2.bidiLevel || void 0);
489
+ return EditorSelection.range(e7.anchor, S2.head, S2.goalColumn, S2.bidiLevel || void 0, S2.assoc);
490
490
  });
491
491
  return S.eq(e6.state.selection) ? false : (e6.dispatch(setSel(e6.state, S)), true);
492
492
  }
package/dist/main.js CHANGED
@@ -21,7 +21,7 @@ import { a as __toCommonJS, n as __esmMin, r as __export, s as __toESM, t as __c
21
21
  import { t as require_react } from "./react-Bs6Z0kvn.js";
22
22
  import { t as require_compiler_runtime } from "./compiler-runtime-B_OLMU9S.js";
23
23
  import { n as Copy, r as toast, t as copyToClipboard } from "./copy-B7XqFjF_.js";
24
- import { $ as dataViewToBase64, A as AccordionItem, An as Table2, At as normalizeName, B as createInputEvent, Bn as Columns2, Bt as generateUUID, Cn as jsonToMarkdown, Ct as isErrorMime, Dn as selectAtom, Dt as displayCellName, En as atomWithStorage, Et as getCellDomProps, F as AccordionTrigger$1, Fn as Info, Ft as PathBuilder, G as ChevronRightIcon, Gn as import_lib, Hn as CircleAlert, Ht as repl, I as MarimoIncomingMessageEvent, In as File, It as Paths, J as PinRightIcon, Jt as DATA_TYPE_ICON, K as DotFilledIcon, Kt as PluralWord, L as MarimoValueInputEvent, Ln as FileText, M as Accordion$1, Mn as NotebookPen, Mt as customPythonLanguageSupport, N as AccordionContent$1, Nn as LoaderCircle, Nt as MarkdownLanguageAdapter, O as Accordion, On as Wrench, Ot as getValidName, P as AccordionItem$1, Pn as Layers, Q as base64ToUint8Array, R as MarimoValueReadyEvent, Rn as Eye, Rt as goToCellLine, S as getDatasourceContext, Sn as jsonParseWithSpecialChar, St as outputIsStale, Tn as atomWithReducer, Tt as DATA_CELL_ID, U as CheckIcon, Un as Braces, Ut as adaptForLocalStorage, V as BorderAllIcon, Vn as CircleX, Vt as useChromeActions, W as ChevronDownIcon, Wn as esm_default$1, Wt as jotaiJsonStorage, Xt as require_client, Y as deserializeBlob, Yt as getDataTypeColor, Z as base64ToDataView, _ as PopoverClose, _n as SCRATCH_CELL_ID, _t as getInitialAppMode, a as toPng, at as createActions, b as useExpandedOutput, bn as OBJECT_ID_ATTR, bt as viewStateAtom, c as useCellFocusActions, cn as getTracebackInfo, ct as notebookAtom, d as Spinner, dn as filenameAtom, dt as useCellActions, en as convertStatsName, et as extractBase64FromDataURL, f as Popover$1, fn as parseAttrValue, ft as useCellIds, gn as HTMLCellId, gt as AnsiUp, h as PopoverTrigger, hn as CellOutputId, ht as Strings, i as PythonIcon, in as isUninstantiated, j as AccordionTrigger, jn as PaintRoller, jt as Checkbox, k as AccordionContent, kn as Trash2, kt as isInternalCellName, l as useLastFocusedCellId, ln as NotebookScopedLocalStorage, lt as notebookOutline, m as PopoverContent, mn as parseInitialValue, mt as createCell, n as blobToString, nn as requestClientAtom, nt as safeExtractSetUIElementMessageBuffers, o as MarkdownRenderer, on as elementContainsMarimoCellFile, ot as getCellEditorView, p as PopoverClose$1, pn as parseDataset, pt as useCellNames, q as PinLeftIcon, qt as PluralWords, r as filesToBase64, rn as useRequestClient, rt as renderHTML, s as LazyAnyLanguageCodeMirror, sn as extractAllTracebackInfo, st as getCellNames, t as processOutput, tn as getRequestClient, tt as isDataURLString, u as maybeAddAltairImport, ut as reducer, v as isOutputEmpty, vn as UIElementId, vt as initialModeAtom, wn as jsonToTSV, wt as headingToIdentifier, xn as RANDOM_ID_ATTR, xt as outputIsLoading, y as useExpandedConsoleOutput, yn as findCellId, yt as kioskModeAtom, z as MarimoValueUpdateEvent, zn as Database, zt as DeferredRequestRegistry, __tla as __tla_0 } from "./process-output-Cv8vQ4At.js";
24
+ import { $ as dataViewToBase64, A as AccordionItem, An as Table2, At as normalizeName, B as createInputEvent, Bn as Columns2, Bt as generateUUID, Cn as jsonToMarkdown, Ct as isErrorMime, Dn as selectAtom, Dt as displayCellName, En as atomWithStorage, Et as getCellDomProps, F as AccordionTrigger$1, Fn as Info, Ft as PathBuilder, G as ChevronRightIcon, Gn as import_lib, Hn as CircleAlert, Ht as repl, I as MarimoIncomingMessageEvent, In as File, It as Paths, J as PinRightIcon, Jt as DATA_TYPE_ICON, K as DotFilledIcon, Kt as PluralWord, L as MarimoValueInputEvent, Ln as FileText, M as Accordion$1, Mn as NotebookPen, Mt as customPythonLanguageSupport, N as AccordionContent$1, Nn as LoaderCircle, Nt as MarkdownLanguageAdapter, O as Accordion, On as Wrench, Ot as getValidName, P as AccordionItem$1, Pn as Layers, Q as base64ToUint8Array, R as MarimoValueReadyEvent, Rn as Eye, Rt as goToCellLine, S as getDatasourceContext, Sn as jsonParseWithSpecialChar, St as outputIsStale, Tn as atomWithReducer, Tt as DATA_CELL_ID, U as CheckIcon, Un as Braces, Ut as adaptForLocalStorage, V as BorderAllIcon, Vn as CircleX, Vt as useChromeActions, W as ChevronDownIcon, Wn as esm_default$1, Wt as jotaiJsonStorage, Xt as require_client, Y as deserializeBlob, Yt as getDataTypeColor, Z as base64ToDataView, _ as PopoverClose, _n as SCRATCH_CELL_ID, _t as getInitialAppMode, a as toPng, at as createActions, b as useExpandedOutput, bn as OBJECT_ID_ATTR, bt as viewStateAtom, c as useCellFocusActions, cn as getTracebackInfo, ct as notebookAtom, d as Spinner, dn as filenameAtom, dt as useCellActions, en as convertStatsName, et as extractBase64FromDataURL, f as Popover$1, fn as parseAttrValue, ft as useCellIds, gn as HTMLCellId, gt as AnsiUp, h as PopoverTrigger, hn as CellOutputId, ht as Strings, i as PythonIcon, in as isUninstantiated, j as AccordionTrigger, jn as PaintRoller, jt as Checkbox, k as AccordionContent, kn as Trash2, kt as isInternalCellName, l as useLastFocusedCellId, ln as NotebookScopedLocalStorage, lt as notebookOutline, m as PopoverContent, mn as parseInitialValue, mt as createCell, n as blobToString, nn as requestClientAtom, nt as safeExtractSetUIElementMessageBuffers, o as MarkdownRenderer, on as elementContainsMarimoCellFile, ot as getCellEditorView, p as PopoverClose$1, pn as parseDataset, pt as useCellNames, q as PinLeftIcon, qt as PluralWords, r as filesToBase64, rn as useRequestClient, rt as renderHTML, s as LazyAnyLanguageCodeMirror, sn as extractAllTracebackInfo, st as getCellNames, t as processOutput, tn as getRequestClient, tt as isDataURLString, u as maybeAddAltairImport, ut as reducer, v as isOutputEmpty, vn as UIElementId, vt as initialModeAtom, wn as jsonToTSV, wt as headingToIdentifier, xn as RANDOM_ID_ATTR, xt as outputIsLoading, y as useExpandedConsoleOutput, yn as findCellId, yt as kioskModeAtom, z as MarimoValueUpdateEvent, zn as Database, zt as DeferredRequestRegistry, __tla as __tla_0 } from "./process-output-Xg5O7mVz.js";
25
25
  import { __tla as __tla_1 } from "./chunk-5FQGJX7Z-Cz2QbNIw.js";
26
26
  import { c as useSize, l as createLucideIcon, t as Root$4 } from "./dist-BiNtCiQ9.js";
27
27
  import { A as $896ba0a80a8f4d36$export$85fd5fdf27bacc79, C as DEFAULT_COLOR_SCHEME, D as SCALE_TYPE_DESCRIPTIONS, E as EMPTY_VALUE$1, F as ListFilter, I as ChartPie, L as ChartColumn, M as $5a387cc49350e6db$export$722debc0e56fea39, N as Table$1, O as TIME_UNIT_DESCRIPTIONS, P as SquareFunction, S as DEFAULT_AGGREGATION, T as DEFAULT_TIME_UNIT, _ as AGGREGATION_TYPE_DESCRIPTIONS, a as AGGREGATION_FNS$1, b as COLOR_SCHEMES, c as COLOR_BY_FIELDS, d as NONE_VALUE, f as SELECTABLE_DATA_TYPES, g as TIME_UNITS, h as STRING_AGGREGATION_FNS, i as convertDataTypeToSelectable, j as $fb18d541ea1ad717$export$ad991b66133851cf, k as escapeFieldName, l as COMBINED_TIME_UNITS, m as SORT_TYPES, n as createSpecWithoutData, o as BIN_AGGREGATION, p as SINGLE_TIME_UNITS, r as isFieldSet, s as CHART_TYPES, t as augmentSpecWithData, u as ChartType, v as AGGREGATION_TYPE_ICON, w as DEFAULT_MAX_BINS_FACET, x as COUNT_FIELD, y as CHART_TYPE_ICON } from "./spec-UGFYIDJb.js";
@@ -37,23 +37,23 @@ import { $ as __awaiter, B as record, C as ZodUnion, D as any, E as _null, F as
37
37
  import { t as require_jsx_runtime } from "./jsx-runtime-9hcJiI23.js";
38
38
  import { t as require_react_dom } from "./react-dom-BKwCWYPW.js";
39
39
  import { a as TooltipRoot, i as TooltipProvider, n as TooltipContent, o as TooltipTrigger, r as TooltipPortal, s as TooltipProvider$1, t as Tooltip } from "./tooltip-DnI4CwIS.js";
40
- import { n as minimalSetup, r as _extends$5, t as esm_default, u as CopyClipboardIcon } from "./esm-CxoKu9RN.js";
40
+ import { n as minimalSetup, r as _extends$5, t as esm_default, u as CopyClipboardIcon } from "./esm-Bcbo0Yvz.js";
41
41
  import { i as get_default } from "./hasIn-eLCPDloT.js";
42
42
  import { n as _baseSet_default } from "./_basePickBy-Do49cXgl.js";
43
43
  import { n as pick_default, t as range_default } from "./range-DffmqG6L.js";
44
44
  import { i as debounce_default, r as KnownQueryParams, t as CSSClasses } from "./constants-LmeAawHa.js";
45
45
  import { C as useEvent_default, S as getBuildingBlocks, _ as useSetAtom, c as AppConfigSchema, d as useJotaiEffect, g as useAtomValue, h as useAtom, i as autoInstantiateAtom, m as Provider, n as useTheme, o as localeAtom, r as aiEnabledAtom, s as useResolvedMarimoConfig, u as store, v as useStore, w as isEqual_default, x as buildStore, y as atom } from "./useTheme-5GTtjXjy.js";
46
46
  import { a as getContainerWidth, n as vegaLoadData, o as getVegaFieldTypes, r as createBatchedLoader, s as tooltipHandler, t as parseCsvData } from "./loader-C51Irhxm.js";
47
- import { Z as EditorView } from "./dist-C4EV3aDt.js";
47
+ import { Z as EditorView } from "./dist-N1lm7LVK.js";
48
48
  import { t as invariant } from "./invariant-Ctm_8TNZ.js";
49
49
  import { c as arrayShallowEquals, l as uniqueBy, n as once, r as Arrays, t as memoizeLastValue, u as clamp } from "./once-DjP4Kbhy.js";
50
50
  import "./main-sxFlUO_N.js";
51
- import { f as sql } from "./dist-D75XqRaT.js";
52
- import "./dist-CSiTW5NO.js";
53
- import "./dist-BFe8Nc_2.js";
54
- import "./dist-Cm4SOB1A.js";
55
- import "./dist-BrJQDkv_.js";
56
- import { a as parser, r as python } from "./dist-C16JG-Ok.js";
51
+ import { f as sql } from "./dist-DlacJSaE.js";
52
+ import "./dist-B771Ewvn.js";
53
+ import "./dist-mpvRA2Bc.js";
54
+ import "./dist-TuFHGVp2.js";
55
+ import "./dist-Bc-mOFlk.js";
56
+ import { a as parser, r as python } from "./dist-D2nC1On3.js";
57
57
  import "./purify.es-Co_dANLh.js";
58
58
  import { a as AlertTitle, i as AlertDescription, n as arrow, o as isValid, r as Alert, t as useDeepCompareMemoize } from "./useDeepCompareMemoize-9dXEtK7u.js";
59
59
  import { a as Portal$1, c as prettyError, i as Overlay, n as ErrorBanner, o as Root$6, r as Content$2, s as CellNotInitializedError, t as Banner } from "./error-banner-D-KBGvBj.js";
@@ -63,16 +63,16 @@ import { t as useIframeCapabilities } from "./useIframeCapabilities-CzVvBDe8.js"
63
63
  import { t as useAsyncData } from "./useAsyncData-BtHYXgXF.js";
64
64
  import "./defaultLocale-I3_GfJ4U.js";
65
65
  import "./defaultLocale-Dr6Bz4JK.js";
66
- import "./dist-BJvk9DSp.js";
67
- import "./dist-DbyoYfBn.js";
68
- import "./dist-aW74oyUt.js";
69
- import "./dist-CGH6Jw-c.js";
70
- import "./dist-1-E4bC9V.js";
71
- import "./dist-B5thW2rT.js";
72
- import "./dist-CYuoqvce.js";
73
- import "./dist-iM9VwH8Z.js";
74
- import "./dist-CQ3XmGIH.js";
75
- import { t as langs } from "./esm-CCD9xN05.js";
66
+ import "./dist-DKr1M-ru.js";
67
+ import "./dist-DNSJBJI7.js";
68
+ import "./dist-BjYGwQ65.js";
69
+ import "./dist-DvjVNme1.js";
70
+ import "./dist-CEmSeYaL.js";
71
+ import "./dist-B6ZvKwIz.js";
72
+ import "./dist-8-jPFKws.js";
73
+ import "./dist-Bg1YGq2b.js";
74
+ import "./dist--MUqhsBh.js";
75
+ import { t as langs } from "./esm-B_4hpmV_.js";
76
76
  let initialize;
77
77
  let __tla = Promise.all([
78
78
  (() => {
@@ -34560,7 +34560,7 @@ ${O}`,
34560
34560
  };
34561
34561
  }
34562
34562
  };
34563
- var LazyChatbot = import_react.lazy(() => import("./chat-ui-D4ay_SFE.js").then((e) => ({
34563
+ var LazyChatbot = import_react.lazy(() => import("./chat-ui-CedqKBe3.js").then((e) => ({
34564
34564
  default: e.Chatbot
34565
34565
  }))), messageSchema = array(object({
34566
34566
  id: string(),
@@ -64766,7 +64766,7 @@ ${c}
64766
64766
  return Logger.warn("Failed to get version from mount config"), null;
64767
64767
  }
64768
64768
  }
64769
- const marimoVersionAtom = atom(getVersionFromMountConfig() || "0.21.2-dev72"), showCodeInRunModeAtom = atom(true);
64769
+ const marimoVersionAtom = atom(getVersionFromMountConfig() || "0.21.2-dev73"), showCodeInRunModeAtom = atom(true);
64770
64770
  atom(null);
64771
64771
  var VIRTUAL_FILE_REGEX = /\/@file\/([^\s"&'/]+)\.([\dA-Za-z]+)/g, VirtualFileTracker = class e {
64772
64772
  constructor() {