@open-press/core 0.7.1 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (144) hide show
  1. package/README.md +6 -3
  2. package/engine/cli.mjs +8 -8
  3. package/engine/commands/_shared.mjs +37 -15
  4. package/engine/commands/dev.mjs +2 -2
  5. package/engine/commands/image.mjs +29 -0
  6. package/engine/commands/skills-sync.mjs +71 -0
  7. package/engine/commands/typecheck.mjs +63 -1
  8. package/engine/commands/upgrade.mjs +3 -3
  9. package/engine/document-export.mjs +1 -1
  10. package/engine/output/chrome-pdf.mjs +110 -3
  11. package/engine/output/static-server.mjs +87 -9
  12. package/engine/react/comment-endpoint.mjs +13 -39
  13. package/engine/react/comment-marker.mjs +43 -19
  14. package/engine/react/document-entry.mjs +46 -28
  15. package/engine/react/document-export.mjs +328 -164
  16. package/engine/react/http-json.mjs +24 -0
  17. package/engine/react/mdx-compile.mjs +126 -3
  18. package/engine/react/measurement-css.mjs +114 -1
  19. package/engine/react/object-entities.mjs +204 -0
  20. package/engine/react/pagination/allocator.mjs +48 -3
  21. package/engine/react/pagination.mjs +1 -1
  22. package/engine/react/pipeline/allocate.mjs +41 -72
  23. package/engine/react/pipeline/frame-measurement.mjs +6 -0
  24. package/engine/react/press-tree-inspection.mjs +172 -0
  25. package/engine/react/project-asset-endpoint.mjs +6 -24
  26. package/engine/react/source-edit-endpoint.d.mts +10 -0
  27. package/engine/react/source-edit-endpoint.mjs +75 -0
  28. package/engine/react/sources/mdx-resolver.mjs +13 -15
  29. package/engine/react/style-discovery.mjs +23 -8
  30. package/engine/runtime/config.d.mts +8 -0
  31. package/engine/runtime/config.mjs +57 -60
  32. package/engine/runtime/file-utils.mjs +9 -1
  33. package/engine/runtime/file-walk.mjs +22 -0
  34. package/engine/runtime/inspection.mjs +1 -20
  35. package/engine/runtime/page-geometry.mjs +131 -0
  36. package/engine/runtime/path-utils.mjs +20 -0
  37. package/engine/runtime/source-text-tools.d.mts +102 -0
  38. package/engine/runtime/source-text-tools.mjs +551 -16
  39. package/engine/runtime/source-workspace.mjs +16 -34
  40. package/engine/runtime/validation.mjs +19 -10
  41. package/package.json +3 -5
  42. package/src/openpress/app/OpenPressApp.tsx +296 -0
  43. package/src/openpress/{renderer.tsx → app/OpenPressRuntime.tsx} +20 -9
  44. package/src/openpress/app/WorkspaceGalleryPage.tsx +219 -0
  45. package/src/openpress/app/index.ts +2 -0
  46. package/src/openpress/core/Frame.tsx +26 -15
  47. package/src/openpress/core/FrameContext.tsx +10 -3
  48. package/src/openpress/core/MdxArea.tsx +11 -12
  49. package/src/openpress/core/Press.tsx +25 -4
  50. package/src/openpress/core/Workspace.tsx +36 -0
  51. package/src/openpress/core/cn.ts +4 -0
  52. package/src/openpress/core/index.tsx +11 -3
  53. package/src/openpress/core/primitives.tsx +74 -6
  54. package/src/openpress/core/types.ts +94 -41
  55. package/src/openpress/core/useSource.ts +1 -1
  56. package/src/openpress/{anchorMap.ts → document-model/anchorMapModel.ts} +1 -1
  57. package/src/openpress/{indexes.ts → document-model/documentIndexes.ts} +1 -1
  58. package/src/openpress/{types.ts → document-model/documentTypes.ts} +51 -0
  59. package/src/openpress/document-model/index.ts +7 -0
  60. package/src/openpress/document-model/objectEntityModel.ts +55 -0
  61. package/src/openpress/{projectIdentity.ts → document-model/projectIdentityModel.ts} +1 -1
  62. package/src/openpress/{reactDocumentMetadata.ts → document-model/reactDocumentMetadataModel.ts} +1 -1
  63. package/src/openpress/document-model/workspaceManifestModel.ts +57 -0
  64. package/src/openpress/manuscript/index.tsx +49 -7
  65. package/src/openpress/mdx/index.ts +15 -7
  66. package/src/openpress/reader/PageThumbnailsPanel.tsx +168 -0
  67. package/src/openpress/{publicPage.tsx → reader/PublicReaderPage.tsx} +31 -51
  68. package/src/openpress/{workbenchPanels.tsx → reader/ReaderNavigationPanel.tsx} +6 -5
  69. package/src/openpress/reader/index.ts +11 -0
  70. package/src/openpress/reader/pageViewportScaleModel.ts +73 -0
  71. package/src/openpress/reader/readerTypes.ts +4 -0
  72. package/src/openpress/reader/usePageViewportScale.ts +119 -0
  73. package/src/openpress/reader/usePanelState.ts +56 -0
  74. package/src/openpress/reader/useReaderHashSync.ts +61 -0
  75. package/src/openpress/reader/useReaderKeyboardNav.ts +48 -0
  76. package/src/openpress/reader/useReaderRuntime.ts +146 -0
  77. package/src/openpress/reader/useReaderScrollAnchor.ts +64 -0
  78. package/src/openpress/shared/Panel.tsx +77 -0
  79. package/src/openpress/shared/index.ts +4 -0
  80. package/src/openpress/shared/numberUtils.ts +3 -0
  81. package/src/openpress/{runtimeMode.ts → shared/runtimeMode.ts} +0 -11
  82. package/src/openpress/workbench/Workbench.tsx +506 -0
  83. package/src/openpress/workbench/actions/DeploymentControl.tsx +157 -0
  84. package/src/openpress/workbench/actions/ExportImageControl.tsx +96 -0
  85. package/src/openpress/workbench/actions/PageZoomControl.tsx +182 -0
  86. package/src/openpress/workbench/actions/SearchControl.tsx +345 -0
  87. package/src/openpress/workbench/actions/deploymentStatusModel.ts +112 -0
  88. package/src/openpress/workbench/actions/index.ts +6 -0
  89. package/src/openpress/workbench/actions/useDeploymentWorkbench.ts +136 -0
  90. package/src/openpress/workbench/dialog/WorkbenchDialog.tsx +72 -0
  91. package/src/openpress/workbench/dialog/index.ts +1 -0
  92. package/src/openpress/workbench/document/components/DocumentPanel.tsx +127 -0
  93. package/src/openpress/workbench/document/components/InlineSourceEditorLayer.tsx +207 -0
  94. package/src/openpress/workbench/document/components/ReaderStage.tsx +9 -0
  95. package/src/openpress/workbench/document/hooks/useDocumentWorkbenchModel.ts +34 -0
  96. package/src/openpress/workbench/document/hooks/useInlineDocumentEditor.ts +525 -0
  97. package/src/openpress/workbench/document/index.ts +10 -0
  98. package/src/openpress/workbench/index.ts +2 -0
  99. package/src/openpress/workbench/inspector/InlineInspectorLayer.tsx +459 -0
  100. package/src/openpress/workbench/inspector/index.ts +5 -0
  101. package/src/openpress/workbench/inspector/inlineCommentModel.ts +125 -0
  102. package/src/openpress/workbench/inspector/inspectorGeometryModel.ts +160 -0
  103. package/src/openpress/workbench/inspector/inspectorModel.ts +408 -0
  104. package/src/openpress/workbench/inspector/useInspectorComments.ts +254 -0
  105. package/src/openpress/workbench/mentions/MentionSuggestionList.tsx +41 -0
  106. package/src/openpress/workbench/mentions/index.ts +2 -0
  107. package/src/openpress/{composerMentions.ts → workbench/mentions/useComposerMentions.ts} +1 -4
  108. package/src/openpress/workbench/panels/Panel.tsx +1 -0
  109. package/src/openpress/workbench/panels/PendingCommentsPanel.tsx +80 -0
  110. package/src/openpress/workbench/panels/WorkbenchControlPanel.tsx +29 -0
  111. package/src/openpress/workbench/panels/index.ts +3 -0
  112. package/src/openpress/workbench/project/ProjectEntryPanel.tsx +525 -0
  113. package/src/openpress/workbench/project/ProjectPreviewDialog.tsx +35 -0
  114. package/src/openpress/workbench/project/index.ts +2 -0
  115. package/src/openpress/workbench/project/projectPreviewTypes.ts +11 -0
  116. package/src/openpress/workbench/shell/WorkbenchShell.tsx +167 -0
  117. package/src/openpress/workbench/shell/index.ts +1 -0
  118. package/src/openpress/workbench/workbenchFormatters.ts +120 -0
  119. package/src/openpress/workbench/workbenchTypes.ts +35 -0
  120. package/src/styles/openpress/print-route.css +0 -2
  121. package/src/styles/openpress/{project-workspace.css → project-preview-panel.css} +13 -407
  122. package/src/styles/openpress/public-viewer.css +25 -320
  123. package/src/styles/openpress/reader-runtime.css +252 -55
  124. package/src/styles/openpress/responsive.css +145 -270
  125. package/src/styles/openpress/workbench-panels.css +327 -178
  126. package/src/styles/openpress/workbench.css +986 -451
  127. package/src/styles/openpress/workspace-gallery.css +300 -0
  128. package/src/styles/openpress.css +2 -1
  129. package/tsconfig.json +1 -1
  130. package/vite.config.ts +50 -0
  131. package/engine/commands/init.mjs +0 -24
  132. package/engine/init.mjs +0 -90
  133. package/src/openpress/App.tsx +0 -127
  134. package/src/openpress/inspector.ts +0 -282
  135. package/src/openpress/projectWorkspace.tsx +0 -919
  136. package/src/openpress/readerRuntime.ts +0 -230
  137. package/src/openpress/workbench.tsx +0 -1265
  138. package/src/openpress/workbenchTypes.ts +0 -4
  139. /package/src/openpress/{readerPageRegistry.ts → reader/readerPageRegistry.ts} +0 -0
  140. /package/src/openpress/{pageRoute.ts → reader/readerPageRoute.ts} +0 -0
  141. /package/src/openpress/{readerScroll.ts → reader/readerScroll.ts} +0 -0
  142. /package/src/openpress/{readerState.ts → reader/readerStateModel.ts} +0 -0
  143. /package/src/openpress/{frameScheduler.ts → shared/frameScheduler.ts} +0 -0
  144. /package/src/openpress/{projectSources.ts → workbench/project/projectSourceModel.ts} +0 -0
