@dressed/react 1.8.0-rc.3.1 → 1.8.1
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.
- package/dist/rendering/callbacks.d.ts +1 -1
- package/dist/rendering/callbacks.js +2 -2
- package/dist/rendering/callbacks.js.map +1 -1
- package/dist/rendering/interaction.d.ts +6 -2
- package/dist/rendering/interaction.js +8 -3
- package/dist/rendering/interaction.js.map +1 -1
- package/dist/rendering/message.d.ts +1 -2
- package/dist/rendering/message.js.map +1 -1
- package/package.json +1 -1
|
@@ -4,7 +4,7 @@ export declare const handlers: Map<string, Handler>;
|
|
|
4
4
|
/** The pattern to export for handling `onClick`/`onSubmit` callbacks */
|
|
5
5
|
export declare const pattern = "@dressed/react-handler-:handlerId{-:fallback}";
|
|
6
6
|
/** Creates a function for handling callback interactions */
|
|
7
|
-
export declare function
|
|
7
|
+
export declare function createCallbackHandler<T extends Record<string, Handler> = {}>(fallbacks?: T): ((interaction: MessageComponentInteraction | ModalSubmitInteraction, args: {
|
|
8
8
|
handlerId: string;
|
|
9
9
|
fallback?: string;
|
|
10
10
|
}) => Promise<void>) & {
|
|
@@ -4,7 +4,7 @@ export const handlers = new Map();
|
|
|
4
4
|
export const pattern = "@dressed/react-handler-:handlerId{-:fallback}";
|
|
5
5
|
/** Creates a function for handling callback interactions */
|
|
6
6
|
// biome-ignore lint/complexity/noBannedTypes: Need an empty record
|
|
7
|
-
export function
|
|
7
|
+
export function createCallbackHandler(fallbacks = {}) {
|
|
8
8
|
for (const key in fallbacks)
|
|
9
9
|
handlers.set(key, fallbacks[key]);
|
|
10
10
|
return Object.assign(async (interaction, args) => {
|
|
@@ -23,7 +23,7 @@ export function setupCallbackHandler(fallbacks = {}) {
|
|
|
23
23
|
}
|
|
24
24
|
export function registerHandler(handler, fallback, id = randId()) {
|
|
25
25
|
handlers.set(id, handler);
|
|
26
|
-
const $handlerCleaner = setTimeout(() => handlers.delete(id), 6e4 * 30);
|
|
26
|
+
const $handlerCleaner = setTimeout(() => handlers.delete(id), 6e4 * 30).unref();
|
|
27
27
|
const fbText = fallback ? `-${fallback}` : "";
|
|
28
28
|
return { custom_id: `@dressed/react-handler-${id}${fbText}`, $registeredHandler: id, $handlerCleaner };
|
|
29
29
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"callbacks.js","sourceRoot":"","sources":["../../src/rendering/callbacks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAInH,MAAM,CAAC,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAmB,CAAC;AAEnD,wEAAwE;AACxE,MAAM,CAAC,MAAM,OAAO,GAAG,+CAA+C,CAAC;AAEvE,4DAA4D;AAC5D,mEAAmE;AACnE,MAAM,UAAU,
|
|
1
|
+
{"version":3,"file":"callbacks.js","sourceRoot":"","sources":["../../src/rendering/callbacks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAInH,MAAM,CAAC,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAmB,CAAC;AAEnD,wEAAwE;AACxE,MAAM,CAAC,MAAM,OAAO,GAAG,+CAA+C,CAAC;AAEvE,4DAA4D;AAC5D,mEAAmE;AACnE,MAAM,UAAU,qBAAqB,CAAyC,YAAe,EAAO;IAClG,KAAK,MAAM,GAAG,IAAI,SAAS;QAAE,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;IAC/D,OAAO,MAAM,CAAC,MAAM,CAClB,KAAK,EACH,WAAiE,EACjE,IAA8C,EAC9C,EAAE;;QACF,MAAM,OAAO,GAAG,MAAA,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,mCAAI,QAAQ,CAAC,GAAG,CAAC,MAAA,IAAI,CAAC,QAAQ,mCAAI,SAAS,CAAC,CAAC;QACzF,mBAAmB;QACnB,WAAW,GAAG,WAAW,CAAC,QAAQ,KAAK,MAAM,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC;QAClH,IAAI,CAAC,OAAO;YAAE,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAC;QACzF,MAAM,OAAO,CAAC,WAAoB,CAAC,CAAC;QACpC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,MAAM;YAAE,WAAW,CAAC,WAAW,EAAE,CAAC;IAC7D,CAAC,EACD;QACE,SAAS,EAAE,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAEtE;KACF,CACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,OAAgB,EAAE,QAAiB,EAAE,EAAE,GAAG,MAAM,EAAE;IAChF,QAAQ,CAAC,GAAG,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;IAC1B,MAAM,eAAe,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;IAChF,MAAM,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAC9C,OAAO,EAAE,SAAS,EAAE,0BAA0B,EAAE,GAAG,MAAM,EAAE,EAAE,kBAAkB,EAAE,EAAE,EAAE,eAAe,EAAE,CAAC;AACzG,CAAC;AAED,SAAS,MAAM,CAAC,MAAM,GAAG,EAAE;IACzB,MAAM,KAAK,GAAG,gEAAgE,CAAC;IAC/E,MAAM,KAAK,GAAG,IAAI,WAAW,CAAC,MAAM,CAAC,CAAC;IACtC,MAAM,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;IAC9B,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACpE,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { type ApplicationCommandType } from "discord-api-types/v10";
|
|
2
2
|
import { type CommandConfig, type CommandInteraction as DressedCommandInteraction, type MessageComponentInteraction as DressedMessageComponentInteraction, type ModalSubmitInteraction as DressedModalSubmitInteraction } from "dressed";
|
|
3
3
|
import type { createInteraction } from "dressed/server";
|
|
4
|
-
import type
|
|
4
|
+
import { type ComponentType, type PropsWithChildren, type ReactNode } from "react";
|
|
5
5
|
import type { WithContainer } from "./message.ts";
|
|
6
6
|
type ReactivatedInteraction<T> = OverrideMethodParams<T, {
|
|
7
7
|
[K in "reply" | "editReply" | "update" | "followUp" | "showModal"]: [
|
|
@@ -29,5 +29,9 @@ type OverrideMethodParams<T, Overrides extends Record<string, unknown[]>> = {
|
|
|
29
29
|
export type CommandInteraction<T extends keyof typeof ApplicationCommandType | CommandConfig = "ChatInput"> = ReactivatedInteraction<DressedCommandInteraction<T>>;
|
|
30
30
|
export type MessageComponentInteraction<T extends "Button" | "StringSelect" | "UserSelect" | "RoleSelect" | "MentionableSelect" | "ChannelSelect" | undefined = undefined> = ReactivatedInteraction<DressedMessageComponentInteraction<T>>;
|
|
31
31
|
export type ModalSubmitInteraction = ReactivatedInteraction<DressedModalSubmitInteraction>;
|
|
32
|
-
|
|
32
|
+
/**
|
|
33
|
+
* Override interaction methods to accept React components
|
|
34
|
+
* @param parent A global parent that will be placed at the tree root, can be used for providers
|
|
35
|
+
*/
|
|
36
|
+
export declare function patchInteraction<T extends NonNullable<ReturnType<typeof createInteraction>>>(interaction: T, parent?: ComponentType<PropsWithChildren>): ReactivatedInteraction<T>;
|
|
33
37
|
export {};
|
|
@@ -1,8 +1,13 @@
|
|
|
1
1
|
import { MessageFlags } from "discord-api-types/v10";
|
|
2
2
|
import { editWebhookMessage, } from "dressed";
|
|
3
|
+
import { createElement } from "react";
|
|
3
4
|
import { reconciler } from "../react/reconciler.js";
|
|
4
5
|
import { render } from "./index.js";
|
|
5
|
-
|
|
6
|
+
/**
|
|
7
|
+
* Override interaction methods to accept React components
|
|
8
|
+
* @param parent A global parent that will be placed at the tree root, can be used for providers
|
|
9
|
+
*/
|
|
10
|
+
export function patchInteraction(interaction, parent) {
|
|
6
11
|
const createdAt = Date.now();
|
|
7
12
|
if (!interaction)
|
|
8
13
|
throw new Error("No interaction");
|
|
@@ -25,7 +30,7 @@ export function patchInteraction(interaction) {
|
|
|
25
30
|
return editWebhookMessage(interaction.application_id, interaction.token, followUpId, data, undefined, $req);
|
|
26
31
|
}
|
|
27
32
|
return new Promise((resolve) => {
|
|
28
|
-
const { container } = render(components, async (c) => {
|
|
33
|
+
const { container } = render(parent ? createElement(parent, null, components) : components, async (c) => {
|
|
29
34
|
if (c.length === 0 || Date.now() > createdAt + 6e4 * 15)
|
|
30
35
|
return;
|
|
31
36
|
// @ts-expect-error
|
|
@@ -48,7 +53,7 @@ export function patchInteraction(interaction) {
|
|
|
48
53
|
resolve(Object.assign(res !== null && res !== void 0 ? res : {}, { $container: container }));
|
|
49
54
|
});
|
|
50
55
|
if (!($req === null || $req === void 0 ? void 0 : $req.persistContainer)) {
|
|
51
|
-
setTimeout(() => reconciler.updateContainer(null, container), createdAt + 6e4 * 15 - Date.now());
|
|
56
|
+
setTimeout(() => reconciler.updateContainer(null, container), createdAt + 6e4 * 15 - Date.now()).unref();
|
|
52
57
|
}
|
|
53
58
|
});
|
|
54
59
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interaction.js","sourceRoot":"","sources":["../../src/rendering/interaction.ts"],"names":[],"mappings":"AAAA,OAAO,EAA+B,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAClF,OAAO,EAKL,kBAAkB,GACnB,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"interaction.js","sourceRoot":"","sources":["../../src/rendering/interaction.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,8 +5,7 @@ import type { ReactNode } from "react";
|
|
|
5
5
|
import type { OpaqueRoot } from "react-reconciler";
|
|
6
6
|
export type WithContainer<T> = T & {
|
|
7
7
|
/**
|
|
8
|
-
* The root of this rendered component, can be used to update data or clear it in order to effectively stop the React process
|
|
9
|
-
*
|
|
8
|
+
* The root of this rendered component, can be used to update data or clear it in order to effectively stop the React process.
|
|
10
9
|
* @example
|
|
11
10
|
* import { createMessage, reconciler } from "@dressed/react";
|
|
12
11
|
* const { $container } = await createMessage(channelId, "Hello");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"message.js","sourceRoot":"","sources":["../../src/rendering/message.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,YAAY,EAAkB,MAAM,uBAAuB,CAAC;AACtF,OAAO,EAAE,aAAa,IAAI,oBAAoB,EAAE,WAAW,IAAI,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAInG,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"message.js","sourceRoot":"","sources":["../../src/rendering/message.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,YAAY,EAAkB,MAAM,uBAAuB,CAAC;AACtF,OAAO,EAAE,aAAa,IAAI,oBAAoB,EAAE,WAAW,IAAI,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAInG,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAapC;;;GAGG;AACH,MAAM,UAAU,aAAa,CAC3B,SAAoB,EACpB,UAAqB,EACrB,OAAoG,EAAE,EACtG,IAAiB;;IAEjB,IAAI,CAAC,KAAK,GAAG,CAAC,MAAA,IAAI,CAAC,KAAK,mCAAI,CAAC,CAAC,GAAG,YAAY,CAAC,cAAc,CAAC;IAE7D,IAAI,SAAiC,CAAC;IACtC,IAAI,WAAW,GAAG,KAAK,CAAC;IAExB,SAAS,IAAI;QACX,IAAI,CAAC,SAAS;YAAE,OAAO;QACvB,OAAO,kBAAkB,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IAC9D,CAAC;IAED,OAAO,IAAI,OAAO,CAA4B,CAAC,OAAO,EAAE,EAAE;QACxD,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,CAAC,UAAU,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;YACnD,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO;YAC3B,mBAAmB;YACnB,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;YACpB,IAAI,SAAS;gBAAE,OAAO,IAAI,EAAE,CAAC;YAC7B,IAAI,SAAS,KAAK,CAAC,EAAE,CAAC;gBACpB,WAAW,GAAG,IAAI,CAAC;gBACnB,OAAO;YACT,CAAC;YACD,SAAS,GAAG,CAAC,CAAC;YACd,MAAM,OAAO,GAAG,MAAM,oBAAoB,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;YAClE,SAAS,GAAG,OAAO,CAAC,EAAE,CAAC;YACvB,IAAI,WAAW;gBAAE,IAAI,EAAE,CAAC;YACxB,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC;QAC7D,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,WAAW,CACzB,SAAoB,EACpB,SAAoB,EACpB,UAAqB,EACrB,OAAkG,EAAE,EACpG,IAAiB;;IAEjB,IAAI,CAAC,KAAK,GAAG,CAAC,MAAA,IAAI,CAAC,KAAK,mCAAI,CAAC,CAAC,GAAG,YAAY,CAAC,cAAc,CAAC;IAE7D,OAAO,IAAI,OAAO,CAA4B,CAAC,OAAO,EAAE,EAAE;QACxD,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,CAAC,UAAU,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;YACnD,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO;YAC3B,mBAAmB;YACnB,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;YACpB,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,kBAAkB,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC;QAChH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC"}
|