1 | "use strict";
|
2 | Object.defineProperty(exports, "__esModule", { value: true });
|
3 | exports.inlineKeyboard = exports.keyboard = exports.forceReply = exports.removeKeyboard = exports.button = exports.Markup = void 0;
|
4 | const check_1 = require("./core/helpers/check");
|
5 | class Markup {
|
6 | constructor(reply_markup) {
|
7 | this.reply_markup = reply_markup;
|
8 | }
|
9 | selective(value = true) {
|
10 | return new Markup({ ...this.reply_markup, selective: value });
|
11 | }
|
12 | placeholder(placeholder) {
|
13 | return new Markup({
|
14 | ...this.reply_markup,
|
15 | input_field_placeholder: placeholder,
|
16 | });
|
17 | }
|
18 | resize(value = true) {
|
19 | return new Markup({
|
20 | ...this.reply_markup,
|
21 | resize_keyboard: value,
|
22 | });
|
23 | }
|
24 | oneTime(value = true) {
|
25 | return new Markup({
|
26 | ...this.reply_markup,
|
27 | one_time_keyboard: value,
|
28 | });
|
29 | }
|
30 | }
|
31 | exports.Markup = Markup;
|
32 | exports.button = require("./button");
|
33 | function removeKeyboard() {
|
34 | return new Markup({ remove_keyboard: true });
|
35 | }
|
36 | exports.removeKeyboard = removeKeyboard;
|
37 | function forceReply() {
|
38 | return new Markup({ force_reply: true });
|
39 | }
|
40 | exports.forceReply = forceReply;
|
41 | function keyboard(buttons, options) {
|
42 | const keyboard = buildKeyboard(buttons, {
|
43 | columns: 1,
|
44 | ...options,
|
45 | });
|
46 | return new Markup({ keyboard });
|
47 | }
|
48 | exports.keyboard = keyboard;
|
49 | function inlineKeyboard(buttons, options) {
|
50 | const inlineKeyboard = buildKeyboard(buttons, {
|
51 | columns: buttons.length,
|
52 | ...options,
|
53 | });
|
54 | return new Markup({ inline_keyboard: inlineKeyboard });
|
55 | }
|
56 | exports.inlineKeyboard = inlineKeyboard;
|
57 | function buildKeyboard(buttons, options) {
|
58 | const result = [];
|
59 | if (!Array.isArray(buttons)) {
|
60 | return result;
|
61 | }
|
62 | if ((0, check_1.is2D)(buttons)) {
|
63 | return buttons.map((row) => row.filter((button) => !button.hide));
|
64 | }
|
65 | const wrapFn = options.wrap !== undefined
|
66 | ? options.wrap
|
67 | : (_btn, _index, currentRow) => currentRow.length >= options.columns;
|
68 | let currentRow = [];
|
69 | let index = 0;
|
70 | for (const btn of buttons.filter((button) => !button.hide)) {
|
71 | if (wrapFn(btn, index, currentRow) && currentRow.length > 0) {
|
72 | result.push(currentRow);
|
73 | currentRow = [];
|
74 | }
|
75 | currentRow.push(btn);
|
76 | index++;
|
77 | }
|
78 | if (currentRow.length > 0) {
|
79 | result.push(currentRow);
|
80 | }
|
81 | return result;
|
82 | }
|