@pecb-ui/components 1.1.2

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 (56) hide show
  1. package/README.md +556 -0
  2. package/esm2022/lib/components/button/button.component.mjs +171 -0
  3. package/esm2022/lib/components/card/card.component.mjs +182 -0
  4. package/esm2022/lib/components/checkbox/checkbox.component.mjs +126 -0
  5. package/esm2022/lib/components/datepicker/datepicker.component.mjs +349 -0
  6. package/esm2022/lib/components/dropdown/dropdown.component.mjs +329 -0
  7. package/esm2022/lib/components/input/input.component.mjs +321 -0
  8. package/esm2022/lib/components/pagination/pagination.component.mjs +197 -0
  9. package/esm2022/lib/components/radio/radio.component.mjs +147 -0
  10. package/esm2022/lib/components/right-modal/right-modal.component.mjs +234 -0
  11. package/esm2022/lib/components/sidebar/sidebar.component.mjs +155 -0
  12. package/esm2022/lib/components/status/status.component.mjs +50 -0
  13. package/esm2022/lib/components/tab/tab.component.mjs +151 -0
  14. package/esm2022/lib/components/table/table.component.mjs +503 -0
  15. package/esm2022/lib/components/toggle/toggle.component.mjs +126 -0
  16. package/esm2022/lib/pecb-components.module.mjs +118 -0
  17. package/esm2022/lib/services/loading.service.mjs +182 -0
  18. package/esm2022/lib/services/notification.service.mjs +144 -0
  19. package/esm2022/lib/services/theme.service.mjs +232 -0
  20. package/esm2022/lib/shared/interfaces/component.interfaces.mjs +2 -0
  21. package/esm2022/lib/shared/types/common.types.mjs +6 -0
  22. package/esm2022/lib/shared/utils/accessibility.utils.mjs +223 -0
  23. package/esm2022/lib/shared/utils/dom.utils.mjs +240 -0
  24. package/esm2022/lib/shared/utils/error.utils.mjs +277 -0
  25. package/esm2022/lib/shared/utils/string.utils.mjs +204 -0
  26. package/esm2022/pecb-ui-components.mjs +5 -0
  27. package/esm2022/public-api.mjs +53 -0
  28. package/fesm2022/pecb-ui-components.mjs +4587 -0
  29. package/fesm2022/pecb-ui-components.mjs.map +1 -0
  30. package/index.d.ts +5 -0
  31. package/lib/components/button/button.component.d.ts +130 -0
  32. package/lib/components/card/card.component.d.ts +140 -0
  33. package/lib/components/checkbox/checkbox.component.d.ts +74 -0
  34. package/lib/components/datepicker/datepicker.component.d.ts +155 -0
  35. package/lib/components/dropdown/dropdown.component.d.ts +144 -0
  36. package/lib/components/input/input.component.d.ts +215 -0
  37. package/lib/components/pagination/pagination.component.d.ts +53 -0
  38. package/lib/components/radio/radio.component.d.ts +93 -0
  39. package/lib/components/right-modal/right-modal.component.d.ts +137 -0
  40. package/lib/components/sidebar/sidebar.component.d.ts +97 -0
  41. package/lib/components/status/status.component.d.ts +19 -0
  42. package/lib/components/tab/tab.component.d.ts +102 -0
  43. package/lib/components/table/table.component.d.ts +403 -0
  44. package/lib/components/toggle/toggle.component.d.ts +74 -0
  45. package/lib/pecb-components.module.d.ts +37 -0
  46. package/lib/services/loading.service.d.ts +129 -0
  47. package/lib/services/notification.service.d.ts +136 -0
  48. package/lib/services/theme.service.d.ts +142 -0
  49. package/lib/shared/interfaces/component.interfaces.d.ts +283 -0
  50. package/lib/shared/types/common.types.d.ts +86 -0
  51. package/lib/shared/utils/accessibility.utils.d.ts +167 -0
  52. package/lib/shared/utils/dom.utils.d.ts +108 -0
  53. package/lib/shared/utils/error.utils.d.ts +191 -0
  54. package/lib/shared/utils/string.utils.d.ts +144 -0
  55. package/package.json +61 -0
  56. package/public-api.d.ts +24 -0
