@seed-ship/mcp-ui-solid 6.15.0 → 6.17.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 (265) hide show
  1. package/CHANGELOG.md +68 -0
  2. package/README.md +20 -3
  3. package/dist/_virtual/leaflet.markercluster-src.cjs +30 -7
  4. package/dist/_virtual/leaflet.markercluster-src.cjs.map +1 -1
  5. package/dist/_virtual/leaflet.markercluster-src.js +28 -5
  6. package/dist/_virtual/leaflet.markercluster-src.js.map +1 -1
  7. package/dist/_virtual/{leaflet.markercluster-src2.cjs → leaflet2.markercluster-src.cjs} +1 -1
  8. package/dist/_virtual/leaflet2.markercluster-src.cjs.map +1 -0
  9. package/dist/_virtual/{leaflet.markercluster-src2.js → leaflet2.markercluster-src.js} +1 -1
  10. package/dist/_virtual/leaflet2.markercluster-src.js.map +1 -0
  11. package/dist/adapters/connector.js +1 -1
  12. package/dist/components/ActionGroupRenderer.js +1 -1
  13. package/dist/components/ActionRenderer.js +1 -1
  14. package/dist/components/AgentCard.js +1 -1
  15. package/dist/components/AgentHandoff.js +1 -1
  16. package/dist/components/ArtifactRenderer.js +1 -1
  17. package/dist/components/AutocompleteDropdown.cjs +1 -2
  18. package/dist/components/AutocompleteDropdown.cjs.map +1 -1
  19. package/dist/components/AutocompleteDropdown.js +2 -3
  20. package/dist/components/AutocompleteFormField.cjs +1 -2
  21. package/dist/components/AutocompleteFormField.cjs.map +1 -1
  22. package/dist/components/AutocompleteFormField.js +2 -3
  23. package/dist/components/BriefingDiff.js +1 -1
  24. package/dist/components/CarouselRenderer.js +1 -1
  25. package/dist/components/ChartJSRenderer.js +1 -1
  26. package/dist/components/ChatPrompt.js +1 -1
  27. package/dist/components/CodeBlockRenderer.js +1 -1
  28. package/dist/components/ComponentToolbar.js +1 -1
  29. package/dist/components/DataPreviewSection.js +1 -1
  30. package/dist/components/DegradedFallback.cjs.map +1 -1
  31. package/dist/components/DegradedFallback.d.ts +1 -1
  32. package/dist/components/DegradedFallback.js +1 -1
  33. package/dist/components/DegradedFallback.js.map +1 -1
  34. package/dist/components/DraggableGridItem.cjs +1 -2
  35. package/dist/components/DraggableGridItem.cjs.map +1 -1
  36. package/dist/components/DraggableGridItem.js +2 -3
  37. package/dist/components/EditableUIResourceRenderer.cjs +1 -2
  38. package/dist/components/EditableUIResourceRenderer.cjs.map +1 -1
  39. package/dist/components/EditableUIResourceRenderer.js +2 -3
  40. package/dist/components/ExpandableWrapper.js +2 -2
  41. package/dist/components/FeedbackInline.js +1 -1
  42. package/dist/components/FooterRenderer.js +1 -1
  43. package/dist/components/FormFieldRenderer.js +1 -1
  44. package/dist/components/FormRenderer.js +1 -1
  45. package/dist/components/GenerativeUIErrorBoundary.js +1 -1
  46. package/dist/components/GhostText.cjs +1 -2
  47. package/dist/components/GhostText.cjs.map +1 -1
  48. package/dist/components/GhostText.js +2 -3
  49. package/dist/components/GraphRenderer.cjs +2 -19
  50. package/dist/components/GraphRenderer.cjs.map +1 -1
  51. package/dist/components/GraphRenderer.d.ts.map +1 -1
  52. package/dist/components/GraphRenderer.js +2 -19
  53. package/dist/components/GraphRenderer.js.map +1 -1
  54. package/dist/components/GridRenderer.cjs +1 -2
  55. package/dist/components/GridRenderer.cjs.map +1 -1
  56. package/dist/components/GridRenderer.js +2 -3
  57. package/dist/components/ImageGalleryRenderer.js +1 -1
  58. package/dist/components/LightboxOverlay.js +1 -1
  59. package/dist/components/MapRenderer.cjs +10 -11
  60. package/dist/components/MapRenderer.cjs.map +1 -1
  61. package/dist/components/MapRenderer.d.ts +6 -1
  62. package/dist/components/MapRenderer.d.ts.map +1 -1
  63. package/dist/components/MapRenderer.js +7 -8
  64. package/dist/components/MapRenderer.js.map +1 -1
  65. package/dist/components/ModalRenderer.js +1 -1
  66. package/dist/components/PortalDropdownMenu.js +1 -1
  67. package/dist/components/PresentationFeedback.js +1 -1
  68. package/dist/components/RenderContext.js +1 -1
  69. package/dist/components/ResizeHandle.cjs +1 -2
  70. package/dist/components/ResizeHandle.cjs.map +1 -1
  71. package/dist/components/ResizeHandle.js +2 -3
  72. package/dist/components/ScratchpadPanel.js +1 -1
  73. package/dist/components/SplitStepper.js +1 -1
  74. package/dist/components/StreamingUIRenderer.js +1 -1
  75. package/dist/components/UIResourceRenderer.cjs +12 -1
  76. package/dist/components/UIResourceRenderer.cjs.map +1 -1
  77. package/dist/components/UIResourceRenderer.d.ts.map +1 -1
  78. package/dist/components/UIResourceRenderer.js +13 -2
  79. package/dist/components/UIResourceRenderer.js.map +1 -1
  80. package/dist/components/VerifiedText.js +1 -1
  81. package/dist/components/VideoRenderer.js +1 -1
  82. package/dist/components/index.d.ts.map +1 -1
  83. package/dist/index.d.cts +1 -1
  84. package/dist/index.d.ts +1 -1
  85. package/dist/index.d.ts.map +1 -1
  86. package/dist/node_modules/.pnpm/@antv_component@2.1.11/node_modules/@antv/component/esm/core/component.cjs +1 -1
  87. package/dist/node_modules/.pnpm/@antv_component@2.1.11/node_modules/@antv/component/esm/core/component.js +1 -1
  88. package/dist/node_modules/.pnpm/@antv_component@2.1.11/node_modules/@antv/component/esm/ui/axis/axis.cjs +1 -1
  89. package/dist/node_modules/.pnpm/@antv_component@2.1.11/node_modules/@antv/component/esm/ui/axis/axis.js +1 -1
  90. package/dist/node_modules/.pnpm/@antv_component@2.1.11/node_modules/@antv/component/esm/ui/axis/constant.cjs +1 -1
  91. package/dist/node_modules/.pnpm/@antv_component@2.1.11/node_modules/@antv/component/esm/ui/axis/constant.js +1 -1
  92. package/dist/node_modules/.pnpm/@antv_component@2.1.11/node_modules/@antv/component/esm/ui/axis/guides/grid.cjs +2 -2
  93. package/dist/node_modules/.pnpm/@antv_component@2.1.11/node_modules/@antv/component/esm/ui/axis/guides/grid.js +2 -2
  94. package/dist/node_modules/.pnpm/@antv_component@2.1.11/node_modules/@antv/component/esm/ui/axis/guides/labels.cjs +6 -6
  95. package/dist/node_modules/.pnpm/@antv_component@2.1.11/node_modules/@antv/component/esm/ui/axis/guides/labels.js +6 -6
  96. package/dist/node_modules/.pnpm/@antv_component@2.1.11/node_modules/@antv/component/esm/ui/axis/guides/line.cjs +1 -1
  97. package/dist/node_modules/.pnpm/@antv_component@2.1.11/node_modules/@antv/component/esm/ui/axis/guides/line.js +1 -1
  98. package/dist/node_modules/.pnpm/@antv_component@2.1.11/node_modules/@antv/component/esm/ui/axis/guides/ticks.cjs +2 -2
  99. package/dist/node_modules/.pnpm/@antv_component@2.1.11/node_modules/@antv/component/esm/ui/axis/guides/ticks.js +2 -2
  100. package/dist/node_modules/.pnpm/@antv_component@2.1.11/node_modules/@antv/component/esm/ui/axis/guides/title.cjs +1 -1
  101. package/dist/node_modules/.pnpm/@antv_component@2.1.11/node_modules/@antv/component/esm/ui/axis/guides/title.js +1 -1
  102. package/dist/node_modules/.pnpm/@antv_component@2.1.11/node_modules/@antv/component/esm/ui/axis/guides/utils.cjs +1 -1
  103. package/dist/node_modules/.pnpm/@antv_component@2.1.11/node_modules/@antv/component/esm/ui/axis/guides/utils.js +1 -1
  104. package/dist/node_modules/.pnpm/@antv_component@2.1.11/node_modules/@antv/component/esm/ui/grid/index.cjs +3 -3
  105. package/dist/node_modules/.pnpm/@antv_component@2.1.11/node_modules/@antv/component/esm/ui/grid/index.js +3 -3
  106. package/dist/node_modules/.pnpm/@antv_component@2.1.11/node_modules/@antv/component/esm/ui/indicator/indicator.cjs +4 -4
  107. package/dist/node_modules/.pnpm/@antv_component@2.1.11/node_modules/@antv/component/esm/ui/indicator/indicator.js +4 -4
  108. package/dist/node_modules/.pnpm/@antv_component@2.1.11/node_modules/@antv/component/esm/ui/legend/category/item.cjs +5 -5
  109. package/dist/node_modules/.pnpm/@antv_component@2.1.11/node_modules/@antv/component/esm/ui/legend/category/item.js +5 -5
  110. package/dist/node_modules/.pnpm/@antv_component@2.1.11/node_modules/@antv/component/esm/ui/legend/category/items.cjs +5 -5
  111. package/dist/node_modules/.pnpm/@antv_component@2.1.11/node_modules/@antv/component/esm/ui/legend/category/items.js +5 -5
  112. package/dist/node_modules/.pnpm/@antv_component@2.1.11/node_modules/@antv/component/esm/ui/legend/category.cjs +2 -2
  113. package/dist/node_modules/.pnpm/@antv_component@2.1.11/node_modules/@antv/component/esm/ui/legend/category.js +2 -2
  114. package/dist/node_modules/.pnpm/@antv_component@2.1.11/node_modules/@antv/component/esm/ui/legend/continuous/handle.cjs +1 -1
  115. package/dist/node_modules/.pnpm/@antv_component@2.1.11/node_modules/@antv/component/esm/ui/legend/continuous/handle.js +1 -1
  116. package/dist/node_modules/.pnpm/@antv_component@2.1.11/node_modules/@antv/component/esm/ui/legend/title/index.cjs +3 -3
  117. package/dist/node_modules/.pnpm/@antv_component@2.1.11/node_modules/@antv/component/esm/ui/legend/title/index.js +3 -3
  118. package/dist/node_modules/.pnpm/@antv_component@2.1.11/node_modules/@antv/component/esm/ui/marker/utils.cjs +1 -1
  119. package/dist/node_modules/.pnpm/@antv_component@2.1.11/node_modules/@antv/component/esm/ui/marker/utils.js +1 -1
  120. package/dist/node_modules/.pnpm/@antv_component@2.1.11/node_modules/@antv/component/esm/ui/navigator/index.cjs +5 -5
  121. package/dist/node_modules/.pnpm/@antv_component@2.1.11/node_modules/@antv/component/esm/ui/navigator/index.js +5 -5
  122. package/dist/node_modules/.pnpm/@antv_component@2.1.11/node_modules/@antv/component/esm/ui/poptip/index.cjs +2 -2
  123. package/dist/node_modules/.pnpm/@antv_component@2.1.11/node_modules/@antv/component/esm/ui/poptip/index.js +2 -2
  124. package/dist/node_modules/.pnpm/@antv_component@2.1.11/node_modules/@antv/component/esm/ui/select/option.cjs +2 -2
  125. package/dist/node_modules/.pnpm/@antv_component@2.1.11/node_modules/@antv/component/esm/ui/select/option.js +2 -2
  126. package/dist/node_modules/.pnpm/@antv_component@2.1.11/node_modules/@antv/component/esm/ui/select/select.cjs +2 -2
  127. package/dist/node_modules/.pnpm/@antv_component@2.1.11/node_modules/@antv/component/esm/ui/select/select.js +2 -2
  128. package/dist/node_modules/.pnpm/@antv_component@2.1.11/node_modules/@antv/component/esm/ui/slider/handle.cjs +2 -2
  129. package/dist/node_modules/.pnpm/@antv_component@2.1.11/node_modules/@antv/component/esm/ui/slider/handle.js +2 -2
  130. package/dist/node_modules/.pnpm/@antv_component@2.1.11/node_modules/@antv/component/esm/ui/slider/index.cjs +4 -4
  131. package/dist/node_modules/.pnpm/@antv_component@2.1.11/node_modules/@antv/component/esm/ui/slider/index.js +4 -4
  132. package/dist/node_modules/.pnpm/@antv_component@2.1.11/node_modules/@antv/component/esm/ui/sparkline/columns.cjs +1 -1
  133. package/dist/node_modules/.pnpm/@antv_component@2.1.11/node_modules/@antv/component/esm/ui/sparkline/columns.js +1 -1
  134. package/dist/node_modules/.pnpm/@antv_component@2.1.11/node_modules/@antv/component/esm/ui/sparkline/index.cjs +2 -2
  135. package/dist/node_modules/.pnpm/@antv_component@2.1.11/node_modules/@antv/component/esm/ui/sparkline/index.js +2 -2
  136. package/dist/node_modules/.pnpm/@antv_component@2.1.11/node_modules/@antv/component/esm/ui/sparkline/lines.cjs +1 -1
  137. package/dist/node_modules/.pnpm/@antv_component@2.1.11/node_modules/@antv/component/esm/ui/sparkline/lines.js +1 -1
  138. package/dist/node_modules/.pnpm/@antv_component@2.1.11/node_modules/@antv/component/esm/ui/sparkline/utils.cjs +2 -2
  139. package/dist/node_modules/.pnpm/@antv_component@2.1.11/node_modules/@antv/component/esm/ui/sparkline/utils.js +2 -2
  140. package/dist/node_modules/.pnpm/@antv_component@2.1.11/node_modules/@antv/component/esm/ui/timebar/controller.cjs +2 -2
  141. package/dist/node_modules/.pnpm/@antv_component@2.1.11/node_modules/@antv/component/esm/ui/timebar/controller.js +2 -2
  142. package/dist/node_modules/.pnpm/@antv_component@2.1.11/node_modules/@antv/component/esm/ui/timebar/handle.cjs +1 -1
  143. package/dist/node_modules/.pnpm/@antv_component@2.1.11/node_modules/@antv/component/esm/ui/timebar/handle.js +1 -1
  144. package/dist/node_modules/.pnpm/@antv_component@2.1.11/node_modules/@antv/component/esm/ui/timebar/icons.cjs +4 -4
  145. package/dist/node_modules/.pnpm/@antv_component@2.1.11/node_modules/@antv/component/esm/ui/timebar/icons.js +4 -4
  146. package/dist/node_modules/.pnpm/@antv_component@2.1.11/node_modules/@antv/component/esm/ui/timebar/timebar.cjs +3 -3
  147. package/dist/node_modules/.pnpm/@antv_component@2.1.11/node_modules/@antv/component/esm/ui/timebar/timebar.js +3 -3
  148. package/dist/node_modules/.pnpm/@antv_component@2.1.11/node_modules/@antv/component/esm/ui/tooltip/index.cjs +1 -1
  149. package/dist/node_modules/.pnpm/@antv_component@2.1.11/node_modules/@antv/component/esm/ui/tooltip/index.js +1 -1
  150. package/dist/node_modules/.pnpm/@antv_component@2.1.11/node_modules/@antv/component/esm/util/selection.cjs +1 -1
  151. package/dist/node_modules/.pnpm/@antv_component@2.1.11/node_modules/@antv/component/esm/util/selection.js +1 -1
  152. package/dist/node_modules/.pnpm/@antv_g-lite@2.7.0/node_modules/@antv/g-lite/dist/index.esm.js +1 -1
  153. package/dist/node_modules/.pnpm/@antv_g6@5.1.0/node_modules/@antv/g6/esm/behaviors/scroll-canvas.cjs +1 -1
  154. package/dist/node_modules/.pnpm/@antv_g6@5.1.0/node_modules/@antv/g6/esm/behaviors/scroll-canvas.js +1 -1
  155. package/dist/node_modules/.pnpm/@antv_g6@5.1.0/node_modules/@antv/g6/esm/elements/combos/base-combo.cjs +1 -1
  156. package/dist/node_modules/.pnpm/@antv_g6@5.1.0/node_modules/@antv/g6/esm/elements/combos/base-combo.js +1 -1
  157. package/dist/node_modules/.pnpm/@antv_g6@5.1.0/node_modules/@antv/g6/esm/elements/edges/base-edge.cjs +1 -1
  158. package/dist/node_modules/.pnpm/@antv_g6@5.1.0/node_modules/@antv/g6/esm/elements/edges/base-edge.js +1 -1
  159. package/dist/node_modules/.pnpm/@antv_g6@5.1.0/node_modules/@antv/g6/esm/index.cjs +58 -58
  160. package/dist/node_modules/.pnpm/@antv_g6@5.1.0/node_modules/@antv/g6/esm/plugins/legend.cjs +1 -1
  161. package/dist/node_modules/.pnpm/@antv_g6@5.1.0/node_modules/@antv/g6/esm/plugins/legend.js +1 -1
  162. package/dist/node_modules/.pnpm/@antv_g6@5.1.0/node_modules/@antv/g6/esm/plugins/minimap/index.cjs +1 -1
  163. package/dist/node_modules/.pnpm/@antv_g6@5.1.0/node_modules/@antv/g6/esm/plugins/minimap/index.js +1 -1
  164. package/dist/node_modules/.pnpm/@antv_g6@5.1.0/node_modules/@antv/g6/esm/plugins/snapline/index.cjs +1 -1
  165. package/dist/node_modules/.pnpm/@antv_g6@5.1.0/node_modules/@antv/g6/esm/plugins/snapline/index.js +1 -1
  166. package/dist/node_modules/.pnpm/@antv_g6@5.1.0/node_modules/@antv/g6/esm/plugins/tooltip.cjs +1 -1
  167. package/dist/node_modules/.pnpm/@antv_g6@5.1.0/node_modules/@antv/g6/esm/plugins/tooltip.js +1 -1
  168. package/dist/node_modules/.pnpm/@antv_g6@5.1.0/node_modules/@antv/g6/esm/registry/build-in.cjs +1 -1
  169. package/dist/node_modules/.pnpm/@antv_g6@5.1.0/node_modules/@antv/g6/esm/registry/build-in.js +1 -1
  170. package/dist/node_modules/.pnpm/@antv_g6@5.1.0/node_modules/@antv/g6/esm/runtime/data.cjs +1 -1
  171. package/dist/node_modules/.pnpm/@antv_g6@5.1.0/node_modules/@antv/g6/esm/runtime/data.js +1 -1
  172. package/dist/node_modules/.pnpm/@antv_g6@5.1.0/node_modules/@antv/g6/esm/runtime/element.cjs +1 -1
  173. package/dist/node_modules/.pnpm/@antv_g6@5.1.0/node_modules/@antv/g6/esm/runtime/element.js +1 -1
  174. package/dist/node_modules/.pnpm/@antv_g6@5.1.0/node_modules/@antv/g6/esm/runtime/graph.cjs +1 -1
  175. package/dist/node_modules/.pnpm/@antv_g6@5.1.0/node_modules/@antv/g6/esm/runtime/graph.js +1 -1
  176. package/dist/node_modules/.pnpm/@antv_g6@5.1.0/node_modules/@antv/g6/esm/runtime/layout.cjs +2 -2
  177. package/dist/node_modules/.pnpm/@antv_g6@5.1.0/node_modules/@antv/g6/esm/runtime/layout.js +2 -2
  178. package/dist/node_modules/.pnpm/@antv_g6@5.1.0/node_modules/@antv/g6/esm/runtime/viewport.cjs +1 -1
  179. package/dist/node_modules/.pnpm/@antv_g6@5.1.0/node_modules/@antv/g6/esm/runtime/viewport.js +1 -1
  180. package/dist/node_modules/.pnpm/@antv_g6@5.1.0/node_modules/@antv/g6/esm/utils/element.cjs +1 -1
  181. package/dist/node_modules/.pnpm/@antv_g6@5.1.0/node_modules/@antv/g6/esm/utils/element.js +1 -1
  182. package/dist/node_modules/.pnpm/@antv_g6@5.1.0/node_modules/@antv/g6/esm/utils/point.js +1 -1
  183. package/dist/node_modules/.pnpm/@antv_layout@2.0.0/node_modules/@antv/layout/lib/algorithm/antv-dagre/rank/index.js +1 -1
  184. package/dist/node_modules/.pnpm/@antv_layout@2.0.0/node_modules/@antv/layout/lib/algorithm/concentric/index.js +1 -1
  185. package/dist/node_modules/.pnpm/@antv_scale@0.4.16/node_modules/@antv/scale/esm/scales/continuous.cjs +1 -1
  186. package/dist/node_modules/.pnpm/@antv_scale@0.4.16/node_modules/@antv/scale/esm/scales/continuous.js +1 -1
  187. package/dist/node_modules/.pnpm/@tanstack_solid-virtual@3.13.18_solid-js@1.9.11/node_modules/@tanstack/solid-virtual/dist/esm/index.cjs +13 -0
  188. package/dist/node_modules/.pnpm/@tanstack_solid-virtual@3.13.18_solid-js@1.9.11/node_modules/@tanstack/solid-virtual/dist/esm/index.cjs.map +1 -1
  189. package/dist/node_modules/.pnpm/@tanstack_solid-virtual@3.13.18_solid-js@1.9.11/node_modules/@tanstack/solid-virtual/dist/esm/index.js +15 -2
  190. package/dist/node_modules/.pnpm/@tanstack_solid-virtual@3.13.18_solid-js@1.9.11/node_modules/@tanstack/solid-virtual/dist/esm/index.js.map +1 -1
  191. package/dist/node_modules/.pnpm/@tanstack_virtual-core@3.13.18/node_modules/@tanstack/virtual-core/dist/esm/index.cjs +64 -0
  192. package/dist/node_modules/.pnpm/@tanstack_virtual-core@3.13.18/node_modules/@tanstack/virtual-core/dist/esm/index.cjs.map +1 -1
  193. package/dist/node_modules/.pnpm/@tanstack_virtual-core@3.13.18/node_modules/@tanstack/virtual-core/dist/esm/index.js +66 -2
  194. package/dist/node_modules/.pnpm/@tanstack_virtual-core@3.13.18/node_modules/@tanstack/virtual-core/dist/esm/index.js.map +1 -1
  195. package/dist/node_modules/.pnpm/@tanstack_virtual-core@3.13.18/node_modules/@tanstack/virtual-core/dist/esm/utils.cjs +1 -1
  196. package/dist/node_modules/.pnpm/@tanstack_virtual-core@3.13.18/node_modules/@tanstack/virtual-core/dist/esm/utils.cjs.map +1 -1
  197. package/dist/node_modules/.pnpm/@tanstack_virtual-core@3.13.18/node_modules/@tanstack/virtual-core/dist/esm/utils.js +1 -1
  198. package/dist/node_modules/.pnpm/@tanstack_virtual-core@3.13.18/node_modules/@tanstack/virtual-core/dist/esm/utils.js.map +1 -1
  199. package/dist/node_modules/.pnpm/color-string@1.9.1/node_modules/color-string/index.cjs +6 -6
  200. package/dist/node_modules/.pnpm/{dompurify@3.4.1 → dompurify@3.4.13}/node_modules/dompurify/dist/purify.es.cjs +671 -233
  201. package/dist/node_modules/.pnpm/dompurify@3.4.13/node_modules/dompurify/dist/purify.es.cjs.map +1 -0
  202. package/dist/node_modules/.pnpm/{dompurify@3.4.1 → dompurify@3.4.13}/node_modules/dompurify/dist/purify.es.js +671 -233
  203. package/dist/node_modules/.pnpm/dompurify@3.4.13/node_modules/dompurify/dist/purify.es.js.map +1 -0
  204. package/dist/node_modules/.pnpm/leaflet.markercluster@1.5.3_leaflet@1.9.4/node_modules/leaflet.markercluster/dist/leaflet.markercluster-src.cjs +7 -7
  205. package/dist/node_modules/.pnpm/leaflet.markercluster@1.5.3_leaflet@1.9.4/node_modules/leaflet.markercluster/dist/leaflet.markercluster-src.cjs.map +1 -1
  206. package/dist/node_modules/.pnpm/leaflet.markercluster@1.5.3_leaflet@1.9.4/node_modules/leaflet.markercluster/dist/leaflet.markercluster-src.js +7 -7
  207. package/dist/node_modules/.pnpm/leaflet.markercluster@1.5.3_leaflet@1.9.4/node_modules/leaflet.markercluster/dist/leaflet.markercluster-src.js.map +1 -1
  208. package/dist/node_modules/.pnpm/leaflet@1.9.4/node_modules/leaflet/dist/leaflet-src.cjs +83 -83
  209. package/dist/node_modules/.pnpm/leaflet@1.9.4/node_modules/leaflet/dist/leaflet-src.cjs.map +1 -1
  210. package/dist/node_modules/.pnpm/leaflet@1.9.4/node_modules/leaflet/dist/leaflet-src.js +83 -83
  211. package/dist/node_modules/.pnpm/leaflet@1.9.4/node_modules/leaflet/dist/leaflet-src.js.map +1 -1
  212. package/dist/plugins/groq.cjs +1 -2
  213. package/dist/plugins/groq.cjs.map +1 -1
  214. package/dist/plugins/groq.js +1 -2
  215. package/dist/plugins/rest.cjs +1 -2
  216. package/dist/plugins/rest.cjs.map +1 -1
  217. package/dist/plugins/rest.js +1 -2
  218. package/dist/plugins/supabase.cjs +1 -2
  219. package/dist/plugins/supabase.cjs.map +1 -1
  220. package/dist/plugins/supabase.js +1 -2
  221. package/dist/services/component-registry.cjs +223 -7
  222. package/dist/services/component-registry.cjs.map +1 -1
  223. package/dist/services/component-registry.d.ts +0 -3
  224. package/dist/services/component-registry.d.ts.map +1 -1
  225. package/dist/services/component-registry.js +223 -7
  226. package/dist/services/component-registry.js.map +1 -1
  227. package/dist/services/validation.cjs +1 -23
  228. package/dist/services/validation.cjs.map +1 -1
  229. package/dist/services/validation.d.ts.map +1 -1
  230. package/dist/services/validation.js +2 -24
  231. package/dist/services/validation.js.map +1 -1
  232. package/dist/types/index.d.ts +12 -6
  233. package/dist/types/index.d.ts.map +1 -1
  234. package/dist/types.d.cts +12 -6
  235. package/dist/types.d.ts +12 -6
  236. package/dist/utils/escape-html.cjs +10 -0
  237. package/dist/utils/escape-html.cjs.map +1 -0
  238. package/dist/utils/escape-html.d.ts +13 -0
  239. package/dist/utils/escape-html.d.ts.map +1 -0
  240. package/dist/utils/escape-html.js +10 -0
  241. package/dist/utils/escape-html.js.map +1 -0
  242. package/docs/briefs/BRIEF-graph-component-g6.md +10 -0
  243. package/package.json +2 -2
  244. package/src/components/DegradedFallback.tsx +1 -1
  245. package/src/components/GraphRenderer.tsx +1 -19
  246. package/src/components/MapRenderer.security.test.ts +55 -2
  247. package/src/components/MapRenderer.tsx +15 -13
  248. package/src/components/UIResourceRenderer.tsx +8 -0
  249. package/src/components/UnsupportedComponent.test.tsx +28 -1
  250. package/src/components/index.ts +3 -0
  251. package/src/hooks/useStreamingUI.test.ts +194 -0
  252. package/src/index.ts +1 -0
  253. package/src/services/component-registry.test.ts +104 -2
  254. package/src/services/component-registry.ts +236 -7
  255. package/src/services/validation.test.ts +26 -0
  256. package/src/services/validation.ts +12 -24
  257. package/src/types/index.ts +12 -26
  258. package/src/types/map-types.test.ts +20 -0
  259. package/src/utils/escape-html.test.ts +30 -0
  260. package/src/utils/escape-html.ts +24 -0
  261. package/tsconfig.tsbuildinfo +1 -1
  262. package/dist/_virtual/leaflet.markercluster-src2.cjs.map +0 -1
  263. package/dist/_virtual/leaflet.markercluster-src2.js.map +0 -1
  264. package/dist/node_modules/.pnpm/dompurify@3.4.1/node_modules/dompurify/dist/purify.es.cjs.map +0 -1
  265. package/dist/node_modules/.pnpm/dompurify@3.4.1/node_modules/dompurify/dist/purify.es.js.map +0 -1
