@bagelink/vue 1.2.119 → 1.2.124

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 (37) hide show
  1. package/dist/components/AddressSearch.vue.d.ts.map +1 -1
  2. package/dist/components/Dropdown.vue.d.ts.map +1 -1
  3. package/dist/components/ImportData.vue.d.ts.map +1 -1
  4. package/dist/components/Spreadsheet/Index.vue.d.ts.map +1 -1
  5. package/dist/components/Spreadsheet/SpreadsheetTable.vue.d.ts.map +1 -1
  6. package/dist/components/calendar/views/CalendarPopover.vue.d.ts +2 -2
  7. package/dist/components/calendar/views/CalendarPopover.vue.d.ts.map +1 -1
  8. package/dist/components/form/inputs/DatePicker.vue.d.ts +1 -0
  9. package/dist/components/form/inputs/DatePicker.vue.d.ts.map +1 -1
  10. package/dist/components/form/inputs/RichText/composables/useEditor.d.ts +14 -1
  11. package/dist/components/form/inputs/RichText/composables/useEditor.d.ts.map +1 -1
  12. package/dist/components/form/inputs/RichText/index.vue.d.ts.map +1 -1
  13. package/dist/components/form/inputs/RichText/richTextTypes.d.ts +48 -0
  14. package/dist/components/form/inputs/RichText/richTextTypes.d.ts.map +1 -0
  15. package/dist/components/form/inputs/SelectInput.vue.d.ts.map +1 -1
  16. package/dist/components/form/inputs/Upload/upload.types.d.ts +39 -0
  17. package/dist/components/form/inputs/Upload/upload.types.d.ts.map +1 -0
  18. package/dist/index.cjs +75 -42
  19. package/dist/index.mjs +75 -42
  20. package/dist/style.css +202 -165
  21. package/dist/types/BagelForm.d.ts.map +1 -1
  22. package/dist/types/timeago.d.ts +23 -0
  23. package/dist/types/timeago.d.ts.map +1 -0
  24. package/package.json +1 -1
  25. package/src/components/ImportData.vue +1 -0
  26. package/src/components/Spreadsheet/Index.vue +6 -1
  27. package/src/components/Spreadsheet/SpreadsheetTable.vue +29 -3
  28. package/src/components/form/inputs/DatePicker.vue +50 -2
  29. package/src/components/form/inputs/RichText/index.vue +1 -0
  30. package/src/components/form/inputs/RichText/{richTextTypes.d.ts → richTextTypes.ts} +2 -2
  31. package/src/components/form/inputs/RichText/utils/commands.ts +3 -3
  32. package/src/components/layout/Layout.vue +1 -1
  33. package/src/components/lightbox/index.ts +3 -3
  34. package/src/types/BagelForm.ts +0 -7
  35. package/dist/components/Carousel2.vue.d.ts +0 -89
  36. package/dist/components/Carousel2.vue.d.ts.map +0 -1
  37. /package/src/components/form/inputs/Upload/{upload.types.d.ts → upload.types.ts} +0 -0
