@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.
@@ -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 = useInlineRefResolver();
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 = useInlineRefResolver();
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 = useInlineRefResolver();
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 = useInlineRefResolver();
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 = useInlineRefResolver();
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 = useInlineRefResolver();
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 = useInlineRefResolver();
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 = useInlineRefResolver();
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 = useInlineRefResolver();
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 = useInlineRefResolver();
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 = useInlineRefResolver();
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 = useInlineRefResolver();
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 = useInlineRefResolver();
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 = useInlineRefResolver();
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 = useInlineRefResolver();
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.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",