polen 0.10.0-next.11 → 0.10.0-next.13

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 (340) hide show
  1. package/build/api/builder/builder.js +1 -1
  2. package/build/api/builder/builder.js.map +1 -1
  3. package/build/api/config/load.js +1 -1
  4. package/build/api/config/load.js.map +1 -1
  5. package/build/api/vite/plugins/build.js +1 -1
  6. package/build/api/vite/plugins/build.js.map +1 -1
  7. package/build/api/vite/plugins/core.d.ts.map +1 -1
  8. package/build/api/vite/plugins/core.js +0 -2
  9. package/build/api/vite/plugins/core.js.map +1 -1
  10. package/build/api/vite/plugins/pages.js +1 -1
  11. package/build/api/vite/plugins/pages.js.map +1 -1
  12. package/build/exports/components.d.ts +4 -1
  13. package/build/exports/components.d.ts.map +1 -1
  14. package/build/exports/components.js +4 -1
  15. package/build/exports/components.js.map +1 -1
  16. package/build/lib/demos/config-schema.d.ts +6 -6
  17. package/build/lib/github-actions/runner.js +2 -2
  18. package/build/lib/github-actions/runner.js.map +1 -1
  19. package/build/lib/graphql-document/$$.d.ts +5 -0
  20. package/build/lib/graphql-document/$$.d.ts.map +1 -0
  21. package/build/lib/graphql-document/$$.js +5 -0
  22. package/build/lib/graphql-document/$$.js.map +1 -0
  23. package/build/lib/graphql-document/$.d.ts +2 -0
  24. package/build/lib/graphql-document/$.d.ts.map +1 -0
  25. package/build/lib/graphql-document/$.js +2 -0
  26. package/build/lib/graphql-document/$.js.map +1 -0
  27. package/build/lib/graphql-document/analysis.d.ts +44 -0
  28. package/build/lib/graphql-document/analysis.d.ts.map +1 -0
  29. package/build/lib/graphql-document/analysis.js +361 -0
  30. package/build/lib/graphql-document/analysis.js.map +1 -0
  31. package/build/lib/graphql-document/components/CopyButton.d.ts +19 -0
  32. package/build/lib/graphql-document/components/CopyButton.d.ts.map +1 -0
  33. package/build/lib/graphql-document/components/CopyButton.js +43 -0
  34. package/build/lib/graphql-document/components/CopyButton.js.map +1 -0
  35. package/build/lib/graphql-document/components/GraphQLDocument.d.ts +38 -0
  36. package/build/lib/graphql-document/components/GraphQLDocument.d.ts.map +1 -0
  37. package/build/lib/graphql-document/components/GraphQLDocument.js +130 -0
  38. package/build/lib/graphql-document/components/GraphQLDocument.js.map +1 -0
  39. package/build/lib/graphql-document/components/GraphQLDocumentWithSchema.d.ts +7 -0
  40. package/build/lib/graphql-document/components/GraphQLDocumentWithSchema.d.ts.map +1 -0
  41. package/build/lib/graphql-document/components/GraphQLDocumentWithSchema.js +45 -0
  42. package/build/lib/graphql-document/components/GraphQLDocumentWithSchema.js.map +1 -0
  43. package/build/lib/graphql-document/components/GraphQLIdentifierPopover.d.ts +33 -0
  44. package/build/lib/graphql-document/components/GraphQLIdentifierPopover.d.ts.map +1 -0
  45. package/build/lib/graphql-document/components/GraphQLIdentifierPopover.js +48 -0
  46. package/build/lib/graphql-document/components/GraphQLIdentifierPopover.js.map +1 -0
  47. package/build/lib/graphql-document/components/IdentifierLink.d.ts +39 -0
  48. package/build/lib/graphql-document/components/IdentifierLink.d.ts.map +1 -0
  49. package/build/lib/graphql-document/components/IdentifierLink.js +75 -0
  50. package/build/lib/graphql-document/components/IdentifierLink.js.map +1 -0
  51. package/build/lib/graphql-document/components/graphql-document-styles.d.ts +5 -0
  52. package/build/lib/graphql-document/components/graphql-document-styles.d.ts.map +1 -0
  53. package/build/lib/graphql-document/components/graphql-document-styles.js +167 -0
  54. package/build/lib/graphql-document/components/graphql-document-styles.js.map +1 -0
  55. package/build/lib/graphql-document/components/index.d.ts +6 -0
  56. package/build/lib/graphql-document/components/index.d.ts.map +1 -0
  57. package/build/lib/graphql-document/components/index.js +6 -0
  58. package/build/lib/graphql-document/components/index.js.map +1 -0
  59. package/build/lib/graphql-document/example.d.ts +25 -0
  60. package/build/lib/graphql-document/example.d.ts.map +1 -0
  61. package/build/lib/graphql-document/example.js +140 -0
  62. package/build/lib/graphql-document/example.js.map +1 -0
  63. package/build/lib/graphql-document/graphql-document.d.ts +35 -0
  64. package/build/lib/graphql-document/graphql-document.d.ts.map +1 -0
  65. package/build/lib/graphql-document/graphql-document.js +36 -0
  66. package/build/lib/graphql-document/graphql-document.js.map +1 -0
  67. package/build/lib/graphql-document/hooks/use-tooltip-state.d.ts +43 -0
  68. package/build/lib/graphql-document/hooks/use-tooltip-state.d.ts.map +1 -0
  69. package/build/lib/graphql-document/hooks/use-tooltip-state.js +132 -0
  70. package/build/lib/graphql-document/hooks/use-tooltip-state.js.map +1 -0
  71. package/build/lib/graphql-document/positioning-simple.d.ts +68 -0
  72. package/build/lib/graphql-document/positioning-simple.d.ts.map +1 -0
  73. package/build/lib/graphql-document/positioning-simple.js +197 -0
  74. package/build/lib/graphql-document/positioning-simple.js.map +1 -0
  75. package/build/lib/graphql-document/schema-context.d.ts +8 -0
  76. package/build/lib/graphql-document/schema-context.d.ts.map +1 -0
  77. package/build/lib/graphql-document/schema-context.js +11 -0
  78. package/build/lib/graphql-document/schema-context.js.map +1 -0
  79. package/build/lib/graphql-document/schema-integration-example.d.ts +27 -0
  80. package/build/lib/graphql-document/schema-integration-example.d.ts.map +1 -0
  81. package/build/lib/graphql-document/schema-integration-example.js +297 -0
  82. package/build/lib/graphql-document/schema-integration-example.js.map +1 -0
  83. package/build/lib/graphql-document/schema-integration.d.ts +135 -0
  84. package/build/lib/graphql-document/schema-integration.d.ts.map +1 -0
  85. package/build/lib/graphql-document/schema-integration.js +328 -0
  86. package/build/lib/graphql-document/schema-integration.js.map +1 -0
  87. package/build/lib/graphql-document/types.d.ts +117 -0
  88. package/build/lib/graphql-document/types.d.ts.map +1 -0
  89. package/build/lib/graphql-document/types.js +2 -0
  90. package/build/lib/graphql-document/types.js.map +1 -0
  91. package/build/template/components/ArgumentAnnotation.js +10 -0
  92. package/build/template/components/ArgumentAnnotation.js.map +1 -0
  93. package/build/template/components/ArgumentList.js +9 -0
  94. package/build/template/components/ArgumentList.js.map +1 -0
  95. package/build/template/components/ArgumentListAnnotation.js +15 -0
  96. package/build/template/components/ArgumentListAnnotation.js.map +1 -0
  97. package/build/template/components/Changelog.js +44 -0
  98. package/build/template/components/Changelog.js.map +1 -0
  99. package/build/template/components/{CodeBlock.jsx → CodeBlock.js} +4 -5
  100. package/build/template/components/{CodeBlock.jsx.map → CodeBlock.js.map} +1 -1
  101. package/build/template/components/{CodeBlockEnhancer.jsx → CodeBlockEnhancer.js} +4 -4
  102. package/build/template/components/CodeBlockEnhancer.js.map +1 -0
  103. package/build/template/components/DeprecationReason.js +9 -0
  104. package/build/template/components/DeprecationReason.js.map +1 -0
  105. package/build/template/components/Description.js +9 -0
  106. package/build/template/components/Description.js.map +1 -0
  107. package/build/template/components/Field.js +14 -0
  108. package/build/template/components/Field.js.map +1 -0
  109. package/build/template/components/{FieldList.jsx → FieldList.js} +4 -5
  110. package/build/template/components/FieldList.js.map +1 -0
  111. package/build/template/components/{FieldListSection.jsx → FieldListSection.js} +4 -6
  112. package/build/template/components/FieldListSection.js.map +1 -0
  113. package/build/template/components/HamburgerMenu.js +30 -0
  114. package/build/template/components/HamburgerMenu.js.map +1 -0
  115. package/build/template/components/Link.d.ts +1 -1
  116. package/build/template/components/{Link.jsx → Link.js} +4 -5
  117. package/build/template/components/Link.js.map +1 -0
  118. package/build/template/components/Logo.js +20 -0
  119. package/build/template/components/Logo.js.map +1 -0
  120. package/build/template/components/MDXComponents.d.ts +11 -0
  121. package/build/template/components/MDXComponents.d.ts.map +1 -0
  122. package/build/template/components/MDXComponents.js +70 -0
  123. package/build/template/components/MDXComponents.js.map +1 -0
  124. package/build/template/components/{Markdown.jsx → Markdown.js} +3 -2
  125. package/build/template/components/Markdown.js.map +1 -0
  126. package/build/template/components/MissingSchema.d.ts +1 -1
  127. package/build/template/components/MissingSchema.d.ts.map +1 -1
  128. package/build/template/components/MissingSchema.js +5 -0
  129. package/build/template/components/MissingSchema.js.map +1 -0
  130. package/build/template/components/NamedType.js +12 -0
  131. package/build/template/components/NamedType.js.map +1 -0
  132. package/build/template/components/NotFound.js +7 -0
  133. package/build/template/components/NotFound.js.map +1 -0
  134. package/build/template/components/{RadixLink.jsx → RadixLink.js} +1 -1
  135. package/build/template/components/RadixLink.js.map +1 -0
  136. package/build/template/components/TestComponent.d.ts +5 -0
  137. package/build/template/components/TestComponent.d.ts.map +1 -0
  138. package/build/template/components/TestComponent.js +7 -0
  139. package/build/template/components/TestComponent.js.map +1 -0
  140. package/build/template/components/Texts/{MinorHeading.jsx → MinorHeading.js} +4 -3
  141. package/build/template/components/Texts/MinorHeading.js.map +1 -0
  142. package/build/template/components/Texts/texts.js +1 -1
  143. package/build/template/components/Texts/texts.js.map +1 -1
  144. package/build/template/components/ThemeToggle.js +9 -0
  145. package/build/template/components/ThemeToggle.js.map +1 -0
  146. package/build/template/components/{TypeAnnotation.jsx → TypeAnnotation.js} +8 -18
  147. package/build/template/components/TypeAnnotation.js.map +1 -0
  148. package/build/template/components/TypeFieldsLinkList.js +9 -0
  149. package/build/template/components/TypeFieldsLinkList.js.map +1 -0
  150. package/build/template/components/TypeIndex.js +17 -0
  151. package/build/template/components/TypeIndex.js.map +1 -0
  152. package/build/template/components/content/$$.d.ts +1 -0
  153. package/build/template/components/content/$$.d.ts.map +1 -1
  154. package/build/template/components/content/$$.js +1 -0
  155. package/build/template/components/content/$$.js.map +1 -1
  156. package/build/template/components/content/GraphQLDocumentWithSchema.d.ts +8 -0
  157. package/build/template/components/content/GraphQLDocumentWithSchema.d.ts.map +1 -0
  158. package/build/template/components/content/GraphQLDocumentWithSchema.js +16 -0
  159. package/build/template/components/content/GraphQLDocumentWithSchema.js.map +1 -0
  160. package/build/template/components/content/GraphQLDocumentWrapper.d.ts +7 -0
  161. package/build/template/components/content/GraphQLDocumentWrapper.d.ts.map +1 -0
  162. package/build/template/components/content/GraphQLDocumentWrapper.js +62 -0
  163. package/build/template/components/content/GraphQLDocumentWrapper.js.map +1 -0
  164. package/build/template/components/graphql/graphql.d.ts +2 -2
  165. package/build/template/components/graphql/graphql.js +3 -0
  166. package/build/template/components/graphql/graphql.js.map +1 -0
  167. package/build/template/components/graphql/index.d.ts +1 -1
  168. package/build/template/components/graphql/index.js +1 -1
  169. package/build/template/components/graphql/index.js.map +1 -1
  170. package/build/template/components/graphql/{type-kind-icon.jsx → type-kind-icon.js} +3 -2
  171. package/build/template/components/graphql/type-kind-icon.js.map +1 -0
  172. package/build/template/components/graphql/type-link.js +11 -0
  173. package/build/template/components/graphql/type-link.js.map +1 -0
  174. package/build/template/components/sidebar/Sidebar.d.ts +1 -1
  175. package/build/template/components/sidebar/Sidebar.d.ts.map +1 -1
  176. package/build/template/components/sidebar/Sidebar.js +11 -0
  177. package/build/template/components/sidebar/Sidebar.js.map +1 -0
  178. package/build/template/components/sidebar/{SidebarItem.jsx → SidebarItem.js} +15 -32
  179. package/build/template/components/sidebar/SidebarItem.js.map +1 -0
  180. package/build/template/components/sidebar/ToggleButton.d.ts +1 -1
  181. package/build/template/components/sidebar/ToggleButton.d.ts.map +1 -1
  182. package/build/template/components/sidebar/ToggleButton.js +5 -0
  183. package/build/template/components/sidebar/ToggleButton.js.map +1 -0
  184. package/build/template/contexts/{ThemeContext.jsx → ThemeContext.js} +3 -4
  185. package/build/template/contexts/{ThemeContext.jsx.map → ThemeContext.js.map} +1 -1
  186. package/build/template/entry.client.d.ts +1 -0
  187. package/build/template/entry.client.d.ts.map +1 -1
  188. package/build/template/{entry.client.jsx → entry.client.js} +5 -6
  189. package/build/template/entry.client.js.map +1 -0
  190. package/build/template/routes/changelog.d.ts +1 -1
  191. package/build/template/routes/{changelog.jsx → changelog.js} +5 -4
  192. package/build/template/routes/changelog.js.map +1 -0
  193. package/build/template/routes/{index.jsx → index.js} +3 -2
  194. package/build/template/routes/index.js.map +1 -0
  195. package/build/template/routes/reference.$type.$field.d.ts +1 -1
  196. package/build/template/routes/{reference.$type.$field.jsx → reference.$type.$field.js} +6 -5
  197. package/build/template/routes/reference.$type.$field.js.map +1 -0
  198. package/build/template/routes/reference.$type.d.ts +1 -1
  199. package/build/template/routes/{reference.$type.jsx → reference.$type.js} +6 -5
  200. package/build/template/routes/reference.$type.js.map +1 -0
  201. package/build/template/routes/reference.d.ts +2 -2
  202. package/build/template/routes/{reference.jsx → reference.js} +6 -7
  203. package/build/template/routes/reference.js.map +1 -0
  204. package/build/template/routes/root.d.ts +2 -2
  205. package/build/template/routes/root.d.ts.map +1 -1
  206. package/build/template/routes/{root.jsx → root.js} +46 -88
  207. package/build/template/routes/root.js.map +1 -0
  208. package/build/template/routes.js +5 -0
  209. package/build/template/routes.js.map +1 -0
  210. package/build/template/server/app.js +1 -1
  211. package/build/template/server/app.js.map +1 -1
  212. package/build/template/server/{render-page.jsx → render-page.js} +3 -4
  213. package/build/template/server/render-page.js.map +1 -0
  214. package/build/template/server/ssg/generate.js +1 -1
  215. package/build/template/server/ssg/generate.js.map +1 -1
  216. package/build/template/server/ssg/get-route-paths.js +1 -1
  217. package/build/template/server/ssg/get-route-paths.js.map +1 -1
  218. package/build/template/server/view.js +1 -1
  219. package/build/template/server/view.js.map +1 -1
  220. package/package.json +57 -8
  221. package/src/api/vite/plugins/core.ts +0 -3
  222. package/src/api/vite/plugins/pages.ts +1 -1
  223. package/src/exports/components.ts +4 -1
  224. package/src/lib/graphql-document/$$.ts +4 -0
  225. package/src/lib/graphql-document/$.test.ts +132 -0
  226. package/src/lib/graphql-document/$.ts +1 -0
  227. package/src/lib/graphql-document/README.md +102 -0
  228. package/src/lib/graphql-document/analysis.ts +415 -0
  229. package/src/lib/graphql-document/components/CopyButton.tsx +76 -0
  230. package/src/lib/graphql-document/components/GraphQLDocument.tsx +250 -0
  231. package/src/lib/graphql-document/components/GraphQLDocument.unit.test.ts +188 -0
  232. package/src/lib/graphql-document/components/GraphQLDocumentWithSchema.tsx +70 -0
  233. package/src/lib/graphql-document/components/GraphQLIdentifierPopover.tsx +197 -0
  234. package/src/lib/graphql-document/components/IdentifierLink.tsx +160 -0
  235. package/src/lib/graphql-document/components/graphql-document-styles.ts +167 -0
  236. package/src/lib/graphql-document/components/index.ts +5 -0
  237. package/src/lib/graphql-document/demo.md +155 -0
  238. package/src/lib/graphql-document/example.ts +163 -0
  239. package/src/lib/graphql-document/graphql-document.ts +37 -0
  240. package/src/lib/graphql-document/hooks/use-tooltip-state.test.ts +76 -0
  241. package/src/lib/graphql-document/hooks/use-tooltip-state.ts +191 -0
  242. package/src/lib/graphql-document/positioning-simple.test.ts +252 -0
  243. package/src/lib/graphql-document/positioning-simple.ts +271 -0
  244. package/src/lib/graphql-document/schema-context.tsx +20 -0
  245. package/src/lib/graphql-document/schema-integration-example.ts +341 -0
  246. package/src/lib/graphql-document/schema-integration.test.ts +365 -0
  247. package/src/lib/graphql-document/schema-integration.ts +497 -0
  248. package/src/lib/graphql-document/types.ts +129 -0
  249. package/src/template/components/ArgumentAnnotation.tsx +1 -1
  250. package/src/template/components/ArgumentList.tsx +1 -1
  251. package/src/template/components/ArgumentListAnnotation.tsx +2 -2
  252. package/src/template/components/CodeBlockEnhancer.tsx +21 -21
  253. package/src/template/components/DeprecationReason.tsx +1 -1
  254. package/src/template/components/Description.tsx +1 -1
  255. package/src/template/components/Field.tsx +4 -4
  256. package/src/template/components/FieldList.tsx +1 -1
  257. package/src/template/components/FieldListSection.tsx +1 -1
  258. package/src/template/components/Link.tsx +2 -2
  259. package/src/template/components/MDXComponents.tsx +101 -0
  260. package/src/template/components/NamedType.tsx +2 -2
  261. package/src/template/components/TestComponent.tsx +6 -0
  262. package/src/template/components/TypeAnnotation.tsx +1 -1
  263. package/src/template/components/TypeFieldsLinkList.tsx +1 -1
  264. package/src/template/components/TypeIndex.tsx +1 -1
  265. package/src/template/components/content/$$.ts +1 -0
  266. package/src/template/components/content/GraphQLDocumentWithSchema.tsx +18 -0
  267. package/src/template/components/content/GraphQLDocumentWrapper.tsx +82 -0
  268. package/src/template/components/graphql/graphql.tsx +2 -2
  269. package/src/template/components/graphql/index.ts +1 -1
  270. package/src/template/components/graphql/type-link.tsx +2 -2
  271. package/src/template/entry.client.tsx +2 -2
  272. package/src/template/routes/changelog.tsx +1 -1
  273. package/src/template/routes/reference.$type.$field.tsx +3 -3
  274. package/src/template/routes/reference.$type.tsx +3 -3
  275. package/src/template/routes/reference.tsx +3 -3
  276. package/src/template/routes/root.tsx +36 -25
  277. package/src/template/routes.tsx +1 -1
  278. package/src/template/server/app.ts +1 -1
  279. package/src/template/server/ssg/generate.ts +1 -1
  280. package/src/template/server/ssg/get-route-paths.ts +1 -1
  281. package/src/template/server/view.ts +1 -1
  282. package/src/template/styles/code-block.css +32 -0
  283. package/build/template/components/ArgumentAnnotation.jsx +0 -16
  284. package/build/template/components/ArgumentAnnotation.jsx.map +0 -1
  285. package/build/template/components/ArgumentList.jsx +0 -16
  286. package/build/template/components/ArgumentList.jsx.map +0 -1
  287. package/build/template/components/ArgumentListAnnotation.jsx +0 -23
  288. package/build/template/components/ArgumentListAnnotation.jsx.map +0 -1
  289. package/build/template/components/Changelog.jsx +0 -68
  290. package/build/template/components/Changelog.jsx.map +0 -1
  291. package/build/template/components/CodeBlockEnhancer.jsx.map +0 -1
  292. package/build/template/components/DeprecationReason.jsx +0 -10
  293. package/build/template/components/DeprecationReason.jsx.map +0 -1
  294. package/build/template/components/Description.jsx +0 -10
  295. package/build/template/components/Description.jsx.map +0 -1
  296. package/build/template/components/Field.jsx +0 -22
  297. package/build/template/components/Field.jsx.map +0 -1
  298. package/build/template/components/FieldList.jsx.map +0 -1
  299. package/build/template/components/FieldListSection.jsx.map +0 -1
  300. package/build/template/components/HamburgerMenu.jsx +0 -53
  301. package/build/template/components/HamburgerMenu.jsx.map +0 -1
  302. package/build/template/components/Link.jsx.map +0 -1
  303. package/build/template/components/Logo.jsx +0 -29
  304. package/build/template/components/Logo.jsx.map +0 -1
  305. package/build/template/components/Markdown.jsx.map +0 -1
  306. package/build/template/components/MissingSchema.jsx +0 -4
  307. package/build/template/components/MissingSchema.jsx.map +0 -1
  308. package/build/template/components/NamedType.jsx +0 -17
  309. package/build/template/components/NamedType.jsx.map +0 -1
  310. package/build/template/components/NotFound.jsx +0 -26
  311. package/build/template/components/NotFound.jsx.map +0 -1
  312. package/build/template/components/RadixLink.jsx.map +0 -1
  313. package/build/template/components/Texts/MinorHeading.jsx.map +0 -1
  314. package/build/template/components/ThemeToggle.jsx +0 -10
  315. package/build/template/components/ThemeToggle.jsx.map +0 -1
  316. package/build/template/components/TypeAnnotation.jsx.map +0 -1
  317. package/build/template/components/TypeFieldsLinkList.jsx +0 -17
  318. package/build/template/components/TypeFieldsLinkList.jsx.map +0 -1
  319. package/build/template/components/TypeIndex.jsx +0 -27
  320. package/build/template/components/TypeIndex.jsx.map +0 -1
  321. package/build/template/components/graphql/graphql.jsx +0 -3
  322. package/build/template/components/graphql/graphql.jsx.map +0 -1
  323. package/build/template/components/graphql/type-kind-icon.jsx.map +0 -1
  324. package/build/template/components/graphql/type-link.jsx +0 -16
  325. package/build/template/components/graphql/type-link.jsx.map +0 -1
  326. package/build/template/components/sidebar/Sidebar.jsx +0 -15
  327. package/build/template/components/sidebar/Sidebar.jsx.map +0 -1
  328. package/build/template/components/sidebar/SidebarItem.jsx.map +0 -1
  329. package/build/template/components/sidebar/ToggleButton.jsx +0 -6
  330. package/build/template/components/sidebar/ToggleButton.jsx.map +0 -1
  331. package/build/template/entry.client.jsx.map +0 -1
  332. package/build/template/routes/changelog.jsx.map +0 -1
  333. package/build/template/routes/index.jsx.map +0 -1
  334. package/build/template/routes/reference.$type.$field.jsx.map +0 -1
  335. package/build/template/routes/reference.$type.jsx.map +0 -1
  336. package/build/template/routes/reference.jsx.map +0 -1
  337. package/build/template/routes/root.jsx.map +0 -1
  338. package/build/template/routes.jsx +0 -5
  339. package/build/template/routes.jsx.map +0 -1
  340. package/build/template/server/render-page.jsx.map +0 -1