@@ -0,0 +1,204 @@
1
+ /**
2
+ * String utility functions for PECB UI Components
3
+ * @module utils/string
4
+ */
5
+ /**
6
+ * Convert a string to kebab-case
7
+ * @param str - The string to convert
8
+ * @returns The kebab-case string
9
+ *
10
+ * @example
11
+ * toKebabCase('myComponentName') // 'my-component-name'
12
+ * toKebabCase('MyComponentName') // 'my-component-name'
13
+ */
14
+ export function toKebabCase(str) {
15
+ return str
16
+ .replace(/([a-z])([A-Z])/g, '$1-$2')
17
+ .replace(/[\s_]+/g, '-')
18
+ .toLowerCase();
19
+ }
20
+ /**
21
+ * Convert a string to camelCase
22
+ * @param str - The string to convert
23
+ * @returns The camelCase string
24
+ *
25
+ * @example
26
+ * toCamelCase('my-component-name') // 'myComponentName'
27
+ * toCamelCase('my_component_name') // 'myComponentName'
28
+ */
29
+ export function toCamelCase(str) {
30
+ return str
31
+ .replace(/[-_\s]+(.)?/g, (_, char) => (char ? char.toUpperCase() : ''))
32
+ .replace(/^[A-Z]/, char => char.toLowerCase());
33
+ }
34
+ /**
35
+ * Convert a string to PascalCase
36
+ * @param str - The string to convert
37
+ * @returns The PascalCase string
38
+ *
39
+ * @example
40
+ * toPascalCase('my-component-name') // 'MyComponentName'
41
+ */
42
+ export function toPascalCase(str) {
43
+ const camel = toCamelCase(str);
44
+ return camel.charAt(0).toUpperCase() + camel.slice(1);
45
+ }
46
+ /**
47
+ * Convert a string to snake_case
48
+ * @param str - The string to convert
49
+ * @returns The snake_case string
50
+ *
51
+ * @example
52
+ * toSnakeCase('myComponentName') // 'my_component_name'
53
+ */
54
+ export function toSnakeCase(str) {
55
+ return toKebabCase(str).replace(/-/g, '_');
56
+ }
57
+ /**
58
+ * Capitalize the first letter of a string
59
+ * @param str - The string to capitalize
60
+ * @returns The capitalized string
61
+ *
62
+ * @example
63
+ * capitalize('hello world') // 'Hello world'
64
+ */
65
+ export function capitalize(str) {
66
+ if (!str)
67
+ return str;
68
+ return str.charAt(0).toUpperCase() + str.slice(1);
69
+ }
70
+ /**
71
+ * Truncate a string to a specified length
72
+ * @param str - The string to truncate
73
+ * @param maxLength - Maximum length
74
+ * @param suffix - Suffix to append when truncated (default: '...')
75
+ * @returns The truncated string
76
+ *
77
+ * @example
78
+ * truncate('Hello World', 8) // 'Hello...'
79
+ * truncate('Hello World', 8, '…') // 'Hello W…'
80
+ */
81
+ export function truncate(str, maxLength, suffix = '...') {
82
+ if (!str || str.length <= maxLength)
83
+ return str;
84
+ return str.slice(0, maxLength - suffix.length) + suffix;
85
+ }
86
+ /**
87
+ * Check if a string is empty or contains only whitespace
88
+ * @param str - The string to check
89
+ * @returns True if the string is empty or whitespace
90
+ *
91
+ * @example
92
+ * isBlank('') // true
93
+ * isBlank(' ') // true
94
+ * isBlank('hello') // false
95
+ */
96
+ export function isBlank(str) {
97
+ return !str || str.trim().length === 0;
98
+ }
99
+ /**
100
+ * Check if a string is not empty and contains non-whitespace characters
101
+ * @param str - The string to check
102
+ * @returns True if the string is not empty
103
+ */
104
+ export function isNotBlank(str) {
105
+ return !isBlank(str);
106
+ }
107
+ /**
108
+ * Generate a slug from a string (URL-friendly)
109
+ * @param str - The string to convert
110
+ * @returns URL-friendly slug
111
+ *
112
+ * @example
113
+ * slugify('Hello World!') // 'hello-world'
114
+ * slugify('Café Latte') // 'cafe-latte'
115
+ */
116
+ export function slugify(str) {
117
+ return str
118
+ .toLowerCase()
119
+ .normalize('NFD')
120
+ .replace(/[\u0300-\u036f]/g, '') // Remove diacritics
121
+ .replace(/[^a-z0-9\s-]/g, '') // Remove non-alphanumeric
122
+ .replace(/[\s_]+/g, '-') // Replace spaces with hyphens
123
+ .replace(/-+/g, '-') // Remove consecutive hyphens
124
+ .replace(/^-|-$/g, ''); // Trim hyphens from ends
125
+ }
126
+ /**
127
+ * Escape HTML special characters
128
+ * @param str - The string to escape
129
+ * @returns The escaped string
130
+ *
131
+ * @example
132
+ * escapeHtml('<script>alert("XSS")</script>') // '&lt;script&gt;alert(&quot;XSS&quot;)&lt;/script&gt;'
133
+ */
134
+ export function escapeHtml(str) {
135
+ const htmlEscapes = {
136
+ '&': '&amp;',
137
+ '<': '&lt;',
138
+ '>': '&gt;',
139
+ '"': '&quot;',
140
+ "'": '&#39;'
141
+ };
142
+ return str.replace(/[&<>"']/g, char => htmlEscapes[char]);
143
+ }
144
+ /**
145
+ * Strip HTML tags from a string
146
+ * @param str - The string containing HTML
147
+ * @returns The string without HTML tags
148
+ *
149
+ * @example
150
+ * stripHtml('<p>Hello <strong>World</strong></p>') // 'Hello World'
151
+ */
152
+ export function stripHtml(str) {
153
+ return str.replace(/<[^>]*>/g, '');
154
+ }
155
+ /**
156
+ * Generate initials from a name
157
+ * @param name - The name to extract initials from
158
+ * @param maxLength - Maximum number of initials (default: 2)
159
+ * @returns The initials in uppercase
160
+ *
161
+ * @example
162
+ * getInitials('John Doe') // 'JD'
163
+ * getInitials('John Michael Doe', 3) // 'JMD'
164
+ */
165
+ export function getInitials(name, maxLength = 2) {
166
+ if (!name)
167
+ return '';
168
+ return name
169
+ .split(/\s+/)
170
+ .filter(Boolean)
171
+ .slice(0, maxLength)
172
+ .map(word => word.charAt(0).toUpperCase())
173
+ .join('');
174
+ }
175
+ /**
176
+ * Pluralize a word based on count
177
+ * @param count - The count to check
178
+ * @param singular - Singular form
179
+ * @param plural - Plural form (optional, defaults to singular + 's')
180
+ * @returns The appropriate form of the word
181
+ *
182
+ * @example
183
+ * pluralize(1, 'item') // 'item'
184
+ * pluralize(5, 'item') // 'items'
185
+ * pluralize(2, 'child', 'children') // 'children'
186
+ */
187
+ export function pluralize(count, singular, plural) {
188
+ return count === 1 ? singular : (plural ?? `${singular}s`);
189
+ }
190
+ /**
191
+ * Format a number as a string with count and pluralized label
192
+ * @param count - The count
193
+ * @param singular - Singular form of the label
194
+ * @param plural - Plural form (optional)
195
+ * @returns Formatted string like "5 items"
196
+ *
197
+ * @example
198
+ * formatCount(1, 'item') // '1 item'
199
+ * formatCount(5, 'item') // '5 items'
200
+ */
201
+ export function formatCount(count, singular, plural) {
202
+ return `${count} ${pluralize(count, singular, plural)}`;
203
+ }
204
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RyaW5nLnV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWktY29tcG9uZW50cy9zcmMvbGliL3NoYXJlZC91dGlscy9zdHJpbmcudXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7OztHQUdHO0FBRUg7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLFVBQVUsV0FBVyxDQUFDLEdBQVc7SUFDckMsT0FBTyxHQUFHO1NBQ1AsT0FBTyxDQUFDLGlCQUFpQixFQUFFLE9BQU8sQ0FBQztTQUNuQyxPQUFPLENBQUMsU0FBUyxFQUFFLEdBQUcsQ0FBQztTQUN2QixXQUFXLEVBQUUsQ0FBQztBQUNuQixDQUFDO0FBRUQ7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLFVBQVUsV0FBVyxDQUFDLEdBQVc7SUFDckMsT0FBTyxHQUFHO1NBQ1AsT0FBTyxDQUFDLGNBQWMsRUFBRSxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1NBQ3RFLE9BQU8sQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztBQUNuRCxDQUFDO0FBRUQ7Ozs7Ozs7R0FPRztBQUNILE1BQU0sVUFBVSxZQUFZLENBQUMsR0FBVztJQUN0QyxNQUFNLEtBQUssR0FBRyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDL0IsT0FBTyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDeEQsQ0FBQztBQUVEOzs7Ozs7O0dBT0c7QUFDSCxNQUFNLFVBQVUsV0FBVyxDQUFDLEdBQVc7SUFDckMsT0FBTyxXQUFXLENBQUMs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LENBQUMsQ0FBQztBQUNkLENBQUM7QUFFRDs7Ozs7Ozs7Ozs7R0FXRztBQUNILE1BQU0sVUFBVSxTQUFTLENBQUMsS0FBYSxFQUFFLFFBQWdCLEVBQUUsTUFBZTtJQUN4RSxPQUFPLEtBQUssS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLElBQUksR0FBRyxRQUFRLEdBQUcsQ0FBQyxDQUFDO0FBQzdELENBQUM7QUFFRDs7Ozs7Ozs7OztHQVVHO0FBQ0gsTUFBTSxVQUFVLFdBQVcsQ0FBQyxLQUFhLEVBQUUsUUFBZ0IsRUFBRSxNQUFlO0lBQzFFLE9BQU8sR0FBRyxLQUFLLElBQUksU0FBUyxDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSxDQUFDLEVBQUUsQ0FBQztBQUMxRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXHJcbiAqIFN0cmluZyB1dGlsaXR5IGZ1bmN0aW9ucyBmb3IgUEVDQiBVSSBDb21wb25lbnRzXHJcbiAqIEBtb2R1bGUgdXRpbHMvc3RyaW5nXHJcbiAqL1xyXG5cclxuLyoqXHJcbiAqIENvbnZlcnQgYSBzdHJpbmcgdG8ga2ViYWItY2FzZVxyXG4gKiBAcGFyYW0gc3RyIC0gVGhlIHN0cmluZyB0byBjb252ZXJ0XHJcbiAqIEByZXR1cm5zIFRoZSBrZWJhYi1jYXNlIHN0cmluZ1xyXG4gKlxyXG4gKiBAZXhhbXBsZVxyXG4gKiB0b0tlYmFiQ2FzZSgnbXlDb21wb25lbnROYW1lJykgLy8gJ215LWNvbXBvbmVudC1uYW1lJ1xyXG4gKiB0b0tlYmFiQ2FzZSgnTXlDb21wb25lbnROYW1lJykgLy8gJ215LWNvbXBvbmVudC1uYW1lJ1xyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIHRvS2ViYWJDYXNlKHN0cjogc3RyaW5nKTogc3RyaW5nIHtcclxuICByZXR1cm4gc3RyXHJcbiAgICAucmVwbGFjZSgvKFthLXpdKShbQS1aXSkvZywgJyQxLSQyJylcclxuICAgIC5yZXBsYWNlKC9bXFxzX10rL2csICctJylcclxuICAgIC50b0xvd2VyQ2FzZSgpO1xyXG59XHJcblxyXG4vKipcclxuICogQ29udmVydCBhIHN0cmluZyB0byBjYW1lbENhc2VcclxuICogQHBhcmFtIHN0ciAtIFRoZSBzdHJpbmcgdG8gY29udmVydFxyXG4gKiBAcmV0dXJucyBUaGUgY2FtZWxDYXNlIHN0cmluZ1xyXG4gKlxyXG4gKiBAZXhhbXBsZVxyXG4gKiB0b0NhbWVsQ2FzZSgnbXktY29tcG9uZW50LW5hbWUnKSAvLyAnbXlDb21wb25lbnROYW1lJ1xyXG4gKiB0b0NhbWVsQ2FzZSgnbXlfY29tcG9uZW50X25hbWUnKSAvLyAnbXlDb21wb25lbnROYW1lJ1xyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIHRvQ2FtZWxDYXNlKHN0cjogc3RyaW5nKTogc3RyaW5nIHtcclxuICByZXR1cm4gc3RyXHJcbiAgICAucmVwbGFjZSgvWy1fXFxzXSsoLik/L2csIChfLCBjaGFyKSA9PiAoY2hhciA/IGNoYXIudG9VcHBlckNhc2UoKSA6ICcnKSlcclxuICAgIC5yZXBsYWNlKC9eW0EtWl0vLCBjaGFyID0+IGNoYXIudG9Mb3dlckNhc2UoKSk7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBDb252ZXJ0IGEgc3RyaW5nIHRvIFBhc2NhbENhc2VcclxuICogQHBhcmFtIHN0ciAtIFRoZSBzdHJpbmcgdG8gY29udmVydFxyXG4gKiBAcmV0dXJucyBUaGUgUGFzY2FsQ2FzZSBzdHJpbmdcclxuICpcclxuICogQGV4YW1wbGVcclxuICogdG9QYXNjYWxDYXNlKCdteS1jb21wb25lbnQtbmFtZScpIC8vICdNeUNvbXBvbmVudE5hbWUnXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gdG9QYXNjYWxDYXNlKHN0cjogc3RyaW5nKTogc3RyaW5nIHtcclxuICBjb25zdCBjYW1lbCA9IHRvQ2FtZWxDYXNlKHN0cik7XHJcbiAgcmV0dXJuIGNhbWVsLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgY2FtZWwuc2xpY2UoMSk7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBDb252ZXJ0IGEgc3RyaW5nIHRvIHNuYWtlX2Nhc2VcclxuICogQHBhcmFtIHN0ciAtIFRoZSBzdHJpbmcgdG8gY29udmVydFxyXG4gKiBAcmV0dXJucyBUaGUgc25ha2VfY2FzZSBzdHJpbmdcclxuICpcclxuICogQGV4YW1wbGVcclxuICogdG9TbmFrZUNhc2UoJ215Q29tcG9uZW50TmFtZScpIC8vICdteV9jb21wb25lbnRfbmFtZSdcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiB0b1NuYWtlQ2FzZShzdHI6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgcmV0dXJuIHRvS2ViYWJDYXNlKHN0cikucmVwbGFjZSgvLS9nLCAnXycpO1xyXG59XHJcblxyXG4vKipcclxuICogQ2FwaXRhbGl6ZSB0aGUgZmlyc3QgbGV0dGVyIG9mIGEgc3RyaW5nXHJcbiAqIEBwYXJhbSBzdHIgLSBUaGUgc3RyaW5nIHRvIGNhcGl0YWxpemVcclxuICogQHJldHVybnMgVGhlIGNhcGl0YWxpemVkIHN0cmluZ1xyXG4gKlxyXG4gKiBAZXhhbXBsZVxyXG4gKiBjYXBpdGFsaXplKCdoZWxsbyB3b3JsZCcpIC8vICdIZWxsbyB3b3JsZCdcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBjYXBpdGFsaXplKHN0cjogc3RyaW5nKTogc3RyaW5nIHtcclxuICBpZiAoIXN0cikgcmV0dXJuIHN0cjtcclxuICByZXR1cm4gc3RyLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgc3RyLnNsaWNlKDEpO1xyXG59XHJcblxyXG4vKipcclxuICogVHJ1bmNhdGUgYSBzdHJpbmcgdG8gYSBzcGVjaWZpZWQgbGVuZ3RoXHJcbiAqIEBwYXJhbSBzdHIgLSBUaGUgc3RyaW5nIHRvIHRydW5jYXRlXHJcbiAqIEBwYXJhbSBtYXhMZW5ndGggLSBNYXhpbXVtIGxlbmd0aFxyXG4gKiBAcGFyYW0gc3VmZml4IC0gU3VmZml4IHRvIGFwcGVuZCB3aGVuIHRydW5jYXRlZCAoZGVmYXVsdDogJy4uLicpXHJcbiAqIEByZXR1cm5zIFRoZSB0cnVuY2F0ZWQgc3RyaW5nXHJcbiAqXHJcbiAqIEBleGFtcGxlXHJcbiAqIHRydW5jYXRlKCdIZWxsbyBXb3JsZCcsIDgpIC8vICdIZWxsby4uLidcclxuICogdHJ1bmNhdGUoJ0hlbGxvIFdvcmxkJywgOCwgJ+KApicpIC8vICdIZWxsbyBX4oCmJ1xyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIHRydW5jYXRlKHN0cjogc3RyaW5nLCBtYXhMZW5ndGg6IG51bWJlciwgc3VmZml4ID0gJy4uLicpOiBzdHJpbmcge1xyXG4gIGlmICghc3RyIHx8IHN0ci5sZW5ndGggPD0gbWF4TGVuZ3RoKSByZXR1cm4gc3RyO1xyXG4gIHJldHVybiBzdHIuc2xpY2UoMCwgbWF4TGVuZ3RoIC0gc3VmZml4Lmxlbmd0aCkgKyBzdWZmaXg7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBDaGVjayBpZiBhIHN0cmluZyBpcyBlbXB0eSBvciBjb250YWlucyBvbmx5IHdoaXRlc3BhY2VcclxuICogQHBhcmFtIHN0ciAtIFRoZSBzdHJpbmcgdG8gY2hlY2tcclxuICogQHJldHVybnMgVHJ1ZSBpZiB0aGUgc3RyaW5nIGlzIGVtcHR5IG9yIHdoaXRlc3BhY2VcclxuICpcclxuICogQGV4YW1wbGVcclxuICogaXNCbGFuaygnJykgLy8gdHJ1ZVxyXG4gKiBpc0JsYW5rKCcgICcpIC8vIHRydWVcclxuICogaXNCbGFuaygnaGVsbG8nKSAvLyBmYWxzZVxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIGlzQmxhbmsoc3RyOiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkKTogYm9vbGVhbiB7XHJcbiAgcmV0dXJuICFzdHIgfHwgc3RyLnRyaW0oKS5sZW5ndGggPT09IDA7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBDaGVjayBpZiBhIHN0cmluZyBpcyBub3QgZW1wdHkgYW5kIGNvbnRhaW5zIG5vbi13aGl0ZXNwYWNlIGNoYXJhY3RlcnNcclxuICogQHBhcmFtIHN0ciAtIFRoZSBzdHJpbmcgdG8gY2hlY2tcclxuICogQHJldHVybnMgVHJ1ZSBpZiB0aGUgc3RyaW5nIGlzIG5vdCBlbXB0eVxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIGlzTm90Qmxhbmsoc3RyOiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkKTogc3RyIGlzIHN0cmluZyB7XHJcbiAgcmV0dXJuICFpc0JsYW5rKHN0cik7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBHZW5lcmF0ZSBhIHNsdWcgZnJvbSBhIHN0cmluZyAoVVJMLWZyaWVuZGx5KVxyXG4gKiBAcGFyYW0gc3RyIC0gVGhlIHN0cmluZyB0byBjb252ZXJ0XHJcbiAqIEByZXR1cm5zIFVSTC1mcmllbmRseSBzbHVnXHJcbiAqXHJcbiAqIEBleGFtcGxlXHJcbiAqIHNsdWdpZnkoJ0hlbGxvIFdvcmxkIScpIC8vICdoZWxsby13b3JsZCdcclxuICogc2x1Z2lmeSgnQ2Fmw6kgTGF0dGUnKSAvLyAnY2FmZS1sYXR0ZSdcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBzbHVnaWZ5KHN0cjogc3RyaW5nKTogc3RyaW5nIHtcclxuICByZXR1cm4gc3RyXHJcbiAgICAudG9Mb3dlckNhc2UoKVxyXG4gICAgLm5vcm1hbGl6ZSgnTkZEJylcclxuICAgIC5yZXBsYWNlKC9bXFx1MDMwMC1cXHUwMzZmXS9nLCAnJykgLy8gUmVtb3ZlIGRpYWNyaXRpY3NcclxuICAgIC5yZXBsYWNlKC9bXmEtejAtOVxccy1dL2csICcnKSAvLyBSZW1vdmUgbm9uLWFscGhhbnVtZXJpY1xyXG4gICAgLnJlcGxhY2UoL1tcXHNfXSsvZywgJy0nKSAvLyBSZXBsYWNlIHNwYWNlcyB3aXRoIGh5cGhlbnNcclxuICAgIC5yZXBsYWNlKC8tKy9nLCAnLScpIC8vIFJlbW92ZSBjb25zZWN1dGl2ZSBoeXBoZW5zXHJcbiAgICAucmVwbGFjZSgvXi18LSQvZywgJycpOyAvLyBUcmltIGh5cGhlbnMgZnJvbSBlbmRzXHJcbn1cclxuXHJcbi8qKlxyXG4gKiBFc2NhcGUgSFRNTCBzcGVjaWFsIGNoYXJhY3RlcnNcclxuICogQHBhcmFtIHN0ciAtIFRoZSBzdHJpbmcgdG8gZXNjYXBlXHJcbiAqIEByZXR1cm5zIFRoZSBlc2NhcGVkIHN0cmluZ1xyXG4gKlxyXG4gKiBAZXhhbXBsZVxyXG4gKiBlc2NhcGVIdG1sKCc8c2NyaXB0PmFsZXJ0KFwiWFNTXCIpPC9zY3JpcHQ+JykgLy8gJyZsdDtzY3JpcHQmZ3Q7YWxlcnQoJnF1b3Q7WFNTJnF1b3Q7KSZsdDsvc2NyaXB0Jmd0OydcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBlc2NhcGVIdG1sKHN0cjogc3RyaW5nKTogc3RyaW5nIHtcclxuICBjb25zdCBodG1sRXNjYXBlczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcclxuICAgICcmJzogJyZhbXA7JyxcclxuICAgICc8JzogJyZsdDsnLFxyXG4gICAgJz4nOiAnJmd0OycsXHJcbiAgICAnXCInOiAnJnF1b3Q7JyxcclxuICAgIFwiJ1wiOiAnJiMzOTsnXHJcbiAgfTtcclxuICByZXR1cm4gc3RyLnJlcGxhY2UoL1smPD5cIiddL2csIGNoYXIgPT4gaHRtbEVzY2FwZXNbY2hhcl0pO1xyXG59XHJcblxyXG4vKipcclxuICogU3RyaXAgSFRNTCB0YWdzIGZyb20gYSBzdHJpbmdcclxuICogQHBhcmFtIHN0ciAtIFRoZSBzdHJpbmcgY29udGFpbmluZyBIVE1MXHJcbiAqIEByZXR1cm5zIFRoZSBzdHJpbmcgd2l0aG91dCBIVE1MIHRhZ3NcclxuICpcclxuICogQGV4YW1wbGVcclxuICogc3RyaXBIdG1sKCc8cD5IZWxsbyA8c3Ryb25nPldvcmxkPC9zdHJvbmc+PC9wPicpIC8vICdIZWxsbyBXb3JsZCdcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBzdHJpcEh0bWwoc3RyOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gIHJldHVybiBzdHIucmVwbGFjZSgvPFtePl0qPi9nLCAnJyk7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBHZW5lcmF0ZSBpbml0aWFscyBmcm9tIGEgbmFtZVxyXG4gKiBAcGFyYW0gbmFtZSAtIFRoZSBuYW1lIHRvIGV4dHJhY3QgaW5pdGlhbHMgZnJvbVxyXG4gKiBAcGFyYW0gbWF4TGVuZ3RoIC0gTWF4aW11bSBudW1iZXIgb2YgaW5pdGlhbHMgKGRlZmF1bHQ6IDIpXHJcbiAqIEByZXR1cm5zIFRoZSBpbml0aWFscyBpbiB1cHBlcmNhc2VcclxuICpcclxuICogQGV4YW1wbGVcclxuICogZ2V0SW5pdGlhbHMoJ0pvaG4gRG9lJykgLy8gJ0pEJ1xyXG4gKiBnZXRJbml0aWFscygnSm9obiBNaWNoYWVsIERvZScsIDMpIC8vICdKTUQnXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gZ2V0SW5pdGlhbHMobmFtZTogc3RyaW5nLCBtYXhMZW5ndGggPSAyKTogc3RyaW5nIHtcclxuICBpZiAoIW5hbWUpIHJldHVybiAnJztcclxuXHJcbiAgcmV0dXJuIG5hbWVcclxuICAgIC5zcGxpdCgvXFxzKy8pXHJcbiAgICAuZmlsdGVyKEJvb2xlYW4pXHJcbiAgICAuc2xpY2UoMCwgbWF4TGVuZ3RoKVxyXG4gICAgLm1hcCh3b3JkID0+IHdvcmQuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkpXHJcbiAgICAuam9pbignJyk7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBQbHVyYWxpemUgYSB3b3JkIGJhc2VkIG9uIGNvdW50XHJcbiAqIEBwYXJhbSBjb3VudCAtIFRoZSBjb3VudCB0byBjaGVja1xyXG4gKiBAcGFyYW0gc2luZ3VsYXIgLSBTaW5ndWxhciBmb3JtXHJcbiAqIEBwYXJhbSBwbHVyYWwgLSBQbHVyYWwgZm9ybSAob3B0aW9uYWwsIGRlZmF1bHRzIHRvIHNpbmd1bGFyICsgJ3MnKVxyXG4gKiBAcmV0dXJucyBUaGUgYXBwcm9wcmlhdGUgZm9ybSBvZiB0aGUgd29yZFxyXG4gKlxyXG4gKiBAZXhhbXBsZVxyXG4gKiBwbHVyYWxpemUoMSwgJ2l0ZW0nKSAvLyAnaXRlbSdcclxuICogcGx1cmFsaXplKDUsICdpdGVtJykgLy8gJ2l0ZW1zJ1xyXG4gKiBwbHVyYWxpemUoMiwgJ2NoaWxkJywgJ2NoaWxkcmVuJykgLy8gJ2NoaWxkcmVuJ1xyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIHBsdXJhbGl6ZShjb3VudDogbnVtYmVyLCBzaW5ndWxhcjogc3RyaW5nLCBwbHVyYWw/OiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gIHJldHVybiBjb3VudCA9PT0gMSA/IHNpbmd1bGFyIDogKHBsdXJhbCA/PyBgJHtzaW5ndWxhcn1zYCk7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBGb3JtYXQgYSBudW1iZXIgYXMgYSBzdHJpbmcgd2l0aCBjb3VudCBhbmQgcGx1cmFsaXplZCBsYWJlbFxyXG4gKiBAcGFyYW0gY291bnQgLSBUaGUgY291bnRcclxuICogQHBhcmFtIHNpbmd1bGFyIC0gU2luZ3VsYXIgZm9ybSBvZiB0aGUgbGFiZWxcclxuICogQHBhcmFtIHBsdXJhbCAtIFBsdXJhbCBmb3JtIChvcHRpb25hbClcclxuICogQHJldHVybnMgRm9ybWF0dGVkIHN0cmluZyBsaWtlIFwiNSBpdGVtc1wiXHJcbiAqXHJcbiAqIEBleGFtcGxlXHJcbiAqIGZvcm1hdENvdW50KDEsICdpdGVtJykgLy8gJzEgaXRlbSdcclxuICogZm9ybWF0Q291bnQoNSwgJ2l0ZW0nKSAvLyAnNSBpdGVtcydcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXRDb3VudChjb3VudDogbnVtYmVyLCBzaW5ndWxhcjogc3RyaW5nLCBwbHVyYWw/OiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gIHJldHVybiBgJHtjb3VudH0gJHtwbHVyYWxpemUoY291bnQsIHNpbmd1bGFyLCBwbHVyYWwpfWA7XHJcbn1cclxuIl19
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './public-api';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVjYi11aS1jb21wb25lbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vcHJvamVjdHMvdWktY29tcG9uZW50cy9zcmMvcGVjYi11aS1jb21wb25lbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljLWFwaSc7XG4iXX0=
@@ -0,0 +1,53 @@
1
+ /*
2
+ * Public API Surface of @pecb-ui/components
3
+ *
4
+ * This file defines the public API of the library.
5
+ * Only exports from this file will be accessible to consumers.
6
+ */
7
+ // =============================================================================
8
+ // MODULE
9
+ // =============================================================================
10
+ export * from './lib/pecb-components.module';
11
+ // =============================================================================
12
+ // COMPONENTS
13
+ // =============================================================================
14
+ export * from './lib/components/button/button.component';
15
+ export * from './lib/components/card/card.component';
16
+ export * from './lib/components/status/status.component';
17
+ export * from './lib/components/pagination/pagination.component';
18
+ export * from './lib/components/table/table.component';
19
+ export * from './lib/components/tab/tab.component';
20
+ export * from './lib/components/datepicker/datepicker.component';
21
+ export * from './lib/components/input/input.component';
22
+ export * from './lib/components/radio/radio.component';
23
+ export * from './lib/components/checkbox/checkbox.component';
24
+ export * from './lib/components/toggle/toggle.component';
25
+ export * from './lib/components/dropdown/dropdown.component';
26
+ export * from './lib/components/right-modal/right-modal.component';
27
+ export * from './lib/components/sidebar/sidebar.component';
28
+ // =============================================================================
29
+ // SERVICES
30
+ // =============================================================================
31
+ export * from './lib/services/notification.service';
32
+ export * from './lib/services/theme.service';
33
+ export * from './lib/services/loading.service';
34
+ // =============================================================================
35
+ // SHARED TYPES
36
+ // =============================================================================
37
+ export * from './lib/shared/types/common.types';
38
+ // =============================================================================
39
+ // SHARED INTERFACES
40
+ // =============================================================================
41
+ export * from './lib/shared/interfaces/component.interfaces';
42
+ // =============================================================================
43
+ // SHARED UTILITIES
44
+ // =============================================================================
45
+ // String utilities
46
+ export { toKebabCase, toCamelCase, toPascalCase, toSnakeCase, capitalize, truncate, isBlank, isNotBlank, slugify, escapeHtml, stripHtml, getInitials, pluralize, formatCount } from './lib/shared/utils/string.utils';
47
+ // DOM utilities
48
+ export { isBrowser, generateUniqueId, matchesSelector, closestElement, isElementVisible, getFocusableElements, trapFocus, scrollIntoView, getScrollParent, disableBodyScroll, copyToClipboard, hasClass, addClass, removeClass, toggleClass, getComputedStyleValue } from './lib/shared/utils/dom.utils';
49
+ // Accessibility utilities
50
+ export { getButtonAriaAttributes, getDialogAriaAttributes, getInputAriaAttributes, getProgressAriaAttributes, getTabAriaAttributes, getOptionAriaAttributes, generateLinkedIds, getVisuallyHiddenStyles, prefersReducedMotion, prefersHighContrast, announceToScreenReader, getAriaCurrent } from './lib/shared/utils/accessibility.utils';
51
+ // Error handling utilities
52
+ export { createError, createValidationError, wrapError, isPecbError, isRecoverableError, formatErrorMessage, formatErrorForLog, createNetworkError, createAuthError, createAuthorizationError, createConfigError, registerErrorHandler, handleError, tryAsync, trySync } from './lib/shared/utils/error.utils';
53
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL3VpLWNvbXBvbmVudHMvc3JjL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7O0dBS0c7QUFFSCxnRkFBZ0Y7QUFDaEYsU0FBUztBQUNULGdGQUFnRjtBQUNoRixjQUFjLDhCQUE4QixDQUFDO0FBRTdDLGdGQUFnRjtBQUNoRixhQUFhO0FBQ2IsZ0ZBQWdGO0FBQ2hGLGNBQWMsMENBQTBDLENBQUM7QUFDekQsY0FBYyxzQ0FBc0MsQ0FBQztBQUNyRCxjQUFjLDBDQUEwQyxDQUFDO0FBQ3pELGNBQWMsa0RBQWtELENBQUM7QUFDakUsY0FBYyx3Q0FBd0MsQ0FBQztBQUN2RCxjQUFjLG9DQUFvQyxDQUFDO0FBQ25ELGNBQWMsa0RBQWtELENBQUM7QUFDakUsY0FBYyx3Q0FBd0MsQ0FBQztBQUN2RCxjQUFjLHdDQUF3QyxDQUFDO0FBQ3ZELGNBQWMsOENBQThDLENBQUM7QUFDN0QsY0FBYywwQ0FBMEMsQ0FBQztBQUN6RCxjQUFjLDhDQUE4QyxDQUFDO0FBQzdELGNBQWMsb0RBQW9ELENBQUM7QUFDbkUsY0FBYyw0Q0FBNEMsQ0FBQztBQUUzRCxnRkFBZ0Y7QUFDaEYsV0FBVztBQUNYLGdGQUFnRjtBQUNoRixjQUFjLHFDQUFxQyxDQUFDO0FBQ3BELGNBQWMsOEJBQThCLENBQUM7QUFDN0MsY0FBYyxnQ0FBZ0MsQ0FBQztBQUUvQyxnRkFBZ0Y7QUFDaEYsZUFBZTtBQUNmLGdGQUFnRjtBQUNoRixjQUFjLGlDQUFpQyxDQUFDO0FBRWhELGdGQUFnRjtBQUNoRixvQkFBb0I7QUFDcEIsZ0ZBQWdGO0FBQ2hGLGNBQWMsOENBQThDLENBQUM7QUFFN0QsZ0ZBQWdGO0FBQ2hGLG1CQUFtQjtBQUNuQixnRkFBZ0Y7QUFFaEYsbUJBQW1CO0FBQ25CLE9BQU8sRUFDTCxXQUFXLEVBQ1gsV0FBVyxFQUNYLFlBQVksRUFDWixXQUFXLEVBQ1gsVUFBVSxFQUNWLFFBQVEsRUFDUixPQUFPLEVBQ1AsVUFBVSxFQUNWLE9BQU8sRUFDUCxVQUFVLEVBQ1YsU0FBUyxFQUNULFdBQVcsRUFDWCxTQUFTLEVBQ1QsV0FBVyxFQUNaLE1BQU0saUNBQWlDLENBQUM7QUFFekMsZ0JBQWdCO0FBQ2hCLE9BQU8sRUFDTCxTQUFTLEVBQ1QsZ0JBQWdCLEVBQ2hCLGVBQWUsRUFDZixjQUFjLEVBQ2QsZ0JBQWdCLEVBQ2hCLG9CQUFvQixFQUNwQixTQUFTLEVBQ1QsY0FBYyxFQUNkLGVBQWUsRUFDZixpQkFBaUIsRUFDakIsZUFBZSxFQUNmLFFBQVEsRUFDUixRQUFRLEVBQ1IsV0FBVyxFQUNYLFdBQVcsRUFDWCxxQkFBcUIsRUFDdEIsTUFBTSw4QkFBOEIsQ0FBQztBQUV0QywwQkFBMEI7QUFDMUIsT0FBTyxFQUlMLHVCQUF1QixFQUN2Qix1QkFBdUIsRUFDdkIsc0JBQXNCLEVBQ3RCLHlCQUF5QixFQUN6QixvQkFBb0IsRUFDcEIsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQix1QkFBdUIsRUFDdkIsb0JBQW9CLEVBQ3BCLG1CQUFtQixFQUNuQixzQkFBc0IsRUFDdEIsY0FBYyxFQUNmLE1BQU0sd0NBQXdDLENBQUM7QUFFaEQsMkJBQTJCO0FBQzNCLE9BQU8sRUFPTCxXQUFXLEVBQ1gscUJBQXFCLEVBQ3JCLFNBQVMsRUFDVCxXQUFXLEVBQ1gsa0JBQWtCLEVBQ2xCLGtCQUFrQixFQUNsQixpQkFBaUIsRUFDakIsa0JBQWtCLEVBQ2xCLGVBQWUsRUFDZix3QkFBd0IsRUFDeEIsaUJBQWlCLEVBQ2pCLG9CQUFvQixFQUNwQixXQUFXLEVBQ1gsUUFBUSxFQUNSLE9BQU8sRUFDUixNQUFNLGdDQUFnQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcclxuICogUHVibGljIEFQSSBTdXJmYWNlIG9mIEBwZWNiLXVpL2NvbXBvbmVudHNcclxuICpcclxuICogVGhpcyBmaWxlIGRlZmluZXMgdGhlIHB1YmxpYyBBUEkgb2YgdGhlIGxpYnJhcnkuXHJcbiAqIE9ubHkgZXhwb3J0cyBmcm9tIHRoaXMgZmlsZSB3aWxsIGJlIGFjY2Vzc2libGUgdG8gY29uc3VtZXJzLlxyXG4gKi9cclxuXHJcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XHJcbi8vIE1PRFVMRVxyXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9wZWNiLWNvbXBvbmVudHMubW9kdWxlJztcclxuXHJcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XHJcbi8vIENPTVBPTkVOVFNcclxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9idXR0b24vYnV0dG9uLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvY2FyZC9jYXJkLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvc3RhdHVzL3N0YXR1cy5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL3BhZ2luYXRpb24vcGFnaW5hdGlvbi5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL3RhYmxlL3RhYmxlLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvdGFiL3RhYi5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2RhdGVwaWNrZXIvZGF0ZXBpY2tlci5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2lucHV0L2lucHV0LmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvcmFkaW8vcmFkaW8uY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9jaGVja2JveC9jaGVja2JveC5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL3RvZ2dsZS90b2dnbGUuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9kcm9wZG93bi9kcm9wZG93bi5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL3JpZ2h0LW1vZGFsL3JpZ2h0LW1vZGFsLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvc2lkZWJhci9zaWRlYmFyLmNvbXBvbmVudCc7XHJcblxyXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxyXG4vLyBTRVJWSUNFU1xyXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9zZXJ2aWNlcy9ub3RpZmljYXRpb24uc2VydmljZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2VzL3RoZW1lLnNlcnZpY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9zZXJ2aWNlcy9sb2FkaW5nLnNlcnZpY2UnO1xyXG5cclxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cclxuLy8gU0hBUkVEIFRZUEVTXHJcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NoYXJlZC90eXBlcy9jb21tb24udHlwZXMnO1xyXG5cclxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cclxuLy8gU0hBUkVEIElOVEVSRkFDRVNcclxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cclxuZXhwb3J0ICogZnJvbSAnLi9saWIvc2hhcmVkL2ludGVyZmFjZXMvY29tcG9uZW50LmludGVyZmFjZXMnO1xyXG5cclxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cclxuLy8gU0hBUkVEIFVUSUxJVElFU1xyXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxyXG5cclxuLy8gU3RyaW5nIHV0aWxpdGllc1xyXG5leHBvcnQge1xyXG4gIHRvS2ViYWJDYXNlLFxyXG4gIHRvQ2FtZWxDYXNlLFxyXG4gIHRvUGFzY2FsQ2FzZSxcclxuICB0b1NuYWtlQ2FzZSxcclxuICBjYXBpdGFsaXplLFxyXG4gIHRydW5jYXRlLFxyXG4gIGlzQmxhbmssXHJcbiAgaXNOb3RCbGFuayxcclxuICBzbHVnaWZ5LFxyXG4gIGVzY2FwZUh0bWwsXHJcbiAgc3RyaXBIdG1sLFxyXG4gIGdldEluaXRpYWxzLFxyXG4gIHBsdXJhbGl6ZSxcclxuICBmb3JtYXRDb3VudFxyXG59IGZyb20gJy4vbGliL3NoYXJlZC91dGlscy9zdHJpbmcudXRpbHMnO1xyXG5cclxuLy8gRE9NIHV0aWxpdGllc1xyXG5leHBvcnQge1xyXG4gIGlzQnJvd3NlcixcclxuICBnZW5lcmF0ZVVuaXF1ZUlkLFxyXG4gIG1hdGNoZXNTZWxlY3RvcixcclxuICBjbG9zZXN0RWxlbWVudCxcclxuICBpc0VsZW1lbnRWaXNpYmxlLFxyXG4gIGdldEZvY3VzYWJsZUVsZW1lbnRzLFxyXG4gIHRyYXBGb2N1cyxcclxuICBzY3JvbGxJbnRvVmlldyxcclxuICBnZXRTY3JvbGxQYXJlbnQsXHJcbiAgZGlzYWJsZUJvZHlTY3JvbGwsXHJcbiAgY29weVRvQ2xpcGJvYXJkLFxyXG4gIGhhc0NsYXNzLFxyXG4gIGFkZENsYXNzLFxyXG4gIHJlbW92ZUNsYXNzLFxyXG4gIHRvZ2dsZUNsYXNzLFxyXG4gIGdldENvbXB1dGVkU3R5bGVWYWx1ZVxyXG59IGZyb20gJy4vbGliL3NoYXJlZC91dGlscy9kb20udXRpbHMnO1xyXG5cclxuLy8gQWNjZXNzaWJpbGl0eSB1dGlsaXRpZXNcclxuZXhwb3J0IHtcclxuICBBcmlhTGl2ZSxcclxuICBBcmlhUm9sZSxcclxuICBBcmlhQXR0cmlidXRlcyxcclxuICBnZXRCdXR0b25BcmlhQXR0cmlidXRlcyxcclxuICBnZXREaWFsb2dBcmlhQXR0cmlidXRlcyxcclxuICBnZXRJbnB1dEFyaWFBdHRyaWJ1dGVzLFxyXG4gIGdldFByb2dyZXNzQXJpYUF0dHJpYnV0ZXMsXHJcbiAgZ2V0VGFiQXJpYUF0dHJpYnV0ZXMsXHJcbiAgZ2V0T3B0aW9uQXJpYUF0dHJpYnV0ZXMsXHJcbiAgZ2VuZXJhdGVMaW5rZWRJZHMsXHJcbiAgZ2V0VmlzdWFsbHlIaWRkZW5TdHlsZXMsXHJcbiAgcHJlZmVyc1JlZHVjZWRNb3Rpb24sXHJcbiAgcHJlZmVyc0hpZ2hDb250cmFzdCxcclxuICBhbm5vdW5jZVRvU2NyZWVuUmVhZGVyLFxyXG4gIGdldEFyaWFDdXJyZW50XHJcbn0gZnJvbSAnLi9saWIvc2hhcmVkL3V0aWxzL2FjY2Vzc2liaWxpdHkudXRpbHMnO1xyXG5cclxuLy8gRXJyb3IgaGFuZGxpbmcgdXRpbGl0aWVzXHJcbmV4cG9ydCB7XHJcbiAgRXJyb3JTZXZlcml0eSxcclxuICBFcnJvckNhdGVnb3J5LFxyXG4gIFBlY2JFcnJvcixcclxuICBWYWxpZGF0aW9uRXJyb3IsXHJcbiAgRXJyb3JPcHRpb25zLFxyXG4gIEVycm9ySGFuZGxlcixcclxuICBjcmVhdGVFcnJvcixcclxuICBjcmVhdGVWYWxpZGF0aW9uRXJyb3IsXHJcbiAgd3JhcEVycm9yLFxyXG4gIGlzUGVjYkVycm9yLFxyXG4gIGlzUmVjb3ZlcmFibGVFcnJvcixcclxuICBmb3JtYXRFcnJvck1lc3NhZ2UsXHJcbiAgZm9ybWF0RXJyb3JGb3JMb2csXHJcbiAgY3JlYXRlTmV0d29ya0Vycm9yLFxyXG4gIGNyZWF0ZUF1dGhFcnJvcixcclxuICBjcmVhdGVBdXRob3JpemF0aW9uRXJyb3IsXHJcbiAgY3JlYXRlQ29uZmlnRXJyb3IsXHJcbiAgcmVnaXN0ZXJFcnJvckhhbmRsZXIsXHJcbiAgaGFuZGxlRXJyb3IsXHJcbiAgdHJ5QXN5bmMsXHJcbiAgdHJ5U3luY1xyXG59IGZyb20gJy4vbGliL3NoYXJlZC91dGlscy9lcnJvci51dGlscyc7XHJcbiJdfQ==