schema-components 2.0.2 → 2.1.1

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 (197) hide show
  1. package/README.md +133 -1
  2. package/dist/SchemaComponent-B__6-5-E.d.mts +277 -0
  3. package/dist/SchemaComponent-BxzzsHsK.mjs +668 -0
  4. package/dist/adapter-ktQaheWB.d.mts +213 -0
  5. package/dist/constructorTypes-BdCiMS6e.d.mts +30 -0
  6. package/dist/core/adapter.d.mts +3 -213
  7. package/dist/core/constraintHint.d.mts +1 -1
  8. package/dist/core/constraints.d.mts +2 -2
  9. package/dist/core/contexts.d.mts +71 -0
  10. package/dist/core/contexts.mjs +1 -0
  11. package/dist/core/diagnostics.d.mts +1 -1
  12. package/dist/core/errors.d.mts +1 -1
  13. package/dist/core/fieldOrder.d.mts +1 -1
  14. package/dist/{react → core}/fieldPath.d.mts +2 -2
  15. package/dist/{react → core}/fieldPath.mjs +3 -3
  16. package/dist/core/formats.d.mts +1 -1
  17. package/dist/core/inferValue.d.mts +1 -1
  18. package/dist/core/limits.d.mts +1 -1
  19. package/dist/core/merge.d.mts +1 -1
  20. package/dist/core/normalise.d.mts +2 -2
  21. package/dist/core/ref.d.mts +1 -1
  22. package/dist/core/renderField.d.mts +147 -0
  23. package/dist/core/renderField.mjs +115 -0
  24. package/dist/core/renderer.d.mts +2 -199
  25. package/dist/core/swagger2.d.mts +1 -1
  26. package/dist/core/typeInference.d.mts +1 -982
  27. package/dist/core/types.d.mts +1 -1
  28. package/dist/core/unionMatch.d.mts +1 -1
  29. package/dist/core/version.d.mts +1 -1
  30. package/dist/core/walkBuilders.d.mts +3 -3
  31. package/dist/core/walker.d.mts +1 -1
  32. package/dist/{errors-Dki7tji4.d.mts → errors-DbaI04x2.d.mts} +1 -1
  33. package/dist/html/a11y.d.mts +2 -2
  34. package/dist/html/renderToHtml.d.mts +5 -5
  35. package/dist/html/renderToHtml.mjs +33 -18
  36. package/dist/html/renderToHtmlStream.d.mts +5 -5
  37. package/dist/html/renderers.d.mts +1 -1
  38. package/dist/html/streamRenderers.d.mts +15 -6
  39. package/dist/html/streamRenderers.mjs +56 -10
  40. package/dist/{inferValue-Ce-PviSD.d.mts → inferValue-eAnh50EM.d.mts} +3 -3
  41. package/dist/lit/SchemaComponent.d.mts +125 -0
  42. package/dist/lit/SchemaComponent.mjs +2 -0
  43. package/dist/lit/SchemaField.d.mts +65 -0
  44. package/dist/lit/SchemaField.mjs +2 -0
  45. package/dist/lit/SchemaView.d.mts +14 -0
  46. package/dist/lit/SchemaView.mjs +2 -0
  47. package/dist/lit/constructorTypes.d.mts +2 -0
  48. package/dist/lit/constructorTypes.mjs +1 -0
  49. package/dist/lit/contexts.d.mts +78 -0
  50. package/dist/lit/contexts.mjs +238 -0
  51. package/dist/lit/defaultResolver.d.mts +33 -0
  52. package/dist/lit/defaultResolver.mjs +2 -0
  53. package/dist/lit/registry.d.mts +66 -0
  54. package/dist/lit/registry.mjs +2 -0
  55. package/dist/lit/renderers/baseElement.d.mts +131 -0
  56. package/dist/lit/renderers/baseElement.mjs +109 -0
  57. package/dist/lit/renderers/recordHelpers.d.mts +25 -0
  58. package/dist/lit/renderers/recordHelpers.mjs +55 -0
  59. package/dist/lit/renderers/scArray.d.mts +14 -0
  60. package/dist/lit/renderers/scArray.mjs +86 -0
  61. package/dist/lit/renderers/scBoolean.d.mts +15 -0
  62. package/dist/lit/renderers/scBoolean.mjs +47 -0
  63. package/dist/lit/renderers/scConditional.d.mts +23 -0
  64. package/dist/lit/renderers/scConditional.mjs +65 -0
  65. package/dist/lit/renderers/scDiscriminated.d.mts +23 -0
  66. package/dist/lit/renderers/scDiscriminated.mjs +138 -0
  67. package/dist/lit/renderers/scEnum.d.mts +16 -0
  68. package/dist/lit/renderers/scEnum.mjs +66 -0
  69. package/dist/lit/renderers/scFile.d.mts +15 -0
  70. package/dist/lit/renderers/scFile.mjs +53 -0
  71. package/dist/lit/renderers/scLiteralNullNever.d.mts +30 -0
  72. package/dist/lit/renderers/scLiteralNullNever.mjs +57 -0
  73. package/dist/lit/renderers/scNumber.d.mts +15 -0
  74. package/dist/lit/renderers/scNumber.mjs +64 -0
  75. package/dist/lit/renderers/scObject.d.mts +14 -0
  76. package/dist/lit/renderers/scObject.mjs +57 -0
  77. package/dist/lit/renderers/scRecord.d.mts +14 -0
  78. package/dist/lit/renderers/scRecord.mjs +112 -0
  79. package/dist/lit/renderers/scString.d.mts +19 -0
  80. package/dist/lit/renderers/scString.mjs +165 -0
  81. package/dist/lit/renderers/scTuple.d.mts +14 -0
  82. package/dist/lit/renderers/scTuple.mjs +58 -0
  83. package/dist/lit/renderers/scUnion.d.mts +14 -0
  84. package/dist/lit/renderers/scUnion.mjs +44 -0
  85. package/dist/lit/renderers/scUnknown.d.mts +15 -0
  86. package/dist/lit/renderers/scUnknown.mjs +45 -0
  87. package/dist/lit/ssr.d.mts +37 -0
  88. package/dist/lit/ssr.mjs +9565 -0
  89. package/dist/lit/types.d.mts +2 -0
  90. package/dist/lit/types.mjs +1 -0
  91. package/dist/lit/widget.d.mts +71 -0
  92. package/dist/lit/widget.mjs +87 -0
  93. package/dist/openapi/ApiCallbacks.d.mts +1 -1
  94. package/dist/openapi/ApiLinks.d.mts +1 -1
  95. package/dist/openapi/ApiResponseHeaders.d.mts +1 -1
  96. package/dist/openapi/ApiSecurity.d.mts +1 -1
  97. package/dist/openapi/components.d.mts +4 -4
  98. package/dist/openapi/parser.d.mts +2 -2
  99. package/dist/openapi/resolve.d.mts +1 -1
  100. package/dist/preact/SchemaComponent.d.mts +3 -0
  101. package/dist/preact/SchemaComponent.mjs +26 -0
  102. package/dist/preact/SchemaErrorBoundary.d.mts +2 -0
  103. package/dist/preact/SchemaErrorBoundary.mjs +20 -0
  104. package/dist/preact/SchemaView.d.mts +2 -0
  105. package/dist/preact/SchemaView.mjs +22 -0
  106. package/dist/preact/headless.d.mts +2 -0
  107. package/dist/preact/headless.mjs +18 -0
  108. package/dist/react/SchemaComponent.d.mts +3 -270
  109. package/dist/react/SchemaComponent.mjs +41 -32
  110. package/dist/react/SchemaView.d.mts +6 -6
  111. package/dist/react/SchemaView.mjs +32 -29
  112. package/dist/react/a11y.d.mts +2 -2
  113. package/dist/react/fieldShell.d.mts +1 -1
  114. package/dist/react/headless.d.mts +1 -1
  115. package/dist/react/headlessRenderers.d.mts +2 -2
  116. package/dist/{ref-DdsbekXX.d.mts → ref-DWrQG1Er.d.mts} +1 -1
  117. package/dist/renderer-ab9E52Bp.d.mts +245 -0
  118. package/dist/solid/SchemaComponent.d.mts +136 -0
  119. package/dist/solid/SchemaComponent.mjs +391 -0
  120. package/dist/solid/SchemaErrorBoundary.d.mts +38 -0
  121. package/dist/solid/SchemaErrorBoundary.mjs +57 -0
  122. package/dist/solid/SchemaField.d.mts +40 -0
  123. package/dist/solid/SchemaField.mjs +113 -0
  124. package/dist/solid/SchemaView.d.mts +54 -0
  125. package/dist/solid/SchemaView.mjs +168 -0
  126. package/dist/solid/a11y.d.mts +70 -0
  127. package/dist/solid/a11y.mjs +71 -0
  128. package/dist/solid/contexts.d.mts +37 -0
  129. package/dist/solid/contexts.mjs +66 -0
  130. package/dist/solid/headless.d.mts +10 -0
  131. package/dist/solid/headless.mjs +27 -0
  132. package/dist/solid/renderers.d.mts +79 -0
  133. package/dist/solid/renderers.mjs +840 -0
  134. package/dist/solid/types.d.mts +90 -0
  135. package/dist/solid/types.mjs +1 -0
  136. package/dist/solid/widget.d.mts +29 -0
  137. package/dist/solid/widget.mjs +35 -0
  138. package/dist/themes/mantine.d.mts +1 -1
  139. package/dist/themes/mui.d.mts +1 -1
  140. package/dist/themes/radix.d.mts +1 -1
  141. package/dist/themes/shadcn.d.mts +1 -1
  142. package/dist/typeInference-Y8tNEQJk.d.mts +983 -0
  143. package/dist/types-BCy7K3nk.d.mts +125 -0
  144. package/package.json +73 -1
  145. package/src/svelte/SchemaComponent.svelte +427 -0
  146. package/src/svelte/SchemaErrorBoundary.svelte +66 -0
  147. package/src/svelte/SchemaField.svelte +216 -0
  148. package/src/svelte/SchemaProvider.svelte +46 -0
  149. package/src/svelte/SchemaView.svelte +244 -0
  150. package/src/svelte/a11y.ts +112 -0
  151. package/src/svelte/contexts.ts +79 -0
  152. package/src/svelte/dispatch.ts +267 -0
  153. package/src/svelte/headless.ts +73 -0
  154. package/src/svelte/headlessFns.ts +124 -0
  155. package/src/svelte/renderers/Array.svelte +98 -0
  156. package/src/svelte/renderers/Boolean.svelte +43 -0
  157. package/src/svelte/renderers/Conditional.svelte +67 -0
  158. package/src/svelte/renderers/DiscriminatedUnion.svelte +197 -0
  159. package/src/svelte/renderers/Enum.svelte +53 -0
  160. package/src/svelte/renderers/Fallback.svelte +24 -0
  161. package/src/svelte/renderers/File.svelte +46 -0
  162. package/src/svelte/renderers/Literal.svelte +29 -0
  163. package/src/svelte/renderers/Mount.svelte +24 -0
  164. package/src/svelte/renderers/Negation.svelte +35 -0
  165. package/src/svelte/renderers/Never.svelte +24 -0
  166. package/src/svelte/renderers/Null.svelte +19 -0
  167. package/src/svelte/renderers/Number.svelte +68 -0
  168. package/src/svelte/renderers/Object.svelte +74 -0
  169. package/src/svelte/renderers/Record.svelte +134 -0
  170. package/src/svelte/renderers/RecursionSentinel.svelte +27 -0
  171. package/src/svelte/renderers/String.svelte +152 -0
  172. package/src/svelte/renderers/Tuple.svelte +84 -0
  173. package/src/svelte/renderers/Union.svelte +49 -0
  174. package/src/svelte/renderers/Unknown.svelte +42 -0
  175. package/src/svelte/svelte-modules.d.ts +25 -0
  176. package/src/svelte/types.ts +238 -0
  177. package/src/svelte/widget.ts +62 -0
  178. package/src/vue/SchemaComponent.vue +274 -0
  179. package/src/vue/SchemaErrorBoundary.vue +60 -0
  180. package/src/vue/SchemaField.vue +178 -0
  181. package/src/vue/SchemaProvider.vue +39 -0
  182. package/src/vue/SchemaView.vue +198 -0
  183. package/src/vue/VNodeHost.ts +32 -0
  184. package/src/vue/contexts.ts +116 -0
  185. package/src/vue/eventTargets.ts +35 -0
  186. package/src/vue/headless.ts +61 -0
  187. package/src/vue/idPrefix.ts +79 -0
  188. package/src/vue/renderField.ts +182 -0
  189. package/src/vue/renderers.ts +1297 -0
  190. package/src/vue/resolver.ts +45 -0
  191. package/src/vue/types.ts +140 -0
  192. package/src/vue/vue-shim.d.ts +25 -0
  193. package/src/vue/widget.ts +51 -0
  194. /package/dist/{diagnostics-BTrm3O6J.d.mts → diagnostics-mftUZI7c.d.mts} +0 -0
  195. /package/dist/{limits-x4OiyJxh.d.mts → limits-Vv9hUbI_.d.mts} +0 -0
  196. /package/dist/{types-BrYbjC7_.d.mts → types-BBQaEPfE.d.mts} +0 -0
  197. /package/dist/{version-DL8U5RuA.d.mts → version-BEBx10ND.d.mts} +0 -0