@@ -0,0 +1,140 @@
1
+ /**
2
+ * Example usage of the GraphQL Document Analysis library
3
+ *
4
+ * This demonstrates how to use the foundational layer for extracting
5
+ * identifiers and context from GraphQL documents - the building block
6
+ * for the interactive GraphQL Document Component.
7
+ */
8
+ import { GraphQLDocument } from "./$.js";
9
+ // Example GraphQL query with various constructs
10
+ const exampleQuery = `
11
+ query GetPokemonWithAbilities($id: ID!, $limit: Int = 10) {
12
+ pokemon(id: $id) {
13
+ name
14
+ abilities(first: $limit) {
15
+ name
16
+ isHidden
17
+ pokemon {
18
+ name
19
+ }
20
+ }
21
+ ... on ElectricPokemon {
22
+ voltage
23
+ }
24
+ }
25
+ }
26
+
27
+ fragment PokemonBasics on Pokemon {
28
+ name
29
+ type
30
+ level
31
+ }
32
+ `;
33
+ /**
34
+ * Demonstrate basic analysis
35
+ */
36
+ export const analyzeExample = () => {
37
+ console.log('🔍 Analyzing GraphQL Document...\n');
38
+ const result = GraphQLDocument.analyze(exampleQuery);
39
+ console.log(`✅ Valid: ${result.isValid}`);
40
+ console.log(`📊 Total identifiers: ${result.identifiers.all.length}`);
41
+ console.log(`🚨 Errors: ${result.errors.length}\n`);
42
+ // Show identifiers by kind
43
+ for (const [kind, identifiers] of result.identifiers.byKind) {
44
+ console.log(`${getKindEmoji(kind)} ${kind} (${identifiers.length}):`);
45
+ for (const identifier of identifiers) {
46
+ const pos = `${identifier.position.line}:${identifier.position.column}`;
47
+ const path = identifier.schemaPath.join(' → ');
48
+ const parent = identifier.parentType ? ` (in ${identifier.parentType})` : '';
49
+ console.log(` • ${identifier.name}${parent} → ${path} @ ${pos}`);
50
+ }
51
+ console.log();
52
+ }
53
+ return result;
54
+ };
55
+ /**
56
+ * Demonstrate identifier lookup by position
57
+ */
58
+ export const demonstratePositionLookup = () => {
59
+ console.log('📍 Position-based Identifier Lookup...\n');
60
+ const identifiers = GraphQLDocument.extractIdentifiers(exampleQuery);
61
+ // Find identifier at a specific position (e.g., cursor position in an editor)
62
+ const targetPosition = 180; // Approximate position of "abilities" field
63
+ // Find the closest identifier to this position
64
+ let closestIdentifier = null;
65
+ let closestDistance = Infinity;
66
+ for (const identifier of identifiers.all) {
67
+ const distance = Math.abs(identifier.position.start - targetPosition);
68
+ if (distance < closestDistance) {
69
+ closestDistance = distance;
70
+ closestIdentifier = identifier;
71
+ }
72
+ }
73
+ if (closestIdentifier) {
74
+ console.log(`🎯 Identifier near position ${targetPosition}:`);
75
+ console.log(` Name: ${closestIdentifier.name}`);
76
+ console.log(` Kind: ${closestIdentifier.kind}`);
77
+ console.log(` Schema Path: ${closestIdentifier.schemaPath.join(' → ')}`);
78
+ console.log(` Context: ${JSON.stringify(closestIdentifier.context, null, 2)}`);
79
+ }
80
+ };
81
+ /**
82
+ * Demonstrate how this enables hyperlink generation
83
+ */
84
+ export const demonstrateHyperlinkGeneration = () => {
85
+ console.log('🔗 Hyperlink Generation Preview...\n');
86
+ const identifiers = GraphQLDocument.extractIdentifiers(exampleQuery);
87
+ // Show how each identifier could become a hyperlink
88
+ const typeIdentifiers = identifiers.byKind.get('Type') || [];
89
+ const fieldIdentifiers = identifiers.byKind.get('Field') || [];
90
+ console.log('📝 Type References → Schema Links:');
91
+ for (const identifier of typeIdentifiers) {
92
+ const referenceUrl = `/reference/${identifier.name}`;
93
+ console.log(` ${identifier.name} → ${referenceUrl}`);
94
+ }
95
+ console.log('\n📝 Field References → Schema Links:');
96
+ for (const identifier of fieldIdentifiers.slice(0, 5)) { // Show first 5
97
+ const referenceUrl = identifier.parentType
98
+ ? `/reference/${identifier.parentType}#${identifier.name}`
99
+ : `/reference/${identifier.name}`;
100
+ console.log(` ${identifier.name} → ${referenceUrl}`);
101
+ }
102
+ };
103
+ /**
104
+ * Show the foundation for hover tooltips
105
+ */
106
+ export const demonstrateTooltipFoundation = () => {
107
+ console.log('💬 Tooltip Foundation...\n');
108
+ const identifiers = GraphQLDocument.extractIdentifiers(exampleQuery);
109
+ // Show context information that would be displayed in tooltips
110
+ const fieldIdentifiers = identifiers.byKind.get('Field') || [];
111
+ for (const identifier of fieldIdentifiers.slice(0, 3)) { // Show first 3
112
+ console.log(`🏷️ ${identifier.name}:`);
113
+ console.log(` Position: Line ${identifier.position.line}, Column ${identifier.position.column}`);
114
+ console.log(` Schema Path: ${identifier.schemaPath.join(' → ')}`);
115
+ console.log(` Parent Type: ${identifier.parentType || 'Root'}`);
116
+ console.log(` Operation: ${identifier.context.operationType || 'None'}`);
117
+ console.log(` Selection Path: ${identifier.context.selectionPath.join(' → ')}`);
118
+ console.log();
119
+ }
120
+ };
121
+ // Helper function
122
+ function getKindEmoji(kind) {
123
+ const emojis = {
124
+ 'Type': '🏷️',
125
+ 'Field': '📋',
126
+ 'Argument': '⚙️',
127
+ 'Variable': '💰',
128
+ 'Directive': '🎯',
129
+ 'Fragment': '🧩',
130
+ };
131
+ return emojis[kind] || '❓';
132
+ }
133
+ // Run example if executed directly
134
+ if (import.meta.url === `file://${process.argv[1]}`) {
135
+ analyzeExample();
136
+ demonstratePositionLookup();
137
+ demonstrateHyperlinkGeneration();
138
+ demonstrateTooltipFoundation();
139
+ }
140
+ //# sourceMappingURL=example.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"example.js","sourceRoot":"","sources":["../../../src/lib/graphql-document/example.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * GraphQL Document Component Library
3
+ *
4
+ * Transform static GraphQL code blocks into interactive documentation with
5
+ * hyperlinks, tooltips, and schema validation.
6
+ *
7
+ * ## Features
8
+ * - Hyperlinked identifiers that navigate to reference documentation
9
+ * - Hover tooltips showing type information and descriptions
10
+ * - Schema validation with error highlighting
11
+ * - Build-time GraphQL validation
12
+ * - Support for all GraphQL operations (queries, mutations, subscriptions, fragments)
13
+ *
14
+ * ## Usage
15
+ * ```typescript
16
+ * import { GraphQLDocument } from 'polen/lib/graphql-document'
17
+ *
18
+ * <GraphQLDocument schema={schema}>
19
+ * {`query { user { name } }`}
20
+ * </GraphQLDocument>
21
+ * ```
22
+ *
23
+ * @see {@link GraphQLDocumentWithSchema} for MDX integration
24
+ * @see {@link GraphQLDocument} for the main React component
25
+ */
26
+ export * from './analysis.ts';
27
+ export * from './components/index.ts';
28
+ export * from './positioning-simple.ts';
29
+ export * from './schema-integration.ts';
30
+ export * from './types.ts';
31
+ export { analyze, analyzer, extractIdentifiers } from './analysis.ts';
32
+ export { GraphQLDocument } from './components/GraphQLDocument.tsx';
33
+ export { createSimpleOverlay, createSimplePositionCalculator } from './positioning-simple.ts';
34
+ export { analyzeWithSchema, createPolenSchemaResolver } from './schema-integration.ts';
35
+ //# sourceMappingURL=graphql-document.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graphql-document.d.ts","sourceRoot":"","sources":["../../../src/lib/graphql-document/graphql-document.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,cAAc,eAAe,CAAA;AAC7B,cAAc,uBAAuB,CAAA;AACrC,cAAc,yBAAyB,CAAA;AACvC,cAAc,yBAAyB,CAAA;AACvC,cAAc,YAAY,CAAA;AAG1B,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAA;AACrE,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAA;AAClE,OAAO,EAAE,mBAAmB,EAAE,8BAA8B,EAAE,MAAM,yBAAyB,CAAA;AAC7F,OAAO,EAAE,iBAAiB,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAA"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * GraphQL Document Component Library
3
+ *
4
+ * Transform static GraphQL code blocks into interactive documentation with
5
+ * hyperlinks, tooltips, and schema validation.
6
+ *
7
+ * ## Features
8
+ * - Hyperlinked identifiers that navigate to reference documentation
9
+ * - Hover tooltips showing type information and descriptions
10
+ * - Schema validation with error highlighting
11
+ * - Build-time GraphQL validation
12
+ * - Support for all GraphQL operations (queries, mutations, subscriptions, fragments)
13
+ *
14
+ * ## Usage
15
+ * ```typescript
16
+ * import { GraphQLDocument } from 'polen/lib/graphql-document'
17
+ *
18
+ * <GraphQLDocument schema={schema}>
19
+ * {`query { user { name } }`}
20
+ * </GraphQLDocument>
21
+ * ```
22
+ *
23
+ * @see {@link GraphQLDocumentWithSchema} for MDX integration
24
+ * @see {@link GraphQLDocument} for the main React component
25
+ */
26
+ export * from "./analysis.js";
27
+ export * from "./components/index.js";
28
+ export * from "./positioning-simple.js";
29
+ export * from "./schema-integration.js";
30
+ export * from "./types.js";
31
+ // Re-export key functions for convenience
32
+ export { analyze, analyzer, extractIdentifiers } from "./analysis.js";
33
+ export { GraphQLDocument } from "./components/GraphQLDocument.js";
34
+ export { createSimpleOverlay, createSimplePositionCalculator } from "./positioning-simple.js";
35
+ export { analyzeWithSchema, createPolenSchemaResolver } from "./schema-integration.js";
36
+ //# sourceMappingURL=graphql-document.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graphql-document.js","sourceRoot":"","sources":["../../../src/lib/graphql-document/graphql-document.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,cAAc,eAAe,CAAA;AAC7B,cAAc,uBAAuB,CAAA;AACrC,cAAc,yBAAyB,CAAA;AACvC,cAAc,yBAAyB,CAAA;AACvC,cAAc,YAAY,CAAA;AAE1B,0CAA0C;AAC1C,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAA;AACrE,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAkC,CAAA;AAClE,OAAO,EAAE,mBAAmB,EAAE,8BAA8B,EAAE,MAAM,yBAAyB,CAAA;AAC7F,OAAO,EAAE,iBAAiB,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAA"}
@@ -0,0 +1,43 @@
1
+ /**
2
+ * State management for GraphQL document tooltips
3
+ *
4
+ * Handles hover delays, pinning, and multiple tooltip coordination
5
+ */
6
+ export interface TooltipState {
7
+ /** Currently visible tooltip (via hover) */
8
+ hoveredId: string | null;
9
+ /** Set of pinned tooltip IDs */
10
+ pinnedIds: Set<string>;
11
+ /** ID pending show (waiting for delay) */
12
+ pendingShowId: string | null;
13
+ /** ID pending hide (waiting for grace period) */
14
+ pendingHideId: string | null;
15
+ }
16
+ export interface UseTooltipStateOptions {
17
+ /** Delay before showing tooltip on hover (ms) */
18
+ showDelay?: number;
19
+ /** Delay before hiding tooltip on mouse leave (ms) */
20
+ hideDelay?: number;
21
+ /** Whether to allow multiple pinned tooltips */
22
+ allowMultiplePins?: boolean;
23
+ }
24
+ export interface UseTooltipStateReturn {
25
+ /** Check if a tooltip should be visible */
26
+ isOpen: (id: string) => boolean;
27
+ /** Check if a tooltip is pinned */
28
+ isPinned: (id: string) => boolean;
29
+ /** Handle hover start */
30
+ onHoverStart: (id: string) => void;
31
+ /** Handle hover end */
32
+ onHoverEnd: (id: string) => void;
33
+ /** Handle click (toggle pin) */
34
+ onTogglePin: (id: string) => void;
35
+ /** Handle tooltip content hover (cancels hide) */
36
+ onTooltipHover: (id: string) => void;
37
+ /** Unpin a specific tooltip */
38
+ unpin: (id: string) => void;
39
+ /** Unpin all tooltips */
40
+ unpinAll: () => void;
41
+ }
42
+ export declare const useTooltipState: (options?: UseTooltipStateOptions) => UseTooltipStateReturn;
43
+ //# sourceMappingURL=use-tooltip-state.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-tooltip-state.d.ts","sourceRoot":"","sources":["../../../../src/lib/graphql-document/hooks/use-tooltip-state.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,MAAM,WAAW,YAAY;IAC3B,4CAA4C;IAC5C,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,gCAAgC;IAChC,SAAS,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IACtB,0CAA0C;IAC1C,aAAa,EAAE,MAAM,GAAG,IAAI,CAAA;IAC5B,iDAAiD;IACjD,aAAa,EAAE,MAAM,GAAG,IAAI,CAAA;CAC7B;AAED,MAAM,WAAW,sBAAsB;IACrC,iDAAiD;IACjD,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,sDAAsD;IACtD,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,gDAAgD;IAChD,iBAAiB,CAAC,EAAE,OAAO,CAAA;CAC5B;AAED,MAAM,WAAW,qBAAqB;IACpC,2CAA2C;IAC3C,MAAM,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAA;IAC/B,mCAAmC;IACnC,QAAQ,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAA;IACjC,yBAAyB;IACzB,YAAY,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAA;IAClC,uBAAuB;IACvB,UAAU,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAA;IAChC,gCAAgC;IAChC,WAAW,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAA;IACjC,kDAAkD;IAClD,cAAc,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAA;IACpC,+BAA+B;IAC/B,KAAK,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAA;IAC3B,yBAAyB;IACzB,QAAQ,EAAE,MAAM,IAAI,CAAA;CACrB;AAED,eAAO,MAAM,eAAe,GAAI,UAAS,sBAA2B,KAAG,qBA+ItE,CAAA"}
@@ -0,0 +1,132 @@
1
+ /**
2
+ * State management for GraphQL document tooltips
3
+ *
4
+ * Handles hover delays, pinning, and multiple tooltip coordination
5
+ */
6
+ import { React } from '#dep/react/index';
7
+ export const useTooltipState = (options = {}) => {
8
+ const { showDelay = 300, hideDelay = 200, allowMultiplePins = true, } = options;
9
+ const [hoveredId, setHoveredId] = React.useState(null);
10
+ const [pinnedIds, setPinnedIds] = React.useState(new Set());
11
+ const [pendingShowId, setPendingShowId] = React.useState(null);
12
+ const [pendingHideId, setPendingHideId] = React.useState(null);
13
+ // Timer refs
14
+ const showTimerRef = React.useRef(null);
15
+ const hideTimerRef = React.useRef(null);
16
+ // Clear any pending timers
17
+ const clearTimers = React.useCallback(() => {
18
+ if (showTimerRef.current) {
19
+ clearTimeout(showTimerRef.current);
20
+ showTimerRef.current = null;
21
+ }
22
+ if (hideTimerRef.current) {
23
+ clearTimeout(hideTimerRef.current);
24
+ hideTimerRef.current = null;
25
+ }
26
+ setPendingShowId(null);
27
+ setPendingHideId(null);
28
+ }, []);
29
+ // Check if tooltip should be visible
30
+ const isOpen = React.useCallback((id) => {
31
+ return hoveredId === id || pinnedIds.has(id);
32
+ }, [hoveredId, pinnedIds]);
33
+ // Check if tooltip is pinned
34
+ const isPinned = React.useCallback((id) => {
35
+ return pinnedIds.has(id);
36
+ }, [pinnedIds]);
37
+ // Handle hover start
38
+ const onHoverStart = React.useCallback((id) => {
39
+ // Don't show if already pinned
40
+ if (pinnedIds.has(id))
41
+ return;
42
+ // Cancel any pending hide for this ID
43
+ if (pendingHideId === id) {
44
+ clearTimeout(hideTimerRef.current);
45
+ hideTimerRef.current = null;
46
+ setPendingHideId(null);
47
+ return;
48
+ }
49
+ // Clear any other pending operations
50
+ clearTimers();
51
+ // Schedule show
52
+ setPendingShowId(id);
53
+ showTimerRef.current = setTimeout(() => {
54
+ setHoveredId(id);
55
+ setPendingShowId(null);
56
+ }, showDelay);
57
+ }, [pinnedIds, pendingHideId, clearTimers, showDelay]);
58
+ // Handle hover end
59
+ const onHoverEnd = React.useCallback((id) => {
60
+ // Don't hide if pinned
61
+ if (pinnedIds.has(id))
62
+ return;
63
+ // Cancel pending show if still waiting
64
+ if (pendingShowId === id) {
65
+ clearTimeout(showTimerRef.current);
66
+ showTimerRef.current = null;
67
+ setPendingShowId(null);
68
+ return;
69
+ }
70
+ // Only hide if currently showing this tooltip
71
+ if (hoveredId === id) {
72
+ setPendingHideId(id);
73
+ hideTimerRef.current = setTimeout(() => {
74
+ // First set hovered to null to trigger close animation
75
+ setHoveredId(null);
76
+ setPendingHideId(null);
77
+ }, hideDelay);
78
+ }
79
+ }, [pinnedIds, pendingShowId, hoveredId, hideDelay]);
80
+ // Handle tooltip content hover (cancels hide)
81
+ const onTooltipHover = React.useCallback((id) => {
82
+ if (pendingHideId === id) {
83
+ clearTimeout(hideTimerRef.current);
84
+ hideTimerRef.current = null;
85
+ setPendingHideId(null);
86
+ }
87
+ }, [pendingHideId]);
88
+ // Toggle pin state
89
+ const onTogglePin = React.useCallback((id) => {
90
+ clearTimers();
91
+ setPinnedIds((prev) => {
92
+ const next = new Set(prev);
93
+ if (next.has(id)) {
94
+ // Unpin
95
+ next.delete(id);
96
+ setHoveredId(null); // Also clear hover state
97
+ }
98
+ else {
99
+ // Pin
100
+ if (!allowMultiplePins) {
101
+ next.clear(); // Clear other pins
102
+ }
103
+ next.add(id);
104
+ setHoveredId(null); // Clear hover state since it's now pinned
105
+ }
106
+ return next;
107
+ });
108
+ }, [clearTimers, allowMultiplePins]);
109
+ // Unpin specific tooltip
110
+ const unpin = React.useCallback((id) => {
111
+ setPinnedIds((prev) => {
112
+ const next = new Set(prev);
113
+ next.delete(id);
114
+ return next;
115
+ });
116
+ }, []);
117
+ // Unpin all tooltips
118
+ const unpinAll = React.useCallback(() => {
119
+ setPinnedIds(new Set());
120
+ }, []);
121
+ return {
122
+ isOpen,
123
+ isPinned,
124
+ onHoverStart,
125
+ onHoverEnd,
126
+ onTogglePin,
127
+ onTooltipHover,
128
+ unpin,
129
+ unpinAll,
130
+ };
131
+ };
132
+ //# sourceMappingURL=use-tooltip-state.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-tooltip-state.js","sourceRoot":"","sources":["../../../../src/lib/graphql-document/hooks/use-tooltip-state.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,68 @@
1
+ /**
2
+ * Layer 3: Simplified Positioning & Layout Engine
3
+ *
4
+ * Maps GraphQL AST positions to DOM coordinates for overlay placement.
5
+ * This simplified version focuses on working with Polen's existing infrastructure.
6
+ */
7
+ import type { Identifier } from './types.ts';
8
+ /**
9
+ * DOM position for rendering overlays
10
+ */
11
+ export interface DOMPosition {
12
+ /** Distance from top of container in pixels */
13
+ top: number;
14
+ /** Distance from left of container in pixels */
15
+ left: number;
16
+ /** Width of the identifier in pixels */
17
+ width: number;
18
+ /** Height of the identifier in pixels */
19
+ height: number;
20
+ }
21
+ /**
22
+ * Position calculation result
23
+ */
24
+ export interface PositionResult {
25
+ /** The calculated DOM position */
26
+ position: DOMPosition;
27
+ /** The identifier this position is for */
28
+ identifier: Identifier;
29
+ }
30
+ /**
31
+ * Simplified position calculator for Shiki-rendered code
32
+ *
33
+ * This version uses a more straightforward approach:
34
+ * 1. Find the line element by line number
35
+ * 2. Search for the identifier text within that line
36
+ * 3. Create a span around the identifier for positioning
37
+ *
38
+ * This approach modifies the DOM but is more reliable for testing
39
+ * and works well with React's reconciliation.
40
+ */
41
+ export declare class SimplePositionCalculator {
42
+ /**
43
+ * Prepare a code block for positioning by wrapping identifiers in spans
44
+ */
45
+ prepareCodeBlock(containerElement: Element, identifiers: Identifier[]): void;
46
+ /**
47
+ * Get positions of all wrapped identifiers
48
+ */
49
+ getIdentifierPositions(containerElement: Element, relativeToElement?: Element): Map<string, PositionResult>;
50
+ /**
51
+ * Wrap an identifier in a span for positioning
52
+ * Returns true if the identifier was successfully wrapped
53
+ */
54
+ private wrapIdentifier;
55
+ }
56
+ /**
57
+ * Create invisible overlay for a position
58
+ */
59
+ export declare const createSimpleOverlay: (position: DOMPosition, identifier: Identifier, options?: {
60
+ onClick?: (identifier: Identifier) => void;
61
+ onHover?: (identifier: Identifier, event: MouseEvent) => void;
62
+ className?: string;
63
+ }) => HTMLElement;
64
+ /**
65
+ * Factory function for position calculator
66
+ */
67
+ export declare const createSimplePositionCalculator: () => SimplePositionCalculator;
68
+ //# sourceMappingURL=positioning-simple.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"positioning-simple.d.ts","sourceRoot":"","sources":["../../../src/lib/graphql-document/positioning-simple.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAE5C;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,+CAA+C;IAC/C,GAAG,EAAE,MAAM,CAAA;IACX,gDAAgD;IAChD,IAAI,EAAE,MAAM,CAAA;IACZ,wCAAwC;IACxC,KAAK,EAAE,MAAM,CAAA;IACb,yCAAyC;IACzC,MAAM,EAAE,MAAM,CAAA;CACf;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,kCAAkC;IAClC,QAAQ,EAAE,WAAW,CAAA;IACrB,0CAA0C;IAC1C,UAAU,EAAE,UAAU,CAAA;CACvB;AAED;;;;;;;;;;GAUG;AACH,qBAAa,wBAAwB;IACnC;;OAEG;IACH,gBAAgB,CACd,gBAAgB,EAAE,OAAO,EACzB,WAAW,EAAE,UAAU,EAAE,GACxB,IAAI;IAmBP;;OAEG;IACH,sBAAsB,CACpB,gBAAgB,EAAE,OAAO,EACzB,iBAAiB,CAAC,EAAE,OAAO,GAC1B,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC;IA4C9B;;;OAGG;IACH,OAAO,CAAC,cAAc;CAyFvB;AAED;;GAEG;AACH,eAAO,MAAM,mBAAmB,GAC9B,UAAU,WAAW,EACrB,YAAY,UAAU,EACtB,UAAU;IACR,OAAO,CAAC,EAAE,CAAC,UAAU,EAAE,UAAU,KAAK,IAAI,CAAA;IAC1C,OAAO,CAAC,EAAE,CAAC,UAAU,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,KAAK,IAAI,CAAA;IAC7D,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB,KACA,WAqCF,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,8BAA8B,QAAO,wBAEjD,CAAA"}