@pallasoft/ps-input-components 2.2.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 (83) hide show
  1. package/dist/components/ps-portable-text-editor.d.ts +1 -1
  2. package/dist/components/ps-portable-text-editor.js +1 -2
  3. package/dist/components/ps-portable-text-link-dialog.d.ts +2 -1
  4. package/dist/components/ps-portable-text-link-dialog.js +2 -2
  5. package/dist/components/ps-portable-text-toolbar.js +2 -7
  6. package/dist/constants/ps-portable-text-editor-config.d.ts +8 -0
  7. package/dist/constants/ps-portable-text-editor-config.js +8 -0
  8. package/dist/esm/components/ps-portable-text-editor.js +1 -2
  9. package/dist/esm/components/ps-portable-text-link-dialog.js +2 -2
  10. package/dist/esm/components/ps-portable-text-toolbar.js +2 -7
  11. package/dist/esm/constants/ps-portable-text-editor-config.js +8 -0
  12. package/dist/esm/portable-text-core/components/ps-portable-text-core-editor-stub.js +2 -0
  13. package/dist/esm/portable-text-core/components/ps-portable-text-core-editor.js +64 -0
  14. package/dist/esm/portable-text-core/components/ps-portable-text-core.js +5 -26
  15. package/dist/esm/portable-text-core/constants/ps-portable-text-core-config.js +29 -9
  16. package/dist/esm/portable-text-core/contexts/ps-portable-text-core-context.js +9 -0
  17. package/dist/esm/portable-text-core/hooks/use-ps-portable-text-link-form.js +11 -5
  18. package/dist/esm/portable-text-core/hooks/use-ps-portable-text-toolbar.js +17 -49
  19. package/dist/esm/portable-text-core/index.js +4 -0
  20. package/dist/esm/portable-text-core/interfaces/ps-portable-text-active-formats.js +1 -0
  21. package/dist/esm/portable-text-core/interfaces/ps-portable-text-block-draft.js +1 -0
  22. package/dist/esm/portable-text-core/interfaces/ps-portable-text-core-class-names.js +1 -0
  23. package/dist/esm/portable-text-core/interfaces/ps-portable-text-core-context-data.js +1 -0
  24. package/dist/esm/portable-text-core/interfaces/ps-portable-text-core-props.js +1 -0
  25. package/dist/esm/portable-text-core/interfaces/ps-portable-text-extension-options.js +1 -0
  26. package/dist/esm/portable-text-core/interfaces/ps-portable-text-span-draft.js +1 -0
  27. package/dist/esm/portable-text-core/interfaces/ps-portable-text-toolbar-state.js +1 -0
  28. package/dist/esm/portable-text-core/services/ps-portable-text-command-service.js +73 -0
  29. package/dist/esm/portable-text-core/services/ps-portable-text-converter-service.js +196 -0
  30. package/dist/esm/portable-text-core/services/ps-portable-text-editor-service.js +4 -0
  31. package/dist/esm/portable-text-core/services/ps-portable-text-extension-service.js +89 -0
  32. package/dist/esm/portable-text-engine/index.js +1 -0
  33. package/dist/esm/portable-text-engine/worker.js +1 -0
  34. package/dist/portable-text/index.d.ts +1 -1
  35. package/dist/portable-text-core/components/ps-portable-text-core-editor-stub.d.ts +2 -0
  36. package/dist/portable-text-core/components/ps-portable-text-core-editor-stub.js +6 -0
  37. package/dist/portable-text-core/components/ps-portable-text-core-editor.d.ts +2 -0
  38. package/dist/portable-text-core/components/ps-portable-text-core-editor.js +68 -0
  39. package/dist/portable-text-core/components/ps-portable-text-core.d.ts +2 -17
  40. package/dist/portable-text-core/components/ps-portable-text-core.js +3 -24
  41. package/dist/portable-text-core/constants/ps-portable-text-core-config.d.ts +36 -19
  42. package/dist/portable-text-core/constants/ps-portable-text-core-config.js +29 -9
  43. package/dist/portable-text-core/contexts/ps-portable-text-core-context.d.ts +2 -0
  44. package/dist/portable-text-core/contexts/ps-portable-text-core-context.js +12 -0
  45. package/dist/portable-text-core/hooks/use-ps-portable-text-link-form.d.ts +3 -1
  46. package/dist/portable-text-core/hooks/use-ps-portable-text-link-form.js +10 -4
  47. package/dist/portable-text-core/hooks/use-ps-portable-text-toolbar.d.ts +5 -10
  48. package/dist/portable-text-core/hooks/use-ps-portable-text-toolbar.js +17 -49
  49. package/dist/portable-text-core/index.d.ts +5 -1
  50. package/dist/portable-text-core/index.js +4 -0
  51. package/dist/portable-text-core/interfaces/ps-portable-text-active-formats.d.ts +10 -0
  52. package/dist/portable-text-core/interfaces/ps-portable-text-active-formats.js +2 -0
  53. package/dist/portable-text-core/interfaces/ps-portable-text-block-draft.d.ts +7 -0
  54. package/dist/portable-text-core/interfaces/ps-portable-text-block-draft.js +2 -0
  55. package/dist/portable-text-core/interfaces/ps-portable-text-core-class-names.d.ts +8 -0
  56. package/dist/portable-text-core/interfaces/ps-portable-text-core-class-names.js +2 -0
  57. package/dist/portable-text-core/interfaces/ps-portable-text-core-context-data.d.ts +9 -0
  58. package/dist/portable-text-core/interfaces/ps-portable-text-core-context-data.js +2 -0
  59. package/dist/portable-text-core/interfaces/ps-portable-text-core-props.d.ts +16 -0
  60. package/dist/portable-text-core/interfaces/ps-portable-text-core-props.js +2 -0
  61. package/dist/portable-text-core/interfaces/ps-portable-text-editor-labels.d.ts +1 -0
  62. package/dist/portable-text-core/interfaces/ps-portable-text-extension-options.d.ts +6 -0
  63. package/dist/portable-text-core/interfaces/ps-portable-text-extension-options.js +2 -0
  64. package/dist/portable-text-core/interfaces/ps-portable-text-span-draft.d.ts +4 -0
  65. package/dist/portable-text-core/interfaces/ps-portable-text-span-draft.js +2 -0
  66. package/dist/portable-text-core/interfaces/ps-portable-text-toolbar-state.d.ts +5 -0
  67. package/dist/portable-text-core/interfaces/ps-portable-text-toolbar-state.js +2 -0
  68. package/dist/portable-text-core/services/ps-portable-text-command-service.d.ts +14 -0
  69. package/dist/portable-text-core/services/ps-portable-text-command-service.js +77 -0
  70. package/dist/portable-text-core/services/ps-portable-text-converter-service.d.ts +18 -0
  71. package/dist/portable-text-core/services/ps-portable-text-converter-service.js +200 -0
  72. package/dist/portable-text-core/services/ps-portable-text-editor-service.d.ts +1 -0
  73. package/dist/portable-text-core/services/ps-portable-text-editor-service.js +4 -0
  74. package/dist/portable-text-core/services/ps-portable-text-extension-service.d.ts +8 -0
  75. package/dist/portable-text-core/services/ps-portable-text-extension-service.js +93 -0
  76. package/dist/portable-text-engine/index.d.ts +1 -0
  77. package/dist/portable-text-engine/index.js +17 -0
  78. package/dist/portable-text-engine/worker.d.ts +1 -0
  79. package/dist/portable-text-engine/worker.js +17 -0
  80. package/package.json +29 -5
  81. package/dist/constants/ps-portable-text-editor-renderers.d.ts +0 -6
  82. package/dist/constants/ps-portable-text-editor-renderers.js +0 -32
  83. package/dist/esm/constants/ps-portable-text-editor-renderers.js +0 -29
