@dressed/react 1.7.4-rc.4 → 1.7.4-rc.6
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/components/button.d.ts +8 -0
- package/dist/components/button.js +5 -1
- package/dist/components/button.js.map +1 -1
- package/dist/components/container.d.ts +2 -2
- package/dist/components/container.js.map +1 -1
- package/dist/components/file-upload.d.ts +2 -1
- package/dist/components/file-upload.js.map +1 -1
- package/dist/components/file.d.ts +2 -1
- package/dist/components/file.js.map +1 -1
- package/dist/components/section.d.ts +2 -2
- package/dist/components/section.js.map +1 -1
- package/dist/components/select-menu.d.ts +19 -8
- package/dist/components/select-menu.js +5 -1
- package/dist/components/select-menu.js.map +1 -1
- package/dist/components/separator.d.ts +2 -1
- package/dist/components/separator.js.map +1 -1
- package/dist/components/text-display.d.ts +2 -2
- package/dist/components/text-display.js.map +1 -1
- package/dist/components/text-input.d.ts +2 -1
- package/dist/components/text-input.js.map +1 -1
- package/dist/components/thumbnail.d.ts +2 -1
- package/dist/components/thumbnail.js.map +1 -1
- package/dist/react/reconciler.js +6 -4
- package/dist/react/reconciler.js.map +1 -1
- package/dist/rendering/callbacks.d.ts +17 -0
- package/dist/rendering/callbacks.js +33 -0
- package/dist/rendering/callbacks.js.map +1 -0
- package/dist/rendering/index.d.ts +4 -1
- package/dist/rendering/index.js +1 -1
- package/dist/rendering/index.js.map +1 -1
- package/dist/rendering/interaction.d.ts +3 -1
- package/dist/rendering/interaction.js +7 -2
- package/dist/rendering/interaction.js.map +1 -1
- package/package.json +5 -2
|
@@ -1,9 +1,17 @@
|
|
|
1
1
|
import type { APIButtonComponentWithCustomId, APIButtonComponentWithSKUId, APIButtonComponentWithURL, ButtonStyle } from "discord-api-types/v10";
|
|
2
2
|
import { type ReactElement } from "react";
|
|
3
|
+
import type { MessageComponentInteraction } from "../rendering/interaction.ts";
|
|
3
4
|
interface ButtonWithCustomId extends Omit<APIButtonComponentWithCustomId, "type" | "style"> {
|
|
4
5
|
style?: Exclude<keyof typeof ButtonStyle, "Link" | "Premium">;
|
|
5
6
|
}
|
|
7
|
+
interface ButtonWithOnClick extends Omit<ButtonWithCustomId, "custom_id"> {
|
|
8
|
+
/** Create a temporary handler callback, will not work in a serverless environment */
|
|
9
|
+
onClick: (interaction: MessageComponentInteraction<"Button">) => void;
|
|
10
|
+
/** An additional handler identity defined in the callback setup which will run if the `onClick` is no longer registered */
|
|
11
|
+
fallback?: string;
|
|
12
|
+
}
|
|
6
13
|
export declare function Button(props: ButtonWithCustomId): ReactElement<APIButtonComponentWithCustomId>;
|
|
14
|
+
export declare function Button(props: ButtonWithOnClick): ReactElement<APIButtonComponentWithCustomId>;
|
|
7
15
|
export declare function Button(props: Omit<APIButtonComponentWithSKUId, "type" | "style">): ReactElement<APIButtonComponentWithSKUId>;
|
|
8
16
|
export declare function Button(props: Omit<APIButtonComponentWithURL, "type" | "style">): ReactElement<APIButtonComponentWithURL>;
|
|
9
17
|
export {};
|
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
import { Button as DressedComponent } from "dressed";
|
|
2
2
|
import { createElement } from "react";
|
|
3
|
+
import { registerHandler } from "../rendering/callbacks.js";
|
|
3
4
|
export function Button(props) {
|
|
4
|
-
const component = DressedComponent(
|
|
5
|
+
const component = DressedComponent({
|
|
6
|
+
...props,
|
|
7
|
+
...("onClick" in props ? registerHandler(props.onClick, props.fallback) : {}),
|
|
8
|
+
});
|
|
5
9
|
return createElement("dressed-node", component);
|
|
6
10
|
}
|
|
7
11
|
//# sourceMappingURL=button.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"button.js","sourceRoot":"","sources":["../../src/components/button.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,MAAM,IAAI,gBAAgB,EAAE,MAAM,SAAS,CAAC;AACrD,OAAO,EAAE,aAAa,EAAqB,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"button.js","sourceRoot":"","sources":["../../src/components/button.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,MAAM,IAAI,gBAAgB,EAAE,MAAM,SAAS,CAAC;AACrD,OAAO,EAAE,aAAa,EAAqB,MAAM,OAAO,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAuB5D,MAAM,UAAU,MAAM,CACpB,KAIqD;IAErD,MAAM,SAAS,GAAG,gBAAgB,CAAC;QACjC,GAAG,KAAK;QACR,GAAG,CAAC,SAAS,IAAI,KAAK,CAAC,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,OAAgB,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;KAC9E,CAAC,CAAC;IACZ,OAAO,aAAa,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC;AAClD,CAAC"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import type { APIContainerComponent } from "discord-api-types/v10";
|
|
2
|
-
import { type ReactNode } from "react";
|
|
2
|
+
import { type ReactElement, type ReactNode } from "react";
|
|
3
3
|
import { type ComponentNode } from "../react/renderer.ts";
|
|
4
4
|
interface ContainerProps extends Omit<APIContainerComponent, "components" | "type"> {
|
|
5
5
|
children: ReactNode;
|
|
6
6
|
}
|
|
7
|
-
export declare function Container({ children, ...rest }: ContainerProps):
|
|
7
|
+
export declare function Container({ children, ...rest }: ContainerProps): ReactElement<APIContainerComponent>;
|
|
8
8
|
export declare function parseContainer<T extends APIContainerComponent>(props: T, children: ComponentNode[]): Promise<T>;
|
|
9
9
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"container.js","sourceRoot":"","sources":["../../src/components/container.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,IAAI,gBAAgB,EAAE,MAAM,SAAS,CAAC;AACxD,OAAO,EAAE,aAAa,
|
|
1
|
+
{"version":3,"file":"container.js","sourceRoot":"","sources":["../../src/components/container.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,IAAI,gBAAgB,EAAE,MAAM,SAAS,CAAC;AACxD,OAAO,EAAE,aAAa,EAAqC,MAAM,OAAO,CAAC;AACzE,OAAO,EAAsB,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAMrE,MAAM,UAAU,SAAS,CAAC,EAAE,QAAQ,EAAE,GAAG,IAAI,EAAkB;IAC7D,MAAM,KAAK,GAAG,gBAAgB,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;IACzC,OAAO,aAAa,CAAC,cAAc,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;AACxD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAAkC,KAAQ,EAAE,QAAyB;IACvG,OAAO,EAAE,GAAG,KAAK,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC;AAC9E,CAAC"}
|
|
@@ -1,2 +1,3 @@
|
|
|
1
1
|
import type { APIFileUploadComponent } from "discord-api-types/v10";
|
|
2
|
-
|
|
2
|
+
import { type ReactElement } from "react";
|
|
3
|
+
export declare function FileUpload(props: Omit<APIFileUploadComponent, "type">): ReactElement<APIFileUploadComponent>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file-upload.js","sourceRoot":"","sources":["../../src/components/file-upload.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,IAAI,gBAAgB,EAAE,MAAM,SAAS,CAAC;AACzD,OAAO,EAAE,aAAa,
|
|
1
|
+
{"version":3,"file":"file-upload.js","sourceRoot":"","sources":["../../src/components/file-upload.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,IAAI,gBAAgB,EAAE,MAAM,SAAS,CAAC;AACzD,OAAO,EAAE,aAAa,EAAqB,MAAM,OAAO,CAAC;AAEzD,MAAM,UAAU,UAAU,CAAC,KAA2C;IACpE,MAAM,SAAS,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;IAC1C,OAAO,aAAa,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC;AAClD,CAAC"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { APIFileComponent } from "discord-api-types/v10";
|
|
2
|
+
import { type ReactElement } from "react";
|
|
2
3
|
interface FileProps extends Omit<APIFileComponent, "file" | "type"> {
|
|
3
4
|
file: APIFileComponent["file"] | string;
|
|
4
5
|
}
|
|
5
|
-
export declare function File({ file, ...rest }: FileProps):
|
|
6
|
+
export declare function File({ file, ...rest }: FileProps): ReactElement<APIFileComponent>;
|
|
6
7
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file.js","sourceRoot":"","sources":["../../src/components/file.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,IAAI,gBAAgB,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,aAAa,
|
|
1
|
+
{"version":3,"file":"file.js","sourceRoot":"","sources":["../../src/components/file.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,IAAI,gBAAgB,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,aAAa,EAAqB,MAAM,OAAO,CAAC;AAMzD,MAAM,UAAU,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,IAAI,EAAa;IAC/C,MAAM,KAAK,GAAG,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC3C,OAAO,aAAa,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;AAC9C,CAAC"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import type { APISectionComponent } from "discord-api-types/v10";
|
|
2
|
-
import { type ReactNode } from "react";
|
|
2
|
+
import { type ReactElement, type ReactNode } from "react";
|
|
3
3
|
import { type ComponentNode } from "../react/renderer.ts";
|
|
4
4
|
interface SectionProps extends Omit<APISectionComponent, "accessory" | "components" | "type"> {
|
|
5
5
|
children: ReactNode;
|
|
6
6
|
accessory: ReactNode;
|
|
7
7
|
}
|
|
8
|
-
export declare function Section({ children, accessory, ...rest }: SectionProps):
|
|
8
|
+
export declare function Section({ children, accessory, ...rest }: SectionProps): ReactElement<APISectionComponent>;
|
|
9
9
|
export declare function parseSection<T extends APISectionComponent>(props: T, children: ComponentNode[]): Promise<T>;
|
|
10
10
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"section.js","sourceRoot":"","sources":["../../src/components/section.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,SAAS,CAAC;AACtD,OAAO,EAAE,aAAa,
|
|
1
|
+
{"version":3,"file":"section.js","sourceRoot":"","sources":["../../src/components/section.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,SAAS,CAAC;AACtD,OAAO,EAAE,aAAa,EAAqC,MAAM,OAAO,CAAC;AACzE,OAAO,EAAsB,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAOrE,MAAM,UAAU,OAAO,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,IAAI,EAAgB;IACpE,MAAM,KAAK,GAAG,gBAAgB,CAAC,EAAE,EAAE,IAAa,EAAE,IAAI,CAAC,CAAC;IACxD,OAAO,aAAa,CAAC,cAAc,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;AACnE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAAgC,KAAQ,EAAE,QAAyB;IACnG,MAAM,CAAC,SAAS,EAAE,GAAG,UAAU,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC;IAC9E,OAAO,EAAE,GAAG,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC;AAC7C,CAAC"}
|
|
@@ -1,19 +1,30 @@
|
|
|
1
1
|
import { type APISelectMenuComponent, type APISelectMenuOption, ComponentType } from "discord-api-types/v10";
|
|
2
|
-
import { type ReactNode } from "react";
|
|
2
|
+
import { type ReactElement, type ReactNode } from "react";
|
|
3
3
|
import type { Node } from "../react/node.ts";
|
|
4
|
+
import type { MessageComponentInteraction } from "../rendering/interaction.ts";
|
|
4
5
|
type SelectType = "Channel" | "Mentionable" | "Role" | "String" | "User";
|
|
5
6
|
type SelectMap = {
|
|
6
7
|
[Key in keyof typeof ComponentType]: Extract<APISelectMenuComponent, {
|
|
7
8
|
type: (typeof ComponentType)[Key];
|
|
8
9
|
}>;
|
|
9
10
|
};
|
|
10
|
-
type
|
|
11
|
+
type SelectMenuWithCustomId<K extends SelectType> = Omit<SelectMap[`${K}Select`], "type" | "options"> & {
|
|
12
|
+
type: K;
|
|
13
|
+
} & (K extends "String" ? {
|
|
11
14
|
children: ReactNode;
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
});
|
|
16
|
-
|
|
17
|
-
|
|
15
|
+
} : object);
|
|
16
|
+
type SelectMenuWithOnClick<K extends SelectType> = Omit<SelectMenuWithCustomId<K>, "custom_id"> & {
|
|
17
|
+
/** Create a temporary handler callback, will not work in a serverless environment */
|
|
18
|
+
onSubmit: (interaction: MessageComponentInteraction<`${K}Select`>) => void;
|
|
19
|
+
/** An additional handler identity defined in the callback setup which will run if the `onSubmit` is no longer registered */
|
|
20
|
+
fallback?: string;
|
|
21
|
+
};
|
|
22
|
+
export declare function SelectMenu<K extends SelectType>(props: SelectMenuWithCustomId<K> & {
|
|
23
|
+
type: K;
|
|
24
|
+
}): ReactElement<SelectMap[`${K}Select`]>;
|
|
25
|
+
export declare function SelectMenu<K extends SelectType>(props: SelectMenuWithOnClick<K> & {
|
|
26
|
+
type: K;
|
|
27
|
+
}): ReactElement<SelectMap[`${K}Select`]>;
|
|
28
|
+
export declare function SelectMenuOption(props: APISelectMenuOption): ReactElement<APISelectMenuOption>;
|
|
18
29
|
export declare function parseSelectMenu<T extends APISelectMenuComponent>(props: T, children: Node<APISelectMenuOption>[]): T;
|
|
19
30
|
export {};
|
|
@@ -1,9 +1,13 @@
|
|
|
1
1
|
import { ComponentType } from "discord-api-types/v10";
|
|
2
2
|
import { SelectMenu as DressedComponent, SelectMenuOption as DressedOption } from "dressed";
|
|
3
3
|
import { createElement } from "react";
|
|
4
|
+
import { registerHandler } from "../rendering/callbacks.js";
|
|
4
5
|
export function SelectMenu(props) {
|
|
5
6
|
const { children, ...rest } = props;
|
|
6
|
-
const component = DressedComponent(
|
|
7
|
+
const component = DressedComponent({
|
|
8
|
+
...rest,
|
|
9
|
+
...("onSubmit" in props ? registerHandler(props.onSubmit, props.fallback) : {}),
|
|
10
|
+
});
|
|
7
11
|
return createElement("dressed-node", component, children);
|
|
8
12
|
}
|
|
9
13
|
export function SelectMenuOption(props) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"select-menu.js","sourceRoot":"","sources":["../../src/components/select-menu.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyD,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAC7G,OAAO,EAAE,UAAU,IAAI,gBAAgB,EAAE,gBAAgB,IAAI,aAAa,EAAE,MAAM,SAAS,CAAC;AAC5F,OAAO,EAAE,aAAa,
|
|
1
|
+
{"version":3,"file":"select-menu.js","sourceRoot":"","sources":["../../src/components/select-menu.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyD,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAC7G,OAAO,EAAE,UAAU,IAAI,gBAAgB,EAAE,gBAAgB,IAAI,aAAa,EAAE,MAAM,SAAS,CAAC;AAC5F,OAAO,EAAE,aAAa,EAAqC,MAAM,OAAO,CAAC;AAEzE,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AA2B5D,MAAM,UAAU,UAAU,CACxB,KAA2D;IAE3D,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,EAAE,GAAG,KAAgC,CAAC;IAC/D,MAAM,SAAS,GAAG,gBAAgB,CAAC;QACjC,GAAG,IAAI;QACP,GAAG,CAAC,UAAU,IAAI,KAAK,CAAC,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,QAAiB,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;KAChF,CAAC,CAAC;IACZ,OAAO,aAAa,CAAC,cAAc,EAAE,SAAkB,EAAE,QAAqB,CAAC,CAAC;AAClF,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,KAA0B;IACzD,MAAM,SAAS,GAAG,aAAa,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IACjE,OAAO,aAAa,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC;AAClD,CAAC;AAED,MAAM,UAAU,eAAe,CAAmC,KAAQ,EAAE,QAAqC;IAC/G,IAAI,KAAK,CAAC,IAAI,KAAK,aAAa,CAAC,YAAY,EAAE,CAAC;QAC9C,KAAK,CAAC,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IAC/C,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { APISeparatorComponent, SeparatorSpacingSize } from "discord-api-types/v10";
|
|
2
|
+
import { type ReactElement } from "react";
|
|
2
3
|
interface SeparatorProps extends Omit<APISeparatorComponent, "type" | "spacing"> {
|
|
3
4
|
spacing?: keyof typeof SeparatorSpacingSize;
|
|
4
5
|
}
|
|
5
|
-
export declare function Separator({ spacing, ...props }: SeparatorProps):
|
|
6
|
+
export declare function Separator({ spacing, ...props }: SeparatorProps): ReactElement<APISeparatorComponent>;
|
|
6
7
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"separator.js","sourceRoot":"","sources":["../../src/components/separator.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,IAAI,gBAAgB,EAAE,MAAM,SAAS,CAAC;AACxD,OAAO,EAAE,aAAa,
|
|
1
|
+
{"version":3,"file":"separator.js","sourceRoot":"","sources":["../../src/components/separator.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,IAAI,gBAAgB,EAAE,MAAM,SAAS,CAAC;AACxD,OAAO,EAAE,aAAa,EAAqB,MAAM,OAAO,CAAC;AAMzD,MAAM,UAAU,SAAS,CAAC,EAAE,OAAO,EAAE,GAAG,KAAK,EAAkB;IAC7D,MAAM,SAAS,GAAG,gBAAgB,CAAC,EAAE,OAAO,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC;IAC1D,OAAO,aAAa,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC;AAClD,CAAC"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import type { APITextDisplayComponent } from "discord-api-types/v10";
|
|
2
|
-
import { type ReactNode } from "react";
|
|
2
|
+
import { type ReactElement, type ReactNode } from "react";
|
|
3
3
|
interface TextDisplayProps extends Omit<APITextDisplayComponent, "content" | "type"> {
|
|
4
4
|
children: ReactNode;
|
|
5
5
|
}
|
|
6
|
-
export declare function TextDisplay({ children, ...rest }: TextDisplayProps):
|
|
6
|
+
export declare function TextDisplay({ children, ...rest }: TextDisplayProps): ReactElement<APITextDisplayComponent>;
|
|
7
7
|
export declare function parseTextDisplay<T extends APITextDisplayComponent>(props: T, children: string): T;
|
|
8
8
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"text-display.js","sourceRoot":"","sources":["../../src/components/text-display.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,IAAI,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAC1D,OAAO,EAAE,aAAa,
|
|
1
|
+
{"version":3,"file":"text-display.js","sourceRoot":"","sources":["../../src/components/text-display.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,IAAI,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAqC,MAAM,OAAO,CAAC;AAMzE,MAAM,UAAU,WAAW,CAAC,EAAE,QAAQ,EAAE,GAAG,IAAI,EAAoB;IACjE,MAAM,KAAK,GAAG,gBAAgB,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;IACzC,OAAO,aAAa,CAAC,cAAc,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;AACxD,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAoC,KAAQ,EAAE,QAAgB;IAC5F,OAAO,EAAE,GAAG,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;AACzC,CAAC"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { APITextInputComponent, TextInputStyle } from "discord-api-types/v10";
|
|
2
|
+
import { type ReactElement } from "react";
|
|
2
3
|
interface TextInputProps extends Omit<APITextInputComponent, "type" | "style"> {
|
|
3
4
|
style?: keyof typeof TextInputStyle;
|
|
4
5
|
}
|
|
5
|
-
export declare function TextInput({ style, ...props }: TextInputProps):
|
|
6
|
+
export declare function TextInput({ style, ...props }: TextInputProps): ReactElement<APITextInputComponent>;
|
|
6
7
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"text-input.js","sourceRoot":"","sources":["../../src/components/text-input.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,IAAI,gBAAgB,EAAE,MAAM,SAAS,CAAC;AACxD,OAAO,EAAE,aAAa,
|
|
1
|
+
{"version":3,"file":"text-input.js","sourceRoot":"","sources":["../../src/components/text-input.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,IAAI,gBAAgB,EAAE,MAAM,SAAS,CAAC;AACxD,OAAO,EAAE,aAAa,EAAqB,MAAM,OAAO,CAAC;AAMzD,MAAM,UAAU,SAAS,CAAC,EAAE,KAAK,EAAE,GAAG,KAAK,EAAkB;IAC3D,MAAM,SAAS,GAAG,gBAAgB,CAAC,EAAE,KAAK,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC;IACxD,OAAO,aAAa,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC;AAClD,CAAC"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { APIThumbnailComponent } from "discord-api-types/v10";
|
|
2
|
+
import { type ReactElement } from "react";
|
|
2
3
|
interface ThumbnailProps extends Omit<APIThumbnailComponent, "media" | "type"> {
|
|
3
4
|
media: APIThumbnailComponent["media"] | string;
|
|
4
5
|
}
|
|
5
|
-
export declare function Thumbnail({ media, ...rest }: ThumbnailProps):
|
|
6
|
+
export declare function Thumbnail({ media, ...rest }: ThumbnailProps): ReactElement<APIThumbnailComponent>;
|
|
6
7
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"thumbnail.js","sourceRoot":"","sources":["../../src/components/thumbnail.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,IAAI,gBAAgB,EAAE,MAAM,SAAS,CAAC;AACxD,OAAO,EAAE,aAAa,
|
|
1
|
+
{"version":3,"file":"thumbnail.js","sourceRoot":"","sources":["../../src/components/thumbnail.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,IAAI,gBAAgB,EAAE,MAAM,SAAS,CAAC;AACxD,OAAO,EAAE,aAAa,EAAqB,MAAM,OAAO,CAAC;AAMzD,MAAM,UAAU,SAAS,CAAC,EAAE,KAAK,EAAE,GAAG,IAAI,EAAkB;IAC1D,MAAM,KAAK,GAAG,gBAAgB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAC5C,OAAO,aAAa,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;AAC9C,CAAC"}
|
package/dist/react/reconciler.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import ReactReconciler from "react-reconciler";
|
|
2
2
|
import { DefaultEventPriority, NoEventPriority } from "react-reconciler/constants.js";
|
|
3
|
+
import { handlers } from "../rendering/callbacks.js";
|
|
3
4
|
import { createNode, isNode, removeChild } from "./node.js";
|
|
4
5
|
import { createTextNode } from "./text-node.js";
|
|
5
6
|
let currentUpdatePriority = NoEventPriority;
|
|
@@ -90,11 +91,12 @@ export const reconciler = ReactReconciler({
|
|
|
90
91
|
startSuspendingCommit() { },
|
|
91
92
|
suspendInstance() { },
|
|
92
93
|
waitForCommitToBeReady: () => null,
|
|
93
|
-
commitUpdate(node,
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
node.props = propsToUse;
|
|
94
|
+
commitUpdate(node, _type, oldProps, newProps) {
|
|
95
|
+
if (typeof oldProps.$registeredHandler === "string") {
|
|
96
|
+
handlers.delete(oldProps.$registeredHandler);
|
|
97
97
|
}
|
|
98
|
+
const { children, ...props } = newProps !== null && newProps !== void 0 ? newProps : oldProps;
|
|
99
|
+
node.props = props;
|
|
98
100
|
},
|
|
99
101
|
commitTextUpdate(node, _oldText, newText) {
|
|
100
102
|
node.props = newText;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reconciler.js","sourceRoot":"","sources":["../../src/react/reconciler.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"reconciler.js","sourceRoot":"","sources":["../../src/react/reconciler.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { type MessageComponentInteraction, type ModalSubmitInteraction } from "./interaction.ts";
|
|
2
|
+
type Handler = ((i: MessageComponentInteraction) => void | Promise<void>) | ((i: ModalSubmitInteraction) => void | Promise<void>);
|
|
3
|
+
export declare const handlers: Map<string, Handler>;
|
|
4
|
+
/** The pattern to export for handling `onClick`/`onSubmit` callbacks */
|
|
5
|
+
export declare const pattern = "@dressed/react-handler-:handlerId{-:fallback}";
|
|
6
|
+
/** Creates a function for handling callback interactions */
|
|
7
|
+
export declare function setupCallbacksHandler<T extends Record<string, Handler> = {}>(fallbacks?: T): ((interaction: MessageComponentInteraction | ModalSubmitInteraction, args: {
|
|
8
|
+
handlerId: string;
|
|
9
|
+
fallback?: string;
|
|
10
|
+
}) => Promise<void>) & {
|
|
11
|
+
fallbacks: { [K in keyof T]: K; };
|
|
12
|
+
};
|
|
13
|
+
export declare function registerHandler(handler: Handler, fallback?: string, id?: string): {
|
|
14
|
+
custom_id: string;
|
|
15
|
+
$registeredHandler: string;
|
|
16
|
+
};
|
|
17
|
+
export {};
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { patchInteraction } from "./interaction.js";
|
|
2
|
+
export const handlers = new Map();
|
|
3
|
+
/** The pattern to export for handling `onClick`/`onSubmit` callbacks */
|
|
4
|
+
export const pattern = "@dressed/react-handler-:handlerId{-:fallback}";
|
|
5
|
+
/** Creates a function for handling callback interactions */
|
|
6
|
+
// biome-ignore lint/complexity/noBannedTypes: Need an empty record
|
|
7
|
+
export function setupCallbacksHandler(fallbacks = {}) {
|
|
8
|
+
for (const key in fallbacks)
|
|
9
|
+
handlers.set(key, fallbacks[key]);
|
|
10
|
+
return Object.assign(async (interaction, args) => {
|
|
11
|
+
var _a, _b;
|
|
12
|
+
const handler = (_a = handlers.get(args.handlerId)) !== null && _a !== void 0 ? _a : handlers.get((_b = args.fallback) !== null && _b !== void 0 ? _b : "default");
|
|
13
|
+
// @ts-expect-error
|
|
14
|
+
interaction = interaction.$patched === Symbol.for("@dressed/react") ? interaction : patchInteraction(interaction);
|
|
15
|
+
if (!handler)
|
|
16
|
+
throw new Error("Unknown handler");
|
|
17
|
+
await handler(interaction);
|
|
18
|
+
if (!interaction.history.length)
|
|
19
|
+
interaction.deferUpdate();
|
|
20
|
+
}, { fallbacks: Object.fromEntries(Object.keys(fallbacks).map((k) => [k, k])) });
|
|
21
|
+
}
|
|
22
|
+
export function registerHandler(handler, fallback, id = randId()) {
|
|
23
|
+
handlers.set(id, handler);
|
|
24
|
+
const fbText = fallback ? `-${fallback}` : "";
|
|
25
|
+
return { custom_id: `@dressed/react-handler-${id}${fbText}`, $registeredHandler: id };
|
|
26
|
+
}
|
|
27
|
+
function randId(length = 16) {
|
|
28
|
+
const chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
|
|
29
|
+
const array = new Uint32Array(length);
|
|
30
|
+
crypto.getRandomValues(array);
|
|
31
|
+
return Array.from(array, (x) => chars[x % chars.length]).join("");
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=callbacks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"callbacks.js","sourceRoot":"","sources":["../../src/rendering/callbacks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAMnH,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,iBAAiB,CAAC,CAAC;QACjD,MAAM,OAAO,CAAC,WAAoB,CAAC,CAAC;QACpC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,MAAM;YAAE,WAAW,CAAC,WAAW,EAAE,CAAC;IAC7D,CAAC,EACD,EAAE,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,CAA0B,EAAE,CACtG,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,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,CAAC;AACxF,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,3 +1,6 @@
|
|
|
1
1
|
import type { ReactNode } from "react";
|
|
2
2
|
import { type RendererCallback } from "../react/renderer.ts";
|
|
3
|
-
export declare function render(children: ReactNode, callback: RendererCallback):
|
|
3
|
+
export declare function render(children: ReactNode, callback: RendererCallback): {
|
|
4
|
+
renderer: import("../react/renderer.ts").Renderer;
|
|
5
|
+
container: any;
|
|
6
|
+
};
|
package/dist/rendering/index.js
CHANGED
|
@@ -5,6 +5,6 @@ export function render(children, callback) {
|
|
|
5
5
|
const container = reconciler.createContainer(renderer, 0, null, false, null, "dressed", (error) => console.error(error), () => { }, () => { }, () => { }, null);
|
|
6
6
|
if (container !== null)
|
|
7
7
|
reconciler.updateContainer(children, container);
|
|
8
|
-
return renderer;
|
|
8
|
+
return { renderer, container };
|
|
9
9
|
}
|
|
10
10
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/rendering/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAyB,MAAM,sBAAsB,CAAC;AAE7E,MAAM,UAAU,MAAM,CAAC,QAAmB,EAAE,QAA0B;IACpE,MAAM,QAAQ,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAC;IAE1C,MAAM,SAAS,GAAG,UAAU,CAAC,eAAe,CAC1C,QAAQ,EACR,CAAC,EACD,IAAI,EACJ,KAAK,EACL,IAAI,EACJ,SAAS,EACT,CAAC,KAAY,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,EACtC,GAAG,EAAE,GAAE,CAAC,EACR,GAAG,EAAE,GAAE,CAAC,EACR,GAAG,EAAE,GAAE,CAAC,EACR,IAAI,CACL,CAAC;IAEF,IAAI,SAAS,KAAK,IAAI;QAAE,UAAU,CAAC,eAAe,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IAExE,OAAO,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/rendering/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAyB,MAAM,sBAAsB,CAAC;AAE7E,MAAM,UAAU,MAAM,CAAC,QAAmB,EAAE,QAA0B;IACpE,MAAM,QAAQ,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAC;IAE1C,MAAM,SAAS,GAAG,UAAU,CAAC,eAAe,CAC1C,QAAQ,EACR,CAAC,EACD,IAAI,EACJ,KAAK,EACL,IAAI,EACJ,SAAS,EACT,CAAC,KAAY,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,EACtC,GAAG,EAAE,GAAE,CAAC,EACR,GAAG,EAAE,GAAE,CAAC,EACR,GAAG,EAAE,GAAE,CAAC,EACR,IAAI,CACL,CAAC;IAEF,IAAI,SAAS,KAAK,IAAI;QAAE,UAAU,CAAC,eAAe,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IAExE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC;AACjC,CAAC"}
|
|
@@ -7,7 +7,9 @@ type ReactivatedInteraction<T> = OverrideMethodParams<T, {
|
|
|
7
7
|
components: ReactNode,
|
|
8
8
|
...(Parameters<T[K]> extends readonly [...infer P] ? [data?: Omit<Exclude<P[0], string>, "content" | "components">, $req?: P[1]] : never)
|
|
9
9
|
];
|
|
10
|
-
}
|
|
10
|
+
}> & {
|
|
11
|
+
$patched: symbol;
|
|
12
|
+
};
|
|
11
13
|
type OverrideMethodParams<T, Overrides extends Record<string, unknown[]>> = {
|
|
12
14
|
[K in keyof T]: K extends keyof Overrides ? T[K] extends (...args: any) => any ? (...args: Overrides[K]) => ReturnType<T[K]> : T[K] : T[K];
|
|
13
15
|
};
|
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
import { MessageFlags } from "discord-api-types/v10";
|
|
2
2
|
import { editWebhookMessage, } from "dressed";
|
|
3
|
+
import { reconciler } from "../react/reconciler.js";
|
|
3
4
|
import { render } from "./index.js";
|
|
4
5
|
export function patchInteraction(interaction) {
|
|
6
|
+
const createdAt = Date.now();
|
|
5
7
|
if (!interaction)
|
|
6
8
|
throw new Error("No interaction");
|
|
7
9
|
// biome-ignore lint/suspicious/noExplicitAny: We're overriding the types
|
|
8
|
-
const newInteraction = interaction;
|
|
10
|
+
const newInteraction = { $patched: Symbol.for("@dressed/react"), ...interaction };
|
|
9
11
|
// @ts-expect-error
|
|
10
12
|
const editReply = interaction.editReply;
|
|
11
13
|
for (const method of ["reply", "editReply", "update", "followUp", "showModal"]) {
|
|
@@ -17,7 +19,10 @@ export function patchInteraction(interaction) {
|
|
|
17
19
|
data.flags = ((_a = data.flags) !== null && _a !== void 0 ? _a : 0) | MessageFlags.IsComponentsV2;
|
|
18
20
|
return new Promise((resolve) => {
|
|
19
21
|
let followUpId;
|
|
20
|
-
render(components, async (c) => {
|
|
22
|
+
const { container } = render(components, async (c) => {
|
|
23
|
+
if (Date.now() > createdAt + 6e4 * 15) {
|
|
24
|
+
return reconciler.updateContainer(null, container);
|
|
25
|
+
}
|
|
21
26
|
// @ts-expect-error
|
|
22
27
|
data.components = c;
|
|
23
28
|
if (followUpId) {
|
|
@@ -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;AAGjB,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;
|
|
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;AAGjB,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAyCpC,MAAM,UAAU,gBAAgB,CAC9B,WAAc;IAEd,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC7B,IAAI,CAAC,WAAW;QAAE,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC;IACpD,yEAAyE;IACzE,MAAM,cAAc,GAAG,EAAE,QAAQ,EAAE,MAAM,CAAC,GAAG,CAAC,gBAAgB,CAAC,EAAE,GAAG,WAAW,EAAS,CAAC;IACzF,mBAAmB;IACnB,MAAM,SAAS,GAAG,WAAW,CAAC,SAAS,CAAC;IACxC,KAAK,MAAM,MAAM,IAAI,CAAC,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,UAAU,EAAE,WAAW,CAAgB,EAAE,CAAC;QAC9F,IAAI,CAAC,CAAC,MAAM,IAAI,WAAW,CAAC;YAAE,SAAS;QAEvC,MAAM,QAAQ,GAAG,WAAW,CAAC,MAAM,CAA4B,CAAC;QAEhE,cAAc,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,GAAG,EAAE,EAAE,IAAI,CAA0C,EAAE,EAAE;;YACrG,IAAI,CAAC,KAAK,GAAG,CAAC,MAAA,IAAI,CAAC,KAAK,mCAAI,CAAC,CAAC,GAAG,YAAY,CAAC,cAAc,CAAC;YAE7D,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;gBAC7B,IAAI,UAAkB,CAAC;gBACvB,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,CAAC,UAAU,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;oBACnD,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,GAAG,GAAG,GAAG,EAAE,EAAE,CAAC;wBACtC,OAAO,UAAU,CAAC,eAAe,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;oBACrD,CAAC;oBACD,mBAAmB;oBACnB,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;oBACpB,IAAI,UAAU,EAAE,CAAC;wBACf,OAAO,kBAAkB,CAAC,WAAW,CAAC,cAAc,EAAE,WAAW,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;oBAC9G,CAAC;oBACD,MAAM,UAAU,GAAG,CAAC,MAAM,KAAK,OAAO,IAAI,MAAM,KAAK,QAAQ,CAAC,IAAI,WAAW,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;oBACvG,MAAM,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;oBAClE,IAAI,MAAM,KAAK,UAAU;wBAAE,UAAU,GAAG,GAAG,CAAC,EAAE,CAAC;oBAC/C,OAAO,CAAC,GAAG,CAAC,CAAC;gBACf,CAAC,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;QACL,CAAC,CAAC;IACJ,CAAC;IACD,OAAO,cAAc,CAAC;AACxB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dressed/react",
|
|
3
|
-
"version": "1.7.4-rc.
|
|
3
|
+
"version": "1.7.4-rc.6",
|
|
4
4
|
"repository": {
|
|
5
5
|
"type": "git",
|
|
6
6
|
"url": "git+https://github.com/Inbestigator/dressed.git",
|
|
@@ -10,7 +10,10 @@
|
|
|
10
10
|
"dressed": "^1.10.1",
|
|
11
11
|
"react": "^19.2.3"
|
|
12
12
|
},
|
|
13
|
-
"exports":
|
|
13
|
+
"exports": {
|
|
14
|
+
".": "./dist/index.js",
|
|
15
|
+
"./callbacks": "./dist/callbacks.js"
|
|
16
|
+
},
|
|
14
17
|
"description": "Render Dressed's components using React",
|
|
15
18
|
"files": [
|
|
16
19
|
"dist"
|