@clidey/dory 0.22.0 → 0.24.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (188) hide show
  1. package/bin/dist/dory.d.ts +3 -0
  2. package/bin/dist/dory.d.ts.map +1 -0
  3. package/bin/dist/dory.js +337 -0
  4. package/bin/dist/dory.js.map +1 -0
  5. package/bin/dory.ts +287 -121
  6. package/dist/dory.json +5 -0
  7. package/dist/favicon.svg +1 -1
  8. package/dist/index.html +6 -6
  9. package/dist/introduction.mdx +2 -2
  10. package/dist/llms.txt +2 -2
  11. package/docs/dory.json +5 -0
  12. package/docs/favicon.svg +1 -1
  13. package/docs/introduction.mdx +2 -2
  14. package/package.json +16 -11
  15. package/src/app.css +2 -0
  16. package/src/components/dropdown.tsx +30 -26
  17. package/src/components/loading.tsx +6 -8
  18. package/src/components/navigation.tsx +8 -6
  19. package/src/components/notification.tsx +9 -93
  20. package/src/components/routes.tsx +1 -1
  21. package/src/components/search.tsx +31 -104
  22. package/src/components/store.ts +4 -1
  23. package/src/main.tsx +9 -5
  24. package/src/mdx/accordion.tsx +21 -28
  25. package/src/mdx/api-playground.tsx +68 -83
  26. package/src/mdx/api.tsx +21 -21
  27. package/src/mdx/async-api.tsx +15 -31
  28. package/src/mdx/callout.tsx +27 -43
  29. package/src/mdx/card.tsx +20 -14
  30. package/src/mdx/code.tsx +26 -26
  31. package/src/mdx/expandable.tsx +21 -25
  32. package/src/mdx/fence.tsx +2 -2
  33. package/src/mdx/list.tsx +2 -2
  34. package/src/mdx/open-api.tsx +31 -45
  35. package/src/mdx/table.tsx +8 -3
  36. package/src/mdx/tag.tsx +27 -40
  37. package/src/mdx/text.tsx +3 -2
  38. package/src/mdx/websocket-playground.tsx +150 -81
  39. package/src/theme.scss +50 -106
  40. package/src/types/config.ts +47 -0
  41. package/src/ui/header.tsx +12 -9
  42. package/src/ui/layout.tsx +5 -4
  43. package/src/ui/mobile-navigation.tsx +36 -63
  44. package/src/ui/table-of-content.tsx +3 -3
  45. package/src/utils/colors.ts +54 -0
  46. package/src/utils/fonts.ts +4 -1
  47. package/tsconfig.app.json +2 -1
  48. package/tsconfig.bin.json +11 -7
  49. package/tsconfig.node.json +2 -1
  50. package/vite.config.ts +2 -0
  51. package/dist/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2 +0 -0
  52. package/dist/assets/KaTeX_AMS-Regular-DMm9YOAa.woff +0 -0
  53. package/dist/assets/KaTeX_AMS-Regular-DRggAlZN.ttf +0 -0
  54. package/dist/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf +0 -0
  55. package/dist/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff +0 -0
  56. package/dist/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2 +0 -0
  57. package/dist/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff +0 -0
  58. package/dist/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2 +0 -0
  59. package/dist/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf +0 -0
  60. package/dist/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf +0 -0
  61. package/dist/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff +0 -0
  62. package/dist/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2 +0 -0
  63. package/dist/assets/KaTeX_Fraktur-Regular-CB_wures.ttf +0 -0
  64. package/dist/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2 +0 -0
  65. package/dist/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff +0 -0
  66. package/dist/assets/KaTeX_Main-Bold-Cx986IdX.woff2 +0 -0
  67. package/dist/assets/KaTeX_Main-Bold-Jm3AIy58.woff +0 -0
  68. package/dist/assets/KaTeX_Main-Bold-waoOVXN0.ttf +0 -0
  69. package/dist/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2 +0 -0
  70. package/dist/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf +0 -0
  71. package/dist/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff +0 -0
  72. package/dist/assets/KaTeX_Main-Italic-3WenGoN9.ttf +0 -0
  73. package/dist/assets/KaTeX_Main-Italic-BMLOBm91.woff +0 -0
  74. package/dist/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2 +0 -0
  75. package/dist/assets/KaTeX_Main-Regular-B22Nviop.woff2 +0 -0
  76. package/dist/assets/KaTeX_Main-Regular-Dr94JaBh.woff +0 -0
  77. package/dist/assets/KaTeX_Main-Regular-ypZvNtVU.ttf +0 -0
  78. package/dist/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf +0 -0
  79. package/dist/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2 +0 -0
  80. package/dist/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff +0 -0
  81. package/dist/assets/KaTeX_Math-Italic-DA0__PXp.woff +0 -0
  82. package/dist/assets/KaTeX_Math-Italic-flOr_0UB.ttf +0 -0
  83. package/dist/assets/KaTeX_Math-Italic-t53AETM-.woff2 +0 -0
  84. package/dist/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf +0 -0
  85. package/dist/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2 +0 -0
  86. package/dist/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff +0 -0
  87. package/dist/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2 +0 -0
  88. package/dist/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff +0 -0
  89. package/dist/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf +0 -0
  90. package/dist/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf +0 -0
  91. package/dist/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff +0 -0
  92. package/dist/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2 +0 -0
  93. package/dist/assets/KaTeX_Script-Regular-C5JkGWo-.ttf +0 -0
  94. package/dist/assets/KaTeX_Script-Regular-D3wIWfF6.woff2 +0 -0
  95. package/dist/assets/KaTeX_Script-Regular-D5yQViql.woff +0 -0
  96. package/dist/assets/KaTeX_Size1-Regular-C195tn64.woff +0 -0
  97. package/dist/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf +0 -0
  98. package/dist/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2 +0 -0
  99. package/dist/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf +0 -0
  100. package/dist/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2 +0 -0
  101. package/dist/assets/KaTeX_Size2-Regular-oD1tc_U0.woff +0 -0
  102. package/dist/assets/KaTeX_Size3-Regular-CTq5MqoE.woff +0 -0
  103. package/dist/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf +0 -0
  104. package/dist/assets/KaTeX_Size4-Regular-BF-4gkZK.woff +0 -0
  105. package/dist/assets/KaTeX_Size4-Regular-DWFBv043.ttf +0 -0
  106. package/dist/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2 +0 -0
  107. package/dist/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff +0 -0
  108. package/dist/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2 +0 -0
  109. package/dist/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf +0 -0
  110. package/dist/assets/__vite-browser-external-BIHI7g3E.js +0 -1
  111. package/dist/assets/_basePickBy-CsnA5_xx.js +0 -1
  112. package/dist/assets/_baseUniq-COwFna6s.js +0 -1
  113. package/dist/assets/api-playground-demo-Ct5XK2u1.js +0 -45
  114. package/dist/assets/api-playground-demo-vBae5R-d.js +0 -119
  115. package/dist/assets/arc-Dy4kITED.js +0 -1
  116. package/dist/assets/architectureDiagram-IEHRJDOE-BiaWQpzt.js +0 -36
  117. package/dist/assets/blockDiagram-JOT3LUYC-7LfUOsM7.js +0 -121
  118. package/dist/assets/c4Diagram-VJAJSXHY-Ca-3deDF.js +0 -10
  119. package/dist/assets/channel-j6jMzwSu.js +0 -1
  120. package/dist/assets/chunk-4BMEZGHF-Cln31Q_z.js +0 -1
  121. package/dist/assets/chunk-A2AXSNBT-Cj4U7K4I.js +0 -164
  122. package/dist/assets/chunk-AEK57VVT-1kn9120k.js +0 -220
  123. package/dist/assets/chunk-D6G4REZN-DMgQaOLS.js +0 -1
  124. package/dist/assets/chunk-RZ5BOZE2-DDd-DrSb.js +0 -1
  125. package/dist/assets/chunk-XZIHB7SX-sVdgMrEr.js +0 -1
  126. package/dist/assets/classDiagram-GIVACNV2-B9ObtIrc.js +0 -1
  127. package/dist/assets/classDiagram-v2-COTLJTTW-B9ObtIrc.js +0 -1
  128. package/dist/assets/clone-UOttdbrS.js +0 -1
  129. package/dist/assets/create-D-Wjvs-T.js +0 -6
  130. package/dist/assets/create-DpzlgYHc.js +0 -4
  131. package/dist/assets/cytoscape.esm-BY7v1xhs.js +0 -331
  132. package/dist/assets/dagre-OKDRZEBW-C4q12sCc.js +0 -4
  133. package/dist/assets/delete-DwAmDeAN.js +0 -4
  134. package/dist/assets/delete-cbziNMWs.js +0 -5
  135. package/dist/assets/diagram-SSKATNLV-BxNC6sGs.js +0 -43
  136. package/dist/assets/diagram-VNBRO52H-CukGDk3b.js +0 -24
  137. package/dist/assets/dory.jpeg +0 -0
  138. package/dist/assets/erDiagram-Q7BY3M3F-TiiVq0dv.js +0 -60
  139. package/dist/assets/favicon-Z67lNtJu.svg +0 -75
  140. package/dist/assets/features-6EEoDloV.js +0 -269
  141. package/dist/assets/features-EZwrzTnN.js +0 -441
  142. package/dist/assets/flowDiagram-4HSFHLVR-DykkGbol.js +0 -161
  143. package/dist/assets/ganttDiagram-APWFNJXF-Bqp95-S3.js +0 -257
  144. package/dist/assets/get-BeAg4Qrr.js +0 -5
  145. package/dist/assets/get-Dj1eDs2i.js +0 -4
  146. package/dist/assets/gitGraphDiagram-7IBYFJ6S-BiYVs9VI.js +0 -65
  147. package/dist/assets/graph-LkKKMaDZ.js +0 -1
  148. package/dist/assets/index-CGd7uPvh.css +0 -1
  149. package/dist/assets/index-vOROtq-e.js +0 -9596
  150. package/dist/assets/infoDiagram-PH2N3AL5-EA7h3wZa.js +0 -2
  151. package/dist/assets/init-Gi6I4Gst.js +0 -1
  152. package/dist/assets/introduction-CzXlzjWa.js +0 -38
  153. package/dist/assets/introduction-ylYJcPz3.js +0 -45
  154. package/dist/assets/journeyDiagram-U35MCT3I-BZiVuCZu.js +0 -138
  155. package/dist/assets/kanban-definition-NDS4AKOZ-SCdQ8OjR.js +0 -88
  156. package/dist/assets/layout-C9-9-M2q.js +0 -1
  157. package/dist/assets/linear-CTbdhYd1.js +0 -1
  158. package/dist/assets/mermaid.core-DUFqLK_I.js +0 -213
  159. package/dist/assets/mindmap-definition-ALO5MXBD-BPbKEbjk.js +0 -95
  160. package/dist/assets/ordinal-Cboi1Yqb.js +0 -1
  161. package/dist/assets/pieDiagram-IB7DONF6-DPg1sNm8.js +0 -30
  162. package/dist/assets/quadrantDiagram-7GDLP6J5-DmtJM50d.js +0 -7
  163. package/dist/assets/radar-MK3ICKWK-DnO5LA4B.js +0 -128
  164. package/dist/assets/receive-chat-message-B2jsY1P6.js +0 -4
  165. package/dist/assets/receive-chat-message-BeaC4eqS.js +0 -5
  166. package/dist/assets/receive-notifications-BouRLPFj.js +0 -4
  167. package/dist/assets/receive-notifications-DYnXRRBz.js +0 -5
  168. package/dist/assets/receive-presence-update-CRgeSUpk.js +0 -5
  169. package/dist/assets/receive-presence-update-UEm47KAG.js +0 -4
  170. package/dist/assets/requirementDiagram-KVF5MWMF-iNwUJLq2.js +0 -64
  171. package/dist/assets/sankeyDiagram-QLVOVGJD-DWLyAD59.js +0 -10
  172. package/dist/assets/send-chat-message-Bvf2XJiv.js +0 -5
  173. package/dist/assets/send-chat-message-FDmVETeD.js +0 -4
  174. package/dist/assets/send-presence-update-26clGQ0z.js +0 -5
  175. package/dist/assets/send-presence-update-DeywSKYu.js +0 -4
  176. package/dist/assets/sequenceDiagram-X6HHIX6F-HyRN2_g-.js +0 -122
  177. package/dist/assets/stateDiagram-DGXRK772-DdMr0V93.js +0 -1
  178. package/dist/assets/stateDiagram-v2-YXO3MK2T-D6kpXRiR.js +0 -1
  179. package/dist/assets/timeline-definition-BDJGKUSR-CDf8nWgC.js +0 -61
  180. package/dist/assets/update-BEeNDeXY.js +0 -4
  181. package/dist/assets/update-CykJMYvN.js +0 -5
  182. package/dist/assets/websocket-playground-demo-4pj7mj19.js +0 -135
  183. package/dist/assets/websocket-playground-demo-F71LN60e.js +0 -61
  184. package/dist/assets/xychartDiagram-VJFVF3MP-BY_uTq9r.js +0 -7
  185. package/docs/assets/dory.jpeg +0 -0
  186. package/src/components/dark-mode-toggle.tsx +0 -25
  187. package/src/index.css +0 -24
  188. package/src/utils/hooks.ts +0 -46
