-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathAtlasObjectNode.ts
More file actions
69 lines (61 loc) · 1.31 KB
/
AtlasObjectNode.ts
File metadata and controls
69 lines (61 loc) · 1.31 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
import { Node, mergeAttributes, type CommandProps } from "@tiptap/core";
import type { NodeOptions, AtlasObjectAttributes } from "../index";
export const AtlasObjectNode = Node.create<NodeOptions>({
name: "atlas_object",
inline: true,
group: "inline",
atom: true,
addOptions() {
return {
HTMLAttributes: {},
};
},
addAttributes(): AtlasObjectAttributes {
return {
atlas: "",
sprite: "",
};
},
parseHTML() {
return [
{
tag: "span[data-atlas-object-node]",
},
];
},
renderHTML({ HTMLAttributes, node }) {
let { atlas, sprite } = node.attrs;
if (!atlas) {
atlas = "minecraft:blocks"
}
return [
"span",
mergeAttributes(this.options.HTMLAttributes, HTMLAttributes, {
"data-atlas-object-node": "true",
contenteditable: "false",
style: `
background-color: #18181b;
padding: 0px 5px;
border-radius: 4px;
font-size: 0.9rem;
display: inline-block;
vertical-align: var(--custom-source-align, middle);
text-decoration: inherit;
`,
}),
["span", {}, `OBJECT: [${sprite}@${atlas}]`],
];
},
addCommands() {
return {
insertAtlasObject:
(attrs) =>
({ commands }: CommandProps) => {
return commands.insertContent({
type: this.name,
attrs,
});
},
};
},
});