@@ -1,2 +1,2 @@
1
- import { A as UnknownField, B as isNeverField, C as RecordField, D as StringField, E as StringConstraints, F as isDiscriminatedUnionField, G as isStringField, H as isNumberField, I as isEnumField, J as isUnknownField, K as isTupleField, L as isFileField, M as isArrayField, N as isBooleanField, O as TupleField, P as isConditionalField, R as isLiteralField, S as ObjectField, T as SchemaType, U as isObjectField, V as isNullField, W as isRecordField, Y as resolveEditability, _ as NeverField, a as DiscriminatedUnionField, b as NumberField, c as FieldBase, d as FieldOverrides, f as FileConstraints, g as NegationField, h as LiteralField, i as ConditionalField, j as WalkedField, k as UnionField, l as FieldConstraints, m as JsonObject, n as ArrayField, o as Editability, p as FileField, q as isUnionField, r as BooleanField, s as EnumField, t as ArrayConstraints, u as FieldOverride, v as NullField, w as SchemaMeta, x as ObjectConstraints, y as NumberConstraints, z as isNegationField } from "../types-BrYbjC7_.mjs";
1
+ import { A as UnknownField, B as isNeverField, C as RecordField, D as StringField, E as StringConstraints, F as isDiscriminatedUnionField, G as isStringField, H as isNumberField, I as isEnumField, J as isUnknownField, K as isTupleField, L as isFileField, M as isArrayField, N as isBooleanField, O as TupleField, P as isConditionalField, R as isLiteralField, S as ObjectField, T as SchemaType, U as isObjectField, V as isNullField, W as isRecordField, Y as resolveEditability, _ as NeverField, a as DiscriminatedUnionField, b as NumberField, c as FieldBase, d as FieldOverrides, f as FileConstraints, g as NegationField, h as LiteralField, i as ConditionalField, j as WalkedField, k as UnionField, l as FieldConstraints, m as JsonObject, n as ArrayField, o as Editability, p as FileField, q as isUnionField, r as BooleanField, s as EnumField, t as ArrayConstraints, u as FieldOverride, v as NullField, w as SchemaMeta, x as ObjectConstraints, y as NumberConstraints, z as isNegationField } from "../types-BBQaEPfE.mjs";
2
2
  export { ArrayConstraints, ArrayField, BooleanField, ConditionalField, DiscriminatedUnionField, Editability, EnumField, FieldBase, FieldConstraints, FieldOverride, FieldOverrides, FileConstraints, FileField, JsonObject, LiteralField, NegationField, NeverField, NullField, NumberConstraints, NumberField, ObjectConstraints, ObjectField, RecordField, SchemaMeta, SchemaType, StringConstraints, StringField, TupleField, UnionField, UnknownField, WalkedField, isArrayField, isBooleanField, isConditionalField, isDiscriminatedUnionField, isEnumField, isFileField, isLiteralField, isNegationField, isNeverField, isNullField, isNumberField, isObjectField, isRecordField, isStringField, isTupleField, isUnionField, isUnknownField, resolveEditability };
