@bendyline/squisq-editor-react 2.11.27 → 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.
@@ -19,9 +19,9 @@ import {
19
19
  updateReviewDecorations,
20
20
  useReview,
21
21
  useReviewState
22
- } from "../chunk-TRBNNRLK.js";
22
+ } from "../chunk-4SZ3UWSL.js";
23
23
  import "../chunk-DNEVUOBZ.js";
24
- import "../chunk-HSWWEWT4.js";
24
+ import "../chunk-WMNL2WEI.js";
25
25
 
26
26
  // src/review/proofingAdapter.ts
27
27
  import {
@@ -1,4 +1,4 @@
1
- export { h as BlockTagVisibility, k as DocumentLinkCandidate, l as DocumentLinkProvider, m as EditorActions, n as EditorColorScheme, o as EditorContextMenuContext, p as EditorContextMenuItem, q as EditorContextMenuItemVisibility, r as EditorContextMenuProvider, s as EditorContextMenuProviderProps, t as EditorContextValue, E as EditorHostMode, u as EditorInsertMenuItem, v as EditorMode, w as EditorProvider, x as EditorProviderProps, z as EditorShell, G as EditorShellProps, H as EditorState, b as EditorView, L as ImageDisplayMode, O as LayoutMode, P as MentionCandidate, Q as MentionProvider, U as PreviewPanel, V as PreviewPanelProps, W as RawEditor, Y as RawEditorProps, Z as ThemeInheritance, _ as ViewPreferences, a0 as WysiwygEditor, a1 as WysiwygEditorProps, aj as useEditorContext, ak as useEditorContextMenuItems, al as useEditorInsertMenuItems } from '../shell-xuF3vK5Z.js';
1
+ export { h as BlockTagVisibility, k as DocumentLinkCandidate, l as DocumentLinkProvider, m as EditorActions, n as EditorColorScheme, o as EditorContextMenuContext, p as EditorContextMenuItem, q as EditorContextMenuItemVisibility, r as EditorContextMenuProvider, s as EditorContextMenuProviderProps, t as EditorContextValue, E as EditorHostMode, u as EditorInsertMenuItem, v as EditorMode, w as EditorProvider, x as EditorProviderProps, z as EditorShell, G as EditorShellProps, H as EditorState, b as EditorView, L as ImageDisplayMode, O as LayoutMode, P as MentionCandidate, Q as MentionProvider, U as PreviewPanel, V as PreviewPanelProps, W as RawEditor, Y as RawEditorProps, Z as ThemeInheritance, _ as ViewPreferences, a0 as WysiwygEditor, a1 as WysiwygEditorProps, aj as useEditorContext, ak as useEditorContextMenuItems, al as useEditorInsertMenuItems } from '../shell-D9E73nri.js';
2
2
  import 'react';
3
3
  import '@bendyline/squisq/table';
4
4
  import '@bendyline/squisq-calc';
@@ -5,20 +5,20 @@ import {
5
5
  RawEditor,
6
6
  WysiwygEditor,
7
7
  useEditorContextMenuItems
8
- } from "../chunk-IRFFIMKM.js";
8
+ } from "../chunk-RQZA4BGN.js";
9
9
  import {
10
10
  EditorProvider,
11
11
  useEditorContext,
12
12
  useEditorInsertMenuItems
13
- } from "../chunk-TRBNNRLK.js";
13
+ } from "../chunk-4SZ3UWSL.js";
14
14
  import "../chunk-DNEVUOBZ.js";
15
15
  import "../chunk-V4NBQF5C.js";
16
- import "../chunk-OCQEWWHI.js";
17
- import "../chunk-HSWWEWT4.js";
18
- import "../chunk-K4Z2GIX4.js";
19
- import "../chunk-UFK47ZAI.js";
16
+ import "../chunk-KI5XQWRU.js";
17
+ import "../chunk-WMNL2WEI.js";
18
+ import "../chunk-HLU6ZBS7.js";
19
+ import "../chunk-IT3NPQ4J.js";
20
20
  import "../chunk-LRZJD5YD.js";
21
- import "../chunk-GS7QWYFT.js";
21
+ import "../chunk-UYB5CPRE.js";
22
22
  import "../chunk-DJS5I5NO.js";
23
23
  import "../chunk-ZS6G2P57.js";
24
24
  import "../chunk-DNJ6HOES.js";
