discord-html-transcripts-fix
Version:
A nicely formatted html transcript generator for discord.js. Bugfix fork with support for the latest discord.js and Components v2.
70 lines • 4.58 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.default = ComponentRow;
exports.Component = Component;
const jsx_runtime_1 = require("react/jsx-runtime");
const discord_js_1 = require("discord.js");
const utils_1 = require("../../utils/utils");
const Select_Menu_1 = __importDefault(require("./components/Select Menu"));
const Container_1 = __importDefault(require("./components/Container"));
const Section_1 = __importDefault(require("./components/section/Section"));
const Media_Gallery_1 = __importDefault(require("./components/Media Gallery"));
const Spacing_1 = __importDefault(require("./components/Spacing"));
const Button_1 = __importDefault(require("./components/Button"));
const Thumbnail_1 = __importDefault(require("./components/Thumbnail"));
const content_1 = __importDefault(require("./content"));
const content_2 = require("./content");
const styles_1 = require("./components/styles");
function ComponentRow({ component, id, context, }) {
switch (component.type) {
case discord_js_1.ComponentType.ActionRow:
return ((0, jsx_runtime_1.jsx)("discord-action-row", { children: (0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: component.components.map((nestedComponent, id) => ((0, jsx_runtime_1.jsx)(Component, { component: nestedComponent, id: id }, id))) }) }, id));
case discord_js_1.ComponentType.Container: {
const accentColor = component.accent_color !== undefined
? component.accent_color
: (component.accentColor !== undefined ? component.accentColor : null);
const spoiler = !!component.spoiler;
return ((0, jsx_runtime_1.jsx)(Container_1.default, { accentColor: accentColor, spoiler: spoiler, children: (0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: component.components.map((nestedComponent, id) => ((0, jsx_runtime_1.jsx)(ComponentRow, { component: nestedComponent, id: id, context: context }, id))) }) }, id));
}
case discord_js_1.ComponentType.File: {
const attachmentComponent = (0, jsx_runtime_1.jsx)("discord-file-attachment", { href: component.file.url });
if (component.spoiler) {
return ((0, jsx_runtime_1.jsx)("discord-spoiler", { slot: "attachment", children: attachmentComponent }, component.id));
}
else {
return attachmentComponent;
}
}
case discord_js_1.ComponentType.MediaGallery:
return (0, jsx_runtime_1.jsx)(Media_Gallery_1.default, { component: component }, id);
case discord_js_1.ComponentType.Section:
return ((0, jsx_runtime_1.jsx)(Section_1.default, { accessory: component.accessory, id: id, children: component.components.map((nestedComponent, id) => ((0, jsx_runtime_1.jsx)(ComponentRow, { component: nestedComponent, id: id, context: context }, id))) }, id));
case discord_js_1.ComponentType.Separator:
return (0, jsx_runtime_1.jsx)(Spacing_1.default, { spacing: component.spacing, divider: component.divider }, id);
case discord_js_1.ComponentType.TextDisplay:
return (0, jsx_runtime_1.jsx)(content_1.default, { content: component.content, context: Object.assign(Object.assign({}, context), { type: content_2.RenderType.NORMAL }) }, id);
default:
return null;
}
}
function Component({ component, id, }) {
var _a;
switch (component.type) {
case discord_js_1.ComponentType.Button:
return ((0, jsx_runtime_1.jsx)(Button_1.default, { type: styles_1.ButtonStyleMapping[component.style], url: (_a = component.url) !== null && _a !== void 0 ? _a : undefined, emoji: component.emoji ? (0, utils_1.parseDiscordEmoji)(component.emoji) : undefined, children: component.label }, id));
case discord_js_1.ComponentType.StringSelect:
case discord_js_1.ComponentType.UserSelect:
case discord_js_1.ComponentType.RoleSelect:
case discord_js_1.ComponentType.MentionableSelect:
case discord_js_1.ComponentType.ChannelSelect:
return (0, jsx_runtime_1.jsx)(Select_Menu_1.default, { component: component }, id);
case discord_js_1.ComponentType.Thumbnail:
return (0, jsx_runtime_1.jsx)(Thumbnail_1.default, { url: component.media.url }, id);
default:
return undefined;
}
}
//# sourceMappingURL=components.js.map