@dressed/react 1.7.4-rc.4 → 1.7.4-rc.5

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.
@@ -1,9 +1,15 @@
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
+ }
6
11
  export declare function Button(props: ButtonWithCustomId): ReactElement<APIButtonComponentWithCustomId>;
12
+ export declare function Button(props: ButtonWithOnClick): ReactElement<APIButtonComponentWithCustomId>;
7
13
  export declare function Button(props: Omit<APIButtonComponentWithSKUId, "type" | "style">): ReactElement<APIButtonComponentWithSKUId>;
8
14
  export declare function Button(props: Omit<APIButtonComponentWithURL, "type" | "style">): ReactElement<APIButtonComponentWithURL>;
9
15
  export {};
@@ -1,7 +1,11 @@
1
1
  import { Button as DressedComponent } from "dressed";
2
2
  import { createElement } from "react";
3
+ import { registerHandler } from "../rendering/interaction.js";
3
4
  export function Button(props) {
4
- const component = DressedComponent(props);
5
+ const component = DressedComponent({
6
+ ...props,
7
+ ...("onClick" in props ? registerHandler(props.onClick) : {}),
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;AAczD,MAAM,UAAU,MAAM,CACpB,KAGqD;IAErD,MAAM,SAAS,GAAG,gBAAgB,CAAC,KAAc,CAAC,CAAC;IACnD,OAAO,aAAa,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC;AAClD,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,EAAoC,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAoBhG,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,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;KAC9D,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): import("react").ReactElement<APIContainerComponent, string | import("react").JSXElementConstructor<any>>;
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,EAAkB,MAAM,OAAO,CAAC;AACtD,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
+ {"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
- export declare function FileUpload(props: Omit<APIFileUploadComponent, "type">): import("react").ReactElement<APIFileUploadComponent, string | import("react").JSXElementConstructor<any>>;
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,EAAE,MAAM,OAAO,CAAC;AAEtC,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
+ {"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): import("react").ReactElement<APIFileComponent, string | import("react").JSXElementConstructor<any>>;
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,EAAE,MAAM,OAAO,CAAC;AAMtC,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
+ {"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): import("react").ReactElement<APISectionComponent, string | import("react").JSXElementConstructor<any>>;
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,EAAkB,MAAM,OAAO,CAAC;AACtD,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
+ {"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,28 @@
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 MenuProps<K extends SelectType> = Omit<SelectMap[`${K}Select`], "type" | "options"> & ({
11
+ type SelectMenuWithCustomId<K extends SelectType> = Omit<SelectMap[`${K}Select`], "type" | "options"> & {
12
+ type: K;
13
+ } & (K extends "String" ? {
11
14
  children: ReactNode;
12
- type: "String";
13
- } | {
14
- type: Exclude<K, "String">;
15
- });
16
- export declare function SelectMenu<K extends SelectType>(props: MenuProps<K>): import("react").DOMElement<never, Element>;
17
- export declare function SelectMenuOption(props: APISelectMenuOption): import("react").ReactElement<APISelectMenuOption, string | import("react").JSXElementConstructor<any>>;
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
+ onClick: (interaction: MessageComponentInteraction<`${K}Select`>) => void;
19
+ };
20
+ export declare function SelectMenu<K extends SelectType>(props: SelectMenuWithCustomId<K> & {
21
+ type: K;
22
+ }): ReactElement<SelectMap[`${K}Select`]>;
23
+ export declare function SelectMenu<K extends SelectType>(props: SelectMenuWithOnClick<K> & {
24
+ type: K;
25
+ }): ReactElement<SelectMap[`${K}Select`]>;
26
+ export declare function SelectMenuOption(props: APISelectMenuOption): ReactElement<APISelectMenuOption>;
18
27
  export declare function parseSelectMenu<T extends APISelectMenuComponent>(props: T, children: Node<APISelectMenuOption>[]): T;
19
28
  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/interaction.js";
4
5
  export function SelectMenu(props) {
5
6
  const { children, ...rest } = props;
6
- const component = DressedComponent(rest);
7
+ const component = DressedComponent({
8
+ ...rest,
9
+ ...("onClick" in props ? registerHandler(props.onClick) : {}),
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,EAAkB,MAAM,OAAO,CAAC;AAYtD,MAAM,UAAU,UAAU,CAAuB,KAAmB;IAClE,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,EAAE,GAAG,KAAgC,CAAC;IAC/D,MAAM,SAAS,GAAG,gBAAgB,CAAC,IAAa,CAAC,CAAC;IAClD,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
+ {"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,EAAoC,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAwBhG,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,SAAS,IAAI,KAAK,CAAC,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,OAAgB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;KAC9D,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): import("react").ReactElement<APISeparatorComponent, string | import("react").JSXElementConstructor<any>>;
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,EAAE,MAAM,OAAO,CAAC;AAMtC,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
+ {"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): import("react").ReactElement<APITextDisplayComponent, string | import("react").JSXElementConstructor<any>>;
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,EAAkB,MAAM,OAAO,CAAC;AAMtD,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
+ {"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): import("react").ReactElement<APITextInputComponent, string | import("react").JSXElementConstructor<any>>;
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,EAAE,MAAM,OAAO,CAAC;AAMtC,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
+ {"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): import("react").ReactElement<APIThumbnailComponent, string | import("react").JSXElementConstructor<any>>;
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,EAAE,MAAM,OAAO,CAAC;AAMtC,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"}
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"}
@@ -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/interaction.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, _payload, _type, oldProps, newProps) {
94
- const propsToUse = newProps.props === undefined ? oldProps.props : newProps.props;
95
- if (propsToUse !== undefined) {
96
- node.props = propsToUse;
94
+ commitUpdate(node, _type, oldProps, newProps) {
95
+ if ("$$registeredHandler" in oldProps && 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":"AACA,OAAO,eAAe,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AACtF,OAAO,EAAE,UAAU,EAAE,MAAM,EAAa,WAAW,EAAE,MAAM,WAAW,CAAC;AAEvE,OAAO,EAAE,cAAc,EAAiB,MAAM,gBAAgB,CAAC;AAE/D,IAAI,qBAAqB,GAAW,eAAe,CAAC;AAEpD,MAAM,CAAC,MAAM,UAAU,GAAG,eAAe,CAevC;IACA,gBAAgB,EAAE,IAAI;IACtB,mBAAmB,EAAE,KAAK;IAC1B,iBAAiB,EAAE,KAAK;IACxB,iBAAiB,EAAE,IAAI;IACvB,kBAAkB,EAAE,IAAI;IACxB,iBAAiB,EAAE,cAAc;IACjC,eAAe,EAAE,UAAU,CAAC,UAAU;IACtC,aAAa,EAAE,UAAU,CAAC,YAAY;IACtC,SAAS,EAAE,CAAC,CAAC;IACb,kBAAkB,EAAE,GAAG,EAAE,CAAC,IAAI;IAC9B,mBAAmB,EAAE,GAAG,EAAE,CAAC,IAAI;IAC/B,cAAc,CAAC,IAAI,EAAE,KAAK;QACxB,IAAI,IAAI,KAAK,cAAc,EAAE,CAAC;YAC5B,MAAM,IAAI,KAAK,CAAC,sBAAsB,IAAI,EAAE,CAAC,CAAC;QAChD,CAAC;QAED,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,EAAE,GAAG,KAAK,CAAC;QAEpC,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;QAC9B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;YAClB,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;QAC/D,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IACD,kBAAkB,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC;IAClD,oBAAoB,EAAE,GAAG,EAAE,CAAC,KAAK;IACjC,qBAAqB,KAAI,CAAC;IAC1B,wBAAwB,KAAI,CAAC;IAC7B,uBAAuB,KAAI,CAAC;IAC5B,mBAAmB,EAAE,GAAG,EAAE,CAAC,IAAI;IAC/B,oBAAoB,EAAE,GAAG,EAAE,CAAC,IAAI;IAChC,cAAc,CAAC,QAAQ;QACrB,QAAQ,CAAC,KAAK,GAAG,EAAE,CAAC;IACtB,CAAC;IACD,sBAAsB,EAAE,CAAC,QAAQ,EAAE,KAAK,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;IACvE,wBAAwB,EAAE,CAAC,QAAQ,EAAE,KAAK,EAAE,EAAE,CAAC,WAAW,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IACjF,uBAAuB,CAAC,QAAQ,EAAE,KAAK,EAAE,MAAM;QAC7C,IAAI,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC3C,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC;YACjB,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC;QAChC,CAAC;QACD,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;IACzC,CAAC;IACD,kBAAkB,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;IAClE,WAAW,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;IAC3D,WAAW,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC;IACnE,YAAY,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM;QAChC,IAAI,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC5C,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC;YACjB,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;QACjC,CAAC;QACD,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;IAC1C,CAAC;IACD,gBAAgB,EAAE,GAAG,EAAE,CAAC,IAAI;IAC5B,gBAAgB,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,cAAc,CAAC,QAAQ,CAAC,MAAM,CAAC;IAC/D,kBAAkB,KAAI,CAAC;IACvB,kBAAkB;QAChB,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;IAC/C,CAAC;IACD,iBAAiB;QACf,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;IACtD,CAAC;IACD,uBAAuB,EAAE,GAAG,EAAE,CAAC,KAAK;IACpC,wBAAwB,CAAC,WAAW;QAClC,qBAAqB,GAAG,WAAW,CAAC;IACtC,CAAC;IACD,wBAAwB,EAAE,GAAG,EAAE,CAAC,qBAAqB;IACrD,qBAAqB,EAAE,GAAG,EAAE,CAAC,qBAAqB,IAAI,oBAAoB;IAC1E,gBAAgB,EAAE,GAAG,EAAE,CAAC,IAAI;IAC5B,oBAAoB,EAAE,IAAI;IAC1B,qBAAqB,EAAE;QACrB,QAAQ,EAAE,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC;QACrC,aAAa,EAAE,IAAI;QACnB,cAAc,EAAE,IAAI;QACpB,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,IAAI;QACd,YAAY,EAAE,CAAC;KACiB;IAClC,iBAAiB,KAAI,CAAC;IACtB,wBAAwB,KAAI,CAAC;IAC7B,4BAA4B,EAAE,GAAG,EAAE,CAAC,KAAK;IACzC,mBAAmB,KAAI,CAAC;IACxB,gBAAgB,EAAE,GAAG,EAAE,CAAC,IAAI;IAC5B,qBAAqB,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;IAC/B,eAAe,EAAE,GAAG,EAAE,CAAC,KAAK;IAC5B,qBAAqB,KAAI,CAAC;IAC1B,eAAe,KAAI,CAAC;IACpB,sBAAsB,EAAE,GAAG,EAAE,CAAC,IAAI;IAClC,YAAY,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAiC;QAC7E,MAAM,UAAU,GAAG,QAAQ,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC;QAClF,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;YAC7B,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC;QAC1B,CAAC;IACH,CAAC;IACD,gBAAgB,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO;QACtC,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC;IACvB,CAAC;IACD,YAAY,CAAC,QAAQ;QACnB,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC;IACzB,CAAC;IACD,cAAc,CAAC,QAAQ;QACrB,QAAQ,CAAC,MAAM,GAAG,KAAK,CAAC;IAC1B,CAAC;IACD,gBAAgB,CAAC,YAAY;QAC3B,YAAY,CAAC,MAAM,GAAG,IAAI,CAAC;IAC7B,CAAC;IACD,kBAAkB,CAAC,YAAY;QAC7B,YAAY,CAAC,MAAM,GAAG,KAAK,CAAC;IAC9B,CAAC;CACF,CAAC,CAAC"}
1
+ {"version":3,"file":"reconciler.js","sourceRoot":"","sources":["../../src/react/reconciler.ts"],"names":[],"mappings":"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"}
@@ -2,12 +2,24 @@ 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
4
  import type { ReactNode } from "react";
5
+ type Handler = ((i: MessageComponentInteraction) => Promise<void>) | ((i: ModalSubmitInteraction) => Promise<void>);
6
+ export declare const handlers: Map<string, Handler>;
7
+ export declare const pattern = "@dressed/react-handler-:handlerId";
8
+ export declare function handleInteraction(interaction: MessageComponentInteraction | ModalSubmitInteraction, args: {
9
+ handlerId: string;
10
+ }): Promise<void>;
11
+ export declare function registerHandler(handler: Handler, id?: string): {
12
+ custom_id: string;
13
+ $registeredHandler: string;
14
+ };
5
15
  type ReactivatedInteraction<T> = OverrideMethodParams<T, {
6
16
  [K in "reply" | "editReply" | "update" | "followUp" | "showModal"]: [
7
17
  components: ReactNode,
8
18
  ...(Parameters<T[K]> extends readonly [...infer P] ? [data?: Omit<Exclude<P[0], string>, "content" | "components">, $req?: P[1]] : never)
9
19
  ];
10
- }>;
20
+ }> & {
21
+ $patched: symbol;
22
+ };
11
23
  type OverrideMethodParams<T, Overrides extends Record<string, unknown[]>> = {
12
24
  [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
25
  };
@@ -1,11 +1,32 @@
1
1
  import { MessageFlags } from "discord-api-types/v10";
2
2
  import { editWebhookMessage, } from "dressed";
3
3
  import { render } from "./index.js";
4
+ export const handlers = new Map();
5
+ export const pattern = "@dressed/react-handler-:handlerId";
6
+ export async function handleInteraction(interaction, args) {
7
+ const handler = handlers.get(args.handlerId);
8
+ if (!handler)
9
+ throw new Error("Unknown handler");
10
+ // @ts-expect-error
11
+ await handler(interaction.$patched === Symbol.for("@dressed/react") ? interaction : patchInteraction(interaction));
12
+ if (!interaction.history.length)
13
+ interaction.deferUpdate();
14
+ }
15
+ export function registerHandler(handler, id = randId()) {
16
+ handlers.set(id, handler);
17
+ return { custom_id: `@dressed/react-handler-${id}`, $registeredHandler: id };
18
+ }
19
+ function randId(length = 16) {
20
+ const chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
21
+ const array = new Uint32Array(length);
22
+ crypto.getRandomValues(array);
23
+ return Array.from(array, (x) => chars[x % chars.length]).join("");
24
+ }
4
25
  export function patchInteraction(interaction) {
5
26
  if (!interaction)
6
27
  throw new Error("No interaction");
7
28
  // biome-ignore lint/suspicious/noExplicitAny: We're overriding the types
8
- const newInteraction = interaction;
29
+ const newInteraction = { $$patched: Symbol.for("@dressed/react"), ...interaction };
9
30
  // @ts-expect-error
10
31
  const editReply = interaction.editReply;
11
32
  for (const method of ["reply", "editReply", "update", "followUp", "showModal"]) {
@@ -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;AAuCpC,MAAM,UAAU,gBAAgB,CAC9B,WAAc;IAEd,IAAI,CAAC,WAAW;QAAE,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC;IACpD,yEAAyE;IACzE,MAAM,cAAc,GAAG,WAAkB,CAAC;IAC1C,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,CAAC,UAAU,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;oBAC7B,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"}
1
+ {"version":3,"file":"interaction.js","sourceRoot":"","sources":["../../src/rendering/interaction.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dressed/react",
3
- "version": "1.7.4-rc.4",
3
+ "version": "1.7.4-rc.5",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "git+https://github.com/Inbestigator/dressed.git",