@k2b/ui 0.9.1 → 0.11.0

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 (180) hide show
  1. package/dist/browser/actions/Button.js +15 -7
  2. package/dist/browser/actions/Button.js.map +1 -1
  3. package/dist/browser/actions/ContextMenu.js +55 -15
  4. package/dist/browser/actions/ContextMenu.js.map +1 -1
  5. package/dist/browser/actions/Dropdown.js +39 -15
  6. package/dist/browser/actions/Dropdown.js.map +1 -1
  7. package/dist/browser/actions/FilterChip.js +1 -7
  8. package/dist/browser/actions/FilterChip.js.map +1 -1
  9. package/dist/browser/actions/SplitButton.js +0 -3
  10. package/dist/browser/actions/SplitButton.js.map +1 -1
  11. package/dist/browser/chat/ChatComposer.js +78 -91
  12. package/dist/browser/chat/ChatComposer.js.map +1 -1
  13. package/dist/browser/chat/ChatContextPopup.js +47 -21
  14. package/dist/browser/chat/ChatContextPopup.js.map +1 -1
  15. package/dist/browser/chat/ChatPrimitives.js +221 -232
  16. package/dist/browser/chat/ChatPrimitives.js.map +1 -1
  17. package/dist/browser/chat/index.js +3 -2
  18. package/dist/browser/chat/index.js.map +1 -1
  19. package/dist/browser/content/Chart.js +99 -106
  20. package/dist/browser/content/Chart.js.map +1 -1
  21. package/dist/browser/content/ChartExplorer.js +3 -6
  22. package/dist/browser/content/ChartExplorer.js.map +1 -1
  23. package/dist/browser/content/FileBrowser.js +1 -1
  24. package/dist/browser/content/FileBrowser.js.map +1 -1
  25. package/dist/browser/content/FileTree.js +1 -1
  26. package/dist/browser/content/FileTree.js.map +1 -1
  27. package/dist/browser/content/FileView.js +304 -287
  28. package/dist/browser/content/FileView.js.map +1 -1
  29. package/dist/browser/content/Lightbox.js +18 -0
  30. package/dist/browser/content/Lightbox.js.map +1 -1
  31. package/dist/browser/content/PdfPreview.js +68 -43
  32. package/dist/browser/content/PdfPreview.js.map +1 -1
  33. package/dist/browser/content/ZoomPanViewport.js +51 -52
  34. package/dist/browser/content/ZoomPanViewport.js.map +1 -1
  35. package/dist/browser/feedback/HoverPreview.js +391 -0
  36. package/dist/browser/feedback/HoverPreview.js.map +1 -0
  37. package/dist/browser/feedback/Tooltip.js +50 -8
  38. package/dist/browser/feedback/Tooltip.js.map +1 -1
  39. package/dist/browser/feedback/dialog-core.js +21 -3
  40. package/dist/browser/feedback/dialog-core.js.map +1 -1
  41. package/dist/browser/feedback/index.js +1 -0
  42. package/dist/browser/feedback/index.js.map +1 -1
  43. package/dist/browser/inputs/AutocompleteEditor.js +5 -4
  44. package/dist/browser/inputs/AutocompleteEditor.js.map +1 -1
  45. package/dist/browser/inputs/DatePicker.js +10 -0
  46. package/dist/browser/inputs/DatePicker.js.map +1 -1
  47. package/dist/browser/inputs/FileInputs.js +46 -36
  48. package/dist/browser/inputs/FileInputs.js.map +1 -1
  49. package/dist/browser/inputs/SelectChip.js +2 -1
  50. package/dist/browser/inputs/SelectChip.js.map +1 -1
  51. package/dist/browser/inputs/choice.js +5 -1
  52. package/dist/browser/inputs/choice.js.map +1 -1
  53. package/dist/browser/inputs/markdown/MarkdownEditor.js +173 -173
  54. package/dist/browser/inputs/markdown/MarkdownEditor.js.map +1 -1
  55. package/dist/browser/inputs/markdown/Toolbar.js +31 -34
  56. package/dist/browser/inputs/markdown/Toolbar.js.map +1 -1
  57. package/dist/browser/internal/focus-return.js +61 -0
  58. package/dist/browser/internal/focus-return.js.map +1 -0
  59. package/dist/browser/layout/AppOverview.js +1 -1
  60. package/dist/browser/layout/AppOverview.js.map +1 -1
  61. package/dist/browser/layout/AppWorkspace.js +105 -77
  62. package/dist/browser/layout/AppWorkspace.js.map +1 -1
  63. package/dist/browser/layout/DetailPanel.js +16 -15
  64. package/dist/browser/layout/DetailPanel.js.map +1 -1
  65. package/dist/browser/layout/FloatingWindow.js +3 -1
  66. package/dist/browser/layout/FloatingWindow.js.map +1 -1
  67. package/dist/browser/layout/PanelDialog.js +10 -9
  68. package/dist/browser/layout/PanelDialog.js.map +1 -1
  69. package/dist/browser/layout/Panes.js +82 -81
  70. package/dist/browser/layout/Panes.js.map +1 -1
  71. package/dist/browser/layout/SidebarItemPreview.js +48 -136
  72. package/dist/browser/layout/SidebarItemPreview.js.map +1 -1
  73. package/dist/browser/layout/app-workspace-controller.js +35 -4
  74. package/dist/browser/layout/app-workspace-controller.js.map +1 -1
  75. package/dist/browser/surfaces/ProgressBar.js.map +1 -1
  76. package/dist/browser/surfaces/ProgressRing.js +72 -0
  77. package/dist/browser/surfaces/ProgressRing.js.map +1 -0
  78. package/dist/browser/surfaces/index.js +1 -0
  79. package/dist/browser/surfaces/index.js.map +1 -1
  80. package/dist/ssr/actions/Button.js +15 -7
  81. package/dist/ssr/actions/Button.js.map +1 -1
  82. package/dist/ssr/actions/ContextMenu.js +55 -15
  83. package/dist/ssr/actions/ContextMenu.js.map +1 -1
  84. package/dist/ssr/actions/Dropdown.js +31 -12
  85. package/dist/ssr/actions/Dropdown.js.map +1 -1
  86. package/dist/ssr/actions/FilterChip.js +1 -7
  87. package/dist/ssr/actions/FilterChip.js.map +1 -1
  88. package/dist/ssr/actions/SplitButton.js +0 -3
  89. package/dist/ssr/actions/SplitButton.js.map +1 -1
  90. package/dist/ssr/chat/ChatComposer.js +61 -10
  91. package/dist/ssr/chat/ChatComposer.js.map +1 -1
  92. package/dist/ssr/chat/ChatContextPopup.js +19 -5
  93. package/dist/ssr/chat/ChatContextPopup.js.map +1 -1
  94. package/dist/ssr/chat/ChatPrimitives.js +104 -74
  95. package/dist/ssr/chat/ChatPrimitives.js.map +1 -1
  96. package/dist/ssr/chat/index.js +3 -2
  97. package/dist/ssr/chat/index.js.map +1 -1
  98. package/dist/ssr/content/Chart.js +22 -11
  99. package/dist/ssr/content/Chart.js.map +1 -1
  100. package/dist/ssr/content/ChartExplorer.js +3 -6
  101. package/dist/ssr/content/ChartExplorer.js.map +1 -1
  102. package/dist/ssr/content/FileBrowser.js +1 -1
  103. package/dist/ssr/content/FileBrowser.js.map +1 -1
  104. package/dist/ssr/content/FileTree.js +1 -1
  105. package/dist/ssr/content/FileTree.js.map +1 -1
  106. package/dist/ssr/content/FileView.js +105 -33
  107. package/dist/ssr/content/FileView.js.map +1 -1
  108. package/dist/ssr/content/Lightbox.js +17 -0
  109. package/dist/ssr/content/Lightbox.js.map +1 -1
  110. package/dist/ssr/content/PdfPreview.js +44 -14
  111. package/dist/ssr/content/PdfPreview.js.map +1 -1
  112. package/dist/ssr/content/ZoomPanViewport.js +11 -3
  113. package/dist/ssr/content/ZoomPanViewport.js.map +1 -1
  114. package/dist/ssr/feedback/HoverPreview.js +360 -0
  115. package/dist/ssr/feedback/HoverPreview.js.map +1 -0
  116. package/dist/ssr/feedback/Tooltip.js +50 -8
  117. package/dist/ssr/feedback/Tooltip.js.map +1 -1
  118. package/dist/ssr/feedback/dialog-core.js +21 -3
  119. package/dist/ssr/feedback/dialog-core.js.map +1 -1
  120. package/dist/ssr/feedback/index.js +1 -0
  121. package/dist/ssr/feedback/index.js.map +1 -1
  122. package/dist/ssr/inputs/AutocompleteEditor.js +5 -4
  123. package/dist/ssr/inputs/AutocompleteEditor.js.map +1 -1
  124. package/dist/ssr/inputs/DatePicker.js +5 -0
  125. package/dist/ssr/inputs/DatePicker.js.map +1 -1
  126. package/dist/ssr/inputs/FileInputs.js +29 -11
  127. package/dist/ssr/inputs/FileInputs.js.map +1 -1
  128. package/dist/ssr/inputs/SelectChip.js +2 -1
  129. package/dist/ssr/inputs/SelectChip.js.map +1 -1
  130. package/dist/ssr/inputs/choice.js +5 -1
  131. package/dist/ssr/inputs/choice.js.map +1 -1
  132. package/dist/ssr/inputs/markdown/MarkdownEditor.js +46 -10
  133. package/dist/ssr/inputs/markdown/MarkdownEditor.js.map +1 -1
  134. package/dist/ssr/inputs/markdown/Toolbar.js +30 -2
  135. package/dist/ssr/inputs/markdown/Toolbar.js.map +1 -1
  136. package/dist/ssr/internal/focus-return.js +61 -0
  137. package/dist/ssr/internal/focus-return.js.map +1 -0
  138. package/dist/ssr/layout/AppOverview.js +1 -1
  139. package/dist/ssr/layout/AppOverview.js.map +1 -1
  140. package/dist/ssr/layout/AppWorkspace.js +84 -66
  141. package/dist/ssr/layout/AppWorkspace.js.map +1 -1
  142. package/dist/ssr/layout/DetailPanel.js +16 -15
  143. package/dist/ssr/layout/DetailPanel.js.map +1 -1
  144. package/dist/ssr/layout/FloatingWindow.js +3 -1
  145. package/dist/ssr/layout/FloatingWindow.js.map +1 -1
  146. package/dist/ssr/layout/PanelDialog.js +10 -9
  147. package/dist/ssr/layout/PanelDialog.js.map +1 -1
  148. package/dist/ssr/layout/Panes.js +39 -8
  149. package/dist/ssr/layout/Panes.js.map +1 -1
  150. package/dist/ssr/layout/SidebarItemPreview.js +36 -108
  151. package/dist/ssr/layout/SidebarItemPreview.js.map +1 -1
  152. package/dist/ssr/layout/app-workspace-controller.js +35 -4
  153. package/dist/ssr/layout/app-workspace-controller.js.map +1 -1
  154. package/dist/ssr/surfaces/ProgressBar.js.map +1 -1
  155. package/dist/ssr/surfaces/ProgressRing.js +31 -0
  156. package/dist/ssr/surfaces/ProgressRing.js.map +1 -0
  157. package/dist/ssr/surfaces/index.js +1 -0
  158. package/dist/ssr/surfaces/index.js.map +1 -1
  159. package/dist/styles.css +1 -1
  160. package/dist/types/actions/Button.d.ts +5 -0
  161. package/dist/types/actions/Dropdown.d.ts +5 -1
  162. package/dist/types/actions/SplitButton.d.ts +1 -0
  163. package/dist/types/chat/ChatContextPopup.d.ts +8 -0
  164. package/dist/types/chat/index.d.ts +3 -2
  165. package/dist/types/feedback/HoverPreview.d.ts +83 -0
  166. package/dist/types/feedback/Tooltip.d.ts +6 -0
  167. package/dist/types/feedback/index.d.ts +2 -0
  168. package/dist/types/feedback/prompts.d.ts +9 -6
  169. package/dist/types/inputs/SelectChip.d.ts +1 -0
  170. package/dist/types/inputs/completion/overlay.d.ts +3 -1
  171. package/dist/types/internal/focus-return.d.ts +20 -0
  172. package/dist/types/intl/Format.d.ts +16 -8
  173. package/dist/types/layout/AppWorkspace.d.ts +14 -0
  174. package/dist/types/layout/BottomSheet.d.ts +6 -1
  175. package/dist/types/layout/SidebarItemPreview.d.ts +1 -1
  176. package/dist/types/layout/app-workspace-controller.d.ts +5 -0
  177. package/dist/types/surfaces/ProgressBar.d.ts +1 -1
  178. package/dist/types/surfaces/ProgressRing.d.ts +13 -0
  179. package/dist/types/surfaces/index.d.ts +2 -0
  180. package/package.json +3 -2
