@octaviaflow/core 3.0.18-beta.41 → 3.0.18-beta.43

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -7771,10 +7771,12 @@ import {
7771
7771
  useCallback as useCallback12,
7772
7772
  useEffect as useEffect9,
7773
7773
  useId as useId15,
7774
+ useLayoutEffect as useLayoutEffect3,
7774
7775
  useMemo as useMemo9,
7775
7776
  useRef as useRef14,
7776
7777
  useState as useState14
7777
7778
  } from "react";
7779
+ import { createPortal as createPortal5 } from "react-dom";
7778
7780
  import { jsx as jsx28, jsxs as jsxs27 } from "react/jsx-runtime";
7779
7781
  function OptionDropdown({
7780
7782
  value,
@@ -7792,6 +7794,22 @@ function OptionDropdown({
7792
7794
  const panelRef = useRef14(null);
7793
7795
  const inputRef = useRef14(null);
7794
7796
  const listboxId = useId15();
7797
+ const [panelPos, setPanelPos] = useState14(null);
7798
+ const updatePanelPos = useCallback12(() => {
7799
+ if (!triggerRef.current) return;
7800
+ const r = triggerRef.current.getBoundingClientRect();
7801
+ setPanelPos({ top: r.bottom + 4, left: r.left, width: r.width });
7802
+ }, []);
7803
+ useLayoutEffect3(() => {
7804
+ if (!open) return;
7805
+ updatePanelPos();
7806
+ window.addEventListener("scroll", updatePanelPos, true);
7807
+ window.addEventListener("resize", updatePanelPos);
7808
+ return () => {
7809
+ window.removeEventListener("scroll", updatePanelPos, true);
7810
+ window.removeEventListener("resize", updatePanelPos);
7811
+ };
7812
+ }, [open, updatePanelPos]);
7795
7813
  const showSearch = searchable === true || searchable === "auto" && options.length > 8;
7796
7814
  const selected = options.find((o) => o.value === value);
7797
7815
  const filtered = useMemo9(() => {
@@ -7878,54 +7896,71 @@ function OptionDropdown({
7878
7896
  ]
7879
7897
  }
7880
7898
  ),
7881
- open && /* @__PURE__ */ jsxs27("div", { ref: panelRef, className: "ods-cb-dd__panel", role: "presentation", children: [
7882
- showSearch && /* @__PURE__ */ jsxs27("div", { className: "ods-cb-dd__search", children: [
7883
- /* @__PURE__ */ jsx28(SearchIcon4, { "aria-hidden": "true" }),
7884
- /* @__PURE__ */ jsx28(
7885
- "input",
7886
- {
7887
- ref: inputRef,
7888
- value: query,
7889
- onChange: (e) => setQuery(e.target.value),
7890
- placeholder: "Search\u2026",
7891
- "aria-label": "Search options"
7892
- }
7893
- )
7894
- ] }),
7895
- /* @__PURE__ */ jsxs27("ul", { id: listboxId, role: "listbox", "aria-label": ariaLabel, className: "ods-cb-dd__list", children: [
7896
- filtered.length === 0 && /* @__PURE__ */ jsx28("li", { className: "ods-cb-dd__empty", children: "No matches" }),
7897
- filtered.map((opt, idx) => /* @__PURE__ */ jsx28("li", { children: /* @__PURE__ */ jsxs27(
7898
- "button",
7899
- {
7900
- type: "button",
7901
- role: "option",
7902
- "aria-selected": opt.value === value,
7903
- className: cn(
7904
- "ods-cb-dd__opt",
7905
- opt.value === value && "ods-cb-dd__opt--selected",
7906
- idx === activeIdx && "ods-cb-dd__opt--active"
7907
- ),
7908
- onClick: () => select(opt.value),
7909
- onMouseEnter: () => setActiveIdx(idx),
7910
- children: [
7911
- opt.icon && /* @__PURE__ */ jsx28("span", { className: "ods-cb-dd__opt-icon", "aria-hidden": "true", children: opt.icon }),
7912
- opt.symbol && /* @__PURE__ */ jsx28("span", { className: "ods-cb-dd__opt-symbol", children: opt.symbol }),
7913
- /* @__PURE__ */ jsxs27("span", { className: "ods-cb-dd__opt-text", children: [
7914
- /* @__PURE__ */ jsx28("span", { className: "ods-cb-dd__opt-label", children: opt.label }),
7915
- opt.description && /* @__PURE__ */ jsx28("span", { className: "ods-cb-dd__opt-desc", children: opt.description })
7916
- ] }),
7917
- opt.value === value && /* @__PURE__ */ jsx28(
7918
- CheckmarkIcon4,
7899
+ open && panelPos && typeof document !== "undefined" && createPortal5(
7900
+ /* @__PURE__ */ jsxs27(
7901
+ "div",
7902
+ {
7903
+ ref: panelRef,
7904
+ className: "ods-cb-dd__panel ods-cb-dd__panel--portal",
7905
+ role: "presentation",
7906
+ style: {
7907
+ position: "fixed",
7908
+ top: panelPos.top,
7909
+ left: panelPos.left,
7910
+ minWidth: panelPos.width
7911
+ },
7912
+ children: [
7913
+ showSearch && /* @__PURE__ */ jsxs27("div", { className: "ods-cb-dd__search", children: [
7914
+ /* @__PURE__ */ jsx28(SearchIcon4, { "aria-hidden": "true" }),
7915
+ /* @__PURE__ */ jsx28(
7916
+ "input",
7919
7917
  {
7920
- "aria-hidden": "true",
7921
- className: "ods-cb-dd__opt-check"
7918
+ ref: inputRef,
7919
+ value: query,
7920
+ onChange: (e) => setQuery(e.target.value),
7921
+ placeholder: "Search\u2026",
7922
+ "aria-label": "Search options"
7922
7923
  }
7923
7924
  )
7924
- ]
7925
- }
7926
- ) }, opt.value))
7927
- ] })
7928
- ] })
7925
+ ] }),
7926
+ /* @__PURE__ */ jsxs27("ul", { id: listboxId, role: "listbox", "aria-label": ariaLabel, className: "ods-cb-dd__list", children: [
7927
+ filtered.length === 0 && /* @__PURE__ */ jsx28("li", { className: "ods-cb-dd__empty", children: "No matches" }),
7928
+ filtered.map((opt, idx) => /* @__PURE__ */ jsx28("li", { children: /* @__PURE__ */ jsxs27(
7929
+ "button",
7930
+ {
7931
+ type: "button",
7932
+ role: "option",
7933
+ "aria-selected": opt.value === value,
7934
+ className: cn(
7935
+ "ods-cb-dd__opt",
7936
+ opt.value === value && "ods-cb-dd__opt--selected",
7937
+ idx === activeIdx && "ods-cb-dd__opt--active"
7938
+ ),
7939
+ onClick: () => select(opt.value),
7940
+ onMouseEnter: () => setActiveIdx(idx),
7941
+ children: [
7942
+ opt.icon && /* @__PURE__ */ jsx28("span", { className: "ods-cb-dd__opt-icon", "aria-hidden": "true", children: opt.icon }),
7943
+ opt.symbol && /* @__PURE__ */ jsx28("span", { className: "ods-cb-dd__opt-symbol", children: opt.symbol }),
7944
+ /* @__PURE__ */ jsxs27("span", { className: "ods-cb-dd__opt-text", children: [
7945
+ /* @__PURE__ */ jsx28("span", { className: "ods-cb-dd__opt-label", children: opt.label }),
7946
+ opt.description && /* @__PURE__ */ jsx28("span", { className: "ods-cb-dd__opt-desc", children: opt.description })
7947
+ ] }),
7948
+ opt.value === value && /* @__PURE__ */ jsx28(
7949
+ CheckmarkIcon4,
7950
+ {
7951
+ "aria-hidden": "true",
7952
+ className: "ods-cb-dd__opt-check"
7953
+ }
7954
+ )
7955
+ ]
7956
+ }
7957
+ ) }, opt.value))
7958
+ ] })
7959
+ ]
7960
+ }
7961
+ ),
7962
+ document.body
7963
+ )
7929
7964
  ] });
7930
7965
  }
7931
7966
  var ConditionBuilder = forwardRef26(function ConditionBuilder2({
@@ -8273,7 +8308,7 @@ import {
8273
8308
  useRef as useRef16
8274
8309
  } from "react";
8275
8310
  import { FocusScope, OverlayProvider, useDialog, useModal, useOverlay } from "react-aria";
8276
- import { createPortal as createPortal5 } from "react-dom";
8311
+ import { createPortal as createPortal6 } from "react-dom";
8277
8312
 
8278
8313
  // src/utils/motion.ts
8279
8314
  var odsMotion = {
@@ -8429,7 +8464,7 @@ var DialogContent = forwardRef28(function DialogContent2({
8429
8464
  DialogContent.displayName = "Dialog.Content";
8430
8465
  var Dialog = forwardRef28(function Dialog2(props, ref) {
8431
8466
  if (typeof document === "undefined") return null;
8432
- return createPortal5(
8467
+ return createPortal6(
8433
8468
  /* @__PURE__ */ jsx30(OverlayProvider, { children: /* @__PURE__ */ jsx30(DialogContent, { ref, ...props }) }),
8434
8469
  document.body
8435
8470
  );
@@ -8966,11 +9001,17 @@ function CsvTable({
8966
9001
  error.message
8967
9002
  ] }),
8968
9003
  /* @__PURE__ */ jsxs33("table", { className: "ods-csv-viewer__table", "aria-label": "CSV data", children: [
8969
- headerRow && /* @__PURE__ */ jsx34("thead", { children: /* @__PURE__ */ jsx34("tr", { children: Array.from({ length: colCount }).map((_, i) => /* @__PURE__ */ jsx34("th", { scope: "col", children: headerRow[i] ?? "" }, i)) }) }),
9004
+ headerRow && /* @__PURE__ */ jsx34("thead", { children: /* @__PURE__ */ jsx34("tr", { children: Array.from({ length: colCount }).map((_, i) => {
9005
+ const v = headerRow[i] ?? "";
9006
+ return /* @__PURE__ */ jsx34("th", { scope: "col", title: v, children: v }, i);
9007
+ }) }) }),
8970
9008
  /* @__PURE__ */ jsx34("tbody", { children: rows.map((row, ri) => (
8971
9009
  // CSV rows have no stable id — `ri` is the only key we have.
8972
9010
  // Acceptable since CSVs are read-only data.
8973
- /* @__PURE__ */ jsx34("tr", { children: Array.from({ length: colCount }).map((_, ci) => /* @__PURE__ */ jsx34("td", { children: row[ci] ?? "" }, ci)) }, ri)
9011
+ /* @__PURE__ */ jsx34("tr", { children: Array.from({ length: colCount }).map((_, ci) => {
9012
+ const v = row[ci] ?? "";
9013
+ return /* @__PURE__ */ jsx34("td", { title: v, children: v }, ci);
9014
+ }) }, ri)
8974
9015
  )) })
8975
9016
  ] })
8976
9017
  ] });
@@ -9048,11 +9089,11 @@ import {
9048
9089
  useCallback as useCallback16,
9049
9090
  useEffect as useEffect14,
9050
9091
  useId as useId19,
9051
- useLayoutEffect as useLayoutEffect3,
9092
+ useLayoutEffect as useLayoutEffect4,
9052
9093
  useRef as useRef18,
9053
9094
  useState as useState18
9054
9095
  } from "react";
9055
- import { createPortal as createPortal6 } from "react-dom";
9096
+ import { createPortal as createPortal7 } from "react-dom";
9056
9097
  import { Fragment as Fragment17, jsx as jsx35, jsxs as jsxs34 } from "react/jsx-runtime";
9057
9098
  function flipIntoViewport(cursor, panelRect, viewport, margin = 8) {
9058
9099
  if (!panelRect) return cursor;
@@ -9118,7 +9159,7 @@ var ContextMenu = forwardRef33(
9118
9159
  setActiveIndex(navigableIndices[0] ?? -1);
9119
9160
  onOpenChange?.(true);
9120
9161
  };
9121
- useLayoutEffect3(() => {
9162
+ useLayoutEffect4(() => {
9122
9163
  if (!open) return;
9123
9164
  const panel2 = panelRef.current;
9124
9165
  if (!panel2) return;
@@ -9285,7 +9326,7 @@ var ContextMenu = forwardRef33(
9285
9326
  children
9286
9327
  }
9287
9328
  ),
9288
- createPortal6(panel, portalTarget)
9329
+ createPortal7(panel, portalTarget)
9289
9330
  ] });
9290
9331
  }
9291
9332
  );
@@ -10824,12 +10865,12 @@ import {
10824
10865
  import {
10825
10866
  useCallback as useCallback18,
10826
10867
  useEffect as useEffect16,
10827
- useLayoutEffect as useLayoutEffect4,
10868
+ useLayoutEffect as useLayoutEffect5,
10828
10869
  useMemo as useMemo12,
10829
10870
  useRef as useRef20,
10830
10871
  useState as useState20
10831
10872
  } from "react";
10832
- import { createPortal as createPortal7 } from "react-dom";
10873
+ import { createPortal as createPortal8 } from "react-dom";
10833
10874
  import { Fragment as Fragment20, jsx as jsx38, jsxs as jsxs37 } from "react/jsx-runtime";
10834
10875
  function readValue(row, col) {
10835
10876
  if (typeof col.accessor === "function") return col.accessor(row);
@@ -10846,7 +10887,7 @@ function PortalMenu({
10846
10887
  }) {
10847
10888
  const menuRef = useRef20(null);
10848
10889
  const [pos, setPos] = useState20(null);
10849
- useLayoutEffect4(() => {
10890
+ useLayoutEffect5(() => {
10850
10891
  if (!open) return;
10851
10892
  const update = () => {
10852
10893
  const t = triggerRef.current;
@@ -10892,7 +10933,7 @@ function PortalMenu({
10892
10933
  right: align === "end" ? pos.right : "auto",
10893
10934
  zIndex: 1e3
10894
10935
  };
10895
- return createPortal7(
10936
+ return createPortal8(
10896
10937
  /* @__PURE__ */ jsx38("div", { ref: menuRef, className: cn("ods-datatable__menu", className), style, children }),
10897
10938
  document.body
10898
10939
  );
@@ -12337,7 +12378,7 @@ Drawer.displayName = "Drawer";
12337
12378
  import { AnimatePresence as AnimatePresence13, motion as motion19 } from "framer-motion";
12338
12379
  import { useEffect as useEffect18, useMemo as useMemo14, useRef as useRef22 } from "react";
12339
12380
  import { useButton as useButton4, useMenu, useMenuItem, useMenuTrigger } from "react-aria";
12340
- import { createPortal as createPortal8 } from "react-dom";
12381
+ import { createPortal as createPortal9 } from "react-dom";
12341
12382
  import { Fragment as Fragment22, jsx as jsx44, jsxs as jsxs43 } from "react/jsx-runtime";
12342
12383
  function MenuItemComponent({ item, state, onAction }) {
12343
12384
  const ref = useRef22(null);
@@ -12501,7 +12542,7 @@ function MenuPopup({
12501
12542
  }
12502
12543
  ) });
12503
12544
  if (typeof document !== "undefined") {
12504
- return createPortal8(portalContent, document.body);
12545
+ return createPortal9(portalContent, document.body);
12505
12546
  }
12506
12547
  return null;
12507
12548
  }
@@ -15797,8 +15838,8 @@ var Heatmap = forwardRef48(
15797
15838
  Heatmap.displayName = "Heatmap";
15798
15839
 
15799
15840
  // src/components/HoverCard/HoverCard.tsx
15800
- import { useCallback as useCallback24, useEffect as useEffect24, useLayoutEffect as useLayoutEffect5, useRef as useRef29, useState as useState29 } from "react";
15801
- import { createPortal as createPortal9 } from "react-dom";
15841
+ import { useCallback as useCallback24, useEffect as useEffect24, useLayoutEffect as useLayoutEffect6, useRef as useRef29, useState as useState29 } from "react";
15842
+ import { createPortal as createPortal10 } from "react-dom";
15802
15843
  import { Fragment as Fragment25, jsx as jsx59, jsxs as jsxs56 } from "react/jsx-runtime";
15803
15844
  function computePosition3(rect, panelRect, placement, offset) {
15804
15845
  const cx = rect.left + rect.width / 2;
@@ -15854,7 +15895,7 @@ function HoverCard({
15854
15895
  const panelRect = panelRef.current.getBoundingClientRect();
15855
15896
  setCoords(computePosition3(trigRect, panelRect, placement, offset));
15856
15897
  }, [placement, offset]);
15857
- useLayoutEffect5(() => {
15898
+ useLayoutEffect6(() => {
15858
15899
  if (!open) return;
15859
15900
  reposition();
15860
15901
  const id = requestAnimationFrame(reposition);
@@ -15882,7 +15923,7 @@ function HoverCard({
15882
15923
  children
15883
15924
  }
15884
15925
  );
15885
- const portal = typeof document !== "undefined" && open ? createPortal9(
15926
+ const portal = typeof document !== "undefined" && open ? createPortal10(
15886
15927
  /* @__PURE__ */ jsx59(
15887
15928
  "div",
15888
15929
  {
@@ -18115,12 +18156,12 @@ import {
18115
18156
  useCallback as useCallback26,
18116
18157
  useEffect as useEffect28,
18117
18158
  useId as useId35,
18118
- useLayoutEffect as useLayoutEffect6,
18159
+ useLayoutEffect as useLayoutEffect7,
18119
18160
  useMemo as useMemo22,
18120
18161
  useRef as useRef33,
18121
18162
  useState as useState33
18122
18163
  } from "react";
18123
- import { createPortal as createPortal10 } from "react-dom";
18164
+ import { createPortal as createPortal11 } from "react-dom";
18124
18165
  import {
18125
18166
  ChevronDownIcon as ChevronDownIcon6,
18126
18167
  CloseIcon as CloseIcon11,
@@ -18242,7 +18283,7 @@ var MultiSelect = forwardRef60(
18242
18283
  useEffect28(() => setActiveIdx(0), [query, open]);
18243
18284
  const [fitCount, setFitCount] = useState33(selectedValues.length);
18244
18285
  const [tick, setTick] = useState33(0);
18245
- useLayoutEffect6(() => {
18286
+ useLayoutEffect7(() => {
18246
18287
  if (maxVisibleTags !== void 0) {
18247
18288
  setFitCount(Math.min(selectedValues.length, maxVisibleTags));
18248
18289
  return;
@@ -18492,7 +18533,7 @@ var MultiSelect = forwardRef60(
18492
18533
  ]
18493
18534
  }
18494
18535
  ),
18495
- typeof document !== "undefined" && createPortal10(
18536
+ typeof document !== "undefined" && createPortal11(
18496
18537
  /* @__PURE__ */ jsx70(AnimatePresence17, { children: open && /* @__PURE__ */ jsxs68(
18497
18538
  motion26.div,
18498
18539
  {
@@ -20495,8 +20536,8 @@ var PipelineCard = forwardRef66(
20495
20536
  PipelineCard.displayName = "PipelineCard";
20496
20537
 
20497
20538
  // src/components/Popover/Popover.tsx
20498
- import { useCallback as useCallback31, useEffect as useEffect30, useLayoutEffect as useLayoutEffect7, useRef as useRef36, useState as useState37 } from "react";
20499
- import { createPortal as createPortal11 } from "react-dom";
20539
+ import { useCallback as useCallback31, useEffect as useEffect30, useLayoutEffect as useLayoutEffect8, useRef as useRef36, useState as useState37 } from "react";
20540
+ import { createPortal as createPortal12 } from "react-dom";
20500
20541
  import { Fragment as Fragment34, jsx as jsx78, jsxs as jsxs76 } from "react/jsx-runtime";
20501
20542
  function computePosition4(rect, popRect, placement, offset) {
20502
20543
  const cx = rect.left + rect.width / 2;
@@ -20545,7 +20586,7 @@ function Popover({
20545
20586
  const popRect = popRef.current.getBoundingClientRect();
20546
20587
  setCoords(computePosition4(trigRect, popRect, placement, offset));
20547
20588
  }, [placement, offset]);
20548
- useLayoutEffect7(() => {
20589
+ useLayoutEffect8(() => {
20549
20590
  if (!open) return;
20550
20591
  reposition();
20551
20592
  const id = requestAnimationFrame(reposition);
@@ -20593,7 +20634,7 @@ function Popover({
20593
20634
  children
20594
20635
  }
20595
20636
  );
20596
- const portal = typeof document !== "undefined" && open ? createPortal11(
20637
+ const portal = typeof document !== "undefined" && open ? createPortal12(
20597
20638
  /* @__PURE__ */ jsxs76(
20598
20639
  "div",
20599
20640
  {
@@ -22177,7 +22218,7 @@ import {
22177
22218
  forwardRef as forwardRef78,
22178
22219
  useCallback as useCallback33,
22179
22220
  useEffect as useEffect32,
22180
- useLayoutEffect as useLayoutEffect8,
22221
+ useLayoutEffect as useLayoutEffect9,
22181
22222
  useRef as useRef40,
22182
22223
  useState as useState40
22183
22224
  } from "react";
@@ -22221,7 +22262,7 @@ var Resizable = forwardRef78(
22221
22262
  if (typeof ref === "function") ref(node);
22222
22263
  else if (ref) ref.current = node;
22223
22264
  };
22224
- useLayoutEffect8(() => {
22265
+ useLayoutEffect9(() => {
22225
22266
  const el = wrapRef.current;
22226
22267
  if (!el) return;
22227
22268
  const t = direction === "horizontal" ? el.offsetWidth : el.offsetHeight;
@@ -22596,7 +22637,7 @@ function SettingsRow({
22596
22637
  // src/components/Sheet/Sheet.tsx
22597
22638
  import { AnimatePresence as AnimatePresence18, motion as motion28 } from "framer-motion";
22598
22639
  import { useEffect as useEffect33 } from "react";
22599
- import { createPortal as createPortal12 } from "react-dom";
22640
+ import { createPortal as createPortal13 } from "react-dom";
22600
22641
  import { Fragment as Fragment37, jsx as jsx94, jsxs as jsxs91 } from "react/jsx-runtime";
22601
22642
  var slideVariants = {
22602
22643
  top: { initial: { y: "-100%" }, animate: { y: 0 }, exit: { y: "-100%" } },
@@ -22679,7 +22720,7 @@ function Sheet({
22679
22720
  )
22680
22721
  ] }) });
22681
22722
  if (typeof document === "undefined") return null;
22682
- return createPortal12(content, document.body);
22723
+ return createPortal13(content, document.body);
22683
22724
  }
22684
22725
 
22685
22726
  // src/components/Show/Show.tsx
@@ -23314,7 +23355,7 @@ SkeletonGroup.displayName = "SkeletonGroup";
23314
23355
  import { AnimatePresence as AnimatePresence19, motion as motion29 } from "framer-motion";
23315
23356
  import { useRef as useRef42 } from "react";
23316
23357
  import { FocusScope as FocusScope2, OverlayProvider as OverlayProvider2, useDialog as useDialog2, useModal as useModal2, useOverlay as useOverlay2 } from "react-aria";
23317
- import { createPortal as createPortal13 } from "react-dom";
23358
+ import { createPortal as createPortal14 } from "react-dom";
23318
23359
  import { Fragment as Fragment39, jsx as jsx98, jsxs as jsxs93 } from "react/jsx-runtime";
23319
23360
  var slideVariants2 = {
23320
23361
  left: {
@@ -23406,7 +23447,7 @@ function SlideoutContent({
23406
23447
  }
23407
23448
  function SlideoutPanel(props) {
23408
23449
  if (typeof document === "undefined") return null;
23409
- return createPortal13(
23450
+ return createPortal14(
23410
23451
  /* @__PURE__ */ jsx98(OverlayProvider2, { children: /* @__PURE__ */ jsx98(SlideoutContent, { ...props }) }),
23411
23452
  document.body
23412
23453
  );
@@ -24041,11 +24082,11 @@ import {
24041
24082
  forwardRef as forwardRef86,
24042
24083
  useCallback as useCallback36,
24043
24084
  useEffect as useEffect36,
24044
- useLayoutEffect as useLayoutEffect9,
24085
+ useLayoutEffect as useLayoutEffect10,
24045
24086
  useMemo as useMemo25,
24046
24087
  useState as useState43
24047
24088
  } from "react";
24048
- import { createPortal as createPortal14 } from "react-dom";
24089
+ import { createPortal as createPortal15 } from "react-dom";
24049
24090
  import { jsx as jsx103, jsxs as jsxs97 } from "react/jsx-runtime";
24050
24091
  var Spotlight = forwardRef86(
24051
24092
  function Spotlight2({
@@ -24083,7 +24124,7 @@ var Spotlight = forwardRef86(
24083
24124
  height: window.innerHeight
24084
24125
  });
24085
24126
  }, [open, target]);
24086
- useLayoutEffect9(() => {
24127
+ useLayoutEffect10(() => {
24087
24128
  measure();
24088
24129
  }, [measure]);
24089
24130
  useEffect36(() => {
@@ -24112,7 +24153,7 @@ var Spotlight = forwardRef86(
24112
24153
  width: rect.width + padding * 2,
24113
24154
  height: rect.height + padding * 2
24114
24155
  } : null;
24115
- return createPortal14(
24156
+ return createPortal15(
24116
24157
  /* @__PURE__ */ jsx103(AnimatePresence20, { children: open && /* @__PURE__ */ jsxs97(
24117
24158
  motion30.div,
24118
24159
  {
@@ -25852,7 +25893,7 @@ import {
25852
25893
  useState as useState51
25853
25894
  } from "react";
25854
25895
  import { useTextField } from "react-aria";
25855
- import { createPortal as createPortal15 } from "react-dom";
25896
+ import { createPortal as createPortal16 } from "react-dom";
25856
25897
  import { CopyIcon as CopyIcon5, CutIcon } from "@octaviaflow/icons";
25857
25898
 
25858
25899
  // src/hooks/useTextareaCommands.ts
@@ -26662,7 +26703,7 @@ var Textarea = forwardRef96(
26662
26703
  "aria-activedescendant": cmdEnabled && cmdPalette.isOpen && cmdPalette.items[cmdPalette.activeIndex] ? `${baseId}-cmd-${cmdPalette.items[cmdPalette.activeIndex].id}` : void 0
26663
26704
  }
26664
26705
  ),
26665
- cmdEnabled && cmdPalette.isOpen && cmdPalette.items.length > 0 && typeof document !== "undefined" && createPortal15(
26706
+ cmdEnabled && cmdPalette.isOpen && cmdPalette.items.length > 0 && typeof document !== "undefined" && createPortal16(
26666
26707
  /* @__PURE__ */ jsx115(
26667
26708
  "ul",
26668
26709
  {
@@ -26705,7 +26746,7 @@ var Textarea = forwardRef96(
26705
26746
  ),
26706
26747
  document.body
26707
26748
  ),
26708
- selectionToolbar && sel.active && sel.rect && typeof document !== "undefined" && createPortal15(
26749
+ selectionToolbar && sel.active && sel.rect && typeof document !== "undefined" && createPortal16(
26709
26750
  /* @__PURE__ */ jsxs108(
26710
26751
  "div",
26711
26752
  {
@@ -27630,7 +27671,7 @@ import {
27630
27671
  useRef as useRef51,
27631
27672
  useState as useState54
27632
27673
  } from "react";
27633
- import { createPortal as createPortal16 } from "react-dom";
27674
+ import { createPortal as createPortal17 } from "react-dom";
27634
27675
  import { Fragment as Fragment46, jsx as jsx119, jsxs as jsxs112 } from "react/jsx-runtime";
27635
27676
  var defaultIcons = {
27636
27677
  success: /* @__PURE__ */ jsxs112("svg", { width: "16", height: "16", viewBox: "0 0 16 16", fill: "none", "aria-hidden": "true", children: [
@@ -27960,7 +28001,7 @@ function ToastProvider({
27960
28001
  }) });
27961
28002
  return /* @__PURE__ */ jsxs112(ToastContext.Provider, { value: ctx, children: [
27962
28003
  children,
27963
- typeof document !== "undefined" && createPortal16(containers, document.body)
28004
+ typeof document !== "undefined" && createPortal17(containers, document.body)
27964
28005
  ] });
27965
28006
  }
27966
28007
  function useToast() {
@@ -30783,6 +30824,24 @@ function XmlNodeRow({
30783
30824
  const children = node.children ?? [];
30784
30825
  const isSelfClosing = children.length === 0;
30785
30826
  const attrs = Object.entries(node.attributes ?? {});
30827
+ const inlineTextChild = children.length === 1 && children[0].type === "text" ? children[0].text ?? "" : null;
30828
+ if (inlineTextChild !== null) {
30829
+ return /* @__PURE__ */ jsxs123("div", { className: "ods-xml-viewer__row", style: { paddingLeft: pad2 }, children: [
30830
+ /* @__PURE__ */ jsx130("span", { className: "ods-xml-viewer__caret-spacer" }),
30831
+ /* @__PURE__ */ jsx130("span", { className: "ods-xml-viewer__bracket", children: "<" }),
30832
+ /* @__PURE__ */ jsx130("span", { className: "ods-xml-viewer__tag", children: node.name }),
30833
+ showAttributes && attrs.map(([k, v]) => /* @__PURE__ */ jsxs123("span", { className: "ods-xml-viewer__attr", children: [
30834
+ /* @__PURE__ */ jsx130("span", { className: "ods-xml-viewer__attr-name", children: k }),
30835
+ /* @__PURE__ */ jsx130("span", { className: "ods-xml-viewer__attr-eq", children: "=" }),
30836
+ /* @__PURE__ */ jsx130("span", { className: "ods-xml-viewer__attr-value", children: `"${v}"` })
30837
+ ] }, k)),
30838
+ /* @__PURE__ */ jsx130("span", { className: "ods-xml-viewer__bracket", children: ">" }),
30839
+ /* @__PURE__ */ jsx130("span", { className: "ods-xml-viewer__text", children: inlineTextChild }),
30840
+ /* @__PURE__ */ jsx130("span", { className: "ods-xml-viewer__bracket", children: "</" }),
30841
+ /* @__PURE__ */ jsx130("span", { className: "ods-xml-viewer__tag", children: node.name }),
30842
+ /* @__PURE__ */ jsx130("span", { className: "ods-xml-viewer__bracket", children: ">" })
30843
+ ] });
30844
+ }
30786
30845
  return /* @__PURE__ */ jsxs123("div", { children: [
30787
30846
  /* @__PURE__ */ jsxs123(
30788
30847
  "div",