oasis-editor 0.0.7 → 0.0.9

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.
@@ -1,4 +1,4 @@
1
1
  import { OasisEditorAppProps } from '../OasisEditorAppProps.js';
2
2
 
3
- export type { OasisEditorLoadingOptions, OasisEditorAppUiProps, OasisEditorAppDocumentProps, OasisEditorAppRuntimeProps, OasisEditorAppProps, ToolbarLayoutMode, } from '../OasisEditorAppProps.js';
3
+ export type { OasisEditorLoadingOptions, OasisEditorAppUiProps, OasisEditorAppDocumentProps, OasisEditorAppRuntimeProps, OasisEditorAppProps, ToolbarLayoutMode, ToolbarViewMode, } from '../OasisEditorAppProps.js';
4
4
  export declare function OasisEditorApp(props?: OasisEditorAppProps): import("solid-js").JSX.Element;
@@ -6,6 +6,7 @@ import { DocumentPersistence } from '../../app/controllers/useEditorPersistence.
6
6
  import { OasisPlugin } from '../../core/plugin.js';
7
7
  import { OasisEditorClient, OasisEditorClientController } from '../../app/client/OasisEditorClient.js';
8
8
 
9
+ export type ToolbarViewMode = "ribbon" | "compact";
9
10
  export type ToolbarLayoutMode = "overflow" | "wrap";
