cf-json-schema-viz 0.1.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.
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/contexts/jsvOptions.tsx","../src/guards/isNonNullable.ts","../src/tree/utils.ts","../src/components/SchemaRow/state.ts","../src/components/PathCrumbs/state.ts","../src/components/PathCrumbs/index.tsx","../src/consts.ts","../src/hash.ts","../src/utils/extractVendorExtensions.ts","../src/components/shared/Caret.tsx","../src/components/shared/ChildStack.tsx","../src/components/shared/Description.tsx","../src/components/shared/Divider.tsx","../src/utils/getInternalSchemaError.ts","../src/components/shared/Error.tsx","../src/components/shared/NodeAnnotation.tsx","../src/components/shared/Properties.tsx","../src/components/shared/Select.tsx","../src/utils/getApplicableFormats.ts","../src/utils/printName.ts","../src/components/shared/Types.tsx","../src/components/shared/Validations.tsx","../src/components/SchemaRow/useChoices.ts","../src/components/SchemaRow/SchemaRow.tsx","../src/components/SchemaRow/TopLevelSchemaRow.tsx","../src/components/JsonSchemaViewer.tsx"],"names":["React","atom","isRootNode","isRegularNode","hash","isPlainObject","jsx","React3","clsx","React4","jsxs","useAtomValue","React5","isReferenceNode","SchemaNodeKind","Fragment","BaseSelect","isBooleanishNode","React6","React7","React8","getStoplightId","React9","CaretDown","React10","useSetAtom","JsonSchemaTree","nodeCount","isEmpty"],"mappings":"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","file":"index.js","sourcesContent":["import * as React from 'react';\n\nimport { ExtensionAddonRenderer, GoToRefHandler, RowAddonRenderer, ViewMode } from '../types';\n\nexport type ChangeType = 'added' | 'removed' | 'modified';\n\nexport type NodeHasChangedFn = (props: {\n nodeId: string;\n mode?: 'read' | 'write';\n}) => { type: ChangeType } | undefined;\n\nexport type JSVOptions = {\n defaultExpandedDepth: number;\n viewMode: ViewMode;\n onGoToRef?: GoToRefHandler;\n renderRowAddon?: RowAddonRenderer;\n renderExtensionAddon?: ExtensionAddonRenderer;\n hideExamples?: boolean;\n renderRootTreeLines?: boolean;\n disableCrumbs?: boolean;\n nodeHasChanged?: NodeHasChangedFn;\n};\n\nconst JSVOptionsContext = React.createContext<JSVOptions>({\n defaultExpandedDepth: 0,\n viewMode: 'standalone',\n hideExamples: false,\n});\n\nexport const useJSVOptionsContext = () => React.useContext(JSVOptionsContext);\n\nexport const JSVOptionsContextProvider = JSVOptionsContext.Provider;\n","export function isNonNullable<T = unknown>(maybeNullable: T): maybeNullable is NonNullable<T> {\n return maybeNullable !== void 0 && maybeNullable !== null;\n}\n","import { isPlainObject } from '@stoplight/json';\nimport {\n type MirroredSchemaNode,\n type ReferenceNode,\n type RegularNode,\n type SchemaNode,\n isBooleanishNode,\n isReferenceNode,\n isRegularNode,\n isRootNode,\n SchemaNodeKind,\n} from '@stoplight/json-schema-tree';\nimport { BooleanishNode } from '@stoplight/json-schema-tree/nodes/BooleanishNode';\n\nimport { isNonNullable } from '../guards/isNonNullable';\nimport type { ViewMode } from '../types';\nimport type {\n ArrayNode,\n ComplexArrayNode,\n ComplexDictionaryNode,\n DictionaryNode,\n FlattenableNode,\n PrimitiveArrayNode,\n PrimitiveDictionaryNode,\n} from './types';\n\nexport type ChildNode = RegularNode | ReferenceNode | MirroredSchemaNode;\n\nexport const isNonEmptyParentNode = (\n node: SchemaNode,\n): node is RegularNode & {\n children: ChildNode[] & { 0: ChildNode };\n} => isRegularNode(node) && !!node.children && node.children.length > 0;\n\nexport function isFlattenableNode(node: SchemaNode): node is FlattenableNode {\n if (!isRegularNode(node)) return false;\n\n if ((!isArrayNode(node) && !isDictionaryNode(node)) || !isNonNullable(node.children) || node.children.length === 0) {\n return false;\n }\n\n return (\n node.children.length === 1 &&\n ((isRegularNode(node.children[0]) && (!isArrayNode(node) || !isDictionaryNode(node.children[0]))) ||\n (isReferenceNode(node.children[0]) && node.children[0].error !== null))\n );\n}\n\nexport function isPrimitiveArray(node: SchemaNode): node is PrimitiveArrayNode {\n return isFlattenableNode(node) && isArrayNode(node) && isRegularNode(node.children[0]) && node.children[0].simple;\n}\n\nexport function isPrimitiveDictionary(node: SchemaNode): node is PrimitiveDictionaryNode {\n return (\n isFlattenableNode(node) && isDictionaryNode(node) && isRegularNode(node.children[0]) && node.children[0].simple\n );\n}\n\nexport function isComplexArray(node: SchemaNode): node is ComplexArrayNode {\n return isFlattenableNode(node) && isArrayNode(node) && isRegularNode(node.children[0]) && !node.children[0].simple;\n}\n\nexport function isComplexDictionary(node: SchemaNode): node is ComplexDictionaryNode {\n return (\n isFlattenableNode(node) && isDictionaryNode(node) && isRegularNode(node.children[0]) && !node.children[0].simple\n );\n}\n\nexport function isDictionaryNode(node: SchemaNode): node is DictionaryNode {\n return (\n isRegularNode(node) &&\n node.primaryType === SchemaNodeKind.Object &&\n isPlainObject(node.fragment.additionalProperties)\n );\n}\n\nexport function isArrayNode(node: SchemaNode): node is ArrayNode {\n return isRegularNode(node) && node.primaryType === SchemaNodeKind.Array;\n}\n\n/**\n * Returns the children of `node` that should be displayed in a viewer or\n * editor. Defaults to `node.children`, except for Arrays that get special\n * handling (flattening).\n */\nexport function visibleChildren(node: SchemaNode): SchemaNode[] {\n if (!isRegularNode(node) || isPrimitiveArray(node) || isPrimitiveDictionary(node)) {\n return [];\n }\n if (isComplexArray(node) || isComplexDictionary(node)) {\n // flatten the tree here, and show the properties of the item type directly\n return node.children[0].children ?? [];\n }\n return node.children ?? [];\n}\n\nexport function isPropertyRequired(schemaNode: SchemaNode): boolean {\n const { parent } = schemaNode;\n if (parent === null || !isRegularNode(parent) || schemaNode.subpath.length === 0) {\n return false;\n }\n\n return !!parent.required?.includes(schemaNode.subpath[schemaNode.subpath.length - 1]);\n}\n\nfunction isValidViewMode(node: RegularNode, viewMode: ViewMode): boolean {\n const { validations } = node;\n\n if (!!validations.writeOnly === !!validations.readOnly) {\n return true;\n }\n\n return !((viewMode === 'read' && !!validations.writeOnly) || (viewMode === 'write' && !!validations.readOnly));\n}\n\nfunction isRenderableNode(node: BooleanishNode | RegularNode): boolean {\n if (node.parent === null) return true;\n\n if (isDictionaryNode(node.parent)) {\n // if dictionary, do not render explicitly defined properties\n return node.subpath.length !== 2 || node.subpath[0] !== 'properties';\n }\n\n // do not render additionalItems\n if (isArrayNode(node.parent)) {\n return node.subpath[0] !== 'additionalItems';\n }\n\n // do not render true/false additionalProperties\n if (isRegularNode(node.parent) && node.parent.primaryType === SchemaNodeKind.Object && isBooleanishNode(node)) {\n return !(node.subpath.length === 1 || node.subpath[0] === 'additionalProperties');\n }\n\n return true;\n}\n\nexport function shouldNodeBeIncluded(node: SchemaNode, viewMode: ViewMode = 'standalone'): boolean {\n return (\n (isReferenceNode(node) || isRootNode(node) || isRenderableNode(node)) &&\n (!isRegularNode(node) || isValidViewMode(node, viewMode))\n );\n}\n","import { SchemaNode } from '@stoplight/json-schema-tree';\nimport { atom } from 'jotai';\nimport { atomFamily } from 'jotai/utils';\n\nexport const hoveredNodeAtom = atom<SchemaNode | null>(null);\n\nexport const isNodeHoveredAtom = atomFamily((node: SchemaNode) =>\n atom(get => node === get(hoveredNodeAtom)),\n);\n\nexport const isChildNodeHoveredAtom = atomFamily((parent: SchemaNode) =>\n atom(get => {\n const hoveredNode = get(hoveredNodeAtom);\n\n if (!hoveredNode || hoveredNode === parent) return false;\n\n return hoveredNode.parent === parent;\n }),\n);\n","import { isRegularNode, isRootNode, SchemaNode } from '@stoplight/json-schema-tree';\nimport { atom } from 'jotai';\n\nimport { hoveredNodeAtom } from '../SchemaRow/state';\n\nexport const pathCrumbsAtom = atom(get => {\n const node = get(hoveredNodeAtom);\n\n if (!node) return [];\n\n return propertyPathToObjectPath(node as SchemaNode);\n});\n\nfunction propertyPathToObjectPath(node: SchemaNode) {\n const objectPath: string[] = [];\n\n let currentNode: SchemaNode | null = node;\n while (currentNode && !isRootNode(currentNode)) {\n if (isRegularNode(currentNode)) {\n const pathPart = currentNode.subpath[currentNode.subpath.length - 1];\n\n if (currentNode.primaryType === 'array') {\n const key = `${pathPart || ''}[]`;\n if (objectPath[objectPath.length - 1]) {\n objectPath[objectPath.length - 1] = key;\n } else {\n objectPath.push(key);\n }\n } else if (\n pathPart &&\n (currentNode.subpath.length !== 2 || !['allOf', 'oneOf', 'anyOf'].includes(currentNode.subpath[0]))\n ) {\n objectPath.push(currentNode.subpath[currentNode.subpath.length - 1]);\n }\n }\n\n currentNode = currentNode.parent;\n }\n\n return objectPath.reverse();\n}\n","import { useAtomValue } from 'jotai';\nimport * as React from 'react';\n\nimport { useJSVOptionsContext } from '../../contexts';\nimport { pathCrumbsAtom } from './state';\n\nconst SCROLL_THRESHOLD = 20; // pixels scrolled before showing crumbs\n\nexport const PathCrumbs: React.FC<{ parentCrumbs?: string[] }> = ({ parentCrumbs = [] }) => {\n const pathCrumbs = useAtomValue(pathCrumbsAtom);\n const { disableCrumbs } = useJSVOptionsContext();\n const crumbsRef = React.useRef<HTMLDivElement>(null);\n const [style, setStyle] = React.useState<React.CSSProperties>({\n position: 'fixed',\n top: -100, // Start off-screen\n left: 0,\n width: 0,\n });\n const [hasScrolled, setHasScrolled] = React.useState(false);\n\n // JS-based sticky positioning\n React.useEffect(() => {\n const crumbsEl = crumbsRef.current;\n if (!crumbsEl) return;\n\n const scrollContainer = crumbsEl.closest('.jsv-root') as HTMLElement;\n if (!scrollContainer) return;\n\n const updatePosition = () => {\n const containerRect = scrollContainer.getBoundingClientRect();\n const scrolled = scrollContainer.scrollTop > SCROLL_THRESHOLD;\n \n setHasScrolled(scrolled);\n setStyle({\n position: 'fixed',\n top: Math.max(0, containerRect.top),\n left: containerRect.left,\n width: containerRect.width,\n });\n };\n\n updatePosition();\n scrollContainer.addEventListener('scroll', updatePosition);\n window.addEventListener('scroll', updatePosition);\n window.addEventListener('resize', updatePosition);\n\n return () => {\n scrollContainer.removeEventListener('scroll', updatePosition);\n window.removeEventListener('scroll', updatePosition);\n window.removeEventListener('resize', updatePosition);\n };\n }, []);\n\n if (disableCrumbs) {\n return null;\n }\n\n const parentCrumbElems: React.ReactNode[] = [];\n parentCrumbs.forEach((crumb, i) => {\n parentCrumbElems.push(<span key={i}>{crumb}</span>);\n });\n\n const pathCrumbElems: React.ReactNode[] = [];\n pathCrumbs.forEach((crumb, i) => {\n if (pathCrumbs[i + 1]) {\n pathCrumbElems.push(<span key={i}>{crumb}</span>);\n } else {\n pathCrumbElems.push(\n <span key={i} className=\"jsv-crumb-current\">\n {crumb}\n </span>,\n );\n }\n });\n\n // Only show content when there's at least one crumb to display AND user has scrolled\n const hasCrumbs = parentCrumbElems.length > 0 || pathCrumbElems.length > 0;\n const isVisible = hasCrumbs && hasScrolled;\n\n return (\n <div ref={crumbsRef} className=\"jsv-crumbs\" style={style} data-visible={isVisible}>\n {parentCrumbElems.map((elem, i) => (\n <React.Fragment key={`parent-${i}`}>\n {elem}\n {i < parentCrumbElems.length - 1 && <span>/</span>}\n </React.Fragment>\n ))}\n {parentCrumbElems.length > 0 && pathCrumbElems.length > 0 && <span>/</span>}\n {pathCrumbElems.map((elem, i) => (\n <React.Fragment key={`path-${i}`}>\n {elem}\n {i < pathCrumbElems.length - 1 && <span style={{ fontWeight: 700 }}>.</span>}\n </React.Fragment>\n ))}\n </div>\n );\n};\n","import { SchemaCombinerName } from '@stoplight/json-schema-tree';\n\nexport const COMBINER_PRETTY_NAMES: Readonly<Record<SchemaCombinerName, string>> = {\n [SchemaCombinerName.AllOf]: 'and',\n [SchemaCombinerName.AnyOf]: 'and/or',\n [SchemaCombinerName.OneOf]: 'or',\n};\n\nexport const COMMON_JSON_SCHEMA_AND_OAS_FORMATS: Readonly<Record<string, readonly string[]>> = {\n // strings are omitted because they are the default type to apply format to\n number: ['byte', 'int32', 'int64', 'float', 'double'],\n get integer() {\n return this.number;\n },\n};\n\nexport const NESTING_OFFSET = 3;\n\nexport const COMBINER_NAME_MAP: Record<SchemaCombinerName, string> = {\n allOf: 'all of',\n anyOf: 'any of',\n oneOf: 'one of',\n};\n","import { isPlainObject } from '@stoplight/json';\nimport type { SchemaFragment, SchemaNode } from '@stoplight/json-schema-tree';\n\n// for easier debugging the values going into hash\nlet SKIP_HASHING = false;\n\nexport const setSkipHashing = (skip: boolean) => {\n SKIP_HASHING = skip;\n};\n\n// Simple FNV-1a 52-bit hash implementation\n// This produces the same output as fnv.fast1a52hex()\nfunction fnv1a52(str: string): string {\n const FNV_PRIME = 0x01000193;\n const FNV_OFFSET = 0x811c9dc5;\n \n let hash = FNV_OFFSET;\n for (let i = 0; i < str.length; i++) {\n hash ^= str.charCodeAt(i);\n hash = Math.imul(hash, FNV_PRIME);\n }\n \n // Convert to unsigned 32-bit and then to hex\n const hash32 = hash >>> 0;\n return hash32.toString(16).padStart(8, '0');\n}\n\nexport const hash = (value: string, skipHashing: boolean = SKIP_HASHING): string => {\n // Never change this, as it would affect how the default stable id is generated, and cause mismatches with whatever\n // we already have stored in our DB etc.\n return skipHashing ? value : fnv1a52(value);\n};\n\nfunction getStoplightId(fragment: SchemaFragment | boolean): string | undefined {\n if (typeof fragment === 'boolean') return undefined;\n const xStoplight = fragment['x-stoplight' as keyof typeof fragment];\n if (isPlainObject(xStoplight)) {\n const id = (xStoplight as Record<string, unknown>).id;\n return typeof id === 'string' ? id : undefined;\n }\n return undefined;\n}\n\nexport const getNodeId = (node: SchemaNode, parentId?: string): string => {\n const nodeId = getStoplightId(node.fragment);\n if (nodeId) return nodeId;\n\n const key = node.path[node.path.length - 1];\n\n return hash(['schema_property', parentId, String(key)].join('-'));\n};\n\nexport const getOriginalNodeId = (node: SchemaNode, parentId?: string): string => {\n // @ts-expect-error originalFragment does exist...\n const nodeId = getStoplightId(node.originalFragment);\n if (nodeId) return nodeId;\n\n const key = node.path[node.path.length - 1];\n\n return hash(['schema_property', parentId, String(key)].join('-'));\n};\n","import { SchemaFragment } from '@stoplight/json-schema-tree';\n\nexport type VendorExtensionsList = {\n [keyof: string]: unknown;\n};\n\nexport type VendorExtensionsResult = [number, VendorExtensionsList];\n\n/**\n * Extract all vendor extensions or properties prefix with 'x-' from the schema definition\n * @param fragment The fragment to extract the vendor extensions from\n * @returns VendorExtensionsResult\n */\nexport function extractVendorExtensions(fragment: SchemaFragment | boolean): VendorExtensionsResult {\n if (typeof fragment === 'boolean') {\n return [0, {}];\n }\n\n const extensionKeys = Object.entries(fragment).filter(([key]) => key.startsWith('x-'));\n let vendorExtensions: VendorExtensionsList = {};\n\n for (const [key, value] of extensionKeys) {\n vendorExtensions[key] = value;\n }\n\n return [extensionKeys.length, vendorExtensions];\n}\n","import { CaretRight } from '@phosphor-icons/react';\nimport { clsx } from 'clsx';\nimport * as React from 'react';\n\nexport interface CaretProps {\n isExpanded: boolean;\n}\n\nexport const Caret: React.FC<CaretProps> = ({ isExpanded }) => (\n <span\n className={clsx('jsv-caret', isExpanded && 'jsv-caret-expanded')}\n role=\"button\"\n aria-expanded={isExpanded}\n >\n <CaretRight size={12} weight=\"bold\" />\n </span>\n);\n","import { SchemaNode } from '@stoplight/json-schema-tree';\nimport { clsx } from 'clsx';\nimport * as React from 'react';\n\nimport { useJSVOptionsContext } from '../../contexts';\nimport { SchemaRow, SchemaRowProps } from '../SchemaRow';\n\ntype ChangeType = 'added' | 'removed' | 'modified';\n\ntype ChildStackProps = {\n schemaNode: SchemaNode;\n childNodes: readonly SchemaNode[];\n currentNestingLevel: number;\n className?: string;\n parentNodeId?: string;\n RowComponent?: React.FC<SchemaRowProps>;\n parentChangeType?: ChangeType;\n};\n\nexport const ChildStack = React.memo(\n ({\n childNodes,\n currentNestingLevel,\n className,\n RowComponent = SchemaRow,\n parentNodeId,\n parentChangeType,\n }: ChildStackProps) => {\n const { renderRootTreeLines } = useJSVOptionsContext();\n const rootLevel = renderRootTreeLines ? 0 : 1;\n const isRootLevel = currentNestingLevel < rootLevel;\n\n return (\n <div\n className={clsx(\n 'jsv-child-stack',\n !isRootLevel && 'jsv-child-stack-nested',\n className,\n )}\n data-level={currentNestingLevel}\n >\n {childNodes.map((childNode: SchemaNode) => (\n <RowComponent\n key={childNode.id}\n schemaNode={childNode}\n nestingLevel={currentNestingLevel + 1}\n parentNodeId={parentNodeId}\n parentChangeType={parentChangeType}\n />\n ))}\n </div>\n );\n },\n);\n\nChildStack.displayName = 'ChildStack';\n","import * as React from 'react';\n\nexport interface DescriptionProps {\n value: unknown;\n}\n\nexport const Description: React.FC<DescriptionProps> = ({ value }) => {\n const [showAll, setShowAll] = React.useState(false);\n\n if (typeof value !== 'string' || value.trim().length === 0) return null;\n\n const paragraphs = value.split('\\n\\n');\n\n if (paragraphs.length <= 1 || showAll) {\n return (\n <div className=\"jsv-description\" data-test=\"property-description\">\n {value}\n </div>\n );\n }\n\n const firstParagraph = paragraphs[0];\n\n return (\n <div className=\"jsv-description\" data-test=\"property-description\">\n <p>\n <span className=\"mr-1\">{firstParagraph}</span>\n <button\n type=\"button\"\n className=\"text-jsv-primary cursor-pointer hover:underline\"\n onClick={() => setShowAll(true)}\n >\n Show all...\n </button>\n </p>\n </div>\n );\n};\n","import { clsx } from 'clsx';\nimport { Atom, useAtomValue } from 'jotai';\nimport * as React from 'react';\n\ninterface DividerProps {\n hoveredAtom: Atom<boolean>;\n}\n\nexport const Divider: React.FC<DividerProps> = ({ hoveredAtom }) => {\n const isHovered = useAtomValue(hoveredAtom);\n\n return (\n <span className={clsx('jsv-divider', isHovered && 'jsv-divider-visible')} />\n );\n};\n","import { isPlainObject } from '@stoplight/json';\nimport type { SchemaNode } from '@stoplight/json-schema-tree';\n\nexport function getInternalSchemaError(schemaNode: SchemaNode): string | undefined {\n let errorMessage;\n const fragment: unknown = schemaNode.fragment;\n if (!isPlainObject(fragment)) return;\n\n const xStoplight = fragment['x-stoplight'];\n\n if (isPlainObject(xStoplight) && typeof xStoplight['error-message'] === 'string') {\n errorMessage = xStoplight['error-message'];\n } else {\n const fragmentErrorMessage = fragment['x-sl-error-message'];\n if (typeof fragmentErrorMessage === 'string') {\n errorMessage = fragmentErrorMessage;\n } else {\n const items: unknown = fragment['items'];\n if (isPlainObject(items)) {\n const itemsErrorMessage = items['x-sl-error-message'];\n if (typeof itemsErrorMessage === 'string') {\n errorMessage = itemsErrorMessage;\n }\n }\n }\n }\n\n return errorMessage;\n}\n","import { isReferenceNode, isRegularNode, ReferenceNode, SchemaNode, SchemaNodeKind } from '@stoplight/json-schema-tree';\nimport { Warning } from '@phosphor-icons/react';\nimport * as React from 'react';\n\nimport { isFlattenableNode } from '../../tree';\nimport { getInternalSchemaError } from '../../utils/getInternalSchemaError';\n\nfunction useRefNode(schemaNode: SchemaNode) {\n return React.useMemo<ReferenceNode | null>(() => {\n if (isReferenceNode(schemaNode)) {\n return schemaNode;\n }\n\n if (\n isRegularNode(schemaNode) &&\n (isFlattenableNode(schemaNode) ||\n (schemaNode.primaryType === SchemaNodeKind.Array && schemaNode.children?.length === 1))\n ) {\n return (schemaNode.children?.find(isReferenceNode) as ReferenceNode | undefined) ?? null;\n }\n\n return null;\n }, [schemaNode]);\n}\n\nexport const Error: React.FC<{ schemaNode: SchemaNode }> = ({ schemaNode }) => {\n const refNode = useRefNode(schemaNode);\n const error = getInternalSchemaError(schemaNode) ?? refNode?.error;\n\n if (typeof error !== 'string') return null;\n\n return (\n <span className=\"inline-block ml-1.5\" title={error}>\n <Warning className=\"jsv-error\" size={16} aria-label={error} />\n </span>\n );\n};\n","import { clsx } from 'clsx';\nimport * as React from 'react';\n\ntype ChangeType = 'added' | 'removed' | 'modified';\n\nexport interface NodeAnnotationProps {\n change?: { type: ChangeType } | null;\n style?: React.CSSProperties;\n}\n\nexport const NodeAnnotation: React.FC<NodeAnnotationProps> = ({ change, style }) => {\n if (!change) return null;\n\n return (\n <span\n className={clsx(\n 'jsv-annotation',\n change.type === 'added' && 'jsv-annotation-added',\n change.type === 'removed' && 'jsv-annotation-removed',\n change.type === 'modified' && 'jsv-annotation-modified',\n )}\n style={style}\n aria-label={`${change.type} property`}\n />\n );\n};\n","import * as React from 'react';\n\nimport { useJSVOptionsContext } from '../../contexts';\n\nexport interface PropertiesProps {\n required: boolean;\n deprecated: boolean;\n validations: Record<string, unknown>;\n}\n\nexport const useHasProperties = ({ required, deprecated, validations: { readOnly, writeOnly } }: PropertiesProps) => {\n const { viewMode } = useJSVOptionsContext();\n\n const showVisibilityValidations = viewMode === 'standalone' && !!readOnly !== !!writeOnly;\n\n return deprecated || showVisibilityValidations || required;\n};\n\nexport const Properties: React.FC<PropertiesProps> = ({\n required,\n deprecated,\n validations: { readOnly, writeOnly },\n}) => {\n const { viewMode } = useJSVOptionsContext();\n\n // Show readOnly writeOnly validations only in standalone mode and only if just one of them is present\n const showVisibilityValidations = viewMode === 'standalone' && !!readOnly !== !!writeOnly;\n const visibility = showVisibilityValidations ? (\n readOnly ? (\n <span className=\"jsv-badge jsv-badge-readonly\" data-test=\"property-read-only\">\n read-only\n </span>\n ) : (\n <span className=\"jsv-badge jsv-badge-readonly\" data-test=\"property-write-only\">\n write-only\n </span>\n )\n ) : null;\n\n return (\n <>\n {deprecated ? (\n <span className=\"jsv-badge jsv-badge-deprecated\" data-test=\"property-deprecated\">\n deprecated\n </span>\n ) : null}\n {visibility}\n {required && (\n <span className=\"jsv-badge jsv-badge-required\" data-test=\"property-required\">\n required\n </span>\n )}\n </>\n );\n};\n","import { Select as BaseSelect } from '@base-ui/react/select';\nimport { CaretDown, Check } from '@phosphor-icons/react';\nimport * as React from 'react';\n\nexport interface SelectOption {\n value: string;\n label: string;\n}\n\nexport interface SelectProps {\n 'aria-label'?: string;\n options: SelectOption[];\n value: string;\n onChange: (value: string) => void;\n prefix?: string;\n}\n\nexport const Select: React.FC<SelectProps> = ({\n 'aria-label': ariaLabel,\n options,\n value,\n onChange,\n prefix,\n}) => {\n return (\n <BaseSelect.Root\n value={value}\n onValueChange={(newValue) => {\n if (newValue !== null) {\n onChange(newValue);\n }\n }}\n >\n <BaseSelect.Trigger\n aria-label={ariaLabel}\n className=\"jsv-select-trigger\"\n >\n <BaseSelect.Value placeholder=\"\">\n {(val) => {\n const selectedOption = options.find(opt => opt.value === val);\n return (\n <>\n {prefix}\n {selectedOption?.label ?? val}\n </>\n );\n }}\n </BaseSelect.Value>\n <BaseSelect.Icon>\n <CaretDown size={12} />\n </BaseSelect.Icon>\n </BaseSelect.Trigger>\n <BaseSelect.Portal>\n <BaseSelect.Positioner className=\"jsv-select-positioner\" sideOffset={4}>\n <BaseSelect.Popup className=\"jsv-select-popup\">\n {options.map(option => (\n <BaseSelect.Item\n key={option.value}\n value={option.value}\n className=\"jsv-select-item\"\n >\n <BaseSelect.ItemIndicator className=\"jsv-select-item-indicator\">\n <Check size={12} weight=\"bold\" />\n </BaseSelect.ItemIndicator>\n <BaseSelect.ItemText>{option.label}</BaseSelect.ItemText>\n </BaseSelect.Item>\n ))}\n </BaseSelect.Popup>\n </BaseSelect.Positioner>\n </BaseSelect.Portal>\n </BaseSelect.Root>\n );\n};\n","import { isPlainObject } from '@stoplight/json';\nimport { RegularNode, SchemaNodeKind } from '@stoplight/json-schema-tree';\n\nimport { COMMON_JSON_SCHEMA_AND_OAS_FORMATS } from '../consts';\n\nexport function getApplicableFormats(schemaNode: RegularNode): [type: SchemaNodeKind, format: string] | null {\n // JSON Schema itself doesn't directly support defining binary data types.\n // Within the http-spec repository, we address this limitation using\n // OpenAPI features i.e. `contentMediaType: 'application/octet-stream'`.\n // which is specific to OpenAPI and not supported by JSON Schema itself.\n\n const fragment = schemaNode.fragment;\n if (\n isPlainObject(fragment) &&\n (fragment as Record<string, unknown>)['contentMediaType'] === 'application/octet-stream' &&\n schemaNode.types &&\n schemaNode.types.length > 0\n ) {\n return [schemaNode.types[0], 'binary'];\n }\n\n if (schemaNode.format === null) {\n return null;\n }\n\n if (schemaNode.types !== null) {\n for (const type of schemaNode.types) {\n if (!(type in COMMON_JSON_SCHEMA_AND_OAS_FORMATS)) continue;\n\n if (COMMON_JSON_SCHEMA_AND_OAS_FORMATS[type].includes(schemaNode.format)) {\n return [type, schemaNode.format];\n }\n }\n }\n\n return [SchemaNodeKind.String, schemaNode.format];\n}\n","import { getLastPathSegment } from '@stoplight/json';\nimport { isReferenceNode, isRegularNode, RegularNode, SchemaNodeKind } from '@stoplight/json-schema-tree';\n\nimport { isNonNullable } from '../guards/isNonNullable';\nimport {\n isComplexArray,\n isComplexDictionary,\n isDictionaryNode,\n isFlattenableNode,\n isPrimitiveArray,\n isPrimitiveDictionary,\n} from '../tree';\nimport { getApplicableFormats } from './getApplicableFormats';\n\nfunction upperFirst(str: string): string {\n return str.charAt(0).toUpperCase() + str.slice(1);\n}\n\ntype PrintNameOptions = {\n shouldUseRefNameFallback?: boolean;\n};\n\nexport function printName(\n schemaNode: RegularNode,\n { shouldUseRefNameFallback = false }: PrintNameOptions = {},\n): string | undefined {\n if (!isFlattenableNode(schemaNode)) {\n return schemaNode.title ?? (shouldUseRefNameFallback ? getNodeNameFromOriginalRef(schemaNode) : undefined);\n }\n\n return printFlattenedName(schemaNode, { shouldUseRefNameFallback });\n}\n\nfunction printFlattenedName(\n schemaNode: RegularNode,\n { shouldUseRefNameFallback = false }: PrintNameOptions,\n): string | undefined {\n if (!isNonNullable(schemaNode.children) || schemaNode.children.length === 0) {\n return schemaNode.title ?? (shouldUseRefNameFallback ? getNodeNameFromOriginalRef(schemaNode) : undefined);\n }\n\n if (schemaNode.children.length === 1 && isReferenceNode(schemaNode.children[0])) {\n const value = `$ref(${schemaNode.children[0].value})`;\n return isDictionaryNode(schemaNode) ? `dictionary[string, ${value}]` : `${value}[]`;\n }\n\n const format = isDictionaryNode(schemaNode) ? 'dictionary[string, %s]' : 'array[%s]';\n\n if (isPrimitiveArray(schemaNode) || isPrimitiveDictionary(schemaNode)) {\n const val =\n schemaNode.children?.reduce<(SchemaNodeKind | `${SchemaNodeKind}<${string}>`)[] | null>((mergedTypes, child) => {\n if (mergedTypes === null) return null;\n\n if (!isRegularNode(child)) return null;\n\n if (child.types !== null && child.types.length > 0) {\n const formats = getApplicableFormats(child);\n for (const type of child.types) {\n if (mergedTypes.includes(type)) continue;\n\n if (formats !== null && formats[0] === type) {\n mergedTypes.push(`${type}<${formats[1]}>`);\n } else {\n mergedTypes.push(type);\n }\n }\n }\n\n return mergedTypes;\n }, []) ?? null;\n\n if (val !== null && val.length > 0) {\n return format.replace('%s', val.join(' or '));\n }\n\n return isDictionaryNode(schemaNode) ? 'dictionary[string, any]' : 'array';\n }\n\n if (isComplexArray(schemaNode) || isComplexDictionary(schemaNode)) {\n const firstChild = schemaNode.children[0];\n if (firstChild.title) {\n return format.replace('%s', firstChild.title);\n } else if (shouldUseRefNameFallback && getNodeNameFromOriginalRef(schemaNode)) {\n return format.replace('%s', getNodeNameFromOriginalRef(schemaNode) ?? 'any');\n } else if (firstChild.primaryType) {\n return format.replace('%s', firstChild.primaryType);\n } else if (firstChild.combiners?.length) {\n return format.replace('%s', firstChild.combiners.join(' '));\n }\n return isComplexArray(schemaNode) ? 'array' : format.replace('%s', 'any');\n }\n\n return undefined;\n}\n\nfunction getNodeNameFromOriginalRef(node: RegularNode) {\n if (typeof node.originalFragment.$ref === 'string') {\n return upperFirst(getLastPathSegment(node.originalFragment.$ref));\n }\n return undefined;\n}\n","import {\n isBooleanishNode,\n isReferenceNode,\n isRegularNode,\n RegularNode,\n SchemaCombinerName,\n SchemaNode,\n SchemaNodeKind,\n} from '@stoplight/json-schema-tree';\nimport * as React from 'react';\n\nimport { printName } from '../../utils';\nimport { getApplicableFormats } from '../../utils/getApplicableFormats';\n\nfunction shouldRenderName(type: SchemaNodeKind | SchemaCombinerName | '$ref'): boolean {\n return type === SchemaNodeKind.Array || type === SchemaNodeKind.Object || type === '$ref';\n}\n\nfunction getTypes(schemaNode: RegularNode): Array<SchemaNodeKind | SchemaCombinerName> {\n return [schemaNode.types, schemaNode.combiners].reduce<Array<SchemaNodeKind | SchemaCombinerName>>(\n (values, value) => {\n if (value === null) {\n return values;\n }\n\n values.push(...value);\n return values;\n },\n [],\n );\n}\n\nexport const Types: React.FC<{ schemaNode: SchemaNode }> = ({ schemaNode }) => {\n if (isReferenceNode(schemaNode)) {\n return (\n <span className=\"jsv-type\" data-test=\"property-type-ref\">\n {schemaNode.value ?? '$ref'}\n </span>\n );\n }\n\n if (isBooleanishNode(schemaNode)) {\n return (\n <span className=\"jsv-type\" data-test=\"property-type\">\n {schemaNode.fragment ? 'any' : 'never'}\n </span>\n );\n }\n\n if (!isRegularNode(schemaNode)) {\n return null;\n }\n\n const formats = getApplicableFormats(schemaNode);\n const types = getTypes(schemaNode);\n\n if (types.length === 0) {\n return (\n <span className=\"jsv-type\" data-test=\"property-type\">\n {formats === null ? 'any' : `<${formats[1]}>`}\n </span>\n );\n }\n\n const rendered = types.map((type, i, { length }) => {\n let printedName;\n if (shouldRenderName(type)) {\n printedName = printName(schemaNode);\n }\n\n printedName ??= type + (formats === null || formats[0] !== type ? '' : `<${formats[1]}>`);\n\n return (\n <React.Fragment key={type}>\n <span className=\"jsv-type\" data-test=\"property-type\">\n {printedName}\n </span>\n\n {i < length - 1 && (\n <span key={`${i}-sep`} className=\"jsv-type\">\n {' or '}\n </span>\n )}\n </React.Fragment>\n );\n });\n\n return rendered.length > 1 ? <span className=\"truncate\">{rendered}</span> : <>{rendered}</>;\n};\n\nTypes.displayName = 'JsonSchemaViewer.Types';\n","import { isRegularNode, RegularNode } from '@stoplight/json-schema-tree';\nimport * as React from 'react';\n\nexport interface ValidationsProps {\n validations: Record<string, unknown>;\n hideExamples?: boolean;\n}\n\ntype ValidationFormat = {\n name: string;\n values: string[];\n};\n\nexport const numberValidationNames = [\n 'minimum',\n 'maximum',\n 'minLength',\n 'maxLength',\n 'minItems',\n 'maxItems',\n 'exclusiveMinimum',\n 'exclusiveMaximum',\n];\n\ntype NumberValidationNames = typeof numberValidationNames;\n\nconst exampleValidationNames = ['examples'];\n\nconst excludedValidations = ['exclusiveMinimum', 'exclusiveMaximum', 'readOnly', 'writeOnly'];\n\nconst numberValidationFormatters: Record<string, (value: unknown) => string> = {\n minimum: value => `>= ${value}`,\n exclusiveMinimum: value => `> ${value}`,\n minItems: value => `>= ${value} items`,\n minLength: value => `>= ${value} characters`,\n maximum: value => `<= ${value}`,\n exclusiveMaximum: value => `< ${value}`,\n maxItems: value => `<= ${value} items`,\n maxLength: value => `<= ${value} characters`,\n};\n\nconst createStringFormatter = (nowrap: boolean | undefined) => (value: unknown) => {\n return nowrap && typeof value === 'string' ? value : JSON.stringify(value);\n};\n\nconst createValidationsFormatter =\n (name: string, options?: { exact?: boolean; nowrap?: boolean }) =>\n (value: unknown[] | unknown): ValidationFormat | null => {\n const values = Array.isArray(value) ? value : [value];\n if (values.length) {\n return {\n name: options?.exact ? name : values.length > 1 ? `${name}s` : `${name}`,\n values: values.map(createStringFormatter(options?.nowrap)),\n };\n }\n return null;\n };\n\nconst validationFormatters: Record<string, (value: unknown) => ValidationFormat | null> = {\n enum: createValidationsFormatter('Allowed value', { nowrap: true }),\n examples: createValidationsFormatter('Example', { nowrap: true }),\n multipleOf: createValidationsFormatter('Multiple of', { exact: true }),\n pattern: createValidationsFormatter('Match pattern', { exact: true, nowrap: true }),\n default: createValidationsFormatter('Default', { exact: true, nowrap: true }),\n style: createValidationsFormatter('Style', { exact: true, nowrap: true }),\n};\n\nconst oasFormats = {\n int32: {\n minimum: 0 - 2 ** 31,\n maximum: 2 ** 31 - 1,\n },\n int64: {\n minimum: Number.MIN_SAFE_INTEGER,\n maximum: Number.MAX_SAFE_INTEGER,\n },\n float: {\n minimum: 0 - 2 ** 128,\n maximum: 2 ** 128 - 1,\n },\n double: {\n minimum: 0 - Number.MAX_VALUE,\n maximum: Number.MAX_VALUE,\n },\n byte: {\n pattern: '^[\\\\w\\\\d+\\\\/=]*$',\n },\n};\n\nfunction isOasFormat(format: string): format is keyof typeof oasFormats {\n return format in oasFormats;\n}\n\nfunction filterOutOasFormatValidations(format: string, values: Record<string, unknown>) {\n if (!isOasFormat(format)) {\n return values;\n }\n\n const newValues = { ...values };\n\n for (const [key, value] of Object.entries(oasFormats[format])) {\n if (value === newValues[key]) {\n delete newValues[key];\n }\n }\n\n return newValues;\n}\n\nfunction pick<T extends Record<string, unknown>>(obj: T, keys: string[]): Partial<T> {\n const result: Partial<T> = {};\n for (const key of keys) {\n if (key in obj) {\n result[key as keyof T] = obj[key as keyof T];\n }\n }\n return result;\n}\n\nfunction omit<T extends Record<string, unknown>>(obj: T, keys: string[]): Partial<T> {\n const result = { ...obj };\n for (const key of keys) {\n delete result[key as keyof T];\n }\n return result;\n}\n\nfunction capitalize(str: string): string {\n return str.charAt(0).toUpperCase() + str.slice(1);\n}\n\nfunction uniq<T>(arr: T[]): T[] {\n return [...new Set(arr)];\n}\n\nexport const Validations: React.FC<ValidationsProps> = ({ validations, hideExamples }) => {\n const numberValidations = pick(validations, numberValidationNames);\n const keyValueValidations = omit(validations, [\n ...Object.keys(numberValidations),\n ...excludedValidations,\n ...(hideExamples ? exampleValidationNames : []),\n ]);\n\n return (\n <div className=\"jsv-validations\">\n <NumberValidations validations={numberValidations} />\n <KeyValueValidations validations={keyValueValidations} />\n </div>\n );\n};\n\nconst NumberValidations: React.FC<{\n validations: Partial<Record<NumberValidationNames[number], unknown>>;\n}> = ({ validations }) => {\n const entries = Object.entries(validations);\n if (!entries.length) {\n return null;\n }\n return (\n <div className=\"jsv-validations-row\" data-test=\"property-validation\">\n {entries\n .map(([key, value]) => numberValidationFormatters[key](value))\n .map((value, i) => (\n <Value key={i} name={value} />\n ))}\n </div>\n );\n};\n\nconst KeyValueValidations: React.FC<{ validations: Record<string, unknown> }> = ({ validations }) => (\n <>\n {Object.keys(validations)\n .filter(key => Object.keys(validationFormatters).includes(key) && validations[key] !== void 0)\n .map(key => {\n const validation = validationFormatters[key](validations[key]);\n if (validation) {\n return <KeyValueValidation key={key} name={validation.name} values={validation.values} />;\n } else {\n return null;\n }\n })}\n </>\n);\n\nconst KeyValueValidation: React.FC<{ name: string; values: string[] }> = ({ name, values }) => {\n return (\n <div className=\"jsv-validation\" data-test=\"property-validation\">\n <span className=\"jsv-validation-label\">{capitalize(name)}:</span>\n <div className=\"jsv-validation-values\">\n {uniq(values).map(value => (\n <Value key={value} name={value} />\n ))}\n </div>\n </div>\n );\n};\n\nconst Value: React.FC<{ name: string }> = ({ name }) => (\n <span className=\"jsv-validation-value\">{name}</span>\n);\n\nexport function validationCount(schemaNode: RegularNode) {\n const validations = getValidationsFromSchema(schemaNode);\n const validationKeys = Object.keys(omit(validations, excludedValidations));\n return uniq(validationKeys.map(key => ([...numberValidationNames].includes(key) ? 'number' : key))).length;\n}\n\nconst getArrayValidations = (schemaNode: RegularNode) => {\n if (schemaNode.children?.length === 1 && isRegularNode(schemaNode.children[0])) {\n if (schemaNode.children[0].enum !== null) {\n return { enum: schemaNode.children[0].enum };\n } else if (schemaNode.children[0].fragment.pattern !== void 0) {\n return { pattern: schemaNode.children[0].fragment.pattern };\n }\n }\n return null;\n};\n\nexport function getValidationsFromSchema(schemaNode: RegularNode) {\n return {\n ...(schemaNode.enum !== null\n ? { enum: schemaNode.enum }\n : schemaNode.primaryType === 'array'\n ? // in case schemaNode is type: \"array\", check if its child has an additional validation\n getArrayValidations(schemaNode)\n : null),\n ...('annotations' in schemaNode\n ? {\n ...(schemaNode.annotations.default !== void 0 ? { default: schemaNode.annotations.default } : null),\n ...(schemaNode.annotations.examples ? { examples: schemaNode.annotations.examples } : null),\n }\n : null),\n ...getFilteredValidations(schemaNode),\n };\n}\n\nfunction getFilteredValidations(schemaNode: RegularNode) {\n if (schemaNode.format !== null) {\n return filterOutOasFormatValidations(schemaNode.format, schemaNode.validations);\n }\n\n return schemaNode.validations;\n}\n","import { extractPointerFromRef, pointerToPath } from '@stoplight/json';\nimport { isReferenceNode, isRegularNode, SchemaNode } from '@stoplight/json-schema-tree';\nimport * as React from 'react';\n\nimport { isComplexArray, isNonEmptyParentNode } from '../../tree';\nimport { printName } from '../../utils';\n\n/** one option among several mutually exclusive sub-schemas */\nexport type Choice = {\n title: string;\n type: SchemaNode;\n};\n\nfunction last<T>(arr: T[]): T | undefined {\n return arr[arr.length - 1];\n}\n\nfunction calculateChoiceTitle(node: SchemaNode, isPlural: boolean): string {\n const primitiveSuffix = isPlural ? 's' : '';\n if (isRegularNode(node)) {\n const realName = printName(node, { shouldUseRefNameFallback: true });\n if (realName) {\n return realName;\n }\n return node.primaryType !== null\n ? node.primaryType + primitiveSuffix\n : String(node.originalFragment.title || 'any');\n }\n if (isReferenceNode(node)) {\n if (node.value) {\n const value = extractPointerFromRef(node.value);\n const lastPiece = !node.error && value ? last(pointerToPath(value)) : null;\n if (typeof lastPiece === 'string') {\n return lastPiece.split('.')[0];\n }\n }\n return '$ref' + primitiveSuffix;\n }\n\n return 'any';\n}\n\nfunction makeChoice(node: SchemaNode): Choice {\n return {\n type: node,\n title: calculateChoiceTitle(node, false),\n };\n}\n\nfunction makeArrayChoice(node: SchemaNode, combiner?: string): Choice {\n const itemTitle = calculateChoiceTitle(node, true);\n const title = itemTitle !== 'any' ? `array ${combiner ? `(${combiner})` : null} [${itemTitle}]` : 'array';\n return {\n type: node,\n title,\n };\n}\n\n/**\n * Enumerates the sub-schema type for a given node.\n *\n * Usually a node has one choice, only one possible type: itself. If a node is\n * a oneOf or anyOf combiner, the possible types are the sub-types of the\n * combiner.\n */\nexport const useChoices = (schemaNode: SchemaNode) => {\n const choices: Choice[] = React.useMemo(() => {\n // handle flattening of arrays that contain oneOfs, same logic as below\n if (\n isComplexArray(schemaNode) &&\n isNonEmptyParentNode(schemaNode.children[0]) &&\n shouldShowChildSelector(schemaNode.children[0])\n ) {\n return schemaNode.children[0].children.map(child =>\n makeArrayChoice(child, schemaNode.children[0].combiners?.[0]),\n );\n }\n\n // if current node is a combiner, offer its children\n if (isNonEmptyParentNode(schemaNode) && shouldShowChildSelector(schemaNode)) {\n return schemaNode.children.map(makeChoice);\n }\n // regular node, single choice - itself\n return [makeChoice(schemaNode)];\n }, [schemaNode]);\n\n const defaultChoice = choices[0];\n\n const [selectedChoice, setSelectedChoice] = React.useState<Choice | undefined>(defaultChoice);\n\n React.useEffect(() => {\n setSelectedChoice(defaultChoice);\n }, [defaultChoice]);\n\n const actualSelectedChoice = selectedChoice && choices.includes(selectedChoice) ? selectedChoice : defaultChoice;\n\n return { selectedChoice: actualSelectedChoice, setSelectedChoice, choices };\n};\n\nconst shouldShowChildSelector = (schemaNode: SchemaNode) =>\n isNonEmptyParentNode(schemaNode) && ['anyOf', 'oneOf'].includes(schemaNode.combiners?.[0] ?? '');\n","import { isMirroredNode, isReferenceNode, isRegularNode, SchemaNode } from '@stoplight/json-schema-tree';\nimport { clsx } from 'clsx';\nimport { useSetAtom } from 'jotai';\nimport * as React from 'react';\n\nimport { COMBINER_NAME_MAP } from '../../consts';\nimport { useJSVOptionsContext } from '../../contexts';\nimport { getNodeId, getOriginalNodeId } from '../../hash';\nimport { isPropertyRequired, visibleChildren } from '../../tree';\nimport { extractVendorExtensions } from '../../utils/extractVendorExtensions';\nimport {\n Caret,\n ChildStack,\n Description,\n Divider,\n Error,\n getValidationsFromSchema,\n NodeAnnotation,\n Properties,\n Select,\n Types,\n useHasProperties,\n Validations,\n} from '../shared';\nimport { hoveredNodeAtom, isNodeHoveredAtom } from './state';\nimport { useChoices } from './useChoices';\n\ntype ChangeType = 'added' | 'removed' | 'modified';\n\nexport interface SchemaRowProps {\n schemaNode: SchemaNode;\n nestingLevel: number;\n pl?: number;\n parentNodeId?: string;\n parentChangeType?: ChangeType;\n}\n\nexport const SchemaRow: React.FC<SchemaRowProps> = React.memo(\n ({ schemaNode, nestingLevel, pl, parentNodeId, parentChangeType }) => {\n const {\n defaultExpandedDepth,\n renderRowAddon,\n renderExtensionAddon,\n onGoToRef,\n hideExamples,\n renderRootTreeLines,\n nodeHasChanged,\n viewMode,\n } = useJSVOptionsContext();\n\n const setHoveredNode = useSetAtom(hoveredNodeAtom);\n\n const nodeId = getNodeId(schemaNode, parentNodeId);\n\n // @ts-expect-error originalFragment does exist...\n const originalNodeId = schemaNode.originalFragment?.$ref ? getOriginalNodeId(schemaNode, parentNodeId) : nodeId;\n const mode = viewMode === 'standalone' ? undefined : viewMode;\n const hasChanged = nodeHasChanged?.({ nodeId: originalNodeId, mode });\n\n const [isExpanded, setExpanded] = React.useState<boolean>(\n !isMirroredNode(schemaNode) && nestingLevel <= defaultExpandedDepth,\n );\n\n const { selectedChoice, setSelectedChoice, choices } = useChoices(schemaNode);\n const typeToShow = selectedChoice.type;\n const description = isRegularNode(typeToShow) ? typeToShow.annotations.description : null;\n\n const rootLevel = renderRootTreeLines ? 1 : 2;\n const childNodes = React.useMemo(() => visibleChildren(typeToShow), [typeToShow]);\n const combiner = isRegularNode(schemaNode) && schemaNode.combiners?.length ? schemaNode.combiners[0] : null;\n const isCollapsible = childNodes.length > 0;\n const isRootLevel = nestingLevel < rootLevel;\n\n const required = isPropertyRequired(schemaNode);\n const deprecated = isRegularNode(schemaNode) && schemaNode.deprecated;\n const validations = isRegularNode(schemaNode) ? schemaNode.validations : {};\n const hasProperties = useHasProperties({ required, deprecated, validations });\n\n const [totalVendorExtensions, vendorExtensions] = React.useMemo(\n () => extractVendorExtensions(schemaNode.fragment),\n [schemaNode.fragment],\n );\n const hasVendorProperties = totalVendorExtensions > 0;\n\n const annotationRootOffset = renderRootTreeLines ? 0 : 8;\n let annotationLeftOffset = -20 - annotationRootOffset;\n if (nestingLevel > 1) {\n annotationLeftOffset =\n -1 * 29 * Math.max(nestingLevel - 1, 1) - Math.min(nestingLevel, 2) * 2 - 16 - annotationRootOffset;\n\n if (!renderRootTreeLines) {\n annotationLeftOffset += 27;\n }\n }\n\n if (parentChangeType === 'added' && hasChanged && hasChanged.type === 'removed') {\n return null;\n }\n\n if (parentChangeType === 'removed' && hasChanged && hasChanged.type === 'added') {\n return null;\n }\n\n const lastSubpath = schemaNode.subpath.length > 0 ? schemaNode.subpath[schemaNode.subpath.length - 1] : null;\n const isHoveredAtom = isNodeHoveredAtom(schemaNode);\n\n return (\n <>\n <div\n className=\"jsv-row\"\n style={{ paddingLeft: pl ? `${pl * 0.25}rem` : undefined }}\n data-id={originalNodeId}\n data-test=\"schema-row\"\n onMouseEnter={(e) => {\n e.stopPropagation();\n setHoveredNode(selectedChoice.type);\n }}\n >\n {!isRootLevel && (\n <span className={clsx('jsv-nubbin', isCollapsible && 'jsv-nubbin-short')} />\n )}\n {parentChangeType !== 'added' && parentChangeType !== 'removed' ? (\n <NodeAnnotation change={hasChanged} style={{ left: annotationLeftOffset }} />\n ) : null}\n <div className={clsx('jsv-row-content', isCollapsible && !isRootLevel && 'jsv-ml-2')}>\n <div\n className={clsx('jsv-row-header', isCollapsible && 'jsv-cursor-pointer')}\n onClick={isCollapsible ? () => setExpanded(!isExpanded) : undefined}\n >\n {isCollapsible ? <Caret isExpanded={isExpanded} /> : null}\n <div className=\"jsv-types-container\">\n {schemaNode.subpath.length > 0 && shouldShowPropertyName(schemaNode) && (\n <span\n className=\"jsv-property-name\"\n data-test={`property-name-${lastSubpath}`}\n >\n {lastSubpath}\n </span>\n )}\n\n {choices.length === 1 && <Types schemaNode={typeToShow} />}\n\n {onGoToRef && isReferenceNode(schemaNode) && schemaNode.external ? (\n <a\n href=\"#\"\n className=\"jsv-link\"\n onClick={(e: React.MouseEvent) => {\n e.preventDefault();\n e.stopPropagation();\n onGoToRef(schemaNode);\n }}\n >\n (go to ref)\n </a>\n ) : null}\n\n {schemaNode.subpath.length > 1 && schemaNode.subpath[0] === 'patternProperties' ? (\n <span className=\"jsv-type jsv-ml-2\">(pattern property)</span>\n ) : null}\n\n {choices.length > 1 && (\n <Select\n aria-label=\"Pick a type\"\n prefix={combiner ? `${COMBINER_NAME_MAP[combiner]}: ` : undefined}\n options={choices.map((choice, index) => ({\n value: String(index),\n label: choice.title,\n }))}\n value={String(choices.indexOf(selectedChoice))}\n onChange={selectedIndex => setSelectedChoice(choices[Number(selectedIndex)])}\n />\n )}\n </div>\n {hasProperties && <Divider hoveredAtom={isHoveredAtom} />}\n <Properties required={required} deprecated={deprecated} validations={validations} />\n </div>\n {typeof description === 'string' &&\n (!combiner || schemaNode.parent?.fragment.description !== description) &&\n description.length > 0 && <Description value={description} />}\n <Validations\n validations={isRegularNode(schemaNode) ? getValidationsFromSchema(schemaNode) : {}}\n hideExamples={hideExamples}\n />\n {hasVendorProperties && renderExtensionAddon ? (\n <div>{renderExtensionAddon({ schemaNode, nestingLevel, vendorExtensions })}</div>\n ) : null}\n </div>\n <Error schemaNode={schemaNode} />\n {renderRowAddon ? <div>{renderRowAddon({ schemaNode, nestingLevel })}</div> : null}\n </div>\n {isCollapsible && isExpanded ? (\n <ChildStack\n schemaNode={schemaNode}\n childNodes={childNodes}\n currentNestingLevel={nestingLevel}\n parentNodeId={nodeId}\n parentChangeType={parentChangeType ? parentChangeType : hasChanged ? hasChanged?.type : undefined}\n />\n ) : null}\n </>\n );\n },\n);\n\nSchemaRow.displayName = 'SchemaRow';\n\nfunction shouldShowPropertyName(schemaNode: SchemaNode) {\n return (\n schemaNode.subpath.length === 2 &&\n (schemaNode.subpath[0] === 'properties' || schemaNode.subpath[0] === 'patternProperties')\n );\n}\n","import { isPlainObject } from '@stoplight/json';\nimport { isRegularNode, RegularNode, SchemaFragment } from '@stoplight/json-schema-tree';\nimport { Menu } from '@base-ui/react/menu';\nimport { CaretDown } from '@phosphor-icons/react';\nimport * as React from 'react';\n\nimport { COMBINER_NAME_MAP } from '../../consts';\nimport { useJSVOptionsContext } from '../../contexts';\nimport { isComplexArray, isDictionaryNode, visibleChildren } from '../../tree';\nimport { extractVendorExtensions } from '../../utils/extractVendorExtensions';\nimport { ChildStack, Description, Error, getValidationsFromSchema, Validations } from '../shared';\nimport { SchemaRow, SchemaRowProps } from './SchemaRow';\nimport { useChoices } from './useChoices';\n\nfunction isEmpty(obj: Record<string, unknown>): boolean {\n return Object.keys(obj).length === 0;\n}\n\nfunction getStoplightId(fragment: SchemaFragment | boolean): string | undefined {\n if (typeof fragment === 'boolean') return undefined;\n const xStoplight = fragment['x-stoplight' as keyof typeof fragment];\n if (isPlainObject(xStoplight)) {\n const id = (xStoplight as Record<string, unknown>).id;\n return typeof id === 'string' ? id : undefined;\n }\n return undefined;\n}\n\nexport const TopLevelSchemaRow: React.FC<Pick<SchemaRowProps, 'schemaNode'> & { skipDescription?: boolean }> = ({\n schemaNode,\n skipDescription,\n}) => {\n const { renderExtensionAddon } = useJSVOptionsContext();\n\n const { selectedChoice, setSelectedChoice, choices } = useChoices(schemaNode);\n const childNodes = React.useMemo(() => visibleChildren(selectedChoice.type), [selectedChoice.type]);\n const nestingLevel = 0;\n\n const nodeId = getStoplightId(schemaNode.fragment);\n \n const [totalVendorExtensions, vendorExtensions] = React.useMemo(\n () => extractVendorExtensions(schemaNode.fragment),\n [schemaNode.fragment],\n );\n const hasVendorProperties = totalVendorExtensions > 0;\n\n // regular objects are flattened at the top level\n if (isRegularNode(schemaNode) && isPureObjectNode(schemaNode)) {\n return (\n <>\n {!skipDescription ? <Description value={schemaNode.annotations.description} /> : null}\n {hasVendorProperties && renderExtensionAddon\n ? renderExtensionAddon({ schemaNode, nestingLevel, vendorExtensions })\n : null}\n <ChildStack\n schemaNode={schemaNode}\n childNodes={childNodes}\n currentNestingLevel={nestingLevel}\n parentNodeId={nodeId}\n />\n <Error schemaNode={schemaNode} />\n </>\n );\n }\n\n if (isRegularNode(schemaNode) && choices.length > 1) {\n const combiner = isRegularNode(schemaNode) && schemaNode.combiners?.length ? schemaNode.combiners[0] : null;\n\n return (\n <>\n {schemaNode.annotations.description !== schemaNode.parent?.fragment.description && (\n <Description value={schemaNode.annotations.description} />\n )}\n <div className=\"jsv-top-section\">\n <Menu.Root>\n <Menu.Trigger className=\"jsv-select-trigger\">\n {selectedChoice.title}\n <CaretDown size={12} />\n </Menu.Trigger>\n <Menu.Portal>\n <Menu.Positioner className=\"jsv-select-positioner\">\n <Menu.Popup className=\"jsv-select-popup\">\n {choices.map((choice, index) => (\n <Menu.Item\n key={index}\n className=\"jsv-select-item\"\n onClick={() => setSelectedChoice(choice)}\n >\n {choice.title}\n </Menu.Item>\n ))}\n </Menu.Popup>\n </Menu.Positioner>\n </Menu.Portal>\n </Menu.Root>\n\n {combiner !== null ? (\n <span className=\"jsv-combiner-label\">\n {`(${COMBINER_NAME_MAP[combiner]})`}\n </span>\n ) : null}\n </div>\n {childNodes.length > 0 ? (\n <ChildStack\n schemaNode={schemaNode}\n childNodes={childNodes}\n currentNestingLevel={nestingLevel}\n parentNodeId={nodeId}\n />\n ) : combiner ? (\n <SchemaRow schemaNode={selectedChoice.type} nestingLevel={nestingLevel} />\n ) : null}\n </>\n );\n }\n\n if (isComplexArray(schemaNode) && isPureObjectNode(schemaNode.children[0])) {\n const validations = isRegularNode(schemaNode) ? getValidationsFromSchema(schemaNode) : {};\n return (\n <>\n <Description value={schemaNode.annotations.description} />\n\n <div className=\"jsv-top-label\">array of:</div>\n\n {!isEmpty(validations) && (\n <div className=\"jsv-validations\" style={{ marginBottom: '0.25rem' }}>\n <Validations validations={validations} />\n </div>\n )}\n\n {childNodes.length > 0 ? (\n <ChildStack\n schemaNode={schemaNode}\n childNodes={childNodes}\n currentNestingLevel={nestingLevel}\n parentNodeId={nodeId}\n />\n ) : null}\n </>\n );\n }\n\n return <SchemaRow schemaNode={schemaNode} nestingLevel={nestingLevel} />;\n};\n\nfunction isPureObjectNode(schemaNode: RegularNode) {\n return schemaNode.primaryType === 'object' && schemaNode.types?.length === 1 && !isDictionaryNode(schemaNode);\n}\n","import {\n isRegularNode,\n RootNode,\n SchemaTree as JsonSchemaTree,\n SchemaTreeRefDereferenceFn,\n} from '@stoplight/json-schema-tree';\nimport { clsx } from 'clsx';\nimport { Provider, useSetAtom } from 'jotai';\nimport * as React from 'react';\n\nimport { JSVOptions, JSVOptionsContextProvider } from '../contexts';\nimport { shouldNodeBeIncluded } from '../tree/utils';\nimport { JSONSchema } from '../types';\nimport { PathCrumbs } from './PathCrumbs';\nimport { TopLevelSchemaRow } from './SchemaRow';\nimport { hoveredNodeAtom } from './SchemaRow/state';\n\nexport type JsonSchemaProps = Partial<JSVOptions> & {\n schema: JSONSchema;\n emptyText?: string;\n className?: string;\n resolveRef?: SchemaTreeRefDereferenceFn;\n /** Controls the level of recursion of refs. Prevents overly complex trees and running out of stack depth. */\n maxRefDepth?: number;\n onTreePopulated?: (props: { rootNode: RootNode; nodeCount: number }) => void;\n maxHeight?: number;\n parentCrumbs?: string[];\n skipTopLevelDescription?: boolean;\n /** Theme mode - set to \"dark\" for dark mode styling */\n 'data-theme'?: 'dark' | 'light';\n};\n\nexport const JsonSchemaViewer: React.FC<JsonSchemaProps> = ({\n viewMode = 'standalone',\n defaultExpandedDepth = 1,\n onGoToRef,\n renderRowAddon,\n renderExtensionAddon,\n hideExamples,\n renderRootTreeLines,\n disableCrumbs,\n nodeHasChanged,\n skipTopLevelDescription,\n ...rest\n}) => {\n const options = React.useMemo(\n () => ({\n defaultExpandedDepth,\n viewMode,\n onGoToRef,\n renderRowAddon,\n renderExtensionAddon,\n hideExamples,\n renderRootTreeLines,\n disableCrumbs,\n nodeHasChanged,\n }),\n [\n defaultExpandedDepth,\n viewMode,\n onGoToRef,\n renderRowAddon,\n renderExtensionAddon,\n hideExamples,\n renderRootTreeLines,\n disableCrumbs,\n nodeHasChanged,\n ],\n );\n\n return (\n <JSVOptionsContextProvider value={options}>\n <Provider>\n <JsonSchemaViewerInner\n viewMode={viewMode}\n skipTopLevelDescription={skipTopLevelDescription}\n {...rest}\n />\n </Provider>\n </JSVOptionsContextProvider>\n );\n};\n\nconst JsonSchemaViewerInner: React.FC<\n Pick<\n JsonSchemaProps,\n | 'schema'\n | 'viewMode'\n | 'className'\n | 'resolveRef'\n | 'maxRefDepth'\n | 'emptyText'\n | 'onTreePopulated'\n | 'maxHeight'\n | 'parentCrumbs'\n | 'skipTopLevelDescription'\n | 'data-theme'\n >\n> = ({\n schema,\n viewMode,\n className,\n resolveRef,\n maxRefDepth,\n emptyText = 'No schema defined',\n onTreePopulated,\n maxHeight,\n parentCrumbs,\n skipTopLevelDescription,\n 'data-theme': dataTheme,\n}) => {\n const setHoveredNode = useSetAtom(hoveredNodeAtom);\n const onMouseLeave = React.useCallback(() => {\n setHoveredNode(null);\n }, [setHoveredNode]);\n\n const { jsonSchemaTreeRoot, nodeCount } = React.useMemo(() => {\n const jsonSchemaTree = new JsonSchemaTree(schema, {\n mergeAllOf: true,\n refResolver: resolveRef,\n maxRefDepth,\n });\n\n let nodeCount = 0;\n\n jsonSchemaTree.walker.hookInto('filter', node => {\n if (shouldNodeBeIncluded(node, viewMode)) {\n nodeCount++;\n return true;\n }\n return false;\n });\n jsonSchemaTree.populate();\n\n return {\n jsonSchemaTreeRoot: jsonSchemaTree.root,\n nodeCount,\n };\n }, [schema, resolveRef, maxRefDepth, viewMode]);\n\n React.useEffect(() => {\n onTreePopulated?.({\n rootNode: jsonSchemaTreeRoot,\n nodeCount: nodeCount,\n });\n }, [jsonSchemaTreeRoot, onTreePopulated, nodeCount]);\n\n const isEmpty = React.useMemo(\n () => jsonSchemaTreeRoot.children.every(node => !isRegularNode(node) || node.unknown),\n [jsonSchemaTreeRoot],\n );\n\n if (isEmpty) {\n return (\n <div className={clsx('jsv-root', className)} data-test=\"empty-text\" data-theme={dataTheme}>\n {emptyText}\n </div>\n );\n }\n\n return (\n <div\n className={clsx('jsv-root', className)}\n onMouseLeave={onMouseLeave}\n style={{ maxHeight, ...(maxHeight ? { overflowY: 'auto' } : {}) }}\n data-theme={dataTheme}\n >\n <PathCrumbs parentCrumbs={parentCrumbs} />\n <div className=\"jsv-content\">\n <TopLevelSchemaRow schemaNode={jsonSchemaTreeRoot.children[0]} skipDescription={skipTopLevelDescription} />\n </div>\n </div>\n );\n};\n\n// Error boundary wrapper\nexport class JsonSchemaViewerErrorBoundary extends React.Component<\n { children: React.ReactNode; fallback?: React.ReactNode },\n { hasError: boolean; error: Error | null }\n> {\n constructor(props: { children: React.ReactNode; fallback?: React.ReactNode }) {\n super(props);\n this.state = { hasError: false, error: null };\n }\n\n static getDerivedStateFromError(error: Error) {\n return { hasError: true, error };\n }\n\n render() {\n if (this.state.hasError) {\n if (this.props.fallback) {\n return this.props.fallback;\n }\n return (\n <div style={{ padding: '1rem' }}>\n <strong style={{ color: 'var(--jsv-color-danger, #ef4444)' }}>Error</strong>\n {this.state.error !== null ? `: ${this.state.error.message}` : null}\n </div>\n );\n }\n\n return this.props.children;\n }\n}\n"]}