@@ -1,4 +1,4 @@
1
- import { j as WalkedField } from "../types-BrYbjC7_.mjs";
1
+ import { j as WalkedField } from "../types-BBQaEPfE.mjs";
2
2
 
3
3
  //#region src/core/unionMatch.d.ts
4
4
  /**
@@ -1,2 +1,2 @@
1
- import { a as detectJsonSchemaDraft, c as inferJsonSchemaDraftWithReason, d as isSwagger2, f as matchJsonSchemaDraftUri, i as OpenApiVersionInfo, l as isOpenApi30, n as JsonSchemaDialectInfo, o as detectOpenApiVersion, p as readJsonSchemaDialect, r as JsonSchemaDraft, s as inferJsonSchemaDraft, t as InferredDraft, u as isOpenApi31 } from "../version-DL8U5RuA.mjs";
1
+ import { a as detectJsonSchemaDraft, c as inferJsonSchemaDraftWithReason, d as isSwagger2, f as matchJsonSchemaDraftUri, i as OpenApiVersionInfo, l as isOpenApi30, n as JsonSchemaDialectInfo, o as detectOpenApiVersion, p as readJsonSchemaDialect, r as JsonSchemaDraft, s as inferJsonSchemaDraft, t as InferredDraft, u as isOpenApi31 } from "../version-BEBx10ND.mjs";
2
2
  export { InferredDraft, JsonSchemaDialectInfo, JsonSchemaDraft, OpenApiVersionInfo, detectJsonSchemaDraft, detectOpenApiVersion, inferJsonSchemaDraft, inferJsonSchemaDraftWithReason, isOpenApi30, isOpenApi31, isSwagger2, matchJsonSchemaDraftUri, readJsonSchemaDialect };
@@ -1,6 +1,6 @@
1
- import { A as UnknownField, D as StringField, b as NumberField, c as FieldBase, d as FieldOverrides, j as WalkedField, o as Editability, p as FileField, r as BooleanField, v as NullField, w as SchemaMeta } from "../types-BrYbjC7_.mjs";
2
- import { i as DiagnosticsOptions } from "../diagnostics-BTrm3O6J.mjs";
3
- import { t as ExternalResolver } from "../ref-DdsbekXX.mjs";
1
+ import { A as UnknownField, D as StringField, b as NumberField, c as FieldBase, d as FieldOverrides, j as WalkedField, o as Editability, p as FileField, r as BooleanField, v as NullField, w as SchemaMeta } from "../types-BBQaEPfE.mjs";
2
+ import { i as DiagnosticsOptions } from "../diagnostics-mftUZI7c.mjs";
3
+ import { t as ExternalResolver } from "../ref-DWrQG1Er.mjs";
4
4
 
5
5
  //#region src/core/walkBuilders.d.ts
6
6
  /** Read a key from a JSON object, returning the value when it is a string and `undefined` otherwise. */
