@ship-ui/core 0.22.14 → 0.22.15

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 (72) hide show
  1. package/README.md +46 -0
  2. package/assets/mcp/components.json +578 -1
  3. package/bin/src/scanner.zig +9 -18
  4. package/fesm2022/ship-ui-core-sh-form-field-experimental.mjs +17 -2
  5. package/fesm2022/ship-ui-core-sh-form-field-experimental.mjs.map +1 -1
  6. package/fesm2022/ship-ui-core-ship-a11y-keybindings.mjs +433 -0
  7. package/fesm2022/ship-ui-core-ship-a11y-keybindings.mjs.map +1 -0
  8. package/fesm2022/ship-ui-core-ship-accordion.mjs +1 -0
  9. package/fesm2022/ship-ui-core-ship-accordion.mjs.map +1 -1
  10. package/fesm2022/ship-ui-core-ship-alert.mjs +3 -2
  11. package/fesm2022/ship-ui-core-ship-alert.mjs.map +1 -1
  12. package/fesm2022/ship-ui-core-ship-blueprint.mjs +14 -9
  13. package/fesm2022/ship-ui-core-ship-blueprint.mjs.map +1 -1
  14. package/fesm2022/ship-ui-core-ship-checkbox.mjs +16 -14
  15. package/fesm2022/ship-ui-core-ship-checkbox.mjs.map +1 -1
  16. package/fesm2022/ship-ui-core-ship-color-picker.mjs +3 -1
  17. package/fesm2022/ship-ui-core-ship-color-picker.mjs.map +1 -1
  18. package/fesm2022/ship-ui-core-ship-datepicker.mjs +51 -29
  19. package/fesm2022/ship-ui-core-ship-datepicker.mjs.map +1 -1
  20. package/fesm2022/ship-ui-core-ship-dialog.mjs +10 -5
  21. package/fesm2022/ship-ui-core-ship-dialog.mjs.map +1 -1
  22. package/fesm2022/ship-ui-core-ship-divider.mjs +4 -2
  23. package/fesm2022/ship-ui-core-ship-divider.mjs.map +1 -1
  24. package/fesm2022/ship-ui-core-ship-editor.mjs +2673 -0
  25. package/fesm2022/ship-ui-core-ship-editor.mjs.map +1 -0
  26. package/fesm2022/ship-ui-core-ship-icon.mjs +2 -2
  27. package/fesm2022/ship-ui-core-ship-icon.mjs.map +1 -1
  28. package/fesm2022/ship-ui-core-ship-list.mjs +4 -2
  29. package/fesm2022/ship-ui-core-ship-list.mjs.map +1 -1
  30. package/fesm2022/ship-ui-core-ship-menu.mjs +8 -5
  31. package/fesm2022/ship-ui-core-ship-menu.mjs.map +1 -1
  32. package/fesm2022/ship-ui-core-ship-popover.mjs +10 -5
  33. package/fesm2022/ship-ui-core-ship-popover.mjs.map +1 -1
  34. package/fesm2022/ship-ui-core-ship-progress-bar.mjs +5 -1
  35. package/fesm2022/ship-ui-core-ship-progress-bar.mjs.map +1 -1
  36. package/fesm2022/ship-ui-core-ship-radio.mjs +16 -14
  37. package/fesm2022/ship-ui-core-ship-radio.mjs.map +1 -1
  38. package/fesm2022/ship-ui-core-ship-select.mjs +9 -9
  39. package/fesm2022/ship-ui-core-ship-select.mjs.map +1 -1
  40. package/fesm2022/ship-ui-core-ship-sidenav.mjs +2 -2
  41. package/fesm2022/ship-ui-core-ship-sidenav.mjs.map +1 -1
  42. package/fesm2022/ship-ui-core-ship-spinner.mjs +3 -1
  43. package/fesm2022/ship-ui-core-ship-spinner.mjs.map +1 -1
  44. package/fesm2022/ship-ui-core-ship-spotlight.mjs +77 -24
  45. package/fesm2022/ship-ui-core-ship-spotlight.mjs.map +1 -1
  46. package/fesm2022/ship-ui-core-ship-table.mjs +94 -119
  47. package/fesm2022/ship-ui-core-ship-table.mjs.map +1 -1
  48. package/fesm2022/ship-ui-core-ship-theme-toggle.mjs +2 -2
  49. package/fesm2022/ship-ui-core-ship-theme-toggle.mjs.map +1 -1
  50. package/fesm2022/ship-ui-core-ship-toggle-card.mjs +24 -3
  51. package/fesm2022/ship-ui-core-ship-toggle-card.mjs.map +1 -1
  52. package/fesm2022/ship-ui-core-ship-toggle.mjs +16 -14
  53. package/fesm2022/ship-ui-core-ship-toggle.mjs.map +1 -1
  54. package/fesm2022/ship-ui-core-ship-tree.mjs +2 -2
  55. package/fesm2022/ship-ui-core-ship-tree.mjs.map +1 -1
  56. package/fesm2022/ship-ui-core-ship-virtual-scroll.mjs +2 -2
  57. package/fesm2022/ship-ui-core-ship-virtual-scroll.mjs.map +1 -1
  58. package/fesm2022/ship-ui-core.mjs +36 -23
  59. package/fesm2022/ship-ui-core.mjs.map +1 -1
  60. package/package.json +33 -2
  61. package/types/ship-ui-core-sh-form-field-experimental.d.ts +2 -0
  62. package/types/ship-ui-core-ship-a11y-keybindings.d.ts +102 -0
  63. package/types/ship-ui-core-ship-blueprint.d.ts +1 -1
  64. package/types/ship-ui-core-ship-checkbox.d.ts +2 -1
  65. package/types/ship-ui-core-ship-editor.d.ts +168 -0
  66. package/types/ship-ui-core-ship-radio.d.ts +2 -1
  67. package/types/ship-ui-core-ship-spotlight.d.ts +1 -1
  68. package/types/ship-ui-core-ship-table.d.ts +1 -0
  69. package/types/ship-ui-core-ship-toggle-card.d.ts +1 -0
  70. package/types/ship-ui-core-ship-toggle.d.ts +2 -1
  71. package/types/ship-ui-core.d.ts +3 -0
  72. package/bin/ship-fg-scanner +0 -0
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@ship-ui/core",
3
3
  "license": "MIT",