@@ -0,0 +1,23 @@
1
+ export interface TimeUnit {
2
+ singular: string;
3
+ plural: string;
4
+ }
5
+ export type TranslationValue = string | TimeUnit;
6
+ export interface LanguageTranslations {
7
+ [key: string]: TranslationValue;
8
+ }
9
+ export type AvailableTimeLanguages = 'en' | 'es' | 'fr' | 'he';
10
+ export type DayFormatTypes = 'DD' | 'DDD' | 'DDDD';
11
+ export type MonthFormatTypes = 'MM' | 'MMM' | 'MMMM';
12
+ export type YearFormatTypes = 'YY' | 'YYYY';
13
+ export type HourFormatTypes = 'HH';
14
+ export type MinuteFormatTypes = 'mm';
15
+ export type SecondFormatTypes = 'ss';
16
+ export type MillisecondFormatTypes = 'sss';
17
+ export type AmPmFormatTypes = 'AmPm';
18
+ export type DateFormatSeparatorTypes = '/' | '-' | ' ' | ':' | '.';
19
+ export type CommonDateFormats = `${DayFormatTypes}${DateFormatSeparatorTypes}${MonthFormatTypes}${DateFormatSeparatorTypes}${YearFormatTypes}` | 'DD.MM.YY' | 'DD.MM.YYYY' | 'DD/MM/YY' | 'DD/MM/YYYY' | 'MM.DD.YY' | 'MM.DD.YYYY' | 'MM/DD/YY' | 'MM/DD/YYYY' | 'YYYY-MM-DD' | 'YY-MM-DD' | 'DD MMM YYYY' | 'DD MMMM YYYY' | 'DDD, DD MMM' | 'DDDD, DD MMMM' | 'MMM DD' | 'MMMM DD';
20
+ export type CommonTimeFormats = 'HH:mm' | 'HH:mm:ss' | 'HH:mm:ss:sss' | 'HH:MM' | 'HH:mm AmPm';
21
+ export type CommonDateTimeFormats = `${CommonDateFormats} ${CommonTimeFormats}` | `${CommonTimeFormats}, ${CommonDateFormats}` | 'YYYY-MM-DD HH:MM';
22
+ export type DateTimeAcceptedFormats = CommonDateFormats | CommonTimeFormats | CommonDateTimeFormats;
23
+ //# sourceMappingURL=timeago.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"timeago.d.ts","sourceRoot":"","sources":["../../src/types/timeago.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,QAAQ;IACxB,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,MAAM,CAAA;CACd;AAED,MAAM,MAAM,gBAAgB,GAAG,MAAM,GAAG,QAAQ,CAAA;AAEhD,MAAM,WAAW,oBAAoB;IACpC,CAAC,GAAG,EAAE,MAAM,GAAG,gBAAgB,CAAA;CAC/B;AAED,MAAM,MAAM,sBAAsB,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAA;AAE9D,MAAM,MAAM,cAAc,GAAG,IAAI,GAAG,KAAK,GAAG,MAAM,CAAA;AAClD,MAAM,MAAM,gBAAgB,GAAG,IAAI,GAAG,KAAK,GAAG,MAAM,CAAA;AACpD,MAAM,MAAM,eAAe,GAAG,IAAI,GAAG,MAAM,CAAA;AAC3C,MAAM,MAAM,eAAe,GAAG,IAAI,CAAA;AAClC,MAAM,MAAM,iBAAiB,GAAG,IAAI,CAAA;AACpC,MAAM,MAAM,iBAAiB,GAAG,IAAI,CAAA;AACpC,MAAM,MAAM,sBAAsB,GAAG,KAAK,CAAA;AAC1C,MAAM,MAAM,eAAe,GAAG,MAAM,CAAA;AAEpC,MAAM,MAAM,wBAAwB,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAA;AAGlE,MAAM,MAAM,iBAAiB,GAC1B,GAAG,cAAc,GAAG,wBAAwB,GAAG,gBAAgB,GAAG,wBAAwB,GAAG,eAAe,EAAE,GAC9G,UAAU,GAAG,YAAY,GAAG,UAAU,GAAG,YAAY,GACrD,UAAU,GAAG,YAAY,GAAG,UAAU,GAAG,YAAY,GACrD,YAAY,GAAG,UAAU,GACzB,aAAa,GAAG,cAAc,GAC9B,aAAa,GAAG,eAAe,GAC/B,QAAQ,GAAG,SAAS,CAAA;AAEvB,MAAM,MAAM,iBAAiB,GAC1B,OAAO,GAAG,UAAU,GAAG,cAAc,GACrC,OAAO,GACP,YAAY,CAAA;AAGf,MAAM,MAAM,qBAAqB,GAC9B,GAAG,iBAAiB,IAAI,iBAAiB,EAAE,GAC3C,GAAG,iBAAiB,KAAK,iBAAiB,EAAE,GAC5C,kBAAkB,CAAA;AAGrB,MAAM,MAAM,uBAAuB,GAChC,iBAAiB,GACjB,iBAAiB,GACjB,qBAAqB,CAAA"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@bagelink/vue",
3
3
  "type": "module",
4
- "version": "1.2.119",
4
+ "version": "1.2.124",
5
5
  "description": "Bagel core sdk packages",