@@ -1,31 +1,31 @@
1
1
  import { template as _$template } from "solid-js/web";
2
2
  import { delegateEvents as _$delegateEvents } from "solid-js/web";
3
3
  import { setStyleProperty as _$setStyleProperty } from "solid-js/web";
4
+ import { runHydrationEvents as _$runHydrationEvents } from "solid-js/web";
5
+ import { setAttribute as _$setAttribute } from "solid-js/web";
4
6
  import { getNextMarker as _$getNextMarker } from "solid-js/web";
5
7
  import { spread as _$spread } from "solid-js/web";
6
8
  import { mergeProps as _$mergeProps } from "solid-js/web";
7
9
  import { use as _$use } from "solid-js/web";
8
10
  import { insert as _$insert } from "solid-js/web";
9
- import { memo as _$memo } from "solid-js/web";
10
11
  import { createComponent as _$createComponent } from "solid-js/web";
11
12
  import { className as _$className } from "solid-js/web";
12
- import { setProperty as _$setProperty } from "solid-js/web";
13
- import { setAttribute as _$setAttribute } from "solid-js/web";
14
13
  import { effect as _$effect } from "solid-js/web";
15
14
  import { getNextElement as _$getNextElement } from "solid-js/web";
16
- import { runHydrationEvents as _$runHydrationEvents } from "solid-js/web";
17
- var _tmpl$ = /*#__PURE__*/_$template(`<button type=button class=k2b-markdown-editor__tool tabindex=-1><i aria-hidden=true>`),
15
+ import { memo as _$memo } from "solid-js/web";
16
+ var _tmpl$ = /*#__PURE__*/_$template(`<i aria-hidden=true>`),
18
17
  _tmpl$2 = /*#__PURE__*/_$template(`<div class=k2b-markdown-editor__placeholder aria-hidden=true>`),
