diff --git a/packages/reacord/library/core/components/action-row.tsx b/packages/reacord/library/components/action-row.tsx similarity index 91% rename from packages/reacord/library/core/components/action-row.tsx rename to packages/reacord/library/components/action-row.tsx index 8b3e5cb..b067032 100644 --- a/packages/reacord/library/core/components/action-row.tsx +++ b/packages/reacord/library/components/action-row.tsx @@ -1,8 +1,8 @@ import type { ReactNode } from "react" import React from "react" -import { ReacordElement } from "../../internal/element.js" +import { ReacordElement } from "../internal/element.js" import type { MessageOptions } from "../../internal/message" -import { Node } from "../../internal/node.js" +import { Node } from "../internal/node.js" /** * Props for an action row diff --git a/packages/reacord/library/core/components/button-shared-props.ts b/packages/reacord/library/components/button-shared-props.ts similarity index 100% rename from packages/reacord/library/core/components/button-shared-props.ts rename to packages/reacord/library/components/button-shared-props.ts diff --git a/packages/reacord/library/core/components/button.tsx b/packages/reacord/library/components/button.tsx similarity index 60% rename from packages/reacord/library/core/components/button.tsx rename to packages/reacord/library/components/button.tsx index 5405da2..8972f36 100644 --- a/packages/reacord/library/core/components/button.tsx +++ b/packages/reacord/library/components/button.tsx @@ -1,12 +1,9 @@ import type { APIMessageComponentButtonInteraction } from "discord.js" import { randomUUID } from "node:crypto" import React from "react" -import { ReacordElement } from "../../internal/element.js" -import type { ComponentInteraction } from "../../internal/interaction" -import type { MessageOptions } from "../../internal/message" -import { getNextActionRow } from "../../internal/message" -import { Node } from "../../internal/node.js" -import type { ComponentEvent } from "../component-event" +import type { ComponentEvent } from "../core/component-event.js" +import { ReacordElement } from "../internal/element.js" +import { Node } from "../node.js" import type { ButtonSharedProps } from "./button-shared-props" /** @@ -54,31 +51,31 @@ export class ButtonNode extends Node { // this has text children, but buttons themselves shouldn't yield text // eslint-disable-next-line class-methods-use-this - override get text() { - return "" - } + // override get text() { + // return "" + // } - override modifyMessageOptions(options: MessageOptions): void { - getNextActionRow(options).push({ - type: "button", - customId: this.customId, - style: this.props.style ?? "secondary", - disabled: this.props.disabled, - emoji: this.props.emoji, - label: this.children.findType(ButtonLabelNode)?.text, - }) - } + // override modifyMessageOptions(options: MessageOptions): void { + // getNextActionRow(options).push({ + // type: "button", + // customId: this.customId, + // style: this.props.style ?? "secondary", + // disabled: this.props.disabled, + // emoji: this.props.emoji, + // label: this.children.findType(ButtonLabelNode)?.text, + // }) + // } - override handleComponentInteraction(interaction: ComponentInteraction) { - if ( - interaction.type === "button" && - interaction.customId === this.customId - ) { - this.props.onClick(interaction.event) - return true - } - return false - } + // override handleComponentInteraction(interaction: ComponentInteraction) { + // if ( + // interaction.type === "button" && + // interaction.customId === this.customId + // ) { + // this.props.onClick(interaction.event) + // return true + // } + // return false + // } } class ButtonLabelNode extends Node<{}> {} diff --git a/packages/reacord/library/core/components/embed-author.tsx b/packages/reacord/library/components/embed-author.tsx similarity index 90% rename from packages/reacord/library/core/components/embed-author.tsx rename to packages/reacord/library/components/embed-author.tsx index 5009ca8..5316770 100644 --- a/packages/reacord/library/core/components/embed-author.tsx +++ b/packages/reacord/library/components/embed-author.tsx @@ -1,7 +1,7 @@ import type { ReactNode } from "react" import React from "react" -import { ReacordElement } from "../../internal/element.js" -import { Node } from "../../internal/node.js" +import { ReacordElement } from "../internal/element.js" +import { Node } from "../internal/node.js" import { EmbedChildNode } from "./embed-child.js" import type { EmbedOptions } from "./embed-options" diff --git a/packages/reacord/library/core/components/embed-child.ts b/packages/reacord/library/components/embed-child.ts similarity index 79% rename from packages/reacord/library/core/components/embed-child.ts rename to packages/reacord/library/components/embed-child.ts index 851f059..f0249b7 100644 --- a/packages/reacord/library/core/components/embed-child.ts +++ b/packages/reacord/library/components/embed-child.ts @@ -1,4 +1,4 @@ -import { Node } from "../../internal/node.js" +import { Node } from "../internal/node.js" import type { EmbedOptions } from "./embed-options" export abstract class EmbedChildNode extends Node { diff --git a/packages/reacord/library/core/components/embed-field.tsx b/packages/reacord/library/components/embed-field.tsx similarity index 91% rename from packages/reacord/library/core/components/embed-field.tsx rename to packages/reacord/library/components/embed-field.tsx index 0ae0b23..08a5e8f 100644 --- a/packages/reacord/library/core/components/embed-field.tsx +++ b/packages/reacord/library/components/embed-field.tsx @@ -1,7 +1,7 @@ import type { ReactNode } from "react" import React from "react" -import { ReacordElement } from "../../internal/element.js" -import { Node } from "../../internal/node.js" +import { ReacordElement } from "../internal/element.js" +import { Node } from "../internal/node.js" import { EmbedChildNode } from "./embed-child.js" import type { EmbedOptions } from "./embed-options" diff --git a/packages/reacord/library/core/components/embed-footer.tsx b/packages/reacord/library/components/embed-footer.tsx similarity index 91% rename from packages/reacord/library/core/components/embed-footer.tsx rename to packages/reacord/library/components/embed-footer.tsx index 9340592..b3ca2f9 100644 --- a/packages/reacord/library/core/components/embed-footer.tsx +++ b/packages/reacord/library/components/embed-footer.tsx @@ -1,7 +1,7 @@ import type { ReactNode } from "react" import React from "react" -import { ReacordElement } from "../../internal/element.js" -import { Node } from "../../internal/node.js" +import { ReacordElement } from "../internal/element.js" +import { Node } from "../internal/node.js" import { EmbedChildNode } from "./embed-child.js" import type { EmbedOptions } from "./embed-options" diff --git a/packages/reacord/library/core/components/embed-image.tsx b/packages/reacord/library/components/embed-image.tsx similarity index 90% rename from packages/reacord/library/core/components/embed-image.tsx rename to packages/reacord/library/components/embed-image.tsx index 3c62906..c1e518b 100644 --- a/packages/reacord/library/core/components/embed-image.tsx +++ b/packages/reacord/library/components/embed-image.tsx @@ -1,5 +1,5 @@ import React from "react" -import { ReacordElement } from "../../internal/element.js" +import { ReacordElement } from "../internal/element.js" import { EmbedChildNode } from "./embed-child.js" import type { EmbedOptions } from "./embed-options" diff --git a/packages/reacord/library/core/components/embed-options.ts b/packages/reacord/library/components/embed-options.ts similarity index 100% rename from packages/reacord/library/core/components/embed-options.ts rename to packages/reacord/library/components/embed-options.ts diff --git a/packages/reacord/library/core/components/embed-thumbnail.tsx b/packages/reacord/library/components/embed-thumbnail.tsx similarity index 91% rename from packages/reacord/library/core/components/embed-thumbnail.tsx rename to packages/reacord/library/components/embed-thumbnail.tsx index 838ff72..98a9087 100644 --- a/packages/reacord/library/core/components/embed-thumbnail.tsx +++ b/packages/reacord/library/components/embed-thumbnail.tsx @@ -1,5 +1,5 @@ import React from "react" -import { ReacordElement } from "../../internal/element.js" +import { ReacordElement } from "../internal/element.js" import { EmbedChildNode } from "./embed-child.js" import type { EmbedOptions } from "./embed-options" diff --git a/packages/reacord/library/core/components/embed-title.tsx b/packages/reacord/library/components/embed-title.tsx similarity index 89% rename from packages/reacord/library/core/components/embed-title.tsx rename to packages/reacord/library/components/embed-title.tsx index 10cb027..4bbf6c2 100644 --- a/packages/reacord/library/core/components/embed-title.tsx +++ b/packages/reacord/library/components/embed-title.tsx @@ -1,7 +1,7 @@ import type { ReactNode } from "react" import React from "react" -import { ReacordElement } from "../../internal/element.js" -import { Node } from "../../internal/node.js" +import { ReacordElement } from "../internal/element.js" +import { Node } from "../internal/node.js" import { EmbedChildNode } from "./embed-child.js" import type { EmbedOptions } from "./embed-options" diff --git a/packages/reacord/library/core/components/embed.tsx b/packages/reacord/library/components/embed.tsx similarity index 91% rename from packages/reacord/library/core/components/embed.tsx rename to packages/reacord/library/components/embed.tsx index 979daa2..67c43d3 100644 --- a/packages/reacord/library/core/components/embed.tsx +++ b/packages/reacord/library/components/embed.tsx @@ -1,10 +1,10 @@ import { snakeCaseDeep } from "@reacord/helpers/convert-object-property-case.js" import { omit } from "@reacord/helpers/omit.js" import React from "react" -import { ReacordElement } from "../../internal/element.js" import type { MessageOptions } from "../../internal/message" -import { Node } from "../../internal/node.js" -import { TextNode } from "../../internal/text-node" +import { ReacordElement } from "../internal/element.js" +import { Node } from "../node.js" +import { TextNode } from "../text-node" import { EmbedChildNode } from "./embed-child.js" import type { EmbedOptions } from "./embed-options" diff --git a/packages/reacord/library/core/components/link.tsx b/packages/reacord/library/components/link.tsx similarity index 86% rename from packages/reacord/library/core/components/link.tsx rename to packages/reacord/library/components/link.tsx index 990f75f..cad0a79 100644 --- a/packages/reacord/library/core/components/link.tsx +++ b/packages/reacord/library/components/link.tsx @@ -1,8 +1,8 @@ import React from "react" -import { ReacordElement } from "../../internal/element.js" +import { ReacordElement } from "../internal/element.js" import type { MessageOptions } from "../../internal/message" -import { getNextActionRow } from "../../internal/message" -import { Node } from "../../internal/node.js" +import { getNextActionRow } from "../internal/message" +import { Node } from "../internal/node.js" import type { ButtonSharedProps } from "./button-shared-props" /** diff --git a/packages/reacord/library/core/components/option-node.ts b/packages/reacord/library/components/option-node.ts similarity index 93% rename from packages/reacord/library/core/components/option-node.ts rename to packages/reacord/library/components/option-node.ts index 067aeec..2b842be 100644 --- a/packages/reacord/library/core/components/option-node.ts +++ b/packages/reacord/library/components/option-node.ts @@ -1,5 +1,5 @@ import type { MessageSelectOptionOptions } from "../../internal/message" -import { Node } from "../../internal/node" +import { Node } from "../node" import type { OptionProps } from "./option" export class OptionNode extends Node< diff --git a/packages/reacord/library/core/components/option.tsx b/packages/reacord/library/components/option.tsx similarity index 96% rename from packages/reacord/library/core/components/option.tsx rename to packages/reacord/library/components/option.tsx index ad060ef..abdf108 100644 --- a/packages/reacord/library/core/components/option.tsx +++ b/packages/reacord/library/components/option.tsx @@ -1,6 +1,6 @@ import type { ReactNode } from "react" import React from "react" -import { ReacordElement } from "../../internal/element" +import { ReacordElement } from "../internal/element" import { OptionDescriptionNode, OptionLabelNode, diff --git a/packages/reacord/library/core/components/select.tsx b/packages/reacord/library/components/select.tsx similarity index 97% rename from packages/reacord/library/core/components/select.tsx rename to packages/reacord/library/components/select.tsx index 0338ce0..28ef7ec 100644 --- a/packages/reacord/library/core/components/select.tsx +++ b/packages/reacord/library/components/select.tsx @@ -3,14 +3,14 @@ import type { APIMessageComponentSelectMenuInteraction } from "discord.js" import { randomUUID } from "node:crypto" import type { ReactNode } from "react" import React from "react" -import { ReacordElement } from "../../internal/element.js" +import { ReacordElement } from "../internal/element.js" import type { ComponentInteraction } from "../../internal/interaction" import type { ActionRow, ActionRowItem, MessageOptions, } from "../../internal/message" -import { Node } from "../../internal/node.js" +import { Node } from "../internal/node.js" import type { ComponentEvent } from "../component-event" import { OptionNode } from "./option-node" diff --git a/packages/reacord/library/internal/node.ts b/packages/reacord/library/node.ts similarity index 52% rename from packages/reacord/library/internal/node.ts rename to packages/reacord/library/node.ts index 4a49d22..6cfb5ca 100644 --- a/packages/reacord/library/internal/node.ts +++ b/packages/reacord/library/node.ts @@ -1,33 +1,29 @@ export class Node { - private readonly _children: Node[] = [] + readonly children: Node[] = [] constructor(public props: Props) {} - get children(): readonly Node[] { - return this._children - } - clear() { - this._children.splice(0) + this.children.splice(0) } add(...nodes: Node[]) { - this._children.push(...nodes) + this.children.push(...nodes) } remove(node: Node) { - const index = this._children.indexOf(node) - if (index !== -1) this._children.splice(index, 1) + const index = this.children.indexOf(node) + if (index !== -1) this.children.splice(index, 1) } insertBefore(node: Node, beforeNode: Node) { - const index = this._children.indexOf(beforeNode) - if (index !== -1) this._children.splice(index, 0, node) + const index = this.children.indexOf(beforeNode) + if (index !== -1) this.children.splice(index, 0, node) } replace(oldNode: Node, newNode: Node) { - const index = this._children.indexOf(oldNode) - if (index !== -1) this._children[index] = newNode + const index = this.children.indexOf(oldNode) + if (index !== -1) this.children[index] = newNode } clone(): this { diff --git a/packages/reacord/library/reacord-instance.ts b/packages/reacord/library/reacord-instance.ts index a473f2a..3f253ea 100644 --- a/packages/reacord/library/reacord-instance.ts +++ b/packages/reacord/library/reacord-instance.ts @@ -4,12 +4,12 @@ import type { APIMessageComponentSelectMenuInteraction, } from "discord.js" import { ComponentType } from "discord.js" +import { ButtonNode } from "./components/button.js" +import type { SelectChangeEvent } from "./components/select.js" +import { SelectNode } from "./components/select.js" import type { ComponentEvent } from "./core/component-event.js" -import { ButtonNode } from "./core/components/button.js" -import type { SelectChangeEvent } from "./core/components/select.js" -import { SelectNode } from "./core/components/select.js" -import { Node } from "./internal/node.js" import { reconciler } from "./internal/reconciler.js" +import { Node } from "./node.js" import type { ReacordClient } from "./reacord-client.js" import type { Renderer } from "./renderer.js" diff --git a/packages/reacord/library/internal/reconciler.ts b/packages/reacord/library/reconciler.ts similarity index 97% rename from packages/reacord/library/internal/reconciler.ts rename to packages/reacord/library/reconciler.ts index 7b5fe5b..1169669 100644 --- a/packages/reacord/library/internal/reconciler.ts +++ b/packages/reacord/library/reconciler.ts @@ -2,8 +2,8 @@ import { raise } from "@reacord/helpers/raise.js" import ReactReconciler from "react-reconciler" import { DefaultEventPriority } from "react-reconciler/constants" -import type { ReacordInstancePrivate } from "../reacord-instance.js" import { Node } from "./node.js" +import type { ReacordInstancePrivate } from "./reacord-instance.js" import { TextNode } from "./text-node.js" export const reconciler = ReactReconciler< diff --git a/packages/reacord/library/internal/text-node.ts b/packages/reacord/library/text-node.ts similarity index 100% rename from packages/reacord/library/internal/text-node.ts rename to packages/reacord/library/text-node.ts