@@ -1,5 +1,5 @@
1
1
  "use strict";
2
- Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
3
  const DEFAULT_SYSTEM_PROMPT = `You are an autocomplete assistant. Given the user's partial input, provide a natural completion.
4
4
  Rules:
5
5
  - Complete the text naturally and concisely
@@ -93,5 +93,4 @@ ${userPrompt}`;
93
93
  };
94
94
  }
95
95
  exports.createGroqPlugin = createGroqPlugin;
96
- exports.default = createGroqPlugin;
97
96
  //# sourceMappingURL=groq.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"groq.cjs","sources":["../../src/plugins/groq.ts"],"sourcesContent":["/**\n * Groq LLM Autocomplete Plugin\n * Provides LLM-powered text completion suggestions using Groq API\n *\n * Sprint Autocomplete Feature\n */\n\nimport type {\n AutocompletePlugin,\n AutocompleteResult,\n AutocompleteContext,\n GroqPluginConfig\n} from '../types'\n\n/**\n * Default system prompt for completion\n */\nconst DEFAULT_SYSTEM_PROMPT = `You are an autocomplete assistant. Given the user's partial input, provide a natural completion.\nRules:\n- Complete the text naturally and concisely\n- Return ONLY the completed text (including the original input)\n- Do not add quotes, explanations, or additional text\n- If unsure, return the original input unchanged`\n\n/**\n * Create a Groq LLM autocomplete plugin\n */\nexport function createGroqPlugin(config: GroqPluginConfig): AutocompletePlugin {\n const {\n apiKey,\n model = 'mixtral-8x7b-32768',\n systemPrompt = DEFAULT_SYSTEM_PROMPT,\n maxTokens = 50,\n temperature = 0.3\n } = config\n\n let isConfigured = !!apiKey\n\n return {\n id: 'groq',\n name: 'Groq LLM',\n\n configure(newConfig: Record<string, any>) {\n if (newConfig.apiKey) {\n isConfigured = true\n }\n },\n\n isReady() {\n return isConfigured\n },\n\n async getSuggestions(\n input: string,\n context?: AutocompleteContext\n ): Promise<AutocompleteResult> {\n if (!isConfigured) {\n console.warn('[Groq Plugin] API key not configured')\n return { type: 'completion', completion: input }\n }\n\n if (!input.trim()) {\n return { type: 'completion', completion: '' }\n }\n\n try {\n // Build context-aware prompt\n let userPrompt = `Complete this text: \"${input}\"`\n\n if (context?.fieldName) {\n userPrompt = `Field: ${context.fieldName}\\nComplete this text: \"${input}\"`\n }\n\n if (context?.formData && Object.keys(context.formData).length > 0) {\n const formContext = Object.entries(context.formData)\n .filter(([key, value]) => value && key !== context.fieldName)\n .map(([key, value]) => `${key}: ${value}`)\n .join(', ')\n\n if (formContext) {\n userPrompt = `Form context: ${formContext}\\n${userPrompt}`\n }\n }\n\n const response = await fetch('https://api.groq.com/openai/v1/chat/completions', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': `Bearer ${apiKey}`\n },\n body: JSON.stringify({\n model,\n messages: [\n { role: 'system', content: systemPrompt },\n { role: 'user', content: userPrompt }\n ],\n max_tokens: maxTokens,\n temperature,\n stream: false\n })\n })\n\n if (!response.ok) {\n const errorText = await response.text()\n console.error('[Groq Plugin] API error:', response.status, errorText)\n return { type: 'completion', completion: input }\n }\n\n const data = await response.json()\n const completion = data.choices?.[0]?.message?.content?.trim() || input\n\n // Clean up the completion (remove quotes if present)\n let cleanCompletion = completion\n if (cleanCompletion.startsWith('\"') && cleanCompletion.endsWith('\"')) {\n cleanCompletion = cleanCompletion.slice(1, -1)\n }\n if (cleanCompletion.startsWith(\"'\") && cleanCompletion.endsWith(\"'\")) {\n cleanCompletion = cleanCompletion.slice(1, -1)\n }\n\n return {\n type: 'completion',\n completion: cleanCompletion\n }\n } catch (error) {\n console.error('[Groq Plugin] Error:', error)\n return { type: 'completion', completion: input }\n }\n },\n\n dispose() {\n // No cleanup needed\n }\n }\n}\n\nexport default createGroqPlugin\n"],"names":[],"mappings":";;AAiBA,MAAM,wBAAwB;AAAA;AAAA;AAAA;AAAA;AAAA;AAUvB,SAAS,iBAAiB,QAA8C;AAC7E,QAAM;AAAA,IACJ;AAAA,IACA,QAAQ;AAAA,IACR,eAAe;AAAA,IACf,YAAY;AAAA,IACZ,cAAc;AAAA,EAAA,IACZ;AAEJ,MAAI,eAAe,CAAC,CAAC;AAErB,SAAO;AAAA,IACL,IAAI;AAAA,IACJ,MAAM;AAAA,IAEN,UAAU,WAAgC;AACxC,UAAI,UAAU,QAAQ;AACpB,uBAAe;AAAA,MACjB;AAAA,IACF;AAAA,IAEA,UAAU;AACR,aAAO;AAAA,IACT;AAAA,IAEA,MAAM,eACJ,OACA,SAC6B;;AAC7B,UAAI,CAAC,cAAc;AACjB,gBAAQ,KAAK,sCAAsC;AACnD,eAAO,EAAE,MAAM,cAAc,YAAY,MAAA;AAAA,MAC3C;AAEA,UAAI,CAAC,MAAM,QAAQ;AACjB,eAAO,EAAE,MAAM,cAAc,YAAY,GAAA;AAAA,MAC3C;AAEA,UAAI;AAEF,YAAI,aAAa,wBAAwB,KAAK;AAE9C,YAAI,mCAAS,WAAW;AACtB,uBAAa,UAAU,QAAQ,SAAS;AAAA,uBAA0B,KAAK;AAAA,QACzE;AAEA,aAAI,mCAAS,aAAY,OAAO,KAAK,QAAQ,QAAQ,EAAE,SAAS,GAAG;AACjE,gBAAM,cAAc,OAAO,QAAQ,QAAQ,QAAQ,EAChD,OAAO,CAAC,CAAC,KAAK,KAAK,MAAM,SAAS,QAAQ,QAAQ,SAAS,EAC3D,IAAI,CAAC,CAAC,KAAK,KAAK,MAAM,GAAG,GAAG,KAAK,KAAK,EAAE,EACxC,KAAK,IAAI;AAEZ,cAAI,aAAa;AACf,yBAAa,iBAAiB,WAAW;AAAA,EAAK,UAAU;AAAA,UAC1D;AAAA,QACF;AAEA,cAAM,WAAW,MAAM,MAAM,mDAAmD;AAAA,UAC9E,QAAQ;AAAA,UACR,SAAS;AAAA,YACP,gBAAgB;AAAA,YAChB,iBAAiB,UAAU,MAAM;AAAA,UAAA;AAAA,UAEnC,MAAM,KAAK,UAAU;AAAA,YACnB;AAAA,YACA,UAAU;AAAA,cACR,EAAE,MAAM,UAAU,SAAS,aAAA;AAAA,cAC3B,EAAE,MAAM,QAAQ,SAAS,WAAA;AAAA,YAAW;AAAA,YAEtC,YAAY;AAAA,YACZ;AAAA,YACA,QAAQ;AAAA,UAAA,CACT;AAAA,QAAA,CACF;AAED,YAAI,CAAC,SAAS,IAAI;AAChB,gBAAM,YAAY,MAAM,SAAS,KAAA;AACjC,kBAAQ,MAAM,4BAA4B,SAAS,QAAQ,SAAS;AACpE,iBAAO,EAAE,MAAM,cAAc,YAAY,MAAA;AAAA,QAC3C;AAEA,cAAM,OAAO,MAAM,SAAS,KAAA;AAC5B,cAAM,eAAa,4BAAK,YAAL,mBAAe,OAAf,mBAAmB,YAAnB,mBAA4B,YAA5B,mBAAqC,WAAU;AAGlE,YAAI,kBAAkB;AACtB,YAAI,gBAAgB,WAAW,GAAG,KAAK,gBAAgB,SAAS,GAAG,GAAG;AACpE,4BAAkB,gBAAgB,MAAM,GAAG,EAAE;AAAA,QAC/C;AACA,YAAI,gBAAgB,WAAW,GAAG,KAAK,gBAAgB,SAAS,GAAG,GAAG;AACpE,4BAAkB,gBAAgB,MAAM,GAAG,EAAE;AAAA,QAC/C;AAEA,eAAO;AAAA,UACL,MAAM;AAAA,UACN,YAAY;AAAA,QAAA;AAAA,MAEhB,SAAS,OAAO;AACd,gBAAQ,MAAM,wBAAwB,KAAK;AAC3C,eAAO,EAAE,MAAM,cAAc,YAAY,MAAA;AAAA,MAC3C;AAAA,IACF;AAAA,IAEA,UAAU;AAAA,IAEV;AAAA,EAAA;AAEJ;;;"}
