@pallasoft/ps-input-components 2.1.0 → 3.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.
- package/dist/components/ps-calendar-header.js +4 -7
- package/dist/components/ps-cascader-input.js +1 -1
- package/dist/components/ps-checkbox-matrix.d.ts +13 -0
- package/dist/components/ps-checkbox-matrix.js +24 -0
- package/dist/components/ps-color-picker.js +2 -2
- package/dist/components/ps-combobox-input.js +1 -1
- package/dist/components/ps-date-input.js +1 -1
- package/dist/components/ps-date-preset-field.js +2 -2
- package/dist/components/ps-field-skeleton.js +1 -1
- package/dist/components/ps-file-picker.js +1 -1
- package/dist/components/ps-multi-select-input.js +2 -2
- package/dist/components/ps-phone-input.js +1 -1
- package/dist/components/ps-portable-text-editor.d.ts +1 -1
- package/dist/components/ps-portable-text-editor.js +1 -2
- package/dist/components/ps-portable-text-link-dialog.d.ts +2 -1
- package/dist/components/ps-portable-text-link-dialog.js +2 -2
- package/dist/components/ps-portable-text-toolbar.js +2 -7
- package/dist/components/ps-select-input.js +1 -1
- package/dist/components/ps-toggle.js +1 -1
- package/dist/components/ps-year-input.js +1 -1
- package/dist/constants/ps-calendar-header-classes.d.ts +6 -0
- package/dist/constants/ps-calendar-header-classes.js +9 -0
- package/dist/constants/ps-portable-text-editor-config.d.ts +10 -2
- package/dist/constants/ps-portable-text-editor-config.js +10 -2
- package/dist/esm/components/ps-calendar-header.js +4 -7
- package/dist/esm/components/ps-cascader-input.js +1 -1
- package/dist/esm/components/ps-checkbox-matrix.js +20 -0
- package/dist/esm/components/ps-color-picker.js +2 -2
- package/dist/esm/components/ps-combobox-input.js +1 -1
- package/dist/esm/components/ps-date-input.js +1 -1
- package/dist/esm/components/ps-date-preset-field.js +2 -2
- package/dist/esm/components/ps-field-skeleton.js +1 -1
- package/dist/esm/components/ps-file-picker.js +1 -1
- package/dist/esm/components/ps-multi-select-input.js +2 -2
- package/dist/esm/components/ps-phone-input.js +1 -1
- package/dist/esm/components/ps-portable-text-editor.js +1 -2
- package/dist/esm/components/ps-portable-text-link-dialog.js +2 -2
- package/dist/esm/components/ps-portable-text-toolbar.js +2 -7
- package/dist/esm/components/ps-select-input.js +1 -1
- package/dist/esm/components/ps-toggle.js +1 -1
- package/dist/esm/components/ps-year-input.js +1 -1
- package/dist/esm/constants/ps-calendar-header-classes.js +6 -0
- package/dist/esm/constants/ps-portable-text-editor-config.js +10 -2
- package/dist/esm/index.js +7 -0
- package/dist/esm/interfaces/ps-checkbox-matrix-cell.js +1 -0
- package/dist/esm/interfaces/ps-checkbox-matrix-column.js +1 -0
- package/dist/esm/interfaces/ps-checkbox-matrix-group.js +1 -0
- package/dist/esm/interfaces/ps-checkbox-matrix-labels.js +1 -0
- package/dist/esm/interfaces/ps-checkbox-matrix-row.js +1 -0
- package/dist/esm/portable-text-core/components/ps-portable-text-core-editor-stub.js +2 -0
- package/dist/esm/portable-text-core/components/ps-portable-text-core-editor.js +64 -0
- package/dist/esm/portable-text-core/components/ps-portable-text-core.js +5 -26
- package/dist/esm/portable-text-core/constants/ps-portable-text-core-config.js +29 -9
- package/dist/esm/portable-text-core/contexts/ps-portable-text-core-context.js +9 -0
- package/dist/esm/portable-text-core/hooks/use-ps-portable-text-link-form.js +11 -5
- package/dist/esm/portable-text-core/hooks/use-ps-portable-text-toolbar.js +17 -49
- package/dist/esm/portable-text-core/index.js +4 -0
- package/dist/esm/portable-text-core/interfaces/ps-portable-text-active-formats.js +1 -0
- package/dist/esm/portable-text-core/interfaces/ps-portable-text-block-draft.js +1 -0
- package/dist/esm/portable-text-core/interfaces/ps-portable-text-core-class-names.js +1 -0
- package/dist/esm/portable-text-core/interfaces/ps-portable-text-core-context-data.js +1 -0
- package/dist/esm/portable-text-core/interfaces/ps-portable-text-core-props.js +1 -0
- package/dist/esm/portable-text-core/interfaces/ps-portable-text-extension-options.js +1 -0
- package/dist/esm/portable-text-core/interfaces/ps-portable-text-span-draft.js +1 -0
- package/dist/esm/portable-text-core/interfaces/ps-portable-text-toolbar-state.js +1 -0
- package/dist/esm/portable-text-core/services/ps-portable-text-command-service.js +73 -0
- package/dist/esm/portable-text-core/services/ps-portable-text-converter-service.js +196 -0
- package/dist/esm/portable-text-core/services/ps-portable-text-editor-service.js +4 -0
- package/dist/esm/portable-text-core/services/ps-portable-text-extension-service.js +89 -0
- package/dist/esm/portable-text-engine/index.js +1 -0
- package/dist/esm/portable-text-engine/worker.js +1 -0
- package/dist/esm/services/ps-checkbox-matrix-service.js +28 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.js +7 -0
- package/dist/interfaces/ps-checkbox-matrix-cell.d.ts +6 -0
- package/dist/interfaces/ps-checkbox-matrix-cell.js +2 -0
- package/dist/interfaces/ps-checkbox-matrix-column.d.ts +5 -0
- package/dist/interfaces/ps-checkbox-matrix-column.js +2 -0
- package/dist/interfaces/ps-checkbox-matrix-group.d.ts +6 -0
- package/dist/interfaces/ps-checkbox-matrix-group.js +2 -0
- package/dist/interfaces/ps-checkbox-matrix-labels.d.ts +9 -0
- package/dist/interfaces/ps-checkbox-matrix-labels.js +2 -0
- package/dist/interfaces/ps-checkbox-matrix-row.d.ts +6 -0
- package/dist/interfaces/ps-checkbox-matrix-row.js +2 -0
- package/dist/portable-text/index.d.ts +1 -1
- package/dist/portable-text-core/components/ps-portable-text-core-editor-stub.d.ts +2 -0
- package/dist/portable-text-core/components/ps-portable-text-core-editor-stub.js +6 -0
- package/dist/portable-text-core/components/ps-portable-text-core-editor.d.ts +2 -0
- package/dist/portable-text-core/components/ps-portable-text-core-editor.js +68 -0
- package/dist/portable-text-core/components/ps-portable-text-core.d.ts +2 -17
- package/dist/portable-text-core/components/ps-portable-text-core.js +3 -24
- package/dist/portable-text-core/constants/ps-portable-text-core-config.d.ts +36 -19
- package/dist/portable-text-core/constants/ps-portable-text-core-config.js +29 -9
- package/dist/portable-text-core/contexts/ps-portable-text-core-context.d.ts +2 -0
- package/dist/portable-text-core/contexts/ps-portable-text-core-context.js +12 -0
- package/dist/portable-text-core/hooks/use-ps-portable-text-link-form.d.ts +3 -1
- package/dist/portable-text-core/hooks/use-ps-portable-text-link-form.js +10 -4
- package/dist/portable-text-core/hooks/use-ps-portable-text-toolbar.d.ts +5 -10
- package/dist/portable-text-core/hooks/use-ps-portable-text-toolbar.js +17 -49
- package/dist/portable-text-core/index.d.ts +5 -1
- package/dist/portable-text-core/index.js +4 -0
- package/dist/portable-text-core/interfaces/ps-portable-text-active-formats.d.ts +10 -0
- package/dist/portable-text-core/interfaces/ps-portable-text-active-formats.js +2 -0
- package/dist/portable-text-core/interfaces/ps-portable-text-block-draft.d.ts +7 -0
- package/dist/portable-text-core/interfaces/ps-portable-text-block-draft.js +2 -0
- package/dist/portable-text-core/interfaces/ps-portable-text-core-class-names.d.ts +8 -0
- package/dist/portable-text-core/interfaces/ps-portable-text-core-class-names.js +2 -0
- package/dist/portable-text-core/interfaces/ps-portable-text-core-context-data.d.ts +9 -0
- package/dist/portable-text-core/interfaces/ps-portable-text-core-context-data.js +2 -0
- package/dist/portable-text-core/interfaces/ps-portable-text-core-props.d.ts +16 -0
- package/dist/portable-text-core/interfaces/ps-portable-text-core-props.js +2 -0
- package/dist/portable-text-core/interfaces/ps-portable-text-editor-labels.d.ts +1 -0
- package/dist/portable-text-core/interfaces/ps-portable-text-extension-options.d.ts +6 -0
- package/dist/portable-text-core/interfaces/ps-portable-text-extension-options.js +2 -0
- package/dist/portable-text-core/interfaces/ps-portable-text-span-draft.d.ts +4 -0
- package/dist/portable-text-core/interfaces/ps-portable-text-span-draft.js +2 -0
- package/dist/portable-text-core/interfaces/ps-portable-text-toolbar-state.d.ts +5 -0
- package/dist/portable-text-core/interfaces/ps-portable-text-toolbar-state.js +2 -0
- package/dist/portable-text-core/services/ps-portable-text-command-service.d.ts +14 -0
- package/dist/portable-text-core/services/ps-portable-text-command-service.js +77 -0
- package/dist/portable-text-core/services/ps-portable-text-converter-service.d.ts +18 -0
- package/dist/portable-text-core/services/ps-portable-text-converter-service.js +200 -0
- package/dist/portable-text-core/services/ps-portable-text-editor-service.d.ts +1 -0
- package/dist/portable-text-core/services/ps-portable-text-editor-service.js +4 -0
- package/dist/portable-text-core/services/ps-portable-text-extension-service.d.ts +8 -0
- package/dist/portable-text-core/services/ps-portable-text-extension-service.js +93 -0
- package/dist/portable-text-engine/index.d.ts +1 -0
- package/dist/portable-text-engine/index.js +17 -0
- package/dist/portable-text-engine/worker.d.ts +1 -0
- package/dist/portable-text-engine/worker.js +17 -0
- package/dist/services/ps-checkbox-matrix-service.d.ts +9 -0
- package/dist/services/ps-checkbox-matrix-service.js +32 -0
- package/package.json +30 -6
- package/dist/constants/ps-portable-text-editor-renderers.d.ts +0 -6
- package/dist/constants/ps-portable-text-editor-renderers.js +0 -32
- package/dist/esm/constants/ps-portable-text-editor-renderers.js +0 -29
|
@@ -3,6 +3,13 @@ export declare const PsPortableTextCoreConfig: {
|
|
|
3
3
|
readonly mailtoPrefix: "mailto:";
|
|
4
4
|
readonly emailPattern: RegExp;
|
|
5
5
|
readonly lineHeightRem: 1.5;
|
|
6
|
+
readonly lineBreak: "\n";
|
|
7
|
+
readonly defaultLinkProtocol: "https";
|
|
8
|
+
readonly keyPrefix: {
|
|
9
|
+
readonly block: "b";
|
|
10
|
+
readonly link: "l";
|
|
11
|
+
readonly span: "s";
|
|
12
|
+
};
|
|
6
13
|
readonly decorators: {
|
|
7
14
|
readonly bold: "strong";
|
|
8
15
|
readonly code: "code";
|
|
@@ -17,31 +24,41 @@ export declare const PsPortableTextCoreConfig: {
|
|
|
17
24
|
readonly bullet: "bullet";
|
|
18
25
|
readonly number: "number";
|
|
19
26
|
};
|
|
20
|
-
readonly
|
|
21
|
-
readonly
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
readonly
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
readonly
|
|
33
|
-
readonly
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
readonly
|
|
37
|
-
|
|
38
|
-
|
|
27
|
+
readonly decoratorMarks: {
|
|
28
|
+
readonly strong: "bold";
|
|
29
|
+
readonly em: "italic";
|
|
30
|
+
readonly underline: "underline";
|
|
31
|
+
readonly code: "code";
|
|
32
|
+
};
|
|
33
|
+
readonly listNodes: {
|
|
34
|
+
readonly bullet: "bulletList";
|
|
35
|
+
readonly number: "orderedList";
|
|
36
|
+
};
|
|
37
|
+
readonly nodes: {
|
|
38
|
+
readonly blockquote: "blockquote";
|
|
39
|
+
readonly bulletList: "bulletList";
|
|
40
|
+
readonly document: "doc";
|
|
41
|
+
readonly hardBreak: "hardBreak";
|
|
42
|
+
readonly listItem: "listItem";
|
|
43
|
+
readonly orderedList: "orderedList";
|
|
44
|
+
readonly paragraph: "paragraph";
|
|
45
|
+
readonly text: "text";
|
|
46
|
+
};
|
|
47
|
+
readonly linkMark: "link";
|
|
48
|
+
readonly linkShortcutExtension: "psLinkShortcut";
|
|
49
|
+
readonly listItemContent: "paragraph (bulletList | orderedList)*";
|
|
50
|
+
readonly blockquoteContent: "paragraph+";
|
|
51
|
+
readonly shortcuts: {
|
|
52
|
+
readonly link: "Mod-k";
|
|
53
|
+
readonly nest: "Tab";
|
|
54
|
+
readonly unnest: "Shift-Tab";
|
|
39
55
|
};
|
|
40
56
|
readonly labels: {
|
|
41
57
|
bold: string;
|
|
42
58
|
bulletedList: string;
|
|
43
59
|
cancel: string;
|
|
44
60
|
code: string;
|
|
61
|
+
editor: string;
|
|
45
62
|
invalidLink: string;
|
|
46
63
|
italic: string;
|
|
47
64
|
link: string;
|
|
@@ -2,13 +2,15 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.PsPortableTextCoreConfig = void 0;
|
|
4
4
|
const ps_models_1 = require("@pallasoft/ps-models");
|
|
5
|
-
const editor_1 = require("@portabletext/editor");
|
|
6
5
|
const Models = ps_models_1.Common.PortableTextConfig;
|
|
7
6
|
exports.PsPortableTextCoreConfig = {
|
|
8
7
|
linkAnnotation: Models.linkType,
|
|
9
8
|
mailtoPrefix: 'mailto:',
|
|
10
9
|
emailPattern: /^[^\s@/:]+@[^\s@/:]+\.[^\s@/:]+$/,
|
|
11
10
|
lineHeightRem: 1.5,
|
|
11
|
+
lineBreak: '\n',
|
|
12
|
+
defaultLinkProtocol: 'https',
|
|
13
|
+
keyPrefix: { block: 'b', link: 'l', span: 's' },
|
|
12
14
|
decorators: {
|
|
13
15
|
bold: Models.decorators[0],
|
|
14
16
|
code: Models.decorators[3],
|
|
@@ -17,19 +19,37 @@ exports.PsPortableTextCoreConfig = {
|
|
|
17
19
|
},
|
|
18
20
|
styles: { blockquote: Models.styles[1], normal: Models.styles[0] },
|
|
19
21
|
listItems: { bullet: Models.listItems[0], number: Models.listItems[1] },
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
22
|
+
decoratorMarks: {
|
|
23
|
+
[Models.decorators[0]]: 'bold',
|
|
24
|
+
[Models.decorators[1]]: 'italic',
|
|
25
|
+
[Models.decorators[2]]: 'underline',
|
|
26
|
+
[Models.decorators[3]]: 'code',
|
|
27
|
+
},
|
|
28
|
+
listNodes: {
|
|
29
|
+
[Models.listItems[0]]: 'bulletList',
|
|
30
|
+
[Models.listItems[1]]: 'orderedList',
|
|
31
|
+
},
|
|
32
|
+
nodes: {
|
|
33
|
+
blockquote: 'blockquote',
|
|
34
|
+
bulletList: 'bulletList',
|
|
35
|
+
document: 'doc',
|
|
36
|
+
hardBreak: 'hardBreak',
|
|
37
|
+
listItem: 'listItem',
|
|
38
|
+
orderedList: 'orderedList',
|
|
39
|
+
paragraph: 'paragraph',
|
|
40
|
+
text: 'text',
|
|
41
|
+
},
|
|
42
|
+
linkMark: 'link',
|
|
43
|
+
linkShortcutExtension: 'psLinkShortcut',
|
|
44
|
+
listItemContent: 'paragraph (bulletList | orderedList)*',
|
|
45
|
+
blockquoteContent: 'paragraph+',
|
|
46
|
+
shortcuts: { link: 'Mod-k', nest: 'Tab', unnest: 'Shift-Tab' },
|
|
28
47
|
labels: {
|
|
29
48
|
bold: 'Bold',
|
|
30
49
|
bulletedList: 'Bulleted list',
|
|
31
50
|
cancel: 'Cancel',
|
|
32
51
|
code: 'Code',
|
|
52
|
+
editor: 'Text',
|
|
33
53
|
invalidLink: 'Enter a web address or email address',
|
|
34
54
|
italic: 'Italic',
|
|
35
55
|
link: 'Link',
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PsPortableTextCoreContext = void 0;
|
|
4
|
+
const react_1 = require("react");
|
|
5
|
+
const ps_portable_text_command_service_1 = require("../services/ps-portable-text-command-service");
|
|
6
|
+
exports.PsPortableTextCoreContext = (0, react_1.createContext)({
|
|
7
|
+
closeLink: () => undefined,
|
|
8
|
+
editor: null,
|
|
9
|
+
isLinkOpen: false,
|
|
10
|
+
openLink: () => undefined,
|
|
11
|
+
state: ps_portable_text_command_service_1.PsPortableTextCommandService.state(null),
|
|
12
|
+
});
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import { type FormEvent } from 'react';
|
|
2
2
|
export interface UsePsPortableTextLinkFormOptions {
|
|
3
|
+
href?: string;
|
|
4
|
+
isOpen?: boolean;
|
|
3
5
|
onClose: () => void;
|
|
4
6
|
onSubmit: (href: string) => void;
|
|
5
7
|
}
|
|
6
|
-
export declare const usePsPortableTextLinkForm: ({ onClose, onSubmit, }: UsePsPortableTextLinkFormOptions) => {
|
|
8
|
+
export declare const usePsPortableTextLinkForm: ({ href, isOpen, onClose, onSubmit, }: UsePsPortableTextLinkFormOptions) => {
|
|
7
9
|
address: string;
|
|
8
10
|
close: () => void;
|
|
9
11
|
hasError: boolean;
|
|
@@ -3,9 +3,15 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.usePsPortableTextLinkForm = void 0;
|
|
4
4
|
const react_1 = require("react");
|
|
5
5
|
const ps_portable_text_editor_service_1 = require("../services/ps-portable-text-editor-service");
|
|
6
|
-
const usePsPortableTextLinkForm = ({ onClose, onSubmit, }) => {
|
|
6
|
+
const usePsPortableTextLinkForm = ({ href, isOpen = false, onClose, onSubmit, }) => {
|
|
7
7
|
const [address, setAddress] = (0, react_1.useState)('');
|
|
8
8
|
const [hasError, setHasError] = (0, react_1.useState)(false);
|
|
9
|
+
(0, react_1.useEffect)(() => {
|
|
10
|
+
if (!isOpen)
|
|
11
|
+
return;
|
|
12
|
+
setAddress(href === undefined ? '' : href);
|
|
13
|
+
setHasError(false);
|
|
14
|
+
}, [isOpen]);
|
|
9
15
|
return {
|
|
10
16
|
address,
|
|
11
17
|
close: () => {
|
|
@@ -22,14 +28,14 @@ const usePsPortableTextLinkForm = ({ onClose, onSubmit, }) => {
|
|
|
22
28
|
submit: (event) => {
|
|
23
29
|
event.preventDefault();
|
|
24
30
|
event.stopPropagation();
|
|
25
|
-
const
|
|
26
|
-
if (
|
|
31
|
+
const normalized = ps_portable_text_editor_service_1.PsPortableTextEditorService.normalizeLink(address);
|
|
32
|
+
if (normalized === null) {
|
|
27
33
|
setHasError(true);
|
|
28
34
|
return;
|
|
29
35
|
}
|
|
30
36
|
setAddress('');
|
|
31
37
|
setHasError(false);
|
|
32
|
-
onSubmit(
|
|
38
|
+
onSubmit(normalized);
|
|
33
39
|
},
|
|
34
40
|
};
|
|
35
41
|
};
|
|
@@ -1,16 +1,11 @@
|
|
|
1
1
|
export declare const usePsPortableTextToolbar: () => {
|
|
2
|
-
active:
|
|
3
|
-
bold: boolean;
|
|
4
|
-
bulletedList: boolean;
|
|
5
|
-
code: boolean;
|
|
6
|
-
italic: boolean;
|
|
7
|
-
link: boolean;
|
|
8
|
-
numberedList: boolean;
|
|
9
|
-
quote: boolean;
|
|
10
|
-
underline: boolean;
|
|
11
|
-
};
|
|
2
|
+
active: import("..").PsPortableTextActiveFormats;
|
|
12
3
|
addLink: (href: string) => void;
|
|
4
|
+
closeLink: () => void;
|
|
13
5
|
focus: () => void;
|
|
6
|
+
isLinkOpen: boolean;
|
|
7
|
+
linkHref: string;
|
|
8
|
+
openLink: () => void;
|
|
14
9
|
removeLink: () => void;
|
|
15
10
|
toggleDecorator: (decorator: string) => void;
|
|
16
11
|
toggleListItem: (listItem: string) => void;
|
|
@@ -1,58 +1,26 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.usePsPortableTextToolbar = void 0;
|
|
4
|
-
const
|
|
5
|
-
const
|
|
6
|
-
const
|
|
4
|
+
const react_1 = require("react");
|
|
5
|
+
const ps_portable_text_core_context_1 = require("../contexts/ps-portable-text-core-context");
|
|
6
|
+
const ps_portable_text_command_service_1 = require("../services/ps-portable-text-command-service");
|
|
7
7
|
const usePsPortableTextToolbar = () => {
|
|
8
|
-
const editor = (0,
|
|
9
|
-
const isBold = (0, editor_1.useEditorSelector)(editor, (0, selectors_1.isActiveDecorator)(ps_portable_text_core_config_1.PsPortableTextCoreConfig.decorators.bold));
|
|
10
|
-
const isItalic = (0, editor_1.useEditorSelector)(editor, (0, selectors_1.isActiveDecorator)(ps_portable_text_core_config_1.PsPortableTextCoreConfig.decorators.italic));
|
|
11
|
-
const isUnderline = (0, editor_1.useEditorSelector)(editor, (0, selectors_1.isActiveDecorator)(ps_portable_text_core_config_1.PsPortableTextCoreConfig.decorators.underline));
|
|
12
|
-
const isCode = (0, editor_1.useEditorSelector)(editor, (0, selectors_1.isActiveDecorator)(ps_portable_text_core_config_1.PsPortableTextCoreConfig.decorators.code));
|
|
13
|
-
const isBulletedList = (0, editor_1.useEditorSelector)(editor, (0, selectors_1.isActiveListItem)(ps_portable_text_core_config_1.PsPortableTextCoreConfig.listItems.bullet));
|
|
14
|
-
const isNumberedList = (0, editor_1.useEditorSelector)(editor, (0, selectors_1.isActiveListItem)(ps_portable_text_core_config_1.PsPortableTextCoreConfig.listItems.number));
|
|
15
|
-
const isQuote = (0, editor_1.useEditorSelector)(editor, (0, selectors_1.isActiveStyle)(ps_portable_text_core_config_1.PsPortableTextCoreConfig.styles.blockquote));
|
|
16
|
-
const isLink = (0, editor_1.useEditorSelector)(editor, (0, selectors_1.isActiveAnnotation)(ps_portable_text_core_config_1.PsPortableTextCoreConfig.linkAnnotation));
|
|
17
|
-
const focus = () => editor.send({ type: 'focus' });
|
|
8
|
+
const { closeLink, editor, isLinkOpen, openLink, state } = (0, react_1.useContext)(ps_portable_text_core_context_1.PsPortableTextCoreContext);
|
|
18
9
|
return {
|
|
19
|
-
active:
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
link: isLink,
|
|
25
|
-
numberedList: isNumberedList,
|
|
26
|
-
quote: isQuote,
|
|
27
|
-
underline: isUnderline,
|
|
28
|
-
},
|
|
29
|
-
addLink: (href) => {
|
|
30
|
-
editor.send({
|
|
31
|
-
type: 'annotation.add',
|
|
32
|
-
annotation: { name: ps_portable_text_core_config_1.PsPortableTextCoreConfig.linkAnnotation, value: { href } },
|
|
33
|
-
});
|
|
34
|
-
focus();
|
|
35
|
-
},
|
|
36
|
-
focus,
|
|
37
|
-
removeLink: () => {
|
|
38
|
-
editor.send({
|
|
39
|
-
type: 'annotation.remove',
|
|
40
|
-
annotation: { name: ps_portable_text_core_config_1.PsPortableTextCoreConfig.linkAnnotation },
|
|
41
|
-
});
|
|
42
|
-
focus();
|
|
43
|
-
},
|
|
44
|
-
toggleDecorator: (decorator) => {
|
|
45
|
-
editor.send({ type: 'decorator.toggle', decorator });
|
|
46
|
-
focus();
|
|
47
|
-
},
|
|
48
|
-
toggleListItem: (listItem) => {
|
|
49
|
-
editor.send({ type: 'list item.toggle', listItem });
|
|
50
|
-
focus();
|
|
51
|
-
},
|
|
52
|
-
toggleQuote: () => {
|
|
53
|
-
editor.send({ type: 'style.toggle', style: ps_portable_text_core_config_1.PsPortableTextCoreConfig.styles.blockquote });
|
|
54
|
-
focus();
|
|
10
|
+
active: state.active,
|
|
11
|
+
addLink: (href) => ps_portable_text_command_service_1.PsPortableTextCommandService.setLink(editor, href),
|
|
12
|
+
closeLink: () => {
|
|
13
|
+
closeLink();
|
|
14
|
+
ps_portable_text_command_service_1.PsPortableTextCommandService.focus(editor);
|
|
55
15
|
},
|
|
16
|
+
focus: () => ps_portable_text_command_service_1.PsPortableTextCommandService.focus(editor),
|
|
17
|
+
isLinkOpen,
|
|
18
|
+
linkHref: state.linkHref,
|
|
19
|
+
openLink,
|
|
20
|
+
removeLink: () => ps_portable_text_command_service_1.PsPortableTextCommandService.removeLink(editor),
|
|
21
|
+
toggleDecorator: (decorator) => ps_portable_text_command_service_1.PsPortableTextCommandService.toggleDecorator(editor, decorator),
|
|
22
|
+
toggleListItem: (listItem) => ps_portable_text_command_service_1.PsPortableTextCommandService.toggleListItem(editor, listItem),
|
|
23
|
+
toggleQuote: () => ps_portable_text_command_service_1.PsPortableTextCommandService.toggleQuote(editor),
|
|
56
24
|
};
|
|
57
25
|
};
|
|
58
26
|
exports.usePsPortableTextToolbar = usePsPortableTextToolbar;
|
|
@@ -2,6 +2,10 @@ export * from './components/ps-portable-text-core';
|
|
|
2
2
|
export * from './constants/ps-portable-text-core-config';
|
|
3
3
|
export * from './hooks/use-ps-portable-text-link-form';
|
|
4
4
|
export * from './hooks/use-ps-portable-text-toolbar';
|
|
5
|
+
export * from './interfaces/ps-portable-text-active-formats';
|
|
6
|
+
export * from './interfaces/ps-portable-text-core-class-names';
|
|
7
|
+
export * from './interfaces/ps-portable-text-core-props';
|
|
5
8
|
export * from './interfaces/ps-portable-text-editor-labels';
|
|
9
|
+
export * from './services/ps-portable-text-converter-service';
|
|
6
10
|
export * from './services/ps-portable-text-editor-service';
|
|
7
|
-
export type {
|
|
11
|
+
export type { PortableTextBlock } from '@portabletext/schema';
|
|
@@ -18,5 +18,9 @@ __exportStar(require("./components/ps-portable-text-core"), exports);
|
|
|
18
18
|
__exportStar(require("./constants/ps-portable-text-core-config"), exports);
|
|
19
19
|
__exportStar(require("./hooks/use-ps-portable-text-link-form"), exports);
|
|
20
20
|
__exportStar(require("./hooks/use-ps-portable-text-toolbar"), exports);
|
|
21
|
+
__exportStar(require("./interfaces/ps-portable-text-active-formats"), exports);
|
|
22
|
+
__exportStar(require("./interfaces/ps-portable-text-core-class-names"), exports);
|
|
23
|
+
__exportStar(require("./interfaces/ps-portable-text-core-props"), exports);
|
|
21
24
|
__exportStar(require("./interfaces/ps-portable-text-editor-labels"), exports);
|
|
25
|
+
__exportStar(require("./services/ps-portable-text-converter-service"), exports);
|
|
22
26
|
__exportStar(require("./services/ps-portable-text-editor-service"), exports);
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { Editor } from '@tiptap/core';
|
|
2
|
+
import type { PsPortableTextToolbarState } from './ps-portable-text-toolbar-state';
|
|
3
|
+
export interface PsPortableTextCoreContextData {
|
|
4
|
+
closeLink: () => void;
|
|
5
|
+
editor: Editor | null;
|
|
6
|
+
isLinkOpen: boolean;
|
|
7
|
+
openLink: () => void;
|
|
8
|
+
state: PsPortableTextToolbarState;
|
|
9
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { ReactNode } from 'react';
|
|
2
|
+
import type { PortableTextBlock } from '@portabletext/schema';
|
|
3
|
+
import type { PsPortableTextCoreClassNames } from './ps-portable-text-core-class-names';
|
|
4
|
+
export interface PsPortableTextCoreProps {
|
|
5
|
+
className?: string;
|
|
6
|
+
classNames: PsPortableTextCoreClassNames;
|
|
7
|
+
disabled?: boolean;
|
|
8
|
+
editableClassName?: string;
|
|
9
|
+
fallback?: ReactNode;
|
|
10
|
+
label?: string;
|
|
11
|
+
minRows?: number;
|
|
12
|
+
onChange: (value: PortableTextBlock[]) => void;
|
|
13
|
+
placeholder?: string;
|
|
14
|
+
toolbar?: ReactNode;
|
|
15
|
+
value: PortableTextBlock[];
|
|
16
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { Editor } from '@tiptap/core';
|
|
2
|
+
import type { PsPortableTextActiveFormats } from '../interfaces/ps-portable-text-active-formats';
|
|
3
|
+
import type { PsPortableTextToolbarState } from '../interfaces/ps-portable-text-toolbar-state';
|
|
4
|
+
export declare class PsPortableTextCommandService {
|
|
5
|
+
static state(editor: Editor | null): PsPortableTextToolbarState;
|
|
6
|
+
static active(editor: Editor | null): PsPortableTextActiveFormats;
|
|
7
|
+
static linkHref(editor: Editor | null): string;
|
|
8
|
+
static toggleDecorator(editor: Editor | null, decorator: string): void;
|
|
9
|
+
static toggleListItem(editor: Editor | null, listItem: string): void;
|
|
10
|
+
static toggleQuote(editor: Editor | null): void;
|
|
11
|
+
static setLink(editor: Editor | null, href: string): void;
|
|
12
|
+
static removeLink(editor: Editor | null): void;
|
|
13
|
+
static focus(editor: Editor | null): void;
|
|
14
|
+
}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PsPortableTextCommandService = void 0;
|
|
4
|
+
const ps_portable_text_core_config_1 = require("../constants/ps-portable-text-core-config");
|
|
5
|
+
const ps_portable_text_editor_service_1 = require("./ps-portable-text-editor-service");
|
|
6
|
+
class PsPortableTextCommandService {
|
|
7
|
+
static state(editor) {
|
|
8
|
+
return { active: this.active(editor), linkHref: this.linkHref(editor) };
|
|
9
|
+
}
|
|
10
|
+
static active(editor) {
|
|
11
|
+
const isActive = (name) => (editor === null ? false : editor.isActive(name));
|
|
12
|
+
const marks = ps_portable_text_core_config_1.PsPortableTextCoreConfig.decoratorMarks;
|
|
13
|
+
const decorators = ps_portable_text_core_config_1.PsPortableTextCoreConfig.decorators;
|
|
14
|
+
return {
|
|
15
|
+
bold: isActive(marks[decorators.bold]),
|
|
16
|
+
bulletedList: isActive(ps_portable_text_core_config_1.PsPortableTextCoreConfig.nodes.bulletList),
|
|
17
|
+
code: isActive(marks[decorators.code]),
|
|
18
|
+
italic: isActive(marks[decorators.italic]),
|
|
19
|
+
link: isActive(ps_portable_text_core_config_1.PsPortableTextCoreConfig.linkMark),
|
|
20
|
+
numberedList: isActive(ps_portable_text_core_config_1.PsPortableTextCoreConfig.nodes.orderedList),
|
|
21
|
+
quote: isActive(ps_portable_text_core_config_1.PsPortableTextCoreConfig.nodes.blockquote),
|
|
22
|
+
underline: isActive(marks[decorators.underline]),
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
static linkHref(editor) {
|
|
26
|
+
const href = editor === null ? undefined : editor.getAttributes(ps_portable_text_core_config_1.PsPortableTextCoreConfig.linkMark).href;
|
|
27
|
+
return typeof href === 'string' ? href : '';
|
|
28
|
+
}
|
|
29
|
+
static toggleDecorator(editor, decorator) {
|
|
30
|
+
const mark = ps_portable_text_editor_service_1.PsPortableTextEditorService.lookup(ps_portable_text_core_config_1.PsPortableTextCoreConfig.decoratorMarks, decorator);
|
|
31
|
+
if (editor !== null && mark !== null)
|
|
32
|
+
editor.chain().focus().toggleMark(mark).run();
|
|
33
|
+
}
|
|
34
|
+
static toggleListItem(editor, listItem) {
|
|
35
|
+
const list = ps_portable_text_editor_service_1.PsPortableTextEditorService.lookup(ps_portable_text_core_config_1.PsPortableTextCoreConfig.listNodes, listItem);
|
|
36
|
+
if (editor !== null && list !== null) {
|
|
37
|
+
editor.chain().focus().toggleList(list, ps_portable_text_core_config_1.PsPortableTextCoreConfig.nodes.listItem).run();
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
static toggleQuote(editor) {
|
|
41
|
+
if (editor !== null)
|
|
42
|
+
editor.chain().focus().toggleBlockquote().run();
|
|
43
|
+
}
|
|
44
|
+
static setLink(editor, href) {
|
|
45
|
+
if (editor === null)
|
|
46
|
+
return;
|
|
47
|
+
if (editor.state.selection.empty && !editor.isActive(ps_portable_text_core_config_1.PsPortableTextCoreConfig.linkMark)) {
|
|
48
|
+
editor
|
|
49
|
+
.chain()
|
|
50
|
+
.focus()
|
|
51
|
+
.insertContent({
|
|
52
|
+
type: ps_portable_text_core_config_1.PsPortableTextCoreConfig.nodes.text,
|
|
53
|
+
text: href.replace(ps_portable_text_core_config_1.PsPortableTextCoreConfig.mailtoPrefix, ''),
|
|
54
|
+
marks: [{ type: ps_portable_text_core_config_1.PsPortableTextCoreConfig.linkMark, attrs: { href } }],
|
|
55
|
+
})
|
|
56
|
+
.unsetMark(ps_portable_text_core_config_1.PsPortableTextCoreConfig.linkMark)
|
|
57
|
+
.run();
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
editor
|
|
61
|
+
.chain()
|
|
62
|
+
.focus()
|
|
63
|
+
.extendMarkRange(ps_portable_text_core_config_1.PsPortableTextCoreConfig.linkMark)
|
|
64
|
+
.setLink({ href })
|
|
65
|
+
.run();
|
|
66
|
+
}
|
|
67
|
+
static removeLink(editor) {
|
|
68
|
+
if (editor !== null) {
|
|
69
|
+
editor.chain().focus().extendMarkRange(ps_portable_text_core_config_1.PsPortableTextCoreConfig.linkMark).unsetLink().run();
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
static focus(editor) {
|
|
73
|
+
if (editor !== null)
|
|
74
|
+
editor.commands.focus();
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
exports.PsPortableTextCommandService = PsPortableTextCommandService;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { PortableTextBlock } from '@portabletext/schema';
|
|
2
|
+
import type { JSONContent } from '@tiptap/core';
|
|
3
|
+
export declare class PsPortableTextConverterService {
|
|
4
|
+
static toDocument(blocks: PortableTextBlock[]): JSONContent;
|
|
5
|
+
static toBlocks(document: JSONContent): PortableTextBlock[];
|
|
6
|
+
private static drafts;
|
|
7
|
+
private static block;
|
|
8
|
+
private static spans;
|
|
9
|
+
private static spanMarks;
|
|
10
|
+
private static paragraph;
|
|
11
|
+
private static listNode;
|
|
12
|
+
private static listItem;
|
|
13
|
+
private static level;
|
|
14
|
+
private static href;
|
|
15
|
+
private static marks;
|
|
16
|
+
private static children;
|
|
17
|
+
private static isSame;
|
|
18
|
+
}
|