19
18
  _tmpl$3 = /*#__PURE__*/_$template(`<div class=k2b-markdown-editor__stats aria-hidden=true><span><!$><!/> <!$><!/></span><span><!$><!/> <!$><!/></span><span><!$><!/> <!$><!/>`),
20
19
  _tmpl$4 = /*#__PURE__*/_$template(`<div class=k2b-autocomplete__status role=status><i class="ti ti-loader-2 k2b-spin"aria-hidden=true></i>Loading suggestions`),
21
20
  _tmpl$5 = /*#__PURE__*/_$template(`<div popover=manual class=k2b-autocomplete__options role=presentation><div class=k2b-autocomplete__listbox role=listbox><!$><!/><!$><!/><!$><!/>`),
22
21
  _tmpl$6 = /*#__PURE__*/_$template(`<div class=k2b-markdown-editor role=group><!$><!/><div class=k2b-markdown-editor__surface><!$><!/><div class=k2b-markdown-editor__preview aria-hidden=true></div><textarea class=k2b-markdown-editor__input></textarea></div><!$><!/><!$><!/>`),
23
- _tmpl$7 = /*#__PURE__*/_$template(`<button type=button class=k2b-markdown-editor__tool><i class="ti ti-x"aria-hidden=true>`),
22
+ _tmpl$7 = /*#__PURE__*/_$template(`<i class="ti ti-x"aria-hidden=true>`),
24
23
  _tmpl$8 = /*#__PURE__*/_$template(`<div class=k2b-autocomplete__status data-error=true role=alert><i class="ti ti-alert-circle"aria-hidden=true></i><span></span><button type=button>`),
