@open-press/core 0.7.1 → 0.8.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 (115) hide show
  1. package/engine/commands/dev.mjs +2 -2
  2. package/engine/output/chrome-pdf.mjs +18 -3
  3. package/engine/output/static-server.mjs +39 -0
  4. package/engine/react/comment-endpoint.mjs +13 -39
  5. package/engine/react/comment-marker.mjs +30 -6
  6. package/engine/react/document-entry.mjs +11 -0
  7. package/engine/react/document-export.mjs +30 -5
  8. package/engine/react/http-json.mjs +24 -0
  9. package/engine/react/mdx-compile.mjs +96 -3
  10. package/engine/react/measurement-css.mjs +93 -1
  11. package/engine/react/object-entities.mjs +119 -0
  12. package/engine/react/pipeline/allocate.mjs +10 -7
  13. package/engine/react/pipeline/frame-measurement.mjs +2 -0
  14. package/engine/react/project-asset-endpoint.mjs +6 -24
  15. package/engine/react/source-edit-endpoint.d.mts +10 -0
  16. package/engine/react/source-edit-endpoint.mjs +75 -0
  17. package/engine/react/sources/mdx-resolver.mjs +12 -14
  18. package/engine/react/style-discovery.mjs +1 -4
  19. package/engine/runtime/file-walk.mjs +22 -0
  20. package/engine/runtime/inspection.mjs +1 -20
  21. package/engine/runtime/path-utils.mjs +20 -0
  22. package/engine/runtime/source-text-tools.d.mts +102 -0
  23. package/engine/runtime/source-text-tools.mjs +551 -16
  24. package/engine/runtime/source-workspace.mjs +4 -31
  25. package/package.json +1 -1
  26. package/src/openpress/{App.tsx → app/OpenPressApp.tsx} +25 -12
  27. package/src/openpress/{renderer.tsx → app/OpenPressRuntime.tsx} +10 -7
  28. package/src/openpress/app/index.ts +2 -0
  29. package/src/openpress/core/Frame.tsx +9 -11
  30. package/src/openpress/core/FrameContext.tsx +8 -3
  31. package/src/openpress/core/MdxArea.tsx +11 -12
  32. package/src/openpress/core/cn.ts +4 -0
  33. package/src/openpress/core/index.tsx +2 -1
  34. package/src/openpress/core/primitives.tsx +29 -8
  35. package/src/openpress/core/types.ts +8 -0
  36. package/src/openpress/{anchorMap.ts → document-model/anchorMapModel.ts} +1 -1
  37. package/src/openpress/{indexes.ts → document-model/documentIndexes.ts} +1 -1
  38. package/src/openpress/{types.ts → document-model/documentTypes.ts} +42 -0
  39. package/src/openpress/document-model/index.ts +6 -0
  40. package/src/openpress/document-model/objectEntityModel.ts +51 -0
  41. package/src/openpress/{projectIdentity.ts → document-model/projectIdentityModel.ts} +1 -1
  42. package/src/openpress/{reactDocumentMetadata.ts → document-model/reactDocumentMetadataModel.ts} +1 -1
  43. package/src/openpress/manuscript/index.tsx +49 -7
  44. package/src/openpress/{publicPage.tsx → reader/PublicReaderPage.tsx} +31 -51
  45. package/src/openpress/{workbenchPanels.tsx → reader/ReaderNavigationPanel.tsx} +6 -5
  46. package/src/openpress/reader/index.ts +10 -0
  47. package/src/openpress/reader/pageViewportScaleModel.ts +73 -0
  48. package/src/openpress/reader/readerTypes.ts +4 -0
  49. package/src/openpress/reader/usePageViewportScale.ts +119 -0
  50. package/src/openpress/reader/usePanelState.ts +56 -0
  51. package/src/openpress/reader/useReaderHashSync.ts +61 -0
  52. package/src/openpress/reader/useReaderKeyboardNav.ts +48 -0
  53. package/src/openpress/reader/useReaderRuntime.ts +146 -0
  54. package/src/openpress/reader/useReaderScrollAnchor.ts +64 -0
  55. package/src/openpress/shared/Panel.tsx +77 -0
  56. package/src/openpress/shared/index.ts +4 -0
  57. package/src/openpress/shared/numberUtils.ts +3 -0
  58. package/src/openpress/{runtimeMode.ts → shared/runtimeMode.ts} +0 -11
  59. package/src/openpress/workbench/Workbench.tsx +407 -0
  60. package/src/openpress/workbench/actions/DeploymentControl.tsx +157 -0
  61. package/src/openpress/workbench/actions/PageZoomControl.tsx +182 -0
  62. package/src/openpress/workbench/actions/SearchControl.tsx +345 -0
  63. package/src/openpress/workbench/actions/deploymentStatusModel.ts +112 -0
  64. package/src/openpress/workbench/actions/index.ts +5 -0
  65. package/src/openpress/workbench/actions/useDeploymentWorkbench.ts +136 -0
  66. package/src/openpress/workbench/dialog/WorkbenchDialog.tsx +72 -0
  67. package/src/openpress/workbench/dialog/index.ts +1 -0
  68. package/src/openpress/workbench/document/components/DocumentPanel.tsx +127 -0
  69. package/src/openpress/workbench/document/components/InlineSourceEditorLayer.tsx +207 -0
  70. package/src/openpress/workbench/document/components/ReaderStage.tsx +9 -0
  71. package/src/openpress/workbench/document/hooks/useDocumentWorkbenchModel.ts +34 -0
  72. package/src/openpress/workbench/document/hooks/useInlineDocumentEditor.ts +525 -0
  73. package/src/openpress/workbench/document/index.ts +10 -0
  74. package/src/openpress/workbench/index.ts +2 -0
  75. package/src/openpress/workbench/inspector/InlineInspectorLayer.tsx +459 -0
  76. package/src/openpress/workbench/inspector/index.ts +5 -0
  77. package/src/openpress/workbench/inspector/inlineCommentModel.ts +125 -0
  78. package/src/openpress/workbench/inspector/inspectorGeometryModel.ts +160 -0
  79. package/src/openpress/workbench/inspector/inspectorModel.ts +408 -0
  80. package/src/openpress/workbench/inspector/useInspectorComments.ts +248 -0
  81. package/src/openpress/workbench/mentions/MentionSuggestionList.tsx +41 -0
  82. package/src/openpress/workbench/mentions/index.ts +2 -0
  83. package/src/openpress/{composerMentions.ts → workbench/mentions/useComposerMentions.ts} +1 -4
  84. package/src/openpress/workbench/panels/Panel.tsx +1 -0
  85. package/src/openpress/workbench/panels/PendingCommentsPanel.tsx +76 -0
  86. package/src/openpress/workbench/panels/WorkbenchControlPanel.tsx +29 -0
  87. package/src/openpress/workbench/panels/index.ts +3 -0
  88. package/src/openpress/workbench/project/ProjectEntryPanel.tsx +523 -0
  89. package/src/openpress/workbench/project/ProjectPreviewDialog.tsx +35 -0
  90. package/src/openpress/workbench/project/index.ts +2 -0
  91. package/src/openpress/workbench/project/projectPreviewTypes.ts +11 -0
  92. package/src/openpress/workbench/shell/WorkbenchShell.tsx +167 -0
  93. package/src/openpress/workbench/shell/index.ts +1 -0
  94. package/src/openpress/workbench/workbenchFormatters.ts +120 -0
  95. package/src/openpress/workbench/workbenchTypes.ts +35 -0
  96. package/src/styles/openpress/print-route.css +0 -2
  97. package/src/styles/openpress/{project-workspace.css → project-preview-panel.css} +13 -407
  98. package/src/styles/openpress/public-viewer.css +25 -320
  99. package/src/styles/openpress/reader-runtime.css +243 -55
  100. package/src/styles/openpress/responsive.css +145 -270
  101. package/src/styles/openpress/workbench-panels.css +214 -178
  102. package/src/styles/openpress/workbench.css +986 -451
  103. package/src/styles/openpress.css +1 -1
  104. package/vite.config.ts +50 -0
  105. package/src/openpress/inspector.ts +0 -282
  106. package/src/openpress/projectWorkspace.tsx +0 -919
  107. package/src/openpress/readerRuntime.ts +0 -230
  108. package/src/openpress/workbench.tsx +0 -1265
  109. package/src/openpress/workbenchTypes.ts +0 -4
  110. /package/src/openpress/{readerPageRegistry.ts → reader/readerPageRegistry.ts} +0 -0
  111. /package/src/openpress/{pageRoute.ts → reader/readerPageRoute.ts} +0 -0
  112. /package/src/openpress/{readerScroll.ts → reader/readerScroll.ts} +0 -0
  113. /package/src/openpress/{readerState.ts → reader/readerStateModel.ts} +0 -0
  114. /package/src/openpress/{frameScheduler.ts → shared/frameScheduler.ts} +0 -0
  115. /package/src/openpress/{projectSources.ts → workbench/project/projectSourceModel.ts} +0 -0