package/src/ui/header.tsx CHANGED
@@ -3,10 +3,13 @@ import { useEffect, useMemo, useState } from 'preact/hooks';
3
3
  import { Link } from 'wouter-preact';
4
4
  import { usePathname } from 'wouter-preact/use-browser-location';
5
5
  import docsConfig from '../../docs/dory.json';
6
- import { DarkModeToggle } from '../components/dark-mode-toggle';
6
+ import type { DoryConfig } from '../types/config';
7
7
  import { MobileSearch, Search } from '../components/search';
8
8
  import { ALL_NAVIGATION } from '../components/store';
9
9
  import { MobileNavigation } from './mobile-navigation';
10
+ import { ModeToggle } from '@clidey/ux';
11
+
12
+ const config = docsConfig as DoryConfig;
10
13
 
11
14
  function TopLevelNavItem({ href, children, isActive }: { href: string; children: string; isActive?: boolean }) {
12
15
  return (
@@ -14,10 +17,10 @@ function TopLevelNavItem({ href, children, isActive }: { href: string; children:
14
17
  <Link
15
18
  to={href}
16
19
  className={classNames(
17
- "text-sm/5 transition",
18
- isActive
19
- ? "text-sky-500"
20
- : "text-zinc-600 hover:text-zinc-900 dark:text-zinc-400 dark:hover:text-white"
20
+ "text-xs transition hover:opacity-80",
21
+ {
22
+ "text-brand-foreground": isActive,
23
+ },
21
24
  )}
22
25
  >
23
26
  {children}
@@ -31,7 +34,7 @@ export function Header({ className }: { className?: string }) {
31
34
  const pathname = usePathname();
32
35
 
33
36
  const { light, dark } = useMemo(() => {
34
- return { light: docsConfig.logo.light, dark: docsConfig.logo.dark };
37
+ return { light: config.logo.light, dark: config.logo.dark };
35
38
  }, []);
36
39
 
37
40
  useEffect(() => {
@@ -60,7 +63,7 @@ export function Header({ className }: { className?: string }) {
60
63
  <div className="flex items-center grow gap-2">
61
64
  <img src={`/${light}`} alt="logo" className="w-8 hidden dark:block" />
62
65
  <img src={`/${dark}`} alt="logo" className="w-8 block dark:hidden" />
63
- <h1 className="text-base lg:text-2xl font-bold">{docsConfig.name}</h1>
66
+ <h1 className="text-base lg:text-2xl font-bold">{config.name}</h1>
64
67
  </div>
65
68
  <nav className="hidden md:block">
66
69
  <ul role="list" className="flex items-center gap-8">
@@ -76,10 +79,10 @@ export function Header({ className }: { className?: string }) {
76
79
  </ul>
77
80
  </nav>
78
81
  <div className="hidden md:block md:h-5 md:w-px md:bg-zinc-900/10 md:dark:bg-white/15" />
79
- <div className="flex items-center gap-3">
82
+ <div className="flex items-center gap-3" data-testid="header-actions">
80
83
  <MobileSearch />
81
84
  <Search />
82
- <DarkModeToggle />
85
+ <ModeToggle data-testid="mode-toggle" />
83
86
  <MobileNavigation />
84
87
  </div>
85
88
  </div>
package/src/ui/layout.tsx CHANGED
@@ -11,6 +11,7 @@ import { TableOfContents } from './table-of-content';
11
11
  import { Loading } from '../components/loading';
12
12
  import Dropdown from '../components/dropdown';
13
13
  import { useNotification } from '../components/notification';
14
+ import { SparkleIcon } from 'lucide-react';
14
15
 
15
16
  interface LayoutProps {
16
17
  children: ComponentChildren;
@@ -144,16 +145,16 @@ export default function Layout({ children }: LayoutProps) {
144
145
  return (
145
146
  <div className="flex w-full flex-col">
146
147
  <Header />
147
- <div id="container" className="relative mx-auto flex w-full max-w-8xl flex-auto justify-center sm:px-2 lg:px-8 xl:px-32">
148
+ <div id="container" className="relative flex w-full max-w-8xl sm:px-2 lg:px-8">
148
149
  <div className="hidden lg:relative lg:block lg:flex-none">
149
150
  <div className="sticky top-[4.75rem] -ml-0.5 h-[calc(100vh-4.75rem)] w-64 overflow-x-hidden overflow-y-auto py-16 pr-8 pl-0.5 xl:w-72 xl:pr-16">
150
151
  <Navigation />
151
152
  </div>
152
153
  </div>
153
154
  <main className="flex px-4 py-16 sm:px-6 lg:px-8 grow">
154
- <div className="max-w-[calc(100vw-16px)] xl:max-w-[70vw] min-w-0 px-4 lg:pr-0 lg:pl-8 xl:px-16 w-full">
155
+ <div className="min-w-0 w-full">
155
156
  <article className="h-full flex flex-1 flex-col">
156
- <div className="flex justify-between items-center">
157
+ <div className="flex justify-between items-start">
157
158
  <header className="mb-8">
158
159
  {title && (
159
160
  <h1 className="font-display text-lg tracking-tight">
@@ -168,7 +169,7 @@ export default function Layout({ children }: LayoutProps) {
168
169
  </header>
169
170
  {
170
171
  openAPIJSON == null && asyncAPIJSON == null &&
171
- <Dropdown className='min-w-[120px]' buttonLabel="AI Actions" items={dropdownItems} />
172
+ <Dropdown className="gap-0" buttonLabel={<SparkleIcon className="w-4 h-4" />} items={dropdownItems} />
172
173
  }
173
174
  </div>
174
175
  <div className="flex-1 min-h-[calc(100vh-2rem)]">
@@ -1,91 +1,64 @@
1
1
  'use client'
2
2
 
3
- import {
4
- Dialog,
5
- DialogBackdrop,
6
- DialogPanel,
7
- TransitionChild,
8
- } from '@headlessui/react'
9
- import { motion } from 'motion/react'
10
- import { createContext, Suspense, useContext, useState } from 'react'
3
+ import { Sheet, SheetContent, Button } from '@clidey/ux'
4
+ import { createContext, Suspense, useCallback, useContext, useRef, useState } from 'react'
11
5
 
12
6
  import { Bars3Icon, XMarkIcon } from '@heroicons/react/24/outline'
13
7
  import { Navigation } from '../components/navigation'
14
8
 
15
9
  const IsInsideMobileNavigationContext = createContext(false)
16
10
 
17
- function MobileNavigationDialog({
18
- isOpen,
19
- close,
20
- }: {
21
- isOpen: boolean
22
- close: () => void
23
- }) {
24
- return (
25
- <Dialog
26
- transition
27
- open={isOpen}
28
- onClose={close}
29
- className="fixed inset-0 z-50 lg:hidden"
30
- >
31
- <DialogBackdrop
32
- transition
33
- className="fixed inset-0 top-0 pt-8 bg-zinc-400/20 backdrop-blur-xs data-closed:opacity-0 data-enter:duration-300 data-enter:ease-out data-leave:duration-200 data-leave:ease-in dark:bg-black/40"
34
- />
35
-
36
- <DialogPanel>
37
- <TransitionChild>
38
- <motion.div
39
- layoutScroll
40
- className="fixed top-0 bottom-0 left-0 w-full overflow-y-auto bg-white px-4 pt-8 pb-4 shadow-lg ring-1 shadow-zinc-900/10 ring-zinc-900/7.5 duration-500 ease-in-out data-closed:-translate-x-full min-[416px]:max-w-sm sm:px-6 sm:pb-10 dark:bg-zinc-900 dark:ring-zinc-800 flex flex-col justify-between"
41
- >
42
- <Navigation />
43
- <div class="flex flex-col justify-end items-end mb-4 mr-2" onClick={close}>
44
- <XMarkIcon className="w-8 stroke-zinc-900 dark:stroke-white" />
45
- </div>
46
- </motion.div>
47
- </TransitionChild>
48
- </DialogPanel>
49
- </Dialog>
50
- )
51
- }
52
-
53
11
  export function useIsInsideMobileNavigation() {
54
12
  return useContext(IsInsideMobileNavigationContext)
55
13
  }
56
14
 
57
15
  export function useMobileNavigation() {
58
16
  const [isOpen, setIsOpen] = useState(false)
59
-
17
+ const isOpenRef = useRef(isOpen)
18
+ isOpenRef.current = isOpen
19
+
20
+ const open = useCallback(() => setIsOpen(true), [])
21
+ const close = useCallback(() => setIsOpen(false), [])
22
+ const toggle = useCallback(() => setIsOpen(prev => !prev), [])
23
+
60
24
  return {
61
25
  isOpen,
62
- open: () => setIsOpen(true),
63
- close: () => setIsOpen(false),
64
- toggle: () => setIsOpen(prev => !prev)
26
+ isOpenRef,
27
+ open,
28
+ close,
29
+ toggle,
65
30
  }
66
31
  }
67
32
 
68
33
  export function MobileNavigation() {
69
34
  const isInsideMobileNavigation = useIsInsideMobileNavigation()
70
- const { isOpen, toggle, close } = useMobileNavigation()
35
+ const { isOpen, open, close } = useMobileNavigation()
71
36
  const ToggleIcon = isOpen ? XMarkIcon : Bars3Icon;
72
37
 
73
38
  return (
74
39
  <IsInsideMobileNavigationContext.Provider value={true}>
75
- <button
76
- type="button"
77
- className="relative flex size-6 items-center justify-center rounded-md transition hover:bg-zinc-900/5 dark:hover:bg-white/5 lg:hidden"
78
- aria-label="Toggle navigation"
79
- onClick={toggle}
80
- >
81
- <span className="absolute size-12 [@media(pointer:fine)]:hidden" />
82
- <ToggleIcon className="w-8 stroke-zinc-900 dark:stroke-white" />
83
- </button>
84
- {!isInsideMobileNavigation && (
85
- <Suspense fallback={null}>
86
- <MobileNavigationDialog isOpen={isOpen} close={close} />
87
- </Suspense>
88
- )}
40
+ <Sheet open={isOpen} onOpenChange={(status) => {
41
+ if (!status) {
42
+ close();
43
+ }
44
+ }}>
45
+ <Button
46
+ variant="outline"
47
+ size="icon"
48
+ className="relative flex size-6 lg:hidden p-4"
49
+ aria-label="Toggle navigation"
50
+ onClick={open}
51
+ >
52
+ <ToggleIcon className="w-8 stroke-zinc-900 dark:stroke-white" />
53
+ </Button>
54
+ {!isInsideMobileNavigation && (
55
+ <Suspense fallback={null}>
56
+ <SheetContent side="left" className="w-full sm:max-w-sm p-8 overflow-y-auto flex flex-col justify-between">
57
+ <Navigation />
58
+ </SheetContent>
59
+ </Suspense>
60
+ )}
61
+ </Sheet>
89
62
  </IsInsideMobileNavigationContext.Provider>
90
63
  )
91
64
  }
@@ -114,7 +114,7 @@ export function TableOfContents() {
114
114
  }
115
115
 
116
116
  return (
117
- <div className="hidden xl:sticky xl:top-[4.75rem] xl:-mr-6 xl:block xl:h-[calc(100vh-4.75rem)] xl:flex-none xl:overflow-y-auto xl:py-16 xl:pr-6">
117
+ <div className="hidden xl:sticky xl:top-[4.75rem] xl:-mr-6 xl:block xl:h-[calc(100vh-4.75rem)] xl:flex-none xl:overflow-y-auto xl:py-16 xl:pr-6 pl-4">
118
118
  <nav aria-labelledby="on-this-page-title" className="w-56">
119
119
  {sections.length > 0 && (
120
120
  <>
@@ -131,7 +131,7 @@ export function TableOfContents() {
131
131
  <a
132
132
  href={`#${section.id}`}
133
133
  className={classNames({
134
- "text-sky-500": isActive(section),
134
+ "text-brand-foreground": isActive(section),
135
135
  "font-normal text-slate-500 hover:text-slate-700 dark:text-slate-400 dark:hover:text-slate-300": !isActive(section),
136
136
  })}>
137
137
  {section.title}
@@ -145,7 +145,7 @@ export function TableOfContents() {
145
145
  href={`#${subSection.id}`}
146
146
  className={
147
147
  isActive(subSection)
148
- ? 'text-sky-500'
148
+ ? 'text-brand-foreground'
149
149
  : 'hover:text-slate-600 dark:hover:text-slate-300'
150
150
  }
151
151
  >
@@ -0,0 +1,54 @@
1
+ import docsConfig from '../../docs/dory.json';
2
+ import type { DoryConfig } from '../types/config';
3
+
4
+ const config = docsConfig as DoryConfig;
5
+
6
+ /**
7
+ * Converts hex color to RGB values for CSS variable usage
8
+ */
9
+ function hexToRgb(hex: string): string {
10
+ // Remove # if present
11
+ const cleanHex = hex.replace('#', '');
12
+
13
+ // Parse hex values
14
+ const r = parseInt(cleanHex.substring(0, 2), 16);
15
+ const g = parseInt(cleanHex.substring(2, 4), 16);
16
+ const b = parseInt(cleanHex.substring(4, 6), 16);
17
+
18
+ return `${r} ${g} ${b}`;
19
+ }
20
+
21
+ /**
22
+ * Load and apply brand colors from dory.json configuration
23
+ * Sets CSS variables for use throughout the application
24
+ */
25
+ export function loadColors() {
26
+ const { colors } = config;
27
+ if (!colors) return;
28
+
29
+ // Set CSS variables on the root element for both light and dark modes
30
+ const root = document.documentElement;
31
+
32
+ // Set primary color (used in both light and dark mode)
33
+ if (colors.primary) {
34
+ root.style.setProperty('--brand-primary', colors.primary);
35
+ root.style.setProperty('--brand-primary-rgb', hexToRgb(colors.primary));
36
+ }
37
+
38
+ // Set light mode brand color
39
+ if (colors.light) {
40
+ root.style.setProperty('--brand-light', colors.light);
41
+ root.style.setProperty('--brand-light-rgb', hexToRgb(colors.light));
42
+ }
43
+
44
+ // Set dark mode brand color
45
+ if (colors.dark) {
46
+ root.style.setProperty('--brand-dark', colors.dark);
47
+ root.style.setProperty('--brand-dark-rgb', hexToRgb(colors.dark));
48
+ }
49
+
50
+ // Set the legacy variable for backward compatibility
51
+ if (colors.primary) {
52
+ root.style.setProperty('--brand-foreground', colors.primary);
53
+ }
54
+ }
@@ -1,7 +1,10 @@
1
1
  import docsConfig from '../../docs/dory.json';
2
+ import type { DoryConfig } from '../types/config';
3
+
4
+ const config = docsConfig as DoryConfig;
2
5
 
3
6
  export function loadFonts() {
4
- const { fonts } = docsConfig;
7
+ const { fonts } = config;
5
8
  if (!fonts) return;
6
9
 
7
10
  // Create a style element for the font face
package/tsconfig.app.json CHANGED
@@ -28,5 +28,6 @@
28
28
  "noFallthroughCasesInSwitch": true,
29
29
  "noUncheckedSideEffectImports": true
30
30
  },
31
- "include": ["src"]
31
+ "include": ["src"],
32
+ "exclude": ["src/plugins"]
32
33
  }
package/tsconfig.bin.json CHANGED
@@ -4,17 +4,21 @@
4
4
  "lib": ["ES2023"],
5
5
  "module": "ESNext",
6
6
  "moduleResolution": "node",
7
- "allowImportingTsExtensions": true,
8
7
  "skipLibCheck": true,
9
- "strict": false,
8
+ "strict": true,
10
9
  "esModuleInterop": true,
11
10
  "allowSyntheticDefaultImports": true,
12
- "noEmit": true,
13
- "noImplicitAny": false,
14
- "noImplicitReturns": false,
15
- "noImplicitThis": false
11
+ "noEmit": false,
12
+ "outDir": "./bin/dist",
13
+ "rootDir": "./bin",
14
+ "declaration": true,
15
+ "declarationMap": true,
16
+ "sourceMap": true
16
17
  },
17
18
  "include": [
18
- "bin/dory.ts"
19
+ "bin/**/*.ts"
20
+ ],
21
+ "exclude": [
22
+ "bin/dist"
19
23
  ]
20
24
  }
@@ -5,6 +5,7 @@
5
5
  "lib": ["ES2023"],
6
6
  "module": "ESNext",
7
7
  "skipLibCheck": true,
8
+ "types": ["node"],
8
9
 
9
10
  /* Bundler mode */
10
11
  "moduleResolution": "bundler",
@@ -21,5 +22,5 @@
21
22
  "noFallthroughCasesInSwitch": true,
22
23
  "noUncheckedSideEffectImports": true
23
24
  },
24
- "include": ["vite.config.ts"]
25
+ "include": ["vite.config.ts", "src/plugins/**/*.ts", "bin/**/*.ts"]
25
26
  }
package/vite.config.ts CHANGED
@@ -30,5 +30,7 @@ export default defineConfig(({ command }) => ({
30
30
  publicDir: "docs",
31
31
  server: {
32
32
  allowedHosts: true,
33
+ port: 3000,
34
+ strictPort: false,
33
35
  },
34
36
  }));
@@ -1 +0,0 @@
1
- const e={};export{e as default};
@@ -1 +0,0 @@
1
- import{e as v,c as O,g as m,k as b,h as P,j as p,l as w,m as N,n as x,t as c,o as A}from"./_baseUniq-COwFna6s.js";import{aJ as g,aq as M,aK as E,aL as F,aM as _,aN as I,aO as $,aP as y,aQ as B,aR as T}from"./mermaid.core-DUFqLK_I.js";var L=/\s/;function R(n){for(var r=n.length;r--&&L.test(n.charAt(r)););return r}var S=/^\s+/;function q(n){return n&&n.slice(0,R(n)+1).replace(S,"")}var o=NaN,G=/^[-+]0x[0-9a-f]+$/i,H=/^0b[01]+$/i,K=/^0o[0-7]+$/i,z=parseInt;function C(n){if(typeof n=="number")return n;if(v(n))return o;if(g(n)){var r=typeof n.valueOf=="function"?n.valueOf():n;n=g(r)?r+"":r}if(typeof n!="string")return n===0?n:+n;n=q(n);var t=H.test(n);return t||K.test(n)?z(n.slice(2),t?2:8):G.test(n)?o:+n}var J=1/0,Q=17976931348623157e292;function W(n){if(!n)return n===0?n:0;if(n=C(n),n===J||n===-1/0){var r=n<0?-1:1;return r*Q}return n===n?n:0}function X(n){var r=W(n),t=r%1;return r===r?t?r-t:r:0}function fn(n){var r=n==null?0:n.length;return r?O(n):[]}var l=Object.prototype,Y=l.hasOwnProperty,dn=M(function(n,r){n=Object(n);var t=-1,e=r.length,a=e>2?r[2]:void 0;for(a&&E(r[0],r[1],a)&&(e=1);++t<e;)for(var f=r[t],i=F(f),s=-1,d=i.length;++s<d;){var u=i[s],h=n[u];(h===void 0||_(h,l[u])&&!Y.call(n,u))&&(n[u]=f[u])}return n});function un(n){var r=n==null?0:n.length;return r?n[r-1]:void 0}function D(n){return function(r,t,e){var a=Object(r);if(!I(r)){var f=m(t);r=b(r),t=function(s){return f(a[s],s,a)}}var i=n(r,t,e);return i>-1?a[f?r[i]:i]:void 0}}var U=Math.max;function Z(n,r,t){var e=n==null?0:n.length;if(!e)return-1;var a=t==null?0:X(t);return a<0&&(a=U(e+a,0)),P(n,m(r),a)}var hn=D(Z);function V(n,r){var t=-1,e=I(n)?Array(n.length):[];return p(n,function(a,f,i){e[++t]=r(a,f,i)}),e}function gn(n,r){var t=$(n)?w:V;return t(n,m(r))}var j=Object.prototype,k=j.hasOwnProperty;function nn(n,r){return n!=null&&k.call(n,r)}function mn(n,r){return n!=null&&N(n,r,nn)}function rn(n,r){return n<r}function tn(n,r,t){for(var e=-1,a=n.length;++e<a;){var f=n[e],i=r(f);if(i!=null&&(s===void 0?i===i&&!v(i):t(i,s)))var s=i,d=f}return d}function on(n){return n&&n.length?tn(n,y,rn):void 0}function an(n,r,t,e){if(!g(n))return n;r=x(r,n);for(var a=-1,f=r.length,i=f-1,s=n;s!=null&&++a<f;){var d=c(r[a]),u=t;if(d==="__proto__"||d==="constructor"||d==="prototype")return n;if(a!=i){var h=s[d];u=void 0,u===void 0&&(u=g(h)?h:B(r[a+1])?[]:{})}T(s,d,u),s=s[d]}return n}function vn(n,r,t){for(var e=-1,a=r.length,f={};++e<a;){var i=r[e],s=A(n,i);t(s,i)&&an(f,x(i,n),s)}return f}export{rn as a,tn as b,V as c,vn as d,on as e,fn as f,hn as g,mn as h,dn as i,X as j,un as l,gn as m,W as t};
@@ -1 +0,0 @@
1
- import{b9 as S,ba as Rn,aO as T,bb as w,bc as xn,bd as Mn,aN as sn,be as mn,bf as un,bg as x,aL as N,bh as Cn,bi as on,bj as Fn,bk as E,b7 as gn,bl as R,aJ as ln,bm as Dn,bn as D,bo as Gn,bp as Nn,bq as _,aR as Un,br as Bn,aM as Kn,bs as J,bt as jn,bu as Hn,aQ as qn,aP as cn,b5 as Yn,bv as m}from"./mermaid.core-DUFqLK_I.js";var Zn="[object Symbol]";function U(n){return typeof n=="symbol"||S(n)&&Rn(n)==Zn}function bn(n,r){for(var e=-1,t=n==null?0:n.length,f=Array(t);++e<t;)f[e]=r(n[e],e,n);return f}var Q=w?w.prototype:void 0,X=Q?Q.toString:void 0;function dn(n){if(typeof n=="string")return n;if(T(n))return bn(n,dn)+"";if(U(n))return X?X.call(n):"";var r=n+"";return r=="0"&&1/n==-1/0?"-0":r}function Jn(){}function pn(n,r){for(var e=-1,t=n==null?0:n.length;++e<t&&r(n[e],e,n)!==!1;);return n}function Qn(n,r,e,t){for(var f=n.length,i=e+-1;++i<f;)if(r(n[i],i,n))return i;return-1}function Xn(n){return n!==n}function Wn(n,r,e){for(var t=e-1,f=n.length;++t<f;)if(n[t]===r)return t;return-1}function zn(n,r,e){return r===r?Wn(n,r,e):Qn(n,Xn,e)}function Vn(n,r){var e=n==null?0:n.length;return!!e&&zn(n,r,0)>-1}function $(n){return sn(n)?xn(n):Mn(n)}var kn=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,nr=/^\w*$/;function B(n,r){if(T(n))return!1;var e=typeof n;return e=="number"||e=="symbol"||e=="boolean"||n==null||U(n)?!0:nr.test(n)||!kn.test(n)||r!=null&&n in Object(r)}var rr=500;function er(n){var r=mn(n,function(t){return e.size===rr&&e.clear(),t}),e=r.cache;return r}var tr=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,ir=/\\(\\)?/g,fr=er(function(n){var r=[];return n.charCodeAt(0)===46&&r.push(""),n.replace(tr,function(e,t,f,i){r.push(f?i.replace(ir,"$1"):t||e)}),r});function ar(n){return n==null?"":dn(n)}function An(n,r){return T(n)?n:B(n,r)?[n]:fr(ar(n))}function M(n){if(typeof n=="string"||U(n))return n;var r=n+"";return r=="0"&&1/n==-1/0?"-0":r}function yn(n,r){r=An(r,n);for(var e=0,t=r.length;n!=null&&e<t;)n=n[M(r[e++])];return e&&e==t?n:void 0}function sr(n,r,e){var t=n==null?void 0:yn(n,r);return t===void 0?e:t}function K(n,r){for(var e=-1,t=r.length,f=n.length;++e<t;)n[f+e]=r[e];return n}var W=w?w.isConcatSpreadable:void 0;function ur(n){return T(n)||un(n)||!!(W&&n&&n[W])}function Ot(n,r,e,t,f){var i=-1,a=n.length;for(e||(e=ur),f||(f=[]);++i<a;){var s=n[i];e(s)?K(f,s):t||(f[f.length]=s)}return f}function or(n,r,e,t){var f=-1,i=n==null?0:n.length;for(t&&i&&(e=n[++f]);++f<i;)e=r(e,n[f],f,n);return e}function gr(n,r){return n&&x(r,$(r),n)}function lr(n,r){return n&&x(r,N(r),n)}function Tn(n,r){for(var e=-1,t=n==null?0:n.length,f=0,i=[];++e<t;){var a=n[e];r(a,e,n)&&(i[f++]=a)}return i}function hn(){return[]}var cr=Object.prototype,br=cr.propertyIsEnumerable,z=Object.getOwnPropertySymbols,j=z?function(n){return n==null?[]:(n=Object(n),Tn(z(n),function(r){return br.call(n,r)}))}:hn;function dr(n,r){return x(n,j(n),r)}var pr=Object.getOwnPropertySymbols,wn=pr?function(n){for(var r=[];n;)K(r,j(n)),n=Cn(n);return r}:hn;function Ar(n,r){return x(n,wn(n),r)}function On(n,r,e){var t=r(n);return T(n)?t:K(t,e(n))}function G(n){return On(n,$,j)}function yr(n){return On(n,N,wn)}var Tr=Object.prototype,hr=Tr.hasOwnProperty;function wr(n){var r=n.length,e=new n.constructor(r);return r&&typeof n[0]=="string"&&hr.call(n,"index")&&(e.index=n.index,e.input=n.input),e}function Or(n,r){var e=r?on(n.buffer):n.buffer;return new n.constructor(e,n.byteOffset,n.byteLength)}var $r=/\w*$/;function _r(n){var r=new n.constructor(n.source,$r.exec(n));return r.lastIndex=n.lastIndex,r}var V=w?w.prototype:void 0,k=V?V.valueOf:void 0;function Sr(n){return k?Object(k.call(n)):{}}var Er="[object Boolean]",Pr="[object Date]",Ir="[object Map]",vr="[object Number]",Lr="[object RegExp]",Rr="[object Set]",xr="[object String]",Mr="[object Symbol]",mr="[object ArrayBuffer]",Cr="[object DataView]",Fr="[object Float32Array]",Dr="[object Float64Array]",Gr="[object Int8Array]",Nr="[object Int16Array]",Ur="[object Int32Array]",Br="[object Uint8Array]",Kr="[object Uint8ClampedArray]",jr="[object Uint16Array]",Hr="[object Uint32Array]";function qr(n,r,e){var t=n.constructor;switch(r){case mr:return on(n);case Er:case Pr:return new t(+n);case Cr:return Or(n,e);case Fr:case Dr:case Gr:case Nr:case Ur:case Br:case Kr:case jr:case Hr:return Fn(n,e);case Ir:return new t;case vr:case xr:return new t(n);case Lr:return _r(n);case Rr:return new t;case Mr:return Sr(n)}}var Yr="[object Map]";function Zr(n){return S(n)&&E(n)==Yr}var nn=R&&R.isMap,Jr=nn?gn(nn):Zr,Qr="[object Set]";function Xr(n){return S(n)&&E(n)==Qr}var rn=R&&R.isSet,Wr=rn?gn(rn):Xr,zr=1,Vr=2,kr=4,$n="[object Arguments]",ne="[object Array]",re="[object Boolean]",ee="[object Date]",te="[object Error]",_n="[object Function]",ie="[object GeneratorFunction]",fe="[object Map]",ae="[object Number]",Sn="[object Object]",se="[object RegExp]",ue="[object Set]",oe="[object String]",ge="[object Symbol]",le="[object WeakMap]",ce="[object ArrayBuffer]",be="[object DataView]",de="[object Float32Array]",pe="[object Float64Array]",Ae="[object Int8Array]",ye="[object Int16Array]",Te="[object Int32Array]",he="[object Uint8Array]",we="[object Uint8ClampedArray]",Oe="[object Uint16Array]",$e="[object Uint32Array]",g={};g[$n]=g[ne]=g[ce]=g[be]=g[re]=g[ee]=g[de]=g[pe]=g[Ae]=g[ye]=g[Te]=g[fe]=g[ae]=g[Sn]=g[se]=g[ue]=g[oe]=g[ge]=g[he]=g[we]=g[Oe]=g[$e]=!0;g[te]=g[_n]=g[le]=!1;function C(n,r,e,t,f,i){var a,s=r&zr,u=r&Vr,b=r&kr;if(a!==void 0)return a;if(!ln(n))return n;var l=T(n);if(l){if(a=wr(n),!s)return Dn(n,a)}else{var o=E(n),c=o==_n||o==ie;if(D(n))return Gn(n,s);if(o==Sn||o==$n||c&&!f){if(a=u||c?{}:Nn(n),!s)return u?Ar(n,lr(a,n)):dr(n,gr(a,n))}else{if(!g[o])return f?n:{};a=qr(n,o,s)}}i||(i=new _);var h=i.get(n);if(h)return h;i.set(n,a),Wr(n)?n.forEach(function(d){a.add(C(d,r,e,d,n,i))}):Jr(n)&&n.forEach(function(d,p){a.set(p,C(d,r,e,p,n,i))});var A=b?u?yr:G:u?N:$,y=l?void 0:A(n);return pn(y||n,function(d,p){y&&(p=d,d=n[p]),Un(a,p,C(d,r,e,p,n,i))}),a}var _e="__lodash_hash_undefined__";function Se(n){return this.__data__.set(n,_e),this}function Ee(n){return this.__data__.has(n)}function P(n){var r=-1,e=n==null?0:n.length;for(this.__data__=new Bn;++r<e;)this.add(n[r])}P.prototype.add=P.prototype.push=Se;P.prototype.has=Ee;function Pe(n,r){for(var e=-1,t=n==null?0:n.length;++e<t;)if(r(n[e],e,n))return!0;return!1}function En(n,r){return n.has(r)}var Ie=1,ve=2;function Pn(n,r,e,t,f,i){var a=e&Ie,s=n.length,u=r.length;if(s!=u&&!(a&&u>s))return!1;var b=i.get(n),l=i.get(r);if(b&&l)return b==r&&l==n;var o=-1,c=!0,h=e&ve?new P:void 0;for(i.set(n,r),i.set(r,n);++o<s;){var A=n[o],y=r[o];if(t)var d=a?t(y,A,o,r,n,i):t(A,y,o,n,r,i);if(d!==void 0){if(d)continue;c=!1;break}if(h){if(!Pe(r,function(p,O){if(!En(h,O)&&(A===p||f(A,p,e,t,i)))return h.push(O)})){c=!1;break}}else if(!(A===y||f(A,y,e,t,i))){c=!1;break}}return i.delete(n),i.delete(r),c}function Le(n){var r=-1,e=Array(n.size);return n.forEach(function(t,f){e[++r]=[f,t]}),e}function H(n){var r=-1,e=Array(n.size);return n.forEach(function(t){e[++r]=t}),e}var Re=1,xe=2,Me="[object Boolean]",me="[object Date]",Ce="[object Error]",Fe="[object Map]",De="[object Number]",Ge="[object RegExp]",Ne="[object Set]",Ue="[object String]",Be="[object Symbol]",Ke="[object ArrayBuffer]",je="[object DataView]",en=w?w.prototype:void 0,F=en?en.valueOf:void 0;function He(n,r,e,t,f,i,a){switch(e){case je:if(n.byteLength!=r.byteLength||n.byteOffset!=r.byteOffset)return!1;n=n.buffer,r=r.buffer;case Ke:return!(n.byteLength!=r.byteLength||!i(new J(n),new J(r)));case Me:case me:case De:return Kn(+n,+r);case Ce:return n.name==r.name&&n.message==r.message;case Ge:case Ue:return n==r+"";case Fe:var s=Le;case Ne:var u=t&Re;if(s||(s=H),n.size!=r.size&&!u)return!1;var b=a.get(n);if(b)return b==r;t|=xe,a.set(n,r);var l=Pn(s(n),s(r),t,f,i,a);return a.delete(n),l;case Be:if(F)return F.call(n)==F.call(r)}return!1}var qe=1,Ye=Object.prototype,Ze=Ye.hasOwnProperty;function Je(n,r,e,t,f,i){var a=e&qe,s=G(n),u=s.length,b=G(r),l=b.length;if(u!=l&&!a)return!1;for(var o=u;o--;){var c=s[o];if(!(a?c in r:Ze.call(r,c)))return!1}var h=i.get(n),A=i.get(r);if(h&&A)return h==r&&A==n;var y=!0;i.set(n,r),i.set(r,n);for(var d=a;++o<u;){c=s[o];var p=n[c],O=r[c];if(t)var Z=a?t(O,p,c,r,n,i):t(p,O,c,n,r,i);if(!(Z===void 0?p===O||f(p,O,e,t,i):Z)){y=!1;break}d||(d=c=="constructor")}if(y&&!d){var I=n.constructor,v=r.constructor;I!=v&&"constructor"in n&&"constructor"in r&&!(typeof I=="function"&&I instanceof I&&typeof v=="function"&&v instanceof v)&&(y=!1)}return i.delete(n),i.delete(r),y}var Qe=1,tn="[object Arguments]",fn="[object Array]",L="[object Object]",Xe=Object.prototype,an=Xe.hasOwnProperty;function We(n,r,e,t,f,i){var a=T(n),s=T(r),u=a?fn:E(n),b=s?fn:E(r);u=u==tn?L:u,b=b==tn?L:b;var l=u==L,o=b==L,c=u==b;if(c&&D(n)){if(!D(r))return!1;a=!0,l=!1}if(c&&!l)return i||(i=new _),a||jn(n)?Pn(n,r,e,t,f,i):He(n,r,u,e,t,f,i);if(!(e&Qe)){var h=l&&an.call(n,"__wrapped__"),A=o&&an.call(r,"__wrapped__");if(h||A){var y=h?n.value():n,d=A?r.value():r;return i||(i=new _),f(y,d,e,t,i)}}return c?(i||(i=new _),Je(n,r,e,t,f,i)):!1}function q(n,r,e,t,f){return n===r?!0:n==null||r==null||!S(n)&&!S(r)?n!==n&&r!==r:We(n,r,e,t,q,f)}var ze=1,Ve=2;function ke(n,r,e,t){var f=e.length,i=f;if(n==null)return!i;for(n=Object(n);f--;){var a=e[f];if(a[2]?a[1]!==n[a[0]]:!(a[0]in n))return!1}for(;++f<i;){a=e[f];var s=a[0],u=n[s],b=a[1];if(a[2]){if(u===void 0&&!(s in n))return!1}else{var l=new _,o;if(!(o===void 0?q(b,u,ze|Ve,t,l):o))return!1}}return!0}function In(n){return n===n&&!ln(n)}function nt(n){for(var r=$(n),e=r.length;e--;){var t=r[e],f=n[t];r[e]=[t,f,In(f)]}return r}function vn(n,r){return function(e){return e==null?!1:e[n]===r&&(r!==void 0||n in Object(e))}}function rt(n){var r=nt(n);return r.length==1&&r[0][2]?vn(r[0][0],r[0][1]):function(e){return e===n||ke(e,n,r)}}function et(n,r){return n!=null&&r in Object(n)}function tt(n,r,e){r=An(r,n);for(var t=-1,f=r.length,i=!1;++t<f;){var a=M(r[t]);if(!(i=n!=null&&e(n,a)))break;n=n[a]}return i||++t!=f?i:(f=n==null?0:n.length,!!f&&Hn(f)&&qn(a,f)&&(T(n)||un(n)))}function it(n,r){return n!=null&&tt(n,r,et)}var ft=1,at=2;function st(n,r){return B(n)&&In(r)?vn(M(n),r):function(e){var t=sr(e,n);return t===void 0&&t===r?it(e,n):q(r,t,ft|at)}}function ut(n){return function(r){return r==null?void 0:r[n]}}function ot(n){return function(r){return yn(r,n)}}function gt(n){return B(n)?ut(M(n)):ot(n)}function Ln(n){return typeof n=="function"?n:n==null?cn:typeof n=="object"?T(n)?st(n[0],n[1]):rt(n):gt(n)}function lt(n,r){return n&&Yn(n,r,$)}function ct(n,r){return function(e,t){if(e==null)return e;if(!sn(e))return n(e,t);for(var f=e.length,i=-1,a=Object(e);++i<f&&t(a[i],i,a)!==!1;);return e}}var Y=ct(lt);function bt(n){return typeof n=="function"?n:cn}function $t(n,r){var e=T(n)?pn:Y;return e(n,bt(r))}function dt(n,r){var e=[];return Y(n,function(t,f,i){r(t,f,i)&&e.push(t)}),e}function _t(n,r){var e=T(n)?Tn:dt;return e(n,Ln(r))}function pt(n,r){return bn(r,function(e){return n[e]})}function St(n){return n==null?[]:pt(n,$(n))}function Et(n){return n===void 0}function At(n,r,e,t,f){return f(n,function(i,a,s){e=t?(t=!1,i):r(e,i,a,s)}),e}function Pt(n,r,e){var t=T(n)?or:At,f=arguments.length<3;return t(n,Ln(r),e,f,Y)}var yt=1/0,Tt=m&&1/H(new m([,-0]))[1]==yt?function(n){return new m(n)}:Jn,ht=200;function It(n,r,e){var t=-1,f=Vn,i=n.length,a=!0,s=[],u=s;if(i>=ht){var b=r?null:Tt(n);if(b)return H(b);a=!1,f=En,u=new P}else u=r?[]:s;n:for(;++t<i;){var l=n[t],o=r?r(l):l;if(l=l!==0?l:0,a&&o===o){for(var c=u.length;c--;)if(u[c]===o)continue n;r&&u.push(o),s.push(l)}else f(u,o,e)||(u!==s&&u.push(o),s.push(l))}return s}export{Tn as A,dt as B,Pe as C,Jn as D,P as S,It as a,C as b,Ot as c,$t as d,U as e,_t as f,Ln as g,Qn as h,Et as i,Y as j,$ as k,bn as l,tt as m,An as n,yn as o,bt as p,lt as q,Pt as r,it as s,M as t,ar as u,St as v,Vn as w,En as x,zn as y,yr as z};