@@ -0,0 +1,93 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PsPortableTextExtensionService = void 0;
4
+ const ps_models_1 = require("@pallasoft/ps-models");
5
+ const core_1 = require("@tiptap/core");
6
+ const extension_blockquote_1 = require("@tiptap/extension-blockquote");
7
+ const extension_bold_1 = require("@tiptap/extension-bold");
8
+ const extension_code_1 = require("@tiptap/extension-code");
9
+ const extension_document_1 = require("@tiptap/extension-document");
10
+ const extension_hard_break_1 = require("@tiptap/extension-hard-break");
11
+ const extension_italic_1 = require("@tiptap/extension-italic");
12
+ const extension_link_1 = require("@tiptap/extension-link");
13
+ const extension_list_1 = require("@tiptap/extension-list");
14
+ const extension_paragraph_1 = require("@tiptap/extension-paragraph");
15
+ const extension_text_1 = require("@tiptap/extension-text");
16
+ const extension_underline_1 = require("@tiptap/extension-underline");
17
+ const extensions_1 = require("@tiptap/extensions");
18
+ const ps_portable_text_core_config_1 = require("../constants/ps-portable-text-core-config");
19
+ const ps_portable_text_editor_service_1 = require("./ps-portable-text-editor-service");
20
+ class PsPortableTextExtensionService {
21
+ static extensions({ classNames, onLinkShortcut, placeholder, }) {
22
+ return [
23
+ extension_document_1.Document,
24
+ extension_paragraph_1.Paragraph,
25
+ extension_text_1.Text,
26
+ extension_hard_break_1.HardBreak,
27
+ extension_bold_1.Bold,
28
+ extension_italic_1.Italic,
29
+ extension_underline_1.Underline,
30
+ extension_code_1.Code.extend({ excludes: extension_code_1.Code.name }).configure({
31
+ HTMLAttributes: { class: classNames.code },
32
+ }),
33
+ extension_blockquote_1.Blockquote.extend({ content: ps_portable_text_core_config_1.PsPortableTextCoreConfig.blockquoteContent }).configure({
34
+ HTMLAttributes: { class: classNames.blockquote },
35
+ }),
36
+ extension_list_1.BulletList.configure({ HTMLAttributes: { class: classNames.bulletList } }),
37
+ extension_list_1.OrderedList.configure({ HTMLAttributes: { class: classNames.orderedList } }),
38
+ extension_list_1.ListItem.extend({
39
+ content: ps_portable_text_core_config_1.PsPortableTextCoreConfig.listItemContent,
40
+ addKeyboardShortcuts() {
41
+ return {
42
+ ...this.parent?.(),
43
+ [ps_portable_text_core_config_1.PsPortableTextCoreConfig.shortcuts.nest]: () => PsPortableTextExtensionService.nest(this.editor),
44
+ [ps_portable_text_core_config_1.PsPortableTextCoreConfig.shortcuts.unnest]: () => PsPortableTextExtensionService.unnest(this.editor),
45
+ };
46
+ },
47
+ }),
48
+ extension_list_1.ListKeymap,
49
+ extension_link_1.Link.configure({
50
+ autolink: true,
51
+ defaultProtocol: ps_portable_text_core_config_1.PsPortableTextCoreConfig.defaultLinkProtocol,
52
+ HTMLAttributes: { class: classNames.link },
53
+ isAllowedUri: (url, context) => context.defaultValidate(url) && ps_portable_text_editor_service_1.PsPortableTextEditorService.normalizeLink(url) !== null,
54
+ linkOnPaste: true,
55
+ openOnClick: false,
56
+ }),
57
+ extensions_1.Placeholder.configure({
58
+ emptyEditorClass: classNames.placeholder,
59
+ placeholder: ({ editor }) => (editor.isEmpty ? placeholder : ''),
60
+ }),
61
+ extensions_1.UndoRedo,
62
+ core_1.Extension.create({
63
+ name: ps_portable_text_core_config_1.PsPortableTextCoreConfig.linkShortcutExtension,
64
+ addKeyboardShortcuts: () => ({
65
+ [ps_portable_text_core_config_1.PsPortableTextCoreConfig.shortcuts.link]: () => {
66
+ onLinkShortcut();
67
+ return true;
68
+ },
69
+ }),
70
+ }),
71
+ ];
72
+ }
73
+ static listDepth(editor) {
74
+ const { $from } = editor.state.selection;
75
+ return Array.from({ length: $from.depth }, (_, index) => $from.node(index + 1)).filter((node) => node.type.name === ps_portable_text_core_config_1.PsPortableTextCoreConfig.nodes.listItem).length;
76
+ }
77
+ static nest(editor) {
78
+ const depth = PsPortableTextExtensionService.listDepth(editor);
79
+ if (depth === 0)
80
+ return false;
81
+ if (depth < ps_models_1.Common.PortableTextConfig.maxListLevel) {
82
+ editor.commands.sinkListItem(ps_portable_text_core_config_1.PsPortableTextCoreConfig.nodes.listItem);
83
+ }
84
+ return true;
85
+ }
86
+ static unnest(editor) {
87
+ if (PsPortableTextExtensionService.listDepth(editor) === 0)
88
+ return false;
89
+ editor.commands.liftListItem(ps_portable_text_core_config_1.PsPortableTextCoreConfig.nodes.listItem);
90
+ return true;
91
+ }
92
+ }
93
+ exports.PsPortableTextExtensionService = PsPortableTextExtensionService;
@@ -0,0 +1 @@
1
+ export * from '../portable-text-core/components/ps-portable-text-core-editor';
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("../portable-text-core/components/ps-portable-text-core-editor"), exports);
@@ -0,0 +1 @@
1
+ export * from '../portable-text-core/components/ps-portable-text-core-editor-stub';
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("../portable-text-core/components/ps-portable-text-core-editor-stub"), exports);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pallasoft/ps-input-components",
3
- "version": "2.2.0",
3
+ "version": "3.0.0",
4
4
  "private": false,
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/esm/index.js",
@@ -30,6 +30,14 @@
30
30
  "module": "./dist/esm/portable-text-core/index.js",