@@ -1252,7 +1252,7 @@ interface EditorShellProps {
1252
1252
  minHeight?: string;
1253
1253
  /** See `minHeight`. Upper bound of the auto-grow range. */
1254
1254
  maxHeight?: string;
1255
- /** Optional MediaProvider for the Files panel. When set (even to null), a Files toggle appears in the toolbar. */
1255
+ /** Optional MediaProvider for the Attachments panel. When set (even to null), an Attachments toggle appears in the toolbar. */
1256
1256
  mediaProvider?: MediaProvider | null;
1257
1257
  /**
1258
1258
  * Processed-audio render manager for media-edit recipes (denoise,
@@ -1313,7 +1313,7 @@ interface EditorShellProps {
1313
1313
  /** Show the Files toggle in the toolbar. Defaults to true when mediaProvider is passed. */
1314
1314
  showFilesToggle?: boolean;
1315
1315
  /**
1316
- * Open the Files panel when its accessory bin becomes non-empty. The user
1316
+ * Open the Attachments panel when its accessory bin becomes non-empty. The user
1317
1317
  * can still close it normally; it opens again only when the visible count
1318
1318
  * changes. Defaults to false.
1319
1319
  */
@@ -1331,7 +1331,7 @@ interface EditorShellProps {
1331
1331
  */
1332
1332
  showInsertControls?: boolean;
1333
1333
  /**
1334
- * Whether the Files panel offers browser downloads for its binary entries.
1334
+ * Whether the Attachments panel offers browser downloads for its binary entries.
1335
1335
  * Defaults to true. Pass false to remove the built-in download affordance.
1336
1336
  */
1337
1337
  allowBinaryDownloads?: boolean;
@@ -8374,7 +8374,7 @@
8374
8374
  border-color: var(--squisq-accent);
8375
8375
  box-shadow: 0 0 0 1px var(--squisq-focus-ring);
8376
8376
  }
8377
- .squisq-find-field > i {
8377
+ .squisq-find-field > :is(i, .squisq-icon) {
8378
8378
  margin-left: 8px;
8379
8379
  color: var(--squisq-text-muted);
8380
8380
  font-size: 11px;
@@ -8580,16 +8580,16 @@
8580
8580
  pointer-events: none;
8581
8581
  z-index: 1;
8582
8582
  }
8583
- .squisq-toolbar-button > i {
8583
+ .squisq-toolbar-button > :is(i, .squisq-icon) {
8584
8584
  font-size: 15px;
8585
8585
  line-height: 1;
8586
8586
  }
8587
- .squisq-toolbar-button > i,
8587
+ .squisq-toolbar-button > :is(i, .squisq-icon),
8588
8588
  .squisq-toolbar-button > .squisq-toolbar-text-glyph {
8589
8589
  color: var(--squisq-toolbar-icon);
8590
8590
  }
8591
- .squisq-toolbar-button:hover > i,
8592
- .squisq-toolbar-button--active > i,
8591
+ .squisq-toolbar-button:hover > :is(i, .squisq-icon),
8592
+ .squisq-toolbar-button--active > :is(i, .squisq-icon),
8593
8593
  .squisq-toolbar-button:hover > .squisq-toolbar-text-glyph,
8594
8594
  .squisq-toolbar-button--active > .squisq-toolbar-text-glyph {
8595
8595
  color: inherit;
@@ -8762,7 +8762,7 @@
8762
8762
  gap: 6px;
8763
8763
  padding: 2px 8px 0;
8764
8764
  }
8765
- .squisq-dictation-button[aria-busy=true] > i {
8765
+ .squisq-dictation-button[aria-busy=true] > :is(i, .squisq-icon) {
8766
8766
  animation: squisq-dictation-pulse 1.2s ease-in-out infinite;
8767
8767
  }
8768
8768
  .squisq-dictation-meter {
@@ -8864,7 +8864,7 @@
8864
8864
  }
8865
8865
  @media (prefers-reduced-motion: reduce) {
8866
8866
  .squisq-dictation-interim::before,
8867
- .squisq-dictation-button[aria-busy=true] > i {
8867
+ .squisq-dictation-button[aria-busy=true] > :is(i, .squisq-icon) {
8868
8868
  animation: none;
8869
8869
  }
8870
8870
  .squisq-dictation-meter-bar {
@@ -9537,6 +9537,15 @@
9537
9537
  color: var(--squisq-text);
9538
9538
  background: var(--squisq-surface);
9539
9539
  }
9540
+ :where(.squisq-editor-shell, [class*=squisq-]) :where(button, input, select, textarea) {
9541
+ font-family: inherit;
9542
+ }
9543
+ .squisq-icon {
9544
+ width: 1.15em;
9545
+ height: 1.15em;
9546
+ flex-shrink: 0;
9547
+ vertical-align: -0.2em;
9548
+ }
9540
9549
  .squisq-editor-header {
9541
9550
  border-bottom: 1px solid var(--squisq-border-subtle);
9542
9551
  background: var(--squisq-surface-subtle);
@@ -9894,12 +9903,12 @@
9894
9903
  margin: 0 auto;
9895
9904
  outline: none;
9896
9905
  min-height: 100%;
9897
- color: var(--squisq-theme-text, #1f2937);
9906
+ color: var(--squisq-theme-text, var(--squisq-text));
9898
9907
  background: var(--squisq-theme-bg, var(--squisq-surface));
9899
9908
  box-shadow: 0 2px 14px rgba(0, 0, 0, 0.12);
9900
9909
  font-family: var(--squisq-theme-body-font, var(--squisq-write-body-font, inherit));
9901
9910
  font-size: var(--squisq-write-text-size, inherit);
9902
- caret-color: var(--squisq-theme-text, #1f2937);
9911
+ caret-color: var(--squisq-theme-text, var(--squisq-text));
9903
9912
  cursor: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='16' height='22' viewBox='0 0 16 22'><g fill='none' stroke-linecap='round'><path d='M5 3 L11 3 M5 19 L11 19 M8 3 L8 19' stroke='white' stroke-width='3.2'/><path d='M5 3 L11 3 M5 19 L11 19 M8 3 L8 19' stroke='%231f2937' stroke-width='1.4'/></g></svg>") 8 11, text;
9904
9913
  }
9905
9914
  .squisq-wysiwyg-editor .squisq-video-node {
@@ -10240,7 +10249,7 @@
10240
10249
  .squisq-preview-seg-btn--icon svg {
10241
10250
  display: block;
10242
10251
  }
10243
- .squisq-preview-seg-btn--icon > i {
10252
+ .squisq-preview-seg-btn--icon > :is(i, .squisq-icon) {
10244
10253
  font-size: 15px;
10245
10254
  line-height: 1;
10246
10255
  }
@@ -14836,7 +14845,7 @@ button.squisq-view-menu-radio-row:focus-visible {
14836
14845
  stroke-linecap: round;
14837
14846
  stroke-linejoin: round;
14838
14847
  }
14839
- .squisq-transform-menu-action-icon > i {
14848
+ .squisq-transform-menu-action-icon > :is(i, .squisq-icon) {
14840
14849
  line-height: 1;
14841
14850
  }
14842
14851
  .squisq-transform-menu-action-copy {
@@ -14940,6 +14949,119 @@ button.squisq-view-menu-radio-row:focus-visible {
14940
14949
  color: var(--squisq-text-soft);
14941
14950
  }
14942
14951
 
14952
+ /* src/styles/document-tray.css */
14953
+ .squisq-wysiwyg-editor .squisq-document-tray-source {
14954
+ display: none !important;
14955
+ }
14956
+ .squisq-document-tray {
14957
+ max-width: 800px;
14958
+ margin: 0 auto;
14959
+ padding: 14px 24px;
14960
+ color: var(--squisq-text);
14961
+ background: var(--squisq-surface-subtle);
14962
+ border-bottom: 1px solid var(--squisq-border);
14963
+ font: 13px/1.4 var(--squisq-ux-font, system-ui, sans-serif);
14964
+ }
14965
+ .squisq-document-tray-heading {
14966
+ display: flex;
14967
+ flex-wrap: wrap;
14968
+ align-items: baseline;
14969
+ gap: 4px 12px;
14970
+ margin-bottom: 8px;
14971
+ font-weight: 600;
14972
+ }
14973
+ .squisq-document-tray-hint {
14974
+ color: var(--squisq-text-muted);
14975
+ font-size: 11px;
14976
+ font-weight: 400;
14977
+ }
14978
+ .squisq-document-tray-items {
14979
+ display: flex;
14980
+ flex-wrap: wrap;
14981
+ align-items: start;
14982
+ gap: 8px;
14983
+ }
14984
+ .squisq-document-tray-item {
14985
+ min-width: 0;
14986
+ max-width: 100%;
14987
+ }
14988
+ .squisq-document-tray-item[data-expanded] {
14989
+ width: 100%;
14990
+ }
14991
+ .squisq-document-tray-pill {
14992
+ display: inline-flex;
14993
+ align-items: center;
14994
+ gap: 8px;
14995
+ max-width: 100%;
14996
+ padding: 6px 12px;
14997
+ border: 1px solid var(--squisq-border);
14998
+ border-radius: 18px;
14999
+ background: var(--squisq-surface);
15000
+ color: var(--squisq-text-soft);
15001
+ font: inherit;
15002
+ cursor: pointer;
15003
+ }
15004
+ .squisq-document-tray-pill:hover {
15005
+ background: var(--squisq-surface-hover);
15006
+ }
15007
+ .squisq-document-tray-pill[aria-expanded=true] {
15008
+ background: var(--squisq-accent-soft);
15009
+ border-color: var(--squisq-accent-border);
15010
+ color: var(--squisq-accent-strong);
15011
+ }
15012
+ .squisq-document-tray-pill:focus-visible,
15013
+ .squisq-document-tray-detail button:focus-visible {
15014
+ outline: 2px solid var(--squisq-accent);
15015
+ outline-offset: 2px;
15016
+ }
15017
+ .squisq-document-tray-pill-label,
15018
+ .squisq-document-tray-detail > span {
15019
+ overflow: hidden;
15020
+ text-overflow: ellipsis;
15021
+ white-space: nowrap;
15022
+ }
15023
+ .squisq-document-tray-chevron {
15024
+ flex-shrink: 0;
15025
+ }
15026
+ .squisq-document-tray-panel {
15027
+ margin-top: 8px;
15028
+ padding: 12px;
15029
+ border: 1px solid var(--squisq-border);
15030
+ border-radius: 8px;
15031
+ background: var(--squisq-surface);
15032
+ }
15033
+ .squisq-document-tray-panel audio,
15034
+ .squisq-document-tray-panel video {
15035
+ display: block;
15036
+ width: 100%;
15037
+ max-height: 360px;
15038
+ }
15039
+ .squisq-document-tray-panel .squisq-video-placement-toolbar {
15040
+ flex-wrap: wrap;
15041
+ }
15042
+ .squisq-document-tray-detail {
15043
+ display: flex;
15044
+ align-items: center;
15045
+ justify-content: space-between;
15046
+ gap: 12px;
15047
+ margin-top: 8px;
15048
+ color: var(--squisq-text-muted);
15049
+ font-size: 11px;
15050
+ }
15051
+ .squisq-document-tray-detail button {
15052
+ flex-shrink: 0;
15053
+ border: 0;
15054
+ border-radius: 4px;
15055
+ padding: 4px 6px;
15056
+ background: transparent;
15057
+ color: var(--squisq-danger-strong);
15058
+ font: inherit;
15059
+ cursor: pointer;
15060
+ }
15061
+ .squisq-document-tray-detail button:hover {
15062
+ background: var(--squisq-danger-soft);
15063
+ }
15064
+
14943
15065
  /* src/styles/code-context.css */
14944
15066
  .squisq-ccx-zone {
14945
15067
  z-index: 10;
@@ -19448,6 +19570,16 @@ button.squisq-ascii-timeline-track-name:focus-visible {
19448
19570
  background: var(--squisq-text-faint);
19449
19571
  }
19450
19572
 
19573
+ /* src/styles/widget-error.css */
19574
+ .squisq-widget-error {
19575
+ margin: 0.5em 0;
19576
+ padding: 0.75em 1em;
19577
+ border: 1px dashed var(--squisq-border);
19578
+ border-radius: 6px;
19579
+ color: var(--squisq-text-muted);
19580
+ font-size: 0.875em;
19581
+ }
19582
+
19451
19583
  /* src/scene/scene.css */
19452
19584
  .squisq-scene-root {
19453
19585
  position: relative;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bendyline/squisq-editor-react",
3
- "version": "2.11.27",
3
+ "version": "2.12.0",
4
4
  "description": "React editor shell with raw/WYSIWYG/preview modes for Squisq documents",
5
5
  "license": "MIT",
6
6
  "author": "Bendyline",
@@ -102,12 +102,12 @@
102
102
  }
103
103
  },
104
104
  "dependencies": {
105
- "@bendyline/squisq": "2.11.20",
105
+ "@bendyline/squisq": "2.12.0",
106
106
  "@bendyline/squisq-calc": "2.11.2",
107
- "@bendyline/squisq-formats": "2.6.21",
108
- "@bendyline/squisq-grid-react": "2.11.22",
109
- "@bendyline/squisq-react": "2.11.25",
110
- "@bendyline/squisq-video-react": "2.4.29",
107
+ "@bendyline/squisq-formats": "2.7.0",
108
+ "@bendyline/squisq-grid-react": "2.11.23",
109
+ "@bendyline/squisq-react": "2.12.0",
110
+ "@bendyline/squisq-video-react": "2.5.0",
111
111
  "@fortawesome/fontawesome-free": "7.3.1",
112
112
  "@tiptap/core": "2.27.3",
113
113
  "@tiptap/extension-heading": "2.27.3",
@@ -125,6 +125,7 @@
125
125
  "@tiptap/react": "2.27.3",
126
126
  "@tiptap/starter-kit": "2.27.3",
127
127
  "@tiptap/suggestion": "2.27.3",
128
+ "lucide-react": "1.52.0",
128
129
  "mermaid": "11.17.2",
129
130
  "type-fest": "4.41.0"
130
131
  },
@@ -1,9 +0,0 @@
1
- // src/Icon.tsx
2
- import { jsx } from "react/jsx-runtime";
3
- function Icon({ icon, className, style }) {
4
- return /* @__PURE__ */ jsx("i", { className: className ? `${icon} ${className}` : icon, style, "aria-hidden": "true" });
5
- }
6
-
7
- export {
8
- Icon
9
- };