maquinaweb-ui 2.73.1 → 2.75.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/analytics/delegated-clicks.d.ts +2 -0
- package/dist/analytics/delegated-clicks.d.ts.map +1 -1
- package/dist/analytics/delegated-clicks.js +7 -1
- package/dist/analytics/delegated-clicks.js.map +1 -1
- package/dist/analytics/provider.d.ts +2 -2
- package/dist/analytics/types.d.ts +2 -0
- package/dist/analytics/types.d.ts.map +1 -1
- package/dist/container-animation/container-animation.d.ts +2 -2
- package/dist/date-field/DateField.d.ts +2 -2
- package/dist/date-field/DateField.d.ts.map +1 -1
- package/dist/date-hour-field/DateHourField.d.ts +2 -2
- package/dist/date-hour-field/DateHourField.d.ts.map +1 -1
- package/dist/input-suggest/input-suggest.d.ts +2 -2
- package/dist/input-suggest/input-suggest.d.ts.map +1 -1
- package/dist/kanban-dnd/kanban-card-item.d.ts +2 -2
- package/dist/kanban-dnd/kanban-dnd-monitor.d.ts +2 -2
- package/dist/kanban-dnd/kanban-dropzone.d.ts +2 -2
- package/dist/kanban-dnd/kanban-selector.d.ts +2 -2
- package/dist/landing-text/server-landing-text.d.ts +2 -2
- package/dist/page-header/page-header.d.ts +2 -2
- package/dist/remote-selector/remote-selector.d.ts +3 -3
- package/dist/remote-selector/remote-selector.d.ts.map +1 -1
- package/dist/server-infinite-scroll/server-infinite-scroll-items.d.ts +16 -0
- package/dist/server-infinite-scroll/server-infinite-scroll-items.d.ts.map +1 -0
- package/dist/server-infinite-scroll/server-infinite-scroll-items.js +42 -0
- package/dist/server-infinite-scroll/server-infinite-scroll-items.js.map +1 -0
- package/dist/server-infinite-scroll/server-infinite-scroll-list.d.ts +20 -0
- package/dist/server-infinite-scroll/server-infinite-scroll-list.d.ts.map +1 -0
- package/dist/server-infinite-scroll/server-infinite-scroll-list.js +121 -0
- package/dist/server-infinite-scroll/server-infinite-scroll-list.js.map +1 -0
- package/dist/server-infinite-scroll/server-infinite-scroll-observer.d.ts +23 -0
- package/dist/server-infinite-scroll/server-infinite-scroll-observer.d.ts.map +1 -0
- package/dist/server-infinite-scroll/server-infinite-scroll-observer.js +54 -0
- package/dist/server-infinite-scroll/server-infinite-scroll-observer.js.map +1 -0
- package/dist/server-infinite-scroll/server-infinite-scroll.d.ts +13 -0
- package/dist/server-infinite-scroll/server-infinite-scroll.d.ts.map +1 -0
- package/dist/server-infinite-scroll/server-infinite-scroll.js +32 -0
- package/dist/server-infinite-scroll/server-infinite-scroll.js.map +1 -0
- package/dist/server-infinite-scroll/types.d.ts +50 -0
- package/dist/server-infinite-scroll/types.d.ts.map +1 -0
- package/dist/server-infinite-scroll.d.ts +6 -0
- package/dist/server-infinite-scroll.js +6 -0
- package/dist/toggle-field/ToggleGroup.d.ts +2 -2
- package/package.json +6 -2
|
@@ -8,8 +8,10 @@ declare function bindAnalyticsClickTracking(options?: BindAnalyticsClickTracking
|
|
|
8
8
|
declare function analyticsAttributes(input: AnalyticsAttributesInput): {
|
|
9
9
|
'data-analytics-event': string | undefined;
|
|
10
10
|
'data-analytics-event-type': "cta_click" | "custom" | undefined;
|
|
11
|
+
'data-analytics-label': string | undefined;
|
|
11
12
|
'data-analytics-properties': string | undefined;
|
|
12
13
|
'data-analytics-conversion': string | undefined;
|
|
14
|
+
'data-analytics-conversion-label': string | undefined;
|
|
13
15
|
'data-analytics-conversion-value': string | number | undefined;
|
|
14
16
|
};
|
|
15
17
|
//#endregion
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"delegated-clicks.d.ts","names":[],"sources":["../../src/components/analytics/delegated-clicks.ts"],"sourcesContent":[],"mappings":";;;KAgBK,iCAAA;;AATY,CAAA;
|
|
1
|
+
{"version":3,"file":"delegated-clicks.d.ts","names":[],"sources":["../../src/components/analytics/delegated-clicks.ts"],"sourcesContent":[],"mappings":";;;KAgBK,iCAAA;;AATY,CAAA;AA4aD,iBAAA,0BAAA,CACL,OAAsC,CAAtC,EAAA,iCAAsC,CAAA,EAAA,GAAA,GAAA,IAAA;AAiBjC,iBAAA,mBAAA,CAA2B,KAAA,EAAA,wBAAwB,CAAA,EAAA"}
|
|
@@ -205,12 +205,16 @@ function getInferredEventName(element) {
|
|
|
205
205
|
}
|
|
206
206
|
function getDelegatedAnalyticsData(element, interactiveElement) {
|
|
207
207
|
const explicitProperties = parseJsonObject(element.dataset.analyticsProperties);
|
|
208
|
+
const analyticsLabel = normalizeText(element.dataset.analyticsLabel);
|
|
209
|
+
const conversionLabel = normalizeText(element.dataset.analyticsConversionLabel);
|
|
208
210
|
return {
|
|
209
211
|
eventName: element.dataset.analyticsEvent || (clickTrackingOptions.inferClickEvents ? getInferredEventName(interactiveElement) : void 0),
|
|
210
212
|
eventType: parseEventType(element.dataset.analyticsEventType),
|
|
211
213
|
properties: {
|
|
212
214
|
...inferElementProperties(interactiveElement),
|
|
213
|
-
...explicitProperties
|
|
215
|
+
...explicitProperties,
|
|
216
|
+
analytics_label: analyticsLabel || explicitProperties?.analytics_label,
|
|
217
|
+
conversion_label: conversionLabel || explicitProperties?.conversion_label
|
|
214
218
|
},
|
|
215
219
|
conversion: parseConversion(element)
|
|
216
220
|
};
|
|
@@ -248,8 +252,10 @@ function analyticsAttributes(input) {
|
|
|
248
252
|
return {
|
|
249
253
|
"data-analytics-event": input.event,
|
|
250
254
|
"data-analytics-event-type": input.eventType,
|
|
255
|
+
"data-analytics-label": input.label,
|
|
251
256
|
"data-analytics-properties": input.properties ? JSON.stringify(input.properties) : void 0,
|
|
252
257
|
"data-analytics-conversion": conversion?.name,
|
|
258
|
+
"data-analytics-conversion-label": input.conversionLabel,
|
|
253
259
|
"data-analytics-conversion-value": conversion?.value ?? void 0
|
|
254
260
|
};
|
|
255
261
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"delegated-clicks.js","names":["clickTrackingOptions: Required<BindAnalyticsClickTrackingOptions>","url: URL | null","state: Record<string, string | boolean | undefined>","INFERRED_EVENT_NAMES: Record<string, string>"],"sources":["../../src/components/analytics/delegated-clicks.ts"],"sourcesContent":["'use client';\n\nimport { getAnalyticsClient, trackConversion, trackEvent } from './core';\nimport type {\n AnalyticsAttributesInput,\n AnalyticsConversionPayload,\n AnalyticsEventType,\n} from './types';\n\ntype DelegatedAnalyticsData = {\n eventName?: string;\n eventType: Exclude<AnalyticsEventType, 'conversion' | 'page_view'>;\n properties?: Record<string, unknown>;\n conversion?: AnalyticsConversionPayload;\n};\n\ntype BindAnalyticsClickTrackingOptions = {\n inferClickEvents?: boolean;\n};\n\nconst TRACKABLE_SELECTOR = [\n '[data-analytics-event]',\n '[data-analytics-conversion]',\n].join(',');\n\nconst CLICKABLE_ELEMENT_SELECTOR = [\n // Native HTML interactive elements\n 'a',\n 'area[href]',\n 'button',\n 'summary',\n 'input[type=\"submit\"]',\n 'input[type=\"button\"]',\n 'input[type=\"reset\"]',\n 'input[type=\"image\"]',\n // ARIA widget roles\n '[role=\"button\"]',\n '[role=\"link\"]',\n '[role=\"menuitem\"]',\n '[role=\"menuitemcheckbox\"]',\n '[role=\"menuitemradio\"]',\n '[role=\"tab\"]',\n '[role=\"switch\"]',\n '[role=\"checkbox\"]',\n '[role=\"radio\"]',\n '[role=\"option\"]',\n '[role=\"treeitem\"]',\n '[role=\"combobox\"]',\n // Custom focusable elements\n '[tabindex]:not([tabindex=\"-1\"])',\n].join(',');\n\nconst INTERACTIVE_SELECTOR = [\n 'a[href]',\n 'area[href]',\n 'button',\n 'summary',\n 'input[type=\"submit\"]',\n 'input[type=\"button\"]',\n 'input[type=\"reset\"]',\n 'input[type=\"image\"]',\n '[role=\"button\"]',\n '[role=\"link\"]',\n '[role=\"menuitem\"]',\n '[role=\"menuitemcheckbox\"]',\n '[role=\"menuitemradio\"]',\n '[role=\"tab\"]',\n '[role=\"switch\"]',\n '[role=\"checkbox\"]',\n '[role=\"radio\"]',\n '[role=\"option\"]',\n '[role=\"treeitem\"]',\n '[role=\"combobox\"]',\n '[tabindex]:not([tabindex=\"-1\"])',\n '[data-analytics-event]',\n '[data-analytics-conversion]',\n].join(',');\n\nlet clickTrackingOptions: Required<BindAnalyticsClickTrackingOptions> = {\n inferClickEvents: true,\n};\n\nfunction parseJsonObject(value: string | undefined) {\n if (!value) {\n return undefined;\n }\n\n try {\n const parsed = JSON.parse(value);\n return parsed && typeof parsed === 'object' && !Array.isArray(parsed)\n ? (parsed as Record<string, unknown>)\n : undefined;\n } catch {\n return undefined;\n }\n}\n\nfunction parseConversion(element: HTMLElement) {\n const conversionName = element.dataset.analyticsConversion;\n if (!conversionName) {\n return undefined;\n }\n\n return {\n name: conversionName,\n value: element.dataset.analyticsConversionValue || undefined,\n };\n}\n\nfunction parseEventType(value: string | undefined) {\n return value === 'custom' || value === 'cta_click' ? value : 'cta_click';\n}\n\nfunction normalizeText(value: string | null | undefined, maxLength = 160) {\n const normalized = value?.replace(/\\s+/g, ' ').trim();\n if (!normalized) {\n return undefined;\n }\n\n return normalized.length > maxLength\n ? `${normalized.slice(0, maxLength - 1)}…`\n : normalized;\n}\n\nfunction resolveAriaLabelledBy(element: HTMLElement) {\n const ids = element.getAttribute('aria-labelledby');\n if (!ids) return undefined;\n\n const text = ids\n .split(/\\s+/)\n .map((id) => document.getElementById(id)?.textContent)\n .filter(Boolean)\n .join(' ');\n\n return normalizeText(text);\n}\n\nfunction getInputValue(element: HTMLElement) {\n if (element instanceof HTMLInputElement) {\n return normalizeText(element.value) || normalizeText(element.placeholder);\n }\n\n if (element instanceof HTMLSelectElement) {\n return normalizeText(element.options[element.selectedIndex]?.text);\n }\n\n return undefined;\n}\n\nfunction getElementLabel(element: HTMLElement) {\n return (\n normalizeText(element.dataset.analyticsLabel) ||\n normalizeText(element.dataset.title) ||\n normalizeText(element.getAttribute('aria-label')) ||\n resolveAriaLabelledBy(element) ||\n normalizeText(element.getAttribute('title')) ||\n normalizeText(element.getAttribute('name')) ||\n getInputValue(element) ||\n normalizeText(element.innerText || element.textContent)\n );\n}\n\nconst SECTION_SELECTOR = [\n '[data-analytics-section]',\n '[data-section]',\n // HTML5 semantic elements\n 'section',\n 'nav',\n 'header',\n 'footer',\n 'main',\n 'aside',\n 'form',\n // ARIA landmark roles\n '[role=\"navigation\"]',\n '[role=\"banner\"]',\n '[role=\"contentinfo\"]',\n '[role=\"complementary\"]',\n '[role=\"region\"]',\n '[role=\"search\"]',\n '[role=\"form\"]',\n // ARIA container/widget roles\n '[role=\"tablist\"]',\n '[role=\"menu\"]',\n '[role=\"menubar\"]',\n '[role=\"toolbar\"]',\n '[role=\"listbox\"]',\n '[role=\"tree\"]',\n '[role=\"dialog\"]',\n '[role=\"alertdialog\"]',\n].join(',');\n\nfunction getClosestSectionLabel(element: HTMLElement) {\n const section = element.closest<HTMLElement>(SECTION_SELECTOR);\n\n if (!section) {\n return undefined;\n }\n\n return (\n normalizeText(section.dataset.analyticsSection) ||\n normalizeText(section.dataset.section) ||\n normalizeText(section.getAttribute('aria-label')) ||\n normalizeText(section.getAttribute('aria-roledescription')) ||\n normalizeText(section.getAttribute('id'))\n );\n}\n\nfunction getInteractionKind(element: HTMLElement) {\n if (\n element instanceof HTMLAnchorElement ||\n element instanceof HTMLAreaElement\n ) {\n return 'link';\n }\n\n if (element instanceof HTMLButtonElement) {\n return 'button';\n }\n\n if (element instanceof HTMLInputElement) {\n const type = element.type?.toLowerCase();\n if (\n type === 'submit' ||\n type === 'button' ||\n type === 'reset' ||\n type === 'image'\n ) {\n return 'button';\n }\n return 'input';\n }\n\n if (element.tagName === 'SUMMARY') {\n return 'summary';\n }\n\n const role = element.getAttribute('role');\n switch (role) {\n case 'button':\n return 'button';\n case 'link':\n return 'link';\n case 'menuitem':\n case 'menuitemcheckbox':\n case 'menuitemradio':\n return 'menu-item';\n case 'tab':\n return 'tab';\n case 'switch':\n case 'checkbox':\n case 'radio':\n return 'toggle';\n case 'option':\n case 'treeitem':\n return 'option';\n case 'combobox':\n return 'combobox';\n default:\n return 'element';\n }\n}\n\nfunction getHrefProperties(element: HTMLElement) {\n const rawHref =\n element instanceof HTMLAnchorElement ||\n element instanceof HTMLAreaElement\n ? element.href\n : element.getAttribute('href');\n\n if (!rawHref) {\n return {};\n }\n\n let url: URL | null = null;\n try {\n url = new URL(rawHref, window.location.href);\n } catch {}\n\n return {\n href: element.getAttribute('href') || undefined,\n href_host: url?.host || undefined,\n href_path: url ? `${url.pathname}${url.search || ''}` : undefined,\n is_external: url ? url.origin !== window.location.origin : undefined,\n target: element.getAttribute('target') || undefined,\n };\n}\n\nfunction getAriaState(element: HTMLElement) {\n const state: Record<string, string | boolean | undefined> = {};\n\n const expanded = element.getAttribute('aria-expanded');\n if (expanded) state.aria_expanded = expanded === 'true';\n\n const pressed = element.getAttribute('aria-pressed');\n if (pressed) state.aria_pressed = pressed === 'true';\n\n const selected = element.getAttribute('aria-selected');\n if (selected) state.aria_selected = selected === 'true';\n\n const checked = element.getAttribute('aria-checked');\n if (checked) state.aria_checked = checked === 'true' ? true : checked;\n\n if (\n element.hasAttribute('disabled') ||\n element.getAttribute('aria-disabled') === 'true'\n ) {\n state.disabled = true;\n }\n\n return state;\n}\n\nfunction inferElementProperties(element: HTMLElement) {\n return {\n label: getElementLabel(element),\n title: normalizeText(element.getAttribute('title')),\n aria_label: normalizeText(element.getAttribute('aria-label')),\n data_title: normalizeText(element.dataset.title),\n id: normalizeText(element.id),\n name: normalizeText(element.getAttribute('name')),\n role: normalizeText(element.getAttribute('role')),\n element_type: getInteractionKind(element),\n tag_name: element.tagName.toLowerCase(),\n section: getClosestSectionLabel(element),\n ...getHrefProperties(element),\n ...getAriaState(element),\n };\n}\n\nconst INFERRED_EVENT_NAMES: Record<string, string> = {\n link: 'link_click',\n tab: 'tab_click',\n 'menu-item': 'menu_item_click',\n toggle: 'toggle_click',\n option: 'option_click',\n summary: 'summary_click',\n combobox: 'combobox_click',\n};\n\nfunction getInferredEventName(element: HTMLElement) {\n const kind = getInteractionKind(element);\n return INFERRED_EVENT_NAMES[kind] || 'button_click';\n}\n\nfunction getDelegatedAnalyticsData(\n element: HTMLElement,\n interactiveElement: HTMLElement\n): DelegatedAnalyticsData {\n const explicitProperties = parseJsonObject(\n element.dataset.analyticsProperties\n );\n\n return {\n eventName:\n element.dataset.analyticsEvent ||\n (clickTrackingOptions.inferClickEvents\n ? getInferredEventName(interactiveElement)\n : undefined),\n eventType: parseEventType(element.dataset.analyticsEventType),\n properties: {\n ...inferElementProperties(interactiveElement),\n ...explicitProperties,\n },\n conversion: parseConversion(element),\n };\n}\n\nfunction findTrackableElement(target: EventTarget | null) {\n if (!(target instanceof Element)) {\n return null;\n }\n\n const explicitElement = target.closest<HTMLElement>(TRACKABLE_SELECTOR);\n if (explicitElement) {\n return explicitElement;\n }\n\n if (!clickTrackingOptions.inferClickEvents) {\n return null;\n }\n\n return target.closest<HTMLElement>(INTERACTIVE_SELECTOR);\n}\n\nfunction handleDelegatedClick(event: MouseEvent) {\n const element = findTrackableElement(event.target);\n if (\n !element ||\n event.defaultPrevented ||\n element.dataset.analyticsDisabled === 'true'\n ) {\n return;\n }\n\n const target = event.target instanceof Element ? event.target : null;\n const interactiveElement = target?.closest<HTMLElement>(\n CLICKABLE_ELEMENT_SELECTOR\n );\n if (\n !interactiveElement ||\n (!element.contains(interactiveElement) &&\n !interactiveElement.contains(element))\n ) {\n return;\n }\n\n const data = getDelegatedAnalyticsData(element, interactiveElement);\n if (data.eventName) {\n trackEvent(data.eventName, data.properties, {\n eventType: data.eventType,\n });\n }\n\n if (data.conversion) {\n trackConversion(\n data.conversion.name,\n data.properties,\n data.conversion.value\n );\n }\n\n void getAnalyticsClient()?.flush();\n}\n\nexport function bindAnalyticsClickTracking(\n options: BindAnalyticsClickTrackingOptions = {}\n) {\n if (typeof document === 'undefined') {\n return () => {};\n }\n\n clickTrackingOptions = {\n inferClickEvents: options.inferClickEvents ?? true,\n };\n\n document.addEventListener('click', handleDelegatedClick);\n\n return () => {\n document.removeEventListener('click', handleDelegatedClick);\n };\n}\n\nexport function analyticsAttributes(input: AnalyticsAttributesInput) {\n const conversion =\n typeof input.conversion === 'string'\n ? { name: input.conversion, value: input.conversionValue }\n : input.conversion;\n\n return {\n 'data-analytics-event': input.event,\n 'data-analytics-event-type': input.eventType,\n 'data-analytics-properties': input.properties\n ? JSON.stringify(input.properties)\n : undefined,\n 'data-analytics-conversion': conversion?.name,\n 'data-analytics-conversion-value': conversion?.value ?? undefined,\n } satisfies Record<string, string | number | undefined | null>;\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"delegated-clicks.js","names":["clickTrackingOptions: Required<BindAnalyticsClickTrackingOptions>","url: URL | null","state: Record<string, string | boolean | undefined>","INFERRED_EVENT_NAMES: Record<string, string>"],"sources":["../../src/components/analytics/delegated-clicks.ts"],"sourcesContent":["'use client';\n\nimport { getAnalyticsClient, trackConversion, trackEvent } from './core';\nimport type {\n AnalyticsAttributesInput,\n AnalyticsConversionPayload,\n AnalyticsEventType,\n} from './types';\n\ntype DelegatedAnalyticsData = {\n eventName?: string;\n eventType: Exclude<AnalyticsEventType, 'conversion' | 'page_view'>;\n properties?: Record<string, unknown>;\n conversion?: AnalyticsConversionPayload;\n};\n\ntype BindAnalyticsClickTrackingOptions = {\n inferClickEvents?: boolean;\n};\n\nconst TRACKABLE_SELECTOR = [\n '[data-analytics-event]',\n '[data-analytics-conversion]',\n].join(',');\n\nconst CLICKABLE_ELEMENT_SELECTOR = [\n // Native HTML interactive elements\n 'a',\n 'area[href]',\n 'button',\n 'summary',\n 'input[type=\"submit\"]',\n 'input[type=\"button\"]',\n 'input[type=\"reset\"]',\n 'input[type=\"image\"]',\n // ARIA widget roles\n '[role=\"button\"]',\n '[role=\"link\"]',\n '[role=\"menuitem\"]',\n '[role=\"menuitemcheckbox\"]',\n '[role=\"menuitemradio\"]',\n '[role=\"tab\"]',\n '[role=\"switch\"]',\n '[role=\"checkbox\"]',\n '[role=\"radio\"]',\n '[role=\"option\"]',\n '[role=\"treeitem\"]',\n '[role=\"combobox\"]',\n // Custom focusable elements\n '[tabindex]:not([tabindex=\"-1\"])',\n].join(',');\n\nconst INTERACTIVE_SELECTOR = [\n 'a[href]',\n 'area[href]',\n 'button',\n 'summary',\n 'input[type=\"submit\"]',\n 'input[type=\"button\"]',\n 'input[type=\"reset\"]',\n 'input[type=\"image\"]',\n '[role=\"button\"]',\n '[role=\"link\"]',\n '[role=\"menuitem\"]',\n '[role=\"menuitemcheckbox\"]',\n '[role=\"menuitemradio\"]',\n '[role=\"tab\"]',\n '[role=\"switch\"]',\n '[role=\"checkbox\"]',\n '[role=\"radio\"]',\n '[role=\"option\"]',\n '[role=\"treeitem\"]',\n '[role=\"combobox\"]',\n '[tabindex]:not([tabindex=\"-1\"])',\n '[data-analytics-event]',\n '[data-analytics-conversion]',\n].join(',');\n\nlet clickTrackingOptions: Required<BindAnalyticsClickTrackingOptions> = {\n inferClickEvents: true,\n};\n\nfunction parseJsonObject(value: string | undefined) {\n if (!value) {\n return undefined;\n }\n\n try {\n const parsed = JSON.parse(value);\n return parsed && typeof parsed === 'object' && !Array.isArray(parsed)\n ? (parsed as Record<string, unknown>)\n : undefined;\n } catch {\n return undefined;\n }\n}\n\nfunction parseConversion(element: HTMLElement) {\n const conversionName = element.dataset.analyticsConversion;\n if (!conversionName) {\n return undefined;\n }\n\n return {\n name: conversionName,\n value: element.dataset.analyticsConversionValue || undefined,\n };\n}\n\nfunction parseEventType(value: string | undefined) {\n return value === 'custom' || value === 'cta_click' ? value : 'cta_click';\n}\n\nfunction normalizeText(value: string | null | undefined, maxLength = 160) {\n const normalized = value?.replace(/\\s+/g, ' ').trim();\n if (!normalized) {\n return undefined;\n }\n\n return normalized.length > maxLength\n ? `${normalized.slice(0, maxLength - 1)}…`\n : normalized;\n}\n\nfunction resolveAriaLabelledBy(element: HTMLElement) {\n const ids = element.getAttribute('aria-labelledby');\n if (!ids) return undefined;\n\n const text = ids\n .split(/\\s+/)\n .map((id) => document.getElementById(id)?.textContent)\n .filter(Boolean)\n .join(' ');\n\n return normalizeText(text);\n}\n\nfunction getInputValue(element: HTMLElement) {\n if (element instanceof HTMLInputElement) {\n return normalizeText(element.value) || normalizeText(element.placeholder);\n }\n\n if (element instanceof HTMLSelectElement) {\n return normalizeText(element.options[element.selectedIndex]?.text);\n }\n\n return undefined;\n}\n\nfunction getElementLabel(element: HTMLElement) {\n return (\n normalizeText(element.dataset.analyticsLabel) ||\n normalizeText(element.dataset.title) ||\n normalizeText(element.getAttribute('aria-label')) ||\n resolveAriaLabelledBy(element) ||\n normalizeText(element.getAttribute('title')) ||\n normalizeText(element.getAttribute('name')) ||\n getInputValue(element) ||\n normalizeText(element.innerText || element.textContent)\n );\n}\n\nconst SECTION_SELECTOR = [\n '[data-analytics-section]',\n '[data-section]',\n // HTML5 semantic elements\n 'section',\n 'nav',\n 'header',\n 'footer',\n 'main',\n 'aside',\n 'form',\n // ARIA landmark roles\n '[role=\"navigation\"]',\n '[role=\"banner\"]',\n '[role=\"contentinfo\"]',\n '[role=\"complementary\"]',\n '[role=\"region\"]',\n '[role=\"search\"]',\n '[role=\"form\"]',\n // ARIA container/widget roles\n '[role=\"tablist\"]',\n '[role=\"menu\"]',\n '[role=\"menubar\"]',\n '[role=\"toolbar\"]',\n '[role=\"listbox\"]',\n '[role=\"tree\"]',\n '[role=\"dialog\"]',\n '[role=\"alertdialog\"]',\n].join(',');\n\nfunction getClosestSectionLabel(element: HTMLElement) {\n const section = element.closest<HTMLElement>(SECTION_SELECTOR);\n\n if (!section) {\n return undefined;\n }\n\n return (\n normalizeText(section.dataset.analyticsSection) ||\n normalizeText(section.dataset.section) ||\n normalizeText(section.getAttribute('aria-label')) ||\n normalizeText(section.getAttribute('aria-roledescription')) ||\n normalizeText(section.getAttribute('id'))\n );\n}\n\nfunction getInteractionKind(element: HTMLElement) {\n if (\n element instanceof HTMLAnchorElement ||\n element instanceof HTMLAreaElement\n ) {\n return 'link';\n }\n\n if (element instanceof HTMLButtonElement) {\n return 'button';\n }\n\n if (element instanceof HTMLInputElement) {\n const type = element.type?.toLowerCase();\n if (\n type === 'submit' ||\n type === 'button' ||\n type === 'reset' ||\n type === 'image'\n ) {\n return 'button';\n }\n return 'input';\n }\n\n if (element.tagName === 'SUMMARY') {\n return 'summary';\n }\n\n const role = element.getAttribute('role');\n switch (role) {\n case 'button':\n return 'button';\n case 'link':\n return 'link';\n case 'menuitem':\n case 'menuitemcheckbox':\n case 'menuitemradio':\n return 'menu-item';\n case 'tab':\n return 'tab';\n case 'switch':\n case 'checkbox':\n case 'radio':\n return 'toggle';\n case 'option':\n case 'treeitem':\n return 'option';\n case 'combobox':\n return 'combobox';\n default:\n return 'element';\n }\n}\n\nfunction getHrefProperties(element: HTMLElement) {\n const rawHref =\n element instanceof HTMLAnchorElement ||\n element instanceof HTMLAreaElement\n ? element.href\n : element.getAttribute('href');\n\n if (!rawHref) {\n return {};\n }\n\n let url: URL | null = null;\n try {\n url = new URL(rawHref, window.location.href);\n } catch {}\n\n return {\n href: element.getAttribute('href') || undefined,\n href_host: url?.host || undefined,\n href_path: url ? `${url.pathname}${url.search || ''}` : undefined,\n is_external: url ? url.origin !== window.location.origin : undefined,\n target: element.getAttribute('target') || undefined,\n };\n}\n\nfunction getAriaState(element: HTMLElement) {\n const state: Record<string, string | boolean | undefined> = {};\n\n const expanded = element.getAttribute('aria-expanded');\n if (expanded) state.aria_expanded = expanded === 'true';\n\n const pressed = element.getAttribute('aria-pressed');\n if (pressed) state.aria_pressed = pressed === 'true';\n\n const selected = element.getAttribute('aria-selected');\n if (selected) state.aria_selected = selected === 'true';\n\n const checked = element.getAttribute('aria-checked');\n if (checked) state.aria_checked = checked === 'true' ? true : checked;\n\n if (\n element.hasAttribute('disabled') ||\n element.getAttribute('aria-disabled') === 'true'\n ) {\n state.disabled = true;\n }\n\n return state;\n}\n\nfunction inferElementProperties(element: HTMLElement) {\n return {\n label: getElementLabel(element),\n title: normalizeText(element.getAttribute('title')),\n aria_label: normalizeText(element.getAttribute('aria-label')),\n data_title: normalizeText(element.dataset.title),\n id: normalizeText(element.id),\n name: normalizeText(element.getAttribute('name')),\n role: normalizeText(element.getAttribute('role')),\n element_type: getInteractionKind(element),\n tag_name: element.tagName.toLowerCase(),\n section: getClosestSectionLabel(element),\n ...getHrefProperties(element),\n ...getAriaState(element),\n };\n}\n\nconst INFERRED_EVENT_NAMES: Record<string, string> = {\n link: 'link_click',\n tab: 'tab_click',\n 'menu-item': 'menu_item_click',\n toggle: 'toggle_click',\n option: 'option_click',\n summary: 'summary_click',\n combobox: 'combobox_click',\n};\n\nfunction getInferredEventName(element: HTMLElement) {\n const kind = getInteractionKind(element);\n return INFERRED_EVENT_NAMES[kind] || 'button_click';\n}\n\nfunction getDelegatedAnalyticsData(\n element: HTMLElement,\n interactiveElement: HTMLElement\n): DelegatedAnalyticsData {\n const explicitProperties = parseJsonObject(\n element.dataset.analyticsProperties\n );\n const analyticsLabel = normalizeText(element.dataset.analyticsLabel);\n const conversionLabel = normalizeText(\n element.dataset.analyticsConversionLabel\n );\n\n return {\n eventName:\n element.dataset.analyticsEvent ||\n (clickTrackingOptions.inferClickEvents\n ? getInferredEventName(interactiveElement)\n : undefined),\n eventType: parseEventType(element.dataset.analyticsEventType),\n properties: {\n ...inferElementProperties(interactiveElement),\n ...explicitProperties,\n analytics_label:\n analyticsLabel ||\n (explicitProperties?.analytics_label as string | undefined),\n conversion_label:\n conversionLabel ||\n (explicitProperties?.conversion_label as string | undefined),\n },\n conversion: parseConversion(element),\n };\n}\n\nfunction findTrackableElement(target: EventTarget | null) {\n if (!(target instanceof Element)) {\n return null;\n }\n\n const explicitElement = target.closest<HTMLElement>(TRACKABLE_SELECTOR);\n if (explicitElement) {\n return explicitElement;\n }\n\n if (!clickTrackingOptions.inferClickEvents) {\n return null;\n }\n\n return target.closest<HTMLElement>(INTERACTIVE_SELECTOR);\n}\n\nfunction handleDelegatedClick(event: MouseEvent) {\n const element = findTrackableElement(event.target);\n if (\n !element ||\n event.defaultPrevented ||\n element.dataset.analyticsDisabled === 'true'\n ) {\n return;\n }\n\n const target = event.target instanceof Element ? event.target : null;\n const interactiveElement = target?.closest<HTMLElement>(\n CLICKABLE_ELEMENT_SELECTOR\n );\n if (\n !interactiveElement ||\n (!element.contains(interactiveElement) &&\n !interactiveElement.contains(element))\n ) {\n return;\n }\n\n const data = getDelegatedAnalyticsData(element, interactiveElement);\n if (data.eventName) {\n trackEvent(data.eventName, data.properties, {\n eventType: data.eventType,\n });\n }\n\n if (data.conversion) {\n trackConversion(\n data.conversion.name,\n data.properties,\n data.conversion.value\n );\n }\n\n void getAnalyticsClient()?.flush();\n}\n\nexport function bindAnalyticsClickTracking(\n options: BindAnalyticsClickTrackingOptions = {}\n) {\n if (typeof document === 'undefined') {\n return () => {};\n }\n\n clickTrackingOptions = {\n inferClickEvents: options.inferClickEvents ?? true,\n };\n\n document.addEventListener('click', handleDelegatedClick);\n\n return () => {\n document.removeEventListener('click', handleDelegatedClick);\n };\n}\n\nexport function analyticsAttributes(input: AnalyticsAttributesInput) {\n const conversion =\n typeof input.conversion === 'string'\n ? { name: input.conversion, value: input.conversionValue }\n : input.conversion;\n\n return {\n 'data-analytics-event': input.event,\n 'data-analytics-event-type': input.eventType,\n 'data-analytics-label': input.label,\n 'data-analytics-properties': input.properties\n ? JSON.stringify(input.properties)\n : undefined,\n 'data-analytics-conversion': conversion?.name,\n 'data-analytics-conversion-label': input.conversionLabel,\n 'data-analytics-conversion-value': conversion?.value ?? undefined,\n } satisfies Record<string, string | number | undefined | null>;\n}\n"],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { AnalyticsConfig } from "./types.js";
|
|
2
2
|
import { trackConversion, trackEvent, trackPageView } from "./core.js";
|
|
3
|
-
import * as
|
|
3
|
+
import * as react_jsx_runtime15 from "react/jsx-runtime";
|
|
4
4
|
|
|
5
5
|
//#region src/components/analytics/provider.d.ts
|
|
6
6
|
declare function AnalyticsProvider({
|
|
@@ -9,7 +9,7 @@ declare function AnalyticsProvider({
|
|
|
9
9
|
}: {
|
|
10
10
|
children: React.ReactNode;
|
|
11
11
|
config?: AnalyticsConfig;
|
|
12
|
-
}):
|
|
12
|
+
}): react_jsx_runtime15.JSX.Element;
|
|
13
13
|
declare function useAnalytics(): {
|
|
14
14
|
enabled: boolean;
|
|
15
15
|
trackPageView: typeof trackPageView;
|
|
@@ -50,8 +50,10 @@ type TrackEventOptions = {
|
|
|
50
50
|
type AnalyticsAttributesInput = {
|
|
51
51
|
event?: string;
|
|
52
52
|
eventType?: Exclude<AnalyticsEventType, 'conversion' | 'page_view'>;
|
|
53
|
+
label?: string;
|
|
53
54
|
properties?: Record<string, unknown>;
|
|
54
55
|
conversion?: AnalyticsConversionPayload | string;
|
|
56
|
+
conversionLabel?: string;
|
|
55
57
|
conversionValue?: number | string | null;
|
|
56
58
|
};
|
|
57
59
|
//#endregion
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","names":[],"sources":["../../src/components/analytics/types.ts"],"sourcesContent":[],"mappings":";KAAY,kBAAA;AAAA,KAMA,mBAAA,GANkB;EAMlB,IAAA,CAAA,EAAA,MAAA;EAMA,OAAA,CAAA,EAAA,MAAA;EAQA,EAAA,CAAA,EAAA,MAAA;AAKZ,CAAA;AAKY,KAlBA,gBAAA,GAkBqB;EAGpB,MAAA,CAAA,EAAA,MAAA;EAGL,MAAA,CAAA,EAAA,MAAA;EAEA,QAAA,CAAA,EAAA,MAAA;EACG,IAAA,CAAA,EAAA,MAAA;EACI,OAAA,CAAA,EAAA,MAAA;CACA;AAA0B,KArB7B,iBAAA,GAqB6B;EAG7B,IAAA,CAAA,EAAA,MAAA;EAUA,KAAA,CAAA,EAAA,MAAA;CACU;AAAR,KA9BF,0BAAA,GA8BE;EACL,IAAA,EAAA,MAAA;EACM,KAAA,CAAA,EAAA,MAAA,GAAA,MAAA,GAAA,IAAA;CAAM;AAGT,KA9BA,qBAAA,GA8BwB;EAEd,SAAA,EAAA,MAAA;EAAR,SAAA,EAAA,MAAA;
|
|
1
|
+
{"version":3,"file":"types.d.ts","names":[],"sources":["../../src/components/analytics/types.ts"],"sourcesContent":[],"mappings":";KAAY,kBAAA;AAAA,KAMA,mBAAA,GANkB;EAMlB,IAAA,CAAA,EAAA,MAAA;EAMA,OAAA,CAAA,EAAA,MAAA;EAQA,EAAA,CAAA,EAAA,MAAA;AAKZ,CAAA;AAKY,KAlBA,gBAAA,GAkBqB;EAGpB,MAAA,CAAA,EAAA,MAAA;EAGL,MAAA,CAAA,EAAA,MAAA;EAEA,QAAA,CAAA,EAAA,MAAA;EACG,IAAA,CAAA,EAAA,MAAA;EACI,OAAA,CAAA,EAAA,MAAA;CACA;AAA0B,KArB7B,iBAAA,GAqB6B;EAG7B,IAAA,CAAA,EAAA,MAAA;EAUA,KAAA,CAAA,EAAA,MAAA;CACU;AAAR,KA9BF,0BAAA,GA8BE;EACL,IAAA,EAAA,MAAA;EACM,KAAA,CAAA,EAAA,MAAA,GAAA,MAAA,GAAA,IAAA;CAAM;AAGT,KA9BA,qBAAA,GA8BwB;EAEd,SAAA,EAAA,MAAA;EAAR,SAAA,EAAA,MAAA;EAEC,SAAA,EA/BF,kBA+BE;EACA,SAAA,EAAA,MAAA;EAA0B,UAAA,EAAA,MAAA;QA7BjC;;QAEA;WACG;eACI;eACA;;KAGH,eAAA;;;;;;;;;KAUA,iBAAA;cACE,QAAQ;SACb;eACM;;KAGH,wBAAA;;cAEE,QAAQ;;eAEP;eACA"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ComponentProps, ElementType } from "react";
|
|
2
|
-
import * as
|
|
2
|
+
import * as react_jsx_runtime1 from "react/jsx-runtime";
|
|
3
3
|
|
|
4
4
|
//#region src/components/container-animation/container-animation.d.ts
|
|
5
5
|
type ContainerAnimationProps<T extends ElementType = 'div'> = ComponentProps<'div'> & ComponentProps<T> & {
|
|
@@ -23,7 +23,7 @@ declare const ContainerAnimation: <T extends ElementType = "div">({
|
|
|
23
23
|
distance,
|
|
24
24
|
hideNotInView,
|
|
25
25
|
...props
|
|
26
|
-
}: ContainerAnimationProps<T>) =>
|
|
26
|
+
}: ContainerAnimationProps<T>) => react_jsx_runtime1.JSX.Element;
|
|
27
27
|
//#endregion
|
|
28
28
|
export { ContainerAnimation, ContainerAnimationProps };
|
|
29
29
|
//# sourceMappingURL=container-animation.d.ts.map
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { FieldPath, FieldValues, UseControllerProps } from "react-hook-form";
|
|
2
|
-
import * as
|
|
2
|
+
import * as react_jsx_runtime11 from "react/jsx-runtime";
|
|
3
3
|
import { Matcher } from "react-day-picker";
|
|
4
4
|
|
|
5
5
|
//#region src/components/date-field/DateField.d.ts
|
|
@@ -29,7 +29,7 @@ declare function DateField<TFieldValues extends FieldValues = FieldValues, TFiel
|
|
|
29
29
|
required,
|
|
30
30
|
help,
|
|
31
31
|
dateOnly
|
|
32
|
-
}: DateFieldProps<TFieldValues, TFieldName>):
|
|
32
|
+
}: DateFieldProps<TFieldValues, TFieldName>): react_jsx_runtime11.JSX.Element;
|
|
33
33
|
//#endregion
|
|
34
34
|
export { DateField, DateFieldProps };
|
|
35
35
|
//# sourceMappingURL=DateField.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DateField.d.ts","names":[],"sources":["../../src/components/date-field/DateField.tsx"],"sourcesContent":[],"mappings":";;;;;UA4BiB,oCACM,cAAc,gCAChB,UAAU,gBAAgB,UAAU,uBAC/C,KAAK,mBAAmB,cAAc;;;EAH/B,WAAA,CAAA,EAAA,MAAc;EACR,SAAA,CAAA,EAAA,MAAA;EAAc,QAAA,CAAA,EAOxB,OAPwB,GAOd,OAPc,EAAA,GAAA,SAAA;EACN,aAAA,CAAA,EAAA,OAAA;EAAV,YAAA,CAAA,EAQJ,IARI;EAAoC,QAAA,CAAA,EAS5C,IAT4C;EAAV,QAAA,CAAA,EAAA,OAAA;EACb,IAAA,CAAA,EAAA,MAAA;EAAc;EAAjC,QAAA,CAAA,EAAA,OAAA;;iBAeN,SAVc,CAAA,qBAWA,WAXA,GAWc,WAXd,EAAA,mBAYF,SAZE,CAYQ,YAZR,CAAA,GAYwB,SAZxB,CAYkC,YAZlC,CAAA,CAAA,CAAA;EAAA,IAAA;EAAA,KAAA;EAAA,WAAA;EAAA,aAAA;EAAA,QAAA;EAAA,SAAA;EAAA,QAAA;EAAA,YAAA;EAAA,QAAA;EAAA,IAAA;EAAA;AAAA,CAAA,EAyBpB,cAzBoB,CAyBL,YAzBK,EAyBS,UAzBT,CAAA,CAAA,EAyBoB,
|
|
1
|
+
{"version":3,"file":"DateField.d.ts","names":[],"sources":["../../src/components/date-field/DateField.tsx"],"sourcesContent":[],"mappings":";;;;;UA4BiB,oCACM,cAAc,gCAChB,UAAU,gBAAgB,UAAU,uBAC/C,KAAK,mBAAmB,cAAc;;;EAH/B,WAAA,CAAA,EAAA,MAAc;EACR,SAAA,CAAA,EAAA,MAAA;EAAc,QAAA,CAAA,EAOxB,OAPwB,GAOd,OAPc,EAAA,GAAA,SAAA;EACN,aAAA,CAAA,EAAA,OAAA;EAAV,YAAA,CAAA,EAQJ,IARI;EAAoC,QAAA,CAAA,EAS5C,IAT4C;EAAV,QAAA,CAAA,EAAA,OAAA;EACb,IAAA,CAAA,EAAA,MAAA;EAAc;EAAjC,QAAA,CAAA,EAAA,OAAA;;iBAeN,SAVc,CAAA,qBAWA,WAXA,GAWc,WAXd,EAAA,mBAYF,SAZE,CAYQ,YAZR,CAAA,GAYwB,SAZxB,CAYkC,YAZlC,CAAA,CAAA,CAAA;EAAA,IAAA;EAAA,KAAA;EAAA,WAAA;EAAA,aAAA;EAAA,QAAA;EAAA,SAAA;EAAA,QAAA;EAAA,YAAA;EAAA,QAAA;EAAA,IAAA;EAAA;AAAA,CAAA,EAyBpB,cAzBoB,CAyBL,YAzBK,EAyBS,UAzBT,CAAA,CAAA,EAyBoB,mBAAA,CAAA,GAAA,CAAA,OAzBpB"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { FieldPath, FieldValues, UseControllerProps } from "react-hook-form";
|
|
2
|
-
import * as
|
|
2
|
+
import * as react_jsx_runtime2 from "react/jsx-runtime";
|
|
3
3
|
import { Matcher } from "react-day-picker";
|
|
4
4
|
|
|
5
5
|
//#region src/components/date-hour-field/DateHourField.d.ts
|
|
@@ -29,7 +29,7 @@ declare function DateHourField<TFieldValues extends FieldValues = FieldValues, T
|
|
|
29
29
|
help,
|
|
30
30
|
hourPlaceholder,
|
|
31
31
|
valueType
|
|
32
|
-
}: DateHourFieldProps<TFieldValues, TFieldName>):
|
|
32
|
+
}: DateHourFieldProps<TFieldValues, TFieldName>): react_jsx_runtime2.JSX.Element;
|
|
33
33
|
//#endregion
|
|
34
34
|
export { DateHourField, DateHourFieldProps };
|
|
35
35
|
//# sourceMappingURL=DateHourField.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DateHourField.d.ts","names":[],"sources":["../../src/components/date-hour-field/DateHourField.tsx"],"sourcesContent":[],"mappings":";;;;;UA4CiB,wCACM,cAAc,gCAChB,UAAU,gBAAgB,UAAU,uBAC/C,KAAK,mBAAmB,cAAc;;;EAH/B,SAAA,CAAA,EAAA,MAAA;EACM,QAAA,CAAA,EAMV,OANU,GAMA,OANA,EAAA,GAAA,SAAA;EAAc,aAAA,CAAA,EAAA,OAAA;EACN,YAAA,CAAA,EAOd,IAPc;EAAV,QAAA,CAAA,EAQR,IARQ;EAAoC,QAAA,CAAA,EAAA,OAAA;EAAV,IAAA,CAAA,EAAA,MAAA;EACb,eAAA,CAAA,EAAA,MAAA;EAAc,SAAA,CAAA,EAAA,MAAA,GAAA,cAAA;;iBAcvC,aAVI,CAAA,qBAWU,WAXV,GAWwB,WAXxB,EAAA,mBAYQ,SAZR,CAYkB,YAZlB,CAAA,GAYkC,SAZlC,CAY4C,YAZ5C,CAAA,CAAA,CAAA;EAAA,IAAA;EAAA,KAAA;EAAA,WAAA;EAAA,aAAA;EAAA,QAAA;EAAA,SAAA;EAAA,QAAA;EAAA,YAAA;EAAA,QAAA;EAAA,IAAA;EAAA,eAAA;EAAA;AAAA,CAAA,EA0BV,kBA1BU,CA0BS,YA1BT,EA0BuB,UA1BvB,CAAA,CAAA,EA0BkC,
|
|
1
|
+
{"version":3,"file":"DateHourField.d.ts","names":[],"sources":["../../src/components/date-hour-field/DateHourField.tsx"],"sourcesContent":[],"mappings":";;;;;UA4CiB,wCACM,cAAc,gCAChB,UAAU,gBAAgB,UAAU,uBAC/C,KAAK,mBAAmB,cAAc;;;EAH/B,SAAA,CAAA,EAAA,MAAA;EACM,QAAA,CAAA,EAMV,OANU,GAMA,OANA,EAAA,GAAA,SAAA;EAAc,aAAA,CAAA,EAAA,OAAA;EACN,YAAA,CAAA,EAOd,IAPc;EAAV,QAAA,CAAA,EAQR,IARQ;EAAoC,QAAA,CAAA,EAAA,OAAA;EAAV,IAAA,CAAA,EAAA,MAAA;EACb,eAAA,CAAA,EAAA,MAAA;EAAc,SAAA,CAAA,EAAA,MAAA,GAAA,cAAA;;iBAcvC,aAVI,CAAA,qBAWU,WAXV,GAWwB,WAXxB,EAAA,mBAYQ,SAZR,CAYkB,YAZlB,CAAA,GAYkC,SAZlC,CAY4C,YAZ5C,CAAA,CAAA,CAAA;EAAA,IAAA;EAAA,KAAA;EAAA,WAAA;EAAA,aAAA;EAAA,QAAA;EAAA,SAAA;EAAA,QAAA;EAAA,YAAA;EAAA,QAAA;EAAA,IAAA;EAAA,eAAA;EAAA;AAAA,CAAA,EA0BV,kBA1BU,CA0BS,YA1BT,EA0BuB,UA1BvB,CAAA,CAAA,EA0BkC,kBAAA,CAAA,GAAA,CAAA,OA1BlC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Mask, Options } from "../src/hooks/with-mask.js";
|
|
2
2
|
import { FieldPath, FieldValues, UseControllerProps } from "react-hook-form";
|
|
3
3
|
import { Dispatch, SetStateAction } from "react";
|
|
4
|
-
import * as
|
|
4
|
+
import * as react_jsx_runtime12 from "react/jsx-runtime";
|
|
5
5
|
import { PopoverProps } from "@radix-ui/react-popover";
|
|
6
6
|
|
|
7
7
|
//#region src/components/input-suggest/input-suggest.d.ts
|
|
@@ -71,7 +71,7 @@ declare function InputSuggest<TFieldValues extends FieldValues = FieldValues, TF
|
|
|
71
71
|
debounceTime,
|
|
72
72
|
maxWait,
|
|
73
73
|
...props
|
|
74
|
-
}: InputSuggestProps<TFieldValues, TFieldName> & PopoverProps):
|
|
74
|
+
}: InputSuggestProps<TFieldValues, TFieldName> & PopoverProps): react_jsx_runtime12.JSX.Element;
|
|
75
75
|
//#endregion
|
|
76
76
|
export { InputSuggest, InputSuggestProps };
|
|
77
77
|
//# sourceMappingURL=input-suggest.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"input-suggest.d.ts","names":[],"sources":["../../src/components/input-suggest/input-suggest.tsx"],"sourcesContent":[],"mappings":";;;;;;;UAmCiB,uCACM,cAAc,gCAChB,UAAU,gBAAgB,UAAU,uBAC/C,mBAAmB,cAAc;;;EAH1B,QAAA,CAAA,EAAA,CAAA,MAAA,EAAiB,MAAA,EAAA,GAAA,IAAA;EACX,QAAA,CAAA,EAMV,QANU,CAMD,cANC,CAAA,MAAA,CAAA,CAAA;EAAc,KAAA,CAAA,EAAA,MAAA;EACN,WAAA,CAAA,EAAA,MAAA;EAAV,SAAA,CAAA,EAAA,MAAA;EAAoC,OAAA,EAAA,CAAA,MAAA,CAAA,EAAA,MAAA,EAAA,aAAA,CAAA,EAWrC,MAXqC,EAAA,GAAA;IAAV,IAAA,CAAA,EAAA;MAClB,EAAA,EAAA,MAAA,GAAA,MAAA;MAAc,CAAA,GAAA,EAAA,MAAA,CAAA,EAAA,GAAA;IAIrB,CAAA,EAAA;IAAT,OAAA,CAAA,EAAA,GAAA;EAMO,CAAA;EAqBX,QAAA,CAAA,EAAA,OAAA;EACO,KAAA,CAAA,EAAA,MAAA;EACE,kBAAA,CAAA,EAAA,OAAA;EAjCR,YAAA,CAAA,EAAA,GAAA,GAAA,IAAA;EAAkB,UAAA,CAAA,EAAA,OAAA;EAuCnB,OAAA,CAAA,EAAA,MAAY;EACE,IAAA,CAAA,EAAA,MAAA;EAAc,UAAA,EAAA,MAAA;EACN,MAAA,CAAA,EAAA,MAAA;EAAV,WAAA,CAAA,EAAA,CAAA,KAAA,EAAA,GAAA,EAAA,GAAA,GAAA;EAAoC,aAAA,CAAA,EAAA,CAAA,OAAA,EAAA,GAAA,EAAA,GAAA,GAAA;EAAV,KAAA,CAAA,EAAA,MAAA;EAE7C,UAAA,CAAA,EAAA,MAAA;EACA,IAAA,CAAA,EAbO,IAaP;EACA,WAAA,CAAA,EAbc,OAad;EACA,aAAA,CAAA,EAbgB,MAahB;EACA,OAAA,CAAA,EAAA,GAAA,GAAA,IAAA;EACA,YAAA,CAAA,EAAA,MAAA;EACA,OAAA,CAAA,EAAA,MAAA;;iBAVO,YAYP,CAAA,qBAXqB,WAWrB,GAXmC,WAWnC,EAAA,mBAVmB,SAUnB,CAV6B,YAU7B,CAAA,GAV6C,SAU7C,CAVuD,YAUvD,CAAA,CAAA,CAAA;EAAA,IAAA;EAAA,UAAA;EAAA,QAAA;EAAA,UAAA;EAAA,KAAA;EAAA,SAAA;EAAA,WAAA;EAAA,OAAA;EAAA,QAAA;EAAA,QAAA;EAAA,QAAA;EAAA,kBAAA;EAAA,KAAA;EAAA,KAAA;EAAA,YAAA;EAAA,UAAA;EAAA,OAAA;EAAA,IAAA;EAAA,MAAA;EAAA,WAAA;EAAA,aAAA;EAAA,KAAA;EAAA,IAAA;EAAA,WAAA;EAAA,QAAA;EAAA,OAAA;EAAA,aAAA;EAAA,YAAA;EAAA,OAAA;EAAA,GAAA;AAAA,CAAA,EAsBC,iBAtBD,CAsBmB,YAtBnB,EAsBiC,UAtBjC,CAAA,GAsB+C,YAtB/C,CAAA,EAsB2D,
|
|
1
|
+
{"version":3,"file":"input-suggest.d.ts","names":[],"sources":["../../src/components/input-suggest/input-suggest.tsx"],"sourcesContent":[],"mappings":";;;;;;;UAmCiB,uCACM,cAAc,gCAChB,UAAU,gBAAgB,UAAU,uBAC/C,mBAAmB,cAAc;;;EAH1B,QAAA,CAAA,EAAA,CAAA,MAAA,EAAiB,MAAA,EAAA,GAAA,IAAA;EACX,QAAA,CAAA,EAMV,QANU,CAMD,cANC,CAAA,MAAA,CAAA,CAAA;EAAc,KAAA,CAAA,EAAA,MAAA;EACN,WAAA,CAAA,EAAA,MAAA;EAAV,SAAA,CAAA,EAAA,MAAA;EAAoC,OAAA,EAAA,CAAA,MAAA,CAAA,EAAA,MAAA,EAAA,aAAA,CAAA,EAWrC,MAXqC,EAAA,GAAA;IAAV,IAAA,CAAA,EAAA;MAClB,EAAA,EAAA,MAAA,GAAA,MAAA;MAAc,CAAA,GAAA,EAAA,MAAA,CAAA,EAAA,GAAA;IAIrB,CAAA,EAAA;IAAT,OAAA,CAAA,EAAA,GAAA;EAMO,CAAA;EAqBX,QAAA,CAAA,EAAA,OAAA;EACO,KAAA,CAAA,EAAA,MAAA;EACE,kBAAA,CAAA,EAAA,OAAA;EAjCR,YAAA,CAAA,EAAA,GAAA,GAAA,IAAA;EAAkB,UAAA,CAAA,EAAA,OAAA;EAuCnB,OAAA,CAAA,EAAA,MAAY;EACE,IAAA,CAAA,EAAA,MAAA;EAAc,UAAA,EAAA,MAAA;EACN,MAAA,CAAA,EAAA,MAAA;EAAV,WAAA,CAAA,EAAA,CAAA,KAAA,EAAA,GAAA,EAAA,GAAA,GAAA;EAAoC,aAAA,CAAA,EAAA,CAAA,OAAA,EAAA,GAAA,EAAA,GAAA,GAAA;EAAV,KAAA,CAAA,EAAA,MAAA;EAE7C,UAAA,CAAA,EAAA,MAAA;EACA,IAAA,CAAA,EAbO,IAaP;EACA,WAAA,CAAA,EAbc,OAad;EACA,aAAA,CAAA,EAbgB,MAahB;EACA,OAAA,CAAA,EAAA,GAAA,GAAA,IAAA;EACA,YAAA,CAAA,EAAA,MAAA;EACA,OAAA,CAAA,EAAA,MAAA;;iBAVO,YAYP,CAAA,qBAXqB,WAWrB,GAXmC,WAWnC,EAAA,mBAVmB,SAUnB,CAV6B,YAU7B,CAAA,GAV6C,SAU7C,CAVuD,YAUvD,CAAA,CAAA,CAAA;EAAA,IAAA;EAAA,UAAA;EAAA,QAAA;EAAA,UAAA;EAAA,KAAA;EAAA,SAAA;EAAA,WAAA;EAAA,OAAA;EAAA,QAAA;EAAA,QAAA;EAAA,QAAA;EAAA,kBAAA;EAAA,KAAA;EAAA,KAAA;EAAA,YAAA;EAAA,UAAA;EAAA,OAAA;EAAA,IAAA;EAAA,MAAA;EAAA,WAAA;EAAA,aAAA;EAAA,KAAA;EAAA,IAAA;EAAA,WAAA;EAAA,QAAA;EAAA,OAAA;EAAA,aAAA;EAAA,YAAA;EAAA,OAAA;EAAA,GAAA;AAAA,CAAA,EAsBC,iBAtBD,CAsBmB,YAtBnB,EAsBiC,UAtBjC,CAAA,GAsB+C,YAtB/C,CAAA,EAsB2D,mBAAA,CAAA,GAAA,CAAA,OAtB3D"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { KanbanCardItemProps } from "./types.js";
|
|
2
|
-
import * as
|
|
2
|
+
import * as react_jsx_runtime20 from "react/jsx-runtime";
|
|
3
3
|
|
|
4
4
|
//#region src/components/kanban-dnd/kanban-card-item.d.ts
|
|
5
5
|
declare function KanbanCardItem({
|
|
@@ -8,7 +8,7 @@ declare function KanbanCardItem({
|
|
|
8
8
|
className,
|
|
9
9
|
getSelectedCardIds,
|
|
10
10
|
getSelectableItems
|
|
11
|
-
}: KanbanCardItemProps):
|
|
11
|
+
}: KanbanCardItemProps): react_jsx_runtime20.JSX.Element;
|
|
12
12
|
//#endregion
|
|
13
13
|
export { KanbanCardItem };
|
|
14
14
|
//# sourceMappingURL=kanban-card-item.d.ts.map
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { KanbanDndMonitorProps } from "./types.js";
|
|
2
|
-
import * as
|
|
2
|
+
import * as react_jsx_runtime21 from "react/jsx-runtime";
|
|
3
3
|
|
|
4
4
|
//#region src/components/kanban-dnd/kanban-dnd-monitor.d.ts
|
|
5
5
|
declare function KanbanDndMonitor<TColumn>({
|
|
@@ -23,7 +23,7 @@ declare function KanbanDndMonitor<TColumn>({
|
|
|
23
23
|
isAutoScrollEnabled,
|
|
24
24
|
renderIdleLayer,
|
|
25
25
|
className
|
|
26
|
-
}: KanbanDndMonitorProps<TColumn>):
|
|
26
|
+
}: KanbanDndMonitorProps<TColumn>): react_jsx_runtime21.JSX.Element;
|
|
27
27
|
//#endregion
|
|
28
28
|
export { KanbanDndMonitor };
|
|
29
29
|
//# sourceMappingURL=kanban-dnd-monitor.d.ts.map
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { KanbanDropZoneProps } from "./types.js";
|
|
2
|
-
import * as
|
|
2
|
+
import * as react_jsx_runtime22 from "react/jsx-runtime";
|
|
3
3
|
|
|
4
4
|
//#region src/components/kanban-dnd/kanban-dropzone.d.ts
|
|
5
5
|
declare function KanbanDropZone({
|
|
@@ -7,7 +7,7 @@ declare function KanbanDropZone({
|
|
|
7
7
|
id,
|
|
8
8
|
className,
|
|
9
9
|
isOverClassName
|
|
10
|
-
}: KanbanDropZoneProps):
|
|
10
|
+
}: KanbanDropZoneProps): react_jsx_runtime22.JSX.Element;
|
|
11
11
|
//#endregion
|
|
12
12
|
export { KanbanDropZone };
|
|
13
13
|
//# sourceMappingURL=kanban-dropzone.d.ts.map
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { KanbanSelectorProps } from "./types.js";
|
|
2
|
-
import * as
|
|
2
|
+
import * as react_jsx_runtime23 from "react/jsx-runtime";
|
|
3
3
|
|
|
4
4
|
//#region src/components/kanban-dnd/kanban-selector.d.ts
|
|
5
5
|
declare function KanbanSelector({
|
|
6
6
|
dragAreaId,
|
|
7
7
|
autoScrollMargin,
|
|
8
8
|
ignoredSlots
|
|
9
|
-
}: KanbanSelectorProps):
|
|
9
|
+
}: KanbanSelectorProps): react_jsx_runtime23.JSX.Element | null;
|
|
10
10
|
//#endregion
|
|
11
11
|
export { KanbanSelector };
|
|
12
12
|
//# sourceMappingURL=kanban-selector.d.ts.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { ServerLandingTextProps } from "./types.js";
|
|
2
2
|
import { ElementType } from "react";
|
|
3
|
-
import * as
|
|
3
|
+
import * as react_jsx_runtime0 from "react/jsx-runtime";
|
|
4
4
|
|
|
5
5
|
//#region src/components/landing-text/server-landing-text.d.ts
|
|
6
6
|
declare function ServerLandingText<TAs extends ElementType = 'span'>({
|
|
@@ -9,7 +9,7 @@ declare function ServerLandingText<TAs extends ElementType = 'span'>({
|
|
|
9
9
|
className,
|
|
10
10
|
registration,
|
|
11
11
|
...props
|
|
12
|
-
}: ServerLandingTextProps<TAs>):
|
|
12
|
+
}: ServerLandingTextProps<TAs>): react_jsx_runtime0.JSX.Element;
|
|
13
13
|
//#endregion
|
|
14
14
|
export { ServerLandingText };
|
|
15
15
|
//# sourceMappingURL=server-landing-text.d.ts.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import * as
|
|
1
|
+
import * as react_jsx_runtime0 from "react/jsx-runtime";
|
|
2
2
|
|
|
3
3
|
//#region src/components/page-header/page-header.d.ts
|
|
4
4
|
interface PageHeaderProps {
|
|
@@ -10,7 +10,7 @@ declare function PageHeader({
|
|
|
10
10
|
title,
|
|
11
11
|
help,
|
|
12
12
|
description
|
|
13
|
-
}: PageHeaderProps):
|
|
13
|
+
}: PageHeaderProps): react_jsx_runtime0.JSX.Element;
|
|
14
14
|
//#endregion
|
|
15
15
|
export { PageHeader, PageHeaderProps };
|
|
16
16
|
//# sourceMappingURL=page-header.d.ts.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { SelectorProps } from "../ui/selector.js";
|
|
2
2
|
import { FieldPath, FieldPathValue, FieldValues, UseControllerProps } from "react-hook-form";
|
|
3
|
-
import * as
|
|
3
|
+
import * as react_jsx_runtime13 from "react/jsx-runtime";
|
|
4
4
|
import { Options } from "nuqs";
|
|
5
5
|
|
|
6
6
|
//#region src/components/remote-selector/remote-selector.d.ts
|
|
@@ -38,7 +38,7 @@ declare function RemoteSelectorField<T, TFieldValues extends FieldValues = Field
|
|
|
38
38
|
...props
|
|
39
39
|
}: RemoteSelectorFieldProps<TFieldValues, TFieldName> & BaseRemoteSelectorProps<T> & {
|
|
40
40
|
withPortal?: boolean;
|
|
41
|
-
}):
|
|
41
|
+
}): react_jsx_runtime13.JSX.Element;
|
|
42
42
|
interface RemoteSelectorQueryProps<T> extends BaseRemoteSelectorProps<T> {
|
|
43
43
|
name: string;
|
|
44
44
|
defaultValue?: string;
|
|
@@ -58,7 +58,7 @@ declare function RemoteSelectorQuery<T>({
|
|
|
58
58
|
fieldLabel,
|
|
59
59
|
type,
|
|
60
60
|
...props
|
|
61
|
-
}: RemoteSelectorQueryProps<T>):
|
|
61
|
+
}: RemoteSelectorQueryProps<T>): react_jsx_runtime13.JSX.Element;
|
|
62
62
|
//#endregion
|
|
63
63
|
export { BaseRemoteSelectorProps, RemoteSelectorField, RemoteSelectorFieldProps, RemoteSelectorQuery, RemoteSelectorQueryProps, TUseData };
|
|
64
64
|
//# sourceMappingURL=remote-selector.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"remote-selector.d.ts","names":[],"sources":["../../src/components/remote-selector/remote-selector.tsx"],"sourcesContent":[],"mappings":";;;;;;KAwBY;QAKJ;;EALI,OAAA,CAAA,EAAA,OAAQ;EAWR,SAAA,CAAA,EAAA,OAAA;CACQ;AAAT,KADC,uBACD,CAAA,CAAA,CAAA,GAAA;EAC2B,OAAA,EAD3B,QAC2B,CADlB,CACkB,CAAA;EAAT,aAAA,CAAA,EAAX,UAAW,CAAA,QAAA,CAAS,CAAT,CAAA,CAAA,CAAA,CAAA,CAAA;EAAX,cAAA,CAAA,EAAA,OAAA;EAIF,WAAA,CAAA,EAAA,OAAA;CAAd,GADE,IACF,CAAA,aAAA,CAAc,CAAd,CAAA,EAAA,OAAA,GAAA,OAAA,GAAA,UAAA,GAAA,QAAA,GAAA,UAAA,GAAA,MAAA,GAAA,SAAA,GAAA,UAAA,GAAA,SAAA,GAAA,WAAA,CAAA;AADE,UAKa,wBALb,CAAA,qBAMmB,WANnB,GAMiC,WANjC,EAAA,mBAOiB,SAPjB,CAO2B,YAP3B,CAAA,GAO2C,SAP3C,CAOqD,YAPrD,CAAA,CAAA,SAQM,kBARN,CAQyB,YARzB,EAQuC,UARvC,CAAA,CAAA;EAAI,QAAA,CAAA,EAAA,OAAA;EAKS,QAAA,CAAA,EAAA,OAAA;EACM,YAAA,CAAA,EAKN,cALM,CAKS,YALT,EAKuB,UALvB,CAAA;EAAc,QAAA,CAAA,EAAA,CAAA,KAAA,EAAA,GAAA,EAAA,GAMR,OANQ,CAAA,IAAA,CAAA,GAAA,IAAA;EACN,SAAA,CAAA,EAAA,MAAA;;AAA0B,iBASzC,mBATyC,CAAA,CAAA,EAAA,qBAWlC,WAXkC,GAWpB,WAXoB,EAAA,mBAYpC,SAZoC,CAY1B,YAZ0B,CAAA,GAYV,SAZU,CAYA,YAZA,CAAA,CAAA,CAAA;EAAA,IAAA;EAAA,SAAA;EAAA,SAAA;EAAA,QAAA;EAAA,YAAA;EAAA,QAAA,EAmB7C,gBAnB6C;EAAA,OAAA;EAAA,aAAA;EAAA,UAAA;EAAA,cAAA;EAAA,WAAA;EAAA,GAAA;CAAA,EA0BtD,wBA1BsD,CA0B7B,YA1B6B,EA0Bf,UA1Be,CAAA,GA2BvD,uBA3BuD,CA2B/B,CA3B+B,CAAA,GAAA;EAAV,UAAA,CAAA,EAAA,OAAA;CAClB,CAAA,EA4B1B,
|
|
1
|
+
{"version":3,"file":"remote-selector.d.ts","names":[],"sources":["../../src/components/remote-selector/remote-selector.tsx"],"sourcesContent":[],"mappings":";;;;;;KAwBY;QAKJ;;EALI,OAAA,CAAA,EAAA,OAAQ;EAWR,SAAA,CAAA,EAAA,OAAA;CACQ;AAAT,KADC,uBACD,CAAA,CAAA,CAAA,GAAA;EAC2B,OAAA,EAD3B,QAC2B,CADlB,CACkB,CAAA;EAAT,aAAA,CAAA,EAAX,UAAW,CAAA,QAAA,CAAS,CAAT,CAAA,CAAA,CAAA,CAAA,CAAA;EAAX,cAAA,CAAA,EAAA,OAAA;EAIF,WAAA,CAAA,EAAA,OAAA;CAAd,GADE,IACF,CAAA,aAAA,CAAc,CAAd,CAAA,EAAA,OAAA,GAAA,OAAA,GAAA,UAAA,GAAA,QAAA,GAAA,UAAA,GAAA,MAAA,GAAA,SAAA,GAAA,UAAA,GAAA,SAAA,GAAA,WAAA,CAAA;AADE,UAKa,wBALb,CAAA,qBAMmB,WANnB,GAMiC,WANjC,EAAA,mBAOiB,SAPjB,CAO2B,YAP3B,CAAA,GAO2C,SAP3C,CAOqD,YAPrD,CAAA,CAAA,SAQM,kBARN,CAQyB,YARzB,EAQuC,UARvC,CAAA,CAAA;EAAI,QAAA,CAAA,EAAA,OAAA;EAKS,QAAA,CAAA,EAAA,OAAA;EACM,YAAA,CAAA,EAKN,cALM,CAKS,YALT,EAKuB,UALvB,CAAA;EAAc,QAAA,CAAA,EAAA,CAAA,KAAA,EAAA,GAAA,EAAA,GAMR,OANQ,CAAA,IAAA,CAAA,GAAA,IAAA;EACN,SAAA,CAAA,EAAA,MAAA;;AAA0B,iBASzC,mBATyC,CAAA,CAAA,EAAA,qBAWlC,WAXkC,GAWpB,WAXoB,EAAA,mBAYpC,SAZoC,CAY1B,YAZ0B,CAAA,GAYV,SAZU,CAYA,YAZA,CAAA,CAAA,CAAA;EAAA,IAAA;EAAA,SAAA;EAAA,SAAA;EAAA,QAAA;EAAA,YAAA;EAAA,QAAA,EAmB7C,gBAnB6C;EAAA,OAAA;EAAA,aAAA;EAAA,UAAA;EAAA,cAAA;EAAA,WAAA;EAAA,GAAA;CAAA,EA0BtD,wBA1BsD,CA0B7B,YA1B6B,EA0Bf,UA1Be,CAAA,GA2BvD,uBA3BuD,CA2B/B,CA3B+B,CAAA,GAAA;EAAV,UAAA,CAAA,EAAA,OAAA;CAClB,CAAA,EA4B1B,mBAAA,CAAA,GAAA,CAAA,OA5B0B;AAAc,UAoG1B,wBApG0B,CAAA,CAAA,CAAA,SAqGjC,uBArGiC,CAqGT,CArGS,CAAA,CAAA;EAGX,IAAA,EAAA,MAAA;EAAc,YAAA,CAAA,EAAA,MAAA;EAA7B,OAAA,CAAA,EAqGL,OArGK;EACY,QAAA,CAAA,EAAA,CAAA,KAAA,EAqGR,CArGQ,GAqGJ,CArGI,EAAA,GAAA,IAAA,EAAA,GAAA,IAAA;;AAJD,iBA4GZ,mBA5GY,CAAA,CAAA,CAAA,CAAA;EAAA,IAAA;EAAA,YAAA;EAAA,OAAA;EAAA,OAAA;EAAA,aAAA;EAAA,cAAA;EAAA,WAAA;EAAA,QAAA,EAoHhB,gBApHgB;EAAA,QAAA;EAAA,UAAA;EAAA,IAAA;EAAA,GAAA;AAAA,CAAA,EAyHzB,wBAzHyB,CAyHA,CAzHA,CAAA,CAAA,EAyHE,mBAAA,CAAA,GAAA,CAAA,OAzHF"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { ServerInfiniteScrollItemsProps } from "./types.js";
|
|
2
|
+
import * as react_jsx_runtime4 from "react/jsx-runtime";
|
|
3
|
+
|
|
4
|
+
//#region src/components/server-infinite-scroll/server-infinite-scroll-items.d.ts
|
|
5
|
+
declare function ServerInfiniteScrollItems<TPage>({
|
|
6
|
+
data,
|
|
7
|
+
previousPageData,
|
|
8
|
+
nextPageData,
|
|
9
|
+
paginationResultsKey,
|
|
10
|
+
itemPropName,
|
|
11
|
+
itemKey,
|
|
12
|
+
children
|
|
13
|
+
}: ServerInfiniteScrollItemsProps<TPage>): react_jsx_runtime4.JSX.Element | null;
|
|
14
|
+
//#endregion
|
|
15
|
+
export { ServerInfiniteScrollItems };
|
|
16
|
+
//# sourceMappingURL=server-infinite-scroll-items.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server-infinite-scroll-items.d.ts","names":[],"sources":["../../src/components/server-infinite-scroll/server-infinite-scroll-items.tsx"],"sourcesContent":[],"mappings":";;;;iBAuBS;;;;;;;;GAQN,+BAA+B,SAAM,kBAAA,CAAA,GAAA,CAAA,OAAA"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { cloneElement, isValidElement } from "react";
|
|
2
|
+
import { Fragment as Fragment$1, jsx } from "react/jsx-runtime";
|
|
3
|
+
|
|
4
|
+
//#region src/components/server-infinite-scroll/server-infinite-scroll-items.tsx
|
|
5
|
+
function getPageResults(data, paginationResultsKey) {
|
|
6
|
+
if (!data || typeof data !== "object") return [];
|
|
7
|
+
const results = data[paginationResultsKey];
|
|
8
|
+
return Array.isArray(results) ? results : [];
|
|
9
|
+
}
|
|
10
|
+
function getItemKey(item, itemKey, index) {
|
|
11
|
+
if (item && typeof item === "object") {
|
|
12
|
+
const key = item[itemKey];
|
|
13
|
+
if (typeof key === "string" || typeof key === "number") return key;
|
|
14
|
+
}
|
|
15
|
+
return index;
|
|
16
|
+
}
|
|
17
|
+
function ServerInfiniteScrollItems({ data, previousPageData, nextPageData, paginationResultsKey = "results", itemPropName = "data", itemKey = "id", children }) {
|
|
18
|
+
if (!isValidElement(children)) {
|
|
19
|
+
console.error("ServerInfiniteScrollItems: children must be a valid React element");
|
|
20
|
+
return null;
|
|
21
|
+
}
|
|
22
|
+
const results = getPageResults(data, paginationResultsKey);
|
|
23
|
+
const previousResults = getPageResults(previousPageData, paginationResultsKey);
|
|
24
|
+
const nextResults = getPageResults(nextPageData, paginationResultsKey);
|
|
25
|
+
const isNativeDomElement = typeof children.type === "string";
|
|
26
|
+
return /* @__PURE__ */ jsx(Fragment$1, { children: results.map((item, index) => {
|
|
27
|
+
const previousItem = index > 0 ? results[index - 1] : previousResults[previousResults.length - 1];
|
|
28
|
+
const nextItem = index < results.length - 1 ? results[index + 1] : nextResults[0];
|
|
29
|
+
return cloneElement(children, {
|
|
30
|
+
[itemPropName]: item,
|
|
31
|
+
...isNativeDomElement ? {} : {
|
|
32
|
+
nextItem,
|
|
33
|
+
previousItem
|
|
34
|
+
},
|
|
35
|
+
key: getItemKey(item, itemKey, index)
|
|
36
|
+
});
|
|
37
|
+
}) });
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
//#endregion
|
|
41
|
+
export { ServerInfiniteScrollItems, getPageResults };
|
|
42
|
+
//# sourceMappingURL=server-infinite-scroll-items.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server-infinite-scroll-items.js","names":[],"sources":["../../src/components/server-infinite-scroll/server-infinite-scroll-items.tsx"],"sourcesContent":["import { cloneElement, isValidElement } from 'react';\n\nimport type { ServerInfiniteScrollItemsProps } from './types';\n\nfunction getPageResults<TPage>(\n data: TPage | undefined,\n paginationResultsKey: string\n) {\n if (!data || typeof data !== 'object') return [];\n\n const results = (data as Record<string, unknown>)[paginationResultsKey];\n return Array.isArray(results) ? results : [];\n}\n\nfunction getItemKey(item: unknown, itemKey: string, index: number) {\n if (item && typeof item === 'object') {\n const key = (item as Record<string, unknown>)[itemKey];\n if (typeof key === 'string' || typeof key === 'number') return key;\n }\n\n return index;\n}\n\nfunction ServerInfiniteScrollItems<TPage>({\n data,\n previousPageData,\n nextPageData,\n paginationResultsKey = 'results',\n itemPropName = 'data',\n itemKey = 'id',\n children,\n}: ServerInfiniteScrollItemsProps<TPage>) {\n if (!isValidElement(children)) {\n console.error(\n 'ServerInfiniteScrollItems: children must be a valid React element'\n );\n return null;\n }\n\n const results = getPageResults(data, paginationResultsKey);\n const previousResults = getPageResults(\n previousPageData,\n paginationResultsKey\n );\n const nextResults = getPageResults(nextPageData, paginationResultsKey);\n const isNativeDomElement = typeof children.type === 'string';\n\n return (\n <>\n {results.map((item, index) => {\n const previousItem =\n index > 0\n ? results[index - 1]\n : previousResults[previousResults.length - 1];\n const nextItem =\n index < results.length - 1 ? results[index + 1] : nextResults[0];\n\n return cloneElement(children as React.ReactElement<any>, {\n [itemPropName]: item,\n ...(isNativeDomElement ? {} : { nextItem, previousItem }),\n key: getItemKey(item, itemKey, index),\n });\n })}\n </>\n );\n}\n\nexport { getPageResults, ServerInfiniteScrollItems };\n"],"mappings":";;;;AAIA,SAAS,eACP,MACA,sBACA;AACA,KAAI,CAAC,QAAQ,OAAO,SAAS,SAAU,QAAO,EAAE;CAEhD,MAAM,UAAW,KAAiC;AAClD,QAAO,MAAM,QAAQ,QAAQ,GAAG,UAAU,EAAE;;AAG9C,SAAS,WAAW,MAAe,SAAiB,OAAe;AACjE,KAAI,QAAQ,OAAO,SAAS,UAAU;EACpC,MAAM,MAAO,KAAiC;AAC9C,MAAI,OAAO,QAAQ,YAAY,OAAO,QAAQ,SAAU,QAAO;;AAGjE,QAAO;;AAGT,SAAS,0BAAiC,EACxC,MACA,kBACA,cACA,uBAAuB,WACvB,eAAe,QACf,UAAU,MACV,YACwC;AACxC,KAAI,CAAC,eAAe,SAAS,EAAE;AAC7B,UAAQ,MACN,oEACD;AACD,SAAO;;CAGT,MAAM,UAAU,eAAe,MAAM,qBAAqB;CAC1D,MAAM,kBAAkB,eACtB,kBACA,qBACD;CACD,MAAM,cAAc,eAAe,cAAc,qBAAqB;CACtE,MAAM,qBAAqB,OAAO,SAAS,SAAS;AAEpD,QACE,4CACG,QAAQ,KAAK,MAAM,UAAU;EAC5B,MAAM,eACJ,QAAQ,IACJ,QAAQ,QAAQ,KAChB,gBAAgB,gBAAgB,SAAS;EAC/C,MAAM,WACJ,QAAQ,QAAQ,SAAS,IAAI,QAAQ,QAAQ,KAAK,YAAY;AAEhE,SAAO,aAAa,UAAqC;IACtD,eAAe;GAChB,GAAI,qBAAqB,EAAE,GAAG;IAAE;IAAU;IAAc;GACxD,KAAK,WAAW,MAAM,SAAS,MAAM;GACtC,CAAC;GACF,GACD"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { ServerInfiniteScrollListProps } from "./types.js";
|
|
2
|
+
import * as react_jsx_runtime5 from "react/jsx-runtime";
|
|
3
|
+
|
|
4
|
+
//#region src/components/server-infinite-scroll/server-infinite-scroll-list.d.ts
|
|
5
|
+
declare function ServerInfiniteScrollList<TPage>({
|
|
6
|
+
data,
|
|
7
|
+
page,
|
|
8
|
+
fetchPageAction,
|
|
9
|
+
config,
|
|
10
|
+
containerId,
|
|
11
|
+
emptyState,
|
|
12
|
+
loadingState,
|
|
13
|
+
observerRootMargin,
|
|
14
|
+
observerThreshold,
|
|
15
|
+
className,
|
|
16
|
+
children
|
|
17
|
+
}: ServerInfiniteScrollListProps<TPage>): react_jsx_runtime5.JSX.Element;
|
|
18
|
+
//#endregion
|
|
19
|
+
export { ServerInfiniteScrollList };
|
|
20
|
+
//# sourceMappingURL=server-infinite-scroll-list.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server-infinite-scroll-list.d.ts","names":[],"sources":["../../src/components/server-infinite-scroll/server-infinite-scroll-list.tsx"],"sourcesContent":[],"mappings":";;;;iBAgCS;;;;;;;;;;;;GAYN,8BAA8B,SAAM,kBAAA,CAAA,GAAA,CAAA"}
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
import { cn } from "../src/lib/utils.js";
|
|
5
|
+
import { ServerInfiniteScrollItems, getPageResults } from "./server-infinite-scroll-items.js";
|
|
6
|
+
import { ServerInfiniteScrollObserver } from "./server-infinite-scroll-observer.js";
|
|
7
|
+
import { useCallback, useEffect, useMemo, useRef, useState } from "react";
|
|
8
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
9
|
+
|
|
10
|
+
//#region src/components/server-infinite-scroll/server-infinite-scroll-list.tsx
|
|
11
|
+
const DEFAULT_EMPTY_STATE = /* @__PURE__ */ jsx("div", {
|
|
12
|
+
className: "flex w-full justify-center py-4 text-xs text-muted-foreground",
|
|
13
|
+
children: "Nenhum dado encontrado"
|
|
14
|
+
});
|
|
15
|
+
function hasPaginationValue(data, paginationKey) {
|
|
16
|
+
if (!data || typeof data !== "object") return false;
|
|
17
|
+
const value = data[paginationKey];
|
|
18
|
+
return value !== null && value !== void 0 && value !== false;
|
|
19
|
+
}
|
|
20
|
+
function ServerInfiniteScrollList({ data, page = 1, fetchPageAction, config, containerId, emptyState, loadingState, observerRootMargin, observerThreshold, className, children }) {
|
|
21
|
+
const paginationResultsKey = config?.paginationResultsKey ?? "results";
|
|
22
|
+
const paginationNextKey = config?.paginationNextKey ?? "next";
|
|
23
|
+
const paginationPreviousKey = config?.paginationPreviousKey ?? "previous";
|
|
24
|
+
const itemPropName = config?.itemPropName ?? "data";
|
|
25
|
+
const itemKey = config?.itemKey ?? "id";
|
|
26
|
+
const [pages, setPages] = useState(data ? [{
|
|
27
|
+
data,
|
|
28
|
+
page
|
|
29
|
+
}] : []);
|
|
30
|
+
const pagesRef = useRef(pages);
|
|
31
|
+
const loadingPagesRef = useRef(/* @__PURE__ */ new Set());
|
|
32
|
+
useEffect(() => {
|
|
33
|
+
pagesRef.current = pages;
|
|
34
|
+
}, [pages]);
|
|
35
|
+
useEffect(() => {
|
|
36
|
+
if (!data) return;
|
|
37
|
+
setPages((currentPages) => {
|
|
38
|
+
const pageIndex = currentPages.findIndex((currentPage) => currentPage.page === page);
|
|
39
|
+
if (pageIndex >= 0) {
|
|
40
|
+
const updatedPages = [...currentPages];
|
|
41
|
+
updatedPages[pageIndex] = {
|
|
42
|
+
data,
|
|
43
|
+
page
|
|
44
|
+
};
|
|
45
|
+
return updatedPages;
|
|
46
|
+
}
|
|
47
|
+
return [...currentPages, {
|
|
48
|
+
data,
|
|
49
|
+
page
|
|
50
|
+
}].sort((a, b) => a.page - b.page);
|
|
51
|
+
});
|
|
52
|
+
}, [data, page]);
|
|
53
|
+
const loadPage = useCallback(async (direction) => {
|
|
54
|
+
const currentPages = pagesRef.current;
|
|
55
|
+
const firstPage$1 = currentPages[0];
|
|
56
|
+
const lastPage$1 = currentPages[currentPages.length - 1];
|
|
57
|
+
const boundaryPage = direction === "previous" ? firstPage$1 : lastPage$1;
|
|
58
|
+
if (!boundaryPage || !fetchPageAction) return;
|
|
59
|
+
const nextPage = direction === "previous" ? boundaryPage.page - 1 : boundaryPage.page + 1;
|
|
60
|
+
if (nextPage < 1) return;
|
|
61
|
+
if (currentPages.some((currentPage) => currentPage.page === nextPage) || loadingPagesRef.current.has(nextPage)) return;
|
|
62
|
+
const paginationKey = direction === "previous" ? paginationPreviousKey : paginationNextKey;
|
|
63
|
+
if (!hasPaginationValue(boundaryPage.data, paginationKey)) return;
|
|
64
|
+
loadingPagesRef.current.add(nextPage);
|
|
65
|
+
try {
|
|
66
|
+
const nextData = await fetchPageAction(nextPage);
|
|
67
|
+
setPages((currentPages$1) => {
|
|
68
|
+
if (currentPages$1.some((currentPage) => currentPage.page === nextPage)) return currentPages$1;
|
|
69
|
+
return [...currentPages$1, {
|
|
70
|
+
data: nextData,
|
|
71
|
+
page: nextPage
|
|
72
|
+
}].sort((a, b) => a.page - b.page);
|
|
73
|
+
});
|
|
74
|
+
} finally {
|
|
75
|
+
loadingPagesRef.current.delete(nextPage);
|
|
76
|
+
}
|
|
77
|
+
}, [
|
|
78
|
+
fetchPageAction,
|
|
79
|
+
paginationNextKey,
|
|
80
|
+
paginationPreviousKey
|
|
81
|
+
]);
|
|
82
|
+
const hasItems = useMemo(() => pages.some((pageData) => getPageResults(pageData.data, paginationResultsKey).length > 0), [pages, paginationResultsKey]);
|
|
83
|
+
const firstPage = pages[0];
|
|
84
|
+
const lastPage = pages[pages.length - 1];
|
|
85
|
+
const canLoadPrevious = !!firstPage && firstPage.page > 1 && hasPaginationValue(firstPage.data, paginationPreviousKey);
|
|
86
|
+
const canLoadNext = !!lastPage && hasPaginationValue(lastPage.data, paginationNextKey);
|
|
87
|
+
return /* @__PURE__ */ jsxs("div", {
|
|
88
|
+
className: cn("contents", className),
|
|
89
|
+
children: [
|
|
90
|
+
canLoadPrevious && /* @__PURE__ */ jsx(ServerInfiniteScrollObserver, {
|
|
91
|
+
containerId,
|
|
92
|
+
direction: "previous",
|
|
93
|
+
loadingState,
|
|
94
|
+
loadPage: () => loadPage("previous"),
|
|
95
|
+
rootMargin: observerRootMargin,
|
|
96
|
+
threshold: observerThreshold
|
|
97
|
+
}),
|
|
98
|
+
hasItems ? pages.map((pageData, index) => /* @__PURE__ */ jsx(ServerInfiniteScrollItems, {
|
|
99
|
+
data: pageData.data,
|
|
100
|
+
itemKey,
|
|
101
|
+
itemPropName,
|
|
102
|
+
nextPageData: pages[index + 1]?.data,
|
|
103
|
+
paginationResultsKey,
|
|
104
|
+
previousPageData: pages[index - 1]?.data,
|
|
105
|
+
children
|
|
106
|
+
}, `server-infinite-scroll-page-${pageData.page}`)) : emptyState ?? DEFAULT_EMPTY_STATE,
|
|
107
|
+
canLoadNext && /* @__PURE__ */ jsx(ServerInfiniteScrollObserver, {
|
|
108
|
+
containerId,
|
|
109
|
+
direction: "next",
|
|
110
|
+
loadingState,
|
|
111
|
+
loadPage: () => loadPage("next"),
|
|
112
|
+
rootMargin: observerRootMargin,
|
|
113
|
+
threshold: observerThreshold
|
|
114
|
+
})
|
|
115
|
+
]
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
//#endregion
|
|
120
|
+
export { ServerInfiniteScrollList };
|
|
121
|
+
//# sourceMappingURL=server-infinite-scroll-list.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server-infinite-scroll-list.js","names":["firstPage","lastPage","currentPages"],"sources":["../../src/components/server-infinite-scroll/server-infinite-scroll-list.tsx"],"sourcesContent":["'use client';\n\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react';\n\nimport { cn } from '@/lib/utils';\nimport {\n getPageResults,\n ServerInfiniteScrollItems,\n} from './server-infinite-scroll-items';\nimport { ServerInfiniteScrollObserver } from './server-infinite-scroll-observer';\nimport type {\n ServerInfiniteScrollDirection,\n ServerInfiniteScrollListProps,\n ServerInfiniteScrollPage,\n} from './types';\n\nconst DEFAULT_EMPTY_STATE = (\n <div className=\"flex w-full justify-center py-4 text-xs text-muted-foreground\">\n Nenhum dado encontrado\n </div>\n);\n\nfunction hasPaginationValue<TPage>(\n data: TPage | undefined,\n paginationKey: string\n) {\n if (!data || typeof data !== 'object') return false;\n\n const value = (data as Record<string, unknown>)[paginationKey];\n return value !== null && value !== undefined && value !== false;\n}\n\nfunction ServerInfiniteScrollList<TPage>({\n data,\n page = 1,\n fetchPageAction,\n config,\n containerId,\n emptyState,\n loadingState,\n observerRootMargin,\n observerThreshold,\n className,\n children,\n}: ServerInfiniteScrollListProps<TPage>) {\n const paginationResultsKey = config?.paginationResultsKey ?? 'results';\n const paginationNextKey = config?.paginationNextKey ?? 'next';\n const paginationPreviousKey = config?.paginationPreviousKey ?? 'previous';\n const itemPropName = config?.itemPropName ?? 'data';\n const itemKey = config?.itemKey ?? 'id';\n\n const [pages, setPages] = useState<ServerInfiniteScrollPage<TPage>[]>(\n data ? [{ data, page }] : []\n );\n const pagesRef = useRef(pages);\n const loadingPagesRef = useRef(new Set<number>());\n\n useEffect(() => {\n pagesRef.current = pages;\n }, [pages]);\n\n useEffect(() => {\n if (!data) return;\n\n setPages((currentPages) => {\n const pageIndex = currentPages.findIndex(\n (currentPage) => currentPage.page === page\n );\n\n if (pageIndex >= 0) {\n const updatedPages = [...currentPages];\n updatedPages[pageIndex] = { data, page };\n return updatedPages;\n }\n\n return [...currentPages, { data, page }].sort((a, b) => a.page - b.page);\n });\n }, [data, page]);\n\n const loadPage = useCallback(\n async (direction: ServerInfiniteScrollDirection) => {\n const currentPages = pagesRef.current;\n const firstPage = currentPages[0];\n const lastPage = currentPages[currentPages.length - 1];\n const boundaryPage = direction === 'previous' ? firstPage : lastPage;\n\n if (!boundaryPage || !fetchPageAction) return;\n\n const nextPage =\n direction === 'previous'\n ? boundaryPage.page - 1\n : boundaryPage.page + 1;\n\n if (nextPage < 1) return;\n\n const pageExists = currentPages.some(\n (currentPage) => currentPage.page === nextPage\n );\n if (pageExists || loadingPagesRef.current.has(nextPage)) return;\n\n const paginationKey =\n direction === 'previous' ? paginationPreviousKey : paginationNextKey;\n\n if (!hasPaginationValue(boundaryPage.data, paginationKey)) return;\n\n loadingPagesRef.current.add(nextPage);\n\n try {\n const nextData = await fetchPageAction(nextPage);\n\n setPages((currentPages) => {\n if (\n currentPages.some((currentPage) => currentPage.page === nextPage)\n ) {\n return currentPages;\n }\n\n return [...currentPages, { data: nextData, page: nextPage }].sort(\n (a, b) => a.page - b.page\n );\n });\n } finally {\n loadingPagesRef.current.delete(nextPage);\n }\n },\n [fetchPageAction, paginationNextKey, paginationPreviousKey]\n );\n\n const hasItems = useMemo(\n () =>\n pages.some(\n (pageData) =>\n getPageResults(pageData.data, paginationResultsKey).length > 0\n ),\n [pages, paginationResultsKey]\n );\n\n const firstPage = pages[0];\n const lastPage = pages[pages.length - 1];\n const canLoadPrevious =\n !!firstPage &&\n firstPage.page > 1 &&\n hasPaginationValue(firstPage.data, paginationPreviousKey);\n const canLoadNext =\n !!lastPage && hasPaginationValue(lastPage.data, paginationNextKey);\n\n return (\n <div className={cn('contents', className)}>\n {canLoadPrevious && (\n <ServerInfiniteScrollObserver\n containerId={containerId}\n direction=\"previous\"\n loadingState={loadingState}\n loadPage={() => loadPage('previous')}\n rootMargin={observerRootMargin}\n threshold={observerThreshold}\n />\n )}\n\n {hasItems\n ? pages.map((pageData, index) => (\n <ServerInfiniteScrollItems\n data={pageData.data}\n itemKey={itemKey}\n itemPropName={itemPropName}\n key={`server-infinite-scroll-page-${pageData.page}`}\n nextPageData={pages[index + 1]?.data}\n paginationResultsKey={paginationResultsKey}\n previousPageData={pages[index - 1]?.data}\n >\n {children}\n </ServerInfiniteScrollItems>\n ))\n : (emptyState ?? DEFAULT_EMPTY_STATE)}\n\n {canLoadNext && (\n <ServerInfiniteScrollObserver\n containerId={containerId}\n direction=\"next\"\n loadingState={loadingState}\n loadPage={() => loadPage('next')}\n rootMargin={observerRootMargin}\n threshold={observerThreshold}\n />\n )}\n </div>\n );\n}\n\nexport { ServerInfiniteScrollList };\n"],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { ServerInfiniteScrollDirection } from "./types.js";
|
|
2
|
+
import * as react_jsx_runtime6 from "react/jsx-runtime";
|
|
3
|
+
|
|
4
|
+
//#region src/components/server-infinite-scroll/server-infinite-scroll-observer.d.ts
|
|
5
|
+
type ServerInfiniteScrollObserverProps = {
|
|
6
|
+
direction: ServerInfiniteScrollDirection;
|
|
7
|
+
loadPage: () => Promise<void>;
|
|
8
|
+
containerId?: string;
|
|
9
|
+
loadingState?: React.ReactNode;
|
|
10
|
+
rootMargin?: string;
|
|
11
|
+
threshold?: number;
|
|
12
|
+
};
|
|
13
|
+
declare function ServerInfiniteScrollObserver({
|
|
14
|
+
direction,
|
|
15
|
+
loadPage,
|
|
16
|
+
containerId,
|
|
17
|
+
loadingState,
|
|
18
|
+
rootMargin,
|
|
19
|
+
threshold
|
|
20
|
+
}: ServerInfiniteScrollObserverProps): react_jsx_runtime6.JSX.Element;
|
|
21
|
+
//#endregion
|
|
22
|
+
export { ServerInfiniteScrollObserver };
|
|
23
|
+
//# sourceMappingURL=server-infinite-scroll-observer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server-infinite-scroll-observer.d.ts","names":[],"sources":["../../src/components/server-infinite-scroll/server-infinite-scroll-observer.tsx"],"sourcesContent":[],"mappings":";;;;KAQK,iCAAA;aACQ;kBACK;EAFb,WAAA,CAAA,EAAA,MAAA;EACQ,YAAA,CAAA,EAGI,KAAA,CAAM,SAHV;EACK,UAAA,CAAA,EAAA,MAAA;EAED,SAAM,CAAA,EAAA,MAAA;CAAS;AAAA,iBAKvB,4BAAA,CAA4B;EAAA,SAAA;EAAA,QAAA;EAAA,WAAA;EAAA,YAAA;EAAA,UAAA;EAAA;AAAA,CAAA,EAOlC,iCAPkC,CAAA,EAOD,kBAAA,CAAA,GAAA,CAAA,OAPC"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
import { useEffect, useRef, useState } from "react";
|
|
5
|
+
import { jsx } from "react/jsx-runtime";
|
|
6
|
+
import { Loader2 } from "lucide-react";
|
|
7
|
+
|
|
8
|
+
//#region src/components/server-infinite-scroll/server-infinite-scroll-observer.tsx
|
|
9
|
+
function ServerInfiniteScrollObserver({ direction, loadPage, containerId, loadingState, rootMargin = "400px", threshold = .1 }) {
|
|
10
|
+
const observerRef = useRef(null);
|
|
11
|
+
const isLoadingRef = useRef(false);
|
|
12
|
+
const [isLoading, setIsLoading] = useState(false);
|
|
13
|
+
useEffect(() => {
|
|
14
|
+
const element = observerRef.current;
|
|
15
|
+
if (!element) return;
|
|
16
|
+
const observer = new IntersectionObserver(async ([entry]) => {
|
|
17
|
+
if (!entry?.isIntersecting || isLoadingRef.current) return;
|
|
18
|
+
isLoadingRef.current = true;
|
|
19
|
+
setIsLoading(true);
|
|
20
|
+
try {
|
|
21
|
+
await loadPage();
|
|
22
|
+
} catch (error) {
|
|
23
|
+
console.error("ServerInfiniteScroll: error loading page", error);
|
|
24
|
+
} finally {
|
|
25
|
+
isLoadingRef.current = false;
|
|
26
|
+
setIsLoading(false);
|
|
27
|
+
}
|
|
28
|
+
}, {
|
|
29
|
+
root: containerId ? document.getElementById(containerId) : null,
|
|
30
|
+
rootMargin,
|
|
31
|
+
threshold
|
|
32
|
+
});
|
|
33
|
+
observer.observe(element);
|
|
34
|
+
return () => {
|
|
35
|
+
observer.disconnect();
|
|
36
|
+
};
|
|
37
|
+
}, [
|
|
38
|
+
containerId,
|
|
39
|
+
loadPage,
|
|
40
|
+
rootMargin,
|
|
41
|
+
threshold
|
|
42
|
+
]);
|
|
43
|
+
return /* @__PURE__ */ jsx("div", {
|
|
44
|
+
className: "flex min-h-10 w-full items-center justify-center py-4",
|
|
45
|
+
"data-direction": direction,
|
|
46
|
+
"data-server-infinite-scroll-observer": true,
|
|
47
|
+
ref: observerRef,
|
|
48
|
+
children: isLoading && (loadingState ?? /* @__PURE__ */ jsx(Loader2, { className: "size-4 animate-spin text-muted-foreground" }))
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
//#endregion
|
|
53
|
+
export { ServerInfiniteScrollObserver };
|
|
54
|
+
//# sourceMappingURL=server-infinite-scroll-observer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server-infinite-scroll-observer.js","names":[],"sources":["../../src/components/server-infinite-scroll/server-infinite-scroll-observer.tsx"],"sourcesContent":["'use client';\n\nimport { useEffect, useRef, useState } from 'react';\n\nimport { Loader2 } from 'lucide-react';\n\nimport type { ServerInfiniteScrollDirection } from './types';\n\ntype ServerInfiniteScrollObserverProps = {\n direction: ServerInfiniteScrollDirection;\n loadPage: () => Promise<void>;\n containerId?: string;\n loadingState?: React.ReactNode;\n rootMargin?: string;\n threshold?: number;\n};\n\nfunction ServerInfiniteScrollObserver({\n direction,\n loadPage,\n containerId,\n loadingState,\n rootMargin = '400px',\n threshold = 0.1,\n}: ServerInfiniteScrollObserverProps) {\n const observerRef = useRef<HTMLDivElement>(null);\n const isLoadingRef = useRef(false);\n const [isLoading, setIsLoading] = useState(false);\n\n useEffect(() => {\n const element = observerRef.current;\n if (!element) return;\n\n const observer = new IntersectionObserver(\n async ([entry]) => {\n if (!entry?.isIntersecting || isLoadingRef.current) return;\n\n isLoadingRef.current = true;\n setIsLoading(true);\n\n try {\n await loadPage();\n } catch (error) {\n console.error('ServerInfiniteScroll: error loading page', error);\n } finally {\n isLoadingRef.current = false;\n setIsLoading(false);\n }\n },\n {\n root: containerId ? document.getElementById(containerId) : null,\n rootMargin,\n threshold,\n }\n );\n\n observer.observe(element);\n\n return () => {\n observer.disconnect();\n };\n }, [containerId, loadPage, rootMargin, threshold]);\n\n return (\n <div\n className=\"flex min-h-10 w-full items-center justify-center py-4\"\n data-direction={direction}\n data-server-infinite-scroll-observer\n ref={observerRef}\n >\n {isLoading &&\n (loadingState ?? (\n <Loader2 className=\"size-4 animate-spin text-muted-foreground\" />\n ))}\n </div>\n );\n}\n\nexport { ServerInfiniteScrollObserver };\n"],"mappings":";;;;;;;;AAiBA,SAAS,6BAA6B,EACpC,WACA,UACA,aACA,cACA,aAAa,SACb,YAAY,MACwB;CACpC,MAAM,cAAc,OAAuB,KAAK;CAChD,MAAM,eAAe,OAAO,MAAM;CAClC,MAAM,CAAC,WAAW,gBAAgB,SAAS,MAAM;AAEjD,iBAAgB;EACd,MAAM,UAAU,YAAY;AAC5B,MAAI,CAAC,QAAS;EAEd,MAAM,WAAW,IAAI,qBACnB,OAAO,CAAC,WAAW;AACjB,OAAI,CAAC,OAAO,kBAAkB,aAAa,QAAS;AAEpD,gBAAa,UAAU;AACvB,gBAAa,KAAK;AAElB,OAAI;AACF,UAAM,UAAU;YACT,OAAO;AACd,YAAQ,MAAM,4CAA4C,MAAM;aACxD;AACR,iBAAa,UAAU;AACvB,iBAAa,MAAM;;KAGvB;GACE,MAAM,cAAc,SAAS,eAAe,YAAY,GAAG;GAC3D;GACA;GACD,CACF;AAED,WAAS,QAAQ,QAAQ;AAEzB,eAAa;AACX,YAAS,YAAY;;IAEtB;EAAC;EAAa;EAAU;EAAY;EAAU,CAAC;AAElD,QACE,oBAAC;EACC,WAAU;EACV,kBAAgB;EAChB;EACA,KAAK;YAEJ,cACE,gBACC,oBAAC,WAAQ,WAAU,8CAA8C;GAEjE"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { ServerInfiniteScrollInjectedProps, ServerInfiniteScrollProps } from "./types.js";
|
|
2
|
+
import * as react0 from "react";
|
|
3
|
+
|
|
4
|
+
//#region src/components/server-infinite-scroll/server-infinite-scroll.d.ts
|
|
5
|
+
declare function ServerInfiniteScroll<TPage>({
|
|
6
|
+
fetchPage,
|
|
7
|
+
initialData,
|
|
8
|
+
config,
|
|
9
|
+
children
|
|
10
|
+
}: ServerInfiniteScrollProps<TPage>): Promise<react0.ReactElement<ServerInfiniteScrollInjectedProps<TPage>, string | react0.JSXElementConstructor<any>>>;
|
|
11
|
+
//#endregion
|
|
12
|
+
export { ServerInfiniteScroll };
|
|
13
|
+
//# sourceMappingURL=server-infinite-scroll.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server-infinite-scroll.d.ts","names":[],"sources":["../../src/components/server-infinite-scroll/server-infinite-scroll.tsx"],"sourcesContent":[],"mappings":";;;;iBAee;;;;;GAKZ,0BAA0B,SAAM,QAAA,MAAA,CAAA,aAAA,kCAAA,iBAAA,MAAA,CAAA"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { cloneElement } from "react";
|
|
2
|
+
|
|
3
|
+
//#region src/components/server-infinite-scroll/server-infinite-scroll.tsx
|
|
4
|
+
const DEFAULT_CONFIG = {
|
|
5
|
+
paginationNextKey: "next",
|
|
6
|
+
paginationPreviousKey: "previous",
|
|
7
|
+
paginationResultsKey: "results",
|
|
8
|
+
itemPropName: "data",
|
|
9
|
+
itemKey: "id"
|
|
10
|
+
};
|
|
11
|
+
async function ServerInfiniteScroll({ fetchPage, initialData, config, children }) {
|
|
12
|
+
const mergedConfig = {
|
|
13
|
+
...DEFAULT_CONFIG,
|
|
14
|
+
...config
|
|
15
|
+
};
|
|
16
|
+
const page = mergedConfig.initialPage ?? 1;
|
|
17
|
+
const data = initialData ?? await fetchPage(page);
|
|
18
|
+
const fetchPageAction = async (nextPage) => {
|
|
19
|
+
"use server";
|
|
20
|
+
return fetchPage(nextPage);
|
|
21
|
+
};
|
|
22
|
+
return cloneElement(children, {
|
|
23
|
+
config: mergedConfig,
|
|
24
|
+
data,
|
|
25
|
+
fetchPageAction,
|
|
26
|
+
page
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
//#endregion
|
|
31
|
+
export { ServerInfiniteScroll };
|
|
32
|
+
//# sourceMappingURL=server-infinite-scroll.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server-infinite-scroll.js","names":[],"sources":["../../src/components/server-infinite-scroll/server-infinite-scroll.tsx"],"sourcesContent":["import { cloneElement } from 'react';\n\nimport type {\n ServerInfiniteScrollConfig,\n ServerInfiniteScrollProps,\n} from './types';\n\nconst DEFAULT_CONFIG = {\n paginationNextKey: 'next',\n paginationPreviousKey: 'previous',\n paginationResultsKey: 'results',\n itemPropName: 'data',\n itemKey: 'id',\n} satisfies ServerInfiniteScrollConfig;\n\nasync function ServerInfiniteScroll<TPage>({\n fetchPage,\n initialData,\n config,\n children,\n}: ServerInfiniteScrollProps<TPage>) {\n const mergedConfig = {\n ...DEFAULT_CONFIG,\n ...config,\n };\n const page = mergedConfig.initialPage ?? 1;\n const data = initialData ?? (await fetchPage(page));\n\n const fetchPageAction = async (nextPage: number): Promise<TPage> => {\n 'use server';\n\n return fetchPage(nextPage);\n };\n\n return cloneElement(children, {\n config: mergedConfig,\n data,\n fetchPageAction,\n page,\n });\n}\n\nexport { ServerInfiniteScroll };\n"],"mappings":";;;AAOA,MAAM,iBAAiB;CACrB,mBAAmB;CACnB,uBAAuB;CACvB,sBAAsB;CACtB,cAAc;CACd,SAAS;CACV;AAED,eAAe,qBAA4B,EACzC,WACA,aACA,QACA,YACmC;CACnC,MAAM,eAAe;EACnB,GAAG;EACH,GAAG;EACJ;CACD,MAAM,OAAO,aAAa,eAAe;CACzC,MAAM,OAAO,eAAgB,MAAM,UAAU,KAAK;CAElD,MAAM,kBAAkB,OAAO,aAAqC;AAClE;AAEA,SAAO,UAAU,SAAS;;AAG5B,QAAO,aAAa,UAAU;EAC5B,QAAQ;EACR;EACA;EACA;EACD,CAAC"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { ReactElement, ReactNode } from "react";
|
|
2
|
+
|
|
3
|
+
//#region src/components/server-infinite-scroll/types.d.ts
|
|
4
|
+
type ServerInfiniteScrollDirection = 'previous' | 'next';
|
|
5
|
+
type ServerInfiniteScrollConfig = {
|
|
6
|
+
initialPage?: number;
|
|
7
|
+
paginationNextKey?: string;
|
|
8
|
+
paginationPreviousKey?: string;
|
|
9
|
+
paginationResultsKey?: string;
|
|
10
|
+
itemPropName?: string;
|
|
11
|
+
itemKey?: string;
|
|
12
|
+
};
|
|
13
|
+
type ServerInfiniteScrollPage<TPage> = {
|
|
14
|
+
data: TPage;
|
|
15
|
+
page: number;
|
|
16
|
+
};
|
|
17
|
+
type ServerInfiniteScrollFetchPage<TPage> = (page: number) => Promise<TPage>;
|
|
18
|
+
type ServerInfiniteScrollInjectedProps<TPage> = {
|
|
19
|
+
data?: TPage;
|
|
20
|
+
page?: number;
|
|
21
|
+
fetchPageAction?: ServerInfiniteScrollFetchPage<TPage>;
|
|
22
|
+
config?: ServerInfiniteScrollConfig;
|
|
23
|
+
};
|
|
24
|
+
type ServerInfiniteScrollProps<TPage> = {
|
|
25
|
+
fetchPage: ServerInfiniteScrollFetchPage<TPage>;
|
|
26
|
+
initialData?: TPage;
|
|
27
|
+
config?: ServerInfiniteScrollConfig;
|
|
28
|
+
children: ReactElement<ServerInfiniteScrollInjectedProps<TPage>>;
|
|
29
|
+
};
|
|
30
|
+
type ServerInfiniteScrollListProps<TPage> = ServerInfiniteScrollInjectedProps<TPage> & {
|
|
31
|
+
children: ReactElement;
|
|
32
|
+
containerId?: string;
|
|
33
|
+
emptyState?: ReactNode;
|
|
34
|
+
loadingState?: ReactNode;
|
|
35
|
+
observerRootMargin?: string;
|
|
36
|
+
observerThreshold?: number;
|
|
37
|
+
className?: string;
|
|
38
|
+
};
|
|
39
|
+
type ServerInfiniteScrollItemsProps<TPage> = {
|
|
40
|
+
data?: TPage;
|
|
41
|
+
previousPageData?: TPage;
|
|
42
|
+
nextPageData?: TPage;
|
|
43
|
+
paginationResultsKey?: string;
|
|
44
|
+
itemPropName?: string;
|
|
45
|
+
itemKey?: string;
|
|
46
|
+
children: ReactElement;
|
|
47
|
+
};
|
|
48
|
+
//#endregion
|
|
49
|
+
export { ServerInfiniteScrollConfig, ServerInfiniteScrollDirection, ServerInfiniteScrollFetchPage, ServerInfiniteScrollInjectedProps, ServerInfiniteScrollItemsProps, ServerInfiniteScrollListProps, ServerInfiniteScrollPage, ServerInfiniteScrollProps };
|
|
50
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","names":[],"sources":["../../src/components/server-infinite-scroll/types.ts"],"sourcesContent":[],"mappings":";;;KAEY,6BAAA;KAEA,0BAAA;EAFA,WAAA,CAAA,EAAA,MAAA;EAEA,iBAAA,CAAA,EAAA,MAAA;EASA,qBAAA,CAAA,EAAA,MAAwB;EAKxB,oBAAA,CAAA,EAAA,MAAA;EAIA,YAAA,CAAA,EAAA,MAAA;EACH,OAAA,CAAA,EAAA,MAAA;CAEyC;AAA9B,KAZR,wBAYQ,CAAA,KAAA,CAAA,GAAA;EACT,IAAA,EAZH,KAYG;EAA0B,IAAA,EAAA,MAAA;AAGrC,CAAA;AAC2C,KAZ/B,6BAY+B,CAAA,KAAA,CAAA,GAAA,CAAA,IAAA,EAAA,MAAA,EAAA,GAVtC,OAUsC,CAV9B,KAU8B,CAAA;AAA9B,KARD,iCAQC,CAAA,KAAA,CAAA,GAAA;EACG,IAAA,CAAA,EARP,KAQO;EACL,IAAA,CAAA,EAAA,MAAA;EACgD,eAAA,CAAA,EARvC,6BAQuC,CART,KAQS,CAAA;EAAlC,MAAA,CAAA,EAPd,0BAOc;CAAb;AAAY,KAJZ,yBAIY,CAAA,KAAA,CAAA,GAAA;EAGZ,SAAA,EANC,6BAM4B,CANE,KAMF,CAAA;EACL,WAAA,CAAA,EANpB,KAMoB;EAAlC,MAAA,CAAA,EALS,0BAKT;EACY,QAAA,EALF,YAKE,CALW,iCAKX,CAL6C,KAK7C,CAAA,CAAA;CAEG;AACE,KALP,6BAKO,CAAA,KAAA,CAAA,GAJjB,iCAIiB,CAJiB,KAIjB,CAAA,GAAA;EAAS,QAAA,EAHd,YAGc;EAMhB,WAAA,CAAA,EAAA,MAAA;EACH,UAAA,CAAA,EARQ,SAQR;EACY,YAAA,CAAA,EARF,SAQE;EACJ,kBAAA,CAAA,EAAA,MAAA;EAIL,iBAAA,CAAA,EAAA,MAAA;EAAY,SAAA,CAAA,EAAA,MAAA;;KAPZ;SACH;qBACY;iBACJ;;;;YAIL"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { ServerInfiniteScrollConfig, ServerInfiniteScrollDirection, ServerInfiniteScrollFetchPage, ServerInfiniteScrollInjectedProps, ServerInfiniteScrollItemsProps, ServerInfiniteScrollListProps, ServerInfiniteScrollPage, ServerInfiniteScrollProps } from "./server-infinite-scroll/types.js";
|
|
2
|
+
import { ServerInfiniteScroll } from "./server-infinite-scroll/server-infinite-scroll.js";
|
|
3
|
+
import { ServerInfiniteScrollItems } from "./server-infinite-scroll/server-infinite-scroll-items.js";
|
|
4
|
+
import { ServerInfiniteScrollList } from "./server-infinite-scroll/server-infinite-scroll-list.js";
|
|
5
|
+
import { ServerInfiniteScrollObserver } from "./server-infinite-scroll/server-infinite-scroll-observer.js";
|
|
6
|
+
export { ServerInfiniteScroll, type ServerInfiniteScrollConfig, type ServerInfiniteScrollDirection, type ServerInfiniteScrollFetchPage, type ServerInfiniteScrollInjectedProps, ServerInfiniteScrollItems, type ServerInfiniteScrollItemsProps, ServerInfiniteScrollList, type ServerInfiniteScrollListProps, ServerInfiniteScrollObserver, type ServerInfiniteScrollPage, type ServerInfiniteScrollProps };
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { ServerInfiniteScroll } from "./server-infinite-scroll/server-infinite-scroll.js";
|
|
2
|
+
import { ServerInfiniteScrollItems } from "./server-infinite-scroll/server-infinite-scroll-items.js";
|
|
3
|
+
import { ServerInfiniteScrollObserver } from "./server-infinite-scroll/server-infinite-scroll-observer.js";
|
|
4
|
+
import { ServerInfiniteScrollList } from "./server-infinite-scroll/server-infinite-scroll-list.js";
|
|
5
|
+
|
|
6
|
+
export { ServerInfiniteScroll, ServerInfiniteScrollItems, ServerInfiniteScrollList, ServerInfiniteScrollObserver };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as React from "react";
|
|
2
|
-
import * as
|
|
2
|
+
import * as react_jsx_runtime16 from "react/jsx-runtime";
|
|
3
3
|
import { Item, Root } from "@radix-ui/react-toggle-group";
|
|
4
4
|
import { VariantProps } from "class-variance-authority";
|
|
5
5
|
import * as class_variance_authority_types0 from "class-variance-authority/types";
|
|
@@ -28,7 +28,7 @@ declare function ToggleGroup({
|
|
|
28
28
|
transition,
|
|
29
29
|
activeClassName,
|
|
30
30
|
...props
|
|
31
|
-
}: ToggleGroupProps):
|
|
31
|
+
}: ToggleGroupProps): react_jsx_runtime16.JSX.Element;
|
|
32
32
|
//#endregion
|
|
33
33
|
export { ToggleGroup };
|
|
34
34
|
//# sourceMappingURL=ToggleGroup.d.ts.map
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "maquinaweb-ui",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.75.0",
|
|
4
4
|
"description": "A minimal React component library",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"sideEffects": false,
|
|
@@ -29,6 +29,10 @@
|
|
|
29
29
|
"import": "./dist/container-animation.js",
|
|
30
30
|
"types": "./dist/container-animation.d.ts"
|
|
31
31
|
},
|
|
32
|
+
"./server-infinite-scroll": {
|
|
33
|
+
"import": "./dist/server-infinite-scroll.js",
|
|
34
|
+
"types": "./dist/server-infinite-scroll.d.ts"
|
|
35
|
+
},
|
|
32
36
|
"./date-hour-field": {
|
|
33
37
|
"import": "./dist/date-hour-field.js",
|
|
34
38
|
"types": "./dist/date-hour-field.d.ts"
|
|
@@ -67,7 +71,7 @@
|
|
|
67
71
|
"dev": "concurrently \"cosmos --expose-imports\" \"next dev --port 3421\"",
|
|
68
72
|
"build": "tsdown && bun run postbuild",
|
|
69
73
|
"postbuild": "bun scripts/update-exports.ts",
|
|
70
|
-
"build:vercel": "cosmos-export --expose-imports &&
|
|
74
|
+
"build:vercel": "cosmos-export --config cosmos.config.vercel.json --expose-imports && rm -rf ./public/cosmos-ui && mkdir -p ./public/cosmos-ui && cp -R ./cosmos-export/. ./public/cosmos-ui && next build",
|
|
71
75
|
"prepublishOnly": "bun run build",
|
|
72
76
|
"prepare": "husky",
|
|
73
77
|
"clean-exports": "bun scripts/clean-exports.ts",
|