superdoc 2.12.0-next.2 → 2.12.0-next.20

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 (50) hide show
  1. package/dist/chunks/{FindReplaceSurface-40AnrqWk.es.js → FindReplaceSurface-CVKgivXi.es.js} +8 -2
  2. package/dist/chunks/{FindReplaceSurface-0p7EtMZh.cjs → FindReplaceSurface-qi9OhbwN.cjs} +8 -2
  3. package/dist/chunks/{create-super-doc-ui-CBFGggZ2.cjs → create-super-doc-ui-BWWWNPP8.cjs} +180 -84
  4. package/dist/chunks/{create-super-doc-ui-C-AuEM9F.es.js → create-super-doc-ui-FnwgTkUv.es.js} +180 -84
  5. package/dist/collaboration-upgrade-engine.cjs +1 -1
  6. package/dist/collaboration-upgrade-engine.es.js +1 -1
  7. package/dist/layout-engine/contracts/src/column-layout.d.ts +58 -1
  8. package/dist/layout-engine/contracts/src/graphic-placement.d.ts +3 -0
  9. package/dist/layout-engine/contracts/src/index.d.ts +17 -3
  10. package/dist/layout-engine/contracts/src/run-helpers.d.ts +8 -0
  11. package/dist/layout-engine/layout-bridge/src/cache.d.ts +5 -4
  12. package/dist/layout-engine/layout-bridge/src/incrementalLayout.d.ts +4 -1
  13. package/dist/layout-engine/layout-bridge/src/note-marker-measure-key.d.ts +3 -0
  14. package/dist/layout-engine/layout-bridge/src/remeasure.d.ts +2 -1
  15. package/dist/layout-engine/layout-engine/src/column-balancing.d.ts +11 -7
  16. package/dist/layout-engine/layout-engine/src/layout-paragraph.d.ts +2 -6
  17. package/dist/layout-engine/painters/dom/src/derived-run-text-plane.d.ts +9 -0
  18. package/dist/layout-engine/painters/dom/src/index.d.ts +1 -0
  19. package/dist/layout-engine/painters/dom/src/page-content.d.ts +3 -1
  20. package/dist/layout-engine/painters/dom/src/persistent-page-surface.d.ts +2 -0
  21. package/dist/layout-engine/painters/dom/src/renderer.d.ts +9 -16
  22. package/dist/public/ui-react.cjs +56 -10
  23. package/dist/public/ui-react.es.js +56 -11
  24. package/dist/public/ui-vue.cjs +18 -1
  25. package/dist/public/ui-vue.es.js +18 -2
  26. package/dist/public/ui.cjs +1 -1
  27. package/dist/public/ui.es.js +1 -1
  28. package/dist/shared/font-system/src/index.d.ts +3 -1
  29. package/dist/shared/font-system/src/natural-line-metrics.d.ts +11 -0
  30. package/dist/shared/font-system/src/resolver.d.ts +14 -0
  31. package/dist/style.css +65 -65
  32. package/dist/style.layered.css +65 -65
  33. package/dist/superdoc/src/core/types/index.d.ts +35 -12
  34. package/dist/superdoc/src/public/index.d.cts +2 -0
  35. package/dist/superdoc/src/public/index.d.ts +1 -0
  36. package/dist/superdoc/src/public/ui/react.d.ts +12 -3
  37. package/dist/superdoc/src/public/ui/types.d.ts +81 -21
  38. package/dist/superdoc/src/public/ui/vue.d.ts +4 -2
  39. package/dist/superdoc/src/public/ui-react.d.cts +3 -0
  40. package/dist/superdoc/src/public/ui-react.d.ts +2 -2
  41. package/dist/superdoc/src/public/ui-vue.d.cts +1 -0
  42. package/dist/superdoc/src/public/ui-vue.d.ts +1 -1
  43. package/dist/superdoc/src/public/ui.d.cts +2 -0
  44. package/dist/superdoc/src/public/ui.d.ts +1 -1
  45. package/dist/superdoc.cjs +166 -14
  46. package/dist/superdoc.es.js +166 -14
  47. package/dist-cdn/style.layered.css +1 -1
  48. package/dist-cdn/superdoc.min.css +1 -1
  49. package/dist-cdn/superdoc.min.js +37 -37
  50. package/package.json +2 -2
@@ -1,4 +1,4 @@
1
- import { t as createSuperDocUI } from "../chunks/create-super-doc-ui-C-AuEM9F.es.js";
1
+ import { t as createSuperDocUI } from "../chunks/create-super-doc-ui-FnwgTkUv.es.js";
2
2
  import { t as toSliceSource } from "../chunks/slice-source-gfOhG2MW.es.js";
