@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.
Files changed (136) hide show
  1. package/dist/components/ps-calendar-header.js +4 -7
  2. package/dist/components/ps-cascader-input.js +1 -1
  3. package/dist/components/ps-checkbox-matrix.d.ts +13 -0
  4. package/dist/components/ps-checkbox-matrix.js +24 -0
  5. package/dist/components/ps-color-picker.js +2 -2
  6. package/dist/components/ps-combobox-input.js +1 -1
  7. package/dist/components/ps-date-input.js +1 -1
  8. package/dist/components/ps-date-preset-field.js +2 -2
  9. package/dist/components/ps-field-skeleton.js +1 -1
  10. package/dist/components/ps-file-picker.js +1 -1
  11. package/dist/components/ps-multi-select-input.js +2 -2
  12. package/dist/components/ps-phone-input.js +1 -1
  13. package/dist/components/ps-portable-text-editor.d.ts +1 -1
  14. package/dist/components/ps-portable-text-editor.js +1 -2
  15. package/dist/components/ps-portable-text-link-dialog.d.ts +2 -1
  16. package/dist/components/ps-portable-text-link-dialog.js +2 -2
  17. package/dist/components/ps-portable-text-toolbar.js +2 -7
  18. package/dist/components/ps-select-input.js +1 -1
  19. package/dist/components/ps-toggle.js +1 -1
  20. package/dist/components/ps-year-input.js +1 -1
  21. package/dist/constants/ps-calendar-header-classes.d.ts +6 -0
  22. package/dist/constants/ps-calendar-header-classes.js +9 -0
  23. package/dist/constants/ps-portable-text-editor-config.d.ts +10 -2
  24. package/dist/constants/ps-portable-text-editor-config.js +10 -2
  25. package/dist/esm/components/ps-calendar-header.js +4 -7
  26. package/dist/esm/components/ps-cascader-input.js +1 -1
  27. package/dist/esm/components/ps-checkbox-matrix.js +20 -0
  28. package/dist/esm/components/ps-color-picker.js +2 -2
  29. package/dist/esm/components/ps-combobox-input.js +1 -1
  30. package/dist/esm/components/ps-date-input.js +1 -1
  31. package/dist/esm/components/ps-date-preset-field.js +2 -2
  32. package/dist/esm/components/ps-field-skeleton.js +1 -1
  33. package/dist/esm/components/ps-file-picker.js +1 -1
  34. package/dist/esm/components/ps-multi-select-input.js +2 -2
  35. package/dist/esm/components/ps-phone-input.js +1 -1
  36. package/dist/esm/components/ps-portable-text-editor.js +1 -2
  37. package/dist/esm/components/ps-portable-text-link-dialog.js +2 -2
  38. package/dist/esm/components/ps-portable-text-toolbar.js +2 -7
  39. package/dist/esm/components/ps-select-input.js +1 -1
  40. package/dist/esm/components/ps-toggle.js +1 -1
  41. package/dist/esm/components/ps-year-input.js +1 -1
  42. package/dist/esm/constants/ps-calendar-header-classes.js +6 -0
  43. package/dist/esm/constants/ps-portable-text-editor-config.js +10 -2
  44. package/dist/esm/index.js +7 -0
  45. package/dist/esm/interfaces/ps-checkbox-matrix-cell.js +1 -0
  46. package/dist/esm/interfaces/ps-checkbox-matrix-column.js +1 -0
  47. package/dist/esm/interfaces/ps-checkbox-matrix-group.js +1 -0
  48. package/dist/esm/interfaces/ps-checkbox-matrix-labels.js +1 -0
  49. package/dist/esm/interfaces/ps-checkbox-matrix-row.js +1 -0
  50. package/dist/esm/portable-text-core/components/ps-portable-text-core-editor-stub.js +2 -0
  51. package/dist/esm/portable-text-core/components/ps-portable-text-core-editor.js +64 -0
  52. package/dist/esm/portable-text-core/components/ps-portable-text-core.js +5 -26
  53. package/dist/esm/portable-text-core/constants/ps-portable-text-core-config.js +29 -9
  54. package/dist/esm/portable-text-core/contexts/ps-portable-text-core-context.js +9 -0
  55. package/dist/esm/portable-text-core/hooks/use-ps-portable-text-link-form.js +11 -5
  56. package/dist/esm/portable-text-core/hooks/use-ps-portable-text-toolbar.js +17 -49
  57. package/dist/esm/portable-text-core/index.js +4 -0
  58. package/dist/esm/portable-text-core/interfaces/ps-portable-text-active-formats.js +1 -0
  59. package/dist/esm/portable-text-core/interfaces/ps-portable-text-block-draft.js +1 -0
  60. package/dist/esm/portable-text-core/interfaces/ps-portable-text-core-class-names.js +1 -0
  61. package/dist/esm/portable-text-core/interfaces/ps-portable-text-core-context-data.js +1 -0
  62. package/dist/esm/portable-text-core/interfaces/ps-portable-text-core-props.js +1 -0
  63. package/dist/esm/portable-text-core/interfaces/ps-portable-text-extension-options.js +1 -0
  64. package/dist/esm/portable-text-core/interfaces/ps-portable-text-span-draft.js +1 -0
  65. package/dist/esm/portable-text-core/interfaces/ps-portable-text-toolbar-state.js +1 -0
  66. package/dist/esm/portable-text-core/services/ps-portable-text-command-service.js +73 -0
  67. package/dist/esm/portable-text-core/services/ps-portable-text-converter-service.js +196 -0
  68. package/dist/esm/portable-text-core/services/ps-portable-text-editor-service.js +4 -0
  69. package/dist/esm/portable-text-core/services/ps-portable-text-extension-service.js +89 -0
  70. package/dist/esm/portable-text-engine/index.js +1 -0
  71. package/dist/esm/portable-text-engine/worker.js +1 -0
  72. package/dist/esm/services/ps-checkbox-matrix-service.js +28 -0
  73. package/dist/index.d.ts +7 -0
  74. package/dist/index.js +7 -0
  75. package/dist/interfaces/ps-checkbox-matrix-cell.d.ts +6 -0
  76. package/dist/interfaces/ps-checkbox-matrix-cell.js +2 -0
  77. package/dist/interfaces/ps-checkbox-matrix-column.d.ts +5 -0
  78. package/dist/interfaces/ps-checkbox-matrix-column.js +2 -0
  79. package/dist/interfaces/ps-checkbox-matrix-group.d.ts +6 -0
  80. package/dist/interfaces/ps-checkbox-matrix-group.js +2 -0
  81. package/dist/interfaces/ps-checkbox-matrix-labels.d.ts +9 -0
  82. package/dist/interfaces/ps-checkbox-matrix-labels.js +2 -0
  83. package/dist/interfaces/ps-checkbox-matrix-row.d.ts +6 -0
  84. package/dist/interfaces/ps-checkbox-matrix-row.js +2 -0
  85. package/dist/portable-text/index.d.ts +1 -1
  86. package/dist/portable-text-core/components/ps-portable-text-core-editor-stub.d.ts +2 -0
  87. package/dist/portable-text-core/components/ps-portable-text-core-editor-stub.js +6 -0
  88. package/dist/portable-text-core/components/ps-portable-text-core-editor.d.ts +2 -0
  89. package/dist/portable-text-core/components/ps-portable-text-core-editor.js +68 -0
  90. package/dist/portable-text-core/components/ps-portable-text-core.d.ts +2 -17
  91. package/dist/portable-text-core/components/ps-portable-text-core.js +3 -24
  92. package/dist/portable-text-core/constants/ps-portable-text-core-config.d.ts +36 -19
  93. package/dist/portable-text-core/constants/ps-portable-text-core-config.js +29 -9
  94. package/dist/portable-text-core/contexts/ps-portable-text-core-context.d.ts +2 -0
  95. package/dist/portable-text-core/contexts/ps-portable-text-core-context.js +12 -0
  96. package/dist/portable-text-core/hooks/use-ps-portable-text-link-form.d.ts +3 -1
  97. package/dist/portable-text-core/hooks/use-ps-portable-text-link-form.js +10 -4
  98. package/dist/portable-text-core/hooks/use-ps-portable-text-toolbar.d.ts +5 -10
  99. package/dist/portable-text-core/hooks/use-ps-portable-text-toolbar.js +17 -49
  100. package/dist/portable-text-core/index.d.ts +5 -1
  101. package/dist/portable-text-core/index.js +4 -0
  102. package/dist/portable-text-core/interfaces/ps-portable-text-active-formats.d.ts +10 -0
  103. package/dist/portable-text-core/interfaces/ps-portable-text-active-formats.js +2 -0
  104. package/dist/portable-text-core/interfaces/ps-portable-text-block-draft.d.ts +7 -0
  105. package/dist/portable-text-core/interfaces/ps-portable-text-block-draft.js +2 -0
  106. package/dist/portable-text-core/interfaces/ps-portable-text-core-class-names.d.ts +8 -0
  107. package/dist/portable-text-core/interfaces/ps-portable-text-core-class-names.js +2 -0
  108. package/dist/portable-text-core/interfaces/ps-portable-text-core-context-data.d.ts +9 -0
  109. package/dist/portable-text-core/interfaces/ps-portable-text-core-context-data.js +2 -0
  110. package/dist/portable-text-core/interfaces/ps-portable-text-core-props.d.ts +16 -0
  111. package/dist/portable-text-core/interfaces/ps-portable-text-core-props.js +2 -0
  112. package/dist/portable-text-core/interfaces/ps-portable-text-editor-labels.d.ts +1 -0
  113. package/dist/portable-text-core/interfaces/ps-portable-text-extension-options.d.ts +6 -0
  114. package/dist/portable-text-core/interfaces/ps-portable-text-extension-options.js +2 -0
  115. package/dist/portable-text-core/interfaces/ps-portable-text-span-draft.d.ts +4 -0
  116. package/dist/portable-text-core/interfaces/ps-portable-text-span-draft.js +2 -0
  117. package/dist/portable-text-core/interfaces/ps-portable-text-toolbar-state.d.ts +5 -0
  118. package/dist/portable-text-core/interfaces/ps-portable-text-toolbar-state.js +2 -0
  119. package/dist/portable-text-core/services/ps-portable-text-command-service.d.ts +14 -0
  120. package/dist/portable-text-core/services/ps-portable-text-command-service.js +77 -0
  121. package/dist/portable-text-core/services/ps-portable-text-converter-service.d.ts +18 -0
  122. package/dist/portable-text-core/services/ps-portable-text-converter-service.js +200 -0
  123. package/dist/portable-text-core/services/ps-portable-text-editor-service.d.ts +1 -0
  124. package/dist/portable-text-core/services/ps-portable-text-editor-service.js +4 -0
  125. package/dist/portable-text-core/services/ps-portable-text-extension-service.d.ts +8 -0
  126. package/dist/portable-text-core/services/ps-portable-text-extension-service.js +93 -0
  127. package/dist/portable-text-engine/index.d.ts +1 -0
  128. package/dist/portable-text-engine/index.js +17 -0
  129. package/dist/portable-text-engine/worker.d.ts +1 -0
  130. package/dist/portable-text-engine/worker.js +17 -0
  131. package/dist/services/ps-checkbox-matrix-service.d.ts +9 -0
  132. package/dist/services/ps-checkbox-matrix-service.js +32 -0
  133. package/package.json +30 -6
  134. package/dist/constants/ps-portable-text-editor-renderers.d.ts +0 -6
  135. package/dist/constants/ps-portable-text-editor-renderers.js +0 -32
  136. 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 schemaDefinition: {
21
- readonly annotations: readonly [{
22
- readonly name: "link";
23
- readonly fields: readonly [{
24
- readonly name: "href";
25
- readonly type: "string";
26
- }];
27
- }];
28
- readonly blockObjects: readonly [];
29
- readonly decorators: {
30
- name: "code" | "em" | "strong" | "underline";
31
- }[];
32
- readonly inlineObjects: readonly [];
33
- readonly lists: {
34
- name: "number" | "bullet";
35
- }[];
36
- readonly styles: {
37
- name: "blockquote" | "normal";
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
- schemaDefinition: (0, editor_1.defineSchema)({
21
- annotations: [{ name: Models.linkType, fields: [{ name: 'href', type: 'string' }] }],
22
- blockObjects: [],
23
- decorators: Models.decorators.map((name) => ({ name })),
24
- inlineObjects: [],
25
- lists: Models.listItems.map((name) => ({ name })),
26
- styles: Models.styles.map((name) => ({ name })),
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,2 @@
1
+ import type { PsPortableTextCoreContextData } from '../interfaces/ps-portable-text-core-context-data';
2
+ export declare const PsPortableTextCoreContext: import("react").Context<PsPortableTextCoreContextData>;
@@ -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 href = ps_portable_text_editor_service_1.PsPortableTextEditorService.normalizeLink(address);
26
- if (href === null) {
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(href);
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 editor_1 = require("@portabletext/editor");
5
- const selectors_1 = require("@portabletext/editor/selectors");
6
- const ps_portable_text_core_config_1 = require("../constants/ps-portable-text-core-config");
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, editor_1.useEditor)();
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
- bold: isBold,
21
- bulletedList: isBulletedList,
22
- code: isCode,
23
- italic: isItalic,
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 { BlockAnnotationRenderProps, BlockDecoratorRenderProps, BlockRenderProps, PortableTextBlock, } from '@portabletext/editor';
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,10 @@
1
+ export interface PsPortableTextActiveFormats {
2
+ bold: boolean;
3
+ bulletedList: boolean;
4
+ code: boolean;
5
+ italic: boolean;
6
+ link: boolean;
7
+ numberedList: boolean;
8
+ quote: boolean;
9
+ underline: boolean;
10
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,7 @@
1
+ import type { JSONContent } from '@tiptap/core';
2
+ export interface PsPortableTextBlockDraft {
3
+ level?: number;
4
+ listItem?: string;
5
+ paragraph: JSONContent;
6
+ style: string;
7
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,8 @@
1
+ export interface PsPortableTextCoreClassNames {
2
+ blockquote: string;
3
+ bulletList: string;
4
+ code: string;
5
+ link: string;
6
+ orderedList: string;
7
+ placeholder: string;
8
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -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,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -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,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -3,6 +3,7 @@ export interface PsPortableTextEditorLabels {
3
3
  bulletedList: string;
4
4
  cancel: string;
5
5
  code: string;
6
+ editor?: string;
6
7
  invalidLink: string;
7
8
  italic: string;
8
9
  link: string;
@@ -0,0 +1,6 @@
1
+ import type { PsPortableTextCoreClassNames } from './ps-portable-text-core-class-names';
2
+ export interface PsPortableTextExtensionOptions {
3
+ classNames: PsPortableTextCoreClassNames;
4
+ onLinkShortcut: () => void;
5
+ placeholder: string;
6
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,4 @@
1
+ export interface PsPortableTextSpanDraft {
2
+ marks: string[];
3
+ text: string;
4
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,5 @@
1
+ import type { PsPortableTextActiveFormats } from './ps-portable-text-active-formats';
2
+ export interface PsPortableTextToolbarState {
3
+ active: PsPortableTextActiveFormats;
4
+ linkHref: string;
5
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -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
+ }