"use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); __setModuleDefault(result, mod); return result; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.Schema = void 0; var react_1 = __importStar(require("react")); var index_1 = require("./index"); var helpers_1 = require("../helpers"); var SchemaContext = react_1.default.createContext({ reverse: false, deepExpanded: false, }); var Schema = function (_a) { var _b, _c, _d, _e, _f; var schemaName = _a.schemaName, schema = _a.schema, _g = _a.required, required = _g === void 0 ? false : _g, _h = _a.isPatternProperty, isPatternProperty = _h === void 0 ? false : _h, _j = _a.isProperty, isProperty = _j === void 0 ? false : _j, _k = _a.isCircular, isCircular = _k === void 0 ? false : _k, dependentRequired = _a.dependentRequired, _l = _a.expanded, propExpanded = _l === void 0 ? false : _l, _m = _a.onlyTitle, onlyTitle = _m === void 0 ? false : _m; var _o = (0, react_1.useContext)(SchemaContext), reverse = _o.reverse, deepExpanded = _o.deepExpanded; var _p = (0, react_1.useState)(propExpanded), expanded = _p[0], setExpanded = _p[1]; var _q = (0, react_1.useState)(false), deepExpand = _q[0], setDeepExpand = _q[1]; (0, react_1.useEffect)(function () { setDeepExpand(deepExpanded); }, [deepExpanded, setDeepExpand]); (0, react_1.useEffect)(function () { setExpanded(deepExpand); }, [deepExpand, setExpanded]); if (!schema || (typeof schemaName === 'string' && ((schemaName === null || schemaName === void 0 ? void 0 : schemaName.startsWith('x-parser-')) || (schemaName === null || schemaName === void 0 ? void 0 : schemaName.startsWith('x-schema-private-'))))) { return null; } var dependentSchemas = helpers_1.SchemaHelpers.getDependentSchemas(schema); var constraints = helpers_1.SchemaHelpers.humanizeConstraints(schema); var externalDocs = schema.externalDocs(); var rawValueExt = schema.extensions().get(helpers_1.SchemaHelpers.extRawValue); var rawValue = (rawValueExt === null || rawValueExt === void 0 ? void 0 : rawValueExt.value()) === true; var parameterLocationExt = schema .extensions() .get(helpers_1.SchemaHelpers.extParameterLocation); var parameterLocation = (parameterLocationExt === null || parameterLocationExt === void 0 ? void 0 : parameterLocationExt.value()) === true; var schemaType = helpers_1.SchemaHelpers.toSchemaType(schema); var isExpandable = helpers_1.SchemaHelpers.isExpandable(schema) || dependentSchemas; isCircular = isCircular || schema.isCircular() || false; var uid = schema.$id(); var styledSchemaName = isProperty ? 'italic' : ''; var renderedSchemaName = typeof schemaName === 'string' ? (react_1.default.createElement("span", { className: "break-anywhere text-sm ".concat(styledSchemaName) }, schemaName)) : (schemaName); return (react_1.default.createElement(SchemaContext.Provider, { value: { reverse: !reverse, deepExpanded: deepExpand } }, react_1.default.createElement("div", null, react_1.default.createElement("div", { className: "flex py-2" }, react_1.default.createElement("div", { className: "".concat(onlyTitle ? '' : 'min-w-1/4', " mr-2") }, isExpandable && !isCircular ? (react_1.default.createElement(react_1.default.Fragment, null, react_1.default.createElement(index_1.CollapseButton, { onClick: function () { return setExpanded(function (prev) { return !prev; }); }, expanded: expanded }, renderedSchemaName), react_1.default.createElement("button", { type: "button", onClick: function () { return setDeepExpand(function (prev) { return !prev; }); }, className: "ml-1 text-sm text-gray-500" }, deepExpand ? 'Collapse all' : 'Expand all'))) : (react_1.default.createElement("span", { className: "break-anywhere text-sm ".concat(isProperty ? 'italic' : '') }, schemaName)), isPatternProperty && (react_1.default.createElement("div", { className: "text-gray-500 text-xs italic" }, "(pattern property)")), required && react_1.default.createElement("div", { className: "text-red-600 text-xs" }, "required"), dependentRequired && (react_1.default.createElement(react_1.default.Fragment, null, react_1.default.createElement("div", { className: "text-gray-500 text-xs" }, "required when defined:"), react_1.default.createElement("div", { className: "text-red-600 text-xs" }, dependentRequired.join(', ')))), schema.deprecated() && (react_1.default.createElement("div", { className: "text-red-600 text-xs" }, "deprecated")), schema.writeOnly() && (react_1.default.createElement("div", { className: "text-gray-500 text-xs" }, "write-only")), schema.readOnly() && (react_1.default.createElement("div", { className: "text-gray-500 text-xs" }, "read-only"))), rawValue ? (react_1.default.createElement("div", null, react_1.default.createElement("div", { className: "text-sm" }, helpers_1.SchemaHelpers.prettifyValue(schema.const(), false)))) : (react_1.default.createElement("div", null, react_1.default.createElement("div", null, react_1.default.createElement("div", { className: "capitalize text-sm text-teal-500 font-bold inline-block mr-2" }, isCircular ? "".concat(schemaType, " [CIRCULAR]") : schemaType), react_1.default.createElement("div", { className: "inline-block" }, schema.format() && (react_1.default.createElement("span", { className: "bg-yellow-600 font-bold no-underline text-white rounded lowercase mr-2 p-1 text-xs" }, "format: ", schema.format())), schema.pattern() !== undefined && (react_1.default.createElement("span", { className: "bg-yellow-600 font-bold no-underline text-white rounded mr-2 p-1 text-xs" }, "must match: ", schema.pattern())), schema.contentMediaType() !== undefined && (react_1.default.createElement("span", { className: "bg-yellow-600 font-bold no-underline text-white rounded lowercase mr-2 p-1 text-xs" }, "media type: ", schema.contentMediaType())), schema.contentEncoding() !== undefined && (react_1.default.createElement("span", { className: "bg-yellow-600 font-bold no-underline text-white rounded lowercase mr-2 p-1 text-xs" }, "encoding: ", schema.contentEncoding())), !!constraints.length && constraints.map(function (c) { return (react_1.default.createElement("span", { className: "bg-purple-600 font-bold no-underline text-white rounded lowercase mr-2 p-1 text-xs", key: c }, c)); }), uid && !uid.startsWith('