31
31
  "require": "./dist/portable-text-core/index.js",
32
32
  "default": "./dist/portable-text-core/index.js"
33
+ },
34
+ "./portable-text-engine": {
35
+ "types": "./dist/portable-text-engine/index.d.ts",
36
+ "workerd": "./dist/esm/portable-text-engine/worker.js",
37
+ "worker": "./dist/esm/portable-text-engine/worker.js",
38
+ "module": "./dist/esm/portable-text-engine/index.js",
39
+ "require": "./dist/portable-text-engine/index.js",
40
+ "default": "./dist/portable-text-engine/index.js"
33
41
  }
34
42
  },
35
43
  "files": [
@@ -56,12 +64,25 @@
56
64
  "@pallasoft/ps-models": "^1.4.0",
57
65
  "@pallasoft/ps-popovers": "^1.7.0",
58
66
  "@pallasoft/ps-utilities": "^2.13.0",
59
- "@portabletext/editor": "^3.3.19",
60
- "@portabletext/sanity-bridge": "^1.2.14",
67
+ "@portabletext/schema": "^2.2.4",
68
+ "@tiptap/core": "^3.31.4",
69
+ "@tiptap/extension-blockquote": "^3.31.4",
70
+ "@tiptap/extension-bold": "^3.31.4",
71
+ "@tiptap/extension-code": "^3.31.4",
72
+ "@tiptap/extension-document": "^3.31.4",
73
+ "@tiptap/extension-hard-break": "^3.31.4",
74
+ "@tiptap/extension-italic": "^3.31.4",
75
+ "@tiptap/extension-link": "^3.31.4",
76
+ "@tiptap/extension-list": "^3.31.4",
77
+ "@tiptap/extension-paragraph": "^3.31.4",
78
+ "@tiptap/extension-text": "^3.31.4",
79
+ "@tiptap/extension-underline": "^3.31.4",
80
+ "@tiptap/extensions": "^3.31.4",
81
+ "@tiptap/pm": "^3.31.4",
82
+ "@tiptap/react": "^3.31.4",
61
83
  "libphonenumber-js": "^1.13.13",
62
84
  "react-aria-components": "^1.19.0",
63
- "react-datepicker": "^9.1.0",
64
- "rxjs": "^7.8.2"
85
+ "react-datepicker": "^9.1.0"
65
86
  },
