@openpresentation/opf-editor 0.26.5 → 0.26.7
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/README.md +6 -0
- package/dist/index.d.ts +16 -1
- package/dist/index.js +9 -2
- package/dist/json-editor.d.ts +20 -0
- package/dist/json-editor.js +188 -89
- package/dist/layout-editor.js +6 -2
- package/dist/source-check.js +90 -0
- package/dist/source-checker.js +130 -0
- package/dist/source-completions.js +46 -10
- package/dist/source-diagnostics.js +3 -2
- package/dist/source-editing.js +53 -33
- package/dist/source-fixes-syntax.js +138 -8
- package/dist/source-folding.js +173 -0
- package/dist/source-hints.js +376 -0
- package/dist/source-keymap.js +369 -0
- package/dist/source-markdown.js +42 -1
- package/dist/source-navigation-model.js +426 -0
- package/dist/source-navigation-read.js +269 -0
- package/dist/source-navigation-ui.js +244 -0
- package/dist/source-navigation.js +217 -0
- package/dist/source-outline.js +112 -0
- package/dist/source-pane.d.ts +63 -0
- package/dist/source-pane.js +201 -44
- package/dist/source-references.js +58 -11
- package/dist/source-shortcuts.js +106 -0
- package/dist/source-symbols.js +156 -0
- package/dist/source-worker.d.ts +7 -0
- package/dist/source-worker.js +30 -0
- package/dist/source-wrap.js +55 -0
- package/dist/styles.css +539 -4
- package/package.json +11 -7
package/dist/styles.css
CHANGED
|
@@ -72,6 +72,17 @@
|
|
|
72
72
|
--opf-ui-control-h: 40px;
|
|
73
73
|
}
|
|
74
74
|
|
|
75
|
+
/* A coarse pointer (a finger) gets 44px controls, whatever the density: every control built from --opf-ui-control-h grows with it, and
|
|
76
|
+
src/styles/touch.css lifts the ones that size themselves. Comes after the density rule so it wins at equal specificity. */
|
|
77
|
+
@media (pointer: coarse) {
|
|
78
|
+
:root,
|
|
79
|
+
.opf-ui,
|
|
80
|
+
.opf-ui[data-density="touch"],
|
|
81
|
+
[data-density="touch"] .opf-ui {
|
|
82
|
+
--opf-ui-control-h: 44px;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
|
|
75
86
|
/* Base rules for a mounted component or a whole editor surface. */
|
|
76
87
|
.opf-ui {
|
|
77
88
|
font-family: var(--opf-ui-font);
|
|
@@ -695,7 +706,7 @@
|
|
|
695
706
|
.opf-lx[data-compact="true"] { min-height: 0; height: auto; }
|
|
696
707
|
.opf-lx[data-compact="true"] .opf-lx-main { grid-template-columns: minmax(0, 1fr); grid-template-rows: auto auto auto; }
|
|
697
708
|
.opf-lx[data-compact="true"] .opf-lx-palette-host { overflow-x: auto; border-bottom: 1px solid var(--opf-ui-border); }
|
|
698
|
-
.opf-lx[data-compact="true"] .opf-lx-palette { flex-direction: row; flex: 1; padding: 4px 8px; border-right: 0; }
|
|
709
|
+
.opf-lx[data-compact="true"] .opf-lx-palette { flex-direction: row; flex-wrap: wrap; justify-content: center; flex: 1; padding: 4px 8px; border-right: 0; }
|
|
699
710
|
.opf-lx[data-compact="true"] .opf-lx-tool-gap { width: 1px; height: auto; margin: 4px; }
|
|
700
711
|
.opf-lx[data-compact="true"] .opf-lx-viewport { min-height: 220px; }
|
|
701
712
|
.opf-lx[data-compact="true"] .opf-lx-side { border-left: 0; border-top: 1px solid var(--opf-ui-border); }
|
|
@@ -3542,6 +3553,52 @@ input.opf-lx-input[data-field="max"] { font-family: var(--opf-ui-mono); font-siz
|
|
|
3542
3553
|
border-right: 1px solid var(--opf-ui-code-border);
|
|
3543
3554
|
}
|
|
3544
3555
|
|
|
3556
|
+
/* A wrapped line continues under its own indentation (src/source-wrap.js, VS Code's wrappingIndent "indent"): `opf-hang-<n>` says how many
|
|
3557
|
+
columns, the first line keeps its place (a negative text-indent of the same width) and every continuation line starts n columns in.
|
|
3558
|
+
The hang is capped at 40% of the line so a deeply nested line still leaves room for text at 320px. Text inside an inline widget does not
|
|
3559
|
+
inherit the negative indent. `--opf-line-start` is the line's own left padding (the source pane sets it to 2px). */
|
|
3560
|
+
.cm-line.opf-hang-0 { --opf-hang: 0; }
|
|
3561
|
+
.cm-line.opf-hang-1 { --opf-hang: 1; }
|
|
3562
|
+
.cm-line.opf-hang-2 { --opf-hang: 2; }
|
|
3563
|
+
.cm-line.opf-hang-3 { --opf-hang: 3; }
|
|
3564
|
+
.cm-line.opf-hang-4 { --opf-hang: 4; }
|
|
3565
|
+
.cm-line.opf-hang-5 { --opf-hang: 5; }
|
|
3566
|
+
.cm-line.opf-hang-6 { --opf-hang: 6; }
|
|
3567
|
+
.cm-line.opf-hang-7 { --opf-hang: 7; }
|
|
3568
|
+
.cm-line.opf-hang-8 { --opf-hang: 8; }
|
|
3569
|
+
.cm-line.opf-hang-9 { --opf-hang: 9; }
|
|
3570
|
+
.cm-line.opf-hang-10 { --opf-hang: 10; }
|
|
3571
|
+
.cm-line.opf-hang-11 { --opf-hang: 11; }
|
|
3572
|
+
.cm-line.opf-hang-12 { --opf-hang: 12; }
|
|
3573
|
+
.cm-line.opf-hang-13 { --opf-hang: 13; }
|
|
3574
|
+
.cm-line.opf-hang-14 { --opf-hang: 14; }
|
|
3575
|
+
.cm-line.opf-hang-15 { --opf-hang: 15; }
|
|
3576
|
+
.cm-line.opf-hang-16 { --opf-hang: 16; }
|
|
3577
|
+
.cm-line.opf-hang-17 { --opf-hang: 17; }
|
|
3578
|
+
.cm-line.opf-hang-18 { --opf-hang: 18; }
|
|
3579
|
+
.cm-line.opf-hang-19 { --opf-hang: 19; }
|
|
3580
|
+
.cm-line.opf-hang-20 { --opf-hang: 20; }
|
|
3581
|
+
.cm-line.opf-hang-21 { --opf-hang: 21; }
|
|
3582
|
+
.cm-line.opf-hang-22 { --opf-hang: 22; }
|
|
3583
|
+
.cm-line.opf-hang-23 { --opf-hang: 23; }
|
|
3584
|
+
.cm-line.opf-hang-24 { --opf-hang: 24; }
|
|
3585
|
+
.cm-line.opf-hang-25 { --opf-hang: 25; }
|
|
3586
|
+
.cm-line.opf-hang-26 { --opf-hang: 26; }
|
|
3587
|
+
.cm-line.opf-hang-27 { --opf-hang: 27; }
|
|
3588
|
+
.cm-line.opf-hang-28 { --opf-hang: 28; }
|
|
3589
|
+
.cm-line.opf-hang-29 { --opf-hang: 29; }
|
|
3590
|
+
.cm-line.opf-hang-30 { --opf-hang: 30; }
|
|
3591
|
+
.cm-line.opf-hang-31 { --opf-hang: 31; }
|
|
3592
|
+
.cm-line.opf-hang-32 { --opf-hang: 32; }
|
|
3593
|
+
:is(.opf-ui, .opf-json, .opf-code) .cm-line {
|
|
3594
|
+
padding-left: calc(var(--opf-line-start, 6px) + min(calc(var(--opf-hang, 0) * 1ch), 40%));
|
|
3595
|
+
text-indent: calc(-1 * min(calc(var(--opf-hang, 0) * 1ch), 40%));
|
|
3596
|
+
}
|
|
3597
|
+
|
|
3598
|
+
:is(.opf-ui, .opf-json, .opf-code) .cm-line > * {
|
|
3599
|
+
text-indent: 0;
|
|
3600
|
+
}
|
|
3601
|
+
|
|
3545
3602
|
:is(.opf-ui, .opf-json, .opf-code) .cm-activeLine,
|
|
3546
3603
|
:is(.opf-ui, .opf-json, .opf-code) .cm-line.is-hover {
|
|
3547
3604
|
background: color-mix(in srgb, var(--opf-ui-accent) 8%, transparent);
|
|
@@ -3707,6 +3764,26 @@ input.opf-lx-input[data-field="max"] { font-family: var(--opf-ui-mono); font-siz
|
|
|
3707
3764
|
.opf-fix[aria-selected="true"] { background: var(--opf-ui-accent); color: var(--opf-ui-accent-fg); }
|
|
3708
3765
|
:root :is(.opf-ui, .opf-json, .opf-code) .cm-tooltip .cm-completionInfo { white-space: normal; }
|
|
3709
3766
|
|
|
3767
|
+
/* The shape hint (Cmd/Ctrl+Shift+Space): the fields of the object around the caret, each set, next or optional. The state is a word and a mark, not only a color. */
|
|
3768
|
+
.cm-tooltip.opf-hint { display: flex; flex-direction: column; min-width: 22em; max-width: 38em; padding: 4px 0; font: 12.5px var(--opf-ui-font); white-space: normal; }
|
|
3769
|
+
.opf-hint-head { display: flex; justify-content: space-between; gap: 24px; padding: 2px 12px 5px; border-bottom: 1px solid var(--opf-ui-border); }
|
|
3770
|
+
.opf-hint-title { font: 600 12px var(--opf-ui-mono); }
|
|
3771
|
+
.opf-hint-aside { color: var(--opf-ui-muted-fg); font-size: 11.5px; white-space: nowrap; }
|
|
3772
|
+
.opf-hint-rows { display: flex; flex-direction: column; margin: 0; padding: 3px 0 0; list-style: none; }
|
|
3773
|
+
.opf-hint-row { display: grid; grid-template-columns: 8em minmax(0, 1fr) 5.5em; gap: 12px; align-items: baseline; padding: 1px 12px; }
|
|
3774
|
+
.opf-hint-key { font: 12px var(--opf-ui-mono); overflow-wrap: anywhere; }
|
|
3775
|
+
.opf-hint-description { color: var(--opf-ui-muted-fg); }
|
|
3776
|
+
.opf-hint-state { text-align: right; color: var(--opf-ui-muted-fg); font-size: 11.5px; }
|
|
3777
|
+
.opf-hint-row[data-state="set"] .opf-hint-state::before { content: "\2713\00a0"; }
|
|
3778
|
+
.opf-hint-row[data-state="next"] { background: color-mix(in srgb, var(--opf-ui-accent) 12%, transparent); box-shadow: inset 2px 0 0 var(--opf-ui-accent); }
|
|
3779
|
+
.opf-hint-row[data-state="next"] .opf-hint-key,
|
|
3780
|
+
.opf-hint-row[data-state="next"] .opf-hint-state { color: var(--opf-ui-accent-strong); font-weight: 600; }
|
|
3781
|
+
.opf-hint-row[data-state="next"] .opf-hint-state::before { content: "\25B6\00a0"; }
|
|
3782
|
+
/* No animation either way; the rule is explicit so a later one cannot add motion for someone who asked for less. */
|
|
3783
|
+
@media (prefers-reduced-motion: reduce) {
|
|
3784
|
+
.cm-tooltip.opf-hint, .cm-tooltip.opf-hint * { animation: none !important; transition: none !important; }
|
|
3785
|
+
}
|
|
3786
|
+
|
|
3710
3787
|
/* Ctrl+Space with the list open hides the documentation panel (and shows it again). */
|
|
3711
3788
|
.cm-editor.opf-docs-off .cm-completionInfo { display: none; }
|
|
3712
3789
|
|
|
@@ -4014,6 +4091,208 @@ input.opf-lx-input[data-field="max"] { font-family: var(--opf-ui-mono); font-siz
|
|
|
4014
4091
|
.opf-present-button { transition: none; }
|
|
4015
4092
|
}
|
|
4016
4093
|
|
|
4094
|
+
/* shortcuts.css */
|
|
4095
|
+
/* The keyboard shortcuts dialog (src/source-shortcuts.js). Only --opf-ui-* tokens, no color literals (test/styles.mjs). */
|
|
4096
|
+
.opf-shortcuts,
|
|
4097
|
+
.opf-shortcuts *,
|
|
4098
|
+
.opf-shortcuts *::before,
|
|
4099
|
+
.opf-shortcuts *::after { box-sizing: border-box; }
|
|
4100
|
+
.opf-shortcuts [hidden] { display: none !important; }
|
|
4101
|
+
.opf-shortcuts {
|
|
4102
|
+
position: fixed;
|
|
4103
|
+
inset: 0;
|
|
4104
|
+
z-index: 70;
|
|
4105
|
+
display: grid;
|
|
4106
|
+
grid-template-columns: minmax(0, 640px);
|
|
4107
|
+
justify-content: center;
|
|
4108
|
+
align-content: center;
|
|
4109
|
+
padding: 16px;
|
|
4110
|
+
background: color-mix(in srgb, var(--opf-ui-fg) 32%, transparent);
|
|
4111
|
+
font-family: var(--opf-ui-font);
|
|
4112
|
+
font-size: 13px;
|
|
4113
|
+
line-height: 1.5;
|
|
4114
|
+
color: var(--opf-ui-fg);
|
|
4115
|
+
}
|
|
4116
|
+
.opf-shortcuts .opf-shortcuts-dialog {
|
|
4117
|
+
display: flex;
|
|
4118
|
+
flex-direction: column;
|
|
4119
|
+
gap: 8px;
|
|
4120
|
+
width: 100%;
|
|
4121
|
+
max-height: min(720px, calc(100vh - 32px));
|
|
4122
|
+
padding: 16px 18px 12px;
|
|
4123
|
+
overflow: hidden;
|
|
4124
|
+
background: var(--opf-ui-surface);
|
|
4125
|
+
border: 1px solid var(--opf-ui-border);
|
|
4126
|
+
border-radius: var(--opf-ui-radius-lg);
|
|
4127
|
+
box-shadow: var(--opf-ui-shadow-pop);
|
|
4128
|
+
}
|
|
4129
|
+
.opf-shortcuts .opf-shortcuts-dialog:focus { outline: none; }
|
|
4130
|
+
.opf-shortcuts .opf-shortcuts-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
|
|
4131
|
+
.opf-shortcuts .opf-shortcuts-title { margin: 0; font-size: 16px; font-weight: 600; letter-spacing: -0.01em; }
|
|
4132
|
+
.opf-shortcuts .opf-shortcuts-help { margin: 0; color: var(--opf-ui-muted-fg); }
|
|
4133
|
+
.opf-shortcuts .opf-shortcuts-close {
|
|
4134
|
+
display: grid;
|
|
4135
|
+
place-items: center;
|
|
4136
|
+
width: 30px;
|
|
4137
|
+
height: 30px;
|
|
4138
|
+
border: 0;
|
|
4139
|
+
border-radius: var(--opf-ui-radius);
|
|
4140
|
+
background: transparent;
|
|
4141
|
+
color: var(--opf-ui-muted-fg);
|
|
4142
|
+
font: inherit;
|
|
4143
|
+
font-size: 20px;
|
|
4144
|
+
line-height: 1;
|
|
4145
|
+
cursor: pointer;
|
|
4146
|
+
}
|
|
4147
|
+
.opf-shortcuts .opf-shortcuts-close:hover { background: var(--opf-ui-muted); color: var(--opf-ui-fg); }
|
|
4148
|
+
.opf-shortcuts .opf-shortcuts-search {
|
|
4149
|
+
width: 100%;
|
|
4150
|
+
min-height: 34px;
|
|
4151
|
+
padding: 4px 10px;
|
|
4152
|
+
border: 1px solid var(--opf-ui-border);
|
|
4153
|
+
border-radius: var(--opf-ui-radius-md);
|
|
4154
|
+
background: var(--opf-ui-bg);
|
|
4155
|
+
color: inherit;
|
|
4156
|
+
font: inherit;
|
|
4157
|
+
}
|
|
4158
|
+
.opf-shortcuts button:focus-visible,
|
|
4159
|
+
.opf-shortcuts input:focus-visible,
|
|
4160
|
+
.opf-shortcuts .opf-shortcuts-list:focus-visible { outline: 2px solid var(--opf-ui-ring); outline-offset: 2px; }
|
|
4161
|
+
.opf-shortcuts .opf-shortcuts-status { min-height: 18px; color: var(--opf-ui-muted-fg); font-size: 12px; }
|
|
4162
|
+
.opf-shortcuts .opf-shortcuts-list { flex: 1; min-height: 120px; overflow: auto; padding-right: 4px; }
|
|
4163
|
+
.opf-shortcuts .opf-shortcuts-group { margin: 0 0 12px; }
|
|
4164
|
+
.opf-shortcuts .opf-shortcuts-group-title { margin: 8px 0 4px; font-size: 11px; font-weight: 600; letter-spacing: 0.04em; text-transform: uppercase; color: var(--opf-ui-muted-fg); }
|
|
4165
|
+
.opf-shortcuts .opf-shortcuts-row { display: flex; align-items: baseline; justify-content: space-between; gap: 16px; padding: 4px 0; border-bottom: 1px solid var(--opf-ui-border); }
|
|
4166
|
+
.opf-shortcuts .opf-shortcuts-name { min-width: 0; }
|
|
4167
|
+
.opf-shortcuts .opf-shortcuts-when { color: var(--opf-ui-muted-fg); font-size: 12px; }
|
|
4168
|
+
.opf-shortcuts .opf-shortcuts-keys { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 4px; flex: none; max-width: 55%; }
|
|
4169
|
+
.opf-shortcuts .opf-shortcuts-or { color: var(--opf-ui-muted-fg); font-size: 11px; padding: 0 2px; align-self: center; }
|
|
4170
|
+
.opf-shortcuts .opf-shortcuts-key {
|
|
4171
|
+
display: inline-block;
|
|
4172
|
+
min-width: 22px;
|
|
4173
|
+
padding: 1px 6px;
|
|
4174
|
+
border: 1px solid var(--opf-ui-border-strong);
|
|
4175
|
+
border-bottom-width: 2px;
|
|
4176
|
+
border-radius: var(--opf-ui-radius-sm);
|
|
4177
|
+
background: var(--opf-ui-muted);
|
|
4178
|
+
font: 12px var(--opf-ui-mono);
|
|
4179
|
+
text-align: center;
|
|
4180
|
+
white-space: nowrap;
|
|
4181
|
+
}
|
|
4182
|
+
.opf-shortcuts .opf-shortcuts-none { color: var(--opf-ui-muted-fg); }
|
|
4183
|
+
@media (forced-colors: active) {
|
|
4184
|
+
.opf-shortcuts .opf-shortcuts-dialog,
|
|
4185
|
+
.opf-shortcuts .opf-shortcuts-key { border-color: CanvasText; }
|
|
4186
|
+
}
|
|
4187
|
+
|
|
4188
|
+
/* The symbol picker (src/source-outline.js) */
|
|
4189
|
+
.opf-quickpick {
|
|
4190
|
+
position: absolute;
|
|
4191
|
+
top: 6px;
|
|
4192
|
+
left: 50%;
|
|
4193
|
+
z-index: 40;
|
|
4194
|
+
width: min(480px, calc(100% - 24px));
|
|
4195
|
+
transform: translateX(-50%);
|
|
4196
|
+
display: flex;
|
|
4197
|
+
flex-direction: column;
|
|
4198
|
+
gap: 2px;
|
|
4199
|
+
padding: 6px;
|
|
4200
|
+
background: var(--opf-ui-surface);
|
|
4201
|
+
color: var(--opf-ui-fg);
|
|
4202
|
+
border: 1px solid var(--opf-ui-border);
|
|
4203
|
+
border-radius: var(--opf-ui-radius-lg);
|
|
4204
|
+
box-shadow: var(--opf-ui-shadow-pop);
|
|
4205
|
+
font: 13px var(--opf-ui-font);
|
|
4206
|
+
}
|
|
4207
|
+
.opf-quickpick-input { width: 100%; min-height: 30px; padding: 3px 8px; border: 1px solid var(--opf-ui-border); border-radius: var(--opf-ui-radius-md); background: var(--opf-ui-bg); color: inherit; font: inherit; }
|
|
4208
|
+
.opf-quickpick-input:focus-visible { outline: 2px solid var(--opf-ui-ring); outline-offset: 1px; }
|
|
4209
|
+
.opf-quickpick-list { margin: 0; padding: 2px 0 0; list-style: none; max-height: 280px; overflow: auto; }
|
|
4210
|
+
.opf-quickpick-item { display: flex; align-items: baseline; gap: 8px; min-height: 26px; padding: 3px 10px; border-radius: var(--opf-ui-radius-sm); cursor: pointer; }
|
|
4211
|
+
.opf-quickpick-item.is-selected { background: var(--opf-ui-accent); color: var(--opf-ui-accent-fg); }
|
|
4212
|
+
.opf-quickpick-label { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
|
|
4213
|
+
.opf-quickpick-detail { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 12px; opacity: 0.75; }
|
|
4214
|
+
.opf-quickpick-kind { margin-left: auto; font-size: 11px; opacity: 0.75; flex: none; }
|
|
4215
|
+
.opf-quickpick-more { padding: 4px 10px; color: var(--opf-ui-muted-fg); font-size: 12px; }
|
|
4216
|
+
.opf-quickpick-status { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); }
|
|
4217
|
+
@media (forced-colors: active) { .opf-quickpick-item.is-selected { outline: 2px solid Highlight; } }
|
|
4218
|
+
|
|
4219
|
+
/* source-navigation.css */
|
|
4220
|
+
/*
|
|
4221
|
+
* Go to definition, peek, references and rename (source-navigation.js): one block widget under the line of the symbol. Tokens only. The declaration is
|
|
4222
|
+
* marked by a word, an arrow and a heavier line as well as by color, and nothing animates.
|
|
4223
|
+
*/
|
|
4224
|
+
.opf-sym {
|
|
4225
|
+
box-sizing: border-box;
|
|
4226
|
+
margin: 4px 0 6px 12px;
|
|
4227
|
+
padding: 6px 10px 8px;
|
|
4228
|
+
border: 1px solid var(--opf-ui-border-strong);
|
|
4229
|
+
border-left: 3px solid var(--opf-ui-accent);
|
|
4230
|
+
border-radius: var(--opf-ui-radius);
|
|
4231
|
+
background: var(--opf-ui-surface);
|
|
4232
|
+
color: var(--opf-ui-fg);
|
|
4233
|
+
box-shadow: var(--opf-ui-shadow-pop);
|
|
4234
|
+
font: 12px/1.45 var(--opf-ui-font);
|
|
4235
|
+
text-align: start;
|
|
4236
|
+
white-space: normal;
|
|
4237
|
+
cursor: default;
|
|
4238
|
+
}
|
|
4239
|
+
.opf-sym:focus-visible,
|
|
4240
|
+
.opf-sym-list:focus-visible { outline: 2px solid var(--opf-ui-ring); outline-offset: 1px; }
|
|
4241
|
+
.opf-sym-head { display: flex; align-items: baseline; gap: 8px; min-width: 0; }
|
|
4242
|
+
.opf-sym-title { flex: 1 1 auto; min-width: 0; font-weight: 600; overflow-wrap: anywhere; }
|
|
4243
|
+
.opf-sym-where { color: var(--opf-ui-muted-fg); }
|
|
4244
|
+
.opf-sym-close {
|
|
4245
|
+
flex: none;
|
|
4246
|
+
min-height: 24px;
|
|
4247
|
+
padding: 0 8px;
|
|
4248
|
+
border: 1px solid var(--opf-ui-border);
|
|
4249
|
+
border-radius: var(--opf-ui-radius-sm);
|
|
4250
|
+
background: var(--opf-ui-muted-2);
|
|
4251
|
+
color: var(--opf-ui-fg);
|
|
4252
|
+
font: inherit;
|
|
4253
|
+
cursor: pointer;
|
|
4254
|
+
}
|
|
4255
|
+
.opf-sym-close:hover { background: var(--opf-ui-muted); }
|
|
4256
|
+
.opf-sym-close:focus-visible,
|
|
4257
|
+
.opf-sym-input:focus-visible { outline: 2px solid var(--opf-ui-ring); outline-offset: 1px; }
|
|
4258
|
+
.opf-sym-lines, .opf-sym-list { margin: 6px 0 0; padding: 0; list-style: none; max-height: 260px; overflow: auto; }
|
|
4259
|
+
.opf-sym-line, .opf-sym-ref { display: flex; align-items: baseline; gap: 8px; min-width: 0; padding: 1px 4px; border-radius: var(--opf-ui-radius-sm); }
|
|
4260
|
+
.opf-sym-no { flex: none; min-width: 3ch; color: var(--opf-ui-muted-fg); font-family: var(--opf-ui-mono); text-align: end; }
|
|
4261
|
+
.opf-sym-mark { flex: none; width: 1ch; color: var(--opf-ui-accent-strong); }
|
|
4262
|
+
.opf-sym-text { flex: 1 1 auto; min-width: 0; font-family: var(--opf-ui-mono); white-space: pre-wrap; overflow-wrap: anywhere; }
|
|
4263
|
+
.opf-sym-line.is-target { background: var(--opf-ui-muted-2); font-weight: 600; }
|
|
4264
|
+
.opf-sym-ref { cursor: pointer; }
|
|
4265
|
+
.opf-sym-ref:hover { background: var(--opf-ui-muted-2); }
|
|
4266
|
+
.opf-sym-ref[aria-selected="true"] { background: var(--opf-ui-accent); color: var(--opf-ui-accent-fg); }
|
|
4267
|
+
.opf-sym-ref[aria-selected="true"] .opf-sym-no,
|
|
4268
|
+
.opf-sym-ref[aria-selected="true"] .opf-sym-badge { color: inherit; }
|
|
4269
|
+
.opf-sym-badge { flex: none; min-width: 6.5em; color: var(--opf-ui-muted-fg); font-size: 11px; }
|
|
4270
|
+
.opf-sym-ref.is-declaration .opf-sym-badge { font-weight: 600; }
|
|
4271
|
+
.opf-sym-hint { margin: 6px 0 0; color: var(--opf-ui-muted-fg); font-size: 11px; }
|
|
4272
|
+
.opf-sym-field { display: flex; align-items: center; gap: 8px; margin-top: 6px; }
|
|
4273
|
+
.opf-sym-label { flex: none; color: var(--opf-ui-muted-fg); }
|
|
4274
|
+
.opf-sym-input {
|
|
4275
|
+
flex: 1 1 auto;
|
|
4276
|
+
min-width: 0;
|
|
4277
|
+
min-height: var(--opf-ui-control-h);
|
|
4278
|
+
padding: 0 8px;
|
|
4279
|
+
border: 1px solid var(--opf-ui-border-strong);
|
|
4280
|
+
border-radius: var(--opf-ui-radius-sm);
|
|
4281
|
+
background: var(--opf-ui-bg);
|
|
4282
|
+
color: var(--opf-ui-fg);
|
|
4283
|
+
font: 13px var(--opf-ui-mono);
|
|
4284
|
+
}
|
|
4285
|
+
.opf-sym-input[aria-invalid="true"] { border-color: var(--opf-ui-danger); }
|
|
4286
|
+
.opf-sym-message { min-height: 1.45em; margin-top: 4px; }
|
|
4287
|
+
.opf-sym-message.is-error { color: var(--opf-ui-danger); font-weight: 600; }
|
|
4288
|
+
.opf-sym-message.is-error::before { content: "Error: "; }
|
|
4289
|
+
.opf-sym-preview { margin-top: 6px; }
|
|
4290
|
+
.opf-sym-image { display: block; max-width: 100%; max-height: 160px; border: 1px solid var(--opf-ui-border); border-radius: var(--opf-ui-radius-sm); }
|
|
4291
|
+
@media (forced-colors: active) {
|
|
4292
|
+
.opf-sym { border: 1px solid CanvasText; }
|
|
4293
|
+
.opf-sym-ref[aria-selected="true"] { outline: 2px solid Highlight; }
|
|
4294
|
+
}
|
|
4295
|
+
|
|
4017
4296
|
/* source-pane.css */
|
|
4018
4297
|
/* Source pane (RR-98). Only --opf-ui-* tokens (src/styles/tokens.css). */
|
|
4019
4298
|
.opf-source {
|
|
@@ -4034,11 +4313,13 @@ input.opf-lx-input[data-field="max"] { font-family: var(--opf-ui-mono); font-siz
|
|
|
4034
4313
|
.opf-source [hidden] { display: none !important; }
|
|
4035
4314
|
.opf-source button { font: inherit; color: inherit; }
|
|
4036
4315
|
|
|
4037
|
-
/* Bar: file name, format menu, actions
|
|
4316
|
+
/* Bar: file name, format menu, actions. It wraps: where the name, the format and the actions do not fit on one row (a narrow pane, or 44px
|
|
4317
|
+
buttons under a coarse pointer), the actions drop to their own row on the right instead of squeezing the name. */
|
|
4038
4318
|
.opf-source-bar {
|
|
4039
4319
|
display: flex;
|
|
4320
|
+
flex-wrap: wrap;
|
|
4040
4321
|
align-items: center;
|
|
4041
|
-
gap: 14px;
|
|
4322
|
+
gap: 0 14px;
|
|
4042
4323
|
flex: none;
|
|
4043
4324
|
min-height: var(--_bar);
|
|
4044
4325
|
padding: 0 8px 0 14px;
|
|
@@ -4169,7 +4450,7 @@ input.opf-lx-input[data-field="max"] { font-family: var(--opf-ui-mono); font-siz
|
|
|
4169
4450
|
.opf-source-code .cm-scroller { overflow: auto; font: 400 13.5px/22px var(--opf-ui-mono); }
|
|
4170
4451
|
.opf-source[data-density="touch"] .opf-source-code .cm-scroller { font-size: 13px; line-height: 21px; }
|
|
4171
4452
|
.opf-source-code .cm-content { padding: 16px 16px 16px 4px; caret-color: var(--opf-ui-fg); }
|
|
4172
|
-
.opf-source-code .cm-line { padding: 0 2px; }
|
|
4453
|
+
.opf-source-code .cm-line { --opf-line-start: 2px; padding-top: 0; padding-right: 2px; padding-bottom: 0; }
|
|
4173
4454
|
.opf-source-code .cm-gutters { border: 0; background: transparent; color: color-mix(in srgb, var(--opf-ui-muted-fg) 60%, transparent); }
|
|
4174
4455
|
.opf-source-code .cm-lineNumbers .cm-gutterElement { min-width: 30px; padding: 0 12px 0 0; text-align: right; font-size: 11px; }
|
|
4175
4456
|
.opf-source-code .cm-activeLine { background: transparent; }
|
|
@@ -4326,6 +4607,46 @@ input.opf-lx-input[data-field="max"] { font-family: var(--opf-ui-mono); font-siz
|
|
|
4326
4607
|
.opf-source-confirm button:hover { background: var(--opf-ui-muted); }
|
|
4327
4608
|
.opf-source-confirm-accept { font-weight: 600; }
|
|
4328
4609
|
|
|
4610
|
+
/* Fold gutter (src/source-folding.js) */
|
|
4611
|
+
.opf-source-code .cm-foldGutter { width: 16px; }
|
|
4612
|
+
.opf-source-code .cm-foldGutter .cm-gutterElement { display: flex; align-items: center; justify-content: center; padding: 0; cursor: pointer; }
|
|
4613
|
+
.opf-source-code .cm-foldGutter .opf-fold-marker { display: inline-flex; align-items: center; justify-content: center; width: 16px; height: 100%; color: var(--opf-ui-muted-fg); opacity: 0; transition: opacity var(--opf-ui-ease); }
|
|
4614
|
+
.opf-source-code .cm-foldGutter .opf-fold-marker.is-folded,
|
|
4615
|
+
.opf-source-code:hover .cm-foldGutter .opf-fold-marker,
|
|
4616
|
+
.opf-source-code .cm-foldGutter .opf-fold-marker:hover { opacity: 1; }
|
|
4617
|
+
.opf-source-code .cm-foldGutter .opf-fold-marker:hover { color: var(--opf-ui-fg); }
|
|
4618
|
+
.opf-source-code .cm-foldPlaceholder { border: 0; background: var(--opf-ui-muted); color: var(--opf-ui-muted-fg); border-radius: var(--opf-ui-radius-sm); padding: 0 5px; margin: 0 2px; cursor: pointer; }
|
|
4619
|
+
@media (prefers-reduced-motion: reduce) { .opf-source-code .cm-foldGutter .opf-fold-marker { transition: none; } }
|
|
4620
|
+
@media (forced-colors: active) { .opf-source-code .cm-foldGutter .opf-fold-marker { opacity: 1; } }
|
|
4621
|
+
|
|
4622
|
+
/* Outline panel (opt-in `outline` option) */
|
|
4623
|
+
.opf-source-body { display: flex; flex: 1; min-height: 0; min-width: 0; }
|
|
4624
|
+
.opf-source-body > .opf-source-code { flex: 1; min-width: 0; }
|
|
4625
|
+
.opf-source-outline { flex: none; width: 220px; max-width: 40%; overflow: auto; border-right: 1px solid var(--opf-ui-code-border); padding: 4px 0; }
|
|
4626
|
+
.opf-source-outline-list { margin: 0; padding: 0; list-style: none; }
|
|
4627
|
+
.opf-source-outline-item { display: flex; align-items: baseline; gap: 6px; width: 100%; min-height: 26px; padding: 2px 8px; border: 0; background: transparent; color: var(--opf-ui-fg); text-align: left; font: inherit; cursor: pointer; }
|
|
4628
|
+
.opf-source-outline-item:hover { background: var(--opf-ui-muted); }
|
|
4629
|
+
.opf-source-outline-item:focus-visible { outline: 2px solid var(--opf-ui-ring); outline-offset: -2px; }
|
|
4630
|
+
.opf-source-outline-item[aria-current="true"] { background: var(--opf-ui-muted); font-weight: 600; }
|
|
4631
|
+
.opf-source-outline-item.is-section { color: var(--opf-ui-muted-fg); font-size: 11px; text-transform: uppercase; letter-spacing: 0.04em; }
|
|
4632
|
+
.opf-source-outline-label { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
|
|
4633
|
+
.opf-source-outline-detail { margin-left: auto; flex: none; max-width: 45%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 11px; color: var(--opf-ui-muted-fg); }
|
|
4634
|
+
.opf-source-outline-empty { padding: 8px 10px; color: var(--opf-ui-muted-fg); }
|
|
4635
|
+
@media (forced-colors: active) { .opf-source-outline-item[aria-current="true"] { outline: 1px solid Highlight; } }
|
|
4636
|
+
|
|
4637
|
+
/* Forced colors (Windows high contrast): the selection of a list is an outline and a problem keeps its underline and a different shape per severity. */
|
|
4638
|
+
@media (forced-colors: active) {
|
|
4639
|
+
.opf-source-code .cm-tooltip-autocomplete > ul > li[aria-selected],
|
|
4640
|
+
.cm-tooltip .opf-fix[aria-selected="true"] { outline: 2px solid Highlight; outline-offset: -2px; forced-color-adjust: none; background: Canvas; color: CanvasText; }
|
|
4641
|
+
.opf-source-code .cm-lintRange-error { text-decoration: underline wavy CanvasText; }
|
|
4642
|
+
.opf-source-code .cm-lintRange-warning { text-decoration: underline dashed CanvasText; }
|
|
4643
|
+
.opf-source-code .cm-lintRange-info { text-decoration: underline dotted CanvasText; }
|
|
4644
|
+
.opf-source-finding { border: 1px solid CanvasText; }
|
|
4645
|
+
}
|
|
4646
|
+
@media (prefers-reduced-motion: reduce) {
|
|
4647
|
+
.cm-tooltip, .cm-tooltip * { animation: none !important; transition: none !important; }
|
|
4648
|
+
}
|
|
4649
|
+
|
|
4329
4650
|
/* thumbnails.css */
|
|
4330
4651
|
/* Thumbnail strip (RR-98). Uses only --opf-ui-* tokens. */
|
|
4331
4652
|
.opf-thumbs {
|
|
@@ -4479,3 +4800,217 @@ input.opf-lx-input[data-field="max"] { font-family: var(--opf-ui-mono); font-siz
|
|
|
4479
4800
|
transition: none;
|
|
4480
4801
|
}
|
|
4481
4802
|
}
|
|
4803
|
+
|
|
4804
|
+
/* touch.css */
|
|
4805
|
+
/*
|
|
4806
|
+
* Touch: a coarse pointer (a finger) gets a 44px hit area on every control, and the text in a field is 16px so iOS Safari does not
|
|
4807
|
+
* zoom the page when the field gets focus. tokens.css already raises --opf-ui-control-h to 44px under `(pointer: coarse)`, which lifts every
|
|
4808
|
+
* control that is sized by it; this file lifts the ones that size themselves (compact buttons, rows, menu items, completion items) and
|
|
4809
|
+
* keeps the visual look: the padding grows, the type does not. The code in an editor stays at its own size: it is not a field.
|
|
4810
|
+
* Tokens only, no color literals (test/styles.mjs).
|
|
4811
|
+
*/
|
|
4812
|
+
@media (pointer: coarse) {
|
|
4813
|
+
/* ---- fields: 16px, 44px ------------------------------------------------------------------------------------------------------ */
|
|
4814
|
+
:is(.opf-ui, .opf-source, .opf-json, .opf-code, .opf-shortcuts, .opf-quickpick, .opf-sym)
|
|
4815
|
+
:is(input:not([type="checkbox"], [type="radio"], [type="range"], [type="file"], [type="color"], [type="button"], [type="submit"], [type="reset"], [type="image"]), select, textarea):not(.opf-inline-input, .opf-rich-input) {
|
|
4816
|
+
font-size: 16px;
|
|
4817
|
+
}
|
|
4818
|
+
:is(.opf-ui, .opf-source, .opf-json, .opf-code, .opf-shortcuts, .opf-quickpick, .opf-sym)
|
|
4819
|
+
:is(input:not([type="checkbox"], [type="radio"], [type="range"], [type="file"], [type="color"], [type="button"], [type="submit"], [type="reset"], [type="image"]), select):not(.opf-inline-input, .opf-rich-input) {
|
|
4820
|
+
min-height: 44px;
|
|
4821
|
+
}
|
|
4822
|
+
/* WebKit sizes a native select by its text unless the height is set. */
|
|
4823
|
+
:is(.opf-ui, .opf-source, .opf-json, .opf-code) select {
|
|
4824
|
+
height: 44px;
|
|
4825
|
+
}
|
|
4826
|
+
.opf-ui input[type="file"] {
|
|
4827
|
+
min-height: 44px;
|
|
4828
|
+
}
|
|
4829
|
+
|
|
4830
|
+
/* ---- the source pane ---------------------------------------------------------------------------------------------------------- */
|
|
4831
|
+
.opf-source,
|
|
4832
|
+
.opf-source[data-density="touch"] {
|
|
4833
|
+
--_h: 44px;
|
|
4834
|
+
--_bar: 52px;
|
|
4835
|
+
}
|
|
4836
|
+
.opf-source-name,
|
|
4837
|
+
.opf-source-format {
|
|
4838
|
+
min-height: var(--_h);
|
|
4839
|
+
}
|
|
4840
|
+
.opf-source-name {
|
|
4841
|
+
min-width: 44px;
|
|
4842
|
+
}
|
|
4843
|
+
.opf-source-finding {
|
|
4844
|
+
min-height: var(--_h);
|
|
4845
|
+
}
|
|
4846
|
+
.opf-source-finding-fix,
|
|
4847
|
+
.opf-source-finding-details {
|
|
4848
|
+
min-height: var(--_h);
|
|
4849
|
+
padding: 0 12px;
|
|
4850
|
+
}
|
|
4851
|
+
.opf-source-finding-fixes {
|
|
4852
|
+
gap: 6px;
|
|
4853
|
+
}
|
|
4854
|
+
.opf-source-outline-item {
|
|
4855
|
+
min-height: var(--_h);
|
|
4856
|
+
}
|
|
4857
|
+
.opf-source-finding-explain-link {
|
|
4858
|
+
display: inline-flex;
|
|
4859
|
+
align-items: center;
|
|
4860
|
+
min-height: 44px;
|
|
4861
|
+
}
|
|
4862
|
+
.opf-sym-close {
|
|
4863
|
+
min-width: 44px;
|
|
4864
|
+
min-height: 44px;
|
|
4865
|
+
}
|
|
4866
|
+
.opf-sym-ref {
|
|
4867
|
+
min-height: 44px;
|
|
4868
|
+
align-items: center;
|
|
4869
|
+
}
|
|
4870
|
+
.opf-shortcuts .opf-shortcuts-close {
|
|
4871
|
+
width: 44px;
|
|
4872
|
+
height: 44px;
|
|
4873
|
+
}
|
|
4874
|
+
.opf-shortcuts .opf-shortcuts-search,
|
|
4875
|
+
.opf-quickpick-input {
|
|
4876
|
+
min-height: 44px;
|
|
4877
|
+
}
|
|
4878
|
+
.opf-quickpick-item {
|
|
4879
|
+
min-height: 44px;
|
|
4880
|
+
align-items: center;
|
|
4881
|
+
}
|
|
4882
|
+
|
|
4883
|
+
/* ---- CodeMirror's lists and panels (completions, problems, quick fixes, search) ---------------------------------------------- */
|
|
4884
|
+
:root :is(.opf-ui, .opf-source, .opf-json, .opf-code) .cm-tooltip.cm-tooltip-autocomplete > ul > li {
|
|
4885
|
+
display: flex;
|
|
4886
|
+
align-items: center;
|
|
4887
|
+
gap: 4px;
|
|
4888
|
+
min-height: 44px;
|
|
4889
|
+
padding: 2px 12px;
|
|
4890
|
+
}
|
|
4891
|
+
:root :is(.opf-ui, .opf-source, .opf-json, .opf-code) .cm-tooltip-autocomplete .cm-completionLabel {
|
|
4892
|
+
min-width: 0;
|
|
4893
|
+
overflow: hidden;
|
|
4894
|
+
text-overflow: ellipsis;
|
|
4895
|
+
}
|
|
4896
|
+
.cm-tooltip .opf-fix {
|
|
4897
|
+
display: flex;
|
|
4898
|
+
align-items: center;
|
|
4899
|
+
min-height: 44px;
|
|
4900
|
+
padding: 3px 12px;
|
|
4901
|
+
}
|
|
4902
|
+
.cm-tooltip-lint .cm-diagnosticAction {
|
|
4903
|
+
min-height: 44px;
|
|
4904
|
+
padding: 0 14px;
|
|
4905
|
+
}
|
|
4906
|
+
:root .cm-panels .cm-panel.cm-search :is(input, button, label) {
|
|
4907
|
+
min-height: 44px;
|
|
4908
|
+
}
|
|
4909
|
+
:root .cm-panels .cm-panel.cm-search :is(input[type="text"], input:not([type])) {
|
|
4910
|
+
font-size: 16px;
|
|
4911
|
+
}
|
|
4912
|
+
/* The find and replace fields take a row of their own each, the buttons and options wrap beneath, the close button stays in the corner. */
|
|
4913
|
+
:root .cm-panels .cm-panel.cm-search {
|
|
4914
|
+
display: flex;
|
|
4915
|
+
flex-wrap: wrap;
|
|
4916
|
+
align-items: center;
|
|
4917
|
+
gap: 6px;
|
|
4918
|
+
padding: 6px 52px 6px 8px;
|
|
4919
|
+
}
|
|
4920
|
+
:root .cm-panels .cm-panel.cm-search br {
|
|
4921
|
+
display: none;
|
|
4922
|
+
}
|
|
4923
|
+
:root .cm-panels .cm-panel.cm-search input[type="text"],
|
|
4924
|
+
:root .cm-panels .cm-panel.cm-search input:not([type]) {
|
|
4925
|
+
flex: 1 1 100%;
|
|
4926
|
+
min-width: 0;
|
|
4927
|
+
margin: 0;
|
|
4928
|
+
}
|
|
4929
|
+
:root .cm-panels .cm-panel.cm-search button,
|
|
4930
|
+
:root .cm-panels .cm-panel.cm-search label {
|
|
4931
|
+
margin: 0;
|
|
4932
|
+
}
|
|
4933
|
+
:root .cm-panels .cm-panel.cm-search label {
|
|
4934
|
+
display: inline-flex;
|
|
4935
|
+
align-items: center;
|
|
4936
|
+
gap: 6px;
|
|
4937
|
+
}
|
|
4938
|
+
:root .cm-panels .cm-panel.cm-search button {
|
|
4939
|
+
min-width: 44px;
|
|
4940
|
+
}
|
|
4941
|
+
:root .cm-panels .cm-panel.cm-search button[name="close"] {
|
|
4942
|
+
top: 0;
|
|
4943
|
+
right: 4px;
|
|
4944
|
+
}
|
|
4945
|
+
|
|
4946
|
+
/* ---- menus, dialogs and the compact controls of the panels --------------------------------------------------------------------- */
|
|
4947
|
+
.opf-export .opf-export-close {
|
|
4948
|
+
width: 44px;
|
|
4949
|
+
height: 44px;
|
|
4950
|
+
}
|
|
4951
|
+
.opf-export[data-density="touch"] .opf-export-trigger,
|
|
4952
|
+
.opf-export[data-density="touch"] .opf-export-item,
|
|
4953
|
+
.opf-export .opf-export-item {
|
|
4954
|
+
min-height: 44px;
|
|
4955
|
+
}
|
|
4956
|
+
.opf-export .opf-export-status-action {
|
|
4957
|
+
height: 44px;
|
|
4958
|
+
}
|
|
4959
|
+
.opf-handoff[data-density="touch"] .opf-handoff-button,
|
|
4960
|
+
.opf-handoff .opf-handoff-button {
|
|
4961
|
+
height: 44px;
|
|
4962
|
+
}
|
|
4963
|
+
.opf-handoff[data-density="touch"] .opf-handoff-target,
|
|
4964
|
+
.opf-handoff .opf-handoff-target {
|
|
4965
|
+
height: 44px;
|
|
4966
|
+
padding: 0 14px;
|
|
4967
|
+
}
|
|
4968
|
+
.opf-handoff[data-density="touch"] .opf-handoff-x,
|
|
4969
|
+
.opf-handoff .opf-handoff-x {
|
|
4970
|
+
width: 44px;
|
|
4971
|
+
height: 44px;
|
|
4972
|
+
}
|
|
4973
|
+
.opf-nav[data-density="touch"] .opf-nav-button,
|
|
4974
|
+
.opf-nav .opf-nav-button {
|
|
4975
|
+
width: 44px;
|
|
4976
|
+
height: 44px;
|
|
4977
|
+
}
|
|
4978
|
+
.opf-thumbs[data-density="touch"] .opf-thumbs-item,
|
|
4979
|
+
.opf-thumbs .opf-thumbs-item {
|
|
4980
|
+
min-height: 44px;
|
|
4981
|
+
}
|
|
4982
|
+
:root .opf-review-fix {
|
|
4983
|
+
min-height: 44px;
|
|
4984
|
+
padding: 0 12px;
|
|
4985
|
+
}
|
|
4986
|
+
:root .opf-find button.opf-find-close,
|
|
4987
|
+
:root .opf-find button[aria-label="Previous match"],
|
|
4988
|
+
:root .opf-find button[aria-label="Next match"] {
|
|
4989
|
+
min-width: 44px;
|
|
4990
|
+
}
|
|
4991
|
+
.opf-dc-group > summary,
|
|
4992
|
+
.opf-template-insert-section summary {
|
|
4993
|
+
min-height: 44px;
|
|
4994
|
+
padding-block: calc((44px - 1lh) / 2);
|
|
4995
|
+
}
|
|
4996
|
+
.opf-dc-check {
|
|
4997
|
+
display: flex;
|
|
4998
|
+
flex-direction: row;
|
|
4999
|
+
flex-wrap: wrap;
|
|
5000
|
+
align-items: center;
|
|
5001
|
+
column-gap: 10px;
|
|
5002
|
+
}
|
|
5003
|
+
.opf-dc-check > input {
|
|
5004
|
+
flex: none;
|
|
5005
|
+
width: 22px;
|
|
5006
|
+
height: 22px;
|
|
5007
|
+
margin: 0;
|
|
5008
|
+
}
|
|
5009
|
+
.opf-dc-check > label {
|
|
5010
|
+
display: flex;
|
|
5011
|
+
align-items: center;
|
|
5012
|
+
flex: 1 1 0;
|
|
5013
|
+
min-width: 0;
|
|
5014
|
+
min-height: 44px;
|
|
5015
|
+
}
|
|
5016
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@openpresentation/opf-editor",
|
|
3
|
-
"version": "0.26.
|
|
3
|
+
"version": "0.26.7",
|
|
4
4
|
"description": "Embeddable local OPF editor primitives built on the deterministic renderer.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -231,6 +231,10 @@
|
|
|
231
231
|
"types": "./dist/annotations.d.ts",
|
|
232
232
|
"default": "./dist/annotations.js"
|
|
233
233
|
},
|
|
234
|
+
"./source-worker": {
|
|
235
|
+
"types": "./dist/source-worker.d.ts",
|
|
236
|
+
"default": "./dist/source-worker.js"
|
|
237
|
+
},
|
|
234
238
|
"./source-pane": {
|
|
235
239
|
"types": "./dist/source-pane.d.ts",
|
|
236
240
|
"default": "./dist/source-pane.js"
|
|
@@ -283,10 +287,10 @@
|
|
|
283
287
|
"@lezer/highlight": "1.2.5",
|
|
284
288
|
"jsonc-parser": "3.3.1",
|
|
285
289
|
"yaml": "^2.9.1",
|
|
286
|
-
"@openpresentation/opf": "^0.26.
|
|
290
|
+
"@openpresentation/opf": "^0.26.7"
|
|
287
291
|
},
|
|
288
292
|
"peerDependencies": {
|
|
289
|
-
"@openpresentation/opf-render": "^0.26.
|
|
293
|
+
"@openpresentation/opf-render": "^0.26.7"
|
|
290
294
|
},
|
|
291
295
|
"peerDependenciesMeta": {
|
|
292
296
|
"@openpresentation/opf-render": {
|
|
@@ -345,9 +349,9 @@
|
|
|
345
349
|
"pdf-lib": "1.17.1",
|
|
346
350
|
"pdfjs-dist": "6.4.299",
|
|
347
351
|
"playwright": "1.64.0",
|
|
348
|
-
"@openpresentation/gallery": "0.26.
|
|
349
|
-
"@openpresentation/opf-
|
|
350
|
-
"@openpresentation/opf-
|
|
352
|
+
"@openpresentation/gallery": "0.26.7",
|
|
353
|
+
"@openpresentation/opf-pptx": "0.26.7",
|
|
354
|
+
"@openpresentation/opf-render": "0.26.7"
|
|
351
355
|
},
|
|
352
356
|
"scripts": {
|
|
353
357
|
"build": "node scripts/build.mjs",
|
|
@@ -398,5 +402,5 @@
|
|
|
398
402
|
"test:export-menu-browser": "node test/export-menu-browser.mjs",
|
|
399
403
|
"test:agent-handoff-browser": "node test/agent-handoff-browser.mjs"
|
|
400
404
|
},
|
|
401
|
-
"gitHead": "
|
|
405
|
+
"gitHead": "9c8a2c82ee5d42462cfe1404e3a3172ab759645f"
|
|
402
406
|
}
|