@stoplight/elements-core 9.0.8 → 9.0.10

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.
package/index.mjs CHANGED
@@ -114,6 +114,8 @@ const isResolvedObjectProxy = (someObject) => {
114
114
  return !!someObject[originalObjectSymbol];
115
115
  };
116
116
  const getOriginalObject = (resolvedObject) => {
117
+ if (!resolvedObject)
118
+ return resolvedObject;
117
119
  const originalObject = resolvedObject[originalObjectSymbol] || resolvedObject;
118
120
  if (!originalObject) {
119
121
  return resolvedObject;
@@ -706,7 +708,12 @@ const convertRequestToSample = (language, library, request) => __awaiter(void 0,
706
708
  converted = converted || null;
707
709
  }
708
710
  if (typeof converted === 'string') {
709
- converted = converted.replace(/%7B/g, '{').replace(/%7D/g, '}');
711
+ const urlRegex = /(https?:\/\/[^\s'"]+)/g;
712
+ converted = converted.replace(urlRegex, url => {
713
+ const [pathPart, queryPart] = url.split('?', 2);
714
+ const decodedPath = pathPart.replace(/%7B/g, '{').replace(/%7D/g, '}');
715
+ return queryPart ? `${decodedPath}?${queryPart}` : decodedPath;
716
+ });
710
717
  if (language === 'shell' && library === 'curl') {
711
718
  const isUrlEncoded = (_a = request === null || request === void 0 ? void 0 : request.headers) === null || _a === void 0 ? void 0 : _a.some(header => header.name.toLowerCase() === 'content-type' && header.value === 'application/x-www-form-urlencoded');
712
719
  if (isUrlEncoded) {
@@ -2734,13 +2741,358 @@ const PanelContent = ({ schemes }) => {
2734
2741
  })));
2735
2742
  };
2736
2743
 
2744
+ const TYPES = ['string', 'integer', 'boolean', 'any', 'number'];
2745
+ function resolvePointer(obj, pointer) {
2746
+ const parts = pointer.replace(/^#\//, '').split('/');
2747
+ return parts.reduce((acc, key) => acc && acc[key], obj);
2748
+ }
2749
+ function detectCircularPath(path) {
2750
+ const ignored = ['properties', 'items'];
2751
+ const parts = path.split('/').filter(part => !ignored.includes(part));
2752
+ for (let i = 0; i < parts.length - 1; i++) {
2753
+ const current = parts[i];
2754
+ const rest = parts.slice(i + 1);
2755
+ if (rest.includes(current)) {
2756
+ return true;
2757
+ }
2758
+ }
2759
+ return false;
2760
+ }
2761
+ function dereference(node, root, visited = new WeakSet(), depth = 0, maxDepth = 10) {
2762
+ if (!node || typeof node !== 'object')
2763
+ return node;
2764
+ if (depth > maxDepth)
2765
+ return node;
2766
+ if (node.$ref || node['x-iata-$ref']) {
2767
+ let refPath = node.$ref || node['x-iata-$ref'];
2768
+ if (refPath.includes('#/%24defs')) {
2769
+ refPath = refPath.replace('#/%24defs', '$defs');
2770
+ }
2771
+ else {
2772
+ refPath = refPath.replace('__bundled__', 'definitions');
2773
+ }
2774
+ if (visited.has(node))
2775
+ return { circular: true, $ref: refPath, title: node.title, type: 'any', description: node.description };
2776
+ visited.add(node);
2777
+ const target = resolvePointer(root, refPath);
2778
+ if (!target)
2779
+ return node;
2780
+ const result = Object.assign({}, target);
2781
+ if ('description' in node)
2782
+ result.description = node.description;
2783
+ if ('title' in node)
2784
+ result.title = node.title;
2785
+ return dereference(result, root, visited, depth + 1, maxDepth);
2786
+ }
2787
+ if (Array.isArray(node)) {
2788
+ return node.map(item => dereference(item, root, visited, depth + 1, maxDepth));
2789
+ }
2790
+ const result = {};
2791
+ for (const key in node) {
2792
+ result[key] = dereference(node[key], root, visited, depth + 1, maxDepth);
2793
+ }
2794
+ return result;
2795
+ }
2796
+ const trimSlashes = (str) => {
2797
+ return str.replace(/^\/|\/$/g, '');
2798
+ };
2799
+ function isPropertiesAllHidden(path, hideData) {
2800
+ const current = trimSlashes(path);
2801
+ const parts = current.split('/');
2802
+ for (let i = parts.length; i >= 2; i--) {
2803
+ if (parts[i - 1] === 'properties') {
2804
+ const ancestorPropPath = parts.slice(0, i).join('/');
2805
+ const block = hideData.find(h => trimSlashes(h.path) === ancestorPropPath && ancestorPropPath.endsWith('/properties'));
2806
+ if (block && block.required === undefined) {
2807
+ return true;
2808
+ }
2809
+ }
2810
+ }
2811
+ return false;
2812
+ }
2813
+ function isRequiredOverride(path, hideData) {
2814
+ const entry = hideData.find(h => trimSlashes(h.path) === trimSlashes(path));
2815
+ return entry && typeof entry.required === 'boolean' ? entry.required : undefined;
2816
+ }
2817
+ function isPathHidden(path, hideData, complexData) {
2818
+ const isComplex = checkIfIsComplex(path, complexData);
2819
+ if (isComplex === null) {
2820
+ return false;
2821
+ }
2822
+ else if (isComplex) {
2823
+ const normalizedPath = trimSlashes(path);
2824
+ const direct = hideData.find(h => trimSlashes(h.path) === normalizedPath);
2825
+ if (direct && direct.required === undefined)
2826
+ return true;
2827
+ if (isPropertiesAllHidden(path, hideData))
2828
+ return true;
2829
+ for (const h of hideData) {
2830
+ const hPath = trimSlashes(h.path);
2831
+ if (h.required !== undefined)
2832
+ continue;
2833
+ if (normalizedPath.length > hPath.length &&
2834
+ normalizedPath.startsWith(hPath) &&
2835
+ (hPath.endsWith('/items') || (hPath.match(/\/items\/[^\/]+$/) && normalizedPath.startsWith(hPath + '/')))) {
2836
+ return true;
2837
+ }
2838
+ }
2839
+ return false;
2840
+ }
2841
+ else {
2842
+ return !hideData.some(h => h.path === path || h.path.startsWith(path + '/'));
2843
+ }
2844
+ }
2845
+ const checkIfIsComplex = (path, complexData) => {
2846
+ let isComplex = null;
2847
+ for (const complex of complexData) {
2848
+ if (path.startsWith(complex.location)) {
2849
+ isComplex = complex === null || complex === void 0 ? void 0 : complex.isComplex;
2850
+ break;
2851
+ }
2852
+ }
2853
+ return isComplex;
2854
+ };
2855
+ const LazySchemaTreePreviewer = ({ schema, root = schema, title, level = 1, path = '', hideData = [], complexData = [], parentRequired, propertyKey, _subType, }) => {
2856
+ var _a, _b, _c, _d;
2857
+ const [expanded, setExpanded] = useState(false);
2858
+ const [selectedSchemaIndex, setSelectedSchemaIndex] = useState(0);
2859
+ const [showSchemaDropdown, setShowSchemaDropdown] = useState(false);
2860
+ const [isHoveringSelector, setIsHoveringSelector] = useState(false);
2861
+ const isRoot = level === 1 && (title === undefined || path === '');
2862
+ useEffect(() => {
2863
+ setSelectedSchemaIndex(0);
2864
+ }, [schema === null || schema === void 0 ? void 0 : schema.anyOf, schema === null || schema === void 0 ? void 0 : schema.oneOf]);
2865
+ const thisNodeRequiredOverride = isRequiredOverride(path, hideData);
2866
+ const shouldHideAllChildren = (isRoot && hideData.some(h => trimSlashes(h.path) === 'properties' && h.required === undefined)) ||
2867
+ (!isRoot && isPropertiesAllHidden(path, hideData));
2868
+ const shouldHideNode = useMemo(() => {
2869
+ if (isRoot)
2870
+ return false;
2871
+ if (isPathHidden(path, hideData, complexData) && thisNodeRequiredOverride === undefined)
2872
+ return true;
2873
+ return false;
2874
+ }, [path, hideData, isRoot, thisNodeRequiredOverride, complexData]);
2875
+ if (!schema || shouldHideNode) {
2876
+ return null;
2877
+ }
2878
+ const displayTitle = level === 1 && (title === undefined || path === '') ? '' : (_a = title !== null && title !== void 0 ? title : schema === null || schema === void 0 ? void 0 : schema.title) !== null && _a !== void 0 ? _a : 'Node';
2879
+ const handleToggle = () => {
2880
+ const circular = detectCircularPath(path);
2881
+ if (!circular) {
2882
+ setExpanded(prev => !prev);
2883
+ }
2884
+ };
2885
+ const renderChildren = () => {
2886
+ var _a, _b, _c, _d;
2887
+ if (shouldHideAllChildren)
2888
+ return null;
2889
+ if (!expanded && !isRoot)
2890
+ return null;
2891
+ const children = [];
2892
+ if ((schema === null || schema === void 0 ? void 0 : schema.type) === 'object' && ((schema === null || schema === void 0 ? void 0 : schema.properties) || (schema === null || schema === void 0 ? void 0 : schema.allOf) || (schema === null || schema === void 0 ? void 0 : schema.anyOf) || (schema === null || schema === void 0 ? void 0 : schema.oneOf))) {
2893
+ let props = schema === null || schema === void 0 ? void 0 : schema.properties;
2894
+ if (schema === null || schema === void 0 ? void 0 : schema.allOf) {
2895
+ schema === null || schema === void 0 ? void 0 : schema.allOf.forEach((item) => {
2896
+ props = Object.assign(Object.assign({}, props), item.properties);
2897
+ });
2898
+ }
2899
+ if ((schema === null || schema === void 0 ? void 0 : schema.anyOf) && (schema === null || schema === void 0 ? void 0 : schema.anyOf.length) > 0) {
2900
+ const selectedSchema = (schema === null || schema === void 0 ? void 0 : schema.anyOf[selectedSchemaIndex]) || (schema === null || schema === void 0 ? void 0 : schema.anyOf[0]);
2901
+ props = Object.assign(Object.assign({}, props), selectedSchema.properties);
2902
+ }
2903
+ if ((schema === null || schema === void 0 ? void 0 : schema.oneOf) && (schema === null || schema === void 0 ? void 0 : schema.oneOf.length) > 0) {
2904
+ const selectedSchema = (schema === null || schema === void 0 ? void 0 : schema.oneOf[selectedSchemaIndex]) || (schema === null || schema === void 0 ? void 0 : schema.oneOf[0]);
2905
+ props = Object.assign(Object.assign({}, props), selectedSchema.properties);
2906
+ }
2907
+ for (const [key, child] of Object.entries(props || {})) {
2908
+ const childPath = `${path}/properties/${key}`;
2909
+ const childRequiredOverride = isRequiredOverride(childPath, hideData);
2910
+ const shouldHideChild = isPathHidden(childPath, hideData, complexData) && childRequiredOverride === undefined;
2911
+ const resolved = dereference(child, root);
2912
+ if (!shouldHideChild) {
2913
+ children.push(React__default.createElement("li", { key: key },
2914
+ React__default.createElement(LazySchemaTreePreviewer, { schema: resolved, root: root, title: key, level: level + 1, path: childPath, hideData: hideData, complexData: complexData, parentRequired: schema === null || schema === void 0 ? void 0 : schema.required, propertyKey: key, _subType: (_a = resolved === null || resolved === void 0 ? void 0 : resolved.items) === null || _a === void 0 ? void 0 : _a.type })));
2915
+ }
2916
+ }
2917
+ }
2918
+ else if ((schema === null || schema === void 0 ? void 0 : schema.type) === 'array' &&
2919
+ (schema === null || schema === void 0 ? void 0 : schema.items) &&
2920
+ Object.keys(schema === null || schema === void 0 ? void 0 : schema.items).length > 0 &&
2921
+ !((_b = schema === null || schema === void 0 ? void 0 : schema.items) === null || _b === void 0 ? void 0 : _b.circular)) {
2922
+ const resolvedItems = dereference(schema === null || schema === void 0 ? void 0 : schema.items, root);
2923
+ const itemsPath = `${path}/items`;
2924
+ if (resolvedItems && resolvedItems.type === 'object' && resolvedItems.properties) {
2925
+ for (const [key, child] of Object.entries(resolvedItems.properties)) {
2926
+ const childPath = `${itemsPath}/properties/${key}`;
2927
+ const childRequiredOverride = isRequiredOverride(childPath, hideData);
2928
+ const shouldHideChild = isPathHidden(childPath, hideData, complexData) && childRequiredOverride === undefined;
2929
+ const resolved = dereference(child, root);
2930
+ if (!shouldHideChild) {
2931
+ children.push(React__default.createElement("li", { key: key },
2932
+ React__default.createElement(LazySchemaTreePreviewer, { schema: resolved, root: root, title: key, level: level + 2, path: childPath, hideData: hideData, complexData: complexData, parentRequired: resolvedItems.required, propertyKey: key, _subType: (_c = resolvedItems === null || resolvedItems === void 0 ? void 0 : resolvedItems.items) === null || _c === void 0 ? void 0 : _c.type })));
2933
+ }
2934
+ }
2935
+ }
2936
+ else if (resolvedItems && resolvedItems.type === 'array' && resolvedItems.items.length > 0) {
2937
+ const childPath = `${path}/items`;
2938
+ const childRequiredOverride = isRequiredOverride(childPath, hideData);
2939
+ const shouldHideChild = isPathHidden(childPath, hideData, complexData) && childRequiredOverride === undefined;
2940
+ if (!shouldHideChild) {
2941
+ children.push(React__default.createElement("li", { key: "items" },
2942
+ React__default.createElement(LazySchemaTreePreviewer, { schema: resolvedItems, root: root, title: "items", level: level + 1, path: childPath, hideData: hideData, complexData: complexData, parentRequired: schema === null || schema === void 0 ? void 0 : schema.required, propertyKey: "items", _subType: (_d = resolvedItems === null || resolvedItems === void 0 ? void 0 : resolvedItems.items) === null || _d === void 0 ? void 0 : _d.type })));
2943
+ }
2944
+ }
2945
+ }
2946
+ return children.length > 0 ? React__default.createElement("ul", { className: "ml-6 border-l border-gray-200 pl-2" }, children) : null;
2947
+ };
2948
+ const combinedSchemaSelector = () => {
2949
+ var _a;
2950
+ return (React__default.createElement(React__default.Fragment, null,
2951
+ React__default.createElement(Box, { pos: "fixed", top: 0, left: 0, right: 0, bottom: 0, bg: "transparent", style: { zIndex: 999 }, onClick: () => setShowSchemaDropdown(false) }),
2952
+ React__default.createElement(Box, { pos: "absolute", bg: "canvas", rounded: true, boxShadow: "md", style: {
2953
+ zIndex: 1000,
2954
+ top: '100%',
2955
+ left: 0,
2956
+ minWidth: '150px',
2957
+ maxWidth: '200px',
2958
+ marginTop: '2px',
2959
+ border: '1px solid rgba(0, 0, 0, 0.1)',
2960
+ }, fontSize: "sm", onClick: (e) => e.stopPropagation() }, (_a = ((schema === null || schema === void 0 ? void 0 : schema.anyOf) || (schema === null || schema === void 0 ? void 0 : schema.oneOf))) === null || _a === void 0 ? void 0 : _a.map((schemaOption, index) => (React__default.createElement(Box, { key: index, px: 3, py: 2, cursor: "pointer", bg: selectedSchemaIndex === index ? 'primary-tint' : 'canvas', fontSize: "xs", display: "flex", alignItems: "center", style: {
2961
+ borderBottom: index < ((schema === null || schema === void 0 ? void 0 : schema.anyOf) || (schema === null || schema === void 0 ? void 0 : schema.oneOf)).length - 1 ? '1px solid rgba(0, 0, 0, 0.1)' : 'none',
2962
+ gap: '8px',
2963
+ }, onMouseEnter: (e) => {
2964
+ if (selectedSchemaIndex !== index) {
2965
+ e.currentTarget.style.backgroundColor = 'var(--sl-color-canvas-tint)';
2966
+ }
2967
+ }, onMouseLeave: (e) => {
2968
+ if (selectedSchemaIndex !== index) {
2969
+ e.currentTarget.style.backgroundColor = 'var(--sl-color-canvas)';
2970
+ }
2971
+ }, onClick: () => {
2972
+ setSelectedSchemaIndex(index);
2973
+ setShowSchemaDropdown(false);
2974
+ } },
2975
+ React__default.createElement(Box, { flex: 1, color: "body" }, schemaOption.type || 'object'),
2976
+ selectedSchemaIndex === index && (React__default.createElement(Box, { color: "primary", fontSize: "xs" }, "\u2713"))))))));
2977
+ };
2978
+ const renderMinEnums = (schema) => {
2979
+ if (!schema || typeof schema !== 'object')
2980
+ return null;
2981
+ const boxStyle = {
2982
+ background: 'rgba(245, 247, 250, 0.5)',
2983
+ border: '1px solid #a0aec0',
2984
+ borderRadius: '4px',
2985
+ padding: '0px 2px',
2986
+ display: 'inline-block',
2987
+ overflowWrap: 'break-word',
2988
+ textAlign: 'left',
2989
+ maxWidth: 'fit-content',
2990
+ maxHeight: 'fit-content',
2991
+ };
2992
+ if ('minItems' in schema) {
2993
+ const schemaWithMinItems = schema;
2994
+ if (typeof schemaWithMinItems.minItems === 'number') {
2995
+ return (React__default.createElement(Box, { className: "sl-text-muted", fontFamily: "ui", fontWeight: "normal", mr: 2, style: boxStyle }, `>=${schemaWithMinItems.minItems} items`));
2996
+ }
2997
+ }
2998
+ if ('enum' in schema && Array.isArray(schema.enum)) {
2999
+ return (React__default.createElement("div", null,
3000
+ "Allowed values:",
3001
+ ' ',
3002
+ schema.enum.map((val, idx) => (React__default.createElement(Box, { key: idx, className: "sl-text-muted", fontFamily: "ui", fontWeight: "normal", mr: 2, style: boxStyle }, val)))));
3003
+ }
3004
+ return null;
3005
+ };
3006
+ const isRequired = parentRequired && propertyKey && parentRequired.includes(propertyKey);
3007
+ let showRequiredLabel = false;
3008
+ const hideDataEntry = hideData.find(hideEntry => trimSlashes(hideEntry.path) === trimSlashes(path));
3009
+ if ((hideDataEntry === null || hideDataEntry === void 0 ? void 0 : hideDataEntry.required) === true || ((hideDataEntry === null || hideDataEntry === void 0 ? void 0 : hideDataEntry.required) === undefined && isRequired)) {
3010
+ showRequiredLabel = true;
3011
+ }
3012
+ if (schema === null || schema === void 0 ? void 0 : schema.$ref) {
3013
+ schema = dereference(schema, root);
3014
+ }
3015
+ return (React__default.createElement("div", { className: "mb-1" },
3016
+ React__default.createElement(Flex, { maxW: "full", pl: 3, py: 2, "data-test": "schema-row", pos: "relative" },
3017
+ React__default.createElement(VStack, { spacing: 1, maxW: "full", className: "w-full" },
3018
+ React__default.createElement(Flex, { onClick: !isRoot ? handleToggle : undefined, className: `w-full ${isRoot ? '' : 'cursor-pointer'}` },
3019
+ !isRoot ? (React__default.createElement(Box, { mr: 2, className: "sl-font-mono sl-font-semibold sl-mr-2" },
3020
+ !TYPES.includes(schema === null || schema === void 0 ? void 0 : schema.type) &&
3021
+ !detectCircularPath(path) &&
3022
+ !((_b = schema === null || schema === void 0 ? void 0 : schema.items) === null || _b === void 0 ? void 0 : _b.circular) &&
3023
+ !(schema === null || schema === void 0 ? void 0 : schema.circular) ? (React__default.createElement("i", { role: "img", "aria-hidden": "true", className: `sl-icon fal ${expanded ? 'fa-chevron-down' : 'fa-chevron-right'} fa-fw fa-sm` })) : (React__default.createElement("span", { className: "sl-icon fal fa-fw fa-sm", "aria-hidden": "true" })),
3024
+ ' ' + displayTitle)) : null,
3025
+ !isRoot ? (React__default.createElement(Box, { mr: 2, pos: "relative" },
3026
+ React__default.createElement(Box, { display: "inline-flex", alignItems: "center", onMouseEnter: () => {
3027
+ if ((schema === null || schema === void 0 ? void 0 : schema.anyOf) || (schema === null || schema === void 0 ? void 0 : schema.oneOf)) {
3028
+ setIsHoveringSelector(true);
3029
+ }
3030
+ }, onMouseLeave: () => {
3031
+ if (!showSchemaDropdown) {
3032
+ setIsHoveringSelector(false);
3033
+ }
3034
+ }, onClick: (e) => {
3035
+ if ((schema === null || schema === void 0 ? void 0 : schema.anyOf) || (schema === null || schema === void 0 ? void 0 : schema.oneOf)) {
3036
+ e.stopPropagation();
3037
+ setShowSchemaDropdown(prev => !prev);
3038
+ }
3039
+ }, style: {
3040
+ cursor: (schema === null || schema === void 0 ? void 0 : schema.anyOf) || (schema === null || schema === void 0 ? void 0 : schema.oneOf) ? 'pointer' : 'default',
3041
+ } },
3042
+ React__default.createElement("span", { className: "sl-truncate sl-text-muted" },
3043
+ (() => {
3044
+ let typeDisplay = (schema === null || schema === void 0 ? void 0 : schema.type) === 'object' && (schema === null || schema === void 0 ? void 0 : schema.title) ? schema === null || schema === void 0 ? void 0 : schema.title : (schema === null || schema === void 0 ? void 0 : schema.type) || (root === null || root === void 0 ? void 0 : root.title);
3045
+ if ((schema === null || schema === void 0 ? void 0 : schema.anyOf) && (schema === null || schema === void 0 ? void 0 : schema.anyOf.length) > 0) {
3046
+ return `any of ${typeDisplay}`;
3047
+ }
3048
+ else if ((schema === null || schema === void 0 ? void 0 : schema.oneOf) && (schema === null || schema === void 0 ? void 0 : schema.oneOf.length) > 0) {
3049
+ return `one of ${typeDisplay}`;
3050
+ }
3051
+ return typeDisplay;
3052
+ })(),
3053
+ (schema === null || schema === void 0 ? void 0 : schema.items) && ((_c = schema === null || schema === void 0 ? void 0 : schema.items) === null || _c === void 0 ? void 0 : _c.title) !== undefined ? ` [${(_d = schema === null || schema === void 0 ? void 0 : schema.items) === null || _d === void 0 ? void 0 : _d.title}] ` : null),
3054
+ ((schema === null || schema === void 0 ? void 0 : schema.anyOf) || (schema === null || schema === void 0 ? void 0 : schema.oneOf)) && (React__default.createElement(Box, { display: "inline-flex", alignItems: "center", ml: 1, style: {
3055
+ opacity: isHoveringSelector ? 1 : 0.6,
3056
+ transition: 'opacity 0.2s',
3057
+ } },
3058
+ React__default.createElement("i", { className: "sl-icon fas fa-chevron-down", style: {
3059
+ fontSize: '10px',
3060
+ opacity: 0.6,
3061
+ } })))),
3062
+ React__default.createElement("span", { className: "text-gray-500" }, (schema === null || schema === void 0 ? void 0 : schema.format) !== undefined ? `<${schema === null || schema === void 0 ? void 0 : schema.format}>` : null),
3063
+ ((schema === null || schema === void 0 ? void 0 : schema.anyOf) || (schema === null || schema === void 0 ? void 0 : schema.oneOf)) && showSchemaDropdown && combinedSchemaSelector())) : null),
3064
+ React__default.createElement(Flex, { pl: 1, w: "full", align: "start", direction: "col", style: { overflow: 'visible', paddingLeft: '20px' } },
3065
+ (schema === null || schema === void 0 ? void 0 : schema.description) && (React__default.createElement(Box, { fontFamily: "ui", fontWeight: "light" },
3066
+ React__default.createElement("span", { className: "sl-prose sl-markdown-viewer", style: { fontSize: '12px' } }, schema === null || schema === void 0 ? void 0 : schema.description))),
3067
+ !isRoot && (schema === null || schema === void 0 ? void 0 : schema.examples) !== undefined && (React__default.createElement(Flex, { align: "center", mb: 1, style: { flexWrap: 'wrap' } },
3068
+ React__default.createElement("span", { className: "text-gray-500", style: { marginRight: 8, flexShrink: 0 } }, "Example"),
3069
+ React__default.createElement(Box, { className: "sl-text-muted", fontFamily: "ui", fontWeight: "normal", mr: 2, style: {
3070
+ background: 'rgba(245, 247, 250, 0.5)',
3071
+ border: '1px solid #a0aec0',
3072
+ borderRadius: '4px',
3073
+ padding: '4px 8px',
3074
+ display: 'inline-block',
3075
+ overflowWrap: 'break-word',
3076
+ textAlign: 'left',
3077
+ maxWidth: '530px',
3078
+ } }, JSON.stringify(schema === null || schema === void 0 ? void 0 : schema.examples))))),
3079
+ React__default.createElement(Flex, { pl: 1, w: "full", align: "start", direction: "col", style: { overflow: 'visible', paddingLeft: '20px' } }, schema &&
3080
+ typeof schema === 'object' &&
3081
+ ('minItems' in schema || 'enum' in schema) &&
3082
+ renderMinEnums(schema))),
3083
+ !isRoot && (React__default.createElement("label", { className: "inline-flex items-top ml-2" },
3084
+ React__default.createElement(Box, { mr: 2, fontFamily: "ui", fontWeight: "normal" }, showRequiredLabel && (React__default.createElement("div", { className: "sl-ml-2 sl-text-warning" },
3085
+ React__default.createElement("span", { style: { marginLeft: '10px' } }, "required"))))))),
3086
+ renderChildren()));
3087
+ };
3088
+
2737
3089
  const isBodyEmpty = (body) => {
2738
3090
  if (!body)
2739
3091
  return true;
2740
3092
  const { contents = [], description } = body;
2741
3093
  return contents.length === 0 && !(description === null || description === void 0 ? void 0 : description.trim());
2742
3094
  };
2743
- const Body = ({ body, onChange, isHttpWebhookOperation = false }) => {
3095
+ const Body = ({ body, onChange, isHttpWebhookOperation = false, disableProps }) => {
2744
3096
  var _a;
2745
3097
  const [refResolver, maxRefDepth] = useSchemaInlineRefResolver();
2746
3098
  const [chosenContent, setChosenContent] = React.useState(0);
@@ -2753,13 +3105,36 @@ const Body = ({ body, onChange, isHttpWebhookOperation = false }) => {
2753
3105
  const { contents = [], description } = body;
2754
3106
  const schema = (_a = contents[chosenContent]) === null || _a === void 0 ? void 0 : _a.schema;
2755
3107
  const descriptionChanged = nodeHasChanged === null || nodeHasChanged === void 0 ? void 0 : nodeHasChanged({ nodeId: body.id, attr: 'description' });
3108
+ const getMaskProperties = () => {
3109
+ const disablePropsConfig = disableProps || [];
3110
+ const absolutePathsToHide = [];
3111
+ disablePropsConfig.forEach(configEntry => {
3112
+ const { location, paths, isComplex } = configEntry;
3113
+ if (paths.length === 0 && !isComplex) {
3114
+ absolutePathsToHide.push({ path: location });
3115
+ }
3116
+ else {
3117
+ paths.forEach((item) => {
3118
+ const fullPath = location === '#' ? item === null || item === void 0 ? void 0 : item.path : `${location}/${item.path}`;
3119
+ let object = { path: fullPath };
3120
+ if (item.hasOwnProperty('required')) {
3121
+ object = Object.assign(Object.assign({}, object), { required: item === null || item === void 0 ? void 0 : item.required });
3122
+ }
3123
+ absolutePathsToHide.push(object);
3124
+ });
3125
+ }
3126
+ });
3127
+ return absolutePathsToHide;
3128
+ };
3129
+ const shouldUseLazySchema = disableProps === null || disableProps === void 0 ? void 0 : disableProps.some(entry => entry.isComplex === true);
3130
+ console.log('!!!!! shouldUseLazySchema body!!!!', shouldUseLazySchema);
2756
3131
  return (React.createElement(VStack, { spacing: 6 },
2757
3132
  React.createElement(SectionSubtitle, { title: "Body", id: "request-body" }, contents.length > 0 && (React.createElement(Flex, { flex: 1, justify: "end" },
2758
3133
  React.createElement(Select, { "aria-label": "Request Body Content Type", value: String(chosenContent), onChange: value => setChosenContent(parseInt(String(value), 10)), options: contents.map((content, index) => ({ label: content.mediaType, value: index })), size: "sm" })))),
2759
3134
  description && (React.createElement(Box, { pos: "relative" },
2760
3135
  React.createElement(MarkdownViewer, { markdown: description }),
2761
3136
  React.createElement(NodeAnnotation, { change: descriptionChanged }))),
2762
- isJSONSchema(schema) && (React.createElement(JsonSchemaViewer, { resolveRef: refResolver, maxRefDepth: maxRefDepth, schema: getOriginalObject(schema), viewMode: isHttpWebhookOperation ? 'standalone' : 'write', renderRootTreeLines: true, nodeHasChanged: nodeHasChanged, renderExtensionAddon: renderExtensionAddon }))));
3137
+ schema && shouldUseLazySchema ? (React.createElement(LazySchemaTreePreviewer, { schema: schema, hideData: getMaskProperties(), complexData: disableProps })) : (isJSONSchema(schema) && (React.createElement(JsonSchemaViewer, { resolveRef: refResolver, maxRefDepth: maxRefDepth, schema: getOriginalObject(schema), viewMode: isHttpWebhookOperation ? 'standalone' : 'write', renderRootTreeLines: true, nodeHasChanged: nodeHasChanged, renderExtensionAddon: renderExtensionAddon })))));
2763
3138
  };
2764
3139
  Body.displayName = 'HttpOperation.Body';
2765
3140
 
@@ -2826,7 +3201,7 @@ const httpOperationParamsToSchema = ({ parameters, parameterType }) => {
2826
3201
  return schema;
2827
3202
  };
2828
3203
 
2829
- const Request = ({ operation: { request, request: { path: pathParams = [], headers: headerParams = [], cookie: cookieParams = [], body, query: queryParams = [], } = {}, security, }, hideSecurityInfo, onChange, isHttpWebhookOperation = false, }) => {
3204
+ const Request = ({ operation: { request, request: { path: pathParams = [], headers: headerParams = [], cookie: cookieParams = [], body, query: queryParams = [], } = {}, security, }, hideSecurityInfo, onChange, isHttpWebhookOperation = false, disableProps, }) => {
2830
3205
  if (!request || typeof request !== 'object')
2831
3206
  return null;
2832
3207
  const bodyIsEmpty = isBodyEmpty(body);
@@ -2854,7 +3229,7 @@ const Request = ({ operation: { request, request: { path: pathParams = [], heade
2854
3229
  cookieParams.length > 0 && (React.createElement(VStack, { spacing: 5 },
2855
3230
  React.createElement(SectionSubtitle, { title: "Cookies", id: "request-cookies" }),
2856
3231
  React.createElement(Parameters, { parameterType: "cookie", parameters: cookieParams }))),
2857
- body && React.createElement(Body, { onChange: onChange, body: body, isHttpWebhookOperation: isHttpWebhookOperation })));
3232
+ body && (React.createElement(Body, { onChange: onChange, body: body, isHttpWebhookOperation: isHttpWebhookOperation, disableProps: disableProps }))));
2858
3233
  };
2859
3234
  Request.displayName = 'HttpOperation.Request';
2860
3235
  const schemeExpandedState = atomWithStorage('HttpOperation_security_expanded', {});
@@ -2885,7 +3260,7 @@ const OptionalMessage$1 = () => {
2885
3260
  return React.createElement(Callout, { appearance: "outline" }, OptionalSecurityMessage);
2886
3261
  };
2887
3262
 
2888
- const Responses = ({ responses: unsortedResponses, onStatusCodeChange, onMediaTypeChange, isCompact, }) => {
3263
+ const Responses = ({ responses: unsortedResponses, onStatusCodeChange, onMediaTypeChange, isCompact, disableProps, }) => {
2889
3264
  var _a, _b;
2890
3265
  const responses = sortBy(uniqBy(unsortedResponses, r => r.code), r => r.code);
2891
3266
  const [activeResponseId, setActiveResponseId] = React.useState((_b = (_a = responses[0]) === null || _a === void 0 ? void 0 : _a.code) !== null && _b !== void 0 ? _b : '');
@@ -2918,11 +3293,12 @@ const Responses = ({ responses: unsortedResponses, onStatusCodeChange, onMediaTy
2918
3293
  const tabResponses = (React.createElement(TabList, { density: "compact" }, responses.map(({ code }) => (React.createElement(Tab, { key: code, id: code, intent: codeToIntentVal(code) }, code)))));
2919
3294
  return (React.createElement(VStack, { spacing: 8, as: Tabs, selectedId: activeResponseId, onChange: setActiveResponseId, appearance: "pill" },
2920
3295
  React.createElement(SectionTitle, { title: "Responses", isCompact: isCompact }, isCompact ? compactResponses : tabResponses),
2921
- isCompact ? (React.createElement(Response, { response: response, onMediaTypeChange: onMediaTypeChange })) : (React.createElement(TabPanels, { p: 0 }, responses.map(response => (React.createElement(TabPanel, { key: response.code, id: response.code },
2922
- React.createElement(Response, { response: response, onMediaTypeChange: onMediaTypeChange }))))))));
3296
+ isCompact ? (React.createElement(Response, { response: response, onMediaTypeChange: onMediaTypeChange, disableProps: disableProps, statusCode: activeResponseId })) : (React.createElement(TabPanels, { p: 0 }, responses.map(response => (React.createElement(TabPanel, { key: response.code, id: response.code },
3297
+ React.createElement(Response, { response: response, onMediaTypeChange: onMediaTypeChange, disableProps: disableProps, statusCode: response.code }))))))));
2923
3298
  };
2924
3299
  Responses.displayName = 'HttpOperation.Responses';
2925
- const Response = ({ response, onMediaTypeChange }) => {
3300
+ const Response = ({ response, onMediaTypeChange, disableProps, statusCode }) => {
3301
+ var _a, _b;
2926
3302
  const { contents = [], headers = [], description } = response;
2927
3303
  const [chosenContent, setChosenContent] = React.useState(0);
2928
3304
  const [refResolver, maxRefDepth] = useSchemaInlineRefResolver();
@@ -2933,6 +3309,29 @@ const Response = ({ response, onMediaTypeChange }) => {
2933
3309
  responseContent && (onMediaTypeChange === null || onMediaTypeChange === void 0 ? void 0 : onMediaTypeChange(responseContent.mediaType));
2934
3310
  }, [responseContent]);
2935
3311
  const descriptionChanged = nodeHasChanged === null || nodeHasChanged === void 0 ? void 0 : nodeHasChanged({ nodeId: response.id, attr: 'description' });
3312
+ const getMaskProperties = () => {
3313
+ if (!disableProps || !statusCode)
3314
+ return [];
3315
+ const configEntries = disableProps[statusCode] || [];
3316
+ const absolutePathsToHide = [];
3317
+ configEntries.forEach(({ location, paths, isComplex }) => {
3318
+ if (paths.length === 0 && !isComplex) {
3319
+ absolutePathsToHide.push({ path: location });
3320
+ }
3321
+ else {
3322
+ paths.forEach((item) => {
3323
+ const fullPath = location === '#' ? item === null || item === void 0 ? void 0 : item.path : `${location}/${item.path}`;
3324
+ let object = { path: fullPath };
3325
+ if (item.hasOwnProperty('required')) {
3326
+ object = Object.assign(Object.assign({}, object), { required: item === null || item === void 0 ? void 0 : item.required });
3327
+ }
3328
+ absolutePathsToHide.push(object);
3329
+ });
3330
+ }
3331
+ });
3332
+ return absolutePathsToHide;
3333
+ };
3334
+ const shouldUseLazySchema = (_b = (statusCode && ((_a = disableProps === null || disableProps === void 0 ? void 0 : disableProps[statusCode]) === null || _a === void 0 ? void 0 : _a.some(entry => entry.isComplex)))) !== null && _b !== void 0 ? _b : false;
2936
3335
  return (React.createElement(VStack, { spacing: 8, pt: 8 },
2937
3336
  description && (React.createElement(Box, { pos: "relative" },
2938
3337
  React.createElement(MarkdownViewer, { markdown: description }),
@@ -2944,7 +3343,7 @@ const Response = ({ response, onMediaTypeChange }) => {
2944
3343
  React.createElement(SectionSubtitle, { title: "Body", id: "response-body" },
2945
3344
  React.createElement(Flex, { flex: 1, justify: "end" },
2946
3345
  React.createElement(Select, { "aria-label": "Response Body Content Type", value: String(chosenContent), onChange: value => setChosenContent(parseInt(String(value), 10)), options: contents.map((content, index) => ({ label: content.mediaType, value: index })), size: "sm" }))),
2947
- schema && (React.createElement(JsonSchemaViewer, { schema: getOriginalObject(schema), resolveRef: refResolver, maxRefDepth: maxRefDepth, viewMode: "read", parentCrumbs: ['responses', response.code], renderRootTreeLines: true, nodeHasChanged: nodeHasChanged, renderExtensionAddon: renderExtensionAddon }))))));
3346
+ schema && shouldUseLazySchema ? (React.createElement(LazySchemaTreePreviewer, { schema: schema, path: "", hideData: getMaskProperties(), complexData: disableProps && statusCode ? disableProps[statusCode] : [] })) : (React.createElement(JsonSchemaViewer, { schema: getOriginalObject(schema), resolveRef: refResolver, maxRefDepth: maxRefDepth, viewMode: "read", parentCrumbs: ['responses', response.code], renderRootTreeLines: true, nodeHasChanged: nodeHasChanged, renderExtensionAddon: renderExtensionAddon }))))));
2948
3347
  };
2949
3348
  Response.displayName = 'HttpOperation.Response';
2950
3349
  const codeToIntentVal = (code) => {
@@ -2993,7 +3392,7 @@ const Callback = ({ data, isCompact }) => {
2993
3392
  };
2994
3393
  Callbacks.displayName = 'HttpOperation.Callback';
2995
3394
 
2996
- const HttpOperationComponent = React.memo(({ className, data: unresolvedData, layoutOptions, tryItCredentialsPolicy, tryItCorsProxy }) => {
3395
+ const HttpOperationComponent = React.memo(({ className, data: unresolvedData, layoutOptions, tryItCredentialsPolicy, tryItCorsProxy, disableProps }) => {
2997
3396
  var _a;
2998
3397
  const { nodeHasChanged } = useOptionsCtx();
2999
3398
  const data = useResolvedObject(unresolvedData);
@@ -3024,11 +3423,11 @@ const HttpOperationComponent = React.memo(({ className, data: unresolvedData, la
3024
3423
  React.createElement(MarkdownViewer, { className: "HttpOperation__Description", markdown: data.description }),
3025
3424
  React.createElement(NodeAnnotation, { change: descriptionChanged }))),
3026
3425
  React.createElement(NodeVendorExtensions, { data: data }),
3027
- React.createElement(Request, { onChange: setTextRequestBodyIndex, operation: data, hideSecurityInfo: layoutOptions === null || layoutOptions === void 0 ? void 0 : layoutOptions.hideSecurityInfo, isHttpWebhookOperation: isHttpWebhookOperation(data) }),
3028
- data.responses && (React.createElement(Responses, { responses: data.responses, onMediaTypeChange: setResponseMediaType, onStatusCodeChange: setResponseStatusCode, isCompact: isCompact })),
3426
+ React.createElement(Request, { onChange: setTextRequestBodyIndex, operation: data, hideSecurityInfo: layoutOptions === null || layoutOptions === void 0 ? void 0 : layoutOptions.hideSecurityInfo, isHttpWebhookOperation: isHttpWebhookOperation(data), disableProps: disableProps === null || disableProps === void 0 ? void 0 : disableProps.request }),
3427
+ data.responses && (React.createElement(Responses, { responses: data.responses, onMediaTypeChange: setResponseMediaType, onStatusCodeChange: setResponseStatusCode, isCompact: isCompact, disableProps: disableProps === null || disableProps === void 0 ? void 0 : disableProps.response })),
3029
3428
  ((_a = data.callbacks) === null || _a === void 0 ? void 0 : _a.length) ? React.createElement(Callbacks, { callbacks: data.callbacks, isCompact: isCompact }) : null,
3030
3429
  isCompact && tryItPanel));
3031
- return (React.createElement(TwoColumnLayout, { ref: layoutRef, className: cn('HttpOperation', className), header: header, left: description, right: !isCompact && tryItPanel }));
3430
+ return (React.createElement(TwoColumnLayout, { ref: layoutRef, className: cn('HttpOperation', className), header: header, left: description, right: !(disableProps === null || disableProps === void 0 ? void 0 : disableProps.hideOperationTryIt) && !isCompact && tryItPanel }));
3032
3431
  });
3033
3432
  HttpOperationComponent.displayName = 'HttpOperation.Component';
3034
3433
  const HttpOperation = withErrorBoundary(HttpOperationComponent, {
@@ -3279,7 +3678,7 @@ const HttpServiceComponent = React.memo(({ data: unresolvedData, location = {},
3279
3678
  HttpServiceComponent.displayName = 'HttpService.Component';
3280
3679
  const HttpService = withErrorBoundary(HttpServiceComponent, { recoverableProps: ['data'] });
3281
3680
 
3282
- const ModelComponent = ({ data: unresolvedData, className, nodeTitle, layoutOptions, exportProps, }) => {
3681
+ const ModelComponent = ({ data: unresolvedData, className, nodeTitle, layoutOptions, exportProps, disableProps, }) => {
3283
3682
  var _a, _b;
3284
3683
  const [resolveRef, maxRefDepth] = useSchemaInlineRefResolver();
3285
3684
  const data = useResolvedObject(unresolvedData);
@@ -3302,14 +3701,40 @@ const ModelComponent = ({ data: unresolvedData, className, nodeTitle, layoutOpti
3302
3701
  exportProps && !(layoutOptions === null || layoutOptions === void 0 ? void 0 : layoutOptions.hideExport) && !isCompact && React.createElement(ExportButton, Object.assign({}, exportProps))));
3303
3702
  const modelExamples = !(layoutOptions === null || layoutOptions === void 0 ? void 0 : layoutOptions.hideModelExamples) && React.createElement(ModelExamples, { data: data, isCollapsible: isCompact });
3304
3703
  const descriptionChanged = nodeHasChanged === null || nodeHasChanged === void 0 ? void 0 : nodeHasChanged({ nodeId, attr: 'description' });
3704
+ const getMaskProperties = () => {
3705
+ const disablePropsConfig = disableProps === null || disableProps === void 0 ? void 0 : disableProps.models;
3706
+ const absolutePathsToHide = [];
3707
+ if (disableProps === null || disableProps === void 0 ? void 0 : disableProps.models) {
3708
+ disablePropsConfig.forEach((configEntry) => {
3709
+ const { location, paths, isComplex } = configEntry;
3710
+ if (paths.length === 0 && !isComplex) {
3711
+ absolutePathsToHide.push({ path: location });
3712
+ }
3713
+ else {
3714
+ paths.forEach((item) => {
3715
+ const fullPath = location === '#' ? item === null || item === void 0 ? void 0 : item.path : `${location}/${item.path}`;
3716
+ let object = { path: fullPath };
3717
+ if (item.hasOwnProperty('required')) {
3718
+ object = Object.assign(Object.assign({}, object), { required: item === null || item === void 0 ? void 0 : item.required });
3719
+ }
3720
+ absolutePathsToHide.push(object);
3721
+ });
3722
+ }
3723
+ });
3724
+ }
3725
+ return absolutePathsToHide;
3726
+ };
3727
+ const shouldUseLazySchema = disableProps && (disableProps === null || disableProps === void 0 ? void 0 : disableProps.models)
3728
+ ? disableProps.models.some((entry) => entry.isComplex === true)
3729
+ : false;
3305
3730
  const description = (React.createElement(VStack, { spacing: 10 },
3306
3731
  data.description && data.type === 'object' && (React.createElement(Box, { pos: "relative" },
3307
3732
  React.createElement(MarkdownViewer, { role: "textbox", markdown: data.description }),
3308
3733
  React.createElement(NodeAnnotation, { change: descriptionChanged }))),
3309
3734
  React.createElement(NodeVendorExtensions, { data: data }),
3310
- isCompact && modelExamples,
3311
- React.createElement(JsonSchemaViewer, { resolveRef: resolveRef, maxRefDepth: maxRefDepth, schema: getOriginalObject(data), nodeHasChanged: nodeHasChanged, renderExtensionAddon: renderExtensionAddon, skipTopLevelDescription: true })));
3312
- return (React.createElement(TwoColumnLayout, { ref: layoutRef, className: cn('Model', className), header: header, left: description, right: !isCompact && modelExamples }));
3735
+ !(disableProps === null || disableProps === void 0 ? void 0 : disableProps.hideModelTryIt) && isCompact && modelExamples,
3736
+ data && shouldUseLazySchema ? (React.createElement(LazySchemaTreePreviewer, { schema: data, hideData: getMaskProperties(), complexData: disableProps === null || disableProps === void 0 ? void 0 : disableProps.models })) : (React.createElement(JsonSchemaViewer, { resolveRef: resolveRef, maxRefDepth: maxRefDepth, schema: getOriginalObject(data), nodeHasChanged: nodeHasChanged, renderExtensionAddon: renderExtensionAddon, skipTopLevelDescription: true }))));
3737
+ return (React.createElement(TwoColumnLayout, { ref: layoutRef, className: cn('Model', className), header: header, left: description, right: !(disableProps === null || disableProps === void 0 ? void 0 : disableProps.hideModelTryIt) && !isCompact && modelExamples }));
3313
3738
  };
3314
3739
  const ModelExamples = React.memo(({ data, isCollapsible = false }) => {
3315
3740
  var _a;
@@ -3331,30 +3756,41 @@ const Model = withErrorBoundary(ModelComponent, { recoverableProps: ['data'] });
3331
3756
 
3332
3757
  const Docs = React.memo((_a) => {
3333
3758
  var _b;
3334
- var { nodeType, nodeData, useNodeForRefResolving = false, refResolver, maxRefDepth, nodeHasChanged, renderExtensionAddon } = _a, commonProps = __rest(_a, ["nodeType", "nodeData", "useNodeForRefResolving", "refResolver", "maxRefDepth", "nodeHasChanged", "renderExtensionAddon"]);
3759
+ var { nodeType, nodeData, disableProps, useNodeForRefResolving = false, refResolver, maxRefDepth, nodeHasChanged, renderExtensionAddon } = _a, commonProps = __rest(_a, ["nodeType", "nodeData", "disableProps", "useNodeForRefResolving", "refResolver", "maxRefDepth", "nodeHasChanged", "renderExtensionAddon"]);
3335
3760
  const parsedNode = useParsedData(nodeType, nodeData);
3336
3761
  if (!parsedNode) {
3337
3762
  (_b = commonProps.nodeUnsupported) === null || _b === void 0 ? void 0 : _b.call(commonProps, 'dataEmpty');
3338
3763
  return null;
3339
3764
  }
3340
- let elem = React.createElement(ParsedDocs, Object.assign({ node: parsedNode }, commonProps));
3765
+ let elem = React.createElement(ParsedDocs, Object.assign({ node: parsedNode, disableProps: disableProps }, commonProps));
3341
3766
  if (useNodeForRefResolving) {
3342
3767
  elem = (React.createElement(InlineRefResolverProvider, { document: parsedNode.data, resolver: refResolver, maxRefDepth: maxRefDepth }, elem));
3343
3768
  }
3344
3769
  return (React.createElement(ElementsOptionsProvider, { nodeHasChanged: nodeHasChanged, renderExtensionAddon: renderExtensionAddon }, elem));
3345
3770
  });
3771
+ const getTryItVisibility = (disableProps) => {
3772
+ var _a, _b, _c, _d;
3773
+ if (!disableProps)
3774
+ return { hideOperationTryIt: false, hideModelTryIt: false };
3775
+ const requestHasComplex = (_b = (_a = disableProps.request) === null || _a === void 0 ? void 0 : _a.some(item => item.isComplex)) !== null && _b !== void 0 ? _b : false;
3776
+ const responseHasComplex = Object.values(disableProps.response || {}).some(arr => arr.some(item => item.isComplex));
3777
+ const hideOperationTryIt = requestHasComplex || responseHasComplex;
3778
+ const hideModelTryIt = (_d = (_c = disableProps.models) === null || _c === void 0 ? void 0 : _c.some(item => item.isComplex)) !== null && _d !== void 0 ? _d : false;
3779
+ return { hideOperationTryIt, hideModelTryIt };
3780
+ };
3346
3781
  const ParsedDocs = (_a) => {
3347
- var { node, nodeUnsupported } = _a, commonProps = __rest(_a, ["node", "nodeUnsupported"]);
3782
+ var { node, nodeUnsupported, disableProps } = _a, commonProps = __rest(_a, ["node", "nodeUnsupported", "disableProps"]);
3783
+ const { hideOperationTryIt, hideModelTryIt } = getTryItVisibility(disableProps);
3348
3784
  switch (node.type) {
3349
3785
  case 'article':
3350
3786
  return React.createElement(Article, Object.assign({ data: node.data }, commonProps));
3351
3787
  case 'http_operation':
3352
3788
  case 'http_webhook':
3353
- return React.createElement(HttpOperation, Object.assign({ data: node.data }, commonProps));
3789
+ return React.createElement(HttpOperation, Object.assign({ data: node.data, disableProps: Object.assign(Object.assign({}, disableProps), { hideOperationTryIt }) }, commonProps));
3354
3790
  case 'http_service':
3355
3791
  return React.createElement(HttpService, Object.assign({ data: node.data }, commonProps));
3356
3792
  case 'model':
3357
- return React.createElement(Model, Object.assign({ data: node.data }, commonProps));
3793
+ return React.createElement(Model, Object.assign({ data: node.data, disableProps: Object.assign(Object.assign({}, disableProps), { hideModelTryIt }) }, commonProps));
3358
3794
  default:
3359
3795
  nodeUnsupported === null || nodeUnsupported === void 0 ? void 0 : nodeUnsupported('invalidType');
3360
3796
  return null;