@@ -5,7 +5,7 @@
5
5
  min-height: 100dvh;
6
6
  --openpress-public-nav-min-width: 340px;
7
7
  --openpress-public-nav-max-width: 420px;
8
- --openpress-public-page-width: min(var(--openpress-page-width), 860px);
8
+ --openpress-public-page-width: var(--openpress-page-width);
9
9
  --openpress-public-nav-width: clamp(var(--openpress-public-nav-min-width), calc(100vw - var(--openpress-public-page-width) - 48px), var(--openpress-public-nav-max-width));
10
10
  --openpress-public-nav-max-height: 960px;
11
11
  display: grid;
@@ -35,9 +35,9 @@
35
35
  }
36
36
 
37
37
  .openpress-public-viewer .reader-stage {
38
- overflow-x: hidden;
38
+ overflow-x: auto;
39
39
  overflow-y: auto;
40
- overscroll-behavior-x: none;
40
+ overscroll-behavior-x: contain;
41
41
  overscroll-behavior-y: contain;
42
42
  -webkit-overflow-scrolling: touch;
43
43
  touch-action: pan-y pinch-zoom;
@@ -48,14 +48,17 @@
48
48
  }
49
49
 
50
50
  .openpress-public-viewer .openpress-html-page {
51
- width: fit-content;
52
- max-width: 100%;
53
- margin: 0 auto 12px;
51
+ width: calc(var(--openpress-page-width) * var(--openpress-page-viewport-scale, 1));
52
+ max-width: none;
53
+ height: calc(var(--openpress-page-height) * var(--openpress-page-viewport-scale, 1));
54
+ margin: 0;
54
55
  }
