tyrell-components 1.0.0-TC7
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/LICENSE +21 -0
- package/README.md +221 -0
- package/css/tyrell.css +1783 -0
- package/dist/tyrell.css +1783 -0
- package/dist/tyrell.js +2 -0
- package/lib/base/ty-component.d.ts +133 -0
- package/lib/base/ty-component.d.ts.map +1 -0
- package/lib/base/ty-component.js +297 -0
- package/lib/base/ty-component.js.map +1 -0
- package/lib/components/button.d.ts +126 -0
- package/lib/components/button.d.ts.map +1 -0
- package/lib/components/button.js +244 -0
- package/lib/components/button.js.map +1 -0
- package/lib/components/calendar-month.d.ts +132 -0
- package/lib/components/calendar-month.d.ts.map +1 -0
- package/lib/components/calendar-month.js +440 -0
- package/lib/components/calendar-month.js.map +1 -0
- package/lib/components/calendar-navigation.d.ts +137 -0
- package/lib/components/calendar-navigation.d.ts.map +1 -0
- package/lib/components/calendar-navigation.js +366 -0
- package/lib/components/calendar-navigation.js.map +1 -0
- package/lib/components/calendar.d.ts +166 -0
- package/lib/components/calendar.d.ts.map +1 -0
- package/lib/components/calendar.js +774 -0
- package/lib/components/calendar.js.map +1 -0
- package/lib/components/checkbox.d.ts +189 -0
- package/lib/components/checkbox.d.ts.map +1 -0
- package/lib/components/checkbox.js +400 -0
- package/lib/components/checkbox.js.map +1 -0
- package/lib/components/copy.d.ts +180 -0
- package/lib/components/copy.d.ts.map +1 -0
- package/lib/components/copy.js +393 -0
- package/lib/components/copy.js.map +1 -0
- package/lib/components/date-picker.d.ts +379 -0
- package/lib/components/date-picker.d.ts.map +1 -0
- package/lib/components/date-picker.js +1586 -0
- package/lib/components/date-picker.js.map +1 -0
- package/lib/components/dropdown.d.ts +402 -0
- package/lib/components/dropdown.d.ts.map +1 -0
- package/lib/components/dropdown.js +1564 -0
- package/lib/components/dropdown.js.map +1 -0
- package/lib/components/icon.d.ts +107 -0
- package/lib/components/icon.d.ts.map +1 -0
- package/lib/components/icon.js +230 -0
- package/lib/components/icon.js.map +1 -0
- package/lib/components/input.d.ts +270 -0
- package/lib/components/input.d.ts.map +1 -0
- package/lib/components/input.js +721 -0
- package/lib/components/input.js.map +1 -0
- package/lib/components/modal.d.ts +58 -0
- package/lib/components/modal.d.ts.map +1 -0
- package/lib/components/modal.js +473 -0
- package/lib/components/modal.js.map +1 -0
- package/lib/components/multiselect.d.ts +397 -0
- package/lib/components/multiselect.d.ts.map +1 -0
- package/lib/components/multiselect.js +1580 -0
- package/lib/components/multiselect.js.map +1 -0
- package/lib/components/option.d.ts +66 -0
- package/lib/components/option.d.ts.map +1 -0
- package/lib/components/option.js +314 -0
- package/lib/components/option.js.map +1 -0
- package/lib/components/popup.d.ts +43 -0
- package/lib/components/popup.d.ts.map +1 -0
- package/lib/components/popup.js +380 -0
- package/lib/components/popup.js.map +1 -0
- package/lib/components/radio.d.ts +198 -0
- package/lib/components/radio.d.ts.map +1 -0
- package/lib/components/radio.js +437 -0
- package/lib/components/radio.js.map +1 -0
- package/lib/components/resize-observer.d.ts +48 -0
- package/lib/components/resize-observer.d.ts.map +1 -0
- package/lib/components/resize-observer.js +108 -0
- package/lib/components/resize-observer.js.map +1 -0
- package/lib/components/scroll-container.d.ts +51 -0
- package/lib/components/scroll-container.d.ts.map +1 -0
- package/lib/components/scroll-container.js +239 -0
- package/lib/components/scroll-container.js.map +1 -0
- package/lib/components/step.d.ts +26 -0
- package/lib/components/step.d.ts.map +1 -0
- package/lib/components/step.js +75 -0
- package/lib/components/step.js.map +1 -0
- package/lib/components/switch.d.ts +111 -0
- package/lib/components/switch.d.ts.map +1 -0
- package/lib/components/switch.js +240 -0
- package/lib/components/switch.js.map +1 -0
- package/lib/components/tab.d.ts +23 -0
- package/lib/components/tab.d.ts.map +1 -0
- package/lib/components/tab.js +76 -0
- package/lib/components/tab.js.map +1 -0
- package/lib/components/tabs.d.ts +93 -0
- package/lib/components/tabs.d.ts.map +1 -0
- package/lib/components/tabs.js +653 -0
- package/lib/components/tabs.js.map +1 -0
- package/lib/components/tag.d.ts +144 -0
- package/lib/components/tag.d.ts.map +1 -0
- package/lib/components/tag.js +314 -0
- package/lib/components/tag.js.map +1 -0
- package/lib/components/textarea.d.ts +241 -0
- package/lib/components/textarea.d.ts.map +1 -0
- package/lib/components/textarea.js +585 -0
- package/lib/components/textarea.js.map +1 -0
- package/lib/components/tooltip.d.ts +40 -0
- package/lib/components/tooltip.d.ts.map +1 -0
- package/lib/components/tooltip.js +439 -0
- package/lib/components/tooltip.js.map +1 -0
- package/lib/components/wizard.d.ts +86 -0
- package/lib/components/wizard.d.ts.map +1 -0
- package/lib/components/wizard.js +636 -0
- package/lib/components/wizard.js.map +1 -0
- package/lib/icons/fontawesome/brands.d.ts +557 -0
- package/lib/icons/fontawesome/brands.d.ts.map +1 -0
- package/lib/icons/fontawesome/brands.js +557 -0
- package/lib/icons/fontawesome/brands.js.map +1 -0
- package/lib/icons/fontawesome/regular.d.ts +281 -0
- package/lib/icons/fontawesome/regular.d.ts.map +1 -0
- package/lib/icons/fontawesome/regular.js +281 -0
- package/lib/icons/fontawesome/regular.js.map +1 -0
- package/lib/icons/fontawesome/solid.d.ts +1992 -0
- package/lib/icons/fontawesome/solid.d.ts.map +1 -0
- package/lib/icons/fontawesome/solid.js +1992 -0
- package/lib/icons/fontawesome/solid.js.map +1 -0
- package/lib/icons/heroicons/micro.d.ts +324 -0
- package/lib/icons/heroicons/micro.d.ts.map +1 -0
- package/lib/icons/heroicons/micro.js +1032 -0
- package/lib/icons/heroicons/micro.js.map +1 -0
- package/lib/icons/heroicons/mini.d.ts +332 -0
- package/lib/icons/heroicons/mini.d.ts.map +1 -0
- package/lib/icons/heroicons/mini.js +1038 -0
- package/lib/icons/heroicons/mini.js.map +1 -0
- package/lib/icons/heroicons/outline.d.ts +332 -0
- package/lib/icons/heroicons/outline.d.ts.map +1 -0
- package/lib/icons/heroicons/outline.js +993 -0
- package/lib/icons/heroicons/outline.js.map +1 -0
- package/lib/icons/heroicons/solid.d.ts +332 -0
- package/lib/icons/heroicons/solid.d.ts.map +1 -0
- package/lib/icons/heroicons/solid.js +1063 -0
- package/lib/icons/heroicons/solid.js.map +1 -0
- package/lib/icons/lucide.d.ts +1872 -0
- package/lib/icons/lucide.d.ts.map +1 -0
- package/lib/icons/lucide.js +28212 -0
- package/lib/icons/lucide.js.map +1 -0
- package/lib/icons/material/filled.d.ts +2180 -0
- package/lib/icons/material/filled.d.ts.map +1 -0
- package/lib/icons/material/filled.js +14003 -0
- package/lib/icons/material/filled.js.map +1 -0
- package/lib/icons/material/outlined.d.ts +2142 -0
- package/lib/icons/material/outlined.d.ts.map +1 -0
- package/lib/icons/material/outlined.js +14545 -0
- package/lib/icons/material/outlined.js.map +1 -0
- package/lib/icons/material/round.d.ts +2147 -0
- package/lib/icons/material/round.d.ts.map +1 -0
- package/lib/icons/material/round.js +14779 -0
- package/lib/icons/material/round.js.map +1 -0
- package/lib/icons/material/sharp.d.ts +2147 -0
- package/lib/icons/material/sharp.d.ts.map +1 -0
- package/lib/icons/material/sharp.js +14189 -0
- package/lib/icons/material/sharp.js.map +1 -0
- package/lib/icons/material/two-tone.d.ts +2185 -0
- package/lib/icons/material/two-tone.d.ts.map +1 -0
- package/lib/icons/material/two-tone.js +17152 -0
- package/lib/icons/material/two-tone.js.map +1 -0
- package/lib/index.d.ts +78 -0
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +71 -0
- package/lib/index.js.map +1 -0
- package/lib/styles/button.d.ts +14 -0
- package/lib/styles/button.d.ts.map +1 -0
- package/lib/styles/button.js +457 -0
- package/lib/styles/button.js.map +1 -0
- package/lib/styles/calendar-month.d.ts +6 -0
- package/lib/styles/calendar-month.d.ts.map +1 -0
- package/lib/styles/calendar-month.js +229 -0
- package/lib/styles/calendar-month.js.map +1 -0
- package/lib/styles/calendar-navigation.d.ts +6 -0
- package/lib/styles/calendar-navigation.d.ts.map +1 -0
- package/lib/styles/calendar-navigation.js +125 -0
- package/lib/styles/calendar-navigation.js.map +1 -0
- package/lib/styles/calendar.d.ts +6 -0
- package/lib/styles/calendar.d.ts.map +1 -0
- package/lib/styles/calendar.js +28 -0
- package/lib/styles/calendar.js.map +1 -0
- package/lib/styles/checkbox.d.ts +9 -0
- package/lib/styles/checkbox.d.ts.map +1 -0
- package/lib/styles/checkbox.js +19 -0
- package/lib/styles/checkbox.js.map +1 -0
- package/lib/styles/copy.d.ts +7 -0
- package/lib/styles/copy.d.ts.map +1 -0
- package/lib/styles/copy.js +94 -0
- package/lib/styles/copy.js.map +1 -0
- package/lib/styles/custom-scrollbar.d.ts +6 -0
- package/lib/styles/custom-scrollbar.d.ts.map +1 -0
- package/lib/styles/custom-scrollbar.js +157 -0
- package/lib/styles/custom-scrollbar.js.map +1 -0
- package/lib/styles/date-picker.d.ts +6 -0
- package/lib/styles/date-picker.d.ts.map +1 -0
- package/lib/styles/date-picker.js +400 -0
- package/lib/styles/date-picker.js.map +1 -0
- package/lib/styles/dropdown.d.ts +12 -0
- package/lib/styles/dropdown.d.ts.map +1 -0
- package/lib/styles/dropdown.js +983 -0
- package/lib/styles/dropdown.js.map +1 -0
- package/lib/styles/icon.d.ts +6 -0
- package/lib/styles/icon.d.ts.map +1 -0
- package/lib/styles/icon.js +231 -0
- package/lib/styles/icon.js.map +1 -0
- package/lib/styles/input.d.ts +7 -0
- package/lib/styles/input.d.ts.map +1 -0
- package/lib/styles/input.js +685 -0
- package/lib/styles/input.js.map +1 -0
- package/lib/styles/modal.d.ts +8 -0
- package/lib/styles/modal.d.ts.map +1 -0
- package/lib/styles/modal.js +134 -0
- package/lib/styles/modal.js.map +1 -0
- package/lib/styles/multiselect.d.ts +6 -0
- package/lib/styles/multiselect.d.ts.map +1 -0
- package/lib/styles/multiselect.js +774 -0
- package/lib/styles/multiselect.js.map +1 -0
- package/lib/styles/option.d.ts +6 -0
- package/lib/styles/option.d.ts.map +1 -0
- package/lib/styles/option.js +116 -0
- package/lib/styles/option.js.map +1 -0
- package/lib/styles/popup.d.ts +8 -0
- package/lib/styles/popup.d.ts.map +1 -0
- package/lib/styles/popup.js +95 -0
- package/lib/styles/popup.js.map +1 -0
- package/lib/styles/radio.d.ts +8 -0
- package/lib/styles/radio.d.ts.map +1 -0
- package/lib/styles/radio.js +160 -0
- package/lib/styles/radio.js.map +1 -0
- package/lib/styles/resize-observer.d.ts +6 -0
- package/lib/styles/resize-observer.d.ts.map +1 -0
- package/lib/styles/resize-observer.js +18 -0
- package/lib/styles/resize-observer.js.map +1 -0
- package/lib/styles/scroll-container.d.ts +6 -0
- package/lib/styles/scroll-container.d.ts.map +1 -0
- package/lib/styles/scroll-container.js +198 -0
- package/lib/styles/scroll-container.js.map +1 -0
- package/lib/styles/step.d.ts +5 -0
- package/lib/styles/step.d.ts.map +1 -0
- package/lib/styles/step.js +50 -0
- package/lib/styles/step.js.map +1 -0
- package/lib/styles/switch.d.ts +9 -0
- package/lib/styles/switch.d.ts.map +1 -0
- package/lib/styles/switch.js +100 -0
- package/lib/styles/switch.js.map +1 -0
- package/lib/styles/tab.d.ts +5 -0
- package/lib/styles/tab.d.ts.map +1 -0
- package/lib/styles/tab.js +51 -0
- package/lib/styles/tab.js.map +1 -0
- package/lib/styles/tabs.d.ts +13 -0
- package/lib/styles/tabs.d.ts.map +1 -0
- package/lib/styles/tabs.js +184 -0
- package/lib/styles/tabs.js.map +1 -0
- package/lib/styles/tag.d.ts +6 -0
- package/lib/styles/tag.d.ts.map +1 -0
- package/lib/styles/tag.js +415 -0
- package/lib/styles/tag.js.map +1 -0
- package/lib/styles/textarea.d.ts +6 -0
- package/lib/styles/textarea.d.ts.map +1 -0
- package/lib/styles/textarea.js +350 -0
- package/lib/styles/textarea.js.map +1 -0
- package/lib/styles/tooltip.d.ts +9 -0
- package/lib/styles/tooltip.d.ts.map +1 -0
- package/lib/styles/tooltip.js +136 -0
- package/lib/styles/tooltip.js.map +1 -0
- package/lib/styles/wizard.d.ts +25 -0
- package/lib/styles/wizard.d.ts.map +1 -0
- package/lib/styles/wizard.js +325 -0
- package/lib/styles/wizard.js.map +1 -0
- package/lib/types/common.d.ts +143 -0
- package/lib/types/common.d.ts.map +1 -0
- package/lib/types/common.js +5 -0
- package/lib/types/common.js.map +1 -0
- package/lib/utils/calendar-utils.d.ts +176 -0
- package/lib/utils/calendar-utils.d.ts.map +1 -0
- package/lib/utils/calendar-utils.js +370 -0
- package/lib/utils/calendar-utils.js.map +1 -0
- package/lib/utils/custom-scrollbar.d.ts +82 -0
- package/lib/utils/custom-scrollbar.d.ts.map +1 -0
- package/lib/utils/custom-scrollbar.js +320 -0
- package/lib/utils/custom-scrollbar.js.map +1 -0
- package/lib/utils/icon-registry.d.ts +78 -0
- package/lib/utils/icon-registry.d.ts.map +1 -0
- package/lib/utils/icon-registry.js +304 -0
- package/lib/utils/icon-registry.js.map +1 -0
- package/lib/utils/locale.d.ts +136 -0
- package/lib/utils/locale.d.ts.map +1 -0
- package/lib/utils/locale.js +213 -0
- package/lib/utils/locale.js.map +1 -0
- package/lib/utils/mobile.d.ts +14 -0
- package/lib/utils/mobile.d.ts.map +1 -0
- package/lib/utils/mobile.js +21 -0
- package/lib/utils/mobile.js.map +1 -0
- package/lib/utils/number-format.d.ts +83 -0
- package/lib/utils/number-format.d.ts.map +1 -0
- package/lib/utils/number-format.js +143 -0
- package/lib/utils/number-format.js.map +1 -0
- package/lib/utils/parse-boolean.d.ts +39 -0
- package/lib/utils/parse-boolean.d.ts.map +1 -0
- package/lib/utils/parse-boolean.js +58 -0
- package/lib/utils/parse-boolean.js.map +1 -0
- package/lib/utils/positioning.d.ts +143 -0
- package/lib/utils/positioning.d.ts.map +1 -0
- package/lib/utils/positioning.js +308 -0
- package/lib/utils/positioning.js.map +1 -0
- package/lib/utils/property-capture.d.ts +132 -0
- package/lib/utils/property-capture.d.ts.map +1 -0
- package/lib/utils/property-capture.js +152 -0
- package/lib/utils/property-capture.js.map +1 -0
- package/lib/utils/property-manager.d.ts +90 -0
- package/lib/utils/property-manager.d.ts.map +1 -0
- package/lib/utils/property-manager.js +197 -0
- package/lib/utils/property-manager.js.map +1 -0
- package/lib/utils/resize-observer.d.ts +42 -0
- package/lib/utils/resize-observer.d.ts.map +1 -0
- package/lib/utils/resize-observer.js +71 -0
- package/lib/utils/resize-observer.js.map +1 -0
- package/lib/utils/scroll-lock.d.ts +79 -0
- package/lib/utils/scroll-lock.d.ts.map +1 -0
- package/lib/utils/scroll-lock.js +197 -0
- package/lib/utils/scroll-lock.js.map +1 -0
- package/lib/utils/styles.d.ts +27 -0
- package/lib/utils/styles.d.ts.map +1 -0
- package/lib/utils/styles.js +53 -0
- package/lib/utils/styles.js.map +1 -0
- package/lib/version.d.ts +8 -0
- package/lib/version.d.ts.map +1 -0
- package/lib/version.js +11 -0
- package/lib/version.js.map +1 -0
- package/package.json +159 -0
|
@@ -0,0 +1,440 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TyCalendarMonth Web Component
|
|
3
|
+
* PORTED FROM: cljs/ty/components/calendar_month.cljs
|
|
4
|
+
*
|
|
5
|
+
* A stateless, property-driven calendar month renderer with customizable
|
|
6
|
+
* day content and styling.
|
|
7
|
+
*
|
|
8
|
+
* Features:
|
|
9
|
+
* - 42-day grid (6 weeks × 7 days) with Monday-first ordering
|
|
10
|
+
* - Localized weekday headers
|
|
11
|
+
* - Custom day content rendering via dayContentFn
|
|
12
|
+
* - Custom day classes via dayClassesFn
|
|
13
|
+
* - Custom CSS injection via customCSS
|
|
14
|
+
* - Responsive width system (width, minWidth, maxWidth)
|
|
15
|
+
* - Rich day-click events with full context
|
|
16
|
+
*
|
|
17
|
+
* @example
|
|
18
|
+
* ```html
|
|
19
|
+
* <!-- Basic usage -->
|
|
20
|
+
* <ty-calendar-month
|
|
21
|
+
* display-year="2025"
|
|
22
|
+
* display-month="10"
|
|
23
|
+
* locale="en-US">
|
|
24
|
+
* </ty-calendar-month>
|
|
25
|
+
*
|
|
26
|
+
* <!-- With custom rendering -->
|
|
27
|
+
* <ty-calendar-month id="custom"></ty-calendar-month>
|
|
28
|
+
* <script type="module">
|
|
29
|
+
* const cal = document.getElementById('custom');
|
|
30
|
+
* cal.dayContentFn = (ctx) => {
|
|
31
|
+
* const el = document.createElement('div');
|
|
32
|
+
* el.textContent = ctx.dayInMonth;
|
|
33
|
+
* return el;
|
|
34
|
+
* };
|
|
35
|
+
* </script>
|
|
36
|
+
* ```
|
|
37
|
+
*/
|
|
38
|
+
import { ensureStyles } from '../utils/styles.js';
|
|
39
|
+
import { calendarMonthStyles } from '../styles/calendar-month.js';
|
|
40
|
+
import { getCalendarMonthDays, getLocalizedWeekdays } from '../utils/calendar-utils.js';
|
|
41
|
+
import { getEffectiveLocale, observeLocaleChanges } from '../utils/locale.js';
|
|
42
|
+
// ============================================================================
|
|
43
|
+
// Default Render Functions
|
|
44
|
+
// ============================================================================
|
|
45
|
+
/**
|
|
46
|
+
* Default day content renderer - just the day number
|
|
47
|
+
*/
|
|
48
|
+
function defaultDayContent(dayContext) {
|
|
49
|
+
return dayContext.dayInMonth.toString();
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Default day classes based on day context
|
|
53
|
+
*/
|
|
54
|
+
function getDefaultDayClasses(dayContext) {
|
|
55
|
+
const classes = ['calendar-day'];
|
|
56
|
+
if (dayContext.today)
|
|
57
|
+
classes.push('today');
|
|
58
|
+
if (dayContext.weekend)
|
|
59
|
+
classes.push('weekend');
|
|
60
|
+
if (dayContext.otherMonth)
|
|
61
|
+
classes.push('other-month');
|
|
62
|
+
if (dayContext.isSelected)
|
|
63
|
+
classes.push('selected');
|
|
64
|
+
return classes;
|
|
65
|
+
}
|
|
66
|
+
// ============================================================================
|
|
67
|
+
// Helper Functions
|
|
68
|
+
// ============================================================================
|
|
69
|
+
/**
|
|
70
|
+
* Check if value is a DOM element
|
|
71
|
+
*/
|
|
72
|
+
function isDOMElement(value) {
|
|
73
|
+
return value instanceof HTMLElement;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Normalize size value - add 'px' if just a number
|
|
77
|
+
*/
|
|
78
|
+
function normalizeSizeValue(value) {
|
|
79
|
+
if (!value || value === '')
|
|
80
|
+
return null;
|
|
81
|
+
const strValue = String(value);
|
|
82
|
+
// If it's just a number, add 'px'
|
|
83
|
+
if (/^\d+(\.\d+)?$/.test(strValue)) {
|
|
84
|
+
return `${strValue}px`;
|
|
85
|
+
}
|
|
86
|
+
// Otherwise use as-is (supports %, rem, vw, etc.)
|
|
87
|
+
return strValue;
|
|
88
|
+
}
|
|
89
|
+
// ============================================================================
|
|
90
|
+
// Component Implementation
|
|
91
|
+
// ============================================================================
|
|
92
|
+
/**
|
|
93
|
+
* TyCalendarMonth Web Component
|
|
94
|
+
*/
|
|
95
|
+
export class TyCalendarMonth extends HTMLElement {
|
|
96
|
+
/**
|
|
97
|
+
* Observed attributes (minimal - mainly for debugging)
|
|
98
|
+
* Properties are the primary API
|
|
99
|
+
*/
|
|
100
|
+
static get observedAttributes() {
|
|
101
|
+
return ['locale', 'size'];
|
|
102
|
+
}
|
|
103
|
+
constructor() {
|
|
104
|
+
super();
|
|
105
|
+
this._locale = 'en-US';
|
|
106
|
+
this._size = 'md';
|
|
107
|
+
// Initialize with current date
|
|
108
|
+
const today = new Date();
|
|
109
|
+
this._displayYear = today.getFullYear();
|
|
110
|
+
this._displayMonth = today.getMonth() + 1; // 1-based month
|
|
111
|
+
this.attachShadow({ mode: 'open' });
|
|
112
|
+
}
|
|
113
|
+
// ==========================================================================
|
|
114
|
+
// Lifecycle Methods
|
|
115
|
+
// ==========================================================================
|
|
116
|
+
connectedCallback() {
|
|
117
|
+
// Set defaults if not already set
|
|
118
|
+
if (!this._displayMonth) {
|
|
119
|
+
this._displayMonth = new Date().getMonth() + 1;
|
|
120
|
+
}
|
|
121
|
+
if (!this._displayYear) {
|
|
122
|
+
this._displayYear = new Date().getFullYear();
|
|
123
|
+
}
|
|
124
|
+
if (!this._locale) {
|
|
125
|
+
this._locale = this.getAttribute('locale') || 'en-US';
|
|
126
|
+
}
|
|
127
|
+
// Read size attribute if present
|
|
128
|
+
const sizeAttr = this.getAttribute('size');
|
|
129
|
+
if (sizeAttr && (sizeAttr === 'sm' || sizeAttr === 'md' || sizeAttr === 'lg')) {
|
|
130
|
+
this._size = sizeAttr;
|
|
131
|
+
}
|
|
132
|
+
// Check for dayContentFn set before upgrade
|
|
133
|
+
const plainDayContentFn = this.dayContentFn;
|
|
134
|
+
if (plainDayContentFn && !this._dayContentFn) {
|
|
135
|
+
this._dayContentFn = plainDayContentFn;
|
|
136
|
+
delete this.dayContentFn; // Clean up plain property
|
|
137
|
+
}
|
|
138
|
+
// Check for customCSS set before upgrade
|
|
139
|
+
const plainCustomCSS = this.customCSS;
|
|
140
|
+
if (plainCustomCSS && !this._customCSS) {
|
|
141
|
+
this._customCSS = plainCustomCSS;
|
|
142
|
+
delete this.customCSS; // Clean up plain property
|
|
143
|
+
}
|
|
144
|
+
// Setup locale observer to watch for ancestor lang changes
|
|
145
|
+
this._localeObserver = observeLocaleChanges(this, () => {
|
|
146
|
+
this.render();
|
|
147
|
+
});
|
|
148
|
+
this.render();
|
|
149
|
+
}
|
|
150
|
+
disconnectedCallback() {
|
|
151
|
+
// Cleanup locale observer
|
|
152
|
+
if (this._localeObserver) {
|
|
153
|
+
this._localeObserver();
|
|
154
|
+
this._localeObserver = undefined;
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
attributeChangedCallback(name, _oldValue, newValue) {
|
|
158
|
+
if (name === 'locale') {
|
|
159
|
+
this._locale = newValue || 'en-US';
|
|
160
|
+
this.render();
|
|
161
|
+
}
|
|
162
|
+
else if (name === 'size') {
|
|
163
|
+
if (newValue === 'sm' || newValue === 'md' || newValue === 'lg') {
|
|
164
|
+
this._size = newValue;
|
|
165
|
+
this.render();
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
// ==========================================================================
|
|
170
|
+
// Property Getters/Setters
|
|
171
|
+
// ==========================================================================
|
|
172
|
+
get displayYear() {
|
|
173
|
+
return this._displayYear;
|
|
174
|
+
}
|
|
175
|
+
set displayYear(value) {
|
|
176
|
+
if (this._displayYear !== value) {
|
|
177
|
+
this._displayYear = value;
|
|
178
|
+
this.render();
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
get displayMonth() {
|
|
182
|
+
return this._displayMonth;
|
|
183
|
+
}
|
|
184
|
+
set displayMonth(value) {
|
|
185
|
+
if (this._displayMonth !== value) {
|
|
186
|
+
this._displayMonth = value;
|
|
187
|
+
this.render();
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
get locale() {
|
|
191
|
+
return getEffectiveLocale(this, this.getAttribute('locale'));
|
|
192
|
+
}
|
|
193
|
+
set locale(value) {
|
|
194
|
+
if (this._locale !== value) {
|
|
195
|
+
this._locale = value;
|
|
196
|
+
this.render();
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
get size() {
|
|
200
|
+
return this._size;
|
|
201
|
+
}
|
|
202
|
+
set size(value) {
|
|
203
|
+
if (this._size !== value) {
|
|
204
|
+
this._size = value;
|
|
205
|
+
this.render();
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
get width() {
|
|
209
|
+
return this._width;
|
|
210
|
+
}
|
|
211
|
+
set width(value) {
|
|
212
|
+
if (this._width !== value) {
|
|
213
|
+
this._width = value;
|
|
214
|
+
this.applyWidthProperties();
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
get minWidth() {
|
|
218
|
+
return this._minWidth;
|
|
219
|
+
}
|
|
220
|
+
set minWidth(value) {
|
|
221
|
+
if (this._minWidth !== value) {
|
|
222
|
+
this._minWidth = value;
|
|
223
|
+
this.applyWidthProperties();
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
get maxWidth() {
|
|
227
|
+
return this._maxWidth;
|
|
228
|
+
}
|
|
229
|
+
set maxWidth(value) {
|
|
230
|
+
if (this._maxWidth !== value) {
|
|
231
|
+
this._maxWidth = value;
|
|
232
|
+
this.applyWidthProperties();
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
get dayContentFn() {
|
|
236
|
+
return this._dayContentFn;
|
|
237
|
+
}
|
|
238
|
+
set dayContentFn(fn) {
|
|
239
|
+
if (this._dayContentFn !== fn) {
|
|
240
|
+
this._dayContentFn = fn;
|
|
241
|
+
this.render();
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
get customCSS() {
|
|
245
|
+
return this._customCSS;
|
|
246
|
+
}
|
|
247
|
+
set customCSS(sheet) {
|
|
248
|
+
if (this._customCSS !== sheet) {
|
|
249
|
+
this._customCSS = sheet;
|
|
250
|
+
this.applyCustomCSS();
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
get value() {
|
|
254
|
+
return this._value;
|
|
255
|
+
}
|
|
256
|
+
set value(timestamp) {
|
|
257
|
+
const newValue = timestamp ?? undefined;
|
|
258
|
+
if (this._value !== newValue) {
|
|
259
|
+
this._value = newValue;
|
|
260
|
+
this.render();
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
// ==========================================================================
|
|
264
|
+
// Width Property System
|
|
265
|
+
// ==========================================================================
|
|
266
|
+
/**
|
|
267
|
+
* Apply width-related properties as CSS custom properties
|
|
268
|
+
*/
|
|
269
|
+
applyWidthProperties() {
|
|
270
|
+
const normalizedWidth = normalizeSizeValue(this._width);
|
|
271
|
+
const normalizedMinWidth = normalizeSizeValue(this._minWidth);
|
|
272
|
+
const normalizedMaxWidth = normalizeSizeValue(this._maxWidth);
|
|
273
|
+
if (normalizedWidth) {
|
|
274
|
+
this.style.setProperty('--calendar-width', normalizedWidth);
|
|
275
|
+
}
|
|
276
|
+
else {
|
|
277
|
+
this.style.removeProperty('--calendar-width');
|
|
278
|
+
}
|
|
279
|
+
if (normalizedMinWidth) {
|
|
280
|
+
this.style.setProperty('--calendar-min-width', normalizedMinWidth);
|
|
281
|
+
}
|
|
282
|
+
else {
|
|
283
|
+
this.style.removeProperty('--calendar-min-width');
|
|
284
|
+
}
|
|
285
|
+
if (normalizedMaxWidth) {
|
|
286
|
+
this.style.setProperty('--calendar-max-width', normalizedMaxWidth);
|
|
287
|
+
}
|
|
288
|
+
else {
|
|
289
|
+
this.style.removeProperty('--calendar-max-width');
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
/**
|
|
293
|
+
* Apply custom CSS to shadow root
|
|
294
|
+
*/
|
|
295
|
+
applyCustomCSS() {
|
|
296
|
+
if (!this._customCSS || !this.shadowRoot)
|
|
297
|
+
return;
|
|
298
|
+
const existing = this.shadowRoot.adoptedStyleSheets;
|
|
299
|
+
if (!existing.includes(this._customCSS)) {
|
|
300
|
+
this.shadowRoot.adoptedStyleSheets = [...existing, this._customCSS];
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
// ==========================================================================
|
|
304
|
+
// Public Methods
|
|
305
|
+
// ==========================================================================
|
|
306
|
+
/**
|
|
307
|
+
* Force re-render of the calendar month
|
|
308
|
+
* Useful when external data changes (e.g., async event loading)
|
|
309
|
+
*/
|
|
310
|
+
refresh() {
|
|
311
|
+
this.render();
|
|
312
|
+
}
|
|
313
|
+
// ==========================================================================
|
|
314
|
+
// Event Dispatching
|
|
315
|
+
// ==========================================================================
|
|
316
|
+
/**
|
|
317
|
+
* Dispatch day-click custom event with day context
|
|
318
|
+
*/
|
|
319
|
+
dispatchDayClick(dayContext, domEvent) {
|
|
320
|
+
const detail = {
|
|
321
|
+
dayContext,
|
|
322
|
+
value: dayContext.value,
|
|
323
|
+
year: dayContext.year,
|
|
324
|
+
month: dayContext.month,
|
|
325
|
+
day: dayContext.dayInMonth,
|
|
326
|
+
isHoliday: dayContext.holiday,
|
|
327
|
+
isToday: dayContext.today,
|
|
328
|
+
isWeekend: dayContext.weekend,
|
|
329
|
+
isOtherMonth: dayContext.otherMonth,
|
|
330
|
+
};
|
|
331
|
+
// Dispatch both 'day-click' and 'day-select' (alias)
|
|
332
|
+
for (const eventType of ['day-click', 'day-select']) {
|
|
333
|
+
const event = new CustomEvent(eventType, {
|
|
334
|
+
detail,
|
|
335
|
+
bubbles: true,
|
|
336
|
+
cancelable: true,
|
|
337
|
+
});
|
|
338
|
+
this.dispatchEvent(event);
|
|
339
|
+
}
|
|
340
|
+
}
|
|
341
|
+
// ==========================================================================
|
|
342
|
+
// Rendering
|
|
343
|
+
// ==========================================================================
|
|
344
|
+
/**
|
|
345
|
+
* Render a single day cell
|
|
346
|
+
*/
|
|
347
|
+
renderDayCell(dayContext) {
|
|
348
|
+
const dayElement = document.createElement('div');
|
|
349
|
+
// Get content using custom or default function
|
|
350
|
+
const content = this._dayContentFn
|
|
351
|
+
? this._dayContentFn(dayContext)
|
|
352
|
+
: defaultDayContent(dayContext);
|
|
353
|
+
// STRICT DOM-ONLY CHECK for custom functions
|
|
354
|
+
if (this._dayContentFn && content && !isDOMElement(content) && typeof content !== 'string') {
|
|
355
|
+
throw new Error(`Custom dayContentFn must return a DOM element or string, got: ${typeof content}. ` +
|
|
356
|
+
`Use document.createElement() to create DOM elements.`);
|
|
357
|
+
}
|
|
358
|
+
// Apply default classes
|
|
359
|
+
const classes = getDefaultDayClasses(dayContext);
|
|
360
|
+
dayElement.className = classes.join(' ');
|
|
361
|
+
// Set content
|
|
362
|
+
if (typeof content === 'string') {
|
|
363
|
+
dayElement.textContent = content;
|
|
364
|
+
}
|
|
365
|
+
else if (isDOMElement(content)) {
|
|
366
|
+
dayElement.appendChild(content);
|
|
367
|
+
}
|
|
368
|
+
// Add click handler
|
|
369
|
+
dayElement.addEventListener('pointerdown', (event) => {
|
|
370
|
+
event.preventDefault();
|
|
371
|
+
this.dispatchDayClick(dayContext, event);
|
|
372
|
+
});
|
|
373
|
+
return dayElement;
|
|
374
|
+
}
|
|
375
|
+
/**
|
|
376
|
+
* Main render function - property-based approach
|
|
377
|
+
*/
|
|
378
|
+
render() {
|
|
379
|
+
const root = this.shadowRoot;
|
|
380
|
+
if (!root)
|
|
381
|
+
return;
|
|
382
|
+
// Ensure styles are loaded
|
|
383
|
+
ensureStyles(root, { css: calendarMonthStyles, id: 'ty-calendar-month' });
|
|
384
|
+
// Apply custom CSS if provided
|
|
385
|
+
this.applyCustomCSS();
|
|
386
|
+
// Apply width properties
|
|
387
|
+
this.applyWidthProperties();
|
|
388
|
+
// Convert timestamp to selection info
|
|
389
|
+
let selection;
|
|
390
|
+
if (this._value) {
|
|
391
|
+
const date = new Date(this._value);
|
|
392
|
+
selection = {
|
|
393
|
+
year: date.getFullYear(),
|
|
394
|
+
month: date.getMonth() + 1, // Convert to 1-based
|
|
395
|
+
day: date.getDate()
|
|
396
|
+
};
|
|
397
|
+
}
|
|
398
|
+
// Generate calendar days with selection info
|
|
399
|
+
const days = getCalendarMonthDays(this._displayYear, this._displayMonth, selection);
|
|
400
|
+
// Get localized weekday names
|
|
401
|
+
const weekdays = getLocalizedWeekdays(this._locale, 'short');
|
|
402
|
+
// Clear and rebuild
|
|
403
|
+
root.innerHTML = '';
|
|
404
|
+
// Create unified flex container
|
|
405
|
+
const calendarContainer = document.createElement('div');
|
|
406
|
+
calendarContainer.className = `calendar-flex-container calendar-size-${this._size}`;
|
|
407
|
+
// Create header row with weekday names
|
|
408
|
+
const headerRow = document.createElement('div');
|
|
409
|
+
headerRow.className = 'calendar-row calendar-header-row';
|
|
410
|
+
weekdays.forEach(weekday => {
|
|
411
|
+
const headerCell = document.createElement('div');
|
|
412
|
+
headerCell.className = 'calendar-cell calendar-header-cell';
|
|
413
|
+
headerCell.textContent = weekday;
|
|
414
|
+
headerRow.appendChild(headerCell);
|
|
415
|
+
});
|
|
416
|
+
calendarContainer.appendChild(headerRow);
|
|
417
|
+
// Create day rows (6 weeks of 7 days each)
|
|
418
|
+
const dayWeeks = [];
|
|
419
|
+
for (let i = 0; i < 42; i += 7) {
|
|
420
|
+
dayWeeks.push(days.slice(i, i + 7));
|
|
421
|
+
}
|
|
422
|
+
dayWeeks.forEach(week => {
|
|
423
|
+
const dayRow = document.createElement('div');
|
|
424
|
+
dayRow.className = 'calendar-row calendar-day-row';
|
|
425
|
+
week.forEach(dayContext => {
|
|
426
|
+
const dayCell = this.renderDayCell(dayContext);
|
|
427
|
+
// Add unified cell classes for flex layout
|
|
428
|
+
dayCell.className = `${dayCell.className} calendar-cell calendar-day-cell`;
|
|
429
|
+
dayRow.appendChild(dayCell);
|
|
430
|
+
});
|
|
431
|
+
calendarContainer.appendChild(dayRow);
|
|
432
|
+
});
|
|
433
|
+
root.appendChild(calendarContainer);
|
|
434
|
+
}
|
|
435
|
+
}
|
|
436
|
+
// Register the custom element
|
|
437
|
+
if (!customElements.get('ty-calendar-month')) {
|
|
438
|
+
customElements.define('ty-calendar-month', TyCalendarMonth);
|
|
439
|
+
}
|
|
440
|
+
//# sourceMappingURL=calendar-month.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"calendar-month.js","sourceRoot":"","sources":["../../src/components/calendar-month.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TyCalendarNavigation Web Component
|
|
3
|
+
* PORTED FROM: cljs/ty/components/calendar_navigation.cljs
|
|
4
|
+
*
|
|
5
|
+
* A pure presentation component for calendar month/year navigation.
|
|
6
|
+
* Stateless - all state comes from properties, changes emitted via events.
|
|
7
|
+
*
|
|
8
|
+
* Features:
|
|
9
|
+
* - Year/Month navigation (prev/next month, prev/next year)
|
|
10
|
+
* - Localized month name display
|
|
11
|
+
* - Custom event emission on navigation
|
|
12
|
+
* - Property-driven API (no internal state)
|
|
13
|
+
* - Inline SVG icons
|
|
14
|
+
* - Shadow DOM encapsulation
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* ```html
|
|
18
|
+
* <!-- Basic usage -->
|
|
19
|
+
* <ty-calendar-navigation
|
|
20
|
+
* display-month="10"
|
|
21
|
+
* display-year="2025"
|
|
22
|
+
* locale="en-US">
|
|
23
|
+
* </ty-calendar-navigation>
|
|
24
|
+
*
|
|
25
|
+
* <!-- Listen for changes -->
|
|
26
|
+
* <script type="module">
|
|
27
|
+
* const nav = document.querySelector('ty-calendar-navigation');
|
|
28
|
+
* nav.addEventListener('change', (e) => {
|
|
29
|
+
* console.log('New month:', e.detail.month);
|
|
30
|
+
* console.log('New year:', e.detail.year);
|
|
31
|
+
* });
|
|
32
|
+
* </script>
|
|
33
|
+
* ```
|
|
34
|
+
*/
|
|
35
|
+
import { TyComponent } from '../base/ty-component.js';
|
|
36
|
+
import type { PropertyChange } from '../utils/property-manager.js';
|
|
37
|
+
/**
|
|
38
|
+
* Navigation change event detail
|
|
39
|
+
*/
|
|
40
|
+
export interface NavigationChangeDetail {
|
|
41
|
+
month: number;
|
|
42
|
+
year: number;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Internal navigation state (minimal - just for current display)
|
|
46
|
+
*/
|
|
47
|
+
interface NavigationState {
|
|
48
|
+
displayMonth: number;
|
|
49
|
+
displayYear: number;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* TyCalendarNavigation Web Component
|
|
53
|
+
*/
|
|
54
|
+
export declare class TyCalendarNavigation extends TyComponent<NavigationState> {
|
|
55
|
+
protected static properties: {
|
|
56
|
+
'display-month': {
|
|
57
|
+
type: "number";
|
|
58
|
+
visual: boolean;
|
|
59
|
+
default: () => number;
|
|
60
|
+
validate: (v: any) => boolean;
|
|
61
|
+
coerce: (v: any) => number;
|
|
62
|
+
};
|
|
63
|
+
'display-year': {
|
|
64
|
+
type: "number";
|
|
65
|
+
visual: boolean;
|
|
66
|
+
default: () => number;
|
|
67
|
+
validate: (v: any) => boolean;
|
|
68
|
+
coerce: (v: any) => number;
|
|
69
|
+
};
|
|
70
|
+
locale: {
|
|
71
|
+
type: "string";
|
|
72
|
+
visual: boolean;
|
|
73
|
+
default: string;
|
|
74
|
+
};
|
|
75
|
+
size: {
|
|
76
|
+
type: "string";
|
|
77
|
+
visual: boolean;
|
|
78
|
+
default: string;
|
|
79
|
+
validate: (v: any) => boolean;
|
|
80
|
+
coerce: (v: any) => any;
|
|
81
|
+
};
|
|
82
|
+
width: {
|
|
83
|
+
type: "string";
|
|
84
|
+
visual: boolean;
|
|
85
|
+
default: string;
|
|
86
|
+
};
|
|
87
|
+
};
|
|
88
|
+
private _state;
|
|
89
|
+
private _localeObserver?;
|
|
90
|
+
constructor();
|
|
91
|
+
/**
|
|
92
|
+
* Called when component connects to DOM
|
|
93
|
+
*/
|
|
94
|
+
protected onConnect(): void;
|
|
95
|
+
/**
|
|
96
|
+
* Called when component disconnects from DOM
|
|
97
|
+
*/
|
|
98
|
+
protected onDisconnect(): void;
|
|
99
|
+
/**
|
|
100
|
+
* Called when properties change
|
|
101
|
+
* Update internal state BEFORE render
|
|
102
|
+
*/
|
|
103
|
+
protected onPropertiesChanged(changes: PropertyChange[]): void;
|
|
104
|
+
get displayMonth(): number;
|
|
105
|
+
set displayMonth(value: number);
|
|
106
|
+
get displayYear(): number;
|
|
107
|
+
set displayYear(value: number);
|
|
108
|
+
get locale(): string;
|
|
109
|
+
set locale(value: string);
|
|
110
|
+
get size(): 'sm' | 'md' | 'lg';
|
|
111
|
+
set size(value: 'sm' | 'md' | 'lg');
|
|
112
|
+
get width(): string;
|
|
113
|
+
set width(value: string);
|
|
114
|
+
/**
|
|
115
|
+
* Emit change event with new month/year
|
|
116
|
+
*/
|
|
117
|
+
private emitChangeEvent;
|
|
118
|
+
/**
|
|
119
|
+
* Navigate to previous/next month
|
|
120
|
+
* Handles year boundary crossing
|
|
121
|
+
*/
|
|
122
|
+
private navigateMonth;
|
|
123
|
+
/**
|
|
124
|
+
* Navigate to previous/next year
|
|
125
|
+
*/
|
|
126
|
+
private navigateYear;
|
|
127
|
+
/**
|
|
128
|
+
* Create navigation button
|
|
129
|
+
*/
|
|
130
|
+
private createButton;
|
|
131
|
+
/**
|
|
132
|
+
* Main render function
|
|
133
|
+
*/
|
|
134
|
+
protected render(): void;
|
|
135
|
+
}
|
|
136
|
+
export {};
|
|
137
|
+
//# sourceMappingURL=calendar-navigation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"calendar-navigation.d.ts","sourceRoot":"","sources":["../../src/components/calendar-navigation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAMH,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAMnE;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;GAEG;AACH,UAAU,eAAe;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;CACrB;AAgDD;;GAEG;AACH,qBAAa,oBAAqB,SAAQ,WAAW,CAAC,eAAe,CAAC;IAIpE,SAAS,CAAC,MAAM,CAAC,UAAU;;;;;0BAMT,GAAG;wBAIL,GAAG;;;;;;0BAaD,GAAG;wBAIL,GAAG;;;;;;;;;;;0BAsBD,GAAG;wBACL,GAAG;;;;;;;MAejB;IAKF,OAAO,CAAC,MAAM,CAAkB;IAChC,OAAO,CAAC,eAAe,CAAC,CAAa;;IAqBrC;;OAEG;IACH,SAAS,CAAC,SAAS,IAAI,IAAI;IAc3B;;OAEG;IACH,SAAS,CAAC,YAAY,IAAI,IAAI;IAQ9B;;;OAGG;IACH,SAAS,CAAC,mBAAmB,CAAC,OAAO,EAAE,cAAc,EAAE,GAAG,IAAI;IAuB9D,IAAI,YAAY,IAAI,MAAM,CAEzB;IAED,IAAI,YAAY,CAAC,KAAK,EAAE,MAAM,EAE7B;IAED,IAAI,WAAW,IAAI,MAAM,CAExB;IAED,IAAI,WAAW,CAAC,KAAK,EAAE,MAAM,EAE5B;IAED,IAAI,MAAM,IAAI,MAAM,CAGnB;IAED,IAAI,MAAM,CAAC,KAAK,EAAE,MAAM,EAEvB;IAED,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,CAE7B;IAED,IAAI,IAAI,CAAC,KAAK,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,EAEjC;IAED,IAAI,KAAK,IAAI,MAAM,CAElB;IAED,IAAI,KAAK,CAAC,KAAK,EAAE,MAAM,EAEtB;IAMD;;OAEG;IACH,OAAO,CAAC,eAAe;IAmBvB;;;OAGG;IACH,OAAO,CAAC,aAAa;IAsBrB;;OAEG;IACH,OAAO,CAAC,YAAY;IASpB;;OAEG;IACH,OAAO,CAAC,YAAY;IAcpB;;OAEG;IACH,SAAS,CAAC,MAAM,IAAI,IAAI;CAyFzB"}
|