3
3
  import { computed, inject, onScopeDispose, provide, shallowRef, toRaw, toValue, watch } from "vue";
4
4
  //#region src/public/ui/vue.ts
@@ -188,6 +188,22 @@ var EMPTY_SELECTION = {
188
188
  function useSuperDocSelection() {
189
189
  return useSuperDocSlice((ui) => ui.selection, EMPTY_SELECTION);
190
190
  }
191
+ /** Subscribe to the current Search session. */
192
+ function useSuperDocSearch() {
193
+ return useSuperDocSlice((ui) => ui.search, {
194
+ query: "",
195
+ total: 0,
196
+ activeIndex: -1,
197
+ open: false,
198
+ available: false,
199
+ caseSensitive: false,
200
+ includeTrackedDeletions: false,
201
+ includeDeletedText: false,
202
+ regex: false,
203
+ canReplace: false,
204
+ canReplaceAll: false
205
+ });
206
+ }
191
207
  /** Subscribe to the comments slice. */
192
208
  function useSuperDocComments() {
193
209
  return useSuperDocSlice((ui) => ui.comments, {
@@ -299,4 +315,4 @@ function useSuperDocZoom() {
299
315
  });
300
316
  }
301
317
  //#endregion
302
- export { provideSuperDocUI, useClearSuperDoc, useSetSuperDoc, useSuperDocCommand, useSuperDocComments, useSuperDocContentControls, useSuperDocDocument, useSuperDocFontOptions, useSuperDocFontSizeOptions, useSuperDocHost, useSuperDocSelection, useSuperDocSlice, useSuperDocToolbar, useSuperDocTrackChanges, useSuperDocUI, useSuperDocZoom };
318
+ export { provideSuperDocUI, useClearSuperDoc, useSetSuperDoc, useSuperDocCommand, useSuperDocComments, useSuperDocContentControls, useSuperDocDocument, useSuperDocFontOptions, useSuperDocFontSizeOptions, useSuperDocHost, useSuperDocSearch, useSuperDocSelection, useSuperDocSlice, useSuperDocToolbar, useSuperDocTrackChanges, useSuperDocUI, useSuperDocZoom };
@@ -1,5 +1,5 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_create_super_doc_ui = require("../chunks/create-super-doc-ui-CBFGggZ2.cjs");
2
+ const require_create_super_doc_ui = require("../chunks/create-super-doc-ui-BWWWNPP8.cjs");
3
3
  exports.BUILT_IN_COMMAND_IDS = require_create_super_doc_ui.BUILT_IN_COMMAND_IDS;
4
4
  exports.createSuperDocUI = require_create_super_doc_ui.createSuperDocUI;
5
5
  exports.shallowEqual = require_create_super_doc_ui.shallowEqual;
@@ -1,2 +1,2 @@
1
- import { n as shallowEqual, r as BUILT_IN_COMMAND_IDS, t as createSuperDocUI } from "../chunks/create-super-doc-ui-C-AuEM9F.es.js";
1
+ import { n as shallowEqual, r as BUILT_IN_COMMAND_IDS, t as createSuperDocUI } from "../chunks/create-super-doc-ui-FnwgTkUv.es.js";
2
2
  export { BUILT_IN_COMMAND_IDS, createSuperDocUI, shallowEqual };
@@ -15,7 +15,7 @@
15
15
  */
16
16
  export type { FontLoadStatus, FontFaceSource, FontFaceDescriptor, RegisteredFace, RegisterFaceResult, FontLoadResult, FontLoadSummary, FontFaceRequest, FontFaceLoadResult, FontAssetUrlContext, FontAssetUrlResolver, RequiredFace, } from './types.js';
17
17
  export { SETTLED_STATUSES, isSettled } from './types.js';
18
- export type { FontResolution, FontResolutionReason, FaceKey, HasFace, FontMeasureContext, ResolvePhysicalFamily, } from './resolver.js';
18
+ export type { FontResolution, FontResolutionReason, FaceKey, HasFace, FontMeasureCapabilities, FontMeasureContext, FontMeasureFace, ResolvePhysicalFamily, ResolveNaturalLineMultiplier, } from './resolver.js';
19
19
  export { FontResolver, createFontResolver, insertFontFamilyBeforeGeneric } from './resolver.js';
20
20
  export { resolveFontFamily, resolvePhysicalFamily, resolvePrimaryPhysicalFamily, resolvePhysicalFamilies, resolveFace, DEFAULT_FONT_MEASURE_CONTEXT, } from './resolver.js';
21
21
  export { getFontConfigVersion, bumpFontConfigVersion, __resetFontConfigVersion } from './epoch.js';
@@ -26,6 +26,8 @@ export type { FontResolutionRecord, ResolvedFontEvidence, UsedFace } from './rep
26
26
  export { buildFontReport, buildFaceReport } from './report.js';
27
27
  export type { EmbeddingPolicy } from './os2.js';
28
28
  export { parseEmbeddingPolicy } from './os2.js';
29
+ export type { SfntNaturalLineMetrics } from './natural-line-metrics.js';
30
+ export { parseSfntNaturalLineMetrics } from './natural-line-metrics.js';
29
31
  export type { UnicodeCoverage, UnicodeRange } from './unicode-coverage.js';
30
32
  export { parseUnicodeCoverage, textForUnicodeCoverage, unicodeCoverageIncludes } from './unicode-coverage.js';
31
33
  export { CORE_SYMBOL_FALLBACK_COVERAGE, CORE_SYMBOL_FALLBACK_FAMILY, installCoreSymbolFallback, textForCoreSymbolFallback, } from './core-symbol-fallback.js';
@@ -0,0 +1,11 @@
1
+ export interface SfntNaturalLineMetrics {
2
+ unitsPerEm: number;
3
+ lineHeightUnits: number;
4
+ lineHeightMultiplier: number;
5
+ source: 'os2-typo' | 'legacy-win-hhea';
6
+ }
7
+ /**
8
+ * Read a static SFNT face's design-unit baseline pitch without consulting browser font state.
9
+ * Variable fonts fail closed until their MVAR/axis instance can be applied to these metrics.
10
+ */
11
+ export declare function parseSfntNaturalLineMetrics(bytes: ArrayBuffer | ArrayBufferView): SfntNaturalLineMetrics | null;
@@ -190,6 +190,8 @@ export declare function resolveFace(logicalFamily: string, face: FaceKey, hasFac
190
190
  * never mapped onto a Bold/Italic run it cannot render unless the evidence explicitly allows it.
191
191
  */
192
192
  export type ResolvePhysicalFamily = (cssFontFamily: string, face: FaceKey) => string;
193
+ /** Resolve a loaded physical face's deterministic baseline-pitch ratio for the given run text. */
194
+ export type ResolveNaturalLineMultiplier = (cssFontFamily: string, face: FaceKey, text: string) => number | undefined;
193
195
  /**
194
196
  * The per-document font identity that every measure and paint path needs, carried as ONE value so
195
197
  * the resolver and its signature cannot travel separately and drift:
@@ -207,8 +209,20 @@ export type ResolvePhysicalFamily = (cssFontFamily: string, face: FaceKey) => st
207
209
  */
208
210
  export interface FontMeasureContext {
209
211
  resolvePhysical: ResolvePhysicalFamily;
212
+ resolveNaturalLineMultiplier?: ResolveNaturalLineMultiplier;
210
213
  fontSignature: string;
211
214
  }
215
+ /** Font face inputs whose measured digit advances can affect layout reuse. */
216
+ export interface FontMeasureFace {
217
+ family: string;
218
+ sizePx: number;
219
+ weight: FaceKey['weight'];
220
+ style: FaceKey['style'];
221
+ }
222
+ /** Immutable, invocation-scoped facts established by the active measurement surface. */
223
+ export interface FontMeasureCapabilities {
224
+ hasTabularDigits(face: FontMeasureFace): boolean;
225
+ }
212
226
  /**
213
227
  * The global-resolver / empty-signature context. The behavior-preserving default for outer entry
214
228
  * points and non-document callers (tests, the global measure path). Frozen so a stray
package/dist/style.css CHANGED
@@ -1818,11 +1818,11 @@ img[data-v-c95b2073] {
1818
1818
  pointer-events: auto;
1819
1819
  }
1820
1820
 
1821
- .superdoc[data-v-01062725] {
1821
+ .superdoc[data-v-770204b4] {
1822
1822
  display: flex;
1823
1823
  position: relative;
1824
1824
  }
1825
- .sd-visually-hidden[data-v-01062725] {
1825
+ .sd-visually-hidden[data-v-770204b4] {
1826
1826
  position: absolute;
1827
1827
  width: 1px;
1828
1828
  height: 1px;
@@ -1833,14 +1833,14 @@ img[data-v-c95b2073] {
1833
1833
  white-space: nowrap;
1834
1834
  border: 0;
1835
1835
  }
1836
- .superdoc__mutation-status[data-v-01062725] {
1836
+ .superdoc__mutation-status[data-v-770204b4] {
1837
1837
  position: sticky;
1838
1838
  z-index: 10;
1839
1839
  top: 12px;
1840
1840
  height: 0;
1841
1841
  pointer-events: none;
1842
1842
  }
1843
- .superdoc__edit-rejected-status[data-v-01062725] {
1843
+ .superdoc__edit-rejected-status[data-v-770204b4] {
1844
1844
  position: absolute;
1845
1845
  top: 0;
1846
1846
  left: 50%;
@@ -1858,30 +1858,30 @@ img[data-v-c95b2073] {
1858
1858
  line-height: 20px;
1859
1859
  pointer-events: none;
1860
1860
  }
1861
- .right-sidebar[data-v-01062725] {
1861
+ .right-sidebar[data-v-770204b4] {
1862
1862
  min-width: 320px;
1863
1863
  height: 100%;
1864
1864
  }
1865
- .floating-comments[data-v-01062725] {
1865
+ .floating-comments[data-v-770204b4] {
1866
1866
  min-width: 300px;
1867
1867
  width: 300px;
1868
1868
  height: 100%;
1869
1869
  overflow: visible;
1870
1870
  }
1871
- .superdoc__layers[data-v-01062725] {
1871
+ .superdoc__layers[data-v-770204b4] {
1872
1872
  height: 100%;
1873
1873
  position: relative;
1874
1874
  box-sizing: border-box;
1875
1875
  }
1876
- .superdoc__document[data-v-01062725] {
1876
+ .superdoc__document[data-v-770204b4] {
1877
1877
  width: 100%;
1878
1878
  position: relative;
1879
1879
  }
1880
- .superdoc__sub-document[data-v-01062725] {
1880
+ .superdoc__sub-document[data-v-770204b4] {
1881
1881
  width: 100%;
1882
1882
  position: relative;
1883
1883
  }
1884
- .superdoc__selection-layer[data-v-01062725] {
1884
+ .superdoc__selection-layer[data-v-770204b4] {
1885
1885
  position: absolute;
1886
1886
  min-width: 100%;
1887
1887
  min-height: 100%;
@@ -1892,13 +1892,13 @@ img[data-v-c95b2073] {
1892
1892
  /* SD-3497: PDF whiteboard overlay sits above the rendered PDF canvas but below
1893
1893
  the PDF comment anchors (z-index 6 in PdfCommentsLayer) so anchors stay
1894
1894
  clickable, and below the selection layer (z-index 10). */
1895
- .superdoc__whiteboard-layer[data-v-01062725] {
1895
+ .superdoc__whiteboard-layer[data-v-770204b4] {
1896
1896
  z-index: 4;
1897
1897
  }
1898
- .superdoc__temp-selection[data-v-01062725] {
1898
+ .superdoc__temp-selection[data-v-770204b4] {
1899
1899
  position: absolute;
1900
1900
  }
1901
- .superdoc__right-sidebar[data-v-01062725] {
1901
+ .superdoc__right-sidebar[data-v-770204b4] {
1902
1902
  width: 320px;
1903
1903
  min-width: 320px;
1904
1904
  padding: 0 10px;
@@ -1906,7 +1906,7 @@ img[data-v-c95b2073] {
1906
1906
  position: relative;
1907
1907
  z-index: 2;
1908
1908
  }
1909
- .superdoc__compact-comment-popover[data-v-01062725] {
1909
+ .superdoc__compact-comment-popover[data-v-770204b4] {
1910
1910
  position: absolute;
1911
1911
  top: 12px;
1912
1912
  right: 12px;
@@ -1915,14 +1915,14 @@ img[data-v-c95b2073] {
1915
1915
  }
1916
1916
 
1917
1917
  /* Tools styles */
1918
- .tools[data-v-01062725] {
1918
+ .tools[data-v-770204b4] {
1919
1919
  position: absolute;
1920
1920
  z-index: 3;
1921
1921
  display: flex;
1922
1922
  flex-direction: column;
1923
1923
  gap: var(--sd-ui-tools-gap, 6px);
1924
1924
  }
1925
- .tools-item[data-v-01062725] {
1925
+ .tools-item[data-v-770204b4] {
1926
1926
  display: flex;
1927
1927
  align-items: center;
1928
1928
  justify-content: center;
@@ -1933,10 +1933,10 @@ img[data-v-c95b2073] {
1933
1933
  cursor: pointer;
1934
1934
  position: relative;
1935
1935
  }
1936
- .tools-item i[data-v-01062725] {
1936
+ .tools-item i[data-v-770204b4] {
1937
1937
  cursor: pointer;
1938
1938
  }
1939
- .superdoc__tools-icon[data-v-01062725] {
1939
+ .superdoc__tools-icon[data-v-770204b4] {
1940
1940
  width: var(--sd-ui-tools-icon-size, 20px);
1941
1941
  height: var(--sd-ui-tools-icon-size, 20px);
1942
1942
  flex-shrink: 0;
@@ -1951,22 +1951,22 @@ img[data-v-c95b2073] {
1951
1951
 
1952
1952
  /* 834px is iPad screen size in portrait orientation */
1953
1953
  @media (max-width: 834px) {
1954
- .superdoc .superdoc__layers[data-v-01062725] {
1954
+ .superdoc .superdoc__layers[data-v-770204b4] {
1955
1955
  margin: 0;
1956
1956
  border: 0 !important;
1957
1957
  box-shadow: none;
1958
1958
  }
1959
- .superdoc__sub-document[data-v-01062725] {
1959
+ .superdoc__sub-document[data-v-770204b4] {
1960
1960
  max-width: 100%;
1961
1961
  }
1962
- .superdoc__right-sidebar[data-v-01062725] {
1962
+ .superdoc__right-sidebar[data-v-770204b4] {
1963
1963
  padding: 10px;
1964
1964
  position: relative;
1965
1965
  }
1966
1966
  }
1967
1967
 
1968
1968
  /* AI Writer styles */
1969
- .ai-writer-container[data-v-01062725] {
1969
+ .ai-writer-container[data-v-770204b4] {
1970
1970
  position: fixed;
1971
1971
  z-index: 1000;
1972
1972
  background: white;
@@ -1982,10 +1982,10 @@ img[data-v-c95b2073] {
1982
1982
  transform: translateY(-50%);
1983
1983
  z-index: 50;
1984
1984
  } */
1985
- .ai-tool > svg[data-v-01062725] {
1985
+ .ai-tool > svg[data-v-770204b4] {
1986
1986
  fill: transparent;
1987
1987
  }
1988
- .ai-tool[data-v-01062725]::before {
1988
+ .ai-tool[data-v-770204b4]::before {
1989
1989
  content: '';
1990
1990
  position: absolute;
1991
1991
  width: 20px;
@@ -2006,7 +2006,7 @@ img[data-v-c95b2073] {
2006
2006
  filter: brightness(1.2);
2007
2007
  transition: filter 0.2s ease;
2008
2008
  }
2009
- .ai-tool[data-v-01062725]:hover::before {
2009
+ .ai-tool[data-v-770204b4]:hover::before {
2010
2010
  filter: brightness(1.3);
2011
2011
  }
2012
2012
 
@@ -3016,7 +3016,7 @@ img[data-v-c95b2073] {
3016
3016
  background: var(--sd-ui-password-prompt-submit-hover-bg, var(--sd-ui-action-hover));
3017
3017
  }
3018
3018
 
3019
- .sd-find-replace[data-v-41f37c29] {
3019
+ .sd-find-replace[data-v-5dba4c36] {
3020
3020
  display: flex;
3021
3021
  flex-direction: column;
3022
3022
  gap: var(--sd-ui-find-replace-gap, 6px);
@@ -3024,7 +3024,7 @@ img[data-v-c95b2073] {
3024
3024
  so it needs room to breathe before the query starts truncating. */
3025
3025
  min-width: var(--sd-ui-find-replace-min-width, 380px);
3026
3026
  }
3027
- .sd-find-replace__row[data-v-41f37c29] {
3027
+ .sd-find-replace__row[data-v-5dba4c36] {
3028
3028
  display: flex;
3029
3029
  align-items: center;
3030
3030
  gap: var(--sd-ui-find-replace-gap, 6px);
@@ -3032,13 +3032,13 @@ img[data-v-c95b2073] {
3032
3032
 
3033
3033
  /* Mirrors the expander's footprint so the replace field and the error line
3034
3034
  align with the find field. */
3035
- .sd-find-replace__row-indent[data-v-41f37c29] {
3035
+ .sd-find-replace__row-indent[data-v-5dba4c36] {
3036
3036
  flex: 0 0 var(--sd-ui-find-replace-expander-size, 24px);
3037
3037
  }
3038
3038
 
3039
3039
  /* The field carries the border; the input inside is naked so the count and
3040
3040
  the query toggles sit visually inside the control. */
3041
- .sd-find-replace__field[data-v-41f37c29] {
3041
+ .sd-find-replace__field[data-v-5dba4c36] {
3042
3042
  flex: 1;
3043
3043
  min-width: 0;
3044
3044
  display: flex;
@@ -3053,24 +3053,24 @@ img[data-v-c95b2073] {
3053
3053
  border-color 0.12s ease-out,
3054
3054
  box-shadow 0.12s ease-out;
3055
3055
  }
3056
- .sd-find-replace__field[data-v-41f37c29]:focus-within {
3056
+ .sd-find-replace__field[data-v-5dba4c36]:focus-within {
3057
3057
  border-color: var(--sd-ui-find-replace-input-focus-border, var(--sd-ui-action));
3058
3058
  box-shadow: 0 0 0 3px
3059
3059
  var(--sd-ui-find-replace-input-focus-ring, color-mix(in srgb, var(--sd-ui-action) 15%, transparent));
3060
3060
  }
3061
- .sd-find-replace__field--error[data-v-41f37c29],
3062
- .sd-find-replace__field--error[data-v-41f37c29]:focus-within {
3061
+ .sd-find-replace__field--error[data-v-5dba4c36],
3062
+ .sd-find-replace__field--error[data-v-5dba4c36]:focus-within {
3063
3063
  border-color: var(--sd-ui-find-replace-error-color, #b3261e);
3064
3064
  }
3065
- .sd-find-replace__field--error[data-v-41f37c29]:focus-within {
3065
+ .sd-find-replace__field--error[data-v-5dba4c36]:focus-within {
3066
3066
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--sd-ui-find-replace-error-color, #b3261e) 12%, transparent);
3067
3067
  }
3068
- .sd-find-replace__search-icon[data-v-41f37c29] {
3068
+ .sd-find-replace__search-icon[data-v-5dba4c36] {
3069
3069
  color: var(--sd-ui-find-replace-search-icon-color, #9ca3af);
3070
3070
  flex-shrink: 0;
3071
3071
  margin-right: 6px;
3072
3072
  }
3073
- .sd-find-replace__input[data-v-41f37c29] {
3073
+ .sd-find-replace__input[data-v-5dba4c36] {
3074
3074
  flex: 1;
3075
3075
  min-width: 0;
3076
3076
  height: 100%;
@@ -3082,7 +3082,7 @@ img[data-v-c95b2073] {
3082
3082
  border: none;
3083
3083
  outline: none;
3084
3084
  }
3085
- .sd-find-replace__count[data-v-41f37c29] {
3085
+ .sd-find-replace__count[data-v-5dba4c36] {
3086
3086
  font-size: var(--sd-ui-find-replace-count-font-size, 12px);
3087
3087
  color: var(--sd-ui-find-replace-count-color, #6b7280);
3088
3088
  pointer-events: none;
@@ -3092,23 +3092,23 @@ img[data-v-c95b2073] {
3092
3092
  padding: 0 5px 0 4px;
3093
3093
  flex-shrink: 0;
3094
3094
  }
3095
- .sd-find-replace__divider[data-v-41f37c29] {
3095
+ .sd-find-replace__divider[data-v-5dba4c36] {
3096
3096
  width: 1px;
3097
3097
  height: 16px;
3098
3098
  margin: 0 4px;
3099
3099
  background: var(--sd-ui-find-replace-input-border, var(--sd-ui-border));
3100
3100
  flex-shrink: 0;
3101
3101
  }
3102
- .sd-find-replace__nav[data-v-41f37c29] {
3102
+ .sd-find-replace__nav[data-v-5dba4c36] {
3103
3103
  display: flex;
3104
3104
  align-items: center;
3105
3105
  gap: var(--sd-ui-find-replace-nav-gap, 2px);
3106
3106
  flex-shrink: 0;
3107
3107
  }
3108
- .sd-find-replace__nav--actions[data-v-41f37c29] {
3108
+ .sd-find-replace__nav--actions[data-v-5dba4c36] {
3109
3109
  gap: var(--sd-ui-find-replace-gap, 6px);
3110
3110
  }
3111
- .sd-find-replace__btn[data-v-41f37c29] {
3111
+ .sd-find-replace__btn[data-v-5dba4c36] {
3112
3112
  display: inline-flex;
3113
3113
  align-items: center;
3114
3114
  justify-content: center;
@@ -3123,47 +3123,47 @@ img[data-v-c95b2073] {
3123
3123
  border-color 0.12s ease-out,
3124
3124
  transform 90ms ease-out;
3125
3125
  }
3126
- .sd-find-replace__btn[data-v-41f37c29]:active:not(:disabled) {
3126
+ .sd-find-replace__btn[data-v-5dba4c36]:active:not(:disabled) {
3127
3127
  transform: scale(0.96);
3128
3128
  }
3129
- .sd-find-replace__btn[data-v-41f37c29]:focus-visible {
3129
+ .sd-find-replace__btn[data-v-5dba4c36]:focus-visible {
3130
3130
  outline: 2px solid var(--sd-ui-action);
3131
3131
  outline-offset: 1px;
3132
3132
  }
3133
- .sd-find-replace__btn[data-v-41f37c29]:disabled {
3133
+ .sd-find-replace__btn[data-v-5dba4c36]:disabled {
3134
3134
  opacity: var(--sd-ui-find-replace-btn-disabled-opacity, 0.4);
3135
3135
  cursor: not-allowed;
3136
3136
  }
3137
- .sd-find-replace__btn--icon[data-v-41f37c29] {
3137
+ .sd-find-replace__btn--icon[data-v-5dba4c36] {
3138
3138
  width: var(--sd-ui-find-replace-btn-size, 28px);
3139
3139
  height: var(--sd-ui-find-replace-btn-size, 28px);
3140
3140
  border-radius: var(--sd-ui-find-replace-btn-radius, 6px);
3141
3141
  color: var(--sd-ui-find-replace-btn-color, #4b5563);
3142
3142
  }
3143
- .sd-find-replace__btn--icon[data-v-41f37c29]:hover:not(:disabled) {
3143
+ .sd-find-replace__btn--icon[data-v-5dba4c36]:hover:not(:disabled) {
3144
3144
  background: var(--sd-ui-find-replace-btn-hover-bg, color-mix(in srgb, currentColor 8%, transparent));
3145
3145
  }
3146
- .sd-find-replace__btn--expander[data-v-41f37c29] {
3146
+ .sd-find-replace__btn--expander[data-v-5dba4c36] {
3147
3147
  width: var(--sd-ui-find-replace-expander-size, 24px);
3148
3148
  height: var(--sd-ui-find-replace-expander-size, 24px);
3149
3149
  border-radius: var(--sd-ui-find-replace-btn-radius, 6px);
3150
3150
  color: var(--sd-ui-find-replace-count-color, #6b7280);
3151
3151
  flex-shrink: 0;
3152
3152
  }
3153
- .sd-find-replace__btn--expander[data-v-41f37c29]:hover:not(:disabled) {
3153
+ .sd-find-replace__btn--expander[data-v-5dba4c36]:hover:not(:disabled) {
3154
3154
  background: var(--sd-ui-find-replace-btn-hover-bg, color-mix(in srgb, currentColor 8%, transparent));
3155
3155
  color: var(--sd-ui-find-replace-btn-color, var(--sd-ui-text));
3156
3156
  }
3157
- .sd-find-replace__btn--expander svg[data-v-41f37c29] {
3157
+ .sd-find-replace__btn--expander svg[data-v-5dba4c36] {
3158
3158
  transition: transform 0.16s ease-out;
3159
3159
  }
3160
- .sd-find-replace__btn--expander-open svg[data-v-41f37c29] {
3160
+ .sd-find-replace__btn--expander-open svg[data-v-5dba4c36] {
3161
3161
  transform: rotate(90deg);
3162
3162
  }
3163
3163
 
3164
3164
  /* Query-scoped toggles inside the field (match case / diacritics / regex).
3165
3165
  Kept compact so they never crowd the query text. */
3166
- .sd-find-replace__btn--toggle[data-v-41f37c29] {
3166
+ .sd-find-replace__btn--toggle[data-v-5dba4c36] {
3167
3167
  height: 20px;
3168
3168
  min-width: 20px;
3169
3169
  padding: var(--sd-ui-find-replace-btn-toggle-padding, 0 3px);
@@ -3174,15 +3174,15 @@ img[data-v-c95b2073] {
3174
3174
  color: var(--sd-ui-find-replace-count-color, #6b7280);
3175
3175
  flex-shrink: 0;
3176
3176
  }
3177
- .sd-find-replace__btn--toggle + .sd-find-replace__btn--toggle[data-v-41f37c29] {
3177
+ .sd-find-replace__btn--toggle + .sd-find-replace__btn--toggle[data-v-5dba4c36] {
3178
3178
  margin-left: 1px;
3179
3179
  }
3180
- .sd-find-replace__btn--toggle[data-v-41f37c29]:hover:not(:disabled) {
3180
+ .sd-find-replace__btn--toggle[data-v-5dba4c36]:hover:not(:disabled) {
3181
3181
  background: var(--sd-ui-find-replace-btn-hover-bg, color-mix(in srgb, currentColor 8%, transparent));
3182
3182
  color: var(--sd-ui-find-replace-btn-color, var(--sd-ui-text));
3183
3183
  }
3184
- .sd-find-replace__btn--active[data-v-41f37c29],
3185
- .sd-find-replace__btn--active[data-v-41f37c29]:hover:not(:disabled) {
3184
+ .sd-find-replace__btn--active[data-v-5dba4c36],
3185
+ .sd-find-replace__btn--active[data-v-5dba4c36]:hover:not(:disabled) {
3186
3186
  background: var(--sd-ui-find-replace-toggle-active-bg, color-mix(in srgb, var(--sd-ui-action) 12%, transparent));
3187
3187
  border-color: var(
3188
3188
  --sd-ui-find-replace-toggle-active-border,
@@ -3190,7 +3190,7 @@ img[data-v-c95b2073] {
3190
3190
  );
3191
3191
  color: var(--sd-ui-find-replace-toggle-active-color, var(--sd-ui-action));
3192
3192
  }
3193
- .sd-find-replace__btn--action[data-v-41f37c29] {
3193
+ .sd-find-replace__btn--action[data-v-5dba4c36] {
3194
3194
  height: var(--sd-ui-find-replace-btn-size, 28px);
3195
3195
  padding: var(--sd-ui-find-replace-action-btn-padding, 0 12px);
3196
3196
  font-size: var(--sd-ui-find-replace-count-font-size, 13px);
@@ -3199,13 +3199,13 @@ img[data-v-c95b2073] {
3199
3199
  background: var(--sd-ui-find-replace-action-btn-bg, var(--sd-ui-action));
3200
3200
  color: var(--sd-ui-find-replace-action-btn-color, #fff);
3201
3201
  }
3202
- .sd-find-replace__btn--action[data-v-41f37c29]:hover:not(:disabled) {
3202
+ .sd-find-replace__btn--action[data-v-5dba4c36]:hover:not(:disabled) {
3203
3203
  background: var(
3204
3204
  --sd-ui-find-replace-action-btn-hover-bg,
3205
3205
  color-mix(in srgb, var(--sd-ui-find-replace-action-btn-bg, var(--sd-ui-action)) 88%, #000)
3206
3206
  );
3207
3207
  }
3208
- .sd-find-replace__error[data-v-41f37c29] {
3208
+ .sd-find-replace__error[data-v-5dba4c36] {
3209
3209
  display: flex;
3210
3210
  align-items: center;
3211
3211
  gap: var(--sd-ui-find-replace-gap, 6px);
@@ -3213,12 +3213,12 @@ img[data-v-c95b2073] {
3213
3213
  font-size: var(--sd-ui-find-replace-error-font-size, 12px);
3214
3214
  letter-spacing: 0.01em;
3215
3215
  padding: var(--sd-ui-find-replace-error-padding, 0 2px);
3216
- animation: sd-find-replace-error-in-41f37c29 0.16s ease-out;
3216
+ animation: sd-find-replace-error-in-5dba4c36 0.16s ease-out;
3217
3217
  }
3218
- .sd-find-replace__error-text[data-v-41f37c29] {
3218
+ .sd-find-replace__error-text[data-v-5dba4c36] {
3219
3219
  padding-left: 4px;
3220
3220
  }
3221
- @keyframes sd-find-replace-error-in-41f37c29 {
3221
+ @keyframes sd-find-replace-error-in-5dba4c36 {
3222
3222
  from {
3223
3223
  opacity: 0;
3224
3224
  transform: translateY(-2px);
@@ -3229,15 +3229,15 @@ to {
3229
3229
  }
3230
3230
  }
3231
3231
  @media (prefers-reduced-motion: reduce) {
3232
- .sd-find-replace__field[data-v-41f37c29],
3233
- .sd-find-replace__btn[data-v-41f37c29],
3234
- .sd-find-replace__btn--expander svg[data-v-41f37c29] {
3232
+ .sd-find-replace__field[data-v-5dba4c36],
3233
+ .sd-find-replace__btn[data-v-5dba4c36],
3234
+ .sd-find-replace__btn--expander svg[data-v-5dba4c36] {
3235
3235
  transition: none;
3236
3236
  }
3237
- .sd-find-replace__btn[data-v-41f37c29]:active:not(:disabled) {
3237
+ .sd-find-replace__btn[data-v-5dba4c36]:active:not(:disabled) {
3238
3238
  transform: none;
3239
3239
  }
3240
- .sd-find-replace__error[data-v-41f37c29] {
3240
+ .sd-find-replace__error[data-v-5dba4c36] {
3241
3241
  animation: none;
3242
3242
  }
3243
3243
  }