55
56
 
56
57
  .openpress-public-viewer .openpress-html-page__html .reader-page {
57
- width: var(--openpress-public-page-width);
58
- height: calc(var(--openpress-public-page-width) * var(--openpress-page-height-ratio, 1.4142857143));
58
+ width: var(--openpress-page-width);
59
+ max-width: none;
60
+ height: var(--openpress-page-height);
61
+ min-height: var(--openpress-page-height);
59
62
  aspect-ratio: var(--openpress-page-aspect-ratio, 210 / 297);
60
63
  }
61
64
 
@@ -88,11 +91,7 @@
88
91
  }
89
92
 
90
93
  .openpress-public-viewer .openpress-dev-public-navigation {
91
- grid-template-rows: auto auto minmax(0, 1fr) auto auto;
92
- }
93
-
94
- .openpress-public-viewer[data-active-workspace="project"] .openpress-dev-public-navigation {
95
- grid-template-rows: auto auto minmax(0, 1fr) auto;
94
+ grid-template-rows: auto minmax(0, 1fr);
96
95
  }
97
96
 
98
97
  .openpress-public-identity {
@@ -129,11 +128,14 @@
129
128
  }
130
129
 
131
130
  .openpress-public-title-sub {
132
- max-width: 15em;
131
+ overflow: hidden;
132
+ max-width: min(18rem, 100%);
133
133
  color: rgb(214 218 222 / 78%);
134
134
  font-size: 13px;
135
135
  font-weight: 500;
136
136
  line-height: 1.42;
137
+ text-overflow: ellipsis;
138
+ white-space: nowrap;
137
139
  }
138
140
 
