superdoc 2.12.0-next.8 → 2.12.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.
- package/dist/chunks/{FindReplaceSurface-40AnrqWk.es.js → FindReplaceSurface-CVKgivXi.es.js} +8 -2
- package/dist/chunks/{FindReplaceSurface-0p7EtMZh.cjs → FindReplaceSurface-qi9OhbwN.cjs} +8 -2
- package/dist/chunks/{create-super-doc-ui-CBFGggZ2.cjs → create-super-doc-ui-BWWWNPP8.cjs} +180 -84
- package/dist/chunks/{create-super-doc-ui-C-AuEM9F.es.js → create-super-doc-ui-FnwgTkUv.es.js} +180 -84
- package/dist/collaboration-upgrade-engine.cjs +1 -1
- package/dist/collaboration-upgrade-engine.es.js +1 -1
- package/dist/layout-engine/contracts/src/column-layout.d.ts +58 -1
- package/dist/layout-engine/contracts/src/graphic-placement.d.ts +3 -0
- package/dist/layout-engine/contracts/src/index.d.ts +17 -3
- package/dist/layout-engine/contracts/src/run-helpers.d.ts +8 -0
- package/dist/layout-engine/layout-bridge/src/cache.d.ts +5 -4
- package/dist/layout-engine/layout-bridge/src/incrementalLayout.d.ts +4 -1
- package/dist/layout-engine/layout-bridge/src/note-marker-measure-key.d.ts +3 -0
- package/dist/layout-engine/layout-engine/src/column-balancing.d.ts +11 -7
- package/dist/layout-engine/layout-engine/src/layout-paragraph.d.ts +2 -6
- package/dist/layout-engine/painters/dom/src/derived-run-text-plane.d.ts +9 -0
- package/dist/layout-engine/painters/dom/src/index.d.ts +1 -0
- package/dist/layout-engine/painters/dom/src/page-content.d.ts +3 -1
- package/dist/layout-engine/painters/dom/src/persistent-page-surface.d.ts +2 -0
- package/dist/layout-engine/painters/dom/src/renderer.d.ts +9 -16
- package/dist/public/ui-react.cjs +18 -1
- package/dist/public/ui-react.es.js +18 -2
- package/dist/public/ui-vue.cjs +18 -1
- package/dist/public/ui-vue.es.js +18 -2
- package/dist/public/ui.cjs +1 -1
- package/dist/public/ui.es.js +1 -1
- package/dist/shared/font-system/src/index.d.ts +1 -1
- package/dist/shared/font-system/src/resolver.d.ts +11 -0
- package/dist/style.css +40 -40
- package/dist/style.layered.css +40 -40
- package/dist/superdoc/src/core/types/index.d.ts +20 -12
- package/dist/superdoc/src/public/ui/react.d.ts +3 -1
- package/dist/superdoc/src/public/ui/types.d.ts +67 -9
- package/dist/superdoc/src/public/ui/vue.d.ts +3 -1
- package/dist/superdoc/src/public/ui-react.d.cts +1 -0
- package/dist/superdoc/src/public/ui-react.d.ts +1 -1
- package/dist/superdoc/src/public/ui-vue.d.cts +1 -0
- package/dist/superdoc/src/public/ui-vue.d.ts +1 -1
- package/dist/superdoc.cjs +138 -12
- package/dist/superdoc.es.js +138 -12
- package/dist-cdn/style.layered.css +1 -1
- package/dist-cdn/superdoc.min.css +1 -1
- package/dist-cdn/superdoc.min.js +37 -37
- package/package.json +2 -2
package/dist/style.css
CHANGED
|
@@ -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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
3062
|
-
.sd-find-replace__field--error[data-v-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
3185
|
-
.sd-find-replace__btn--active[data-v-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
3216
|
+
animation: sd-find-replace-error-in-5dba4c36 0.16s ease-out;
|
|
3217
3217
|
}
|
|
3218
|
-
.sd-find-replace__error-text[data-v-
|
|
3218
|
+
.sd-find-replace__error-text[data-v-5dba4c36] {
|
|
3219
3219
|
padding-left: 4px;
|
|
3220
3220
|
}
|
|
3221
|
-
@keyframes sd-find-replace-error-in-
|
|
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-
|
|
3233
|
-
.sd-find-replace__btn[data-v-
|
|
3234
|
-
.sd-find-replace__btn--expander svg[data-v-
|
|
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-
|
|
3237
|
+
.sd-find-replace__btn[data-v-5dba4c36]:active:not(:disabled) {
|
|
3238
3238
|
transform: none;
|
|
3239
3239
|
}
|
|
3240
|
-
.sd-find-replace__error[data-v-
|
|
3240
|
+
.sd-find-replace__error[data-v-5dba4c36] {
|
|
3241
3241
|
animation: none;
|
|
3242
3242
|
}
|
|
3243
3243
|
}
|
package/dist/style.layered.css
CHANGED
|
@@ -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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
3062
|
-
.sd-find-replace__field--error[data-v-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
3185
|
-
.sd-find-replace__btn--active[data-v-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
3216
|
+
animation: sd-find-replace-error-in-5dba4c36 0.16s ease-out;
|
|
3217
3217
|
}
|
|
3218
|
-
.sd-find-replace__error-text[data-v-
|
|
3218
|
+
.sd-find-replace__error-text[data-v-5dba4c36] {
|
|
3219
3219
|
padding-left: 4px;
|
|
3220
3220
|
}
|
|
3221
|
-
@keyframes sd-find-replace-error-in-
|
|
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-
|
|
3233
|
-
.sd-find-replace__btn[data-v-
|
|
3234
|
-
.sd-find-replace__btn--expander svg[data-v-
|
|
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-
|
|
3237
|
+
.sd-find-replace__btn[data-v-5dba4c36]:active:not(:disabled) {
|
|
3238
3238
|
transform: none;
|
|
3239
3239
|
}
|
|
3240
|
-
.sd-find-replace__error[data-v-
|
|
3240
|
+
.sd-find-replace__error[data-v-5dba4c36] {
|
|
3241
3241
|
animation: none;
|
|
3242
3242
|
}
|
|
3243
3243
|
}
|
|
@@ -2014,7 +2014,7 @@ export interface SearchStrings {
|
|
|
2014
2014
|
}
|
|
2015
2015
|
/**
|
|
2016
2016
|
* Resolved text for the older custom Search renderer.
|
|
2017
|
-
* @deprecated replaceWith=`SearchStrings` for built-in copy or `
|
|
2017
|
+
* @deprecated replaceWith=`SearchStrings` for built-in copy or `superdoc.ui.search` for custom UI removeIn=v3.0
|
|
2018
2018
|
*/
|
|
2019
2019
|
export interface ResolvedFindReplaceTexts {
|
|
2020
2020
|
findPlaceholder: string;
|
|
@@ -2090,7 +2090,7 @@ export interface SearchMatch {
|
|
|
2090
2090
|
}
|
|
2091
2091
|
/**
|
|
2092
2092
|
* Reactive handle injected into the older custom Search renderer.
|
|
2093
|
-
* @deprecated replaceWith=`
|
|
2093
|
+
* @deprecated replaceWith=`superdoc.ui.search` removeIn=v3.0
|
|
2094
2094
|
*/
|
|
2095
2095
|
export interface FindReplaceHandle {
|
|
2096
2096
|
/** Current search query. */
|
|
@@ -2117,6 +2117,14 @@ export interface FindReplaceHandle {
|
|
|
2117
2117
|
* (V2 read-only/viewing mode disables replace; V1 stays enabled).
|
|
2118
2118
|
*/
|
|
2119
2119
|
canReplace: ComputedRef<boolean>;
|
|
2120
|
+
/**
|
|
2121
|
+
* Whether Replace all should be enabled right now: `canReplace` plus the
|
|
2122
|
+
* active session enumerating every match. A truncated V2 session keeps the
|
|
2123
|
+
* active match replaceable while refusing to replace all of them. Optional
|
|
2124
|
+
* so handles built against the previous shape still type-check; surfaces
|
|
2125
|
+
* fall back to `canReplace` when it is absent.
|
|
2126
|
+
*/
|
|
2127
|
+
canReplaceAll?: ComputedRef<boolean>;
|
|
2120
2128
|
/** Whether a replace mutation is currently in flight (re-entrancy guard). */
|
|
2121
2129
|
replacePending: Ref<boolean>;
|
|
2122
2130
|
/**
|
|
@@ -2159,7 +2167,7 @@ export interface FindReplaceHandle {
|
|
|
2159
2167
|
}
|
|
2160
2168
|
/**
|
|
2161
2169
|
* Read-only context passed to the older custom Search resolver.
|
|
2162
|
-
* @deprecated replaceWith=`
|
|
2170
|
+
* @deprecated replaceWith=`superdoc.ui.search` removeIn=v3.0
|
|
2163
2171
|
*/
|
|
2164
2172
|
export interface FindReplaceContext {
|
|
2165
2173
|
/** Resolved text strings. */
|
|
@@ -2169,7 +2177,7 @@ export interface FindReplaceContext {
|
|
|
2169
2177
|
}
|
|
2170
2178
|
/**
|
|
2171
2179
|
* Context passed to the older framework-independent Search renderer.
|
|
2172
|
-
* @deprecated replaceWith=`
|
|
2180
|
+
* @deprecated replaceWith=`superdoc.ui.search` removeIn=v3.0
|
|
2173
2181
|
*/
|
|
2174
2182
|
export interface FindReplaceRenderContext {
|
|
2175
2183
|
/** Empty DOM container to render into. */
|
|
@@ -2187,7 +2195,7 @@ export interface FindReplaceRenderContext {
|
|
|
2187
2195
|
}
|
|
2188
2196
|
/**
|
|
2189
2197
|
* Result returned by the older custom Search resolver.
|
|
2190
|
-
* @deprecated replaceWith=`
|
|
2198
|
+
* @deprecated replaceWith=`superdoc.ui.search` removeIn=v3.0
|
|
2191
2199
|
*/
|
|
2192
2200
|
export type FindReplaceResolution = {
|
|
2193
2201
|
type: 'default';
|
|
@@ -2230,7 +2238,7 @@ export interface SearchFloatingConfig {
|
|
|
2230
2238
|
export interface SearchConfig extends SearchLegacyConfig {
|
|
2231
2239
|
/**
|
|
2232
2240
|
* Show replace controls (default: true). This changes the built-in UI only;
|
|
2233
|
-
* it does not authorize or disable `
|
|
2241
|
+
* it does not authorize or disable `superdoc.ui.search.replace()`.
|
|
2234
2242
|
*/
|
|
2235
2243
|
replaceControls?: boolean;
|
|
2236
2244
|
/** Include text from pending tracked deletions in each search (default: false). */
|
|
@@ -2290,15 +2298,15 @@ interface SearchLegacyConfig {
|
|
|
2290
2298
|
replaceEnabled?: boolean;
|
|
2291
2299
|
/** @deprecated replaceWith=`ui.search.includeTrackedDeletions` removeIn=v3.0 */
|
|
2292
2300
|
includeDeletedText?: boolean;
|
|
2293
|
-
/** @deprecated replaceWith=`
|
|
2301
|
+
/** @deprecated replaceWith=`superdoc.ui.search` removeIn=v3.0 */
|
|
2294
2302
|
component?: unknown;
|
|
2295
|
-
/** @deprecated replaceWith=`
|
|
2303
|
+
/** @deprecated replaceWith=`superdoc.ui.search` removeIn=v3.0 */
|
|
2296
2304
|
props?: Record<string, unknown>;
|
|
2297
|
-
/** @deprecated replaceWith=`
|
|
2305
|
+
/** @deprecated replaceWith=`superdoc.ui.search` removeIn=v3.0 */
|
|
2298
2306
|
render?: (ctx: FindReplaceRenderContext) => {
|
|
2299
2307
|
destroy?: () => void;
|
|
2300
2308
|
} | void;
|
|
2301
|
-
/** @deprecated replaceWith=`
|
|
2309
|
+
/** @deprecated replaceWith=`superdoc.ui.search` removeIn=v3.0 */
|
|
2302
2310
|
resolver?: (ctx: FindReplaceContext) => FindReplaceResolution | null | undefined;
|
|
2303
2311
|
}
|
|
2304
2312
|
/** @deprecated replaceWith=`SearchConfig` removeIn=v3.0 */
|
|
@@ -3678,7 +3686,7 @@ export interface UIConfig {
|
|
|
3678
3686
|
loading?: boolean;
|
|
3679
3687
|
/**
|
|
3680
3688
|
* Built-in Search surface. Disabled by default. Enabling it lets
|
|
3681
|
-
* SuperDoc intercept Cmd+F / Ctrl+F; `
|
|
3689
|
+
* SuperDoc intercept Cmd+F / Ctrl+F; `superdoc.ui.search` stays available to
|
|
3682
3690
|
* custom UI either way.
|
|
3683
3691
|
*/
|
|
3684
3692
|
search?: boolean | SearchConfig;
|
|
@@ -3850,7 +3858,7 @@ export interface Config {
|
|
|
3850
3858
|
*
|
|
3851
3859
|
* Pass `false` when the application owns the interface. SuperDoc then
|
|
3852
3860
|
* renders no controls, chrome, dialogs, or popovers, while the document,
|
|
3853
|
-
* the Document API, and `
|
|
3861
|
+
* the Document API, and `superdoc.ui` keep working — so a custom UI drives
|
|
3854
3862
|
* the same commands the built-in one would have.
|
|
3855
3863
|
*
|
|
3856
3864
|
* Pass an object to choose per surface. An omitted key keeps that
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { ReactNode } from 'react';
|
|
2
2
|
import { toSliceSource, SliceSource } from './slice-source.js';
|
|
3
|
-
import { BorrowedSuperDocUI, CommandExecutionResult, CommandId, CommandState, CommentsSlice, ContentControlsSlice, DocumentSlice, FontFamilyOption, FontSizeOption, SelectionSlice, Subscribable, SuperDocLike, ToolbarSnapshotSlice, TrackChangesSlice, ZoomSlice } from './types.js';
|
|
3
|
+
import { BorrowedSuperDocUI, CommandExecutionResult, CommandId, CommandState, CommentsSlice, ContentControlsSlice, DocumentSlice, FontFamilyOption, FontSizeOption, SearchSnapshot, SelectionSlice, Subscribable, SuperDocLike, ToolbarSnapshotSlice, TrackChangesSlice, ZoomSlice } from './types.js';
|
|
4
4
|
/** The raw SuperDoc instance (or host stub) handed to the provider. */
|
|
5
5
|
export type SuperDocHost = SuperDocLike;
|
|
6
6
|
/** Props accepted by {@link SuperDocUIProvider}. */
|
|
@@ -42,6 +42,8 @@ export { toSliceSource };
|
|
|
42
42
|
export declare function useSuperDocSlice<T>(pick: (ui: BorrowedSuperDocUI) => SliceSource<T> | Subscribable<T>, initial: T): T;
|
|
43
43
|
/** Subscribe to the selection slice. */
|
|
44
44
|
export declare function useSuperDocSelection(): SelectionSlice;
|
|
45
|
+
/** Subscribe to the current Search session. */
|
|
46
|
+
export declare function useSuperDocSearch(): SearchSnapshot;
|
|
45
47
|
/** Subscribe to the comments slice. */
|
|
46
48
|
export declare function useSuperDocComments(): CommentsSlice;
|
|
47
49
|
/** Subscribe to the content-controls slice. */
|