66
87
  "peerDependencies": {
67
88
  "react": "^18 || ^19",
@@ -120,6 +141,9 @@
120
141
  ],
121
142
  "portable-text-core": [
122
143
  "./dist/portable-text-core/index.d.ts"
144
+ ],
145
+ "portable-text-engine": [
146
+ "./dist/portable-text-engine/index.d.ts"
123
147
  ]
124
148
  }
125
149
  },
@@ -1,6 +0,0 @@
1
- import type { BlockAnnotationRenderProps, BlockDecoratorRenderProps, BlockRenderProps } from '@portabletext/editor';
2
- export declare const PsPortableTextEditorRenderers: {
3
- renderBlock: ({ children, listItem, style }: BlockRenderProps) => import("react").JSX.Element;
4
- renderDecorator: ({ children, value }: BlockDecoratorRenderProps) => import("react").JSX.Element;
5
- renderAnnotation: ({ children }: BlockAnnotationRenderProps) => import("react").JSX.Element;
6
- };
@@ -1,32 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.PsPortableTextEditorRenderers = void 0;
4
- const jsx_runtime_1 = require("react/jsx-runtime");
5
- const ps_portable_text_core_config_1 = require("../portable-text-core/constants/ps-portable-text-core-config");
6
- exports.PsPortableTextEditorRenderers = {
7
- renderBlock: ({ children, listItem, style }) => {
8
- if (listItem === ps_portable_text_core_config_1.PsPortableTextCoreConfig.listItems.bullet) {
9
- return ((0, jsx_runtime_1.jsx)("div", { className: "relative pl-6 before:absolute before:left-1 before:content-['\u2022']", children: children }));
10
- }
11
- if (listItem === ps_portable_text_core_config_1.PsPortableTextCoreConfig.listItems.number) {
12
- return ((0, jsx_runtime_1.jsx)("div", { className: "relative pl-6 before:absolute before:left-0 before:content-[counter(ps-list)'.']", style: { counterIncrement: 'ps-list' }, children: children }));
13
- }
14
- if (style === ps_portable_text_core_config_1.PsPortableTextCoreConfig.styles.blockquote) {
15
- return ((0, jsx_runtime_1.jsx)("div", { className: 'border-l-2 border-primary pl-3 text-ink/80', style: { counterReset: 'ps-list' }, children: children }));
16
- }
17
- return (0, jsx_runtime_1.jsx)("div", { style: { counterReset: 'ps-list' }, children: children });
18
- },
19
- renderDecorator: ({ children, value }) => {
20
- if (value === ps_portable_text_core_config_1.PsPortableTextCoreConfig.decorators.bold)
21
- return (0, jsx_runtime_1.jsx)("strong", { children: children });
22
- if (value === ps_portable_text_core_config_1.PsPortableTextCoreConfig.decorators.italic)
23
- return (0, jsx_runtime_1.jsx)("em", { children: children });
24
- if (value === ps_portable_text_core_config_1.PsPortableTextCoreConfig.decorators.underline)
25
- return (0, jsx_runtime_1.jsx)("u", { children: children });
26
- if (value === ps_portable_text_core_config_1.PsPortableTextCoreConfig.decorators.code) {
27
- return (0, jsx_runtime_1.jsx)("code", { className: 'rounded bg-ink/10 px-1 font-mono text-[0.9em]', children: children });
28
- }
29
- return children;
30
- },
31
- renderAnnotation: ({ children }) => ((0, jsx_runtime_1.jsx)("span", { className: 'text-primary underline', children: children })),
32
- };
@@ -1,29 +0,0 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
- import { PsPortableTextCoreConfig } from '../portable-text-core/constants/ps-portable-text-core-config';
3
- export const PsPortableTextEditorRenderers = {
4
- renderBlock: ({ children, listItem, style }) => {
5
- if (listItem === PsPortableTextCoreConfig.listItems.bullet) {
6
- return (_jsx("div", { className: "relative pl-6 before:absolute before:left-1 before:content-['\u2022']", children: children }));
7
- }
8
- if (listItem === PsPortableTextCoreConfig.listItems.number) {
9
- return (_jsx("div", { className: "relative pl-6 before:absolute before:left-0 before:content-[counter(ps-list)'.']", style: { counterIncrement: 'ps-list' }, children: children }));
10
- }
11
- if (style === PsPortableTextCoreConfig.styles.blockquote) {
12
- return (_jsx("div", { className: 'border-l-2 border-primary pl-3 text-ink/80', style: { counterReset: 'ps-list' }, children: children }));
13
- }
14
- return _jsx("div", { style: { counterReset: 'ps-list' }, children: children });
15
- },
16
- renderDecorator: ({ children, value }) => {
17
- if (value === PsPortableTextCoreConfig.decorators.bold)
18
- return _jsx("strong", { children: children });
19
- if (value === PsPortableTextCoreConfig.decorators.italic)
20
- return _jsx("em", { children: children });
21
- if (value === PsPortableTextCoreConfig.decorators.underline)
22
- return _jsx("u", { children: children });
23
- if (value === PsPortableTextCoreConfig.decorators.code) {
24
- return _jsx("code", { className: 'rounded bg-ink/10 px-1 font-mono text-[0.9em]', children: children });
25
- }
26
- return children;
27
- },
28
- renderAnnotation: ({ children }) => (_jsx("span", { className: 'text-primary underline', children: children })),
29
- };