@stoplight/elements-core 7.7.7 → 7.7.9
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/context/InlineRefResolver.d.ts +1 -0
- package/index.esm.js +27 -5
- package/index.js +27 -5
- package/index.mjs +27 -5
- package/package.json +2 -1
|
@@ -8,4 +8,5 @@ export declare const InlineRefResolverProvider: React.FC<InlineRefResolverProvid
|
|
|
8
8
|
export declare const useInlineRefResolver: () => ReferenceResolver | undefined;
|
|
9
9
|
export declare const useDocument: () => object | undefined;
|
|
10
10
|
export declare const useResolvedObject: (currentObject: object) => object;
|
|
11
|
+
export declare const useSchemaInlineRefResolver: () => ReferenceResolver;
|
|
11
12
|
export {};
|
package/index.esm.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { __rest, __awaiter } from 'tslib';
|
|
2
2
|
import * as React from 'react';
|
|
3
3
|
import React__default, { useContext, useMemo } from 'react';
|
|
4
|
+
import { convertToJsonSchema } from '@stoplight/http-spec/oas';
|
|
4
5
|
import { resolveInlineRef, hasRef, isPlainObject as isPlainObject$1, safeParse, safeStringify } from '@stoplight/json';
|
|
5
6
|
import isArray from 'lodash/isArray.js';
|
|
6
7
|
import isPlainObject from 'lodash/isPlainObject.js';
|
|
@@ -107,6 +108,7 @@ const getOriginalObject = (resolvedObject) => {
|
|
|
107
108
|
};
|
|
108
109
|
const isReference = hasRef;
|
|
109
110
|
|
|
111
|
+
const translatedObjectSymbol = Symbol('TranslatedObject');
|
|
110
112
|
const InlineRefResolverContext = React.createContext(undefined);
|
|
111
113
|
InlineRefResolverContext.displayName = 'InlineRefResolverContext';
|
|
112
114
|
const DocumentContext = React.createContext(undefined);
|
|
@@ -123,6 +125,26 @@ const useResolvedObject = (currentObject) => {
|
|
|
123
125
|
const document = useDocument();
|
|
124
126
|
const resolver = useInlineRefResolver();
|
|
125
127
|
return React.useMemo(() => createResolvedObject(currentObject, { contextObject: document, resolver }), [currentObject, document, resolver]);
|
|
128
|
+
};
|
|
129
|
+
const useSchemaInlineRefResolver = () => {
|
|
130
|
+
const document = useDocument();
|
|
131
|
+
const resolver = useInlineRefResolver();
|
|
132
|
+
return React.useCallback((...args) => {
|
|
133
|
+
const resolved = resolver === null || resolver === void 0 ? void 0 : resolver(...args);
|
|
134
|
+
if (!isPlainObject$1(resolved)) {
|
|
135
|
+
return resolved;
|
|
136
|
+
}
|
|
137
|
+
if (translatedObjectSymbol in resolved) {
|
|
138
|
+
return resolved[translatedObjectSymbol];
|
|
139
|
+
}
|
|
140
|
+
const converted = convertToJsonSchema((document !== null && document !== void 0 ? document : {}), resolved);
|
|
141
|
+
Reflect.defineProperty(resolved, translatedObjectSymbol, {
|
|
142
|
+
configurable: true,
|
|
143
|
+
value: converted,
|
|
144
|
+
});
|
|
145
|
+
delete converted.$schema;
|
|
146
|
+
return converted;
|
|
147
|
+
}, [document, resolver]);
|
|
126
148
|
};
|
|
127
149
|
|
|
128
150
|
const DEFAULT_CONTEXT = {};
|
|
@@ -2142,7 +2164,7 @@ const isBodyEmpty = (body) => {
|
|
|
2142
2164
|
};
|
|
2143
2165
|
const Body = ({ body, onChange }) => {
|
|
2144
2166
|
var _a;
|
|
2145
|
-
const refResolver =
|
|
2167
|
+
const refResolver = useSchemaInlineRefResolver();
|
|
2146
2168
|
const [chosenContent, setChosenContent] = React.useState(0);
|
|
2147
2169
|
const { nodeHasChanged } = useOptionsCtx();
|
|
2148
2170
|
React.useEffect(() => {
|
|
@@ -2184,7 +2206,7 @@ const defaultStyle = {
|
|
|
2184
2206
|
};
|
|
2185
2207
|
const Parameters = ({ parameters, parameterType }) => {
|
|
2186
2208
|
const { nodeHasChanged } = useOptionsCtx();
|
|
2187
|
-
const refResolver =
|
|
2209
|
+
const refResolver = useSchemaInlineRefResolver();
|
|
2188
2210
|
const schema = React.useMemo(() => httpOperationParamsToSchema({ parameters, parameterType }), [parameters, parameterType]);
|
|
2189
2211
|
if (!schema)
|
|
2190
2212
|
return null;
|
|
@@ -2289,7 +2311,7 @@ Responses.displayName = 'HttpOperation.Responses';
|
|
|
2289
2311
|
const Response = ({ response, onMediaTypeChange }) => {
|
|
2290
2312
|
const { contents = [], headers = [], description } = response;
|
|
2291
2313
|
const [chosenContent, setChosenContent] = React.useState(0);
|
|
2292
|
-
const refResolver =
|
|
2314
|
+
const refResolver = useSchemaInlineRefResolver();
|
|
2293
2315
|
const { nodeHasChanged } = useOptionsCtx();
|
|
2294
2316
|
const responseContent = contents[chosenContent];
|
|
2295
2317
|
const schema = responseContent === null || responseContent === void 0 ? void 0 : responseContent.schema;
|
|
@@ -2531,7 +2553,7 @@ function useIsCompact(layoutOptions) {
|
|
|
2531
2553
|
|
|
2532
2554
|
const ModelComponent = ({ data: unresolvedData, className, nodeTitle, layoutOptions, exportProps, }) => {
|
|
2533
2555
|
var _a, _b;
|
|
2534
|
-
const resolveRef =
|
|
2556
|
+
const resolveRef = useSchemaInlineRefResolver();
|
|
2535
2557
|
const data = useResolvedObject(unresolvedData);
|
|
2536
2558
|
const { nodeHasChanged } = useOptionsCtx();
|
|
2537
2559
|
const { ref: layoutRef, isCompact } = useIsCompact(layoutOptions);
|
|
@@ -2697,7 +2719,7 @@ function isPartialHttpRequest(maybeHttpRequest) {
|
|
|
2697
2719
|
typeof maybeHttpRequest['url'] === 'string');
|
|
2698
2720
|
}
|
|
2699
2721
|
const SchemaAndDescription = ({ title: titleProp, schema }) => {
|
|
2700
|
-
const resolveRef =
|
|
2722
|
+
const resolveRef = useSchemaInlineRefResolver();
|
|
2701
2723
|
const title = titleProp !== null && titleProp !== void 0 ? titleProp : schema.title;
|
|
2702
2724
|
return (React__default.createElement(Box, { py: 2 },
|
|
2703
2725
|
title && (React__default.createElement(Flex, { alignItems: "center", p: 2 },
|
package/index.js
CHANGED
|
@@ -4,6 +4,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
|
|
|
4
4
|
|
|
5
5
|
var tslib = require('tslib');
|
|
6
6
|
var React = require('react');
|
|
7
|
+
var oas = require('@stoplight/http-spec/oas');
|
|
7
8
|
var json = require('@stoplight/json');
|
|
8
9
|
var isArray = require('lodash/isArray.js');
|
|
9
10
|
var isPlainObject = require('lodash/isPlainObject.js');
|
|
@@ -161,6 +162,7 @@ const getOriginalObject = (resolvedObject) => {
|
|
|
161
162
|
};
|
|
162
163
|
const isReference = json.hasRef;
|
|
163
164
|
|
|
165
|
+
const translatedObjectSymbol = Symbol('TranslatedObject');
|
|
164
166
|
const InlineRefResolverContext = React__namespace.createContext(undefined);
|
|
165
167
|
InlineRefResolverContext.displayName = 'InlineRefResolverContext';
|
|
166
168
|
const DocumentContext = React__namespace.createContext(undefined);
|
|
@@ -177,6 +179,26 @@ const useResolvedObject = (currentObject) => {
|
|
|
177
179
|
const document = useDocument();
|
|
178
180
|
const resolver = useInlineRefResolver();
|
|
179
181
|
return React__namespace.useMemo(() => createResolvedObject(currentObject, { contextObject: document, resolver }), [currentObject, document, resolver]);
|
|
182
|
+
};
|
|
183
|
+
const useSchemaInlineRefResolver = () => {
|
|
184
|
+
const document = useDocument();
|
|
185
|
+
const resolver = useInlineRefResolver();
|
|
186
|
+
return React__namespace.useCallback((...args) => {
|
|
187
|
+
const resolved = resolver === null || resolver === void 0 ? void 0 : resolver(...args);
|
|
188
|
+
if (!json.isPlainObject(resolved)) {
|
|
189
|
+
return resolved;
|
|
190
|
+
}
|
|
191
|
+
if (translatedObjectSymbol in resolved) {
|
|
192
|
+
return resolved[translatedObjectSymbol];
|
|
193
|
+
}
|
|
194
|
+
const converted = oas.convertToJsonSchema((document !== null && document !== void 0 ? document : {}), resolved);
|
|
195
|
+
Reflect.defineProperty(resolved, translatedObjectSymbol, {
|
|
196
|
+
configurable: true,
|
|
197
|
+
value: converted,
|
|
198
|
+
});
|
|
199
|
+
delete converted.$schema;
|
|
200
|
+
return converted;
|
|
201
|
+
}, [document, resolver]);
|
|
180
202
|
};
|
|
181
203
|
|
|
182
204
|
const DEFAULT_CONTEXT = {};
|
|
@@ -2196,7 +2218,7 @@ const isBodyEmpty = (body) => {
|
|
|
2196
2218
|
};
|
|
2197
2219
|
const Body = ({ body, onChange }) => {
|
|
2198
2220
|
var _a;
|
|
2199
|
-
const refResolver =
|
|
2221
|
+
const refResolver = useSchemaInlineRefResolver();
|
|
2200
2222
|
const [chosenContent, setChosenContent] = React__namespace.useState(0);
|
|
2201
2223
|
const { nodeHasChanged } = useOptionsCtx();
|
|
2202
2224
|
React__namespace.useEffect(() => {
|
|
@@ -2238,7 +2260,7 @@ const defaultStyle = {
|
|
|
2238
2260
|
};
|
|
2239
2261
|
const Parameters = ({ parameters, parameterType }) => {
|
|
2240
2262
|
const { nodeHasChanged } = useOptionsCtx();
|
|
2241
|
-
const refResolver =
|
|
2263
|
+
const refResolver = useSchemaInlineRefResolver();
|
|
2242
2264
|
const schema = React__namespace.useMemo(() => httpOperationParamsToSchema({ parameters, parameterType }), [parameters, parameterType]);
|
|
2243
2265
|
if (!schema)
|
|
2244
2266
|
return null;
|
|
@@ -2343,7 +2365,7 @@ Responses.displayName = 'HttpOperation.Responses';
|
|
|
2343
2365
|
const Response = ({ response, onMediaTypeChange }) => {
|
|
2344
2366
|
const { contents = [], headers = [], description } = response;
|
|
2345
2367
|
const [chosenContent, setChosenContent] = React__namespace.useState(0);
|
|
2346
|
-
const refResolver =
|
|
2368
|
+
const refResolver = useSchemaInlineRefResolver();
|
|
2347
2369
|
const { nodeHasChanged } = useOptionsCtx();
|
|
2348
2370
|
const responseContent = contents[chosenContent];
|
|
2349
2371
|
const schema = responseContent === null || responseContent === void 0 ? void 0 : responseContent.schema;
|
|
@@ -2585,7 +2607,7 @@ function useIsCompact(layoutOptions) {
|
|
|
2585
2607
|
|
|
2586
2608
|
const ModelComponent = ({ data: unresolvedData, className, nodeTitle, layoutOptions, exportProps, }) => {
|
|
2587
2609
|
var _a, _b;
|
|
2588
|
-
const resolveRef =
|
|
2610
|
+
const resolveRef = useSchemaInlineRefResolver();
|
|
2589
2611
|
const data = useResolvedObject(unresolvedData);
|
|
2590
2612
|
const { nodeHasChanged } = useOptionsCtx();
|
|
2591
2613
|
const { ref: layoutRef, isCompact } = useIsCompact(layoutOptions);
|
|
@@ -2751,7 +2773,7 @@ function isPartialHttpRequest(maybeHttpRequest) {
|
|
|
2751
2773
|
typeof maybeHttpRequest['url'] === 'string');
|
|
2752
2774
|
}
|
|
2753
2775
|
const SchemaAndDescription = ({ title: titleProp, schema }) => {
|
|
2754
|
-
const resolveRef =
|
|
2776
|
+
const resolveRef = useSchemaInlineRefResolver();
|
|
2755
2777
|
const title = titleProp !== null && titleProp !== void 0 ? titleProp : schema.title;
|
|
2756
2778
|
return (React__default["default"].createElement(mosaic.Box, { py: 2 },
|
|
2757
2779
|
title && (React__default["default"].createElement(mosaic.Flex, { alignItems: "center", p: 2 },
|
package/index.mjs
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { __rest, __awaiter } from 'tslib';
|
|
2
2
|
import * as React from 'react';
|
|
3
3
|
import React__default, { useContext, useMemo } from 'react';
|
|
4
|
+
import { convertToJsonSchema } from '@stoplight/http-spec/oas';
|
|
4
5
|
import { resolveInlineRef, hasRef, isPlainObject as isPlainObject$1, safeParse, safeStringify } from '@stoplight/json';
|
|
5
6
|
import isArray from 'lodash/isArray.js';
|
|
6
7
|
import isPlainObject from 'lodash/isPlainObject.js';
|
|
@@ -107,6 +108,7 @@ const getOriginalObject = (resolvedObject) => {
|
|
|
107
108
|
};
|
|
108
109
|
const isReference = hasRef;
|
|
109
110
|
|
|
111
|
+
const translatedObjectSymbol = Symbol('TranslatedObject');
|
|
110
112
|
const InlineRefResolverContext = React.createContext(undefined);
|
|
111
113
|
InlineRefResolverContext.displayName = 'InlineRefResolverContext';
|
|
112
114
|
const DocumentContext = React.createContext(undefined);
|
|
@@ -123,6 +125,26 @@ const useResolvedObject = (currentObject) => {
|
|
|
123
125
|
const document = useDocument();
|
|
124
126
|
const resolver = useInlineRefResolver();
|
|
125
127
|
return React.useMemo(() => createResolvedObject(currentObject, { contextObject: document, resolver }), [currentObject, document, resolver]);
|
|
128
|
+
};
|
|
129
|
+
const useSchemaInlineRefResolver = () => {
|
|
130
|
+
const document = useDocument();
|
|
131
|
+
const resolver = useInlineRefResolver();
|
|
132
|
+
return React.useCallback((...args) => {
|
|
133
|
+
const resolved = resolver === null || resolver === void 0 ? void 0 : resolver(...args);
|
|
134
|
+
if (!isPlainObject$1(resolved)) {
|
|
135
|
+
return resolved;
|
|
136
|
+
}
|
|
137
|
+
if (translatedObjectSymbol in resolved) {
|
|
138
|
+
return resolved[translatedObjectSymbol];
|
|
139
|
+
}
|
|
140
|
+
const converted = convertToJsonSchema((document !== null && document !== void 0 ? document : {}), resolved);
|
|
141
|
+
Reflect.defineProperty(resolved, translatedObjectSymbol, {
|
|
142
|
+
configurable: true,
|
|
143
|
+
value: converted,
|
|
144
|
+
});
|
|
145
|
+
delete converted.$schema;
|
|
146
|
+
return converted;
|
|
147
|
+
}, [document, resolver]);
|
|
126
148
|
};
|
|
127
149
|
|
|
128
150
|
const DEFAULT_CONTEXT = {};
|
|
@@ -2142,7 +2164,7 @@ const isBodyEmpty = (body) => {
|
|
|
2142
2164
|
};
|
|
2143
2165
|
const Body = ({ body, onChange }) => {
|
|
2144
2166
|
var _a;
|
|
2145
|
-
const refResolver =
|
|
2167
|
+
const refResolver = useSchemaInlineRefResolver();
|
|
2146
2168
|
const [chosenContent, setChosenContent] = React.useState(0);
|
|
2147
2169
|
const { nodeHasChanged } = useOptionsCtx();
|
|
2148
2170
|
React.useEffect(() => {
|
|
@@ -2184,7 +2206,7 @@ const defaultStyle = {
|
|
|
2184
2206
|
};
|
|
2185
2207
|
const Parameters = ({ parameters, parameterType }) => {
|
|
2186
2208
|
const { nodeHasChanged } = useOptionsCtx();
|
|
2187
|
-
const refResolver =
|
|
2209
|
+
const refResolver = useSchemaInlineRefResolver();
|
|
2188
2210
|
const schema = React.useMemo(() => httpOperationParamsToSchema({ parameters, parameterType }), [parameters, parameterType]);
|
|
2189
2211
|
if (!schema)
|
|
2190
2212
|
return null;
|
|
@@ -2289,7 +2311,7 @@ Responses.displayName = 'HttpOperation.Responses';
|
|
|
2289
2311
|
const Response = ({ response, onMediaTypeChange }) => {
|
|
2290
2312
|
const { contents = [], headers = [], description } = response;
|
|
2291
2313
|
const [chosenContent, setChosenContent] = React.useState(0);
|
|
2292
|
-
const refResolver =
|
|
2314
|
+
const refResolver = useSchemaInlineRefResolver();
|
|
2293
2315
|
const { nodeHasChanged } = useOptionsCtx();
|
|
2294
2316
|
const responseContent = contents[chosenContent];
|
|
2295
2317
|
const schema = responseContent === null || responseContent === void 0 ? void 0 : responseContent.schema;
|
|
@@ -2531,7 +2553,7 @@ function useIsCompact(layoutOptions) {
|
|
|
2531
2553
|
|
|
2532
2554
|
const ModelComponent = ({ data: unresolvedData, className, nodeTitle, layoutOptions, exportProps, }) => {
|
|
2533
2555
|
var _a, _b;
|
|
2534
|
-
const resolveRef =
|
|
2556
|
+
const resolveRef = useSchemaInlineRefResolver();
|
|
2535
2557
|
const data = useResolvedObject(unresolvedData);
|
|
2536
2558
|
const { nodeHasChanged } = useOptionsCtx();
|
|
2537
2559
|
const { ref: layoutRef, isCompact } = useIsCompact(layoutOptions);
|
|
@@ -2697,7 +2719,7 @@ function isPartialHttpRequest(maybeHttpRequest) {
|
|
|
2697
2719
|
typeof maybeHttpRequest['url'] === 'string');
|
|
2698
2720
|
}
|
|
2699
2721
|
const SchemaAndDescription = ({ title: titleProp, schema }) => {
|
|
2700
|
-
const resolveRef =
|
|
2722
|
+
const resolveRef = useSchemaInlineRefResolver();
|
|
2701
2723
|
const title = titleProp !== null && titleProp !== void 0 ? titleProp : schema.title;
|
|
2702
2724
|
return (React__default.createElement(Box, { py: 2 },
|
|
2703
2725
|
title && (React__default.createElement(Flex, { alignItems: "center", p: 2 },
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@stoplight/elements-core",
|
|
3
|
-
"version": "7.7.
|
|
3
|
+
"version": "7.7.9",
|
|
4
4
|
"main": "./index.js",
|
|
5
5
|
"sideEffects": [
|
|
6
6
|
"web-components.min.js",
|
|
@@ -24,6 +24,7 @@
|
|
|
24
24
|
"react-dom": ">=16.8"
|
|
25
25
|
},
|
|
26
26
|
"dependencies": {
|
|
27
|
+
"@stoplight/http-spec": "^5.1.4",
|
|
27
28
|
"@stoplight/json": "^3.18.1",
|
|
28
29
|
"@stoplight/json-schema-ref-parser": "^9.0.5",
|
|
29
30
|
"@stoplight/json-schema-sampler": "0.2.3",
|