10
11
  export interface OasisEditorLoadingOptions {
11
12
  label?: string;
@@ -17,6 +18,7 @@ export interface OasisEditorAppUiProps {
17
18
  shell?: "document" | "inline" | "balloon";
18
19
  uiVariant?: "classic" | "docs";
19
20
  toolbar?: {
21
+ view?: ToolbarViewMode;
20
22
  layout?: ToolbarLayoutMode;
21
23
  };
22
24
  showTitleBar?: boolean;
@@ -5,7 +5,7 @@ import { ToolbarHost } from '../../../components/Toolbar/state/createToolbarApi.
5
5
  import { ToolbarRegistry } from '../../../components/Toolbar/registry/ToolbarRegistry.js';
6
6
  import { MenuRegistry } from '../../../components/Menubar/menuRegistry.js';
7
7
  import { EditorLayoutParagraph, EditorState } from '../../../../core/model.js';
8
- import { ToolbarLayoutMode } from '../../../OasisEditorAppProps.js';
8
+ import { ToolbarLayoutMode, ToolbarViewMode } from '../../../OasisEditorAppProps.js';
9
9
  import { OasisEditor } from '../../../../core/plugin.js';
10
10
 
11
11
  export interface EditorWorkspaceProps {
@@ -22,6 +22,7 @@ export interface EditorWorkspaceProps {
22
22
  showMenubar: () => boolean;
23
23
  showToolbar: () => boolean;
24
24
  showOutline: () => boolean;
25
+ toolbarView: () => ToolbarViewMode;
25
26
  toolbarLayout: () => ToolbarLayoutMode;
26
27
  isReadOnly: () => boolean;
27
28
  viewportHeight: () => number | string | undefined;
@@ -15,6 +15,7 @@ export declare function createEditorUiOptions(ctx: EditorUiOptionsContext): {
15
15
  showMenubar: () => boolean;
16
16
  showToolbar: () => boolean;
17
17
  showOutline: () => boolean;
18
+ toolbarView: () => import('../../../OasisEditorAppProps.js').ToolbarViewMode;
18
19
  toolbarLayout: () => import('../../../OasisEditorAppProps.js').ToolbarLayoutMode;
19
20
  isReadOnly: () => boolean;
20
21
  useComposedShell: () => boolean;
@@ -1,12 +1,13 @@
1
1
  import { JSX } from '../../../solid-js';
2
2
  import { ToolbarHost } from '../../../state/createToolbarApi.js';
3
3
  import { ToolbarRegistry } from '../../../registry/ToolbarRegistry.js';
4
- import { ToolbarLayoutMode } from '../../../../../OasisEditorAppProps.js';
4
+ import { ToolbarLayoutMode, ToolbarViewMode } from '../../../../../OasisEditorAppProps.js';
5
5
 
6
6
  export interface ToolbarProps {
7
7
  host: () => ToolbarHost;
8
8
  registry: ToolbarRegistry;
9
9
  showFileGroup?: boolean;
10
+ view?: ToolbarViewMode;
10
11
  layout?: ToolbarLayoutMode;
11
12
  }
12
13
  /**
@@ -0,0 +1,8 @@
1
+ import { ToolbarActionApi } from '../../../../../schema/items.js';
2
+ import { RibbonGroupModel } from '../../../../ribbonModel.js';
3
+
4
+ export interface RibbonGroupProps {
5
+ group: RibbonGroupModel;
6
+ api: ToolbarActionApi;
7
+ }
8
+ export declare function RibbonGroup(props: RibbonGroupProps): import("solid-js").JSX.Element;
@@ -0,0 +1,9 @@
1
+ import { Accessor } from '../../../../solid-js';
2
+ import { RibbonTabId, ToolbarActionApi, ToolbarItem } from '../../../../../schema/items.js';
3
+
4
+ export interface RibbonPanelProps {
5
+ activeTab: Accessor<RibbonTabId>;
6
+ items: Accessor<ToolbarItem[]>;
7
+ api: ToolbarActionApi;
8
+ }
9
+ export declare function RibbonPanel(props: RibbonPanelProps): import("solid-js").JSX.Element;
@@ -0,0 +1,7 @@
1
+ import { ToolbarActionApi, ToolbarItem } from '../../../../../schema/items.js';
2
+
3
+ export interface RibbonRowProps {
4
+ items: ToolbarItem[];
5
+ api: ToolbarActionApi;
6
+ }
7
+ export declare function RibbonRow(props: RibbonRowProps): import("solid-js").JSX.Element;
@@ -0,0 +1,8 @@
1
+ import { Accessor, Setter } from '../../../../solid-js';
2
+ import { RibbonTabId } from '../../../../../schema/items.js';
3
+
4
+ export interface RibbonTabsProps {
5
+ activeTab: Accessor<RibbonTabId>;
6
+ setActiveTab: Setter<RibbonTabId>;
7
+ }
8
+ export declare function RibbonTabs(props: RibbonTabsProps): import("solid-js").JSX.Element;
@@ -0,0 +1,21 @@
1
+ import { RibbonRow, RibbonTabId, ToolbarItem } from '../../../../../schema/items.js';
2
+
3
+ export interface RibbonTabDefinition {
4
+ id: RibbonTabId;
5
+ label: string;
6
+ }
7
+ export interface RibbonGroupModel {
8
+ id: string;
9
+ label: string;
10
+ rows: Record<RibbonRow, ToolbarItem[]>;
11
+ order: number;
12
+ }
13
+ export declare const RIBBON_TAB_DEFINITIONS: RibbonTabDefinition[];
14
+ export declare const DEFAULT_RIBBON_TAB: RibbonTabId;
15
+ export declare const DEFAULT_RIBBON_GROUP = "general";
16
+ export declare const DEFAULT_RIBBON_ROW: RibbonRow;
17
+ export declare function normalizeRibbonTab(tab: ToolbarItem["tab"]): RibbonTabId;
18
+ export declare function normalizeRibbonGroup(group: ToolbarItem["group"]): string;
19
+ export declare function normalizeRibbonRow(row: ToolbarItem["row"]): RibbonRow;
20
+ export declare function ribbonGroupLabel(group: string): string;
21
+ export declare function buildRibbonGroups(items: ToolbarItem[], tab: RibbonTabId): RibbonGroupModel[];
@@ -4,6 +4,9 @@ import { CommandRef } from '../../../../../../../../core/commands/CommandRef.js'
4
4
  import { TranslationKey } from '../../../../../../../../i18n/index.js';
5
5
  import { ColorPalette } from '../../../../palette.js';
6
6
 
7
+ export declare const RIBBON_TABS: readonly ["file", "home", "insert", "draw", "layout", "references", "collaboration", "protection", "view", "plugins", "ai"];
8
+ export type RibbonTabId = (typeof RIBBON_TABS)[number];
9
+ export type RibbonRow = 1 | 2;
7
10
  /** Reactive snapshot of a command's state, as consumed by toolbar items. */
8
11
  export interface ToolbarCommandState {
9
12
  isEnabled: boolean;
@@ -41,8 +44,12 @@ export interface ItemReactiveOverrides {
41
44
  interface ToolbarItemBase extends ItemReactiveOverrides {
42
45
  id: string;
43
46
  order?: number;
47
+ /** Office-style ribbon tab placement. Missing values default to Plugins. */
48
+ tab?: RibbonTabId;
44
49
  /** Logical section id (used for grouping/ordering, not rendering layout). */
45
50
  group?: string;
51
+ /** Two-row ribbon placement. Missing values default to row 1. */
52
+ row?: RibbonRow;
46
53
  testId?: string;
47
54
  tooltipKey?: TranslationKey;
48
55
  tooltip?: string;
@@ -120,7 +127,9 @@ export interface SeparatorItem {
120
127
  type: "separator";
121
128
  id: string;
122
129
  order?: number;
130
+ tab?: RibbonTabId;
123
131
  group?: string;
132
+ row?: RibbonRow;
124
133
  isVisible?: (api: ToolbarActionApi) => boolean;
125
134
  }
126
135
  export interface GroupItem extends ToolbarItemBase {
@@ -4,7 +4,7 @@ import { ToolbarHost } from '../../../components/Toolbar/state/createToolbarApi.
4
4
  import { ToolbarRegistry } from '../../../components/Toolbar/registry/ToolbarRegistry.js';
5
5
  import { MenuRegistry } from '../../../components/Menubar/menuRegistry.js';
6
6
  import { EditorLayoutParagraph, EditorState } from '../../../../core/model.js';
7
- import { ToolbarLayoutMode } from '../../../OasisEditorAppProps.js';
7
+ import { ToolbarLayoutMode, ToolbarViewMode } from '../../../OasisEditorAppProps.js';
8
8
  import { OasisEditor } from '../../../../core/plugin.js';
9
9
 
10
10
  export interface ShellProps {
@@ -19,6 +19,7 @@ export interface ShellProps {
19
19
  showMenubar: boolean;
20
20
  showToolbar: boolean;
21
21
  showOutline: boolean;
22
+ toolbarView: ToolbarViewMode;
22
23
  toolbarLayout: ToolbarLayoutMode;
23
24
  isReadOnly: boolean;
24
25
  measuredBlockHeights: Accessor<Record<string, number>>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "oasis-editor",
3
- "version": "0.0.7",
3
+ "version": "0.0.9",
4
4
  "type": "module",
5
5
  "repository": {
6
6
  "type": "git",