tetrons 2.3.27 → 2.3.28

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 (48) hide show
  1. package/dist/app/api/ai-action/route.d.mts +9 -0
  2. package/dist/app/api/ai-action/route.mjs +36 -0
  3. package/dist/app/api/export/route.d.mts +3 -0
  4. package/dist/app/api/export/route.mjs +8 -0
  5. package/dist/app/api/register/route.d.mts +10 -0
  6. package/dist/app/api/register/route.mjs +85 -0
  7. package/dist/app/api/save/route.d.mts +9 -0
  8. package/dist/app/api/save/route.mjs +18 -0
  9. package/dist/app/api/transcribe/route.d.mts +10 -0
  10. package/dist/app/api/transcribe/route.mjs +46 -0
  11. package/dist/app/api/validate/route.d.mts +13 -0
  12. package/dist/app/api/validate/route.mjs +107 -0
  13. package/package.json +2 -2
  14. package/dist/app/page.d.ts +0 -2
  15. package/dist/components/components/UI/Button.tsx +0 -0
  16. package/dist/components/components/UI/Dropdown.tsx +0 -0
  17. package/dist/components/components/tetrons/EditorContent.tsx +0 -280
  18. package/dist/components/components/tetrons/ResizableImageComponent.tsx +0 -112
  19. package/dist/components/components/tetrons/ResizableVideoComponent.tsx +0 -56
  20. package/dist/components/tetrons/EditorContent.d.ts +0 -6
  21. package/dist/components/tetrons/ResizableImage.d.ts +0 -1
  22. package/dist/components/tetrons/ResizableImage.ts +0 -35
  23. package/dist/components/tetrons/ResizableImageComponent.d.ts +0 -4
  24. package/dist/components/tetrons/ResizableImageComponent.jsx +0 -73
  25. package/dist/components/tetrons/ResizableVideo.ts +0 -66
  26. package/dist/components/tetrons/extensions/Spellcheck.ts +0 -50
  27. package/dist/components/tetrons/helpers.ts +0 -0
  28. package/dist/components/tetrons/toolbar/AIGroup.tsx +0 -209
  29. package/dist/components/tetrons/toolbar/ActionGroup.tsx +0 -218
  30. package/dist/components/tetrons/toolbar/ClipboardGroup.tsx +0 -58
  31. package/dist/components/tetrons/toolbar/FileGroup.tsx +0 -66
  32. package/dist/components/tetrons/toolbar/FontStyleGroup.tsx +0 -194
  33. package/dist/components/tetrons/toolbar/InsertGroup.tsx +0 -267
  34. package/dist/components/tetrons/toolbar/ListAlignGroup.tsx +0 -69
  35. package/dist/components/tetrons/toolbar/MiscGroup.tsx +0 -104
  36. package/dist/components/tetrons/toolbar/TableContextMenu.tsx +0 -91
  37. package/dist/components/tetrons/toolbar/TetronsToolbar.tsx +0 -77
  38. package/dist/components/tetrons/toolbar/ToolbarButton.tsx +0 -36
  39. package/dist/components/tetrons/toolbar/extensions/Comment.ts +0 -72
  40. package/dist/components/tetrons/toolbar/extensions/Embed.ts +0 -113
  41. package/dist/components/tetrons/toolbar/extensions/FontFamily.ts +0 -43
  42. package/dist/components/tetrons/toolbar/extensions/FontSize.ts +0 -43
  43. package/dist/components/tetrons/toolbar/extensions/ResizableTable.ts +0 -16
  44. package/dist/components/tetrons/toolbar/marks/Subscript.ts +0 -45
  45. package/dist/components/tetrons/toolbar/marks/Superscript.ts +0 -45
  46. package/dist/index.d.ts +0 -6
  47. package/dist/index.js +0 -17012
  48. package/dist/styles/styles/tetrons.css +0 -563
