mado-ui 0.5.4 → 0.5.5
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/css/index.css +189 -1
- package/dist/components/form/index.d.ts +1 -0
- package/dist/components/form/index.d.ts.map +1 -1
- package/dist/components/form/input/date/index.d.ts +36 -16
- package/dist/components/form/input/date/index.d.ts.map +1 -1
- package/dist/components/form/input/date/views/calendar-view.d.ts +2 -0
- package/dist/components/form/input/date/views/calendar-view.d.ts.map +1 -0
- package/dist/components/form/input/date/views/clock-view.d.ts +2 -0
- package/dist/components/form/input/date/views/clock-view.d.ts.map +1 -0
- package/dist/components/form/input/date/views/dropdown-view.d.ts +2 -0
- package/dist/components/form/input/date/views/dropdown-view.d.ts.map +1 -0
- package/dist/components/form/input/date/views/index.d.ts +5 -0
- package/dist/components/form/input/date/views/index.d.ts.map +1 -0
- package/dist/components/form/input/date/views/rotary-view.d.ts +2 -0
- package/dist/components/form/input/date/views/rotary-view.d.ts.map +1 -0
- package/dist/components/form/input/date/views/view-handler.d.ts +21 -0
- package/dist/components/form/input/date/views/view-handler.d.ts.map +1 -0
- package/dist/components/form/input/index.d.ts +4 -87
- package/dist/components/form/input/index.d.ts.map +1 -1
- package/dist/components/form/input/input-types.d.ts +102 -0
- package/dist/components/form/input/input-types.d.ts.map +1 -0
- package/dist/components/form/input/number-input.d.ts +4 -0
- package/dist/components/form/input/number-input.d.ts.map +1 -0
- package/dist/components/form/input/text-input.d.ts +36 -0
- package/dist/components/form/input/text-input.d.ts.map +1 -0
- package/dist/components/form/select.d.ts +41 -0
- package/dist/components/form/select.d.ts.map +1 -0
- package/dist/components.d.ts +161 -62
- package/dist/components.esm.js +482 -183
- package/dist/components.esm.js.map +1 -1
- package/dist/components.js +481 -181
- package/dist/components.js.map +1 -1
- package/dist/graphics/index.d.ts +2 -0
- package/dist/graphics/index.d.ts.map +1 -0
- package/dist/graphics/social-media/facebook-logo.d.ts +33 -0
- package/dist/graphics/social-media/facebook-logo.d.ts.map +1 -0
- package/dist/graphics/social-media/google-logo.d.ts +13 -0
- package/dist/graphics/social-media/google-logo.d.ts.map +1 -0
- package/dist/graphics/social-media/index.d.ts +8 -0
- package/dist/graphics/social-media/index.d.ts.map +1 -0
- package/dist/graphics/social-media/instagram-logo.d.ts +13 -0
- package/dist/graphics/social-media/instagram-logo.d.ts.map +1 -0
- package/dist/graphics/social-media/linkedin-logo.d.ts +26 -0
- package/dist/graphics/social-media/linkedin-logo.d.ts.map +1 -0
- package/dist/graphics/social-media/tiktok-logo.d.ts +26 -0
- package/dist/graphics/social-media/tiktok-logo.d.ts.map +1 -0
- package/dist/graphics/social-media/x-logo.d.ts +6 -0
- package/dist/graphics/social-media/x-logo.d.ts.map +1 -0
- package/dist/graphics/social-media/youtube-logo.d.ts +26 -0
- package/dist/graphics/social-media/youtube-logo.d.ts.map +1 -0
- package/dist/graphics.d.ts +141 -0
- package/dist/graphics.d.ts.map +1 -0
- package/dist/graphics.esm.js +241 -0
- package/dist/graphics.esm.js.map +1 -0
- package/dist/graphics.js +249 -0
- package/dist/graphics.js.map +1 -0
- package/dist/hooks/use-fieldset-context.d.ts.map +1 -1
- package/dist/hooks/use-form-context.d.ts +5 -5
- package/dist/hooks/use-form-context.d.ts.map +1 -1
- package/dist/hooks.d.ts +5 -5
- package/dist/hooks.esm.js.map +1 -1
- package/dist/hooks.js.map +1 -1
- package/dist/index.d.ts +161 -62
- package/dist/index.esm.js +482 -183
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +481 -181
- package/dist/index.js.map +1 -1
- package/dist/utils/get-date.d.ts +32 -20
- package/dist/utils/get-date.d.ts.map +1 -1
- package/dist/utils/string-manipulation.d.ts +23 -1
- package/dist/utils/string-manipulation.d.ts.map +1 -1
- package/dist/utils.d.ts +57 -23
- package/dist/utils.esm.js +1139 -57
- package/dist/utils.esm.js.map +1 -1
- package/dist/utils.js +1145 -58
- package/dist/utils.js.map +1 -1
- package/package.json +100 -96
- package/dist/components/mado-ui-provider.d.ts +0 -1
- package/dist/hooks/use-anime-scope.d.ts +0 -15
- package/dist/types.esm.js +0 -2
- package/dist/types.esm.js.map +0 -1
- package/dist/types.js +0 -3
- package/dist/types.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"graphics.js","sources":["../src/utils/custom-tailwind-merge.ts","../src/utils/get-date.ts","../src/graphics/social-media/facebook-logo.tsx","../src/graphics/social-media/google-logo.tsx","../src/graphics/social-media/instagram-logo.tsx","../src/graphics/social-media/linkedin-logo.tsx","../src/graphics/social-media/tiktok-logo.tsx","../src/graphics/social-media/x-logo.tsx","../src/graphics/social-media/youtube-logo.tsx"],"sourcesContent":["import { ConfigExtension, DefaultClassGroupIds, DefaultThemeGroupIds, extendTailwindMerge } from 'tailwind-merge'\n\nexport type AdditionalmadoClassGroupIds =\n\t| 'animation-direction'\n\t| 'animation-fill'\n\t| 'animation-iteration'\n\t| 'animation-state'\n\nconst integerList = Array.from({ length: 100 }, (_, i) => `${i + 1}`)\n\nexport const twMerge = extendTailwindMerge<AdditionalmadoClassGroupIds>({\n\textend: {\n\t\ttheme: {\n\t\t\tcolor: [\n\t\t\t\t{\n\t\t\t\t\tui: [\n\t\t\t\t\t\t'red',\n\t\t\t\t\t\t'orange',\n\t\t\t\t\t\t'yellow',\n\t\t\t\t\t\t'green',\n\t\t\t\t\t\t'sky-blue',\n\t\t\t\t\t\t'blue',\n\t\t\t\t\t\t'violet',\n\t\t\t\t\t\t'magenta',\n\t\t\t\t\t\t'purple',\n\t\t\t\t\t\t'brown',\n\t\t\t\t\t\t'grey',\n\t\t\t\t\t\t'pink',\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\tclassGroups: {\n\t\t\tanimate: [\n\t\t\t\t{\n\t\t\t\t\tanimate: [\n\t\t\t\t\t\t'bounce',\n\t\t\t\t\t\t'double-spin',\n\t\t\t\t\t\t'drop-in',\n\t\t\t\t\t\t'flip',\n\t\t\t\t\t\t'flip-again',\n\t\t\t\t\t\t'grid-rows',\n\t\t\t\t\t\t'heartbeat',\n\t\t\t\t\t\t'ping',\n\t\t\t\t\t\t'pulse',\n\t\t\t\t\t\t'slide-up',\n\t\t\t\t\t\t'spin',\n\t\t\t\t\t\t'wave',\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t],\n\t\t\t'animation-direction': [\n\t\t\t\t{\n\t\t\t\t\t'animation-direction': ['normal', 'reverse', 'alternate', 'alternate-reverse'],\n\t\t\t\t},\n\t\t\t],\n\t\t\t'animation-fill': [\n\t\t\t\t{\n\t\t\t\t\t'animation-fill': ['none', 'forwards', 'backwards', 'both'],\n\t\t\t\t},\n\t\t\t],\n\t\t\t'animation-iteration': [\n\t\t\t\t{\n\t\t\t\t\t'animation-iteration': [...integerList, 'infinite'],\n\t\t\t\t},\n\t\t\t],\n\t\t\t'animation-state': [\n\t\t\t\t{\n\t\t\t\t\t'animation-state': ['running', 'paused'],\n\t\t\t\t},\n\t\t\t],\n\t\t\t'grid-cols': [\n\t\t\t\t{\n\t\t\t\t\t'grid-cols': ['0fr', '1fr'],\n\t\t\t\t},\n\t\t\t],\n\t\t\t'grid-rows': [\n\t\t\t\t{\n\t\t\t\t\t'grid-rows': ['0fr', '1fr'],\n\t\t\t\t},\n\t\t\t],\n\t\t\ttransition: ['transition-rows'],\n\t\t},\n\t},\n})\n\nexport function extendMadoTailwindMerge<\n\tAdditionalClassGroupIds extends string = AdditionalmadoClassGroupIds,\n\tAdditionalThemeGroupIds extends string = never,\n>(\n\tconfigExtension: ConfigExtension<\n\t\tDefaultClassGroupIds | AdditionalClassGroupIds,\n\t\tDefaultThemeGroupIds | AdditionalThemeGroupIds\n\t>,\n) {\n\tconst extend = configExtension.extend || {}\n\tconst theme = extend.theme || {}\n\tconst color = 'color' in theme ? theme.color : []\n\tconst classGroups = extend.classGroups || {}\n\n\tconst themeRest = { ...theme }\n\tif ('color' in themeRest) delete themeRest.color\n\n\tconst extendRest = { ...extend }\n\tdelete extendRest.theme\n\tdelete extendRest.classGroups\n\n\treturn extendTailwindMerge<AdditionalClassGroupIds, AdditionalThemeGroupIds>({\n\t\textend: {\n\t\t\ttheme: {\n\t\t\t\tcolor: [\n\t\t\t\t\t{\n\t\t\t\t\t\tui: [\n\t\t\t\t\t\t\t'red',\n\t\t\t\t\t\t\t'orange',\n\t\t\t\t\t\t\t'yellow',\n\t\t\t\t\t\t\t'green',\n\t\t\t\t\t\t\t'sky-blue',\n\t\t\t\t\t\t\t'blue',\n\t\t\t\t\t\t\t'violet',\n\t\t\t\t\t\t\t'magenta',\n\t\t\t\t\t\t\t'purple',\n\t\t\t\t\t\t\t'brown',\n\t\t\t\t\t\t\t'grey',\n\t\t\t\t\t\t\t'pink',\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t\t...(color as { [key: string]: string[] }[]),\n\t\t\t\t],\n\t\t\t\t...themeRest,\n\t\t\t} as { [key: string]: { [key: string]: string[] }[] } | any,\n\t\t\tclassGroups: {\n\t\t\t\tanimate: [\n\t\t\t\t\t{\n\t\t\t\t\t\tanimate: [\n\t\t\t\t\t\t\t'bounce',\n\t\t\t\t\t\t\t'double-spin',\n\t\t\t\t\t\t\t'drop-in',\n\t\t\t\t\t\t\t'flip',\n\t\t\t\t\t\t\t'flip-again',\n\t\t\t\t\t\t\t'grid-rows',\n\t\t\t\t\t\t\t'heartbeat',\n\t\t\t\t\t\t\t'ping',\n\t\t\t\t\t\t\t'pulse',\n\t\t\t\t\t\t\t'slide-up',\n\t\t\t\t\t\t\t'spin',\n\t\t\t\t\t\t\t'wave',\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\t'animation-direction': [\n\t\t\t\t\t{\n\t\t\t\t\t\t'animation-direction': ['normal', 'reverse', 'alternate', 'alternate-reverse'],\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\t'animation-fill': [\n\t\t\t\t\t{\n\t\t\t\t\t\t'animation-fill': ['none', 'forwards', 'backwards', 'both'],\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\t'animation-iteration': [\n\t\t\t\t\t{\n\t\t\t\t\t\t'animation-iteration': [...integerList, 'infinite'],\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\t'animation-state': [\n\t\t\t\t\t{\n\t\t\t\t\t\t'animation-state': ['running', 'paused'],\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\t'grid-cols': [\n\t\t\t\t\t{\n\t\t\t\t\t\t'grid-cols': ['0fr', '1fr'],\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\t'grid-rows': [\n\t\t\t\t\t{\n\t\t\t\t\t\t'grid-rows': ['0fr', '1fr'],\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\ttransition: ['transition-rows'],\n\t\t\t\t...classGroups,\n\t\t\t} as { [key: string]: { [key: string]: string[] }[] } | any,\n\t\t\t...extendRest,\n\t\t},\n\t\t...configExtension,\n\t})\n}\n","export type DayNumber =\n\t| 1\n\t| 2\n\t| 3\n\t| 4\n\t| 5\n\t| 6\n\t| 7\n\t| 8\n\t| 9\n\t| 10\n\t| 11\n\t| 12\n\t| 13\n\t| 14\n\t| 15\n\t| 16\n\t| 17\n\t| 18\n\t| 19\n\t| 20\n\t| 21\n\t| 22\n\t| 23\n\t| 24\n\t| 25\n\t| 26\n\t| 27\n\t| 28\n\t| 29\n\t| 30\n\t| 31\n\nexport type DateTimeObject = {\n\tday: DayNumber\n\thour: HourNumber\n\tminute: MinuteNumber\n\tmonth: MonthNumber | MonthName\n\tsecond: SecondNumber\n\tyear: number\n}\n\nexport type HourNumber =\n\t| 0\n\t| 1\n\t| 2\n\t| 3\n\t| 4\n\t| 5\n\t| 6\n\t| 7\n\t| 8\n\t| 9\n\t| 10\n\t| 11\n\t| 12\n\t| 13\n\t| 14\n\t| 15\n\t| 16\n\t| 17\n\t| 18\n\t| 19\n\t| 20\n\t| 21\n\t| 22\n\t| 23\n\nexport type MinuteNumber =\n\t| 0\n\t| 1\n\t| 2\n\t| 3\n\t| 4\n\t| 5\n\t| 6\n\t| 7\n\t| 8\n\t| 9\n\t| 10\n\t| 11\n\t| 12\n\t| 13\n\t| 14\n\t| 15\n\t| 16\n\t| 17\n\t| 18\n\t| 19\n\t| 20\n\t| 21\n\t| 22\n\t| 23\n\t| 24\n\t| 25\n\t| 26\n\t| 27\n\t| 28\n\t| 29\n\t| 30\n\t| 31\n\t| 32\n\t| 33\n\t| 34\n\t| 35\n\t| 36\n\t| 37\n\t| 38\n\t| 39\n\t| 40\n\t| 41\n\t| 42\n\t| 43\n\t| 44\n\t| 45\n\t| 46\n\t| 47\n\t| 48\n\t| 49\n\t| 50\n\t| 51\n\t| 52\n\t| 53\n\t| 54\n\t| 55\n\t| 56\n\t| 57\n\t| 58\n\t| 59\n\nexport type MonthName =\n\t| 'January'\n\t| 'February'\n\t| 'March'\n\t| 'April'\n\t| 'May'\n\t| 'June'\n\t| 'July'\n\t| 'August'\n\t| 'September'\n\t| 'October'\n\t| 'November'\n\t| 'December'\n\nexport type MonthNumber = 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12\n\nexport type SecondNumber = MinuteNumber\n\nexport type WeekdayName = 'Sunday' | 'Monday' | 'Tuesday' | 'Wednesday' | 'Thursday' | 'Friday' | 'Saturday'\n\nexport type WeekdayNumber = 1 | 2 | 3 | 4 | 5 | 6 | 7\n\nexport type WeekNumber =\n\t| 1\n\t| 2\n\t| 3\n\t| 4\n\t| 5\n\t| 6\n\t| 7\n\t| 8\n\t| 9\n\t| 10\n\t| 11\n\t| 12\n\t| 13\n\t| 14\n\t| 15\n\t| 16\n\t| 17\n\t| 18\n\t| 19\n\t| 20\n\t| 21\n\t| 22\n\t| 23\n\t| 24\n\t| 25\n\t| 26\n\t| 27\n\t| 28\n\t| 29\n\t| 30\n\t| 31\n\t| 32\n\t| 33\n\t| 34\n\t| 35\n\t| 36\n\t| 37\n\t| 38\n\t| 39\n\t| 40\n\t| 41\n\t| 42\n\t| 43\n\t| 44\n\t| 45\n\t| 46\n\t| 47\n\t| 48\n\t| 49\n\t| 50\n\t| 51\n\t| 52\n\t| 53\n\nexport type TimezoneData = {\n\tabbr:\n\t\t| 'ACDT'\n\t\t| 'ACST'\n\t\t| 'ACT'\n\t\t| 'ACWST'\n\t\t| 'ADT'\n\t\t| 'AEDT'\n\t\t| 'AEST'\n\t\t| 'AFT'\n\t\t| 'AKDT'\n\t\t| 'AKST'\n\t\t| 'AMST'\n\t\t| 'AMT'\n\t\t| 'AMT'\n\t\t| 'ART'\n\t\t| 'AST'\n\t\t| 'AST'\n\t\t| 'AT'\n\t\t| 'AWST'\n\t\t| 'AZOST'\n\t\t| 'AZOT'\n\t\t| 'AZT'\n\t\t| 'BDT'\n\t\t| 'BIT'\n\t\t| 'BNT'\n\t\t| 'BOT'\n\t\t| 'BRST'\n\t\t| 'BRT'\n\t\t| 'BST'\n\t\t| 'BST'\n\t\t| 'BST'\n\t\t| 'BTT'\n\t\t| 'CAT'\n\t\t| 'CCT'\n\t\t| 'CDT'\n\t\t| 'CDT'\n\t\t| 'CEST'\n\t\t| 'CET'\n\t\t| 'CHADT'\n\t\t| 'CHAST'\n\t\t| 'CHOST'\n\t\t| 'CHOT'\n\t\t| 'CHST'\n\t\t| 'CHUT'\n\t\t| 'CIST'\n\t\t| 'CIT'\n\t\t| 'CKT'\n\t\t| 'CLST'\n\t\t| 'CLT'\n\t\t| 'COST'\n\t\t| 'COT'\n\t\t| 'CST'\n\t\t| 'CST'\n\t\t| 'CST'\n\t\t| 'CT'\n\t\t| 'CVT'\n\t\t| 'CWST'\n\t\t| 'CXT'\n\t\t| 'DAVT'\n\t\t| 'DDUT'\n\t\t| 'EASST'\n\t\t| 'EAST'\n\t\t| 'EAT'\n\t\t| 'ECT'\n\t\t| 'EDT'\n\t\t| 'EEST'\n\t\t| 'EET'\n\t\t| 'EGST'\n\t\t| 'EGT'\n\t\t| 'EIT'\n\t\t| 'EST'\n\t\t| 'ET'\n\t\t| 'FET'\n\t\t| 'FJT'\n\t\t| 'FKST'\n\t\t| 'FKT'\n\t\t| 'FNT'\n\t\t| 'GALT'\n\t\t| 'GAMT'\n\t\t| 'GET'\n\t\t| 'GFT'\n\t\t| 'GILT'\n\t\t| 'GIT'\n\t\t| 'GMT'\n\t\t| 'GST'\n\t\t| 'GST'\n\t\t| 'GYT'\n\t\t| 'HADT'\n\t\t| 'HAST'\n\t\t| 'HKT'\n\t\t| 'HMT'\n\t\t| 'HOVST'\n\t\t| 'HOVT'\n\t\t| 'ICT'\n\t\t| 'IDT'\n\t\t| 'IOT'\n\t\t| 'IRDT'\n\t\t| 'IRKT'\n\t\t| 'IRST'\n\t\t| 'IST'\n\t\t| 'IST'\n\t\t| 'IST'\n\t\t| 'JST'\n\t\t| 'KGT'\n\t\t| 'KOST'\n\t\t| 'KRAT'\n\t\t| 'KST'\n\t\t| 'LHDT'\n\t\t| 'LHST'\n\t\t| 'LINT'\n\t\t| 'MAGT'\n\t\t| 'MART'\n\t\t| 'MAWT'\n\t\t| 'MDT'\n\t\t| 'MHT'\n\t\t| 'MIST'\n\t\t| 'MIT'\n\t\t| 'MMT'\n\t\t| 'MSK'\n\t\t| 'MST'\n\t\t| 'MST'\n\t\t| 'MT'\n\t\t| 'MUT'\n\t\t| 'MVT'\n\t\t| 'MYT'\n\t\t| 'NCT'\n\t\t| 'NDT'\n\t\t| 'NFT'\n\t\t| 'NPT'\n\t\t| 'NRT'\n\t\t| 'NST'\n\t\t| 'NT'\n\t\t| 'NUT'\n\t\t| 'NZDT'\n\t\t| 'NZST'\n\t\t| 'OMST'\n\t\t| 'ORAT'\n\t\t| 'PDT'\n\t\t| 'PET'\n\t\t| 'PETT'\n\t\t| 'PGT'\n\t\t| 'PHOT'\n\t\t| 'PHST'\n\t\t| 'PHT'\n\t\t| 'PKT'\n\t\t| 'PMDT'\n\t\t| 'PMST'\n\t\t| 'PONT'\n\t\t| 'PST'\n\t\t| 'PT'\n\t\t| 'PWT'\n\t\t| 'PYST'\n\t\t| 'PYT'\n\t\t| 'RET'\n\t\t| 'ROTT'\n\t\t| 'SAKT'\n\t\t| 'SAMT'\n\t\t| 'SAST'\n\t\t| 'SBT'\n\t\t| 'SCT'\n\t\t| 'SGT'\n\t\t| 'SLST'\n\t\t| 'SRET'\n\t\t| 'SRT'\n\t\t| 'SST'\n\t\t| 'SYOT'\n\t\t| 'TAHT'\n\t\t| 'TFT'\n\t\t| 'THA'\n\t\t| 'TJT'\n\t\t| 'TKT'\n\t\t| 'TLT'\n\t\t| 'TMT'\n\t\t| 'TOT'\n\t\t| 'TRT'\n\t\t| 'TVT'\n\t\t| 'ULAST'\n\t\t| 'ULAT'\n\t\t| 'USZ1'\n\t\t| 'UTC'\n\t\t| 'UYST'\n\t\t| 'UYT'\n\t\t| 'UZT'\n\t\t| 'VET'\n\t\t| 'VLAT'\n\t\t| 'VOLT'\n\t\t| 'VOST'\n\t\t| 'VUT'\n\t\t| 'WAKT'\n\t\t| 'WAST'\n\t\t| 'WAT'\n\t\t| 'WEST'\n\t\t| 'WET'\n\t\t| 'WFT'\n\t\t| 'WGST'\n\t\t| 'WGST'\n\t\t| 'WIB'\n\t\t| 'WIT'\n\t\t| 'WST'\n\t\t| 'YAKT'\n\t\t| 'YEKT'\n\tname:\n\t\t| 'Australian Central Daylight Time'\n\t\t| 'Australian Central Standard Time'\n\t\t| 'Acre Time'\n\t\t| 'Australian Central Western Standard Time'\n\t\t| 'Atlantic Daylight Time'\n\t\t| 'Australian Eastern Daylight Savings Time'\n\t\t| 'Australian Eastern Standard Time'\n\t\t| 'Afghanistan Time'\n\t\t| 'Alaska Daylight Time'\n\t\t| 'Alaska Standard Time'\n\t\t| 'Amazon Summer Time'\n\t\t| 'Amazon Time'\n\t\t| 'Armenia Time'\n\t\t| 'Argentina Time'\n\t\t| 'Atlantic Standard Time'\n\t\t| 'Arabia Standard Time'\n\t\t| 'Atlantic Time'\n\t\t| 'Australian Western Standard Time'\n\t\t| 'Azores Summer Time'\n\t\t| 'Azores Standard Time'\n\t\t| 'Azerbaijan Time'\n\t\t| 'Brunei Time'\n\t\t| 'Baker Island Time'\n\t\t| 'Brunei Darussalam Time'\n\t\t| 'Bolivia Time'\n\t\t| 'Brasilia Summer Time'\n\t\t| 'Brasilia Time'\n\t\t| 'British Summer Time'\n\t\t| 'Bangladesh Standard Time'\n\t\t| 'Bougainville Standard Time'\n\t\t| 'Bhutan Time'\n\t\t| 'Central Africa Time'\n\t\t| 'Cocos Islands Time'\n\t\t| 'Central Daylight Time'\n\t\t| 'Cuba Daylight Time'\n\t\t| 'Central European Summer Time'\n\t\t| 'Central European Time'\n\t\t| 'Chatham Daylight Time'\n\t\t| 'Chatham Standard Time'\n\t\t| 'Choibalsan Summer Time'\n\t\t| 'Choibalsan Standard Time'\n\t\t| 'Chamorro Standard Time'\n\t\t| 'Chuuk Time'\n\t\t| 'Clipperton Island Standard Time'\n\t\t| 'Central Indonesia Time'\n\t\t| 'Cook Island Time'\n\t\t| 'Chile Summer Time'\n\t\t| 'Chile Standard Time'\n\t\t| 'Colombia Summer Time'\n\t\t| 'Colombia Time'\n\t\t| 'Central Standard Time'\n\t\t| 'China Standard Time'\n\t\t| 'Cuba Standard Time'\n\t\t| 'Central Time'\n\t\t| 'Cape Verde Time'\n\t\t| 'Central Western Standard Time'\n\t\t| 'Christmas Island Time'\n\t\t| 'Davis Time'\n\t\t| `Dumont d'Urville Time`\n\t\t| 'Easter Island Summer Time'\n\t\t| 'Easter Island Standard Time'\n\t\t| 'East Africa Time'\n\t\t| 'Ecuador Time'\n\t\t| 'Eastern Daylight Time'\n\t\t| 'Eastern European Summer Time'\n\t\t| 'Eastern European Time'\n\t\t| 'Eastern Greenland Summer Time'\n\t\t| 'Eastern Greenland Time'\n\t\t| 'Eastern Indonesian Time'\n\t\t| 'Eastern Standard Time'\n\t\t| 'Eastern Time'\n\t\t| 'Further-eastern European Time'\n\t\t| 'Fiji Time'\n\t\t| 'Falkland Islands Summer Time'\n\t\t| 'Falkland Islands Time'\n\t\t| 'Fernando de Noronha Time'\n\t\t| 'Galapagos Time'\n\t\t| 'Gambier Islands'\n\t\t| 'Georgia Standard Time'\n\t\t| 'French Guiana Time'\n\t\t| 'Gilbert Island Time'\n\t\t| 'Gambier Island Time'\n\t\t| 'Greenwich Mean Time'\n\t\t| 'Gulf Standard Time'\n\t\t| 'South Georgia Time'\n\t\t| 'Guyana Time'\n\t\t| 'Hawaii-Aleutian Daylight Time'\n\t\t| 'Hawaii-Aleutian Standard Time'\n\t\t| 'Hong Kong Time'\n\t\t| 'Heard and McDonald Islands Time'\n\t\t| 'Khovd Summer Time'\n\t\t| 'Khovd Standard Time'\n\t\t| 'Indochina Time'\n\t\t| 'Israel Daylight Time'\n\t\t| 'Indian Chagos Time'\n\t\t| 'Iran Daylight Time'\n\t\t| 'Irkutsk Time'\n\t\t| 'Iran Standard Time'\n\t\t| 'Indian Standard Time'\n\t\t| 'Irish Standard Time'\n\t\t| 'Israel Standard Time'\n\t\t| 'Japan Standard Time'\n\t\t| 'Kyrgyzstan time'\n\t\t| 'Kosrae Time'\n\t\t| 'Krasnoyarsk Time'\n\t\t| 'Korea Standard Time'\n\t\t| 'Lord Howe Daylight Time'\n\t\t| 'Lord Howe Standard Time'\n\t\t| 'Line Islands Time'\n\t\t| 'Magadan Time'\n\t\t| 'Marquesas Islands Time'\n\t\t| 'Mawson Station Time'\n\t\t| 'Mountain Daylight Time'\n\t\t| 'Marshall Islands'\n\t\t| 'Macquarie Island Station Time'\n\t\t| 'Marquesas Islands Time'\n\t\t| 'Myanmar Standard Time'\n\t\t| 'Moscow Time'\n\t\t| 'Mountain Standard Time'\n\t\t| 'Malaysia Standard Time'\n\t\t| 'Mountain Time'\n\t\t| 'Mauritius Time'\n\t\t| 'Maldives Time'\n\t\t| 'Malaysia Time'\n\t\t| 'New Caledonia Time'\n\t\t| 'Newfoundland Daylight Time'\n\t\t| 'Norfolk Time'\n\t\t| 'Nepal Time'\n\t\t| 'Nauru Time'\n\t\t| 'Newfoundland Standard Time'\n\t\t| 'Newfoundland Time'\n\t\t| 'Niue Time'\n\t\t| 'New Zealand Daylight Time'\n\t\t| 'New Zealand Standard Time'\n\t\t| 'Omsk Time'\n\t\t| 'Oral Time'\n\t\t| 'Pacific Daylight Time'\n\t\t| 'Peru Time'\n\t\t| 'Kamchatka Time'\n\t\t| 'Papua New Guinea Time'\n\t\t| 'Phoenix Island Time'\n\t\t| 'Philippine Standard Time'\n\t\t| 'Philippine Time'\n\t\t| 'Pakistan Standard Time'\n\t\t| 'Saint Pierre and Miquelon Daylight time'\n\t\t| 'Saint Pierre and Miquelon Standard Time'\n\t\t| 'Pohnpei Standard Time'\n\t\t| 'Pacific Standard Time'\n\t\t| 'Pacific Time'\n\t\t| 'Palau Time'\n\t\t| 'Paraguay Summer Time'\n\t\t| 'Paraguay Time'\n\t\t| 'Réunion Time'\n\t\t| 'Rothera Research Station Time'\n\t\t| 'Sakhalin Island time'\n\t\t| 'Samara Time'\n\t\t| 'South African Standard Time'\n\t\t| 'Solomon Islands Time'\n\t\t| 'Seychelles Time'\n\t\t| 'Singapore Time'\n\t\t| 'Sri Lanka Standard Time'\n\t\t| 'Srednekolymsk Time'\n\t\t| 'Suriname Time'\n\t\t| 'Samoa Standard Time'\n\t\t| 'Showa Station Time'\n\t\t| 'Tahiti Time'\n\t\t| 'French Southern and Antarctic Time'\n\t\t| 'Thailand Standard Time'\n\t\t| 'Tajikistan Time'\n\t\t| 'Tokelau Time'\n\t\t| 'Timor Leste Time'\n\t\t| 'Turkmenistan Time'\n\t\t| 'Tonga Time'\n\t\t| 'Turkey Time'\n\t\t| 'Tuvalu Time'\n\t\t| 'Ulaanbaatar Summer Time'\n\t\t| 'Ulaanbaatar Standard Time'\n\t\t| 'Kaliningrad Time'\n\t\t| 'Coordinated Universal Time'\n\t\t| 'Uruguay Summer Time'\n\t\t| 'Uruguay Standard Time'\n\t\t| 'Uzbekistan Time'\n\t\t| 'Venezuelan Standard Time'\n\t\t| 'Vladivostok Time'\n\t\t| 'Volgograd Time'\n\t\t| 'Vostok Station Time'\n\t\t| 'Vanuatu Time'\n\t\t| 'Wake Island Time'\n\t\t| 'West Africa Summer Time'\n\t\t| 'West Africa Time'\n\t\t| 'Western European Summer Time'\n\t\t| 'Western European Time'\n\t\t| 'Wallis and Futuna Time'\n\t\t| 'West Greenland Summer Time'\n\t\t| 'West Greenland Time'\n\t\t| 'Western Indonesia Time'\n\t\t| 'Eastern Indonesia Time'\n\t\t| 'Western Standard Time'\n\t\t| 'Yakutsk Time'\n\t\t| 'Yekaterinburg Time'\n\toffset: ['+' | '-', number, number]\n}\n\nexport const timezoneList: TimezoneData[] = [\n\t{\n\t\tabbr: 'ACDT',\n\t\tname: 'Australian Central Daylight Time',\n\t\toffset: ['+', 10, 30],\n\t},\n\t{\n\t\tabbr: 'ACST',\n\t\tname: 'Australian Central Standard Time',\n\t\toffset: ['+', 9, 30],\n\t},\n\t{\n\t\tabbr: 'ACT',\n\t\tname: 'Acre Time',\n\t\toffset: ['-', 5, 0],\n\t},\n\t{\n\t\tabbr: 'ACWST',\n\t\tname: 'Australian Central Western Standard Time',\n\t\toffset: ['+', 8, 45],\n\t},\n\t{\n\t\tabbr: 'ADT',\n\t\tname: 'Atlantic Daylight Time',\n\t\toffset: ['-', 3, 0],\n\t},\n\t{\n\t\tabbr: 'AEDT',\n\t\tname: 'Australian Eastern Daylight Savings Time',\n\t\toffset: ['+', 11, 0],\n\t},\n\t{\n\t\tabbr: 'AEST',\n\t\tname: 'Australian Eastern Standard Time',\n\t\toffset: ['+', 10, 0],\n\t},\n\t{\n\t\tabbr: 'AFT',\n\t\tname: 'Afghanistan Time',\n\t\toffset: ['+', 4, 30],\n\t},\n\t{\n\t\tabbr: 'AKDT',\n\t\tname: 'Alaska Daylight Time',\n\t\toffset: ['-', 8, 0],\n\t},\n\t{\n\t\tabbr: 'AKST',\n\t\tname: 'Alaska Standard Time',\n\t\toffset: ['-', 9, 0],\n\t},\n\t{\n\t\tabbr: 'AMST',\n\t\tname: 'Amazon Summer Time',\n\t\toffset: ['-', 3, 0],\n\t},\n\t{\n\t\tabbr: 'AMT',\n\t\tname: 'Amazon Time',\n\t\toffset: ['-', 4, 0],\n\t},\n\t{\n\t\tabbr: 'AMT',\n\t\tname: 'Armenia Time',\n\t\toffset: ['+', 4, 0],\n\t},\n\t{\n\t\tabbr: 'ART',\n\t\tname: 'Argentina Time',\n\t\toffset: ['-', 3, 0],\n\t},\n\t{\n\t\tabbr: 'AST',\n\t\tname: 'Atlantic Standard Time',\n\t\toffset: ['-', 4, 0],\n\t},\n\t{\n\t\tabbr: 'AST',\n\t\tname: 'Arabia Standard Time',\n\t\toffset: ['+', 3, 0],\n\t},\n\t{\n\t\tabbr: 'AT',\n\t\tname: 'Atlantic Time',\n\t\toffset: ['-', 4, 0],\n\t},\n\t{\n\t\tabbr: 'AWST',\n\t\tname: 'Australian Western Standard Time',\n\t\toffset: ['+', 8, 0],\n\t},\n\t{\n\t\tabbr: 'AZOST',\n\t\tname: 'Azores Summer Time',\n\t\toffset: ['+', 0, 0],\n\t},\n\t{\n\t\tabbr: 'AZOT',\n\t\tname: 'Azores Standard Time',\n\t\toffset: ['-', 1, 0],\n\t},\n\t{\n\t\tabbr: 'AZT',\n\t\tname: 'Azerbaijan Time',\n\t\toffset: ['+', 4, 0],\n\t},\n\t{\n\t\tabbr: 'BDT',\n\t\tname: 'Brunei Time',\n\t\toffset: ['+', 8, 0],\n\t},\n\t{\n\t\tabbr: 'BIT',\n\t\tname: 'Baker Island Time',\n\t\toffset: ['-', 12, 0],\n\t},\n\t{\n\t\tabbr: 'BNT',\n\t\tname: 'Brunei Darussalam Time',\n\t\toffset: ['+', 8, 0],\n\t},\n\t{\n\t\tabbr: 'BOT',\n\t\tname: 'Bolivia Time',\n\t\toffset: ['-', 4, 0],\n\t},\n\t{\n\t\tabbr: 'BRST',\n\t\tname: 'Brasilia Summer Time',\n\t\toffset: ['-', 2, 0],\n\t},\n\t{\n\t\tabbr: 'BRT',\n\t\tname: 'Brasilia Time',\n\t\toffset: ['-', 3, 0],\n\t},\n\t{\n\t\tabbr: 'BST',\n\t\tname: 'British Summer Time',\n\t\toffset: ['+', 1, 0],\n\t},\n\t{\n\t\tabbr: 'BST',\n\t\tname: 'Bangladesh Standard Time',\n\t\toffset: ['+', 6, 0],\n\t},\n\t{\n\t\tabbr: 'BST',\n\t\tname: 'Bougainville Standard Time',\n\t\toffset: ['+', 11, 0],\n\t},\n\t{\n\t\tabbr: 'BTT',\n\t\tname: 'Bhutan Time',\n\t\toffset: ['+', 6, 0],\n\t},\n\t{\n\t\tabbr: 'CAT',\n\t\tname: 'Central Africa Time',\n\t\toffset: ['+', 2, 0],\n\t},\n\t{\n\t\tabbr: 'CCT',\n\t\tname: 'Cocos Islands Time',\n\t\toffset: ['+', 6, 30],\n\t},\n\t{\n\t\tabbr: 'CDT',\n\t\tname: 'Central Daylight Time',\n\t\toffset: ['-', 5, 0],\n\t},\n\t{\n\t\tabbr: 'CDT',\n\t\tname: 'Cuba Daylight Time',\n\t\toffset: ['-', 4, 0],\n\t},\n\t{\n\t\tabbr: 'CEST',\n\t\tname: 'Central European Summer Time',\n\t\toffset: ['+', 2, 0],\n\t},\n\t{\n\t\tabbr: 'CET',\n\t\tname: 'Central European Time',\n\t\toffset: ['+', 1, 0],\n\t},\n\t{\n\t\tabbr: 'CHADT',\n\t\tname: 'Chatham Daylight Time',\n\t\toffset: ['+', 13, 45],\n\t},\n\t{\n\t\tabbr: 'CHAST',\n\t\tname: 'Chatham Standard Time',\n\t\toffset: ['+', 12, 45],\n\t},\n\t{\n\t\tabbr: 'CHOST',\n\t\tname: 'Choibalsan Summer Time',\n\t\toffset: ['+', 9, 0],\n\t},\n\t{\n\t\tabbr: 'CHOT',\n\t\tname: 'Choibalsan Standard Time',\n\t\toffset: ['+', 8, 0],\n\t},\n\t{\n\t\tabbr: 'CHST',\n\t\tname: 'Chamorro Standard Time',\n\t\toffset: ['+', 10, 0],\n\t},\n\t{\n\t\tabbr: 'CHUT',\n\t\tname: 'Chuuk Time',\n\t\toffset: ['+', 10, 0],\n\t},\n\t{\n\t\tabbr: 'CIST',\n\t\tname: 'Clipperton Island Standard Time',\n\t\toffset: ['-', 8, 0],\n\t},\n\t{\n\t\tabbr: 'CIT',\n\t\tname: 'Central Indonesia Time',\n\t\toffset: ['+', 8, 0],\n\t},\n\t{\n\t\tabbr: 'CKT',\n\t\tname: 'Cook Island Time',\n\t\toffset: ['-', 10, 0],\n\t},\n\t{\n\t\tabbr: 'CLST',\n\t\tname: 'Chile Summer Time',\n\t\toffset: ['-', 3, 0],\n\t},\n\t{\n\t\tabbr: 'CLT',\n\t\tname: 'Chile Standard Time',\n\t\toffset: ['-', 4, 0],\n\t},\n\t{\n\t\tabbr: 'COST',\n\t\tname: 'Colombia Summer Time',\n\t\toffset: ['-', 4, 0],\n\t},\n\t{\n\t\tabbr: 'COT',\n\t\tname: 'Colombia Time',\n\t\toffset: ['-', 5, 0],\n\t},\n\t{\n\t\tabbr: 'CST',\n\t\tname: 'Central Standard Time',\n\t\toffset: ['-', 6, 0],\n\t},\n\t{\n\t\tabbr: 'CST',\n\t\tname: 'China Standard Time',\n\t\toffset: ['+', 8, 0],\n\t},\n\t{\n\t\tabbr: 'CST',\n\t\tname: 'Cuba Standard Time',\n\t\toffset: ['-', 5, 0],\n\t},\n\t{\n\t\tabbr: 'CT',\n\t\tname: 'Central Time',\n\t\toffset: ['-', 6, 0],\n\t},\n\t{\n\t\tabbr: 'CVT',\n\t\tname: 'Cape Verde Time',\n\t\toffset: ['-', 1, 0],\n\t},\n\t{\n\t\tabbr: 'CWST',\n\t\tname: 'Central Western Standard Time',\n\t\toffset: ['+', 8, 45],\n\t},\n\t{\n\t\tabbr: 'CXT',\n\t\tname: 'Christmas Island Time',\n\t\toffset: ['+', 7, 0],\n\t},\n\t{\n\t\tabbr: 'DAVT',\n\t\tname: 'Davis Time',\n\t\toffset: ['+', 7, 0],\n\t},\n\t{\n\t\tabbr: 'DDUT',\n\t\tname: \"Dumont d'Urville Time\",\n\t\toffset: ['+', 10, 0],\n\t},\n\t{\n\t\tabbr: 'EASST',\n\t\tname: 'Easter Island Summer Time',\n\t\toffset: ['-', 5, 0],\n\t},\n\t{\n\t\tabbr: 'EAST',\n\t\tname: 'Easter Island Standard Time',\n\t\toffset: ['-', 6, 0],\n\t},\n\t{\n\t\tabbr: 'EAT',\n\t\tname: 'East Africa Time',\n\t\toffset: ['+', 3, 0],\n\t},\n\t{\n\t\tabbr: 'ECT',\n\t\tname: 'Ecuador Time',\n\t\toffset: ['-', 5, 0],\n\t},\n\t{\n\t\tabbr: 'EDT',\n\t\tname: 'Eastern Daylight Time',\n\t\toffset: ['-', 4, 0],\n\t},\n\t{\n\t\tabbr: 'EEST',\n\t\tname: 'Eastern European Summer Time',\n\t\toffset: ['+', 3, 0],\n\t},\n\t{\n\t\tabbr: 'EET',\n\t\tname: 'Eastern European Time',\n\t\toffset: ['+', 2, 0],\n\t},\n\t{\n\t\tabbr: 'EGST',\n\t\tname: 'Eastern Greenland Summer Time',\n\t\toffset: ['+', 0, 0],\n\t},\n\t{\n\t\tabbr: 'EGT',\n\t\tname: 'Eastern Greenland Time',\n\t\toffset: ['-', 1, 0],\n\t},\n\t{\n\t\tabbr: 'EIT',\n\t\tname: 'Eastern Indonesian Time',\n\t\toffset: ['+', 9, 0],\n\t},\n\t{\n\t\tabbr: 'EST',\n\t\tname: 'Eastern Standard Time',\n\t\toffset: ['-', 5, 0],\n\t},\n\t{\n\t\tabbr: 'ET',\n\t\tname: 'Eastern Time',\n\t\toffset: ['-', 5, 0],\n\t},\n\t{\n\t\tabbr: 'FET',\n\t\tname: 'Further-eastern European Time',\n\t\toffset: ['+', 3, 0],\n\t},\n\t{\n\t\tabbr: 'FJT',\n\t\tname: 'Fiji Time',\n\t\toffset: ['+', 12, 0],\n\t},\n\t{\n\t\tabbr: 'FKST',\n\t\tname: 'Falkland Islands Summer Time',\n\t\toffset: ['-', 3, 0],\n\t},\n\t{\n\t\tabbr: 'FKT',\n\t\tname: 'Falkland Islands Time',\n\t\toffset: ['-', 4, 0],\n\t},\n\t{\n\t\tabbr: 'FNT',\n\t\tname: 'Fernando de Noronha Time',\n\t\toffset: ['-', 2, 0],\n\t},\n\t{\n\t\tabbr: 'GALT',\n\t\tname: 'Galapagos Time',\n\t\toffset: ['-', 6, 0],\n\t},\n\t{\n\t\tabbr: 'GAMT',\n\t\tname: 'Gambier Islands',\n\t\toffset: ['-', 9, 0],\n\t},\n\t{\n\t\tabbr: 'GET',\n\t\tname: 'Georgia Standard Time',\n\t\toffset: ['+', 4, 0],\n\t},\n\t{\n\t\tabbr: 'GFT',\n\t\tname: 'French Guiana Time',\n\t\toffset: ['-', 3, 0],\n\t},\n\t{\n\t\tabbr: 'GILT',\n\t\tname: 'Gilbert Island Time',\n\t\toffset: ['+', 12, 0],\n\t},\n\t{\n\t\tabbr: 'GIT',\n\t\tname: 'Gambier Island Time',\n\t\toffset: ['-', 9, 0],\n\t},\n\t{\n\t\tabbr: 'GMT',\n\t\tname: 'Greenwich Mean Time',\n\t\toffset: ['+', 0, 0],\n\t},\n\t{\n\t\tabbr: 'GST',\n\t\tname: 'Gulf Standard Time',\n\t\toffset: ['+', 4, 0],\n\t},\n\t{\n\t\tabbr: 'GST',\n\t\tname: 'South Georgia Time',\n\t\toffset: ['-', 2, 0],\n\t},\n\t{\n\t\tabbr: 'GYT',\n\t\tname: 'Guyana Time',\n\t\toffset: ['-', 4, 0],\n\t},\n\t{\n\t\tabbr: 'HADT',\n\t\tname: 'Hawaii-Aleutian Daylight Time',\n\t\toffset: ['-', 9, 0],\n\t},\n\t{\n\t\tabbr: 'HAST',\n\t\tname: 'Hawaii-Aleutian Standard Time',\n\t\toffset: ['-', 10, 0],\n\t},\n\t{\n\t\tabbr: 'HKT',\n\t\tname: 'Hong Kong Time',\n\t\toffset: ['+', 8, 0],\n\t},\n\t{\n\t\tabbr: 'HMT',\n\t\tname: 'Heard and McDonald Islands Time',\n\t\toffset: ['+', 5, 0],\n\t},\n\t{\n\t\tabbr: 'HOVST',\n\t\tname: 'Khovd Summer Time',\n\t\toffset: ['+', 8, 0],\n\t},\n\t{\n\t\tabbr: 'HOVT',\n\t\tname: 'Khovd Standard Time',\n\t\toffset: ['+', 7, 0],\n\t},\n\t{\n\t\tabbr: 'ICT',\n\t\tname: 'Indochina Time',\n\t\toffset: ['+', 7, 0],\n\t},\n\t{\n\t\tabbr: 'IDT',\n\t\tname: 'Israel Daylight Time',\n\t\toffset: ['+', 3, 0],\n\t},\n\t{\n\t\tabbr: 'IOT',\n\t\tname: 'Indian Chagos Time',\n\t\toffset: ['+', 6, 0],\n\t},\n\t{\n\t\tabbr: 'IRDT',\n\t\tname: 'Iran Daylight Time',\n\t\toffset: ['+', 4, 30],\n\t},\n\t{\n\t\tabbr: 'IRKT',\n\t\tname: 'Irkutsk Time',\n\t\toffset: ['+', 8, 0],\n\t},\n\t{\n\t\tabbr: 'IRST',\n\t\tname: 'Iran Standard Time',\n\t\toffset: ['+', 3, 30],\n\t},\n\t{\n\t\tabbr: 'IST',\n\t\tname: 'Indian Standard Time',\n\t\toffset: ['+', 5, 30],\n\t},\n\t{\n\t\tabbr: 'IST',\n\t\tname: 'Irish Standard Time',\n\t\toffset: ['+', 1, 0],\n\t},\n\t{\n\t\tabbr: 'IST',\n\t\tname: 'Israel Standard Time',\n\t\toffset: ['+', 2, 0],\n\t},\n\t{\n\t\tabbr: 'JST',\n\t\tname: 'Japan Standard Time',\n\t\toffset: ['+', 9, 0],\n\t},\n\t{\n\t\tabbr: 'KGT',\n\t\tname: 'Kyrgyzstan time',\n\t\toffset: ['+', 6, 0],\n\t},\n\t{\n\t\tabbr: 'KOST',\n\t\tname: 'Kosrae Time',\n\t\toffset: ['+', 11, 0],\n\t},\n\t{\n\t\tabbr: 'KRAT',\n\t\tname: 'Krasnoyarsk Time',\n\t\toffset: ['+', 7, 0],\n\t},\n\t{\n\t\tabbr: 'KST',\n\t\tname: 'Korea Standard Time',\n\t\toffset: ['+', 9, 0],\n\t},\n\t{\n\t\tabbr: 'LHDT',\n\t\tname: 'Lord Howe Daylight Time',\n\t\toffset: ['+', 11, 0],\n\t},\n\t{\n\t\tabbr: 'LHST',\n\t\tname: 'Lord Howe Standard Time',\n\t\toffset: ['+', 10, 30],\n\t},\n\t{\n\t\tabbr: 'LINT',\n\t\tname: 'Line Islands Time',\n\t\toffset: ['+', 14, 0],\n\t},\n\t{\n\t\tabbr: 'MAGT',\n\t\tname: 'Magadan Time',\n\t\toffset: ['+', 11, 0],\n\t},\n\t{\n\t\tabbr: 'MART',\n\t\tname: 'Marquesas Islands Time',\n\t\toffset: ['-', 9, 30],\n\t},\n\t{\n\t\tabbr: 'MAWT',\n\t\tname: 'Mawson Station Time',\n\t\toffset: ['+', 5, 0],\n\t},\n\t{\n\t\tabbr: 'MDT',\n\t\tname: 'Mountain Daylight Time',\n\t\toffset: ['-', 6, 0],\n\t},\n\t{\n\t\tabbr: 'MHT',\n\t\tname: 'Marshall Islands',\n\t\toffset: ['+', 12, 0],\n\t},\n\t{\n\t\tabbr: 'MIST',\n\t\tname: 'Macquarie Island Station Time',\n\t\toffset: ['+', 11, 0],\n\t},\n\t{\n\t\tabbr: 'MIT',\n\t\tname: 'Marquesas Islands Time',\n\t\toffset: ['-', 9, 30],\n\t},\n\t{\n\t\tabbr: 'MMT',\n\t\tname: 'Myanmar Standard Time',\n\t\toffset: ['+', 6, 30],\n\t},\n\t{\n\t\tabbr: 'MSK',\n\t\tname: 'Moscow Time',\n\t\toffset: ['+', 3, 0],\n\t},\n\t{\n\t\tabbr: 'MST',\n\t\tname: 'Mountain Standard Time',\n\t\toffset: ['-', 7, 0],\n\t},\n\t{\n\t\tabbr: 'MST',\n\t\tname: 'Malaysia Standard Time',\n\t\toffset: ['+', 8, 0],\n\t},\n\t{\n\t\tabbr: 'MT',\n\t\tname: 'Mountain Time',\n\t\toffset: ['-', 7, 0],\n\t},\n\t{\n\t\tabbr: 'MUT',\n\t\tname: 'Mauritius Time',\n\t\toffset: ['+', 4, 0],\n\t},\n\t{\n\t\tabbr: 'MVT',\n\t\tname: 'Maldives Time',\n\t\toffset: ['+', 5, 0],\n\t},\n\t{\n\t\tabbr: 'MYT',\n\t\tname: 'Malaysia Time',\n\t\toffset: ['+', 8, 0],\n\t},\n\t{\n\t\tabbr: 'NCT',\n\t\tname: 'New Caledonia Time',\n\t\toffset: ['+', 11, 0],\n\t},\n\t{\n\t\tabbr: 'NDT',\n\t\tname: 'Newfoundland Daylight Time',\n\t\toffset: ['-', 2, 30],\n\t},\n\t{\n\t\tabbr: 'NFT',\n\t\tname: 'Norfolk Time',\n\t\toffset: ['+', 11, 0],\n\t},\n\t{\n\t\tabbr: 'NPT',\n\t\tname: 'Nepal Time',\n\t\toffset: ['+', 5, 45],\n\t},\n\t{\n\t\tabbr: 'NRT',\n\t\tname: 'Nauru Time',\n\t\toffset: ['+', 12, 0],\n\t},\n\t{\n\t\tabbr: 'NST',\n\t\tname: 'Newfoundland Standard Time',\n\t\toffset: ['-', 3, 30],\n\t},\n\t{\n\t\tabbr: 'NT',\n\t\tname: 'Newfoundland Time',\n\t\toffset: ['-', 3, 30],\n\t},\n\t{\n\t\tabbr: 'NUT',\n\t\tname: 'Niue Time',\n\t\toffset: ['-', 11, 0],\n\t},\n\t{\n\t\tabbr: 'NZDT',\n\t\tname: 'New Zealand Daylight Time',\n\t\toffset: ['+', 13, 0],\n\t},\n\t{\n\t\tabbr: 'NZST',\n\t\tname: 'New Zealand Standard Time',\n\t\toffset: ['+', 12, 0],\n\t},\n\t{\n\t\tabbr: 'OMST',\n\t\tname: 'Omsk Time',\n\t\toffset: ['+', 6, 0],\n\t},\n\t{\n\t\tabbr: 'ORAT',\n\t\tname: 'Oral Time',\n\t\toffset: ['+', 5, 0],\n\t},\n\t{\n\t\tabbr: 'PDT',\n\t\tname: 'Pacific Daylight Time',\n\t\toffset: ['-', 7, 0],\n\t},\n\t{\n\t\tabbr: 'PET',\n\t\tname: 'Peru Time',\n\t\toffset: ['-', 5, 0],\n\t},\n\t{\n\t\tabbr: 'PETT',\n\t\tname: 'Kamchatka Time',\n\t\toffset: ['+', 12, 0],\n\t},\n\t{\n\t\tabbr: 'PGT',\n\t\tname: 'Papua New Guinea Time',\n\t\toffset: ['+', 10, 0],\n\t},\n\t{\n\t\tabbr: 'PHOT',\n\t\tname: 'Phoenix Island Time',\n\t\toffset: ['+', 13, 0],\n\t},\n\t{\n\t\tabbr: 'PHST',\n\t\tname: 'Philippine Standard Time',\n\t\toffset: ['+', 8, 0],\n\t},\n\t{\n\t\tabbr: 'PHT',\n\t\tname: 'Philippine Time',\n\t\toffset: ['+', 8, 0],\n\t},\n\t{\n\t\tabbr: 'PKT',\n\t\tname: 'Pakistan Standard Time',\n\t\toffset: ['+', 5, 0],\n\t},\n\t{\n\t\tabbr: 'PMDT',\n\t\tname: 'Saint Pierre and Miquelon Daylight time',\n\t\toffset: ['-', 2, 0],\n\t},\n\t{\n\t\tabbr: 'PMST',\n\t\tname: 'Saint Pierre and Miquelon Standard Time',\n\t\toffset: ['-', 3, 0],\n\t},\n\t{\n\t\tabbr: 'PONT',\n\t\tname: 'Pohnpei Standard Time',\n\t\toffset: ['+', 11, 0],\n\t},\n\t{\n\t\tabbr: 'PST',\n\t\tname: 'Pacific Standard Time',\n\t\toffset: ['-', 8, 0],\n\t},\n\t{\n\t\tabbr: 'PT',\n\t\tname: 'Pacific Time',\n\t\toffset: ['-', 8, 0],\n\t},\n\t{\n\t\tabbr: 'PWT',\n\t\tname: 'Palau Time',\n\t\toffset: ['+', 9, 0],\n\t},\n\t{\n\t\tabbr: 'PYST',\n\t\tname: 'Paraguay Summer Time',\n\t\toffset: ['-', 3, 0],\n\t},\n\t{\n\t\tabbr: 'PYT',\n\t\tname: 'Paraguay Time',\n\t\toffset: ['-', 4, 0],\n\t},\n\t{\n\t\tabbr: 'RET',\n\t\tname: 'Réunion Time',\n\t\toffset: ['+', 4, 0],\n\t},\n\t{\n\t\tabbr: 'ROTT',\n\t\tname: 'Rothera Research Station Time',\n\t\toffset: ['-', 3, 0],\n\t},\n\t{\n\t\tabbr: 'SAKT',\n\t\tname: 'Sakhalin Island time',\n\t\toffset: ['+', 11, 0],\n\t},\n\t{\n\t\tabbr: 'SAMT',\n\t\tname: 'Samara Time',\n\t\toffset: ['+', 4, 0],\n\t},\n\t{\n\t\tabbr: 'SAST',\n\t\tname: 'South African Standard Time',\n\t\toffset: ['+', 2, 0],\n\t},\n\t{\n\t\tabbr: 'SBT',\n\t\tname: 'Solomon Islands Time',\n\t\toffset: ['+', 11, 0],\n\t},\n\t{\n\t\tabbr: 'SCT',\n\t\tname: 'Seychelles Time',\n\t\toffset: ['+', 4, 0],\n\t},\n\t{\n\t\tabbr: 'SGT',\n\t\tname: 'Singapore Time',\n\t\toffset: ['+', 8, 0],\n\t},\n\t{\n\t\tabbr: 'SLST',\n\t\tname: 'Sri Lanka Standard Time',\n\t\toffset: ['+', 5, 30],\n\t},\n\t{\n\t\tabbr: 'SRET',\n\t\tname: 'Srednekolymsk Time',\n\t\toffset: ['+', 11, 0],\n\t},\n\t{\n\t\tabbr: 'SRT',\n\t\tname: 'Suriname Time',\n\t\toffset: ['-', 3, 0],\n\t},\n\t{\n\t\tabbr: 'SST',\n\t\tname: 'Samoa Standard Time',\n\t\toffset: ['-', 11, 0],\n\t},\n\t{\n\t\tabbr: 'SYOT',\n\t\tname: 'Showa Station Time',\n\t\toffset: ['+', 3, 0],\n\t},\n\t{\n\t\tabbr: 'TAHT',\n\t\tname: 'Tahiti Time',\n\t\toffset: ['-', 10, 0],\n\t},\n\t{\n\t\tabbr: 'TFT',\n\t\tname: 'French Southern and Antarctic Time',\n\t\toffset: ['+', 5, 0],\n\t},\n\t{\n\t\tabbr: 'THA',\n\t\tname: 'Thailand Standard Time',\n\t\toffset: ['+', 7, 0],\n\t},\n\t{\n\t\tabbr: 'TJT',\n\t\tname: 'Tajikistan Time',\n\t\toffset: ['+', 5, 0],\n\t},\n\t{\n\t\tabbr: 'TKT',\n\t\tname: 'Tokelau Time',\n\t\toffset: ['+', 13, 0],\n\t},\n\t{\n\t\tabbr: 'TLT',\n\t\tname: 'Timor Leste Time',\n\t\toffset: ['+', 9, 0],\n\t},\n\t{\n\t\tabbr: 'TMT',\n\t\tname: 'Turkmenistan Time',\n\t\toffset: ['+', 5, 0],\n\t},\n\t{\n\t\tabbr: 'TOT',\n\t\tname: 'Tonga Time',\n\t\toffset: ['+', 13, 0],\n\t},\n\t{\n\t\tabbr: 'TRT',\n\t\tname: 'Turkey Time',\n\t\toffset: ['+', 3, 0],\n\t},\n\t{\n\t\tabbr: 'TVT',\n\t\tname: 'Tuvalu Time',\n\t\toffset: ['+', 12, 0],\n\t},\n\t{\n\t\tabbr: 'ULAST',\n\t\tname: 'Ulaanbaatar Summer Time',\n\t\toffset: ['+', 9, 0],\n\t},\n\t{\n\t\tabbr: 'ULAT',\n\t\tname: 'Ulaanbaatar Standard Time',\n\t\toffset: ['+', 8, 0],\n\t},\n\t{\n\t\tabbr: 'USZ1',\n\t\tname: 'Kaliningrad Time',\n\t\toffset: ['+', 2, 0],\n\t},\n\t{\n\t\tabbr: 'UTC',\n\t\tname: 'Coordinated Universal Time',\n\t\toffset: ['+', 0, 0],\n\t},\n\t{\n\t\tabbr: 'UYST',\n\t\tname: 'Uruguay Summer Time',\n\t\toffset: ['-', 2, 0],\n\t},\n\t{\n\t\tabbr: 'UYT',\n\t\tname: 'Uruguay Standard Time',\n\t\toffset: ['-', 3, 0],\n\t},\n\t{\n\t\tabbr: 'UZT',\n\t\tname: 'Uzbekistan Time',\n\t\toffset: ['+', 5, 0],\n\t},\n\t{\n\t\tabbr: 'VET',\n\t\tname: 'Venezuelan Standard Time',\n\t\toffset: ['-', 4, 0],\n\t},\n\t{\n\t\tabbr: 'VLAT',\n\t\tname: 'Vladivostok Time',\n\t\toffset: ['+', 10, 0],\n\t},\n\t{\n\t\tabbr: 'VOLT',\n\t\tname: 'Volgograd Time',\n\t\toffset: ['+', 4, 0],\n\t},\n\t{\n\t\tabbr: 'VOST',\n\t\tname: 'Vostok Station Time',\n\t\toffset: ['+', 6, 0],\n\t},\n\t{\n\t\tabbr: 'VUT',\n\t\tname: 'Vanuatu Time',\n\t\toffset: ['+', 11, 0],\n\t},\n\t{\n\t\tabbr: 'WAKT',\n\t\tname: 'Wake Island Time',\n\t\toffset: ['+', 12, 0],\n\t},\n\t{\n\t\tabbr: 'WAST',\n\t\tname: 'West Africa Summer Time',\n\t\toffset: ['+', 2, 0],\n\t},\n\t{\n\t\tabbr: 'WAT',\n\t\tname: 'West Africa Time',\n\t\toffset: ['+', 1, 0],\n\t},\n\t{\n\t\tabbr: 'WEST',\n\t\tname: 'Western European Summer Time',\n\t\toffset: ['+', 1, 0],\n\t},\n\t{\n\t\tabbr: 'WET',\n\t\tname: 'Western European Time',\n\t\toffset: ['+', 0, 0],\n\t},\n\t{\n\t\tabbr: 'WFT',\n\t\tname: 'Wallis and Futuna Time',\n\t\toffset: ['+', 12, 0],\n\t},\n\t{\n\t\tabbr: 'WGST',\n\t\tname: 'West Greenland Summer Time',\n\t\toffset: ['-', 2, 0],\n\t},\n\t{\n\t\tabbr: 'WGST',\n\t\tname: 'West Greenland Time',\n\t\toffset: ['-', 3, 0],\n\t},\n\t{\n\t\tabbr: 'WIB',\n\t\tname: 'Western Indonesia Time',\n\t\toffset: ['+', 7, 0],\n\t},\n\t{\n\t\tabbr: 'WIT',\n\t\tname: 'Eastern Indonesia Time',\n\t\toffset: ['+', 9, 0],\n\t},\n\t{\n\t\tabbr: 'WST',\n\t\tname: 'Western Standard Time',\n\t\toffset: ['+', 8, 0],\n\t},\n\t{\n\t\tabbr: 'YAKT',\n\t\tname: 'Yakutsk Time',\n\t\toffset: ['+', 9, 0],\n\t},\n\t{\n\t\tabbr: 'YEKT',\n\t\tname: 'Yekaterinburg Time',\n\t\toffset: ['+', 5, 0],\n\t},\n]\n\n/** The current date as a Date object */\nconst d = new Date()\n\n/** The current minute of the current hour */\nconst minutes = d.getMinutes()\n\n/** The current year */\nconst year = d.getFullYear()\n\n/** An array of the names of month in order */\nexport const monthNamesList: MonthName[] = [\n\t'January',\n\t'February',\n\t'March',\n\t'April',\n\t'May',\n\t'June',\n\t'July',\n\t'August',\n\t'September',\n\t'October',\n\t'November',\n\t'December',\n]\n\n/** An array of the names of the days of the week in order */\nexport const weekdayNamesList: WeekdayName[] = [\n\t'Sunday',\n\t'Monday',\n\t'Tuesday',\n\t'Wednesday',\n\t'Thursday',\n\t'Friday',\n\t'Saturday',\n]\n\nexport function compareDates(d1: Date, mode: '>' | '>=' | '<' | '<=' | '==', d2: Date): boolean {\n\tconst date1 = d1.getTime(),\n\t\tdate2 = d2.getTime()\n\n\tswitch (mode) {\n\t\tcase '>':\n\t\t\treturn date1 > date2\n\t\tcase '>=':\n\t\t\treturn date1 >= date2\n\t\tcase '<':\n\t\t\treturn date1 < date2\n\t\tcase '<=':\n\t\t\treturn date1 <= date2\n\t\tcase '==':\n\t\t\treturn date1 === date2\n\t\tdefault:\n\t\t\tthrow new Error('Invalid mode')\n\t}\n}\n\n/** The name of the current month */\nexport const currentMonthName = getMonthName()\n\n/** The name of the current day of the week */\nexport const currentWeekdayName = getWeekdayName()\n\nexport function dateMath(d1: Date, operator: '+' | '-' | '*' | '/', d2: Date): Date {\n\tconst date1 = d1.getTime(),\n\t\tdate2 = d2.getTime()\n\n\tswitch (operator) {\n\t\tcase '+':\n\t\t\treturn new Date(date1 + date2)\n\t\tcase '-':\n\t\t\treturn new Date(date1 - date2)\n\t\tcase '*':\n\t\t\treturn new Date(date1 * date2)\n\t\tcase '/':\n\t\t\treturn new Date(date1 / date2)\n\t\tdefault:\n\t\t\tthrow new Error('Invalid operator')\n\t}\n}\n\n/**\n * # Days In Month\n * - Returns the number of days in the specified month.\n * @param {Date} date A Date object representing the month to get the number of days for. (Preset to the current date)\n * @returns {number} The number of days in the specified month.\n */\nexport function daysInMonth(date: Date = d): number {\n\tconst selectedYear = date.getFullYear(),\n\t\tselectedMonth = date.getMonth() + 1\n\treturn new Date(selectedYear, selectedMonth, 0).getDate()\n}\n\n/**\n * # First of Month\n * - Returns the first day of the specified month.\n * @param {Date} date A Date object representing the month to get the first day for. (Preset to current date)\n * @returns {Date} A Date object of the given month, with the first day.\n */\nexport function firstOfMonth(date: Date = d): Date {\n\t// Return a new Date object with the first of the month selected\n\treturn new Date(date.getFullYear(), date.getMonth(), 1)\n}\n\n/**\n * # Get Date\n * - Returns the date with two digits\n * @param {number|Date} date The date to get date\n * @returns {string} The date with two digits\n */\nexport function getDate(date: number | Date = d): string {\n\tif (typeof date !== 'number') date = date.getDate()\n\tlet formattedDate = date.toString()\n\tif (formattedDate.length === 1) formattedDate = `0${formattedDate}`\n\treturn formattedDate\n}\n\n/**\n * # Get Hours\n * - Returns the hours with two digits\n * @param {number|Date} hours The date to get hours\n * @returns {string} The hours with two digits\n */\nexport function getHours(hours: number | Date = d): string {\n\tif (typeof hours !== 'number') hours = hours.getHours()\n\tlet formattedHours = hours.toString()\n\tif (formattedHours.length === 1) formattedHours = `0${formattedHours}`\n\treturn formattedHours\n}\n\n/**\n * # Get Hours in 12\n * - Returns the hour based on the specified 24 hour value in a 12 hour format\n * @param {number|Date} hour The hour to be converted to 12 hour format\n * @returns {number} The hour in a 12 hour format\n */\nexport function getHoursIn12(hour: number | Date = d): number {\n\tif (typeof hour !== 'number') hour = hour.getHours()\n\tif (hour > 12) return hour - 12\n\treturn hour\n}\n\n/**\n * # Get Meridian from Hour\n * - Returns either 'pm' or 'am' based on the specified 24 hour value\n * @param {number|Date} hour The hour to get the meridian from\n * @returns {'am'|'pm'} The meridian for the given hour\n */\nexport function getMeridianFromHour(hour: number | Date = d): 'am' | 'pm' {\n\tif (typeof hour !== 'number') hour = hour.getHours()\n\tif (hour >= 12) return 'pm'\n\treturn 'am'\n}\n\n/**\n * # Get Milliseconds\n * - Returns the milliseconds with two digits\n * @param {number|Date} milliseconds The date to get milliseconds\n * @returns {string} The milliseconds with two digits\n */\nexport function getMilliseconds(milliseconds: number | Date = d): string {\n\tif (typeof milliseconds !== 'number') milliseconds = milliseconds.getMilliseconds()\n\tlet formattedMilliseconds = minutes.toString()\n\tif (formattedMilliseconds.length === 1) formattedMilliseconds = `0${formattedMilliseconds}`\n\treturn formattedMilliseconds\n}\n\n/**\n * # Get Minutes\n * - Returns the minutes with two digits\n * @param {number|Date} minutes The date to get minutes\n * @returns {string} The minutes with two digits\n */\nexport function getMinutes(minutes: number | Date = d): string {\n\tif (typeof minutes !== 'number') minutes = minutes.getMinutes()\n\tlet formattedMinutes = minutes.toString()\n\tif (formattedMinutes.length === 1) formattedMinutes = `0${formattedMinutes}`\n\treturn formattedMinutes\n}\n\n/**\n * # Get Month\n * - Returns the month with two digits\n * @param {number|Date} month The date to get month\n * @returns {string} The month with two digits\n */\nexport function getMonth(month: number | Date = d): string {\n\tif (typeof month !== 'number') month = month.getMonth() + 1\n\tlet formattedMonth = month.toString()\n\tif (formattedMonth.length === 1) formattedMonth = `0${formattedMonth}`\n\treturn formattedMonth\n}\n\nexport function getMonthIndexFromName(name: MonthName): number {\n\treturn monthNamesList.findIndex(monthName => monthName === name)\n}\n\n/**\n * # Get Month Name\n * - Returns the name of the specified month\n * @param {Date} date A Date object representing the month to get the name of the month from. (Preset to the current date)\n * @returns {MonthName} The name of the specified month\n */\nexport function getMonthName(date: number | Date = d): MonthName {\n\tif (typeof date === 'number') return monthNamesList[date]\n\treturn monthNamesList[date.getMonth()]\n}\n\n/**\n * # Get Next Month\n * - Returns the number of the following month from the specified month\n * @param {Date} date The Date object representing the month to get the following month from (Preset to current date)\n * @returns {number} The indexed month of the following month\n */\nexport function getNextMonth(date: Date = d): number {\n\tconst givenMonth = date.getMonth() // Get the month from date\n\t// Return the indexed month. min 0, max 11\n\treturn givenMonth === 11 ? 0 : givenMonth + 1\n}\n\n/**\n * # Get Previous Month\n * - Returns the number of the previous month from the specified month\n * @param {Date} date The Date object representing the month to get the previous month from (Preset to current date)\n * @returns {number} The indexed month of the previous month\n */\nexport function getPreviousMonth(date: Date = d): number {\n\tconst givenMonth = date.getMonth() // Get the month from date\n\t// Return the indexed month. min 0, max 11\n\treturn givenMonth === 0 ? 11 : givenMonth - 1\n}\n\n/**\n * # Get Seconds\n * - Returns the seconds with two digits\n * @param {number|Date} seconds The date to get seconds\n * @returns {string} The seconds with two digits\n */\nexport function getSeconds(seconds: number | Date = d): string {\n\tif (typeof seconds !== 'number') seconds = seconds.getSeconds()\n\tlet formattedSeconds = seconds.toString()\n\tif (formattedSeconds.length === 1) formattedSeconds = `0${formattedSeconds}`\n\treturn formattedSeconds\n}\n\n/**\n * # Get Local Timezone\n * - Returns the user's local timezone data.\n * @returns {TimezoneData | undefined} Timezone data object\n */\nexport function getLocalTimezone(): TimezoneData | undefined {\n\tconst timezoneOffset = new Date().getTimezoneOffset(),\n\t\tisPositive = timezoneOffset >= 0,\n\t\tabsoluteOffset = Math.abs(timezoneOffset),\n\t\toffsetHours = Math.floor(absoluteOffset / 60),\n\t\toffsetMinutes = absoluteOffset % 60\n\n\treturn timezoneList.find(\n\t\t({ offset }) =>\n\t\t\t(isPositive ? offset[0] === '+' : offset[0] === '-') && offset[1] === offsetHours && offset[2] === offsetMinutes,\n\t)\n}\n\n/**\n * # Get User Readable Date\n * - Returns a string of the current date in a user-friendly way\n * - Includes `'Yesterday'`, '`Today'`, and `'Tomorrow'`\n * @param date (default: `new Date()`)\n * @returns {'Today'|'Tomorrow'|'Yesterday'|string} `'weekday, month day, year'` | `'Yesterday'` | `'Today'` | `'Tomorrow'`\n */\nexport function getUserReadableDate(date: Date = d): 'Today' | 'Tomorrow' | 'Yesterday' | string {\n\tconst dateTime = date.getTime()\n\n\tconst today = new Date(),\n\t\tisToday = dateTime === today.getTime()\n\n\tif (isToday) return 'Today'\n\n\tconst yesterday = new Date(today.getDate() - 1),\n\t\tisYesterday = dateTime === yesterday.getTime()\n\n\tif (isYesterday) return 'Yesterday'\n\n\tconst tomorrow = new Date(today.getDate() + 1),\n\t\tisTomorrow = dateTime === tomorrow.getTime()\n\n\tif (isTomorrow) return 'Tomorrow'\n\n\tconst thisYear = today.getFullYear(),\n\t\tisSameYear = date.getFullYear() === thisYear\n\n\tconst fullDateString = toFullDateString(date, {\n\t\tweekday: 'code',\n\t\tyear: !isSameYear,\n\t})\n\n\treturn fullDateString\n}\n\n/**\n * # Get Weekday Name\n * - Returns the weekday name of the specified day\n * @param {number | Date} weekday A Date object or number representing the day to get the weekday name from. (Preset to the current date)\n * @returns {WeekdayName} The name of the specified weekday\n */\nexport function getWeekdayName(weekday: number | Date = d): WeekdayName {\n\tif (typeof weekday === 'number') return weekdayNamesList[weekday]\n\t// Return the name of the day of the week\n\treturn weekdayNamesList[weekday.getDay()]\n}\n\n/**\n * # Get Years in Range\n * - Returns an array of years in between the specified minimum and maximum years\n * @param {number} minYear The minimum year\n * @param {number} maxYear The maximum year\n * @returns {number[]} Array of years\n */\nexport function getYearsInRange(minYear: number = 0, maxYear: number = year): number[] {\n\tconst yearList = []\n\n\tfor (let selectedYear = minYear; selectedYear <= maxYear; selectedYear++) {\n\t\tyearList.push(selectedYear)\n\t}\n\n\treturn yearList\n}\n\n/** Change how to display the weekday, month name, day of the month, and year. */\ntype ToFullDateStringOptionsProps = Partial<{\n\t/** Inclusion of the day of the month. (default: `true`) */\n\tday: boolean\n\t/** Inclusion of the month name. (default: `true`/`'full'`) */\n\tmonth: boolean | 'full' | 'code'\n\t/** Inclusion of the day of the week. (default: `true`/`'full'`) */\n\tweekday: boolean | 'full' | 'code'\n\t/** Inclusion of the year. (default: `true`) */\n\tyear: boolean | 'full' | 'code'\n}>\n\n/**\n * # To Full Date String\n * - Returns a formatted string to display the date\n * @param {Date} date (default: `new Date()`)\n * @param {ToFullDateStringOptionsProps} options Change how to display the weekday, month name, day of the month, and year.\n * @returns {string} '`weekday`, `month` `day`, `year`'\n */\nexport function toFullDateString(date: Date = d, options?: ToFullDateStringOptionsProps): string {\n\tlet weekdayName: string = getWeekdayName(date),\n\t\tmonthName: string = getMonthName(date),\n\t\tdayOfMonth: number | string = date.getDate(),\n\t\tyear = date.getFullYear().toString()\n\n\tif (options) {\n\t\tconst includesWeekday = options.weekday !== false,\n\t\t\tincludesDay = options.day !== false,\n\t\t\tincludesMonth = options.month !== false,\n\t\t\tincludesYear = options.year !== false\n\n\t\tif (includesWeekday) {\n\t\t\tif (options.weekday === 'code') weekdayName = weekdayName.slice(0, 3)\n\n\t\t\tif (includesMonth || includesDay || includesYear) weekdayName += ', '\n\t\t} else {\n\t\t\tweekdayName = ''\n\t\t}\n\n\t\tif (includesMonth) {\n\t\t\tif (options.month === 'code') monthName = monthName.slice(0, 3)\n\n\t\t\tif (includesDay) monthName += ' '\n\t\t} else {\n\t\t\tmonthName = ''\n\t\t}\n\n\t\tif (!includesDay) dayOfMonth = ''\n\n\t\tif (includesYear) {\n\t\t\tif (options.year === 'code') year = year.slice(-2)\n\n\t\t\tif (includesMonth || includesDay) year = ', ' + year\n\t\t} else {\n\t\t\tyear = ''\n\t\t}\n\t}\n\n\treturn weekdayName + monthName + dayOfMonth + year\n}\n\n/**\n * # Get User Readable Date From Timestampz\n * - Returns a string of the current date in a user-friendly way\n * - Includes `'Yesterday'`, '`Today'`, and `'Tomorrow'`\n * @param string\n * @returns {'Today'|'Tomorrow'|'Yesterday'|string} `'weekday, month day, year'` | `'Yesterday'` | `'Today'` | `'Tomorrow'`\n */\nexport function getUserReadableDateFromTimestampz(timestampz: string): 'Today' | 'Tomorrow' | 'Yesterday' | string {\n\tconst [date, time] = timestampz.split('T') || []\n\n\tconst [year, month, day] = date?.split('-').map(string => Number(string)) || []\n\n\tconst timezoneIsAheadOfUTC = time?.includes('+')\n\n\tconst [hms, _timezone] = timezoneIsAheadOfUTC ? time?.split('+') : time?.split('-') || []\n\n\tconst [hours, minutes, seconds] = hms?.split(':').map(string => Number(string)) || []\n\n\t// const [timezoneHours, timezoneMinutes] = timezone?.split(':').map(string => Number(string)) || []\n\n\tconst dateAndTime = new Date(year, month - 1, day, hours, minutes, seconds),\n\t\tuserReadableDateAndTime = getUserReadableDate(dateAndTime)\n\n\treturn userReadableDateAndTime\n}\n","// * Types\nimport { ComponentPropsWithoutRef, ComponentPropsWithRef } from 'react'\n\nexport type FacebookLogoProps = Omit<ComponentPropsWithRef<'svg'>, 'viewBox'> &\n\t(\n\t\t| ({\n\t\t\t\tvariant?: 'circle'\n\t\t } & (\n\t\t\t\t| {\n\t\t\t\t\t\tcutout: true\n\t\t\t\t\t\ttargets?: Partial<{\n\t\t\t\t\t\t\tbackground: Omit<ComponentPropsWithoutRef<'path'>, 'data-name'>\n\t\t\t\t\t\t}>\n\t\t\t\t }\n\t\t\t\t| {\n\t\t\t\t\t\tcutout?: false\n\t\t\t\t\t\ttargets?: Partial<{\n\t\t\t\t\t\t\tbackground: Omit<ComponentPropsWithoutRef<'circle'>, 'data-name'>\n\t\t\t\t\t\t\tf: Omit<ComponentPropsWithoutRef<'path'>, 'data-name'>\n\t\t\t\t\t\t}>\n\t\t\t\t }\n\t\t ))\n\t\t| { variant: 'f'; cutout?: never; targets?: never }\n\t)\n\n// * Utilities\nimport { twMerge } from '../../utils'\n\n/**\n * # Facebook Logo\n *\n * ```ts\n * cutout: boolean = false\n * targets: {\n * \t background: [data-name=\"background\"],\n * \t f: [data-name=\"f\"]\n * }\n * variant: 'circle' | 'f' = 'circle'\n * ```\n */\nexport function FacebookLogo({ className, cutout = false, targets, variant = 'circle', ...props }: FacebookLogoProps) {\n\treturn (\n\t\t<svg\n\t\t\t{...props}\n\t\t\tclassName={twMerge(\n\t\t\t\tvariant === 'circle' && cutout\n\t\t\t\t\t? 'fill-[url(#facebook-gradient)]'\n\t\t\t\t\t: '[&_[data-name=\"background\"]]:fill-[url(#facebook-gradient)] [&_[data-name=\"f\"]]:fill-white',\n\t\t\t\tvariant === 'f' && 'fill-[url(#facebook-gradient)]',\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\tviewBox={`0 0 ${variant === 'circle' ? '1024' : '551'} ${variant === 'circle' && cutout ? '1017' : '1024'}`}\n\t\t>\n\t\t\t{variant === 'circle' &&\n\t\t\t\t(cutout ? (\n\t\t\t\t\t<path\n\t\t\t\t\t\t{...targets?.background}\n\t\t\t\t\t\tdata-name='background'\n\t\t\t\t\t\td='M426.672,1016.91C184.64,976.24 0,765.504 0,512C0,229.424 229.424,0 512,0C794.576,0 1024,229.424 1024,512C1024,765.504 839.36,976.24 597.328,1016.91L597.328,651.376L711.104,651.376L733.872,509.152L597.328,509.152L597.328,409.6C597.328,369.776 611.552,338.496 674.128,338.496L739.552,338.496L739.552,207.648C702.576,201.952 662.752,196.272 625.776,196.272C509.152,196.272 426.672,267.376 426.672,395.376L426.672,509.152L298.672,509.152L298.672,651.376L426.672,651.376L426.672,1016.91Z'\n\t\t\t\t\t/>\n\t\t\t\t) : (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<circle {...targets?.background} data-name='background' cx='512' cy='512' r='512' />\n\t\t\t\t\t\t<path\n\t\t\t\t\t\t\t{...(targets && 'f' in targets ? targets?.f : {})}\n\t\t\t\t\t\t\tdata-name='f'\n\t\t\t\t\t\t\td='M426.672,1016.91L426.672,651.376L298.672,651.376L298.672,509.152L426.672,509.152L426.672,395.376C426.672,267.376 509.152,196.272 625.776,196.272C662.752,196.272 702.576,201.952 739.552,207.648L739.552,338.496L674.128,338.496C611.552,338.496 597.328,369.776 597.328,409.6L597.328,509.152L733.872,509.152L711.104,651.376L597.328,651.376L597.328,1016.91C569.584,1021.57 541.072,1024 512,1024C482.928,1024 454.416,1021.57 426.672,1016.91Z'\n\t\t\t\t\t\t/>\n\t\t\t\t\t</>\n\t\t\t\t))}\n\t\t\t{variant === 'f' && (\n\t\t\t\t<path d='M159.712,1024L159.712,567.888L0,567.888L0,390.432L159.712,390.432L159.712,248.448C159.712,88.736 262.656,0 408.176,0C454.304,0 504,7.104 550.144,14.192L550.144,177.472L468.512,177.472C390.432,177.472 372.672,216.512 372.672,266.192L372.672,390.432L543.04,390.432L514.656,567.888L372.672,567.888L372.672,1024L159.712,1024Z' />\n\t\t\t)}\n\t\t\t<defs>\n\t\t\t\t{variant === 'circle' && (\n\t\t\t\t\t<linearGradient\n\t\t\t\t\t\tid='facebook-gradient'\n\t\t\t\t\t\tx1='0'\n\t\t\t\t\t\ty1='0'\n\t\t\t\t\t\tx2='1'\n\t\t\t\t\t\ty2='0'\n\t\t\t\t\t\tgradientUnits='userSpaceOnUse'\n\t\t\t\t\t\tgradientTransform='matrix(2.81599e-13,-994.078,994.078,2.81599e-13,512,994.078)'\n\t\t\t\t\t>\n\t\t\t\t\t\t<stop offset='0' stopColor='rgb(0 98 224)' stopOpacity={1} />\n\t\t\t\t\t\t<stop offset='1' stopColor='rgb(25 175 255)' stopOpacity={1} />\n\t\t\t\t\t</linearGradient>\n\t\t\t\t)}\n\t\t\t\t{variant === 'f' && (\n\t\t\t\t\t<linearGradient\n\t\t\t\t\t\tid='facebook-gradient'\n\t\t\t\t\t\tx1='0'\n\t\t\t\t\t\ty1='0'\n\t\t\t\t\t\tx2='1'\n\t\t\t\t\t\ty2='0'\n\t\t\t\t\t\tgradientUnits='userSpaceOnUse'\n\t\t\t\t\t\tgradientTransform='matrix(0.0108513,-1032.85,1032.85,0.0108513,266.187,1032.85)'\n\t\t\t\t\t>\n\t\t\t\t\t\t<stop offset='0' stopColor='rgb(0 98 224)' stopOpacity={1} />\n\t\t\t\t\t\t<stop offset='1' stopColor='rgb(25 175 255)' stopOpacity={1} />\n\t\t\t\t\t</linearGradient>\n\t\t\t\t)}\n\t\t\t</defs>\n\t\t</svg>\n\t)\n}\n","import { ComponentPropsWithRef } from 'react'\n\nexport type GoogleLogoProps = Omit<ComponentPropsWithRef<'svg'>, 'viewBox'> & {\n\tgradient?: boolean\n}\n\n/**\n * # Google Logo\n *\n * ```ts\n * gradient: boolean = true\n * ```\n */\nexport function GoogleLogo({ gradient = true, ...props }: GoogleLogoProps) {\n\treturn (\n\t\t<svg {...props} viewBox='0 0 1003 1024'>\n\t\t\t{gradient ? (\n\t\t\t\t<>\n\t\t\t\t\t<path\n\t\t\t\t\t\td='M992.945,417.01L511.964,417.01L511.964,613.859L788.338,613.859C783.897,641.717 773.921,669.122 759.31,694.112C742.575,722.744 721.881,744.542 700.67,761.138C637.14,810.865 563.07,821.031 511.628,821.031C381.685,821.031 270.653,735.251 227.672,618.689C225.937,614.461 224.786,610.09 223.383,605.772C213.887,576.108 208.697,544.687 208.697,512.032C208.697,478.046 214.317,445.514 224.561,414.789C264.982,293.606 378.511,203.097 511.721,203.097C538.518,203.097 564.319,206.353 588.786,212.851C644.708,227.698 684.261,256.943 708.499,280.075L854.747,133.794C765.786,50.482 649.815,0 511.478,0C400.888,-0.004 298.788,35.19 215.121,94.667C147.265,142.902 91.616,207.482 54.06,282.487C19.128,352.029 0,429.093 0,511.953C0,594.821 19.158,672.685 54.09,741.588L54.09,742.052C90.988,815.198 144.943,878.178 210.526,926.192C267.816,968.135 370.54,1024 511.478,1024C592.529,1024 664.363,1009.08 727.713,981.104C773.413,960.926 813.904,934.608 850.563,900.787C899,856.093 936.938,800.815 962.829,737.214C988.724,673.612 1002.57,601.692 1002.57,523.719C1002.57,487.404 999.002,450.524 992.945,417.01Z'\n\t\t\t\t\t\tfill='url(#google-gradient-1)'\n\t\t\t\t\t/>\n\t\t\t\t\t<path\n\t\t\t\t\t\td='M962.829,737.214L788.338,613.859C783.897,641.717 773.921,669.122 759.31,694.112C742.575,722.744 721.881,744.542 700.67,761.138C637.14,810.865 563.07,821.031 511.628,821.031C381.685,821.031 270.653,735.251 227.672,618.689C225.937,614.461 224.786,610.09 223.383,605.772C213.887,576.108 208.697,544.687 208.697,512.032L0,511.953C0,594.821 19.158,672.685 54.09,741.588L54.09,742.052C90.988,815.198 144.943,878.178 210.526,926.192C267.816,968.135 370.54,1024 511.478,1024C592.529,1024 664.363,1009.08 727.713,981.104C773.413,960.926 813.904,934.608 850.563,900.787C899,856.093 936.938,800.815 962.829,737.214Z'\n\t\t\t\t\t\tfill='url(#google-gradient-2)'\n\t\t\t\t\t/>\n\t\t\t\t\t<path\n\t\t\t\t\t\td='M0,511.953L208.697,512.032C208.697,478.046 214.317,445.514 224.561,414.789C264.982,293.606 378.511,203.097 511.721,203.097C538.518,203.097 564.319,206.353 588.786,212.851C644.708,227.698 684.261,256.943 708.499,280.075L854.747,133.794C765.786,50.482 649.815,0 511.478,0C400.888,-0.004 298.788,35.19 215.121,94.667C147.265,142.902 91.616,207.482 54.06,282.487C19.128,352.029 0,429.093 0,511.953Z'\n\t\t\t\t\t\tfill='url(#google-gradient-3)'\n\t\t\t\t\t/>\n\t\t\t\t\t<defs>\n\t\t\t\t\t\t<linearGradient\n\t\t\t\t\t\t\tid='google-gradient-1'\n\t\t\t\t\t\t\tx1='0'\n\t\t\t\t\t\t\ty1='0'\n\t\t\t\t\t\t\tx2='1'\n\t\t\t\t\t\t\ty2='0'\n\t\t\t\t\t\t\tgradientUnits='userSpaceOnUse'\n\t\t\t\t\t\t\tgradientTransform='matrix(-23.365,-1.73106,1.73106,-23.365,500.07,513.731)'\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<stop offset='0' stopColor='rgb(48,134,255)' stopOpacity={1} />\n\t\t\t\t\t\t\t<stop offset='1' stopColor='rgb(254,206,5)' stopOpacity={1} />\n\t\t\t\t\t\t</linearGradient>\n\t\t\t\t\t\t<radialGradient\n\t\t\t\t\t\t\tid='google-gradient-2'\n\t\t\t\t\t\t\tcx='0'\n\t\t\t\t\t\t\tcy='0'\n\t\t\t\t\t\t\tr='1'\n\t\t\t\t\t\t\tgradientUnits='userSpaceOnUse'\n\t\t\t\t\t\t\tgradientTransform='matrix(762.024,46.0057,-28.7966,476.978,457.583,993.176)'\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<stop offset='0' stopColor='rgb(15,188,92)' stopOpacity={1} />\n\t\t\t\t\t\t\t<stop offset='0.38' stopColor='rgb(15,188,92)' stopOpacity={1} />\n\t\t\t\t\t\t\t<stop offset='0.71' stopColor='rgb(15,188,92)' stopOpacity={0.28} />\n\t\t\t\t\t\t\t<stop offset='1' stopColor='rgb(15,188,92)' stopOpacity={0} />\n\t\t\t\t\t\t</radialGradient>\n\t\t\t\t\t\t<linearGradient\n\t\t\t\t\t\t\tid='google-gradient-3'\n\t\t\t\t\t\t\tx1='0'\n\t\t\t\t\t\t\ty1='0'\n\t\t\t\t\t\t\tx2='1'\n\t\t\t\t\t\t\ty2='0'\n\t\t\t\t\t\t\tgradientUnits='userSpaceOnUse'\n\t\t\t\t\t\t\tgradientTransform='matrix(-220.623,431.86,-270.317,-138.096,806.553,181.999)'\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<stop offset='0' stopColor='rgb(251,78,90)' stopOpacity={1} />\n\t\t\t\t\t\t\t<stop offset='0.39' stopColor='rgb(255,71,63)' stopOpacity={1} />\n\t\t\t\t\t\t\t<stop offset='1' stopColor='rgb(251,78,90)' stopOpacity={0} />\n\t\t\t\t\t\t</linearGradient>\n\t\t\t\t\t</defs>\n\t\t\t\t</>\n\t\t\t) : (\n\t\t\t\t<path d='M992.945,417.01L511.964,417.01L511.964,613.859L788.338,613.859C783.897,641.717 773.921,669.122 759.31,694.112C742.575,722.744 721.881,744.542 700.67,761.138C637.14,810.865 563.07,821.031 511.628,821.031C381.685,821.031 270.653,735.251 227.672,618.689C225.937,614.461 224.786,610.09 223.383,605.772C213.887,576.108 208.697,544.687 208.697,512.032C208.697,478.046 214.317,445.514 224.561,414.789C264.982,293.606 378.511,203.097 511.721,203.097C538.518,203.097 564.319,206.353 588.786,212.851C644.708,227.698 684.261,256.943 708.499,280.075L854.747,133.794C765.786,50.482 649.815,0 511.478,0C400.888,-0.004 298.788,35.19 215.121,94.667C147.265,142.902 91.616,207.482 54.06,282.487C19.128,352.029 0,429.093 0,511.953C0,594.821 19.158,672.685 54.09,741.588L54.09,742.052C90.988,815.198 144.943,878.178 210.526,926.192C267.816,968.135 370.54,1024 511.478,1024C592.529,1024 664.363,1009.08 727.713,981.104C773.413,960.926 813.904,934.608 850.563,900.787C899,856.093 936.938,800.815 962.829,737.214C988.724,673.612 1002.57,601.692 1002.57,523.719C1002.57,487.404 999.002,450.524 992.945,417.01Z' />\n\t\t\t)}\n\t\t</svg>\n\t)\n}\n","import { ComponentPropsWithRef } from 'react'\n\nexport type InstagramLogoProps = Omit<ComponentPropsWithRef<'svg'>, 'viewBox'> & {\n\tgradient?: boolean\n}\n\n/**\n * # Instagram Logo\n *\n * ```ts\n * gradient: boolean = true\n * ```\n */\nexport function InstagramLogo({ gradient = true, ...props }: InstagramLogoProps) {\n\treturn (\n\t\t<svg {...props} viewBox='0 0 1024 1024'>\n\t\t\t{gradient ? (\n\t\t\t\t<>\n\t\t\t\t\t<path\n\t\t\t\t\t\td='M512,0C651.052,0 668.488,0.588 723.096,3.08C777.592,5.568 814.812,14.224 847.38,26.88C881.048,39.96 909.6,57.472 938.064,85.936C966.528,114.4 984.036,142.952 997.12,176.624C1009.78,209.188 1018.43,246.408 1020.92,300.904C1023.41,355.512 1024,372.948 1024,512C1024,651.052 1023.41,668.488 1020.92,723.1C1018.43,777.596 1009.78,814.812 997.12,847.38C984.036,881.052 966.528,909.604 938.064,938.068C909.6,966.532 881.048,984.04 847.376,997.12C814.812,1009.78 777.592,1018.43 723.096,1020.92C668.488,1023.41 651.052,1024 512,1024C372.948,1024 355.512,1023.41 300.9,1020.92C246.404,1018.43 209.188,1009.78 176.62,997.12C142.948,984.036 114.396,966.532 85.932,938.068C57.468,909.604 39.96,881.048 26.88,847.38C14.22,814.816 5.568,777.596 3.08,723.096C0.588,668.488 0,651.052 0,512C0,372.948 0.588,355.512 3.08,300.904C5.568,246.408 14.22,209.188 26.88,176.62C39.964,142.952 57.468,114.4 85.932,85.936C114.396,57.472 142.948,39.964 176.62,26.88C209.184,14.224 246.404,5.568 300.904,3.08C355.512,0.588 372.948,0 512,0ZM512,92.256C375.288,92.256 359.096,92.776 305.108,95.236C255.188,97.516 228.076,105.856 210.036,112.868C186.14,122.156 169.084,133.248 151.164,151.168C133.248,169.084 122.152,186.14 112.868,210.036C105.856,228.08 97.516,255.192 95.236,305.112C92.772,359.1 92.252,375.292 92.252,512C92.252,648.712 92.772,664.904 95.236,718.892C97.512,768.812 105.856,795.924 112.868,813.964C122.152,837.86 133.248,854.916 151.164,872.836C169.08,890.752 186.14,901.848 210.036,911.132C228.08,918.144 255.188,926.484 305.108,928.764C359.088,931.228 375.28,931.748 512,931.748C648.716,931.748 664.908,931.228 718.888,928.764C768.808,926.488 795.92,918.144 813.964,911.132C837.86,901.848 854.916,890.752 872.832,872.836C890.748,854.92 901.844,837.86 911.132,813.964C918.144,795.92 926.484,768.812 928.764,718.892C931.224,664.904 931.744,648.712 931.744,512C931.744,375.292 931.224,359.1 928.764,305.108C926.484,255.192 918.144,228.08 911.132,210.036C901.844,186.14 890.752,169.084 872.832,151.168C854.916,133.252 837.86,122.156 813.964,112.868C795.92,105.856 768.808,97.516 718.888,95.236C664.9,92.776 648.708,92.256 512,92.256ZM512,249.08C657.204,249.08 774.92,366.796 774.92,512C774.92,657.208 657.204,774.92 512,774.92C366.792,774.92 249.08,657.208 249.08,512C249.08,366.8 366.792,249.08 512,249.08ZM512,682.668C606.256,682.668 682.668,606.256 682.668,512C682.668,417.744 606.256,341.332 512,341.332C417.744,341.332 341.332,417.744 341.332,512C341.332,606.256 417.744,682.668 512,682.668ZM846.744,238.692C846.744,272.628 819.24,300.132 785.304,300.132C751.372,300.132 723.864,272.628 723.864,238.692C723.864,204.76 751.372,177.252 785.304,177.252C819.24,177.252 846.744,204.76 846.744,238.692Z'\n\t\t\t\t\t\tfill='url(#instagram-gradient-1)'\n\t\t\t\t\t/>\n\t\t\t\t\t<path\n\t\t\t\t\t\td='M512,0C651.052,0 668.488,0.588 723.096,3.08C777.592,5.568 814.812,14.224 847.38,26.88C881.048,39.96 909.6,57.472 938.064,85.936C966.528,114.4 984.036,142.952 997.12,176.624C1009.78,209.188 1018.43,246.408 1020.92,300.904C1023.41,355.512 1024,372.948 1024,512C1024,651.052 1023.41,668.488 1020.92,723.1C1018.43,777.596 1009.78,814.812 997.12,847.38C984.036,881.052 966.528,909.604 938.064,938.068C909.6,966.532 881.048,984.04 847.376,997.12C814.812,1009.78 777.592,1018.43 723.096,1020.92C668.488,1023.41 651.052,1024 512,1024C372.948,1024 355.512,1023.41 300.9,1020.92C246.404,1018.43 209.188,1009.78 176.62,997.12C142.948,984.036 114.396,966.532 85.932,938.068C57.468,909.604 39.96,881.048 26.88,847.38C14.22,814.816 5.568,777.596 3.08,723.096C0.588,668.488 0,651.052 0,512C0,372.948 0.588,355.512 3.08,300.904C5.568,246.408 14.22,209.188 26.88,176.62C39.964,142.952 57.468,114.4 85.932,85.936C114.396,57.472 142.948,39.964 176.62,26.88C209.184,14.224 246.404,5.568 300.904,3.08C355.512,0.588 372.948,0 512,0ZM512,92.256C375.288,92.256 359.096,92.776 305.108,95.236C255.188,97.516 228.076,105.856 210.036,112.868C186.14,122.156 169.084,133.248 151.164,151.168C133.248,169.084 122.152,186.14 112.868,210.036C105.856,228.08 97.516,255.192 95.236,305.112C92.772,359.1 92.252,375.292 92.252,512C92.252,648.712 92.772,664.904 95.236,718.892C97.512,768.812 105.856,795.924 112.868,813.964C122.152,837.86 133.248,854.916 151.164,872.836C169.08,890.752 186.14,901.848 210.036,911.132C228.08,918.144 255.188,926.484 305.108,928.764C359.088,931.228 375.28,931.748 512,931.748C648.716,931.748 664.908,931.228 718.888,928.764C768.808,926.488 795.92,918.144 813.964,911.132C837.86,901.848 854.916,890.752 872.832,872.836C890.748,854.92 901.844,837.86 911.132,813.964C918.144,795.92 926.484,768.812 928.764,718.892C931.224,664.904 931.744,648.712 931.744,512C931.744,375.292 931.224,359.1 928.764,305.108C926.484,255.192 918.144,228.08 911.132,210.036C901.844,186.14 890.752,169.084 872.832,151.168C854.916,133.252 837.86,122.156 813.964,112.868C795.92,105.856 768.808,97.516 718.888,95.236C664.9,92.776 648.708,92.256 512,92.256ZM512,249.08C657.204,249.08 774.92,366.796 774.92,512C774.92,657.208 657.204,774.92 512,774.92C366.792,774.92 249.08,657.208 249.08,512C249.08,366.8 366.792,249.08 512,249.08ZM512,682.668C606.256,682.668 682.668,606.256 682.668,512C682.668,417.744 606.256,341.332 512,341.332C417.744,341.332 341.332,417.744 341.332,512C341.332,606.256 417.744,682.668 512,682.668ZM846.744,238.692C846.744,272.628 819.24,300.132 785.304,300.132C751.372,300.132 723.864,272.628 723.864,238.692C723.864,204.76 751.372,177.252 785.304,177.252C819.24,177.252 846.744,204.76 846.744,238.692Z'\n\t\t\t\t\t\tfill='url(#instagram-gradient-2)'\n\t\t\t\t\t/>\n\t\t\t\t\t<path\n\t\t\t\t\t\td='M512,0C651.052,-0 668.488,0.588 723.096,3.08C777.592,5.568 814.812,14.224 847.38,26.88C881.048,39.96 909.6,57.472 938.064,85.936C966.528,114.4 984.036,142.952 997.12,176.624C1009.78,209.188 1018.43,246.408 1020.92,300.904C1023.41,355.512 1024,372.948 1024,512C1024,651.052 1023.41,668.488 1020.92,723.1C1018.43,777.596 1009.78,814.812 997.12,847.38C984.036,881.052 966.528,909.604 938.064,938.068C909.6,966.532 881.048,984.04 847.376,997.12C814.812,1009.78 777.592,1018.43 723.096,1020.92C668.488,1023.41 651.052,1024 512,1024C372.948,1024 355.512,1023.41 300.9,1020.92C246.404,1018.43 209.188,1009.78 176.62,997.12C142.948,984.036 114.396,966.532 85.932,938.068C57.468,909.604 39.96,881.048 26.88,847.38C14.22,814.816 5.568,777.596 3.08,723.096C0.588,668.488 0,651.052 0,512C0,372.948 0.588,355.512 3.08,300.904C5.568,246.408 14.22,209.188 26.88,176.62C39.964,142.952 57.468,114.4 85.932,85.936C114.396,57.472 142.948,39.964 176.62,26.88C209.184,14.224 246.404,5.568 300.904,3.08C355.512,0.588 372.948,0 512,0ZM512,92.256C375.288,92.256 359.096,92.776 305.108,95.236C255.188,97.516 228.076,105.856 210.036,112.868C186.14,122.156 169.084,133.248 151.164,151.168C133.248,169.084 122.152,186.14 112.868,210.036C105.856,228.08 97.516,255.192 95.236,305.112C92.772,359.1 92.252,375.292 92.252,512C92.252,648.712 92.772,664.904 95.236,718.892C97.512,768.812 105.856,795.924 112.868,813.964C122.152,837.86 133.248,854.916 151.164,872.836C169.08,890.752 186.14,901.848 210.036,911.132C228.08,918.144 255.188,926.484 305.108,928.764C359.088,931.228 375.28,931.748 512,931.748C648.716,931.748 664.908,931.228 718.888,928.764C768.808,926.488 795.92,918.144 813.964,911.132C837.86,901.848 854.916,890.752 872.832,872.836C890.748,854.92 901.844,837.86 911.132,813.964C918.144,795.92 926.484,768.812 928.764,718.892C931.224,664.904 931.744,648.712 931.744,512C931.744,375.292 931.224,359.1 928.764,305.108C926.484,255.192 918.144,228.08 911.132,210.036C901.844,186.14 890.752,169.084 872.832,151.168C854.916,133.252 837.86,122.156 813.964,112.868C795.92,105.856 768.808,97.516 718.888,95.236C664.9,92.776 648.708,92.256 512,92.256ZM512,249.08C657.204,249.08 774.92,366.796 774.92,512C774.92,657.208 657.204,774.92 512,774.92C366.792,774.92 249.08,657.208 249.08,512C249.08,366.8 366.792,249.08 512,249.08ZM512,682.668C606.256,682.668 682.668,606.256 682.668,512C682.668,417.744 606.256,341.332 512,341.332C417.744,341.332 341.332,417.744 341.332,512C341.332,606.256 417.744,682.668 512,682.668ZM846.744,238.692C846.744,272.628 819.24,300.132 785.304,300.132C751.372,300.132 723.864,272.628 723.864,238.692C723.864,204.76 751.372,177.252 785.304,177.252C819.24,177.252 846.744,204.76 846.744,238.692Z'\n\t\t\t\t\t\tfill='url(#instagram-gradient-3)'\n\t\t\t\t\t/>\n\t\t\t\t\t<defs>\n\t\t\t\t\t\t<radialGradient\n\t\t\t\t\t\t\tid='instagram-gradient-1'\n\t\t\t\t\t\t\tcx='0'\n\t\t\t\t\t\t\tcy='0'\n\t\t\t\t\t\t\tr='1'\n\t\t\t\t\t\t\tgradientUnits='userSpaceOnUse'\n\t\t\t\t\t\t\tgradientTransform='matrix(871.396,269.57,-152.264,492.2,322.577,976.97)'\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<stop offset='0' stopColor='rgb(255 213 1)' stopOpacity={1} />\n\t\t\t\t\t\t\t<stop offset='0.32' stopColor='rgb(255 189 7)' stopOpacity={1} />\n\t\t\t\t\t\t\t<stop offset='0.59' stopColor='rgb(255 103 29)' stopOpacity={1} />\n\t\t\t\t\t\t\t<stop offset='1' stopColor='rgb(255 0 185)' stopOpacity={1} />\n\t\t\t\t\t\t</radialGradient>\n\t\t\t\t\t\t<radialGradient\n\t\t\t\t\t\t\tid='instagram-gradient-2'\n\t\t\t\t\t\t\tcx='0'\n\t\t\t\t\t\t\tcy='0'\n\t\t\t\t\t\t\tr='1'\n\t\t\t\t\t\t\tgradientUnits='userSpaceOnUse'\n\t\t\t\t\t\t\tgradientTransform='matrix(94.7015,306.205,-937.345,289.897,119.251,57.4757)'\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<stop offset='0' stopColor='rgb(109 25 255)' stopOpacity={1} />\n\t\t\t\t\t\t\t<stop offset='0.43' stopColor='rgb(151 18 235)' stopOpacity={1} />\n\t\t\t\t\t\t\t<stop offset='0.96' stopColor='rgb(250 1 187)' stopOpacity={1} />\n\t\t\t\t\t\t\t<stop offset='1' stopColor='rgb(255 0 185)' stopOpacity={0} />\n\t\t\t\t\t\t</radialGradient>\n\t\t\t\t\t\t<radialGradient\n\t\t\t\t\t\t\tid='instagram-gradient-3'\n\t\t\t\t\t\t\tcx='0'\n\t\t\t\t\t\t\tcy='0'\n\t\t\t\t\t\t\tr='1'\n\t\t\t\t\t\t\tgradientUnits='userSpaceOnUse'\n\t\t\t\t\t\t\tgradientTransform='matrix(112.098,-864.179,131.728,17.0873,1003.58,829.183)'\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<stop offset='0' stopColor='rgb(254 21 138)' stopOpacity={1} />\n\t\t\t\t\t\t\t<stop offset='0.46' stopColor='rgb(255 2 62)' stopOpacity={1} />\n\t\t\t\t\t\t\t<stop offset='1' stopColor='rgb(255 0 55)' stopOpacity={0} />\n\t\t\t\t\t\t</radialGradient>\n\t\t\t\t\t</defs>\n\t\t\t\t</>\n\t\t\t) : (\n\t\t\t\t<>\n\t\t\t\t\t<path d='M512,0C651.052,0 668.488,0.588 723.096,3.08C777.592,5.568 814.812,14.224 847.38,26.88C881.048,39.96 909.6,57.472 938.064,85.936C966.528,114.4 984.036,142.952 997.12,176.624C1009.78,209.188 1018.43,246.408 1020.92,300.904C1023.41,355.512 1024,372.948 1024,512C1024,651.052 1023.41,668.488 1020.92,723.1C1018.43,777.596 1009.78,814.812 997.12,847.38C984.036,881.052 966.528,909.604 938.064,938.068C909.6,966.532 881.048,984.04 847.376,997.12C814.812,1009.78 777.592,1018.43 723.096,1020.92C668.488,1023.41 651.052,1024 512,1024C372.948,1024 355.512,1023.41 300.9,1020.92C246.404,1018.43 209.188,1009.78 176.62,997.12C142.948,984.036 114.396,966.532 85.932,938.068C57.468,909.604 39.96,881.048 26.88,847.38C14.22,814.816 5.568,777.596 3.08,723.096C0.588,668.488 0,651.052 0,512C0,372.948 0.588,355.512 3.08,300.904C5.568,246.408 14.22,209.188 26.88,176.62C39.964,142.952 57.468,114.4 85.932,85.936C114.396,57.472 142.948,39.964 176.62,26.88C209.184,14.224 246.404,5.568 300.904,3.08C355.512,0.588 372.948,0 512,0ZM512,92.256C375.288,92.256 359.096,92.776 305.108,95.236C255.188,97.516 228.076,105.856 210.036,112.868C186.14,122.156 169.084,133.248 151.164,151.168C133.248,169.084 122.152,186.14 112.868,210.036C105.856,228.08 97.516,255.192 95.236,305.112C92.772,359.1 92.252,375.292 92.252,512C92.252,648.712 92.772,664.904 95.236,718.892C97.512,768.812 105.856,795.924 112.868,813.964C122.152,837.86 133.248,854.916 151.164,872.836C169.08,890.752 186.14,901.848 210.036,911.132C228.08,918.144 255.188,926.484 305.108,928.764C359.088,931.228 375.28,931.748 512,931.748C648.716,931.748 664.908,931.228 718.888,928.764C768.808,926.488 795.92,918.144 813.964,911.132C837.86,901.848 854.916,890.752 872.832,872.836C890.748,854.92 901.844,837.86 911.132,813.964C918.144,795.92 926.484,768.812 928.764,718.892C931.224,664.904 931.744,648.712 931.744,512C931.744,375.292 931.224,359.1 928.764,305.108C926.484,255.192 918.144,228.08 911.132,210.036C901.844,186.14 890.752,169.084 872.832,151.168C854.916,133.252 837.86,122.156 813.964,112.868C795.92,105.856 768.808,97.516 718.888,95.236C664.9,92.776 648.708,92.256 512,92.256Z' />\n\t\t\t\t\t<path d='M512,249.08C657.204,249.08 774.92,366.796 774.92,512C774.92,657.208 657.204,774.92 512,774.92C366.792,774.92 249.08,657.208 249.08,512C249.08,366.8 366.792,249.08 512,249.08ZM512,682.668C606.256,682.668 682.668,606.256 682.668,512C682.668,417.744 606.256,341.332 512,341.332C417.744,341.332 341.332,417.744 341.332,512C341.332,606.256 417.744,682.668 512,682.668Z' />\n\t\t\t\t\t<path d='M846.744,238.692C846.744,272.628 819.24,300.132 785.304,300.132C751.372,300.132 723.864,272.628 723.864,238.692C723.864,204.76 751.372,177.252 785.304,177.252C819.24,177.252 846.744,204.76 846.744,238.692Z' />\n\t\t\t\t</>\n\t\t\t)}\n\t\t</svg>\n\t)\n}\n","// * Types\nimport { ComponentPropsWithoutRef, ComponentPropsWithRef } from 'react'\n\nexport type LinkedInLogoProps = Omit<ComponentPropsWithRef<'svg'>, 'viewBox'> &\n\t(\n\t\t| {\n\t\t\t\tcutout: true\n\t\t\t\ttargets?: Partial<{\n\t\t\t\t\tbackground: ComponentPropsWithoutRef<'path'>\n\t\t\t\t}>\n\t\t }\n\t\t| {\n\t\t\t\tcutout?: false\n\t\t\t\ttargets?: Partial<{\n\t\t\t\t\tbackground: Omit<ComponentPropsWithoutRef<'path'>, 'data-name' | 'd'>\n\t\t\t\t\tin: Omit<ComponentPropsWithoutRef<'rect'>, 'data-name' | 'height' | 'width' | 'x' | 'y'>\n\t\t\t\t}>\n\t\t }\n\t)\n\n// * Utilities\nimport { twMerge } from '../../utils'\n\n/**\n * # LinkedIn Logo\n *\n * ```ts\n * cutout: boolean\n * targets: {\n * \t in: [data-name=\"in\"]\n * \t background: [data-name=\"background\"]\n * }\n * ```\n */\nexport function LinkedInLogo({ className, cutout, targets, ...props }: LinkedInLogoProps) {\n\treturn (\n\t\t<svg\n\t\t\t{...props}\n\t\t\tclassName={twMerge(\n\t\t\t\tcutout\n\t\t\t\t\t? 'fill-[rgb(10_102_194)]'\n\t\t\t\t\t: '[&_[data-name=\"background\"]]:fill-[rgb(10_102_194)] [&_[data-name=\"in\"]]:fill-white',\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\tviewBox='0 0 1024 1024'\n\t\t>\n\t\t\t{!cutout && <rect {...targets?.in} data-name='in' x='112' y='112' width='800' height='800' />}\n\t\t\t<path\n\t\t\t\t{...targets?.background}\n\t\t\t\tdata-name='background'\n\t\t\t\td='M872.496,872.511L720.772,872.511L720.772,634.899C720.772,578.239 719.76,505.299 641.86,505.299C562.836,505.299 550.744,567.035 550.744,630.775L550.744,872.495L399.024,872.495L399.024,383.871L544.676,383.871L544.676,450.647L546.716,450.647C576.374,399.935 631.721,369.536 690.428,371.715C844.208,371.715 872.56,472.867 872.56,604.459L872.496,872.511ZM227.824,317.083C179.196,317.091 139.768,277.675 139.76,229.047C139.752,180.419 179.164,140.991 227.792,140.983C276.42,140.971 315.848,180.387 315.856,229.015C315.865,277.317 276.126,317.072 227.824,317.083M303.688,872.515L151.804,872.515L151.804,383.871L303.684,383.871L303.684,872.511L303.688,872.515ZM948.136,0.075L75.564,0.075C34.324,-0.389 0.504,32.647 0,73.887L0,950.099C0.488,991.359 34.304,1024.43 75.56,1024L948.136,1024C989.48,1024.51 1023.43,991.439 1024,950.099L1024,73.819C1023.41,32.499 989.46,-0.533 948.136,0.007'\n\t\t\t/>\n\t\t</svg>\n\t)\n}\n","import { ComponentPropsWithoutRef, ComponentPropsWithRef } from 'react'\nimport { twMerge } from '../../utils'\n\nexport type TikTokProps = Omit<ComponentPropsWithRef<'svg'>, 'viewBox'> &\n\t(\n\t\t| {\n\t\t\t\ttargets?: Partial<{\n\t\t\t\t\tbottom: Omit<ComponentPropsWithoutRef<'path'>, 'd' | 'data-name'>\n\t\t\t\t\tmiddle: Omit<ComponentPropsWithoutRef<'path'>, 'd' | 'data-name'>\n\t\t\t\t\ttop: Omit<ComponentPropsWithoutRef<'path'>, 'd' | 'data-name'>\n\t\t\t\t}>\n\t\t\t\tvariant?: 'multicolor'\n\t\t }\n\t\t| { targets?: never; variant: 'solid' }\n\t)\n\n/**\n * # TikTok Logo\n *\n * ```ts\n * variant: 'multicolor' | 'solid' = 'multicolor'\n * targets: {\n * \t bottom: [data-name=\"bottom\"]\n * \t middle: [data-name=\"middle\"]\n * \t top: [data-name=\"top\"]\n * }\n * ```\n */\nexport function TikTokLogo({ className, targets, variant = 'multicolor', ...props }: TikTokProps) {\n\treturn (\n\t\t<svg\n\t\t\t{...props}\n\t\t\tclassName={twMerge(\n\t\t\t\tvariant === 'multicolor' &&\n\t\t\t\t\t'[&_[data-name=\"bottom\"]]:fill-[rgb(0_242_234)] [&_[data-name=\"middle\"]]:fill-black [&_[data-name=\"top\"]]:fill-[rgb(255_0_79)]',\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\tviewBox={`0 0 ${variant === 'solid' ? '914' : '907'} 1024`}\n\t\t>\n\t\t\t{variant === 'multicolor' && (\n\t\t\t\t<>\n\t\t\t\t\t<path\n\t\t\t\t\t\t{...targets?.top}\n\t\t\t\t\t\tdata-name='top'\n\t\t\t\t\t\td='M671.592,369.642C737.71,416.882 818.708,444.676 906.19,444.676L906.19,276.422C889.634,276.425 873.12,274.7 856.923,271.27L856.923,403.71C769.448,403.71 688.461,375.915 622.325,328.679L622.325,672.038C622.325,843.804 483.01,983.037 311.168,983.037C247.049,983.037 187.453,963.663 137.947,930.435C194.45,988.179 273.248,1024 360.424,1024C532.278,1024 671.599,884.767 671.599,712.994L671.599,369.642L671.592,369.642ZM732.368,199.894C698.578,162.997 676.392,115.315 671.592,62.6L671.592,40.959L624.904,40.959C636.656,107.96 676.74,165.201 732.368,199.894ZM246.638,798.627C227.759,773.886 217.557,743.621 217.603,712.502C217.603,633.943 281.324,570.246 359.939,570.246C374.59,570.243 389.154,572.485 403.116,576.913L403.116,404.898C386.799,402.663 370.331,401.714 353.87,402.062L353.87,535.95C339.897,531.522 325.327,529.273 310.672,529.287C232.057,529.287 168.339,592.977 168.339,671.546C168.339,727.1 200.189,775.197 246.638,798.627Z'\n\t\t\t\t\t/>\n\t\t\t\t\t<path\n\t\t\t\t\t\t{...targets?.middle}\n\t\t\t\t\t\tdata-name='middle'\n\t\t\t\t\t\td='M622.325,328.676C688.461,375.912 769.448,403.706 856.923,403.706L856.923,271.266C808.095,260.871 764.869,235.367 732.368,199.894C676.737,165.197 636.656,107.956 624.904,40.959L502.269,40.959L502.269,712.987C501.991,791.331 438.379,854.768 359.932,854.768C313.705,854.768 272.637,832.744 246.627,798.627C200.182,775.197 168.332,727.097 168.332,671.55C168.332,592.987 232.05,529.29 310.665,529.29C325.727,529.29 340.245,531.634 353.863,535.954L353.863,402.065C185.039,405.551 49.264,543.425 49.264,712.99C49.264,797.636 83.075,874.371 137.951,930.438C187.457,963.663 247.053,983.041 311.171,983.041C483.017,983.041 622.328,843.8 622.328,672.038L622.328,328.676L622.325,328.676Z'\n\t\t\t\t\t/>\n\t\t\t\t\t<path\n\t\t\t\t\t\t{...targets?.bottom}\n\t\t\t\t\t\tdata-name='bottom'\n\t\t\t\t\t\td='M856.923,271.266L856.923,235.455C812.892,235.522 769.725,223.197 732.368,199.89C765.438,236.077 808.984,261.029 856.923,271.266ZM624.904,40.959C623.783,34.557 622.923,28.113 622.325,21.641L622.325,0L452.998,0L452.998,672.035C452.728,750.369 389.119,813.805 310.665,813.805C287.632,813.805 265.886,808.341 246.627,798.631C272.637,832.744 313.705,854.765 359.932,854.765C438.372,854.765 501.995,791.335 502.269,712.99L502.269,40.959L624.904,40.959ZM353.87,402.065L353.87,363.942C339.721,362.009 325.457,361.039 311.175,361.046C139.314,361.046 0,500.283 0,672.035C0,779.713 54.753,874.61 137.954,930.431C83.078,874.368 49.267,797.629 49.267,712.987C49.267,543.425 185.039,405.551 353.87,402.065L353.87,402.065Z'\n\t\t\t\t\t/>\n\t\t\t\t</>\n\t\t\t)}\n\t\t\t{variant === 'solid' && (\n\t\t\t\t<path d='M667.348,44.69C680.075,111.724 720.791,169.313 777.229,205.249L777.286,205.307C816.62,230.358 863.44,244.986 913.716,244.986L913.716,420.98C820.306,420.98 733.749,391.782 663.086,342.197L663.086,700.001C663.086,878.644 514.39,1024 331.543,1024C260.881,1024 195.401,1002.23 141.555,965.316L141.44,965.201C55.977,906.517 0,809.536 0,699.944C0,521.301 148.754,375.887 331.543,375.887C346.747,375.887 361.605,377.154 376.233,379.054L376.233,558.849C362.066,554.53 347.15,551.996 331.543,551.996C248.038,551.996 180.14,618.397 180.14,700.001C180.14,756.784 213.139,806.196 261.284,830.96C282.304,841.787 306.204,847.949 331.543,847.949C413.09,847.949 479.663,784.543 482.658,705.53L482.946,0L663.086,0C663.086,15.261 664.584,30.177 667.348,44.69Z' />\n\t\t\t)}\n\t\t</svg>\n\t)\n}\n","import { ComponentPropsWithRef } from 'react'\n\n/**\n * # 𝕏 Logo\n */\nexport function XLogo(props: Omit<ComponentPropsWithRef<'svg'>, 'viewBox'>) {\n\treturn (\n\t\t<svg {...props} viewBox='0 0 1024 926'>\n\t\t\t<path d='M806.464,0L963.472,0L620.432,392.08L1024,925.6L708.016,925.6L460.528,602.016L177.328,925.6L20.224,925.6L387.136,506.24L0,0L324,0L547.712,295.76L806.464,0ZM751.344,831.616L838.352,831.616L276.736,89.04L183.36,89.04L751.344,831.616Z' />\n\t\t</svg>\n\t)\n}\n","// * Types\nimport { ComponentPropsWithoutRef, ComponentPropsWithRef } from 'react'\n\nexport type YouTubeLogoProps = Omit<ComponentPropsWithRef<'svg'>, 'viewBox'> &\n\t(\n\t\t| {\n\t\t\t\tcutout?: false\n\t\t\t\ttargets?: Partial<{\n\t\t\t\t\tbackground: ComponentPropsWithoutRef<'path'>\n\t\t\t\t\tplay: ComponentPropsWithoutRef<'path'>\n\t\t\t\t}>\n\t\t }\n\t\t| {\n\t\t\t\tcutout: true\n\t\t\t\ttargets?: Partial<{\n\t\t\t\t\tbackground: ComponentPropsWithoutRef<'path'>\n\t\t\t\t}>\n\t\t }\n\t)\n\n// * Utilities\nimport { twMerge } from '../../utils'\n\n/**\n * # YouTube Logo\n *\n * ```ts\n * cutout: boolean = false\n * targets: {\n * \t background: [data-name=\"background\"],\n * \t play: [data-name=\"play\"]\n * }\n * ```\n */\nexport function YouTubeLogo({ className, cutout = false, targets, ...props }: YouTubeLogoProps) {\n\treturn (\n\t\t<svg\n\t\t\t{...props}\n\t\t\tclassName={twMerge(\n\t\t\t\tcutout\n\t\t\t\t\t? 'fill-[rgb(255_0_0)]'\n\t\t\t\t\t: '[&_[data-name=\"background\"]]:fill-[rgb(255_0_0)] [&_[data-name=\"play\"]]:fill-white',\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\tviewBox='0 0 1024 718'\n\t\t>\n\t\t\t{cutout ? (\n\t\t\t\t<path\n\t\t\t\t\t{...targets?.background}\n\t\t\t\t\tdata-name='background'\n\t\t\t\t\td='M1001.4,112.302L1001.4,112.306C1035.22,248.444 1027.41,463.456 1002.06,604.85C990.119,648.968 955.546,683.541 911.428,695.48C831.967,717.152 512.141,717.152 512.141,717.152C512.141,717.152 192.312,717.152 112.847,695.48C68.73,683.54 34.159,648.967 22.221,604.85C-11.799,469.304 -2.475,254.156 21.561,112.962C33.498,68.844 68.069,34.269 112.187,22.328C191.652,0.656 511.489,0 511.489,0C511.489,0 831.311,0 910.776,21.672C954.892,33.612 989.464,68.185 1001.4,112.302ZM409.692,512.249L675.008,358.574L409.692,204.899L409.692,512.249Z'\n\t\t\t\t/>\n\t\t\t) : (\n\t\t\t\t<>\n\t\t\t\t\t<path\n\t\t\t\t\t\t{...targets?.background}\n\t\t\t\t\t\tdata-name='background'\n\t\t\t\t\t\td='M1001.4,112.302C989.464,68.185 954.892,33.612 910.776,21.672C831.311,0 511.489,0 511.489,0C511.489,0 191.652,0.656 112.187,22.328C68.069,34.269 33.498,68.844 21.561,112.962C-2.475,254.156 -11.799,469.304 22.221,604.85C34.159,648.967 68.73,683.54 112.847,695.48C192.312,717.152 512.141,717.152 512.141,717.152C512.141,717.152 831.967,717.152 911.428,695.48C955.546,683.541 990.119,648.968 1002.06,604.85C1027.41,463.456 1035.22,248.444 1001.4,112.306L1001.4,112.302Z'\n\t\t\t\t\t/>\n\t\t\t\t\t<path\n\t\t\t\t\t\t{...(targets && 'play' in targets ? targets?.play : {})}\n\t\t\t\t\t\tdata-name='play'\n\t\t\t\t\t\td='M409.692,512.249L675.008,358.574L409.692,204.899L409.692,512.249Z'\n\t\t\t\t\t/>\n\t\t\t\t</>\n\t\t\t)}\n\t\t</svg>\n\t)\n}\n"],"names":["extendTailwindMerge","_jsxs","_jsx","_Fragment"],"mappings":";;;;;;AAQA,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAA,EAAG,CAAC,GAAG,CAAC,CAAA,CAAE,CAAC;AAE9D,MAAM,OAAO,GAAGA,iCAAmB,CAA8B;AACvE,IAAA,MAAM,EAAE;AACP,QAAA,KAAK,EAAE;AACN,YAAA,KAAK,EAAE;AACN,gBAAA;AACC,oBAAA,EAAE,EAAE;wBACH,KAAK;wBACL,QAAQ;wBACR,QAAQ;wBACR,OAAO;wBACP,UAAU;wBACV,MAAM;wBACN,QAAQ;wBACR,SAAS;wBACT,QAAQ;wBACR,OAAO;wBACP,MAAM;wBACN,MAAM;AACN,qBAAA;AACD,iBAAA;AACD,aAAA;AACD,SAAA;AACD,QAAA,WAAW,EAAE;AACZ,YAAA,OAAO,EAAE;AACR,gBAAA;AACC,oBAAA,OAAO,EAAE;wBACR,QAAQ;wBACR,aAAa;wBACb,SAAS;wBACT,MAAM;wBACN,YAAY;wBACZ,WAAW;wBACX,WAAW;wBACX,MAAM;wBACN,OAAO;wBACP,UAAU;wBACV,MAAM;wBACN,MAAM;AACN,qBAAA;AACD,iBAAA;AACD,aAAA;AACD,YAAA,qBAAqB,EAAE;AACtB,gBAAA;oBACC,qBAAqB,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,mBAAmB,CAAC;AAC9E,iBAAA;AACD,aAAA;AACD,YAAA,gBAAgB,EAAE;AACjB,gBAAA;oBACC,gBAAgB,EAAE,CAAC,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,CAAC;AAC3D,iBAAA;AACD,aAAA;AACD,YAAA,qBAAqB,EAAE;AACtB,gBAAA;AACC,oBAAA,qBAAqB,EAAE,CAAC,GAAG,WAAW,EAAE,UAAU,CAAC;AACnD,iBAAA;AACD,aAAA;AACD,YAAA,iBAAiB,EAAE;AAClB,gBAAA;AACC,oBAAA,iBAAiB,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC;AACxC,iBAAA;AACD,aAAA;AACD,YAAA,WAAW,EAAE;AACZ,gBAAA;AACC,oBAAA,WAAW,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC;AAC3B,iBAAA;AACD,aAAA;AACD,YAAA,WAAW,EAAE;AACZ,gBAAA;AACC,oBAAA,WAAW,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC;AAC3B,iBAAA;AACD,aAAA;YACD,UAAU,EAAE,CAAC,iBAAiB,CAAC;AAC/B,SAAA;AACD,KAAA;AACD,CAAA,CAAC;;AC4/CF;AACA,MAAM,CAAC,GAAG,IAAI,IAAI,EAAE;AAEpB;AACgB,CAAC,CAAC,UAAU;AAE5B;AACa,CAAC,CAAC,WAAW;AAE1B;AACO,MAAM,cAAc,GAAgB;IAC1C,SAAS;IACT,UAAU;IACV,OAAO;IACP,OAAO;IACP,KAAK;IACL,MAAM;IACN,MAAM;IACN,QAAQ;IACR,WAAW;IACX,SAAS;IACT,UAAU;IACV,UAAU;CACV;AAED;AACO,MAAM,gBAAgB,GAAkB;IAC9C,QAAQ;IACR,QAAQ;IACR,SAAS;IACT,WAAW;IACX,UAAU;IACV,QAAQ;IACR,UAAU;CACV;AAsBD;AACgC,YAAY;AAE5C;AACkC,cAAc;AAwIhD;;;;;AAKG;AACG,SAAU,YAAY,CAAC,IAAA,GAAsB,CAAC,EAAA;IACnD,IAAI,OAAO,IAAI,KAAK,QAAQ;AAAE,QAAA,OAAO,cAAc,CAAC,IAAI,CAAC;AACzD,IAAA,OAAO,cAAc,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;AACvC;AA6FA;;;;;AAKG;AACG,SAAU,cAAc,CAAC,OAAA,GAAyB,CAAC,EAAA;IACxD,IAAI,OAAO,OAAO,KAAK,QAAQ;AAAE,QAAA,OAAO,gBAAgB,CAAC,OAAO,CAAC;;AAEjE,IAAA,OAAO,gBAAgB,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;AAC1C;;ACx2DA;;;;;;;;;;;AAWG;SACa,YAAY,CAAC,EAAE,SAAS,EAAE,MAAM,GAAG,KAAK,EAAE,OAAO,EAAE,OAAO,GAAG,QAAQ,EAAE,GAAG,KAAK,EAAqB,EAAA;AACnH,IAAA,QACCC,eAAA,CAAA,KAAA,EAAA,EAAA,GACK,KAAK,EACT,SAAS,EAAE,OAAO,CACjB,OAAO,KAAK,QAAQ,IAAI;AACvB,cAAE;cACA,4FAA4F,EAC/F,OAAO,KAAK,GAAG,IAAI,gCAAgC,EACnD,SAAS,CACT,EACD,OAAO,EAAE,CAAA,IAAA,EAAO,OAAO,KAAK,QAAQ,GAAG,MAAM,GAAG,KAAK,CAAA,CAAA,EAAI,OAAO,KAAK,QAAQ,IAAI,MAAM,GAAG,MAAM,GAAG,MAAM,EAAE,EAAA,QAAA,EAAA,CAE1G,OAAO,KAAK,QAAQ;iBACnB,MAAM,IACNC,cAAA,CAAA,MAAA,EAAA,EAAA,GACK,OAAO,EAAE,UAAU,EAAA,WAAA,EACb,YAAY,EACtB,CAAC,EAAC,oeAAoe,EAAA,CACre,KAEFD,eAAA,CAAAE,mBAAA,EAAA,EAAA,QAAA,EAAA,CACCD,cAAA,CAAA,QAAA,EAAA,EAAA,GAAY,OAAO,EAAE,UAAU,EAAA,WAAA,EAAY,YAAY,EAAC,EAAE,EAAC,KAAK,EAAC,EAAE,EAAC,KAAK,EAAC,CAAC,EAAC,KAAK,EAAA,CAAG,EACpFA,cAAA,CAAA,MAAA,EAAA,EAAA,IACM,OAAO,IAAI,GAAG,IAAI,OAAO,GAAG,OAAO,EAAE,CAAC,GAAG,EAAE,CAAC,EAAA,WAAA,EACvC,GAAG,EACb,CAAC,EAAC,obAAob,EAAA,CACrb,CAAA,EAAA,CACA,CACH,CAAC,EACF,OAAO,KAAK,GAAG,KACfA,cAAA,CAAA,MAAA,EAAA,EAAM,CAAC,EAAC,mUAAmU,EAAA,CAAG,CAC9U,EACDD,eAAA,CAAA,MAAA,EAAA,EAAA,QAAA,EAAA,CACE,OAAO,KAAK,QAAQ,KACpBA,eAAA,CAAA,gBAAA,EAAA,EACC,EAAE,EAAC,mBAAmB,EACtB,EAAE,EAAC,GAAG,EACN,EAAE,EAAC,GAAG,EACN,EAAE,EAAC,GAAG,EACN,EAAE,EAAC,GAAG,EACN,aAAa,EAAC,gBAAgB,EAC9B,iBAAiB,EAAC,8DAA8D,EAAA,QAAA,EAAA,CAEhFC,cAAA,CAAA,MAAA,EAAA,EAAM,MAAM,EAAC,GAAG,EAAC,SAAS,EAAC,eAAe,EAAC,WAAW,EAAE,CAAC,EAAA,CAAI,EAC7DA,cAAA,CAAA,MAAA,EAAA,EAAM,MAAM,EAAC,GAAG,EAAC,SAAS,EAAC,iBAAiB,EAAC,WAAW,EAAE,CAAC,EAAA,CAAI,CAAA,EAAA,CAC/C,CACjB,EACA,OAAO,KAAK,GAAG,KACfD,eAAA,CAAA,gBAAA,EAAA,EACC,EAAE,EAAC,mBAAmB,EACtB,EAAE,EAAC,GAAG,EACN,EAAE,EAAC,GAAG,EACN,EAAE,EAAC,GAAG,EACN,EAAE,EAAC,GAAG,EACN,aAAa,EAAC,gBAAgB,EAC9B,iBAAiB,EAAC,8DAA8D,aAEhFC,cAAA,CAAA,MAAA,EAAA,EAAM,MAAM,EAAC,GAAG,EAAC,SAAS,EAAC,eAAe,EAAC,WAAW,EAAE,CAAC,EAAA,CAAI,EAC7DA,cAAA,CAAA,MAAA,EAAA,EAAM,MAAM,EAAC,GAAG,EAAC,SAAS,EAAC,iBAAiB,EAAC,WAAW,EAAE,CAAC,EAAA,CAAI,IAC/C,CACjB,CAAA,EAAA,CACK,CAAA,EAAA,CACF;AAER;;ACnGA;;;;;;AAMG;AACG,SAAU,UAAU,CAAC,EAAE,QAAQ,GAAG,IAAI,EAAE,GAAG,KAAK,EAAmB,EAAA;AACxE,IAAA,QACCA,cAAA,CAAA,KAAA,EAAA,EAAA,GAAS,KAAK,EAAE,OAAO,EAAC,eAAe,EAAA,QAAA,EACrC,QAAQ,IACRD,eAAA,CAAAE,mBAAA,EAAA,EAAA,QAAA,EAAA,CACCD,cAAA,CAAA,MAAA,EAAA,EACC,CAAC,EAAC,gkCAAgkC,EAClkC,IAAI,EAAC,yBAAyB,EAAA,CAC7B,EACFA,cAAA,CAAA,MAAA,EAAA,EACC,CAAC,EAAC,8lBAA8lB,EAChmB,IAAI,EAAC,yBAAyB,EAAA,CAC7B,EACFA,cAAA,CAAA,MAAA,EAAA,EACC,CAAC,EAAC,4YAA4Y,EAC9Y,IAAI,EAAC,yBAAyB,EAAA,CAC7B,EACFD,eAAA,CAAA,MAAA,EAAA,EAAA,QAAA,EAAA,CACCA,eAAA,CAAA,gBAAA,EAAA,EACC,EAAE,EAAC,mBAAmB,EACtB,EAAE,EAAC,GAAG,EACN,EAAE,EAAC,GAAG,EACN,EAAE,EAAC,GAAG,EACN,EAAE,EAAC,GAAG,EACN,aAAa,EAAC,gBAAgB,EAC9B,iBAAiB,EAAC,yDAAyD,EAAA,QAAA,EAAA,CAE3EC,cAAA,CAAA,MAAA,EAAA,EAAM,MAAM,EAAC,GAAG,EAAC,SAAS,EAAC,iBAAiB,EAAC,WAAW,EAAE,CAAC,EAAA,CAAI,EAC/DA,cAAA,CAAA,MAAA,EAAA,EAAM,MAAM,EAAC,GAAG,EAAC,SAAS,EAAC,gBAAgB,EAAC,WAAW,EAAE,CAAC,EAAA,CAAI,CAAA,EAAA,CAC9C,EACjBD,eAAA,CAAA,gBAAA,EAAA,EACC,EAAE,EAAC,mBAAmB,EACtB,EAAE,EAAC,GAAG,EACN,EAAE,EAAC,GAAG,EACN,CAAC,EAAC,GAAG,EACL,aAAa,EAAC,gBAAgB,EAC9B,iBAAiB,EAAC,0DAA0D,EAAA,QAAA,EAAA,CAE5EC,cAAA,CAAA,MAAA,EAAA,EAAM,MAAM,EAAC,GAAG,EAAC,SAAS,EAAC,gBAAgB,EAAC,WAAW,EAAE,CAAC,EAAA,CAAI,EAC9DA,cAAA,CAAA,MAAA,EAAA,EAAM,MAAM,EAAC,MAAM,EAAC,SAAS,EAAC,gBAAgB,EAAC,WAAW,EAAE,CAAC,EAAA,CAAI,EACjEA,cAAA,CAAA,MAAA,EAAA,EAAM,MAAM,EAAC,MAAM,EAAC,SAAS,EAAC,gBAAgB,EAAC,WAAW,EAAE,IAAI,EAAA,CAAI,EACpEA,cAAA,CAAA,MAAA,EAAA,EAAM,MAAM,EAAC,GAAG,EAAC,SAAS,EAAC,gBAAgB,EAAC,WAAW,EAAE,CAAC,EAAA,CAAI,IAC9C,EACjBD,eAAA,CAAA,gBAAA,EAAA,EACC,EAAE,EAAC,mBAAmB,EACtB,EAAE,EAAC,GAAG,EACN,EAAE,EAAC,GAAG,EACN,EAAE,EAAC,GAAG,EACN,EAAE,EAAC,GAAG,EACN,aAAa,EAAC,gBAAgB,EAC9B,iBAAiB,EAAC,2DAA2D,EAAA,QAAA,EAAA,CAE7EC,cAAA,CAAA,MAAA,EAAA,EAAM,MAAM,EAAC,GAAG,EAAC,SAAS,EAAC,gBAAgB,EAAC,WAAW,EAAE,CAAC,EAAA,CAAI,EAC9DA,cAAA,CAAA,MAAA,EAAA,EAAM,MAAM,EAAC,MAAM,EAAC,SAAS,EAAC,gBAAgB,EAAC,WAAW,EAAE,CAAC,EAAA,CAAI,EACjEA,cAAA,CAAA,MAAA,EAAA,EAAM,MAAM,EAAC,GAAG,EAAC,SAAS,EAAC,gBAAgB,EAAC,WAAW,EAAE,CAAC,EAAA,CAAI,CAAA,EAAA,CAC9C,CAAA,EAAA,CACX,CAAA,EAAA,CACL,KAEHA,cAAA,CAAA,MAAA,EAAA,EAAM,CAAC,EAAC,gkCAAgkC,EAAA,CAAG,CAC3kC,EAAA,CACI;AAER;;ACtEA;;;;;;AAMG;AACG,SAAU,aAAa,CAAC,EAAE,QAAQ,GAAG,IAAI,EAAE,GAAG,KAAK,EAAsB,EAAA;AAC9E,IAAA,QACCA,cAAA,CAAA,KAAA,EAAA,EAAA,GAAS,KAAK,EAAE,OAAO,EAAC,eAAe,EAAA,QAAA,EACrC,QAAQ,IACRD,eAAA,CAAAE,mBAAA,EAAA,EAAA,QAAA,EAAA,CACCD,yBACC,CAAC,EAAC,+nFAA+nF,EACjoF,IAAI,EAAC,4BAA4B,EAAA,CAChC,EACFA,cAAA,CAAA,MAAA,EAAA,EACC,CAAC,EAAC,+nFAA+nF,EACjoF,IAAI,EAAC,4BAA4B,EAAA,CAChC,EACFA,cAAA,CAAA,MAAA,EAAA,EACC,CAAC,EAAC,goFAAgoF,EACloF,IAAI,EAAC,4BAA4B,GAChC,EACFD,eAAA,CAAA,MAAA,EAAA,EAAA,QAAA,EAAA,CACCA,eAAA,CAAA,gBAAA,EAAA,EACC,EAAE,EAAC,sBAAsB,EACzB,EAAE,EAAC,GAAG,EACN,EAAE,EAAC,GAAG,EACN,CAAC,EAAC,GAAG,EACL,aAAa,EAAC,gBAAgB,EAC9B,iBAAiB,EAAC,sDAAsD,EAAA,QAAA,EAAA,CAExEC,cAAA,CAAA,MAAA,EAAA,EAAM,MAAM,EAAC,GAAG,EAAC,SAAS,EAAC,gBAAgB,EAAC,WAAW,EAAE,CAAC,EAAA,CAAI,EAC9DA,cAAA,CAAA,MAAA,EAAA,EAAM,MAAM,EAAC,MAAM,EAAC,SAAS,EAAC,gBAAgB,EAAC,WAAW,EAAE,CAAC,EAAA,CAAI,EACjEA,cAAA,CAAA,MAAA,EAAA,EAAM,MAAM,EAAC,MAAM,EAAC,SAAS,EAAC,iBAAiB,EAAC,WAAW,EAAE,CAAC,GAAI,EAClEA,cAAA,CAAA,MAAA,EAAA,EAAM,MAAM,EAAC,GAAG,EAAC,SAAS,EAAC,gBAAgB,EAAC,WAAW,EAAE,CAAC,GAAI,CAAA,EAAA,CAC9C,EACjBD,eAAA,CAAA,gBAAA,EAAA,EACC,EAAE,EAAC,sBAAsB,EACzB,EAAE,EAAC,GAAG,EACN,EAAE,EAAC,GAAG,EACN,CAAC,EAAC,GAAG,EACL,aAAa,EAAC,gBAAgB,EAC9B,iBAAiB,EAAC,0DAA0D,EAAA,QAAA,EAAA,CAE5EC,cAAA,CAAA,MAAA,EAAA,EAAM,MAAM,EAAC,GAAG,EAAC,SAAS,EAAC,iBAAiB,EAAC,WAAW,EAAE,CAAC,EAAA,CAAI,EAC/DA,cAAA,CAAA,MAAA,EAAA,EAAM,MAAM,EAAC,MAAM,EAAC,SAAS,EAAC,iBAAiB,EAAC,WAAW,EAAE,CAAC,EAAA,CAAI,EAClEA,cAAA,CAAA,MAAA,EAAA,EAAM,MAAM,EAAC,MAAM,EAAC,SAAS,EAAC,gBAAgB,EAAC,WAAW,EAAE,CAAC,EAAA,CAAI,EACjEA,cAAA,CAAA,MAAA,EAAA,EAAM,MAAM,EAAC,GAAG,EAAC,SAAS,EAAC,gBAAgB,EAAC,WAAW,EAAE,CAAC,GAAI,CAAA,EAAA,CAC9C,EACjBD,eAAA,CAAA,gBAAA,EAAA,EACC,EAAE,EAAC,sBAAsB,EACzB,EAAE,EAAC,GAAG,EACN,EAAE,EAAC,GAAG,EACN,CAAC,EAAC,GAAG,EACL,aAAa,EAAC,gBAAgB,EAC9B,iBAAiB,EAAC,0DAA0D,EAAA,QAAA,EAAA,CAE5EC,cAAA,CAAA,MAAA,EAAA,EAAM,MAAM,EAAC,GAAG,EAAC,SAAS,EAAC,iBAAiB,EAAC,WAAW,EAAE,CAAC,EAAA,CAAI,EAC/DA,cAAA,CAAA,MAAA,EAAA,EAAM,MAAM,EAAC,MAAM,EAAC,SAAS,EAAC,eAAe,EAAC,WAAW,EAAE,CAAC,GAAI,EAChEA,cAAA,CAAA,MAAA,EAAA,EAAM,MAAM,EAAC,GAAG,EAAC,SAAS,EAAC,eAAe,EAAC,WAAW,EAAE,CAAC,GAAI,CAAA,EAAA,CAC7C,CAAA,EAAA,CACX,CAAA,EAAA,CACL,KAEHD,eAAA,CAAAE,mBAAA,EAAA,EAAA,QAAA,EAAA,CACCD,yBAAM,CAAC,EAAC,ukEAAukE,EAAA,CAAG,EACllEA,cAAA,CAAA,MAAA,EAAA,EAAM,CAAC,EAAC,6WAA6W,GAAG,EACxXA,cAAA,CAAA,MAAA,EAAA,EAAM,CAAC,EAAC,+MAA+M,EAAA,CAAG,CAAA,EAAA,CACxN,CACH,EAAA,CACI;AAER;;ACzDA;;;;;;;;;;AAUG;AACG,SAAU,YAAY,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,KAAK,EAAqB,EAAA;IACvF,QACCD,4BACK,KAAK,EACT,SAAS,EAAE,OAAO,CACjB;AACC,cAAE;cACA,qFAAqF,EACxF,SAAS,CACT,EACD,OAAO,EAAC,eAAe,EAAA,QAAA,EAAA,CAEtB,CAAC,MAAM,IAAIC,cAAA,CAAA,MAAA,EAAA,EAAA,GAAU,OAAO,EAAE,EAAE,EAAA,WAAA,EAAY,IAAI,EAAC,CAAC,EAAC,KAAK,EAAC,CAAC,EAAC,KAAK,EAAC,KAAK,EAAC,KAAK,EAAC,MAAM,EAAC,KAAK,EAAA,CAAG,EAC7FA,cAAA,CAAA,MAAA,EAAA,EAAA,GACK,OAAO,EAAE,UAAU,EAAA,WAAA,EACb,YAAY,EACtB,CAAC,EAAC,+2BAA+2B,EAAA,CACh3B,CAAA,EAAA,CACG;AAER;;ACtCA;;;;;;;;;;;AAWG;AACG,SAAU,UAAU,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,GAAG,YAAY,EAAE,GAAG,KAAK,EAAe,EAAA;IAC/F,QACCD,eAAA,CAAA,KAAA,EAAA,EAAA,GACK,KAAK,EACT,SAAS,EAAE,OAAO,CACjB,OAAO,KAAK,YAAY;AACvB,YAAA,+HAA+H,EAChI,SAAS,CACT,EACD,OAAO,EAAE,CAAA,IAAA,EAAO,OAAO,KAAK,OAAO,GAAG,KAAK,GAAG,KAAK,CAAA,KAAA,CAAO,EAAA,QAAA,EAAA,CAEzD,OAAO,KAAK,YAAY,KACxBA,kDACCC,cAAA,CAAA,MAAA,EAAA,EAAA,GACK,OAAO,EAAE,GAAG,eACN,KAAK,EACf,CAAC,EAAC,o6BAAo6B,EAAA,CACr6B,EACFA,cAAA,CAAA,MAAA,EAAA,EAAA,GACK,OAAO,EAAE,MAAM,EAAA,WAAA,EACT,QAAQ,EAClB,CAAC,EAAC,qqBAAqqB,EAAA,CACtqB,EACFA,4BACK,OAAO,EAAE,MAAM,EAAA,WAAA,EACT,QAAQ,EAClB,CAAC,EAAC,qsBAAqsB,GACtsB,CAAA,EAAA,CACA,CACH,EACA,OAAO,KAAK,OAAO,KACnBA,cAAA,CAAA,MAAA,EAAA,EAAM,CAAC,EAAC,uuBAAuuB,GAAG,CAClvB,CAAA,EAAA,CACI;AAER;;AC7DA;;AAEG;AACG,SAAU,KAAK,CAAC,KAAoD,EAAA;AACzE,IAAA,QACCA,cAAA,CAAA,KAAA,EAAA,EAAA,GAAS,KAAK,EAAE,OAAO,EAAC,cAAc,EAAA,QAAA,EACrCA,cAAA,CAAA,MAAA,EAAA,EAAM,CAAC,EAAC,wOAAwO,EAAA,CAAG,EAAA,CAC9O;AAER;;ACYA;;;;;;;;;;AAUG;AACG,SAAU,WAAW,CAAC,EAAE,SAAS,EAAE,MAAM,GAAG,KAAK,EAAE,OAAO,EAAE,GAAG,KAAK,EAAoB,EAAA;IAC7F,QACCA,2BACK,KAAK,EACT,SAAS,EAAE,OAAO,CACjB;AACC,cAAE;AACF,cAAE,oFAAoF,EACvF,SAAS,CACT,EACD,OAAO,EAAC,cAAc,YAErB,MAAM,IACNA,cAAA,CAAA,MAAA,EAAA,EAAA,GACK,OAAO,EAAE,UAAU,EAAA,WAAA,EACb,YAAY,EACtB,CAAC,EAAC,ohBAAohB,EAAA,CACrhB,KAEFD,eAAA,CAAAE,mBAAA,EAAA,EAAA,QAAA,EAAA,CACCD,cAAA,CAAA,MAAA,EAAA,EAAA,GACK,OAAO,EAAE,UAAU,EAAA,WAAA,EACb,YAAY,EACtB,CAAC,EAAC,mdAAmd,GACpd,EACFA,cAAA,CAAA,MAAA,EAAA,EAAA,IACM,OAAO,IAAI,MAAM,IAAI,OAAO,GAAG,OAAO,EAAE,IAAI,GAAG,EAAE,CAAC,eAC7C,MAAM,EAChB,CAAC,EAAC,mEAAmE,EAAA,CACpE,CAAA,EAAA,CACA,CACH,EAAA,CACI;AAER;;;;;;;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-fieldset-context.d.ts","sourceRoot":"","sources":["../../src/hooks/use-fieldset-context.tsx"],"names":[],"mappings":"AACA,OAAO,EAAe,KAAK,EAA8C,MAAM,oBAAoB,CAAA;AAEnG,MAAM,MAAM,oBAAoB,GAAG;IAClC,SAAS,EAAE,KAAK,EAAE,CAAA;IAClB,UAAU,EAAE,OAAO,CAAA;IACnB,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;CACZ,CAAA;AAED,MAAM,MAAM,eAAe,GAAG;IAC7B,oBAAoB,GAAG,SAAS;IAChC;QACC,aAAa,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAA;QACrC,WAAW,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAA;QACtC,WAAW,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,KAAK,IAAI,CAAA;KAC/D;CACD,CAAA;AAGD,OAAO,
|
|
1
|
+
{"version":3,"file":"use-fieldset-context.d.ts","sourceRoot":"","sources":["../../src/hooks/use-fieldset-context.tsx"],"names":[],"mappings":"AACA,OAAO,EAAe,KAAK,EAA8C,MAAM,oBAAoB,CAAA;AAEnG,MAAM,MAAM,oBAAoB,GAAG;IAClC,SAAS,EAAE,KAAK,EAAE,CAAA;IAClB,UAAU,EAAE,OAAO,CAAA;IACnB,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;CACZ,CAAA;AAED,MAAM,MAAM,eAAe,GAAG;IAC7B,oBAAoB,GAAG,SAAS;IAChC;QACC,aAAa,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAA;QACrC,WAAW,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAA;QACtC,WAAW,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,KAAK,IAAI,CAAA;KAC/D;CACD,CAAA;AAGD,OAAO,EAA0B,SAAS,EAA0B,MAAM,OAAO,CAAA;AAOjF,wBAAgB,uBAAuB,CAAC,EACvC,QAAQ,EACR,YAAY,GACZ,EAAE;IACF,QAAQ,CAAC,EAAE,SAAS,CAAA;IACpB,YAAY,CAAC,EAAE,oBAAoB,CAAA;CACnC,2CAEA;AAED,wBAAgB,kBAAkB,IAAI,eAAe,CA+EpD"}
|
|
@@ -2,8 +2,6 @@ export type FieldType = 'array' | 'email' | 'file' | 'number' | 'object' | 'stri
|
|
|
2
2
|
export type StringField = {
|
|
3
3
|
type: 'email' | 'file' | 'number' | 'string' | 'tel' | 'textarea' | 'url';
|
|
4
4
|
value: string;
|
|
5
|
-
required?: boolean;
|
|
6
|
-
invalid?: boolean;
|
|
7
5
|
};
|
|
8
6
|
export type ObjectField = {
|
|
9
7
|
type: 'object';
|
|
@@ -11,12 +9,14 @@ export type ObjectField = {
|
|
|
11
9
|
};
|
|
12
10
|
export type ArrayField = {
|
|
13
11
|
type: 'array';
|
|
14
|
-
of: ArrayObjectOrNormalField;
|
|
12
|
+
of: ArrayObjectOrNormalField[];
|
|
15
13
|
};
|
|
16
14
|
type ArrayObjectOrNormalField = StringField | ArrayField | ObjectField;
|
|
17
|
-
export type Field = ArrayObjectOrNormalField & {
|
|
15
|
+
export type Field<T extends StringField | ArrayField | ObjectField = ArrayObjectOrNormalField> = T & {
|
|
18
16
|
id: string;
|
|
19
17
|
name: string;
|
|
18
|
+
required?: boolean;
|
|
19
|
+
invalid?: boolean;
|
|
20
20
|
};
|
|
21
21
|
export type FormContext = Field[];
|
|
22
22
|
import { ReactNode } from 'react';
|
|
@@ -25,7 +25,7 @@ import { ReactNode } from 'react';
|
|
|
25
25
|
*
|
|
26
26
|
* This is a helper function to define a field in a form context with type safety.
|
|
27
27
|
*/
|
|
28
|
-
export declare function defineField(fieldDefinition: Field): Field
|
|
28
|
+
export declare function defineField(fieldDefinition: Field): Field<ArrayObjectOrNormalField>;
|
|
29
29
|
export declare function isStringField(field: Field): boolean;
|
|
30
30
|
export declare function FormContextProvider({ children }: {
|
|
31
31
|
children?: ReactNode;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-form-context.d.ts","sourceRoot":"","sources":["../../src/hooks/use-form-context.tsx"],"names":[],"mappings":"AACA,MAAM,MAAM,SAAS,GAAG,OAAO,GAAG,OAAO,GAAG,MAAM,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,KAAK,GAAG,UAAU,GAAG,KAAK,CAAA;AAEhH,MAAM,MAAM,WAAW,GAAG;IACzB,IAAI,EAAE,OAAO,GAAG,MAAM,GAAG,QAAQ,GAAG,QAAQ,GAAG,KAAK,GAAG,UAAU,GAAG,KAAK,CAAA;IACzE,KAAK,EAAE,MAAM,CAAA;
|
|
1
|
+
{"version":3,"file":"use-form-context.d.ts","sourceRoot":"","sources":["../../src/hooks/use-form-context.tsx"],"names":[],"mappings":"AACA,MAAM,MAAM,SAAS,GAAG,OAAO,GAAG,OAAO,GAAG,MAAM,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,KAAK,GAAG,UAAU,GAAG,KAAK,CAAA;AAEhH,MAAM,MAAM,WAAW,GAAG;IACzB,IAAI,EAAE,OAAO,GAAG,MAAM,GAAG,QAAQ,GAAG,QAAQ,GAAG,KAAK,GAAG,UAAU,GAAG,KAAK,CAAA;IACzE,KAAK,EAAE,MAAM,CAAA;CACb,CAAA;AAED,MAAM,MAAM,WAAW,GAAG;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,MAAM,EAAE,KAAK,EAAE,CAAA;CAAE,CAAA;AAE7D,MAAM,MAAM,UAAU,GAAG;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,EAAE,EAAE,wBAAwB,EAAE,CAAA;CAAE,CAAA;AAE1E,KAAK,wBAAwB,GAAG,WAAW,GAAG,UAAU,GAAG,WAAW,CAAA;AAEtE,MAAM,MAAM,KAAK,CAAC,CAAC,SAAS,WAAW,GAAG,UAAU,GAAG,WAAW,GAAG,wBAAwB,IAAI,CAAC,GAAG;IACpG,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,OAAO,CAAC,EAAE,OAAO,CAAA;CACjB,CAAA;AAED,MAAM,MAAM,WAAW,GAAG,KAAK,EAAE,CAAA;AAGjC,OAAO,EAAE,SAAS,EAAe,MAAM,OAAO,CAAA;AAK9C;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,eAAe,EAAE,KAAK,mCAEjD;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,KAAK,WAEzC;AAID,wBAAgB,mBAAmB,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,CAAC,EAAE,SAAS,CAAA;CAAE,2CAEzE;AAED,wBAAgB,cAAc;oCAGa,KAAK;oCAQL,MAAM;oCAIN,MAAM,WAAW,OAAO,CAAC,KAAK,CAAC;GAezE"}
|
package/dist/hooks.d.ts
CHANGED
|
@@ -12,8 +12,6 @@ type FieldType = 'array' | 'email' | 'file' | 'number' | 'object' | 'string' | '
|
|
|
12
12
|
type StringField = {
|
|
13
13
|
type: 'email' | 'file' | 'number' | 'string' | 'tel' | 'textarea' | 'url';
|
|
14
14
|
value: string;
|
|
15
|
-
required?: boolean;
|
|
16
|
-
invalid?: boolean;
|
|
17
15
|
};
|
|
18
16
|
type ObjectField = {
|
|
19
17
|
type: 'object';
|
|
@@ -21,12 +19,14 @@ type ObjectField = {
|
|
|
21
19
|
};
|
|
22
20
|
type ArrayField = {
|
|
23
21
|
type: 'array';
|
|
24
|
-
of: ArrayObjectOrNormalField;
|
|
22
|
+
of: ArrayObjectOrNormalField[];
|
|
25
23
|
};
|
|
26
24
|
type ArrayObjectOrNormalField = StringField | ArrayField | ObjectField;
|
|
27
|
-
type Field = ArrayObjectOrNormalField & {
|
|
25
|
+
type Field<T extends StringField | ArrayField | ObjectField = ArrayObjectOrNormalField> = T & {
|
|
28
26
|
id: string;
|
|
29
27
|
name: string;
|
|
28
|
+
required?: boolean;
|
|
29
|
+
invalid?: boolean;
|
|
30
30
|
};
|
|
31
31
|
type FormContext = Field[];
|
|
32
32
|
|
|
@@ -35,7 +35,7 @@ type FormContext = Field[];
|
|
|
35
35
|
*
|
|
36
36
|
* This is a helper function to define a field in a form context with type safety.
|
|
37
37
|
*/
|
|
38
|
-
declare function defineField(fieldDefinition: Field): Field
|
|
38
|
+
declare function defineField(fieldDefinition: Field): Field<ArrayObjectOrNormalField>;
|
|
39
39
|
declare function isStringField(field: Field): boolean;
|
|
40
40
|
declare function FormContextProvider({ children }: {
|
|
41
41
|
children?: ReactNode;
|
package/dist/hooks.esm.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hooks.esm.js","sources":["../src/hooks/create-fast-context.tsx","../src/hooks/use-form-context.tsx","../src/hooks/use-fieldset-context.tsx","../src/hooks/use-form-status.tsx","../src/hooks/use-pointer-movement.ts"],"sourcesContent":["// * React\nimport { HTMLAttributes, useRef, createContext, useContext, useSyncExternalStore } from 'react'\n\nexport function createFastContext<Store>(defaultInitialState: Store) {\n\tfunction useStoreData(initialState: Store = defaultInitialState): {\n\t\tget: () => Store\n\t\tset: (value: Store | ((prevState: Store) => Store)) => void\n\t\tsubscribe: (callback: () => void) => () => void\n\t} {\n\t\tconst store = useRef(initialState),\n\t\t\tget = () => store.current,\n\t\t\tsubscribers = useRef(new Set<() => void>())\n\n\t\tconst set = (value: Store | ((prevState: Store) => Store)) => {\n\t\t\tif (typeof value === 'function') {\n\t\t\t\tstore.current = (value as (prevState: Store) => Store)(store.current)\n\t\t\t} else {\n\t\t\t\tstore.current = value\n\t\t\t}\n\t\t\tsubscribers.current.forEach(callback => callback())\n\t\t}\n\n\t\tconst subscribe = (callback: () => void) => {\n\t\t\tsubscribers.current.add(callback)\n\t\t\treturn () => subscribers.current.delete(callback)\n\t\t}\n\n\t\treturn {\n\t\t\tget,\n\t\t\tset,\n\t\t\tsubscribe,\n\t\t}\n\t}\n\n\ttype UseStoreDataReturnType = ReturnType<typeof useStoreData>\n\n\tconst StoreContext = createContext<UseStoreDataReturnType | null>(null)\n\n\tfunction Provider({\n\t\tinitialValue = defaultInitialState,\n\t\t...props\n\t}: Pick<HTMLAttributes<HTMLElement>, 'children'> & { initialValue?: Store }) {\n\t\treturn <StoreContext.Provider value={useStoreData(initialValue)} {...props} />\n\t}\n\n\tfunction useStore<SelectorOutput>(\n\t\tselector: (store: Store) => SelectorOutput,\n\t\tinitialValue?: Store,\n\t): [SelectorOutput | undefined, ((value: Store | ((prevState: Store) => Store)) => void) | undefined] {\n\t\tconst store = useContext(StoreContext)\n\n\t\tif (!store) {\n\t\t\tconst localStoreValue = initialValue !== undefined ? initialValue : defaultInitialState\n\n\t\t\tconst selectedValue = selector(localStoreValue)\n\t\t\tconst noOpSet = () => console.warn('Attempting to set store value outside of Provider')\n\n\t\t\treturn [selectedValue, noOpSet]\n\t\t}\n\n\t\tconst state = useSyncExternalStore(\n\t\t\tstore.subscribe,\n\t\t\t() => selector(store.get()),\n\t\t\t() => selector(initialValue !== undefined ? initialValue : defaultInitialState),\n\t\t)\n\n\t\treturn [state, store.set]\n\t}\n\n\treturn {\n\t\tProvider,\n\t\tuseStore,\n\t}\n}\n","// * Types\nexport type FieldType = 'array' | 'email' | 'file' | 'number' | 'object' | 'string' | 'tel' | 'textarea' | 'url'\n\nexport type StringField = {\n\ttype: 'email' | 'file' | 'number' | 'string' | 'tel' | 'textarea' | 'url'\n\tvalue: string\n\trequired?: boolean\n\tinvalid?: boolean\n}\n\nexport type ObjectField = { type: 'object'; fields: Field[] }\n\nexport type ArrayField = { type: 'array'; of: ArrayObjectOrNormalField }\n\ntype ArrayObjectOrNormalField = StringField | ArrayField | ObjectField\n\nexport type Field = ArrayObjectOrNormalField & {\n\tid: string\n\tname: string\n}\n\nexport type FormContext = Field[]\n\n// * React\nimport { ReactNode, useCallback } from 'react'\n\n// * Hooks\nimport { createFastContext } from './create-fast-context'\n\n/**\n * # Define Field\n *\n * This is a helper function to define a field in a form context with type safety.\n */\nexport function defineField(fieldDefinition: Field) {\n\treturn fieldDefinition\n}\n\nexport function isStringField(field: Field) {\n\treturn Boolean(field.type !== 'object' && field.type !== 'array')\n}\n\nconst { Provider, useStore } = createFastContext<FormContext>([])\n\nexport function FormContextProvider({ children }: { children?: ReactNode }) {\n\treturn <Provider>{children}</Provider>\n}\n\nexport function useFormContext() {\n\tconst [formContext, setFormContext] = useStore(store => store)\n\n\tconst registerField = useCallback((field: Field) => {\n\t\tsetFormContext?.(prevContext => {\n\t\t\tconst otherFields = (prevContext || []).filter(otherField => otherField.id !== field.id)\n\n\t\t\treturn [...otherFields, field]\n\t\t})\n\t}, [])\n\n\tconst removeField = useCallback((fieldID: string) => {\n\t\tsetFormContext?.(prevContext => (prevContext || []).filter(field => field.id !== fieldID))\n\t}, [])\n\n\tconst updateField = useCallback((fieldID: string, updates: Partial<Field>) => {\n\t\tsetFormContext?.(prevContext => {\n\t\t\tconst field = prevContext.find(({ id }) => id === fieldID)\n\n\t\t\tif (!field) throw new Error(`Field with id \"${fieldID}\" not found in form context.`)\n\n\t\t\tconst otherFields = prevContext.filter(({ id }) => id !== fieldID)\n\n\t\t\tconst updatedField = { ...field, ...updates } as Field\n\n\t\t\treturn [...otherFields, updatedField]\n\t\t})\n\t}, [])\n\n\treturn [formContext, { registerField, removeField, updateField }] as const\n}\n","// * Types\nimport { defineField, Field, isStringField, StringField, useFormContext } from './use-form-context'\n\nexport type FieldsetContextValue = {\n\tfieldList: Field[]\n\tdecorative: boolean\n\tid: string\n\tjoin?: string\n\tname: string\n}\n\nexport type FieldsetContext = [\n\tFieldsetContextValue | undefined,\n\t{\n\t\tregisterField: (field: Field) => void\n\t\tremoveField: (fieldID: string) => void\n\t\tupdateField: (fieldID: string, updates: Partial<Field>) => void\n\t},\n]\n\n// * React\nimport { ReactNode, useCallback, useEffect } from 'react'\n\n// * Hooks\nimport { createFastContext } from './create-fast-context'\n\nconst { Provider, useStore } = createFastContext<FieldsetContextValue | undefined>(undefined)\n\nexport function FieldsetContextProvider({\n\tchildren,\n\tinitialValue,\n}: {\n\tchildren?: ReactNode\n\tinitialValue?: FieldsetContextValue\n}) {\n\treturn <Provider initialValue={initialValue}>{children}</Provider>\n}\n\nexport function useFieldsetContext(): FieldsetContext {\n\tconst [fieldsetContext, setFieldsetContext] = useStore(store => store),\n\t\t[, formContextFunctions] = useFormContext()\n\n\tconst registerField = useCallback((field: Field) => {\n\t\tsetFieldsetContext?.(prev => {\n\t\t\tif (!prev) return prev\n\n\t\t\tconst existingFieldIndex = prev.fieldList.findIndex(existingField => existingField.id === field.id)\n\n\t\t\tconst newFieldList =\n\t\t\t\texistingFieldIndex >= 0\n\t\t\t\t\t? prev.fieldList.map((existingField, index) => (index === existingFieldIndex ? field : existingField))\n\t\t\t\t\t: [...prev.fieldList, field]\n\n\t\t\treturn { ...prev, fieldList: newFieldList }\n\t\t})\n\t}, [])\n\n\tconst removeField = useCallback((fieldID: string) => {\n\t\tsetFieldsetContext?.(prev => {\n\t\t\tif (!prev) return prev\n\n\t\t\treturn {\n\t\t\t\t...prev,\n\t\t\t\tfieldList: prev.fieldList.filter(field => field.id !== fieldID),\n\t\t\t}\n\t\t})\n\t}, [])\n\n\tconst updateField = useCallback((fieldID: string, updates: Partial<Field>) => {\n\t\tsetFieldsetContext?.(prev => {\n\t\t\tif (!prev) return prev\n\n\t\t\treturn {\n\t\t\t\t...prev,\n\t\t\t\tfieldList: prev.fieldList.map(field => (field.id === fieldID ? ({ ...field, ...updates } as Field) : field)),\n\t\t\t}\n\t\t})\n\t}, [])\n\n\tconst createFormContextEntry = useCallback((fieldsetEntry: FieldsetContextValue): Field => {\n\t\tif (fieldsetEntry.join) {\n\t\t\tconst joinedValue = fieldsetEntry.fieldList\n\t\t\t\t.filter(field => isStringField(field) && (field as StringField).value !== '')\n\t\t\t\t.map(field => (field as StringField).value)\n\t\t\t\t.join(fieldsetEntry.join)\n\n\t\t\treturn defineField({\n\t\t\t\ttype: 'string',\n\t\t\t\tid: fieldsetEntry.id,\n\t\t\t\tname: fieldsetEntry.name,\n\t\t\t\tvalue: joinedValue,\n\t\t\t\trequired: fieldsetEntry.fieldList.some(field => (field as StringField).required),\n\t\t\t\tinvalid: fieldsetEntry.fieldList.some(field => (field as StringField).invalid),\n\t\t\t})\n\t\t}\n\n\t\treturn defineField({\n\t\t\ttype: 'object',\n\t\t\tid: fieldsetEntry.id,\n\t\t\tname: fieldsetEntry.name,\n\t\t\tfields: fieldsetEntry.fieldList,\n\t\t})\n\t}, [])\n\n\tuseEffect(() => {\n\t\tif (!fieldsetContext || fieldsetContext.decorative) return\n\n\t\tconst formContextEntry = createFormContextEntry(fieldsetContext)\n\n\t\tformContextFunctions.registerField(formContextEntry)\n\n\t\treturn () => {\n\t\t\tformContextFunctions.removeField(fieldsetContext.id)\n\t\t}\n\t}, [fieldsetContext, formContextFunctions.registerField, formContextFunctions.removeField, createFormContextEntry])\n\n\treturn [fieldsetContext, { registerField, removeField, updateField }]\n}\n","// * Types\nimport { ReactNode, Suspense } from 'react'\n\nexport type FormStatus = 'error' | 'incomplete' | 'loading' | 'ready' | 'success' | 'readonly'\n\n// * Hooks\nimport { createFastContext } from './create-fast-context'\n\nconst DEFAULT_STATUS: FormStatus = 'incomplete'\n\nconst { Provider, useStore } = createFastContext<FormStatus>(DEFAULT_STATUS)\n\nexport function FormStatusProvider({\n\tchildren,\n\tinitialStatus = DEFAULT_STATUS,\n}: {\n\tchildren?: ReactNode\n\tinitialStatus?: FormStatus\n}) {\n\treturn (\n\t\t<Suspense>\n\t\t\t<Provider initialValue={initialStatus}>{children}</Provider>\n\t\t</Suspense>\n\t)\n}\n\nexport function useFormStatus() {\n\treturn useStore(store => store)\n}\n","import React, { useCallback, useEffect, useId, useRef, useState } from 'react'\n\nexport type Coords = { x: number; y: number }\n\nexport type Cursor =\n\t| 'alias'\n\t| 'all-scroll'\n\t| 'auto'\n\t| 'cell'\n\t| 'col-resize'\n\t| 'context-menu'\n\t| 'copy'\n\t| 'crosshair'\n\t| 'default'\n\t| 'e-resize'\n\t| 'ew-resize'\n\t| 'grab'\n\t| 'grabbing'\n\t| 'help'\n\t| 'move'\n\t| 'no-drop'\n\t| 'not-allowed'\n\t| 'n-resize'\n\t| 'ne-resize'\n\t| 'nw-resize'\n\t| 'ns-resize'\n\t| 'nesw-resize'\n\t| 'nwse-resize'\n\t| 'pointer'\n\t| 'progress'\n\t| 'row-resize'\n\t| 's-resize'\n\t| 'se-resize'\n\t| 'sw-resize'\n\t| 'text'\n\t| 'vertical-text'\n\t| 'w-resize'\n\t| 'wait'\n\t| 'zoom-in'\n\t| 'zoom-out'\n\nexport type UsePointerMovementProps = {\n\tactiveCursor?: Cursor\n\tonChange?: (delta: Coords) => void\n\tonEnd?: (delta: Coords) => void\n}\n\nexport function usePointerMovement(props?: UsePointerMovementProps) {\n\tconst pointerTypeRef = useRef<'mouse' | 'pointer' | 'touch'>('pointer'),\n\t\t[isTracking, setIsTracking] = useState(false),\n\t\t[delta, setDelta] = useState<Coords>({ x: 0, y: 0 }),\n\t\tstartCoordsRef = useRef<Coords>({ x: 0, y: 0 })\n\n\tconst styleID = useId()\n\n\tconst changeCursor = (cursor: Cursor | false) => {\n\t\tif (cursor === false) {\n\t\t\tdocument.querySelector<HTMLStyleElement>(`#${styleID}`)?.remove()\n\t\t\treturn\n\t\t}\n\n\t\tconst css = `*, *:active { cursor: ${cursor}; -moz-user-select: none; -webkit-user-select: none; -ms-user-select: none; user-select: none; }`\n\n\t\tconst style = document.createElement('style')\n\n\t\tstyle.id = styleID\n\t\tstyle.innerHTML = css\n\n\t\tdocument.body.prepend(style)\n\t}\n\n\tconst trackPointerMovement = (\n\t\te: React.MouseEvent<HTMLElement> | React.PointerEvent<HTMLElement> | React.TouchEvent<HTMLElement>,\n\t) => {\n\t\tchangeCursor(props?.activeCursor || 'grabbing')\n\n\t\tconst { type } = e\n\n\t\tswitch (type) {\n\t\t\tcase 'mousemove':\n\t\t\tcase 'mouseup':\n\t\t\tcase 'pointermove':\n\t\t\tcase 'pointerup':\n\t\t\tcase 'touchmove':\n\t\t\tcase 'touchend':\n\t\t\t\tthrow new Error(\n\t\t\t\t\t'To initiate the tracking of pointer movement, you must use a `mousedown`, `pointerdown`, or `touchstart`.',\n\t\t\t\t)\n\t\t\tcase 'mousedown':\n\t\t\t\tpointerTypeRef.current = 'mouse'\n\t\t\t\tbreak\n\t\t\tcase 'pointerdown':\n\t\t\t\tpointerTypeRef.current = 'pointer'\n\t\t\t\tbreak\n\t\t\tcase 'touchstart':\n\t\t\t\tpointerTypeRef.current = 'touch'\n\t\t\t\tbreak\n\t\t}\n\n\t\tlet x = 0,\n\t\t\ty = 0\n\n\t\tif ('touches' in e) {\n\t\t\tconst { touches } = e\n\n\t\t\tif (touches.length > 1) return\n\n\t\t\tx = touches[0].clientX\n\t\t\ty = touches[0].clientY\n\t\t} else {\n\t\t\tx = e.clientX\n\t\t\ty = e.clientY\n\t\t}\n\n\t\tstartCoordsRef.current = { x, y }\n\t\tsetIsTracking(true)\n\t}\n\n\tconst updateDelta = useCallback((e: MouseEvent | PointerEvent | TouchEvent) => {\n\t\tlet clientX = 0,\n\t\t\tclientY = 0\n\n\t\tif ('touches' in e) {\n\t\t\tconst { touches } = e\n\n\t\t\tif (touches.length > 1) return\n\n\t\t\tclientX = touches[0].clientX\n\t\t\tclientY = touches[0].clientY\n\t\t} else {\n\t\t\tclientX = e.clientX\n\t\t\tclientY = e.clientY\n\t\t}\n\n\t\tconst { x, y } = startCoordsRef.current,\n\t\t\tnewDelta = { x: clientX - x, y: clientY - y }\n\n\t\tsetDelta(newDelta)\n\t\tprops?.onChange?.(newDelta)\n\t}, [])\n\n\tconst stopTracking = useCallback(() => {\n\t\tchangeCursor(false)\n\t\tsetIsTracking(false)\n\t\tprops?.onEnd?.(delta)\n\t}, [delta])\n\n\tuseEffect(() => {\n\t\tif (typeof window === 'undefined') return\n\n\t\tconst controller = new AbortController(),\n\t\t\tsignal = controller.signal\n\n\t\tif (isTracking) {\n\t\t\tswitch (pointerTypeRef.current) {\n\t\t\t\tcase 'mouse':\n\t\t\t\t\tdocument.body.addEventListener('mousemove', updateDelta, { signal })\n\t\t\t\t\tdocument.body.addEventListener('mouseup', stopTracking, { signal })\n\t\t\t\t\tbreak\n\t\t\t\tcase 'pointer':\n\t\t\t\t\tdocument.body.addEventListener('pointermove', updateDelta, { signal })\n\t\t\t\t\tdocument.body.addEventListener('pointerup', stopTracking, { signal })\n\t\t\t\t\tbreak\n\t\t\t\tcase 'touch':\n\t\t\t\t\tdocument.body.addEventListener('touchmove', updateDelta, { signal })\n\t\t\t\t\tdocument.body.addEventListener('touchend', stopTracking, { signal })\n\t\t\t\t\tbreak\n\t\t\t}\n\t\t} else {\n\t\t\tcontroller.abort()\n\t\t}\n\n\t\treturn () => {\n\t\t\tcontroller.abort()\n\t\t}\n\t}, [isTracking, updateDelta, stopTracking])\n\n\treturn { delta, stopTracking, trackPointerMovement }\n}\n"],"names":["_jsx","Provider","useStore"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"hooks.esm.js","sources":["../src/hooks/create-fast-context.tsx","../src/hooks/use-form-context.tsx","../src/hooks/use-fieldset-context.tsx","../src/hooks/use-form-status.tsx","../src/hooks/use-pointer-movement.ts"],"sourcesContent":["// * React\nimport { HTMLAttributes, useRef, createContext, useContext, useSyncExternalStore } from 'react'\n\nexport function createFastContext<Store>(defaultInitialState: Store) {\n\tfunction useStoreData(initialState: Store = defaultInitialState): {\n\t\tget: () => Store\n\t\tset: (value: Store | ((prevState: Store) => Store)) => void\n\t\tsubscribe: (callback: () => void) => () => void\n\t} {\n\t\tconst store = useRef(initialState),\n\t\t\tget = () => store.current,\n\t\t\tsubscribers = useRef(new Set<() => void>())\n\n\t\tconst set = (value: Store | ((prevState: Store) => Store)) => {\n\t\t\tif (typeof value === 'function') {\n\t\t\t\tstore.current = (value as (prevState: Store) => Store)(store.current)\n\t\t\t} else {\n\t\t\t\tstore.current = value\n\t\t\t}\n\t\t\tsubscribers.current.forEach(callback => callback())\n\t\t}\n\n\t\tconst subscribe = (callback: () => void) => {\n\t\t\tsubscribers.current.add(callback)\n\t\t\treturn () => subscribers.current.delete(callback)\n\t\t}\n\n\t\treturn {\n\t\t\tget,\n\t\t\tset,\n\t\t\tsubscribe,\n\t\t}\n\t}\n\n\ttype UseStoreDataReturnType = ReturnType<typeof useStoreData>\n\n\tconst StoreContext = createContext<UseStoreDataReturnType | null>(null)\n\n\tfunction Provider({\n\t\tinitialValue = defaultInitialState,\n\t\t...props\n\t}: Pick<HTMLAttributes<HTMLElement>, 'children'> & { initialValue?: Store }) {\n\t\treturn <StoreContext.Provider value={useStoreData(initialValue)} {...props} />\n\t}\n\n\tfunction useStore<SelectorOutput>(\n\t\tselector: (store: Store) => SelectorOutput,\n\t\tinitialValue?: Store,\n\t): [SelectorOutput | undefined, ((value: Store | ((prevState: Store) => Store)) => void) | undefined] {\n\t\tconst store = useContext(StoreContext)\n\n\t\tif (!store) {\n\t\t\tconst localStoreValue = initialValue !== undefined ? initialValue : defaultInitialState\n\n\t\t\tconst selectedValue = selector(localStoreValue)\n\t\t\tconst noOpSet = () => console.warn('Attempting to set store value outside of Provider')\n\n\t\t\treturn [selectedValue, noOpSet]\n\t\t}\n\n\t\tconst state = useSyncExternalStore(\n\t\t\tstore.subscribe,\n\t\t\t() => selector(store.get()),\n\t\t\t() => selector(initialValue !== undefined ? initialValue : defaultInitialState),\n\t\t)\n\n\t\treturn [state, store.set]\n\t}\n\n\treturn {\n\t\tProvider,\n\t\tuseStore,\n\t}\n}\n","// * Types\nexport type FieldType = 'array' | 'email' | 'file' | 'number' | 'object' | 'string' | 'tel' | 'textarea' | 'url'\n\nexport type StringField = {\n\ttype: 'email' | 'file' | 'number' | 'string' | 'tel' | 'textarea' | 'url'\n\tvalue: string\n}\n\nexport type ObjectField = { type: 'object'; fields: Field[] }\n\nexport type ArrayField = { type: 'array'; of: ArrayObjectOrNormalField[] }\n\ntype ArrayObjectOrNormalField = StringField | ArrayField | ObjectField\n\nexport type Field<T extends StringField | ArrayField | ObjectField = ArrayObjectOrNormalField> = T & {\n\tid: string\n\tname: string\n\trequired?: boolean\n\tinvalid?: boolean\n}\n\nexport type FormContext = Field[]\n\n// * React\nimport { ReactNode, useCallback } from 'react'\n\n// * Hooks\nimport { createFastContext } from './create-fast-context'\n\n/**\n * # Define Field\n *\n * This is a helper function to define a field in a form context with type safety.\n */\nexport function defineField(fieldDefinition: Field) {\n\treturn fieldDefinition\n}\n\nexport function isStringField(field: Field) {\n\treturn Boolean(field.type !== 'object' && field.type !== 'array')\n}\n\nconst { Provider, useStore } = createFastContext<FormContext>([])\n\nexport function FormContextProvider({ children }: { children?: ReactNode }) {\n\treturn <Provider>{children}</Provider>\n}\n\nexport function useFormContext() {\n\tconst [formContext, setFormContext] = useStore(store => store)\n\n\tconst registerField = useCallback((field: Field) => {\n\t\tsetFormContext?.(prevContext => {\n\t\t\tconst otherFields = (prevContext || []).filter(otherField => otherField.id !== field.id)\n\n\t\t\treturn [...otherFields, field]\n\t\t})\n\t}, [])\n\n\tconst removeField = useCallback((fieldID: string) => {\n\t\tsetFormContext?.(prevContext => (prevContext || []).filter(field => field.id !== fieldID))\n\t}, [])\n\n\tconst updateField = useCallback((fieldID: string, updates: Partial<Field>) => {\n\t\tsetFormContext?.(prevContext => {\n\t\t\tconst field = prevContext.find(({ id }) => id === fieldID)\n\n\t\t\tif (!field) throw new Error(`Field with id \"${fieldID}\" not found in form context.`)\n\n\t\t\tconst otherFields = prevContext.filter(({ id }) => id !== fieldID)\n\n\t\t\tconst updatedField = { ...field, ...updates } as Field\n\n\t\t\treturn [...otherFields, updatedField]\n\t\t})\n\t}, [])\n\n\treturn [formContext, { registerField, removeField, updateField }] as const\n}\n","// * Types\nimport { defineField, Field, isStringField, StringField, useFormContext } from './use-form-context'\n\nexport type FieldsetContextValue = {\n\tfieldList: Field[]\n\tdecorative: boolean\n\tid: string\n\tjoin?: string\n\tname: string\n}\n\nexport type FieldsetContext = [\n\tFieldsetContextValue | undefined,\n\t{\n\t\tregisterField: (field: Field) => void\n\t\tremoveField: (fieldID: string) => void\n\t\tupdateField: (fieldID: string, updates: Partial<Field>) => void\n\t},\n]\n\n// * React\nimport { FieldsetHTMLAttributes, ReactNode, useCallback, useEffect } from 'react'\n\n// * Hooks\nimport { createFastContext } from './create-fast-context'\n\nconst { Provider, useStore } = createFastContext<FieldsetContextValue | undefined>(undefined)\n\nexport function FieldsetContextProvider({\n\tchildren,\n\tinitialValue,\n}: {\n\tchildren?: ReactNode\n\tinitialValue?: FieldsetContextValue\n}) {\n\treturn <Provider initialValue={initialValue}>{children}</Provider>\n}\n\nexport function useFieldsetContext(): FieldsetContext {\n\tconst [fieldsetContext, setFieldsetContext] = useStore(store => store),\n\t\t[, formContextFunctions] = useFormContext()\n\n\tconst registerField = useCallback((field: Field) => {\n\t\tsetFieldsetContext?.(prev => {\n\t\t\tif (!prev) return prev\n\n\t\t\tconst existingFieldIndex = prev.fieldList.findIndex(existingField => existingField.id === field.id)\n\n\t\t\tconst newFieldList =\n\t\t\t\texistingFieldIndex >= 0\n\t\t\t\t\t? prev.fieldList.map((existingField, index) => (index === existingFieldIndex ? field : existingField))\n\t\t\t\t\t: [...prev.fieldList, field]\n\n\t\t\treturn { ...prev, fieldList: newFieldList }\n\t\t})\n\t}, [])\n\n\tconst removeField = useCallback((fieldID: string) => {\n\t\tsetFieldsetContext?.(prev => {\n\t\t\tif (!prev) return prev\n\n\t\t\treturn {\n\t\t\t\t...prev,\n\t\t\t\tfieldList: prev.fieldList.filter(field => field.id !== fieldID),\n\t\t\t}\n\t\t})\n\t}, [])\n\n\tconst updateField = useCallback((fieldID: string, updates: Partial<Field>) => {\n\t\tsetFieldsetContext?.(prev => {\n\t\t\tif (!prev) return prev\n\n\t\t\treturn {\n\t\t\t\t...prev,\n\t\t\t\tfieldList: prev.fieldList.map(field => (field.id === fieldID ? ({ ...field, ...updates } as Field) : field)),\n\t\t\t}\n\t\t})\n\t}, [])\n\n\tconst createFormContextEntry = useCallback((fieldsetEntry: FieldsetContextValue): Field => {\n\t\tif (fieldsetEntry.join) {\n\t\t\tconst joinedValue = fieldsetEntry.fieldList\n\t\t\t\t.filter(field => isStringField(field) && (field as Field<StringField>).value !== '')\n\t\t\t\t.map(field => (field as Field<StringField>).value)\n\t\t\t\t.join(fieldsetEntry.join)\n\n\t\t\treturn defineField({\n\t\t\t\ttype: 'string',\n\t\t\t\tid: fieldsetEntry.id,\n\t\t\t\tname: fieldsetEntry.name,\n\t\t\t\tvalue: joinedValue,\n\t\t\t\trequired: fieldsetEntry.fieldList.some(field => (field as Field<StringField>).required),\n\t\t\t\tinvalid: fieldsetEntry.fieldList.some(field => (field as Field<StringField>).invalid),\n\t\t\t})\n\t\t}\n\n\t\treturn defineField({\n\t\t\ttype: 'object',\n\t\t\tid: fieldsetEntry.id,\n\t\t\tname: fieldsetEntry.name,\n\t\t\tfields: fieldsetEntry.fieldList,\n\t\t})\n\t}, [])\n\n\tuseEffect(() => {\n\t\tif (!fieldsetContext || fieldsetContext.decorative) return\n\n\t\tconst formContextEntry = createFormContextEntry(fieldsetContext)\n\n\t\tformContextFunctions.registerField(formContextEntry)\n\n\t\treturn () => {\n\t\t\tformContextFunctions.removeField(fieldsetContext.id)\n\t\t}\n\t}, [fieldsetContext, formContextFunctions.registerField, formContextFunctions.removeField, createFormContextEntry])\n\n\treturn [fieldsetContext, { registerField, removeField, updateField }]\n}\n","// * Types\nimport { ReactNode, Suspense } from 'react'\n\nexport type FormStatus = 'error' | 'incomplete' | 'loading' | 'ready' | 'success' | 'readonly'\n\n// * Hooks\nimport { createFastContext } from './create-fast-context'\n\nconst DEFAULT_STATUS: FormStatus = 'incomplete'\n\nconst { Provider, useStore } = createFastContext<FormStatus>(DEFAULT_STATUS)\n\nexport function FormStatusProvider({\n\tchildren,\n\tinitialStatus = DEFAULT_STATUS,\n}: {\n\tchildren?: ReactNode\n\tinitialStatus?: FormStatus\n}) {\n\treturn (\n\t\t<Suspense>\n\t\t\t<Provider initialValue={initialStatus}>{children}</Provider>\n\t\t</Suspense>\n\t)\n}\n\nexport function useFormStatus() {\n\treturn useStore(store => store)\n}\n","import React, { useCallback, useEffect, useId, useRef, useState } from 'react'\n\nexport type Coords = { x: number; y: number }\n\nexport type Cursor =\n\t| 'alias'\n\t| 'all-scroll'\n\t| 'auto'\n\t| 'cell'\n\t| 'col-resize'\n\t| 'context-menu'\n\t| 'copy'\n\t| 'crosshair'\n\t| 'default'\n\t| 'e-resize'\n\t| 'ew-resize'\n\t| 'grab'\n\t| 'grabbing'\n\t| 'help'\n\t| 'move'\n\t| 'no-drop'\n\t| 'not-allowed'\n\t| 'n-resize'\n\t| 'ne-resize'\n\t| 'nw-resize'\n\t| 'ns-resize'\n\t| 'nesw-resize'\n\t| 'nwse-resize'\n\t| 'pointer'\n\t| 'progress'\n\t| 'row-resize'\n\t| 's-resize'\n\t| 'se-resize'\n\t| 'sw-resize'\n\t| 'text'\n\t| 'vertical-text'\n\t| 'w-resize'\n\t| 'wait'\n\t| 'zoom-in'\n\t| 'zoom-out'\n\nexport type UsePointerMovementProps = {\n\tactiveCursor?: Cursor\n\tonChange?: (delta: Coords) => void\n\tonEnd?: (delta: Coords) => void\n}\n\nexport function usePointerMovement(props?: UsePointerMovementProps) {\n\tconst pointerTypeRef = useRef<'mouse' | 'pointer' | 'touch'>('pointer'),\n\t\t[isTracking, setIsTracking] = useState(false),\n\t\t[delta, setDelta] = useState<Coords>({ x: 0, y: 0 }),\n\t\tstartCoordsRef = useRef<Coords>({ x: 0, y: 0 })\n\n\tconst styleID = useId()\n\n\tconst changeCursor = (cursor: Cursor | false) => {\n\t\tif (cursor === false) {\n\t\t\tdocument.querySelector<HTMLStyleElement>(`#${styleID}`)?.remove()\n\t\t\treturn\n\t\t}\n\n\t\tconst css = `*, *:active { cursor: ${cursor}; -moz-user-select: none; -webkit-user-select: none; -ms-user-select: none; user-select: none; }`\n\n\t\tconst style = document.createElement('style')\n\n\t\tstyle.id = styleID\n\t\tstyle.innerHTML = css\n\n\t\tdocument.body.prepend(style)\n\t}\n\n\tconst trackPointerMovement = (\n\t\te: React.MouseEvent<HTMLElement> | React.PointerEvent<HTMLElement> | React.TouchEvent<HTMLElement>,\n\t) => {\n\t\tchangeCursor(props?.activeCursor || 'grabbing')\n\n\t\tconst { type } = e\n\n\t\tswitch (type) {\n\t\t\tcase 'mousemove':\n\t\t\tcase 'mouseup':\n\t\t\tcase 'pointermove':\n\t\t\tcase 'pointerup':\n\t\t\tcase 'touchmove':\n\t\t\tcase 'touchend':\n\t\t\t\tthrow new Error(\n\t\t\t\t\t'To initiate the tracking of pointer movement, you must use a `mousedown`, `pointerdown`, or `touchstart`.',\n\t\t\t\t)\n\t\t\tcase 'mousedown':\n\t\t\t\tpointerTypeRef.current = 'mouse'\n\t\t\t\tbreak\n\t\t\tcase 'pointerdown':\n\t\t\t\tpointerTypeRef.current = 'pointer'\n\t\t\t\tbreak\n\t\t\tcase 'touchstart':\n\t\t\t\tpointerTypeRef.current = 'touch'\n\t\t\t\tbreak\n\t\t}\n\n\t\tlet x = 0,\n\t\t\ty = 0\n\n\t\tif ('touches' in e) {\n\t\t\tconst { touches } = e\n\n\t\t\tif (touches.length > 1) return\n\n\t\t\tx = touches[0].clientX\n\t\t\ty = touches[0].clientY\n\t\t} else {\n\t\t\tx = e.clientX\n\t\t\ty = e.clientY\n\t\t}\n\n\t\tstartCoordsRef.current = { x, y }\n\t\tsetIsTracking(true)\n\t}\n\n\tconst updateDelta = useCallback((e: MouseEvent | PointerEvent | TouchEvent) => {\n\t\tlet clientX = 0,\n\t\t\tclientY = 0\n\n\t\tif ('touches' in e) {\n\t\t\tconst { touches } = e\n\n\t\t\tif (touches.length > 1) return\n\n\t\t\tclientX = touches[0].clientX\n\t\t\tclientY = touches[0].clientY\n\t\t} else {\n\t\t\tclientX = e.clientX\n\t\t\tclientY = e.clientY\n\t\t}\n\n\t\tconst { x, y } = startCoordsRef.current,\n\t\t\tnewDelta = { x: clientX - x, y: clientY - y }\n\n\t\tsetDelta(newDelta)\n\t\tprops?.onChange?.(newDelta)\n\t}, [])\n\n\tconst stopTracking = useCallback(() => {\n\t\tchangeCursor(false)\n\t\tsetIsTracking(false)\n\t\tprops?.onEnd?.(delta)\n\t}, [delta])\n\n\tuseEffect(() => {\n\t\tif (typeof window === 'undefined') return\n\n\t\tconst controller = new AbortController(),\n\t\t\tsignal = controller.signal\n\n\t\tif (isTracking) {\n\t\t\tswitch (pointerTypeRef.current) {\n\t\t\t\tcase 'mouse':\n\t\t\t\t\tdocument.body.addEventListener('mousemove', updateDelta, { signal })\n\t\t\t\t\tdocument.body.addEventListener('mouseup', stopTracking, { signal })\n\t\t\t\t\tbreak\n\t\t\t\tcase 'pointer':\n\t\t\t\t\tdocument.body.addEventListener('pointermove', updateDelta, { signal })\n\t\t\t\t\tdocument.body.addEventListener('pointerup', stopTracking, { signal })\n\t\t\t\t\tbreak\n\t\t\t\tcase 'touch':\n\t\t\t\t\tdocument.body.addEventListener('touchmove', updateDelta, { signal })\n\t\t\t\t\tdocument.body.addEventListener('touchend', stopTracking, { signal })\n\t\t\t\t\tbreak\n\t\t\t}\n\t\t} else {\n\t\t\tcontroller.abort()\n\t\t}\n\n\t\treturn () => {\n\t\t\tcontroller.abort()\n\t\t}\n\t}, [isTracking, updateDelta, stopTracking])\n\n\treturn { delta, stopTracking, trackPointerMovement }\n}\n"],"names":["_jsx","Provider","useStore"],"mappings":";;;AAGM,SAAU,iBAAiB,CAAQ,mBAA0B,EAAA;IAClE,SAAS,YAAY,CAAC,YAAA,GAAsB,mBAAmB,EAAA;QAK9D,MAAM,KAAK,GAAG,MAAM,CAAC,YAAY,CAAC,EACjC,GAAG,GAAG,MAAM,KAAK,CAAC,OAAO,EACzB,WAAW,GAAG,MAAM,CAAC,IAAI,GAAG,EAAc,CAAC;AAE5C,QAAA,MAAM,GAAG,GAAG,CAAC,KAA4C,KAAI;AAC5D,YAAA,IAAI,OAAO,KAAK,KAAK,UAAU,EAAE;gBAChC,KAAK,CAAC,OAAO,GAAI,KAAqC,CAAC,KAAK,CAAC,OAAO,CAAC;YACtE;iBAAO;AACN,gBAAA,KAAK,CAAC,OAAO,GAAG,KAAK;YACtB;AACA,YAAA,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,IAAI,QAAQ,EAAE,CAAC;AACpD,QAAA,CAAC;AAED,QAAA,MAAM,SAAS,GAAG,CAAC,QAAoB,KAAI;AAC1C,YAAA,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC;YACjC,OAAO,MAAM,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC;AAClD,QAAA,CAAC;QAED,OAAO;YACN,GAAG;YACH,GAAG;YACH,SAAS;SACT;IACF;AAIA,IAAA,MAAM,YAAY,GAAG,aAAa,CAAgC,IAAI,CAAC;IAEvE,SAAS,QAAQ,CAAC,EACjB,YAAY,GAAG,mBAAmB,EAClC,GAAG,KAAK,EACkE,EAAA;AAC1E,QAAA,OAAOA,GAAA,CAAC,YAAY,CAAC,QAAQ,IAAC,KAAK,EAAE,YAAY,CAAC,YAAY,CAAC,EAAA,GAAM,KAAK,GAAI;IAC/E;AAEA,IAAA,SAAS,QAAQ,CAChB,QAA0C,EAC1C,YAAoB,EAAA;AAEpB,QAAA,MAAM,KAAK,GAAG,UAAU,CAAC,YAAY,CAAC;QAEtC,IAAI,CAAC,KAAK,EAAE;AACX,YAAA,MAAM,eAAe,GAAG,YAAY,KAAK,SAAS,GAAG,YAAY,GAAG,mBAAmB;AAEvF,YAAA,MAAM,aAAa,GAAG,QAAQ,CAAC,eAAe,CAAC;YAC/C,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,mDAAmD,CAAC;AAEvF,YAAA,OAAO,CAAC,aAAa,EAAE,OAAO,CAAC;QAChC;AAEA,QAAA,MAAM,KAAK,GAAG,oBAAoB,CACjC,KAAK,CAAC,SAAS,EACf,MAAM,QAAQ,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAC3B,MAAM,QAAQ,CAAC,YAAY,KAAK,SAAS,GAAG,YAAY,GAAG,mBAAmB,CAAC,CAC/E;AAED,QAAA,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC;IAC1B;IAEA,OAAO;QACN,QAAQ;QACR,QAAQ;KACR;AACF;;AC5CA;;;;AAIG;AACG,SAAU,WAAW,CAAC,eAAsB,EAAA;AACjD,IAAA,OAAO,eAAe;AACvB;AAEM,SAAU,aAAa,CAAC,KAAY,EAAA;AACzC,IAAA,OAAO,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,CAAC;AAClE;AAEA,MAAM,YAAEC,UAAQ,YAAEC,UAAQ,EAAE,GAAG,iBAAiB,CAAc,EAAE,CAAC;AAE3D,SAAU,mBAAmB,CAAC,EAAE,QAAQ,EAA4B,EAAA;AACzE,IAAA,OAAOF,GAAA,CAACC,UAAQ,EAAA,EAAA,QAAA,EAAE,QAAQ,GAAY;AACvC;SAEgB,cAAc,GAAA;AAC7B,IAAA,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAGC,UAAQ,CAAC,KAAK,IAAI,KAAK,CAAC;AAE9D,IAAA,MAAM,aAAa,GAAG,WAAW,CAAC,CAAC,KAAY,KAAI;AAClD,QAAA,cAAc,GAAG,WAAW,IAAG;YAC9B,MAAM,WAAW,GAAG,CAAC,WAAW,IAAI,EAAE,EAAE,MAAM,CAAC,UAAU,IAAI,UAAU,CAAC,EAAE,KAAK,KAAK,CAAC,EAAE,CAAC;AAExF,YAAA,OAAO,CAAC,GAAG,WAAW,EAAE,KAAK,CAAC;AAC/B,QAAA,CAAC,CAAC;IACH,CAAC,EAAE,EAAE,CAAC;AAEN,IAAA,MAAM,WAAW,GAAG,WAAW,CAAC,CAAC,OAAe,KAAI;QACnD,cAAc,GAAG,WAAW,IAAI,CAAC,WAAW,IAAI,EAAE,EAAE,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC,EAAE,KAAK,OAAO,CAAC,CAAC;IAC3F,CAAC,EAAE,EAAE,CAAC;IAEN,MAAM,WAAW,GAAG,WAAW,CAAC,CAAC,OAAe,EAAE,OAAuB,KAAI;AAC5E,QAAA,cAAc,GAAG,WAAW,IAAG;AAC9B,YAAA,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,OAAO,CAAC;AAE1D,YAAA,IAAI,CAAC,KAAK;AAAE,gBAAA,MAAM,IAAI,KAAK,CAAC,kBAAkB,OAAO,CAAA,4BAAA,CAA8B,CAAC;AAEpF,YAAA,MAAM,WAAW,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,OAAO,CAAC;YAElE,MAAM,YAAY,GAAG,EAAE,GAAG,KAAK,EAAE,GAAG,OAAO,EAAW;AAEtD,YAAA,OAAO,CAAC,GAAG,WAAW,EAAE,YAAY,CAAC;AACtC,QAAA,CAAC,CAAC;IACH,CAAC,EAAE,EAAE,CAAC;IAEN,OAAO,CAAC,WAAW,EAAE,EAAE,aAAa,EAAE,WAAW,EAAE,WAAW,EAAE,CAAU;AAC3E;;ACpDA,MAAM,YAAED,UAAQ,YAAEC,UAAQ,EAAE,GAAG,iBAAiB,CAAmC,SAAS,CAAC;SAE7E,uBAAuB,CAAC,EACvC,QAAQ,EACR,YAAY,GAIZ,EAAA;IACA,OAAOF,GAAA,CAACC,UAAQ,EAAA,EAAC,YAAY,EAAE,YAAY,EAAA,QAAA,EAAG,QAAQ,EAAA,CAAY;AACnE;SAEgB,kBAAkB,GAAA;IACjC,MAAM,CAAC,eAAe,EAAE,kBAAkB,CAAC,GAAGC,UAAQ,CAAC,KAAK,IAAI,KAAK,CAAC,EACrE,GAAG,oBAAoB,CAAC,GAAG,cAAc,EAAE;AAE5C,IAAA,MAAM,aAAa,GAAG,WAAW,CAAC,CAAC,KAAY,KAAI;AAClD,QAAA,kBAAkB,GAAG,IAAI,IAAG;AAC3B,YAAA,IAAI,CAAC,IAAI;AAAE,gBAAA,OAAO,IAAI;YAEtB,MAAM,kBAAkB,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,aAAa,IAAI,aAAa,CAAC,EAAE,KAAK,KAAK,CAAC,EAAE,CAAC;AAEnG,YAAA,MAAM,YAAY,GACjB,kBAAkB,IAAI;kBACnB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,aAAa,EAAE,KAAK,MAAM,KAAK,KAAK,kBAAkB,GAAG,KAAK,GAAG,aAAa,CAAC;kBACnG,CAAC,GAAG,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC;YAE9B,OAAO,EAAE,GAAG,IAAI,EAAE,SAAS,EAAE,YAAY,EAAE;AAC5C,QAAA,CAAC,CAAC;IACH,CAAC,EAAE,EAAE,CAAC;AAEN,IAAA,MAAM,WAAW,GAAG,WAAW,CAAC,CAAC,OAAe,KAAI;AACnD,QAAA,kBAAkB,GAAG,IAAI,IAAG;AAC3B,YAAA,IAAI,CAAC,IAAI;AAAE,gBAAA,OAAO,IAAI;YAEtB,OAAO;AACN,gBAAA,GAAG,IAAI;AACP,gBAAA,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC,EAAE,KAAK,OAAO,CAAC;aAC/D;AACF,QAAA,CAAC,CAAC;IACH,CAAC,EAAE,EAAE,CAAC;IAEN,MAAM,WAAW,GAAG,WAAW,CAAC,CAAC,OAAe,EAAE,OAAuB,KAAI;AAC5E,QAAA,kBAAkB,GAAG,IAAI,IAAG;AAC3B,YAAA,IAAI,CAAC,IAAI;AAAE,gBAAA,OAAO,IAAI;YAEtB,OAAO;AACN,gBAAA,GAAG,IAAI;AACP,gBAAA,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,KAAK,KAAK,CAAC,EAAE,KAAK,OAAO,GAAI,EAAE,GAAG,KAAK,EAAE,GAAG,OAAO,EAAY,GAAG,KAAK,CAAC,CAAC;aAC5G;AACF,QAAA,CAAC,CAAC;IACH,CAAC,EAAE,EAAE,CAAC;AAEN,IAAA,MAAM,sBAAsB,GAAG,WAAW,CAAC,CAAC,aAAmC,KAAW;AACzF,QAAA,IAAI,aAAa,CAAC,IAAI,EAAE;AACvB,YAAA,MAAM,WAAW,GAAG,aAAa,CAAC;AAChC,iBAAA,MAAM,CAAC,KAAK,IAAI,aAAa,CAAC,KAAK,CAAC,IAAK,KAA4B,CAAC,KAAK,KAAK,EAAE;iBAClF,GAAG,CAAC,KAAK,IAAK,KAA4B,CAAC,KAAK;AAChD,iBAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;AAE1B,YAAA,OAAO,WAAW,CAAC;AAClB,gBAAA,IAAI,EAAE,QAAQ;gBACd,EAAE,EAAE,aAAa,CAAC,EAAE;gBACpB,IAAI,EAAE,aAAa,CAAC,IAAI;AACxB,gBAAA,KAAK,EAAE,WAAW;AAClB,gBAAA,QAAQ,EAAE,aAAa,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,IAAK,KAA4B,CAAC,QAAQ,CAAC;AACvF,gBAAA,OAAO,EAAE,aAAa,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,IAAK,KAA4B,CAAC,OAAO,CAAC;AACrF,aAAA,CAAC;QACH;AAEA,QAAA,OAAO,WAAW,CAAC;AAClB,YAAA,IAAI,EAAE,QAAQ;YACd,EAAE,EAAE,aAAa,CAAC,EAAE;YACpB,IAAI,EAAE,aAAa,CAAC,IAAI;YACxB,MAAM,EAAE,aAAa,CAAC,SAAS;AAC/B,SAAA,CAAC;IACH,CAAC,EAAE,EAAE,CAAC;IAEN,SAAS,CAAC,MAAK;AACd,QAAA,IAAI,CAAC,eAAe,IAAI,eAAe,CAAC,UAAU;YAAE;AAEpD,QAAA,MAAM,gBAAgB,GAAG,sBAAsB,CAAC,eAAe,CAAC;AAEhE,QAAA,oBAAoB,CAAC,aAAa,CAAC,gBAAgB,CAAC;AAEpD,QAAA,OAAO,MAAK;AACX,YAAA,oBAAoB,CAAC,WAAW,CAAC,eAAe,CAAC,EAAE,CAAC;AACrD,QAAA,CAAC;AACF,IAAA,CAAC,EAAE,CAAC,eAAe,EAAE,oBAAoB,CAAC,aAAa,EAAE,oBAAoB,CAAC,WAAW,EAAE,sBAAsB,CAAC,CAAC;IAEnH,OAAO,CAAC,eAAe,EAAE,EAAE,aAAa,EAAE,WAAW,EAAE,WAAW,EAAE,CAAC;AACtE;;AC7GA,MAAM,cAAc,GAAe,YAAY;AAE/C,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,iBAAiB,CAAa,cAAc,CAAC;AAEtE,SAAU,kBAAkB,CAAC,EAClC,QAAQ,EACR,aAAa,GAAG,cAAc,GAI9B,EAAA;AACA,IAAA,QACCF,GAAA,CAAC,QAAQ,EAAA,EAAA,QAAA,EACRA,IAAC,QAAQ,EAAA,EAAC,YAAY,EAAE,aAAa,EAAA,QAAA,EAAG,QAAQ,EAAA,CAAY,EAAA,CAClD;AAEb;SAEgB,aAAa,GAAA;IAC5B,OAAO,QAAQ,CAAC,KAAK,IAAI,KAAK,CAAC;AAChC;;ACmBM,SAAU,kBAAkB,CAAC,KAA+B,EAAA;IACjE,MAAM,cAAc,GAAG,MAAM,CAAgC,SAAS,CAAC,EACtE,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,EAC7C,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAS,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EACpD,cAAc,GAAG,MAAM,CAAS,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AAEhD,IAAA,MAAM,OAAO,GAAG,KAAK,EAAE;AAEvB,IAAA,MAAM,YAAY,GAAG,CAAC,MAAsB,KAAI;AAC/C,QAAA,IAAI,MAAM,KAAK,KAAK,EAAE;YACrB,QAAQ,CAAC,aAAa,CAAmB,CAAA,CAAA,EAAI,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE;YACjE;QACD;AAEA,QAAA,MAAM,GAAG,GAAG,CAAA,sBAAA,EAAyB,MAAM,kGAAkG;QAE7I,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC;AAE7C,QAAA,KAAK,CAAC,EAAE,GAAG,OAAO;AAClB,QAAA,KAAK,CAAC,SAAS,GAAG,GAAG;AAErB,QAAA,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;AAC7B,IAAA,CAAC;AAED,IAAA,MAAM,oBAAoB,GAAG,CAC5B,CAAkG,KAC/F;AACH,QAAA,YAAY,CAAC,KAAK,EAAE,YAAY,IAAI,UAAU,CAAC;AAE/C,QAAA,MAAM,EAAE,IAAI,EAAE,GAAG,CAAC;QAElB,QAAQ,IAAI;AACX,YAAA,KAAK,WAAW;AAChB,YAAA,KAAK,SAAS;AACd,YAAA,KAAK,aAAa;AAClB,YAAA,KAAK,WAAW;AAChB,YAAA,KAAK,WAAW;AAChB,YAAA,KAAK,UAAU;AACd,gBAAA,MAAM,IAAI,KAAK,CACd,2GAA2G,CAC3G;AACF,YAAA,KAAK,WAAW;AACf,gBAAA,cAAc,CAAC,OAAO,GAAG,OAAO;gBAChC;AACD,YAAA,KAAK,aAAa;AACjB,gBAAA,cAAc,CAAC,OAAO,GAAG,SAAS;gBAClC;AACD,YAAA,KAAK,YAAY;AAChB,gBAAA,cAAc,CAAC,OAAO,GAAG,OAAO;gBAChC;;AAGF,QAAA,IAAI,CAAC,GAAG,CAAC,EACR,CAAC,GAAG,CAAC;AAEN,QAAA,IAAI,SAAS,IAAI,CAAC,EAAE;AACnB,YAAA,MAAM,EAAE,OAAO,EAAE,GAAG,CAAC;AAErB,YAAA,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;gBAAE;AAExB,YAAA,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO;AACtB,YAAA,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO;QACvB;aAAO;AACN,YAAA,CAAC,GAAG,CAAC,CAAC,OAAO;AACb,YAAA,CAAC,GAAG,CAAC,CAAC,OAAO;QACd;QAEA,cAAc,CAAC,OAAO,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE;QACjC,aAAa,CAAC,IAAI,CAAC;AACpB,IAAA,CAAC;AAED,IAAA,MAAM,WAAW,GAAG,WAAW,CAAC,CAAC,CAAyC,KAAI;AAC7E,QAAA,IAAI,OAAO,GAAG,CAAC,EACd,OAAO,GAAG,CAAC;AAEZ,QAAA,IAAI,SAAS,IAAI,CAAC,EAAE;AACnB,YAAA,MAAM,EAAE,OAAO,EAAE,GAAG,CAAC;AAErB,YAAA,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;gBAAE;AAExB,YAAA,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO;AAC5B,YAAA,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO;QAC7B;aAAO;AACN,YAAA,OAAO,GAAG,CAAC,CAAC,OAAO;AACnB,YAAA,OAAO,GAAG,CAAC,CAAC,OAAO;QACpB;QAEA,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,cAAc,CAAC,OAAO,EACtC,QAAQ,GAAG,EAAE,CAAC,EAAE,OAAO,GAAG,CAAC,EAAE,CAAC,EAAE,OAAO,GAAG,CAAC,EAAE;QAE9C,QAAQ,CAAC,QAAQ,CAAC;AAClB,QAAA,KAAK,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAC5B,CAAC,EAAE,EAAE,CAAC;AAEN,IAAA,MAAM,YAAY,GAAG,WAAW,CAAC,MAAK;QACrC,YAAY,CAAC,KAAK,CAAC;QACnB,aAAa,CAAC,KAAK,CAAC;AACpB,QAAA,KAAK,EAAE,KAAK,GAAG,KAAK,CAAC;AACtB,IAAA,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;IAEX,SAAS,CAAC,MAAK;QACd,IAAI,OAAO,MAAM,KAAK,WAAW;YAAE;QAEnC,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,EACvC,MAAM,GAAG,UAAU,CAAC,MAAM;QAE3B,IAAI,UAAU,EAAE;AACf,YAAA,QAAQ,cAAc,CAAC,OAAO;AAC7B,gBAAA,KAAK,OAAO;AACX,oBAAA,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,WAAW,EAAE,EAAE,MAAM,EAAE,CAAC;AACpE,oBAAA,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,YAAY,EAAE,EAAE,MAAM,EAAE,CAAC;oBACnE;AACD,gBAAA,KAAK,SAAS;AACb,oBAAA,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC,aAAa,EAAE,WAAW,EAAE,EAAE,MAAM,EAAE,CAAC;AACtE,oBAAA,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,YAAY,EAAE,EAAE,MAAM,EAAE,CAAC;oBACrE;AACD,gBAAA,KAAK,OAAO;AACX,oBAAA,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,WAAW,EAAE,EAAE,MAAM,EAAE,CAAC;AACpE,oBAAA,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE,YAAY,EAAE,EAAE,MAAM,EAAE,CAAC;oBACpE;;QAEH;aAAO;YACN,UAAU,CAAC,KAAK,EAAE;QACnB;AAEA,QAAA,OAAO,MAAK;YACX,UAAU,CAAC,KAAK,EAAE;AACnB,QAAA,CAAC;IACF,CAAC,EAAE,CAAC,UAAU,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC;AAE3C,IAAA,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,oBAAoB,EAAE;AACrD;;;;"}
|
package/dist/hooks.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hooks.js","sources":["../src/hooks/create-fast-context.tsx","../src/hooks/use-form-context.tsx","../src/hooks/use-fieldset-context.tsx","../src/hooks/use-form-status.tsx","../src/hooks/use-pointer-movement.ts"],"sourcesContent":["// * React\nimport { HTMLAttributes, useRef, createContext, useContext, useSyncExternalStore } from 'react'\n\nexport function createFastContext<Store>(defaultInitialState: Store) {\n\tfunction useStoreData(initialState: Store = defaultInitialState): {\n\t\tget: () => Store\n\t\tset: (value: Store | ((prevState: Store) => Store)) => void\n\t\tsubscribe: (callback: () => void) => () => void\n\t} {\n\t\tconst store = useRef(initialState),\n\t\t\tget = () => store.current,\n\t\t\tsubscribers = useRef(new Set<() => void>())\n\n\t\tconst set = (value: Store | ((prevState: Store) => Store)) => {\n\t\t\tif (typeof value === 'function') {\n\t\t\t\tstore.current = (value as (prevState: Store) => Store)(store.current)\n\t\t\t} else {\n\t\t\t\tstore.current = value\n\t\t\t}\n\t\t\tsubscribers.current.forEach(callback => callback())\n\t\t}\n\n\t\tconst subscribe = (callback: () => void) => {\n\t\t\tsubscribers.current.add(callback)\n\t\t\treturn () => subscribers.current.delete(callback)\n\t\t}\n\n\t\treturn {\n\t\t\tget,\n\t\t\tset,\n\t\t\tsubscribe,\n\t\t}\n\t}\n\n\ttype UseStoreDataReturnType = ReturnType<typeof useStoreData>\n\n\tconst StoreContext = createContext<UseStoreDataReturnType | null>(null)\n\n\tfunction Provider({\n\t\tinitialValue = defaultInitialState,\n\t\t...props\n\t}: Pick<HTMLAttributes<HTMLElement>, 'children'> & { initialValue?: Store }) {\n\t\treturn <StoreContext.Provider value={useStoreData(initialValue)} {...props} />\n\t}\n\n\tfunction useStore<SelectorOutput>(\n\t\tselector: (store: Store) => SelectorOutput,\n\t\tinitialValue?: Store,\n\t): [SelectorOutput | undefined, ((value: Store | ((prevState: Store) => Store)) => void) | undefined] {\n\t\tconst store = useContext(StoreContext)\n\n\t\tif (!store) {\n\t\t\tconst localStoreValue = initialValue !== undefined ? initialValue : defaultInitialState\n\n\t\t\tconst selectedValue = selector(localStoreValue)\n\t\t\tconst noOpSet = () => console.warn('Attempting to set store value outside of Provider')\n\n\t\t\treturn [selectedValue, noOpSet]\n\t\t}\n\n\t\tconst state = useSyncExternalStore(\n\t\t\tstore.subscribe,\n\t\t\t() => selector(store.get()),\n\t\t\t() => selector(initialValue !== undefined ? initialValue : defaultInitialState),\n\t\t)\n\n\t\treturn [state, store.set]\n\t}\n\n\treturn {\n\t\tProvider,\n\t\tuseStore,\n\t}\n}\n","// * Types\nexport type FieldType = 'array' | 'email' | 'file' | 'number' | 'object' | 'string' | 'tel' | 'textarea' | 'url'\n\nexport type StringField = {\n\ttype: 'email' | 'file' | 'number' | 'string' | 'tel' | 'textarea' | 'url'\n\tvalue: string\n\trequired?: boolean\n\tinvalid?: boolean\n}\n\nexport type ObjectField = { type: 'object'; fields: Field[] }\n\nexport type ArrayField = { type: 'array'; of: ArrayObjectOrNormalField }\n\ntype ArrayObjectOrNormalField = StringField | ArrayField | ObjectField\n\nexport type Field = ArrayObjectOrNormalField & {\n\tid: string\n\tname: string\n}\n\nexport type FormContext = Field[]\n\n// * React\nimport { ReactNode, useCallback } from 'react'\n\n// * Hooks\nimport { createFastContext } from './create-fast-context'\n\n/**\n * # Define Field\n *\n * This is a helper function to define a field in a form context with type safety.\n */\nexport function defineField(fieldDefinition: Field) {\n\treturn fieldDefinition\n}\n\nexport function isStringField(field: Field) {\n\treturn Boolean(field.type !== 'object' && field.type !== 'array')\n}\n\nconst { Provider, useStore } = createFastContext<FormContext>([])\n\nexport function FormContextProvider({ children }: { children?: ReactNode }) {\n\treturn <Provider>{children}</Provider>\n}\n\nexport function useFormContext() {\n\tconst [formContext, setFormContext] = useStore(store => store)\n\n\tconst registerField = useCallback((field: Field) => {\n\t\tsetFormContext?.(prevContext => {\n\t\t\tconst otherFields = (prevContext || []).filter(otherField => otherField.id !== field.id)\n\n\t\t\treturn [...otherFields, field]\n\t\t})\n\t}, [])\n\n\tconst removeField = useCallback((fieldID: string) => {\n\t\tsetFormContext?.(prevContext => (prevContext || []).filter(field => field.id !== fieldID))\n\t}, [])\n\n\tconst updateField = useCallback((fieldID: string, updates: Partial<Field>) => {\n\t\tsetFormContext?.(prevContext => {\n\t\t\tconst field = prevContext.find(({ id }) => id === fieldID)\n\n\t\t\tif (!field) throw new Error(`Field with id \"${fieldID}\" not found in form context.`)\n\n\t\t\tconst otherFields = prevContext.filter(({ id }) => id !== fieldID)\n\n\t\t\tconst updatedField = { ...field, ...updates } as Field\n\n\t\t\treturn [...otherFields, updatedField]\n\t\t})\n\t}, [])\n\n\treturn [formContext, { registerField, removeField, updateField }] as const\n}\n","// * Types\nimport { defineField, Field, isStringField, StringField, useFormContext } from './use-form-context'\n\nexport type FieldsetContextValue = {\n\tfieldList: Field[]\n\tdecorative: boolean\n\tid: string\n\tjoin?: string\n\tname: string\n}\n\nexport type FieldsetContext = [\n\tFieldsetContextValue | undefined,\n\t{\n\t\tregisterField: (field: Field) => void\n\t\tremoveField: (fieldID: string) => void\n\t\tupdateField: (fieldID: string, updates: Partial<Field>) => void\n\t},\n]\n\n// * React\nimport { ReactNode, useCallback, useEffect } from 'react'\n\n// * Hooks\nimport { createFastContext } from './create-fast-context'\n\nconst { Provider, useStore } = createFastContext<FieldsetContextValue | undefined>(undefined)\n\nexport function FieldsetContextProvider({\n\tchildren,\n\tinitialValue,\n}: {\n\tchildren?: ReactNode\n\tinitialValue?: FieldsetContextValue\n}) {\n\treturn <Provider initialValue={initialValue}>{children}</Provider>\n}\n\nexport function useFieldsetContext(): FieldsetContext {\n\tconst [fieldsetContext, setFieldsetContext] = useStore(store => store),\n\t\t[, formContextFunctions] = useFormContext()\n\n\tconst registerField = useCallback((field: Field) => {\n\t\tsetFieldsetContext?.(prev => {\n\t\t\tif (!prev) return prev\n\n\t\t\tconst existingFieldIndex = prev.fieldList.findIndex(existingField => existingField.id === field.id)\n\n\t\t\tconst newFieldList =\n\t\t\t\texistingFieldIndex >= 0\n\t\t\t\t\t? prev.fieldList.map((existingField, index) => (index === existingFieldIndex ? field : existingField))\n\t\t\t\t\t: [...prev.fieldList, field]\n\n\t\t\treturn { ...prev, fieldList: newFieldList }\n\t\t})\n\t}, [])\n\n\tconst removeField = useCallback((fieldID: string) => {\n\t\tsetFieldsetContext?.(prev => {\n\t\t\tif (!prev) return prev\n\n\t\t\treturn {\n\t\t\t\t...prev,\n\t\t\t\tfieldList: prev.fieldList.filter(field => field.id !== fieldID),\n\t\t\t}\n\t\t})\n\t}, [])\n\n\tconst updateField = useCallback((fieldID: string, updates: Partial<Field>) => {\n\t\tsetFieldsetContext?.(prev => {\n\t\t\tif (!prev) return prev\n\n\t\t\treturn {\n\t\t\t\t...prev,\n\t\t\t\tfieldList: prev.fieldList.map(field => (field.id === fieldID ? ({ ...field, ...updates } as Field) : field)),\n\t\t\t}\n\t\t})\n\t}, [])\n\n\tconst createFormContextEntry = useCallback((fieldsetEntry: FieldsetContextValue): Field => {\n\t\tif (fieldsetEntry.join) {\n\t\t\tconst joinedValue = fieldsetEntry.fieldList\n\t\t\t\t.filter(field => isStringField(field) && (field as StringField).value !== '')\n\t\t\t\t.map(field => (field as StringField).value)\n\t\t\t\t.join(fieldsetEntry.join)\n\n\t\t\treturn defineField({\n\t\t\t\ttype: 'string',\n\t\t\t\tid: fieldsetEntry.id,\n\t\t\t\tname: fieldsetEntry.name,\n\t\t\t\tvalue: joinedValue,\n\t\t\t\trequired: fieldsetEntry.fieldList.some(field => (field as StringField).required),\n\t\t\t\tinvalid: fieldsetEntry.fieldList.some(field => (field as StringField).invalid),\n\t\t\t})\n\t\t}\n\n\t\treturn defineField({\n\t\t\ttype: 'object',\n\t\t\tid: fieldsetEntry.id,\n\t\t\tname: fieldsetEntry.name,\n\t\t\tfields: fieldsetEntry.fieldList,\n\t\t})\n\t}, [])\n\n\tuseEffect(() => {\n\t\tif (!fieldsetContext || fieldsetContext.decorative) return\n\n\t\tconst formContextEntry = createFormContextEntry(fieldsetContext)\n\n\t\tformContextFunctions.registerField(formContextEntry)\n\n\t\treturn () => {\n\t\t\tformContextFunctions.removeField(fieldsetContext.id)\n\t\t}\n\t}, [fieldsetContext, formContextFunctions.registerField, formContextFunctions.removeField, createFormContextEntry])\n\n\treturn [fieldsetContext, { registerField, removeField, updateField }]\n}\n","// * Types\nimport { ReactNode, Suspense } from 'react'\n\nexport type FormStatus = 'error' | 'incomplete' | 'loading' | 'ready' | 'success' | 'readonly'\n\n// * Hooks\nimport { createFastContext } from './create-fast-context'\n\nconst DEFAULT_STATUS: FormStatus = 'incomplete'\n\nconst { Provider, useStore } = createFastContext<FormStatus>(DEFAULT_STATUS)\n\nexport function FormStatusProvider({\n\tchildren,\n\tinitialStatus = DEFAULT_STATUS,\n}: {\n\tchildren?: ReactNode\n\tinitialStatus?: FormStatus\n}) {\n\treturn (\n\t\t<Suspense>\n\t\t\t<Provider initialValue={initialStatus}>{children}</Provider>\n\t\t</Suspense>\n\t)\n}\n\nexport function useFormStatus() {\n\treturn useStore(store => store)\n}\n","import React, { useCallback, useEffect, useId, useRef, useState } from 'react'\n\nexport type Coords = { x: number; y: number }\n\nexport type Cursor =\n\t| 'alias'\n\t| 'all-scroll'\n\t| 'auto'\n\t| 'cell'\n\t| 'col-resize'\n\t| 'context-menu'\n\t| 'copy'\n\t| 'crosshair'\n\t| 'default'\n\t| 'e-resize'\n\t| 'ew-resize'\n\t| 'grab'\n\t| 'grabbing'\n\t| 'help'\n\t| 'move'\n\t| 'no-drop'\n\t| 'not-allowed'\n\t| 'n-resize'\n\t| 'ne-resize'\n\t| 'nw-resize'\n\t| 'ns-resize'\n\t| 'nesw-resize'\n\t| 'nwse-resize'\n\t| 'pointer'\n\t| 'progress'\n\t| 'row-resize'\n\t| 's-resize'\n\t| 'se-resize'\n\t| 'sw-resize'\n\t| 'text'\n\t| 'vertical-text'\n\t| 'w-resize'\n\t| 'wait'\n\t| 'zoom-in'\n\t| 'zoom-out'\n\nexport type UsePointerMovementProps = {\n\tactiveCursor?: Cursor\n\tonChange?: (delta: Coords) => void\n\tonEnd?: (delta: Coords) => void\n}\n\nexport function usePointerMovement(props?: UsePointerMovementProps) {\n\tconst pointerTypeRef = useRef<'mouse' | 'pointer' | 'touch'>('pointer'),\n\t\t[isTracking, setIsTracking] = useState(false),\n\t\t[delta, setDelta] = useState<Coords>({ x: 0, y: 0 }),\n\t\tstartCoordsRef = useRef<Coords>({ x: 0, y: 0 })\n\n\tconst styleID = useId()\n\n\tconst changeCursor = (cursor: Cursor | false) => {\n\t\tif (cursor === false) {\n\t\t\tdocument.querySelector<HTMLStyleElement>(`#${styleID}`)?.remove()\n\t\t\treturn\n\t\t}\n\n\t\tconst css = `*, *:active { cursor: ${cursor}; -moz-user-select: none; -webkit-user-select: none; -ms-user-select: none; user-select: none; }`\n\n\t\tconst style = document.createElement('style')\n\n\t\tstyle.id = styleID\n\t\tstyle.innerHTML = css\n\n\t\tdocument.body.prepend(style)\n\t}\n\n\tconst trackPointerMovement = (\n\t\te: React.MouseEvent<HTMLElement> | React.PointerEvent<HTMLElement> | React.TouchEvent<HTMLElement>,\n\t) => {\n\t\tchangeCursor(props?.activeCursor || 'grabbing')\n\n\t\tconst { type } = e\n\n\t\tswitch (type) {\n\t\t\tcase 'mousemove':\n\t\t\tcase 'mouseup':\n\t\t\tcase 'pointermove':\n\t\t\tcase 'pointerup':\n\t\t\tcase 'touchmove':\n\t\t\tcase 'touchend':\n\t\t\t\tthrow new Error(\n\t\t\t\t\t'To initiate the tracking of pointer movement, you must use a `mousedown`, `pointerdown`, or `touchstart`.',\n\t\t\t\t)\n\t\t\tcase 'mousedown':\n\t\t\t\tpointerTypeRef.current = 'mouse'\n\t\t\t\tbreak\n\t\t\tcase 'pointerdown':\n\t\t\t\tpointerTypeRef.current = 'pointer'\n\t\t\t\tbreak\n\t\t\tcase 'touchstart':\n\t\t\t\tpointerTypeRef.current = 'touch'\n\t\t\t\tbreak\n\t\t}\n\n\t\tlet x = 0,\n\t\t\ty = 0\n\n\t\tif ('touches' in e) {\n\t\t\tconst { touches } = e\n\n\t\t\tif (touches.length > 1) return\n\n\t\t\tx = touches[0].clientX\n\t\t\ty = touches[0].clientY\n\t\t} else {\n\t\t\tx = e.clientX\n\t\t\ty = e.clientY\n\t\t}\n\n\t\tstartCoordsRef.current = { x, y }\n\t\tsetIsTracking(true)\n\t}\n\n\tconst updateDelta = useCallback((e: MouseEvent | PointerEvent | TouchEvent) => {\n\t\tlet clientX = 0,\n\t\t\tclientY = 0\n\n\t\tif ('touches' in e) {\n\t\t\tconst { touches } = e\n\n\t\t\tif (touches.length > 1) return\n\n\t\t\tclientX = touches[0].clientX\n\t\t\tclientY = touches[0].clientY\n\t\t} else {\n\t\t\tclientX = e.clientX\n\t\t\tclientY = e.clientY\n\t\t}\n\n\t\tconst { x, y } = startCoordsRef.current,\n\t\t\tnewDelta = { x: clientX - x, y: clientY - y }\n\n\t\tsetDelta(newDelta)\n\t\tprops?.onChange?.(newDelta)\n\t}, [])\n\n\tconst stopTracking = useCallback(() => {\n\t\tchangeCursor(false)\n\t\tsetIsTracking(false)\n\t\tprops?.onEnd?.(delta)\n\t}, [delta])\n\n\tuseEffect(() => {\n\t\tif (typeof window === 'undefined') return\n\n\t\tconst controller = new AbortController(),\n\t\t\tsignal = controller.signal\n\n\t\tif (isTracking) {\n\t\t\tswitch (pointerTypeRef.current) {\n\t\t\t\tcase 'mouse':\n\t\t\t\t\tdocument.body.addEventListener('mousemove', updateDelta, { signal })\n\t\t\t\t\tdocument.body.addEventListener('mouseup', stopTracking, { signal })\n\t\t\t\t\tbreak\n\t\t\t\tcase 'pointer':\n\t\t\t\t\tdocument.body.addEventListener('pointermove', updateDelta, { signal })\n\t\t\t\t\tdocument.body.addEventListener('pointerup', stopTracking, { signal })\n\t\t\t\t\tbreak\n\t\t\t\tcase 'touch':\n\t\t\t\t\tdocument.body.addEventListener('touchmove', updateDelta, { signal })\n\t\t\t\t\tdocument.body.addEventListener('touchend', stopTracking, { signal })\n\t\t\t\t\tbreak\n\t\t\t}\n\t\t} else {\n\t\t\tcontroller.abort()\n\t\t}\n\n\t\treturn () => {\n\t\t\tcontroller.abort()\n\t\t}\n\t}, [isTracking, updateDelta, stopTracking])\n\n\treturn { delta, stopTracking, trackPointerMovement }\n}\n"],"names":["useRef","createContext","_jsx","useContext","useSyncExternalStore","Provider","useStore","useCallback","useEffect","Suspense","useState","useId"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"hooks.js","sources":["../src/hooks/create-fast-context.tsx","../src/hooks/use-form-context.tsx","../src/hooks/use-fieldset-context.tsx","../src/hooks/use-form-status.tsx","../src/hooks/use-pointer-movement.ts"],"sourcesContent":["// * React\nimport { HTMLAttributes, useRef, createContext, useContext, useSyncExternalStore } from 'react'\n\nexport function createFastContext<Store>(defaultInitialState: Store) {\n\tfunction useStoreData(initialState: Store = defaultInitialState): {\n\t\tget: () => Store\n\t\tset: (value: Store | ((prevState: Store) => Store)) => void\n\t\tsubscribe: (callback: () => void) => () => void\n\t} {\n\t\tconst store = useRef(initialState),\n\t\t\tget = () => store.current,\n\t\t\tsubscribers = useRef(new Set<() => void>())\n\n\t\tconst set = (value: Store | ((prevState: Store) => Store)) => {\n\t\t\tif (typeof value === 'function') {\n\t\t\t\tstore.current = (value as (prevState: Store) => Store)(store.current)\n\t\t\t} else {\n\t\t\t\tstore.current = value\n\t\t\t}\n\t\t\tsubscribers.current.forEach(callback => callback())\n\t\t}\n\n\t\tconst subscribe = (callback: () => void) => {\n\t\t\tsubscribers.current.add(callback)\n\t\t\treturn () => subscribers.current.delete(callback)\n\t\t}\n\n\t\treturn {\n\t\t\tget,\n\t\t\tset,\n\t\t\tsubscribe,\n\t\t}\n\t}\n\n\ttype UseStoreDataReturnType = ReturnType<typeof useStoreData>\n\n\tconst StoreContext = createContext<UseStoreDataReturnType | null>(null)\n\n\tfunction Provider({\n\t\tinitialValue = defaultInitialState,\n\t\t...props\n\t}: Pick<HTMLAttributes<HTMLElement>, 'children'> & { initialValue?: Store }) {\n\t\treturn <StoreContext.Provider value={useStoreData(initialValue)} {...props} />\n\t}\n\n\tfunction useStore<SelectorOutput>(\n\t\tselector: (store: Store) => SelectorOutput,\n\t\tinitialValue?: Store,\n\t): [SelectorOutput | undefined, ((value: Store | ((prevState: Store) => Store)) => void) | undefined] {\n\t\tconst store = useContext(StoreContext)\n\n\t\tif (!store) {\n\t\t\tconst localStoreValue = initialValue !== undefined ? initialValue : defaultInitialState\n\n\t\t\tconst selectedValue = selector(localStoreValue)\n\t\t\tconst noOpSet = () => console.warn('Attempting to set store value outside of Provider')\n\n\t\t\treturn [selectedValue, noOpSet]\n\t\t}\n\n\t\tconst state = useSyncExternalStore(\n\t\t\tstore.subscribe,\n\t\t\t() => selector(store.get()),\n\t\t\t() => selector(initialValue !== undefined ? initialValue : defaultInitialState),\n\t\t)\n\n\t\treturn [state, store.set]\n\t}\n\n\treturn {\n\t\tProvider,\n\t\tuseStore,\n\t}\n}\n","// * Types\nexport type FieldType = 'array' | 'email' | 'file' | 'number' | 'object' | 'string' | 'tel' | 'textarea' | 'url'\n\nexport type StringField = {\n\ttype: 'email' | 'file' | 'number' | 'string' | 'tel' | 'textarea' | 'url'\n\tvalue: string\n}\n\nexport type ObjectField = { type: 'object'; fields: Field[] }\n\nexport type ArrayField = { type: 'array'; of: ArrayObjectOrNormalField[] }\n\ntype ArrayObjectOrNormalField = StringField | ArrayField | ObjectField\n\nexport type Field<T extends StringField | ArrayField | ObjectField = ArrayObjectOrNormalField> = T & {\n\tid: string\n\tname: string\n\trequired?: boolean\n\tinvalid?: boolean\n}\n\nexport type FormContext = Field[]\n\n// * React\nimport { ReactNode, useCallback } from 'react'\n\n// * Hooks\nimport { createFastContext } from './create-fast-context'\n\n/**\n * # Define Field\n *\n * This is a helper function to define a field in a form context with type safety.\n */\nexport function defineField(fieldDefinition: Field) {\n\treturn fieldDefinition\n}\n\nexport function isStringField(field: Field) {\n\treturn Boolean(field.type !== 'object' && field.type !== 'array')\n}\n\nconst { Provider, useStore } = createFastContext<FormContext>([])\n\nexport function FormContextProvider({ children }: { children?: ReactNode }) {\n\treturn <Provider>{children}</Provider>\n}\n\nexport function useFormContext() {\n\tconst [formContext, setFormContext] = useStore(store => store)\n\n\tconst registerField = useCallback((field: Field) => {\n\t\tsetFormContext?.(prevContext => {\n\t\t\tconst otherFields = (prevContext || []).filter(otherField => otherField.id !== field.id)\n\n\t\t\treturn [...otherFields, field]\n\t\t})\n\t}, [])\n\n\tconst removeField = useCallback((fieldID: string) => {\n\t\tsetFormContext?.(prevContext => (prevContext || []).filter(field => field.id !== fieldID))\n\t}, [])\n\n\tconst updateField = useCallback((fieldID: string, updates: Partial<Field>) => {\n\t\tsetFormContext?.(prevContext => {\n\t\t\tconst field = prevContext.find(({ id }) => id === fieldID)\n\n\t\t\tif (!field) throw new Error(`Field with id \"${fieldID}\" not found in form context.`)\n\n\t\t\tconst otherFields = prevContext.filter(({ id }) => id !== fieldID)\n\n\t\t\tconst updatedField = { ...field, ...updates } as Field\n\n\t\t\treturn [...otherFields, updatedField]\n\t\t})\n\t}, [])\n\n\treturn [formContext, { registerField, removeField, updateField }] as const\n}\n","// * Types\nimport { defineField, Field, isStringField, StringField, useFormContext } from './use-form-context'\n\nexport type FieldsetContextValue = {\n\tfieldList: Field[]\n\tdecorative: boolean\n\tid: string\n\tjoin?: string\n\tname: string\n}\n\nexport type FieldsetContext = [\n\tFieldsetContextValue | undefined,\n\t{\n\t\tregisterField: (field: Field) => void\n\t\tremoveField: (fieldID: string) => void\n\t\tupdateField: (fieldID: string, updates: Partial<Field>) => void\n\t},\n]\n\n// * React\nimport { FieldsetHTMLAttributes, ReactNode, useCallback, useEffect } from 'react'\n\n// * Hooks\nimport { createFastContext } from './create-fast-context'\n\nconst { Provider, useStore } = createFastContext<FieldsetContextValue | undefined>(undefined)\n\nexport function FieldsetContextProvider({\n\tchildren,\n\tinitialValue,\n}: {\n\tchildren?: ReactNode\n\tinitialValue?: FieldsetContextValue\n}) {\n\treturn <Provider initialValue={initialValue}>{children}</Provider>\n}\n\nexport function useFieldsetContext(): FieldsetContext {\n\tconst [fieldsetContext, setFieldsetContext] = useStore(store => store),\n\t\t[, formContextFunctions] = useFormContext()\n\n\tconst registerField = useCallback((field: Field) => {\n\t\tsetFieldsetContext?.(prev => {\n\t\t\tif (!prev) return prev\n\n\t\t\tconst existingFieldIndex = prev.fieldList.findIndex(existingField => existingField.id === field.id)\n\n\t\t\tconst newFieldList =\n\t\t\t\texistingFieldIndex >= 0\n\t\t\t\t\t? prev.fieldList.map((existingField, index) => (index === existingFieldIndex ? field : existingField))\n\t\t\t\t\t: [...prev.fieldList, field]\n\n\t\t\treturn { ...prev, fieldList: newFieldList }\n\t\t})\n\t}, [])\n\n\tconst removeField = useCallback((fieldID: string) => {\n\t\tsetFieldsetContext?.(prev => {\n\t\t\tif (!prev) return prev\n\n\t\t\treturn {\n\t\t\t\t...prev,\n\t\t\t\tfieldList: prev.fieldList.filter(field => field.id !== fieldID),\n\t\t\t}\n\t\t})\n\t}, [])\n\n\tconst updateField = useCallback((fieldID: string, updates: Partial<Field>) => {\n\t\tsetFieldsetContext?.(prev => {\n\t\t\tif (!prev) return prev\n\n\t\t\treturn {\n\t\t\t\t...prev,\n\t\t\t\tfieldList: prev.fieldList.map(field => (field.id === fieldID ? ({ ...field, ...updates } as Field) : field)),\n\t\t\t}\n\t\t})\n\t}, [])\n\n\tconst createFormContextEntry = useCallback((fieldsetEntry: FieldsetContextValue): Field => {\n\t\tif (fieldsetEntry.join) {\n\t\t\tconst joinedValue = fieldsetEntry.fieldList\n\t\t\t\t.filter(field => isStringField(field) && (field as Field<StringField>).value !== '')\n\t\t\t\t.map(field => (field as Field<StringField>).value)\n\t\t\t\t.join(fieldsetEntry.join)\n\n\t\t\treturn defineField({\n\t\t\t\ttype: 'string',\n\t\t\t\tid: fieldsetEntry.id,\n\t\t\t\tname: fieldsetEntry.name,\n\t\t\t\tvalue: joinedValue,\n\t\t\t\trequired: fieldsetEntry.fieldList.some(field => (field as Field<StringField>).required),\n\t\t\t\tinvalid: fieldsetEntry.fieldList.some(field => (field as Field<StringField>).invalid),\n\t\t\t})\n\t\t}\n\n\t\treturn defineField({\n\t\t\ttype: 'object',\n\t\t\tid: fieldsetEntry.id,\n\t\t\tname: fieldsetEntry.name,\n\t\t\tfields: fieldsetEntry.fieldList,\n\t\t})\n\t}, [])\n\n\tuseEffect(() => {\n\t\tif (!fieldsetContext || fieldsetContext.decorative) return\n\n\t\tconst formContextEntry = createFormContextEntry(fieldsetContext)\n\n\t\tformContextFunctions.registerField(formContextEntry)\n\n\t\treturn () => {\n\t\t\tformContextFunctions.removeField(fieldsetContext.id)\n\t\t}\n\t}, [fieldsetContext, formContextFunctions.registerField, formContextFunctions.removeField, createFormContextEntry])\n\n\treturn [fieldsetContext, { registerField, removeField, updateField }]\n}\n","// * Types\nimport { ReactNode, Suspense } from 'react'\n\nexport type FormStatus = 'error' | 'incomplete' | 'loading' | 'ready' | 'success' | 'readonly'\n\n// * Hooks\nimport { createFastContext } from './create-fast-context'\n\nconst DEFAULT_STATUS: FormStatus = 'incomplete'\n\nconst { Provider, useStore } = createFastContext<FormStatus>(DEFAULT_STATUS)\n\nexport function FormStatusProvider({\n\tchildren,\n\tinitialStatus = DEFAULT_STATUS,\n}: {\n\tchildren?: ReactNode\n\tinitialStatus?: FormStatus\n}) {\n\treturn (\n\t\t<Suspense>\n\t\t\t<Provider initialValue={initialStatus}>{children}</Provider>\n\t\t</Suspense>\n\t)\n}\n\nexport function useFormStatus() {\n\treturn useStore(store => store)\n}\n","import React, { useCallback, useEffect, useId, useRef, useState } from 'react'\n\nexport type Coords = { x: number; y: number }\n\nexport type Cursor =\n\t| 'alias'\n\t| 'all-scroll'\n\t| 'auto'\n\t| 'cell'\n\t| 'col-resize'\n\t| 'context-menu'\n\t| 'copy'\n\t| 'crosshair'\n\t| 'default'\n\t| 'e-resize'\n\t| 'ew-resize'\n\t| 'grab'\n\t| 'grabbing'\n\t| 'help'\n\t| 'move'\n\t| 'no-drop'\n\t| 'not-allowed'\n\t| 'n-resize'\n\t| 'ne-resize'\n\t| 'nw-resize'\n\t| 'ns-resize'\n\t| 'nesw-resize'\n\t| 'nwse-resize'\n\t| 'pointer'\n\t| 'progress'\n\t| 'row-resize'\n\t| 's-resize'\n\t| 'se-resize'\n\t| 'sw-resize'\n\t| 'text'\n\t| 'vertical-text'\n\t| 'w-resize'\n\t| 'wait'\n\t| 'zoom-in'\n\t| 'zoom-out'\n\nexport type UsePointerMovementProps = {\n\tactiveCursor?: Cursor\n\tonChange?: (delta: Coords) => void\n\tonEnd?: (delta: Coords) => void\n}\n\nexport function usePointerMovement(props?: UsePointerMovementProps) {\n\tconst pointerTypeRef = useRef<'mouse' | 'pointer' | 'touch'>('pointer'),\n\t\t[isTracking, setIsTracking] = useState(false),\n\t\t[delta, setDelta] = useState<Coords>({ x: 0, y: 0 }),\n\t\tstartCoordsRef = useRef<Coords>({ x: 0, y: 0 })\n\n\tconst styleID = useId()\n\n\tconst changeCursor = (cursor: Cursor | false) => {\n\t\tif (cursor === false) {\n\t\t\tdocument.querySelector<HTMLStyleElement>(`#${styleID}`)?.remove()\n\t\t\treturn\n\t\t}\n\n\t\tconst css = `*, *:active { cursor: ${cursor}; -moz-user-select: none; -webkit-user-select: none; -ms-user-select: none; user-select: none; }`\n\n\t\tconst style = document.createElement('style')\n\n\t\tstyle.id = styleID\n\t\tstyle.innerHTML = css\n\n\t\tdocument.body.prepend(style)\n\t}\n\n\tconst trackPointerMovement = (\n\t\te: React.MouseEvent<HTMLElement> | React.PointerEvent<HTMLElement> | React.TouchEvent<HTMLElement>,\n\t) => {\n\t\tchangeCursor(props?.activeCursor || 'grabbing')\n\n\t\tconst { type } = e\n\n\t\tswitch (type) {\n\t\t\tcase 'mousemove':\n\t\t\tcase 'mouseup':\n\t\t\tcase 'pointermove':\n\t\t\tcase 'pointerup':\n\t\t\tcase 'touchmove':\n\t\t\tcase 'touchend':\n\t\t\t\tthrow new Error(\n\t\t\t\t\t'To initiate the tracking of pointer movement, you must use a `mousedown`, `pointerdown`, or `touchstart`.',\n\t\t\t\t)\n\t\t\tcase 'mousedown':\n\t\t\t\tpointerTypeRef.current = 'mouse'\n\t\t\t\tbreak\n\t\t\tcase 'pointerdown':\n\t\t\t\tpointerTypeRef.current = 'pointer'\n\t\t\t\tbreak\n\t\t\tcase 'touchstart':\n\t\t\t\tpointerTypeRef.current = 'touch'\n\t\t\t\tbreak\n\t\t}\n\n\t\tlet x = 0,\n\t\t\ty = 0\n\n\t\tif ('touches' in e) {\n\t\t\tconst { touches } = e\n\n\t\t\tif (touches.length > 1) return\n\n\t\t\tx = touches[0].clientX\n\t\t\ty = touches[0].clientY\n\t\t} else {\n\t\t\tx = e.clientX\n\t\t\ty = e.clientY\n\t\t}\n\n\t\tstartCoordsRef.current = { x, y }\n\t\tsetIsTracking(true)\n\t}\n\n\tconst updateDelta = useCallback((e: MouseEvent | PointerEvent | TouchEvent) => {\n\t\tlet clientX = 0,\n\t\t\tclientY = 0\n\n\t\tif ('touches' in e) {\n\t\t\tconst { touches } = e\n\n\t\t\tif (touches.length > 1) return\n\n\t\t\tclientX = touches[0].clientX\n\t\t\tclientY = touches[0].clientY\n\t\t} else {\n\t\t\tclientX = e.clientX\n\t\t\tclientY = e.clientY\n\t\t}\n\n\t\tconst { x, y } = startCoordsRef.current,\n\t\t\tnewDelta = { x: clientX - x, y: clientY - y }\n\n\t\tsetDelta(newDelta)\n\t\tprops?.onChange?.(newDelta)\n\t}, [])\n\n\tconst stopTracking = useCallback(() => {\n\t\tchangeCursor(false)\n\t\tsetIsTracking(false)\n\t\tprops?.onEnd?.(delta)\n\t}, [delta])\n\n\tuseEffect(() => {\n\t\tif (typeof window === 'undefined') return\n\n\t\tconst controller = new AbortController(),\n\t\t\tsignal = controller.signal\n\n\t\tif (isTracking) {\n\t\t\tswitch (pointerTypeRef.current) {\n\t\t\t\tcase 'mouse':\n\t\t\t\t\tdocument.body.addEventListener('mousemove', updateDelta, { signal })\n\t\t\t\t\tdocument.body.addEventListener('mouseup', stopTracking, { signal })\n\t\t\t\t\tbreak\n\t\t\t\tcase 'pointer':\n\t\t\t\t\tdocument.body.addEventListener('pointermove', updateDelta, { signal })\n\t\t\t\t\tdocument.body.addEventListener('pointerup', stopTracking, { signal })\n\t\t\t\t\tbreak\n\t\t\t\tcase 'touch':\n\t\t\t\t\tdocument.body.addEventListener('touchmove', updateDelta, { signal })\n\t\t\t\t\tdocument.body.addEventListener('touchend', stopTracking, { signal })\n\t\t\t\t\tbreak\n\t\t\t}\n\t\t} else {\n\t\t\tcontroller.abort()\n\t\t}\n\n\t\treturn () => {\n\t\t\tcontroller.abort()\n\t\t}\n\t}, [isTracking, updateDelta, stopTracking])\n\n\treturn { delta, stopTracking, trackPointerMovement }\n}\n"],"names":["useRef","createContext","_jsx","useContext","useSyncExternalStore","Provider","useStore","useCallback","useEffect","Suspense","useState","useId"],"mappings":"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"}
|