1 | var __defProp = Object.defineProperty;
|
2 | var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
3 | var __getOwnPropNames = Object.getOwnPropertyNames;
|
4 | var __hasOwnProp = Object.prototype.hasOwnProperty;
|
5 | var __export = (target, all) => {
|
6 | for (var name2 in all)
|
7 | __defProp(target, name2, { get: all[name2], enumerable: true });
|
8 | };
|
9 | var __copyProps = (to, from, except, desc) => {
|
10 | if (from && typeof from === "object" || typeof from === "function") {
|
11 | for (let key of __getOwnPropNames(from))
|
12 | if (!__hasOwnProp.call(to, key) && key !== except)
|
13 | __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
14 | }
|
15 | return to;
|
16 | };
|
17 | var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
18 | var stdin_exports = {};
|
19 | __export(stdin_exports, {
|
20 | assignDefaultFields: () => assignDefaultFields,
|
21 | bem: () => bem,
|
22 | findIndexOfEnabledOption: () => findIndexOfEnabledOption,
|
23 | findOptionByValue: () => findOptionByValue,
|
24 | formatCascadeColumns: () => formatCascadeColumns,
|
25 | getColumnsType: () => getColumnsType,
|
26 | getElementTranslateY: () => getElementTranslateY,
|
27 | getFirstEnabledOption: () => getFirstEnabledOption,
|
28 | isOptionExist: () => isOptionExist,
|
29 | name: () => name,
|
30 | t: () => t
|
31 | });
|
32 | module.exports = __toCommonJS(stdin_exports);
|
33 | var import_utils = require("../utils");
|
34 | const [name, bem, t] = (0, import_utils.createNamespace)("picker");
|
35 | const getFirstEnabledOption = (options) => options.find((option) => !option.disabled) || options[0];
|
36 | function getColumnsType(columns, fields) {
|
37 | const firstColumn = columns[0];
|
38 | if (firstColumn) {
|
39 | if (Array.isArray(firstColumn)) {
|
40 | return "multiple";
|
41 | }
|
42 | if (fields.children in firstColumn) {
|
43 | return "cascade";
|
44 | }
|
45 | }
|
46 | return "default";
|
47 | }
|
48 | function findIndexOfEnabledOption(options, index) {
|
49 | index = (0, import_utils.clamp)(index, 0, options.length);
|
50 | for (let i = index; i < options.length; i++) {
|
51 | if (!options[i].disabled) return i;
|
52 | }
|
53 | for (let i = index - 1; i >= 0; i--) {
|
54 | if (!options[i].disabled) return i;
|
55 | }
|
56 | return 0;
|
57 | }
|
58 | const isOptionExist = (options, value, fields) => value !== void 0 && !!options.find((option) => option[fields.value] === value);
|
59 | function findOptionByValue(options, value, fields) {
|
60 | const index = options.findIndex((option) => option[fields.value] === value);
|
61 | const enabledIndex = findIndexOfEnabledOption(options, index);
|
62 | return options[enabledIndex];
|
63 | }
|
64 | function formatCascadeColumns(columns, fields, selectedValues) {
|
65 | const formatted = [];
|
66 | let cursor = {
|
67 | [fields.children]: columns
|
68 | };
|
69 | let columnIndex = 0;
|
70 | while (cursor && cursor[fields.children]) {
|
71 | const options = cursor[fields.children];
|
72 | const value = selectedValues.value[columnIndex];
|
73 | cursor = (0, import_utils.isDef)(value) ? findOptionByValue(options, value, fields) : void 0;
|
74 | if (!cursor && options.length) {
|
75 | const firstValue = getFirstEnabledOption(options)[fields.value];
|
76 | cursor = findOptionByValue(options, firstValue, fields);
|
77 | }
|
78 | columnIndex++;
|
79 | formatted.push(options);
|
80 | }
|
81 | return formatted;
|
82 | }
|
83 | function getElementTranslateY(element) {
|
84 | const { transform } = window.getComputedStyle(element);
|
85 | const translateY = transform.slice(7, transform.length - 1).split(", ")[5];
|
86 | return Number(translateY);
|
87 | }
|
88 | function assignDefaultFields(fields) {
|
89 | return (0, import_utils.extend)(
|
90 | {
|
91 | text: "text",
|
92 | value: "value",
|
93 | children: "children"
|
94 | },
|
95 | fields
|
96 | );
|
97 | }
|