@@ -1,72 +0,0 @@
1
- import { Mark, mergeAttributes } from "@tiptap/core";
2
-
3
- export interface CommentOptions {
4
- HTMLAttributes: {
5
- class?: string;
6
- style?: string;
7
- [key: string]: unknown;
8
- };
9
- }
10
-
11
- declare module "@tiptap/core" {
12
- interface Commands<ReturnType> {
13
- comment: {
14
- setComment: (comment: string) => ReturnType;
15
- unsetComment: () => ReturnType;
16
- };
17
- }
18
- }
19
-
20
- export const Comment = Mark.create<CommentOptions>({
21
- name: "comment",
22
-
23
- addOptions() {
24
- return {
25
- HTMLAttributes: {},
26
- };
27
- },
28
-
29
- addAttributes() {
30
- return {
31
- comment: {
32
- default: "",
33
- },
34
- };
35
- },
36
-
37
- parseHTML() {
38
- return [
39
- {
40
- tag: "span[data-comment]",
41
- },
42
- ];
43
- },
44
-
45
- renderHTML({ HTMLAttributes }) {
46
- return [
47
- "span",
48
- mergeAttributes(HTMLAttributes, {
49
- "data-comment": HTMLAttributes.comment,
50
- class: "comment-highlight",
51
- title: HTMLAttributes.comment,
52
- style: "background-color: rgba(255, 230, 0, 0.3);",
53
- }),
54
- 0,
55
- ];
56
- },
57
-
58
- addCommands() {
59
- return {
60
- setComment:
61
- (comment) =>
62
- ({ commands }) => {
63
- return commands.setMark(this.name, { comment });
64
- },
65
- unsetComment:
66
- () =>
67
- ({ commands }) => {
68
- return commands.unsetMark(this.name);
69
- },
70
- };
71
- },
72
- });
@@ -1,113 +0,0 @@
1
- import { Node, mergeAttributes, CommandProps } from "@tiptap/core";
2
-
3
- export const Embed = Node.create({
4
- name: "embed",
5
- group: "block",
6
- atom: true,
7
-
8
- addAttributes() {
9
- return {
10
- src: { default: null },
11
- width: { default: 560 },
12
- height: { default: 315 },
13
- };
14
- },
15
-
16
- parseHTML() {
17
- return [{ tag: "iframe[src]" }];
18
- },
19
-
20
- renderHTML({ HTMLAttributes }) {
21
- return ["iframe", mergeAttributes(HTMLAttributes)];
22
- },
23
-
24
- addCommands() {
25
- return {
26
- setEmbed: ((attributes: {
27
- src: string;
28
- width?: number;
29
- height?: number;
30
- }) => {
31
- return ({ chain }: CommandProps): boolean => {
32
- return chain()
33
- .insertContent({
34
- type: this.name,
35
- attrs: attributes,
36
- })
37
- .run();
38
- };
39
- }).bind(this),
40
- };
41
- },
42
-
43
- addNodeView() {
44
- return ({ node, getPos, editor }) => {
45
- const container = document.createElement('div');
46
- container.style.position = 'relative';
47
- container.style.display = 'inline-block';
48
- container.style.width = node.attrs.width + 'px';
49
- container.style.height = node.attrs.height + 'px';
50
-
51
- const iframe = document.createElement('iframe');
52
- iframe.setAttribute('src', node.attrs.src);
53
- iframe.setAttribute('frameborder', '0');
54
- iframe.setAttribute('allowfullscreen', 'true');
55
- iframe.style.width = '100%';
56
- iframe.style.height = '100%';
57
- container.appendChild(iframe);
58
-
59
- const handle = document.createElement('div');
60
- handle.style.position = 'absolute';
61
- handle.style.width = '16px';
62
- handle.style.height = '16px';
63
- handle.style.right = '0';
64
- handle.style.bottom = '0';
65
- handle.style.cursor = 'se-resize';
66
- handle.style.background = 'rgba(0,0,0,0.5)';
67
- handle.style.borderRadius = '2px';
68
- container.appendChild(handle);
69
-
70
- let startX: number, startY: number, startWidth: number, startHeight: number;
71
-
72
- const onMouseDown = (event: MouseEvent) => {
73
- event.preventDefault();
74
- startX = event.clientX;
75
- startY = event.clientY;
76
- startWidth = container.offsetWidth;
77
- startHeight = container.offsetHeight;
78
- window.addEventListener('mousemove', onMouseMove);
79
- window.addEventListener('mouseup', onMouseUp);
80
- };
81
-
82
- const onMouseMove = (event: MouseEvent) => {
83
- const newWidth = Math.max(100, startWidth + (event.clientX - startX));
84
- const newHeight = Math.max(100, startHeight + (event.clientY - startY));
85
- container.style.width = newWidth + 'px';
86
- container.style.height = newHeight + 'px';
87
- };
88
-
89
- const onMouseUp = () => {
90
- window.removeEventListener("mousemove", onMouseMove);
91
- window.removeEventListener("mouseup", onMouseUp);
92
-
93
- editor.commands.command(({ tr }) => {
94
- tr.setNodeMarkup(getPos(), undefined, {
95
- ...node.attrs,
96
- width: container.offsetWidth,
97
- height: container.offsetHeight,
98
- });
99
- return true;
100
- });
101
- };
102
-
103
- handle.addEventListener('mousedown', onMouseDown);
104
-
105
- return {
106
- dom: container,
107
- destroy() {
108
- handle.removeEventListener('mousedown', onMouseDown);
109
- }
110
- };
111
- };
112
- },
113
- });
@@ -1,43 +0,0 @@
1
- import { Mark, mergeAttributes } from '@tiptap/core';
2
-
3
- declare module '@tiptap/core' {
4
- interface Commands<ReturnType> {
5
- fontFamily: {
6
- setFontFamily: (font: string) => ReturnType;
7
- };
8
- }
9
- }
10
-
11
- export const FontFamily = Mark.create({
12
- name: 'fontFamily',
13
-
14
- addAttributes() {
15
- return {
16
- font: {
17
- default: null,
18
- parseHTML: element => element.style.fontFamily.replace(/['"]/g, ''),
19
- renderHTML: attributes => {
20
- if (!attributes.font) return {};
21
- return { style: `font-family: ${attributes.font}` };
22
- },
23
- },
24
- };
25
- },
26
-
27
- parseHTML() {
28
- return [{ style: 'font-family' }];
29
- },
30
-
31
- renderHTML({ HTMLAttributes }) {
32
- return ['span', mergeAttributes(HTMLAttributes), 0];
33
- },
34
-
35
- addCommands() {
36
- return {
37
- setFontFamily:
38
- font =>
39
- ({ commands }) =>
40
- commands.setMark(this.name, { font }),
41
- };
42
- },
43
- });
@@ -1,43 +0,0 @@
1
- import { Mark, mergeAttributes } from "@tiptap/core";
2
-
3
- declare module "@tiptap/core" {
4
- interface Commands<ReturnType> {
5
- fontSize: {
6
- setFontSize: (size: string) => ReturnType;
7
- };
8
- }
9
- }
10
-
11
- export const FontSize = Mark.create({
12
- name: "fontSize",
13
-
14
- addAttributes() {
15
- return {
16
- size: {
17
- default: null,
18
- parseHTML: (element) => element.style.fontSize,
19
- renderHTML: (attributes) => {
20
- if (!attributes.size) return {};
21
- return { style: `font-size: ${attributes.size}` };
22
- },
23
- },
24
- };
25
- },
26
-
27
- parseHTML() {
28
- return [{ style: "font-size" }];
29
- },
30
-
31
- renderHTML({ HTMLAttributes }) {
32
- return ["span", mergeAttributes(HTMLAttributes), 0];
33
- },
34
-
35
- addCommands() {
36
- return {
37
- setFontSize:
38
- (size) =>
39
- ({ commands }) =>
40
- commands.setMark(this.name, { size }),
41
- };
42
- },
43
- });
@@ -1,16 +0,0 @@
1
- import { Table } from "@tiptap/extension-table";
2
- import { columnResizing, tableEditing } from "prosemirror-tables";
3
- import { Plugin } from "prosemirror-state";
4
-
5
- export const ResizableTable = Table.extend({
6
- addOptions() {
7
- return {
8
- ...this.parent?.(),
9
- resizable: true,
10
- };
11
- },
12
-
13
- addProseMirrorPlugins(): Plugin[] {
14
- return [columnResizing({ handleWidth: 5 }), tableEditing()];
15
- },
16
- });
@@ -1,45 +0,0 @@
1
- import { Mark, markInputRule, markPasteRule } from "@tiptap/core";
2
-
3
- export const Subscript = Mark.create({
4
- name: "subscript",
5
-
6
- excludes: "superscript",
7
-
8
- parseHTML() {
9
- return [{ tag: "sub" }, { style: "vertical-align: sub" }];
10
- },
11
-
12
- renderHTML() {
13
- return ["sub", 0];
14
- },
15
-
16
- addCommands() {
17
- return {
18
- toggleSubscript:
19
- () =>
20
- ({ chain }) =>
21
- chain()
22
- .unsetMark("superscript")
23
- .toggleMark(this.name)
24
- .run(),
25
- };
26
- },
27
-
28
- addInputRules() {
29
- return [
30
- markInputRule({
31
- find: /~([^~]+)~/,
32
- type: this.type,
33
- }),
34
- ];
35
- },
36
-
37
- addPasteRules() {
38
- return [
39
- markPasteRule({
40
- find: /~([^~]+)~/g,
41
- type: this.type,
42
- }),
43
- ];
44
- },
45
- });
@@ -1,45 +0,0 @@
1
- import { Mark, markInputRule, markPasteRule } from "@tiptap/core";
2
-
3
- export const Superscript = Mark.create({
4
- name: "superscript",
5
-
6
- excludes: "subscript",
7
-
8
- parseHTML() {
9
- return [{ tag: "sup" }, { style: "vertical-align: super" }];
10
- },
11
-
12
- renderHTML() {
13
- return ["sup", 0];
14
- },
15
-
16
- addCommands() {
17
- return {
18
- toggleSuperscript:
19
- () =>
20
- ({ chain }) =>
21
- chain()
22
- .unsetMark("subscript")
23
- .toggleMark(this.name)
24
- .run(),
25
- };
26
- },
27
-
28
- addInputRules() {
29
- return [
30
- markInputRule({
31
- find: /\^([^^]+)\^/,
32
- type: this.type,
33
- }),
34
- ];
35
- },
36
-
37
- addPasteRules() {
38
- return [
39
- markPasteRule({
40
- find: /\^([^^]+)\^/g,
41
- type: this.type,
42
- }),
43
- ];
44
- },
45
- });
package/dist/index.d.ts DELETED
@@ -1,6 +0,0 @@
1
- import EditorContent from "./components/tetrons/EditorContent";
2
- export declare function initializeTetrons(apiKey: string): Promise<void>;
3
- export declare function getTetronsVersion(): "" | "free" | "pro" | "premium" | "platinum";
4
- export declare function isApiKeyValid(): boolean;
5
- export { EditorContent };
6
- export default EditorContent;