6
6
  "author": {
7
7
  "name": "Neveh Allon",
@@ -1958,5 +1958,6 @@ function getRelatedFieldWithDefaults(parentId: string, field: any) {
1958
1958
  .popupPreviewSpreadsheet .spreadsheet{
1959
1959
  width: 100%;
1960
1960
  overflow: auto;
1961
+ height: calc(100vh - 300px);
1961
1962
  }
1962
1963
  </style>
@@ -784,9 +784,14 @@ const columnOptions = computed(() => {
784
784
  </div>
785
785
  </template>
786
786
 
787
- <style scoped>
787
+ <style>
788
788
  /* Spreadsheet container styles */
789
789
  .spreadsheet {
790
790
  user-select: none;
791
+ outline: 1px solid var(--border-color);
792
+ }
793
+
794
+ body>div:has(.spreadsheet) ::-webkit-scrollbar-track {
795
+ background: var(--input-bg) !important;
791
796
  }
792
797
  </style>
@@ -199,11 +199,33 @@ function formatCellValue(value: any, format?: ColumnConfig['format']): string {
199
199
  </template>
200
200
 
201
201
  <style scoped>
202
- .stickyTop{
202
+ .row-number{
203
203
  position: sticky;
204
- top: -0.125rem;
204
+ inset-inline-start: 0;
205
+ background: var(--bgl-gray-80);
205
206
  z-index: 1;
206
207
  }
208
+ .row-number:before{
209
+ content: '';
210
+ position: absolute;
211
+ inset: -1px;
212
+ border: 1px solid var(--border-color);
213
+ }
214
+
215
+ .stickyTop{
216
+ position: sticky;
217
+ top: 0px;
218
+ z-index: 2;
219
+
220
+ }
221
+ .stickyTop:before{
222
+ content: '1';
223
+ position: absolute;
224
+ display: block;
225
+ inset: 0;
226
+ border-bottom: 1px solid var(--border-color);
227
+ }
228
+
207
229
  .fixed-columns {
208
230
  border-right: 2px solid var(--border-color);
209
231
  }
@@ -211,12 +233,12 @@ table {
211
233
  border-collapse: collapse;
212
234
  }
213
235
  th, td {
214
- border: 1px solid var(--border-color);
215
236
  padding: 0.1rem 0.5rem;
216
237
  min-width: 80px;
217
238
  background: var(--bgl-white);
218
239
  user-select: none;
219
240
  }
241
+
220
242
  th {
221
243
  background: var(--input-bg);
222
244
  white-space: nowrap;
@@ -224,6 +246,9 @@ th {
224
246
  padding: 0.25rem 0.5rem;
225
247
  font-weight: 500;
226
248
  text-align: start;
249
+ border-bottom: 1px solid var(--border-color);
250
+ border-inline-start: 1px solid var(--border-color);
251
+
227
252
  }
228
253
  th .bgl_icon-font{
229
254
  vertical-align: middle;
@@ -239,6 +264,7 @@ td.locked.selected {
239
264
  background: var(--bgl-primary-light);
240
265
  }
241
266
  td {
267
+ border: 1px solid var(--border-color);
242
268
  height: 40px;
243
269
  vertical-align: middle;
244
270
  }
@@ -13,6 +13,7 @@ const props = withDefaults(
13
13
  firstDayOfWeek?: WEEK_START_DAY
14
14
  locale?: string
15
15
  enableTime?: boolean
16
+ highlightedDates?: (string | Date)[]
16
17
  }>(),
17
18
  {
18
19
  mode: () => ({ mode: 'day' }),
@@ -155,6 +156,27 @@ function useCalendarView() {
155
156
  return time.isTrailingOrLeadingDate(date, currentMonth.value.getMonth())
156
157
  }
157
158
 
159
+ /**
160
+ * Determines if a date should be highlighted based on the highlightedDates prop
161
+ * @param date The date to check
162
+ * @returns True if the date should be highlighted
163
+ */
164
+ const isHighlighted = (date?: Date): boolean => {
165
+ if (!date || !Array.isArray(props.highlightedDates) || !props.highlightedDates.length) {
166
+ return false
167
+ }
168
+
169
+ return props.highlightedDates.some((highlightedDate) => {
170
+ const parsedDate = parseDate(highlightedDate)
171
+ if (!parsedDate) return false
172
+
173
+ // Compare year, month, and day
174
+ return date.getFullYear() === parsedDate.getFullYear()
175
+ && date.getMonth() === parsedDate.getMonth()
176
+ && date.getDate() === parsedDate.getDate()
177
+ })
178
+ }
179
+
158
180
  return {
159
181
  currentMonthDays,
160
182
  currentMonthValue,
@@ -163,7 +185,8 @@ function useCalendarView() {
163
185
  weekDays,
164
186
  isSelected,
165
187
  isToday,
166
- isNotInMonth
188
+ isNotInMonth,
189
+ isHighlighted
167
190
  }
168
191
  }
169
192
 
@@ -247,7 +270,17 @@ function emitDateValue(date: Date) {
247
270
  }
248
271
 
249
272
  // Initialize remaining composables
250
- const { currentMonthDays, currentMonthValue, months, years, weekDays, isSelected, isToday, isNotInMonth } = useCalendarView()
273
+ const {
274
+ currentMonthDays,
275
+ currentMonthValue,
276
+ months,
277
+ years,
278
+ weekDays,
279
+ isSelected,
280
+ isToday,
281
+ isNotInMonth,
282
+ isHighlighted
283
+ } = useCalendarView()
251
284
  const { selectMonth, selectYear, previousMonth, nextMonth, previousYear, nextYear } = useNavigation()
252
285
  const { hours, minutes, handleHourInput, handleMinuteInput } = useTimeHandling()
253
286
 
@@ -314,6 +347,7 @@ function selectDate(date: Date | null) {
314
347
  'today': isToday(date),
315
348
  'disabled': isDateDisabled(date),
316
349
  'not-in-month': isNotInMonth(date),
350
+ 'highlighted': isHighlighted(date),
317
351
  }"
318
352
  :disabled="isDateDisabled(date)"
319
353
  @click="selectDate(date)"
@@ -464,4 +498,18 @@ function selectDate(date: Date | null) {
464
498
  .day.not-in-month {
465
499
  opacity: 0.4;
466
500
  }
501
+
502
+ .day.highlighted:not(.selected) {
503
+ background-color: var(--bgl-secondary-light, rgba(var(--bgl-primary-rgb, 0, 123, 255), 0.15));
504
+ font-weight: 500;
505
+ }
506
+
507
+ .day.highlighted.selected {
508
+ /* Add a subtle ring effect for dates that are both selected and highlighted */
509
+ box-shadow: 0 0 0 2px var(--bgl-secondary, rgba(var(--bgl-primary-rgb, 0, 123, 255), 0.5));
510
+ }
511
+
512
+ .day.highlighted:not(.selected):hover {
513
+ background-color: var(--bgl-secondary-light-hover, rgba(var(--bgl-primary-rgb, 0, 123, 255), 0.25));
514
+ }
467
515
  </style>
@@ -74,6 +74,7 @@ async function initEditor() {
74
74
 
75
75
  // First write the content
76
76
  doc.open()
77
+ // ! @deprecated — MDN Reference[https://developer.mozilla.org/en-US/docs/Web/API/Document/write]
77
78
  doc.write(htmlContent)
78
79
  doc.close()
79
80
 
@@ -1,4 +1,4 @@
1
- import type { Modal as BagelModal } from '@bagelink/vue'
1
+ import type { ModalApi } from '../../../../plugins/modal'
2
2
 
3
3
  export interface EditorDebuggerInstance {
4
4
  logCommand: (command: string, value: string | undefined, state: any) => void
@@ -35,7 +35,7 @@ export interface EditorState {
35
35
  redoStack: string[]
36
36
  rangeCount: number
37
37
  range: Range | null
38
- modal: BagelModal
38
+ modal: ModalApi
39
39
  debug?: EditorDebugInterface
40
40
  }
41
41
 
@@ -145,7 +145,7 @@ export function createCommandRegistry(state: EditorState): CommandRegistry {
145
145
  // Try to surround contents, if that fails use extract and insert
146
146
  try {
147
147
  range.surroundContents(span)
148
- } catch (e) {
148
+ } catch {
149
149
  // Handle selections that cross node boundaries
150
150
  const fragment = range.extractContents()
151
151
  span.appendChild(fragment)
@@ -179,7 +179,7 @@ export function createCommandRegistry(state: EditorState): CommandRegistry {
179
179
  // Try to surround contents, if that fails use extract and insert
180
180
  try {
181
181
  range.surroundContents(span)
182
- } catch (e) {
182
+ } catch {
183
183
  // Handle selections that cross node boundaries
184
184
  const fragment = range.extractContents()
185
185
  span.appendChild(fragment)
@@ -213,7 +213,7 @@ export function createCommandRegistry(state: EditorState): CommandRegistry {
213
213
  // Try to surround contents, if that fails use extract and insert
214
214
  try {
215
215
  range.surroundContents(span)
216
- } catch (e) {
216
+ } catch {
217
217
  // Handle selections that cross node boundaries
218
218
  const fragment = range.extractContents()
219
219
  span.appendChild(fragment)
@@ -10,7 +10,7 @@ interface LayoutProrps {
10
10
  }
11
11
 
12
12
  const props = withDefaults(defineProps<LayoutProrps>(), {
13
- gap: 1,
13
+ gap: 0.5,
14
14
  h100: false,
15
15
  columns: () => ([]),
16
16
  rows: () => ([]),
@@ -60,13 +60,13 @@ const youtubeRegex = /youtube\.com|youtu\.be/
60
60
  const vimeoRegex = /vimeo\.com/
61
61
 
62
62
  function urlToName(url: string): string {
63
- if (!url) return ''
63
+ if (!url || typeof url !== 'string') return ''
64
64
  const name = url.split('/').pop() || ''
65
65
  return name.replace(/\.[^/.]+$/, '')
66
66
  }
67
67
 
68
- function determineFileType(url: string): string {
69
- if (!url) return 'unknown'
68
+ function determineFileType(url: any): string {
69
+ if (typeof url !== 'string' || !url) return 'unknown'
70
70
  const extension = (url.split('.').pop() || '').toLowerCase()
71
71
  const altExtension = url.split('?')[0].split('.').pop()?.toLowerCase() || ''
72
72
  if (IMAGE_FORMATS_REGEXP.test(extension) || IMAGE_FORMATS_REGEXP.test(altExtension)) return 'image'
@@ -100,18 +100,11 @@ export type BglFieldT<T> = Field<T>
100
100
 
101
101
  export type BglFormSchemaT<T> = Field<T>[]
102
102
 
103
- // export type InputBagelField<T> = Field<T> & {
104
- // $el: 'text' | ComponentExposed<typeof TextInput>
105
- // type?: string
106
- // }
107
103
  export interface InputBagelField<T, P extends Path<T>> extends BaseBagelField<T, P> {
108
104
  $el: 'text' | ComponentExposed<typeof TextInput>
109
105
  type?: string
110
106
  }
111
107
 
112
- // export type SelectBagelField<T> = Field<T> & {
113
- // $el: 'select' | ComponentExposed<typeof SelectInput>
114
- // }
115
108
  export interface SelectBagelField<T, P extends Path<T>> extends BaseBagelField<T, P> {
116
109
  $el: 'select' | ComponentExposed<typeof SelectInput>
117
110
  type?: string
@@ -1,89 +0,0 @@
1
- type Easing = 'ease-in-out' | 'ease-in' | 'ease-out' | 'linear';
2
- type AutoplayMode = 'disabled' | 'standard' | 'linear';
3
- type AutoplayValue = boolean | AutoplayMode;
4
- interface CarouselOptions {
5
- duration?: number;
6
- easing?: Easing;
7
- perPage?: number | {
8
- [key: number]: number;
9
- };
10
- startIndex?: number;
11
- draggable?: boolean;
12
- multipleDrag?: boolean;
13
- threshold?: number;
14
- loop?: boolean;
15
- rtl?: boolean;
16
- autoplay?: AutoplayValue;
17
- autoplayInterval?: number;
18
- autoplaySpeed?: number;
19
- pauseOnHover?: boolean;
20
- dots?: boolean;
21
- slideWidth?: number;
22
- onInit?: () => void;
23
- onChange?: () => void;
24
- }
25
- declare function prev(howManySlides?: number): void;
26
- declare function next(howManySlides?: number): void;
27
- declare function goTo(index: number): void;
28
- declare function remove(index: number): void;
29
- declare function insert(item: Element, index: number): void;
30
- declare function prepend(item: Element): void;
31
- declare function append(item: Element): void;
32
- declare function destroy(restoreMarkup?: boolean): void;
33
- declare function pauseAutoplay(): void;
34
- declare function resumeAutoplay(): void;
35
- declare function __VLS_template(): {
36
- attrs: Partial<{}>;
37
- slots: {
38
- default?(_: {}): any;
39
- };
40
- refs: {
41
- carouselRef: HTMLDivElement;
42
- };
43
- rootEl: HTMLDivElement;
44
- };
45
- type __VLS_TemplateResult = ReturnType<typeof __VLS_template>;
46
- declare const __VLS_component: import('vue').DefineComponent<CarouselOptions, {
47
- prev: typeof prev;
48
- next: typeof next;
49
- goTo: typeof goTo;
50
- remove: typeof remove;
51
- insert: typeof insert;
52
- prepend: typeof prepend;
53
- append: typeof append;
54
- destroy: typeof destroy;
55
- currentSlide: import('vue').Ref<number, number>;
56
- pauseAutoplay: typeof pauseAutoplay;
57
- resumeAutoplay: typeof resumeAutoplay;
58
- }, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {} & {
59
- change: () => any;
60
- init: () => any;
61
- }, string, import('vue').PublicProps, Readonly<CarouselOptions> & Readonly<{
62
- onChange?: (() => any) | undefined;
63
- onInit?: (() => any) | undefined;
64
- }>, {
65
- autoplay: AutoplayValue;
66
- loop: boolean;
67
- duration: number;
68
- easing: Easing;
69
- startIndex: number;
70
- draggable: boolean;
71
- multipleDrag: boolean;
72
- threshold: number;
73
- rtl: boolean;
74
- autoplayInterval: number;
75
- autoplaySpeed: number;
76
- pauseOnHover: boolean;
77
- dots: boolean;
78
- slideWidth: number;
79
- }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {
80
- carouselRef: HTMLDivElement;
81
- }, HTMLDivElement>;
82
- declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
83
- export default _default;
84
- type __VLS_WithTemplateSlots<T, S> = T & {
85
- new (): {
86
- $slots: S;
87
- };
88
- };
89
- //# sourceMappingURL=Carousel2.vue.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Carousel2.vue.d.ts","sourceRoot":"","sources":["../../src/components/Carousel2.vue"],"names":[],"mappings":"AAy/BA,KAAK,MAAM,GAAG,aAAa,GAAG,SAAS,GAAG,UAAU,GAAG,QAAQ,CAAA;AAC/D,KAAK,YAAY,GAAG,UAAU,GAAG,UAAU,GAAG,QAAQ,CAAA;AACtD,KAAK,aAAa,GAAG,OAAO,GAAG,YAAY,CAAA;AAE3C,UAAU,eAAe;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,OAAO,CAAC,EAAE,MAAM,GAAG;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAA;IAC5C,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,GAAG,CAAC,EAAE,OAAO,CAAA;IACb,QAAQ,CAAC,EAAE,aAAa,CAAA;IACxB,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,MAAM,CAAC,EAAE,MAAM,IAAI,CAAA;IACnB,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAA;CACrB;AAkWD,iBAAS,IAAI,CAAC,aAAa,GAAE,MAAU,GAAG,IAAI,CAmC7C;AAED,iBAAS,IAAI,CAAC,aAAa,GAAE,MAAU,GAAG,IAAI,CAmC7C;AAED,iBAAS,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAejC;AA+SD,iBAAS,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAenC;AAED,iBAAS,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAkBlD;AAED,iBAAS,OAAO,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAEpC;AAED,iBAAS,MAAM,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAEnC;AAED,iBAAS,OAAO,CAAC,aAAa,GAAE,OAAe,GAAG,IAAI,CAkBrD;AAqGD,iBAAS,aAAa,IAAI,IAAI,CAE7B;AAED,iBAAS,cAAc,IAAI,IAAI,CAI9B;AAgDD,iBAAS,cAAc;WAyDT,OAAO,IAA6B;;yBAXrB,GAAG;;;;;;EAgB/B;AAcD,KAAK,oBAAoB,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC;AAC9D,QAAA,MAAM,eAAe;;;;;;;;;;;;;;;;;;;cA3hCT,aAAa;UAFjB,OAAO;cAPH,MAAM;YACR,MAAM;gBAEF,MAAM;eACP,OAAO;kBACJ,OAAO;eACV,MAAM;SAEZ,OAAO;sBAEM,MAAM;mBACT,MAAM;kBACP,OAAO;UACf,OAAO;gBACD,MAAM;;;kBAiiClB,CAAC;wBACkB,uBAAuB,CAAC,OAAO,eAAe,EAAE,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAAnG,wBAAoG;AAapG,KAAK,uBAAuB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;IACxC,QAAO;QACN,MAAM,EAAE,CAAC,CAAC;KAEV,CAAA;CACD,CAAC"}