@@ -1,4 +1,4 @@
1
- import { j as WalkedField } from "../types-BrYbjC7_.mjs";
1
+ import { j as WalkedField } from "../types-BBQaEPfE.mjs";
2
2
  import { WalkOptions } from "./walkBuilders.mjs";
3
3
 
4
4
  //#region src/core/walker.d.ts
@@ -1,4 +1,4 @@
1
- import { T as SchemaType } from "./types-BrYbjC7_.mjs";
1
+ import { T as SchemaType } from "./types-BBQaEPfE.mjs";
2
2
 
3
3
  //#region src/core/errors.d.ts
4
4
  /**
@@ -1,5 +1,5 @@
1
- import { j as WalkedField } from "../types-BrYbjC7_.mjs";
2
- import { AllConstraints } from "../core/renderer.mjs";
1
+ import { j as WalkedField } from "../types-BBQaEPfE.mjs";
2
+ import { t as AllConstraints } from "../renderer-ab9E52Bp.mjs";
3
3
  import { constraintHint } from "../core/constraintHint.mjs";
4
4
  import { HtmlAttributes, HtmlNode } from "./html.mjs";
5
5
 
@@ -1,8 +1,8 @@
1
- import { w as SchemaMeta } from "../types-BrYbjC7_.mjs";
2
- import { SchemaIoSide } from "../core/adapter.mjs";
3
- import { HtmlResolver } from "../core/renderer.mjs";
4
- import { RejectUnrepresentableZod } from "../core/typeInference.mjs";
5
- import { a as InferredValue, t as InferFields } from "../inferValue-Ce-PviSD.mjs";
1
+ import { w as SchemaMeta } from "../types-BBQaEPfE.mjs";
2
+ import { r as SchemaIoSide } from "../adapter-ktQaheWB.mjs";
3
+ import { s as HtmlResolver } from "../renderer-ab9E52Bp.mjs";
4
+ import { f as RejectUnrepresentableZod } from "../typeInference-Y8tNEQJk.mjs";
5
+ import { a as InferredValue, t as InferFields } from "../inferValue-eAnh50EM.mjs";
6
6
 
7
7
  //#region src/html/renderToHtml.d.ts
8
8
  /**
@@ -1,6 +1,6 @@
1
1
  import { toRecordOrUndefined } from "../core/guards.mjs";
2
- import "../core/limits.mjs";
3
2
  import { normaliseSchema } from "../core/adapter.mjs";
3
+ import { dispatchRenderField } from "../core/renderField.mjs";
4
4
  import { getHtmlRenderFn, mergeHtmlResolvers } from "../core/renderer.mjs";
5
5
  import { walk } from "../core/walker.mjs";
6
6
  import { h, serialize } from "./html.mjs";
@@ -78,31 +78,46 @@ function renderToHtml(schema, options = {}) {
78
78
  });
79
79
  const resolver = options.resolver ?? defaultHtmlResolver;
80
80
  const makeRenderChild = (currentDepth, parentPath) => (childTree, childValue, pathSuffix) => {
81
- if (currentDepth >= 10) return recursionSentinelHtml(typeof childTree.meta.description === "string" ? childTree.meta.description : "schema");
82
81
  const childPath = joinPath(parentPath, pathSuffix);
83
- return renderFieldHtml(childTree, childValue, resolver, childPath, makeRenderChild(currentDepth + 1, childPath));
82
+ return renderFieldHtml(childTree, childValue, resolver, childPath, makeRenderChild(currentDepth + 1, childPath), currentDepth + 1);
84
83
  };
85
84
  const renderChild = makeRenderChild(0, "");
86
- return renderFieldHtml(tree, options.value ?? tree.defaultValue, resolver, "", renderChild);
85
+ return renderFieldHtml(tree, options.value ?? tree.defaultValue, resolver, "", renderChild, 0);
87
86
  }
88
- function renderFieldHtml(tree, value, resolver, path, renderChild) {
87
+ function renderFieldHtml(tree, value, resolver, path, renderChild, depth = 0) {
89
88
  if (tree.meta.visible === false) return "";
90
89
  const effectiveValue = value ?? tree.defaultValue;
91
- const mergedResolver = mergeHtmlResolvers(resolver, defaultHtmlResolver);
92
- const renderFn = getHtmlRenderFn(tree.type, mergedResolver);
93
- if (renderFn === void 0) throw new Error(`renderToHtml: no HTML renderer registered for type "${tree.type}"`);
94
- const props = {
90
+ return dispatchRenderField({
91
+ tree,
95
92
  value: effectiveValue,
96
- readOnly: tree.editability === "presentation",
97
- writeOnly: tree.editability === "input",
98
- meta: tree.meta,
99
- constraints: tree.constraints,
100
93
  path,
101
- tree,
102
- renderChild
103
- };
104
- if (tree.examples !== void 0) props.examples = tree.examples;
105
- return renderFn(props);
94
+ depth,
95
+ resolver: mergeHtmlResolvers(resolver, defaultHtmlResolver),
96
+ config: {
97
+ buildProps: (fieldTree, fieldPath) => {
98
+ const props = {
99
+ value: effectiveValue,
100
+ readOnly: fieldTree.editability === "presentation",
101
+ writeOnly: fieldTree.editability === "input",
102
+ meta: fieldTree.meta,
103
+ constraints: fieldTree.constraints,
104
+ path: fieldPath,
105
+ tree: fieldTree,
106
+ renderChild
107
+ };
108
+ if (fieldTree.examples !== void 0) props.examples = fieldTree.examples;
109
+ return props;
110
+ },
111
+ lookupRenderFn: (type, htmlResolver) => getHtmlRenderFn(type, htmlResolver),
112
+ recursionSentinel: (fieldTree) => {
113
+ return recursionSentinelHtml(typeof fieldTree.meta.description === "string" ? fieldTree.meta.description : "schema");
114
+ },
115
+ fallback: (fieldTree) => {
116
+ throw new Error(`renderToHtml: no HTML renderer registered for type "${fieldTree.type}"`);
117
+ },
118
+ coerceResult: (result) => typeof result === "string" ? result : void 0
119
+ }
120
+ });
106
121
  }
107
122
  //#endregion
108
123
  export { recursionSentinelHtml, renderToHtml };
@@ -1,8 +1,8 @@
1
- import { w as SchemaMeta } from "../types-BrYbjC7_.mjs";
2
- import { SchemaIoSide } from "../core/adapter.mjs";
3
- import { HtmlResolver } from "../core/renderer.mjs";
4
- import { RejectUnrepresentableZod } from "../core/typeInference.mjs";
5
- import { a as InferredValue, t as InferFields } from "../inferValue-Ce-PviSD.mjs";
1
+ import { w as SchemaMeta } from "../types-BBQaEPfE.mjs";
2
+ import { r as SchemaIoSide } from "../adapter-ktQaheWB.mjs";
3
+ import { s as HtmlResolver } from "../renderer-ab9E52Bp.mjs";
4
+ import { f as RejectUnrepresentableZod } from "../typeInference-Y8tNEQJk.mjs";
5
+ import { a as InferredValue, t as InferFields } from "../inferValue-eAnh50EM.mjs";
6
6
 
7
7
  //#region src/html/renderToHtmlStream.d.ts
8
8
  /**
@@ -1,4 +1,4 @@
1
- import { HtmlResolver } from "../core/renderer.mjs";
1
+ import { s as HtmlResolver } from "../renderer-ab9E52Bp.mjs";
2
2
  import { dateInputType } from "../core/formats.mjs";
3
3
  import { matchUnionOption } from "../core/unionMatch.mjs";
4
4
 
@@ -1,6 +1,6 @@
1
- import { j as WalkedField } from "../types-BrYbjC7_.mjs";
2
- import { i as DiagnosticsOptions } from "../diagnostics-BTrm3O6J.mjs";
3
- import { HtmlResolver } from "../core/renderer.mjs";
1
+ import { j as WalkedField } from "../types-BBQaEPfE.mjs";
2
+ import { i as DiagnosticsOptions } from "../diagnostics-mftUZI7c.mjs";
3
+ import { s as HtmlResolver } from "../renderer-ab9E52Bp.mjs";
4
4
  import { HtmlElement } from "./html.mjs";
5
5
 
6
6
  //#region src/html/streamRenderers.d.ts
@@ -19,10 +19,19 @@ declare function yieldClose(el: HtmlElement): string;
19
19
  /**
20
20
  * Render a leaf {@link WalkedField} entirely as a single HTML chunk.
21
21
  * Used inside the streaming generators when descent into containers is
22
- * complete. Falls back to a `<span>`-wrapped value when no renderer is
23
- * registered for the field type.
22
+ * complete.
23
+ *
24
+ * Delegates to the framework-agnostic {@link dispatchRenderField}
25
+ * dispatcher so resolver lookup, the (unused) widget step, error
26
+ * wrapping, and the unresolved-type fallback share one implementation
27
+ * with the sync HTML renderer and the React adapter.
28
+ *
29
+ * @param depth - Current recursion depth — defaults to `0` so the
30
+ * public signature stays additive. Callers inside the streaming
31
+ * pipeline thread the live `currentDepth` so the dispatcher's
32
+ * internal depth check is consistent with the streamField gate.
24
33
  */
