@1money/component-ui 0.1.15-alpha.0 → 0.1.16-alpha.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/es/business/FilePreview/FilePreview.d.ts +6 -0
- package/es/business/FilePreview/FilePreview.js +78 -0
- package/es/business/FilePreview/ImagePreview.d.ts +11 -0
- package/es/business/FilePreview/ImagePreview.js +42 -0
- package/es/business/FilePreview/PdfPreview.d.ts +12 -0
- package/es/business/FilePreview/PdfPreview.js +49 -0
- package/es/business/FilePreview/PreviewContent.d.ts +7 -0
- package/es/business/FilePreview/PreviewContent.js +253 -0
- package/es/business/FilePreview/SpreadsheetPreview.d.ts +15 -0
- package/es/business/FilePreview/SpreadsheetPreview.js +239 -0
- package/es/business/FilePreview/index.d.ts +4 -0
- package/es/business/FilePreview/index.js +7 -0
- package/es/business/FilePreview/interface.d.ts +40 -0
- package/es/business/FilePreview/interface.js +2 -0
- package/es/business/FilePreview/style/FilePreview.css +106 -0
- package/es/business/FilePreview/style/css.js +2 -0
- package/es/business/FilePreview/style/index.d.ts +1 -0
- package/es/business/FilePreview/style/index.js +2 -0
- package/es/business/FilePreview/utils.d.ts +11 -0
- package/es/business/FilePreview/utils.js +218 -0
- package/es/business/index.d.ts +1 -0
- package/es/business/index.js +2 -1
- package/es/index.css +1 -1
- package/es/index.d.ts +2 -0
- package/es/index.js +2 -1
- package/es/locale/en_US/business.js +12 -1
- package/es/locale/interface.d.ts +11 -0
- package/es/locale/pt_BR/business.js +12 -1
- package/es/locale/zh_CN/business.js +12 -1
- package/lib/business/FilePreview/FilePreview.d.ts +6 -0
- package/lib/business/FilePreview/FilePreview.js +86 -0
- package/lib/business/FilePreview/ImagePreview.d.ts +11 -0
- package/lib/business/FilePreview/ImagePreview.js +49 -0
- package/lib/business/FilePreview/PdfPreview.d.ts +12 -0
- package/lib/business/FilePreview/PdfPreview.js +56 -0
- package/lib/business/FilePreview/PreviewContent.d.ts +7 -0
- package/lib/business/FilePreview/PreviewContent.js +260 -0
- package/lib/business/FilePreview/SpreadsheetPreview.d.ts +15 -0
- package/lib/business/FilePreview/SpreadsheetPreview.js +250 -0
- package/lib/business/FilePreview/index.d.ts +4 -0
- package/lib/business/FilePreview/index.js +33 -0
- package/lib/business/FilePreview/interface.d.ts +40 -0
- package/lib/business/FilePreview/interface.js +6 -0
- package/lib/business/FilePreview/style/FilePreview.css +106 -0
- package/lib/business/FilePreview/style/css.js +4 -0
- package/lib/business/FilePreview/style/index.d.ts +1 -0
- package/lib/business/FilePreview/style/index.js +4 -0
- package/lib/business/FilePreview/utils.d.ts +11 -0
- package/lib/business/FilePreview/utils.js +230 -0
- package/lib/business/index.d.ts +1 -0
- package/lib/business/index.js +13 -1
- package/lib/index.css +1 -1
- package/lib/index.d.ts +2 -0
- package/lib/index.js +8 -1
- package/lib/locale/en_US/business.js +12 -1
- package/lib/locale/interface.d.ts +11 -0
- package/lib/locale/pt_BR/business.js +12 -1
- package/lib/locale/zh_CN/business.js +12 -1
- package/package.json +9 -2
- package/scripts/mcp-server/examples.generated.json +18 -0
- package/scripts/mcp-server/index.generated.json +223 -0
|
@@ -0,0 +1,239 @@
|
|
|
1
|
+
import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
|
|
2
|
+
function _regenerator() { /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */ var e, t, r = "function" == typeof Symbol ? Symbol : {}, n = r.iterator || "@@iterator", o = r.toStringTag || "@@toStringTag"; function i(r, n, o, i) { var c = n && n.prototype instanceof Generator ? n : Generator, u = Object.create(c.prototype); return _regeneratorDefine2(u, "_invoke", function (r, n, o) { var i, c, u, f = 0, p = o || [], y = !1, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d(t, r) { return i = t, c = 0, u = e, G.n = r, a; } }; function d(r, n) { for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) { var o, i = p[t], d = G.p, l = i[2]; r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0)); } if (o || r > 1) return a; throw y = !0, n; } return function (o, p, l) { if (f > 1) throw TypeError("Generator is already running"); for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) { i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u); try { if (f = 2, i) { if (c || (o = "next"), t = i[o]) { if (!(t = t.call(i, u))) throw TypeError("iterator result is not an object"); if (!t.done) return t; u = t.value, c < 2 && (c = 0); } else 1 === c && (t = i["return"]) && t.call(i), c < 2 && (u = TypeError("The iterator does not provide a '" + o + "' method"), c = 1); i = e; } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break; } catch (t) { i = e, c = 1, u = t; } finally { f = 1; } } return { value: t, done: y }; }; }(r, o, i), !0), u; } var a = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} t = Object.getPrototypeOf; var c = [][n] ? t(t([][n]())) : (_regeneratorDefine2(t = {}, n, function () { return this; }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); function f(e) { return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine2(e, o, "GeneratorFunction")), e.prototype = Object.create(u), e; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine2(u, "constructor", GeneratorFunctionPrototype), _regeneratorDefine2(GeneratorFunctionPrototype, "constructor", GeneratorFunction), GeneratorFunction.displayName = "GeneratorFunction", _regeneratorDefine2(GeneratorFunctionPrototype, o, "GeneratorFunction"), _regeneratorDefine2(u), _regeneratorDefine2(u, o, "Generator"), _regeneratorDefine2(u, n, function () { return this; }), _regeneratorDefine2(u, "toString", function () { return "[object Generator]"; }), (_regenerator = function _regenerator() { return { w: i, m: f }; })(); }
|
|
3
|
+
function _regeneratorDefine2(e, r, n, t) { var i = Object.defineProperty; try { i({}, "", {}); } catch (e) { i = 0; } _regeneratorDefine2 = function _regeneratorDefine(e, r, n, t) { function o(r, n) { _regeneratorDefine2(e, r, function (e) { return this._invoke(r, n, e); }); } r ? i ? i(e, r, { value: n, enumerable: !t, configurable: !t, writable: !t }) : e[r] = n : (o("next", 0), o("throw", 1), o("return", 2)); }, _regeneratorDefine2(e, r, n, t); }
|
|
4
|
+
var __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, generator) {
|
|
5
|
+
function adopt(value) {
|
|
6
|
+
return value instanceof P ? value : new P(function (resolve) {
|
|
7
|
+
resolve(value);
|
|
8
|
+
});
|
|
9
|
+
}
|
|
10
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
11
|
+
function fulfilled(value) {
|
|
12
|
+
try {
|
|
13
|
+
step(generator.next(value));
|
|
14
|
+
} catch (e) {
|
|
15
|
+
reject(e);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
function rejected(value) {
|
|
19
|
+
try {
|
|
20
|
+
step(generator["throw"](value));
|
|
21
|
+
} catch (e) {
|
|
22
|
+
reject(e);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
function step(result) {
|
|
26
|
+
result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);
|
|
27
|
+
}
|
|
28
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
29
|
+
});
|
|
30
|
+
};
|
|
31
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
32
|
+
import { useEffect, useMemo } from 'react';
|
|
33
|
+
import useSafeState from '@1money/hooks/useSafeState';
|
|
34
|
+
import { Tabs } from '../../components/Tabs';
|
|
35
|
+
import { Typography } from '../../components/Typography';
|
|
36
|
+
import { DEFAULT_MAX_COLUMNS, DEFAULT_MAX_ROWS, previewLimit } from './utils';
|
|
37
|
+
export function SpreadsheetPreview(_ref) {
|
|
38
|
+
var _this = this;
|
|
39
|
+
var blob = _ref.blob,
|
|
40
|
+
name = _ref.name,
|
|
41
|
+
classes = _ref.classes,
|
|
42
|
+
locale = _ref.locale,
|
|
43
|
+
loading = _ref.loading,
|
|
44
|
+
onError = _ref.onError,
|
|
45
|
+
_ref$maxRows = _ref.maxRows,
|
|
46
|
+
maxRows = _ref$maxRows === void 0 ? DEFAULT_MAX_ROWS : _ref$maxRows,
|
|
47
|
+
_ref$maxColumns = _ref.maxColumns,
|
|
48
|
+
maxColumns = _ref$maxColumns === void 0 ? DEFAULT_MAX_COLUMNS : _ref$maxColumns;
|
|
49
|
+
var rowLimit = previewLimit(maxRows, DEFAULT_MAX_ROWS, 1000);
|
|
50
|
+
var columnLimit = previewLimit(maxColumns, DEFAULT_MAX_COLUMNS, 100);
|
|
51
|
+
var _useSafeState = useSafeState(),
|
|
52
|
+
_useSafeState2 = _slicedToArray(_useSafeState, 2),
|
|
53
|
+
data = _useSafeState2[0],
|
|
54
|
+
setData = _useSafeState2[1];
|
|
55
|
+
var _useSafeState3 = useSafeState(''),
|
|
56
|
+
_useSafeState4 = _slicedToArray(_useSafeState3, 2),
|
|
57
|
+
activeSheet = _useSafeState4[0],
|
|
58
|
+
setActiveSheet = _useSafeState4[1];
|
|
59
|
+
useEffect(function () {
|
|
60
|
+
var active = true;
|
|
61
|
+
var parse = function parse() {
|
|
62
|
+
return __awaiter(_this, void 0, void 0, /*#__PURE__*/_regenerator().m(function _callee() {
|
|
63
|
+
var _yield$Promise$all, _yield$Promise$all2, xlsx, buffer, signature, workbook, names, _t;
|
|
64
|
+
return _regenerator().w(function (_context) {
|
|
65
|
+
while (1) switch (_context.p = _context.n) {
|
|
66
|
+
case 0:
|
|
67
|
+
_context.p = 0;
|
|
68
|
+
_context.n = 1;
|
|
69
|
+
return Promise.all([import('xlsx'), blob.arrayBuffer()]);
|
|
70
|
+
case 1:
|
|
71
|
+
_yield$Promise$all = _context.v;
|
|
72
|
+
_yield$Promise$all2 = _slicedToArray(_yield$Promise$all, 2);
|
|
73
|
+
xlsx = _yield$Promise$all2[0];
|
|
74
|
+
buffer = _yield$Promise$all2[1];
|
|
75
|
+
if (active) {
|
|
76
|
+
_context.n = 2;
|
|
77
|
+
break;
|
|
78
|
+
}
|
|
79
|
+
return _context.a(2);
|
|
80
|
+
case 2:
|
|
81
|
+
signature = new Uint8Array(buffer, 0, Math.min(buffer.byteLength, 4));
|
|
82
|
+
if (!(/\.xlsx$/i.test(name) && (signature[0] !== 0x50 || signature[1] !== 0x4b))) {
|
|
83
|
+
_context.n = 3;
|
|
84
|
+
break;
|
|
85
|
+
}
|
|
86
|
+
throw new Error('The file is not a valid XLSX workbook.');
|
|
87
|
+
case 3:
|
|
88
|
+
workbook = xlsx.read(buffer, {
|
|
89
|
+
type: 'array',
|
|
90
|
+
sheetRows: rowLimit + 1,
|
|
91
|
+
raw: true,
|
|
92
|
+
cellHTML: false,
|
|
93
|
+
cellFormula: false,
|
|
94
|
+
cellStyles: false
|
|
95
|
+
});
|
|
96
|
+
names = workbook.SheetNames.filter(function (sheet) {
|
|
97
|
+
var _a, _b, _c;
|
|
98
|
+
return !((_c = (_b = (_a = workbook.Workbook) === null || _a === void 0 ? void 0 : _a.Sheets) === null || _b === void 0 ? void 0 : _b.find(function (item) {
|
|
99
|
+
return item.name === sheet;
|
|
100
|
+
})) === null || _c === void 0 ? void 0 : _c.Hidden);
|
|
101
|
+
});
|
|
102
|
+
if (names.length) {
|
|
103
|
+
_context.n = 4;
|
|
104
|
+
break;
|
|
105
|
+
}
|
|
106
|
+
throw new Error('The workbook has no visible worksheets.');
|
|
107
|
+
case 4:
|
|
108
|
+
workbook.SheetNames = names;
|
|
109
|
+
setData({
|
|
110
|
+
workbook: workbook,
|
|
111
|
+
xlsx: xlsx
|
|
112
|
+
});
|
|
113
|
+
setActiveSheet(names[0]);
|
|
114
|
+
_context.n = 6;
|
|
115
|
+
break;
|
|
116
|
+
case 5:
|
|
117
|
+
_context.p = 5;
|
|
118
|
+
_t = _context.v;
|
|
119
|
+
if (active) onError(_t instanceof Error ? _t : new Error('Unable to read the spreadsheet.'));
|
|
120
|
+
case 6:
|
|
121
|
+
return _context.a(2);
|
|
122
|
+
}
|
|
123
|
+
}, _callee, null, [[0, 5]]);
|
|
124
|
+
}));
|
|
125
|
+
};
|
|
126
|
+
void parse();
|
|
127
|
+
return function () {
|
|
128
|
+
active = false;
|
|
129
|
+
};
|
|
130
|
+
}, [blob, name, rowLimit, onError, setData, setActiveSheet]);
|
|
131
|
+
var preview = useMemo(function () {
|
|
132
|
+
var sheet = data === null || data === void 0 ? void 0 : data.workbook.Sheets[activeSheet];
|
|
133
|
+
if (!data || !(sheet === null || sheet === void 0 ? void 0 : sheet['!ref'])) return undefined;
|
|
134
|
+
var range = data.xlsx.utils.decode_range(sheet['!fullref'] || sheet['!ref']);
|
|
135
|
+
var endRow = Math.min(range.e.r, range.s.r + rowLimit - 1);
|
|
136
|
+
var endColumn = Math.min(range.e.c, range.s.c + columnLimit - 1);
|
|
137
|
+
var bounded = {
|
|
138
|
+
s: range.s,
|
|
139
|
+
e: {
|
|
140
|
+
r: endRow,
|
|
141
|
+
c: endColumn
|
|
142
|
+
}
|
|
143
|
+
};
|
|
144
|
+
var rows = data.xlsx.utils.sheet_to_json(sheet, {
|
|
145
|
+
header: 1,
|
|
146
|
+
raw: false,
|
|
147
|
+
defval: '',
|
|
148
|
+
blankrows: true,
|
|
149
|
+
range: bounded
|
|
150
|
+
});
|
|
151
|
+
var columns = Array.from({
|
|
152
|
+
length: endColumn - range.s.c + 1
|
|
153
|
+
}, function (_, index) {
|
|
154
|
+
return data.xlsx.utils.encode_col(range.s.c + index);
|
|
155
|
+
});
|
|
156
|
+
return {
|
|
157
|
+
rows: rows,
|
|
158
|
+
columns: columns,
|
|
159
|
+
startRow: range.s.r + 1,
|
|
160
|
+
truncated: endRow < range.e.r || endColumn < range.e.c
|
|
161
|
+
};
|
|
162
|
+
}, [data, activeSheet, rowLimit, columnLimit]);
|
|
163
|
+
if (!data) return loading;
|
|
164
|
+
return _jsxs(_Fragment, {
|
|
165
|
+
children: [_jsx(Tabs, {
|
|
166
|
+
className: classes('sheets'),
|
|
167
|
+
activeKey: activeSheet,
|
|
168
|
+
onChange: setActiveSheet,
|
|
169
|
+
onKeyDown: function onKeyDown(event) {
|
|
170
|
+
var _a;
|
|
171
|
+
if (!(event.target instanceof HTMLButtonElement) || event.target.getAttribute('role') !== 'tab') return;
|
|
172
|
+
var keys = data.workbook.SheetNames;
|
|
173
|
+
var index = keys.indexOf(activeSheet);
|
|
174
|
+
var next = event.key === 'ArrowRight' ? (index + 1) % keys.length : event.key === 'ArrowLeft' ? (index + keys.length - 1) % keys.length : event.key === 'Home' ? 0 : event.key === 'End' ? keys.length - 1 : undefined;
|
|
175
|
+
if (next === undefined) return;
|
|
176
|
+
event.preventDefault();
|
|
177
|
+
setActiveSheet(keys[next]);
|
|
178
|
+
(_a = event.currentTarget.querySelectorAll('[role="tab"]')[next]) === null || _a === void 0 ? void 0 : _a.focus();
|
|
179
|
+
},
|
|
180
|
+
items: data.workbook.SheetNames.map(function (key) {
|
|
181
|
+
return {
|
|
182
|
+
key: key,
|
|
183
|
+
label: key
|
|
184
|
+
};
|
|
185
|
+
})
|
|
186
|
+
}), preview ? _jsxs(_Fragment, {
|
|
187
|
+
children: [_jsx("div", {
|
|
188
|
+
className: classes('viewport'),
|
|
189
|
+
tabIndex: 0,
|
|
190
|
+
role: 'region',
|
|
191
|
+
"aria-label": activeSheet,
|
|
192
|
+
children: _jsxs("table", {
|
|
193
|
+
className: classes('table'),
|
|
194
|
+
"aria-label": "".concat(name, " \u2014 ").concat(activeSheet),
|
|
195
|
+
children: [_jsx("thead", {
|
|
196
|
+
children: _jsxs("tr", {
|
|
197
|
+
children: [_jsx("th", {
|
|
198
|
+
scope: 'col',
|
|
199
|
+
children: "#"
|
|
200
|
+
}), preview.columns.map(function (column) {
|
|
201
|
+
return _jsx("th", {
|
|
202
|
+
scope: 'col',
|
|
203
|
+
children: column
|
|
204
|
+
}, column);
|
|
205
|
+
})]
|
|
206
|
+
})
|
|
207
|
+
}), _jsx("tbody", {
|
|
208
|
+
children: preview.rows.map(function (row, index) {
|
|
209
|
+
return _jsxs("tr", {
|
|
210
|
+
children: [_jsx("th", {
|
|
211
|
+
scope: 'row',
|
|
212
|
+
children: preview.startRow + index
|
|
213
|
+
}), preview.columns.map(function (column, columnIndex) {
|
|
214
|
+
var _a;
|
|
215
|
+
return _jsx("td", {
|
|
216
|
+
children: (_a = row[columnIndex]) !== null && _a !== void 0 ? _a : ''
|
|
217
|
+
}, column);
|
|
218
|
+
})]
|
|
219
|
+
}, index);
|
|
220
|
+
})
|
|
221
|
+
})]
|
|
222
|
+
})
|
|
223
|
+
}), preview.truncated && _jsx(Typography.Body, {
|
|
224
|
+
size: 'sm',
|
|
225
|
+
color: 'default-secondary',
|
|
226
|
+
role: 'status',
|
|
227
|
+
children: locale.truncated.replace('{rows}', String(rowLimit)).replace('{columns}', String(columnLimit))
|
|
228
|
+
})]
|
|
229
|
+
}) : _jsx("div", {
|
|
230
|
+
className: classes('message'),
|
|
231
|
+
role: 'status',
|
|
232
|
+
children: _jsx(Typography.Body, {
|
|
233
|
+
size: "md",
|
|
234
|
+
children: locale.emptySheet
|
|
235
|
+
})
|
|
236
|
+
})]
|
|
237
|
+
});
|
|
238
|
+
}
|
|
239
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImJ1c2luZXNzL0ZpbGVQcmV2aWV3L1NwcmVhZHNoZWV0UHJldmlldy5qcyIsImJ1c2luZXNzL3NyYy9idXNpbmVzcy9GaWxlUHJldmlldy9TcHJlYWRzaGVldFByZXZpZXcudHN4Il0sIm5hbWVzIjpbImUiLCJ0IiwiciIsIlN5bWJvbCIsIm4iLCJpdGVyYXRvciIsIm8iLCJ0b1N0cmluZ1RhZyIsImkiLCJjIiwicHJvdG90eXBlIiwiR2VuZXJhdG9yIiwidSIsIk9iamVjdCIsImNyZWF0ZSIsIl9yZWdlbmVyYXRvckRlZmluZTIiLCJmIiwicCIsInkiLCJHIiwidiIsImEiLCJkIiwiYmluZCIsImxlbmd0aCIsImwiLCJUeXBlRXJyb3IiLCJjYWxsIiwiZG9uZSIsInZhbHVlIiwiR2VuZXJhdG9yRnVuY3Rpb24iLCJHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSIsImdldFByb3RvdHlwZU9mIiwic2V0UHJvdG90eXBlT2YiLCJfX3Byb3RvX18iLCJkaXNwbGF5TmFtZSIsIl9yZWdlbmVyYXRvciIsInciLCJtIiwiZGVmaW5lUHJvcGVydHkiLCJfcmVnZW5lcmF0b3JEZWZpbmUiLCJfaW52b2tlIiwiZW51bWVyYWJsZSIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwiX19hd2FpdGVyIiwidGhpc0FyZyIsIl9hcmd1bWVudHMiLCJQIiwiZ2VuZXJhdG9yIiwiYWRvcHQiLCJyZXNvbHZlIiwiUHJvbWlzZSIsInJlamVjdCIsImZ1bGZpbGxlZCIsInN0ZXAiLCJuZXh0IiwicmVqZWN0ZWQiLCJyZXN1bHQiLCJ0aGVuIiwiYXBwbHkiLCJqc3giLCJfanN4IiwianN4cyIsIl9qc3hzIiwiRnJhZ21lbnQiLCJfRnJhZ21lbnQiLCJ1c2VFZmZlY3QiLCJ1c2VNZW1vIiwidXNlU2FmZVN0YXRlIiwiVGFicyIsIlR5cG9ncmFwaHkiLCJERUZBVUxUX01BWF9DT0xVTU5TIiwiREVGQVVMVF9NQVhfUk9XUyIsInByZXZpZXdMaW1pdCIsIlNwcmVhZHNoZWV0UHJldmlldyIsIl9yZWYiLCJfdGhpcyIsImJsb2IiLCJuYW1lIiwiY2xhc3NlcyIsImxvY2FsZSIsImxvYWRpbmciLCJvbkVycm9yIiwiX3JlZiRtYXhSb3dzIiwibWF4Um93cyIsIl9yZWYkbWF4Q29sdW1ucyIsIm1heENvbHVtbnMiLCJyb3dMaW1pdCIsImNvbHVtbkxpbWl0IiwiX3VzZVNhZmVTdGF0ZSIsIl91c2VTYWZlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkiLCJkYXRhIiwic2V0RGF0YSIsIl91c2VTYWZlU3RhdGUzIiwiX3VzZVNhZmVTdGF0ZTQiLCJhY3RpdmVTaGVldCIsInNldEFjdGl2ZVNoZWV0IiwiYWN0aXZlIiwicGFyc2UiLCJfY2FsbGVlIiwiX3lpZWxkJFByb21pc2UkYWxsIiwiX3lpZWxkJFByb21pc2UkYWxsMiIsInhsc3giLCJidWZmZXIiLCJzaWduYXR1cmUiLCJ3b3JrYm9vayIsIm5hbWVzIiwiX3QiLCJfY29udGV4dCIsImFsbCIsImFycmF5QnVmZmVyIiwiVWludDhBcnJheSIsIk1hdGgiLCJtaW4iLCJieXRlTGVuZ3RoIiwidGVzdCIsIkVycm9yIiwicmVhZCIsInR5cGUiLCJzaGVldFJvd3MiLCJyYXciLCJjZWxsSFRNTCIsImNlbGxGb3JtdWxhIiwiY2VsbFN0eWxlcyIsIlNoZWV0TmFtZXMiLCJmaWx0ZXIiLCJzaGVldCIsIl9hIiwiX2IiLCJfYyIsIldvcmtib29rIiwiU2hlZXRzIiwiZmluZCIsIml0ZW0iLCJIaWRkZW4iLCJwcmV2aWV3IiwidW5kZWZpbmVkIiwicmFuZ2UiLCJ1dGlscyIsImRlY29kZV9yYW5nZSIsImVuZFJvdyIsInMiLCJlbmRDb2x1bW4iLCJib3VuZGVkIiwicm93cyIsInNoZWV0X3RvX2pzb24iLCJoZWFkZXIiLCJkZWZ2YWwiLCJibGFua3Jvd3MiLCJjb2x1bW5zIiwiQXJyYXkiLCJmcm9tIiwiXyIsImluZGV4IiwiZW5jb2RlX2NvbCIsInN0YXJ0Um93IiwidHJ1bmNhdGVkIiwiY2hpbGRyZW4iLCJjbGFzc05hbWUiLCJhY3RpdmVLZXkiLCJvbkNoYW5nZSIsIm9uS2V5RG93biIsImV2ZW50IiwidGFyZ2V0IiwiSFRNTEJ1dHRvbkVsZW1lbnQiLCJnZXRBdHRyaWJ1dGUiLCJrZXlzIiwiaW5kZXhPZiIsImtleSIsInByZXZlbnREZWZhdWx0IiwiY3VycmVudFRhcmdldCIsInF1ZXJ5U2VsZWN0b3JBbGwiLCJmb2N1cyIsIml0ZW1zIiwibWFwIiwibGFiZWwiLCJ0YWJJbmRleCIsInJvbGUiLCJjb25jYXQiLCJzY29wZSIsImNvbHVtbiIsInJvdyIsImNvbHVtbkluZGV4IiwiQm9keSIsInNpemUiLCJjb2xvciIsInJlcGxhY2UiLCJTdHJpbmciLCJlbXB0eVNoZWV0Il0sIm1hcHBpbmdzIjoiOzBCQUNBLHVLQUFBQSxDQUFBLEVBQUFDLENBQUEsRUFBQUMsQ0FBQSx3QkFBQUMsTUFBQSxHQUFBQSxNQUFBLE9BQUFDLENBQUEsR0FBQUYsQ0FBQSxDQUFBRyxRQUFBLGtCQUFBQyxDQUFBLEdBQUFKLENBQUEsQ0FBQUssV0FBQSw4QkFBQUMsRUFBQU4sQ0FBQSxFQUFBRSxDQUFBLEVBQUFFLENBQUEsRUFBQUUsQ0FBQSxRQUFBQyxDQUFBLEdBQUFMLENBQUEsSUFBQUEsQ0FBQSxDQUFBTSxTQUFBLFlBQUFDLFNBQUEsR0FBQVAsQ0FBQSxHQUFBTyxTQUFBLEVBQUFDLENBQUEsR0FBQUMsTUFBQSxDQUFBQyxNQUFBLENBQUFMLENBQUEsQ0FBQUMsU0FBQSxVQUFBSyxtQkFBQSxDQUFBSCxDQUFBLHVCQUFBVixDQUFBLEVBQUFFLENBQUEsRUFBQUUsQ0FBQSxRQUFBRSxDQUFBLEVBQUFDLENBQUEsRUFBQUcsQ0FBQSxFQUFBSSxDQUFBLE1BQUFDLENBQUEsR0FBQVgsQ0FBQSxRQUFBWSxDQUFBLE9BQUFDLENBQUEsS0FBQUYsQ0FBQSxLQUFBYixDQUFBLEtBQUFnQixDQUFBLEVBQUFwQixDQUFBLEVBQUFxQixDQUFBLEVBQUFDLENBQUEsRUFBQU4sQ0FBQSxFQUFBTSxDQUFBLENBQUFDLElBQUEsQ0FBQXZCLENBQUEsTUFBQXNCLENBQUEsV0FBQUEs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LEVBQUU5RSxNQUFNLENBQUM2RztNQUFVLENBQUE7SUFBbUIsQ0FBQSxDQUFNO0VBQUEsQ0FBQSxDQUM3SDtBQUNMIiwiZmlsZSI6ImJ1c2luZXNzL0ZpbGVQcmV2aWV3L1NwcmVhZHNoZWV0UHJldmlldy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBfX2F3YWl0ZXIgPSAodGhpcyAmJiB0aGlzLl9fYXdhaXRlcikgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xuICAgIGZ1bmN0aW9uIGFkb3B0KHZhbHVlKSB7IHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFAgPyB2YWx1ZSA6IG5ldyBQKGZ1bmN0aW9uIChyZXNvbHZlKSB7IHJlc29sdmUodmFsdWUpOyB9KTsgfVxuICAgIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yW1widGhyb3dcIl0odmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkgeyByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IGFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTsgfVxuICAgICAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XG4gICAgfSk7XG59O1xuaW1wb3J0IHsganN4IGFzIF9qc3gsIGpzeHMgYXMgX2pzeHMsIEZyYWdtZW50IGFzIF9GcmFnbWVudCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IHsgdXNlRWZmZWN0LCB1c2VNZW1vIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHVzZVNhZmVTdGF0ZSBmcm9tICdAMW1vbmV5L2hvb2tzL3VzZVNhZmVTdGF0ZSc7XG5pbXBvcnQgeyBUYWJzIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9UYWJzJztcbmltcG9ydCB7IFR5cG9ncmFwaHkgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL1R5cG9ncmFwaHknO1xuaW1wb3J0IHsgREVGQVVMVF9NQVhfQ09MVU1OUywgREVGQVVMVF9NQVhfUk9XUywgcHJldmlld0xpbWl0IH0gZnJvbSAnLi91dGlscyc7XG5leHBvcnQgZnVuY3Rpb24gU3ByZWFkc2hlZXRQcmV2aWV3KHsgYmxvYiwgbmFtZSwgY2xhc3NlcywgbG9jYWxlLCBsb2FkaW5nLCBvbkVycm9yLCBtYXhSb3dzID0gREVGQVVMVF9NQVhfUk9XUywgbWF4Q29sdW1ucyA9IERFRkFVTFRfTUFYX0NPTFVNTlMgfSkge1xuICAgIGNvbnN0IHJvd0xpbWl0ID0gcHJldmlld0xpbWl0KG1heFJvd3MsIERFRkFVTFRfTUFYX1JPV1MsIDEwMDApO1xuICAgIGNvbnN0IGNvbHVtbkxpbWl0ID0gcHJldmlld0xpbWl0KG1heENvbHVtbnMsIERFRkFVTFRfTUFYX0NPTFVNTlMsIDEwMCk7XG4gICAgY29uc3QgW2RhdGEsIHNldERhdGFdID0gdXNlU2FmZVN0YXRlKCk7XG4gICAgY29uc3QgW2FjdGl2ZVNoZWV0LCBzZXRBY3RpdmVTaGVldF0gPSB1c2VTYWZlU3RhdGUoJycpO1xuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGxldCBhY3RpdmUgPSB0cnVlO1xuICAgICAgICBjb25zdCBwYXJzZSA9ICgpID0+IF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgY29uc3QgW3hsc3gsIGJ1ZmZlcl0gPSB5aWVsZCBQcm9taXNlLmFsbChbaW1wb3J0KCd4bHN4JyksIGJsb2IuYXJyYXlCdWZmZXIoKV0pO1xuICAgICAgICAgICAgICAgIGlmICghYWN0aXZlKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgY29uc3Qgc2lnbmF0dXJlID0gbmV3IFVpbnQ4QXJyYXkoYnVmZmVyLCAwLCBNYXRoLm1pbihidWZmZXIuYnl0ZUxlbmd0aCwgNCkpO1xuICAgICAgICAgICAgICAgIGlmICgvXFwueGxzeCQvaS50ZXN0KG5hbWUpICYmIChzaWduYXR1cmVbMF0gIT09IDB4NTAgfHwgc2lnbmF0dXJlWzFdICE9PSAweDRiKSkge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1RoZSBmaWxlIGlzIG5vdCBhIHZhbGlkIFhMU1ggd29ya2Jvb2suJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IHdvcmtib29rID0geGxzeC5yZWFkKGJ1ZmZlciwgeyB0eXBlOiAnYXJyYXknLCBzaGVldFJvd3M6IHJvd0xpbWl0ICsgMSwgcmF3OiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICBjZWxsSFRNTDogZmFsc2UsIGNlbGxGb3JtdWxhOiBmYWxzZSwgY2VsbFN0eWxlczogZmFsc2UgfSk7XG4gICAgICAgICAgICAgICAgY29uc3QgbmFtZXMgPSB3b3JrYm9vay5TaGVldE5hbWVzLmZpbHRlcihzaGVldCA9PiB7IHZhciBfYSwgX2IsIF9jOyByZXR1cm4gISgoX2MgPSAoX2IgPSAoX2EgPSB3b3JrYm9vay5Xb3JrYm9vaykgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLlNoZWV0cykgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLmZpbmQoaXRlbSA9PiBpdGVtLm5hbWUgPT09IHNoZWV0KSkgPT09IG51bGwgfHwgX2MgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9jLkhpZGRlbik7IH0pO1xuICAgICAgICAgICAgICAgIGlmICghbmFtZXMubGVuZ3RoKVxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1RoZSB3b3JrYm9vayBoYXMgbm8gdmlzaWJsZSB3b3Jrc2hlZXRzLicpO1xuICAgICAgICAgICAgICAgIHdvcmtib29rLlNoZWV0TmFtZXMgPSBuYW1lcztcbiAgICAgICAgICAgICAgICBzZXREYXRhKHsgd29ya2Jvb2ssIHhsc3ggfSk7XG4gICAgICAgICAgICAgICAgc2V0QWN0aXZlU2hlZXQobmFtZXNbMF0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgaWYgKGFjdGl2ZSlcbiAgICAgICAgICAgICAgICAgICAgb25FcnJvcihlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IgOiBuZXcgRXJyb3IoJ1VuYWJsZSB0byByZWFkIHRoZSBzcHJlYWRzaGVldC4nKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB2b2lkIHBhcnNlKCk7XG4gICAgICAgIHJldHVybiAoKSA9PiB7IGFjdGl2ZSA9IGZhbHNlOyB9O1xuICAgIH0sIFtibG9iLCBuYW1lLCByb3dMaW1pdCwgb25FcnJvciwgc2V0RGF0YSwgc2V0QWN0aXZlU2hlZXRdKTtcbiAgICBjb25zdCBwcmV2aWV3ID0gdXNlTWVtbygoKSA9PiB7XG4gICAgICAgIGNvbnN0IHNoZWV0ID0gZGF0YSA9PT0gbnVsbCB8fCBkYXRhID09PSB2b2lkIDAgPyB2b2lkIDAgOiBkYXRhLndvcmtib29rLlNoZWV0c1thY3RpdmVTaGVldF07XG4gICAgICAgIGlmICghZGF0YSB8fCAhKHNoZWV0ID09PSBudWxsIHx8IHNoZWV0ID09PSB2b2lkIDAgPyB2b2lkIDAgOiBzaGVldFsnIXJlZiddKSlcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIGNvbnN0IHJhbmdlID0gZGF0YS54bHN4LnV0aWxzLmRlY29kZV9yYW5nZShzaGVldFsnIWZ1bGxyZWYnXSB8fCBzaGVldFsnIXJlZiddKTtcbiAgICAgICAgY29uc3QgZW5kUm93ID0gTWF0aC5taW4ocmFuZ2UuZS5yLCByYW5nZS5zLnIgKyByb3dMaW1pdCAtIDEpO1xuICAgICAgICBjb25zdCBlbmRDb2x1bW4gPSBNYXRoLm1pbihyYW5nZS5lLmMsIHJhbmdlLnMuYyArIGNvbHVtbkxpbWl0IC0gMSk7XG4gICAgICAgIGNvbnN0IGJvdW5kZWQgPSB7IHM6IHJhbmdlLnMsIGU6IHsgcjogZW5kUm93LCBjOiBlbmRDb2x1bW4gfSB9O1xuICAgICAgICBjb25zdCByb3dzID0gZGF0YS54bHN4LnV0aWxzLnNoZWV0X3RvX2pzb24oc2hlZXQsIHtcbiAgICAgICAgICAgIGhlYWRlcjogMSwgcmF3OiBmYWxzZSwgZGVmdmFsOiAnJywgYmxhbmtyb3dzOiB0cnVlLCByYW5nZTogYm91bmRlZCxcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IGNvbHVtbnMgPSBBcnJheS5mcm9tKHsgbGVuZ3RoOiBlbmRDb2x1bW4gLSByYW5nZS5zLmMgKyAxIH0sIChfLCBpbmRleCkgPT4gZGF0YS54bHN4LnV0aWxzLmVuY29kZV9jb2wocmFuZ2Uucy5jICsgaW5kZXgpKTtcbiAgICAgICAgcmV0dXJuIHsgcm93cywgY29sdW1ucywgc3RhcnRSb3c6IHJhbmdlLnMuciArIDEsIHRydW5jYXRlZDogZW5kUm93IDwgcmFuZ2UuZS5yIHx8IGVuZENvbHVtbiA8IHJhbmdlLmUuYyB9O1xuICAgIH0sIFtkYXRhLCBhY3RpdmVTaGVldCwgcm93TGltaXQsIGNvbHVtbkxpbWl0XSk7XG4gICAgaWYgKCFkYXRhKVxuICAgICAgICByZXR1cm4gbG9hZGluZztcbiAgICByZXR1cm4gX2pzeHMoX0ZyYWdtZW50LCB7IGNoaWxkcmVuOiBbX2pzeChUYWJzLCB7IGNsYXNzTmFtZTogY2xhc3Nlcygnc2hlZXRzJyksIGFjdGl2ZUtleTogYWN0aXZlU2hlZXQsIG9uQ2hhbmdlOiBzZXRBY3RpdmVTaGVldCwgb25LZXlEb3duOiBldmVudCA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCEoZXZlbnQudGFyZ2V0IGluc3RhbmNlb2YgSFRNTEJ1dHRvbkVsZW1lbnQpIHx8IGV2ZW50LnRhcmdldC5nZXRBdHRyaWJ1dGUoJ3JvbGUnKSAhPT0gJ3RhYicpXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGtleXMgPSBkYXRhLndvcmtib29rLlNoZWV0TmFtZXM7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGluZGV4ID0ga2V5cy5pbmRleE9mKGFjdGl2ZVNoZWV0KTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbmV4dCA9IGV2ZW50LmtleSA9PT0gJ0Fycm93UmlnaHQnID8gKGluZGV4ICsgMSkgJSBrZXlzLmxlbmd0aCA6XG4gICAgICAgICAgICAgICAgICAgICAgICBldmVudC5rZXkgPT09ICdBcnJvd0xlZnQnID8gKGluZGV4ICsga2V5cy5sZW5ndGggLSAxKSAlIGtleXMubGVuZ3RoIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudC5rZXkgPT09ICdIb21lJyA/IDAgOiBldmVudC5rZXkgPT09ICdFbmQnID8ga2V5cy5sZW5ndGggLSAxIDogdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgICAgICBpZiAobmV4dCA9PT0gdW5kZWZpbmVkKVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICBzZXRBY3RpdmVTaGVldChrZXlzW25leHRdKTtcbiAgICAgICAgICAgICAgICAgICAgKF9hID0gZXZlbnQuY3VycmVudFRhcmdldC5xdWVyeVNlbGVjdG9yQWxsKCdbcm9sZT1cInRhYlwiXScpW25leHRdKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuZm9jdXMoKTtcbiAgICAgICAgICAgICAgICB9LCBpdGVtczogZGF0YS53b3JrYm9vay5TaGVldE5hbWVzLm1hcChrZXkgPT4gKHsga2V5LCBsYWJlbDoga2V5IH0pKSB9KSwgcHJldmlldyA/IF9qc3hzKF9GcmFnbWVudCwgeyBjaGlsZHJlbjogW19qc3goXCJkaXZcIiwgeyBjbGFzc05hbWU6IGNsYXNzZXMoJ3ZpZXdwb3J0JyksIHRhYkluZGV4OiAwLCByb2xlOiAncmVnaW9uJywgXCJhcmlhLWxhYmVsXCI6IGFjdGl2ZVNoZWV0LCBjaGlsZHJlbjogX2pzeHMoXCJ0YWJsZVwiLCB7IGNsYXNzTmFtZTogY2xhc3NlcygndGFibGUnKSwgXCJhcmlhLWxhYmVsXCI6IGAke25hbWV9IOKAlCAke2FjdGl2ZVNoZWV0fWAsIGNoaWxkcmVuOiBbX2pzeChcInRoZWFkXCIsIHsgY2hpbGRyZW46IF9qc3hzKFwidHJcIiwgeyBjaGlsZHJlbjogW19qc3goXCJ0aFwiLCB7IHNjb3BlOiAnY29sJywgY2hpbGRyZW46IFwiI1wiIH0pLCBwcmV2aWV3LmNvbHVtbnMubWFwKGNvbHVtbiA9PiBfanN4KFwidGhcIiwgeyBzY29wZTogJ2NvbCcsIGNoaWxkcmVuOiBjb2x1bW4gfSwgY29sdW1uKSldIH0pIH0pLCBfanN4KFwidGJvZHlcIiwgeyBjaGlsZHJlbjogcHJldmlldy5yb3dzLm1hcCgocm93LCBpbmRleCkgPT4gX2pzeHMoXCJ0clwiLCB7IGNoaWxkcmVuOiBbX2pzeChcInRoXCIsIHsgc2NvcGU6ICdyb3cnLCBjaGlsZHJlbjogcHJldmlldy5zdGFydFJvdyArIGluZGV4IH0pLCBwcmV2aWV3LmNvbHVtbnMubWFwKChjb2x1bW4sIGNvbHVtbkluZGV4KSA9PiB7IHZhciBfYTsgcmV0dXJuIF9qc3goXCJ0ZFwiLCB7IGNoaWxkcmVuOiAoX2EgPSByb3dbY29sdW1uSW5kZXhdKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiAnJyB9LCBjb2x1bW4pOyB9KV0gfSwgaW5kZXgpKSB9KV0gfSkgfSksIHByZXZpZXcudHJ1bmNhdGVkICYmIF9qc3goVHlwb2dyYXBoeS5Cb2R5LCB7IHNpemU6ICdzbScsIGNvbG9yOiAnZGVmYXVsdC1zZWNvbmRhcnknLCByb2xlOiAnc3RhdHVzJywgY2hpbGRyZW46IGxvY2FsZS50cnVuY2F0ZWQucmVwbGFjZSgne3Jvd3N9JywgU3RyaW5nKHJvd0xpbWl0KSkucmVwbGFjZSgne2NvbHVtbnN9JywgU3RyaW5nKGNvbHVtbkxpbWl0KSkgfSldIH0pIDogX2pzeChcImRpdlwiLCB7IGNsYXNzTmFtZTogY2xhc3NlcygnbWVzc2FnZScpLCByb2xlOiAnc3RhdHVzJywgY2hpbGRyZW46IF9qc3goVHlwb2dyYXBoeS5Cb2R5LCB7IHNpemU6IFwibWRcIiwgY2hpbGRyZW46IGxvY2FsZS5lbXB0eVNoZWV0IH0pIH0pXSB9KTtcbn0iLG51bGxdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjIn0=
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
import FilePreview from './FilePreview';
|
|
4
|
+
export { FilePreview } from './FilePreview';
|
|
5
|
+
export default FilePreview;
|
|
6
|
+
export * from './interface';
|
|
7
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImJ1c2luZXNzL3NyYy9idXNpbmVzcy9GaWxlUHJldmlldy9pbmRleC50cyJdLCJuYW1lcyI6WyJGaWxlUHJldmlldyJdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWTs7QUFFWixPQUFPQSxXQUFXLE1BQU0sZUFBZTtBQUN2QyxTQUFTQSxXQUFXLFFBQVEsZUFBZTtBQUMzQyxlQUFlQSxXQUFXO0FBQzFCLGNBQWMsYUFBYSIsImZpbGUiOiJidXNpbmVzcy9GaWxlUHJldmlldy9pbmRleC5qcyIsInNvdXJjZXNDb250ZW50IjpbbnVsbF0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMifQ==
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import type { ReactNode, Ref } from 'react';
|
|
2
|
+
import type { DialogProps } from "../../components/Dialog";
|
|
3
|
+
import type { BusinessLocale } from "../../locale/interface";
|
|
4
|
+
export interface FilePreviewFile {
|
|
5
|
+
/** URL (including signed URLs), File, or Blob. URLs must permit browser CORS reads. */
|
|
6
|
+
src: string | Blob;
|
|
7
|
+
/** Original filename; supply this for signed URLs and nameless Blobs. */
|
|
8
|
+
name?: string;
|
|
9
|
+
/** Optional MIME hint for URLs without an extension. */
|
|
10
|
+
mimeType?: string;
|
|
11
|
+
}
|
|
12
|
+
export interface FilePreviewProps {
|
|
13
|
+
prefixCls?: string;
|
|
14
|
+
className?: string;
|
|
15
|
+
ref?: Ref<HTMLDivElement>;
|
|
16
|
+
file?: FilePreviewFile;
|
|
17
|
+
/** Called on each open/retry. Takes precedence over file; keep the callback stable. */
|
|
18
|
+
loadFile?: (signal: AbortSignal) => Promise<FilePreviewFile>;
|
|
19
|
+
open?: boolean;
|
|
20
|
+
defaultOpen?: boolean;
|
|
21
|
+
onOpenChange?: (open: boolean) => void;
|
|
22
|
+
/** Custom trigger render function. null hides the default preview icon. */
|
|
23
|
+
trigger?: ((openPreview: () => void) => ReactNode) | null;
|
|
24
|
+
disabled?: boolean;
|
|
25
|
+
title?: ReactNode;
|
|
26
|
+
/** Dialog width in pixels or CSS units. Defaults to min(90vw, 64rem). */
|
|
27
|
+
width?: DialogProps['width'];
|
|
28
|
+
/** Name displayed while loadFile resolves. */
|
|
29
|
+
fileName?: string;
|
|
30
|
+
/** Defaults to 10 MiB, matching RFI uploads. */
|
|
31
|
+
maxFileSize?: number;
|
|
32
|
+
/** Preview limits, clamped to 1–1000 rows and 1–100 columns. */
|
|
33
|
+
maxRows?: number;
|
|
34
|
+
maxColumns?: number;
|
|
35
|
+
/** Request headers/credentials for the file URL. AbortSignal is managed internally. */
|
|
36
|
+
requestOptions?: Omit<RequestInit, 'signal' | 'method' | 'body'>;
|
|
37
|
+
dialogProps?: Omit<DialogProps, 'open' | 'onCancel' | 'children' | 'title' | 'footer' | 'bare'>;
|
|
38
|
+
locale?: Partial<BusinessLocale['FilePreview']>;
|
|
39
|
+
onError?: (error: Error) => void;
|
|
40
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVzaW5lc3MvRmlsZVByZXZpZXcvaW50ZXJmYWNlLmpzIiwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjIiwic291cmNlcyI6WyJidXNpbmVzcy9GaWxlUHJldmlldy9pbnRlcmZhY2UuanMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHt9OyJdLCJtYXBwaW5ncyI6IkFBQUEiLCJpZ25vcmVMaXN0IjpbXX0=
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Retrieves the spacing value for a given token key.
|
|
3
|
+
*
|
|
4
|
+
* @param {string} $key - The spacing token key (e.g., '100', '200').
|
|
5
|
+
* @return {length|null} The computed spacing value or null if the key is invalid.
|
|
6
|
+
* @example
|
|
7
|
+
* .element {
|
|
8
|
+
* padding: om-spacing-token('200'); // Returns 8px if $om-sys-spacing-unit is 4px
|
|
9
|
+
* }
|
|
10
|
+
*/
|
|
11
|
+
/**
|
|
12
|
+
* Computes the spacing value based on a token key or a direct length value.
|
|
13
|
+
*
|
|
14
|
+
* @param {string|length} $value - The spacing token key (e.g., '100') or a direct length value (e.g., '16px').
|
|
15
|
+
* @return {length} The computed spacing value.
|
|
16
|
+
* @example
|
|
17
|
+
* .element {
|
|
18
|
+
* margin: om-spacing-value('300'); // Returns 12px if $om-sys-spacing-unit is 4px
|
|
19
|
+
* padding: om-spacing-value(16px); // Returns 16px
|
|
20
|
+
* gap: om-spacing-value(2); // Returns 8px if $om-sys-spacing-unit is 4px
|
|
21
|
+
* }
|
|
22
|
+
*/
|
|
23
|
+
.om-component-ui-file-preview {
|
|
24
|
+
max-width: 100%;
|
|
25
|
+
}
|
|
26
|
+
.om-component-ui-file-preview-content {
|
|
27
|
+
display: flex;
|
|
28
|
+
flex-direction: column;
|
|
29
|
+
gap: var(--om-spacing-400, 16px);
|
|
30
|
+
min-width: 0;
|
|
31
|
+
}
|
|
32
|
+
.om-component-ui-file-preview-filename {
|
|
33
|
+
overflow-wrap: anywhere;
|
|
34
|
+
}
|
|
35
|
+
.om-component-ui-file-preview-pdf {
|
|
36
|
+
width: 100%;
|
|
37
|
+
height: 60vh;
|
|
38
|
+
border: 0;
|
|
39
|
+
border-radius: var(--om-radius-200, 8px);
|
|
40
|
+
}
|
|
41
|
+
.om-component-ui-file-preview-viewport {
|
|
42
|
+
max-height: 60vh;
|
|
43
|
+
overflow: auto;
|
|
44
|
+
background: var(--om-bg-default-secondary, #f8f8f8);
|
|
45
|
+
border-radius: var(--om-radius-200, 8px);
|
|
46
|
+
}
|
|
47
|
+
.om-component-ui-file-preview-image {
|
|
48
|
+
display: block;
|
|
49
|
+
max-width: 100%;
|
|
50
|
+
max-height: 60vh;
|
|
51
|
+
margin: auto;
|
|
52
|
+
-o-object-fit: contain;
|
|
53
|
+
object-fit: contain;
|
|
54
|
+
}
|
|
55
|
+
.om-component-ui-file-preview-image[hidden] {
|
|
56
|
+
display: none;
|
|
57
|
+
}
|
|
58
|
+
.om-component-ui-file-preview-message {
|
|
59
|
+
display: flex;
|
|
60
|
+
flex-direction: column;
|
|
61
|
+
gap: var(--om-spacing-400, 16px);
|
|
62
|
+
align-items: center;
|
|
63
|
+
justify-content: center;
|
|
64
|
+
min-height: 30vh;
|
|
65
|
+
padding: var(--om-spacing-800, 32px);
|
|
66
|
+
text-align: center;
|
|
67
|
+
}
|
|
68
|
+
.om-component-ui-file-preview-sheets {
|
|
69
|
+
max-width: 100%;
|
|
70
|
+
overflow-x: auto;
|
|
71
|
+
}
|
|
72
|
+
.om-component-ui-file-preview-table {
|
|
73
|
+
width: 100%;
|
|
74
|
+
color: var(--om-text-default, #131313);
|
|
75
|
+
border-collapse: collapse;
|
|
76
|
+
font-size: var(--om-body-sm-font-size);
|
|
77
|
+
font-family: var(--om-body-sm-font-family);
|
|
78
|
+
line-height: var(--om-body-sm-line-height);
|
|
79
|
+
letter-spacing: var(--om-body-sm-letter-spacing);
|
|
80
|
+
font-weight: var(--om-body-sm-font-weight);
|
|
81
|
+
}
|
|
82
|
+
.om-component-ui-file-preview-table th,
|
|
83
|
+
.om-component-ui-file-preview-table td {
|
|
84
|
+
min-width: var(--om-spacing-2000, 80px);
|
|
85
|
+
max-width: calc(4 * var(--om-spacing-2000, 80px));
|
|
86
|
+
padding: var(--om-spacing-200, 8px) var(--om-spacing-300, 12px);
|
|
87
|
+
overflow-wrap: anywhere;
|
|
88
|
+
text-align: left;
|
|
89
|
+
white-space: pre-wrap;
|
|
90
|
+
box-shadow: inset 0 0 0 0.5px var(--om-border-default, #d1d2d2);
|
|
91
|
+
}
|
|
92
|
+
.om-component-ui-file-preview-table td {
|
|
93
|
+
background: var(--om-bg-default, #fff);
|
|
94
|
+
}
|
|
95
|
+
.om-component-ui-file-preview-table th {
|
|
96
|
+
font-weight: 500;
|
|
97
|
+
background: var(--om-bg-default-secondary, #f8f8f8);
|
|
98
|
+
}
|
|
99
|
+
.om-component-ui-file-preview-table th:first-child {
|
|
100
|
+
width: 1%;
|
|
101
|
+
min-width: var(--om-spacing-1000, 40px);
|
|
102
|
+
}
|
|
103
|
+
.om-component-ui-file-preview-table thead th {
|
|
104
|
+
position: sticky;
|
|
105
|
+
top: 0;
|
|
106
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import './FilePreview.css';
|
|
2
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImJ1c2luZXNzL0ZpbGVQcmV2aWV3L3NyYy9idXNpbmVzcy9GaWxlUHJldmlldy9zdHlsZS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLG9CQUFvQiIsImZpbGUiOiJidXNpbmVzcy9GaWxlUHJldmlldy9zdHlsZS9jc3MuanMiLCJzb3VyY2VzQ29udGVudCI6W251bGxdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjIn0=
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import './FilePreview.css';
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import './FilePreview.css';
|
|
2
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImJ1c2luZXNzL0ZpbGVQcmV2aWV3L3NyYy9idXNpbmVzcy9GaWxlUHJldmlldy9zdHlsZS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLG9CQUFvQiIsImZpbGUiOiJidXNpbmVzcy9GaWxlUHJldmlldy9zdHlsZS9pbmRleC5qcyIsInNvdXJjZXNDb250ZW50IjpbbnVsbF0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMifQ==
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { FilePreviewFile, FilePreviewProps } from './interface';
|
|
2
|
+
export declare const DEFAULT_MAX_FILE_SIZE: number;
|
|
3
|
+
export declare const DEFAULT_MAX_ROWS = 200;
|
|
4
|
+
export declare const DEFAULT_MAX_COLUMNS = 50;
|
|
5
|
+
export type PreviewKind = 'image' | 'pdf' | 'spreadsheet' | 'unsupported';
|
|
6
|
+
export declare function getFileName(file: FilePreviewFile): string;
|
|
7
|
+
export declare function getPreviewKind(file: FilePreviewFile): PreviewKind;
|
|
8
|
+
export declare const previewLimit: (value: number, fallback: number, maximum: number) => number;
|
|
9
|
+
/** Basic format check before embedding; the native viewer validates PDF structure. */
|
|
10
|
+
export declare function validatePdfBlob(blob: Blob): Promise<void>;
|
|
11
|
+
export declare function readPreviewBlob(file: FilePreviewFile, signal: AbortSignal, maxBytes: number, options: FilePreviewProps['requestOptions']): Promise<Blob>;
|