@nakashim/tp-custom 0.1.6

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.
Files changed (54) hide show
  1. package/README.md +68 -0
  2. package/dist/lib/index.d.ts +10 -0
  3. package/dist/lib/index.d.ts.map +1 -0
  4. package/dist/lib/index.js +10 -0
  5. package/dist/lib/index.js.map +1 -0
  6. package/dist/lib/tp-plugin/counter-blade-plugin.d.ts +11 -0
  7. package/dist/lib/tp-plugin/counter-blade-plugin.d.ts.map +1 -0
  8. package/dist/lib/tp-plugin/counter-blade-plugin.js +96 -0
  9. package/dist/lib/tp-plugin/counter-blade-plugin.js.map +1 -0
  10. package/dist/lib/tp-plugin/dynamic-list-blade-plugin.d.ts +159 -0
  11. package/dist/lib/tp-plugin/dynamic-list-blade-plugin.d.ts.map +1 -0
  12. package/dist/lib/tp-plugin/dynamic-list-blade-plugin.js +719 -0
  13. package/dist/lib/tp-plugin/dynamic-list-blade-plugin.js.map +1 -0
  14. package/dist/lib/tp-plugin/image-container-blade-plugin.d.ts +67 -0
  15. package/dist/lib/tp-plugin/image-container-blade-plugin.d.ts.map +1 -0
  16. package/dist/lib/tp-plugin/image-container-blade-plugin.js +251 -0
  17. package/dist/lib/tp-plugin/image-container-blade-plugin.js.map +1 -0
  18. package/dist/lib/tp-plugin/label-layout-utils.d.ts +2 -0
  19. package/dist/lib/tp-plugin/label-layout-utils.d.ts.map +1 -0
  20. package/dist/lib/tp-plugin/label-layout-utils.js +11 -0
  21. package/dist/lib/tp-plugin/label-layout-utils.js.map +1 -0
  22. package/dist/lib/tp-plugin/plain-blade-plugin.d.ts +28 -0
  23. package/dist/lib/tp-plugin/plain-blade-plugin.d.ts.map +1 -0
  24. package/dist/lib/tp-plugin/plain-blade-plugin.js +86 -0
  25. package/dist/lib/tp-plugin/plain-blade-plugin.js.map +1 -0
  26. package/dist/lib/tp-plugin/register-custom-plugins.d.ts +4 -0
  27. package/dist/lib/tp-plugin/register-custom-plugins.d.ts.map +1 -0
  28. package/dist/lib/tp-plugin/register-custom-plugins.js +39 -0
  29. package/dist/lib/tp-plugin/register-custom-plugins.js.map +1 -0
  30. package/dist/lib/tp-plugin/row-blade-plugin.d.ts +48 -0
  31. package/dist/lib/tp-plugin/row-blade-plugin.d.ts.map +1 -0
  32. package/dist/lib/tp-plugin/row-blade-plugin.js +216 -0
  33. package/dist/lib/tp-plugin/row-blade-plugin.js.map +1 -0
  34. package/dist/lib/tp-plugin/text-blade-plugin.d.ts +80 -0
  35. package/dist/lib/tp-plugin/text-blade-plugin.d.ts.map +1 -0
  36. package/dist/lib/tp-plugin/text-blade-plugin.js +276 -0
  37. package/dist/lib/tp-plugin/text-blade-plugin.js.map +1 -0
  38. package/dist/lib/tp-plugin/text-input-blade-plugin.d.ts +81 -0
  39. package/dist/lib/tp-plugin/text-input-blade-plugin.d.ts.map +1 -0
  40. package/dist/lib/tp-plugin/text-input-blade-plugin.js +385 -0
  41. package/dist/lib/tp-plugin/text-input-blade-plugin.js.map +1 -0
  42. package/dist/lib/tp-plugin/toggle-blade-plugin.d.ts +64 -0
  43. package/dist/lib/tp-plugin/toggle-blade-plugin.d.ts.map +1 -0
  44. package/dist/lib/tp-plugin/toggle-blade-plugin.js +343 -0
  45. package/dist/lib/tp-plugin/toggle-blade-plugin.js.map +1 -0
  46. package/dist/styles/assets/fonts/JetBrainsMono-VariableFont_wght.ttf +0 -0
  47. package/dist/styles/assets/icons/check-16.svg +1 -0
  48. package/dist/styles/assets/icons/chevron-down-12.svg +1 -0
  49. package/dist/styles/assets/icons/chevron-up-12.svg +1 -0
  50. package/dist/styles/assets/icons/triangle-down-16.svg +1 -0
  51. package/dist/styles/assets/icons/x-12.svg +1 -0
  52. package/dist/styles/assets/images/bg-grid.png +0 -0
  53. package/dist/styles/tp-custom.css +329 -0
  54. package/package.json +54 -0
