@arqenoh/xrcore 3.2.0-r4

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 (47) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +14 -0
  3. package/dist/generator/index.d.ts +16 -0
  4. package/dist/generator/index.js +150 -0
  5. package/dist/generator/renderers/attachment.d.ts +5 -0
  6. package/dist/generator/renderers/attachment.js +40 -0
  7. package/dist/generator/renderers/components/Button.d.ts +9 -0
  8. package/dist/generator/renderers/components/Button.js +57 -0
  9. package/dist/generator/renderers/components/Container.d.ts +7 -0
  10. package/dist/generator/renderers/components/Container.js +28 -0
  11. package/dist/generator/renderers/components/MediaGallery.d.ts +6 -0
  12. package/dist/generator/renderers/components/MediaGallery.js +35 -0
  13. package/dist/generator/renderers/components/Section.d.ts +7 -0
  14. package/dist/generator/renderers/components/Section.js +32 -0
  15. package/dist/generator/renderers/components/SelectMenu.d.ts +6 -0
  16. package/dist/generator/renderers/components/SelectMenu.js +51 -0
  17. package/dist/generator/renderers/components/Spacing.d.ts +7 -0
  18. package/dist/generator/renderers/components/Spacing.js +17 -0
  19. package/dist/generator/renderers/components/Thumbnail.d.ts +5 -0
  20. package/dist/generator/renderers/components/Thumbnail.js +17 -0
  21. package/dist/generator/renderers/components.d.ts +5 -0
  22. package/dist/generator/renderers/components.js +110 -0
  23. package/dist/generator/renderers/content.d.ts +21 -0
  24. package/dist/generator/renderers/content.js +190 -0
  25. package/dist/generator/renderers/embed.d.ts +9 -0
  26. package/dist/generator/renderers/embed.js +42 -0
  27. package/dist/generator/renderers/message.d.ts +4 -0
  28. package/dist/generator/renderers/message.js +60 -0
  29. package/dist/generator/renderers/reply.d.ts +4 -0
  30. package/dist/generator/renderers/reply.js +47 -0
  31. package/dist/generator/renderers/systemMessage.d.ts +8 -0
  32. package/dist/generator/renderers/systemMessage.js +127 -0
  33. package/dist/index.d.ts +23 -0
  34. package/dist/index.js +116 -0
  35. package/dist/static/client.d.ts +2 -0
  36. package/dist/static/client.js +30 -0
  37. package/dist/types.d.ts +59 -0
  38. package/dist/types.js +10 -0
  39. package/dist/utils/buildProfiles.d.ts +11 -0
  40. package/dist/utils/buildProfiles.js +43 -0
  41. package/dist/utils/embeds.d.ts +3 -0
  42. package/dist/utils/embeds.js +21 -0
  43. package/dist/utils/extend.d.ts +8 -0
  44. package/dist/utils/extend.js +8 -0
  45. package/dist/utils/utils.d.ts +4 -0
  46. package/dist/utils/utils.js +47 -0
  47. package/package.json +58 -0
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const react_1 = __importDefault(require("react"));
7
+ const discord_js_1 = require("discord.js");
8
+ function getPlaceholder(component) {
9
+ if (component.placeholder)
10
+ return component.placeholder;
11
+ switch (component.type) {
12
+ case discord_js_1.ComponentType.UserSelect:
13
+ return 'Selecionar usuário';
14
+ case discord_js_1.ComponentType.RoleSelect:
15
+ return 'Selecionar cargo';
16
+ case discord_js_1.ComponentType.MentionableSelect:
17
+ return 'Selecionar usuário ou cargo';
18
+ case discord_js_1.ComponentType.ChannelSelect:
19
+ return 'Selecionar canal';
20
+ case discord_js_1.ComponentType.StringSelect:
21
+ return 'Selecionar opção';
22
+ default:
23
+ return 'Selecionar';
24
+ }
25
+ }
26
+ function DiscordSelectMenu({ component }) {
27
+ return (react_1.default.createElement("div", { style: {
28
+ display: 'flex',
29
+ width: '100%',
30
+ minHeight: '40px',
31
+ alignItems: 'center',
32
+ justifyContent: 'space-between',
33
+ padding: '0 12px',
34
+ boxSizing: 'border-box',
35
+ borderRadius: '4px',
36
+ backgroundColor: '#1e1f22',
37
+ color: '#b5bac1',
38
+ fontSize: '14px',
39
+ } },
40
+ react_1.default.createElement("span", { style: {
41
+ overflow: 'hidden',
42
+ textOverflow: 'ellipsis',
43
+ whiteSpace: 'nowrap',
44
+ } }, getPlaceholder(component)),
45
+ react_1.default.createElement("span", { style: {
46
+ marginLeft: '8px',
47
+ fontSize: '9px',
48
+ } }, "\u25BC")));
49
+ }
50
+ exports.default = DiscordSelectMenu;
51
+ //# sourceMappingURL=SelectMenu.js.map
@@ -0,0 +1,7 @@
1
+ /// <reference types="react" />
2
+ import { SeparatorSpacingSize } from 'discord.js';
3
+ declare function DiscordSeparator({ divider, spacing }: {
4
+ divider: boolean;
5
+ spacing: SeparatorSpacingSize;
6
+ }): JSX.Element;
7
+ export default DiscordSeparator;
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const react_1 = __importDefault(require("react"));
7
+ const discord_js_1 = require("discord.js");
8
+ function DiscordSeparator({ divider, spacing }) {
9
+ return (react_1.default.createElement("div", { style: {
10
+ width: '100%',
11
+ height: divider ? '1px' : '0px',
12
+ backgroundColor: divider ? '#4f5359' : 'transparent',
13
+ margin: spacing === discord_js_1.SeparatorSpacingSize.Large ? '8px 0' : '4px 0',
14
+ } }));
15
+ }
16
+ exports.default = DiscordSeparator;
17
+ //# sourceMappingURL=Spacing.js.map
@@ -0,0 +1,5 @@
1
+ /// <reference types="react" />
2
+ declare function DiscordThumbnail({ url }: {
3
+ url: string;
4
+ }): JSX.Element;
5
+ export default DiscordThumbnail;
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const react_1 = __importDefault(require("react"));
7
+ function DiscordThumbnail({ url }) {
8
+ return (react_1.default.createElement("img", { src: url, alt: "Thumbnail", style: {
9
+ width: '85px',
10
+ height: '85px',
11
+ objectFit: 'cover',
12
+ borderRadius: '8px',
13
+ flexShrink: 0,
14
+ } }));
15
+ }
16
+ exports.default = DiscordThumbnail;
17
+ //# sourceMappingURL=Thumbnail.js.map
@@ -0,0 +1,5 @@
1
+ import { type MessageActionRowComponent, type ThumbnailComponent } from 'discord.js';
2
+ import React from 'react';
3
+ import type { RenderMessageContext } from '..';
4
+ export default function renderComponentRow(component: any, id: number, context: RenderMessageContext): Promise<React.ReactNode>;
5
+ export declare function renderComponent(component: MessageActionRowComponent | ThumbnailComponent, id: number): JSX.Element | undefined;
@@ -0,0 +1,110 @@
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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __importDefault = (this && this.__importDefault) || function (mod) {
26
+ return (mod && mod.__esModule) ? mod : { "default": mod };
27
+ };
28
+ Object.defineProperty(exports, "__esModule", { value: true });
29
+ exports.renderComponent = void 0;
30
+ const discord_components_react_1 = require("@derockdev/discord-components-react");
31
+ const discord_js_1 = require("discord.js");
32
+ const react_1 = __importDefault(require("react"));
33
+ const utils_1 = require("../../utils/utils");
34
+ const Container_1 = __importDefault(require("./components/Container"));
35
+ const Spacing_1 = __importDefault(require("./components/Spacing"));
36
+ const Section_1 = __importDefault(require("./components/Section"));
37
+ const Thumbnail_1 = __importDefault(require("./components/Thumbnail"));
38
+ const MediaGallery_1 = __importDefault(require("./components/MediaGallery"));
39
+ const SelectMenu_1 = __importDefault(require("./components/SelectMenu"));
40
+ const Button_1 = __importDefault(require("./components/Button"));
41
+ const content_1 = __importStar(require("./content"));
42
+ async function renderComponentRow(component, id, context) {
43
+ switch (component.type) {
44
+ case discord_js_1.ComponentType.ActionRow:
45
+ return (react_1.default.createElement(discord_components_react_1.DiscordActionRow, { key: id, style: {
46
+ display: 'flex',
47
+ width: '100%',
48
+ maxWidth: '500px',
49
+ gap: '8px',
50
+ flexWrap: 'wrap',
51
+ boxSizing: 'border-box',
52
+ } }, component.components.map((child, childId) => renderComponent(child, childId))));
53
+ case discord_js_1.ComponentType.Container: {
54
+ const children = await Promise.all(component.components.map((child, childId) => renderComponentRow(child, childId, context)));
55
+ return (react_1.default.createElement(Container_1.default, { key: id, accentColor: component.accentColor }, children));
56
+ }
57
+ case discord_js_1.ComponentType.TextDisplay:
58
+ return (react_1.default.createElement("div", { key: id, style: {
59
+ display: 'block',
60
+ width: '100%',
61
+ minWidth: 0,
62
+ lineHeight: '1.375rem',
63
+ overflowWrap: 'anywhere',
64
+ whiteSpace: 'normal',
65
+ } }, await (0, content_1.default)(component.content, Object.assign(Object.assign({}, context), { type: content_1.RenderType.COMPONENT }))));
66
+ case discord_js_1.ComponentType.Separator:
67
+ return (react_1.default.createElement(Spacing_1.default, { key: id, divider: component.divider, spacing: component.spacing }));
68
+ case discord_js_1.ComponentType.Section: {
69
+ const children = await Promise.all(component.components.map((child, childId) => renderComponentRow(child, childId, context)));
70
+ return (react_1.default.createElement(Section_1.default, { key: id, accessory: component.accessory
71
+ ? renderComponent(component.accessory, id)
72
+ : undefined }, children));
73
+ }
74
+ case discord_js_1.ComponentType.MediaGallery:
75
+ return (react_1.default.createElement(MediaGallery_1.default, { key: id, component: component }));
76
+ case discord_js_1.ComponentType.File:
77
+ return component.spoiler ? (react_1.default.createElement(discord_components_react_1.DiscordSpoiler, { key: id, slot: "attachment" },
78
+ react_1.default.createElement(discord_components_react_1.DiscordAttachment, { type: "file", slot: "attachment", url: component.file.url, alt: "Arquivo" }))) : (react_1.default.createElement(discord_components_react_1.DiscordAttachment, { key: id, type: "file", slot: "attachment", url: component.file.url, alt: "Arquivo" }));
79
+ default:
80
+ return null;
81
+ }
82
+ }
83
+ exports.default = renderComponentRow;
84
+ const ButtonStyleMapping = {
85
+ [discord_js_1.ButtonStyle.Primary]: 'primary',
86
+ [discord_js_1.ButtonStyle.Secondary]: 'secondary',
87
+ [discord_js_1.ButtonStyle.Success]: 'success',
88
+ [discord_js_1.ButtonStyle.Danger]: 'destructive',
89
+ [discord_js_1.ButtonStyle.Link]: 'secondary',
90
+ [discord_js_1.ButtonStyle.Premium]: 'primary',
91
+ };
92
+ function renderComponent(component, id) {
93
+ var _a;
94
+ switch (component.type) {
95
+ case discord_js_1.ComponentType.Button:
96
+ return (react_1.default.createElement(Button_1.default, { key: id, type: ButtonStyleMapping[component.style], url: (_a = component.url) !== null && _a !== void 0 ? _a : undefined, emoji: component.emoji ? (0, utils_1.parseDiscordEmoji)(component.emoji) : undefined }, component.label));
97
+ case discord_js_1.ComponentType.StringSelect:
98
+ case discord_js_1.ComponentType.UserSelect:
99
+ case discord_js_1.ComponentType.RoleSelect:
100
+ case discord_js_1.ComponentType.MentionableSelect:
101
+ case discord_js_1.ComponentType.ChannelSelect:
102
+ return (react_1.default.createElement(SelectMenu_1.default, { key: id, component: component }));
103
+ case discord_js_1.ComponentType.Thumbnail:
104
+ return (react_1.default.createElement(Thumbnail_1.default, { key: id, url: component.media.url }));
105
+ default:
106
+ return undefined;
107
+ }
108
+ }
109
+ exports.renderComponent = renderComponent;
110
+ //# sourceMappingURL=components.js.map
@@ -0,0 +1,21 @@
1
+ import { ChannelType } from 'discord.js';
2
+ import { type ReactNode } from 'react';
3
+ import type { SingleASTNode } from 'simple-markdown';
4
+ import type { RenderMessageContext } from '../';
5
+ export declare enum RenderType {
6
+ EMBED = 0,
7
+ REPLY = 1,
8
+ NORMAL = 2,
9
+ WEBHOOK = 3,
10
+ COMPONENT = 4
11
+ }
12
+ type RenderContentContext = RenderMessageContext & {
13
+ type: RenderType;
14
+ _internal?: {
15
+ largeEmojis?: boolean;
16
+ };
17
+ };
18
+ export default function renderContent(content: string, context: RenderContentContext): Promise<JSX.Element>;
19
+ export declare function renderASTNode(node: SingleASTNode, context: RenderContentContext): Promise<ReactNode>;
20
+ export declare function getChannelType(channelType: ChannelType): 'channel' | 'voice' | 'thread' | 'forum';
21
+ export {};
@@ -0,0 +1,190 @@
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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __importDefault = (this && this.__importDefault) || function (mod) {
26
+ return (mod && mod.__esModule) ? mod : { "default": mod };
27
+ };
28
+ Object.defineProperty(exports, "__esModule", { value: true });
29
+ exports.getChannelType = exports.renderASTNode = exports.RenderType = void 0;
30
+ const discord_components_react_1 = require("@derockdev/discord-components-react");
31
+ const discord_markdown_parser_1 = __importDefault(require("discord-markdown-parser"));
32
+ const discord_js_1 = require("discord.js");
33
+ const react_1 = __importStar(require("react"));
34
+ const utils_1 = require("../../utils/utils");
35
+ var RenderType;
36
+ (function (RenderType) {
37
+ RenderType[RenderType["EMBED"] = 0] = "EMBED";
38
+ RenderType[RenderType["REPLY"] = 1] = "REPLY";
39
+ RenderType[RenderType["NORMAL"] = 2] = "NORMAL";
40
+ RenderType[RenderType["WEBHOOK"] = 3] = "WEBHOOK";
41
+ RenderType[RenderType["COMPONENT"] = 4] = "COMPONENT";
42
+ })(RenderType || (exports.RenderType = RenderType = {}));
43
+ async function renderContent(content, context) {
44
+ if (context.type === RenderType.REPLY && content.length > 180)
45
+ content = content.slice(0, 180) + '...';
46
+ // parse the markdown
47
+ const parsed = (0, discord_markdown_parser_1.default)(content, context.type === RenderType.EMBED || context.type === RenderType.WEBHOOK || context.type === RenderType.COMPONENT ? 'extended' : 'normal');
48
+ // check if the parsed content is only emojis
49
+ const isOnlyEmojis = parsed.every((node) => ['emoji', 'twemoji'].includes(node.type) || (node.type === 'text' && node.content.trim().length === 0));
50
+ if (isOnlyEmojis) {
51
+ // now check if there are less than or equal to 25 emojis
52
+ const emojis = parsed.filter((node) => ['emoji', 'twemoji'].includes(node.type));
53
+ if (emojis.length <= 25) {
54
+ context._internal = {
55
+ largeEmojis: true,
56
+ };
57
+ }
58
+ }
59
+ return react_1.default.createElement(react_1.default.Fragment, null, await renderNodes(parsed, context));
60
+ }
61
+ exports.default = renderContent;
62
+ const renderNodes = async (nodes, context) => Array.isArray(nodes)
63
+ ? (await Promise.all(nodes.map((node) => renderASTNode(node, context)))).map((each, i) => (react_1.default.createElement(react_1.Fragment, { key: i }, each)))
64
+ : [await renderASTNode(nodes, context)];
65
+ async function renderASTNode(node, context) {
66
+ var _a;
67
+ if (!node)
68
+ return null;
69
+ const type = node.type;
70
+ switch (type) {
71
+ case 'text':
72
+ return node.content;
73
+ case 'link':
74
+ return react_1.default.createElement("a", { href: node.target }, await renderNodes(node.content, context));
75
+ case 'url':
76
+ case 'autolink':
77
+ return (react_1.default.createElement("a", { href: node.target, target: "_blank", rel: "noreferrer" }, ...await renderNodes(node.content, context)));
78
+ case 'blockQuote':
79
+ if (context.type === RenderType.REPLY) {
80
+ return await renderNodes(node.content, context);
81
+ }
82
+ return react_1.default.createElement(discord_components_react_1.DiscordQuote, null, ...await renderNodes(node.content, context));
83
+ case 'br':
84
+ case 'newline':
85
+ if (context.type === RenderType.REPLY)
86
+ return ' ';
87
+ return react_1.default.createElement("br", null);
88
+ case 'channel': {
89
+ const id = node.id;
90
+ const channel = await context.callbacks.resolveChannel(id);
91
+ return (react_1.default.createElement(discord_components_react_1.DiscordMention, { type: channel ? (channel.isDMBased() ? 'channel' : getChannelType(channel.type)) : 'channel' }, channel ? (channel.isDMBased() ? 'DM Channel' : channel.name) : `<#${id}>`));
92
+ }
93
+ case 'role': {
94
+ const id = node.id;
95
+ const role = await context.callbacks.resolveRole(id);
96
+ return (react_1.default.createElement(discord_components_react_1.DiscordMention, { type: "role", color: context.type === RenderType.REPLY ? undefined : role === null || role === void 0 ? void 0 : role.hexColor }, role ? role.name : `<@&${id}>`));
97
+ }
98
+ case 'user': {
99
+ const id = node.id;
100
+ const user = await context.callbacks.resolveUser(id);
101
+ return react_1.default.createElement(discord_components_react_1.DiscordMention, { type: "user" }, user ? user.displayName : `<@${id}>`);
102
+ }
103
+ case 'here':
104
+ case 'everyone':
105
+ return (react_1.default.createElement(discord_components_react_1.DiscordMention, { type: 'role', highlight: true }, `@${type}`));
106
+ case 'codeBlock':
107
+ if (context.type !== RenderType.REPLY) {
108
+ return react_1.default.createElement(discord_components_react_1.DiscordCodeBlock, { language: node.lang, code: node.content });
109
+ }
110
+ return react_1.default.createElement(discord_components_react_1.DiscordInlineCode, null, node.content);
111
+ case 'inlineCode':
112
+ return react_1.default.createElement(discord_components_react_1.DiscordInlineCode, null, node.content);
113
+ case 'em':
114
+ return react_1.default.createElement(discord_components_react_1.DiscordItalic, null, await renderNodes(node.content, context));
115
+ case 'strong':
116
+ return react_1.default.createElement(discord_components_react_1.DiscordBold, null, await renderNodes(node.content, context));
117
+ case 'underline':
118
+ return react_1.default.createElement(discord_components_react_1.DiscordUnderlined, null, await renderNodes(node.content, context));
119
+ case 'strikethrough':
120
+ return react_1.default.createElement("s", null, await renderNodes(node.content, context));
121
+ case 'emoticon':
122
+ return typeof node.content === 'string' ? node.content : await renderNodes(node.content, context);
123
+ case 'spoiler':
124
+ return react_1.default.createElement(discord_components_react_1.DiscordSpoiler, null, await renderNodes(node.content, context));
125
+ case 'emoji':
126
+ case 'twemoji': {
127
+ const large = ((_a = context._internal) === null || _a === void 0 ? void 0 : _a.largeEmojis) === true;
128
+ const url = (0, utils_1.parseDiscordEmoji)(node);
129
+ return (react_1.default.createElement("img", { src: url, alt: node.name || 'emoji', title: node.name || undefined, style: {
130
+ display: 'inline-block',
131
+ width: large ? '48px' : '22px',
132
+ height: large ? '48px' : '22px',
133
+ objectFit: 'contain',
134
+ verticalAlign: large ? 'middle' : '-5px',
135
+ margin: large ? '2px' : '0 1px',
136
+ } }));
137
+ }
138
+ case 'timestamp':
139
+ return react_1.default.createElement(discord_components_react_1.DiscordTime, { timestamp: parseInt(node.timestamp) * 1000, format: node.format });
140
+ case 'heading': {
141
+ const level = Number(node.level) || 1;
142
+ const fontSize = level === 1 ? '24px' :
143
+ level === 2 ? '20px' :
144
+ '16px';
145
+ return (react_1.default.createElement("div", { style: {
146
+ display: 'block',
147
+ fontSize,
148
+ lineHeight: '1.25',
149
+ fontWeight: 700,
150
+ color: '#f2f3f5',
151
+ marginTop: '4px',
152
+ marginBottom: '4px',
153
+ } }, await renderNodes(node.content, context)));
154
+ }
155
+ case 'subtext':
156
+ return (react_1.default.createElement("div", { style: {
157
+ display: 'block',
158
+ color: '#949ba4',
159
+ fontSize: '12px',
160
+ lineHeight: '16px',
161
+ fontWeight: 400,
162
+ } }, await renderNodes(node.content, context)));
163
+ default: {
164
+ console.log(`Unknown node type: ${type}`, node);
165
+ return typeof node.content === 'string' ? node.content : await renderNodes(node.content, context);
166
+ }
167
+ }
168
+ }
169
+ exports.renderASTNode = renderASTNode;
170
+ function getChannelType(channelType) {
171
+ switch (channelType) {
172
+ case discord_js_1.ChannelType.GuildCategory:
173
+ case discord_js_1.ChannelType.GuildAnnouncement:
174
+ case discord_js_1.ChannelType.GuildText:
175
+ return 'channel';
176
+ case discord_js_1.ChannelType.GuildVoice:
177
+ case discord_js_1.ChannelType.GuildStageVoice:
178
+ return 'voice';
179
+ case discord_js_1.ChannelType.PublicThread:
180
+ case discord_js_1.ChannelType.PrivateThread:
181
+ case discord_js_1.ChannelType.AnnouncementThread:
182
+ return 'thread';
183
+ case discord_js_1.ChannelType.GuildForum:
184
+ return 'forum';
185
+ default:
186
+ return 'channel';
187
+ }
188
+ }
189
+ exports.getChannelType = getChannelType;
190
+ //# sourceMappingURL=content.js.map
@@ -0,0 +1,9 @@
1
+ /// <reference types="react" />
2
+ import type { Embed, Message } from 'discord.js';
3
+ import type { RenderMessageContext } from '..';
4
+ type RenderEmbedContext = RenderMessageContext & {
5
+ index: number;
6
+ message: Message;
7
+ };
8
+ export declare function renderEmbed(embed: Embed, context: RenderEmbedContext): Promise<JSX.Element>;
9
+ export {};
@@ -0,0 +1,42 @@
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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __importDefault = (this && this.__importDefault) || function (mod) {
26
+ return (mod && mod.__esModule) ? mod : { "default": mod };
27
+ };
28
+ Object.defineProperty(exports, "__esModule", { value: true });
29
+ exports.renderEmbed = void 0;
30
+ const discord_components_react_1 = require("@derockdev/discord-components-react");
31
+ const react_1 = __importDefault(require("react"));
32
+ const embeds_1 = require("../../utils/embeds");
33
+ const content_1 = __importStar(require("./content"));
34
+ async function renderEmbed(embed, context) {
35
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r;
36
+ return (react_1.default.createElement(discord_components_react_1.DiscordEmbed, { embedTitle: (_a = embed.title) !== null && _a !== void 0 ? _a : undefined, slot: "embeds", key: `${context.message.id}-e-${context.index}`, authorImage: (_c = (_b = embed.author) === null || _b === void 0 ? void 0 : _b.proxyIconURL) !== null && _c !== void 0 ? _c : (_d = embed.author) === null || _d === void 0 ? void 0 : _d.iconURL, authorName: (_e = embed.author) === null || _e === void 0 ? void 0 : _e.name, authorUrl: (_f = embed.author) === null || _f === void 0 ? void 0 : _f.url, color: (_g = embed.hexColor) !== null && _g !== void 0 ? _g : undefined, image: (_j = (_h = embed.image) === null || _h === void 0 ? void 0 : _h.proxyURL) !== null && _j !== void 0 ? _j : (_k = embed.image) === null || _k === void 0 ? void 0 : _k.url, thumbnail: (_m = (_l = embed.thumbnail) === null || _l === void 0 ? void 0 : _l.proxyURL) !== null && _m !== void 0 ? _m : (_o = embed.thumbnail) === null || _o === void 0 ? void 0 : _o.url, url: (_p = embed.url) !== null && _p !== void 0 ? _p : undefined },
37
+ embed.description && (react_1.default.createElement(discord_components_react_1.DiscordEmbedDescription, { slot: "description" }, await (0, content_1.default)(embed.description, Object.assign(Object.assign({}, context), { type: content_1.RenderType.EMBED })))),
38
+ embed.fields.length > 0 && (react_1.default.createElement(discord_components_react_1.DiscordEmbedFields, { slot: "fields" }, await Promise.all(embed.fields.map(async (field, id) => (react_1.default.createElement(discord_components_react_1.DiscordEmbedField, { key: `${context.message.id}-e-${context.index}-f-${id}`, fieldTitle: field.name, inline: field.inline, inlineIndex: (0, embeds_1.calculateInlineIndex)(embed.fields, id) }, await (0, content_1.default)(field.value, Object.assign(Object.assign({}, context), { type: content_1.RenderType.EMBED })))))))),
39
+ embed.footer && (react_1.default.createElement(discord_components_react_1.DiscordEmbedFooter, { slot: "footer", footerImage: (_q = embed.footer.proxyIconURL) !== null && _q !== void 0 ? _q : embed.footer.iconURL, timestamp: (_r = embed.timestamp) !== null && _r !== void 0 ? _r : undefined }, embed.footer.text))));
40
+ }
41
+ exports.renderEmbed = renderEmbed;
42
+ //# sourceMappingURL=embed.js.map
@@ -0,0 +1,4 @@
1
+ /// <reference types="react" />
2
+ import type { Message } from 'discord.js';
3
+ import type { RenderMessageContext } from '..';
4
+ export default function renderMessage(message: Message, context: RenderMessageContext): Promise<JSX.Element | undefined>;
@@ -0,0 +1,60 @@
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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __importDefault = (this && this.__importDefault) || function (mod) {
26
+ return (mod && mod.__esModule) ? mod : { "default": mod };
27
+ };
28
+ Object.defineProperty(exports, "__esModule", { value: true });
29
+ const discord_components_react_1 = require("@derockdev/discord-components-react");
30
+ const react_1 = __importDefault(require("react"));
31
+ const utils_1 = require("../../utils/utils");
32
+ const attachment_1 = __importDefault(require("./attachment"));
33
+ const components_1 = __importDefault(require("./components"));
34
+ const content_1 = __importStar(require("./content"));
35
+ const embed_1 = require("./embed");
36
+ const reply_1 = __importDefault(require("./reply"));
37
+ const systemMessage_1 = __importDefault(require("./systemMessage"));
38
+ async function renderMessage(message, context) {
39
+ var _a;
40
+ if (message.system)
41
+ return (0, systemMessage_1.default)(message);
42
+ const isCrosspost = message.reference && message.reference.guildId !== ((_a = message.guild) === null || _a === void 0 ? void 0 : _a.id);
43
+ return (react_1.default.createElement(discord_components_react_1.DiscordMessage, { id: `m-${message.id}`, timestamp: message.createdAt.toISOString(), twentyFour: true, key: message.id, edited: message.editedAt !== null, server: isCrosspost !== null && isCrosspost !== void 0 ? isCrosspost : undefined, highlight: message.mentions.everyone, profile: message.author.id },
44
+ await (0, reply_1.default)(message, context),
45
+ message.interaction && (react_1.default.createElement(discord_components_react_1.DiscordCommand, { slot: "reply", profile: message.interaction.user.id, command: '/' + message.interaction.commandName })),
46
+ message.content &&
47
+ (await (0, content_1.default)(message.content, Object.assign(Object.assign({}, context), { type: message.webhookId ? content_1.RenderType.WEBHOOK : content_1.RenderType.NORMAL }))),
48
+ await (0, attachment_1.default)(message, context),
49
+ message.embeds.length > 0 &&
50
+ (await Promise.all(message.embeds.map(async (embed, id) => await (0, embed_1.renderEmbed)(embed, Object.assign(Object.assign({}, context), { index: id, message }))))),
51
+ message.components.length > 0 && (react_1.default.createElement(discord_components_react_1.DiscordAttachments, { slot: "components" }, await Promise.all(message.components.map((component, id) => (0, components_1.default)(component, id, context))))),
52
+ message.reactions.cache.size > 0 && (react_1.default.createElement(discord_components_react_1.DiscordReactions, { slot: "reactions" }, message.reactions.cache.map((reaction, id) => (react_1.default.createElement(discord_components_react_1.DiscordReaction, { key: `${message.id}r${id}`, name: reaction.emoji.name, emoji: (0, utils_1.parseDiscordEmoji)(reaction.emoji), count: reaction.count }))))),
53
+ message.hasThread && message.thread && (react_1.default.createElement(discord_components_react_1.DiscordThread, { slot: "thread", name: message.thread.name, cta: message.thread.messageCount
54
+ ? `${message.thread.messageCount} Message${message.thread.messageCount > 1 ? 's' : ''}`
55
+ : 'View Thread' }, message.thread.lastMessage ? (react_1.default.createElement(discord_components_react_1.DiscordThreadMessage, { profile: message.thread.lastMessage.author.id }, await (0, content_1.default)(message.thread.lastMessage.content.length > 128
56
+ ? message.thread.lastMessage.content.substring(0, 125) + '...'
57
+ : message.thread.lastMessage.content, Object.assign(Object.assign({}, context), { type: content_1.RenderType.REPLY })))) : (`Thread messages not saved.`)))));
58
+ }
59
+ exports.default = renderMessage;
60
+ //# sourceMappingURL=message.js.map
@@ -0,0 +1,4 @@
1
+ /// <reference types="react" />
2
+ import { type Message } from 'discord.js';
3
+ import type { RenderMessageContext } from '..';
4
+ export default function renderReply(message: Message, context: RenderMessageContext): Promise<JSX.Element | null>;
@@ -0,0 +1,47 @@
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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __importDefault = (this && this.__importDefault) || function (mod) {
26
+ return (mod && mod.__esModule) ? mod : { "default": mod };
27
+ };
28
+ Object.defineProperty(exports, "__esModule", { value: true });
29
+ const discord_components_react_1 = require("@derockdev/discord-components-react");
30
+ const discord_js_1 = require("discord.js");
31
+ const react_1 = __importDefault(require("react"));
32
+ const content_1 = __importStar(require("./content"));
33
+ async function renderReply(message, context) {
34
+ var _a, _b, _c, _d, _e, _f, _g, _h;
35
+ if (!message.reference)
36
+ return null;
37
+ if (message.reference.guildId !== ((_a = message.guild) === null || _a === void 0 ? void 0 : _a.id))
38
+ return null;
39
+ const referencedMessage = context.messages.find((m) => m.id === message.reference.messageId);
40
+ if (!referencedMessage)
41
+ return react_1.default.createElement(discord_components_react_1.DiscordReply, { slot: "reply" }, "N\u00E3o foi poss\u00EDvel carregar a mensagem.");
42
+ const isCrosspost = referencedMessage.reference && referencedMessage.reference.guildId !== ((_b = message.guild) === null || _b === void 0 ? void 0 : _b.id);
43
+ const isCommand = referencedMessage.interaction !== null;
44
+ return (react_1.default.createElement(discord_components_react_1.DiscordReply, { slot: "reply", edited: !isCommand && referencedMessage.editedAt !== null, attachment: referencedMessage.attachments.size > 0, author: (_d = (_c = referencedMessage.member) === null || _c === void 0 ? void 0 : _c.nickname) !== null && _d !== void 0 ? _d : referencedMessage.author.displayName, avatar: (_e = referencedMessage.author.avatarURL({ size: 32 })) !== null && _e !== void 0 ? _e : undefined, roleColor: (_g = (_f = referencedMessage.member) === null || _f === void 0 ? void 0 : _f.displayHexColor) !== null && _g !== void 0 ? _g : undefined, bot: !isCrosspost && referencedMessage.author.bot, verified: (_h = referencedMessage.author.flags) === null || _h === void 0 ? void 0 : _h.has(discord_js_1.UserFlags.VerifiedBot), op: message.channel.isThread() && referencedMessage.author.id === message.channel.ownerId, server: isCrosspost !== null && isCrosspost !== void 0 ? isCrosspost : undefined, command: isCommand }, referencedMessage.content ? (react_1.default.createElement("span", { "data-goto": referencedMessage.id }, await (0, content_1.default)(referencedMessage.content, Object.assign(Object.assign({}, context), { type: content_1.RenderType.REPLY })))) : isCommand ? (react_1.default.createElement("em", { "data-goto": referencedMessage.id }, "Clique para ver o comando.")) : (react_1.default.createElement("em", { "data-goto": referencedMessage.id }, "Clique para ver o anexo."))));
45
+ }
46
+ exports.default = renderReply;
47
+ //# sourceMappingURL=reply.js.map
@@ -0,0 +1,8 @@
1
+ import { type GuildMember, type Message, type User } from 'discord.js';
2
+ import React from 'react';
3
+ export default function renderSystemMessage(message: Message): Promise<JSX.Element | undefined>;
4
+ export declare function Highlight({ children, color }: {
5
+ children: React.ReactNode;
6
+ color?: string;
7
+ }): JSX.Element;
8
+ export declare function JoinMessage(member: GuildMember | null, fallbackUser: User): (string | JSX.Element)[];