139
141
  .openpress-public-actions {
@@ -320,303 +322,6 @@
320
322
  flex: 0 0 auto;
321
323
  }
322
324
 
323
- .openpress-public-viewer[data-openpress-view-mode="reading"] {
324
- --openpress-reading-width: min(100%, 880px);
325
- --openpress-reading-measure: min(100%, 760px);
326
- }
327
-
328
- .openpress-public-viewer[data-openpress-view-mode="reading"] .openpress-public-viewer__stage,
329
- .openpress-public-viewer[data-openpress-view-mode="reading"] .reader-stage {
330
- background: var(--openpress-color-document);
331
- }
332
-
333
- .openpress-public-viewer[data-openpress-view-mode="reading"] .reader-pages {
334
- align-items: stretch;
335
- width: 100%;
336
- max-width: none;
337
- gap: 0;
338
- padding: 0;
339
- background: var(--openpress-color-document);
340
- }
341
-
342
- .openpress-public-viewer[data-openpress-view-mode="reading"] .openpress-html-page {
343
- width: 100%;
344
- max-width: none;
345
- margin: 0;
346
- scroll-margin-top: 0;
347
- }
348
-
349
- .openpress-public-viewer[data-openpress-view-mode="reading"] .openpress-html-page__html {
350
- width: 100%;
351
- }
352
-
353
- .openpress-public-viewer[data-openpress-view-mode="reading"] .openpress-html-page__html .reader-page,
354
- .openpress-public-viewer[data-openpress-view-mode="reading"] .openpress-html-page__html .reader-page--cover,
355
- .openpress-public-viewer[data-openpress-view-mode="reading"] .openpress-html-page__html .reader-page--back-cover {
356
- width: 100%;
357
- height: auto;
358
- min-height: 0;
359
- max-height: none;
360
- margin: 0;
361
- overflow: visible;
362
- box-shadow: none;
363
- }
364
-
365
- .openpress-public-viewer[data-openpress-view-mode="reading"] .reader-page--content {
366
- background: transparent;
367
- background-image: none;
368
- }
369
-
370
- .openpress-public-viewer[data-openpress-view-mode="reading"] .reader-page--toc {
371
- min-height: min(100svh, 980px);
372
- color: var(--toc-ink, #f7f9fb);
373
- background-color: #1f2d3d;
374
- background-image: none;
375
- }
376
-
377
- .openpress-public-viewer[data-openpress-view-mode="reading"] .reader-page--content .page-frame,
378
- .openpress-public-viewer[data-openpress-view-mode="reading"] .reader-page--toc .page-frame {
379
- display: block;
380
- width: var(--openpress-reading-width);
381
- height: auto;
382
- min-height: 0;
383
- margin: 0 auto;
384
- padding: clamp(34px, 6vw, 72px) clamp(22px, 5vw, 48px);
385
- }
386
-
387
- .openpress-public-viewer[data-openpress-view-mode="reading"] .reader-page--content .page-header,
388
- .openpress-public-viewer[data-openpress-view-mode="reading"] .reader-page--content .page-footer,
389
- .openpress-public-viewer[data-openpress-view-mode="reading"] .reader-page--toc .page-header,
390
- .openpress-public-viewer[data-openpress-view-mode="reading"] .reader-page--toc .page-footer {
391
- display: none;
392
- }
393
-
394
- .openpress-public-viewer[data-openpress-view-mode="reading"] .reader-page--content .page-body,
395
- .openpress-public-viewer[data-openpress-view-mode="reading"] .reader-page--toc .page-body {
396
- width: var(--openpress-reading-measure);
397
- min-height: 0;
398
- margin: 0 auto;
399
- overflow: visible;
400
- }
401
-
402
- .openpress-public-viewer[data-openpress-view-mode="reading"] .reader-page--cover,
403
- .openpress-public-viewer[data-openpress-view-mode="reading"] .reader-page--back-cover,
404
- .openpress-public-viewer[data-openpress-view-mode="reading"] .reader-page--chapter-opener {
405
- width: 100%;
406
- min-height: min(100svh, 980px);
407
- max-height: none;
408
- }
409
-
410
- .openpress-public-viewer[data-openpress-view-mode="reading"] .reader-page--cover,
411
- .openpress-public-viewer[data-openpress-view-mode="reading"] .reader-page--back-cover {
412
- padding: clamp(42px, 9vw, 96px) clamp(28px, 7vw, 86px);
413
- }
414
-
415
- .openpress-public-viewer[data-openpress-view-mode="reading"] .cover-main,
416
- .openpress-public-viewer[data-openpress-view-mode="reading"] .back-cover-main {
417
- position: relative;
418
- right: auto;
419
- bottom: auto;
420
- left: auto;
421
- width: min(100%, 640px);
422
- max-width: none;
423
- margin-top: auto;
424
- }
425
-
426
- .openpress-public-viewer[data-openpress-view-mode="reading"] .cover-meta,
427
- .openpress-public-viewer[data-openpress-view-mode="reading"] .back-cover-meta,
428
- .openpress-public-viewer[data-openpress-view-mode="reading"] .cover-byline,
429
- .openpress-public-viewer[data-openpress-view-mode="reading"] .back-cover-byline {
430
- position: relative;
431
- inset: auto;
432
- right: auto;
433
- left: auto;
434
- }
435
-
436
- .openpress-public-viewer[data-openpress-view-mode="reading"] .cover-byline,
437
- .openpress-public-viewer[data-openpress-view-mode="reading"] .back-cover-byline {
438
- margin-top: clamp(42px, 8vw, 82px);
439
- }
440
-
441
- .openpress-public-viewer[data-openpress-view-mode="reading"] .reader-page--cover .chapter-opener-illustration,
442
- .openpress-public-viewer[data-openpress-view-mode="reading"] .reader-page--back-cover .chapter-opener-illustration {
443
- position: relative;
444
- top: auto;
445
- right: auto;
446
- width: min(100%, 420px);
447
- margin: clamp(42px, 9vw, 110px) auto clamp(26px, 6vw, 56px);
448
- }
449
-
450
- .openpress-public-viewer[data-openpress-view-mode="reading"] .reader-page--chapter-opener {
451
- display: grid;
452
- align-content: center;
453
- padding: clamp(42px, 9vw, 96px) clamp(28px, 7vw, 86px);
454
- }
455
-
456
- .openpress-public-viewer[data-openpress-view-mode="reading"] .reader-page--content h2 {
457
- margin-top: 0;
458
- font-size: clamp(2.05rem, 5vw, 3.8rem);
459
- }
460
-
461
- .openpress-public-viewer[data-openpress-view-mode="reading"] .reader-page--content h3 {
462
- margin-top: clamp(28px, 5vw, 48px);
463
- font-size: clamp(1.28rem, 3.2vw, 1.78rem);
464
- }
465
-
466
- .openpress-public-viewer[data-openpress-view-mode="reading"] .reader-page--content h4 {
467
- margin-top: clamp(22px, 4vw, 34px);
468
- font-size: clamp(1.05rem, 2.5vw, 1.25rem);
469
- }
470
-
471
- .openpress-public-viewer[data-openpress-view-mode="reading"] .reader-page--content p,
472
- .openpress-public-viewer[data-openpress-view-mode="reading"] .reader-page--content li {
473
- font-size: clamp(1rem, 2.55vw, 1.12rem);
474
- line-height: 1.9;
475
- }
476
-
477
- .openpress-public-viewer[data-openpress-view-mode="reading"] .reader-page--content pre {
478
- max-width: 100%;
479
- overflow-x: auto;
480
- overflow-y: hidden;
481
- -webkit-overflow-scrolling: touch;
482
- white-space: pre;
483
- }
484
-
485
- .openpress-public-viewer[data-openpress-view-mode="reading"] .reader-page--content pre code {
486
- min-width: max-content;
487
- white-space: pre;
488
- font-size: clamp(0.86rem, 2.45vw, 1rem);
489
- }
490
-
491
- .openpress-public-viewer[data-openpress-view-mode="reading"] .reader-page--content table {
492
- display: table;
493
- width: 100%;
494
- max-width: 100%;
495
- overflow: visible;
496
- -webkit-overflow-scrolling: touch;
497
- white-space: normal;
498
- }
499
-
500
- .openpress-public-viewer[data-openpress-view-mode="reading"] .reader-page--content figure {
501
- width: min(100%, 960px);
502
- max-width: none;
503
- margin-right: auto;
504
- margin-left: auto;
505
- overflow-x: auto;
506
- -webkit-overflow-scrolling: touch;
507
- }
508
-
509
- .openpress-public-viewer[data-openpress-view-mode="reading"] .reader-page--content figure img,
510
- .openpress-public-viewer[data-openpress-view-mode="reading"] .reader-page--content figure svg {
511
- max-width: 100%;
512
- height: auto;
513
- }
514
-
515
- @media (max-width: 899px) {
516
- .openpress-public-viewer[data-openpress-view-mode="reading"] {
517
- --openpress-reading-edge: 18px;
518
- --openpress-reading-full-bleed: calc(100dvw - (var(--openpress-reading-edge) * 2));
519
- }
520
-
521
- .openpress-public-viewer[data-openpress-view-mode="reading"] .reader-page--content .page-frame,
522
- .openpress-public-viewer[data-openpress-view-mode="reading"] .reader-page--toc .page-frame {
523
- width: 100%;
524
- padding-inline: var(--openpress-reading-edge);
525
- }
526
-
527
- .openpress-public-viewer[data-openpress-view-mode="reading"] .reader-page--content .page-body,
528
- .openpress-public-viewer[data-openpress-view-mode="reading"] .reader-page--toc .page-body {
529
- width: 100%;
530
- }
531
-
532
- .openpress-public-viewer[data-openpress-view-mode="reading"] .reader-page--content table,
533
- .openpress-public-viewer[data-openpress-view-mode="reading"] .reader-page--content figure {
534
- width: var(--openpress-reading-full-bleed);
535
- max-width: var(--openpress-reading-full-bleed);
536
- margin-inline: calc((100% - var(--openpress-reading-full-bleed)) / 2);
537
- border-color: var(--openpress-color-line);
538
- background: var(--openpress-color-block);
539
- box-sizing: border-box;
540
- }
541
-
542
- .openpress-public-viewer[data-openpress-view-mode="reading"] .reader-page--content table {
543
- display: block;
544
- padding-bottom: 8px;
545
- border: 1px solid var(--openpress-color-line-strong);
546
- border-collapse: separate;
547
- border-spacing: 0;
548
- overflow-x: auto;
549
- -webkit-overflow-scrolling: touch;
550
- white-space: nowrap;
551
- box-shadow: inset -18px 0 18px -22px rgb(31 45 61 / 40%);
552
- }
553
-
554
- .openpress-public-viewer[data-openpress-view-mode="reading"] .reader-page--content table caption {
555
- position: sticky;
556
- left: 0;
557
- display: block;
558
- width: max-content;
559
- min-width: 100%;
560
- padding: 7px 0 0;
561
- background: var(--openpress-color-block);
562
- }
563
-
564
- .openpress-public-viewer[data-openpress-view-mode="reading"] .reader-page--content table th,
565
- .openpress-public-viewer[data-openpress-view-mode="reading"] .reader-page--content table td {
566
- min-width: 116px;
567
- padding: 9px 10px;
568
- white-space: nowrap;
569
- }
570
-
571
- .openpress-public-viewer[data-openpress-view-mode="reading"] .reader-page--content figure {
572
- padding: 0;
573
- overflow-x: auto;
574
- overflow-y: hidden;
575
- box-shadow: inset -18px 0 18px -22px rgb(31 45 61 / 42%);
576
- }
577
-
578
- .openpress-public-viewer[data-openpress-view-mode="reading"] .reader-page--content figure.openpress-component-frame {
579
- overflow: visible;
580
- background: transparent;
581
- box-shadow: none;
582
- }
583
-
584
- .openpress-public-viewer[data-openpress-view-mode="reading"] .reader-page--content figure.chart-frame {
585
- padding: 12px;
586
- }
587
-
588
- .openpress-public-viewer[data-openpress-view-mode="reading"] .reader-page--content figure figcaption {
589
- position: sticky;
590
- left: 0;
591
- width: max-content;
592
- min-width: 100%;
593
- margin-top: 10px;
594
- padding-top: 2px;
595
- background: var(--openpress-color-block);
596
- }
597
-
598
- .openpress-public-viewer[data-openpress-view-mode="reading"] .linked-list-diagram__panel,
599
- .openpress-public-viewer[data-openpress-view-mode="reading"] .linked-stack-push__canvas {
600
- overflow: visible;
601
- }
602
-
603
- .openpress-public-viewer[data-openpress-view-mode="reading"] .linked-list-diagram__svg,
604
- .openpress-public-viewer[data-openpress-view-mode="reading"] .linked-stack-push__svg,
605
- .openpress-public-viewer[data-openpress-view-mode="reading"] .chart-frame svg {
606
- width: 100%;
607
- min-width: 0;
608
- max-width: 100%;
609
- }
610
-
611
- .openpress-public-viewer[data-openpress-view-mode="reading"] .list-operation-demo__canvas {
612
- overflow-x: auto;
613
- }
614
-
615
- .openpress-public-viewer[data-openpress-view-mode="reading"] .list-operation-demo__chain {
616
- min-width: max-content;
617
- }
618
- }
619
-
620
325
  .openpress-dev-pdf-status {
621
326
  display: inline-flex;
622
327
  align-items: center;
@@ -669,7 +374,7 @@
669
374
  padding: 0 22px 18px;
670
375
  }
671
376
 
672
- .openpress-dev-workspace-switcher {
377
+ .openpress-dev-control-tabs {
673
378
  display: grid;
674
379
  grid-template-columns: repeat(3, minmax(0, 1fr));
675
380
  gap: 18px;
@@ -684,7 +389,7 @@
684
389
  border-bottom: 1px solid rgb(255 255 255 / 8%);
685
390
  }
686
391
 
687
- .openpress-dev-workspace-switcher button,
392
+ .openpress-dev-control-tabs button,
688
393
  .openpress-dev-project-tabs button,
689
394
  .openpress-dev-deploy-button {
690
395
  position: relative;
@@ -696,7 +401,7 @@
696
401
  cursor: pointer;
697
402
  }
698
403
 
699
- .openpress-dev-workspace-switcher button,
404
+ .openpress-dev-control-tabs button,
700
405
  .openpress-dev-project-tabs button {
701
406
  display: inline-flex;
702
407
  align-items: center;
@@ -710,8 +415,8 @@
710
415
  text-align: left;
711
416
  }
712
417
 
713
- .openpress-dev-workspace-switcher button:hover,
714
- .openpress-dev-workspace-switcher button.is-active,
418
+ .openpress-dev-control-tabs button:hover,
419
+ .openpress-dev-control-tabs button.is-active,
715
420
  .openpress-dev-project-tabs button:hover,
716
421
  .openpress-dev-project-tabs button[aria-pressed="true"],
717
422
  .openpress-dev-deploy-button:hover:not(:disabled) {
@@ -719,7 +424,7 @@
719
424
  background: transparent;
720
425
  }
721
426
 
722
- .openpress-dev-workspace-switcher button::after,
427
+ .openpress-dev-control-tabs button::after,
723
428
  .openpress-dev-project-tabs button::after {
724
429
  position: absolute;
725
430
  right: 0;
@@ -730,12 +435,12 @@
730
435
  content: "";
731
436
  }
732
437
 
733
- .openpress-dev-workspace-switcher button.is-active::after,
438
+ .openpress-dev-control-tabs button.is-active::after,
734
439
  .openpress-dev-project-tabs button[aria-pressed="true"]::after {
735
440
  background: rgb(242 242 240 / 78%);
736
441
  }
737
442
 
738
- .openpress-dev-workspace-switcher svg,
443
+ .openpress-dev-control-tabs svg,
739
444
  .openpress-dev-project-tabs svg {
740
445
  width: 13px;
741
446
  height: 13px;
@@ -744,7 +449,7 @@
744
449
  opacity: 0.78;
745
450
  }
746
451
 
747
- .openpress-dev-workspace-switcher span,
452
+ .openpress-dev-control-tabs span,
748
453
  .openpress-dev-project-tabs span {
749
454
  overflow: hidden;
750
455
  max-width: 100%;