@webstudio-is/react-sdk 0.7.3 → 0.9.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.
- package/lib/app/custom-components/image.d.ts +9 -0
- package/lib/app/custom-components/image.d.ts.map +1 -0
- package/lib/app/custom-components/image.js +24 -0
- package/lib/app/custom-components/index.d.ts +2 -0
- package/lib/app/custom-components/index.d.ts.map +1 -0
- package/lib/app/custom-components/index.js +1 -0
- package/lib/{cjs/remix → app}/handle-request.server.d.ts +0 -0
- package/lib/app/handle-request.server.d.ts.map +1 -0
- package/lib/{remix → app}/handle-request.server.js +0 -0
- package/lib/{cjs/remix → app}/index.d.ts +1 -0
- package/lib/app/index.d.ts.map +1 -0
- package/lib/{remix → app}/index.js +1 -0
- package/lib/app/params.d.ts +6 -0
- package/lib/app/params.d.ts.map +1 -0
- package/lib/app/params.js +6 -0
- package/lib/{cjs/remix → app}/root.d.ts +1 -0
- package/lib/app/root.d.ts.map +1 -0
- package/lib/{remix → app}/root.js +0 -0
- package/lib/cjs/app/custom-components/image.cjs +27 -0
- package/lib/cjs/app/custom-components/image.d.ts +9 -0
- package/lib/cjs/app/custom-components/image.d.ts.map +1 -0
- package/lib/cjs/app/custom-components/index.cjs +27 -0
- package/lib/cjs/app/custom-components/index.d.ts +2 -0
- package/lib/cjs/app/custom-components/index.d.ts.map +1 -0
- package/lib/cjs/{remix → app}/handle-request.server.cjs +0 -0
- package/lib/{remix → cjs/app}/handle-request.server.d.ts +0 -0
- package/lib/cjs/app/handle-request.server.d.ts.map +1 -0
- package/lib/cjs/{remix → app}/index.cjs +1 -0
- package/lib/{remix → cjs/app}/index.d.ts +1 -0
- package/lib/cjs/app/index.d.ts.map +1 -0
- package/lib/cjs/app/params.cjs +11 -0
- package/lib/cjs/app/params.d.ts +6 -0
- package/lib/cjs/app/params.d.ts.map +1 -0
- package/lib/cjs/{remix → app}/root.cjs +0 -0
- package/lib/{remix → cjs/app}/root.d.ts +1 -0
- package/lib/cjs/app/root.d.ts.map +1 -0
- package/lib/cjs/components/{body.props.json → __generated__/body.props.json} +0 -0
- package/lib/cjs/components/{bold.props.json → __generated__/bold.props.json} +0 -0
- package/lib/cjs/components/{box.props.json → __generated__/box.props.json} +0 -0
- package/lib/cjs/components/{button.props.json → __generated__/button.props.json} +0 -0
- package/lib/cjs/components/{form.props.json → __generated__/form.props.json} +0 -0
- package/lib/cjs/components/{heading.props.json → __generated__/heading.props.json} +0 -0
- package/lib/{components → cjs/components/__generated__}/image.props.json +0 -15
- package/lib/cjs/components/{input.props.json → __generated__/input.props.json} +0 -0
- package/lib/cjs/components/{italic.props.json → __generated__/italic.props.json} +0 -0
- package/lib/cjs/components/{link.props.json → __generated__/link.props.json} +0 -0
- package/lib/cjs/components/{paragraph.props.json → __generated__/paragraph.props.json} +0 -0
- package/lib/cjs/components/{span.props.json → __generated__/span.props.json} +0 -0
- package/lib/cjs/components/{subscript.props.json → __generated__/subscript.props.json} +0 -0
- package/lib/cjs/components/{superscript.props.json → __generated__/superscript.props.json} +0 -0
- package/lib/cjs/components/{text-block.props.json → __generated__/text-block.props.json} +0 -0
- package/lib/cjs/components/index.cjs +75 -31
- package/lib/cjs/components/index.d.ts +89 -15
- package/lib/cjs/components/index.d.ts.map +1 -1
- package/lib/cjs/components/index.test.cjs +3 -29
- package/lib/cjs/components/italic.ws.cjs +7 -0
- package/lib/cjs/components/italic.ws.d.ts.map +1 -1
- package/lib/cjs/components/meta.cjs +20 -18
- package/lib/cjs/components/meta.d.ts +1 -16
- package/lib/cjs/components/meta.d.ts.map +1 -1
- package/lib/cjs/css/categories.d.ts +1 -0
- package/lib/cjs/css/categories.d.ts.map +1 -1
- package/lib/cjs/css/get-browser-style.cjs +2 -1
- package/lib/cjs/css/get-browser-style.d.ts.map +1 -1
- package/lib/cjs/db/instance.d.ts +2 -2
- package/lib/cjs/db/instance.d.ts.map +1 -1
- package/lib/cjs/index.cjs +4 -3
- package/lib/cjs/index.d.ts +3 -2
- package/lib/cjs/index.d.ts.map +1 -1
- package/lib/cjs/tree/root.cjs +28 -0
- package/lib/cjs/tree/root.d.ts +2 -0
- package/lib/cjs/tree/root.d.ts.map +1 -1
- package/lib/cjs/tree/session-storage-polyfill.d.ts +1 -0
- package/lib/cjs/tree/session-storage-polyfill.d.ts.map +1 -1
- package/lib/cjs/tree/wrapper-component.cjs +2 -25
- package/lib/cjs/tree/wrapper-component.d.ts +1 -0
- package/lib/cjs/tree/wrapper-component.d.ts.map +1 -1
- package/lib/cjs/user-props/use-user-props-asset.cjs +22 -0
- package/lib/cjs/user-props/use-user-props-asset.d.ts +8 -0
- package/lib/cjs/user-props/use-user-props-asset.d.ts.map +1 -0
- package/lib/cjs/user-props/use-user-props.cjs +2 -12
- package/lib/cjs/user-props/use-user-props.d.ts.map +1 -1
- package/lib/components/{body.props.json → __generated__/body.props.json} +0 -0
- package/lib/components/{bold.props.json → __generated__/bold.props.json} +0 -0
- package/lib/components/{box.props.json → __generated__/box.props.json} +0 -0
- package/lib/components/{button.props.json → __generated__/button.props.json} +0 -0
- package/lib/components/{form.props.json → __generated__/form.props.json} +0 -0
- package/lib/components/{heading.props.json → __generated__/heading.props.json} +0 -0
- package/lib/{cjs/components → components/__generated__}/image.props.json +0 -15
- package/lib/components/{input.props.json → __generated__/input.props.json} +0 -0
- package/lib/components/{italic.props.json → __generated__/italic.props.json} +0 -0
- package/lib/components/{link.props.json → __generated__/link.props.json} +0 -0
- package/lib/components/{paragraph.props.json → __generated__/paragraph.props.json} +0 -0
- package/lib/components/{span.props.json → __generated__/span.props.json} +0 -0
- package/lib/components/{subscript.props.json → __generated__/subscript.props.json} +0 -0
- package/lib/components/{superscript.props.json → __generated__/superscript.props.json} +0 -0
- package/lib/components/{text-block.props.json → __generated__/text-block.props.json} +0 -0
- package/lib/components/index.d.ts +89 -15
- package/lib/components/index.d.ts.map +1 -1
- package/lib/components/index.js +70 -15
- package/lib/components/index.test.js +3 -6
- package/lib/components/italic.ws.d.ts.map +1 -1
- package/lib/components/italic.ws.js +7 -0
- package/lib/components/meta.d.ts +1 -16
- package/lib/components/meta.d.ts.map +1 -1
- package/lib/components/meta.js +18 -17
- package/lib/css/categories.d.ts +1 -0
- package/lib/css/categories.d.ts.map +1 -1
- package/lib/css/get-browser-style.d.ts.map +1 -1
- package/lib/css/get-browser-style.js +2 -1
- package/lib/db/instance.d.ts +2 -2
- package/lib/db/instance.d.ts.map +1 -1
- package/lib/index.d.ts +3 -2
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +3 -2
- package/lib/tree/root.d.ts +2 -0
- package/lib/tree/root.d.ts.map +1 -1
- package/lib/tree/root.js +5 -0
- package/lib/tree/session-storage-polyfill.d.ts +1 -0
- package/lib/tree/session-storage-polyfill.d.ts.map +1 -1
- package/lib/tree/wrapper-component.d.ts +1 -0
- package/lib/tree/wrapper-component.d.ts.map +1 -1
- package/lib/tree/wrapper-component.js +2 -2
- package/lib/tsconfig.tsbuildinfo +1 -1
- package/lib/user-props/use-user-props-asset.d.ts +8 -0
- package/lib/user-props/use-user-props-asset.d.ts.map +1 -0
- package/lib/user-props/use-user-props-asset.js +18 -0
- package/lib/user-props/use-user-props.d.ts.map +1 -1
- package/lib/user-props/use-user-props.js +3 -13
- package/package.json +7 -8
- package/lib/arg-types/utils.d.ts +0 -10
- package/lib/arg-types/utils.d.ts.map +0 -1
- package/lib/arg-types/utils.js +0 -83
- package/lib/cjs/arg-types/utils.cjs +0 -88
- package/lib/cjs/arg-types/utils.d.ts +0 -10
- package/lib/cjs/arg-types/utils.d.ts.map +0 -1
- package/lib/cjs/remix/handle-request.server.d.ts.map +0 -1
- package/lib/cjs/remix/index.d.ts.map +0 -1
- package/lib/cjs/remix/root.d.ts.map +0 -1
- package/lib/remix/handle-request.server.d.ts.map +0 -1
- package/lib/remix/index.d.ts.map +0 -1
- package/lib/remix/root.d.ts.map +0 -1
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { type Instance } from "../db";
|
|
2
|
+
import { type UserProp } from "./schema";
|
|
3
|
+
import type { Asset } from "@webstudio-is/asset-uploader";
|
|
4
|
+
/**
|
|
5
|
+
* Get asset for prop, like src on the Image component
|
|
6
|
+
*/
|
|
7
|
+
export declare const useUserPropsAsset: (instanceId: Instance["id"], propName: UserProp["prop"]) => Asset | null;
|
|
8
|
+
//# sourceMappingURL=use-user-props-asset.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-user-props-asset.d.ts","sourceRoot":"","sources":["../../src/user-props/use-user-props-asset.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,OAAO,CAAC;AACtC,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,UAAU,CAAC;AAEzC,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,8BAA8B,CAAC;AAE1D;;GAEG;AACH,eAAO,MAAM,iBAAiB,eAChB,QAAQ,CAAC,IAAI,CAAC,YAChB,QAAQ,CAAC,MAAM,CAAC,KACzB,KAAK,GAAG,IAaV,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { useMemo } from "react";
|
|
2
|
+
import { useAllUserProps } from "./all-user-props";
|
|
3
|
+
/**
|
|
4
|
+
* Get asset for prop, like src on the Image component
|
|
5
|
+
*/
|
|
6
|
+
export const useUserPropsAsset = (instanceId, propName) => {
|
|
7
|
+
const [allUserProps] = useAllUserProps();
|
|
8
|
+
const propsData = allUserProps[instanceId];
|
|
9
|
+
const asset = useMemo(() => {
|
|
10
|
+
if (propsData == null)
|
|
11
|
+
return null;
|
|
12
|
+
const prop = propsData.props.find((prop) => prop.prop === propName);
|
|
13
|
+
if (prop == null)
|
|
14
|
+
return null;
|
|
15
|
+
return prop.asset ?? null;
|
|
16
|
+
}, [propName, propsData]);
|
|
17
|
+
return asset;
|
|
18
|
+
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-user-props.d.ts","sourceRoot":"","sources":["../../src/user-props/use-user-props.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,OAAO,CAAC;AACtC,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,UAAU,CAAC;AAGzC,aAAK,SAAS,GAAG;IAAE,CAAC,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAA;CAAE,CAAC;AAEjE;;;GAGG;AACH,eAAO,MAAM,YAAY,eAAgB,QAAQ,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"use-user-props.d.ts","sourceRoot":"","sources":["../../src/user-props/use-user-props.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,OAAO,CAAC;AACtC,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,UAAU,CAAC;AAGzC,aAAK,SAAS,GAAG;IAAE,CAAC,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAA;CAAE,CAAC;AAEjE;;;GAGG;AACH,eAAO,MAAM,YAAY,eAAgB,QAAQ,CAAC,IAAI,CAAC,cAatD,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { useMemo } from "react";
|
|
2
2
|
import { useAllUserProps } from "./all-user-props";
|
|
3
3
|
/**
|
|
4
4
|
* User props mapped in prop:value format,
|
|
@@ -7,23 +7,13 @@ import { useAllUserProps } from "./all-user-props";
|
|
|
7
7
|
export const useUserProps = (instanceId) => {
|
|
8
8
|
const [allUserProps] = useAllUserProps();
|
|
9
9
|
const propsData = allUserProps[instanceId];
|
|
10
|
-
const
|
|
11
|
-
if (propsData
|
|
10
|
+
const props = useMemo(() => {
|
|
11
|
+
if (propsData == null)
|
|
12
12
|
return {};
|
|
13
13
|
return propsData.props.reduce((props, { prop, value }) => {
|
|
14
14
|
props[prop] = value;
|
|
15
15
|
return props;
|
|
16
16
|
}, {});
|
|
17
17
|
}, [propsData]);
|
|
18
|
-
const [props, setProps] = useState(initialUserProps);
|
|
19
|
-
useEffect(() => {
|
|
20
|
-
if (propsData == undefined)
|
|
21
|
-
return;
|
|
22
|
-
const nextProps = {};
|
|
23
|
-
for (const prop of propsData.props) {
|
|
24
|
-
nextProps[prop.prop] = prop.value;
|
|
25
|
-
}
|
|
26
|
-
setProps(nextProps);
|
|
27
|
-
}, [propsData]);
|
|
28
18
|
return props;
|
|
29
19
|
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@webstudio-is/react-sdk",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.9.0",
|
|
4
4
|
"description": "Webstudio JavaScript / TypeScript API",
|
|
5
5
|
"author": "Webstudio <github@webstudio.is>",
|
|
6
6
|
"homepage": "https://webstudio.is",
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
"scripts": {
|
|
9
9
|
"dev": "tsup --watch",
|
|
10
10
|
"build": "yarn build:lib",
|
|
11
|
-
"build:args": "
|
|
11
|
+
"build:args": "generate-arg-types './src/components/*.tsx !./src/**/*.stories.tsx !./src/**/*.ws.tsx' && prettier --write \"**/*.props.json\"",
|
|
12
12
|
"typecheck": "tsc --noEmit",
|
|
13
13
|
"build:cjs": "tsc --module commonjs --outDir lib/cjs && find lib/cjs -name '*.js' | while read NAME; do mv $NAME ${NAME%.js}.cjs; done",
|
|
14
14
|
"build:lib": "rm -fr lib tsconfig.tsbuildinfo && tsc && yarn build:cjs",
|
|
@@ -17,7 +17,8 @@
|
|
|
17
17
|
"checks": "yarn typecheck && yarn lint && yarn test",
|
|
18
18
|
"prepublishOnly": "yarn checks && yarn build:lib",
|
|
19
19
|
"storybook:run": "start-storybook -p 6006",
|
|
20
|
-
"storybook:build": "build-storybook"
|
|
20
|
+
"storybook:build": "build-storybook",
|
|
21
|
+
"publish-to-npm": "bash ../../bin/publish-to-npm.sh"
|
|
21
22
|
},
|
|
22
23
|
"devDependencies": {
|
|
23
24
|
"@babel/core": "^7.20.2",
|
|
@@ -32,15 +33,13 @@
|
|
|
32
33
|
"@storybook/manager-webpack4": "^6.5.6",
|
|
33
34
|
"@storybook/react": "^6.5.6",
|
|
34
35
|
"@storybook/testing-library": "^0.0.11",
|
|
35
|
-
"@types/fs-extra": "^9.0.13",
|
|
36
36
|
"@types/node": "^17.0.21",
|
|
37
37
|
"@webstudio-is/jest-config": "*",
|
|
38
|
-
"@webstudio-is/
|
|
38
|
+
"@webstudio-is/generate-arg-types": "*",
|
|
39
39
|
"babel-loader": "^8.2.5",
|
|
40
40
|
"esbuild": "^0.14.25",
|
|
41
41
|
"esbuild-node-externals": "^1.4.1",
|
|
42
42
|
"react": "^17.0.2",
|
|
43
|
-
"react-docgen-typescript": "^2.2.2",
|
|
44
43
|
"react-dom": "^17.0.2",
|
|
45
44
|
"remix-utils": "^4.1.0",
|
|
46
45
|
"tsup": "^6.1.3",
|
|
@@ -61,9 +60,9 @@
|
|
|
61
60
|
"detect-font": "^0.1.5",
|
|
62
61
|
"@webstudio-is/asset-uploader": "^*",
|
|
63
62
|
"@webstudio-is/css-data": "*",
|
|
64
|
-
"@webstudio-is/fonts": "*",
|
|
65
63
|
"@webstudio-is/icons": "*",
|
|
66
|
-
"@webstudio-is/
|
|
64
|
+
"@webstudio-is/image": "*",
|
|
65
|
+
"@webstudio-is/prisma-client": "*",
|
|
67
66
|
"immer": "^9.0.12",
|
|
68
67
|
"mitt": "^3.0.0",
|
|
69
68
|
"react-nano-state": "^0.4.0",
|
package/lib/arg-types/utils.d.ts
DELETED
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import { PropItem } from "react-docgen-typescript";
|
|
2
|
-
export declare type FilterPredicate = (prop: PropItem) => boolean;
|
|
3
|
-
export declare const propsToArgTypes: (props: Record<string, PropItem>, filter?: FilterPredicate) => Record<string, any>;
|
|
4
|
-
export declare const getArgType: (propItem: any) => {
|
|
5
|
-
type: string;
|
|
6
|
-
defaultValue: any;
|
|
7
|
-
options: any;
|
|
8
|
-
required: any;
|
|
9
|
-
} | null | undefined;
|
|
10
|
-
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/arg-types/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAEnD,oBAAY,eAAe,GAAG,CAAC,IAAI,EAAE,QAAQ,KAAK,OAAO,CAAC;AAa1D,eAAO,MAAM,eAAe,UACnB,OAAO,MAAM,EAAE,QAAQ,CAAC,WACtB,eAAe,wBAqBzB,CAAC;AAQF,eAAO,MAAM,UAAU,aAAc,GAAG;;;;;oBAqDvC,CAAC"}
|
package/lib/arg-types/utils.js
DELETED
|
@@ -1,83 +0,0 @@
|
|
|
1
|
-
const validAttributes = (prop) => {
|
|
2
|
-
if (prop.parent) {
|
|
3
|
-
// Pass *HTML (both ButtonHTMLAttributes and HTMLAttributes), Aria, and SVG attributes through
|
|
4
|
-
const matcher = /.?(HTML|SVG|Aria)Attributes/;
|
|
5
|
-
// TODO: Add a test for this
|
|
6
|
-
return prop.parent.name.match(matcher);
|
|
7
|
-
}
|
|
8
|
-
// Always allow component's own props
|
|
9
|
-
return true;
|
|
10
|
-
};
|
|
11
|
-
export const propsToArgTypes = (props, filter) => {
|
|
12
|
-
const filterFn = filter ?? validAttributes;
|
|
13
|
-
const entries = Object.entries(props);
|
|
14
|
-
return entries.reduce((result, current) => {
|
|
15
|
-
// @todo need halp
|
|
16
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
17
|
-
const [propName, prop] = current;
|
|
18
|
-
// Filter out props
|
|
19
|
-
if (!filterFn(prop)) {
|
|
20
|
-
return result;
|
|
21
|
-
}
|
|
22
|
-
const argType = getArgType(prop);
|
|
23
|
-
if (argType != null) {
|
|
24
|
-
result[propName] = argType;
|
|
25
|
-
}
|
|
26
|
-
return result;
|
|
27
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
28
|
-
}, {});
|
|
29
|
-
};
|
|
30
|
-
const matchers = {
|
|
31
|
-
color: new RegExp("(background|color)", "i"),
|
|
32
|
-
date: /Date$/,
|
|
33
|
-
};
|
|
34
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
35
|
-
export const getArgType = (propItem) => {
|
|
36
|
-
const { type, name } = propItem;
|
|
37
|
-
if (!type) {
|
|
38
|
-
return undefined;
|
|
39
|
-
}
|
|
40
|
-
const overrides = {
|
|
41
|
-
defaultValue: propItem.defaultValue?.value ?? null,
|
|
42
|
-
options: propItem.options,
|
|
43
|
-
required: propItem.required,
|
|
44
|
-
};
|
|
45
|
-
// args that end with background or color e.g. iconColor
|
|
46
|
-
if (matchers.color && matchers.color.test(name)) {
|
|
47
|
-
const controlType = propItem.type.name;
|
|
48
|
-
if (controlType === "string") {
|
|
49
|
-
return { ...overrides, type: "color" };
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
// args that end with date e.g. purchaseDate
|
|
53
|
-
if (matchers.date && matchers.date.test(name)) {
|
|
54
|
-
return { ...overrides, type: "date" };
|
|
55
|
-
}
|
|
56
|
-
switch (type?.name) {
|
|
57
|
-
case "array":
|
|
58
|
-
return { ...overrides, type: "object" };
|
|
59
|
-
case "boolean":
|
|
60
|
-
case "Booleanish":
|
|
61
|
-
return { ...overrides, type: "boolean" };
|
|
62
|
-
case "string":
|
|
63
|
-
return { ...overrides, type: "text" };
|
|
64
|
-
case "number":
|
|
65
|
-
return { ...overrides, type: "number" };
|
|
66
|
-
case "enum": {
|
|
67
|
-
const { value } = type;
|
|
68
|
-
// Remove additional quotes from enum values
|
|
69
|
-
// @ts-expect-error Original type has `any` type
|
|
70
|
-
const values = value.map((val) => val.value.replace(/^"(.+)"$/, "$1"));
|
|
71
|
-
return {
|
|
72
|
-
...overrides,
|
|
73
|
-
type: values?.length <= 5 ? "radio" : "select",
|
|
74
|
-
options: values,
|
|
75
|
-
};
|
|
76
|
-
}
|
|
77
|
-
case "function":
|
|
78
|
-
case "symbol":
|
|
79
|
-
return null;
|
|
80
|
-
default:
|
|
81
|
-
return { ...overrides, type: "text" };
|
|
82
|
-
}
|
|
83
|
-
};
|
|
@@ -1,88 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getArgType = exports.propsToArgTypes = void 0;
|
|
4
|
-
const validAttributes = (prop) => {
|
|
5
|
-
if (prop.parent) {
|
|
6
|
-
// Pass *HTML (both ButtonHTMLAttributes and HTMLAttributes), Aria, and SVG attributes through
|
|
7
|
-
const matcher = /.?(HTML|SVG|Aria)Attributes/;
|
|
8
|
-
// TODO: Add a test for this
|
|
9
|
-
return prop.parent.name.match(matcher);
|
|
10
|
-
}
|
|
11
|
-
// Always allow component's own props
|
|
12
|
-
return true;
|
|
13
|
-
};
|
|
14
|
-
const propsToArgTypes = (props, filter) => {
|
|
15
|
-
const filterFn = filter ?? validAttributes;
|
|
16
|
-
const entries = Object.entries(props);
|
|
17
|
-
return entries.reduce((result, current) => {
|
|
18
|
-
// @todo need halp
|
|
19
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
20
|
-
const [propName, prop] = current;
|
|
21
|
-
// Filter out props
|
|
22
|
-
if (!filterFn(prop)) {
|
|
23
|
-
return result;
|
|
24
|
-
}
|
|
25
|
-
const argType = (0, exports.getArgType)(prop);
|
|
26
|
-
if (argType != null) {
|
|
27
|
-
result[propName] = argType;
|
|
28
|
-
}
|
|
29
|
-
return result;
|
|
30
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
31
|
-
}, {});
|
|
32
|
-
};
|
|
33
|
-
exports.propsToArgTypes = propsToArgTypes;
|
|
34
|
-
const matchers = {
|
|
35
|
-
color: new RegExp("(background|color)", "i"),
|
|
36
|
-
date: /Date$/,
|
|
37
|
-
};
|
|
38
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
39
|
-
const getArgType = (propItem) => {
|
|
40
|
-
const { type, name } = propItem;
|
|
41
|
-
if (!type) {
|
|
42
|
-
return undefined;
|
|
43
|
-
}
|
|
44
|
-
const overrides = {
|
|
45
|
-
defaultValue: propItem.defaultValue?.value ?? null,
|
|
46
|
-
options: propItem.options,
|
|
47
|
-
required: propItem.required,
|
|
48
|
-
};
|
|
49
|
-
// args that end with background or color e.g. iconColor
|
|
50
|
-
if (matchers.color && matchers.color.test(name)) {
|
|
51
|
-
const controlType = propItem.type.name;
|
|
52
|
-
if (controlType === "string") {
|
|
53
|
-
return { ...overrides, type: "color" };
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
// args that end with date e.g. purchaseDate
|
|
57
|
-
if (matchers.date && matchers.date.test(name)) {
|
|
58
|
-
return { ...overrides, type: "date" };
|
|
59
|
-
}
|
|
60
|
-
switch (type?.name) {
|
|
61
|
-
case "array":
|
|
62
|
-
return { ...overrides, type: "object" };
|
|
63
|
-
case "boolean":
|
|
64
|
-
case "Booleanish":
|
|
65
|
-
return { ...overrides, type: "boolean" };
|
|
66
|
-
case "string":
|
|
67
|
-
return { ...overrides, type: "text" };
|
|
68
|
-
case "number":
|
|
69
|
-
return { ...overrides, type: "number" };
|
|
70
|
-
case "enum": {
|
|
71
|
-
const { value } = type;
|
|
72
|
-
// Remove additional quotes from enum values
|
|
73
|
-
// @ts-expect-error Original type has `any` type
|
|
74
|
-
const values = value.map((val) => val.value.replace(/^"(.+)"$/, "$1"));
|
|
75
|
-
return {
|
|
76
|
-
...overrides,
|
|
77
|
-
type: values?.length <= 5 ? "radio" : "select",
|
|
78
|
-
options: values,
|
|
79
|
-
};
|
|
80
|
-
}
|
|
81
|
-
case "function":
|
|
82
|
-
case "symbol":
|
|
83
|
-
return null;
|
|
84
|
-
default:
|
|
85
|
-
return { ...overrides, type: "text" };
|
|
86
|
-
}
|
|
87
|
-
};
|
|
88
|
-
exports.getArgType = getArgType;
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import { PropItem } from "react-docgen-typescript";
|
|
2
|
-
export declare type FilterPredicate = (prop: PropItem) => boolean;
|
|
3
|
-
export declare const propsToArgTypes: (props: Record<string, PropItem>, filter?: FilterPredicate) => Record<string, any>;
|
|
4
|
-
export declare const getArgType: (propItem: any) => {
|
|
5
|
-
type: string;
|
|
6
|
-
defaultValue: any;
|
|
7
|
-
options: any;
|
|
8
|
-
required: any;
|
|
9
|
-
} | null | undefined;
|
|
10
|
-
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/arg-types/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAEnD,oBAAY,eAAe,GAAG,CAAC,IAAI,EAAE,QAAQ,KAAK,OAAO,CAAC;AAa1D,eAAO,MAAM,eAAe,UACnB,OAAO,MAAM,EAAE,QAAQ,CAAC,WACtB,eAAe,wBAqBzB,CAAC;AAQF,eAAO,MAAM,UAAU,aAAc,GAAG;;;;;oBAqDvC,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"handle-request.server.d.ts","sourceRoot":"","sources":["../../../src/remix/handle-request.server.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAEpD,eAAO,MAAM,aAAa,YACf,OAAO,sBACI,MAAM,mBACT,OAAO,gBACV,YAAY,aAY3B,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/remix/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC;AACvB,cAAc,yBAAyB,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"root.d.ts","sourceRoot":"","sources":["../../../src/remix/root.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAe,MAAM,IAAI,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAGxE;;GAEG;AACH,eAAO,MAAM,IAAI;YAGP,oBAAoB;iBAiB7B,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"handle-request.server.d.ts","sourceRoot":"","sources":["../../src/remix/handle-request.server.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAEpD,eAAO,MAAM,aAAa,YACf,OAAO,sBACI,MAAM,mBACT,OAAO,gBACV,YAAY,aAY3B,CAAC"}
|
package/lib/remix/index.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/remix/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC;AACvB,cAAc,yBAAyB,CAAC"}
|
package/lib/remix/root.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"root.d.ts","sourceRoot":"","sources":["../../src/remix/root.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAe,MAAM,IAAI,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAGxE;;GAEG;AACH,eAAO,MAAM,IAAI;YAGP,oBAAoB;iBAiB7B,CAAC"}
|