@@ -2,220 +2,15 @@
2
2
  .openpress-shell {
3
3
  padding: 18px;
4
4
  }
5
- }
6
-
7
- @media screen and (max-width: 899px) {
8
- .openpress-workbench,
9
- .openpress-workbench[data-panel-open="false"] {
10
- display: block;
11
- min-height: 100vh;
12
- }
13
-
14
- .openpress-reader-app,
15
- .openpress-reader-app.is-closed-left,
16
- .openpress-reader-app.is-closed-right,
17
- .openpress-reader-app.is-closed-left.is-closed-right {
18
- grid-template-rows: 58px minmax(0, 1fr);
19
- grid-template-columns: minmax(0, 1fr);
20
- grid-template-areas:
21
- "nav"
22
- "main";
23
- }
24
-
25
- .openpress-workspace-navbar {
26
- grid-template-columns: minmax(0, 1fr) auto;
27
- gap: 8px;
28
- padding: 0 12px;
29
- }
30
-
31
- .openpress-workspace-brand strong {
32
- max-width: 42vw;
33
- font-size: 13px;
34
- }
35
-
36
- .openpress-workspace-progress {
37
- position: absolute;
38
- right: 14px;
39
- bottom: 0;
40
- left: 14px;
41
- width: auto;
42
- }
43
-
44
- .openpress-page-count {
45
- display: none;
46
- }
47
-
48
- .openpress-navbar-button {
49
- height: 32px;
50
- padding: 0 10px;
51
- }
52
-
53
- .openpress-reader-app .reader-thumb-strip {
54
- position: static;
55
- display: flex !important;
56
- width: 100%;
57
- height: 100%;
58
- }
59
-
60
- .openpress-editor-rail {
61
- position: fixed;
62
- right: 0;
63
- bottom: 0;
64
- left: 0;
65
- z-index: 34;
66
- flex-direction: row;
67
- justify-content: center;
68
- border-top: 1px solid rgb(255 255 255 / 9%);
69
- border-right: 0;
70
- padding: 6px max(8px, env(safe-area-inset-left)) calc(6px + env(safe-area-inset-bottom));
71
- }
72
-
73
- .openpress-editor-rail__button {
74
- min-width: 66px;
75
- padding: 7px 9px;
76
- }
77
-
78
- .openpress-editor-navigator {
79
- position: fixed;
80
- top: 58px;
81
- bottom: calc(52px + env(safe-area-inset-bottom));
82
- left: 0;
83
- z-index: 25;
84
- width: min(78vw, 320px);
85
- transform: translateX(0);
86
- transition: transform 220ms cubic-bezier(0.22, 0.61, 0.36, 1);
87
- box-shadow: 16px 0 34px rgb(0 0 0 / 36%);
88
- }
89
-
90
- .openpress-reader-app.is-closed-left .openpress-editor-navigator {
91
- transform: translateX(-100%);
92
- pointer-events: none;
93
- box-shadow: none;
94
- }
95
-
96
- .openpress-reader-app.is-closed-left .openpress-editor-navigator > * {
97
- opacity: 1;
98
- }
99
-
100
- .openpress-reader-app .reader-side-nav {
101
- position: fixed;
102
- top: 58px;
103
- right: 0;
104
- z-index: 25;
105
- display: grid !important;
106
- min-width: 0;
107
- width: min(82vw, 340px);
108
- height: calc(100dvh - 110px - env(safe-area-inset-bottom));
109
- transform: translateX(0);
110
- transition: transform 220ms cubic-bezier(0.22, 0.61, 0.36, 1);
111
- box-shadow: -16px 0 34px rgb(0 0 0 / 36%);
112
- }
113
-
114
- .openpress-reader-app.is-closed-right .reader-side-nav {
115
- display: grid !important;
116
- transform: translateX(100%);
117
- pointer-events: none;
118
- box-shadow: none;
119
- }
120
-
121
- .openpress-reader-app.is-floating-backdrop::before {
122
- top: 0;
123
- }
124
-
125
- .openpress-reader-app .reader-stage {
126
- height: 100%;
127
- min-height: 0;
128
- }
129
-
130
- .openpress-reader-app .reader-pages {
131
- gap: 18px;
132
- padding: 16px 14px calc(96px + env(safe-area-inset-bottom));
133
- }
134
-
135
- .openpress-reader-app .reader-page {
136
- scroll-margin-top: 16px;
137
- }
138
-
139
- .openpress-public-viewer .reader-pages {
140
- padding: 16px 10px calc(80px + env(safe-area-inset-bottom));
141
- }
142
-
143
- .openpress-public-viewer .openpress-html-page,
144
- .openpress-html-page {
145
- width: 100%;
146
- margin-bottom: 8px;
147
- scroll-margin-top: 68px;
148
- container-type: inline-size;
149
- }
150
-
151
- .openpress-public-viewer .openpress-html-page__html .reader-page,
152
- .openpress-public-viewer .openpress-html-page__html .reader-page--cover,
153
- .openpress-public-viewer .openpress-html-page__html .reader-page--back-cover,
154
- .openpress-html-page__html .reader-page,
155
- .openpress-html-page__html .reader-page--cover,
156
- .openpress-html-page__html .reader-page--back-cover {
157
- width: 100%;
158
- height: auto;
159
- min-height: calc(100cqw * var(--openpress-page-height-ratio, 1.4142857143));
160
- aspect-ratio: var(--openpress-page-aspect-ratio, 210 / 297);
161
- max-height: none;
162
- overflow: visible;
163
- margin: 0 auto;
164
- box-shadow: 0 10px 30px rgb(0 0 0 / 26%);
165
- }
166
-
167
- .openpress-public-viewer .openpress-html-page__html .reader-page .page-frame {
168
- height: auto;
169
- min-height: inherit;
170
- grid-template-rows: auto minmax(max-content, 1fr) auto;
171
- }
172
-
173
- .openpress-public-viewer .openpress-html-page__html .reader-page.no-footer .page-frame {
174
- grid-template-rows: auto minmax(max-content, 1fr);
175
- }
176
-
177
- .openpress-public-viewer .openpress-html-page__html .reader-page .page-body {
178
- overflow: visible;
179
- }
180
5
 
181
- .openpress-public-viewer[data-openpress-view-mode="paged"] .openpress-html-page__html .reader-page {
182
- height: calc(100cqw * var(--openpress-page-height-ratio, 1.4142857143));
183
- min-height: calc(100cqw * var(--openpress-page-height-ratio, 1.4142857143));
184
- aspect-ratio: var(--openpress-page-aspect-ratio, 210 / 297);
185
- max-height: none;
186
- overflow: hidden;
187
- }
188
-
189
- .openpress-public-viewer[data-openpress-view-mode="paged"] .openpress-html-page__html .reader-page .page-frame {
190
- height: 100%;
191
- min-height: 0;
192
- grid-template-rows: var(--page-header-height) minmax(0, 1fr) var(--page-footer-height);
193
- }
194
-
195
- .openpress-public-viewer[data-openpress-view-mode="paged"] .openpress-html-page__html .reader-page.no-footer .page-frame {
196
- grid-template-rows: var(--page-header-height) minmax(0, 1fr);
197
- }
198
-
199
- .openpress-public-viewer[data-openpress-view-mode="paged"] .reader-page--content figure,
200
- .openpress-public-viewer[data-openpress-view-mode="paged"] .reader-page--content table {
201
- max-width: 100%;
202
- overflow-x: auto;
203
- overflow-y: hidden;
204
- -webkit-overflow-scrolling: touch;
205
- overscroll-behavior-x: contain;
206
- }
207
- }
208
-
209
- @media (max-width: 1184px) {
210
- .openpress-public-viewer.reader-app,
211
- .openpress-public-viewer.openpress-reader-app,
212
- .openpress-public-viewer.openpress-reader-app.is-closed-right {
6
+ .openpress-public-viewer.openpress-reader-app:not(.openpress-workbench-shell),
7
+ .openpress-public-viewer.openpress-reader-app:not(.openpress-workbench-shell).is-closed-right {
213
8
  grid-template-rows: minmax(0, 1fr);
214
9
  grid-template-columns: minmax(0, 1fr);
215
10
  grid-template-areas: "main";
216
11
  }
217
12
 
218
- .openpress-public-viewer.openpress-reader-app .openpress-public-navigation {
13
+ .openpress-public-viewer.openpress-reader-app:not(.openpress-workbench-shell) .openpress-public-navigation {
219
14
  position: fixed;
220
15
  top: 0;
221
16
  right: auto;
@@ -232,26 +27,26 @@
232
27
  overflow-x: hidden;
233
28
  background: #181818;
234
29
  box-shadow: 16px 0 44px rgb(0 0 0 / 42%);
235
- transform: translateX(0);
236
- transition: transform 260ms cubic-bezier(0.22, 0.61, 0.36, 1);
30
+ opacity: 1;
31
+ visibility: visible;
32
+ transform: none;
33
+ transition:
34
+ left 260ms cubic-bezier(0.22, 0.61, 0.36, 1),
35
+ opacity 160ms ease,
36
+ visibility 160ms ease;
237
37
  }
238
38
 
239
- .openpress-dev-public-navigation {
240
- grid-template-rows: auto auto minmax(0, 1fr) auto auto;
39
+ .openpress-public-viewer.openpress-reader-app:not(.openpress-workbench-shell) .openpress-dev-public-navigation {
40
+ grid-template-rows: auto minmax(0, 1fr);
241
41
  }
242
42
 
243
- .openpress-public-viewer[data-active-workspace="project"] .openpress-dev-public-navigation {
244
- grid-template-rows: auto auto minmax(0, 1fr) auto;
245
- }
246
-
247
- .openpress-public-viewer.openpress-reader-app .openpress-public-identity {
43
+ .openpress-public-viewer.openpress-reader-app:not(.openpress-workbench-shell) .openpress-public-identity {
248
44
  min-width: 0;
249
45
  padding-right: 54px;
250
46
  }
251
47
 
252
- .openpress-public-viewer.openpress-reader-app .openpress-public-identity strong,
253
- .openpress-public-viewer.openpress-reader-app .openpress-public-title-main,
254
- .openpress-public-viewer.openpress-reader-app .openpress-public-title-sub {
48
+ .openpress-public-viewer.openpress-reader-app:not(.openpress-workbench-shell) .openpress-public-identity strong,
49
+ .openpress-public-viewer.openpress-reader-app:not(.openpress-workbench-shell) .openpress-public-title-main {
255
50
  min-width: 0;
256
51
  max-width: 100%;
257
52
  white-space: normal;
@@ -259,17 +54,19 @@
259
54
  word-break: normal;
260
55
  }
261
56
 
262
- .openpress-public-viewer.openpress-reader-app .reader-bookmarks {
57
+ .openpress-public-viewer.openpress-reader-app:not(.openpress-workbench-shell) .reader-bookmarks {
263
58
  overflow-x: hidden;
264
59
  }
265
60
 
266
- .openpress-public-viewer.openpress-reader-app.is-closed-right .openpress-public-navigation {
267
- transform: translateX(-110%);
61
+ .openpress-public-viewer.openpress-reader-app:not(.openpress-workbench-shell).is-closed-right .openpress-public-navigation {
62
+ left: calc(-1 * min(88vw, var(--openpress-public-nav-max-width)));
63
+ opacity: 0;
64
+ visibility: hidden;
268
65
  pointer-events: none;
269
66
  box-shadow: none;
270
67
  }
271
68
 
272
- .openpress-public-viewer.openpress-reader-app .openpress-public-scrim {
69
+ .openpress-public-viewer.openpress-reader-app:not(.openpress-workbench-shell) .openpress-public-scrim {
273
70
  position: fixed;
274
71
  inset: 0;
275
72
  z-index: 35;
@@ -277,7 +74,7 @@
277
74
  backdrop-filter: blur(1px);
278
75
  }
279
76
 
280
- .openpress-public-viewer.openpress-reader-app.is-closed-right .openpress-public-fab {
77
+ .openpress-public-viewer.openpress-reader-app:not(.openpress-workbench-shell).is-closed-right .openpress-public-fab {
281
78
  position: fixed;
282
79
  left: 20px;
283
80
  bottom: calc(24px + env(safe-area-inset-bottom));
@@ -295,76 +92,154 @@
295
92
  backdrop-filter: blur(10px);
296
93
  }
297
94
 
298
- .openpress-public-viewer.openpress-reader-app:not(.is-closed-right) .openpress-public-fab {
95
+ .openpress-public-viewer.openpress-reader-app:not(.openpress-workbench-shell):not(.is-closed-right) .openpress-public-fab {
299
96
  display: none;
300
97
  }
301
98
 
302
- .openpress-public-viewer.openpress-reader-app:not(.is-closed-right) .openpress-public-scrim {
99
+ .openpress-public-viewer.openpress-reader-app:not(.openpress-workbench-shell):not(.is-closed-right) .openpress-public-scrim {
303
100
  display: block;
304
101
  }
305
102
 
306
- .openpress-public-viewer[data-openpress-view-mode="paged"] .reader-pages {
307
- --openpress-public-page-width: min(
308
- var(--openpress-page-width),
309
- 860px,
310
- calc(100cqw - 48px)
311
- );
103
+ .openpress-public-viewer.openpress-workbench-shell.openpress-reader-app,
104
+ .openpress-public-viewer.openpress-workbench-shell.openpress-reader-app.is-closed-left,
105
+ .openpress-public-viewer.openpress-workbench-shell.openpress-reader-app.is-closed-right,
106
+ .openpress-public-viewer.openpress-workbench-shell.openpress-reader-app.is-closed-left.is-closed-right {
107
+ --openpress-workbench-toolbar-height: 44px;
108
+ grid-template-rows: var(--openpress-workbench-toolbar-height) minmax(0, 1fr);
109
+ grid-template-columns: minmax(0, 1fr);
110
+ grid-template-areas:
111
+ "toolbar"
112
+ "main";
312
113
  }
313
114
 
314
- .openpress-public-viewer .openpress-html-page {
315
- width: min(100%, var(--openpress-public-page-width));
316
- container-type: inline-size;
115
+ .openpress-public-viewer.openpress-workbench-shell .openpress-public-fab {
116
+ display: none !important;
317
117
  }
318
118
 
319
- .openpress-public-viewer .openpress-html-page__html .reader-page,
320
- .openpress-public-viewer .openpress-html-page__html .reader-page--cover,
321
- .openpress-public-viewer .openpress-html-page__html .reader-page--back-cover {
322
- width: 100%;
119
+ .openpress-public-viewer.openpress-workbench-shell.openpress-reader-app .openpress-workbench-left-panel {
120
+ position: fixed;
121
+ top: var(--openpress-workbench-toolbar-height);
122
+ right: auto;
123
+ bottom: 0;
124
+ left: 0;
125
+ z-index: 40;
126
+ display: grid !important;
127
+ width: min(86vw, 340px);
323
128
  height: auto;
324
- min-height: min(calc(100cqw * var(--openpress-page-height-ratio, 1.4142857143)), calc(100dvh - 48px));
325
- aspect-ratio: var(--openpress-page-aspect-ratio, 210 / 297);
326
- max-height: none;
327
- overflow: visible;
129
+ min-width: 0;
130
+ margin: 0;
131
+ opacity: 1;
132
+ visibility: visible;
133
+ transform: none;
134
+ transition:
135
+ left 220ms cubic-bezier(0.22, 0.61, 0.36, 1),
136
+ opacity 160ms ease,
137
+ visibility 160ms ease;
138
+ box-shadow: 16px 0 34px rgb(0 0 0 / 36%);
328
139
  }
329
140
 
330
- .openpress-public-viewer .openpress-html-page__html .reader-page .page-frame {
141
+ .openpress-public-viewer.openpress-workbench-shell.openpress-reader-app.is-closed-left .openpress-workbench-left-panel {
142
+ left: calc(-1 * min(86vw, 340px));
143
+ opacity: 0;
144
+ visibility: hidden;
145
+ box-shadow: none;
146
+ }
147
+
148
+ .openpress-public-viewer.openpress-workbench-shell.openpress-reader-app .openpress-workbench-right-panel {
149
+ position: fixed;
150
+ top: var(--openpress-workbench-toolbar-height);
151
+ right: 0;
152
+ bottom: 0;
153
+ left: auto;
154
+ z-index: 40;
155
+ display: grid !important;
156
+ width: min(86vw, 380px);
331
157
  height: auto;
332
- min-height: inherit;
333
- grid-template-rows: auto minmax(max-content, 1fr) auto;
158
+ min-width: 0;
159
+ margin: 0;
160
+ opacity: 1;
161
+ visibility: visible;
162
+ transform: none;
163
+ transition:
164
+ right 220ms cubic-bezier(0.22, 0.61, 0.36, 1),
165
+ opacity 160ms ease,
166
+ visibility 160ms ease;
167
+ box-shadow: -16px 0 34px rgb(0 0 0 / 36%);
334
168
  }
335
169
 
336
- .openpress-public-viewer .openpress-html-page__html .reader-page.no-footer .page-frame {
337
- grid-template-rows: auto minmax(max-content, 1fr);
170
+ .openpress-public-viewer.openpress-workbench-shell.openpress-reader-app.is-closed-right .openpress-workbench-right-panel {
171
+ right: calc(-1 * min(86vw, 380px));
172
+ opacity: 0;
173
+ visibility: hidden;
174
+ box-shadow: none;
338
175
  }
339
176
 
340
- .openpress-public-viewer .openpress-html-page__html .reader-page .page-body {
341
- overflow: visible;
177
+ .openpress-public-viewer.openpress-workbench-shell.openpress-reader-app .openpress-public-scrim {
178
+ position: fixed;
179
+ inset: 0;
180
+ z-index: 35;
181
+ display: block;
182
+ background: rgb(0 0 0 / 42%);
183
+ backdrop-filter: blur(1px);
342
184
  }
343
185
 
344
- .openpress-public-viewer[data-openpress-view-mode="paged"] .openpress-html-page__html .reader-page {
345
- height: calc(100cqw * var(--openpress-page-height-ratio, 1.4142857143));
346
- min-height: calc(100cqw * var(--openpress-page-height-ratio, 1.4142857143));
347
- aspect-ratio: var(--openpress-page-aspect-ratio, 210 / 297);
348
- max-height: none;
349
- overflow: hidden;
186
+ .openpress-public-viewer.openpress-workbench-shell.openpress-reader-app .openpress-workbench-right-panel .openpress-public-drawer-close {
187
+ display: flex;
350
188
  }
189
+ }
351
190
 
352
- .openpress-public-viewer[data-openpress-view-mode="paged"] .openpress-html-page__html .reader-page .page-frame {
353
- height: 100%;
354
- min-height: 0;
355
- grid-template-rows: var(--page-header-height) minmax(0, 1fr) var(--page-footer-height);
191
+ @media (max-width: 520px) {
192
+ .openpress-public-viewer.openpress-reader-app:not(.openpress-workbench-shell) .openpress-public-navigation {
193
+ width: min(90vw, var(--openpress-public-nav-max-width));
356
194
  }
357
195
 
358
- .openpress-public-viewer[data-openpress-view-mode="paged"] .openpress-html-page__html .reader-page.no-footer .page-frame {
359
- grid-template-rows: var(--page-header-height) minmax(0, 1fr);
196
+ .openpress-public-viewer.openpress-reader-app:not(.openpress-workbench-shell).is-closed-right .openpress-public-navigation {
197
+ left: calc(-1 * min(90vw, var(--openpress-public-nav-max-width)));
360
198
  }
361
199
 
362
- .openpress-public-viewer[data-openpress-view-mode="paged"] .reader-page--content figure,
363
- .openpress-public-viewer[data-openpress-view-mode="paged"] .reader-page--content table {
364
- max-width: 100%;
365
- overflow-x: auto;
366
- overflow-y: hidden;
367
- -webkit-overflow-scrolling: touch;
368
- overscroll-behavior-x: contain;
200
+ .openpress-public-viewer.openpress-reader-app:not(.openpress-workbench-shell).is-closed-right .openpress-public-fab {
201
+ left: 16px;
202
+ bottom: calc(20px + env(safe-area-inset-bottom));
203
+ }
204
+
205
+ .openpress-public-viewer.openpress-workbench-shell.openpress-reader-app .openpress-workbench-left-panel {
206
+ width: min(90vw, 340px);
207
+ }
208
+
209
+ .openpress-public-viewer.openpress-workbench-shell.openpress-reader-app.is-closed-left .openpress-workbench-left-panel {
210
+ left: calc(-1 * min(90vw, 340px));
211
+ }
212
+
213
+ .openpress-public-viewer.openpress-workbench-shell.openpress-reader-app .openpress-workbench-right-panel {
214
+ width: min(90vw, 380px);
215
+ }
216
+
217
+ .openpress-public-viewer.openpress-workbench-shell.openpress-reader-app.is-closed-right .openpress-workbench-right-panel {
218
+ right: calc(-1 * min(90vw, 380px));
219
+ }
220
+
221
+ .openpress-workbench-toolbar {
222
+ gap: 6px;
223
+ padding: 0 6px;
224
+ }
225
+
226
+ .openpress-workbench-toolbar__content,
227
+ .openpress-workbench-toolbar__group {
228
+ gap: 4px;
229
+ }
230
+
231
+ .openpress-workbench-page-geometry {
232
+ max-width: min(34vw, 160px);
233
+ gap: 5px;
234
+ padding: 0 6px;
235
+ }
236
+
237
+ .openpress-workbench-page-geometry__dimensions {
238
+ display: none;
239
+ }
240
+
241
+ .openpress-workbench-toolbar-action[data-openpress-toolbar-expanded="true"] {
242
+ max-width: min(34vw, 132px);
243
+ padding: 0 8px;
369
244
  }
370
245
  }