25
- declare function renderLeaf(tree: WalkedField, value: unknown, mergedResolver: HtmlResolver, path: string): string;
34
+ declare function renderLeaf(tree: WalkedField, value: unknown, mergedResolver: HtmlResolver, path: string, depth?: number): string;
26
35
  /**
27
36
  * Drain {@link streamField} into a single string. Used when a streamed
28
37
  * sub-tree needs to be embedded inside a non-streaming chunk (e.g. as
@@ -3,6 +3,7 @@ import "../core/limits.mjs";
3
3
  import { emitDiagnostic } from "../core/diagnostics.mjs";
4
4
  import { SC_CLASSES } from "../core/cssClasses.mjs";
5
5
  import { panelIdFor, tabIdFor } from "../core/idPath.mjs";
6
+ import { dispatchRenderField } from "../core/renderField.mjs";
6
7
  import { getHtmlRenderFn } from "../core/renderer.mjs";
7
8
  import { matchUnionOption, resolveDiscriminatedActive } from "../core/unionMatch.mjs";
8
9
  import { VOID_ELEMENTS, h, raw, serialize, serializeAttributes } from "./html.mjs";
@@ -29,14 +30,15 @@ function yieldClose(el) {
29
30
  return `</${el.tag}>`;
30
31
  }
31
32
  /**
32
- * Render a leaf {@link WalkedField} entirely as a single HTML chunk.
33
- * Used inside the streaming generators when descent into containers is
34
- * complete. Falls back to a `<span>`-wrapped value when no renderer is
35
- * registered for the field type.
33
+ * Build the per-leaf {@link HtmlRenderProps} bundle handed to resolver
34
+ * render functions and (in future) to widget renderers. The streaming
35
+ * pipeline never recurses through `renderChild` for leaves container
36
+ * recursion happens through the streamField generators — so the
37
+ * supplied `renderChild` is the constant `() => ""` stub matching the
38
+ * historic streaming-leaf shape.
36
39
  */