@@ -0,0 +1,343 @@
1
+ import { BladeApi, BladeController, createPlugin, parseRecord } from '@tweakpane/core';
2
+ import { deferApplyNoLabelLayout } from './label-layout-utils';
3
+ class ToggleBladeView {
4
+ element;
5
+ buttonElement_;
6
+ onTextElement_;
7
+ offTextElement_;
8
+ value_;
9
+ textOn_;
10
+ textOff_;
11
+ fullWidth_;
12
+ constructor(doc, config) {
13
+ this.value_ = config.value;
14
+ this.textOn_ = config.textOn;
15
+ this.textOff_ = config.textOff;
16
+ this.fullWidth_ = config.fullWidth;
17
+ const root = doc.createElement('div');
18
+ root.className = 'tp-toggleblade tp-lblv';
19
+ root.classList.toggle('tp-toggleblade-full', this.fullWidth_);
20
+ root.classList.toggle('tp-lblv-nol', this.fullWidth_);
21
+ const labelElement = doc.createElement('div');
22
+ labelElement.className = 'tp-lblv_l';
23
+ labelElement.textContent = config.label ?? '';
24
+ root.appendChild(labelElement);
25
+ const valueElement = doc.createElement('div');
26
+ valueElement.className = 'tp-lblv_v tp-toggleblade_v';
27
+ root.appendChild(valueElement);
28
+ const button = doc.createElement('button');
29
+ button.type = 'button';
30
+ button.className = 'tp-toggleblade_b';
31
+ button.setAttribute('role', 'switch');
32
+ button.addEventListener('click', () => {
33
+ this.value = !this.value_;
34
+ });
35
+ valueElement.appendChild(button);
36
+ const onText = doc.createElement('span');
37
+ onText.className = 'tp-toggleblade_tx tp-toggleblade_tx-on';
38
+ onText.textContent = this.textOn_;
39
+ button.appendChild(onText);
40
+ const track = doc.createElement('span');
41
+ track.className = 'tp-toggleblade_tr';
42
+ button.appendChild(track);
43
+ const knob = doc.createElement('span');
44
+ knob.className = 'tp-toggleblade_k';
45
+ button.appendChild(knob);
46
+ const offText = doc.createElement('span');
47
+ offText.className = 'tp-toggleblade_tx tp-toggleblade_tx-off';
48
+ offText.textContent = this.textOff_;
49
+ button.appendChild(offText);
50
+ this.element = root;
51
+ this.buttonElement_ = button;
52
+ this.onTextElement_ = onText;
53
+ this.offTextElement_ = offText;
54
+ this.applyState_();
55
+ }
56
+ get value() {
57
+ return this.value_;
58
+ }
59
+ set value(next) {
60
+ const normalized = Boolean(next);
61
+ if (normalized === this.value_) {
62
+ return;
63
+ }
64
+ this.value_ = normalized;
65
+ this.applyState_();
66
+ }
67
+ get fullWidth() {
68
+ return this.fullWidth_;
69
+ }
70
+ set fullWidth(next) {
71
+ this.fullWidth_ = Boolean(next);
72
+ this.element.classList.toggle('tp-toggleblade-full', this.fullWidth_);
73
+ this.element.classList.toggle('tp-lblv-nol', this.fullWidth_);
74
+ }
75
+ applyState_() {
76
+ this.element.classList.toggle('tp-toggleblade-on', this.value_);
77
+ this.buttonElement_.setAttribute('aria-pressed', String(this.value_));
78
+ this.buttonElement_.setAttribute('aria-checked', String(this.value_));
79
+ this.onTextElement_.classList.toggle('tp-toggleblade_tx-active', this.value_);
80
+ this.offTextElement_.classList.toggle('tp-toggleblade_tx-active', !this.value_);
81
+ }
82
+ }
83
+ class ToggleBladeController extends BladeController {
84
+ constructor(doc, config) {
85
+ const view = new ToggleBladeView(doc, {
86
+ label: config.label,
87
+ value: config.value,
88
+ textOn: config.textOn,
89
+ textOff: config.textOff,
90
+ fullWidth: config.fullWidth,
91
+ });
92
+ super({
93
+ blade: config.blade,
94
+ view,
95
+ viewProps: config.viewProps,
96
+ });
97
+ }
98
+ }
99
+ class ToggleBindingView {
100
+ element;
101
+ value_;
102
+ buttonElement_;
103
+ onTextElement_;
104
+ offTextElement_;
105
+ fullWidth_;
106
+ constructor(doc, config) {
107
+ this.value_ = config.value;
108
+ this.fullWidth_ = config.fullWidth;
109
+ const root = doc.createElement('div');
110
+ root.className = 'tp-toggleblade tp-toggleblade_v';
111
+ root.classList.toggle('tp-toggleblade-full', this.fullWidth_);
112
+ const button = doc.createElement('button');
113
+ button.type = 'button';
114
+ button.className = 'tp-toggleblade_b';
115
+ button.setAttribute('role', 'switch');
116
+ config.viewProps.bindDisabled(button);
117
+ button.addEventListener('click', () => {
118
+ this.value_.rawValue = !this.value_.rawValue;
119
+ });
120
+ root.appendChild(button);
121
+ const onText = doc.createElement('span');
122
+ onText.className = 'tp-toggleblade_tx tp-toggleblade_tx-on';
123
+ onText.textContent = config.textOn;
124
+ button.appendChild(onText);
125
+ const track = doc.createElement('span');
126
+ track.className = 'tp-toggleblade_tr';
127
+ button.appendChild(track);
128
+ const knob = doc.createElement('span');
129
+ knob.className = 'tp-toggleblade_k';
130
+ button.appendChild(knob);
131
+ const offText = doc.createElement('span');
132
+ offText.className = 'tp-toggleblade_tx tp-toggleblade_tx-off';
133
+ offText.textContent = config.textOff;
134
+ button.appendChild(offText);
135
+ this.element = root;
136
+ this.buttonElement_ = button;
137
+ this.onTextElement_ = onText;
138
+ this.offTextElement_ = offText;
139
+ this.value_.emitter.on('change', () => this.applyState_());
140
+ this.applyState_();
141
+ deferApplyNoLabelLayout(this.element, this.fullWidth_);
142
+ }
143
+ applyState_() {
144
+ const isOn = Boolean(this.value_.rawValue);
145
+ this.element.classList.toggle('tp-toggleblade-on', isOn);
146
+ this.buttonElement_.setAttribute('aria-pressed', String(isOn));
147
+ this.buttonElement_.setAttribute('aria-checked', String(isOn));
148
+ this.onTextElement_.classList.toggle('tp-toggleblade_tx-active', isOn);
149
+ this.offTextElement_.classList.toggle('tp-toggleblade_tx-active', !isOn);
150
+ }
151
+ }
152
+ class ToggleBindingController {
153
+ value;
154
+ view;
155
+ viewProps;
156
+ constructor(doc, config) {
157
+ this.value = config.value;
158
+ this.viewProps = config.viewProps;
159
+ this.view = new ToggleBindingView(doc, {
160
+ value: config.value,
161
+ viewProps: config.viewProps,
162
+ textOn: config.textOn,
163
+ textOff: config.textOff,
164
+ fullWidth: config.fullWidth,
165
+ });
166
+ }
167
+ }
168
+ export class ToggleBladeApi extends BladeApi {
169
+ get value() {
170
+ return this.controller.view.value;
171
+ }
172
+ set value(next) {
173
+ this.controller.view.value = Boolean(next);
174
+ }
175
+ toggle() {
176
+ const next = !this.value;
177
+ this.value = next;
178
+ return next;
179
+ }
180
+ get fullWidth() {
181
+ return this.controller.view.fullWidth;
182
+ }
183
+ set fullWidth(next) {
184
+ this.controller.view.fullWidth = Boolean(next);
185
+ }
186
+ }
187
+ const ToggleBladePlugin = createPlugin({
188
+ id: 'toggleblade',
189
+ type: 'blade',
190
+ accept(params) {
191
+ const result = parseRecord(params, (p) => ({
192
+ view: p.required.constant('toggleblade'),
193
+ label: p.optional.string,
194
+ value: p.optional.boolean,
195
+ textOn: p.optional.string,
196
+ textOff: p.optional.string,
197
+ fullWidth: p.optional.boolean,
198
+ }));
199
+ if (!result) {
200
+ return null;
201
+ }
202
+ return {
203
+ params: {
204
+ ...result,
205
+ textOn: result.textOn ?? 'ON',
206
+ textOff: result.textOff ?? 'OFF',
207
+ fullWidth: result.fullWidth ?? false,
208
+ },
209
+ };
210
+ },
211
+ controller(args) {
212
+ return new ToggleBladeController(args.document, {
213
+ blade: args.blade,
214
+ viewProps: args.viewProps,
215
+ label: args.params.label,
216
+ value: args.params.value ?? false,
217
+ textOn: args.params.textOn ?? 'ON',
218
+ textOff: args.params.textOff ?? 'OFF',
219
+ fullWidth: args.params.fullWidth ?? false,
220
+ });
221
+ },
222
+ api(args) {
223
+ if (!(args.controller instanceof ToggleBladeController)) {
224
+ return null;
225
+ }
226
+ return new ToggleBladeApi(args.controller);
227
+ },
228
+ });
229
+ const ToggleBindingPlugin = createPlugin({
230
+ id: 'input-toggleblade',
231
+ type: 'input',
232
+ accept(exValue, params) {
233
+ if (typeof exValue !== 'boolean') {
234
+ return null;
235
+ }
236
+ const result = parseRecord(params, (p) => ({
237
+ view: p.required.constant('toggleblade'),
238
+ readonly: p.optional.constant(false),
239
+ textOn: p.optional.string,
240
+ textOff: p.optional.string,
241
+ fullWidth: p.optional.boolean,
242
+ }));
243
+ if (!result) {
244
+ return null;
245
+ }
246
+ return {
247
+ initialValue: exValue,
248
+ params: result,
249
+ };
250
+ },
251
+ binding: {
252
+ reader: () => (value) => Boolean(value),
253
+ writer: () => (target, inValue) => {
254
+ target.write(Boolean(inValue));
255
+ },
256
+ },
257
+ controller(args) {
258
+ return new ToggleBindingController(args.document, {
259
+ value: args.value,
260
+ viewProps: args.viewProps,
261
+ textOn: args.params.textOn ?? 'ON',
262
+ textOff: args.params.textOff ?? 'OFF',
263
+ fullWidth: args.params.fullWidth ?? false,
264
+ });
265
+ },
266
+ });
267
+ export const ToggleBladePluginBundle = {
268
+ id: 'toggleblade-bundle',
269
+ plugins: [ToggleBladePlugin, ToggleBindingPlugin],
270
+ css: `
271
+ .tp-toggleblade_v {
272
+ display: flex;
273
+ align-items: center;
274
+ justify-content: flex-end;
275
+ }
276
+ .tp-toggleblade_tx {
277
+ color: var(--tp-label-foreground-color);
278
+ font-size: 10px;
279
+ opacity: 0;
280
+ user-select: none;
281
+ position: absolute;
282
+ z-index: 1;
283
+ }
284
+ .tp-toggleblade_tx-on {
285
+ color: var(--tp-button-foreground-color);
286
+ left: 6px;
287
+ }
288
+ .tp-toggleblade_tx-off {
289
+ right: 6px;
290
+ }
291
+ .tp-toggleblade_tx-active {
292
+ opacity: 1;
293
+ }
294
+ .tp-custom .tp-toggleblade_b {
295
+ display: flex;
296
+ align-items: center;
297
+ position: relative;
298
+ appearance: none;
299
+ border: none;
300
+ margin: 0;
301
+ padding: 0;
302
+ height: var(--tp-c-container-unit-size, 20px);
303
+ width: 50px;
304
+ border-radius: 10px;
305
+ background-color: var(--tp-monitor-background-color);
306
+ cursor: pointer;
307
+ transition: background-color .15s ease;
308
+ }
309
+ .tp-custom .tp-toggleblade_b:focus,
310
+ .tp-custom .tp-toggleblade_b:hover {
311
+ background-color: rgba(255, 255, 255, 0.05);
312
+ outline: none;
313
+ }
314
+ .tp-custom .tp-toggleblade.tp-toggleblade-on .tp-toggleblade_b:focus,
315
+ .tp-custom .tp-toggleblade.tp-toggleblade-on .tp-toggleblade_b:hover {
316
+ background-color: rgba(255, 255, 255, 0.6);
317
+ }
318
+ .tp-toggleblade_k {
319
+ position: absolute;
320
+ top: 2px;
321
+ left: 2px;
322
+ width: calc(var(--tp-c-container-unit-size, 20px) - 4px);
323
+ height: calc(var(--tp-c-container-unit-size, 20px) - 4px);
324
+ border-radius: 50%;
325
+ background-color: var(--tp-input-foreground-color);
326
+ transition: transform .15s ease;
327
+ z-index: 2;
328
+ }
329
+ .tp-toggleblade_tr {
330
+ position: absolute;
331
+ inset: 0;
332
+ border-radius: inherit;
333
+ }
334
+ .tp-toggleblade.tp-toggleblade-on .tp-toggleblade_b {
335
+ background-color: var(--tp-button-background-color, rgba(158, 158, 158, 1));
336
+ }
337
+ .tp-toggleblade.tp-toggleblade-on .tp-toggleblade_k {
338
+ background-color: var(--tp-c-button-background-color-upper);
339
+ transform: translateX(calc(50px - 16px - 4px));
340
+ }
341
+ `,
342
+ };
343
+ //# sourceMappingURL=toggle-blade-plugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toggle-blade-plugin.js","sourceRoot":"","sources":["../../../src/tp-plugin/toggle-blade-plugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,QAAQ,EAAE,eAAe,EAAE,YAAY,EAAE,WAAW,EAAC,MAAM,iBAAiB,CAAC;AACrF,OAAO,EAAC,uBAAuB,EAAC,MAAM,sBAAsB,CAAC;AA8B7D,MAAM,eAAe;IACH,OAAO,CAAc;IACpB,cAAc,CAAoB;IAClC,cAAc,CAAkB;IAChC,eAAe,CAAkB;IAC1C,MAAM,CAAU;IACP,OAAO,CAAS;IAChB,QAAQ,CAAS;IAC1B,UAAU,CAAU;IAE5B,YACE,GAAa,EACb,MAMC;QAED,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC;QAC3B,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC;QAC7B,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC;QAC/B,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,SAAS,CAAC;QAEnC,MAAM,IAAI,GAAG,GAAG,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QACtC,IAAI,CAAC,SAAS,GAAG,wBAAwB,CAAC;QAC1C,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,qBAAqB,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QAC9D,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,aAAa,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QAEtD,MAAM,YAAY,GAAG,GAAG,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC9C,YAAY,CAAC,SAAS,GAAG,WAAW,CAAC;QACrC,YAAY,CAAC,WAAW,GAAG,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC;QAC9C,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;QAE/B,MAAM,YAAY,GAAG,GAAG,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC9C,YAAY,CAAC,SAAS,GAAG,4BAA4B,CAAC;QACtD,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;QAE/B,MAAM,MAAM,GAAG,GAAG,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QAC3C,MAAM,CAAC,IAAI,GAAG,QAAQ,CAAC;QACvB,MAAM,CAAC,SAAS,GAAG,kBAAkB,CAAC;QACtC,MAAM,CAAC,YAAY,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QACtC,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE;YACpC,IAAI,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC;QAC5B,CAAC,CAAC,CAAC;QACH,YAAY,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAEjC,MAAM,MAAM,GAAG,GAAG,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QACzC,MAAM,CAAC,SAAS,GAAG,wCAAwC,CAAC;QAC5D,MAAM,CAAC,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC;QAClC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAE3B,MAAM,KAAK,GAAG,GAAG,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QACxC,KAAK,CAAC,SAAS,GAAG,mBAAmB,CAAC;QACtC,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QAE1B,MAAM,IAAI,GAAG,GAAG,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QACvC,IAAI,CAAC,SAAS,GAAG,kBAAkB,CAAC;QACpC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAEzB,MAAM,OAAO,GAAG,GAAG,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QAC1C,OAAO,CAAC,SAAS,GAAG,yCAAyC,CAAC;QAC9D,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC;QACpC,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAE5B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC;QAC7B,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC;QAC7B,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC;QAE/B,IAAI,CAAC,WAAW,EAAE,CAAC;IACrB,CAAC;IAED,IAAW,KAAK;QACd,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED,IAAW,KAAK,CAAC,IAAa;QAC5B,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QACjC,IAAI,UAAU,KAAK,IAAI,CAAC,MAAM,EAAE,CAAC;YAC/B,OAAO;QACT,CAAC;QACD,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC;QACzB,IAAI,CAAC,WAAW,EAAE,CAAC;IACrB,CAAC;IAED,IAAW,SAAS;QAClB,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAED,IAAW,SAAS,CAAC,IAAa;QAChC,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QAChC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,qBAAqB,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QACtE,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,aAAa,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;IAChE,CAAC;IAEO,WAAW;QACjB,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,mBAAmB,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAChE,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,cAAc,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;QACtE,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,cAAc,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;QACtE,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,MAAM,CAAC,0BAA0B,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAC9E,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,MAAM,CAAC,0BAA0B,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAClF,CAAC;CACF;AAED,MAAM,qBAAsB,SAAQ,eAAgC;IAClE,YACE,GAAa,EACb,MAQC;QAED,MAAM,IAAI,GAAG,IAAI,eAAe,CAAC,GAAG,EAAE;YACpC,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,SAAS,EAAE,MAAM,CAAC,SAAS;SAC5B,CAAC,CAAC;QACH,KAAK,CAAC;YACJ,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,IAAI;YACJ,SAAS,EAAE,MAAM,CAAC,SAAS;SAC5B,CAAC,CAAC;IACL,CAAC;CACF;AAED,MAAM,iBAAiB;IACL,OAAO,CAAc;IAEpB,MAAM,CAAiB;IACvB,cAAc,CAAoB;IAClC,cAAc,CAAkB;IAChC,eAAe,CAAkB;IACjC,UAAU,CAAU;IAErC,YACE,GAAa,EACb,MAMC;QAED,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC;QAC3B,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,SAAS,CAAC;QAEnC,MAAM,IAAI,GAAG,GAAG,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QACtC,IAAI,CAAC,SAAS,GAAG,iCAAiC,CAAC;QACnD,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,qBAAqB,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QAE9D,MAAM,MAAM,GAAG,GAAG,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QAC3C,MAAM,CAAC,IAAI,GAAG,QAAQ,CAAC;QACvB,MAAM,CAAC,SAAS,GAAG,kBAAkB,CAAC;QACtC,MAAM,CAAC,YAAY,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QACtC,MAAM,CAAC,SAAS,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;QACtC,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE;YACpC,IAAI,CAAC,MAAM,CAAC,QAAQ,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;QAC/C,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAEzB,MAAM,MAAM,GAAG,GAAG,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QACzC,MAAM,CAAC,SAAS,GAAG,wCAAwC,CAAC;QAC5D,MAAM,CAAC,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC;QACnC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAE3B,MAAM,KAAK,GAAG,GAAG,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QACxC,KAAK,CAAC,SAAS,GAAG,mBAAmB,CAAC;QACtC,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QAE1B,MAAM,IAAI,GAAG,GAAG,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QACvC,IAAI,CAAC,SAAS,GAAG,kBAAkB,CAAC;QACpC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAEzB,MAAM,OAAO,GAAG,GAAG,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QAC1C,OAAO,CAAC,SAAS,GAAG,yCAAyC,CAAC;QAC9D,OAAO,CAAC,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC;QACrC,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAE5B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC;QAC7B,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC;QAC7B,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC;QAE/B,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;QAC3D,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,uBAAuB,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;IACzD,CAAC;IAEO,WAAW;QACjB,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC3C,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,mBAAmB,EAAE,IAAI,CAAC,CAAC;QACzD,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,cAAc,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;QAC/D,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,cAAc,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;QAC/D,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,MAAM,CAAC,0BAA0B,EAAE,IAAI,CAAC,CAAC;QACvE,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,MAAM,CAAC,0BAA0B,EAAE,CAAC,IAAI,CAAC,CAAC;IAC3E,CAAC;CACF;AAED,MAAM,uBAAuB;IACX,KAAK,CAAiB;IACtB,IAAI,CAAoB;IACxB,SAAS,CAAY;IAErC,YACE,GAAa,EACb,MAMC;QAED,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;QAC1B,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;QAClC,IAAI,CAAC,IAAI,GAAG,IAAI,iBAAiB,CAAC,GAAG,EAAE;YACrC,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,SAAS,EAAE,MAAM,CAAC,SAAS;SAC5B,CAAC,CAAC;IACL,CAAC;CACF;AAED,MAAM,OAAO,cAAe,SAAQ,QAA+B;IACjE,IAAW,KAAK;QACd,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC;IACpC,CAAC;IAED,IAAW,KAAK,CAAC,IAAa;QAC5B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7C,CAAC;IAEM,MAAM;QACX,MAAM,IAAI,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC;QACzB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAW,SAAS;QAClB,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC;IACxC,CAAC;IAED,IAAW,SAAS,CAAC,IAAa;QAChC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACjD,CAAC;CACF;AAED,MAAM,iBAAiB,GAAmC,YAAY,CAAC;IACrE,EAAE,EAAE,aAAa;IACjB,IAAI,EAAE,OAAO;IACb,MAAM,CAAC,MAAM;QACX,MAAM,MAAM,GAAG,WAAW,CAAoB,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC5D,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,aAAa,CAAC;YACxC,KAAK,EAAE,CAAC,CAAC,QAAQ,CAAC,MAAM;YACxB,KAAK,EAAE,CAAC,CAAC,QAAQ,CAAC,OAAO;YACzB,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,MAAM;YACzB,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,MAAM;YAC1B,SAAS,EAAE,CAAC,CAAC,QAAQ,CAAC,OAAO;SAC9B,CAAC,CAAC,CAAC;QACJ,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO;YACL,MAAM,EAAE;gBACN,GAAG,MAAM;gBACT,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,IAAI;gBAC7B,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,KAAK;gBAChC,SAAS,EAAE,MAAM,CAAC,SAAS,IAAI,KAAK;aACrC;SACF,CAAC;IACJ,CAAC;IACD,UAAU,CAAC,IAAI;QACb,OAAO,IAAI,qBAAqB,CAAC,IAAI,CAAC,QAAQ,EAAE;YAC9C,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK;YACxB,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,KAAK;YACjC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,IAAI;YAClC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,KAAK;YACrC,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,KAAK;SAC1C,CAAC,CAAC;IACL,CAAC;IACD,GAAG,CAAC,IAAI;QACN,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,YAAY,qBAAqB,CAAC,EAAE,CAAC;YACxD,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,IAAI,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC7C,CAAC;CACF,CAAC,CAAC;AAEH,MAAM,mBAAmB,GAA8D,YAAY,CAAC;IAClG,EAAE,EAAE,mBAAmB;IACvB,IAAI,EAAE,OAAO;IACb,MAAM,CAAC,OAAO,EAAE,MAAM;QACpB,IAAI,OAAO,OAAO,KAAK,SAAS,EAAE,CAAC;YACjC,OAAO,IAAI,CAAC;QACd,CAAC;QACD,MAAM,MAAM,GAAG,WAAW,CAAsB,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC9D,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,aAAa,CAAC;YACxC,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC;YACpC,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,MAAM;YACzB,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,MAAM;YAC1B,SAAS,EAAE,CAAC,CAAC,QAAQ,CAAC,OAAO;SAC9B,CAAC,CAAC,CAAC;QACJ,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO;YACL,YAAY,EAAE,OAAO;YACrB,MAAM,EAAE,MAAM;SACf,CAAC;IACJ,CAAC;IACD,OAAO,EAAE;QACP,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,KAAc,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;QAChD,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,OAAgB,EAAE,EAAE;YACzC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;QACjC,CAAC;KACF;IACD,UAAU,CAAC,IAAI;QACb,OAAO,IAAI,uBAAuB,CAAC,IAAI,CAAC,QAAQ,EAAE;YAChD,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,IAAI;YAClC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,KAAK;YACrC,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,KAAK;SAC1C,CAAC,CAAC;IACL,CAAC;CACF,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,uBAAuB,GAAG;IACrC,EAAE,EAAE,oBAAoB;IACxB,OAAO,EAAE,CAAC,iBAAiB,EAAE,mBAAmB,CAAC;IACjD,GAAG,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuEJ;CACF,CAAC"}
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><path d="M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z"/></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12"><path d="M6 8.825c-.2 0-.4-.1-.5-.2l-3.3-3.3c-.3-.3-.3-.8 0-1.1.3-.3.8-.3 1.1 0l2.7 2.7 2.7-2.7c.3-.3.8-.3 1.1 0 .3.3.3.8 0 1.1l-3.2 3.2c-.2.2-.4.3-.6.3Z"/></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12"><path d="M6 4c-.2 0-.4.1-.5.2L2.2 7.5c-.3.3-.3.8 0 1.1.3.3.8.3 1.1 0L6 5.9l2.7 2.7c.3.3.8.3 1.1 0 .3-.3.3-.8 0-1.1L6.6 4.3C6.4 4.1 6.2 4 6 4Z"/></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><path d="m4.427 7.427 3.396 3.396a.25.25 0 0 0 .354 0l3.396-3.396A.25.25 0 0 0 11.396 7H4.604a.25.25 0 0 0-.177.427Z"/></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12"><path d="M2.22 2.22a.749.749 0 0 1 1.06 0L6 4.939 8.72 2.22a.749.749 0 1 1 1.06 1.06L7.061 6 9.78 8.72a.749.749 0 1 1-1.06 1.06L6 7.061 3.28 9.78a.749.749 0 1 1-1.06-1.06L4.939 6 2.22 3.28a.749.749 0 0 1 0-1.06Z"/></svg>