1
+ {"version":3,"file":"groq.cjs","sources":["../../src/plugins/groq.ts"],"sourcesContent":["/**\n * Groq LLM Autocomplete Plugin\n * Provides LLM-powered text completion suggestions using Groq API\n *\n * Sprint Autocomplete Feature\n */\n\nimport type {\n AutocompletePlugin,\n AutocompleteResult,\n AutocompleteContext,\n GroqPluginConfig\n} from '../types'\n\n/**\n * Default system prompt for completion\n */\nconst DEFAULT_SYSTEM_PROMPT = `You are an autocomplete assistant. Given the user's partial input, provide a natural completion.\nRules:\n- Complete the text naturally and concisely\n- Return ONLY the completed text (including the original input)\n- Do not add quotes, explanations, or additional text\n- If unsure, return the original input unchanged`\n\n/**\n * Create a Groq LLM autocomplete plugin\n */\nexport function createGroqPlugin(config: GroqPluginConfig): AutocompletePlugin {\n const {\n apiKey,\n model = 'mixtral-8x7b-32768',\n systemPrompt = DEFAULT_SYSTEM_PROMPT,\n maxTokens = 50,\n temperature = 0.3\n } = config\n\n let isConfigured = !!apiKey\n\n return {\n id: 'groq',\n name: 'Groq LLM',\n\n configure(newConfig: Record<string, any>) {\n if (newConfig.apiKey) {\n isConfigured = true\n }\n },\n\n isReady() {\n return isConfigured\n },\n\n async getSuggestions(\n input: string,\n context?: AutocompleteContext\n ): Promise<AutocompleteResult> {\n if (!isConfigured) {\n console.warn('[Groq Plugin] API key not configured')\n return { type: 'completion', completion: input }\n }\n\n if (!input.trim()) {\n return { type: 'completion', completion: '' }\n }\n\n try {\n // Build context-aware prompt\n let userPrompt = `Complete this text: \"${input}\"`\n\n if (context?.fieldName) {\n userPrompt = `Field: ${context.fieldName}\\nComplete this text: \"${input}\"`\n }\n\n if (context?.formData && Object.keys(context.formData).length > 0) {\n const formContext = Object.entries(context.formData)\n .filter(([key, value]) => value && key !== context.fieldName)\n .map(([key, value]) => `${key}: ${value}`)\n .join(', ')\n\n if (formContext) {\n userPrompt = `Form context: ${formContext}\\n${userPrompt}`\n }\n }\n\n const response = await fetch('https://api.groq.com/openai/v1/chat/completions', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': `Bearer ${apiKey}`\n },\n body: JSON.stringify({\n model,\n messages: [\n { role: 'system', content: systemPrompt },\n { role: 'user', content: userPrompt }\n ],\n max_tokens: maxTokens,\n temperature,\n stream: false\n })\n })\n\n if (!response.ok) {\n const errorText = await response.text()\n console.error('[Groq Plugin] API error:', response.status, errorText)\n return { type: 'completion', completion: input }\n }\n\n const data = await response.json()\n const completion = data.choices?.[0]?.message?.content?.trim() || input\n\n // Clean up the completion (remove quotes if present)\n let cleanCompletion = completion\n if (cleanCompletion.startsWith('\"') && cleanCompletion.endsWith('\"')) {\n cleanCompletion = cleanCompletion.slice(1, -1)\n }\n if (cleanCompletion.startsWith(\"'\") && cleanCompletion.endsWith(\"'\")) {\n cleanCompletion = cleanCompletion.slice(1, -1)\n }\n\n return {\n type: 'completion',\n completion: cleanCompletion\n }\n } catch (error) {\n console.error('[Groq Plugin] Error:', error)\n return { type: 'completion', completion: input }\n }\n },\n\n dispose() {\n // No cleanup needed\n }\n }\n}\n\nexport default createGroqPlugin\n"],"names":[],"mappings":";;AAiBA,MAAM,wBAAwB;AAAA;AAAA;AAAA;AAAA;AAAA;AAUvB,SAAS,iBAAiB,QAA8C;AAC7E,QAAM;AAAA,IACJ;AAAA,IACA,QAAQ;AAAA,IACR,eAAe;AAAA,IACf,YAAY;AAAA,IACZ,cAAc;AAAA,EAAA,IACZ;AAEJ,MAAI,eAAe,CAAC,CAAC;AAErB,SAAO;AAAA,IACL,IAAI;AAAA,IACJ,MAAM;AAAA,IAEN,UAAU,WAAgC;AACxC,UAAI,UAAU,QAAQ;AACpB,uBAAe;AAAA,MACjB;AAAA,IACF;AAAA,IAEA,UAAU;AACR,aAAO;AAAA,IACT;AAAA,IAEA,MAAM,eACJ,OACA,SAC6B;;AAC7B,UAAI,CAAC,cAAc;AACjB,gBAAQ,KAAK,sCAAsC;AACnD,eAAO,EAAE,MAAM,cAAc,YAAY,MAAA;AAAA,MAC3C;AAEA,UAAI,CAAC,MAAM,QAAQ;AACjB,eAAO,EAAE,MAAM,cAAc,YAAY,GAAA;AAAA,MAC3C;AAEA,UAAI;AAEF,YAAI,aAAa,wBAAwB,KAAK;AAE9C,YAAI,mCAAS,WAAW;AACtB,uBAAa,UAAU,QAAQ,SAAS;AAAA,uBAA0B,KAAK;AAAA,QACzE;AAEA,aAAI,mCAAS,aAAY,OAAO,KAAK,QAAQ,QAAQ,EAAE,SAAS,GAAG;AACjE,gBAAM,cAAc,OAAO,QAAQ,QAAQ,QAAQ,EAChD,OAAO,CAAC,CAAC,KAAK,KAAK,MAAM,SAAS,QAAQ,QAAQ,SAAS,EAC3D,IAAI,CAAC,CAAC,KAAK,KAAK,MAAM,GAAG,GAAG,KAAK,KAAK,EAAE,EACxC,KAAK,IAAI;AAEZ,cAAI,aAAa;AACf,yBAAa,iBAAiB,WAAW;AAAA,EAAK,UAAU;AAAA,UAC1D;AAAA,QACF;AAEA,cAAM,WAAW,MAAM,MAAM,mDAAmD;AAAA,UAC9E,QAAQ;AAAA,UACR,SAAS;AAAA,YACP,gBAAgB;AAAA,YAChB,iBAAiB,UAAU,MAAM;AAAA,UAAA;AAAA,UAEnC,MAAM,KAAK,UAAU;AAAA,YACnB;AAAA,YACA,UAAU;AAAA,cACR,EAAE,MAAM,UAAU,SAAS,aAAA;AAAA,cAC3B,EAAE,MAAM,QAAQ,SAAS,WAAA;AAAA,YAAW;AAAA,YAEtC,YAAY;AAAA,YACZ;AAAA,YACA,QAAQ;AAAA,UAAA,CACT;AAAA,QAAA,CACF;AAED,YAAI,CAAC,SAAS,IAAI;AAChB,gBAAM,YAAY,MAAM,SAAS,KAAA;AACjC,kBAAQ,MAAM,4BAA4B,SAAS,QAAQ,SAAS;AACpE,iBAAO,EAAE,MAAM,cAAc,YAAY,MAAA;AAAA,QAC3C;AAEA,cAAM,OAAO,MAAM,SAAS,KAAA;AAC5B,cAAM,eAAa,4BAAK,YAAL,mBAAe,OAAf,mBAAmB,YAAnB,mBAA4B,YAA5B,mBAAqC,WAAU;AAGlE,YAAI,kBAAkB;AACtB,YAAI,gBAAgB,WAAW,GAAG,KAAK,gBAAgB,SAAS,GAAG,GAAG;AACpE,4BAAkB,gBAAgB,MAAM,GAAG,EAAE;AAAA,QAC/C;AACA,YAAI,gBAAgB,WAAW,GAAG,KAAK,gBAAgB,SAAS,GAAG,GAAG;AACpE,4BAAkB,gBAAgB,MAAM,GAAG,EAAE;AAAA,QAC/C;AAEA,eAAO;AAAA,UACL,MAAM;AAAA,UACN,YAAY;AAAA,QAAA;AAAA,MAEhB,SAAS,OAAO;AACd,gBAAQ,MAAM,wBAAwB,KAAK;AAC3C,eAAO,EAAE,MAAM,cAAc,YAAY,MAAA;AAAA,MAC3C;AAAA,IACF;AAAA,IAEA,UAAU;AAAA,IAEV;AAAA,EAAA;AAEJ;;"}
@@ -91,7 +91,6 @@ ${userPrompt}`;
91
91
  };
92
92
  }
93
93
  export {
94
- createGroqPlugin,
95
- createGroqPlugin as default
94
+ createGroqPlugin
96
95
  };
97
96
  //# sourceMappingURL=groq.js.map
@@ -1,5 +1,5 @@
1
1
  "use strict";
2
- Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
3
  function getByPath(obj, path) {
4
4
  return path.split(".").reduce((current, key) => current == null ? void 0 : current[key], obj);
5
5
  }
@@ -88,5 +88,4 @@ function createRestPlugin(config) {
88
88
  };
89
89
  }
90
90
  exports.createRestPlugin = createRestPlugin;
91
- exports.default = createRestPlugin;
92
91
  //# sourceMappingURL=rest.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"rest.cjs","sources":["../../src/plugins/rest.ts"],"sourcesContent":["/**\n * REST API Autocomplete Plugin\n * Provides suggestions from any REST API endpoint\n *\n * Sprint Autocomplete Feature\n */\n\nimport type {\n AutocompletePlugin,\n AutocompleteResult,\n AutocompleteContext,\n AutocompleteOption,\n RestPluginConfig\n} from '../types'\n\n/**\n * Get value at path (e.g., \"data.results\" -> obj.data.results)\n */\nfunction getByPath(obj: any, path: string): any {\n return path.split('.').reduce((current, key) => current?.[key], obj)\n}\n\n/**\n * Default transform function\n */\nfunction defaultTransform(\n data: any[],\n valueField: string,\n labelField: string\n): AutocompleteOption[] {\n return data.map(item => ({\n value: String(item[valueField] ?? item.value ?? item.id ?? ''),\n label: String(item[labelField] ?? item.label ?? item.name ?? item[valueField] ?? ''),\n metadata: item\n }))\n}\n\n/**\n * Create a REST API autocomplete plugin\n */\nexport function createRestPlugin(config: RestPluginConfig): AutocompletePlugin {\n const {\n endpoint,\n method = 'GET',\n headers = {},\n bodyTemplate,\n transform,\n resultPath,\n valueField = 'value',\n labelField = 'label'\n } = config\n\n return {\n id: 'rest',\n name: 'REST API',\n\n configure(newConfig: Record<string, any>) {\n Object.assign(config, newConfig)\n },\n\n isReady() {\n return !!endpoint\n },\n\n async getSuggestions(\n input: string,\n _context?: AutocompleteContext\n ): Promise<AutocompleteResult> {\n if (!endpoint) {\n console.warn('[REST Plugin] Endpoint not configured')\n return { type: 'options', options: [] }\n }\n\n if (!input.trim()) {\n return { type: 'options', options: [] }\n }\n\n try {\n // Build URL with search placeholder\n const url = endpoint.replace(/\\{search\\}/g, encodeURIComponent(input))\n\n // Build request options\n const requestOptions: RequestInit = {\n method,\n headers: {\n 'Content-Type': 'application/json',\n ...headers\n }\n }\n\n // Add body for POST requests\n if (method === 'POST' && bodyTemplate) {\n const body = bodyTemplate.replace(/\\{search\\}/g, input)\n requestOptions.body = body\n } else if (method === 'POST') {\n requestOptions.body = JSON.stringify({ search: input })\n }\n\n const response = await fetch(url, requestOptions)\n\n if (!response.ok) {\n const errorText = await response.text()\n console.error('[REST Plugin] API error:', response.status, errorText)\n return { type: 'options', options: [] }\n }\n\n const data = await response.json()\n\n // Extract results from path if specified\n let results = resultPath ? getByPath(data, resultPath) : data\n\n // Ensure results is an array\n if (!Array.isArray(results)) {\n if (results && typeof results === 'object') {\n // Try common result structures\n results = results.data || results.results || results.items || [results]\n } else {\n results = []\n }\n }\n\n // Transform results to options\n let options: AutocompleteOption[]\n\n if (transform) {\n options = transform(results)\n } else {\n options = defaultTransform(results, valueField, labelField)\n }\n\n return {\n type: 'options',\n options\n }\n } catch (error) {\n console.error('[REST Plugin] Error:', error)\n return { type: 'options', options: [] }\n }\n },\n\n dispose() {\n // No cleanup needed\n }\n }\n}\n\nexport default createRestPlugin\n"],"names":[],"mappings":";;AAkBA,SAAS,UAAU,KAAU,MAAmB;AAC9C,SAAO,KAAK,MAAM,GAAG,EAAE,OAAO,CAAC,SAAS,QAAQ,mCAAU,MAAM,GAAG;AACrE;AAKA,SAAS,iBACP,MACA,YACA,YACsB;AACtB,SAAO,KAAK,IAAI,CAAA,UAAS;AAAA,IACvB,OAAO,OAAO,KAAK,UAAU,KAAK,KAAK,SAAS,KAAK,MAAM,EAAE;AAAA,IAC7D,OAAO,OAAO,KAAK,UAAU,KAAK,KAAK,SAAS,KAAK,QAAQ,KAAK,UAAU,KAAK,EAAE;AAAA,IACnF,UAAU;AAAA,EAAA,EACV;AACJ;AAKO,SAAS,iBAAiB,QAA8C;AAC7E,QAAM;AAAA,IACJ;AAAA,IACA,SAAS;AAAA,IACT,UAAU,CAAA;AAAA,IACV;AAAA,IACA;AAAA,IACA;AAAA,IACA,aAAa;AAAA,IACb,aAAa;AAAA,EAAA,IACX;AAEJ,SAAO;AAAA,IACL,IAAI;AAAA,IACJ,MAAM;AAAA,IAEN,UAAU,WAAgC;AACxC,aAAO,OAAO,QAAQ,SAAS;AAAA,IACjC;AAAA,IAEA,UAAU;AACR,aAAO,CAAC,CAAC;AAAA,IACX;AAAA,IAEA,MAAM,eACJ,OACA,UAC6B;AAC7B,UAAI,CAAC,UAAU;AACb,gBAAQ,KAAK,uCAAuC;AACpD,eAAO,EAAE,MAAM,WAAW,SAAS,CAAA,EAAC;AAAA,MACtC;AAEA,UAAI,CAAC,MAAM,QAAQ;AACjB,eAAO,EAAE,MAAM,WAAW,SAAS,CAAA,EAAC;AAAA,MACtC;AAEA,UAAI;AAEF,cAAM,MAAM,SAAS,QAAQ,eAAe,mBAAmB,KAAK,CAAC;AAGrE,cAAM,iBAA8B;AAAA,UAClC;AAAA,UACA,SAAS;AAAA,YACP,gBAAgB;AAAA,YAChB,GAAG;AAAA,UAAA;AAAA,QACL;AAIF,YAAI,WAAW,UAAU,cAAc;AACrC,gBAAM,OAAO,aAAa,QAAQ,eAAe,KAAK;AACtD,yBAAe,OAAO;AAAA,QACxB,WAAW,WAAW,QAAQ;AAC5B,yBAAe,OAAO,KAAK,UAAU,EAAE,QAAQ,OAAO;AAAA,QACxD;AAEA,cAAM,WAAW,MAAM,MAAM,KAAK,cAAc;AAEhD,YAAI,CAAC,SAAS,IAAI;AAChB,gBAAM,YAAY,MAAM,SAAS,KAAA;AACjC,kBAAQ,MAAM,4BAA4B,SAAS,QAAQ,SAAS;AACpE,iBAAO,EAAE,MAAM,WAAW,SAAS,CAAA,EAAC;AAAA,QACtC;AAEA,cAAM,OAAO,MAAM,SAAS,KAAA;AAG5B,YAAI,UAAU,aAAa,UAAU,MAAM,UAAU,IAAI;AAGzD,YAAI,CAAC,MAAM,QAAQ,OAAO,GAAG;AAC3B,cAAI,WAAW,OAAO,YAAY,UAAU;AAE1C,sBAAU,QAAQ,QAAQ,QAAQ,WAAW,QAAQ,SAAS,CAAC,OAAO;AAAA,UACxE,OAAO;AACL,sBAAU,CAAA;AAAA,UACZ;AAAA,QACF;AAGA,YAAI;AAEJ,YAAI,WAAW;AACb,oBAAU,UAAU,OAAO;AAAA,QAC7B,OAAO;AACL,oBAAU,iBAAiB,SAAS,YAAY,UAAU;AAAA,QAC5D;AAEA,eAAO;AAAA,UACL,MAAM;AAAA,UACN;AAAA,QAAA;AAAA,MAEJ,SAAS,OAAO;AACd,gBAAQ,MAAM,wBAAwB,KAAK;AAC3C,eAAO,EAAE,MAAM,WAAW,SAAS,CAAA,EAAC;AAAA,MACtC;AAAA,IACF;AAAA,IAEA,UAAU;AAAA,IAEV;AAAA,EAAA;AAEJ;;;"}
1
+ {"version":3,"file":"rest.cjs","sources":["../../src/plugins/rest.ts"],"sourcesContent":["/**\n * REST API Autocomplete Plugin\n * Provides suggestions from any REST API endpoint\n *\n * Sprint Autocomplete Feature\n */\n\nimport type {\n AutocompletePlugin,\n AutocompleteResult,\n AutocompleteContext,\n AutocompleteOption,\n RestPluginConfig\n} from '../types'\n\n/**\n * Get value at path (e.g., \"data.results\" -> obj.data.results)\n */\nfunction getByPath(obj: any, path: string): any {\n return path.split('.').reduce((current, key) => current?.[key], obj)\n}\n\n/**\n * Default transform function\n */\nfunction defaultTransform(\n data: any[],\n valueField: string,\n labelField: string\n): AutocompleteOption[] {\n return data.map(item => ({\n value: String(item[valueField] ?? item.value ?? item.id ?? ''),\n label: String(item[labelField] ?? item.label ?? item.name ?? item[valueField] ?? ''),\n metadata: item\n }))\n}\n\n/**\n * Create a REST API autocomplete plugin\n */\nexport function createRestPlugin(config: RestPluginConfig): AutocompletePlugin {\n const {\n endpoint,\n method = 'GET',\n headers = {},\n bodyTemplate,\n transform,\n resultPath,\n valueField = 'value',\n labelField = 'label'\n } = config\n\n return {\n id: 'rest',\n name: 'REST API',\n\n configure(newConfig: Record<string, any>) {\n Object.assign(config, newConfig)\n },\n\n isReady() {\n return !!endpoint\n },\n\n async getSuggestions(\n input: string,\n _context?: AutocompleteContext\n ): Promise<AutocompleteResult> {\n if (!endpoint) {\n console.warn('[REST Plugin] Endpoint not configured')\n return { type: 'options', options: [] }\n }\n\n if (!input.trim()) {\n return { type: 'options', options: [] }\n }\n\n try {\n // Build URL with search placeholder\n const url = endpoint.replace(/\\{search\\}/g, encodeURIComponent(input))\n\n // Build request options\n const requestOptions: RequestInit = {\n method,\n headers: {\n 'Content-Type': 'application/json',\n ...headers\n }\n }\n\n // Add body for POST requests\n if (method === 'POST' && bodyTemplate) {\n const body = bodyTemplate.replace(/\\{search\\}/g, input)\n requestOptions.body = body\n } else if (method === 'POST') {\n requestOptions.body = JSON.stringify({ search: input })\n }\n\n const response = await fetch(url, requestOptions)\n\n if (!response.ok) {\n const errorText = await response.text()\n console.error('[REST Plugin] API error:', response.status, errorText)\n return { type: 'options', options: [] }\n }\n\n const data = await response.json()\n\n // Extract results from path if specified\n let results = resultPath ? getByPath(data, resultPath) : data\n\n // Ensure results is an array\n if (!Array.isArray(results)) {\n if (results && typeof results === 'object') {\n // Try common result structures\n results = results.data || results.results || results.items || [results]\n } else {\n results = []\n }\n }\n\n // Transform results to options\n let options: AutocompleteOption[]\n\n if (transform) {\n options = transform(results)\n } else {\n options = defaultTransform(results, valueField, labelField)\n }\n\n return {\n type: 'options',\n options\n }\n } catch (error) {\n console.error('[REST Plugin] Error:', error)\n return { type: 'options', options: [] }\n }\n },\n\n dispose() {\n // No cleanup needed\n }\n }\n}\n\nexport default createRestPlugin\n"],"names":[],"mappings":";;AAkBA,SAAS,UAAU,KAAU,MAAmB;AAC9C,SAAO,KAAK,MAAM,GAAG,EAAE,OAAO,CAAC,SAAS,QAAQ,mCAAU,MAAM,GAAG;AACrE;AAKA,SAAS,iBACP,MACA,YACA,YACsB;AACtB,SAAO,KAAK,IAAI,CAAA,UAAS;AAAA,IACvB,OAAO,OAAO,KAAK,UAAU,KAAK,KAAK,SAAS,KAAK,MAAM,EAAE;AAAA,IAC7D,OAAO,OAAO,KAAK,UAAU,KAAK,KAAK,SAAS,KAAK,QAAQ,KAAK,UAAU,KAAK,EAAE;AAAA,IACnF,UAAU;AAAA,EAAA,EACV;AACJ;AAKO,SAAS,iBAAiB,QAA8C;AAC7E,QAAM;AAAA,IACJ;AAAA,IACA,SAAS;AAAA,IACT,UAAU,CAAA;AAAA,IACV;AAAA,IACA;AAAA,IACA;AAAA,IACA,aAAa;AAAA,IACb,aAAa;AAAA,EAAA,IACX;AAEJ,SAAO;AAAA,IACL,IAAI;AAAA,IACJ,MAAM;AAAA,IAEN,UAAU,WAAgC;AACxC,aAAO,OAAO,QAAQ,SAAS;AAAA,IACjC;AAAA,IAEA,UAAU;AACR,aAAO,CAAC,CAAC;AAAA,IACX;AAAA,IAEA,MAAM,eACJ,OACA,UAC6B;AAC7B,UAAI,CAAC,UAAU;AACb,gBAAQ,KAAK,uCAAuC;AACpD,eAAO,EAAE,MAAM,WAAW,SAAS,CAAA,EAAC;AAAA,MACtC;AAEA,UAAI,CAAC,MAAM,QAAQ;AACjB,eAAO,EAAE,MAAM,WAAW,SAAS,CAAA,EAAC;AAAA,MACtC;AAEA,UAAI;AAEF,cAAM,MAAM,SAAS,QAAQ,eAAe,mBAAmB,KAAK,CAAC;AAGrE,cAAM,iBAA8B;AAAA,UAClC;AAAA,UACA,SAAS;AAAA,YACP,gBAAgB;AAAA,YAChB,GAAG;AAAA,UAAA;AAAA,QACL;AAIF,YAAI,WAAW,UAAU,cAAc;AACrC,gBAAM,OAAO,aAAa,QAAQ,eAAe,KAAK;AACtD,yBAAe,OAAO;AAAA,QACxB,WAAW,WAAW,QAAQ;AAC5B,yBAAe,OAAO,KAAK,UAAU,EAAE,QAAQ,OAAO;AAAA,QACxD;AAEA,cAAM,WAAW,MAAM,MAAM,KAAK,cAAc;AAEhD,YAAI,CAAC,SAAS,IAAI;AAChB,gBAAM,YAAY,MAAM,SAAS,KAAA;AACjC,kBAAQ,MAAM,4BAA4B,SAAS,QAAQ,SAAS;AACpE,iBAAO,EAAE,MAAM,WAAW,SAAS,CAAA,EAAC;AAAA,QACtC;AAEA,cAAM,OAAO,MAAM,SAAS,KAAA;AAG5B,YAAI,UAAU,aAAa,UAAU,MAAM,UAAU,IAAI;AAGzD,YAAI,CAAC,MAAM,QAAQ,OAAO,GAAG;AAC3B,cAAI,WAAW,OAAO,YAAY,UAAU;AAE1C,sBAAU,QAAQ,QAAQ,QAAQ,WAAW,QAAQ,SAAS,CAAC,OAAO;AAAA,UACxE,OAAO;AACL,sBAAU,CAAA;AAAA,UACZ;AAAA,QACF;AAGA,YAAI;AAEJ,YAAI,WAAW;AACb,oBAAU,UAAU,OAAO;AAAA,QAC7B,OAAO;AACL,oBAAU,iBAAiB,SAAS,YAAY,UAAU;AAAA,QAC5D;AAEA,eAAO;AAAA,UACL,MAAM;AAAA,UACN;AAAA,QAAA;AAAA,MAEJ,SAAS,OAAO;AACd,gBAAQ,MAAM,wBAAwB,KAAK;AAC3C,eAAO,EAAE,MAAM,WAAW,SAAS,CAAA,EAAC;AAAA,MACtC;AAAA,IACF;AAAA,IAEA,UAAU;AAAA,IAEV;AAAA,EAAA;AAEJ;;"}
@@ -86,7 +86,6 @@ function createRestPlugin(config) {
86
86
  };
87
87
  }
88
88
  export {
89
- createRestPlugin,
90
- createRestPlugin as default
89
+ createRestPlugin
91
90
  };
92
91
  //# sourceMappingURL=rest.js.map
@@ -1,5 +1,5 @@
1
1
  "use strict";
2
- Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
3
  function createSupabasePlugin(config) {
4
4
  const {
5
5
  url,
@@ -75,5 +75,4 @@ function createSupabasePlugin(config) {
75
75
  };
76
76
  }
77
77
  exports.createSupabasePlugin = createSupabasePlugin;
78
- exports.default = createSupabasePlugin;
79
78
  //# sourceMappingURL=supabase.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"supabase.cjs","sources":["../../src/plugins/supabase.ts"],"sourcesContent":["/**\n * Supabase Autocomplete Plugin\n * Provides data-driven suggestions from a Supabase table\n *\n * Sprint Autocomplete Feature\n */\n\nimport type {\n AutocompletePlugin,\n AutocompleteResult,\n AutocompleteContext,\n AutocompleteOption,\n SupabasePluginConfig\n} from '../types'\n\n/**\n * Create a Supabase autocomplete plugin\n */\nexport function createSupabasePlugin(config: SupabasePluginConfig): AutocompletePlugin {\n const {\n url,\n anonKey,\n table,\n column,\n searchColumn,\n labelColumn,\n limit = 10,\n filter\n } = config\n\n const isConfigured = !!(url && anonKey && table && column)\n const effectiveSearchColumn = searchColumn || column\n const effectiveLabelColumn = labelColumn || column\n\n return {\n id: 'supabase',\n name: 'Supabase',\n\n configure(newConfig: Record<string, any>) {\n // Allow runtime reconfiguration\n Object.assign(config, newConfig)\n },\n\n isReady() {\n return isConfigured\n },\n\n async getSuggestions(\n input: string,\n _context?: AutocompleteContext\n ): Promise<AutocompleteResult> {\n if (!isConfigured) {\n console.warn('[Supabase Plugin] Not properly configured')\n return { type: 'options', options: [] }\n }\n\n if (!input.trim()) {\n return { type: 'options', options: [] }\n }\n\n try {\n // Build query URL\n let queryUrl = `${url}/rest/v1/${table}?select=${column}`\n\n if (column !== effectiveLabelColumn) {\n queryUrl += `,${effectiveLabelColumn}`\n }\n\n // Add ILIKE filter for search\n queryUrl += `&${effectiveSearchColumn}=ilike.${encodeURIComponent(input)}%`\n\n // Add limit\n queryUrl += `&limit=${limit}`\n\n // Add custom filters\n if (filter) {\n Object.entries(filter).forEach(([key, value]) => {\n queryUrl += `&${key}=eq.${encodeURIComponent(String(value))}`\n })\n }\n\n const response = await fetch(queryUrl, {\n headers: {\n 'apikey': anonKey,\n 'Authorization': `Bearer ${anonKey}`,\n 'Content-Type': 'application/json'\n }\n })\n\n if (!response.ok) {\n const errorText = await response.text()\n console.error('[Supabase Plugin] API error:', response.status, errorText)\n return { type: 'options', options: [] }\n }\n\n const data = await response.json()\n\n const options: AutocompleteOption[] = data.map((row: Record<string, any>) => ({\n value: String(row[column]),\n label: String(row[effectiveLabelColumn]),\n metadata: row\n }))\n\n return {\n type: 'options',\n options\n }\n } catch (error) {\n console.error('[Supabase Plugin] Error:', error)\n return { type: 'options', options: [] }\n }\n },\n\n dispose() {\n // No cleanup needed\n }\n }\n}\n\nexport default createSupabasePlugin\n"],"names":[],"mappings":";;AAkBO,SAAS,qBAAqB,QAAkD;AACrF,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,QAAQ;AAAA,IACR;AAAA,EAAA,IACE;AAEJ,QAAM,eAAe,CAAC,EAAE,OAAO,WAAW,SAAS;AACnD,QAAM,wBAAwB,gBAAgB;AAC9C,QAAM,uBAAuB,eAAe;AAE5C,SAAO;AAAA,IACL,IAAI;AAAA,IACJ,MAAM;AAAA,IAEN,UAAU,WAAgC;AAExC,aAAO,OAAO,QAAQ,SAAS;AAAA,IACjC;AAAA,IAEA,UAAU;AACR,aAAO;AAAA,IACT;AAAA,IAEA,MAAM,eACJ,OACA,UAC6B;AAC7B,UAAI,CAAC,cAAc;AACjB,gBAAQ,KAAK,2CAA2C;AACxD,eAAO,EAAE,MAAM,WAAW,SAAS,CAAA,EAAC;AAAA,MACtC;AAEA,UAAI,CAAC,MAAM,QAAQ;AACjB,eAAO,EAAE,MAAM,WAAW,SAAS,CAAA,EAAC;AAAA,MACtC;AAEA,UAAI;AAEF,YAAI,WAAW,GAAG,GAAG,YAAY,KAAK,WAAW,MAAM;AAEvD,YAAI,WAAW,sBAAsB;AACnC,sBAAY,IAAI,oBAAoB;AAAA,QACtC;AAGA,oBAAY,IAAI,qBAAqB,UAAU,mBAAmB,KAAK,CAAC;AAGxE,oBAAY,UAAU,KAAK;AAG3B,YAAI,QAAQ;AACV,iBAAO,QAAQ,MAAM,EAAE,QAAQ,CAAC,CAAC,KAAK,KAAK,MAAM;AAC/C,wBAAY,IAAI,GAAG,OAAO,mBAAmB,OAAO,KAAK,CAAC,CAAC;AAAA,UAC7D,CAAC;AAAA,QACH;AAEA,cAAM,WAAW,MAAM,MAAM,UAAU;AAAA,UACrC,SAAS;AAAA,YACP,UAAU;AAAA,YACV,iBAAiB,UAAU,OAAO;AAAA,YAClC,gBAAgB;AAAA,UAAA;AAAA,QAClB,CACD;AAED,YAAI,CAAC,SAAS,IAAI;AAChB,gBAAM,YAAY,MAAM,SAAS,KAAA;AACjC,kBAAQ,MAAM,gCAAgC,SAAS,QAAQ,SAAS;AACxE,iBAAO,EAAE,MAAM,WAAW,SAAS,CAAA,EAAC;AAAA,QACtC;AAEA,cAAM,OAAO,MAAM,SAAS,KAAA;AAE5B,cAAM,UAAgC,KAAK,IAAI,CAAC,SAA8B;AAAA,UAC5E,OAAO,OAAO,IAAI,MAAM,CAAC;AAAA,UACzB,OAAO,OAAO,IAAI,oBAAoB,CAAC;AAAA,UACvC,UAAU;AAAA,QAAA,EACV;AAEF,eAAO;AAAA,UACL,MAAM;AAAA,UACN;AAAA,QAAA;AAAA,MAEJ,SAAS,OAAO;AACd,gBAAQ,MAAM,4BAA4B,KAAK;AAC/C,eAAO,EAAE,MAAM,WAAW,SAAS,CAAA,EAAC;AAAA,MACtC;AAAA,IACF;AAAA,IAEA,UAAU;AAAA,IAEV;AAAA,EAAA;AAEJ;;;"}
1
+ {"version":3,"file":"supabase.cjs","sources":["../../src/plugins/supabase.ts"],"sourcesContent":["/**\n * Supabase Autocomplete Plugin\n * Provides data-driven suggestions from a Supabase table\n *\n * Sprint Autocomplete Feature\n */\n\nimport type {\n AutocompletePlugin,\n AutocompleteResult,\n AutocompleteContext,\n AutocompleteOption,\n SupabasePluginConfig\n} from '../types'\n\n/**\n * Create a Supabase autocomplete plugin\n */\nexport function createSupabasePlugin(config: SupabasePluginConfig): AutocompletePlugin {\n const {\n url,\n anonKey,\n table,\n column,\n searchColumn,\n labelColumn,\n limit = 10,\n filter\n } = config\n\n const isConfigured = !!(url && anonKey && table && column)\n const effectiveSearchColumn = searchColumn || column\n const effectiveLabelColumn = labelColumn || column\n\n return {\n id: 'supabase',\n name: 'Supabase',\n\n configure(newConfig: Record<string, any>) {\n // Allow runtime reconfiguration\n Object.assign(config, newConfig)\n },\n\n isReady() {\n return isConfigured\n },\n\n async getSuggestions(\n input: string,\n _context?: AutocompleteContext\n ): Promise<AutocompleteResult> {\n if (!isConfigured) {\n console.warn('[Supabase Plugin] Not properly configured')\n return { type: 'options', options: [] }\n }\n\n if (!input.trim()) {\n return { type: 'options', options: [] }\n }\n\n try {\n // Build query URL\n let queryUrl = `${url}/rest/v1/${table}?select=${column}`\n\n if (column !== effectiveLabelColumn) {\n queryUrl += `,${effectiveLabelColumn}`\n }\n\n // Add ILIKE filter for search\n queryUrl += `&${effectiveSearchColumn}=ilike.${encodeURIComponent(input)}%`\n\n // Add limit\n queryUrl += `&limit=${limit}`\n\n // Add custom filters\n if (filter) {\n Object.entries(filter).forEach(([key, value]) => {\n queryUrl += `&${key}=eq.${encodeURIComponent(String(value))}`\n })\n }\n\n const response = await fetch(queryUrl, {\n headers: {\n 'apikey': anonKey,\n 'Authorization': `Bearer ${anonKey}`,\n 'Content-Type': 'application/json'\n }\n })\n\n if (!response.ok) {\n const errorText = await response.text()\n console.error('[Supabase Plugin] API error:', response.status, errorText)\n return { type: 'options', options: [] }\n }\n\n const data = await response.json()\n\n const options: AutocompleteOption[] = data.map((row: Record<string, any>) => ({\n value: String(row[column]),\n label: String(row[effectiveLabelColumn]),\n metadata: row\n }))\n\n return {\n type: 'options',\n options\n }\n } catch (error) {\n console.error('[Supabase Plugin] Error:', error)\n return { type: 'options', options: [] }\n }\n },\n\n dispose() {\n // No cleanup needed\n }\n }\n}\n\nexport default createSupabasePlugin\n"],"names":[],"mappings":";;AAkBO,SAAS,qBAAqB,QAAkD;AACrF,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,QAAQ;AAAA,IACR;AAAA,EAAA,IACE;AAEJ,QAAM,eAAe,CAAC,EAAE,OAAO,WAAW,SAAS;AACnD,QAAM,wBAAwB,gBAAgB;AAC9C,QAAM,uBAAuB,eAAe;AAE5C,SAAO;AAAA,IACL,IAAI;AAAA,IACJ,MAAM;AAAA,IAEN,UAAU,WAAgC;AAExC,aAAO,OAAO,QAAQ,SAAS;AAAA,IACjC;AAAA,IAEA,UAAU;AACR,aAAO;AAAA,IACT;AAAA,IAEA,MAAM,eACJ,OACA,UAC6B;AAC7B,UAAI,CAAC,cAAc;AACjB,gBAAQ,KAAK,2CAA2C;AACxD,eAAO,EAAE,MAAM,WAAW,SAAS,CAAA,EAAC;AAAA,MACtC;AAEA,UAAI,CAAC,MAAM,QAAQ;AACjB,eAAO,EAAE,MAAM,WAAW,SAAS,CAAA,EAAC;AAAA,MACtC;AAEA,UAAI;AAEF,YAAI,WAAW,GAAG,GAAG,YAAY,KAAK,WAAW,MAAM;AAEvD,YAAI,WAAW,sBAAsB;AACnC,sBAAY,IAAI,oBAAoB;AAAA,QACtC;AAGA,oBAAY,IAAI,qBAAqB,UAAU,mBAAmB,KAAK,CAAC;AAGxE,oBAAY,UAAU,KAAK;AAG3B,YAAI,QAAQ;AACV,iBAAO,QAAQ,MAAM,EAAE,QAAQ,CAAC,CAAC,KAAK,KAAK,MAAM;AAC/C,wBAAY,IAAI,GAAG,OAAO,mBAAmB,OAAO,KAAK,CAAC,CAAC;AAAA,UAC7D,CAAC;AAAA,QACH;AAEA,cAAM,WAAW,MAAM,MAAM,UAAU;AAAA,UACrC,SAAS;AAAA,YACP,UAAU;AAAA,YACV,iBAAiB,UAAU,OAAO;AAAA,YAClC,gBAAgB;AAAA,UAAA;AAAA,QAClB,CACD;AAED,YAAI,CAAC,SAAS,IAAI;AAChB,gBAAM,YAAY,MAAM,SAAS,KAAA;AACjC,kBAAQ,MAAM,gCAAgC,SAAS,QAAQ,SAAS;AACxE,iBAAO,EAAE,MAAM,WAAW,SAAS,CAAA,EAAC;AAAA,QACtC;AAEA,cAAM,OAAO,MAAM,SAAS,KAAA;AAE5B,cAAM,UAAgC,KAAK,IAAI,CAAC,SAA8B;AAAA,UAC5E,OAAO,OAAO,IAAI,MAAM,CAAC;AAAA,UACzB,OAAO,OAAO,IAAI,oBAAoB,CAAC;AAAA,UACvC,UAAU;AAAA,QAAA,EACV;AAEF,eAAO;AAAA,UACL,MAAM;AAAA,UACN;AAAA,QAAA;AAAA,MAEJ,SAAS,OAAO;AACd,gBAAQ,MAAM,4BAA4B,KAAK;AAC/C,eAAO,EAAE,MAAM,WAAW,SAAS,CAAA,EAAC;AAAA,MACtC;AAAA,IACF;AAAA,IAEA,UAAU;AAAA,IAEV;AAAA,EAAA;AAEJ;;"}
@@ -73,7 +73,6 @@ function createSupabasePlugin(config) {
73
73
  };
74
74
  }
75
75
  export {
76
- createSupabasePlugin,
77
- createSupabasePlugin as default
76
+ createSupabasePlugin
78
77
  };
79
78
  //# sourceMappingURL=supabase.js.map
@@ -514,30 +514,246 @@ const CodeRegistry = {
514
514
  ],
515
515
  limits: validation.DEFAULT_RESOURCE_LIMITS
516
516
  };
517
+ const MAP_LAT_LNG_POINT_SCHEMA = {
518
+ oneOf: [
519
+ {
520
+ type: "array",
521
+ items: { type: "number" },
522
+ minItems: 2,
523
+ maxItems: 2,
524
+ description: "[latitude, longitude] tuple"
525
+ },
526
+ {
527
+ type: "object",
528
+ properties: {
529
+ lat: { type: "number" },
530
+ lng: { type: "number" }
531
+ },
532
+ required: ["lat", "lng"],
533
+ description: "{ lat, lng } object"
534
+ }
535
+ ]
536
+ };
537
+ const MAP_GEOJSON_POSITION_SCHEMA = {
538
+ type: "array",
539
+ items: { type: "number" },
540
+ minItems: 2
541
+ };
542
+ const MAP_GEOJSON_COORDINATES_SCHEMA = {
543
+ anyOf: [
544
+ MAP_GEOJSON_POSITION_SCHEMA,
545
+ { type: "array", items: MAP_GEOJSON_POSITION_SCHEMA },
546
+ { type: "array", items: { type: "array", items: MAP_GEOJSON_POSITION_SCHEMA } },
547
+ {
548
+ type: "array",
549
+ items: {
550
+ type: "array",
551
+ items: { type: "array", items: MAP_GEOJSON_POSITION_SCHEMA }
552
+ }
553
+ }
554
+ ]
555
+ };
556
+ const MAP_GEOJSON_BBOX_SCHEMA = {
557
+ type: "array",
558
+ items: { type: "number" }
559
+ };
560
+ const MAP_GEOJSON_GEOMETRY_TYPE_SCHEMA = {
561
+ type: "string",
562
+ enum: [
563
+ "Point",
564
+ "MultiPoint",
565
+ "LineString",
566
+ "MultiLineString",
567
+ "Polygon",
568
+ "MultiPolygon",
569
+ "GeometryCollection"
570
+ ]
571
+ };
572
+ const MAP_GEOJSON_SIMPLE_GEOMETRY_SCHEMA = {
573
+ type: "object",
574
+ properties: {
575
+ type: MAP_GEOJSON_GEOMETRY_TYPE_SCHEMA,
576
+ coordinates: MAP_GEOJSON_COORDINATES_SCHEMA,
577
+ bbox: MAP_GEOJSON_BBOX_SCHEMA
578
+ },
579
+ required: ["type"]
580
+ };
581
+ const MAP_GEOJSON_GEOMETRY_SCHEMA = {
582
+ type: "object",
583
+ properties: {
584
+ type: MAP_GEOJSON_GEOMETRY_TYPE_SCHEMA,
585
+ coordinates: MAP_GEOJSON_COORDINATES_SCHEMA,
586
+ geometries: { type: "array", items: MAP_GEOJSON_SIMPLE_GEOMETRY_SCHEMA },
587
+ bbox: MAP_GEOJSON_BBOX_SCHEMA
588
+ },
589
+ required: ["type"]
590
+ };
591
+ const MAP_GEOJSON_FEATURE_SCHEMA = {
592
+ type: "object",
593
+ properties: {
594
+ type: { type: "string", enum: ["Feature"] },
595
+ geometry: { oneOf: [MAP_GEOJSON_GEOMETRY_SCHEMA, { type: "null" }] },
596
+ properties: { oneOf: [{ type: "object" }, { type: "null" }] },
597
+ id: { oneOf: [{ type: "string" }, { type: "number" }] },
598
+ bbox: MAP_GEOJSON_BBOX_SCHEMA
599
+ },
600
+ required: ["type", "geometry"]
601
+ };
602
+ const MAP_GEOJSON_FEATURE_COLLECTION_SCHEMA = {
603
+ type: "object",
604
+ properties: {
605
+ type: { type: "string", enum: ["FeatureCollection"] },
606
+ features: { type: "array", items: MAP_GEOJSON_FEATURE_SCHEMA },
607
+ bbox: MAP_GEOJSON_BBOX_SCHEMA
608
+ },
609
+ required: ["type", "features"]
610
+ };
611
+ const MAP_GEOJSON_SCHEMA = {
612
+ oneOf: [
613
+ MAP_GEOJSON_FEATURE_COLLECTION_SCHEMA,
614
+ MAP_GEOJSON_FEATURE_SCHEMA,
615
+ MAP_GEOJSON_GEOMETRY_SCHEMA
616
+ ],
617
+ description: "GeoJSON FeatureCollection, Feature, or Geometry"
618
+ };
619
+ const MAP_GEOJSON_STYLE_SCHEMA = {
620
+ type: "object",
621
+ properties: {
622
+ fillColor: { type: "string" },
623
+ fillOpacity: { type: "number" },
624
+ strokeColor: { type: "string" },
625
+ strokeWeight: { type: "number" },
626
+ strokeOpacity: { type: "number" },
627
+ choroplethField: { type: "string" },
628
+ choroplethScale: {
629
+ type: "array",
630
+ items: {
631
+ type: "array",
632
+ items: [{ type: "number" }, { type: "string" }],
633
+ additionalItems: false,
634
+ minItems: 2,
635
+ maxItems: 2
636
+ }
637
+ },
638
+ choroplethFallback: { type: "string" }
639
+ }
640
+ };
641
+ const MAP_POPUP_SCHEMA = {
642
+ type: "object",
643
+ properties: {
644
+ titleField: { type: "string" },
645
+ fields: { type: "array", items: { type: "string" } },
646
+ template: {
647
+ type: "string",
648
+ description: "Trusted-host HTML template; ignored on the default untrusted renderer path"
649
+ }
650
+ }
651
+ };
517
652
  const MapRegistry = {
518
653
  type: "map",
519
654
  name: "InteractiveMap",
520
- description: "Render interactive maps with markers using Leaflet. Supports marker clustering, custom tile layers, and auto-fitting bounds. Best for displaying geographic data with up to 1000 markers.",
655
+ description: "Render interactive maps on the default OpenStreetMap base layer (using Leaflet internally) from already-resolved markers, GeoJSON, named layers, clustering, or PMTiles. The renderer does not geocode place names.",
521
656
  schema: {
522
657
  type: "object",
523
658
  properties: {
524
- center: { type: "array", items: { type: "number" }, minItems: 2, maxItems: 2, description: "Map center [lat, lng]" },
525
- zoom: { type: "number", description: "Zoom level (1-18, default: 13)" },
659
+ center: {
660
+ ...MAP_LAT_LNG_POINT_SCHEMA,
661
+ description: "Initial map center as [lat, lng] or { lat, lng }"
662
+ },
663
+ zoom: { type: "number", description: "Initial zoom level (default: 13)" },
526
664
  markers: {
527
665
  type: "array",
528
666
  items: {
529
667
  type: "object",
530
668
  properties: {
531
- position: { type: "array", items: { type: "number" }, minItems: 2, maxItems: 2 },
532
- title: { type: "string" },
669
+ position: MAP_LAT_LNG_POINT_SCHEMA,
670
+ tooltip: { type: "string" },
533
671
  popup: { type: "string" }
534
672
  },
535
673
  required: ["position"]
536
674
  }
537
675
  },
538
676
  height: { type: "string", description: "CSS height (default: 400px)" },
539
- fitBounds: { type: "boolean", description: "Auto-fit to show all markers" },
540
- clustering: { type: "boolean", description: "Enable marker clustering for large datasets" }
677
+ fitBounds: { type: "boolean", description: "Auto-fit to rendered markers and features" },
678
+ zoomControl: { type: "boolean", description: "Show Leaflet zoom controls" },
679
+ scrollWheelZoom: { type: "boolean", description: "Allow scroll-wheel zoom" },
680
+ tileLayer: {
681
+ type: "string",
682
+ description: "Optional base tile URL template (defaults to OpenStreetMap); the host remains responsible for network policy"
683
+ },
684
+ attribution: { type: "string", description: "Base-map attribution" },
685
+ className: { type: "string", description: "Custom CSS class" },
686
+ geojson: MAP_GEOJSON_SCHEMA,
687
+ geojsonStyle: MAP_GEOJSON_STYLE_SCHEMA,
688
+ popup: MAP_POPUP_SCHEMA,
689
+ layers: {
690
+ type: "array",
691
+ description: "Named GeoJSON overlays",
692
+ items: {
693
+ type: "object",
694
+ properties: {
695
+ name: { type: "string", minLength: 1 },
696
+ visible: { type: "boolean" },
697
+ geojson: MAP_GEOJSON_SCHEMA,
698
+ style: MAP_GEOJSON_STYLE_SCHEMA,
699
+ popup: MAP_POPUP_SCHEMA
700
+ },
701
+ required: ["name", "geojson"]
702
+ }
703
+ },
704
+ clustering: {
705
+ oneOf: [
706
+ { type: "boolean" },
707
+ {
708
+ type: "object",
709
+ properties: {
710
+ maxClusterRadius: { type: "number" },
711
+ spiderfyOnMaxZoom: { type: "boolean" },
712
+ showCoverageOnHover: { type: "boolean" },
713
+ disableClusteringAtZoom: { type: "number" },
714
+ animateAddingMarkers: { type: "boolean" }
715
+ }
716
+ }
717
+ ],
718
+ description: "Enable marker clustering or provide cluster options"
719
+ },
720
+ pmtiles: {
721
+ type: "object",
722
+ description: "PMTiles vector-tile overlay (requires the optional protomaps-leaflet peer)",
723
+ properties: {
724
+ url: { type: "string" },
725
+ attribution: { type: "string" },
726
+ paintRules: {
727
+ type: "array",
728
+ items: {
729
+ type: "object",
730
+ properties: {
731
+ dataLayer: { type: "string" },
732
+ symbolizer: { type: "string", enum: ["polygon", "line", "circle"] },
733
+ color: { type: "string" },
734
+ width: { type: "number" },
735
+ opacity: { type: "number" }
736
+ },
737
+ required: ["dataLayer", "symbolizer"]
738
+ }
739
+ },
740
+ labelRules: {
741
+ type: "array",
742
+ items: {
743
+ type: "object",
744
+ properties: {
745
+ dataLayer: { type: "string" },
746
+ textField: { type: "string" },
747
+ fontSize: { type: "number" }
748
+ },
749
+ required: ["dataLayer", "textField"]
750
+ }
751
+ },
752
+ maxZoom: { type: "number" },
753
+ minZoom: { type: "number" }
754
+ },
755
+ required: ["url"]
756
+ }
541
757
  },
542
758
  required: []
543
759
  },