37
- function renderLeaf(tree, value, mergedResolver, path) {
38
- const renderFn = getHtmlRenderFn(tree.type, mergedResolver);
39
- if (renderFn !== void 0) return renderFn({
40
+ function buildLeafProps(tree, value, path) {
41
+ const props = {
40
42
  value,
41
43
  readOnly: tree.editability === "presentation",
42
44
  writeOnly: tree.editability === "input",
@@ -45,11 +47,55 @@ function renderLeaf(tree, value, mergedResolver, path) {
45
47
  path,
46
48
  tree,
47
49
  renderChild: () => ""
48
- });
50
+ };
51
+ if (tree.examples !== void 0) props.examples = tree.examples;
52
+ return props;
53
+ }
54
+ /**
55
+ * Build the streaming-friendly placeholder a {@link dispatchRenderField}
56
+ * fallback emits when no resolver handled the leaf type. The sync HTML
57
+ * dispatcher throws in this position — streaming must keep producing
58
+ * output, so the streaming adapter renders the same `<span>` shape
59
+ * `renderLeaf` historically produced for unresolved types.
60
+ */
61
+ function leafFallbackHtml(value) {
49
62
  if (value === void 0 || value === null) return serialize(h("span", { class: SC_CLASSES.valueEmpty }, "—"));
50
63
  return serialize(h("span", { class: SC_CLASSES.value }, typeof value === "string" ? value : JSON.stringify(value)));
51
64
  }
52
65
  /**
66
+ * Render a leaf {@link WalkedField} entirely as a single HTML chunk.
67
+ * Used inside the streaming generators when descent into containers is
68
+ * complete.
69
+ *
70
+ * Delegates to the framework-agnostic {@link dispatchRenderField}
71
+ * dispatcher so resolver lookup, the (unused) widget step, error
72
+ * wrapping, and the unresolved-type fallback share one implementation
73
+ * with the sync HTML renderer and the React adapter.
74
+ *
75
+ * @param depth - Current recursion depth — defaults to `0` so the
76
+ * public signature stays additive. Callers inside the streaming
77
+ * pipeline thread the live `currentDepth` so the dispatcher's
78
+ * internal depth check is consistent with the streamField gate.
79
+ */
80
+ function renderLeaf(tree, value, mergedResolver, path, depth = 0) {
81
+ return dispatchRenderField({
82
+ tree,
83
+ value,
84
+ path,
85
+ depth,
86
+ resolver: mergedResolver,
87
+ config: {
88
+ buildProps: (fieldTree, fieldPath) => buildLeafProps(fieldTree, value, fieldPath),
89
+ lookupRenderFn: (type, htmlResolver) => getHtmlRenderFn(type, htmlResolver),
90
+ recursionSentinel: (fieldTree) => {
91
+ return recursionSentinelHtml(typeof fieldTree.meta.description === "string" ? fieldTree.meta.description : "schema");
92
+ },
93
+ fallback: (_fieldTree, fieldValue) => leafFallbackHtml(fieldValue),
94
+ coerceResult: (result) => typeof result === "string" ? result : void 0
95
+ }
96
+ });
97
+ }
98
+ /**
53
99
  * Drain {@link streamField} into a single string. Used when a streamed
54
100
  * sub-tree needs to be embedded inside a non-streaming chunk (e.g. as
55
101
  * children of a parent element).
@@ -87,7 +133,7 @@ function* streamField(tree, value, mergedResolver, path, rawResolver, currentDep
87
133
  const effectiveValue = value ?? tree.defaultValue;
88
134
  const type = tree.type;
89
135
  if (type === "string" || type === "number" || type === "boolean" || type === "enum" || type === "literal" || type === "file" || type === "unknown") {
90
- yield renderLeaf(tree, effectiveValue, mergedResolver, path);
136
+ yield renderLeaf(tree, effectiveValue, mergedResolver, path, currentDepth);
91
137
  return;
92
138
  }
93
139
  if (type === "union") {
@@ -110,7 +156,7 @@ function* streamField(tree, value, mergedResolver, path, rawResolver, currentDep
110
156
  yield* streamRecord(tree, value, mergedResolver, path, rawResolver, currentDepth, diagnostics);
111
157
  return;
112
158
  }
113
- yield renderLeaf(tree, value, mergedResolver, path);
159
+ yield renderLeaf(tree, value, mergedResolver, path, currentDepth);
114
160
  }
115
161
  function* streamObject(tree, value, mergedResolver, path, rawResolver, currentDepth, diagnostics) {
116
162
  if (tree.type !== "object") return;
@@ -1,6 +1,6 @@
1
- import { d as FieldOverrides, u as FieldOverride } from "./types-BrYbjC7_.mjs";
2
- import { SchemaIoSide } from "./core/adapter.mjs";
3
- import { FromJSONSchema, FromJSONSchemaMode, IsSwagger2Doc, ResolveOpenAPIRef, TypeAtPath, __SchemaInferenceFellBack } from "./core/typeInference.mjs";
1
+ import { d as FieldOverrides, u as FieldOverride } from "./types-BBQaEPfE.mjs";
2
+ import { r as SchemaIoSide } from "./adapter-ktQaheWB.mjs";
3
+ import { c as IsSwagger2Doc, i as FromJSONSchemaMode, m as TypeAtPath, p as ResolveOpenAPIRef, r as FromJSONSchema, v as __SchemaInferenceFellBack } from "./typeInference-Y8tNEQJk.mjs";
4
4
  import { z } from "zod";
5
5
 
6
6
  //#region src/core/inferValue.d.ts
@@ -0,0 +1,125 @@
1
+ import { j as WalkedField, w as SchemaMeta } from "../types-BBQaEPfE.mjs";
2
+ import { t as Diagnostic } from "../diagnostics-mftUZI7c.mjs";
3
+ import { r as SchemaIoSide } from "../adapter-ktQaheWB.mjs";
4
+ import { r as LitRenderProps, t as LitComponentResolver } from "../types-BCy7K3nk.mjs";
5
+ import { LitElement, TemplateResult } from "lit";
6
+
7
+ //#region src/lit/SchemaComponent.d.ts
8
+ /**
9
+ * Public change-event detail emitted on the top-level `<schema-component>`.
10
+ *
11
+ * The `value` payload carries the updated root value as returned by
12
+ * the user's most recent edit. Consumers wire this into their
13
+ * framework's binding system — React via `addEventListener` on the
14
+ * canonical `change` event, Vue via a `@change` directive, Svelte
15
+ * via `on:change`. The detail object always carries a single
16
+ * `value` field with the post-edit root value.
17
+ */
18
+ interface SchemaChangeEventDetail {
19
+ value: unknown;
20
+ }
21
+ /**
22
+ * Lit Custom Element for editable schema-driven UI.
23
+ *
24
+ * Tag: `<schema-component>` (default) or `<{prefix}schema-component>`
25
+ * (when `registerSchemaComponents(prefix)` is called).
26
+ *
27
+ * **Required:** call {@link registerSchemaComponents} once at module
28
+ * setup before instantiating this element in HTML markup, otherwise
29
+ * none of the per-type `<sc-*>` children will upgrade and the tree
30
+ * will render as unknown elements.
31
+ */
32
+ declare class SchemaComponent extends LitElement {
33
+ /**
34
+ * Element property declarations.
35
+ *
36
+ * All four "data" properties (`schema`, `value`, `resolver`,
37
+ * `widgets`) carry `attribute: false`: Custom Element attributes
38
+ * are strings, and these payloads (an arbitrary Zod schema, an
39
+ * arbitrary JS value, a resolver function map, a widget tag map)
40
+ * cannot round-trip through attribute serialisation. Set them via
41
+ * direct property assignment.
42
+ *
43
+ * `readOnly` is a boolean attribute (and reflects to DOM) so the
44
+ * common "render read-only view" case is reachable from plain
45
+ * HTML markup (`<schema-component readonly></schema-component>`).
46
+ * The capitalisation is `readOnly` on the property and `readonly`
47
+ * on the attribute — matching the HTML `readonly` attribute on
48
+ * `<input>` / `<textarea>`.
49
+ */
50
+ static readonly properties: {
51
+ schema: {
52
+ attribute: boolean;
53
+ };
54
+ value: {
55
+ attribute: boolean;
56
+ };
57
+ resolver: {
58
+ attribute: boolean;
59
+ };
60
+ widgets: {
61
+ attribute: boolean;
62
+ };
63
+ fields: {
64
+ attribute: boolean;
65
+ };
66
+ meta: {
67
+ attribute: boolean;
68
+ };
69
+ ref: {
70
+ attribute: boolean;
71
+ };
72
+ io: {
73
+ attribute: boolean;
74
+ };
75
+ idPrefix: {
76
+ attribute: boolean;
77
+ };
78
+ onDiagnostic: {
79
+ attribute: boolean;
80
+ };
81
+ readOnly: {
82
+ type: BooleanConstructor;
83
+ reflect: boolean;
84
+ attribute: string;
85
+ };
86
+ strict: {
87
+ type: BooleanConstructor;
88
+ };
89
+ };
90
+ /**
91
+ * Reactive property declarations. Each field is declared with
92
+ * `declare` (no runtime emit) so Lit's `static properties`
93
+ * accessors are not shadowed by class-field initialisers. Default
94
+ * values are seeded in the constructor.
95
+ */
96
+ schema: unknown;
97
+ ref: string | undefined;
98
+ io: SchemaIoSide | undefined;
99
+ value: unknown;
100
+ resolver: LitComponentResolver | undefined;
101
+ widgets: ReadonlyMap<string, string> | undefined;
102
+ fields: Record<string, unknown> | undefined;
103
+ meta: SchemaMeta | undefined;
104
+ idPrefix: string | undefined;
105
+ readOnly: boolean;
106
+ strict: boolean;
107
+ onDiagnostic: ((diagnostic: Diagnostic) => void) | undefined;
108
+ constructor();
109
+ render(): TemplateResult;
110
+ /**
111
+ * Build the recursive `renderChild` closure threaded through every
112
+ * container renderer.
113
+ */
114
+ protected makeRenderChild(currentDepth: number, parentPath: string, userResolver: LitComponentResolver): LitRenderProps["renderChild"];
115
+ /**
116
+ * Dispatch a single walked field through the resolver, widget
117
+ * registry, and recursion limit. Parallel to
118
+ * `renderField` in `react/SchemaComponent.tsx`.
119
+ */
120
+ protected renderField(tree: WalkedField, value: unknown, change: (next: unknown) => void, userResolver: LitComponentResolver, renderChild: LitRenderProps["renderChild"], path: string): TemplateResult;
121
+ private applyWidgetProperties;
122
+ private buildDiagnostics;
123
+ }
124
+ //#endregion
125
+ export { SchemaChangeEventDetail, SchemaComponent };
@@ -0,0 +1,2 @@
1
+ import { t as SchemaComponent } from "../SchemaComponent-BxzzsHsK.mjs";
2
+ export { SchemaComponent };
@@ -0,0 +1,65 @@
1
+ import { SchemaComponent } from "./SchemaComponent.mjs";
2
+ import { TemplateResult } from "lit";
3
+
4
+ //#region src/lit/SchemaField.d.ts
5
+ /**
6
+ * Lit Custom Element rendering a single sub-field of a schema.
7
+ *
8
+ * Tag: `<schema-field>` (registered by `registerSchemaComponents`).
9
+ */
10
+ declare class SchemaField extends SchemaComponent {
11
+ /**
12
+ * Dot-separated path identifying the field to render
13
+ * (e.g. `"address.city"` or `"tags[0]"`). Declared via `declare`
14
+ * so Lit's accessor (installed by the static `properties` table)
15
+ * is not shadowed by a class-field initialiser.
16
+ */
17
+ path: string;
18
+ static readonly properties: {
19
+ path: {
20
+ attribute: boolean;
21
+ };
22
+ schema: {
23
+ attribute: boolean;
24
+ };
25
+ value: {
26
+ attribute: boolean;
27
+ };
28
+ resolver: {
29
+ attribute: boolean;
30
+ };
31
+ widgets: {
32
+ attribute: boolean;
33
+ };
34
+ fields: {
35
+ attribute: boolean;
36
+ };
37
+ meta: {
38
+ attribute: boolean;
39
+ };
40
+ ref: {
41
+ attribute: boolean;
42
+ };
43
+ io: {
44
+ attribute: boolean;
45
+ };
46
+ idPrefix: {
47
+ attribute: boolean;
48
+ };
49
+ onDiagnostic: {
50
+ attribute: boolean;
51
+ };
52
+ readOnly: {
53
+ type: BooleanConstructor;
54
+ reflect: boolean;
55
+ attribute: string;
56
+ };
57
+ strict: {
58
+ type: BooleanConstructor;
59
+ };
60
+ };
61
+ constructor();
62
+ render(): TemplateResult;
63
+ }
64
+ //#endregion
65
+ export { SchemaField };
@@ -0,0 +1,2 @@
1
+ import { o as SchemaField } from "../SchemaComponent-BxzzsHsK.mjs";
2
+ export { SchemaField };
@@ -0,0 +1,14 @@
1
+ import { SchemaComponent } from "./SchemaComponent.mjs";
2
+
3
+ //#region src/lit/SchemaView.d.ts
4
+ /**
5
+ * Lit Custom Element rendering a schema in read-only mode.
6
+ *
7
+ * Tag: `<schema-view>` (registered by `registerSchemaComponents`).
8
+ */
9
+ declare class SchemaView extends SchemaComponent {
10
+ constructor();
11
+ connectedCallback(): void;
12
+ }
13
+ //#endregion
14
+ export { SchemaView };
@@ -0,0 +1,2 @@
1
+ import { s as SchemaView } from "../SchemaComponent-BxzzsHsK.mjs";
2
+ export { SchemaView };
@@ -0,0 +1,2 @@
1
+ import { t as Constructor } from "../constructorTypes-BdCiMS6e.mjs";
2
+ export { Constructor };
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,78 @@
1
+ import { ContextPort } from "../core/contexts.mjs";
2
+ import { t as LitComponentResolver } from "../types-BCy7K3nk.mjs";
3
+ import { ReactiveControllerHost, ReactiveElement } from "lit";
4
+
5
+ //#region src/lit/contexts.d.ts
6
+ /**
7
+ * Context key identifying the {@link LitComponentResolver} provided at
8
+ * a host element. Re-used by every built-in `<sc-*>` Custom Element so
9
+ * a single `<schema-component>` provider seeds the whole subtree —
10
+ * matching the behaviour of `<SchemaProvider>` on the React side.
11
+ *
12
+ * The literal `"sc-resolver"` value is the runtime key carried in the
13
+ * Context Protocol's `context-request` event; consumers and providers
14
+ * must use the same `Context` object (not just the same string) to
15
+ * match, which is why this is exported rather than redeclared per
16
+ * element.
17
+ */
18
+ declare const resolverContext: {
19
+ __context__: LitComponentResolver;
20
+ };
21
+ /**
22
+ * Lit binding wrapping `ContextProvider` / `ContextConsumer` from
23
+ * `@lit/context` for the {@link resolverContext}.
24
+ *
25
+ * The port is host-scoped — both `provide` and `consume` require a
26
+ * `ReactiveControllerHost` reference so `@lit/context` can register
27
+ * its controllers on the element's lifecycle. This is unavoidable
28
+ * given Lit's reactive update model and is the reason the Lit port
29
+ * does not match the canonical {@link ContextPort} signature in
30
+ * `core/contexts.ts` directly — see this module's docstring for the
31
+ * rationale.
32
+ */
33
+ declare const resolverContextPort: {
34
+ provide(host: ReactiveControllerHost & ReactiveElement, value: LitComponentResolver): {
35
+ setValue: (value: LitComponentResolver) => void;
36
+ };
37
+ consume(host: ReactiveControllerHost & ReactiveElement): {
38
+ readonly value?: LitComponentResolver;
39
+ };
40
+ };
41
+ /**
42
+ * Widget map — name → custom element tag.
43
+ *
44
+ * Where the React adapter's `WidgetMap` is `ReadonlyMap<string, RenderFunction>`
45
+ * (a function value per hint name), the Lit adapter resolves widgets by
46
+ * Custom Element tag name. A schema field carrying
47
+ * `.meta({ component: "color-picker" })` looks up `widgets.get("color-picker")`
48
+ * and renders the matching tag — preserving the Web-Components-native
49
+ * pattern where every renderer override IS a Custom Element.
50
+ *
51
+ * Tags must be registered via `customElements.define` before they can
52
+ * be rendered. Unregistered tags surface as unknown elements with no
53
+ * upgrade — matching the browser's behaviour rather than throwing.
54
+ */
55
+ type LitWidgetMap = ReadonlyMap<string, string>;
56
+ /**
57
+ * Context key for {@link LitWidgetMap}.
58
+ */
59
+ declare const widgetsContext: {
60
+ __context__: LitWidgetMap;
61
+ };
62
+ /**
63
+ * Lit binding wrapping `ContextProvider` / `ContextConsumer` from
64
+ * `@lit/context` for the {@link widgetsContext}. Parallel to
65
+ * {@link resolverContextPort}; see that export for the rationale on
66
+ * why the Lit port is host-scoped rather than matching the canonical
67
+ * {@link ContextPort} signature directly.
68
+ */
69
+ declare const widgetsContextPort: {
70
+ provide(host: ReactiveControllerHost & ReactiveElement, value: LitWidgetMap): {
71
+ setValue: (value: LitWidgetMap) => void;
72
+ };
73
+ consume(host: ReactiveControllerHost & ReactiveElement): {
74
+ readonly value?: LitWidgetMap;
75
+ };
76
+ };
77
+ //#endregion
78
+ export { type ContextPort, LitWidgetMap, resolverContext, resolverContextPort, widgetsContext, widgetsContextPort };