string-select-unlimited 1.0.0

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/README.md ADDED
@@ -0,0 +1,43 @@
1
+ # String Select Unlimited
2
+
3
+ A wrapper around discord.js `StringSelectMenu` to bypass Discord's 25 option limit by adding pagination.
4
+
5
+ - Used by [Pokecord++](https://pokecord.org) and [Audicy](https://audicy.xyz) Discord bots.
6
+
7
+ # Usage
8
+
9
+ ## Constructor
10
+
11
+ `StringSelectUnlimited(options : StringSelectMenuOptions)`
12
+
13
+ | Parameter | Type | Description | Required | Default |
14
+ |:--------------:|:--------:|:---------------------------------------------------:|:--------:|:-----------------------:|
15
+ | `pageMetadata` | PageData | Additional data to stringify along with page option | no | { emoji: {}, data: {} } |
16
+ | `totalItems` | number | Total number of items | no | 0 |
17
+ | `page` | number | Initial page number | no | 1 |
18
+
19
+ ## Methods
20
+
21
+ | Method | Parameters | Description |
22
+ |:------:|:------------:|:-------------------------:|
23
+ | `goto` | page: number | Navigate to specific page |
24
+
25
+ ## Setters
26
+
27
+ | Method | Parameters | Description |
28
+ |:-----------------:|:------------------:|:--------------------:|
29
+ | `setPageMetadata` | metadata: PageData | Update page metadata |
30
+ | `setTotalItems` | total: number | Update total items |
31
+
32
+ ## Getters
33
+
34
+ | Method | Returns | Description |
35
+ |:-------------------:|:--------:|:--------------------------------:|
36
+ | `pageMetadata` | PageData | Page Metadata |
37
+ | `currentPageNumber` | number | Current page number |
38
+ | `totalPageNumber` | number | Total number of pages |
39
+ | `nextPageNumber` | number | Next page number |
40
+ | `prevPageNumber` | number | Previous page number |
41
+ | `pageSize` | number | Menu size excluding page options |
42
+
43
+
@@ -0,0 +1,36 @@
1
+ import { StringSelectMenuBuilder, type SelectMenuComponentOptionData } from "discord.js";
2
+ import type { APISelectMenuOption } from 'discord-api-types/v10';
3
+ import type { PageData } from "./typings/PageData.js";
4
+ import type { StringSelectUnlimitedOptions } from "./typings/StringSelectUnlimitedOptions.js";
5
+ export declare class StringSelectUnlimited extends StringSelectMenuBuilder {
6
+ private menuOptions;
7
+ private page;
8
+ private pageData;
9
+ private totalPages;
10
+ private totalItems;
11
+ private placeholder;
12
+ private menuLimit;
13
+ /**
14
+ * @param page Initial page number
15
+ * @param totalItems Total number of items
16
+ * @param pageMetadata Metadata to stringify along with page option
17
+ */
18
+ constructor({ page, totalItems, pageMetadata, }: StringSelectUnlimitedOptions);
19
+ private parsePagination;
20
+ private parsePageData;
21
+ private getPage;
22
+ setOptions(options: SelectMenuComponentOptionData[]): this;
23
+ addOptions(options: SelectMenuComponentOptionData[]): this;
24
+ spliceOptions(index: number, deleteCount: number, options: APISelectMenuOption[]): this;
25
+ setPlaceholder(placeholder: string): this;
26
+ setTotalItems(total: number): this;
27
+ setPageMetadata(metadata: PageData): this;
28
+ goto(page: number): this;
29
+ get pageMetadata(): PageData | null;
30
+ get pageSize(): number;
31
+ get currentPageNumber(): number;
32
+ get totalPageNumber(): number;
33
+ get nextPageNumber(): number | null;
34
+ get prevPageNumber(): number | null;
35
+ }
36
+ //# sourceMappingURL=StringSelectUnlimited.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StringSelectUnlimited.d.ts","sourceRoot":"","sources":["../src/StringSelectUnlimited.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,uBAAuB,EACvB,KAAK,6BAA6B,EACrC,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAC,mBAAmB,EAAC,MAAM,uBAAuB,CAAA;AAC9D,OAAO,KAAK,EAAC,QAAQ,EAAC,MAAM,uBAAuB,CAAC;AACpD,OAAO,KAAK,EAAC,4BAA4B,EAAC,MAAM,2CAA2C,CAAC;AAI5F,qBAAa,qBAAsB,SAAQ,uBAAuB;IAE9D,OAAO,CAAC,WAAW,CAAuC;IAE1D,OAAO,CAAC,IAAI,CAAS;IAErB,OAAO,CAAC,QAAQ,CAAW;IAE3B,OAAO,CAAC,UAAU,CAAK;IACvB,OAAO,CAAC,UAAU,CAAS;IAE3B,OAAO,CAAC,WAAW,CAAM;IAEzB,OAAO,CAAC,SAAS,CAAkB;IAEnC;;;;OAIG;gBAES,EACI,IAAI,EACJ,UAAU,EACV,YAAY,GACf,EAAE,4BAA4B;IAU3C,OAAO,CAAC,eAAe;IAKvB,OAAO,CAAC,aAAa;IAQrB,OAAO,CAAC,OAAO;IA4CN,UAAU,CAAC,OAAO,EAAE,6BAA6B,EAAE,GAAG,IAAI;IAS1D,UAAU,CAAC,OAAO,EAAE,6BAA6B,EAAE,GAAG,IAAI;IAS1D,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,mBAAmB,EAAE,GAAG,IAAI;IASvF,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;IAU3C,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAQlC,eAAe,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI;IASzC,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAQ/B,IAAI,YAAY,IAAI,QAAQ,GAAG,IAAI,CAElC;IAED,IAAI,QAAQ,IAAI,MAAM,CAErB;IAED,IAAI,iBAAiB,IAAI,MAAM,CAE9B;IAED,IAAI,eAAe,IAAI,MAAM,CAE5B;IAED,IAAI,cAAc,IAAI,MAAM,GAAG,IAAI,CAIlC;IAED,IAAI,cAAc,IAAI,MAAM,GAAG,IAAI,CAIlC;CACJ"}
@@ -0,0 +1,153 @@
1
+ import { StringSelectMenuBuilder, } from "discord.js";
2
+ const MAX_MENU_ITEMS = 25;
3
+ export class StringSelectUnlimited extends StringSelectMenuBuilder {
4
+ // All select menu options
5
+ menuOptions = [];
6
+ page; // 1 based
7
+ // Additional data to add to the page option
8
+ pageData;
9
+ totalPages = 0;
10
+ totalItems;
11
+ placeholder = '';
12
+ menuLimit = MAX_MENU_ITEMS;
13
+ /**
14
+ * @param page Initial page number
15
+ * @param totalItems Total number of items
16
+ * @param pageMetadata Metadata to stringify along with page option
17
+ */
18
+ constructor({ page, totalItems, pageMetadata, }) {
19
+ super();
20
+ this.page = page || 1;
21
+ if (this.page <= 0)
22
+ throw new Error("Page must start from 1");
23
+ this.pageData = pageMetadata || { emoji: {}, data: {} };
24
+ this.totalItems = totalItems || 0;
25
+ }
26
+ parsePagination() {
27
+ this.menuLimit = this.totalItems >= MAX_MENU_ITEMS ? MAX_MENU_ITEMS - 2 : MAX_MENU_ITEMS;
28
+ this.totalPages = Math.ceil(this.totalItems / this.menuLimit);
29
+ }
30
+ parsePageData(pageNumber) {
31
+ return JSON.stringify({
32
+ page: this.page,
33
+ goto: pageNumber || 0,
34
+ ...this.pageData.data,
35
+ });
36
+ }
37
+ getPage() {
38
+ if (!this.menuOptions.length)
39
+ return [];
40
+ const start = this.menuOptions.length === this.totalItems ? this.menuLimit * (this.page - 1) : 0;
41
+ const offset = this.menuOptions.length === this.totalItems ? this.menuLimit * this.page : this.menuLimit;
42
+ const pageData = this.menuOptions.slice(start, offset);
43
+ if (this.totalPages > 1) {
44
+ const emojiNext = this.pageData.emoji?.next;
45
+ const emojiPrev = this.pageData.emoji?.previous;
46
+ if (this.page === 1 && this.totalPages > 2)
47
+ pageData.unshift({
48
+ label: "Last →→",
49
+ description: `Page ${this.totalPageNumber}`,
50
+ emoji: emojiNext,
51
+ value: this.parsePageData(this.totalPages),
52
+ });
53
+ if (this.page > 1)
54
+ pageData.unshift({
55
+ label: "← Previous",
56
+ description: `Page ${this.prevPageNumber}`,
57
+ emoji: emojiPrev,
58
+ value: this.parsePageData(this.prevPageNumber),
59
+ });
60
+ if (this.page === this.totalPages && this.totalPages > 2)
61
+ pageData.push({
62
+ label: "←← First",
63
+ description: `Page 1`,
64
+ emoji: emojiPrev,
65
+ value: this.parsePageData(1),
66
+ });
67
+ if (this.page < this.totalPages)
68
+ pageData.push({
69
+ label: "Next →",
70
+ description: `Page ${this.nextPageNumber}`,
71
+ emoji: emojiNext,
72
+ value: this.parsePageData(this.nextPageNumber),
73
+ });
74
+ }
75
+ return pageData;
76
+ }
77
+ setOptions(options) {
78
+ this.menuOptions = options;
79
+ this.totalItems ||= options.length;
80
+ this.setPlaceholder(this.placeholder);
81
+ return super.setOptions(this.getPage());
82
+ }
83
+ addOptions(options) {
84
+ this.menuOptions.push(...options);
85
+ this.totalItems += options.length;
86
+ this.setPlaceholder(this.placeholder);
87
+ return super.setOptions(this.getPage());
88
+ }
89
+ spliceOptions(index, deleteCount, options) {
90
+ const deleted = this.menuOptions.splice(index, deleteCount, ...options);
91
+ this.totalItems = this.totalItems + (options.length - deleted.length);
92
+ this.setPlaceholder(this.placeholder);
93
+ return super.setOptions(this.getPage());
94
+ }
95
+ setPlaceholder(placeholder) {
96
+ this.parsePagination();
97
+ this.placeholder ||= placeholder;
98
+ if (placeholder) {
99
+ const placeholderParsed = `${placeholder}${this.totalItems >= MAX_MENU_ITEMS ? ` - Page ${this.page}` : ""}`;
100
+ return super.setPlaceholder(placeholderParsed);
101
+ }
102
+ return this;
103
+ }
104
+ setTotalItems(total) {
105
+ if (total < this.menuOptions.length)
106
+ throw new Error("Total cannot be less than the number of items.");
107
+ this.totalItems = total;
108
+ this.setPlaceholder(this.placeholder);
109
+ return this;
110
+ }
111
+ setPageMetadata(metadata) {
112
+ if (this.pageData) {
113
+ this.pageData.data = { ...this.pageData.data, ...(metadata.data || {}) };
114
+ this.pageData.emoji = { ...this.pageData.emoji, ...(metadata.emoji || {}) };
115
+ }
116
+ else
117
+ this.pageData = metadata;
118
+ return super.setOptions(this.getPage());
119
+ }
120
+ goto(page) {
121
+ if (!this.menuOptions.length)
122
+ throw new Error(`No options added`);
123
+ if (page <= 0 || page > this.totalPages)
124
+ throw new Error(`Page must be between 1 and ${this.totalPages}`);
125
+ this.page = page;
126
+ return super.setOptions(this.getPage());
127
+ }
128
+ get pageMetadata() {
129
+ return this.pageData;
130
+ }
131
+ get pageSize() {
132
+ return this.menuLimit;
133
+ }
134
+ get currentPageNumber() {
135
+ return this.page;
136
+ }
137
+ get totalPageNumber() {
138
+ return this.totalPages;
139
+ }
140
+ get nextPageNumber() {
141
+ const next = this.page + 1;
142
+ if (next > this.totalPages)
143
+ return null;
144
+ return next;
145
+ }
146
+ get prevPageNumber() {
147
+ const prev = this.page - 1;
148
+ if (prev <= 0)
149
+ return null;
150
+ return prev;
151
+ }
152
+ }
153
+ //# sourceMappingURL=StringSelectUnlimited.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StringSelectUnlimited.js","sourceRoot":"","sources":["../src/StringSelectUnlimited.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export { StringSelectUnlimited } from "./StringSelectUnlimited.js";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,2 @@
1
+ export { StringSelectUnlimited } from "./StringSelectUnlimited.js";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC"}
@@ -0,0 +1,6 @@
1
+ import type { PageEmojiData } from "./PageEmojiData.js";
2
+ export interface PageData {
3
+ data: object;
4
+ emoji: PageEmojiData;
5
+ }
6
+ //# sourceMappingURL=PageData.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PageData.d.ts","sourceRoot":"","sources":["../../src/typings/PageData.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAExD,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,aAAa,CAAC;CACtB"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=PageData.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PageData.js","sourceRoot":"","sources":["../../src/typings/PageData.ts"],"names":[],"mappings":""}
@@ -0,0 +1,6 @@
1
+ import type { ComponentEmojiResolvable } from "discord.js";
2
+ export interface PageEmojiData {
3
+ previous?: ComponentEmojiResolvable;
4
+ next?: ComponentEmojiResolvable;
5
+ }
6
+ //# sourceMappingURL=PageEmojiData.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PageEmojiData.d.ts","sourceRoot":"","sources":["../../src/typings/PageEmojiData.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AAE3D,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,EAAE,wBAAwB,CAAC;IACpC,IAAI,CAAC,EAAE,wBAAwB,CAAC;CACjC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=PageEmojiData.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PageEmojiData.js","sourceRoot":"","sources":["../../src/typings/PageEmojiData.ts"],"names":[],"mappings":""}
@@ -0,0 +1,7 @@
1
+ import type { PageData } from "./PageData.js";
2
+ export interface StringSelectUnlimitedOptions {
3
+ page?: number;
4
+ totalItems?: number;
5
+ pageMetadata?: PageData;
6
+ }
7
+ //# sourceMappingURL=StringSelectUnlimitedOptions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StringSelectUnlimitedOptions.d.ts","sourceRoot":"","sources":["../../src/typings/StringSelectUnlimitedOptions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAE9C,MAAM,WAAW,4BAA4B;IAC3C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,QAAQ,CAAC;CACzB"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=StringSelectUnlimitedOptions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StringSelectUnlimitedOptions.js","sourceRoot":"","sources":["../../src/typings/StringSelectUnlimitedOptions.ts"],"names":[],"mappings":""}
package/package.json ADDED
@@ -0,0 +1,17 @@
1
+ {
2
+ "name": "string-select-unlimited",
3
+ "version": "1.0.0",
4
+ "description": "Wrapper around discord.js StringSelectMenu to bypass Discord's 25 option limit.",
5
+ "main": "dist/index.js",
6
+ "types": "dist/index.d.ts",
7
+ "type": "module",
8
+ "scripts": {
9
+ "build": "tsc"
10
+ },
11
+ "files": [
12
+ "dist"
13
+ ],
14
+ "dependencies": {
15
+ "discord.js": "^14.25.1"
16
+ }
17
+ }