25
24
  _tmpl$9 = /*#__PURE__*/_$template(`<div class=k2b-autocomplete__option role=option><span></span><!$><!/>`),
26
25
  _tmpl$0 = /*#__PURE__*/_$template(`<small>`);
27
26
  import { highlight } from "@k2b/stdlib";
28
27
  import { createEffect, createMemo, createSignal, createUniqueId, For, onCleanup, onMount, Show, untrack } from "solid-js";
28
+ import { Tooltip } from "../../feedback/Tooltip";
29
29
  import { createFieldMeta, Field, fieldControlAria } from "../../internal/field";
30
30
  import { useUiMessages } from "../../intl/messages";
31
31
  import { abbreviations as abbreviationsCompletion, buildSuggestContext, collectKnownLabels, createCompletionBehaviorState, detectQuery, displayLabel, renderWithOverlay, resolveSuggestions } from "../completion";
@@ -150,10 +150,6 @@ export function MarkdownEditor(props) {
150
150
  const maxHeight = 260;
151
151
  const spaceBelow = window.innerHeight - rect.bottom;
152
152
  const openAbove = spaceBelow < maxHeight && rect.top > spaceBelow;
153
- const width = Math.min(280, window.innerWidth - 16);
154
- const left = Math.min(rect.left, window.innerWidth - width - 8);
155
- dropdown.style.setProperty("left", `${Math.max(8, left)}px`, "important");
156
- dropdown.style.setProperty("width", `${width}px`, "important");
157
153
  if (openAbove) {
158
154
  dropdown.style.setProperty("top", "auto", "important");
159
155
  dropdown.style.setProperty("bottom", `${window.innerHeight - rect.top + 4}px`, "important");
@@ -162,6 +158,11 @@ export function MarkdownEditor(props) {
162
158
  dropdown.style.setProperty("bottom", "auto", "important");
163
159
  }
164
160
  if (!dropdown.matches(":popover-open")) dropdown.showPopover();
161
+ // The list sizes to its suggestions in CSS; measured once shown, it is
162
+ // clamped into the viewport before the next paint.
163
+ const width = dropdown.getBoundingClientRect().width;
164
+ const left = Math.min(rect.left, window.innerWidth - width - 8);
165
+ dropdown.style.setProperty("left", `${Math.max(8, left)}px`, "important");
165
166
  };
166
167
  const isAbortError = error => error instanceof DOMException ? error.name === "AbortError" : Boolean(error && typeof error === "object" && "name" in error && error.name === "AbortError");
167
168
  const applySuggestionList = (context, suggestions) => {
@@ -402,28 +403,27 @@ export function MarkdownEditor(props) {
402
403
  return props.onSave;
403
404
  },
404
405
  get children() {
405
- var _el$ = _$getNextElement(_tmpl$),
406
- _el$2 = _el$.firstChild;
407
- _el$.$$click = () => props.onSave?.();
408
- _el$.$$mousedown = event => event.preventDefault();
409
- _$effect(_p$ => {
410
- var _v$ = messages().saveShortcut,
411
- _v$2 = messages().save,
412
- _v$3 = props.disabled || props.saveDisabled || props.saving,
413
- _v$4 = props.saving ? "ti ti-loader-2 k2b-spin" : props.saved ? "ti ti-check" : "ti ti-device-floppy";
414
- _v$ !== _p$.e && _$setAttribute(_el$, "title", _p$.e = _v$);
415
- _v$2 !== _p$.t && _$setAttribute(_el$, "aria-label", _p$.t = _v$2);
416
- _v$3 !== _p$.a && _$setProperty(_el$, "disabled", _p$.a = _v$3);
417
- _v$4 !== _p$.o && _$className(_el$2, _p$.o = _v$4);
418
- return _p$;
419
- }, {
420
- e: undefined,
421
- t: undefined,
422
- a: undefined,
423
- o: undefined
406
+ return _$createComponent(Tooltip.Trigger, {
407
+ type: "button",
408
+ "class": "k2b-markdown-editor__tool",
409
+ get content() {
410
+ return messages().saveShortcut;
411
+ },
412
+ get ["aria-label"]() {
413
+ return messages().save;
414
+ },
415
+ tabIndex: -1,
416
+ get disabled() {
417
+ return props.disabled || props.saveDisabled || props.saving;
418
+ },
419
+ onMouseDown: event => event.preventDefault(),
420
+ onClick: () => props.onSave?.(),
421
+ get children() {
422
+ var _el$ = _$getNextElement(_tmpl$);
423
+ _$effect(() => _$className(_el$, props.saving ? "ti ti-loader-2 k2b-spin" : props.saved ? "ti ti-check" : "ti ti-device-floppy"));
424
+ return _el$;
425
+ }
424
426
  });
425
- _$runHydrationEvents();
426
- return _el$;
427
427
  }
428
428
  });
429
429
  return _$createComponent(Field, {
@@ -450,25 +450,25 @@ export function MarkdownEditor(props) {
450
450
  return props.disabled;
451
451
  },
452
452
  get children() {
453
- var _el$3 = _$getNextElement(_tmpl$6),
454
- _el$36 = _el$3.firstChild,
455
- [_el$37, _co$1] = _$getNextMarker(_el$36.nextSibling),
456
- _el$4 = _el$37.nextSibling,
457
- _el$8 = _el$4.firstChild,
458
- [_el$9, _co$] = _$getNextMarker(_el$8.nextSibling),
459
- _el$6 = _el$9.nextSibling,
460
- _el$7 = _el$6.nextSibling,
461
- _el$38 = _el$4.nextSibling,
462
- [_el$39, _co$10] = _$getNextMarker(_el$38.nextSibling),
463
- _el$40 = _el$39.nextSibling,
464
- [_el$41, _co$11] = _$getNextMarker(_el$40.nextSibling);
465
- _el$3.$$keydown = event => {
453
+ var _el$2 = _$getNextElement(_tmpl$6),
454
+ _el$35 = _el$2.firstChild,
455
+ [_el$36, _co$1] = _$getNextMarker(_el$35.nextSibling),
456
+ _el$3 = _el$36.nextSibling,
457
+ _el$7 = _el$3.firstChild,
458
+ [_el$8, _co$] = _$getNextMarker(_el$7.nextSibling),
459
+ _el$5 = _el$8.nextSibling,
460
+ _el$6 = _el$5.nextSibling,
461
+ _el$37 = _el$3.nextSibling,
462
+ [_el$38, _co$10] = _$getNextMarker(_el$37.nextSibling),
463
+ _el$39 = _el$38.nextSibling,
464
+ [_el$40, _co$11] = _$getNextMarker(_el$39.nextSibling);
465
+ _el$2.$$keydown = event => {
466
466
  if (props.onSave && (event.metaKey || event.ctrlKey) && event.key.toLowerCase() === "s") {
467
467
  event.preventDefault();
468
468
  if (!props.disabled && !props.saveDisabled && !props.saving) props.onSave();
469
469
  }
470
470
  };
471
- _$insert(_el$3, _$createComponent(Show, {
471
+ _$insert(_el$2, _$createComponent(Show, {
472
472
  get when() {
473
473
  return !props.noToolbar;
474
474
  },
@@ -485,68 +485,68 @@ export function MarkdownEditor(props) {
485
485
  return props.onClose;
486
486
  },
487
487
  get children() {
488
- var _el$42 = _$getNextElement(_tmpl$7);
489
- _el$42.$$click = () => props.onClose?.();
490
- _$effect(_p$ => {
491
- var _v$12 = messages().close,
492
- _v$13 = messages().close,
493
- _v$14 = props.disabled ? 0 : -1;
494
- _v$12 !== _p$.e && _$setAttribute(_el$42, "title", _p$.e = _v$12);
495
- _v$13 !== _p$.t && _$setAttribute(_el$42, "aria-label", _p$.t = _v$13);
496
- _v$14 !== _p$.a && _$setAttribute(_el$42, "tabindex", _p$.a = _v$14);
497
- return _p$;
498
- }, {
499
- e: undefined,
500
- t: undefined,
501
- a: undefined
488
+ return _$createComponent(Tooltip.Trigger, {
489
+ type: "button",
490
+ "class": "k2b-markdown-editor__tool",
491
+ get content() {
492
+ return messages().close;
493
+ },
494
+ get ["aria-label"]() {
495
+ return messages().close;
496
+ },
497
+ get tabIndex() {
498
+ return props.disabled ? 0 : -1;
499
+ },
500
+ onClick: () => props.onClose?.(),
501
+ get children() {
502
+ return _$getNextElement(_tmpl$7);
503
+ }
502
504
  });
503
- _$runHydrationEvents();
504
- return _el$42;
505
505
  }
506
506
  })];
507
507
  }
508
508
  });
509
509
  }
510
- }), _el$37, _co$1);
511
- _$insert(_el$4, _$createComponent(Show, {
510
+ }), _el$36, _co$1);
511
+ _$insert(_el$3, _$createComponent(Show, {
512
512
  get when() {
513
513
  return _$memo(() => !!!localValue())() && props.placeholder;
514
514
  },
515
515
  get children() {
516
- var _el$5 = _$getNextElement(_tmpl$2);
517
- _$insert(_el$5, () => props.placeholder);
518
- return _el$5;
516
+ var _el$4 = _$getNextElement(_tmpl$2);
517
+ _$insert(_el$4, () => props.placeholder);
518
+ return _el$4;
519
519
  }
520
- }), _el$9, _co$);
520
+ }), _el$8, _co$);
521
521
  var _ref$ = preview;
522
- typeof _ref$ === "function" ? _$use(_ref$, _el$6) : preview = _el$6;
523
- _el$7.addEventListener("blur", event => {
522
+ typeof _ref$ === "function" ? _$use(_ref$, _el$5) : preview = _el$5;
523
+ _el$6.addEventListener("blur", event => {
524
524
  const next = event.relatedTarget;
525
525
  if (next && dropdown?.contains(next)) return;
526
526
  completionBehavior.reset();
527
527
  clearCompletion();
528
528
  });
529
- _el$7.addEventListener("compositionend", () => setComposing(false));
530
- _el$7.addEventListener("compositionstart", () => setComposing(true));
531
- _el$7.addEventListener("scroll", event => {
529
+ _el$6.addEventListener("compositionend", () => setComposing(false));
530
+ _el$6.addEventListener("compositionstart", () => setComposing(true));
531
+ _el$6.addEventListener("scroll", event => {
532
532
  if (preview) {
533
533
  preview.scrollTop = event.currentTarget.scrollTop;
534
534
  preview.scrollLeft = event.currentTarget.scrollLeft;
535
535
  }
536
536
  });
537
- _el$7.addEventListener("paste", event => {
537
+ _el$6.addEventListener("paste", event => {
538
538
  if (textarea && handleSmartPaste(event, textarea)) {
539
539
  event.preventDefault();
540
540
  }
541
541
  });
542
- _el$7.$$keydown = onKeyDown;
543
- _el$7.addEventListener("change", event => props.onValueCommit?.(event.currentTarget.value));
544
- _el$7.$$input = onInput;
542
+ _el$6.$$keydown = onKeyDown;
543
+ _el$6.addEventListener("change", event => props.onValueCommit?.(event.currentTarget.value));
544
+ _el$6.$$input = onInput;
545
545
  _$use(element => {
546
546
  textarea = element;
547
547
  props.textareaRef?.(element);
548
- }, _el$7);
549
- _$spread(_el$7, _$mergeProps({
548
+ }, _el$6);
549
+ _$spread(_el$6, _$mergeProps({
550
550
  get id() {
551
551
  return meta.controlId;
552
552
  },
@@ -575,99 +575,99 @@ export function MarkdownEditor(props) {
575
575
  return _$memo(() => !!(dropdownOpen() && state()))() ? optionId(state().selectedIndex) : undefined;
576
576
  }
577
577
  }), false, false);
578
- _$insert(_el$3, _$createComponent(Show, {
578
+ _$insert(_el$2, _$createComponent(Show, {
579
579
  get when() {
580
580
  return _$memo(() => !!(props.showStats ?? true))() && !props.disabled;
581
581
  },
582
582
  get children() {
583
- var _el$0 = _$getNextElement(_tmpl$3),
584
- _el$1 = _el$0.firstChild,
585
- _el$11 = _el$1.firstChild,
586
- [_el$12, _co$2] = _$getNextMarker(_el$11.nextSibling),
587
- _el$10 = _el$12.nextSibling,
588
- _el$13 = _el$10.nextSibling,
589
- [_el$14, _co$3] = _$getNextMarker(_el$13.nextSibling),
590
- _el$15 = _el$1.nextSibling,
591
- _el$17 = _el$15.firstChild,
592
- [_el$18, _co$4] = _$getNextMarker(_el$17.nextSibling),
593
- _el$16 = _el$18.nextSibling,
594
- _el$19 = _el$16.nextSibling,
595
- [_el$20, _co$5] = _$getNextMarker(_el$19.nextSibling),
596
- _el$21 = _el$15.nextSibling,
597
- _el$23 = _el$21.firstChild,
598
- [_el$24, _co$6] = _$getNextMarker(_el$23.nextSibling),
599
- _el$22 = _el$24.nextSibling,
600
- _el$25 = _el$22.nextSibling,
601
- [_el$26, _co$7] = _$getNextMarker(_el$25.nextSibling);
602
- _$insert(_el$1, () => stats().lines, _el$12, _co$2);
603
- _$insert(_el$1, () => stats().lines === 1 ? "line" : "lines", _el$14, _co$3);
604
- _$insert(_el$15, () => stats().words, _el$18, _co$4);
605
- _$insert(_el$15, () => stats().words === 1 ? "word" : "words", _el$20, _co$5);
606
- _$insert(_el$21, () => stats().chars, _el$24, _co$6);
607
- _$insert(_el$21, () => stats().chars === 1 ? "char" : "chars", _el$26, _co$7);
608
- _$effect(() => _$setAttribute(_el$0, "data-empty", stats().chars === 0 ? "true" : undefined));
609
- return _el$0;
583
+ var _el$9 = _$getNextElement(_tmpl$3),
584
+ _el$0 = _el$9.firstChild,
585
+ _el$10 = _el$0.firstChild,
586
+ [_el$11, _co$2] = _$getNextMarker(_el$10.nextSibling),
587
+ _el$1 = _el$11.nextSibling,
588
+ _el$12 = _el$1.nextSibling,
589
+ [_el$13, _co$3] = _$getNextMarker(_el$12.nextSibling),
590
+ _el$14 = _el$0.nextSibling,
591
+ _el$16 = _el$14.firstChild,
592
+ [_el$17, _co$4] = _$getNextMarker(_el$16.nextSibling),
593
+ _el$15 = _el$17.nextSibling,
594
+ _el$18 = _el$15.nextSibling,
595
+ [_el$19, _co$5] = _$getNextMarker(_el$18.nextSibling),
596
+ _el$20 = _el$14.nextSibling,
597
+ _el$22 = _el$20.firstChild,
598
+ [_el$23, _co$6] = _$getNextMarker(_el$22.nextSibling),
599
+ _el$21 = _el$23.nextSibling,
600
+ _el$24 = _el$21.nextSibling,
601
+ [_el$25, _co$7] = _$getNextMarker(_el$24.nextSibling);
602
+ _$insert(_el$0, () => stats().lines, _el$11, _co$2);
603
+ _$insert(_el$0, () => stats().lines === 1 ? "line" : "lines", _el$13, _co$3);
604
+ _$insert(_el$14, () => stats().words, _el$17, _co$4);
605
+ _$insert(_el$14, () => stats().words === 1 ? "word" : "words", _el$19, _co$5);
606
+ _$insert(_el$20, () => stats().chars, _el$23, _co$6);
607
+ _$insert(_el$20, () => stats().chars === 1 ? "char" : "chars", _el$25, _co$7);
608
+ _$effect(() => _$setAttribute(_el$9, "data-empty", stats().chars === 0 ? "true" : undefined));
609
+ return _el$9;
610
610
  }
611
- }), _el$39, _co$10);
612
- _$insert(_el$3, _$createComponent(Show, {
611
+ }), _el$38, _co$10);
612
+ _$insert(_el$2, _$createComponent(Show, {
613
613
  get when() {
614
614
  return state() || loading() || completionError();
615
615
  },
616
616
  get children() {
617
- var _el$27 = _$getNextElement(_tmpl$5),
618
- _el$28 = _el$27.firstChild,
619
- _el$30 = _el$28.firstChild,
620
- [_el$31, _co$8] = _$getNextMarker(_el$30.nextSibling),
621
- _el$32 = _el$31.nextSibling,
622
- [_el$33, _co$9] = _$getNextMarker(_el$32.nextSibling),
623
- _el$34 = _el$33.nextSibling,
624
- [_el$35, _co$0] = _$getNextMarker(_el$34.nextSibling);
617
+ var _el$26 = _$getNextElement(_tmpl$5),
618
+ _el$27 = _el$26.firstChild,
619
+ _el$29 = _el$27.firstChild,
620
+ [_el$30, _co$8] = _$getNextMarker(_el$29.nextSibling),
621
+ _el$31 = _el$30.nextSibling,
622
+ [_el$32, _co$9] = _$getNextMarker(_el$31.nextSibling),
623
+ _el$33 = _el$32.nextSibling,
624
+ [_el$34, _co$0] = _$getNextMarker(_el$33.nextSibling);
625
625
  var _ref$2 = dropdown;
626
- typeof _ref$2 === "function" ? _$use(_ref$2, _el$27) : dropdown = _el$27;
627
- _$setAttribute(_el$28, "id", listboxId);
628
- _$insert(_el$28, _$createComponent(Show, {
626
+ typeof _ref$2 === "function" ? _$use(_ref$2, _el$26) : dropdown = _el$26;
627
+ _$setAttribute(_el$27, "id", listboxId);
628
+ _$insert(_el$27, _$createComponent(Show, {
629
629
  get when() {
630
630
  return loading();
631
631
  },
632
632
  get children() {
633
633
  return _$getNextElement(_tmpl$4);
634
634
  }
635
- }), _el$31, _co$8);
636
- _$insert(_el$28, _$createComponent(Show, {
635
+ }), _el$30, _co$8);
636
+ _$insert(_el$27, _$createComponent(Show, {
637
637
  get when() {
638
638
  return completionError();
639
639
  },
640
640
  children: message => (() => {
641
- var _el$43 = _$getNextElement(_tmpl$8),
642
- _el$44 = _el$43.firstChild,
643
- _el$45 = _el$44.nextSibling,
644
- _el$46 = _el$45.nextSibling;
645
- _$insert(_el$45, message);
646
- _el$46.$$click = retryCompletion;
647
- _el$46.$$mousedown = event => event.preventDefault();
648
- _$insert(_el$46, () => messages().retry);
641
+ var _el$42 = _$getNextElement(_tmpl$8),
642
+ _el$43 = _el$42.firstChild,
643
+ _el$44 = _el$43.nextSibling,
644
+ _el$45 = _el$44.nextSibling;
645
+ _$insert(_el$44, message);
646
+ _el$45.$$click = retryCompletion;
647
+ _el$45.$$mousedown = event => event.preventDefault();
648
+ _$insert(_el$45, () => messages().retry);
649
649
  _$runHydrationEvents();
650
- return _el$43;
650
+ return _el$42;
651
651
  })()
652
- }), _el$33, _co$9);
653
- _$insert(_el$28, _$createComponent(For, {
652
+ }), _el$32, _co$9);
653
+ _$insert(_el$27, _$createComponent(For, {
654
654
  get each() {
655
655
  return state()?.suggestions ?? [];
656
656
  },
657
657
  children: (suggestion, index) => // biome-ignore lint/a11y/useKeyWithClickEvents: the owning textarea handles keyboard activation through aria-activedescendant.
658
658
  (() => {
659
- var _el$47 = _$getNextElement(_tmpl$9),
660
- _el$48 = _el$47.firstChild,
661
- _el$49 = _el$48.nextSibling,
662
- [_el$50, _co$12] = _$getNextMarker(_el$49.nextSibling);
663
- _el$47.$$click = () => {
659
+ var _el$46 = _$getNextElement(_tmpl$9),
660
+ _el$47 = _el$46.firstChild,
661
+ _el$48 = _el$47.nextSibling,
662
+ [_el$49, _co$12] = _$getNextMarker(_el$48.nextSibling);
663
+ _el$46.$$click = () => {
664
664
  activateSuggestion(index());
665
665
  textarea?.focus();
666
666
  };
667
- _el$47.$$mousedown = event => {
667
+ _el$46.$$mousedown = event => {
668
668
  event.preventDefault();
669
669
  };
670
- _el$47.addEventListener("mouseenter", () => {
670
+ _el$46.addEventListener("mouseenter", () => {
671
671
  const current = state();
672
672
  if (current) {
673
673
  setState({
@@ -676,59 +676,59 @@ export function MarkdownEditor(props) {
676
676
  });
677
677
  }
678
678
  });
679
- _$insert(_el$48, () => displayLabel(suggestion, state().context.completion));
680
- _$insert(_el$47, _$createComponent(Show, {
679
+ _$insert(_el$47, () => displayLabel(suggestion, state().context.completion));
680
+ _$insert(_el$46, _$createComponent(Show, {
681
681
  get when() {
682
682
  return suggestion.hint;
683
683
  },
684
684
  children: hint => (() => {
685
- var _el$51 = _$getNextElement(_tmpl$0);
686
- _$insert(_el$51, hint);
687
- return _el$51;
685
+ var _el$50 = _$getNextElement(_tmpl$0);
686
+ _$insert(_el$50, hint);
687
+ return _el$50;
688
688
  })()
689
- }), _el$50, _co$12);
689
+ }), _el$49, _co$12);
690
690
  _$effect(_p$ => {
691
- var _v$15 = optionId(index()),
692
- _v$16 = index() === state()?.selectedIndex;
693
- _v$15 !== _p$.e && _$setAttribute(_el$47, "id", _p$.e = _v$15);
694
- _v$16 !== _p$.t && _$setAttribute(_el$47, "aria-selected", _p$.t = _v$16);
691
+ var _v$0 = optionId(index()),
692
+ _v$1 = index() === state()?.selectedIndex;
693
+ _v$0 !== _p$.e && _$setAttribute(_el$46, "id", _p$.e = _v$0);
694
+ _v$1 !== _p$.t && _$setAttribute(_el$46, "aria-selected", _p$.t = _v$1);
695
695
  return _p$;
696
696
  }, {
697
697
  e: undefined,
698
698
  t: undefined
699
699
  });
700
700
  _$runHydrationEvents();
701
- return _el$47;
701
+ return _el$46;
702
702
  })()
703
- }), _el$35, _co$0);
703
+ }), _el$34, _co$0);
704
704
  _$effect(_p$ => {
705
- var _v$5 = messages().completionSuggestions,
706
- _v$6 = messages().suggestions;
707
- _v$5 !== _p$.e && _$setAttribute(_el$27, "aria-label", _p$.e = _v$5);
708
- _v$6 !== _p$.t && _$setAttribute(_el$28, "aria-label", _p$.t = _v$6);
705
+ var _v$ = messages().completionSuggestions,
706
+ _v$2 = messages().suggestions;
707
+ _v$ !== _p$.e && _$setAttribute(_el$26, "aria-label", _p$.e = _v$);
708
+ _v$2 !== _p$.t && _$setAttribute(_el$27, "aria-label", _p$.t = _v$2);
709
709
  return _p$;
710
710
  }, {
711
711
  e: undefined,
712
712
  t: undefined
713
713
  });
714
- return _el$27;
714
+ return _el$26;
715
715
  }
716
- }), _el$41, _co$11);
716
+ }), _el$40, _co$11);
717
717
  _$effect(_p$ => {
718
- var _v$7 = props.label ? meta.labelId : undefined,
719
- _v$8 = !props.label ? props["aria-label"] : undefined,
720
- _v$9 = props.disabled ? "true" : undefined,
721
- _v$0 = error() ? "true" : undefined,
722
- _v$1 = props.variant === "default" ? undefined : props.variant,
723
- _v$10 = props.fill ? "true" : undefined,
724
- _v$11 = String(props.lines ?? 6);
725
- _v$7 !== _p$.e && _$setAttribute(_el$3, "aria-labelledby", _p$.e = _v$7);
726
- _v$8 !== _p$.t && _$setAttribute(_el$3, "aria-label", _p$.t = _v$8);
727
- _v$9 !== _p$.a && _$setAttribute(_el$3, "data-disabled", _p$.a = _v$9);
728
- _v$0 !== _p$.o && _$setAttribute(_el$3, "data-invalid", _p$.o = _v$0);
729
- _v$1 !== _p$.i && _$setAttribute(_el$3, "data-variant", _p$.i = _v$1);
730
- _v$10 !== _p$.n && _$setAttribute(_el$3, "data-fill", _p$.n = _v$10);
731
- _v$11 !== _p$.s && _$setStyleProperty(_el$3, "--k2b-editor-lines", _p$.s = _v$11);
718
+ var _v$3 = props.label ? meta.labelId : undefined,
719
+ _v$4 = !props.label ? props["aria-label"] : undefined,
720
+ _v$5 = props.disabled ? "true" : undefined,
721
+ _v$6 = error() ? "true" : undefined,
722
+ _v$7 = props.variant === "default" ? undefined : props.variant,
723
+ _v$8 = props.fill ? "true" : undefined,
724
+ _v$9 = String(props.lines ?? 6);
725
+ _v$3 !== _p$.e && _$setAttribute(_el$2, "aria-labelledby", _p$.e = _v$3);
726
+ _v$4 !== _p$.t && _$setAttribute(_el$2, "aria-label", _p$.t = _v$4);
727
+ _v$5 !== _p$.a && _$setAttribute(_el$2, "data-disabled", _p$.a = _v$5);
728
+ _v$6 !== _p$.o && _$setAttribute(_el$2, "data-invalid", _p$.o = _v$6);
729
+ _v$7 !== _p$.i && _$setAttribute(_el$2, "data-variant", _p$.i = _v$7);
730
+ _v$8 !== _p$.n && _$setAttribute(_el$2, "data-fill", _p$.n = _v$8);
731
+ _v$9 !== _p$.s && _$setStyleProperty(_el$2, "--k2b-editor-lines", _p$.s = _v$9);
732
732
  return _p$;
733
733
  }, {
734
734
  e: undefined,
@@ -740,10 +740,10 @@ export function MarkdownEditor(props) {
740
740
  s: undefined
741
741
  });
742
742
  _$runHydrationEvents();
743
- return _el$3;
743
+ return _el$2;
744
744
  }
745
745
  });
746
746
  }
747
747
  export { abbreviations } from "../completion";
748
- _$delegateEvents(["mousedown", "click", "keydown", "input"]);
748
+ _$delegateEvents(["keydown", "input", "mousedown", "click"]);
749
749
  //# sourceMappingURL=MarkdownEditor.js.map