4
- "version": "0.22.14",
4
+ "version": "0.22.15",
5
5
  "peerDependencies": {
6
6
  "@angular/common": ">=20",
7
7
  "@angular/core": ">=20",
@@ -56,7 +56,30 @@
56
56
  "warning-octagon",
57
57
  "warning",
58
58
  "question",
59
- "plus"
59
+ "plus",
60
+ "text-b",
61
+ "text-italic",
62
+ "text-underline",
63
+ "text-strikethrough",
64
+ "eraser",
65
+ "text-h-one",
66
+ "text-h-two",
67
+ "text-h-three",
68
+ "paragraph",
69
+ "quotes",
70
+ "code",
71
+ "list-bullets",
72
+ "list-numbers",
73
+ "text-align-left",
74
+ "text-align-center",
75
+ "text-align-right",
76
+ "link",
77
+ "image",
78
+ "minus",
79
+ "arrow-u-up-left",
80
+ "arrow-u-up-right",
81
+ "terminal",
82
+ "article"
60
83
  ],
61
84
  "exports": {
62
85
  ".": {
@@ -79,6 +102,10 @@
79
102
  "types": "./types/ship-ui-core-sh-form-field-experimental.d.ts",
80
103
  "default": "./fesm2022/ship-ui-core-sh-form-field-experimental.mjs"
81
104
  },
105
+ "./ship-a11y-keybindings": {
106
+ "types": "./types/ship-ui-core-ship-a11y-keybindings.d.ts",
107
+ "default": "./fesm2022/ship-ui-core-ship-a11y-keybindings.mjs"
108
+ },
82
109
  "./ship-accordion": {
83
110
  "types": "./types/ship-ui-core-ship-accordion.d.ts",
84
111
  "default": "./fesm2022/ship-ui-core-ship-accordion.mjs"
@@ -127,6 +154,10 @@
127
154
  "types": "./types/ship-ui-core-ship-divider.d.ts",
128
155
  "default": "./fesm2022/ship-ui-core-ship-divider.mjs"
129
156
  },
157
+ "./ship-editor": {
158
+ "types": "./types/ship-ui-core-ship-editor.d.ts",
159
+ "default": "./fesm2022/ship-ui-core-ship-editor.mjs"
160
+ },
130
161
  "./ship-event-card": {
131
162
  "types": "./types/ship-ui-core-ship-event-card.d.ts",
132
163
  "default": "./fesm2022/ship-ui-core-ship-event-card.mjs"
@@ -1,8 +1,10 @@
1
1
  import * as _angular_core from '@angular/core';
2
2
 
3
3
  declare class ShipFormFieldExperimental {
4
+ #private;
4
5
  firstInput: _angular_core.WritableSignal<string | undefined>;
5
6
  hello: _angular_core.EffectRef;
7
+ constructor();
6
8
  myClick(): void;
7
9
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<ShipFormFieldExperimental, never>;
8
10
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<ShipFormFieldExperimental, "sh-form-field-experimental", never, {}, {}, never, ["*"], true, never>;
@@ -0,0 +1,102 @@
1
+ import * as _angular_core from '@angular/core';
2
+ import { InjectionToken } from '@angular/core';
3
+
4
+ declare const DEFAULT_KEYBINDINGS: Record<string, string>;
5
+ declare class ShipA11yKeybindingsService {
6
+ #private;
7
+ /**
8
+ * Returns true if the platform is running on macOS.
9
+ */
10
+ get isMac(): boolean;
11
+ constructor();
12
+ /**
13
+ * Registers default shortcuts for actions.
14
+ * If an override already exists for a given action, the override takes precedence.
15
+ */
16
+ registerDefaults(defaults: Record<string, string>): void;
17
+ /**
18
+ * Registers overrides for actions. Overwrites any existing or default bindings.
19
+ */
20
+ registerOverrides(overrides: Record<string, string>): void;
21
+ /**
22
+ * Retrieves the active shortcut string for a registered action.
23
+ */
24
+ getShortcut(action: string): string | undefined;
25
+ /**
26
+ * Retrieves the default shortcut string for a registered action.
27
+ */
28
+ getDefaultShortcut(action: string): string | undefined;
29
+ /**
30
+ * Gets a formatted, user-friendly shortcut string for display.
31
+ * E.g. 'ctrlOrCmd+Shift+KeyK' -> '⌘⇧K' on macOS, 'Ctrl+Shift+K' on Windows/Linux.
32
+ * Supports comma-separated multiple shortcuts (e.g. 'ArrowRight, d' -> 'ArrowRight, D').
33
+ */
34
+ getDisplayShortcut(action: string): string | undefined;
35
+ /**
36
+ * Checks if a KeyboardEvent matches the configured keybinding for a given action.
37
+ * Supports comma-separated multiple shortcuts (e.g. 'ArrowRight, d').
38
+ */
39
+ matches(event: KeyboardEvent, action: string): boolean;
40
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ShipA11yKeybindingsService, never>;
41
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<ShipA11yKeybindingsService>;
42
+ }
43
+
44
+ declare class ShipA11yKeybindingsDirective {
45
+ #private;
46
+ /**
47
+ * The registered action name (e.g. 'table.next-page', 'dialog.close').
48
+ */
49
+ shA11yKeybinding: _angular_core.InputSignal<string>;
50
+ /**
51
+ * Defines whether the keybinding listener is 'local' (host element keydown) or 'global' (window keydown).
52
+ * Default is 'local'.
53
+ */
54
+ mode: _angular_core.InputSignal<"global" | "local">;
55
+ /**
56
+ * Whether to prevent the default action when the keybinding matches.
57
+ */
58
+ preventDefault: _angular_core.InputSignal<boolean>;
59
+ /**
60
+ * Whether to stop event propagation when the keybinding matches.
61
+ */
62
+ stopPropagation: _angular_core.InputSignal<boolean>;
63
+ /**
64
+ * Event emitted when the keybinding is triggered.
65
+ */
66
+ triggered: _angular_core.OutputEmitterRef<KeyboardEvent>;
67
+ constructor();
68
+ /**
69
+ * Local keydown listener when mode is 'local'
70
+ */
71
+ onKeyDown(event: KeyboardEvent): void;
72
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ShipA11yKeybindingsDirective, never>;
73
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<ShipA11yKeybindingsDirective, "[shA11yKeybinding]", never, { "shA11yKeybinding": { "alias": "shA11yKeybinding"; "required": true; "isSignal": true; }; "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "preventDefault": { "alias": "preventDefault"; "required": false; "isSignal": true; }; "stopPropagation": { "alias": "stopPropagation"; "required": false; "isSignal": true; }; }, { "triggered": "triggered"; }, never, never, true, never>;
74
+ }
75
+
76
+ declare const SHIP_A11Y_KEYBINDINGS_OVERRIDE: InjectionToken<Record<string, string>>;
77
+
78
+ interface ParsedKeybinding {
79
+ ctrlKey: boolean;
80
+ metaKey: boolean;
81
+ altKey: boolean;
82
+ shiftKey: boolean;
83
+ key?: string;
84
+ code?: string;
85
+ }
86
+ /**
87
+ * Parses a keybinding shortcut string shorthand into a structured ParsedKeybinding object.
88
+ * Supporting modifiers: ctrlOrCmd (OS adaptive), ctrl, cmd/meta, alt/option, shift.
89
+ */
90
+ declare function parseKeybinding(shorthand: string, isMacPlatform: boolean): ParsedKeybinding;
91
+ /**
92
+ * Checks if a KeyboardEvent matches a ParsedKeybinding structure.
93
+ */
94
+ declare function matchKeybinding(event: KeyboardEvent, parsed: ParsedKeybinding): boolean;
95
+ /**
96
+ * Formats a shorthand shortcut string into an OS-specific user-friendly string for display.
97
+ * E.g. 'ctrlOrCmd+Shift+KeyK' -> '⌘⇧K' on macOS, and 'Ctrl+Shift+K' on Windows/Linux.
98
+ */
99
+ declare function formatShortcut(shorthand: string, isMacPlatform: boolean): string;
100
+
101
+ export { DEFAULT_KEYBINDINGS, SHIP_A11Y_KEYBINDINGS_OVERRIDE, ShipA11yKeybindingsDirective, ShipA11yKeybindingsService, formatShortcut, matchKeybinding, parseKeybinding };
102
+ export type { ParsedKeybinding };
@@ -65,7 +65,7 @@ declare class ShipBlueprint implements AfterViewInit, OnDestroy {
65
65
  ngOnDestroy(): void;
66
66
  onMouseUp(event: MouseEvent): void;
67
67
  onClick(event: MouseEvent): void;
68
- onEscape(): void;
68
+ onDocumentKeyDown(event: KeyboardEvent): void;
69
69
  onMouseMove(event: MouseEvent): void;
70
70
  onTouchMove(event: TouchEvent): void;
71
71
  onDocumentTouchEnd(event: TouchEvent): void;
@@ -2,6 +2,7 @@ import * as _angular_core from '@angular/core';
2
2
  import { ElementRef } from '@angular/core';
3
3
 
4
4
  declare class ShipCheckbox {
5
+ #private;
5
6
  private readonly _elementRef;
6
7
  internalInput: _angular_core.Signal<ElementRef<HTMLInputElement> | undefined>;
7
8
  projectedInputs: _angular_core.Signal<HTMLInputElement[]>;
@@ -14,7 +15,7 @@ declare class ShipCheckbox {
14
15
  noInternalInput: _angular_core.InputSignal<boolean>;
15
16
  protected onInternalInputChange(event: Event): void;
16
17
  hostClasses: _angular_core.Signal<string>;
17
- protected onEnter(event: Event): void;
18
+ protected onKeyDown(event: KeyboardEvent): void;
18
19
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<ShipCheckbox, never>;
19
20
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<ShipCheckbox, "sh-checkbox", never, { "checked": { "alias": "checked"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "noInternalInput": { "alias": "noInternalInput"; "required": false; "isSignal": true; }; }, { "checked": "checkedChange"; }, never, ["*"], true, never>;
20
21
  }
@@ -0,0 +1,168 @@
1
+ import * as _angular_core from '@angular/core';
2
+ import { OnInit, OnDestroy, AfterViewInit, ElementRef } from '@angular/core';
3
+ import { ControlValueAccessor } from '@angular/forms';
4
+
5
+ interface ShipEditorCommand {
6
+ id: string;
7
+ label: string;
8
+ icon: string;
9
+ description?: string;
10
+ action: (editor: ShipEditor) => void;
11
+ }
12
+ interface CaretState {
13
+ startPath: number[];
14
+ startOffset: number;
15
+ endPath: number[];
16
+ endOffset: number;
17
+ }
18
+ interface ShipEditorMark {
19
+ type: 'bold' | 'italic' | 'underline' | 'strike' | 'link' | 'code';
20
+ attrs?: {
21
+ href?: string;
22
+ target?: string;
23
+ };
24
+ }
25
+ interface ShipEditorInlineNode {
26
+ type: 'text';
27
+ text: string;
28
+ marks?: ShipEditorMark[];
29
+ }
30
+ interface ShipEditorBlock {
31
+ type: 'paragraph' | 'heading' | 'bullet-list' | 'ordered-list' | 'list-item' | 'code-block' | 'quote' | 'image' | 'hr';
32
+ attrs?: {
33
+ level?: number;
34
+ src?: string;
35
+ alt?: string;
36
+ language?: string;
37
+ align?: 'left' | 'center' | 'right';
38
+ mode?: 'content' | 'theater' | 'float' | 'custom';
39
+ size?: 'auto' | 'small' | 'medium' | 'large';
40
+ };
41
+ content?: ShipEditorInlineNode[] | ShipEditorBlock[];
42
+ }
43
+ type ShipEditorDocument = ShipEditorBlock[];
44
+ type ShipEditorValue = string | ShipEditorDocument | null;
45
+ interface ShipEditorHtmlDocument {
46
+ execCommand(commandId: string, showUI?: boolean, value?: string): boolean;
47
+ queryCommandState(commandId: string): boolean;
48
+ queryCommandEnabled(commandId: string): boolean;
49
+ }
50
+ declare class ShipEditor implements ControlValueAccessor, OnInit, OnDestroy, AfterViewInit {
51
+ #private;
52
+ editorRef: _angular_core.Signal<ElementRef<HTMLDivElement> | undefined>;
53
+ codeEditorRef: _angular_core.Signal<ElementRef<HTMLTextAreaElement> | undefined>;
54
+ uploadBtn: _angular_core.Signal<ElementRef<HTMLButtonElement> | undefined>;
55
+ imageInput: _angular_core.Signal<ElementRef<HTMLInputElement> | undefined>;
56
+ linkInput: _angular_core.Signal<ElementRef<HTMLInputElement> | undefined>;
57
+ value: _angular_core.ModelSignal<string | ShipEditorDocument | null>;
58
+ format: _angular_core.InputSignal<"json" | "html" | "markdown">;
59
+ placeholder: _angular_core.InputSignal<string>;
60
+ readonly: _angular_core.InputSignal<boolean>;
61
+ toolbar: _angular_core.InputSignal<boolean>;
62
+ color: _angular_core.InputSignal<"" | "primary" | "accent" | "warn" | "error" | "success" | null>;
63
+ variant: _angular_core.InputSignal<"base" | "type-b" | null>;
64
+ customCommands: _angular_core.InputSignal<ShipEditorCommand[]>;
65
+ showSlashMenu: _angular_core.WritableSignal<boolean>;
66
+ slashSearchQuery: _angular_core.WritableSignal<string>;
67
+ slashMenuTop: _angular_core.WritableSignal<number>;
68
+ slashMenuLeft: _angular_core.WritableSignal<number>;
69
+ defaultCommands: _angular_core.Signal<ShipEditorCommand[]>;
70
+ slashCommands: _angular_core.InputSignal<boolean | string[]>;
71
+ allCommands: _angular_core.Signal<ShipEditorCommand[]>;
72
+ enabledCommands: _angular_core.Signal<ShipEditorCommand[]>;
73
+ hasSlashCommands: _angular_core.Signal<boolean>;
74
+ filteredCommands: _angular_core.Signal<ShipEditorCommand[]>;
75
+ showFormats: _angular_core.InputSignal<boolean>;
76
+ showBlocks: _angular_core.InputSignal<boolean>;
77
+ showLists: _angular_core.InputSignal<boolean>;
78
+ showAlignments: _angular_core.InputSignal<boolean>;
79
+ showInsertions: _angular_core.InputSignal<boolean>;
80
+ showHistory: _angular_core.InputSignal<boolean>;
81
+ customUpload: _angular_core.InputSignal<boolean>;
82
+ imageUploadEnabled: _angular_core.InputSignal<boolean>;
83
+ imageUpload: _angular_core.OutputEmitterRef<File>;
84
+ imgToolbarTop: _angular_core.WritableSignal<number>;
85
+ imgToolbarLeft: _angular_core.WritableSignal<number>;
86
+ imgMode: _angular_core.WritableSignal<"content" | "theater" | "float" | "custom">;
87
+ imgSize: _angular_core.WritableSignal<"auto" | "small" | "medium" | "large">;
88
+ viewMode: _angular_core.WritableSignal<"code" | "design">;
89
+ isFocused: _angular_core.WritableSignal<boolean>;
90
+ showLinkModal: _angular_core.WritableSignal<boolean>;
91
+ showImageModal: _angular_core.WritableSignal<boolean>;
92
+ rawCodeValue: _angular_core.WritableSignal<string>;
93
+ showBlockMenu: _angular_core.WritableSignal<boolean>;
94
+ isBold: _angular_core.WritableSignal<boolean>;
95
+ isItalic: _angular_core.WritableSignal<boolean>;
96
+ isUnderline: _angular_core.WritableSignal<boolean>;
97
+ isStrike: _angular_core.WritableSignal<boolean>;
98
+ align: _angular_core.WritableSignal<"left" | "center" | "right">;
99
+ activeBlock: _angular_core.WritableSignal<string>;
100
+ canUndo: _angular_core.WritableSignal<boolean>;
101
+ canRedo: _angular_core.WritableSignal<boolean>;
102
+ charCount: _angular_core.WritableSignal<number>;
103
+ wordCount: _angular_core.WritableSignal<number>;
104
+ onChange: (value: ShipEditorValue) => void;
105
+ onTouched: () => void;
106
+ hostClasses: _angular_core.Signal<string>;
107
+ constructor();
108
+ ngOnInit(): void;
109
+ ngAfterViewInit(): void;
110
+ ngOnDestroy(): void;
111
+ writeValue(obj: ShipEditorValue): void;
112
+ registerOnChange(fn: (value: ShipEditorValue) => void): void;
113
+ registerOnTouched(fn: () => void): void;
114
+ setDisabledState(isDisabled: boolean): void;
115
+ protected onDOMInput(): void;
116
+ protected onDOMBlur(): void;
117
+ protected onCodeInput(event: Event): void;
118
+ protected onCodeBlur(event: Event): void;
119
+ formatText(command: string, value?: string): void;
120
+ applyInlineStyle(tag: string): void;
121
+ toggleLink(url: string): void;
122
+ setBlockType(tag: string): void;
123
+ toggleList(listType: 'ul' | 'ol'): void;
124
+ insertHorizontalRule(): void;
125
+ setAlign(direction: 'left' | 'center' | 'right'): void;
126
+ removeFormat(): void;
127
+ undo(): void;
128
+ redo(): void;
129
+ protected toggleViewMode(): void;
130
+ protected onSelectionChange(): void;
131
+ openLinkModal(): void;
132
+ protected applyLink(url: string): void;
133
+ openImageModal(): void;
134
+ protected applyImage(url: string): void;
135
+ selectedImage: _angular_core.Signal<HTMLImageElement | null>;
136
+ onComponentFocusIn(event: FocusEvent): void;
137
+ onComponentClick(event: MouseEvent): void;
138
+ onKeyDown(event: KeyboardEvent): void;
139
+ onKeyUp(event: KeyboardEvent): void;
140
+ executeCommand(cmd: ShipEditorCommand): void;
141
+ getBlockLabel(): string;
142
+ toggleBlockMenu(): void;
143
+ selectBlockType(tag: string): void;
144
+ protected onToolbarKeyDown(event: KeyboardEvent): void;
145
+ protected onToolbarFocusIn(event: FocusEvent): void;
146
+ onComponentScroll(event: Event): void;
147
+ onWindowResize(): void;
148
+ updateImgToolbarPosition(): void;
149
+ setImageMode(mode: 'content' | 'theater' | 'float' | 'custom'): void;
150
+ setImageSize(size: 'auto' | 'small' | 'medium' | 'large'): void;
151
+ deleteImage(): void;
152
+ onFileSelected(event: Event): void;
153
+ onDrop(event: DragEvent): void;
154
+ onPaste(event: ClipboardEvent): void;
155
+ insertImage(url: string): void;
156
+ getHTML(): string;
157
+ getMarkdown(): string;
158
+ getJSON(): ShipEditorDocument;
159
+ setHTML(html: string): void;
160
+ setMarkdown(md: string): void;
161
+ setJSON(json: ShipEditorDocument): void;
162
+ clear(): void;
163
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ShipEditor, never>;
164
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ShipEditor, "sh-editor", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "format": { "alias": "format"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "toolbar": { "alias": "toolbar"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "customCommands": { "alias": "customCommands"; "required": false; "isSignal": true; }; "slashCommands": { "alias": "slashCommands"; "required": false; "isSignal": true; }; "showFormats": { "alias": "showFormats"; "required": false; "isSignal": true; }; "showBlocks": { "alias": "showBlocks"; "required": false; "isSignal": true; }; "showLists": { "alias": "showLists"; "required": false; "isSignal": true; }; "showAlignments": { "alias": "showAlignments"; "required": false; "isSignal": true; }; "showInsertions": { "alias": "showInsertions"; "required": false; "isSignal": true; }; "showHistory": { "alias": "showHistory"; "required": false; "isSignal": true; }; "customUpload": { "alias": "customUpload"; "required": false; "isSignal": true; }; "imageUploadEnabled": { "alias": "imageUploadEnabled"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "imageUpload": "imageUpload"; }, never, ["*"], true, never>;
165
+ }
166
+
167
+ export { ShipEditor };
168
+ export type { CaretState, ShipEditorBlock, ShipEditorCommand, ShipEditorDocument, ShipEditorHtmlDocument, ShipEditorInlineNode, ShipEditorMark, ShipEditorValue };
@@ -2,6 +2,7 @@ import * as _angular_core from '@angular/core';
2
2
  import { ElementRef } from '@angular/core';
3
3
 
4
4
  declare class ShipRadio {
5
+ #private;
5
6
  private readonly _elementRef;
6
7
  internalInput: _angular_core.Signal<ElementRef<HTMLInputElement> | undefined>;
7
8
  projectedInputs: _angular_core.Signal<HTMLInputElement[]>;
@@ -14,7 +15,7 @@ declare class ShipRadio {
14
15
  noInternalInput: _angular_core.InputSignal<boolean>;
15
16
  protected onInternalInputChange(event: Event): void;
16
17
  hostClasses: _angular_core.Signal<string>;
17
- protected onEnter(event: Event): void;
18
+ protected onKeyDown(event: KeyboardEvent): void;
18
19
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<ShipRadio, never>;
19
20
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<ShipRadio, "sh-radio", never, { "checked": { "alias": "checked"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "noInternalInput": { "alias": "noInternalInput"; "required": false; "isSignal": true; }; }, { "checked": "checkedChange"; }, never, ["*"], true, never>;
20
21
  }
@@ -26,6 +26,7 @@ declare const SHIP_SPOTLIGHT_CONFIG: InjectionToken<ShipSpotlightConfig>;
26
26
  declare function provideShipSpotlight(config: ShipSpotlightConfig): Provider;
27
27
  declare class ShipSpotlight {
28
28
  #private;
29
+ constructor();
29
30
  inputRef: _angular_core.Signal<ElementRef<HTMLInputElement> | undefined>;
30
31
  resultsRef: _angular_core.Signal<ElementRef<HTMLDivElement> | undefined>;
31
32
  data: _angular_core.InputSignal<ShipSpotlightServiceOptions | undefined>;
@@ -47,7 +48,6 @@ declare class ShipSpotlight {
47
48
  flatIndex: number;
48
49
  }[];
49
50
  }[]>;
50
- constructor();
51
51
  validateItemsEffect: _angular_core.EffectRef;
52
52
  onSearchInput(event: Event): void;
53
53
  clearSearch(): void;
@@ -35,6 +35,7 @@ declare class ShipResize {
35
35
  declare class ShipSort {
36
36
  #private;
37
37
  shSort: _angular_core.InputSignal<string | undefined>;
38
+ onKeyDown(event: KeyboardEvent): void;
38
39
  sortAsc: _angular_core.Signal<boolean>;
39
40
  sortDesc: _angular_core.Signal<boolean>;
40
41
  ariaSort: _angular_core.Signal<"ascending" | "descending" | "none">;
@@ -8,6 +8,7 @@ declare class ShipToggleCard {
8
8
  variant: _angular_core.InputSignal<"" | "type-a" | "type-b" | "type-c" | null>;
9
9
  hostClasses: _angular_core.Signal<string>;
10
10
  toggle(): void;
11
+ handleKeyDown(event: KeyboardEvent): void;
11
12
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<ShipToggleCard, never>;
12
13
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<ShipToggleCard, "sh-toggle-card", never, { "disableToggle": { "alias": "disableToggle"; "required": false; "isSignal": true; }; "isActive": { "alias": "isActive"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; }, { "isActive": "isActiveChange"; }, never, ["[title]", "*"], true, never>;
13
14
  }
@@ -2,6 +2,7 @@ import * as _angular_core from '@angular/core';
2
2
  import { ElementRef } from '@angular/core';
3
3
 
4
4
  declare class ShipToggle {
5
+ #private;
5
6
  private readonly _elementRef;
6
7
  internalInput: _angular_core.Signal<ElementRef<HTMLInputElement> | undefined>;
7
8
  projectedInputs: _angular_core.Signal<HTMLInputElement[]>;
@@ -13,7 +14,7 @@ declare class ShipToggle {
13
14
  noInternalInput: _angular_core.InputSignal<boolean>;
14
15
  protected onInternalInputChange(event: Event): void;
15
16
  hostClasses: _angular_core.Signal<string>;
16
- protected onEnter(event: Event): void;
17
+ protected onKeyDown(event: KeyboardEvent): void;
17
18
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<ShipToggle, never>;
18
19
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<ShipToggle, "sh-toggle", never, { "checked": { "alias": "checked"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "noInternalInput": { "alias": "noInternalInput"; "required": false; "isSignal": true; }; }, { "checked": "checkedChange"; }, never, ["*"], true, never>;
19
20
  }
@@ -218,11 +218,13 @@ interface ShipConfig {
218
218
  }
219
219
 
220
220
  declare abstract class ShipSelectionGroup<T = any> {
221
+ #private;
221
222
  protected readonly itemSelector: string;
222
223
  protected readonly activeClass: string;
223
224
  protected readonly options?: {
224
225
  hostRole?: string;
225
226
  itemRole?: string;
227
+ activeAttribute?: "aria-selected" | "aria-pressed" | "aria-checked";
226
228
  } | undefined;
227
229
  protected readonly hostElement: any;
228
230
  protected items: _angular_core.Signal<HTMLElement[]>;
@@ -232,6 +234,7 @@ declare abstract class ShipSelectionGroup<T = any> {
232
234
  constructor(itemSelector: string, activeClass: string, options?: {
233
235
  hostRole?: string;
234
236
  itemRole?: string;
237
+ activeAttribute?: "aria-selected" | "aria-pressed" | "aria-checked";
235
238
  } | undefined);
236
239
  protected onClick(target: EventTarget | null): void;
237
240
  protected onKeyDown(event: KeyboardEvent): void;
Binary file